<?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>89809</bug_id>
          
          <creation_ts>2012-06-23 06:28:21 -0700</creation_ts>
          <short_desc>REGRESSION(r121058): Patch causes plugins tests to crash in GTK debug builds (Requested by zdobersek on #webkit).</short_desc>
          <delta_ts>2012-06-23 06:41:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>89123</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>barraclough</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>656070</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-23 06:28:21 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/121058 broke the build:
Patch causes plugins tests to crash in GTK debug builds (Requested by zdobersek on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656072</commentid>
    <comment_count>1</comment_count>
      <attachid>149174</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-23 06:29:08 -0700</bug_when>
    <thetext>Created attachment 149174
ROLLOUT of r121058

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656073</commentid>
    <comment_count>2</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-23 06:37:12 -0700</bug_when>
    <thetext>Crashes are occurring on the GTK Linux 64-bit debug builder: http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug

Crashes seem to occur in two different ways:

Crash log for DumpRenderTree (pid 13288):

[New LWP 13288]
[New LWP 13290]
[New LWP 13292]
[Thread debugging using libthread_db enabled]
Core was generated by `/home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/Programs/DumpR&apos;.
Program terminated with signal 11, Segmentation fault.
#0  0x00007f2cfbcdaaac in JSC::Bindings::RootObject::globalObject (this=0x0) at ../../Source/WebCore/bridge/runtime_root.cpp:173
173	    ASSERT(m_isValid);

...

Thread 1 (Thread 0x7f2d009b0900 (LWP 13288)):
#0  0x00007f2cfbcdaaac in JSC::Bindings::RootObject::globalObject (this=0x0) at ../../Source/WebCore/bridge/runtime_root.cpp:173
#1  0x00007f2cfbcbf70d in JSC::Bindings::CClass::fieldNamed (this=0x26cde10, propertyName=..., instance=0x2721e00) at ../../Source/WebCore/bridge/c/c_class.cpp:116
#2  0x00007f2cfbcd8ebc in JSC::Bindings::RuntimeObject::getOwnPropertySlot (cell=0x7f2cae5cd940, exec=0x7f2cae5f0038, propertyName=..., slot=...) at ../../Source/WebCore/bridge/runtime_object.cpp:137
#3  0x00007f2d002a51fa in JSC::JSCell::fastGetOwnPropertySlot (this=0x7f2cae5cd940, exec=0x7f2cae5f0038, propertyName=..., slot=...) at ../../Source/JavaScriptCore/runtime/JSObject.h:584
#4  0x00007f2d002a523e in JSC::JSObject::getPropertySlot (this=0x7f2cae5cd940, exec=0x7f2cae5f0038, propertyName=..., slot=...) at ../../Source/JavaScriptCore/runtime/JSObject.h:609
#5  0x00007f2d0054a6a6 in JSC::JSObject::hasProperty (this=0x7f2cae5cd940, exec=0x7f2cae5f0038, propertyName=...) at ../../Source/JavaScriptCore/runtime/JSObject.cpp:256
#6  0x00007f2cfbc5eb63 in WebCore::runtimeObjectCustomGetOwnPropertySlot (exec=0x7f2cae5f0038, propertyName=..., slot=..., element=0x7f2cae5cd980) at ../../Source/WebCore/bindings/js/JSPluginElementFunctions.cpp:119
#7  0x00007f2cfbc462f4 in WebCore::JSHTMLEmbedElement::getOwnPropertySlotDelegate (this=0x7f2cae5cd980, exec=0x7f2cae5f0038, propertyName=..., slot=...) at ../../Source/WebCore/bindings/js/JSHTMLEmbedElementCustom.cpp:38
#8  0x00007f2cfcbc8f05 in WebCore::JSHTMLEmbedElement::getOwnPropertySlot (cell=0x7f2cae5cd980, exec=0x7f2cae5f0038, propertyName=..., slot=...) at DerivedSources/WebCore/JSHTMLEmbedElement.cpp:138
#9  0x00007f2d002a51fa in JSC::JSCell::fastGetOwnPropertySlot (this=0x7f2cae5cd980, exec=0x7f2cae5f0038, propertyName=..., slot=...) at ../../Source/JavaScriptCore/runtime/JSObject.h:584
#10 0x00007f2d0039b4db in JSC::JSValue::get (this=0x7fff4e70cf30, exec=0x7f2cae5f0038, propertyName=..., slot=...) at ../../Source/JavaScriptCore/runtime/JSObject.h:827
#11 0x00007f2d0047f626 in JSC::LLInt::llint_slow_path_get_by_id (exec=0x7f2cae5f0038, pc=0x2729870) at ../../Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:877
#12 0x00007f2d00488ddf in llint_op_get_by_id () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/.libs/libjavascriptcoregtk-3.0.so.0
#13 0x00007fff4e70cfd0 in ?? ()
#14 0x00007f2d0029f992 in JSC::Register::operator= (this=0x1fd3b88, v=...) at ../../Source/JavaScriptCore/interpreter/Register.h:116
#15 0x00007f2d00436114 in JSC::JITCode::execute (this=0x7f2cae5e3da8, registerFile=0x1fd3b88, callFrame=0x7f2cae5f0038, globalData=0x202c520) at ../../Source/JavaScriptCore/jit/JITCode.h:133
#16 0x00007f2d0043225c in JSC::Interpreter::execute (this=0x1fd3b70, program=0x7f2cae5e3d80, callFrame=0x7f2cae5aeea0, scopeChain=0x7f2cae5ce5c0, thisObj=0x7f2cae5cffc0) at ../../Source/JavaScriptCore/interpreter/Interpreter.cpp:1231
#17 0x00007f2d00505424 in JSC::evaluate (exec=0x7f2cae5aeea0, scopeChain=0x7f2cae5ce5c0, source=..., thisValue=..., returnedException=0x7fff4e70e690) at ../../Source/JavaScriptCore/runtime/Completion.cpp:75
#18 0x00007f2cfbc4c97f in WebCore::JSMainThreadExecState::evaluate (exec=0x7f2cae5aeea0, chain=0x7f2cae5ce5c0, source=..., thisValue=..., exception=0x7fff4e70e690) at ../../Source/WebCore/bindings/js/JSMainThreadExecState.h:77
#19 0x00007f2cfbc8fe4b in WebCore::ScriptController::evaluateInWorld (this=0x1fabce8, sourceCode=..., world=0x1fd0aa0) at ../../Source/WebCore/bindings/js/ScriptController.cpp:145
#20 0x00007f2cfbc8ff58 in WebCore::ScriptController::evaluate (this=0x1fabce8, sourceCode=...) at ../../Source/WebCore/bindings/js/ScriptController.cpp:162
#21 0x00007f2cfbf5b026 in WebCore::ScriptElement::executeScript (this=0x271f320, sourceCode=...) at ../../Source/WebCore/dom/ScriptElement.cpp:295
#22 0x00007f2cfbf5aaa9 in WebCore::ScriptElement::prepareScript (this=0x271f320, scriptStartPosition=..., supportLegacyTypes=WebCore::ScriptElement::DisallowLegacyTypeInTypeAttribute) at ../../Source/WebCore/dom/ScriptElement.cpp:240
#23 0x00007f2cfc13d81a in WebCore::HTMLScriptRunner::runScript (this=0x270a310, script=0x271f2b0, scriptStartPosition=...) at ../../Source/WebCore/html/parser/HTMLScriptRunner.cpp:296
#24 0x00007f2cfc13ce39 in WebCore::HTMLScriptRunner::execute (this=0x270a310, scriptElement=..., scriptStartPosition=...) at ../../Source/WebCore/html/parser/HTMLScriptRunner.cpp:170
#25 0x00007f2cfc12ee5e in WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder (this=0x270ea70) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:207
#26 0x00007f2cfc12ef1b in WebCore::HTMLDocumentParser::canTakeNextToken (this=0x270ea70, mode=WebCore::HTMLDocumentParser::AllowYield, session=...) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:225
#27 0x00007f2cfc12f355 in WebCore::HTMLDocumentParser::pumpTokenizer (this=0x270ea70, mode=WebCore::HTMLDocumentParser::AllowYield) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:263
#28 0x00007f2cfc12ecad in WebCore::HTMLDocumentParser::pumpTokenizerIfPossible (this=0x270ea70, mode=WebCore::HTMLDocumentParser::AllowYield) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:177
#29 0x00007f2cfc12f8fe in WebCore::HTMLDocumentParser::append (this=0x270ea70, source=...) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:370
#30 0x00007f2cfbe89622 in WebCore::DecodedDataDocumentParser::flush (this=0x270ea70, writer=0x26f6940) at ../../Source/WebCore/dom/DecodedDataDocumentParser.cpp:60
#31 0x00007f2cfc2dca7d in WebCore::DocumentWriter::end (this=0x26f6940) at ../../Source/WebCore/loader/DocumentWriter.cpp:238
#32 0x00007f2cfc2d057d in WebCore::DocumentLoader::finishedLoading (this=0x26f6880) at ../../Source/WebCore/loader/DocumentLoader.cpp:299
#33 0x00007f2cfc3227df in WebCore::MainResourceLoader::didFinishLoading (this=0x20553d0, finishTime=0) at ../../Source/WebCore/loader/MainResourceLoader.cpp:544
#34 0x00007f2cfc32f1f3 in WebCore::ResourceLoader::didFinishLoading (this=0x20553d0, finishTime=0) at ../../Source/WebCore/loader/ResourceLoader.cpp:435
#35 0x00007f2cfc4f1fce in WebCore::readCallback (source=0x201d240, asyncResult=0x20265f0, data=0x265ec20) at ../../Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:864
#36 0x00007f2cf9baaa3c in async_ready_callback_wrapper () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libgio-2.0.so.0
#37 0x00007f2cf9bc65f6 in g_simple_async_result_complete () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libgio-2.0.so.0
#38 0x00007f2cf9bc67c2 in complete_in_idle_cb_for_thread () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libgio-2.0.so.0
#39 0x00007f2cf99f2ad2 in g_idle_dispatch () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#40 0x00007f2cf99f0359 in g_main_dispatch () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#41 0x00007f2cf99f1003 in g_main_context_dispatch () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#42 0x00007f2cf99f11ed in g_main_context_iterate () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#43 0x00007f2cf99f1623 in g_main_loop_run () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#44 0x00007f2cfa2e6843 in gtk_main () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libgtk-3.so.0
#45 0x000000000045f858 in runTest (testPathOrURL=...) at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:706
#46 0x000000000045eec1 in runTestingServerLoop () at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:491
#47 0x0000000000461eec in main (argc=2, argv=0x7fff4e70fb58) at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:1388



Crash log for DumpRenderTree (pid 13462):

[New LWP 13462]
[New LWP 13465]
[New LWP 13466]
[Thread debugging using libthread_db enabled]
Core was generated by `/home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/Programs/DumpR&apos;.
Program terminated with signal 11, Segmentation fault.
#0  0x00007effb18223f2 in JSC::Heap::unprotect (this=0x1020e80, k=...) at ../../Source/JavaScriptCore/heap/Heap.cpp:335
335	    ASSERT(m_globalData-&gt;apiLock().currentThreadIsHoldingLock());

...

Thread 1 (Thread 0x7effb1dc3900 (LWP 13462)):
#0  0x00007effb18223f2 in JSC::Heap::unprotect (this=0x1020e80, k=...) at ../../Source/JavaScriptCore/heap/Heap.cpp:335
#1  0x00007effad0edd16 in JSC::gcUnprotect (val=0x7eff5f9db100) at ../../Source/JavaScriptCore/runtime/Protect.h:37
#2  0x00007effad0ed9ac in JSC::Bindings::RootObject::gcUnprotect (this=0x17b6b70, jsObject=0x7eff5f9db100) at ../../Source/WebCore/bridge/runtime_root.cpp:155
#3  0x00007effad0e1b51 in jsDeallocate (npObj=0x1783400) at ../../Source/WebCore/bridge/NP_jsobject.cpp:128
#4  0x00007effad0ea1d0 in _NPN_DeallocateObject (obj=0x1783400) at ../../Source/WebCore/bridge/npruntime.cpp:158
#5  0x00007effad0ea155 in _NPN_ReleaseObject (obj=0x1783400) at ../../Source/WebCore/bridge/npruntime.cpp:148
#6  0x00007eff60e801ac in pluginLogWithWindowObject (windowObject=0x17abc50, instance=0x17b71a8, message=0x7fffdcc8fcd0 &quot;PLUGIN: NPP_Destroy&quot;) at ../../Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:60
#7  0x00007eff60e80409 in pluginLogWithArguments (instance=0x17b71a8, format=0x7eff60e87eee &quot;NPP_Destroy&quot;, args=0x7fffdcc90510) at ../../Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:88
#8  0x00007eff60e804f9 in pluginLog (instance=0x17b71a8, format=0x7eff60e87eee &quot;NPP_Destroy&quot;) at ../../Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:97
#9  0x00007eff60e850b0 in NPP_Destroy (instance=0x17b71a8, save=0x7fffdcc906c8) at ../../Tools/DumpRenderTree/TestNetscapePlugIn/main.cpp:318
#10 0x00007effad95de23 in WebCore::PluginView::stop (this=0x17b6f90) at ../../Source/WebCore/plugins/PluginView.cpp:379
#11 0x00007effad95d83e in WebCore::PluginView::~PluginView (this=0x17b6f90, __in_chrg=&lt;optimized out&gt;) at ../../Source/WebCore/plugins/PluginView.cpp:299
#12 0x00007effaced699a in WTF::RefCounted&lt;WebCore::Widget&gt;::deref (this=0x17b6f98) at ../../Source/WTF/wtf/RefCounted.h:190
#13 0x00007effad09a3af in WTF::derefIfNotNull&lt;WebCore::Widget&gt; (ptr=0x17b6f90) at ../../Source/WTF/wtf/PassRefPtr.h:52
#14 0x00007effad09a27f in WTF::RefPtr&lt;WebCore::Widget&gt;::~RefPtr (this=0x17869d0, __in_chrg=&lt;optimized out&gt;) at ../../Source/WTF/wtf/RefPtr.h:56
#15 0x00007effadb44b42 in std::pair&lt;WTF::RefPtr&lt;WebCore::Widget&gt;, WebCore::FrameView*&gt;::~pair (this=0x17869d0, __in_chrg=&lt;optimized out&gt;) at /usr/include/c++/4.4/bits/stl_pair.h:68
#16 0x00007effadb44b8d in WTF::HashTable&lt;WTF::RefPtr&lt;WebCore::Widget&gt;, std::pair&lt;WTF::RefPtr&lt;WebCore::Widget&gt;, WebCore::FrameView*&gt;, WTF::PairFirstExtractor&lt;std::pair&lt;WTF::RefPtr&lt;WebCore::Widget&gt;, WebCore::FrameView*&gt; &gt;, WTF::PtrHash&lt;WTF::RefPtr&lt;WebCore::Widget&gt; &gt;, WTF::PairHashTraits&lt;WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::Widget&gt; &gt;, WTF::HashTraits&lt;WebCore::FrameView*&gt; &gt;, WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::Widget&gt; &gt; &gt;::deallocateTable (table=0x1786920, size=64) at ../../Source/WTF/wtf/HashTable.h:949
#17 0x00007effadb44350 in WTF::HashTable&lt;WTF::RefPtr&lt;WebCore::Widget&gt;, std::pair&lt;WTF::RefPtr&lt;WebCore::Widget&gt;, WebCore::FrameView*&gt;, WTF::PairFirstExtractor&lt;std::pair&lt;WTF::RefPtr&lt;WebCore::Widget&gt;, WebCore::FrameView*&gt; &gt;, WTF::PtrHash&lt;WTF::RefPtr&lt;WebCore::Widget&gt; &gt;, WTF::PairHashTraits&lt;WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::Widget&gt; &gt;, WTF::HashTraits&lt;WebCore::FrameView*&gt; &gt;, WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::Widget&gt; &gt; &gt;::~HashTable (this=0x7fffdcc908b0, __in_chrg=&lt;optimized out&gt;) at ../../Source/WTF/wtf/HashTable.h:327
#18 0x00007effadb44084 in WTF::HashMap&lt;WTF::RefPtr&lt;WebCore::Widget&gt;, WebCore::FrameView*, WTF::PtrHash&lt;WTF::RefPtr&lt;WebCore::Widget&gt; &gt;, WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::Widget&gt; &gt;, WTF::HashTraits&lt;WebCore::FrameView*&gt; &gt;::~HashMap (this=0x7fffdcc908b0, __in_chrg=&lt;optimized out&gt;) at ../../Source/WTF/wtf/HashMap.h:40
#19 0x00007effadb420aa in WebCore::RenderWidget::resumeWidgetHierarchyUpdates () at ../../Source/WebCore/rendering/RenderWidget.cpp:82
#20 0x00007effad304bb7 in WebCore::Element::detach (this=0x17a8320) at ../../Source/WebCore/dom/Element.cpp:986
#21 0x00007effad296e87 in WebCore::ContainerNode::detachChildren (this=0x17793e0) at ../../Source/WebCore/dom/ContainerNode.h:204
#22 0x00007effad29501c in WebCore::ContainerNode::detach (this=0x17793e0) at ../../Source/WebCore/dom/ContainerNode.cpp:673
#23 0x00007effad2b3c74 in WebCore::Document::detach (this=0x17793e0) at ../../Source/WebCore/dom/Document.cpp:2126
#24 0x00007effad2b3d18 in WebCore::Document::prepareForDestruction (this=0x17793e0) at ../../Source/WebCore/dom/Document.cpp:2147
#25 0x00007effad7c2a20 in WebCore::Frame::setView (this=0x17783c0, view=...) at ../../Source/WebCore/page/Frame.cpp:268
#26 0x00007effad6ff40e in WebCore::FrameLoader::detachFromParent (this=0x1778458) at ../../Source/WebCore/loader/FrameLoader.cpp:2347
#27 0x00007effacf0c71a in webkit_web_view_dispose (object=0xf862b0) at ../../Source/WebKit/gtk/webkit/webkitwebview.cpp:1358
#28 0x00007effaaf168cb in g_object_unref () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libgobject-2.0.so.0
#29 0x00007effaaf171cd in g_value_object_free_value () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libgobject-2.0.so.0
#30 0x00007effaaf33cfc in g_value_unset () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libgobject-2.0.so.0
#31 0x00007effaaf276da in g_signal_emit_valist () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libgobject-2.0.so.0
#32 0x00007effaaf27944 in g_signal_emit_by_name () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libgobject-2.0.so.0
#33 0x00007effaceb4639 in WebKit::emitCloseWebViewSignalLater (view=0xf862b0) at ../../Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:271
#34 0x00007effaae05105 in g_timeout_dispatch () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#35 0x00007effaae03359 in g_main_dispatch () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#36 0x00007effaae04003 in g_main_context_dispatch () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#37 0x00007effaae041ed in g_main_context_iterate () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#38 0x00007effaae04623 in g_main_loop_run () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#39 0x00007effab6f9843 in gtk_main () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libgtk-3.so.0
#40 0x000000000045f858 in runTest (testPathOrURL=...) at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:706
#41 0x000000000045eec1 in runTestingServerLoop () at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:491
#42 0x0000000000461eec in main (argc=2, argv=0x7fffdcc91b78) at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:1388</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656075</commentid>
    <comment_count>3</comment_count>
      <attachid>149174</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-23 06:41:47 -0700</bug_when>
    <thetext>Comment on attachment 149174
ROLLOUT of r121058

Clearing flags on attachment: 149174

Committed r121098: &lt;http://trac.webkit.org/changeset/121098&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656076</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-23 06:41:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149174</attachid>
            <date>2012-06-23 06:29:08 -0700</date>
            <delta_ts>2012-06-23 06:41:47 -0700</delta_ts>
            <desc>ROLLOUT of r121058</desc>
            <filename>bug-89809-20120623133406.patch</filename>
            <type>text/plain</type>
            <size>217966</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZDA5NWY2ZDQyMjAyZTE3MjAxYjU5NDYyNWRlYTVhNjA3NTQ1YWY1Li4yMGRmNTU4YmI2MzQzMzc0
NzMzMDhlMGNiZTJlZjJhMzBiODUyZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NCBAQAorMjAxMi0wNi0yMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMTA1OC4KKyAg
ICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTIxMDU4CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTgwOQorCisgICAgICAgIFBh
dGNoIGNhdXNlcyBwbHVnaW5zIHRlc3RzIHRvIGNyYXNoIGluIEdUSyBkZWJ1ZyBidWlsZHMKKyAg
ICAgICAgKFJlcXVlc3RlZCBieSB6ZG9iZXJzZWsgb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBB
UEkvQVBJU2hpbXMuaDoKKyAgICAgICAgKEpTQzo6QVBJRW50cnlTaGltV2l0aG91dExvY2s6OkFQ
SUVudHJ5U2hpbVdpdGhvdXRMb2NrKToKKyAgICAgICAgKEpTQzo6QVBJRW50cnlTaGltV2l0aG91
dExvY2s6On5BUElFbnRyeVNoaW1XaXRob3V0TG9jayk6CisgICAgICAgIChBUElFbnRyeVNoaW1X
aXRob3V0TG9jayk6CisgICAgICAgIChKU0M6OkFQSUVudHJ5U2hpbTo6QVBJRW50cnlTaGltKToK
KyAgICAgICAgKEFQSUVudHJ5U2hpbSk6CisgICAgICAgIChKU0M6OkFQSUNhbGxiYWNrU2hpbTo6
fkFQSUNhbGxiYWNrU2hpbSk6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAg
ICAgIChKU0dsb2JhbENvbnRleHRDcmVhdGUpOgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0Q3Jl
YXRlSW5Hcm91cCk6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRSZWxlYXNlKToKKyAgICAgICAg
KEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZSk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBoZWFwL0Nv
cGllZFNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29waWVkU3BhY2U6OnRyeUFsbG9jYXRlU2xv
d0Nhc2UpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OnBy
b3RlY3QpOgorICAgICAgICAoSlNDOjpIZWFwOjp1bnByb3RlY3QpOgorICAgICAgICAoSlNDOjpI
ZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKEpTQzo6SGVhcDo6c2V0QWN0aXZpdHlDYWxsYmFjayk6
CisgICAgICAgIChKU0M6OkhlYXA6OmFjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAoSlNDOjpI
ZWFwOjpzd2VlcGVyKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEhlYXApOgor
ICAgICAgICAqIGhlYXAvSGVhcFRpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcFRpbWVyOjp+
SGVhcFRpbWVyKToKKyAgICAgICAgKEpTQzo6SGVhcFRpbWVyOjppbnZhbGlkYXRlKToKKyAgICAg
ICAgKEpTQzo6SGVhcFRpbWVyOjp0aW1lckRpZEZpcmUpOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKiBoZWFwL0hlYXBUaW1lci5oOgorICAgICAgICAoSGVhcFRpbWVyKToKKyAgICAgICAgKiBo
ZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHA6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dl
ZXBlcjo6ZG9Xb3JrKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjpjcmVhdGUp
OgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmg6CisgICAgICAgIChJbmNyZW1l
bnRhbFN3ZWVwZXIpOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlKToKKyAgICAgICAgKiBo
ZWFwL1dlYWtCbG9jay5jcHA6CisgICAgICAgIChKU0M6OldlYWtCbG9jazo6cmVhcCk6CisgICAg
ICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uR0MpOgorICAgICAgICAoZnVuY3Rpb25S
ZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSk6CisgICAgICAgIChqc2NtYWluKToKKyAgICAgICAgKiBy
dW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpjaGVja1N5bnRheCk6CisgICAg
ICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKiBydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFj
ay5oOgorICAgICAgICAoRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6
OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbERhdGEuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0
YSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6fkpTR2xvYmFsRGF0YSk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsRGF0YTo6c2hhcmVkSW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbERhdGE6OnNoYXJlZEluc3RhbmNlSW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxEYXRhLmg6CisgICAgICAgIChKU0dsb2JhbERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6fkpTR2xv
YmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OmNy
ZWF0ZUpTTG9ja0NvdW50KToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpsb2NrQ291bnQpOgorICAg
ICAgICAoSlNDOjpzZXRMb2NrQ291bnQpOgorICAgICAgICAoSlNDOjpKU0xvY2s6OkpTTG9jayk6
CisgICAgICAgIChKU0M6OkpTTG9jazo6bG9jayk6CisgICAgICAgIChKU0M6OkpTTG9jazo6dW5s
b2NrKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jayk6
CisgICAgICAgIChKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MpOgorICAg
ICAgICAoSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2Nrczo6fkRyb3BBbGxMb2Nrcyk6CisgICAgICAg
ICogcnVudGltZS9KU0xvY2suaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0xvY2spOgor
ICAgICAgICAoSlNDOjpKU0xvY2s6OkpTTG9jayk6CisgICAgICAgIChKU0M6OkpTTG9jazo6fkpT
TG9jayk6CisgICAgICAgIChEcm9wQWxsTG9ja3MpOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha0dD
TWFwLmg6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6c2V0KToKKyAgICAgICAgKiB0ZXN0UmVn
RXhwLmNwcDoKKyAgICAgICAgKHJlYWxNYWluKToKKwogMjAxMi0wNi0yMiAgQWxleGFuZHJ1IENo
aWN1bGl0YSAgPGFjaGljdUBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBTaGFkZXJzXSBSZS1l
bmFibGUgdGhlIENTUyBTaGFkZXJzIGNvbXBpbGUgdGltZSBmbGFnIG9uIFNhZmFyaSBNYWMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA0Mjg1MzA3OTBiYTA3Mjk0MDlkZjZkM2Q1OGJjY2ZjZTRiODAyMzRkLi45YmQ0
ZmM2ODkyNGJlOWQxMjVlM2I3ZmQ0MmFhMDMwYTQ3NDc2MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjQyIEBACisyMDEyLTA2LTIzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdt
YWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTIxMDU4LgorICAg
ICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjEwNTgKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5ODA5CisKKyAgICAgICAgUGF0
Y2ggY2F1c2VzIHBsdWdpbnMgdGVzdHMgdG8gY3Jhc2ggaW4gR1RLIGRlYnVnIGJ1aWxkcworICAg
ICAgICAoUmVxdWVzdGVkIGJ5IHpkb2JlcnNlayBvbiAjd2Via2l0KS4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RTb29uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3ROb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6R0NDb250cm9sbGVyOjpkaXNjYXJkQWxsQ29tcGlsZWRDb2RlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrOjpoYW5kbGVFdmVu
dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDdXN0b21Wb2lkQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0Vycm9ySGFuZGxlcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRM
aXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9z
dDo6bm9kZUFzU2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNJbmplY3RlZFNjcmlw
dEhvc3Q6Omluc3BlY3RlZE9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNj
cmlwdE1hbmFnZXI6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdyk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xhenlF
dmVudExpc3RlbmVyOjppbml0aWFsaXplSlNGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU01haW5UaHJl
YWRFeGVjU3RhdGU6OmV2YWx1YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU011dGF0aW9u
Q2FsbGJhY2tDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkNhbGxiYWNr
OjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0
Tm9kZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxs
YmFja0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1JlcXVlc3RBbmltYXRpb25GcmFt
ZUNhbGxiYWNrOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSmF2YVNjcmlw
dENhbGxGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2FsbEZyYW1lOjpl
dmFsdWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxs
SlNGdW5jdGlvbnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGVGdW5jdGlvbkluQ29u
dGV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6U2NyaXB0Q2FjaGVkRnJh
bWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6cmVzdG9y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWNoZWRGcmFtZURhdGE6OmNsZWFyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1NoZWxsKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
Q29udHJvbGxlcjo6dXBkYXRlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29u
dHJvbGxlcjo6Y2FjaGVhYmxlQmluZGluZ1Jvb3RPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6YmluZGluZ1Jvb3RPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0TlBPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6anNPYmplY3RGb3JQbHVnaW5FbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNsZWFyU2NyaXB0T2JqZWN0cyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1NjcmlwdE9iamVjdCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGF1c2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dEV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXZlbnRMaXN0ZW5lckhhbmRs
ZXJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmV2ZW50TGlzdGVuZXJIYW5kbGVyTG9jYXRpb24p
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q2FsbGJhY2s6OmNhbGwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRHbG9iYWxPYmplY3Q6OnNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRHbG9iYWxPYmplY3Q6OmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRHbG9iYWxPYmplY3Q6OnJlbW92ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2Ny
aXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0VmFsdWU6OmdldFN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRWYWx1ZTo6dG9JbnNwZWN0b3JWYWx1ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjp+V29ya2VyU2NyaXB0Q29udHJvbGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVFdmFsKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAgKF9kaWRF
eGVjdXRlKToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IF9zZXRJbXA6b3JpZ2luUm9vdE9i
amVjdDpyb290T2JqZWN0Ol0pOgorICAgICAgICAoLVtXZWJTY3JpcHRPYmplY3QgX3NldE9yaWdp
blJvb3RPYmplY3Q6YW5kUm9vdE9iamVjdDpdKToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0
IGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IGZpbmFsaXplXSk6CisgICAg
ICAgICgtW1dlYlNjcmlwdE9iamVjdCBjYWxsV2ViU2NyaXB0TWV0aG9kOndpdGhBcmd1bWVudHM6
XSk6CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBldmFsdWF0ZVdlYlNjcmlwdDpdKToKKyAg
ICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IHNldFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1b
V2ViU2NyaXB0T2JqZWN0IHZhbHVlRm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJTY3JpcHRPYmpl
Y3QgcmVtb3ZlV2ViU2NyaXB0S2V5Ol0pOgorICAgICAgICAoLVtXZWJTY3JpcHRPYmplY3QgaGFz
V2ViU2NyaXB0S2V5Ol0pOgorICAgICAgICAoLVtXZWJTY3JpcHRPYmplY3Qgc3RyaW5nUmVwcmVz
ZW50YXRpb25dKToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IHdlYlNjcmlwdFZhbHVlQXRJ
bmRleDpdKToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IHNldFdlYlNjcmlwdFZhbHVlQXRJ
bmRleDp2YWx1ZTpdKToKKyAgICAgICAgKCtbV2ViU2NyaXB0T2JqZWN0IF9jb252ZXJ0VmFsdWVU
b09iamNWYWx1ZTpvcmlnaW5Sb290T2JqZWN0OnJvb3RPYmplY3Q6XSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUNhbGxi
YWNrSW1wbGVtZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFjazo6Y2Fs
bGJhY2tXaXRoTm9QYXJhbSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFjazo6Y2Fs
bGJhY2tXaXRoQ2xhc3MxUGFyYW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2s6
OmNhbGxiYWNrV2l0aENsYXNzMlBhcmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENhbGxi
YWNrOjpjYWxsYmFja1dpdGhTdHJpbmdMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENh
bGxiYWNrOjpjYWxsYmFja1dpdGhCb29sZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENh
bGxiYWNrOjpjYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyk6CisgICAgICAgICogYnJpZGdlL05Q
X2pzb2JqZWN0LmNwcDoKKyAgICAgICAgKF9OUE5fSW52b2tlRGVmYXVsdCk6CisgICAgICAgIChf
TlBOX0ludm9rZSk6CisgICAgICAgIChfTlBOX0V2YWx1YXRlKToKKyAgICAgICAgKF9OUE5fR2V0
UHJvcGVydHkpOgorICAgICAgICAoX05QTl9TZXRQcm9wZXJ0eSk6CisgICAgICAgIChfTlBOX1Jl
bW92ZVByb3BlcnR5KToKKyAgICAgICAgKF9OUE5fSGFzUHJvcGVydHkpOgorICAgICAgICAoX05Q
Tl9IYXNNZXRob2QpOgorICAgICAgICAoX05QTl9FbnVtZXJhdGUpOgorICAgICAgICAoX05QTl9D
b25zdHJ1Y3QpOgorICAgICAgICAqIGJyaWRnZS9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6Q0NsYXNzOjp+Q0NsYXNzKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkND
bGFzczo6bWV0aG9kc05hbWVkKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNDbGFzczo6Zmll
bGROYW1lZCk6CisgICAgICAgICogYnJpZGdlL2MvY19pbnN0YW5jZS5jcHA6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZSk6
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6Omludm9rZU1ldGhvZCk6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6Omludm9rZURlZmF1bHRNZXRob2QpOgorICAg
ICAgICAoSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjppbnZva2VDb25zdHJ1Y3QpOgorICAgICAg
ICAoSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpnZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KiBicmlkZ2UvYy9jX3J1bnRpbWUuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0ZpZWxk
Ojp2YWx1ZUZyb21JbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDRmllbGQ6OnNl
dFZhbHVlVG9JbnN0YW5jZSk6CisgICAgICAgICogYnJpZGdlL2MvY191dGlsaXR5LmNwcDoKKyAg
ICAgICAgKEpTQzo6QmluZGluZ3M6OmNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KToKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6OmNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKToKKyAgICAgICAgKiBicmlk
Z2Uvam5pL2puaV9qc29iamVjdC5tbToKKyAgICAgICAgKEphdmFKU09iamVjdDo6Y2FsbCk6Cisg
ICAgICAgIChKYXZhSlNPYmplY3Q6OmV2YWwpOgorICAgICAgICAoSmF2YUpTT2JqZWN0OjpnZXRN
ZW1iZXIpOgorICAgICAgICAoSmF2YUpTT2JqZWN0OjpzZXRNZW1iZXIpOgorICAgICAgICAoSmF2
YUpTT2JqZWN0OjpyZW1vdmVNZW1iZXIpOgorICAgICAgICAoSmF2YUpTT2JqZWN0OjpnZXRTbG90
KToKKyAgICAgICAgKEphdmFKU09iamVjdDo6c2V0U2xvdCk6CisgICAgICAgIChKYXZhSlNPYmpl
Y3Q6OnRvU3RyaW5nKToKKyAgICAgICAgKEphdmFKU09iamVjdDo6Y29udmVydFZhbHVlVG9KT2Jq
ZWN0KToKKyAgICAgICAgKEphdmFKU09iamVjdDo6Y29udmVydEpPYmplY3RUb1ZhbHVlKToKKyAg
ICAgICAgKiBicmlkZ2Uvam5pL2puaV9vYmpjLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
ZGlzcGF0Y2hKTklDYWxsKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KTklVdGlsaXR5UHJp
dmF0ZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjb252ZXJ0VmFsdWVUb0pWYWx1ZSk6
CisgICAgICAgICogYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmNwcDoKKyAgICAgICAgKEph
dmFDbGFzczo6SmF2YUNsYXNzKToKKyAgICAgICAgKEphdmFDbGFzczo6fkphdmFDbGFzcyk6Cisg
ICAgICAgICogYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcDoKKyAgICAgICAgKEph
dmFJbnN0YW5jZTo6c3RyaW5nVmFsdWUpOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFN
ZXRob2RKU0MuY3BwOgorICAgICAgICAoYXBwZW5kQ2xhc3NOYW1lKToKKyAgICAgICAgKEphdmFN
ZXRob2Q6OnNpZ25hdHVyZSk6CisgICAgICAgICogYnJpZGdlL2puaS9qc2MvSmF2YVN0cmluZ0pT
Qy5oOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SmF2YVN0cmluZzo6SmF2YVN0cmluZyk6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpKYXZhU3RyaW5nOjp+SmF2YVN0cmluZyk6CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpKYXZhU3RyaW5nOjp1dGY4KToKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6OkphdmFTdHJpbmc6OmluaXQpOgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmNw
cDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpuZXdSdW50aW1lT2JqZWN0KToK
KyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tOgorICAgICAgICAoT2JqY0lu
c3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUpOgorICAgICAgICAoT2JqY0lu
c3RhbmNlOjppbnZva2VPYmpjTWV0aG9kKToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6aW52b2tl
RGVmYXVsdE1ldGhvZCk6CisgICAgICAgIChPYmpjSW5zdGFuY2U6OnNldFZhbHVlT2ZVbmRlZmlu
ZWRGaWVsZCk6CisgICAgICAgIChPYmpjSW5zdGFuY2U6OmdldFZhbHVlT2ZVbmRlZmluZWRGaWVs
ZCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6T2JqY0ZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZSk6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpPYmpjRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZSk6CisgICAgICAgICogYnJp
ZGdlL29iamMvb2JqY191dGlsaXR5Lm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVy
dFZhbHVlVG9PYmpjVmFsdWUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydE5TU3Ry
aW5nVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydE9iamNWYWx1ZVRv
VmFsdWUpOgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHA6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpRdEluc3RhbmNlOjp+UXRJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpRdEluc3RhbmNlOjpnZXRRdEluc3RhbmNlKToKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6OlF0SW5zdGFuY2U6Om5ld1J1bnRpbWVPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9xdC9x
dF9waXhtYXBydW50aW1lLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UGl4bWFwSW5z
dGFuY2U6OmNyZWF0ZVBpeG1hcFJ1bnRpbWVPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9xdC9x
dF9ydW50aW1lLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNvbnZlcnRWYWx1ZVRvUVZh
cmlhbnQpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydFFWYXJpYW50VG9WYWx1ZSk6
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVNZXRhTWV0aG9kOjpjYWxsKToKKyAg
ICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmNhbGwpOgor
ICAgICAgICAqIGJyaWRnZS9xdC9xdF9ydW50aW1lX3F0NC5jcHA6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpjb252ZXJ0VmFsdWVUb1FWYXJpYW50KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6
OmNvbnZlcnRRVmFyaWFudFRvVmFsdWUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRSdW50
aW1lTWV0YU1ldGhvZDo6Y2FsbCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVD
b25uZWN0aW9uTWV0aG9kOjpjYWxsKToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1
ZmZlcik6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogcGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnN0YXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6
UGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6bnBPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cHJpdmF0ZUJyb3dz
aW5nU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKiBwbHVnaW5zL2JsYWNrYmVycnkvUGx1Z2luVmll
d0JsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6ZGlzcGF0Y2hO
UEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnNldE5QV2luZG93SWZOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxhdGZvcm1TdGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpnZXRXaW5kb3dJbmZvKToKKyAgICAgICAgKiBwbHVn
aW5zL2VmbC9QbHVnaW5WaWV3RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6
OmRpc3BhdGNoTlBFdmVudCk6CisgICAgICAgICogcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpkaXNwYXRjaE5QRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5WaWV3OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpblZpZXc6OnNldE5QV2luZG93SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UGx1Z2luVmlldzo6cGxhdGZvcm1TdGFydCk6CisgICAgICAgICogcGx1Z2lucy9tYWMvUGx1Z2lu
Vmlld01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnNldE5QV2luZG93SWZO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6ZGlzcGF0Y2hOUEV2ZW50KToK
KyAgICAgICAgKiBwbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5WaWV3OjpkaXNwYXRjaE5QRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2lu
Vmlldzo6c2V0TlBXaW5kb3dJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3
OjpwbGF0Zm9ybVN0YXJ0KToKKyAgICAgICAgKiBwbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmRpc3BhdGNoTlBFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpblZpZXc6OmhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luVmlldzo6c2V0TlBXaW5kb3dSZWN0KToKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dl
YkNvcmVUZXN0U3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6OmluamVj
dEludGVybmFsc09iamVjdCk6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6OnJlc2V0SW50
ZXJuYWxzT2JqZWN0KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRyb3BQcm90ZWN0aW9uKToKKwogMjAxMi0wNi0y
MyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAg
ICAgICBTdG9yZSBoaXQtdGVzdCByZWN0IGluIEhpdFRlc3RQb2ludCBhcyBSZWN0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggOTdkOGU1YWI3YjEwYmMwZTA5YTRlYmY0OTVlMjkz
NzllZmMxMGU4Zi4uMWEyZDJkMjhjYzNiYzIzNDQxNmRiODEzNTU2ZTlmYzVlYWViMzljOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDYtMjMg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjEwNTguCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzEyMTA1OAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODk4MDkKKworICAgICAgICBQYXRjaCBjYXVzZXMgcGx1Z2lucyB0ZXN0
cyB0byBjcmFzaCBpbiBHVEsgZGVidWcgYnVpbGRzCisgICAgICAgIChSZXF1ZXN0ZWQgYnkgemRv
YmVyc2VrIG9uICN3ZWJraXQpLgorCisgICAgICAgICogQXBpL0JsYWNrQmVycnlHbG9iYWwuY3Bw
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpjbGVhck1lbW9yeUNhY2hlcyk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2xpZW50RXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VQb3B1cEJsYWNrQmVycnk6Omluc3RhbGxEb21GdW5jdGlvbik6CisgICAgICAgICogV2ViS2l0
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0Ojpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8pOgorCiAyMDEyLTA2
LTIwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
SlNMb2NrIHNob3VsZCBiZSBwZXItSlNHbG9iYWxEYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggMDU5
ZTdjYmY5ZTMzZTE0MTk3NmJjNTE0YTQ2Mjc5ZTNjMmRjMTJiYy4uMjI3M2JiMzRjYmJiY2Y3ODM5
NTU0MzY3ODZlNjIzNjY0MTE4ZjRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDEyLTA2LTIzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
KworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTIxMDU4LgorICAgICAgICBodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjEwNTgKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5ODA5CisKKyAgICAgICAgUGF0Y2ggY2F1c2Vz
IHBsdWdpbnMgdGVzdHMgdG8gY3Jhc2ggaW4gR1RLIGRlYnVnIGJ1aWxkcworICAgICAgICAoUmVx
dWVzdGVkIGJ5IHpkb2JlcnNlayBvbiAjd2Via2l0KS4KKworICAgICAgICAqIGV3ay9ld2tfZnJh
bWUuY3BwOgorICAgICAgICAoZXdrX2ZyYW1lX3NjcmlwdF9leGVjdXRlKToKKyAgICAgICAgKiBl
d2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdrX3ZpZXdfanNfb2JqZWN0X2FkZCk6CisKIDIw
MTItMDYtMjIgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAg
IFtFRkxdW1dLMl0gU3VwcG9ydCBrZXlib2FyZCBldmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGRm
ZGFjMjM0MGI5MzNkZmQ1ZTY2NmJlNTVkOTRkYTE5MzBlMWQxYjAuLjBkMDg0MzRjOTAzNGVhZGFj
Zjk1ZDc0NTg1OTUxMTQyOTJkNmY4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxMi0wNi0yMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+
CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMTA1OC4KKyAgICAgICAgaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTIxMDU4CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTgwOQorCisgICAgICAgIFBhdGNoIGNhdXNl
cyBwbHVnaW5zIHRlc3RzIHRvIGNyYXNoIGluIEdUSyBkZWJ1ZyBidWlsZHMKKyAgICAgICAgKFJl
cXVlc3RlZCBieSB6ZG9iZXJzZWsgb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrOjpnY0NvdW50SmF2YXNjcmlwdE9iamVjdHMpOgorCiAyMDEyLTA2LTIwICBN
YXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgSlNMb2Nr
IHNob3VsZCBiZSBwZXItSlNHbG9iYWxEYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMDFkZTVkNjAz
NThhMzVjY2M1NmM3NzM1ODRjY2RhMjI4MDg1Y2FmMy4uNjA2YmNlYjgzMzJlYjIyNzQxMjk4OGU1
Yjk0MjE0NjIwOGI4OGFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEy
LTA2LTIzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTIxMDU4LgorICAgICAgICBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjEwNTgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg5ODA5CisKKyAgICAgICAgUGF0Y2ggY2F1c2VzIHBsdWdp
bnMgdGVzdHMgdG8gY3Jhc2ggaW4gR1RLIGRlYnVnIGJ1aWxkcworICAgICAgICAoUmVxdWVzdGVk
IGJ5IHpkb2JlcnNlayBvbiAjd2Via2l0KS4KKworICAgICAgICAqIERPTS9XZWJET01PcGVyYXRp
b25zLm1tOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNz
Lm1tOgorICAgICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBqYXZhU2NyaXB0T2JqZWN0c0NvdW50
XSk6CisgICAgICAgICgrW1dlYkNvcmVTdGF0aXN0aWNzIGphdmFTY3JpcHRHbG9iYWxPYmplY3Rz
Q291bnRdKToKKyAgICAgICAgKCtbV2ViQ29yZVN0YXRpc3RpY3MgamF2YVNjcmlwdFByb3RlY3Rl
ZE9iamVjdHNDb3VudF0pOgorICAgICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBqYXZhU2NyaXB0
UHJvdGVjdGVkR2xvYmFsT2JqZWN0c0NvdW50XSk6CisgICAgICAgICgrW1dlYkNvcmVTdGF0aXN0
aWNzIGphdmFTY3JpcHRQcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzXSk6CisgICAgICAgICgrW1dl
YkNvcmVTdGF0aXN0aWNzIGphdmFTY3JpcHRPYmplY3RUeXBlQ291bnRzXSk6CisgICAgICAgICgr
W1dlYkNvcmVTdGF0aXN0aWNzIHNob3VsZFByaW50RXhjZXB0aW9uc10pOgorICAgICAgICAoK1tX
ZWJDb3JlU3RhdGlzdGljcyBzZXRTaG91bGRQcmludEV4Y2VwdGlvbnM6XSk6CisgICAgICAgICgr
W1dlYkNvcmVTdGF0aXN0aWNzIG1lbW9yeVN0YXRpc3RpY3NdKToKKyAgICAgICAgKCtbV2ViQ29y
ZVN0YXRpc3RpY3MgamF2YVNjcmlwdFJlZmVyZW5jZWRPYmplY3RzQ291bnRdKToKKyAgICAgICAg
KiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Omludm9rZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6aW52b2tlRGVmYXVsdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y29uc3RydWN0KToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpnZXRQcm9wZXJ0
eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6c2V0UHJv
cGVydHkpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnJl
bW92ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5OjpoYXNNZXRob2QpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHk6OmVudW1lcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eTo6YWRkVmFsdWVUb0FycmF5KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5Ojptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUpOgorICAgICAg
ICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAgICAgIChXZWJOZXRz
Y2FwZVBsdWdpblN0cmVhbTo6d2FudHNBbGxTdHJlYW1zKToKKyAgICAgICAgKiBQbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3
IHNlbmRFdmVudDppc0RyYXdSZWN0Ol0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZp
ZXcgcHJpdmF0ZUJyb3dzaW5nTW9kZURpZENoYW5nZV0pOgorICAgICAgICAoLVtXZWJOZXRzY2Fw
ZVBsdWdpblZpZXcgc2V0V2luZG93SWZOZWNlc3NhcnldKToKKyAgICAgICAgKC1bV2ViTmV0c2Nh
cGVQbHVnaW5WaWV3IGNyZWF0ZVBsdWdpblNjcmlwdGFibGVPYmplY3RdKToKKyAgICAgICAgKC1b
V2ViTmV0c2NhcGVQbHVnaW5WaWV3IGdldEZvcm1WYWx1ZTpdKToKKyAgICAgICAgKC1bV2ViTmV0
c2NhcGVQbHVnaW5WaWV3IGV2YWx1YXRlSmF2YVNjcmlwdFBsdWdpblJlcXVlc3Q6XSk6CisgICAg
ICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyB3ZWJGcmFtZTpkaWRGaW5pc2hMb2FkV2l0aFJl
YXNvbjpdKToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3IGxvYWRQbHVnaW5SZXF1
ZXN0Ol0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgX3ByaW50ZWRQbHVnaW5C
aXRtYXBdKToKKyAgICAgICAgKiBQbHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIubW06CisgICAg
ICAgICgrW1dlYlBsdWdpbkNvbnRyb2xsZXIgcGx1Z0luVmlld1dpdGhBcmd1bWVudHM6ZnJvbVBs
dWdpblBhY2thZ2U6XSk6CisgICAgICAgICgtW1dlYlBsdWdpbkNvbnRyb2xsZXIgc3RvcE9uZVBs
dWdpbjpdKToKKyAgICAgICAgKC1bV2ViUGx1Z2luQ29udHJvbGxlciBkZXN0cm95T25lUGx1Z2lu
Ol0pOgorICAgICAgICAoLVtXZWJQbHVnaW5Db250cm9sbGVyIHN0YXJ0QWxsUGx1Z2luc10pOgor
ICAgICAgICAoLVtXZWJQbHVnaW5Db250cm9sbGVyIGFkZFBsdWdpbjpdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6Zm9yY2VVc2VyR2VzdHVyZTpdKToKKyAgICAgICAgKC1b
V2ViRnJhbWUgX3N0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOndpdGhHbG9i
YWxPYmplY3Q6aW5TY3JpcHRXb3JsZDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERl
YnVnRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYlNjcmlwdENhbGxGcmFtZSBzY29wZUNoYWlu
XSk6CisgICAgICAgICgtW1dlYlNjcmlwdENhbGxGcmFtZSBldmFsdWF0ZVdlYlNjcmlwdDpdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX3JlcG9y
dEV4Y2VwdGlvbjppbkNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgYWVEZXNjQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2NvbXB1
dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbzpmb3JFbGVtZW50Ol0pOgorCiAyMDEyLTA2LTIy
ICBBbGV4YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NT
IFNoYWRlcnNdIFJlLWVuYWJsZSB0aGUgQ1NTIFNoYWRlcnMgY29tcGlsZSB0aW1lIGZsYWcgb24g
U2FmYXJpIE1hYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBlZWZmODI0YzJmYTJhNTA5OWRkOWRlZTczOGMy
NGU2NmIwNThkMzUzLi5kOGExZTVjMTE1MmE3MzU1Y2YxZTMwZWY2NjRmNTg2MDg0MGRkZmQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA2LTIzICBTaGVyaWZmIEJvdCAg
PHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTIxMDU4LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8xMjEwNTgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg5ODA5CisKKyAgICAgICAgUGF0Y2ggY2F1c2VzIHBsdWdpbnMgdGVzdHMgdG8gY3Jhc2ggaW4g
R1RLIGRlYnVnIGJ1aWxkcworICAgICAgICAoUmVxdWVzdGVkIGJ5IHpkb2JlcnNlayBvbiAjd2Vi
a2l0KS4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1l
UHJpdmF0ZTo6YWRkUXRTZW5kZXJUb0dsb2JhbE9iamVjdCk6CisgICAgICAgIChRV2ViRnJhbWU6
OmFkZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OmluamVjdEludGVybmFsc09iamVjdCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6cmVzZXRJbnRlcm5hbHNPYmplY3QpOgorCiAyMDEyLTA2LTIwICBNYXJrIEhhaG5l
bmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgSlNMb2NrIHNob3VsZCBi
ZSBwZXItSlNHbG9iYWxEYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggODMyYzc1YWZmNGIzZDhhZDJl
YjJkZjk0ODMwNDAwZGVkZjJiYWVkOS4uMzlkNGQwNzk2OTg1MGMzMzU2ZDhlM2M1ZjdiZDYzODk2
ODMwZjk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA2LTIzICBT
aGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMTIxMDU4LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8xMjEwNTgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg5ODA5CisKKyAgICAgICAgUGF0Y2ggY2F1c2VzIHBsdWdpbnMgdGVzdHMg
dG8gY3Jhc2ggaW4gR1RLIGRlYnVnIGJ1aWxkcworICAgICAgICAoUmVxdWVzdGVkIGJ5IHpkb2Jl
cnNlayBvbiAjd2Via2l0KS4KKworICAgICAgICAqIFdlYkNvcmVTdGF0aXN0aWNzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0T2JqZWN0c0NvdW50KToKKyAgICAg
ICAgKFdlYkNvcmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0R2xvYmFsT2JqZWN0c0NvdW50KToKKyAg
ICAgICAgKFdlYkNvcmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0UHJvdGVjdGVkT2JqZWN0c0NvdW50
KToKKyAgICAgICAgKFdlYkNvcmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0UHJvdGVjdGVkR2xvYmFs
T2JqZWN0c0NvdW50KToKKyAgICAgICAgKFdlYkNvcmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0UHJv
dGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViRnJhbWU6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRJblNjcmlwdFdvcmxkKToK
KyAgICAgICAgKiBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkphdmFT
Y3JpcHRDb2xsZWN0b3I6Om9iamVjdENvdW50KToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYlZpZXc6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nKToK
KyAgICAgICAgKFdlYlZpZXc6OnJlcG9ydEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJWaWV3Ojpl
bGVtZW50RnJvbUpTKToKKwogMjAxMi0wNi0yMCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJl
cmdAYXBwbGUuY29tPgogCiAgICAgICAgIEpTTG9jayBzaG91bGQgYmUgcGVyLUpTR2xvYmFsRGF0
YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDY4OGRlOWUzZjgyYWNhMmJiMGEwMGU0NDlkMDlhZjg1ZDlhY2JkMGMu
LjgwNzQ1ZDdjZDU4NGIyYzQ3MDU5YmI3M2U1MGFiN2RmNTUyNmU3OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0NyBAQAorMjAxMi0wNi0yMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMTA1OC4K
KyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTIxMDU4CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTgwOQorCisgICAgICAg
IFBhdGNoIGNhdXNlcyBwbHVnaW5zIHRlc3RzIHRvIGNyYXNoIGluIEdUSyBkZWJ1ZyBidWlsZHMK
KyAgICAgICAgKFJlcXVlc3RlZCBieSB6ZG9iZXJzZWsgb24gI3dlYmtpdCkuCisKKyAgICAgICAg
KiBTaGFyZWQvbWFjL1dlYk1lbW9yeVNhbXBsZXIubWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNZW1vcnlTYW1wbGVyOjpzYW1wbGVXZWJLaXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZTo6amF2YVNjcmlwdE9iamVjdHNDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlOjpyZXBvcnRFeGNlcHRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6
Y2FsbE1ldGhvZCk6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmNhbGxPYmplY3QpOgor
ICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpjYWxsQ29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViS2l0OjpKU05QT2JqZWN0OjpwdXQpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmdldE93blByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0Ojpwcm9wZXJ0eUdldHRlcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjpoYXNNZXRob2QpOgorICAgICAgICAoV2ViS2l0
OjpOUEpTT2JqZWN0OjppbnZva2UpOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjppbnZv
a2VEZWZhdWx0KToKKyAgICAgICAgKFdlYktpdDo6TlBKU09iamVjdDo6aGFzUHJvcGVydHkpOgor
ICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjpnZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJL
aXQ6Ok5QSlNPYmplY3Q6OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYktpdDo6TlBKU09iamVj
dDo6cmVtb3ZlUHJvcGVydHkpOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjplbnVtZXJh
dGUpOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0Ojpjb25zdHJ1Y3QpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOUFJ1bnRpbWVPYmplY3RNYXA6OmNvbnZlcnRKU1ZhbHVlVG9OUFZhcmlh
bnQpOgorICAgICAgICAoV2ViS2l0OjpOUFJ1bnRpbWVPYmplY3RNYXA6OmV2YWx1YXRlKToKKyAg
ICAgICAgKFdlYktpdDo6TlBSdW50aW1lT2JqZWN0TWFwOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9F
eGVjU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpqc1dyYXBwZXJGb3JXb3JsZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpnZXRXZWJDb3Jl
U3RhdGlzdGljcyk6CisKIDIwMTItMDYtMjMgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdt
YWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgR1RLJ3MgV2ViS2l0
MiBidWlsZCBhZnRlciByMTIxMDkzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9BUElTaGltcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElTaGltcy5oCmlu
ZGV4IGVmNWYxMDQ2NmFlYjYzOTA4ZDM5YTUxNDVkZjBmYWE3MTY3ZDZhYzEuLjAyNDk1MTEwYjY2
ODNjNzJlZGQxMTBmZDNkYjgyNDIxOTJiNzVmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvQVBJU2hpbXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQ
SVNoaW1zLmgKQEAgLTI4LDQwICsyOCwzMSBAQAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAj
aW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiSW5jcmVtZW50YWxTd2Vl
cGVyLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFQSUVudHJ5U2hpbVdpdGhvdXRMb2NrIHsK
LXB1YmxpYzoKLSAgICBlbnVtIFJlZkdsb2JhbERhdGFUYWcgeyBEb250UmVmR2xvYmFsRGF0YSA9
IDAsIFJlZkdsb2JhbERhdGEgfTsKLQogcHJvdGVjdGVkOgotICAgIEFQSUVudHJ5U2hpbVdpdGhv
dXRMb2NrKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgYm9vbCByZWdpc3RlclRocmVhZCwgUmVm
R2xvYmFsRGF0YVRhZyBzaG91bGRSZWZHbG9iYWxEYXRhKQotICAgICAgICA6IG1fc2hvdWxkUmVm
R2xvYmFsRGF0YShzaG91bGRSZWZHbG9iYWxEYXRhKQotICAgICAgICAsIG1fZ2xvYmFsRGF0YShn
bG9iYWxEYXRhKQorICAgIEFQSUVudHJ5U2hpbVdpdGhvdXRMb2NrKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgYm9vbCByZWdpc3RlclRocmVhZCkKKyAgICAgICAgOiBtX2dsb2JhbERhdGEoZ2xv
YmFsRGF0YSkKICAgICAgICAgLCBtX2VudHJ5SWRlbnRpZmllclRhYmxlKHd0ZlRocmVhZERhdGEo
KS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZSkp
CiAgICAgewotICAgICAgICBpZiAoc2hvdWxkUmVmR2xvYmFsRGF0YSkKLSAgICAgICAgICAgIG1f
Z2xvYmFsRGF0YS0+cmVmKCk7CiAgICAgICAgIFVOVVNFRF9QQVJBTShyZWdpc3RlclRocmVhZCk7
CiAgICAgICAgIGlmIChyZWdpc3RlclRocmVhZCkKICAgICAgICAgICAgIGdsb2JhbERhdGEtPmhl
YXAubWFjaGluZVRocmVhZHMoKS5hZGRDdXJyZW50VGhyZWFkKCk7CiAgICAgICAgIG1fZ2xvYmFs
RGF0YS0+aGVhcC5hY3Rpdml0eUNhbGxiYWNrKCktPnN5bmNocm9uaXplKCk7Ci0gICAgICAgIG1f
Z2xvYmFsRGF0YS0+aGVhcC5zd2VlcGVyKCktPnN5bmNocm9uaXplKCk7CisgICAgICAgIG1fZ2xv
YmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICB9CiAKICAgICB+QVBJRW50cnlT
aGltV2l0aG91dExvY2soKQogICAgIHsKKyAgICAgICAgbV9nbG9iYWxEYXRhLT50aW1lb3V0Q2hl
Y2tlci5zdG9wKCk7CiAgICAgICAgIHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmll
clRhYmxlKG1fZW50cnlJZGVudGlmaWVyVGFibGUpOwotICAgICAgICBpZiAobV9zaG91bGRSZWZH
bG9iYWxEYXRhKQotICAgICAgICAgICAgbV9nbG9iYWxEYXRhLT5kZXJlZigpOwogICAgIH0KIAot
cHJvdGVjdGVkOgotICAgIFJlZkdsb2JhbERhdGFUYWcgbV9zaG91bGRSZWZHbG9iYWxEYXRhOwor
cHJpdmF0ZToKICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKICAgICBJZGVudGlmaWVy
VGFibGUqIG1fZW50cnlJZGVudGlmaWVyVGFibGU7CiB9OwpAQCAtNzAsMzggKzYxLDIwIEBAIGNs
YXNzIEFQSUVudHJ5U2hpbSA6IHB1YmxpYyBBUElFbnRyeVNoaW1XaXRob3V0TG9jayB7CiBwdWJs
aWM6CiAgICAgLy8gTm9ybWFsIEFQSSBlbnRyeQogICAgIEFQSUVudHJ5U2hpbShFeGVjU3RhdGUq
IGV4ZWMsIGJvb2wgcmVnaXN0ZXJUaHJlYWQgPSB0cnVlKQotICAgICAgICA6IEFQSUVudHJ5U2hp
bVdpdGhvdXRMb2NrKCZleGVjLT5nbG9iYWxEYXRhKCksIHJlZ2lzdGVyVGhyZWFkLCBSZWZHbG9i
YWxEYXRhKQotICAgIHsKLSAgICAgICAgaW5pdCgpOwotICAgIH0KLQotICAgIC8vIFRoaXMgY29u
c3RydWN0b3IgaXMgbmVjZXNzYXJ5IGZvciBIZWFwVGltZXIgdG8gcHJldmVudCBpdCBmcm9tIGFj
Y2lkZW50YWxseSByZXN1cnJlY3RpbmcgCi0gICAgLy8gdGhlIHJlZiBjb3VudCBvZiBhICJkZWFk
IiBKU0dsb2JhbERhdGEuCi0gICAgQVBJRW50cnlTaGltKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgUmVmR2xvYmFsRGF0YVRhZyByZWZHbG9iYWxEYXRhLCBib29sIHJlZ2lzdGVyVGhyZWFkID0g
dHJ1ZSkKLSAgICAgICAgOiBBUElFbnRyeVNoaW1XaXRob3V0TG9jayhnbG9iYWxEYXRhLCByZWdp
c3RlclRocmVhZCwgcmVmR2xvYmFsRGF0YSkKKyAgICAgICAgOiBBUElFbnRyeVNoaW1XaXRob3V0
TG9jaygmZXhlYy0+Z2xvYmFsRGF0YSgpLCByZWdpc3RlclRocmVhZCkKKyAgICAgICAgLCBtX2xv
Y2soZXhlYykKICAgICB7Ci0gICAgICAgIGluaXQoKTsKICAgICB9CiAKICAgICAvLyBKU1Byb3Bl
cnR5TmFtZUFjY3VtdWxhdG9yIG9ubHkgaGFzIGEgZ2xvYmFsRGF0YS4KICAgICBBUElFbnRyeVNo
aW0oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBib29sIHJlZ2lzdGVyVGhyZWFkID0gdHJ1ZSkK
LSAgICAgICAgOiBBUElFbnRyeVNoaW1XaXRob3V0TG9jayhnbG9iYWxEYXRhLCByZWdpc3RlclRo
cmVhZCwgUmVmR2xvYmFsRGF0YSkKKyAgICAgICAgOiBBUElFbnRyeVNoaW1XaXRob3V0TG9jayhn
bG9iYWxEYXRhLCByZWdpc3RlclRocmVhZCkKKyAgICAgICAgLCBtX2xvY2soZ2xvYmFsRGF0YS0+
aXNTaGFyZWRJbnN0YW5jZSgpID8gTG9ja0ZvclJlYWwgOiBTaWxlbmNlQXNzZXJ0aW9uc09ubHkp
CiAgICAgewotICAgICAgICBpbml0KCk7Ci0gICAgfQotCi0gICAgfkFQSUVudHJ5U2hpbSgpCi0g
ICAgewotICAgICAgICBtX2dsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKLSAgICAg
ICAgbV9nbG9iYWxEYXRhLT5hcGlMb2NrKCkudW5sb2NrKCk7CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIHZvaWQgaW5pdCgpCi0gICAgewotICAgICAgICBtX2dsb2JhbERhdGEtPmFwaUxvY2soKS5s
b2NrKCk7Ci0gICAgICAgIG1fZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKLSAg
ICB9CisgICAgSlNMb2NrIG1fbG9jazsKIH07CiAKIGNsYXNzIEFQSUNhbGxiYWNrU2hpbSB7CkBA
IC0xMTUsNiArODgsNyBAQCBwdWJsaWM6CiAKICAgICB+QVBJQ2FsbGJhY2tTaGltKCkKICAgICB7
CisgICAgICAgIG1fZ2xvYmFsRGF0YS0+aGVhcC5hY3Rpdml0eUNhbGxiYWNrKCktPnN5bmNocm9u
aXplKCk7CiAgICAgICAgIHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxl
KG1fZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCA3YTU3Mjg3ZGVkNGUwMmQ0YjBkY2M0
OTk3ZGRhOTA0MzFiNmRhMWFiLi45MmUwM2E2NzFjMDgwMzc4OTYxMThhNmNmYjlhMjU0OGI2ZWRl
ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCkBAIC03
OCw2ICs3OCw3IEBAIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGUoSlND
bGFzc1JlZiBnbG9iYWxPYmplY3RDbGFzcykKICAgICAvLyBJZiB0aGUgYXBwbGljYXRpb24gd2Fz
IGxpbmtlZCBiZWZvcmUgSlNHbG9iYWxDb250ZXh0Q3JlYXRlIHdhcyBjaGFuZ2VkIHRvIHVzZSBh
IHVuaXF1ZSBKU0dsb2JhbERhdGEsCiAgICAgLy8gd2UgdXNlIGEgc2hhcmVkIG9uZSBmb3IgYmFj
a3dhcmRzIGNvbXBhdGliaWxpdHkuCiAgICAgaWYgKE5TVmVyc2lvbk9mTGlua1RpbWVMaWJyYXJ5
KCJKYXZhU2NyaXB0Q29yZSIpIDw9IHdlYmtpdEZpcnN0VmVyc2lvbldpdGhDb25jdXJyZW50R2xv
YmFsQ29udGV4dHMpIHsKKyAgICAgICAgSlNMb2NrIGxvY2soTG9ja0ZvclJlYWwpOwogICAgICAg
ICByZXR1cm4gSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cCh0b1JlZigmSlNHbG9iYWxEYXRh
OjpzaGFyZWRJbnN0YW5jZSgpKSwgZ2xvYmFsT2JqZWN0Q2xhc3MpOwogICAgIH0KICNlbmRpZiAv
LyBPUyhEQVJXSU4pCkBAIC04OSw5ICs5MCwxMSBAQCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9i
YWxDb250ZXh0Q3JlYXRlSW5Hcm91cChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgSlNDbGFzcwog
ewogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAorICAgIEpTTG9jayBsb2NrKExvY2tGb3JS
ZWFsKTsKICAgICBSZWZQdHI8SlNHbG9iYWxEYXRhPiBnbG9iYWxEYXRhID0gZ3JvdXAgPyBQYXNz
UmVmUHRyPEpTR2xvYmFsRGF0YT4odG9KUyhncm91cCkpIDogSlNHbG9iYWxEYXRhOjpjcmVhdGVD
b250ZXh0R3JvdXAoVGhyZWFkU3RhY2tUeXBlU21hbGwpOwogCiAgICAgQVBJRW50cnlTaGltIGVu
dHJ5U2hpbShnbG9iYWxEYXRhLmdldCgpLCBmYWxzZSk7CisKICAgICBnbG9iYWxEYXRhLT5tYWtl
VXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcygpOwogCiAgICAgaWYgKCFnbG9iYWxPYmplY3RDbGFz
cykgewpAQCAtMTIxLDE5ICsxMjQsMTggQEAgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29u
dGV4dFJldGFpbihKU0dsb2JhbENvbnRleHRSZWYgY3R4KQogCiB2b2lkIEpTR2xvYmFsQ29udGV4
dFJlbGVhc2UoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkKIHsKLSAgICBJZGVudGlmaWVyVGFibGUq
IHNhdmVkSWRlbnRpZmllclRhYmxlOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsK
LSAgICB7Ci0gICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIEpTTG9jayBsb2Nr
KGV4ZWMpOwogCi0gICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2Jh
bERhdGEoKTsKLSAgICAgICAgc2F2ZWRJZGVudGlmaWVyVGFibGUgPSB3dGZUaHJlYWREYXRhKCku
c2V0Q3VycmVudElkZW50aWZpZXJUYWJsZShnbG9iYWxEYXRhLmlkZW50aWZpZXJUYWJsZSk7Cisg
ICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIElk
ZW50aWZpZXJUYWJsZSogc2F2ZWRJZGVudGlmaWVyVGFibGUgPSB3dGZUaHJlYWREYXRhKCkuc2V0
Q3VycmVudElkZW50aWZpZXJUYWJsZShnbG9iYWxEYXRhLmlkZW50aWZpZXJUYWJsZSk7CiAKLSAg
ICAgICAgYm9vbCBwcm90ZWN0Q291bnRJc1plcm8gPSBIZWFwOjpoZWFwKGV4ZWMtPmR5bmFtaWNH
bG9iYWxPYmplY3QoKSktPnVucHJvdGVjdChleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpOwot
ICAgICAgICBpZiAocHJvdGVjdENvdW50SXNaZXJvKQotICAgICAgICAgICAgZ2xvYmFsRGF0YS5o
ZWFwLnJlcG9ydEFiYW5kb25lZE9iamVjdEdyYXBoKCk7Ci0gICAgICAgIGdsb2JhbERhdGEuZGVy
ZWYoKTsKKyAgICBib29sIHByb3RlY3RDb3VudElzWmVybyA9IEhlYXA6OmhlYXAoZXhlYy0+ZHlu
YW1pY0dsb2JhbE9iamVjdCgpKS0+dW5wcm90ZWN0KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3Qo
KSk7CisgICAgaWYgKHByb3RlY3RDb3VudElzWmVybykgeworICAgICAgICBnbG9iYWxEYXRhLmhl
YXAuYWN0aXZpdHlDYWxsYmFjaygpLT5zeW5jaHJvbml6ZSgpOworICAgICAgICBnbG9iYWxEYXRh
LmhlYXAucmVwb3J0QWJhbmRvbmVkT2JqZWN0R3JhcGgoKTsKICAgICB9CisgICAgZ2xvYmFsRGF0
YS5kZXJlZigpOwogCiAgICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFi
bGUoc2F2ZWRJZGVudGlmaWVyVGFibGUpOwogfQpAQCAtMTY0LDcgKzE2Niw3IEBAIEpTR2xvYmFs
Q29udGV4dFJlZiBKU0NvbnRleHRHZXRHbG9iYWxDb250ZXh0KEpTQ29udGV4dFJlZiBjdHgpCiBK
U1N0cmluZ1JlZiBKU0NvbnRleHRDcmVhdGVCYWNrdHJhY2UoSlNDb250ZXh0UmVmIGN0eCwgdW5z
aWduZWQgbWF4U3RhY2tTaXplKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsK
LSAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBKU0xvY2sgbG9jayhleGVjKTsKIAog
ICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKICAgICBVU3RyaW5nQnVpbGRlciBidWlsZGVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgppbmRl
eCBlMWM0MWQ2MGVmY2Q4OWE2MmZjZTZmZGNlMmZmMjdhNGU3MjYyNzFmLi5jNDhlZjQ5YzZjZjM4
ZWUxZWQxMTk5NzJmZmY5YTU1ZDQ1ZTg0ZGM1IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmRlZgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtNiwxMyArNiwxMCBAQCBFWFBPUlRT
CiAgICAgPz8wQ29sbGF0b3JAV1RGQEBRQUVAUEJEQFoKICAgICA/PzBEYXRlSW5zdGFuY2VASlND
QEBJQUVAUEFWRXhlY1N0YXRlQDFAUEFWU3RydWN0dXJlQDFAQFoKICAgICA/PzBEZWZhdWx0R0NB
Y3Rpdml0eUNhbGxiYWNrQEpTQ0BAUUFFQFBBVkhlYXBAMUBAWgotICAgID8/MERyb3BBbGxMb2Nr
c0BKU0xvY2tASlNDQEBRQUVAUEFWRXhlY1N0YXRlQDJAQFoKLSAgICA/PzBEcm9wQWxsTG9ja3NA
SlNMb2NrQEpTQ0BAUUFFQFBBVkpTR2xvYmFsRGF0YUAyQEBaCisgICAgPz8wRHJvcEFsbExvY2tz
QEpTTG9ja0BKU0NAQFFBRUBXNEpTTG9ja0JlaGF2aW9yQDJAQFoKICAgICA/PzBEeW5hbWljR2xv
YmFsT2JqZWN0U2NvcGVASlNDQEBRQUVAQUFWSlNHbG9iYWxEYXRhQDFAUEFWSlNHbG9iYWxPYmpl
Y3RAMUBAWiAKICAgICA/PzBJbnRlcm5hbEZ1bmN0aW9uQEpTQ0BASUFFQFBBVkpTR2xvYmFsT2Jq
ZWN0QDFAUEFWU3RydWN0dXJlQDFAQFoKLSAgICA/PzBKU0xvY2tIb2xkZXJASlNDQEBRQUVAQUFW
SlNHbG9iYWxEYXRhQDFAQFoKLSAgICA/PzBKU0xvY2tIb2xkZXJASlNDQEBRQUVAUEFWRXhlY1N0
YXRlQDFAQFoKLSAgICA/PzBKU0xvY2tIb2xkZXJASlNDQEBRQUVAUEFWSlNHbG9iYWxEYXRhQDFA
QFoKKyAgICA/PzBKU0xvY2tASlNDQEBRQUVAUEFWRXhlY1N0YXRlQDFAQFoKICAgICA/PzBNRDVA
V1RGQEBRQUVAWFoKICAgICA/PzBNdXRleEBXVEZAQFFBRUBYWgogICAgID8/MFBhcmFsbGVsRW52
aXJvbm1lbnRAV1RGQEBRQUVAUDZBWFBBWEBaSUhAWgpAQCAtMzUsNyArMzIsNiBAQCBFWFBPUlRT
CiAgICAgPz8xRHJvcEFsbExvY2tzQEpTTG9ja0BKU0NAQFFBRUBYWgogICAgID8/MUpTR2xvYmFs
RGF0YUBKU0NAQFFBRUBYWgogICAgID8/MUpTR2xvYmFsT2JqZWN0QEpTQ0BAUUFFQFhaCi0gICAg
Pz8xSlNMb2NrSG9sZGVyQEpTQ0BAUUFFQFhaCiAgICAgPz8xTXV0ZXhAV1RGQEBRQUVAWFoKICAg
ICA/PzFSZWZDb3VudGVkTGVha0NvdW50ZXJAV1RGQEBRQUVAWFoKICAgICA/PzFTb3VyY2VQcm92
aWRlckNhY2hlQEpTQ0BAUUFFQFhaCkBAIC0xMjcsNiArMTIzLDcgQEAgRVhQT1JUUwogICAgID9j
cnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlckBXVEZAQFlBSVhaCiAgICAgP2NyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tVmFsdWVzQFdURkBAWUFYUEFYSUBaCiAgICAgP2N1cnJlbnRUaHJlYWRAV1RG
QEBZQUlYWgorICAgID9jdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9ja0BKU0xvY2tASlNDQEBTQV9O
WFoKICAgICA/Y3VycmVudFRpbWVAV1RGQEBZQU5YWgogICAgID9kYXRhQENTdHJpbmdAV1RGQEBR
QkVQQkRYWgogICAgID9kYXRhTG9nQFdURkBAWUFYUEJEWloKQEAgLTIzOCw5ICsyMzUsMTAgQEAg
RVhQT1JUUwogICAgID9qc093bmVkU3RyaW5nQEpTQ0BAWUFQQVZKU1N0cmluZ0AxQFBBVkpTR2xv
YmFsRGF0YUAxQEFCVlVTdHJpbmdAMUBAWgogICAgID9qc1N0cmluZ0BKU0NAQFlBUEFWSlNTdHJp
bmdAMUBQQVZKU0dsb2JhbERhdGFAMUBBQlZVU3RyaW5nQDFAQFoKICAgICA/bGVuZ3RoQENTdHJp
bmdAV1RGQEBRQkVJWFoKLSAgICA/bG9ja0BKU0xvY2tASlNDQEBRQUVYWFoKKyAgICA/bG9ja0BK
U0xvY2tASlNDQEBTQVhXNEpTTG9ja0JlaGF2aW9yQDJAQFoKICAgICA/bG9ja0BNdXRleEBXVEZA
QFFBRVhYWgogICAgID9sb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXhAV1RGQEBZ
QVhYWgorICAgID9sb2NrQ291bnRASlNMb2NrQEpTQ0BAU0FIWFoKICAgICA/bWF0Y2hAUmVnRXhw
QEpTQ0BAUUFFSEFBVkpTR2xvYmFsRGF0YUAyQEFCVlVTdHJpbmdAMkBJQUFWPyRWZWN0b3JASCQw
Q0FAQFdURkBAQFoKICAgICA/bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcEBTdHJ1Y3R1cmVASlNDQEBB
QUVYQUFWSlNHbG9iYWxEYXRhQDJAQFoKICAgICA/bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
QFdURkBAWUFOWFoKQEAgLTMyNSw3ICszMjMsNiBAQCBFWFBPUlRTCiAgICAgP3N0b3BTYW1wbGlu
Z0BKU0dsb2JhbERhdGFASlNDQEBRQUVYWFoKICAgICA/c3Vic3RyaW5nU2hhcmluZ0ltcGxAVVN0
cmluZ0BKU0NAQFFCRT9BVjEyQElJQFoKICAgICA/c3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9yYWdl
U2l6ZUBTdHJ1Y3R1cmVASlNDQEBRQUVJWFoKLSAgICA/c3dlZXBlckBIZWFwQEpTQ0BAUUFFUEFW
SW5jcmVtZW50YWxTd2VlcGVyQDJAWFoKICAgICA/c3ludGhlc2l6ZVByb3RvdHlwZUBKU1ZhbHVl
QEpTQ0BAUUJFUEFWSlNPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBAWgogICAgID90aGlzT2JqZWN0
QERlYnVnZ2VyQ2FsbEZyYW1lQEpTQ0BAUUJFUEFWSlNPYmplY3RAMkBYWgogICAgID90aHJvd0Vy
cm9yQEpTQ0BAWUE/QVZKU1ZhbHVlQDFAUEFWRXhlY1N0YXRlQDFAVjIxQEBaCkBAIC0zNTUsNyAr
MzUyLDcgQEAgRVhQT1JUUwogICAgID90cnlGaW5pc2hDcmVhdGlvblVuaW5pdGlhbGl6ZWRASlNB
cnJheUBKU0NAQElBRVBBVjEyQEFBVkpTR2xvYmFsRGF0YUAyQElAWgogICAgID90cnlMb2NrQE11
dGV4QFdURkBAUUFFX05YWgogICAgID90eXBlQERlYnVnZ2VyQ2FsbEZyYW1lQEpTQ0BAUUJFP0FX
NFR5cGVAMTJAWFoKLSAgICA/dW5sb2NrQEpTTG9ja0BKU0NAQFFBRVhYWgorICAgID91bmxvY2tA
SlNMb2NrQEpTQ0BAU0FYVzRKU0xvY2tCZWhhdmlvckAyQEBaCiAgICAgP3VubG9ja0BNdXRleEBX
VEZAQFFBRVhYWgogICAgID91bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleEBX
VEZAQFlBWFhaCiAgICAgP3VucHJvdGVjdEBIZWFwQEpTQ0BAUUFFX05WSlNWYWx1ZUAyQEBaCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRTcGFjZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRTcGFjZS5jcHAKaW5kZXggOWViNzBhNTU2
NGQxMjc0YzA3ZjU3Nzc2MjY1NTRkNTk3MzI3ODJhZC4uNjMxZTgyOWVjMGFhMTY2ODRhM2E5YjQ3
OGRhNTZiM2UwNzRjNmFiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29waWVkU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNw
YWNlLmNwcApAQCAtNjYsNyArNjYsNiBAQCBDaGVja2VkQm9vbGVhbiBDb3BpZWRTcGFjZTo6dHJ5
QWxsb2NhdGVTbG93Q2FzZShzaXplX3QgYnl0ZXMsIHZvaWQqKiBvdXRQdHIpCiAgICAgaWYgKGlz
T3ZlcnNpemUoYnl0ZXMpKQogICAgICAgICByZXR1cm4gdHJ5QWxsb2NhdGVPdmVyc2l6ZShieXRl
cywgb3V0UHRyKTsKICAgICAKLSAgICBBU1NFUlQobV9oZWFwLT5nbG9iYWxEYXRhKCktPmFwaUxv
Y2soKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpKTsKICAgICBtX2hlYXAtPmRpZEFsbG9j
YXRlKG1fYWxsb2NhdG9yLmN1cnJlbnRDYXBhY2l0eSgpKTsKIAogICAgIGFsbG9jYXRlQmxvY2so
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggMzNjNmRjMTE3OTQ3NWQyNzFl
N2RiN2RkODI5NzQxMzNmMTE3NTY2Ny4uZWYwNjJjOWNlMTkxNDRjYjllNTRlN2NkMzg5NDhmODMz
Yjg2NWM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTE2MCw5ICsxNjAs
MTUgQEAgc3RhdGljIGlubGluZSBzaXplX3QgcHJvcG9ydGlvbmFsSGVhcFNpemUoc2l6ZV90IGhl
YXBTaXplLCBzaXplX3QgcmFtU2l6ZSkKICAgICByZXR1cm4gMS4yNSAqIGhlYXBTaXplOwogfQog
Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZFNoYXJlZEluc3RhbmNlVGhyZWFkU3RhdGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhKQorc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRTaGFyZWRJ
bnN0YW5jZVRocmVhZFN0YXRlKCkKIHsKLSAgICByZXR1cm4gZ2xvYmFsRGF0YS0+YXBpTG9jaygp
LmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCk7CisgICAgaWYgKCFKU0xvY2s6OmxvY2tDb3Vu
dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIUpTTG9jazo6Y3VycmVudFRo
cmVhZElzSG9sZGluZ0xvY2soKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkVGhyZWFkU3RhdGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhKQpAQCAtMTcwLDcgKzE3Niw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc1ZhbGlkVGhyZWFkU3RhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogICAgIGlmIChn
bG9iYWxEYXRhLT5pZGVudGlmaWVyVGFibGUgIT0gd3RmVGhyZWFkRGF0YSgpLmN1cnJlbnRJZGVu
dGlmaWVyVGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGdsb2JhbERh
dGEtPmlzU2hhcmVkSW5zdGFuY2UoKSAmJiAhaXNWYWxpZFNoYXJlZEluc3RhbmNlVGhyZWFkU3Rh
dGUoZ2xvYmFsRGF0YSkpCisgICAgaWYgKGdsb2JhbERhdGEtPmlzU2hhcmVkSW5zdGFuY2UoKSAm
JiAhaXNWYWxpZFNoYXJlZEluc3RhbmNlVGhyZWFkU3RhdGUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zMjEsNyArMzI3LDcgQEAgdm9pZCBIZWFwOjpk
aWRBYmFuZG9uKHNpemVfdCBieXRlcykKIHZvaWQgSGVhcDo6cHJvdGVjdChKU1ZhbHVlIGspCiB7
CiAgICAgQVNTRVJUKGspOwotICAgIEFTU0VSVChtX2dsb2JhbERhdGEtPmFwaUxvY2soKS5jdXJy
ZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpKTsKKyAgICBBU1NFUlQoSlNMb2NrOjpjdXJyZW50VGhy
ZWFkSXNIb2xkaW5nTG9jaygpIHx8ICFtX2dsb2JhbERhdGEtPmlzU2hhcmVkSW5zdGFuY2UoKSk7
CiAKICAgICBpZiAoIWsuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMzMiw3ICszMzgs
NyBAQCB2b2lkIEhlYXA6OnByb3RlY3QoSlNWYWx1ZSBrKQogYm9vbCBIZWFwOjp1bnByb3RlY3Qo
SlNWYWx1ZSBrKQogewogICAgIEFTU0VSVChrKTsKLSAgICBBU1NFUlQobV9nbG9iYWxEYXRhLT5h
cGlMb2NrKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSk7CisgICAgQVNTRVJUKEpTTG9j
azo6Y3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSB8fCAhbV9nbG9iYWxEYXRhLT5pc1NoYXJl
ZEluc3RhbmNlKCkpOwogCiAgICAgaWYgKCFrLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC02ODYsNyArNjkyLDYgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3
ZWVwVG9nZ2xlKQogICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJHYXJiYWdlIENv
bGxlY3Rpb24iKTsKICAgICAKICAgICBHQ1BIQVNFKENvbGxlY3QpOwotICAgIEFTU0VSVChnbG9i
YWxEYXRhKCktPmFwaUxvY2soKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpKTsKICAgICBB
U1NFUlQoZ2xvYmFsRGF0YSgpLT5pZGVudGlmaWVyVGFibGUgPT0gd3RmVGhyZWFkRGF0YSgpLmN1
cnJlbnRJZGVudGlmaWVyVGFibGUoKSk7CiAgICAgQVNTRVJUKG1faXNTYWZlVG9Db2xsZWN0KTsK
ICAgICBKQVZBU0NSSVBUQ09SRV9HQ19CRUdJTigpOwpAQCAtNzcyLDE5ICs3NzcsMTkgQEAgdm9p
ZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9nZ2xlKQogICAgIEpBVkFTQ1JJUFRD
T1JFX0dDX0VORCgpOwogfQogCi12b2lkIEhlYXA6OnNldEFjdGl2aXR5Q2FsbGJhY2soR0NBY3Rp
dml0eUNhbGxiYWNrKiBhY3Rpdml0eUNhbGxiYWNrKQordm9pZCBIZWFwOjpzZXRBY3Rpdml0eUNh
bGxiYWNrKFBhc3NPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBhY3Rpdml0eUNhbGxiYWNrKQog
ewogICAgIG1fYWN0aXZpdHlDYWxsYmFjayA9IGFjdGl2aXR5Q2FsbGJhY2s7CiB9CiAKIEdDQWN0
aXZpdHlDYWxsYmFjayogSGVhcDo6YWN0aXZpdHlDYWxsYmFjaygpCiB7Ci0gICAgcmV0dXJuIG1f
YWN0aXZpdHlDYWxsYmFjazsKKyAgICByZXR1cm4gbV9hY3Rpdml0eUNhbGxiYWNrLmdldCgpOwog
fQogCiBJbmNyZW1lbnRhbFN3ZWVwZXIqIEhlYXA6OnN3ZWVwZXIoKQogewotICAgIHJldHVybiBt
X3N3ZWVwZXI7CisgICAgcmV0dXJuIG1fc3dlZXBlci5nZXQoKTsKIH0KIAogdm9pZCBIZWFwOjpz
ZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVyRW5hYmxlZChib29sIGVuYWJsZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaAppbmRleCBhNTU5ZjkyYzYyYWNmMjRlYmRjMjUyOWY2OTUyZTgwNmZkNDM3
ZTUyLi45MWMzYWE1OGYxOTRiMDhiN2NmN2FhMmE2MzhhNDlhY2U3ZjY4MWM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oCkBAIC05OSwxMCArOTksMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIE1hY2hpbmVUaHJlYWRzJiBtYWNoaW5lVGhyZWFkcygpIHsgcmV0dXJuIG1fbWFjaGlu
ZVRocmVhZHM7IH0KIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBHQ0FjdGl2aXR5Q2FsbGJh
Y2sqIGFjdGl2aXR5Q2FsbGJhY2soKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
ZXRBY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjayopOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIHNldEFjdGl2aXR5Q2FsbGJhY2soUGFzc093blB0cjxHQ0FjdGl2aXR5
Q2FsbGJhY2s+KTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRHYXJiYWdlQ29s
bGVjdGlvblRpbWVyRW5hYmxlZChib29sKTsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBJ
bmNyZW1lbnRhbFN3ZWVwZXIqIHN3ZWVwZXIoKTsKKyAgICAgICAgSW5jcmVtZW50YWxTd2VlcGVy
KiBzd2VlcGVyKCk7CiAKICAgICAgICAgLy8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxl
Y3Rpb24gaXMgaW4gcHJvZ3Jlc3MKICAgICAgICAgaW5saW5lIGJvb2wgaXNCdXN5KCk7CkBAIC0y
MzcsMTAgKzIzNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZG91YmxlIG1fbGFzdEdD
TGVuZ3RoOwogICAgICAgICBkb3VibGUgbV9sYXN0Q29kZURpc2NhcmRUaW1lOwogCi0gICAgICAg
IERvdWJseUxpbmtlZExpc3Q8RXhlY3V0YWJsZUJhc2U+IG1fY29tcGlsZWRDb2RlOworICAgICAg
ICBPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2FjdGl2aXR5Q2FsbGJhY2s7CisgICAgICAg
IE93blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKICAgICAgICAgCi0gICAgICAg
IEdDQWN0aXZpdHlDYWxsYmFjayogbV9hY3Rpdml0eUNhbGxiYWNrOwotICAgICAgICBJbmNyZW1l
bnRhbFN3ZWVwZXIqIG1fc3dlZXBlcjsKKyAgICAgICAgRG91Ymx5TGlua2VkTGlzdDxFeGVjdXRh
YmxlQmFzZT4gbV9jb21waWxlZENvZGU7CiAgICAgfTsKIAogICAgIGlubGluZSBib29sIEhlYXA6
OnNob3VsZENvbGxlY3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFRpbWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5jcHAK
aW5kZXggYWU2NmY5ZTI2ODBkMTQxYzBhNDBmNTQwNzZhODYwMjkzNzRlNjJiYS4uYjRkOTI4YTM0
MmI1ZjQ2YWI1ZjNkZjcyMWZkMDdlY2RlMDM4NDRlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwVGltZXIuY3BwCkBAIC0yNiwxMCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkhlYXBUaW1lci5oIgogCi0jaW5jbHVkZSAiQVBJU2hpbXMuaCIKLSNpbmNs
dWRlICJKU09iamVjdC5oIgotI2luY2x1ZGUgIkpTU3RyaW5nLmgiCi0jaW5jbHVkZSAiU2NvcGVD
aGFpbi5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC01MCw4ICs0Niw3IEBAIEhlYXBUaW1lcjo6SGVhcFRpbWVyKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCiAKIEhlYXBUaW1lcjo6fkhlYXBUaW1lcigpCiB7
Ci0gICAgQ0ZSdW5Mb29wUmVtb3ZlVGltZXIobV9ydW5Mb29wLmdldCgpLCBtX3RpbWVyLmdldCgp
LCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZSht
X3RpbWVyLmdldCgpKTsKKyAgICBpbnZhbGlkYXRlKCk7CiB9CiAKIHZvaWQgSGVhcFRpbWVyOjpz
eW5jaHJvbml6ZSgpCkBAIC02NSwzNyArNjAsMTQgQEAgdm9pZCBIZWFwVGltZXI6OnN5bmNocm9u
aXplKCkKIAogdm9pZCBIZWFwVGltZXI6OmludmFsaWRhdGUoKQogewotICAgIG1fZ2xvYmFsRGF0
YSA9IDA7Ci0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUobV90aW1lci5nZXQoKSwg
Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgLSBzX2RlY2FkZSk7Ci19Ci0KLXZvaWQgSGVhcFRp
bWVyOjpkaWRTdGFydFZNU2h1dGRvd24oKQotewotICAgIGlmIChDRlJ1bkxvb3BHZXRDdXJyZW50
KCkgPT0gbV9ydW5Mb29wLmdldCgpKSB7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKLSAgICAgICAg
ZGVsZXRlIHRoaXM7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUKCFtX2dsb2Jh
bERhdGEtPmFwaUxvY2soKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpKTsKLSAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9zaHV0ZG93bk11dGV4KTsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAg
Q0ZSdW5Mb29wUmVtb3ZlVGltZXIobV9ydW5Mb29wLmdldCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZS
dW5Mb29wQ29tbW9uTW9kZXMpOworICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShtX3RpbWVy
LmdldCgpKTsKIH0KIAogdm9pZCBIZWFwVGltZXI6OnRpbWVyRGlkRmlyZShDRlJ1bkxvb3BUaW1l
clJlZiwgdm9pZCogaW5mbykKIHsKICAgICBIZWFwVGltZXIqIGFnZW50ID0gc3RhdGljX2Nhc3Q8
SGVhcFRpbWVyKj4oaW5mbyk7Ci0gICAgYWdlbnQtPm1fc2h1dGRvd25NdXRleC5sb2NrKCk7Ci0g
ICAgaWYgKCFhZ2VudC0+bV9nbG9iYWxEYXRhKSB7Ci0gICAgICAgIGFnZW50LT5tX3NodXRkb3du
TXV0ZXgudW5sb2NrKCk7Ci0gICAgICAgIGRlbGV0ZSBhZ2VudDsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICB7Ci0gICAgICAgIC8vIFdlIGRvbid0IHJlZiBoZXJlIHRvIHByZXZlbnQgdXMg
ZnJvbSByZXN1cnJlY3RpbmcgdGhlIHJlZiBjb3VudCBvZiBhICJkZWFkIiBKU0dsb2JhbERhdGEu
Ci0gICAgICAgIEFQSUVudHJ5U2hpbSBzaGltKGFnZW50LT5tX2dsb2JhbERhdGEsIEFQSUVudHJ5
U2hpbVdpdGhvdXRMb2NrOjpEb250UmVmR2xvYmFsRGF0YSk7Ci0gICAgICAgIGFnZW50LT5kb1dv
cmsoKTsKLSAgICB9Ci0gICAgYWdlbnQtPm1fc2h1dGRvd25NdXRleC51bmxvY2soKTsKKyAgICBh
Z2VudC0+ZG9Xb3JrKCk7CiB9CiAKICNlbHNlCkBAIC0xMDksMTEgKzgxLDYgQEAgSGVhcFRpbWVy
Ojp+SGVhcFRpbWVyKCkKIHsKIH0KIAotdm9pZCBIZWFwVGltZXI6OmRpZFN0YXJ0Vk1TaHV0ZG93
bigpCi17Ci0gICAgZGVsZXRlIHRoaXM7Ci19Ci0KIHZvaWQgSGVhcFRpbWVyOjpzeW5jaHJvbml6
ZSgpCiB7CiB9CkBAIC0xMjIsNiArODksNyBAQCB2b2lkIEhlYXBUaW1lcjo6aW52YWxpZGF0ZSgp
CiB7CiB9CiAKKwogI2VuZGlmCiAgICAgCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBUaW1lci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRp
bWVyLmgKaW5kZXggOTI1NWUwNjQ4MWMyYzliZjMwMjRlYTE4ZTY0MjZhMGE2NDFlNGIwYi4uZmVh
MDEzOTc1NmExNzIyOWUzNjRmOGFiMjhhNDU4MzYzMDE4ZmYwZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcFRpbWVyLmgKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgSGVhcFRpbWVy
X2gKIAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CiAKICNpZiBVU0UoQ0YpCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRp
b24uaD4KQEAgLTQ3LDggKzQ2LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgCiAgICAgdmlydHVh
bCB+SGVhcFRpbWVyKCk7Ci0KLSAgICB2b2lkIGRpZFN0YXJ0Vk1TaHV0ZG93bigpOworICAgIAog
ICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkb1dvcmso
KSA9IDA7CiAgICAgCkBAIC02MSw4ICs1OSw2IEBAIHByb3RlY3RlZDoKICAgICBSZXRhaW5QdHI8
Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGltZXI7CiAgICAgUmV0YWluUHRyPENGUnVuTG9vcFJlZj4g
bV9ydW5Mb29wOwogICAgIENGUnVuTG9vcFRpbWVyQ29udGV4dCBtX2NvbnRleHQ7Ci0KLSAgICBN
dXRleCBtX3NodXRkb3duTXV0ZXg7CiAjZW5kaWYKICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAppbmRleCBmOTk4
MjUzZDA5ZDYwNjU5YTY2NmU0MTdhYmJhYzJiYjZkMTVjNTNiLi4xNjViZmVhZmZkNmY4NTg5ODY2
MzcwNTg0YThiZTRkNTY3MjA2YjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAgc3RhdGljIGNvbnN0
IENGVGltZUludGVydmFsIHN3ZWVwVGltZU11bHRpcGxpZXIgPSAxLjAgLyBzd2VlcFRpbWVUb3Rh
bDsKIAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmRvV29yaygpCiB7CisgICAgQVBJRW50cnlT
aGltIHNoaW0obV9nbG9iYWxEYXRhKTsKICAgICBkb1N3ZWVwKFdURjo6bW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCkpOwogfQogICAgIApAQCAtNTQsOSArNTUsOSBAQCBJbmNyZW1lbnRhbFN3
ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFwKiBoZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9v
cCkKIHsKIH0KIAotSW5jcmVtZW50YWxTd2VlcGVyKiBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNyZWF0
ZShIZWFwKiBoZWFwKQorUGFzc093blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IEluY3JlbWVudGFs
U3dlZXBlcjo6Y3JlYXRlKEhlYXAqIGhlYXApCiB7Ci0gICAgcmV0dXJuIG5ldyBJbmNyZW1lbnRh
bFN3ZWVwZXIoaGVhcCwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpKTsKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IEluY3JlbWVudGFsU3dlZXBlcihoZWFwLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCkpKTsK
IH0KIAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnNjaGVkdWxlVGltZXIoKQpAQCAtMTA4LDkg
KzEwOSw5IEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpkb1dvcmsoKQogewogfQogCi1JbmNy
ZW1lbnRhbFN3ZWVwZXIqIEluY3JlbWVudGFsU3dlZXBlcjo6Y3JlYXRlKEhlYXAqIGhlYXApCitQ
YXNzT3duUHRyPEluY3JlbWVudGFsU3dlZXBlcj4gSW5jcmVtZW50YWxTd2VlcGVyOjpjcmVhdGUo
SGVhcCogaGVhcCkKIHsKLSAgICByZXR1cm4gbmV3IEluY3JlbWVudGFsU3dlZXBlcihoZWFwLT5n
bG9iYWxEYXRhKCkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5jcmVtZW50YWxTd2VlcGVy
KGhlYXAtPmdsb2JhbERhdGEoKSkpOwogfQogCiB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6c3Rh
cnRTd2VlcGluZyhjb25zdCBIYXNoU2V0PE1hcmtlZEJsb2NrKj4mKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAppbmRleCBlZWRmYTdmNmZkZjU1
MWUwNzExMTA5NTZkZmQ0NDNmMjdhMWJmZjc5Li4yMGY0ZTNjYThjMzEwMGZlM2RiY2NhYzM2MDFm
YTJhZjAyNWQ5ZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNy
ZW1lbnRhbFN3ZWVwZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1l
bnRhbFN3ZWVwZXIuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBIZWFwOwogICAgIAogY2xhc3Mg
SW5jcmVtZW50YWxTd2VlcGVyIDogcHVibGljIEhlYXBUaW1lciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIEluY3JlbWVudGFsU3dlZXBlciogY3JlYXRlKEhlYXAqKTsKKyAgICBzdGF0aWMgUGFzc093
blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IGNyZWF0ZShIZWFwKik7CiAgICAgdm9pZCBzdGFydFN3
ZWVwaW5nKGNvbnN0IEhhc2hTZXQ8TWFya2VkQmxvY2sqPiYgYmxvY2tTbmFwc2hvdCk7CiAgICAg
dmlydHVhbCB2b2lkIGRvV29yaygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQWxsb2NhdG9yLmNwcAppbmRleCA5NzI3Mjg2Mzc0Mjg0YWE1OTY0YzU3ZjM3Yjc5NDMx
NjZlNDU0MTkwLi45Y2FjOTA2YTE0N2RlY2Y4MWYxNDUxNjVkMWFhNGY1OWRhYzQyY2U3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKQEAgLTMs
NyArMyw2IEBACiAKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJI
ZWFwLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTcsNyArNTYsNiBAQCBpbmxpbmUgdm9pZCog
TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZSgpCiAgICAgCiB2b2lkKiBNYXJrZWRBbGxvY2F0
b3I6OmFsbG9jYXRlU2xvd0Nhc2UoKQogewotICAgIEFTU0VSVChtX2hlYXAtPmdsb2JhbERhdGEo
KS0+YXBpTG9jaygpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpOwogI2lmIENPTExFQ1Rf
T05fRVZFUllfQUxMT0NBVElPTgogICAgIG1faGVhcC0+Y29sbGVjdEFsbEdhcmJhZ2UoKTsKICAg
ICBBU1NFUlQobV9oZWFwLT5tX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAKaW5kZXggMDVhNDRlYTdlMjVi
ODhlNmQ3ZDE0ZDU2NmEyYWJjNWZhOWM5OWNjNi4uODkwMGU3M2RmMDQ3NmI4ZWUxNjY4ODY5YjFl
ZjQ2NWVkYmE3YzhlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vh
a0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3Bw
CkBAIC0xMjcsMTAgKzEyNyw4IEBAIHZvaWQgV2Vha0Jsb2NrOjpyZWFwKCkKICAgICAgICAgaWYg
KHdlYWtJbXBsLT5zdGF0ZSgpID4gV2Vha0ltcGw6OkRlYWQpCiAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQod2Vha0ltcGwtPmpzVmFsdWUoKS5hc0Nl
bGwoKSkpIHsKLSAgICAgICAgICAgIEFTU0VSVCh3ZWFrSW1wbC0+c3RhdGUoKSA9PSBXZWFrSW1w
bDo6TGl2ZSk7CisgICAgICAgIGlmIChIZWFwOjppc01hcmtlZCh3ZWFrSW1wbC0+anNWYWx1ZSgp
LmFzQ2VsbCgpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CiAKICAgICAgICAg
d2Vha0ltcGwtPnNldFN0YXRlKFdlYWtJbXBsOjpEZWFkKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCmluZGV4IDM1ZWEwMWZjOThmOWIxZDM5MDczMThmZGYwMTk2ZTlmMDE1YWY3ODAuLmY3OTYz
MzNjYTEyMGYxMzZlOWQ5OGVmZGRjMTk0ZTgzNzQ5ZTc5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CkBAIC0yOTksNyArMjk5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkpTQ1N0YWNrKEV4ZWNTdGF0ZSogZXhlYykKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkdDKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhl
eGVjKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIGV4ZWMt
PmhlYXAoKS0+Y29sbGVjdEFsbEdhcmJhZ2UoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMzA3LDcgKzMwNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25HQyhFeGVjU3RhdGUqIGV4ZWMpCiAjaWZuZGVmIE5ERUJVRwog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbGVhc2VFeGVjdXRhYmxlTWVt
b3J5KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAg
ICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIGV4ZWMtPmdsb2JhbERh
dGEoKS5yZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC02NjcsOSArNjY3LDkgQEAgc3RhdGljIHZvaWQgcGFy
c2VBcmd1bWVudHMoaW50IGFyZ2MsIGNoYXIqKiBhcmd2LCBDb21tYW5kTGluZSYgb3B0aW9ucykK
IAogaW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogewotICAgIAorICAgIEpTTG9j
ayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisKICAgICBSZWZQdHI8SlNHbG9iYWxEYXRh
PiBnbG9iYWxEYXRhID0gSlNHbG9iYWxEYXRhOjpjcmVhdGUoVGhyZWFkU3RhY2tUeXBlTGFyZ2Us
IExhcmdlSGVhcCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsRGF0YS5nZXQoKSk7CiAK
ICAgICBDb21tYW5kTGluZSBvcHRpb25zOwogICAgIHBhcnNlQXJndW1lbnRzKGFyZ2MsIGFyZ3Ys
IG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
cGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNw
cAppbmRleCAxYzM1Yjk2MjY3MzNhZmRmZWM5YmM5NGZjMTJmMWI3ZTBlODVmMTZlLi4zMTFkNjYw
YTBhNmZkODhhNjYwYmFmYTdiMmIxZTM5YmU5ZDc5NDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogYm9vbCBjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgSlNWYWx1ZSogcmV0dXJuZWRFeGNlcHRpb24pCiB7Ci0gICAgSlNMb2NrSG9s
ZGVyIGxvY2soZXhlYyk7CisgICAgSlNMb2NrIGxvY2soZXhlYyk7CiAgICAgQVNTRVJUKGV4ZWMt
Pmdsb2JhbERhdGEoKS5pZGVudGlmaWVyVGFibGUgPT0gd3RmVGhyZWFkRGF0YSgpLmN1cnJlbnRJ
ZGVudGlmaWVyVGFibGUoKSk7CiAKICAgICBQcm9ncmFtRXhlY3V0YWJsZSogcHJvZ3JhbSA9IFBy
b2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgc291cmNlKTsKQEAgLTUzLDcgKzUzLDcgQEAg
Ym9vbCBjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgSlNWYWx1ZSogcmV0dXJuZWRFeGMKIAogSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlKiByZXR1cm5lZEV4Y2VwdGlvbikKIHsKLSAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBKU0xvY2sgbG9jayhleGVjKTsKICAgICBBU1NF
UlQoZXhlYy0+Z2xvYmFsRGF0YSgpLmlkZW50aWZpZXJUYWJsZSA9PSB3dGZUaHJlYWREYXRhKCku
Y3VycmVudElkZW50aWZpZXJUYWJsZSgpKTsKICAgICBpZiAoZXhlYy0+Z2xvYmFsRGF0YSgpLmlz
Q29sbGVjdG9yQnVzeSgpKQogICAgICAgICBDUkFTSCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaAppbmRleCA2N2VlMTc0MjAwZjdi
YWRmYjdhYWUwYWExN2Q3NTY1MmJkZmZkNDlmLi4xOGJiZDMxZTBjNTgxMDJmN2RhNjAwYTRiNzRi
NmYwMjA4MWFmMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
Q0FjdGl2aXR5Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
Q0FjdGl2aXR5Q2FsbGJhY2suaApAQCAtNjksNyArNjksNyBAQCBwcm90ZWN0ZWQ6CiAKIGNsYXNz
IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2sgOiBwdWJsaWMgR0NBY3Rpdml0eUNhbGxiYWNrIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayogY3JlYXRlKEhl
YXAqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrPiBj
cmVhdGUoSGVhcCopOwogCiAgICAgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKik7CiAK
QEAgLTkxLDkgKzkxLDkgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotaW5saW5lIERlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2sqIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZShIZWFw
KiBoZWFwKQoraW5saW5lIFBhc3NPd25QdHI8RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaz4gRGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlKEhlYXAqIGhlYXApCiB7Ci0gICAgcmV0dXJu
IG5ldyBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApOworICAgIHJldHVybiBhZG9wdFB0
cihuZXcgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKSk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCmluZGV4IDQ0NzZiZDYy
Yjk5YjMyMTU4MmExOGVhMTJkNTBiNjgwODhlOThhZWIuLjFmYjkwZGY0MGVmN2EzNjc3ZjBkYjlk
OGVjZjcwNTQzYjc2MWRlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcApAQCAtMzQsMTAgKzM0LDggQEAKICNpbmNsdWRlICJDb21tb25JZGVu
dGlmaWVycy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkZ1
bmN0aW9uQ29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNp
bmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgi
Ci0jaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBl
ci5oIgpAQCAtMTgwLDkgKzE3OCwxMiBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9i
YWxEYXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlIHRocmVhZAogewogICAg
IGludGVycHJldGVyID0gbmV3IEludGVycHJldGVyOwogCisgICAgaWYgKGlzU2hhcmVkSW5zdGFu
Y2UoKSkKKyAgICAgICAgdHVybk9mZlZlcmlmaWVyKCk7CisKICAgICAvLyBOZWVkIHRvIGJlIGNh
cmVmdWwgdG8ga2VlcCBldmVyeXRoaW5nIGNvbnNpc3RlbnQgaGVyZQotICAgIEpTTG9ja0hvbGRl
ciBsb2NrKHRoaXMpOwogICAgIElkZW50aWZpZXJUYWJsZSogZXhpc3RpbmdFbnRyeUlkZW50aWZp
ZXJUYWJsZSA9IHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKGlkZW50
aWZpZXJUYWJsZSk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAg
ICBzdHJ1Y3R1cmVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1cmU6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcykpOwogICAgIGRlYnVnZ2VyQWN0aXZhdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIERl
YnVnZ2VyQWN0aXZhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIGFjdGl2YXRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0FjdGl2YXRpb246OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKQEAgLTIyMSw5ICsyMjIsNiBAQCBKU0dsb2Jh
bERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFk
U3RhY2tUeXBlIHRocmVhZAogCiBKU0dsb2JhbERhdGE6On5KU0dsb2JhbERhdGEoKQogewotICAg
IEFTU0VSVCghbV9hcGlMb2NrLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpOwotICAgIGhl
YXAuYWN0aXZpdHlDYWxsYmFjaygpLT5kaWRTdGFydFZNU2h1dGRvd24oKTsKLSAgICBoZWFwLnN3
ZWVwZXIoKS0+ZGlkU3RhcnRWTVNodXRkb3duKCk7CiAgICAgaGVhcC5sYXN0Q2hhbmNlVG9GaW5h
bGl6ZSgpOwogCiAgICAgZGVsZXRlIGludGVycHJldGVyOwpAQCAtMzEzLDcgKzMxMSw2IEBAIGJv
b2wgSlNHbG9iYWxEYXRhOjpzaGFyZWRJbnN0YW5jZUV4aXN0cygpCiAKIEpTR2xvYmFsRGF0YSYg
SlNHbG9iYWxEYXRhOjpzaGFyZWRJbnN0YW5jZSgpCiB7Ci0gICAgR2xvYmFsSlNMb2NrIGdsb2Jh
bExvY2s7CiAgICAgSlNHbG9iYWxEYXRhKiYgaW5zdGFuY2UgPSBzaGFyZWRJbnN0YW5jZUludGVy
bmFsKCk7CiAgICAgaWYgKCFpbnN0YW5jZSkgewogICAgICAgICBpbnN0YW5jZSA9IGFkb3B0UmVm
KG5ldyBKU0dsb2JhbERhdGEoQVBJU2hhcmVkLCBUaHJlYWRTdGFja1R5cGVTbWFsbCwgU21hbGxI
ZWFwKSkubGVha1JlZigpOwpAQCAtMzI0LDYgKzMyMSw3IEBAIEpTR2xvYmFsRGF0YSYgSlNHbG9i
YWxEYXRhOjpzaGFyZWRJbnN0YW5jZSgpCiAKIEpTR2xvYmFsRGF0YSomIEpTR2xvYmFsRGF0YTo6
c2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpCiB7CisgICAgQVNTRVJUKEpTTG9jazo6Y3VycmVudFRo
cmVhZElzSG9sZGluZ0xvY2soKSk7CiAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSogc2hhcmVkSW5z
dGFuY2U7CiAgICAgcmV0dXJuIHNoYXJlZEluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCBmY2JlZTE1Yjk4ZDRkOTZiYmNiODlj
ZTM4NDk1M2VhOTJiMmU2N2JmLi5mODgzMzEwNGEzNjA5NmVkMjRlMzgxYWEzMzhkZTdlN2VjMmQx
Y2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaApA
QCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbnRyaW5zaWMu
aCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgotI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUg
IkpTVmFsdWUuaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJOdW1lcmljU3Ry
aW5ncy5oIgpAQCAtNDcsOCArNDYsOCBAQAogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9j
YXRvci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9TaW1wbGVTdGF0
cy5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTcGVjaWZpYy5oPgogI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAjaWYg
RU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpAQCAtMTUzLDcgKzE1Miw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIH07CiAjZW5kaWYKIAotICAgIGNsYXNzIEpTR2xvYmFsRGF0YSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxKU0dsb2JhbERhdGE+IHsKKyAgICBjbGFzcyBKU0dsb2JhbERhdGEg
OiBwdWJsaWMgUmVmQ291bnRlZDxKU0dsb2JhbERhdGE+IHsKICAgICBwdWJsaWM6CiAgICAgICAg
IC8vIFdlYkNvcmUgaGFzIGEgb25lLXRvLW9uZSBtYXBwaW5nIG9mIHRocmVhZHMgdG8gSlNHbG9i
YWxEYXRhczsKICAgICAgICAgLy8gZWl0aGVyIGNyZWF0ZSgpIG9yIGNyZWF0ZUxlYWtlZCgpIHNo
b3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlCkBAIC0xODEsMTAgKzE4MCw2IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHZvaWQgbWFrZVVzYWJsZUZyb21NdWx0aXBsZVRocmVhZHMoKSB7IGhl
YXAubWFjaGluZVRocmVhZHMoKS5tYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcygpOyB9CiAK
LSAgICBwcml2YXRlOgotICAgICAgICBKU0xvY2sgbV9hcGlMb2NrOwotCi0gICAgcHVibGljOgog
ICAgICAgICBIZWFwIGhlYXA7IC8vIFRoZSBoZWFwIGlzIG91ciBmaXJzdCBkYXRhIG1lbWJlciB0
byBlbnN1cmUgdGhhdCBpdCdzIGRlc3RydWN0ZWQgYWZ0ZXIgYWxsIHRoZSBvYmplY3RzIHRoYXQg
cmVmZXJlbmNlIGl0LgogCiAgICAgICAgIEdsb2JhbERhdGFUeXBlIGdsb2JhbERhdGFUeXBlOwpA
QCAtNDE0LDggKzQwOSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZWdpc3RlclR5cGVk
QXJyYXlGdW5jdGlvbihmbG9hdDY0LCBGbG9hdDY0KTsKICN1bmRlZiByZWdpc3RlclR5cGVkQXJy
YXlGdW5jdGlvbgogCi0gICAgICAgIEpTTG9jayYgYXBpTG9jaygpIHsgcmV0dXJuIG1fYXBpTG9j
azsgfQotCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMDFmZDY3MzFmZmE2NTg2Yjk1NWFmMTMwMTUxMjQ1NDQw
M2I2OTYxZi4uZDM4NTcwZGZiZDI1YTM5Nzk0NGZjMGU2ZmY4YzM1NWRmMjgzYmZmNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
MTE0LDYgKzExNCw4IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIHZvaWQg
dmlzaXRJZk5lZWRlZChTbG90VmlzaXRvciYgdmlzaXRvciwgV3JpCiAKIEpTR2xvYmFsT2JqZWN0
Ojp+SlNHbG9iYWxPYmplY3QoKQogeworICAgIEFTU0VSVChKU0xvY2s6OmN1cnJlbnRUaHJlYWRJ
c0hvbGRpbmdMb2NrKCkpOworCiAgICAgaWYgKG1fZGVidWdnZXIpCiAgICAgICAgIG1fZGVidWdn
ZXItPmRldGFjaCh0aGlzKTsKIApAQCAtMTI4LDcgKzEzMCw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KEpT
T2JqZWN0KiB0aGlzVmFsdWUpCiB7Ci0gICAgQVNTRVJUKGdsb2JhbERhdGEoKS5hcGlMb2NrKCku
Y3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSk7CisgICAgQVNTRVJUKEpTTG9jazo6Y3VycmVu
dFRocmVhZElzSG9sZGluZ0xvY2soKSk7CiAgICAgCiAgICAgbV9nbG9iYWxTY29wZUNoYWluLnNl
dChnbG9iYWxEYXRhKCksIHRoaXMsIFNjb3BlQ2hhaW5Ob2RlOjpjcmVhdGUoMCwgdGhpcywgJmds
b2JhbERhdGEoKSwgdGhpcywgdGhpc1ZhbHVlKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xvY2suY3BwCmluZGV4IGJmYjUzYmFkNWNlOTQwNmVlMTY1YjY0ZGJiMGU5ZGUyMjM3
YmY4YzkuLjkwZTJmNWQyYTdlN2ViOTY3MjM4NjIxYWYwZDNhMWZkYWIwMWZiZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcApAQCAtMjMsNyArMjMsNiBAQAogCiAj
aW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJTY29wZUNoYWlu
LmgiCiAKQEAgLTM5LDk0ICszOCw5NCBAQCBuYW1lc3BhY2UgSlNDIHsKICNpZiAoT1MoREFSV0lO
KSB8fCBVU0UoUFRIUkVBRFMpKQogCiAvLyBBY3F1aXJlIHRoaXMgbXV0ZXggYmVmb3JlIGFjY2Vz
c2luZyBsb2NrLXJlbGF0ZWQgZGF0YS4KLXN0YXRpYyBwdGhyZWFkX211dGV4X3QgZ2lhbnRHbG9i
YWxKU0xvY2sgPSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSOworc3RhdGljIHB0aHJlYWRfbXV0
ZXhfdCBKU011dGV4ID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKIAotR2xvYmFsSlNMb2Nr
OjpHbG9iYWxKU0xvY2soKQotewotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZ2lhbnRHbG9iYWxK
U0xvY2spOwotfQorLy8gVGhyZWFkLXNwZWNpZmljIGtleSB0aGF0IHRlbGxzIHdoZXRoZXIgYSB0
aHJlYWQgaG9sZHMgdGhlIEpTTXV0ZXgsIGFuZCBob3cgbWFueSB0aW1lcyBpdCB3YXMgdGFrZW4g
cmVjdXJzaXZlbHkuCitwdGhyZWFkX2tleV90IEpTTG9ja0NvdW50OwogCi1HbG9iYWxKU0xvY2s6
On5HbG9iYWxKU0xvY2soKQorc3RhdGljIHZvaWQgY3JlYXRlSlNMb2NrQ291bnQoKQogewotICAg
IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZnaWFudEdsb2JhbEpTTG9jayk7CisgICAgcHRocmVhZF9r
ZXlfY3JlYXRlKCZKU0xvY2tDb3VudCwgMCk7CiB9CiAKLUpTTG9ja0hvbGRlcjo6SlNMb2NrSG9s
ZGVyKEV4ZWNTdGF0ZSogZXhlYykKLSAgICA6IG1fZ2xvYmFsRGF0YSgmZXhlYy0+Z2xvYmFsRGF0
YSgpKQotewotICAgIG1fZ2xvYmFsRGF0YS0+YXBpTG9jaygpLmxvY2soKTsKLX0KK3B0aHJlYWRf
b25jZV90IGNyZWF0ZUpTTG9ja0NvdW50T25jZSA9IFBUSFJFQURfT05DRV9JTklUOwogCi1KU0xv
Y2tIb2xkZXI6OkpTTG9ja0hvbGRlcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCi0gICAgOiBt
X2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKKy8vIExvY2sgbmVzdGluZyBjb3VudC4KK2ludHB0cl90
IEpTTG9jazo6bG9ja0NvdW50KCkKIHsKLSAgICBtX2dsb2JhbERhdGEtPmFwaUxvY2soKS5sb2Nr
KCk7Ci19CisgICAgcHRocmVhZF9vbmNlKCZjcmVhdGVKU0xvY2tDb3VudE9uY2UsIGNyZWF0ZUpT
TG9ja0NvdW50KTsKIAotSlNMb2NrSG9sZGVyOjpKU0xvY2tIb2xkZXIoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhKQotICAgIDogbV9nbG9iYWxEYXRhKCZnbG9iYWxEYXRhKQotewotICAgIG1fZ2xv
YmFsRGF0YS0+YXBpTG9jaygpLmxvY2soKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxp
bnRwdHJfdD4ocHRocmVhZF9nZXRzcGVjaWZpYyhKU0xvY2tDb3VudCkpOwogfQogCi1KU0xvY2tI
b2xkZXI6On5KU0xvY2tIb2xkZXIoKQorc3RhdGljIHZvaWQgc2V0TG9ja0NvdW50KGludHB0cl90
IGNvdW50KQogewotICAgIG1fZ2xvYmFsRGF0YS0+YXBpTG9jaygpLnVubG9jaygpOworICAgIEFT
U0VSVChjb3VudCA+PSAwKTsKKyAgICBwdGhyZWFkX3NldHNwZWNpZmljKEpTTG9ja0NvdW50LCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihjb3VudCkpOwogfQogCi1KU0xvY2s6OkpTTG9jaygpCi0g
ICAgOiBtX2xvY2tDb3VudCgwKQorSlNMb2NrOjpKU0xvY2soRXhlY1N0YXRlKiBleGVjKQorICAg
IDogbV9sb2NrQmVoYXZpb3IoZXhlYy0+Z2xvYmFsRGF0YSgpLmlzU2hhcmVkSW5zdGFuY2UoKSA/
IExvY2tGb3JSZWFsIDogU2lsZW5jZUFzc2VydGlvbnNPbmx5KQogewotICAgIG1fc3BpbkxvY2su
SW5pdCgpOworICAgIGxvY2sobV9sb2NrQmVoYXZpb3IpOwogfQogCi1KU0xvY2s6On5KU0xvY2so
KQorSlNMb2NrOjpKU0xvY2soSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQorICAgIDogbV9sb2Nr
QmVoYXZpb3IoZ2xvYmFsRGF0YS0+aXNTaGFyZWRJbnN0YW5jZSgpID8gTG9ja0ZvclJlYWwgOiBT
aWxlbmNlQXNzZXJ0aW9uc09ubHkpCiB7CisgICAgbG9jayhtX2xvY2tCZWhhdmlvcik7CiB9CiAK
LXZvaWQgSlNMb2NrOjpsb2NrKCkKK3ZvaWQgSlNMb2NrOjpsb2NrKEpTTG9ja0JlaGF2aW9yIGxv
Y2tCZWhhdmlvcikKIHsKLSAgICBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQgPSBXVEY6
OmN1cnJlbnRUaHJlYWQoKTsKLSAgICB7Ci0gICAgICAgIFNwaW5Mb2NrSG9sZGVyIGhvbGRlcigm
bV9zcGluTG9jayk7Ci0gICAgICAgIGlmIChtX293bmVyVGhyZWFkID09IGN1cnJlbnRUaHJlYWQg
JiYgbV9sb2NrQ291bnQpIHsKLSAgICAgICAgICAgIG1fbG9ja0NvdW50Kys7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9CisjaWZkZWYgTkRFQlVHCisgICAgLy8gTG9ja2lu
ZyAibm90IGZvciByZWFsIiBpcyBhIGRlYnVnLW9ubHkgZmVhdHVyZS4KKyAgICBpZiAobG9ja0Jl
aGF2aW9yID09IFNpbGVuY2VBc3NlcnRpb25zT25seSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlm
CiAKLSAgICBtX2xvY2subG9jaygpOworICAgIHB0aHJlYWRfb25jZSgmY3JlYXRlSlNMb2NrQ291
bnRPbmNlLCBjcmVhdGVKU0xvY2tDb3VudCk7CiAKLSAgICBTcGluTG9ja0hvbGRlciBob2xkZXIo
Jm1fc3BpbkxvY2spOwotICAgIG1fb3duZXJUaHJlYWQgPSBjdXJyZW50VGhyZWFkOwotICAgIEFT
U0VSVCghbV9sb2NrQ291bnQpOwotICAgIG1fbG9ja0NvdW50ID0gMTsKKyAgICBpbnRwdHJfdCBj
dXJyZW50TG9ja0NvdW50ID0gbG9ja0NvdW50KCk7CisgICAgaWYgKCFjdXJyZW50TG9ja0NvdW50
ICYmIGxvY2tCZWhhdmlvciA9PSBMb2NrRm9yUmVhbCkgeworICAgICAgICBpbnQgcmVzdWx0ID0g
cHRocmVhZF9tdXRleF9sb2NrKCZKU011dGV4KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsICFyZXN1bHQpOworICAgIH0KKyAgICBzZXRMb2NrQ291bnQoY3VycmVudExvY2tDb3VudCAr
IDEpOwogfQogCi12b2lkIEpTTG9jazo6dW5sb2NrKCkKK3ZvaWQgSlNMb2NrOjp1bmxvY2soSlNM
b2NrQmVoYXZpb3IgbG9ja0JlaGF2aW9yKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkSXNI
b2xkaW5nTG9jaygpKTsKKyAgICBBU1NFUlQobG9ja0NvdW50KCkpOwogCi0gICAgU3BpbkxvY2tI
b2xkZXIgaG9sZGVyKCZtX3NwaW5Mb2NrKTsKLSAgICBtX2xvY2tDb3VudC0tOworI2lmZGVmIE5E
RUJVRworICAgIC8vIExvY2tpbmcgIm5vdCBmb3IgcmVhbCIgaXMgYSBkZWJ1Zy1vbmx5IGZlYXR1
cmUuCisgICAgaWYgKGxvY2tCZWhhdmlvciA9PSBTaWxlbmNlQXNzZXJ0aW9uc09ubHkpCisgICAg
ICAgIHJldHVybjsKKyNlbmRpZgogCi0gICAgaWYgKCFtX2xvY2tDb3VudCkKLSAgICAgICAgbV9s
b2NrLnVubG9jaygpOworICAgIGludHB0cl90IG5ld0xvY2tDb3VudCA9IGxvY2tDb3VudCgpIC0g
MTsKKyAgICBzZXRMb2NrQ291bnQobmV3TG9ja0NvdW50KTsKKyAgICBpZiAoIW5ld0xvY2tDb3Vu
dCAmJiBsb2NrQmVoYXZpb3IgPT0gTG9ja0ZvclJlYWwpIHsKKyAgICAgICAgaW50IHJlc3VsdCA9
IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZKU011dGV4KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsICFyZXN1bHQpOworICAgIH0KIH0KIAogdm9pZCBKU0xvY2s6OmxvY2soRXhlY1N0YXRl
KiBleGVjKQogewotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5hcGlMb2NrKCkubG9jaygpOworICAg
IGxvY2soZXhlYy0+Z2xvYmFsRGF0YSgpLmlzU2hhcmVkSW5zdGFuY2UoKSA/IExvY2tGb3JSZWFs
IDogU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIH0KIAogdm9pZCBKU0xvY2s6OnVubG9jayhFeGVj
U3RhdGUqIGV4ZWMpCiB7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmFwaUxvY2soKS51bmxvY2so
KTsKKyAgICB1bmxvY2soZXhlYy0+Z2xvYmFsRGF0YSgpLmlzU2hhcmVkSW5zdGFuY2UoKSA/IExv
Y2tGb3JSZWFsIDogU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIH0KIAogYm9vbCBKU0xvY2s6OmN1
cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkKIHsKLSAgICByZXR1cm4gbV9sb2NrQ291bnQgJiYg
bV9vd25lclRocmVhZCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKTsKKyAgICBwdGhyZWFkX29uY2Uo
JmNyZWF0ZUpTTG9ja0NvdW50T25jZSwgY3JlYXRlSlNMb2NrQ291bnQpOworICAgIHJldHVybiAh
IXB0aHJlYWRfZ2V0c3BlY2lmaWMoSlNMb2NrQ291bnQpOwogfQogCiAvLyBUaGlzIGlzIGZhaXJs
eSBuYXN0eS4gIFdlIGFsbG93IG11bHRpcGxlIHRocmVhZHMgdG8gcnVuIG9uIHRoZSBzYW1lCkBA
IC0xNTAsNyArMTQ5LDcgQEAgYm9vbCBKU0xvY2s6OmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2Nr
KCkKIC8vIHRoaXMgdG8gaGFwcGVuLCBhbmQgd2VyZSBpdHMgc3RhY2sgdG8gZ3JvdyBmdXJ0aGVy
LCB0aGVuIGl0IG1heSBwb3RlbnRpYWxseQogLy8gd3JpdGUgb3ZlciB0aGUgc2Vjb25kIHRocmVh
ZCdzIGNhbGwgZnJhbWVzLgogLy8KLS8vIFRvIGF2b2lkIEpTIHN0YWNrIGNvcnJ1cHRpb24gd2Ug
ZW5mb3JjZSBhIHBvbGljeSBvZiBvbmx5IGV2ZXIgYWxsb3dpbmcgdHdvCisvLyBJbiBhdm9pZCBK
UyBzdGFjayBjb3JydXB0aW9uIHdlIGVuZm9yY2UgYSBwb2xpY3kgb2Ygb25seSBldmVyIGFsbG93
aW5nIHR3bwogLy8gdGhyZWFkcyB0byB1c2UgYSBKUyBjb250ZXh0IGNvbmN1cnJlbnRseSwgYW5k
IG9ubHkgYWxsb3dpbmcgdGhlIHNlY29uZCBvZgogLy8gdGhlc2UgdGhyZWFkcyB0byBleGVjdXRl
IHVudGlsIGl0IGhhcyBjb21wbGV0ZWQgYW5kIGZ1bGx5IHJldHVybmVkIGZyb20gaXRzCiAvLyBv
dXRlcm1vc3QgY2FsbCBpbnRvIEpTQy4gIFdlIGVuZm9yY2UgdGhpcyBwb2xpY3kgdXNpbmcgJ2xv
Y2tEcm9wRGVwdGgnLiAgVGhlCkBAIC0xNTksNyArMTU4LDcgQEAgYm9vbCBKU0xvY2s6OmN1cnJl
bnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkKIC8vIHNhbWUgdGhyZWFkIGFnYWluLCBlbnRlciBKU0Mg
KHRocm91Z2ggZXZhbHVhdGUgc2NyaXB0IG9yIGNhbGwgZnVuY3Rpb24pLCBhbmQgZXhpdAogLy8g
YWdhaW4gdGhyb3VnaCBhIGNhbGxiYWNrLCB0aGVuIHRoZSBsb2NrcyB3aWxsIG5vdCBiZSBkcm9w
cGVkIHdoZW4gRHJvcEFsbExvY2tzCiAvLyBpcyBjYWxsZWQgKHNpbmNlIGxvY2tEcm9wRGVwdGgg
aXMgbm9uLXplcm8pLiAgU2luY2UgdGhpcyB0aHJlYWQgaXMgc3RpbGwgaG9sZGluZwotLy8gdGhl
IGxvY2tzLCBvbmx5IGl0IHdpbGwgYmUgYWJsZSB0byByZS1lbnRlciBKU0MgKGVpdGhlciBiZSBy
ZXR1cm5pbmcgZnJvbSB0aGUKKy8vIHRoZSBsb2Nrcywgb25seSBpdCB3aWxsIHJlIGFibGUgdG8g
cmUtZW50ZXIgSlNDIChlaXRoZXIgYmUgcmV0dXJuaW5nIGZyb20gdGhlCiAvLyBjYWxsYmFjaywg
b3IgYnkgcmUtZW50ZXJpbmcgdGhyb3VnaCBhbm90aGVyIGNhbGwgdG8gZXZhdWxhdGUgc2NyaXB0
IG9yIGNhbGwKIC8vIGZ1bmN0aW9uKS4KIC8vCkBAIC0xNjksODQgKzE2OCw2MSBAQCBib29sIEpT
TG9jazo6Y3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKQogLy8gb3JkZXIgaW4gd2hpY2ggdGhl
eSB3ZXJlIG1hZGUgLSB0aG91Z2ggaW1wbGVtZW50aW5nIHRoZSBsZXNzIHJlc3RyaWN0aXZlIHBv
bGljeQogLy8gd291bGQgbGlrZWx5IGluY3JlYXNlIGNvbXBsZXhpdHkgYW5kIG92ZXJoZWFkLgog
Ly8KK3N0YXRpYyB1bnNpZ25lZCBsb2NrRHJvcERlcHRoID0gMDsKIAotLy8gVGhpcyBmdW5jdGlv
biByZXR1cm5zIHRoZSBudW1iZXIgb2YgbG9ja3MgdGhhdCB3ZXJlIGRyb3BwZWQuCi11bnNpZ25l
ZCBKU0xvY2s6OmRyb3BBbGxMb2NrcygpCitKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExv
Y2tzKEV4ZWNTdGF0ZSogZXhlYykKKyAgICA6IG1fbG9ja0JlaGF2aW9yKGV4ZWMtPmdsb2JhbERh
dGEoKS5pc1NoYXJlZEluc3RhbmNlKCkgPyBMb2NrRm9yUmVhbCA6IFNpbGVuY2VBc3NlcnRpb25z
T25seSkKIHsKLSAgICBpZiAobV9sb2NrRHJvcERlcHRoKyspCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgcmV0dXJuIGRyb3BBbGxMb2Nrc1VuY29uZGl0aW9uYWxseSgpOwotfQorICAgIHB0aHJl
YWRfb25jZSgmY3JlYXRlSlNMb2NrQ291bnRPbmNlLCBjcmVhdGVKU0xvY2tDb3VudCk7CiAKLXVu
c2lnbmVkIEpTTG9jazo6ZHJvcEFsbExvY2tzVW5jb25kaXRpb25hbGx5KCkKLXsKLSAgICB1bnNp
Z25lZCBsb2NrQ291bnQgPSBtX2xvY2tDb3VudDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbG9ja0NvdW50OyBpKyspCi0gICAgICAgIHVubG9jaygpOworICAgIGlmIChsb2NrRHJvcERl
cHRoKyspIHsKKyAgICAgICAgbV9sb2NrQ291bnQgPSAwOworICAgICAgICByZXR1cm47CisgICAg
fQogCi0gICAgcmV0dXJuIGxvY2tDb3VudDsKKyAgICBtX2xvY2tDb3VudCA9IEpTTG9jazo6bG9j
a0NvdW50KCk7CisgICAgZm9yIChpbnRwdHJfdCBpID0gMDsgaSA8IG1fbG9ja0NvdW50OyBpKysp
CisgICAgICAgIEpTTG9jazo6dW5sb2NrKG1fbG9ja0JlaGF2aW9yKTsKIH0KIAotdm9pZCBKU0xv
Y2s6OmdyYWJBbGxMb2Nrcyh1bnNpZ25lZCBsb2NrQ291bnQpCitKU0xvY2s6OkRyb3BBbGxMb2Nr
czo6RHJvcEFsbExvY2tzKEpTTG9ja0JlaGF2aW9yIEpTTG9ja0JlaGF2aW9yKQorICAgIDogbV9s
b2NrQmVoYXZpb3IoSlNMb2NrQmVoYXZpb3IpCiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGxvY2tDb3VudDsgaSsrKQotICAgICAgICBsb2NrKCk7CisgICAgcHRocmVhZF9vbmNlKCZj
cmVhdGVKU0xvY2tDb3VudE9uY2UsIGNyZWF0ZUpTTG9ja0NvdW50KTsKIAotICAgIG1fbG9ja0Ry
b3BEZXB0aC0tOwotfQorICAgIGlmIChsb2NrRHJvcERlcHRoKyspIHsKKyAgICAgICAgbV9sb2Nr
Q291bnQgPSAwOworICAgICAgICByZXR1cm47CisgICAgfQogCi1KU0xvY2s6OkRyb3BBbGxMb2Nr
czo6RHJvcEFsbExvY2tzKEV4ZWNTdGF0ZSogZXhlYykKLSAgICA6IG1fbG9ja0NvdW50KDApCi0g
ICAgLCBtX2dsb2JhbERhdGEoJmV4ZWMtPmdsb2JhbERhdGEoKSkKLXsKLSAgICBtX2xvY2tDb3Vu
dCA9IG1fZ2xvYmFsRGF0YS0+YXBpTG9jaygpLmRyb3BBbGxMb2NrcygpOwotfQorICAgIC8vIEl0
IGlzIG5lY2Vzc2FyeSB0byBkcm9wIGV2ZW4gInVucmVhbCIgbG9ja3MsIGJlY2F1c2UgaGF2aW5n
IGEgbm9uLXplcm8gbG9jayBjb3VudAorICAgIC8vIHdpbGwgcHJldmVudCBhIHJlYWwgbG9jayBm
cm9tIGJlaW5nIHRha2VuLgogCi1KU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKLSAgICA6IG1fbG9ja0NvdW50KDApCi0gICAgLCBtX2ds
b2JhbERhdGEoZ2xvYmFsRGF0YSkKLXsKLSAgICBtX2xvY2tDb3VudCA9IG1fZ2xvYmFsRGF0YS0+
YXBpTG9jaygpLmRyb3BBbGxMb2NrcygpOworICAgIG1fbG9ja0NvdW50ID0gSlNMb2NrOjpsb2Nr
Q291bnQoKTsKKyAgICBmb3IgKGludHB0cl90IGkgPSAwOyBpIDwgbV9sb2NrQ291bnQ7IGkrKykK
KyAgICAgICAgSlNMb2NrOjp1bmxvY2sobV9sb2NrQmVoYXZpb3IpOwogfQogCiBKU0xvY2s6OkRy
b3BBbGxMb2Nrczo6fkRyb3BBbGxMb2NrcygpCiB7Ci0gICAgbV9nbG9iYWxEYXRhLT5hcGlMb2Nr
KCkuZ3JhYkFsbExvY2tzKG1fbG9ja0NvdW50KTsKLX0KLQotI2Vsc2UgLy8gKE9TKERBUldJTikg
fHwgVVNFKFBUSFJFQURTKSkKLQotR2xvYmFsSlNMb2NrOjpHbG9iYWxKU0xvY2soKQotewotfQot
Ci1HbG9iYWxKU0xvY2s6On5HbG9iYWxKU0xvY2soKQotewotfQotCi1KU0xvY2tIb2xkZXI6OkpT
TG9ja0hvbGRlcihKU0dsb2JhbERhdGEqKQotewotfQotCi1KU0xvY2tIb2xkZXI6OkpTTG9ja0hv
bGRlcihKU0dsb2JhbERhdGEmKQotewotfQorICAgIGZvciAoaW50cHRyX3QgaSA9IDA7IGkgPCBt
X2xvY2tDb3VudDsgaSsrKQorICAgICAgICBKU0xvY2s6OmxvY2sobV9sb2NrQmVoYXZpb3IpOwog
Ci1KU0xvY2tIb2xkZXI6OkpTTG9ja0hvbGRlcihFeGVjU3RhdGUqKQoteworICAgIC0tbG9ja0Ry
b3BEZXB0aDsKIH0KIAotSlNMb2NrSG9sZGVyOjp+SlNMb2NrSG9sZGVyKCkKLXsKLX0KKyNlbHNl
IC8vIChPUyhEQVJXSU4pIHx8IFVTRShQVEhSRUFEUykpCiAKLUpTTG9jazo6SlNMb2NrKCkKK0pT
TG9jazo6SlNMb2NrKEV4ZWNTdGF0ZSopCisgICAgOiBtX2xvY2tCZWhhdmlvcihTaWxlbmNlQXNz
ZXJ0aW9uc09ubHkpCiB7CiB9CiAKLUpTTG9jazo6fkpTTG9jaygpCisvLyBJZiB0aHJlYWRpbmcg
c3VwcG9ydCBpcyBvZmYsIHNldCB0aGUgbG9jayBjb3VudCB0byBhIGNvbnN0YW50IHZhbHVlIG9m
IDEgc28gc3NlcnRpb25zCisvLyB0aGF0IHRoZSBsb2NrIGlzIGhlbGQgZG9uJ3QgZmFpbAoraW50
cHRyX3QgSlNMb2NrOjpsb2NrQ291bnQoKQogeworICAgIHJldHVybiAxOwogfQogCiBib29sIEpT
TG9jazo6Y3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKQpAQCAtMjU0LDExICsyMzAsMTEgQEAg
Ym9vbCBKU0xvY2s6OmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBKU0xvY2s6OmxvY2soKQordm9pZCBKU0xvY2s6OmxvY2soSlNMb2NrQmVo
YXZpb3IpCiB7CiB9CiAKLXZvaWQgSlNMb2NrOjp1bmxvY2soKQordm9pZCBKU0xvY2s6OnVubG9j
ayhKU0xvY2tCZWhhdmlvcikKIHsKIH0KIApAQCAtMjcwLDMzICsyNDYsMTEgQEAgdm9pZCBKU0xv
Y2s6OnVubG9jayhFeGVjU3RhdGUqKQogewogfQogCi12b2lkIEpTTG9jazo6bG9jayhKU0dsb2Jh
bERhdGEmKQotewotfQotCi12b2lkIEpTTG9jazo6dW5sb2NrKEpTR2xvYmFsRGF0YSYpCi17Ci19
Ci0KLXVuc2lnbmVkIEpTTG9jazo6ZHJvcEFsbExvY2tzKCkKLXsKLSAgICByZXR1cm4gMDsKLX0K
LQotdW5zaWduZWQgSlNMb2NrOjpkcm9wQWxsTG9ja3NVbmNvbmRpdGlvbmFsbHkoKQotewotICAg
IHJldHVybiAwOwotfQotCi12b2lkIEpTTG9jazo6Z3JhYkFsbExvY2tzKHVuc2lnbmVkKQotewot
fQotCiBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKEV4ZWNTdGF0ZSopCiB7CiB9
CiAKLUpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoSlNHbG9iYWxEYXRhKikKK0pT
TG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoSlNMb2NrQmVoYXZpb3IpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKaW5kZXggOTQxMDhkMDEzODM1ZmEx
YTNlMGMyNmIxMDM0YzE2M2JhYWM5YTM5NC4uYTBlYjk2OTc1YTY1OTcwMGIyMjE0MDI2ZDkwYmY0
Mjc0YjFkNDM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNM
b2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKQEAgLTIz
LDkgKzIzLDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9U
Q1NwaW5Mb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIApAQCAtMzMsOSArMzAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAvLyBpbXBvcnRhbnQg
dG8gbG9jayBiZWZvcmUgZG9pbmcgYW55dGhpbmcgdGhhdCBhbGxvY2F0ZXMgYQogICAgIC8vIEph
dmFTY3JpcHQgZGF0YSBzdHJ1Y3R1cmUgb3IgdGhhdCBpbnRlcmFjdHMgd2l0aCBzaGFyZWQgc3Rh
dGUKICAgICAvLyBzdWNoIGFzIHRoZSBwcm90ZWN0IGNvdW50IGhhc2ggdGFibGUuIFRoZSBzaW1w
bGVzdCB3YXkgdG8gbG9jawotICAgIC8vIGlzIHRvIGNyZWF0ZSBhIGxvY2FsIEpTTG9ja0hvbGRl
ciBvYmplY3QgaW4gdGhlIHNjb3BlIHdoZXJlIHRoZSBsb2NrIAotICAgIC8vIG11c3QgYmUgaGVs
ZCBhbmQgcGFzcyBpdCB0aGUgY29udGV4dCB0aGF0IHJlcXVpcmVzIHByb3RlY3Rpb24uIAotICAg
IC8vIFRoZSBsb2NrIGlzIHJlY3Vyc2l2ZSBzbyBuZXN0aW5nIGlzIG9rLiBUaGUgSlNMb2NrIAor
ICAgIC8vIGlzIHRvIGNyZWF0ZSBhIGxvY2FsIEpTTG9jayBvYmplY3QgaW4gdGhlIHNjb3BlIHdo
ZXJlIHRoZSBsb2NrIAorICAgIC8vIG11c3QgYmUgaGVsZC4gVGhlIGxvY2sgaXMgcmVjdXJzaXZl
IHNvIG5lc3RpbmcgaXMgb2suIFRoZSBKU0xvY2sgCiAgICAgLy8gb2JqZWN0IGFsc28gYWN0cyBh
cyBhIGNvbnZlbmllbmNlIHNob3J0LWhhbmQgZm9yIHJ1bm5pbmcgaW1wb3J0YW50CiAgICAgLy8g
aW5pdGlhbGl6YXRpb24gcm91dGluZXMuCiAKQEAgLTQ4LDY1ICs0NCw2MiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAvLyBEcm9wQWxsTG9ja3Mgb2JqZWN0IHRha2VzIGNhcmUgdG8gcmVsZWFzZSB0
aGUgSlNMb2NrIG9ubHkgaWYgeW91cgogICAgIC8vIHRocmVhZCBhY3F1aXJlZCBpdCB0byBiZWdp
biB3aXRoLgogCisgICAgLy8gRm9yIGNvbnRleHRzIG90aGVyIHRoYW4gdGhlIHNpbmdsZSBzaGFy
ZWQgb25lLCBpbXBsaWNpdCBsb2NraW5nIGlzIG5vdCBkb25lLAorICAgIC8vIGJ1dCB3ZSBzdGls
bCBuZWVkIHRvIHBlcmZvcm0gYWxsIHRoZSBjb3VudGluZyBpbiBvcmRlciB0byBrZWVwIGRlYnVn
CisgICAgLy8gYXNzZXJ0aW9ucyB3b3JraW5nLCBzbyB0aGF0IGNsaWVudHMgdGhhdCB1c2UgdGhl
IHNoYXJlZCBjb250ZXh0IGRvbid0IGJyZWFrLgorCiAgICAgY2xhc3MgRXhlY1N0YXRlOwogICAg
IGNsYXNzIEpTR2xvYmFsRGF0YTsKIAotICAgIC8vIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBwcm90
ZWN0IHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgbGVnYWN5IHNpbmdsZSAKLSAgICAvLyBzaGFy
ZWQgSlNHbG9iYWxEYXRhLgotICAgIGNsYXNzIEdsb2JhbEpTTG9jayB7Ci0gICAgICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEdsb2JhbEpTTG9jayk7Ci0gICAgcHVibGljOgotICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBHbG9iYWxKU0xvY2soKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
fkdsb2JhbEpTTG9jaygpOwotICAgIH07Ci0KLSAgICBjbGFzcyBKU0xvY2tIb2xkZXIgewotICAg
IHB1YmxpYzoKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNMb2NrSG9sZGVyKEpTR2xvYmFs
RGF0YSopOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0xvY2tIb2xkZXIoSlNHbG9iYWxE
YXRhJik7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTTG9ja0hvbGRlcihFeGVjU3RhdGUq
KTsKLQotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB+SlNMb2NrSG9sZGVyKCk7Ci0gICAgcHJp
dmF0ZToKLSAgICAgICAgUmVmUHRyPEpTR2xvYmFsRGF0YT4gbV9nbG9iYWxEYXRhOwotICAgIH07
CisgICAgZW51bSBKU0xvY2tCZWhhdmlvciB7IFNpbGVuY2VBc3NlcnRpb25zT25seSwgTG9ja0Zv
clJlYWwgfTsKIAogICAgIGNsYXNzIEpTTG9jayB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEpTTG9jayk7CiAgICAgcHVibGljOgotICAgICAgICBKU0xvY2soKTsKLSAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgfkpTTG9jaygpOwotCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgbG9jaygpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHVubG9jaygpOwotCisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTTG9jayhFeGVjU3RhdGUqKTsKKyAgICAgICAgSlNM
b2NrKEpTR2xvYmFsRGF0YSopOworCisgICAgICAgIEpTTG9jayhKU0xvY2tCZWhhdmlvciBsb2Nr
QmVoYXZpb3IpCisgICAgICAgICAgICA6IG1fbG9ja0JlaGF2aW9yKGxvY2tCZWhhdmlvcikKKyAg
ICAgICAgeworI2lmZGVmIE5ERUJVRworICAgICAgICAgICAgLy8gTG9ja2luZyAibm90IGZvciBy
ZWFsIiBpcyBhIGRlYnVnLW9ubHkgZmVhdHVyZS4KKyAgICAgICAgICAgIGlmIChsb2NrQmVoYXZp
b3IgPT0gU2lsZW5jZUFzc2VydGlvbnNPbmx5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyNl
bmRpZgorICAgICAgICAgICAgbG9jayhsb2NrQmVoYXZpb3IpOworICAgICAgICB9CisKKyAgICAg
ICAgfkpTTG9jaygpCisgICAgICAgIHsgCisjaWZkZWYgTkRFQlVHCisgICAgICAgICAgICAvLyBM
b2NraW5nICJub3QgZm9yIHJlYWwiIGlzIGEgZGVidWctb25seSBmZWF0dXJlLgorICAgICAgICAg
ICAgaWYgKG1fbG9ja0JlaGF2aW9yID09IFNpbGVuY2VBc3NlcnRpb25zT25seSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisjZW5kaWYKKyAgICAgICAgICAgIHVubG9jayhtX2xvY2tCZWhhdmlv
cik7IAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBsb2NrKEpTTG9ja0JlaGF2aW9yKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgdW5sb2NrKEpTTG9ja0JlaGF2aW9yKTsKICAgICAgICAgc3RhdGljIHZvaWQg
bG9jayhFeGVjU3RhdGUqKTsKICAgICAgICAgc3RhdGljIHZvaWQgdW5sb2NrKEV4ZWNTdGF0ZSop
OwotICAgICAgICBzdGF0aWMgdm9pZCBsb2NrKEpTR2xvYmFsRGF0YSYpOwotICAgICAgICBzdGF0
aWMgdm9pZCB1bmxvY2soSlNHbG9iYWxEYXRhJik7Ci0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpOwogCi0gICAgICAgIHVuc2lnbmVk
IGRyb3BBbGxMb2NrcygpOwotICAgICAgICB1bnNpZ25lZCBkcm9wQWxsTG9ja3NVbmNvbmRpdGlv
bmFsbHkoKTsKLSAgICAgICAgdm9pZCBncmFiQWxsTG9ja3ModW5zaWduZWQgbG9ja0NvdW50KTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGludHB0cl90IGxvY2tDb3VudCgpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBjdXJyZW50VGhyZWFkSXNIb2xk
aW5nTG9jaygpOwogCi0gICAgICAgIFNwaW5Mb2NrIG1fc3BpbkxvY2s7Ci0gICAgICAgIE11dGV4
IG1fbG9jazsKLSAgICAgICAgVGhyZWFkSWRlbnRpZmllciBtX293bmVyVGhyZWFkOwotICAgICAg
ICBpbnRwdHJfdCBtX2xvY2tDb3VudDsKLSAgICAgICAgdW5zaWduZWQgbV9sb2NrRHJvcERlcHRo
OworICAgICAgICBKU0xvY2tCZWhhdmlvciBtX2xvY2tCZWhhdmlvcjsKIAogICAgICAgICBjbGFz
cyBEcm9wQWxsTG9ja3MgewogICAgICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJvcEFs
bExvY2tzKTsKICAgICAgICAgcHVibGljOgogICAgICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
RHJvcEFsbExvY2tzKEV4ZWNTdGF0ZSogZXhlYyk7Ci0gICAgICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBEcm9wQWxsTG9ja3MoSlNHbG9iYWxEYXRhKik7CisgICAgICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBEcm9wQWxsTG9ja3MoSlNMb2NrQmVoYXZpb3IpOwogICAgICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgfkRyb3BBbGxMb2NrcygpOwogICAgICAgICAgICAgCiAgICAgICAgIHByaXZh
dGU6CiAgICAgICAgICAgICBpbnRwdHJfdCBtX2xvY2tDb3VudDsKLSAgICAgICAgICAgIFJlZlB0
cjxKU0dsb2JhbERhdGE+IG1fZ2xvYmFsRGF0YTsKKyAgICAgICAgICAgIEpTTG9ja0JlaGF2aW9y
IG1fbG9ja0JlaGF2aW9yOwogICAgICAgICB9OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKaW5kZXggNjkyNjE2NWE3ODVhNzY3ZGEzNzdhY2ViMjUz
OTcwY2VjM2I5YTk0OC4uOWU4ZGI0ZDYwNjEwMGEwNmNmNGM1MWNjMzIxMzcwNjc4ODNiMzgxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKQEAgLTc1LDkgKzc1
LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSGFuZGxlVHlwZXM8TWFwcGVkVHlwZT46Omdl
dEZyb21TbG90KGNvbnN0X2Nhc3Q8SlNWYWx1ZSo+KCZpbXBsLT5qc1ZhbHVlKCkpKTsKICAgICB9
CiAKLSAgICB2b2lkIHNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IEtleVR5cGUm
IGtleSwgRXh0ZXJuYWxUeXBlIHZhbHVlKQorICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYsIGNv
bnN0IEtleVR5cGUmIGtleSwgRXh0ZXJuYWxUeXBlIHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNT
RVJUX1VOVVNFRChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLmFwaUxvY2soKS5jdXJyZW50VGhyZWFk
SXNIb2xkaW5nTG9jaygpKTsKICAgICAgICAgdHlwZW5hbWUgTWFwVHlwZTo6QWRkUmVzdWx0IHJl
c3VsdCA9IG1fbWFwLmFkZChrZXksIDApOwogICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5
KQogICAgICAgICAgICAgV2Vha1NldDo6ZGVhbGxvY2F0ZShyZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAKaW5kZXggNjFjMjFjMzFiMmE2ZDM5
MzhlODg2ZDMzYTZlNDU5ZjE1MjE4YjQ0MS4uNjg5OWFjMjg0MmI5Nzc5YjY5ZTkzMDdjYWUxMWY3
Y2EzNDJkMzRhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcApAQCAtNDk1LDgg
KzQ5NSw5IEBAIHN0YXRpYyB2b2lkIHBhcnNlQXJndW1lbnRzKGludCBhcmdjLCBjaGFyKiogYXJn
diwgQ29tbWFuZExpbmUmIG9wdGlvbnMpCiAKIGludCByZWFsTWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiB7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKwogICAg
IFJlZlB0cjxKU0dsb2JhbERhdGE+IGdsb2JhbERhdGEgPSBKU0dsb2JhbERhdGE6OmNyZWF0ZShU
aHJlYWRTdGFja1R5cGVMYXJnZSwgTGFyZ2VIZWFwKTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhn
bG9iYWxEYXRhLmdldCgpKTsKIAogICAgIENvbW1hbmRMaW5lIG9wdGlvbnM7CiAgICAgcGFyc2VB
cmd1bWVudHMoYXJnYywgYXJndiwgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvR0NDb250cm9sbGVyLmNwcAppbmRleCA3OTUwOTY4N2ZlZGE5MTMxMjkyMzY0MDI5ZmM5ODcw
YWIxMDkzOTY5Li45NmRhZGYzNzNiYmJmMTJlMmMyNDM4MzIwNGQ0ZTc1MDQzOThiODUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCBjb2xsZWN0KHZvaWQqKQog
ewotICAgIEpTTG9ja0hvbGRlciBsb2NrKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEo
KSk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBKU0RPTVdp
bmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAuY29sbGVjdEFsbEdhcmJhZ2UoKTsKIH0K
IApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RTb29u
KCkKICAgICAvLyBkb3duIGludG8gV1RGIHNvIHRoYXQgbW9yZSBwbGF0Zm9ybXMgY2FuIHRha2Ug
YWR2YW50YWdlIG9mIGl0LCB3ZSB3aWxsIGJlIAogICAgIC8vIGFibGUgdG8gdXNlIHJlcG9ydEFi
YW5kb25lZE9iamVjdEdyYXBoIG9uIG1vcmUgcGxhdGZvcm1zLgogI2lmIFVTRShDRikKLSAgICBK
U0xvY2tIb2xkZXIgbG9jayhKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAg
IEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgSlNET01XaW5kb3c6OmNv
bW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLnJlcG9ydEFiYW5kb25lZE9iamVjdEdyYXBoKCk7CiAj
ZWxzZQogICAgIGlmICghbV9HQ1RpbWVyLmlzQWN0aXZlKCkpCkBAIC04MCw3ICs4MCw3IEBAIHZv
aWQgR0NDb250cm9sbGVyOjpnY1RpbWVyRmlyZWQoVGltZXI8R0NDb250cm9sbGVyPiopCiAKIHZv
aWQgR0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE5vdygpCiB7Ci0gICAgSlNMb2NrSG9sZGVy
IGxvY2soSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAgICBKU0xvY2sgbG9j
ayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIGlmICghSlNET01XaW5kb3c6OmNvbW1vbkpT
R2xvYmFsRGF0YSgpLT5oZWFwLmlzQnVzeSgpKQogICAgICAgICBKU0RPTVdpbmRvdzo6Y29tbW9u
SlNHbG9iYWxEYXRhKCktPmhlYXAuY29sbGVjdEFsbEdhcmJhZ2UoKTsKIH0KQEAgLTEwNCw3ICsx
MDQsNyBAQCB2b2lkIEdDQ29udHJvbGxlcjo6c2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JU
aW1lckVuYWJsZWQoYm9vbCBlbmFibGUpCiAKIHZvaWQgR0NDb250cm9sbGVyOjpkaXNjYXJkQWxs
Q29tcGlsZWRDb2RlKCkKIHsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhKU0RPTVdpbmRvdzo6Y29t
bW9uSlNHbG9iYWxEYXRhKCkpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25s
eSk7CiAgICAgSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLmRlbGV0ZUFs
bENvbXBpbGVkQ29kZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcAppbmRl
eCAzNGMyOGU5Y2VlMjY1MTlkZDBiOTg1MmJlOTE3NmQwNzEwYTc5YTcxLi4xN2JkOTEwYTYxNTBj
YzllZjRiMjM4Y2UxYTk2ZjQ1MzA5YjhjZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFj
ay5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgYm9vbCBKU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s6
OmhhbmRsZUV2ZW50KFNRTFRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgU1FMRXIKIAogICAgIFJl
ZlB0cjxKU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+IHByb3RlY3QodGhpcyk7CiAKLSAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrKG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbERhdGEo
KSk7CisgICAgSlNDOjpKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCiAgICAg
RXhlY1N0YXRlKiBleGVjID0gbV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwog
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVZvaWRDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbVZvaWRDYWxsYmFjay5jcHAKaW5kZXggNWQ0MjFiYWRkYjQ2MzBj
MWVhMDkzMmFmNjY4YTNkNjY5YjJkNDBlNC4uZjgzMGY1Y2RkYmNhMzM1M2Q2ZWYwZDU4NzA2ZWFm
Y2MxZTQwYzZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21Wb2lkQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tVm9pZENhbGxiYWNrLmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIEpTQ3VzdG9tVm9pZENh
bGxiYWNrOjpoYW5kbGVFdmVudCgpCiAKICAgICBSZWZQdHI8SlNDdXN0b21Wb2lkQ2FsbGJhY2s+
IHByb3RlY3QodGhpcyk7CiAgICAgICAgIAotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sobV9k
YXRhLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpKTsKKyAgICBKU0M6OkpTTG9jayBsb2Nr
KFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsK
ICAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCmluZGV4IGE4
OTdiNmZiYzViMjgzODY1ZTgwMzUwMTdkYjcyM2FlOGYxZjYzMGMuLmJkYWYwZDU1MzYyNjYwMmY5
ZjUzMTE1NjkyZWU5Njk0MzNkNTU2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTY3LDcgKzY3LDcgQEAg
U3RyaW5nIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3Qg
U3RyaW5nJiBwcmVmaXgpCiB7CiAgICAgQVNTRVJUKG1fY3VzdG9tUmVzb2x2ZXIpOwogCi0gICAg
SlNMb2NrSG9sZGVyIGxvY2soSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKSk7
CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCmluZGV4IDViNGI1OWY4
ZmUwYjk4NDJhY2MxNmI0YjI0N2E2MGIxM2M2NGRhZDEuLmUyOTJkMjkzMDViMzJhY2U5ODMwZmNk
MzI0N2E1NWU5MGRiZjdmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXJyb3JIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vy
cm9ySGFuZGxlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBKU0Vycm9ySGFuZGxlcjo6aGFu
ZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwK
IAogICAgIEVycm9yRXZlbnQqIGVycm9yRXZlbnQgPSBzdGF0aWNfY2FzdDxFcnJvckV2ZW50Kj4o
ZXZlbnQpOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
Z2xvYmFsRGF0YSgpKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwog
CiAgICAgSlNPYmplY3QqIGpzRnVuY3Rpb24gPSB0aGlzLT5qc0Z1bmN0aW9uKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOwogICAgIGlmICghanNGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAKaW5kZXggZmRjNzVjN2RhMTMxYzdlMTU4ZDI1NDAy
ZDNjMzM4NTNhNmMxYmY2OC4uYjg5MWY4OTM4NmQ1ZDYwZTMyNTU2YTUyZTcxYWE4M2YxOGMyYjlj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAKQEAg
LTU0LDcgKzU0LDcgQEAgSlNWYWx1ZSBKU0V2ZW50OjpjbGlwYm9hcmREYXRhKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKIAogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRXZlbnQqIGV2ZW50KQogewotICAgIEpTTG9ja0hvbGRlciBs
b2NrKGV4ZWMpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKICAg
ICBpZiAoIWV2ZW50KQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAppbmRleCAwYTU1N2Y3ZDRhNGFmZmIz
ZmZjMjNhYTVhNDk4Y2Y1YmIwYzNjNzhhLi5hYjI4Y2E4MTNiMGU1YmRlY2U3MTFlYWIzOGU3Yzdi
ZDAzNjk5MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2
ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBp
ZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNK
U0V4ZWN1dGlvbkZvcmJpZGRlbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBKU0xvY2tIb2xk
ZXIgbG9jayhzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5nbG9iYWxEYXRhKCkpOworICAgIEpTTG9j
ayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKICAgICBKU09iamVjdCoganNGdW5jdGlv
biA9IHRoaXMtPmpzRnVuY3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgaWYgKCFq
c0Z1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmpl
Y3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IDNmMDkzNTI0MGFkMzc5YmMwYWQzN2Rm
ODNkMWZjYWQxM2E0Yjk5NzAuLmExZDI4NmE3NDIzOTdhZjYxZGVlNzZlMjU5MTdjODY4OGUyNjY5
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3Jp
cHRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVj
dGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgTm9kZSogSW5qZWN0ZWRT
Y3JpcHRIb3N0OjpzY3JpcHRWYWx1ZUFzTm9kZShTY3JpcHRWYWx1ZSB2YWx1ZSkKIAogU2NyaXB0
VmFsdWUgSW5qZWN0ZWRTY3JpcHRIb3N0Ojpub2RlQXNTY3JpcHRWYWx1ZShTY3JpcHRTdGF0ZSog
c3RhdGUsIE5vZGUqIG5vZGUpCiB7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soc3RhdGUpOworICAg
IEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgcmV0dXJuIFNjcmlwdFZh
bHVlKHN0YXRlLT5nbG9iYWxEYXRhKCksIHRvSlMoc3RhdGUsIGRlcHJlY2F0ZWRHbG9iYWxPYmpl
Y3RGb3JQcm90b3R5cGUoc3RhdGUpLCBub2RlKSk7CiB9CiAKQEAgLTk1LDcgKzk1LDcgQEAgSlNW
YWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVkT2JqZWN0KEV4ZWNTdGF0ZSogZXhl
YykKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAg
ICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0
aW9uc09ubHkpOwogICAgIFNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlID0gb2JqZWN0LT5nZXQoZXhl
Yyk7CiAgICAgaWYgKHNjcmlwdFZhbHVlLmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggYjIzNzc0NDc0YmM4MDM3M2FmYTQ4MTM2YzU5
ODIwMzg2NTM0NTNlZS4uMTM4MTkzYmJhMGI3YTVlZDc5NWIzOTdhMjI5MzQ1MWE3N2ZiNDQwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNj
cmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNv
bnN0IFN0cmluZyYgc291cmNlLCBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGludCBpZCkKIHsK
LSAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7CisgICAgSlNMb2NrIGxvY2soU2ls
ZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZSA9IG1ha2VT
b3VyY2Uoc3RyaW5nVG9VU3RyaW5nKHNvdXJjZSkpOwogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRTdGF0ZS0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKTsKQEAgLTgxLDcgKzgxLDcgQEAgU2NyaXB0T2JqZWN0IEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3Vy
Y2UsIFMKIAogYm9vbCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNhbkFjY2Vzc0luc3BlY3RlZFdp
bmRvdyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCiB7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2so
c2NyaXB0U3RhdGUpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAg
ICAgSlNET01XaW5kb3cqIGluc3BlY3RlZFdpbmRvdyA9IHRvSlNET01XaW5kb3coc2NyaXB0U3Rh
dGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiAgICAgaWYgKCFpbnNwZWN0ZWRXaW5kb3cpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggODg3OTcyN2UyOGRlYzM1YzEyMmM2ZGE2YzM1
ZWFhMTkzYjMyNDg1Zi4uNjRmOWNiOWMwNDk5YzlmYjM4MmVjMjNmNTA1YWIyMmJhYzg5NDFiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5l
ci5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBKU09iamVjdCogSlNMYXp5RXZlbnRMaXN0ZW5lcjo6
aW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZXhlYwogICAgIGlm
IChtX29yaWdpbmFsTm9kZSkgewogICAgICAgICBpZiAoIXdyYXBwZXIoKSkgewogICAgICAgICAg
ICAgLy8gRW5zdXJlIHRoYXQgJ25vZGUnIGhhcyBhIEphdmFTY3JpcHQgd3JhcHBlciB0byBtYXJr
IHRoZSBldmVudCBsaXN0ZW5lciB3ZSdyZSBjcmVhdGluZy4KLSAgICAgICAgICAgIEpTTG9ja0hv
bGRlciBsb2NrKGV4ZWMpOworICAgICAgICAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlv
bnNPbmx5KTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgcGFzcyB0aGUgZ2xvYmFsIG9i
amVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIG5vZGUKICAgICAgICAgICAgIHNldFdyYXBwZXIoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBhc09iamVjdCh0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgbV9vcmln
aW5hbE5vZGUpKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKaW5kZXggODM4ZTNlZGIzOTIwZjU2YWU1ZDZlM2E4
MGIyNjYwNDIzNTljMzRjZi4uYjlhZjA2NjlhMDUzOWQ0NmRlMGQ1OGUwNzA4YTJhNzgzMDAyZTRj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhl
Y1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhl
Y1N0YXRlLmgKQEAgLTczLDcgKzczLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTVmFs
dWUgZXZhbHVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U2NvcGVDaGFpbk5vZGUqIGNo
YWluLCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1
ZSwgSlNDOjpKU1ZhbHVlKiBleGNlcHRpb24pCiAgICAgewogICAgICAgICBKU01haW5UaHJlYWRF
eGVjU3RhdGUgY3VycmVudFN0YXRlKGV4ZWMpOwotICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBs
b2NrKGV4ZWMpOwogICAgICAgICByZXR1cm4gSlNDOjpldmFsdWF0ZShleGVjLCBjaGFpbiwgc291
cmNlLCB0aGlzVmFsdWUsIGV4Y2VwdGlvbik7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25DYWxsYmFja0N1c3RvbS5jcHAKaW5kZXgg
ZDRhNTcwMTU5ODljM2E1NTA1ZGRiMTA1MGQ1MDUyYmRhYTlmYWY5Yy4uNDM3NWNlNDE3NDcwZDVl
ODU3YWE0NTBkNzNjNWMwMTQzMDIwNzkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2tDdXN0b20uY3BwCkBAIC0zNCw3ICszNCw2
IEBACiAKICNpbmNsdWRlICJKU011dGF0aW9uQ2FsbGJhY2suaCIKIAotI2luY2x1ZGUgIkpTRE9N
V2luZG93QmFzZS5oIgogI2luY2x1ZGUgIkpTTXV0YXRpb25SZWNvcmQuaCIKICNpbmNsdWRlICJK
U1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCkBAIC01MSw3ICs1MCw3IEBAIGJvb2wgSlNNdXRhdGlvbkNhbGxiYWNrOjpoYW5kbGVF
dmVudChNdXRhdGlvblJlY29yZEFycmF5KiBtdXRhdGlvbnMsIFdlYktpdE11dGF0CiAKICAgICBS
ZWZQdHI8SlNNdXRhdGlvbkNhbGxiYWNrPiBwcm90ZWN0KHRoaXMpOwogCi0gICAgSlNMb2NrSG9s
ZGVyIGxvY2soSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgSlNM
b2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKaW5kZXggN2Qw
MWI5ZjU4OTY2Y2VlYWNlZTQzZTM1MzAxYzdmOGU3N2ZjNTI0Ni4uMTIwZjYzODczYzhhNjg1NTBl
MzllMzdkZTg1MjBiMzAwYTMzN2E4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIEpTTm9k
ZUZpbHRlckNvbmRpdGlvbjo6SlNOb2RlRmlsdGVyQ29uZGl0aW9uKEpTR2xvYmFsRGF0YSYsIE5v
ZGVGaWx0ZXIqIG93bmVyLCBKCiAKIHNob3J0IEpTTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0
Tm9kZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgTm9kZSogZmlsdGVyTm9kZSkgY29uc3QKIHsKLSAg
ICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0
aW9uc09ubHkpOwogCiAgICAgaWYgKCFtX2ZpbHRlcikKICAgICAgICAgcmV0dXJuIE5vZGVGaWx0
ZXI6OkZJTFRFUl9BQ0NFUFQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tDdXN0b20uY3Bw
CmluZGV4IGViMmFiM2M1NmQwNDFmNWU4NTE5MGIzZjM1YWRkMTEyNDdkZTk1YmUuLmM2YmU2NDdm
ODg1ODRlYjkwMmNkYTgxNTkzMGU1ZmZlOThlZWE3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVxdWVzdEFuaW1hdGlvbkZyYW1l
Q2FsbGJhY2tDdXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBAIGJvb2wgSlNSZXF1ZXN0QW5pbWF0
aW9uRnJhbWVDYWxsYmFjazo6aGFuZGxlRXZlbnQoRE9NVGltZVN0YW1wIHRpbWUpCiAKICAgICBS
ZWZQdHI8SlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjaz4gcHJvdGVjdCh0aGlzKTsKIAot
ICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbERhdGEo
KSk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQoanNOdW1iZXIodGltZSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cAppbmRleCAzYWVmYWQxNjcxYTNhYzJjZWFhNzY1MzkzNzZkZWIyMzUyZTlkMmIyLi4yOWI3Mzk5
ODdlZmI3YjE4MWQzMDJjMWJjNTgyZGFkZjM2OGM5ZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcApAQCAtMzAsNyArMzAsNiBA
QAogI2luY2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUuaCIKIAogI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCiAjaW5jbHVkZSA8ZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaD4KICNpbmNs
dWRlIDxydW50aW1lL0NvbXBsZXRpb24uaD4KQEAgLTEwNyw3ICsxMDYsNyBAQCBKU1ZhbHVlIEph
dmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlKGNvbnN0IFVTdHJpbmcmIHNjcmlwdCwgSlNWYWx1
ZSYgZXhjZXB0aW9uKQogICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm4ganNOdWxs
KCk7CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xv
YmFsRGF0YSgpKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAg
IHJldHVybiBtX2RlYnVnZ2VyQ2FsbEZyYW1lLmV2YWx1YXRlKHNjcmlwdCwgZXhjZXB0aW9uKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERl
YnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1
Z1NlcnZlci5jcHAKaW5kZXggZmYwYWVlZmI1MGE2MDhjOTIxMDMzZDk4NzkzM2NkYzY1ZmNmZDJj
OS4uMTBiYjhjOGY2YWM5OWUxN2RmZmVmYzg2MzAzZjA3ZTQzNzBlZjRkYiAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBA
IC0xMTAsNyArMTEwLDcgQEAgdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3Rl
bmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyLCBQYWdlKgogCiB2b2lkIFBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVGltZXI8U2NyaXB0RGVidWdT
ZXJ2ZXI+KikKIHsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhKU0RPTVdpbmRvdzo6Y29tbW9uSlNH
bG9iYWxEYXRhKCkpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAg
ICAgLy8gSWYgSmF2YVNjcmlwdCBzdGFjayBpcyBub3QgZW1wdHkgcG9zdHBvbmUgcmVjb21waWxh
dGlvbi4KICAgICBpZiAoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5keW5hbWlj
R2xvYmFsT2JqZWN0KQogICAgICAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IGM0
NjliZjgyOTIyZTZjMDJkMjlhNjZkMWZhM2MxMzFjMzdmNGNjOGQuLjE5MDY5MDVmMGE3NTUzN2Fk
MWQ3OTM4ODhiYzUzOWMyNjI3NjAxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFNjaGVkdWxlZEFj
dGlvbjo6ZXhlY3V0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogdm9pZCBTY2hl
ZHVsZWRBY3Rpb246OmV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBBU1NFUlQobV9mdW5jdGlvbik7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2so
Y29udGV4dC0+Z2xvYmFsRGF0YSgpKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9u
c09ubHkpOwogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBnZXRDYWxsRGF0YShtX2Z1bmN0aW9uLmdldCgpLCBjYWxsRGF0YSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAppbmRleCA5
Y2Y0ZTk5Y2VhM2FlM2E3OTU0MmJkYjM2MDUyZGIxNDczNDFkZDMzLi4yMTAwYzZiMDI2MWIyZGZk
MjVmNzNhNGQ3YWIzOTM5YTVlMjI4NjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBTY3JpcHRDYWNoZWRGcmFtZURhdGE6OlNjcmlwdENhY2hlZEZy
YW1lRGF0YShGcmFtZSogZnJhbWUpCiB7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soSlNET01XaW5k
b3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFz
c2VydGlvbnNPbmx5KTsKIAogICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIg
PSBmcmFtZS0+c2NyaXB0KCk7CiAgICAgU2NyaXB0Q29udHJvbGxlcjo6U2hlbGxNYXAmIHdpbmRv
d1NoZWxscyA9IHNjcmlwdENvbnRyb2xsZXItPm1fd2luZG93U2hlbGxzOwpAQCAtNjcsNyArNjcs
NyBAQCBTY3JpcHRDYWNoZWRGcmFtZURhdGE6On5TY3JpcHRDYWNoZWRGcmFtZURhdGEoKQogCiB2
b2lkIFNjcmlwdENhY2hlZEZyYW1lRGF0YTo6cmVzdG9yZShGcmFtZSogZnJhbWUpCiB7Ci0gICAg
SlNMb2NrSG9sZGVyIGxvY2soSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKSk7
CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAgIFNjcmlwdENv
bnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7CiAgICAgU2NyaXB0
Q29udHJvbGxlcjo6U2hlbGxNYXAmIHdpbmRvd1NoZWxscyA9IHNjcmlwdENvbnRyb2xsZXItPm1f
d2luZG93U2hlbGxzOwpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFNjcmlwdENhY2hlZEZyYW1lRGF0
YTo6Y2xlYXIoKQogICAgIGlmIChtX3dpbmRvd3MuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFs
RGF0YSgpKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIG1f
d2luZG93cy5jbGVhcigpOwogICAgIGdjQ29udHJvbGxlcigpLmdhcmJhZ2VDb2xsZWN0U29vbigp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNw
cAppbmRleCA1MGE4YWM1MzI1YzkyNjY1MjBjOTNiYTNjMmE3MWFhYTRiMzY5OWY4Li43OTk5NTAy
YmRlZTk1ZmQ4NmIxNDE2MTUyNWU3NTFlN2RkYTg4MWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIFNj
cmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlCiAgICAgY29uc3QgU3RyaW5nKiBzYXZlZFNvdXJjZVVSTCA9
IG1fc291cmNlVVJMOwogICAgIG1fc291cmNlVVJMID0gJnNvdXJjZVVSTDsKIAotICAgIEpTTG9j
a0hvbGRlciBsb2NrKGV4ZWMpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25s
eSk7CiAKICAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3QgPSBtX2ZyYW1lOwogCkBAIC0xNzcsNyAr
MTc3LDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1NoZWxsKGJvb2wgZ29p
bmdJbnRvUGFnZUNhY2hlKQogICAgIGlmIChtX3dpbmRvd1NoZWxscy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEpTTG9ja0hvbGRlciBsb2NrKEpTRE9NV2luZG93QmFzZTo6Y29t
bW9uSlNHbG9iYWxEYXRhKCkpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25s
eSk7CiAKICAgICBmb3IgKFNoZWxsTWFwOjppdGVyYXRvciBpdGVyID0gbV93aW5kb3dTaGVsbHMu
YmVnaW4oKTsgaXRlciAhPSBtX3dpbmRvd1NoZWxscy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAg
IEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsID0gaXRlci0+c2Vjb25kLmdldCgpOwpAQCAt
MjA5LDcgKzIwOSw3IEBAIEpTRE9NV2luZG93U2hlbGwqIFNjcmlwdENvbnRyb2xsZXI6OmluaXRT
Y3JpcHQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKIHsKICAgICBBU1NFUlQoIW1fd2luZG93U2hl
bGxzLmNvbnRhaW5zKHdvcmxkKSk7CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9jayh3b3JsZC0+Z2xv
YmFsRGF0YSgpKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCiAg
ICAgSlNET01XaW5kb3dTaGVsbCogd2luZG93U2hlbGwgPSBjcmVhdGVXaW5kb3dTaGVsbCh3b3Js
ZCk7CiAKQEAgLTI4NCwxMCArMjg0LDkgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjp1cGRhdGVE
b2N1bWVudCgpCiAgICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBmb3IgKFNoZWxsTWFwOjppdGVyYXRvciBpdGVyID0gbV93aW5kb3dTaGVsbHMuYmVn
aW4oKTsgaXRlciAhPSBtX3dpbmRvd1NoZWxscy5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIEpT
TG9ja0hvbGRlciBsb2NrKGl0ZXItPmZpcnN0LT5nbG9iYWxEYXRhKCkpOworICAgIEpTTG9jayBs
b2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisgICAgZm9yIChTaGVsbE1hcDo6aXRlcmF0b3Ig
aXRlciA9IG1fd2luZG93U2hlbGxzLmJlZ2luKCk7IGl0ZXIgIT0gbV93aW5kb3dTaGVsbHMuZW5k
KCk7ICsraXRlcikKICAgICAgICAgaXRlci0+c2Vjb25kLT53aW5kb3coKS0+dXBkYXRlRG9jdW1l
bnQoKTsKLSAgICB9CiB9CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6dXBkYXRlU2VjdXJpdHlP
cmlnaW4oKQpAQCAtMzAxLDcgKzMwMCw3IEBAIEJpbmRpbmdzOjpSb290T2JqZWN0KiBTY3JpcHRD
b250cm9sbGVyOjpjYWNoZWFibGVCaW5kaW5nUm9vdE9iamVjdCgpCiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgaWYgKCFtX2NhY2hlYWJsZUJpbmRpbmdSb290T2JqZWN0KSB7Ci0gICAgICAgIEpT
TG9ja0hvbGRlciBsb2NrKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOwor
ICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAgICBtX2Nh
Y2hlYWJsZUJpbmRpbmdSb290T2JqZWN0ID0gQmluZGluZ3M6OlJvb3RPYmplY3Q6OmNyZWF0ZSgw
LCBnbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSkpOwogICAgIH0KICAgICByZXR1cm4gbV9jYWNo
ZWFibGVCaW5kaW5nUm9vdE9iamVjdC5nZXQoKTsKQEAgLTMxMyw3ICszMTIsNyBAQCBCaW5kaW5n
czo6Um9vdE9iamVjdCogU2NyaXB0Q29udHJvbGxlcjo6YmluZGluZ1Jvb3RPYmplY3QoKQogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIGlmICghbV9iaW5kaW5nUm9vdE9iamVjdCkgewotICAgICAg
ICBKU0xvY2tIb2xkZXIgbG9jayhKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgp
KTsKKyAgICAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAg
bV9iaW5kaW5nUm9vdE9iamVjdCA9IEJpbmRpbmdzOjpSb290T2JqZWN0OjpjcmVhdGUoMCwgZ2xv
YmFsT2JqZWN0KHBsdWdpbldvcmxkKCkpKTsKICAgICB9CiAgICAgcmV0dXJuIG1fYmluZGluZ1Jv
b3RPYmplY3QuZ2V0KCk7CkBAIC0zNTAsOSArMzQ5LDkgQEAgTlBPYmplY3QqIFNjcmlwdENvbnRy
b2xsZXI6OndpbmRvd1NjcmlwdE5QT2JqZWN0KCkKICAgICAgICAgaWYgKGNhbkV4ZWN1dGVTY3Jp
cHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkgewogICAgICAgICAgICAgLy8gSmF2YVNjcmlw
dCBpcyBlbmFibGVkLCBzbyB0aGVyZSBpcyBhIEphdmFTY3JpcHQgd2luZG93IG9iamVjdC4KICAg
ICAgICAgICAgIC8vIFJldHVybiBhbiBOUE9iamVjdCBib3VuZCB0byB0aGUgd2luZG93IG9iamVj
dC4KLSAgICAgICAgICAgIEpTRE9NV2luZG93KiB3aW4gPSB3aW5kb3dTaGVsbChwbHVnaW5Xb3Js
ZCgpKS0+d2luZG93KCk7CisgICAgICAgICAgICBKU0M6OkpTTG9jayBsb2NrKFNpbGVuY2VBc3Nl
cnRpb25zT25seSk7CisgICAgICAgICAgICBKU09iamVjdCogd2luID0gd2luZG93U2hlbGwocGx1
Z2luV29ybGQoKSktPndpbmRvdygpOwogICAgICAgICAgICAgQVNTRVJUKHdpbik7Ci0gICAgICAg
ICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHdpbi0+Z2xvYmFsRXhlYygpKTsKICAgICAgICAg
ICAgIEJpbmRpbmdzOjpSb290T2JqZWN0KiByb290ID0gYmluZGluZ1Jvb3RPYmplY3QoKTsKICAg
ICAgICAgICAgIG1fd2luZG93U2NyaXB0TlBPYmplY3QgPSBfTlBOX0NyZWF0ZVNjcmlwdE9iamVj
dCgwLCB3aW4sIHJvb3QpOwogICAgICAgICB9IGVsc2UgewpAQCAtMzg0LDggKzM4Myw4IEBAIEpT
T2JqZWN0KiBTY3JpcHRDb250cm9sbGVyOjpqc09iamVjdEZvclBsdWdpbkVsZW1lbnQoSFRNTFBs
dWdJbkVsZW1lbnQqIHBsdWdpbikKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBDcmVhdGUg
YSBKU09iamVjdCBib3VuZCB0byB0aGlzIGVsZW1lbnQKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOwogICAgIEpTRE9NV2luZG93KiBnbG9iYWxPYmogPSBnbG9iYWxPYmpl
Y3QocGx1Z2luV29ybGQoKSk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqLT5nbG9i
YWxFeGVjKCkpOwogICAgIC8vIEZJWE1FOiBpcyBub3JtYWwgb2theT8gLSB1c2VkIGZvciBOUCBw
bHVnaW5zPwogICAgIEpTVmFsdWUganNFbGVtZW50VmFsdWUgPSB0b0pTKGdsb2JhbE9iai0+Z2xv
YmFsRXhlYygpLCBnbG9iYWxPYmosIHBsdWdpbik7CiAgICAgaWYgKCFqc0VsZW1lbnRWYWx1ZSB8
fCAhanNFbGVtZW50VmFsdWUuaXNPYmplY3QoKSkKQEAgLTQxOSw3ICs0MTgsNyBAQCB2b2lkIFNj
cmlwdENvbnRyb2xsZXI6OmNsZWFudXBTY3JpcHRPYmplY3RzRm9yUGx1Z2luKHZvaWQqIG5hdGl2
ZUhhbmRsZSkKIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhclNjcmlwdE9iamVjdHMoKQog
ewotICAgIEpTTG9ja0hvbGRlciBsb2NrKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxE
YXRhKCkpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKICAgICBS
b290T2JqZWN0TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3Jvb3RPYmplY3RzLmVuZCgpOwog
ICAgIGZvciAoUm9vdE9iamVjdE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Jvb3RPYmplY3Rz
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IDY2MjEwYzdkZmUzZmY2MTE5ZTIwYjlj
Zjc4MWU1YjJkNTAwMDBiYWIuLjUwYTVhN2U3MTMyNDg5OTVhYjQ3YmVhZjQxZjkxNTZlMzMxZGZk
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ck1hYy5tbQpAQCAtMTExLDcgKzExMSw3IEBAIFdlYlNjcmlwdE9iamVjdCogU2NyaXB0Q29udHJv
bGxlcjo6d2luZG93U2NyaXB0T2JqZWN0KCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAo
IW1fd2luZG93U2NyaXB0T2JqZWN0KSB7Ci0gICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2so
SlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgICAgIEpTQzo6SlNM
b2NrIGxvY2soSlNDOjpTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAgICBKU0M6OkJpbmRp
bmdzOjpSb290T2JqZWN0KiByb290ID0gYmluZGluZ1Jvb3RPYmplY3QoKTsKICAgICAgICAgbV93
aW5kb3dTY3JpcHRPYmplY3QgPSBbV2ViU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdEZvckpTT2Jq
ZWN0OnRvUmVmKHdpbmRvd1NoZWxsKHBsdWdpbldvcmxkKCkpKSBvcmlnaW5Sb290T2JqZWN0OnJv
b3Qgcm9vdE9iamVjdDpyb290XTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggOWFjZTgyZDkzN2E5MTczOTkzNGJhNzNj
MzdlZGNkOTA0Y2IzZjc4OC4uZjIyMjdjNzQ1Y2M4YTAxYmQzOGVhOGY0ZDBhYmM3NTM5M2FhMDM5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVy
LmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNo
RGlkUGF1c2UoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgewogICAgICAgICBp
ZiAobV9jdXJyZW50Q2FsbEZyYW1lLT5pc1ZhbGlkKCkgJiYgZ2xvYmFsT2JqZWN0LT5pbmhlcml0
cygmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbykpIHsKICAgICAgICAgICAgIEpTRE9NR2xvYmFs
T2JqZWN0KiBkb21HbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpOwotICAgICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soc3RhdGUpOworICAgICAg
ICAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgICAgIGpz
Q2FsbEZyYW1lID0gdG9KUyhzdGF0ZSwgZG9tR2xvYmFsT2JqZWN0LCBtX2N1cnJlbnRDYWxsRnJh
bWUuZ2V0KCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGpzQ2FsbEZyYW1lID0ganNV
bmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dEV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZl
bnRMaXN0ZW5lci5jcHAKaW5kZXggNzIxNmI2ZjM2NzMxNzU2ZmExYTRkYjE5OGNhNTkwMjg1ODFh
OWY0Zi4uMzkwZmRlMTE3MzFkNDk3NzJhNGE3NzI0MjI2ZmM0MTAyNjQyNjViYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKQEAg
LTk4LDcgKzk4LDcgQEAgU3RyaW5nIGV2ZW50TGlzdGVuZXJIYW5kbGVyQm9keShEb2N1bWVudCog
ZG9jdW1lbnQsIEV2ZW50TGlzdGVuZXIqIGV2ZW50TGlzdGVuZXIKICAgICBBU1NFUlQoanNMaXN0
ZW5lcik7CiAgICAgaWYgKCFqc0xpc3RlbmVyKQogICAgICAgICByZXR1cm4gIiI7Ci0gICAgSlNM
b2NrSG9sZGVyIGxvY2soanNMaXN0ZW5lci0+aXNvbGF0ZWRXb3JsZCgpLT5nbG9iYWxEYXRhKCkp
OworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgSlNDOjpKU09i
amVjdCoganNGdW5jdGlvbiA9IGpzTGlzdGVuZXItPmpzRnVuY3Rpb24oZG9jdW1lbnQpOwogICAg
IGlmICghanNGdW5jdGlvbikKICAgICAgICAgcmV0dXJuICIiOwpAQCAtMTEyLDcgKzExMiw3IEBA
IGJvb2wgZXZlbnRMaXN0ZW5lckhhbmRsZXJMb2NhdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIEV2
ZW50TGlzdGVuZXIqIGV2ZW50TGlzdGVuCiAgICAgQVNTRVJUKGpzTGlzdGVuZXIpOwogICAgIGlm
ICghanNMaXN0ZW5lcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEpTTG9ja0hvbGRlciBs
b2NrKGpzTGlzdGVuZXItPmlzb2xhdGVkV29ybGQoKS0+Z2xvYmFsRGF0YSgpKTsKKyAgICBKU0xv
Y2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIEpTQzo6SlNPYmplY3QqIGpzT2Jq
ZWN0ID0ganNMaXN0ZW5lci0+anNGdW5jdGlvbihkb2N1bWVudCk7CiAgICAgaWYgKCFqc09iamVj
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKaW5kZXggNTQ3NzgyNTlhODhmNjhmYWYzYzZhZjRl
MzAyNzk3YTBlODMyOWZiYy4uODNiMGU0NWIxMTFhMDZmZmRmYzllZmM4M2JlMWNmZDRjMTU0YjYz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNh
bGwuY3BwCkBAIC01OCwxOSArNTgsMTkgQEAgdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVy
OjphcHBlbmRBcmd1bWVudChjb25zdCBTY3JpcHRWYWx1ZSYgYXJndW1lbnQpCiAKIHZvaWQgU2Ny
aXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgU3RyaW5nJiBhcmd1
bWVudCkKIHsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2V4ZWMpOworICAgIEpTTG9jayBsb2Nr
KFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgbV9hcmd1bWVudHMuYXBwZW5kKGpzU3RyaW5n
KG1fZXhlYywgYXJndW1lbnQpKTsKIH0KIAogdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVy
OjphcHBlbmRBcmd1bWVudChjb25zdCBKU0M6OlVTdHJpbmcmIGFyZ3VtZW50KQogewotICAgIEpT
TG9ja0hvbGRlciBsb2NrKG1fZXhlYyk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlv
bnNPbmx5KTsKICAgICBtX2FyZ3VtZW50cy5hcHBlbmQoanNTdHJpbmcobV9leGVjLCBhcmd1bWVu
dCkpOwogfQogCiB2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50
KGNvbnN0IGNoYXIqIGFyZ3VtZW50KQogewotICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZXhlYyk7
CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBtX2FyZ3VtZW50
cy5hcHBlbmQoanNTdHJpbmcobV9leGVjLCBVU3RyaW5nKGFyZ3VtZW50KSkpOwogfQogCkBAIC04
MSwzMSArODEsMzEgQEAgdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1
bWVudChKU0M6OkpTVmFsdWUgYXJndW1lbnQpCiAKIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFu
ZGxlcjo6YXBwZW5kQXJndW1lbnQobG9uZyBhcmd1bWVudCkKIHsKLSAgICBKU0xvY2tIb2xkZXIg
bG9jayhtX2V4ZWMpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAg
ICAgbV9hcmd1bWVudHMuYXBwZW5kKGpzTnVtYmVyKGFyZ3VtZW50KSk7CiB9CiAKIHZvaWQgU2Ny
aXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQobG9uZyBsb25nIGFyZ3VtZW50
KQogewotICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZXhlYyk7CisgICAgSlNMb2NrIGxvY2soU2ls
ZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBtX2FyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIoYXJn
dW1lbnQpKTsKIH0KIAogdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1
bWVudCh1bnNpZ25lZCBpbnQgYXJndW1lbnQpCiB7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2sobV9l
eGVjKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIG1fYXJn
dW1lbnRzLmFwcGVuZChqc051bWJlcihhcmd1bWVudCkpOwogfQogCiB2b2lkIFNjcmlwdENhbGxB
cmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KHVuc2lnbmVkIGxvbmcgYXJndW1lbnQpCiB7
Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2sobV9leGVjKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOwogICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc051bWJlcihhcmd1bWVu
dCkpOwogfQogCiB2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50
KGludCBhcmd1bWVudCkKIHsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2V4ZWMpOworICAgIEpT
TG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgbV9hcmd1bWVudHMuYXBwZW5k
KGpzTnVtYmVyKGFyZ3VtZW50KSk7CiB9CiAKQEAgLTEyNSw3ICsxMjUsNyBAQCBTY3JpcHRWYWx1
ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uLCBib29sIHJlcG9y
dEV4Y2VwdGlvbnMpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBtX3RoaXNPYmplY3Qu
anNPYmplY3QoKTsKIAotICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZXhlYyk7CisgICAgSlNMb2Nr
IGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB0
aGlzT2JqZWN0LT5nZXQobV9leGVjLCBJZGVudGlmaWVyKG1fZXhlYywgc3RyaW5nVG9VU3RyaW5n
KG1fbmFtZSkpKTsKICAgICBpZiAobV9leGVjLT5oYWRFeGNlcHRpb24oKSkgewpAQCAtMTYzLDcg
KzE2Myw3IEBAIFNjcmlwdE9iamVjdCBTY3JpcHRGdW5jdGlvbkNhbGw6OmNvbnN0cnVjdChib29s
JiBoYWRFeGNlcHRpb24sIGJvb2wgcmVwb3J0RXhjZXB0CiB7CiAgICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBtX3RoaXNPYmplY3QuanNPYmplY3QoKTsKIAotICAgIEpTTG9ja0hvbGRlciBsb2Nr
KG1fZXhlYyk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAg
IEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGFzT2JqZWN0KHRoaXNPYmplY3QtPmdldChtX2V4ZWMs
IElkZW50aWZpZXIobV9leGVjLCBzdHJpbmdUb1VTdHJpbmcobV9uYW1lKSkpKTsKICAgICBpZiAo
bV9leGVjLT5oYWRFeGNlcHRpb24oKSkgewpAQCAtMjA1LDcgKzIwNSw3IEBAIFNjcmlwdFZhbHVl
IFNjcmlwdENhbGxiYWNrOjpjYWxsKCkKIAogU2NyaXB0VmFsdWUgU2NyaXB0Q2FsbGJhY2s6OmNh
bGwoYm9vbCYgaGFkRXhjZXB0aW9uKQogewotICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZXhlYyk7
CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAgIENhbGxEYXRh
IGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEobV9mdW5jdGlv
bi5qc1ZhbHVlKCksIGNhbGxEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRPYmplY3QuY3BwCmluZGV4IGJmOTE0MGQwNzQyMjVhNmQzYzljODA4ZWM5ZmUwYWVhN2FhYmVk
MGMuLjBjZmI4MmI2ZTcwMTExYWIzNmYxOTg2ZGY2MDZkOGJjMjViZTBmYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcApAQCAtNjcsNyArNjcsNyBAQCBz
dGF0aWMgYm9vbCBoYW5kbGVFeGNlcHRpb24oU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQogCiBi
b29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29u
c3QgY2hhciogbmFtZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB2YWx1ZSkKIHsKLSAgICBKU0xvY2tI
b2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlv
bnNPbmx5KTsKICAgICBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wdXREaXJl
Y3Qoc2NyaXB0U3RhdGUtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFt
ZSksIHZhbHVlLmpzT2JqZWN0KCkpOwogICAgIHJldHVybiBoYW5kbGVFeGNlcHRpb24oc2NyaXB0
U3RhdGUpOwogfQpAQCAtNzUsNyArNzUsNyBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0
KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgUwogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
KiB2YWx1ZSkKIHsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7CisgICAgSlNM
b2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSk7CiAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qoc2NyaXB0
U3RhdGUtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSksIHRvSlMo
c2NyaXB0U3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKICAgICByZXR1cm4gaGFuZGxlRXhj
ZXB0aW9uKHNjcmlwdFN0YXRlKTsKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBTY3JpcHRHbG9iYWxP
YmplY3Q6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIElu
c3BlY3QKIAogYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0
U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIEluamVjdGVkU2NyaXB0SG9zdCogdmFsdWUpCiB7Ci0g
ICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOworICAgIEpTTG9jayBsb2NrKFNpbGVu
Y2VBc3NlcnRpb25zT25seSk7CiAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpOwogICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT5nbG9iYWxE
YXRhKCksIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpLCB0b0pTKHNjcmlwdFN0YXRlLCBn
bG9iYWxPYmplY3QsIHZhbHVlKSk7CiAgICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRT
dGF0ZSk7CkBAIC05Miw3ICs5Miw3IEBAIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoU2Ny
aXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBJbmplY3RlCiAKIGJvb2wg
U2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBj
aGFyKiBuYW1lLCBTY3JpcHRPYmplY3QmIHZhbHVlKQogewotICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHNjcmlwdFN0YXRlKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwog
ICAgIEpTVmFsdWUganNWYWx1ZSA9IHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PmdldChzY3JpcHRTdGF0ZSwgSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSkpOwogICAgIGlm
ICghanNWYWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA2LDcgKzEwNiw3IEBAIGJv
b2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25z
dCBjaGFyKiBuYW1lLCBTY3JpcHRPCiAKIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpyZW1vdmUo
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lKQogewotICAgIEpTTG9j
a0hvbGRlciBsb2NrKHNjcmlwdFN0YXRlKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0
aW9uc09ubHkpOwogICAgIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm1ldGhv
ZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIHNjcmlwdFN0YXRlLCBJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSk7CiAgICAgcmV0
dXJuIGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKaW5kZXggODNkZmQ1ZmI4MzI2NzE4YjZlZWJmMTM0MzIz
YWYyNDQxM2VjMzUyYy4uZmQzMjg3MmM3Y2E4ZTgzZDA0ZTEzMmU1YzA0ZGI3NTMyZDY5NzZlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcApAQCAtNDksNyAr
NDksNyBAQCBib29sIFNjcmlwdFZhbHVlOjpnZXRTdHJpbmcoU2NyaXB0U3RhdGUqIHNjcmlwdFN0
YXRlLCBTdHJpbmcmIHJlc3VsdCkgY29uc3QKIHsKICAgICBpZiAoIW1fdmFsdWUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7CisgICAg
SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBVU3RyaW5nIHVzdHJpbmc7
CiAgICAgaWYgKCFtX3ZhbHVlLmdldCgpLmdldFN0cmluZyhzY3JpcHRTdGF0ZSwgdXN0cmluZykp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3NSw3ICsxNzUsNiBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKFNjcmlwdFN0YXRlKiBzY3Jp
cHRTdGF0ZSwgSgogCiBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBTY3JpcHRWYWx1ZTo6dG9J
bnNwZWN0b3JWYWx1ZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpIGNvbnN0CiB7Ci0gICAgSlND
OjpKU0xvY2tIb2xkZXIgaG9sZGVyKHNjcmlwdFN0YXRlKTsKICAgICByZXR1cm4ganNUb0luc3Bl
Y3RvclZhbHVlKHNjcmlwdFN0YXRlLCBtX3ZhbHVlLmdldCgpLCBJbnNwZWN0b3JWYWx1ZTo6bWF4
RGVwdGgpOwogfQogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDli
ZmRlOGYyYWIyZTFkZTNkNTNiMWNiZTIyYjMzY2RmNTVjNzY2NDUuLmUyZTYwN2Q5NWI1MjAwMzdh
ZGJhNDRhYzFiMWVkMTJmMDYxODMyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFdv
cmtlclNjcmlwdENvbnRyb2xsZXI6OldvcmtlclNjcmlwdENvbnRyb2xsZXIoV29ya2VyQ29udGV4
dCogd29ya2VyQ29udGV4dCkKIAogV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6fldvcmtlclNjcmlw
dENvbnRyb2xsZXIoKQogewotICAgIEpTTG9ja0hvbGRlciBsb2NrKGdsb2JhbERhdGEoKSk7Cisg
ICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBtX3dvcmtlckNvbnRl
eHRXcmFwcGVyLmNsZWFyKCk7CiAgICAgbV9nbG9iYWxEYXRhLmNsZWFyKCk7CiB9CkBAIC03Myw3
ICs3Myw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgpCiB7CiAg
ICAgQVNTRVJUKCFtX3dvcmtlckNvbnRleHRXcmFwcGVyKTsKIAotICAgIEpTTG9ja0hvbGRlciBs
b2NrKG1fZ2xvYmFsRGF0YS5nZXQoKSk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlv
bnNPbmx5KTsKIAogICAgIC8vIEV4cGxpY2l0bHkgcHJvdGVjdCB0aGUgZ2xvYmFsIG9iamVjdCdz
IHByb3RvdHlwZSBzbyBpdCBpc24ndCBjb2xsZWN0ZWQKICAgICAvLyB3aGVuIHdlIGFsbG9jYXRl
IHRoZSBnbG9iYWwgb2JqZWN0LiAoT25jZSB0aGUgZ2xvYmFsIG9iamVjdCBpcyBmdWxseQpAQCAt
MTE3LDcgKzExNyw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29u
c3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICBTY3JpcHRWYWx1ZSBleGNlcHRp
b247CiAgICAgZXZhbHVhdGUoc291cmNlQ29kZSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2Vw
dGlvbi5qc1ZhbHVlKCkpIHsKLSAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsRGF0YSgp
KTsKKyAgICAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAg
cmVwb3J0RXhjZXB0aW9uKG1fd29ya2VyQ29udGV4dFdyYXBwZXItPmdsb2JhbEV4ZWMoKSwgZXhj
ZXB0aW9uLmpzVmFsdWUoKSk7CiAgICAgfQogfQpAQCAtMTI4LDkgKzEyOCw5IEBAIHZvaWQgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwgU2NyaXB0CiAgICAgICAgIHJldHVybjsKIAogICAgIGluaXRTY3JpcHRJZk5lZWRl
ZCgpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBtX3dvcmtlckNvbnRleHRXcmFwcGVyLT5nbG9iYWxFeGVjKCk7Ci0gICAg
SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAKICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLT5n
bG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKIApAQCAtMTkxLDcgKzE5MSw3IEBA
IGJvb2wgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25z
dAogdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbCgpCiB7CiAgICAgaW5p
dFNjcmlwdElmTmVlZGVkKCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsRGF0YSgpKTsK
KyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCiAgICAgbV93b3JrZXJD
b250ZXh0V3JhcHBlci0+c2V0RXZhbEVuYWJsZWQoZmFsc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQppbmRleCBmODkwMGUzYjdiZDQ4
ZjQ5ZjAwNTQ4ZGNkYzg5YzdjMDk2MzFhZTE4Li5hZWVmOTQxMzFmMzc5NzVlYWQwZmJhZjg1YTMz
MjU2MzA0ZTkwYmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dl
YlNjcmlwdE9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNj
cmlwdE9iamVjdC5tbQpAQCAtMTIyLDEyICsxMjIsMTMgQEAgc3RhdGljIHZvaWQgYWRkRXhjZXB0
aW9uVG9Db25zb2xlKEV4ZWNTdGF0ZSogZXhlYykKIAogc3RhdGljIHZvaWQgX2RpZEV4ZWN1dGUo
V2ViU2NyaXB0T2JqZWN0ICpvYmopCiB7CisgICAgQVNTRVJUKEpTTG9jazo6bG9ja0NvdW50KCkg
PiAwKTsKKyAgICAKICAgICBSb290T2JqZWN0KiByb290ID0gW29iaiBfcm9vdE9iamVjdF07CiAg
ICAgaWYgKCFyb290KQogICAgICAgICByZXR1cm47CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBy
b290LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwotICAgIEFTU0VSVChleGVjLT5nbG9i
YWxEYXRhKCkuYXBpTG9jaygpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpOwogICAgIEtK
U0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBmdW5jID0gSW5zdGFuY2U6OmRpZEV4ZWN1dGVGdW5jdGlv
bigpOwogICAgIGlmIChmdW5jKQogICAgICAgICBmdW5jKGV4ZWMsIHJvb3QtPmdsb2JhbE9iamVj
dCgpKTsKQEAgLTE0NywyNSArMTQ4LDE5IEBAIHN0YXRpYyB2b2lkIF9kaWRFeGVjdXRlKFdlYlNj
cmlwdE9iamVjdCAqb2JqKQogCiAgICAgV2ViQ29yZTo6YWRkSlNXcmFwcGVyKHNlbGYsIGltcCk7
CiAKLSAgICBpZiAoX3ByaXZhdGUtPnJvb3RPYmplY3QpIHsKLSAgICAgICAgSlNMb2NrSG9sZGVy
IGhvbGRlcigmX3ByaXZhdGUtPnJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRh
KCkpOworICAgIGlmIChfcHJpdmF0ZS0+cm9vdE9iamVjdCkKICAgICAgICAgX3ByaXZhdGUtPnJv
b3RPYmplY3QtPmdjUHJvdGVjdChpbXApOwotICAgIH0KIH0KIAogLSAodm9pZClfc2V0T3JpZ2lu
Um9vdE9iamVjdDooUGFzc1JlZlB0cjxSb290T2JqZWN0PilvcmlnaW5Sb290T2JqZWN0IGFuZFJv
b3RPYmplY3Q6KFBhc3NSZWZQdHI8Um9vdE9iamVjdD4pcm9vdE9iamVjdAogewogICAgIEFTU0VS
VChfcHJpdmF0ZS0+aW1wKTsKIAotICAgIGlmIChyb290T2JqZWN0KSB7Ci0gICAgICAgIEpTTG9j
a0hvbGRlciBob2xkZXIoJnJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCkp
OworICAgIGlmIChyb290T2JqZWN0KQogICAgICAgICByb290T2JqZWN0LT5nY1Byb3RlY3QoX3By
aXZhdGUtPmltcCk7Ci0gICAgfQogCi0gICAgaWYgKF9wcml2YXRlLT5yb290T2JqZWN0ICYmIF9w
cml2YXRlLT5yb290T2JqZWN0LT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgSlNMb2NrSG9sZGVyIGhv
bGRlcigmX3ByaXZhdGUtPnJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCkp
OworICAgIGlmIChfcHJpdmF0ZS0+cm9vdE9iamVjdCAmJiBfcHJpdmF0ZS0+cm9vdE9iamVjdC0+
aXNWYWxpZCgpKQogICAgICAgICBfcHJpdmF0ZS0+cm9vdE9iamVjdC0+Z2NVbnByb3RlY3QoX3By
aXZhdGUtPmltcCk7Ci0gICAgfQogCiAgICAgaWYgKF9wcml2YXRlLT5yb290T2JqZWN0KQogICAg
ICAgICBfcHJpdmF0ZS0+cm9vdE9iamVjdC0+ZGVyZWYoKTsKQEAgLTIzNywxMCArMjMyLDggQEAg
c3RhdGljIHZvaWQgX2RpZEV4ZWN1dGUoV2ViU2NyaXB0T2JqZWN0ICpvYmopCiAgICAgaWYgKF9w
cml2YXRlLT5pbXApCiAgICAgICAgIFdlYkNvcmU6OnJlbW92ZUpTV3JhcHBlcihfcHJpdmF0ZS0+
aW1wKTsKIAotICAgIGlmIChfcHJpdmF0ZS0+cm9vdE9iamVjdCAmJiBfcHJpdmF0ZS0+cm9vdE9i
amVjdC0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIEpTTG9ja0hvbGRlciBob2xkZXIoJl9wcml2YXRl
LT5yb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpKTsKKyAgICBpZiAoX3By
aXZhdGUtPnJvb3RPYmplY3QgJiYgX3ByaXZhdGUtPnJvb3RPYmplY3QtPmlzVmFsaWQoKSkKICAg
ICAgICAgX3ByaXZhdGUtPnJvb3RPYmplY3QtPmdjVW5wcm90ZWN0KF9wcml2YXRlLT5pbXApOwot
ICAgIH0KIAogICAgIGlmIChfcHJpdmF0ZS0+cm9vdE9iamVjdCkKICAgICAgICAgX3ByaXZhdGUt
PnJvb3RPYmplY3QtPmRlcmVmKCk7CkBAIC0yNTUsMTAgKzI0OCw4IEBAIHN0YXRpYyB2b2lkIF9k
aWRFeGVjdXRlKFdlYlNjcmlwdE9iamVjdCAqb2JqKQogCiAtICh2b2lkKWZpbmFsaXplCiB7Ci0g
ICAgaWYgKF9wcml2YXRlLT5yb290T2JqZWN0ICYmIF9wcml2YXRlLT5yb290T2JqZWN0LT5pc1Zh
bGlkKCkpIHsKLSAgICAgICAgSlNMb2NrSG9sZGVyIGhvbGRlcigmX3ByaXZhdGUtPnJvb3RPYmpl
Y3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCkpOworICAgIGlmIChfcHJpdmF0ZS0+cm9v
dE9iamVjdCAmJiBfcHJpdmF0ZS0+cm9vdE9iamVjdC0+aXNWYWxpZCgpKQogICAgICAgICBfcHJp
dmF0ZS0+cm9vdE9iamVjdC0+Z2NVbnByb3RlY3QoX3ByaXZhdGUtPmltcCk7Ci0gICAgfQogCiAg
ICAgaWYgKF9wcml2YXRlLT5yb290T2JqZWN0KQogICAgICAgICBfcHJpdmF0ZS0+cm9vdE9iamVj
dC0+ZGVyZWYoKTsKQEAgLTI5MCw5ICsyODEsMTAgQEAgc3RhdGljIHZvaWQgZ2V0TGlzdEZyb21O
U0FycmF5KEV4ZWNTdGF0ZSAqZXhlYywgTlNBcnJheSAqYXJyYXksIFJvb3RPYmplY3QqIHJvb3QK
ICAgICBpZiAoIVtzZWxmIF9pc1NhZmVTY3JpcHRdKQogICAgICAgICByZXR1cm4gbmlsOwogCisg
ICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKyAgICAKICAgICAvLyBMb29r
IHVwIHRoZSBmdW5jdGlvbiBvYmplY3QuCiAgICAgRXhlY1N0YXRlKiBleGVjID0gW3NlbGYgX3Jv
b3RPYmplY3RdLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwotICAgIEpTTG9ja0hvbGRl
ciBsb2NrKGV4ZWMpOwogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogCiAgICAg
SlNWYWx1ZSBmdW5jdGlvbiA9IFtzZWxmIF9pbXBdLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVj
LCBzdHJpbmdUb1VTdHJpbmcoU3RyaW5nKG5hbWUpKSkpOwpAQCAtMzMzLDcgKzMyNSw3IEBAIHN0
YXRpYyB2b2lkIGdldExpc3RGcm9tTlNBcnJheShFeGVjU3RhdGUgKmV4ZWMsIE5TQXJyYXkgKmFy
cmF5LCBSb290T2JqZWN0KiByb290CiAgICAgRXhlY1N0YXRlKiBleGVjID0gW3NlbGYgX3Jvb3RP
YmplY3RdLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwogICAgIEFTU0VSVCghZXhlYy0+
aGFkRXhjZXB0aW9uKCkpOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgSlNM
b2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAKICAgICBbc2VsZiBfcm9vdE9i
amVjdF0tPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQo
KTsKICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpldmFs
dWF0ZShleGVjLCBbc2VsZiBfcm9vdE9iamVjdF0tPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29w
ZUNoYWluKCksIG1ha2VTb3VyY2UoU3RyaW5nKHNjcmlwdCkpLCBKU0M6OkpTVmFsdWUoKSwgMCk7
CkBAIC0zNTQsNyArMzQ2LDcgQEAgc3RhdGljIHZvaWQgZ2V0TGlzdEZyb21OU0FycmF5KEV4ZWNT
dGF0ZSAqZXhlYywgTlNBcnJheSAqYXJyYXksIFJvb3RPYmplY3QqIHJvb3QKICAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSBbc2VsZiBfcm9vdE9iamVjdF0tPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVj
KCk7CiAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAKLSAgICBKU0xvY2tIb2xk
ZXIgbG9jayhleGVjKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwog
CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CiAgICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxl
KCktPnB1dChbc2VsZiBfaW1wXSwgZXhlYywgSWRlbnRpZmllcihleGVjLCBzdHJpbmdUb1VTdHJp
bmcoU3RyaW5nKGtleSkpKSwgY29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgJnZhbHVlLCBP
YmpjT2JqZWN0VHlwZSwgW3NlbGYgX3Jvb3RPYmplY3RdKSwgc2xvdCk7CkBAIC0zODAsNyArMzcy
LDcgQEAgc3RhdGljIHZvaWQgZ2V0TGlzdEZyb21OU0FycmF5KEV4ZWNTdGF0ZSAqZXhlYywgTlNB
cnJheSAqYXJyYXksIFJvb3RPYmplY3QqIHJvb3QKICAgICAgICAgLy8gTmVlZCB0byBzY29wZSB0
aGlzIGxvY2sgdG8gZW5zdXJlIHRoYXQgd2UgcmVsZWFzZSB0aGUgbG9jayBiZWZvcmUgY2FsbGlu
ZwogICAgICAgICAvLyBbc3VwZXIgdmFsdWVGb3JLZXk6a2V5XSB3aGljaCBtaWdodCB0aHJvdyBh
biBleGNlcHRpb24gYW5kIGJ5cGFzcyB0aGUgSlNMb2NrIGRlc3RydWN0b3IsCiAgICAgICAgIC8v
IGxlYXZpbmcgdGhlIGxvY2sgcGVybWFuZW50bHkgaGVsZAotICAgICAgICBKU0xvY2tIb2xkZXIg
bG9jayhleGVjKTsKKyAgICAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsK
ICAgICAgICAgCiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gW3NlbGYgX2ltcF0tPmdldChleGVj
LCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1RvVVN0cmluZyhTdHJpbmcoa2V5KSkpKTsKICAgICAg
ICAgCkBAIC0zOTYsNyArMzg4LDcgQEAgc3RhdGljIHZvaWQgZ2V0TGlzdEZyb21OU0FycmF5KEV4
ZWNTdGF0ZSAqZXhlYywgTlNBcnJheSAqYXJyYXksIFJvb3RPYmplY3QqIHJvb3QKICAgICBpZiAo
W3Jlc3VsdE9iaiBpc0tpbmRPZkNsYXNzOltXZWJVbmRlZmluZWQgY2xhc3NdXSkKICAgICAgICAg
cmVzdWx0T2JqID0gW3N1cGVyIHZhbHVlRm9yS2V5OmtleV07ICAgIC8vIGRlZmF1bHRzIHRvIHRo
cm93aW5nIGFuIGV4Y2VwdGlvbgogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAg
SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBfZGlkRXhlY3V0ZShzZWxm
KTsKICAgICAKICAgICByZXR1cm4gcmVzdWx0T2JqOwpAQCAtNDEwLDcgKzQwMiw3IEBAIHN0YXRp
YyB2b2lkIGdldExpc3RGcm9tTlNBcnJheShFeGVjU3RhdGUgKmV4ZWMsIE5TQXJyYXkgKmFycmF5
LCBSb290T2JqZWN0KiByb290CiAgICAgRXhlY1N0YXRlKiBleGVjID0gW3NlbGYgX3Jvb3RPYmpl
Y3RdLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwogICAgIEFTU0VSVCghZXhlYy0+aGFk
RXhjZXB0aW9uKCkpOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgSlNMb2Nr
IGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBbc2VsZiBfaW1wXS0+bWV0aG9kVGFi
bGUoKS0+ZGVsZXRlUHJvcGVydHkoW3NlbGYgX2ltcF0sIGV4ZWMsIElkZW50aWZpZXIoZXhlYywg
c3RyaW5nVG9VU3RyaW5nKFN0cmluZyhrZXkpKSkpOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKSB7CkBAIC00MjksNyArNDIxLDcgQEAgc3RhdGljIHZvaWQgZ2V0TGlzdEZyb21OU0Fy
cmF5KEV4ZWNTdGF0ZSAqZXhlYywgTlNBcnJheSAqYXJyYXksIFJvb3RPYmplY3QqIHJvb3QKICAg
ICBFeGVjU3RhdGUqIGV4ZWMgPSBbc2VsZiBfcm9vdE9iamVjdF0tPmdsb2JhbE9iamVjdCgpLT5n
bG9iYWxFeGVjKCk7CiAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAKLSAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9u
c09ubHkpOwogICAgIEJPT0wgcmVzdWx0ID0gW3NlbGYgX2ltcF0tPmhhc1Byb3BlcnR5KGV4ZWMs
IElkZW50aWZpZXIoZXhlYywgc3RyaW5nVG9VU3RyaW5nKFN0cmluZyhrZXkpKSkpOwogCiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CkBAIC00NDksOCArNDQxLDggQEAgc3RhdGljIHZv
aWQgZ2V0TGlzdEZyb21OU0FycmF5KEV4ZWNTdGF0ZSAqZXhlYywgTlNBcnJheSAqYXJyYXksIFJv
b3RPYmplY3QqIHJvb3QKICAgICAgICAgcmV0dXJuIEAiVW5kZWZpbmVkIjsKICAgICB9CiAKKyAg
ICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IFtzZWxmIF9yb290T2JqZWN0XS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAg
ICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAKICAgICBpZCByZXN1bHQgPSBjb252ZXJ0
VmFsdWVUb09iamNWYWx1ZShleGVjLCBbc2VsZiBfaW1wXSwgT2JqY09iamVjdFR5cGUpLm9iamVj
dFZhbHVlOwogCkBAIC00NjksNyArNDYxLDcgQEAgc3RhdGljIHZvaWQgZ2V0TGlzdEZyb21OU0Fy
cmF5KEV4ZWNTdGF0ZSAqZXhlYywgTlNBcnJheSAqYXJyYXksIFJvb3RPYmplY3QqIHJvb3QKICAg
ICBFeGVjU3RhdGUqIGV4ZWMgPSBbc2VsZiBfcm9vdE9iamVjdF0tPmdsb2JhbE9iamVjdCgpLT5n
bG9iYWxFeGVjKCk7CiAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAKLSAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9u
c09ubHkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gW3NlbGYgX2ltcF0tPmdldChleGVjLCBpbmRl
eCk7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKQEAgLTQ5Myw3ICs0ODUsNyBA
QCBzdGF0aWMgdm9pZCBnZXRMaXN0RnJvbU5TQXJyYXkoRXhlY1N0YXRlICpleGVjLCBOU0FycmF5
ICphcnJheSwgUm9vdE9iamVjdCogcm9vdAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IFtzZWxmIF9y
b290T2JqZWN0XS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKICAgICBBU1NFUlQoIWV4
ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIAotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAg
IEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgW3NlbGYgX2ltcF0tPm1l
dGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgoW3NlbGYgX2ltcF0sIGV4ZWMsIGluZGV4LCBjb252ZXJ0
T2JqY1ZhbHVlVG9WYWx1ZShleGVjLCAmdmFsdWUsIE9iamNPYmplY3RUeXBlLCBbc2VsZiBfcm9v
dE9iamVjdF0pLCBmYWxzZSk7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKQEAg
LTUyMyw3ICs1MTUsNyBAQCBzdGF0aWMgdm9pZCBnZXRMaXN0RnJvbU5TQXJyYXkoRXhlY1N0YXRl
ICpleGVjLCBOU0FycmF5ICphcnJheSwgUm9vdE9iamVjdCogcm9vdAogewogICAgIGlmICh2YWx1
ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1
ZSk7Ci0gICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgp
LT5nbG9iYWxEYXRhKCkpOworICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09u
bHkpOwogCiAgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzKCZKU0hUTUxFbGVtZW50OjpzX2lu
Zm8pKSB7CiAgICAgICAgICAgICAvLyBQbHVnaW4gZWxlbWVudHMgY2FjaGUgdGhlIGluc3RhbmNl
IGludGVybmFsbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCmluZGV4IGJjZjU2N2U3NTZjNmMxZDg2YTUxNDhlMDliNzgxMjUxZGE5
NDYyOTkuLmU0NWU3NjJkYjlhYjM2YTcxOGE2YWJlMGRhOTgxNTI2NjVkZGM3MWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBA
IC0yNzQ1LDcgKzI3NDUsNyBAQCBFTkQKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHJldHVybiB0cnVlO1xuXG4iKTsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIFJlZlB0cjwkY2xhc3NOYW1lPiBwcm90ZWN0KHRoaXMpO1xuXG4i
KTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTTG9ja0hvbGRlciBsb2Nr
KG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbERhdGEoKSk7XG5cbiIpOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNP
bmx5KTtcblxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7XG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3M7XG4iKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAKaW5kZXggZTdiYTRjMDY5ZDUzNmI5Yzc3OWU0
MTUyNjFkMjViYTdkNDlkODJmMy4uYWJhZTA0NGU2N2ZlYmRhM2M2MDA1NmU4M2M0NzQ5NDViOGJk
M2E1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwCkBAIC02NSw3ICs2NSw3IEBAIGJvb2wgSlNUZXN0
Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aE5vUGFyYW0oKQogCiAgICAgUmVmUHRyPEpTVGVzdENhbGxi
YWNrPiBwcm90ZWN0KHRoaXMpOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2sobV9kYXRhLT5nbG9i
YWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0
aW9uc09ubHkpOwogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9kYXRhLT5nbG9iYWxPYmplY3Qo
KS0+Z2xvYmFsRXhlYygpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CkBAIC04Miw3
ICs4Miw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aENsYXNzMVBhcmFtKENs
YXNzMSogY2xhc3MxUGFyYW0pCiAKICAgICBSZWZQdHI8SlNUZXN0Q2FsbGJhY2s+IHByb3RlY3Qo
dGhpcyk7CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT5n
bG9iYWxEYXRhKCkpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVj
KCk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKQEAgLTEwMCw3ICsxMDAsNyBAQCBi
b29sIEpTVGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhDbGFzczJQYXJhbShDbGFzczIqIGNsYXNz
MlBhcmFtLCBjb25zdCBTdHJpbmcmCiAKICAgICBSZWZQdHI8SlNUZXN0Q2FsbGJhY2s+IHByb3Rl
Y3QodGhpcyk7CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2RhdGEtPmdsb2JhbE9iamVjdCgp
LT5nbG9iYWxEYXRhKCkpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7
CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxF
eGVjKCk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKQEAgLTExOSw3ICsxMTksNyBA
QCBib29sIEpTVGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhTdHJpbmdMaXN0KFBhc3NSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gbGlzdFBhcmFtKQogCiAgICAgUmVmUHRyPEpTVGVzdENhbGxiYWNrPiBw
cm90ZWN0KHRoaXMpOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2sobV9kYXRhLT5nbG9iYWxPYmpl
Y3QoKS0+Z2xvYmFsRGF0YSgpKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09u
bHkpOwogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+Z2xv
YmFsRXhlYygpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CkBAIC0xMzcsNyArMTM3
LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoQm9vbGVhbihib29sIGJvb2xQ
YXJhbSkKIAogICAgIFJlZlB0cjxKU1Rlc3RDYWxsYmFjaz4gcHJvdGVjdCh0aGlzKTsKIAotICAg
IEpTTG9ja0hvbGRlciBsb2NrKG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbERhdGEoKSk7
CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKICAgICBNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIGJvb2wgSlNUZXN0Q2Fs
bGJhY2s6OmNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzKENsYXNzOCogY2xhc3M4UGFyYW0sIFRo
aXNDbGFzcyoKIAogICAgIFJlZlB0cjxKU1Rlc3RDYWxsYmFjaz4gcHJvdGVjdCh0aGlzKTsKIAot
ICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbERhdGEo
KSk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL05QX2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5j
cHAKaW5kZXggNjFlMzY3OTU2MWE2M2U0ZTNjZjViZTRkMDg5NjcyMzEzN2Y2MzJjNy4uYWVmOTdm
MGM1YjNmOGZkMDE1YzQ0MDFmZjI3MjdiY2UzYWY4Y2FhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
TlBfanNvYmplY3QuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgYm9vbCBfTlBOX0ludm9rZURlZmF1
bHQoTlBQLCBOUE9iamVjdCogbywgY29uc3QgTlBWYXJpYW50KiBhcmdzLCB1aW50MzJfdCBhcmdD
b3UKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAg
ICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOwogICAgICAgICAKICAgICAgICAgLy8gQ2FsbCB0aGUgZnVuY3Rpb24g
b2JqZWN0LgogICAgICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gb2JqLT5pbXA7CkBAIC0yMjUsNyAr
MjI1LDcgQEAgYm9vbCBfTlBOX0ludm9rZShOUFAgbnBwLCBOUE9iamVjdCogbywgTlBJZGVudGlm
aWVyIG1ldGhvZE5hbWUsIGNvbnN0IE5QVmFyaWFudCoKICAgICAgICAgaWYgKCFyb290T2JqZWN0
IHx8ICFyb290T2JqZWN0LT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9i
YWxFeGVjKCk7Ci0gICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgICAgICBKU0xv
Y2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAgICBKU1ZhbHVlIGZ1bmN0aW9u
ID0gb2JqLT5pbXAtPmdldChleGVjLCBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihleGVjLCBp
LT5zdHJpbmcoKSkpOwogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgQ2FsbFR5
cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwpAQCAtMjY0LDcg
KzI2NCw3IEBAIGJvb2wgX05QTl9FdmFsdWF0ZShOUFAgaW5zdGFuY2UsIE5QT2JqZWN0KiBvLCBO
UFN0cmluZyogcywgTlBWYXJpYW50KiB2YXJpYW50KQogICAgICAgICBQbHVnaW5WaWV3OjprZWVw
QWxpdmUoaW5zdGFuY2UpOwogCiAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJvb3RPYmplY3Qt
Pmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIEpTTG9ja0hvbGRlciBsb2Nr
KGV4ZWMpOworICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAg
ICAgICBTdHJpbmcgc2NyaXB0U3RyaW5nID0gY29udmVydE5QU3RyaW5nVG9VVEYxNihzKTsKICAg
ICAgICAgCiAgICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBKU0M6OmV2YWx1YXRlKHJvb3RP
YmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIHJvb3RPYmplY3QtPmdsb2JhbE9i
amVjdCgpLT5nbG9iYWxTY29wZUNoYWluKCksIG1ha2VTb3VyY2Uoc2NyaXB0U3RyaW5nKSwgSlND
OjpKU1ZhbHVlKCkpOwpAQCAtMjkwLDcgKzI5MCw3IEBAIGJvb2wgX05QTl9HZXRQcm9wZXJ0eShO
UFAsIE5QT2JqZWN0KiBvLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBOUFZhcmlhbnQqIHZh
CiAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5n
bG9iYWxFeGVjKCk7CiAgICAgICAgIElkZW50aWZpZXJSZXAqIGkgPSBzdGF0aWNfY2FzdDxJZGVu
dGlmaWVyUmVwKj4ocHJvcGVydHlOYW1lKTsKICAgICAgICAgCi0gICAgICAgIEpTTG9ja0hvbGRl
ciBsb2NrKGV4ZWMpOworICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkp
OwogICAgICAgICBKU1ZhbHVlIHJlc3VsdDsKICAgICAgICAgaWYgKGktPmlzU3RyaW5nKCkpCiAg
ICAgICAgICAgICByZXN1bHQgPSBvYmotPmltcC0+Z2V0KGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJ
ZGVudGlmaWVyKGV4ZWMsIGktPnN0cmluZygpKSk7CkBAIC0zMjIsNyArMzIyLDcgQEAgYm9vbCBf
TlBOX1NldFByb3BlcnR5KE5QUCwgTlBPYmplY3QqIG8sIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5h
bWUsIGNvbnN0IE5QVmFyaWEKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygp
OwotICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICAgICAgSlNMb2NrIGxvY2so
U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgSWRlbnRpZmllclJlcCogaSA9IHN0YXRp
Y19jYXN0PElkZW50aWZpZXJSZXAqPihwcm9wZXJ0eU5hbWUpOwogCiAgICAgICAgIGlmIChpLT5p
c1N0cmluZygpKSB7CkBAIC0zNjMsNyArMzYzLDcgQEAgYm9vbCBfTlBOX1JlbW92ZVByb3BlcnR5
KE5QUCwgTlBPYmplY3QqIG8sIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAotICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICAg
ICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgaWYgKGktPmlz
U3RyaW5nKCkpCiAgICAgICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJv
cGVydHkob2JqLT5pbXAsIGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGV4ZWMsIGkt
PnN0cmluZygpKSk7CiAgICAgICAgIGVsc2UKQEAgLTM4Niw3ICszODYsNyBAQCBib29sIF9OUE5f
SGFzUHJvcGVydHkoTlBQLCBOUE9iamVjdCogbywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkK
IAogICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+
Z2xvYmFsRXhlYygpOwogICAgICAgICBJZGVudGlmaWVyUmVwKiBpID0gc3RhdGljX2Nhc3Q8SWRl
bnRpZmllclJlcCo+KHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4
ZWMpOworICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAg
ICBpZiAoaS0+aXNTdHJpbmcoKSkgewogICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBvYmotPmlt
cC0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnRpZmllckZyb21OUElkZW50aWZpZXIoZXhlYywgaS0+
c3RyaW5nKCkpKTsKICAgICAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CkBAIC00MTgs
NyArNDE4LDcgQEAgYm9vbCBfTlBOX0hhc01ldGhvZChOUFAsIE5QT2JqZWN0KiBvLCBOUElkZW50
aWZpZXIgbWV0aG9kTmFtZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygp
OwotICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICAgICAgSlNMb2NrIGxvY2so
U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgSlNWYWx1ZSBmdW5jID0gb2JqLT5pbXAt
PmdldChleGVjLCBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihleGVjLCBpLT5zdHJpbmcoKSkp
OwogICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwogICAgICAgICByZXR1cm4gIWZ1bmMu
aXNVbmRlZmluZWQoKTsKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBib29sIF9OUE5fRW51bWVyYXRlKE5Q
UCwgTlBPYmplY3QqIG8sIE5QSWRlbnRpZmllcioqIGlkZW50aWZpZXIsIHVpbnQzMl90KiBjb3Vu
dAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICAgICAgRXhlY1N0YXRl
KiBleGVjID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICAg
ICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMo
ZXhlYyk7CiAKICAgICAgICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFt
ZXMob2JqLT5pbXAsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOwpAQCAtNDg0LDcgKzQ4NCw3IEBAIGJvb2wgX05QTl9Db25zdHJ1Y3QoTlBQLCBOUE9iamVj
dCogbywgY29uc3QgTlBWYXJpYW50KiBhcmdzLCB1aW50MzJfdCBhcmdDb3VudCwKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJv
b3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIEpTTG9ja0hv
bGRlciBsb2NrKGV4ZWMpOworICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09u
bHkpOwogICAgICAgICAKICAgICAgICAgLy8gQ2FsbCB0aGUgY29uc3RydWN0b3Igb2JqZWN0Lgog
ICAgICAgICBKU1ZhbHVlIGNvbnN0cnVjdG9yID0gb2JqLT5pbXA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9j
L2NfY2xhc3MuY3BwCmluZGV4IDdjMzdlYTU4MTVjYjgzN2Q3MWQxMGMzOTBhYWQ1Zjk5MmE1ZjQy
NTAuLmVmZDdmNGVkMWRkYTllMzRhMjhiOTUzZTU4OTRhY2Q5NWQyMTAwNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9jL2NfY2xhc3MuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAibnBydW50
aW1lX2ltcGwuaCIKICNpbmNsdWRlIDxydW50aW1lL1Njb3BlQ2hhaW4uaD4KICNpbmNsdWRlIDxy
dW50aW1lL0lkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg+
CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtNDgsNiArNDcsOCBAQCBD
Q2xhc3M6OkNDbGFzcyhOUENsYXNzKiBhQ2xhc3MpCiAKIENDbGFzczo6fkNDbGFzcygpCiB7Cisg
ICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKwogICAgIGRlbGV0ZUFsbFZh
bHVlcyhfbWV0aG9kcyk7CiAgICAgX21ldGhvZHMuY2xlYXIoKTsKIApAQCAtOTAsNyArOTEsNyBA
QCBNZXRob2RMaXN0IENDbGFzczo6bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgYwogICAgIGlmIChfaXNhLT5oYXNNZXRob2QgJiYgX2lz
YS0+aGFzTWV0aG9kKG9iaiwgaWRlbnQpKXsKICAgICAgICAgTWV0aG9kKiBhTWV0aG9kID0gbmV3
IENNZXRob2QoaWRlbnQpOyAvLyBkZWxldGVkIGluIHRoZSBDQ2xhc3MgZGVzdHJ1Y3RvcgogICAg
ICAgICB7Ci0gICAgICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhpbnN0LT5yb290T2JqZWN0KCkt
Pmdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCkpOworICAgICAgICAgICAgSlNMb2NrIGxvY2so
U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgICAgIF9tZXRob2RzLnNldChuYW1lLmlt
cGwoKSwgYU1ldGhvZCk7CiAgICAgICAgIH0KICAgICAgICAgbWV0aG9kTGlzdC5hcHBlbmQoYU1l
dGhvZCk7CkBAIC0xMTMsNyArMTE0LDcgQEAgRmllbGQqIENDbGFzczo6ZmllbGROYW1lZChQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiAgICAgaWYg
KF9pc2EtPmhhc1Byb3BlcnR5ICYmIF9pc2EtPmhhc1Byb3BlcnR5KG9iaiwgaWRlbnQpKXsKICAg
ICAgICAgYUZpZWxkID0gbmV3IENGaWVsZChpZGVudCk7IC8vIGRlbGV0ZWQgaW4gdGhlIENDbGFz
cyBkZXN0cnVjdG9yCiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGlu
c3QtPnJvb3RPYmplY3QoKS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbERhdGEoKSk7CisgICAgICAg
ICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAgICAgICAgX2Zp
ZWxkcy5zZXQobmFtZS5pbXBsKCksIGFGaWVsZCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCmluZGV4IDViOThmNmVlMTk0ZDE1Y2ZmZjI3ZTIy
ZDRmNzdiYTkwMmFlYTRkOTAuLmZhZDM4NmM4OTZiNTA5ZTk1ODQ3Y2FkNGMxNGM3MTAyYjA1OGNh
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCkBAIC03Myw3ICs3Myw3
IEBAIHZvaWQgQ0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIEpTTG9ja0hvbGRl
ciBsb2NrKGV4ZWMpOworICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkp
OwogICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2Vw
dGlvblN0cmluZygpKSk7CiAgICAgfQogCkBAIC0xODIsNyArMTgyLDcgQEAgSlNWYWx1ZSBDSW5z
dGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFJ1bnRpbWVNZXRob2QqIHJ1bnRp
bWVNZXRob2QpCiAgICAgVk9JRF9UT19OUFZBUklBTlQocmVzdWx0VmFyaWFudCk7CiAKICAgICB7
Ci0gICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVjKTsKKyAgICAg
ICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKFNpbGVuY2VBc3NlcnRpb25zT25s
eSk7CiAgICAgICAgIEFTU0VSVChnbG9iYWxFeGNlcHRpb25TdHJpbmcoKS5pc051bGwoKSk7CiAg
ICAgICAgIHJldHZhbCA9IF9vYmplY3QtPl9jbGFzcy0+aW52b2tlKF9vYmplY3QsIGlkZW50LCBj
QXJncy5kYXRhKCksIGNvdW50LCAmcmVzdWx0VmFyaWFudCk7CiAgICAgICAgIG1vdmVHbG9iYWxF
eGNlcHRpb25Ub0V4ZWNTdGF0ZShleGVjKTsKQEAgLTIxNyw3ICsyMTcsNyBAQCBKU1ZhbHVlIENJ
bnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgTlBWYXJp
YW50IHJlc3VsdFZhcmlhbnQ7CiAgICAgVk9JRF9UT19OUFZBUklBTlQocmVzdWx0VmFyaWFudCk7
CiAgICAgewotICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZXhlYyk7
CisgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhTaWxlbmNlQXNzZXJ0
aW9uc09ubHkpOwogICAgICAgICBBU1NFUlQoZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkuaXNOdWxs
KCkpOwogICAgICAgICByZXR2YWwgPSBfb2JqZWN0LT5fY2xhc3MtPmludm9rZURlZmF1bHQoX29i
amVjdCwgY0FyZ3MuZGF0YSgpLCBjb3VudCwgJnJlc3VsdFZhcmlhbnQpOwogICAgICAgICBtb3Zl
R2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoZXhlYyk7CkBAIC0yNTYsNyArMjU2LDcgQEAgSlNW
YWx1ZSBDSW5zdGFuY2U6Omludm9rZUNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MpCiAgICAgTlBWYXJpYW50IHJlc3VsdFZhcmlhbnQ7CiAgICAgVk9JRF9UT19O
UFZBUklBTlQocmVzdWx0VmFyaWFudCk7CiAgICAgewotICAgICAgICBKU0xvY2s6OkRyb3BBbGxM
b2NrcyBkcm9wQWxsTG9ja3MoZXhlYyk7CisgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRy
b3BBbGxMb2NrcyhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAgICBBU1NFUlQoZ2xvYmFs
RXhjZXB0aW9uU3RyaW5nKCkuaXNOdWxsKCkpOwogICAgICAgICByZXR2YWwgPSBfb2JqZWN0LT5f
Y2xhc3MtPmNvbnN0cnVjdChfb2JqZWN0LCBjQXJncy5kYXRhKCksIGNvdW50LCAmcmVzdWx0VmFy
aWFudCk7CiAgICAgICAgIG1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShleGVjKTsKQEAg
LTMxNSw3ICszMTUsNyBAQCB2b2lkIENJbnN0YW5jZTo6Z2V0UHJvcGVydHlOYW1lcyhFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBuYW1lQXJyYXkpCiAgICAgTlBJZGVudGlmaWVy
KiBpZGVudGlmaWVyczsKIAogICAgIHsKLSAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJv
cEFsbExvY2tzKGV4ZWMpOworICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9j
a3MoU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgQVNTRVJUKGdsb2JhbEV4Y2VwdGlv
blN0cmluZygpLmlzTnVsbCgpKTsKICAgICAgICAgYm9vbCBvayA9IF9vYmplY3QtPl9jbGFzcy0+
ZW51bWVyYXRlKF9vYmplY3QsICZpZGVudGlmaWVycywgJmNvdW50KTsKICAgICAgICAgbW92ZUds
b2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY19ydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfcnVu
dGltZS5jcHAKaW5kZXggYTkyY2ZlNTUzMGE4YjRiNDUwZGZiODNlOGVjNGNhMmYzNDUyZjQ1Yy4u
YTg0YWNiYmUzNzk1ZDE0Mjc5MmUwNjVlZWRmYmM1MGExMDA1NmUwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvYy9jX3J1bnRpbWUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIEpTVmFsdWUgQ0ZpZWxkOjp2
YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBpbnN0KSBj
b25zdAogCiAgICAgICAgIGJvb2wgcmVzdWx0OwogICAgICAgICB7Ci0gICAgICAgICAgICBKU0xv
Y2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZXhlYyk7CisgICAgICAgICAgICBKU0xvY2s6
OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAg
ICAgICAgIHJlc3VsdCA9IG9iai0+X2NsYXNzLT5nZXRQcm9wZXJ0eShvYmosIF9maWVsZElkZW50
aWZpZXIsICZwcm9wZXJ0eSk7CiAgICAgICAgICAgICBDSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNl
cHRpb25Ub0V4ZWNTdGF0ZShleGVjKTsKICAgICAgICAgfQpAQCAtNzEsNyArNzEsNyBAQCB2b2lk
IENGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSW5zdGFu
Y2UgKmluc3QsIEpTVmFsdWUgYQogICAgICAgICBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVj
LCBhVmFsdWUsICZ2YXJpYW50KTsKIAogICAgICAgICB7Ci0gICAgICAgICAgICBKU0xvY2s6OkRy
b3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZXhlYyk7CisgICAgICAgICAgICBKU0xvY2s6OkRyb3BB
bGxMb2NrcyBkcm9wQWxsTG9ja3MoU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgICAg
IG9iai0+X2NsYXNzLT5zZXRQcm9wZXJ0eShvYmosIF9maWVsZElkZW50aWZpZXIsICZ2YXJpYW50
KTsKICAgICAgICAgICAgIENJbnN0YW5jZTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRl
KGV4ZWMpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9j
X3V0aWxpdHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcAppbmRl
eCBkYzM3NTVmMjdkNDI0NTM1NmIzMmUzMDQ0MTE2ZjYwMTlhY2VkODYzLi44YTcwYjI3Nzk4MDUx
YWQ0MTJkNjdiNmZhNzI0YmQ1ZGZlNWI5YTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvYy9jX3V0aWxpdHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRp
bGl0eS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIFN0cmluZyBjb252ZXJ0VVRGOFRvVVRG
MTZXaXRoTGF0aW4xRmFsbGJhY2soY29uc3QgTlBVVEY4KiBVVEY4Q2hhcnMsIGludAogLy8gVmFy
aWFudCB2YWx1ZSBtdXN0IGJlIHJlbGVhc2VkIHdpdGggTlBSZWxlYXNlVmFyaWFudFZhbHVlKCkK
IHZvaWQgY29udmVydFZhbHVlVG9OUFZhcmlhbnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZh
bHVlLCBOUFZhcmlhbnQqIHJlc3VsdCkKIHsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
KyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCiAgICAgVk9JRF9UT19O
UFZBUklBTlQoKnJlc3VsdCk7CiAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIGNvbnZlcnRWYWx1
ZVRvTlBWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgTlBWYXJpYW50KiBy
ZXN1bHQpCiAKIEpTVmFsdWUgY29udmVydE5QVmFyaWFudFRvVmFsdWUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBOUFZhcmlhbnQqIHZhcmlhbnQsIFJvb3RPYmplY3QqIHJvb3RPYmplY3QpCiB7Ci0g
ICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKICAgICAKICAgICBOUFZhcmlhbnRUeXBlIHR5cGUgPSB2YXJpYW50LT50eXBl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5t
bSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0Lm1tCmluZGV4IDk4ZjNh
ZWJkZDM4MzMxZTk0MDVmNDQ4ZTM1Zjc2MGM3ODk2NDQ1ZTAuLjlkNDUxMzQyMzRkYjAxM2E0NDll
YjY2MGZmYzk0YzgzNzI5MmQ1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9q
bmkvam5pX2pzb2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pz
b2JqZWN0Lm1tCkBAIC0yODQsNyArMjg0LDcgQEAgam9iamVjdCBKYXZhSlNPYmplY3Q6OmNhbGwo
anN0cmluZyBtZXRob2ROYW1lLCBqb2JqZWN0QXJyYXkgYXJncykgY29uc3QKICAgICAKICAgICAv
LyBMb29rdXAgdGhlIGZ1bmN0aW9uIG9iamVjdC4KICAgICBFeGVjU3RhdGUqIGV4ZWMgPSByb290
T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwotICAgIEpTTG9ja0hvbGRlciBs
b2NrKGV4ZWMpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAg
CiAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKGV4ZWMsIEphdmFTdHJpbmcobWV0aG9kTmFtZSku
aW1wbCgpKTsKICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gX2ltcC0+Z2V0KGV4ZWMsIGlkZW50aWZp
ZXIpOwpAQCAtMzA3LDEyICszMDcsMTIgQEAgam9iamVjdCBKYXZhSlNPYmplY3Q6OmV2YWwoanN0
cmluZyBzY3JpcHQpIGNvbnN0CiB7CiAgICAgTE9HKExpdmVDb25uZWN0LCAiSmF2YUpTT2JqZWN0
OjpldmFsIHNjcmlwdCA9ICVzIiwgSmF2YVN0cmluZyhzY3JpcHQpLnV0ZjgoKSk7CiAKKyAgICBK
U0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAgIAogICAgIFJvb3RPYmplY3Qq
IHJvb3RPYmplY3QgPSB0aGlzLT5yb290T2JqZWN0KCk7CiAgICAgaWYgKCFyb290T2JqZWN0KQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIEpTTG9ja0hvbGRlciBsb2NrKHJvb3RPYmplY3QtPmds
b2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCkpOwotICAgIAogICAgIHJvb3RPYmplY3QtPmdsb2Jh
bE9iamVjdCgpLT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IEpTQzo6ZXZhbHVhdGUocm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKSwgcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFNjb3BlQ2hhaW4o
KSwgbWFrZVNvdXJjZShKYXZhU3RyaW5nKHNjcmlwdCkuaW1wbCgpKSk7CiAgICAgcm9vdE9iamVj
dC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CkBA
IC0zMzAsNyArMzMwLDcgQEAgam9iamVjdCBKYXZhSlNPYmplY3Q6OmdldE1lbWJlcihqc3RyaW5n
IG1lbWJlck5hbWUpIGNvbnN0CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSByb290T2JqZWN0LT5n
bG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwogICAgIAotICAgIEpTTG9ja0hvbGRlciBsb2Nr
KGV4ZWMpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBfaW1wLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCBKYXZhU3RyaW5n
KG1lbWJlck5hbWUpLmltcGwoKSkpOwogCiAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZVRvSk9iamVj
dChyZXN1bHQpOwpAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgSmF2YUpTT2JqZWN0OjpzZXRNZW1i
ZXIoanN0cmluZyBtZW1iZXJOYW1lLCBqb2JqZWN0IHZhbHVlKSBjb25zdAogCiAgICAgRXhlY1N0
YXRlKiBleGVjID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKIAot
ICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3Nl
cnRpb25zT25seSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CiAgICAgX2ltcC0+bWV0aG9k
VGFibGUoKS0+cHV0KF9pbXAsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgSmF2YVN0cmluZyhtZW1i
ZXJOYW1lKS5pbXBsKCkpLCBjb252ZXJ0Sk9iamVjdFRvVmFsdWUoZXhlYywgdmFsdWUpLCBzbG90
KTsKIH0KQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIEphdmFKU09iamVjdDo6cmVtb3ZlTWVtYmVy
KGpzdHJpbmcgbWVtYmVyTmFtZSkgY29uc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXhlY1N0
YXRlKiBleGVjID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAg
ICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0
aW9uc09ubHkpOwogICAgIF9pbXAtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KF9pbXAs
IGV4ZWMsIElkZW50aWZpZXIoZXhlYywgSmF2YVN0cmluZyhtZW1iZXJOYW1lKS5pbXBsKCkpKTsK
IH0KIApAQCAtMzc2LDcgKzM3Niw3IEBAIGpvYmplY3QgSmF2YUpTT2JqZWN0OjpnZXRTbG90KGpp
bnQgaW5kZXgpIGNvbnN0CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSByb290T2JqZWN0LT5nbG9i
YWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7
CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IF9pbXAtPmdldChleGVjLCBpbmRleCk7CiAKICAgICByZXR1cm4gY29udmVydFZhbHVl
VG9KT2JqZWN0KHJlc3VsdCk7CkBAIC0zOTIsNyArMzkyLDcgQEAgdm9pZCBKYXZhSlNPYmplY3Q6
OnNldFNsb3QoamludCBpbmRleCwgam9iamVjdCB2YWx1ZSkgY29uc3QKICAgICAgICAgcmV0dXJu
OwogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBKU0xvY2sgbG9j
ayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIF9pbXAtPm1ldGhvZFRhYmxlKCktPnB1dEJ5
SW5kZXgoX2ltcCwgZXhlYywgKHVuc2lnbmVkKWluZGV4LCBjb252ZXJ0Sk9iamVjdFRvVmFsdWUo
ZXhlYywgdmFsdWUpLCBmYWxzZSk7CiB9CiAKQEAgLTQwNSw5ICs0MDUsOSBAQCBqc3RyaW5nIEph
dmFKU09iamVjdDo6dG9TdHJpbmcoKSBjb25zdAogICAgIGlmICghcm9vdE9iamVjdCkKICAgICAg
ICAgcmV0dXJuIDA7CiAKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwog
ICAgIEpTT2JqZWN0ICp0aGlzT2JqID0gY29uc3RfY2FzdDxKU09iamVjdCo+KF9pbXApOwogICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVj
KCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgCiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGpzdHJpbmc+KGNvbnZlcnRWYWx1ZVRvSlZhbHVlKGV4ZWMsIHJvb3RPYmplY3QsIHRo
aXNPYmosIEphdmFUeXBlT2JqZWN0LCAiamF2YS5sYW5nLlN0cmluZyIpLmwpOwogfQpAQCAtNDYz
LDEzICs0NjMsMTMgQEAgamxvbmcgSmF2YUpTT2JqZWN0OjpjcmVhdGVOYXRpdmUoamxvbmcgbmF0
aXZlSGFuZGxlKQogCiBqb2JqZWN0IEphdmFKU09iamVjdDo6Y29udmVydFZhbHVlVG9KT2JqZWN0
KEpTVmFsdWUgdmFsdWUpIGNvbnN0CiB7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlv
bnNPbmx5KTsKKyAgICAKICAgICBSb290T2JqZWN0KiByb290T2JqZWN0ID0gdGhpcy0+cm9vdE9i
amVjdCgpOwogICAgIGlmICghcm9vdE9iamVjdCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFs
RXhlYygpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgIEpOSUVudiAqZW52ID0g
Z2V0Sk5JRW52KCk7CiAgICAgam9iamVjdCByZXN1bHQgPSAwOwogICAgIApAQCAtNTU0LDcgKzU1
NCw3IEBAIEpTVmFsdWUgSmF2YUpTT2JqZWN0Ojpjb252ZXJ0Sk9iamVjdFRvVmFsdWUoRXhlY1N0
YXRlKiBleGVjLCBqb2JqZWN0IHRoZU9iamVjdCkKICAgICAvLyBmaWd1cmUgMjItNC4KICAgICBq
b2JqZWN0IGNsYXNzT2ZJbnN0YW5jZSA9IGNhbGxKTklNZXRob2Q8am9iamVjdD4odGhlT2JqZWN0
LCAiZ2V0Q2xhc3MiLCAiKClMamF2YS9sYW5nL0NsYXNzOyIpOwogICAgIGlmICghY2xhc3NPZklu
c3RhbmNlKSB7Ci0gICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgICAgICBKU0xv
Y2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAgICByZXR1cm4gSmF2YUluc3Rh
bmNlOjpjcmVhdGUodGhlT2JqZWN0LCBfcm9vdE9iamVjdCktPmNyZWF0ZVJ1bnRpbWVPYmplY3Qo
ZXhlYyk7CiAgICAgfQogCkBAIC01NjMsNyArNTYzLDcgQEAgSlNWYWx1ZSBKYXZhSlNPYmplY3Q6
OmNvbnZlcnRKT2JqZWN0VG9WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGpvYmplY3QgdGhlT2JqZWN0
KQogICAgIC8vIHBvaW50ZXIgYW5kIHN0b3JlcyBpdCBpbiB0aGlzIG9iamVjdCwgc28gdGhhdCBp
dCBjYW4gYmUgcmV0cmlldmVkIGJlbG93LgogICAgIGpzdHJpbmcgY2xhc3NOYW1lID0gKGpzdHJp
bmcpY2FsbEpOSU1ldGhvZDxqb2JqZWN0PihjbGFzc09mSW5zdGFuY2UsICJnZXROYW1lIiwgIigp
TGphdmEvbGFuZy9TdHJpbmc7Iik7CiAgICAgaWYgKCFjbGFzc05hbWUgfHwgKHN0cmNtcChKYXZh
U3RyaW5nKGNsYXNzTmFtZSkudXRmOCgpLCAic3VuLnBsdWdpbi5qYXZhc2NyaXB0LndlYmtpdC5K
U09iamVjdCIpICE9IDApKSB7Ci0gICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAg
ICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAgICByZXR1cm4g
SmF2YUluc3RhbmNlOjpjcmVhdGUodGhlT2JqZWN0LCBfcm9vdE9iamVjdCktPmNyZWF0ZVJ1bnRp
bWVPYmplY3QoZXhlYyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvam5pL2puaV9vYmpjLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qbmlfb2JqYy5t
bQppbmRleCA2YWUxYWU1NjUzMGNiMTg4YWNhOTM0OWNlMTM2MzYwZjhlMDEwMjNiLi45Yzk0M2U4
Mjg1MTlhOTZjMmNhY2ExYjlhOTU3NWJjYTYyOGUzODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvam5pL2puaV9vYmpjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9q
bmkvam5pX29iamMubW0KQEAgLTYyLDcgKzYyLDcgQEAgYm9vbCBKU0M6OkJpbmRpbmdzOjpkaXNw
YXRjaEpOSUNhbGwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCB2b2lkKiB0YXJnZXRBcHBsZXRWaWUK
ICAgICAgICAgLy8gaW1wbGVtZW50ZWQgaW4gV2ViQ29yZSB3aWxsIGd1YXJhbnRlZSB0aGF0IG9u
bHkgYXBwcm9wcmlhdGUgSmF2YVNjcmlwdAogICAgICAgICAvLyBjYW4gcmVmZXJlbmNlIHRoZSBh
cHBsZXQuCiAgICAgICAgIHsKLSAgICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFs
bExvY2tzKGV4ZWMpOworICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9j
a3MoU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgICAgIHJlc3VsdCA9IFt2aWV3IHdl
YlBsdWdJbkNhbGxKYXZhOm9iaiBpc1N0YXRpYzppc1N0YXRpYyByZXR1cm5UeXBlOnJldHVyblR5
cGUgbWV0aG9kOm1ldGhvZElEIGFyZ3VtZW50czphcmdzIGNhbGxpbmdVUkw6bmlsIGV4Y2VwdGlv
bkRlc2NyaXB0aW9uOiZfZXhjZXB0aW9uRGVzY3JpcHRpb25dOwogICAgICAgICB9CiAKQEAgLTcy
LDcgKzcyLDcgQEAgYm9vbCBKU0M6OkJpbmRpbmdzOjpkaXNwYXRjaEpOSUNhbGwoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCB2b2lkKiB0YXJnZXRBcHBsZXRWaWUKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIGVsc2UgaWYgKFt2aWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
d2ViUGx1Z0luQ2FsbEphdmE6bWV0aG9kOnJldHVyblR5cGU6YXJndW1lbnRzOildKSB7Ci0gICAg
ICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVjKTsKKyAgICAgICAgSlNM
b2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAg
ICAgICAgIHJlc3VsdCA9IFt2aWV3IHdlYlBsdWdJbkNhbGxKYXZhOm9iaiBtZXRob2Q6bWV0aG9k
SUQgcmV0dXJuVHlwZTpyZXR1cm5UeXBlIGFyZ3VtZW50czphcmdzXTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2Mv
Sk5JVXRpbGl0eVByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSk5J
VXRpbGl0eVByaXZhdGUuY3BwCmluZGV4IGEzYjJjMmU3ZGZlMjEwMTBkYTM1NmE5ZDYwY2E0ZGUx
MzVlYmYwNzkuLjk4NzJkYThmNWYxOTAzMTZmNTI1MjEyMzQ4MTc5NjEwYjliOWU0MDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0pOSVV0aWxpdHlQcml2YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KTklVdGlsaXR5UHJpdmF0ZS5j
cHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBzdGF0aWMgam9iamVjdCBjb252ZXJ0QXJyYXlJbnN0YW5j
ZVRvSmF2YUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSoganNBcnJheQogCiBqdmFsdWUg
Y29udmVydFZhbHVlVG9KVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBSb290T2JqZWN0KiByb290T2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlLCBKYXZhVHlwZSBqYXZhVHlwZSwgY29uc3QgY2hhciogamF2YUNs
YXNzTmFtZSkKIHsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBKU0xvY2sgbG9j
ayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCiAgICAganZhbHVlIHJlc3VsdDsKICAgICBtZW1z
ZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKGp2YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHAKaW5kZXggMDkyMTg2NzQ5ZjU2NWE4NTllMTM5YWEx
YWEzYzRjYmIzOGIyZWM3OC4uMDhlYzZlNjYxMWU2ODEzYzdiNDVkMmU0ODFlZmM1NDQzZDg4NjFi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlND
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0MuY3Bw
CkBAIC02Miw3ICs2MiwxMCBAQCBKYXZhQ2xhc3M6OkphdmFDbGFzcyhqb2JqZWN0IGFuSW5zdGFu
Y2UpCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1GaWVsZHM7IGkrKykgewogICAgICAgICAg
ICAgam9iamVjdCBhSkZpZWxkID0gZW52LT5HZXRPYmplY3RBcnJheUVsZW1lbnQoKGpvYmplY3RB
cnJheSlmaWVsZHMsIGkpOwogICAgICAgICAgICAgSmF2YUZpZWxkKiBhRmllbGQgPSBuZXcgSmF2
YUZpZWxkKGVudiwgYUpGaWVsZCk7IC8vIGRlbGV0ZWQgaW4gdGhlIEphdmFDbGFzcyBkZXN0cnVj
dG9yCi0gICAgICAgICAgICBtX2ZpZWxkcy5zZXQoYUZpZWxkLT5uYW1lKCkuaW1wbCgpLCBhRmll
bGQpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7CisgICAgICAgICAgICAgICAgbV9maWVsZHMuc2V0KGFGaWVsZC0+bmFt
ZSgpLmltcGwoKSwgYUZpZWxkKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVudi0+RGVs
ZXRlTG9jYWxSZWYoYUpGaWVsZCk7CiAgICAgICAgIH0KICAgICAgICAgZW52LT5EZWxldGVMb2Nh
bFJlZihmaWVsZHMpOwpAQCAtNzQsMTAgKzc3LDE1IEBAIEphdmFDbGFzczo6SmF2YUNsYXNzKGpv
YmplY3QgYW5JbnN0YW5jZSkKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bU1ldGhvZHM7IGkr
KykgewogICAgICAgICAgICAgam9iamVjdCBhSk1ldGhvZCA9IGVudi0+R2V0T2JqZWN0QXJyYXlF
bGVtZW50KChqb2JqZWN0QXJyYXkpbWV0aG9kcywgaSk7CiAgICAgICAgICAgICBKYXZhTWV0aG9k
KiBhTWV0aG9kID0gbmV3IEphdmFNZXRob2QoZW52LCBhSk1ldGhvZCk7IC8vIGRlbGV0ZWQgaW4g
dGhlIEphdmFDbGFzcyBkZXN0cnVjdG9yCi0gICAgICAgICAgICBNZXRob2RMaXN0KiBtZXRob2RM
aXN0ID0gbV9tZXRob2RzLmdldChhTWV0aG9kLT5uYW1lKCkuaW1wbCgpKTsKLSAgICAgICAgICAg
IGlmICghbWV0aG9kTGlzdCkgewotICAgICAgICAgICAgICAgIG1ldGhvZExpc3QgPSBuZXcgTWV0
aG9kTGlzdCgpOwotICAgICAgICAgICAgICAgIG1fbWV0aG9kcy5zZXQoYU1ldGhvZC0+bmFtZSgp
LmltcGwoKSwgbWV0aG9kTGlzdCk7CisgICAgICAgICAgICBNZXRob2RMaXN0KiBtZXRob2RMaXN0
OworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3Nl
cnRpb25zT25seSk7CisKKyAgICAgICAgICAgICAgICBtZXRob2RMaXN0ID0gbV9tZXRob2RzLmdl
dChhTWV0aG9kLT5uYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1ldGhvZExp
c3QpIHsKKyAgICAgICAgICAgICAgICAgICAgbWV0aG9kTGlzdCA9IG5ldyBNZXRob2RMaXN0KCk7
CisgICAgICAgICAgICAgICAgICAgIG1fbWV0aG9kcy5zZXQoYU1ldGhvZC0+bmFtZSgpLmltcGwo
KSwgbWV0aG9kTGlzdCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgbWV0aG9kTGlzdC0+YXBwZW5kKGFNZXRob2QpOwogICAgICAgICAgICAgZW52LT5EZWxl
dGVMb2NhbFJlZihhSk1ldGhvZCk7CkBAIC05Miw2ICsxMDAsOCBAQCBKYXZhQ2xhc3M6On5KYXZh
Q2xhc3MoKQogewogICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8Y2hhcio+KG1fbmFtZSkpOwogCisg
ICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKwogICAgIGRlbGV0ZUFsbFZh
bHVlcyhtX2ZpZWxkcyk7CiAgICAgbV9maWVsZHMuY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHAKaW5kZXggMTVkZmZhNWFk
NTY0MjQ5NjEwNjA3Y2VjMDhjMzE4ZTU1OGQwODNmNS4uN2QyYjAyZmJlYzEzNWZmNmY3M2M0MTIw
YzE5M2JiMjQzZTA3ZjcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9q
c2MvSmF2YUluc3RhbmNlSlNDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pz
Yy9KYXZhSW5zdGFuY2VKU0MuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIENsYXNzKiBKYXZhSW5zdGFu
Y2U6OmdldENsYXNzKCkgY29uc3QKIAogSlNWYWx1ZSBKYXZhSW5zdGFuY2U6OnN0cmluZ1ZhbHVl
KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
KyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCiAgICAganN0cmluZyBz
dHJpbmdWYWx1ZSA9IChqc3RyaW5nKWNhbGxKTklNZXRob2Q8am9iamVjdD4obV9pbnN0YW5jZS0+
aW5zdGFuY2UoKSwgInRvU3RyaW5nIiwgIigpTGphdmEvbGFuZy9TdHJpbmc7Iik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFNZXRob2RKU0MuY3BwIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YU1ldGhvZEpTQy5jcHAKaW5kZXggMTFh
OTAyZjcyMjgwMjIzNmEwNDk0MjFlMzFhYzZkYzFiMGJkNmU4MS4uNWUxOGVhOGJhMTczN2YwZDNm
ZjBhYjk5YWUwZTAwZDhlZjA3NTgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2puaS9qc2MvSmF2YU1ldGhvZEpTQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pu
aS9qc2MvSmF2YU1ldGhvZEpTQy5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgSmF2YU1ldGhvZDo6fkph
dmFNZXRob2QoKQogLy8gd2UgZ2V0ICcuJyBiZXR3ZWVuIGNvbXBvbmVudHMgZnJvbSB0aGUgcmVm
bGVjdGlvbiBBUEkuCiBzdGF0aWMgdm9pZCBhcHBlbmRDbGFzc05hbWUoU3RyaW5nQnVpbGRlciYg
YnVpbGRlciwgY29uc3QgY2hhciogY2xhc3NOYW1lKQogewotICAgIEFTU0VSVChKU0M6OkpTR2xv
YmFsRGF0YTo6c2hhcmVkSW5zdGFuY2UoKS5hcGlMb2NrKCkuY3VycmVudFRocmVhZElzSG9sZGlu
Z0xvY2soKSk7CisgICAgQVNTRVJUKEpTTG9jazo6bG9ja0NvdW50KCkgPiAwKTsKIAogICAgIGNo
YXIqIGMgPSBmYXN0U3RyRHVwKGNsYXNzTmFtZSk7CiAKQEAgLTExMSw2ICsxMTEsOCBAQCBzdGF0
aWMgdm9pZCBhcHBlbmRDbGFzc05hbWUoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgY2hh
ciogY2xhc3NOYW1lKQogY29uc3QgY2hhciogSmF2YU1ldGhvZDo6c2lnbmF0dXJlKCkgY29uc3QK
IHsKICAgICBpZiAoIW1fc2lnbmF0dXJlKSB7CisgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7CisKICAgICAgICAgU3RyaW5nQnVpbGRlciBzaWduYXR1cmVCdWlsZGVy
OwogICAgICAgICBzaWduYXR1cmVCdWlsZGVyLmFwcGVuZCgnKCcpOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IG1fcGFyYW1ldGVycy5zaXplKCk7IGkrKykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVN0cmluZ0pTQy5oIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVN0cmluZ0pTQy5oCmluZGV4IDFlMTgwM2Fh
MTQ0YTAwNGJhOTZjZTJiYzlkZDc3NDE5ZmNiNDMzZjkuLjBmOGI3NzljMDljYzg3Nzg1ZDY3NmIx
MmFlNTQ5NzUzNjA5OWQxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkv
anNjL0phdmFTdHJpbmdKU0MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9K
YXZhU3RyaW5nSlNDLmgKQEAgLTI4LDcgKzI4LDYgQEAKICNkZWZpbmUgSmF2YVN0cmluZ0pTQ19o
CiAKICNpbmNsdWRlICJKTklVdGlsaXR5LmgiCi0jaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgi
CiAjaW5jbHVkZSAiSmF2YUluc3RhbmNlSlNDLmgiCiAKICNpbmNsdWRlIDxydW50aW1lL0pTTG9j
ay5oPgpAQCAtNTMsMjAgKzUyLDIwIEBAIHB1YmxpYzoKIAogICAgIEphdmFTdHJpbmcoKQogICAg
IHsKLSAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpj
b21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRp
b25zT25seSk7CiAgICAgICAgIG1faW1wbCA9IFVTdHJpbmcoKS5pbXBsKCk7CiAgICAgfQogCiAg
ICAgfkphdmFTdHJpbmcoKQogICAgIHsKLSAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soV2ViQ29y
ZTo6SlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgICAgIEpTTG9j
ayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgICAgIG1faW1wbCA9IDA7CiAgICAg
fQogCiAgICAgY29uc3QgY2hhciogdXRmOCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIW1f
dXRmOFN0cmluZy5kYXRhKCkpIHsKLSAgICAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKFdlYkNv
cmU6OkpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAgICAgICAgICAg
SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgICAgIG1fdXRmOFN0
cmluZyA9IFVTdHJpbmcobV9pbXBsKS51dGY4KCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IG1fdXRmOFN0cmluZy5kYXRhKCk7CkBAIC04MCw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGludCBzaXplID0gZS0+R2V0U3RyaW5nTGVuZ3RoKHMpOwogICAgICAgICBjb25zdCBqY2hhciog
dWMgPSBnZXRVQ2hhcmFjdGVyc0Zyb21KU3RyaW5nSW5FbnYoZSwgcyk7CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6Y29t
bW9uSlNHbG9iYWxEYXRhKCkpOworICAgICAgICAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKICAgICAgICAgICAgIG1faW1wbCA9IFVTdHJpbmcocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVQ2hhcio+KHVjKSwgc2l6ZSkuaW1wbCgpOwogICAgICAgICB9CiAgICAgICAgIHJl
bGVhc2VVQ2hhcmFjdGVyc0ZvckpTdHJpbmdJbkVudihlLCBzLCB1Yyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvanNjL0JyaWRnZUpTQy5jcHAKaW5kZXggNGNjODAwMzRlOWFjMzNkODk5OTQ3YTM4NGVl
ZGUxYjAxYWJhNmUwMC4uNmI4MWE5YmM4OWU3YWI0MjIzYjUzMjQwN2E4NTgxMmE3MWNlOGUwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcApAQCAtOTIsNyArOTIsNyBA
QCBKU09iamVjdCogSW5zdGFuY2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVj
KQogICAgIGlmIChSdW50aW1lT2JqZWN0KiBleGlzdGluZ09iamVjdCA9IG1fcnVudGltZU9iamVj
dC5nZXQoKSkKICAgICAgICAgcmV0dXJuIGV4aXN0aW5nT2JqZWN0OwogCi0gICAgSlNMb2NrSG9s
ZGVyIGxvY2soZXhlYyk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsK
ICAgICBSdW50aW1lT2JqZWN0KiBuZXdPYmplY3QgPSBuZXdSdW50aW1lT2JqZWN0KGV4ZWMpOwog
ICAgIG1fcnVudGltZU9iamVjdCA9IFBhc3NXZWFrPFJ1bnRpbWVPYmplY3Q+KG5ld09iamVjdCk7
CiAgICAgbV9yb290T2JqZWN0LT5hZGRSdW50aW1lT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
bmV3T2JqZWN0KTsKQEAgLTEwMSw3ICsxMDEsNyBAQCBKU09iamVjdCogSW5zdGFuY2U6OmNyZWF0
ZVJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogCiBSdW50aW1lT2JqZWN0KiBJbnN0YW5j
ZTo6bmV3UnVudGltZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNMb2NrSG9sZGVy
IGxvY2soZXhlYyk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAog
ICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlw
ZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAvLyBXZSBuZWVkIHRvIHBhc3Mg
aW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCmluZGV4IDhhOTdiN2RlOGJkMTBhYzMzMjIwMGNiNjU5
YTJkMTM1MzRkNzQ0ZDEuLjg4YzM1OWUyMDBiYTZkMGY2ZGIxOTg4ZmQzOWNhYmM3ZWQwY2EzMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQpAQCAtOTIs
NyArOTIsNyBAQCB2b2lkIE9iamNJbnN0YW5jZTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0
YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiAKICAgICBpZiAoIXNfZXhjZXB0aW9uRW52aXJv
bm1lbnQgfHwgc19leGNlcHRpb25FbnZpcm9ubWVudCA9PSBleGVjLT5keW5hbWljR2xvYmFsT2Jq
ZWN0KCkpIHsKLSAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgICAgIEpTTG9j
ayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgICAgIHRocm93RXJyb3IoZXhlYywg
c19leGNlcHRpb24pOwogICAgIH0KIApAQCAtMjM5LDcgKzIzOSw3IEBAIEpTVmFsdWUgT2JqY0lu
c3RhbmNlOjppbnZva2VPYmpjTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgT2JqY01ldGhvZCogbWV0
aG9kKQogewogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNVbmRlZmluZWQoKTsKICAgICAKLSAgICBK
U0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZXhlYyk7IC8vIENhbid0IHB1dCB0aGlz
IGluc2lkZSB0aGUgQHRyeSBzY29wZSBiZWNhdXNlIGl0IHVud2luZHMgaW5jb3JyZWN0bHkuCisg
ICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKFNpbGVuY2VBc3NlcnRpb25zT25s
eSk7IC8vIENhbid0IHB1dCB0aGlzIGluc2lkZSB0aGUgQHRyeSBzY29wZSBiZWNhdXNlIGl0IHVu
d2luZHMgaW5jb3JyZWN0bHkuCiAKICAgICBzZXRHbG9iYWxFeGNlcHRpb24obmlsKTsKICAgICAK
QEAgLTM1NCw3ICszNTQsNyBAQCBKU1ZhbHVlIE9iamNJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1l
dGhvZChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1VuZGVmaW5l
ZCgpOwogCi0gICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGV4ZWMpOyAvLyBD
YW4ndCBwdXQgdGhpcyBpbnNpZGUgdGhlIEB0cnkgc2NvcGUgYmVjYXVzZSBpdCB1bndpbmRzIGlu
Y29ycmVjdGx5LgorICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOyAvLyBDYW4ndCBwdXQgdGhpcyBpbnNpZGUgdGhlIEB0cnkgc2NvcGUg
YmVjYXVzZSBpdCB1bndpbmRzIGluY29ycmVjdGx5LgogICAgIHNldEdsb2JhbEV4Y2VwdGlvbihu
aWwpOwogICAgIAogQHRyeSB7CkBAIC00MTEsNyArNDExLDcgQEAgYm9vbCBPYmpjSW5zdGFuY2U6
OnNldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXIKICAgICBpZiAoIVt0YXJnZXRPYmplY3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihzZXRWYWx1ZTpmb3JVbmRlZmluZWRLZXk6KV0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVjKTsgLy8gQ2FuJ3QgcHV0
IHRoaXMgaW5zaWRlIHRoZSBAdHJ5IHNjb3BlIGJlY2F1c2UgaXQgdW53aW5kcyBpbmNvcnJlY3Rs
eS4KKyAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoU2lsZW5jZUFzc2VydGlv
bnNPbmx5KTsgLy8gQ2FuJ3QgcHV0IHRoaXMgaW5zaWRlIHRoZSBAdHJ5IHNjb3BlIGJlY2F1c2Ug
aXQgdW53aW5kcyBpbmNvcnJlY3RseS4KIAogICAgIC8vIFRoaXMgY2hlY2sgaXMgbm90IHJlYWxs
eSBuZWNlc3NhcnkgYmVjYXVzZSBOU09iamVjdCBpbXBsZW1lbnRzCiAgICAgLy8gc2V0VmFsdWU6
Zm9yVW5kZWZpbmVkS2V5OiwgYW5kIHVuZm9ydHVuYXRlbHkgdGhlIGRlZmF1bHQgaW1wbGVtZW50
YXRpb24KQEAgLTQ0Myw3ICs0NDMsNyBAQCBKU1ZhbHVlIE9iamNJbnN0YW5jZTo6Z2V0VmFsdWVP
ZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBybwogICAgIAog
ICAgIGlkIHRhcmdldE9iamVjdCA9IGdldE9iamVjdCgpOwogCi0gICAgSlNMb2NrOjpEcm9wQWxs
TG9ja3MgZHJvcEFsbExvY2tzKGV4ZWMpOyAvLyBDYW4ndCBwdXQgdGhpcyBpbnNpZGUgdGhlIEB0
cnkgc2NvcGUgYmVjYXVzZSBpdCB1bndpbmRzIGluY29ycmVjdGx5LgorICAgIEpTTG9jazo6RHJv
cEFsbExvY2tzIGRyb3BBbGxMb2NrcyhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOyAvLyBDYW4ndCBw
dXQgdGhpcyBpbnNpZGUgdGhlIEB0cnkgc2NvcGUgYmVjYXVzZSBpdCB1bndpbmRzIGluY29ycmVj
dGx5LgogCiAgICAgLy8gVGhpcyBjaGVjayBpcyBub3QgcmVhbGx5IG5lY2Vzc2FyeSBiZWNhdXNl
IE5TT2JqZWN0IGltcGxlbWVudHMKICAgICAvLyB2YWx1ZUZvclVuZGVmaW5lZEtleTosIGFuZCB1
bmZvcnR1bmF0ZWx5IHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggMzM1NjY4ZWM2MzVhZjE3NTc2MzkxYzE1
YjEzYmY2M2VmYTQ5MzgxYS4uM2ZhNzk5NDE3MjA2ODRkZjBkMjM1NTY4YTBkY2M2NGU5NjlhZTBh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAtOTIs
MTggKzkyLDE5IEBAIEpTVmFsdWUgT2JqY0ZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBpbnN0YW5jZSkKICAgICAKICAgICBpZCB0YXJnZXRP
YmplY3QgPSAoc3RhdGljX2Nhc3Q8Y29uc3QgT2JqY0luc3RhbmNlKj4oaW5zdGFuY2UpKS0+Z2V0
T2JqZWN0KCk7CiAKLSAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZXhlYyk7
IC8vIENhbid0IHB1dCB0aGlzIGluc2lkZSB0aGUgQHRyeSBzY29wZSBiZWNhdXNlIGl0IHVud2lu
ZHMgaW5jb3JyZWN0bHkuCisgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKFNp
bGVuY2VBc3NlcnRpb25zT25seSk7IC8vIENhbid0IHB1dCB0aGlzIGluc2lkZSB0aGUgQHRyeSBz
Y29wZSBiZWNhdXNlIGl0IHVud2luZHMgaW5jb3JyZWN0bHkuCiAKICAgICBAdHJ5IHsKICAgICAg
ICAgaWYgKGlkIG9iamNWYWx1ZSA9IFt0YXJnZXRPYmplY3QgdmFsdWVGb3JLZXk6KE5TU3RyaW5n
ICopX25hbWUuZ2V0KCldKQogICAgICAgICAgICAgcmVzdWx0ID0gY29udmVydE9iamNWYWx1ZVRv
VmFsdWUoZXhlYywgJm9iamNWYWx1ZSwgT2JqY09iamVjdFR5cGUsIGluc3RhbmNlLT5yb290T2Jq
ZWN0KCkpOwogICAgICAgICB7Ci0gICAgICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
KyAgICAgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgICAg
ICAgICBPYmpjSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShleGVjKTsK
ICAgICAgICAgfQogICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewot
ICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICAgICAgSlNMb2NrOjpsb2NrKFNp
bGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgICAgIHRocm93RXJyb3IoZXhlYywgW2xvY2FsRXhj
ZXB0aW9uIHJlYXNvbl0pOworICAgICAgICBKU0xvY2s6OnVubG9jayhTaWxlbmNlQXNzZXJ0aW9u
c09ubHkpOwogICAgIH0KIAogICAgIC8vIFdvcmsgYXJvdW5kIHByb2JsZW0gaW4gc29tZSB2ZXJz
aW9ucyBvZiBHQ0Mgd2hlcmUgcmVzdWx0IGdldHMgbWFya2VkIHZvbGF0aWxlIGFuZApAQCAtMTI0
LDE3ICsxMjUsMTggQEAgdm9pZCBPYmpjRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBpbnN0YW5jZSwgSlMKICAgICBpZCB0YXJnZXRPYmpl
Y3QgPSAoc3RhdGljX2Nhc3Q8Y29uc3QgT2JqY0luc3RhbmNlKj4oaW5zdGFuY2UpKS0+Z2V0T2Jq
ZWN0KCk7CiAgICAgaWQgdmFsdWUgPSBjb252ZXJ0VmFsdWVUb09iamNPYmplY3QoZXhlYywgYVZh
bHVlKTsKIAotICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVjKTsgLy8g
Q2FuJ3QgcHV0IHRoaXMgaW5zaWRlIHRoZSBAdHJ5IHNjb3BlIGJlY2F1c2UgaXQgdW53aW5kcyBp
bmNvcnJlY3RseS4KKyAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoU2lsZW5j
ZUFzc2VydGlvbnNPbmx5KTsgLy8gQ2FuJ3QgcHV0IHRoaXMgaW5zaWRlIHRoZSBAdHJ5IHNjb3Bl
IGJlY2F1c2UgaXQgdW53aW5kcyBpbmNvcnJlY3RseS4KIAogICAgIEB0cnkgewogICAgICAgICBb
dGFyZ2V0T2JqZWN0IHNldFZhbHVlOnZhbHVlIGZvcktleTooTlNTdHJpbmcgKilfbmFtZS5nZXQo
KV07CiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAg
ICAgICAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgICAg
IE9iamNJbnN0YW5jZTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKGV4ZWMpOwogICAg
ICAgICB9CiAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0aW9uKSB7Ci0gICAg
ICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgICAgICBKU0xvY2s6OmxvY2soU2lsZW5j
ZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBbbG9jYWxFeGNlcHRp
b24gcmVhc29uXSk7CisgICAgICAgIEpTTG9jazo6dW5sb2NrKFNpbGVuY2VBc3NlcnRpb25zT25s
eSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3V0aWxpdHkubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHku
bW0KaW5kZXggYjYyZTNkZjYwODBmYWNlNjdmZjE1ZjkxMjA4ZTUzOTk3MDhlODIwYS4uOTk5Zjcz
MjE3OTE0Mzg5YmY5OTYxYzA1YmU4Nzg5NzllMzhmNWVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQpAQCAtODYsNyArODYsNyBAQCBPYmpjVmFsdWUgY29u
dmVydFZhbHVlVG9PYmpjVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBPYmpj
VmFsdWVUeXBlCiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBPYmpjT2JqZWN0
VHlwZTogewotICAgICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgICAgICAg
ICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCAqb3JpZ2luR2xvYmFsT2JqZWN0ID0gZXhlYy0+ZHluYW1p
Y0dsb2JhbE9iamVjdCgpOwogICAgICAgICAgICAgUm9vdE9iamVjdCogb3JpZ2luUm9vdE9iamVj
dCA9IGZpbmRSb290T2JqZWN0KG9yaWdpbkdsb2JhbE9iamVjdCk7CkBAIC0xNDYsNyArMTQ2LDcg
QEAgT2JqY1ZhbHVlIGNvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSwgT2JqY1ZhbHVlVHlwZQogCiBKU1ZhbHVlIGNvbnZlcnROU1N0cmluZ1RvU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYywgTlNTdHJpbmcgKm5zc3RyaW5nKQogewotICAgIEpTTG9ja0hv
bGRlciBsb2NrKGV4ZWMpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7
CiAgICAgCiAgICAgdW5pY2hhciAqY2hhcnM7CiAgICAgdW5zaWduZWQgaW50IGxlbmd0aCA9IFtu
c3N0cmluZyBsZW5ndGhdOwpAQCAtMTc4LDcgKzE3OCw3IEBAIEpTVmFsdWUgY29udmVydE5TU3Ry
aW5nVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBOU1N0cmluZyAqbnNzdHJpbmcpCiAqLwogSlNW
YWx1ZSBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIHZvaWQqIGJ1ZmZl
ciwgT2JqY1ZhbHVlVHlwZSB0eXBlLCBSb290T2JqZWN0KiByb290T2JqZWN0KQogewotICAgIEpT
TG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25z
T25seSk7CiAgICAgCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgT2JqY09iamVj
dFR5cGU6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5j
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCmluZGV4IDZi
NWU2YTc1YTQ5NGU2Nzk5ZDkzMTU2ZTIyYjYxZGJlMzIwYTdjYTUuLmUxZmVkYzhiMmE0NjAwMWJk
OGUyZjYwMzU4OTk2MWZlMTY2MTc0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9xdC9xdF9pbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2lu
c3RhbmNlLmNwcApAQCAtMjIsNyArMjIsNiBAQAogCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIk9i
amVjdFByb3RvdHlwZS5oIgpAQCAtOTMsNyArOTIsNyBAQCBRdEluc3RhbmNlOjpRdEluc3RhbmNl
KFFPYmplY3QqIG8sIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCwgVmFsdWVPd25l
cgogCiBRdEluc3RhbmNlOjp+UXRJbnN0YW5jZSgpCiB7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2so
V2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgSlNM
b2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAgIGNhY2hlZEluc3RhbmNlcy5y
ZW1vdmUobV9oYXNoa2V5KTsKIApAQCAtMTIwLDcgKzExOSw3IEBAIFF0SW5zdGFuY2U6On5RdElu
c3RhbmNlKCkKIAogUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBRdEluc3RhbmNlOjpnZXRRdEluc3Rh
bmNlKFFPYmplY3QqIG8sIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCwgVmFsdWVP
d25lcnNoaXAgb3duZXJzaGlwKQogewotICAgIEpTTG9ja0hvbGRlciBsb2NrKFdlYkNvcmU6OkpT
RE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAgIEpTTG9jayBsb2NrKFNp
bGVuY2VBc3NlcnRpb25zT25seSk7CiAKICAgICBmb3JlYWNoIChRdEluc3RhbmNlKiBpbnN0YW5j
ZSwgY2FjaGVkSW5zdGFuY2VzLnZhbHVlcyhvKSkKICAgICAgICAgaWYgKGluc3RhbmNlLT5yb290
T2JqZWN0KCkgPT0gcm9vdE9iamVjdCkgewpAQCAtMTgxLDcgKzE4MCw3IEBAIENsYXNzKiBRdElu
c3RhbmNlOjpnZXRDbGFzcygpIGNvbnN0CiAKIFJ1bnRpbWVPYmplY3QqIFF0SW5zdGFuY2U6Om5l
d1J1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTTG9ja0hvbGRlciBsb2Nr
KGV4ZWMpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgbV9t
ZXRob2RzLmNsZWFyKCk7CiAgICAgcmV0dXJuIFF0UnVudGltZU9iamVjdDo6Y3JlYXRlKGV4ZWMs
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAKaW5kZXggYjBlNWY2MmY5OWU0M2VhYmU0
MzUzNDYxMDZiYjlhNGI1YjkyNWExMS4uYzAwZmI0OTQ1ODYzNjI2OTYwYTEzMGU5YmVmMDQ1OGY5
Y2UzOGZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1
bnRpbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1l
LmNwcApAQCAtNDIwLDcgKzQyMCw3IEBAIFJ1bnRpbWVPYmplY3QqIFF0UGl4bWFwSW5zdGFuY2U6
Om5ld1J1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogCiBKU09iamVjdCogUXRQaXhtYXBJ
bnN0YW5jZTo6Y3JlYXRlUGl4bWFwUnVudGltZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFBhc3NS
ZWZQdHI8Um9vdE9iamVjdD4gcm9vdCwgY29uc3QgUVZhcmlhbnQmIGRhdGEpCiB7Ci0gICAgSlNM
b2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNP
bmx5KTsKICAgICBSZWZQdHI8UXRQaXhtYXBJbnN0YW5jZT4gaW5zdGFuY2UgPSBhZG9wdFJlZihu
ZXcgUXRQaXhtYXBJbnN0YW5jZShyb290LCBkYXRhKSk7CiAgICAgcmV0dXJuIGluc3RhbmNlLT5j
cmVhdGVSdW50aW1lT2JqZWN0KGV4ZWMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1
bnRpbWUuY3BwCmluZGV4IDA0MGQ1MWZjYmM1YTQyMDA4MzdjYzlkOGEzZTlkODk3NzlhNWJhZGQu
LjExZTJlOWMwZGZhNjVlYmRhYmNkYmRiYTE3NjdhNjhiZmQ4MDZkMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKQEAgLTIzMCw3ICsyMzAsNyBAQCBRVmFyaWFudCBj
b252ZXJ0VmFsdWVUb1FWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgUU1l
dGFUeXBlOjpUeXBlCiAgICAgICAgIHJldHVybiBRVmFyaWFudCgpOwogICAgIH0KIAotICAgIEpT
TG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25z
T25seSk7CiAgICAgSlNSZWFsVHlwZSB0eXBlID0gdmFsdWVSZWFsVHlwZShleGVjLCB2YWx1ZSk7
CiAgICAgaWYgKGhpbnQgPT0gUU1ldGFUeXBlOjpWb2lkKSB7CiAgICAgICAgIHN3aXRjaCh0eXBl
KSB7CkBAIC04MjQsNyArODI0LDcgQEAgSlNWYWx1ZSBjb252ZXJ0UVZhcmlhbnRUb1ZhbHVlKEV4
ZWNTdGF0ZSogZXhlYywgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290LCBjb24KICAgICAgICAg
cmV0dXJuIGpzTnVsbCgpOwogICAgIH0KIAotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwor
ICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKICAgICBpZiAodHlwZSA9
PSBRTWV0YVR5cGU6OkJvb2wpCiAgICAgICAgIHJldHVybiBqc0Jvb2xlYW4odmFyaWFudC50b0Jv
b2woKSk7CkBAIC0xNDIwLDcgKzE0MjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBRdFJ1bnRpbWVNZXRh
TWV0aG9kOjpjYWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIC8vIFdlIGhhdmUgdG8gcGljayBhIG1ldGhvZCB0
aGF0IG1hdGNoZXMuLgotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIEpTTG9jayBs
b2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKICAgICBRT2JqZWN0ICpvYmogPSBkLT5tX2lu
c3RhbmNlLT5nZXRPYmplY3QoKTsKICAgICBpZiAob2JqKSB7CkBAIC0xNTYxLDcgKzE1NjEsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpjYWxsKEV4ZWNTdGF0
ZSogZXhlYykKIHsKICAgICBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kRGF0YSogZCA9IHN0YXRp
Y19jYXN0PFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QgKj4oZXhlYy0+Y2FsbGVlKCkpLT5kX2Z1
bmMoKTsKIAotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIEpTTG9jayBsb2NrKFNp
bGVuY2VBc3NlcnRpb25zT25seSk7CiAKICAgICBRT2JqZWN0KiBzZW5kZXIgPSBkLT5tX2luc3Rh
bmNlLT5nZXRPYmplY3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0
L3F0X3J1bnRpbWVfcXQ0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1l
X3F0NC5jcHAKaW5kZXggOTY4MmYxNGVjMzFhYzYwOWI5NDkwZDRiZmYxMDNmZjZjZWRmZmEyYy4u
NzM1OTVmMDU0MTAyYzA2NDI0MjQ1MWVjYmI3MmVhNDI3MTlmMzkzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWVfcXQ0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfcnVudGltZV9xdDQuY3BwCkBAIC0yMzAsNyArMjMwLDcgQEAgUVZh
cmlhbnQgY29udmVydFZhbHVlVG9RVmFyaWFudChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUsIFFNZXRhVHlwZTo6VHlwZQogICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsKICAgICB9CiAK
LSAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNz
ZXJ0aW9uc09ubHkpOwogICAgIEpTUmVhbFR5cGUgdHlwZSA9IHZhbHVlUmVhbFR5cGUoZXhlYywg
dmFsdWUpOwogICAgIGlmIChoaW50ID09IFFNZXRhVHlwZTo6Vm9pZCkgewogICAgICAgICBzd2l0
Y2godHlwZSkgewpAQCAtODI0LDcgKzgyNCw3IEBAIEpTVmFsdWUgY29udmVydFFWYXJpYW50VG9W
YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdCwgY29uCiAg
ICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICB9CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhl
eGVjKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCiAgICAgaWYg
KHR5cGUgPT0gUU1ldGFUeXBlOjpCb29sKQogICAgICAgICByZXR1cm4ganNCb29sZWFuKHZhcmlh
bnQudG9Cb29sKCkpOwpAQCAtMTQyOSw3ICsxNDI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgUXRSdW50
aW1lTWV0YU1ldGhvZDo6Y2FsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICAvLyBXZSBoYXZlIHRvIHBpY2sgYSBt
ZXRob2QgdGhhdCBtYXRjaGVzLi4KLSAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBK
U0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCiAgICAgUU9iamVjdCAqb2JqID0g
ZC0+bV9pbnN0YW5jZS0+Z2V0T2JqZWN0KCk7CiAgICAgaWYgKG9iaikgewpAQCAtMTU3MCw3ICsx
NTcwLDcgQEAgRW5jb2RlZEpTVmFsdWUgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Y2FsbChF
eGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZERhdGEqIGQg
PSBzdGF0aWNfY2FzdDxRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kICo+KGV4ZWMtPmNhbGxlZSgp
KS0+ZF9mdW5jKCk7CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBKU0xvY2sg
bG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCiAgICAgUU9iamVjdCogc2VuZGVyID0gZC0+
bV9pbnN0YW5jZS0+Z2V0T2JqZWN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHAKaW5kZXggMDczYWZhMjE4ZmY5YjkzYjRmYjIyM2VmZjE5ZDc3NmYzOThkNzMw
Yy4uMDYyMzE2YWZhOWNlYmFlZGUzYWFmZGE4YmY0NDlmMWFmYmVkMjg5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTU1MSw3ICs1NTEsNyBAQCB2b2lk
IEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0CiAgICAgbV9jb250
ZXh0U3RhdGVTYXZlciA9IGFkb3B0UHRyKG5ldyBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyKCpt
X2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpKTsKIAogI2lmIFVTRShKU0MpCi0gICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9jayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbERhdGEoKSk7Cisg
ICAgSlNDOjpKU0xvY2sgbG9jayhKU0M6OlNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgc2l6
ZV90IG51bUJ5dGVzID0gNCAqIG1faW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpLndpZHRoKCkg
KiBtX2ltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKS5oZWlnaHQoKTsKICAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmdsb2JhbERhdGEoKS0+aGVhcC5yZXBvcnRFeHRyYU1lbW9yeUNvc3Qo
bnVtQnl0ZXMpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5jcHAK
aW5kZXggOWJmMDEzZDViN2I5ODg4ZmZkM2U4ZTM4YjU4MDliNjhjYWM3MmI1OS4uNzdlZTFlN2Q4
YzU5ZGJjMWIwNWJiMjRhOTIxMjhjZTQ0MjEwODgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlTG9hZGVyLmNwcApAQCAtODEsOCArODEsOCBAQCB2b2lkIEhUTUxJbWFnZUxvYWRlcjo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQogI2lmIFVTRShKU0MpCiAgICAgaWYgKCFs
b2FkRXJyb3IpIHsKICAgICAgICAgaWYgKCFlbGVtLT5pbkRvY3VtZW50KCkpIHsKKyAgICAgICAg
ICAgIEpTQzo6SlNMb2NrIGxvY2soSlNDOjpTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAg
ICAgICAgSlNDOjpKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBKU0RPTVdpbmRvd0Jhc2U6OmNv
bW1vbkpTR2xvYmFsRGF0YSgpOwotICAgICAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhn
bG9iYWxEYXRhKTsKICAgICAgICAgICAgIGdsb2JhbERhdGEtPmhlYXAucmVwb3J0RXh0cmFNZW1v
cnlDb3N0KGNhY2hlZEltYWdlLT5lbmNvZGVkU2l6ZSgpKTsKICAgICAgICAgfQogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDBkNjg1N2YyNWM0Yzk4ODY0NmFi
MTA4NTBiNDM1NzA3ZThiOTJhYWMuLmQzNzU3M2U2N2M2OGE1YmMyMWU2N2Q0MzkyYzJkOTJhZDll
Y2ZmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMjQwLDcgKzI0
MCw3IEBAIGJvb2wgUGx1Z2luVmlldzo6c3RhcnQoKQogICAgIHsKICAgICAgICAgUGx1Z2luVmll
dzo6c2V0Q3VycmVudFBsdWdpblZpZXcodGhpcyk7CiAjaWYgVVNFKEpTQykKLSAgICAgICAgSlND
OjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNET01XaW5kb3dCYXNlOjpjb21t
b25KU0dsb2JhbERhdGEoKSk7CisgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJv
cEFsbExvY2tzKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICNlbmRpZgogICAgICAgICBz
ZXRDYWxsaW5nUGx1Z2luKHRydWUpOwogICAgICAgICBucEVyciA9IG1fcGx1Z2luLT5wbHVnaW5G
dW5jcygpLT5uZXdwKChOUE1JTUVUeXBlKW1fbWltZVR5cGUudXRmOCgpLmRhdGEoKSwgbV9pbnN0
YW5jZSwgbV9tb2RlLCBtX3BhcmFtQ291bnQsIG1fcGFyYW1OYW1lcywgbV9wYXJhbVZhbHVlcywg
TlVMTCk7CkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzdG9wKCkKICAgICBt
X2lzU3RhcnRlZCA9IGZhbHNlOwogCiAjaWYgVVNFKEpTQykKLSAgICBKU0M6OkpTTG9jazo6RHJv
cEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0
YSgpKTsKKyAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0M6OlNp
bGVuY2VBc3NlcnRpb25zT25seSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVl
c3QoUGx1Z2luUmVxdWVzdCogcmVxdWVzdCkKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5zZW5k
Tm90aWZpY2F0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50
UGx1Z2luVmlldyh0aGlzKTsKICNpZiBVU0UoSlNDKQotICAgICAgICAgICAgICAgIEpTQzo6SlNM
b2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNH
bG9iYWxEYXRhKCkpOworICAgICAgICAgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3Mg
ZHJvcEFsbExvY2tzKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICNlbmRpZgogICAgICAg
ICAgICAgICAgIHNldENhbGxpbmdQbHVnaW4odHJ1ZSk7CiAgICAgICAgICAgICAgICAgbV9wbHVn
aW4tPnBsdWdpbkZ1bmNzKCktPnVybG5vdGlmeShtX2luc3RhbmNlLCByZXF1ZXN0VVJMLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIE5QUkVTX0RPTkUsIHJlcXVlc3QtPm5vdGlmeURhdGEoKSk7CkBA
IC03MzYsNyArNzM2LDcgQEAgTlBPYmplY3QqIFBsdWdpblZpZXc6Om5wT2JqZWN0KCkKICAgICB7
CiAgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KHRoaXMpOwogI2lmIFVT
RShKU0MpCi0gICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpT
RE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAgICAgICBKU0M6OkpTTG9j
azo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0M6OlNpbGVuY2VBc3NlcnRpb25zT25seSk7
CiAjZW5kaWYKICAgICAgICAgc2V0Q2FsbGluZ1BsdWdpbih0cnVlKTsKICAgICAgICAgbnBFcnIg
PSBtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+Z2V0dmFsdWUobV9pbnN0YW5jZSwgTlBQVnBsdWdp
blNjcmlwdGFibGVOUE9iamVjdCwgJm9iamVjdCk7CkBAIC0xNDkyLDcgKzE0OTIsNyBAQCB2b2lk
IFBsdWdpblZpZXc6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sIHByaXZhdGVCcm93
c2luZ0VuYWJsZWQpCiAKICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0aGlz
KTsKICNpZiBVU0UoSlNDKQotICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExv
Y2tzKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAgIEpTQzo6SlNM
b2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5
KTsKICNlbmRpZgogICAgIHNldENhbGxpbmdQbHVnaW4odHJ1ZSk7CiAgICAgTlBCb29sIHZhbHVl
ID0gcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5WaWV3QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL2JsYWNrYmVycnkvUGx1Z2luVmlld0JsYWNrQmVycnkuY3BwCmluZGV4IDJjYzk2
ZDVlMjIzMmE3NDJkMzgzMmZlYTM3ZGUxMzI2ZTYyYzYxODQuLmI2MjkzM2QzMTM3NjgwOWU5MDA3
MzBlMThjYzNlMTFkYWRjMzE1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
YmxhY2tiZXJyeS9QbHVnaW5WaWV3QmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9ibGFja2JlcnJ5L1BsdWdpblZpZXdCbGFja0JlcnJ5LmNwcApAQCAtNDAzLDcgKzQw
Myw3IEBAIGJvb2wgUGx1Z2luVmlldzo6ZGlzcGF0Y2hOUEV2ZW50KE5QRXZlbnQmIGV2ZW50KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2lu
Vmlldyh0aGlzKTsKLSAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhK
U0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAgICBKU0M6OkpTTG9jazo6
RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0M6OlNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAg
ICAgc2V0Q2FsbGluZ1BsdWdpbih0cnVlKTsKIAogICAgIGJvb2wgYWNjZXB0ZWQgPSBtX3BsdWdp
bi0+cGx1Z2luRnVuY3MoKS0+ZXZlbnQobV9pbnN0YW5jZSwgJmV2ZW50KTsKQEAgLTk3MCw3ICs5
NzAsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnNldE5QV2luZG93SWZOZWVkZWQoKQogICAgICAgICAo
KE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqKW1fbnBXaW5kb3cud3NfaW5mbyktPndpbmRvd0dy
b3VwID0gd2luZG93LT53aW5kb3dHcm91cCgpOwogCiAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVu
dFBsdWdpblZpZXcodGhpcyk7Ci0gICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxs
TG9ja3MoSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgSlNDOjpK
U0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNDOjpTaWxlbmNlQXNzZXJ0aW9uc09u
bHkpOwogICAgIHNldENhbGxpbmdQbHVnaW4odHJ1ZSk7CiAKICAgICAvLyBGSVhNRTogUGFzc2lu
ZyB6b29tRmFjdG9yIHRvIHNldHdpbmRvdyBtYWtlIHdpbmRvd2VkIHBsdWdpbiBzY2FsZSBpbmNv
cnJlY3RseS4KQEAgLTEyMjAsNyArMTIyMCw3IEBAIGJvb2wgUGx1Z2luVmlldzo6cGxhdGZvcm1T
dGFydCgpCiAKICAgICBpZiAobV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPmdldHZhbHVlKSB7CiAg
ICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KHRoaXMpOwotICAgICAgICBK
U0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0RPTVdpbmRvd0Jhc2U6OmNv
bW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBk
cm9wQWxsTG9ja3MoSlNDOjpTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAgICBzZXRDYWxs
aW5nUGx1Z2luKHRydWUpOwogICAgICAgICBtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+Z2V0dmFs
dWUobV9pbnN0YW5jZSwgTlBQVnBsdWdpbk5lZWRzWEVtYmVkLCAmbV9uZWVkc1hFbWJlZCk7CiAg
ICAgICAgIHNldENhbGxpbmdQbHVnaW4oZmFsc2UpOwpAQCAtMTMwMSw3ICsxMzAxLDcgQEAgdm9p
ZCBQbHVnaW5WaWV3OjpnZXRXaW5kb3dJbmZvKFZlY3RvcjxQbHVnaW5XaW5kb3dJbmZvPiYgd2lu
ZG93TGlzdCkKICAgICB2b2lkKiB2YWxQdHIgPSAwOwogCiAgICAgUGx1Z2luVmlldzo6c2V0Q3Vy
cmVudFBsdWdpblZpZXcodGhpcyk7Ci0gICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9w
QWxsTG9ja3MoSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgSlND
OjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNDOjpTaWxlbmNlQXNzZXJ0aW9u
c09ubHkpOwogICAgIHNldENhbGxpbmdQbHVnaW4odHJ1ZSk7CiAgICAgbV9wbHVnaW4tPnBsdWdp
bkZ1bmNzKCktPmdldHZhbHVlKG1faW5zdGFuY2UsIE5QUFZwbHVnaW5TY3JlZW5XaW5kb3csICZ2
YWxQdHIpOwogICAgIHNldENhbGxpbmdQbHVnaW4oZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9lZmwvUGx1Z2luVmlld0VmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL2VmbC9QbHVnaW5WaWV3RWZsLmNwcAppbmRleCA0YWIyZmY2ZjNiYjk1MzkzOWI1OTA3
ODlkODM3ZmVjOWNjYTk4MmFjLi44NmVhMjAwOWM0MjhhOTY0N2U3NDUzMzMzYzg3OGJmMzkzZmI2
YjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2VmbC9QbHVnaW5WaWV3RWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2VmbC9QbHVnaW5WaWV3RWZsLmNwcApA
QCAtNTYsNyArNTYsNyBAQCBib29sIFBsdWdpblZpZXc6OmRpc3BhdGNoTlBFdmVudChOUEV2ZW50
JiBldmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUGx1Z2luVmlldzo6c2V0Q3Vy
cmVudFBsdWdpblZpZXcodGhpcyk7Ci0gICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9w
QWxsTG9ja3MoSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgSlND
OjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOwogICAgIHNldENhbGxp
bmdQbHVnaW4odHJ1ZSk7CiAKICAgICBib29sIGFjY2VwdGVkID0gbV9wbHVnaW4tPnBsdWdpbkZ1
bmNzKCktPmV2ZW50KG1faW5zdGFuY2UsICZldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL2d0ay9QbHVnaW5WaWV3R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwCmluZGV4IDI2MjUzYTBiYmU2ZGM5YjJiYjY3NTg1NzVm
ZjJiZDg0ZGNiNzdiNDkuLjkzYmQzZGIwM2VmYjdlYzhkY2U2ZDQ1NzhjZWI2M2NlMjljNTA0ZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwCkBAIC0x
MDYsNyArMTA2LDcgQEAgYm9vbCBQbHVnaW5WaWV3OjpkaXNwYXRjaE5QRXZlbnQoTlBFdmVudCYg
ZXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFBsdWdpblZpZXc6OnNldEN1cnJl
bnRQbHVnaW5WaWV3KHRoaXMpOwotICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFs
bExvY2tzKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAgIEpTQzo6
SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNP
bmx5KTsKICAgICBzZXRDYWxsaW5nUGx1Z2luKHRydWUpOwogCiAgICAgYm9vbCBhY2NlcHRlZCA9
ICFtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+ZXZlbnQobV9pbnN0YW5jZSwgJmV2ZW50KTsKQEAg
LTI3Niw3ICsyNzYsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKIAogdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVL
ZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewotICAgIEpTQzo6SlNMb2NrOjpE
cm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxE
YXRhKCkpOworICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTQzo6
U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAgIGlmICghbV9pc1N0YXJ0ZWQgfHwgbV9zdGF0
dXMgIT0gUGx1Z2luU3RhdHVzTG9hZGVkU3VjY2Vzc2Z1bGx5KQogICAgICAgICByZXR1cm47CkBA
IC00MDYsNyArNDA2LDcgQEAgc3RhdGljIHZvaWQgc2V0WENyb3NzaW5nRXZlbnRTcGVjaWZpY0Zp
ZWxkcyhYRXZlbnQqIHhFdmVudCwgTW91c2VFdmVudCogZXZlbnQsIGMKIAogdm9pZCBQbHVnaW5W
aWV3OjpoYW5kbGVNb3VzZUV2ZW50KE1vdXNlRXZlbnQqIGV2ZW50KQogewotICAgIEpTQzo6SlNM
b2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNH
bG9iYWxEYXRhKCkpOworICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tz
KEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAgIGlmICghbV9pc1N0YXJ0ZWQgfHwg
bV9zdGF0dXMgIT0gUGx1Z2luU3RhdHVzTG9hZGVkU3VjY2Vzc2Z1bGx5KQogICAgICAgICByZXR1
cm47CkBAIC01MzUsNyArNTM1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXROUFdpbmRvd0lmTmVl
ZGVkKCkKICAgICB9CiAKICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0aGlz
KTsKLSAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0RPTVdpbmRv
d0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExv
Y2tzIGRyb3BBbGxMb2NrcyhKU0M6OlNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgc2V0Q2Fs
bGluZ1BsdWdpbih0cnVlKTsKICAgICBtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+c2V0d2luZG93
KG1faW5zdGFuY2UsICZtX25wV2luZG93KTsKICAgICBzZXRDYWxsaW5nUGx1Z2luKGZhbHNlKTsK
QEAgLTg0Miw3ICs4NDIsNyBAQCBib29sIFBsdWdpblZpZXc6OnBsYXRmb3JtU3RhcnQoKQogI2lm
IGRlZmluZWQoWFBfVU5JWCkKICAgICBpZiAobV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPmdldHZh
bHVlKSB7CiAgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KHRoaXMpOwot
ICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0RPTVdpbmRv
d0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BB
bGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNDOjpTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAg
ICBzZXRDYWxsaW5nUGx1Z2luKHRydWUpOwogICAgICAgICBtX3BsdWdpbi0+cGx1Z2luRnVuY3Mo
KS0+Z2V0dmFsdWUobV9pbnN0YW5jZSwgTlBQVnBsdWdpbk5lZWRzWEVtYmVkLCAmbV9uZWVkc1hF
bWJlZCk7CiAgICAgICAgIHNldENhbGxpbmdQbHVnaW4oZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMubW0KaW5kZXggNzg1YTc0ZGYwZTRlM2ZkMDdlMDZk
Y2U2MjlmNTU3ZTNiMWFkYmFjMy4uMmQ5ZDY4Njk5OWJlNjNkMDQwMDNiMGY3MjQxYTdlNzhjZWVm
N2FlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tCkBA
IC00MjYsNyArNDI2LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXROUFdpbmRvd0lmTmVlZGVkKCkK
ICAgICAgICAgICAgIG1fbnBXaW5kb3cuY2xpcFJlY3QucmlnaHQgLSBtX25wV2luZG93LmNsaXBS
ZWN0LmxlZnQsIG1fbnBXaW5kb3cuY2xpcFJlY3QuYm90dG9tIC0gbV9ucFdpbmRvdy5jbGlwUmVj
dC50b3ApOwogCiAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcodGhpcyk7Ci0g
ICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNET01XaW5kb3dCYXNl
Ojpjb21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBk
cm9wQWxsTG9ja3MoSlNDOjpTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIHNldENhbGxpbmdQ
bHVnaW4odHJ1ZSk7CiAgICAgbV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPnNldHdpbmRvdyhtX2lu
c3RhbmNlLCAmbV9ucFdpbmRvdyk7CiAgICAgc2V0Q2FsbGluZ1BsdWdpbihmYWxzZSk7CkBAIC03
NzIsNyArNzcyLDcgQEAgUG9pbnQgUGx1Z2luVmlldzo6bW91c2VQb3NGb3JQbHVnaW4oTW91c2VF
dmVudCogZXZlbnQpIGNvbnN0CiBib29sIFBsdWdpblZpZXc6OmRpc3BhdGNoTlBFdmVudChOUEV2
ZW50JiBldmVudCkKIHsKICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0aGlz
KTsKLSAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0RPTVdpbmRv
d0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExv
Y2tzIGRyb3BBbGxMb2NrcyhKU0M6OlNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgc2V0Q2Fs
bGluZ1BsdWdpbih0cnVlKTsKIAogICAgIGJvb2wgYWNjZXB0ZWQgPSBtX3BsdWdpbi0+cGx1Z2lu
RnVuY3MoKS0+ZXZlbnQobV9pbnN0YW5jZSwgJmV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvcXQvUGx1Z2luVmlld1F0LmNwcAppbmRleCBiZWU3ZjYyZmM0ZmJjM2IyZTk5OTU3MTU4Y2Nj
YjIzZTA3MzlhN2I0Li5lZGEwNTA0YzIxMmJhNThiNDliZmE1ZjM1YWU5Yjc3MjViZTJmNDZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCkBAIC0zNzMsNyAr
MzczLDcgQEAgYm9vbCBQbHVnaW5WaWV3OjpkaXNwYXRjaE5QRXZlbnQoTlBFdmVudCYgZXZlbnQp
CiAKICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0aGlzKTsKICNpZiBVU0Uo
SlNDKQotICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTRE9NV2lu
ZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxs
TG9ja3MgZHJvcEFsbExvY2tzKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICNlbmRpZgog
ICAgIHNldENhbGxpbmdQbHVnaW4odHJ1ZSk7CiAgICAgYm9vbCBhY2NlcHRlZCA9ICFtX3BsdWdp
bi0+cGx1Z2luRnVuY3MoKS0+ZXZlbnQobV9pbnN0YW5jZSwgJmV2ZW50KTsKQEAgLTY4Nyw3ICs2
ODcsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnNldE5QV2luZG93SWZOZWVkZWQoKQogCiAgICAgUGx1
Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcodGhpcyk7CiAjaWYgVVNFKEpTQykKLSAgICBK
U0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0RPTVdpbmRvd0Jhc2U6OmNv
bW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BB
bGxMb2NrcyhKU0M6OlNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAjZW5kaWYKICAgICBzZXRDYWxs
aW5nUGx1Z2luKHRydWUpOwogICAgIG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5zZXR3aW5kb3co
bV9pbnN0YW5jZSwgJm1fbnBXaW5kb3cpOwpAQCAtOTQ5LDcgKzk0OSw3IEBAIGJvb2wgUGx1Z2lu
Vmlldzo6cGxhdGZvcm1TdGFydCgpCiAgICAgaWYgKG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5n
ZXR2YWx1ZSkgewogICAgICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0aGlz
KTsKICNpZiBVU0UoSlNDKQotICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BB
bGxMb2NrcyhKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAgICAgICAg
SlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNDOjpTaWxlbmNlQXNzZXJ0
aW9uc09ubHkpOwogI2VuZGlmCiAgICAgICAgIHNldENhbGxpbmdQbHVnaW4odHJ1ZSk7CiAgICAg
ICAgIG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5nZXR2YWx1ZShtX2luc3RhbmNlLCBOUFBWcGx1
Z2luTmVlZHNYRW1iZWQsICZtX25lZWRzWEVtYmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy93aW4vUGx1Z2luVmlld1dpbi5jcHAKaW5kZXggMDVjYzEwMjQyOGRkNzZiYTI1ZTcwZDU4OTA1
MjNiNmRkMmFiM2I4MS4uZDRkYzliOTJjMzhkMGM1NGI0NjVkY2QxNTFkNGYwNWJiNmI3YjcxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAKQEAgLTUz
Nyw3ICs1MzcsNyBAQCBib29sIFBsdWdpblZpZXc6OmRpc3BhdGNoTlBFdmVudChOUEV2ZW50JiBu
cEV2ZW50KQogICAgICAgICBzaG91bGRQb3AgPSB0cnVlOwogICAgIH0KIAotICAgIEpTQzo6SlNM
b2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNH
bG9iYWxEYXRhKCkpOworICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tz
KEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBzZXRDYWxsaW5nUGx1Z2luKHRydWUp
OwogICAgIGJvb2wgYWNjZXB0ZWQgPSAhbV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPmV2ZW50KG1f
aW5zdGFuY2UsICZucEV2ZW50KTsKICAgICBzZXRDYWxsaW5nUGx1Z2luKGZhbHNlKTsKQEAgLTY4
OCw3ICs2ODgsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9h
cmRFdmVudCogZXZlbnQpCiAgICAgfSBlbHNlCiAgICAgICAgIHJldHVybjsKIAotICAgIEpTQzo6
SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6Y29tbW9u
SlNHbG9iYWxEYXRhKCkpOworICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExv
Y2tzKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBpZiAoZGlzcGF0Y2hOUEV2ZW50
KG5wRXZlbnQpKQogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KQEAgLTc1
OCw3ICs3NTgsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZU1vdXNlRXZlbnQoTW91c2VFdmVu
dCogZXZlbnQpCiAgICAgfSBlbHNlCiAgICAgICAgIHJldHVybjsKIAotICAgIEpTQzo6SlNMb2Nr
OjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9i
YWxEYXRhKCkpOworICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpT
Qzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAvLyBGSVhNRTogQ29uc2lkZXIgYmFjayBw
b3J0aW5nIHRoZSBodHRwOi8vd2Via2l0Lm9yZy9iLzU4MTA4IGZpeCBoZXJlLgogICAgIGlmIChk
aXNwYXRjaE5QRXZlbnQobnBFdmVudCkpCiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOwpAQCAtODQ2LDcgKzg0Niw3IEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0TlBXaW5kb3dSZWN0
KGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgbV9ucFdpbmRvdy5jbGlwUmVjdC50b3AgPSAwOwog
CiAgICAgaWYgKG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5zZXR3aW5kb3cpIHsKLSAgICAgICAg
SlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNET01XaW5kb3dCYXNlOjpj
b21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3Mg
ZHJvcEFsbExvY2tzKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgc2V0Q2Fs
bGluZ1BsdWdpbih0cnVlKTsKICAgICAgICAgbV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPnNldHdp
bmRvdyhtX2luc3RhbmNlLCAmbV9ucFdpbmRvdyk7CiAgICAgICAgIHNldENhbGxpbmdQbHVnaW4o
ZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVz
dFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBv
cnQuY3BwCmluZGV4IGYzNmU0YTA1Yzc0ZjRkYmM2ZjAyNjE1OGFmOTE3NmE2ODYwM2UyYzEuLjdl
NTBiYzI2NzRmNDM1NGFhY2RmNmY3YzY2ZGRhZjUyZThlMzJlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAgLTM5LDggKzM5LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9ydCB7CiAKIHZvaWQgaW5qZWN0SW50ZXJuYWxz
T2JqZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0KQogeworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKLSAg
ICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2xv
YmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gc2NyaXB0Q29udGV4dC0+aXNEb2N1bWVudCgpID8gc3RhdGljX2Nhc3Q8RG9jdW1lbnQq
PihzY3JpcHRDb250ZXh0KSA6IDA7CkBAIC00OSw4ICs0OSw4IEBAIHZvaWQgaW5qZWN0SW50ZXJu
YWxzT2JqZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0KQogCiB2b2lkIHJlc2V0SW50ZXJuYWxzT2Jq
ZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0KQogeworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3Nl
cnRpb25zT25seSk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKTsKICAgICBJbnRlcm5hbHMgKiBpbnRlcm5hbHMgPSB0b0ludGVybmFscyhnbG9iYWxPYmpl
Y3QtPmdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgSW50ZXJu
YWxzOjppbnRlcm5hbHNJZCkpKTsKICAgICBpZiAoaW50ZXJuYWxzKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBlYmU4ZDJmYzc3YWEyYzM1YzBjNjI5MmZiZjE0ZmEw
YTBlZGY1MzE1Li5iMDc5ZDBjZGZkNDEzMTMwOWJiYWQ2ZjA3OTI5MTU0MzNlZmQzNjRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTg1MSw4ICs4NTEsOCBAQCB2b2lk
IFhNTEh0dHBSZXF1ZXN0Ojpkcm9wUHJvdGVjdGlvbigpCiAgICAgLy8gb3V0LiBCdXQgaXQgaXMg
cHJvdGVjdGVkIGZyb20gR0Mgd2hpbGUgbG9hZGluZywgc28gdGhpcwogICAgIC8vIGNhbid0IGJl
IHJlY291cGVkIHVudGlsIHRoZSBsb2FkIGlzIGRvbmUsIHNvIG9ubHkKICAgICAvLyByZXBvcnQg
dGhlIGV4dHJhIGNvc3QgYXQgdGhhdCBwb2ludC4KKyAgICBKU0M6OkpTTG9jayBsb2NrKEpTQzo6
U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBKU0M6OkpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsRGF0YSgpOwotICAgIEpTQzo6SlNM
b2NrSG9sZGVyIGxvY2soZ2xvYmFsRGF0YSk7CiAgICAgZ2xvYmFsRGF0YS0+aGVhcC5yZXBvcnRF
eHRyYU1lbW9yeUNvc3QobV9yZXNwb25zZUJ1aWxkZXIubGVuZ3RoKCkgKiAyKTsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JsYWNrQmVycnlHbG9i
YWwuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CbGFja0JlcnJ5R2xvYmFsLmNw
cAppbmRleCBhNGM0OGE1OGZlMGIwYzk2NGUwMGQ3YzMzZDBjMDA1M2RkYjc0NzdlLi4zYTYwMzNh
NWFmNDZlMTYwYzYxZjU2OWE0ZDAxOWNkOTMzNGY5MjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL0JsYWNrQmVycnlHbG9iYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvQmxhY2tCZXJyeUdsb2JhbC5jcHAKQEAgLTEwNSwxMCArMTA1LDcg
QEAgdm9pZCBjbGVhck1lbW9yeUNhY2hlcygpCiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OnVz
ZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmRpc3BhdGNoTWVzc2FnZShCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6Y3JlYXRlRnVuY3Rpb25DYWxsTWVzc2FnZShjbGVhck1lbW9yeUNhY2hl
c0luQ29tcG9zaXRpbmdUaHJlYWQpKTsKICNlbmRpZgogCi0gICAgewotICAgICAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSk7Ci0gICAg
ICAgIGNvbGxlY3RKYXZhc2NyaXB0R2FyYmFnZU5vdygpOwotICAgIH0KKyAgICBjb2xsZWN0SmF2
YXNjcmlwdEdhcmJhZ2VOb3coKTsKIAogICAgIC8vIENsZWFuIGNhY2hlcyBhZnRlciBKUyBnYXJi
YWdlIGNvbGxlY3Rpb24gYmVjYXVzZSBKUyBHQyBjYW4KICAgICAvLyBnZW5lcmF0ZSBtb3JlIGRl
YWQgcmVzb3VyY2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0NsaWVudEV4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvQ2xpZW50RXh0ZW5zaW9uLmNwcAppbmRleCBjNmQwYTZlMjRlNDJjM2E4
Y2YwZGQxMDc1NWMxYTczMDE0OGJlMTZjLi5kM2Q3YjYyYjk4NjIwYjI0MzUwYThlOGY0YzcxYTA3
M2ViMzMxM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1
cHBvcnQvQ2xpZW50RXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvQ2xpZW50RXh0ZW5zaW9uLmNwcApAQCAtODQsMTEgKzg0LDExIEBAIHN0
YXRpYyBKU1N0YXRpY1ZhbHVlIGNsaWVudEV4dGVuc2lvblN0YXRpY1ZhbHVlc1tdID0gewogLy8g
RklYTUU6IFJldmlzaXQgdGhlIGNyZWF0aW9uIG9mIHRoaXMgY2xhc3MgYW5kIG1ha2Ugc3VyZSB0
aGlzIGlzIHRoZSBiZXN0IHdheSB0byBhcHByb2FjaCBpdC4KIHZvaWQgYXR0YWNoRXh0ZW5zaW9u
T2JqZWN0VG9GcmFtZShGcmFtZSogZnJhbWUsIFdlYlBhZ2VDbGllbnQqIGNsaWVudCkKIHsKKyAg
ICBKU0M6OkpTTG9jayBsb2NrKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKwogICAgIEpT
RE9NV2luZG93KiB3aW5kb3cgPSBmcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKG1haW5UaHJl
YWROb3JtYWxXb3JsZCgpKS0+d2luZG93KCk7CiAKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9
IHdpbmRvdy0+Z2xvYmFsRXhlYygpOwotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7
Ci0KICAgICBKU0NvbnRleHRSZWYgc2NyaXB0Q3R4ID0gdG9SZWYoZXhlYyk7CiAKICAgICBKU0Ns
YXNzRGVmaW5pdGlvbiBkZWZpbml0aW9uID0ga0pTQ2xhc3NEZWZpbml0aW9uRW1wdHk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVw
QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
UGFnZVBvcHVwQmxhY2tCZXJyeS5jcHAKaW5kZXggNWU3YTI1ODA4YjZiM2M5YjY1ZTYyYWQwYWFm
MmUzZmQwYWI3MWZmMi4uMDFmN2JjOGYzNjc2MDBjYThlN2FmYTM3ZWRlNGRmODMyZTM4MDU4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQ
b3B1cEJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3Jl
U3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5LmNwcApAQCAtMTIyLDEyICsxMjIsMTMgQEAgc3Rh
dGljIEpTU3RhdGljVmFsdWUgcG9wVXBFeHRlbnNpb25TdGF0aWNWYWx1ZXNbXSA9CiAKIHZvaWQg
UGFnZVBvcHVwQmxhY2tCZXJyeTo6aW5zdGFsbERvbUZ1bmN0aW9uKEZyYW1lKiBmcmFtZSkKIHsK
KyAgICBKU0M6OkpTTG9jayBsb2NrKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKwogICAg
IEpTRE9NV2luZG93KiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KGZyYW1lLCBtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSk7CiAgICAgQVNTRVJUKHdpbmRvdyk7CiAKICAgICBKU0M6OkV4ZWNTdGF0ZSog
ZXhlYyA9IHdpbmRvdy0+Z2xvYmFsRXhlYygpOwogICAgIEFTU0VSVChleGVjKTsKLSAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogCiAgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSA6
OnRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIGdsb2JhbE9iamVjdCA9IEpTQ29udGV4dEdl
dEdsb2JhbE9iamVjdChjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwCmlu
ZGV4IGY2MGMxNjJhZGM5YTVhYTgyODc1N2EzZGY4MWI3MDQ3N2I3YzBjMjYuLmNkMWNiNGNmOWVm
ZDg4MTQ5MzRkZTZiODU1YjYwNTk3NmFlYzQxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0LmNwcApAQCAtMTQxLDggKzE0MSw4IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0Ojpz
Y2FsZVBhZ2VCeShXZWJQYWdlKiB3ZWJQYWdlLCBmbG9hdCBzY2FsZUZhY3RvciwgZmxvCiAKIEpT
VmFsdWVSZWYgRHVtcFJlbmRlclRyZWVTdXBwb3J0Ojpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlz
aXRlZEluZm8oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUpCiB7CisgICAg
SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSB0b0pTKGNvbnRleHQpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgIGlmICgh
dmFsdWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKICAg
ICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19mcmFtZS5jcHAKaW5kZXggNjdhOWJjODJjNzY5YWZmNjg3NGEzZGIzNDdhYzdiZDNmYjQ5NTZl
ZC4uNmJhOTQxZDM1NmY1YjMzN2I1NGQyODMxZTljNTM0NmEyZTUxYjYzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTQ1NSw4ICs0NTUsOCBAQCBjaGFyKiBld2tfZnJhbWVf
c2NyaXB0X2V4ZWN1dGUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBzY3JpcHQp
CiAgICAgaWYgKCFyZXN1bHQgfHwgKCFyZXN1bHQuaXNCb29sZWFuKCkgJiYgIXJlc3VsdC5pc1N0
cmluZygpICYmICFyZXN1bHQuaXNOdW1iZXIoKSkpCiAgICAgICAgIHJldHVybiAwOwogCisgICAg
SlNDOjpKU0xvY2sgbG9jayhKU0M6OlNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgSlNDOjpF
eGVjU3RhdGUqIGV4ZWMgPSBzbWFydERhdGEtPmZyYW1lLT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0
KFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+Z2xvYmFsRXhlYygpOwotICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgcmVzdWx0U3RyaW5nID0gV2ViQ29yZTo6
dXN0cmluZ1RvU3RyaW5nKHJlc3VsdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAg
IHJldHVybiBzdHJkdXAocmVzdWx0U3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IDdjOGIzZGJiNDExNWY5NGMzN2U3NDJiNGJmZjE3
YWJiMGFmNjBmYTAuLmM0NTU2OWNlMTAxNmU4MzRjMjczN2MxNDRhNzgzNzliZTI1ZWU5NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtNDA0NSw4ICs0MDQ1LDggQEAgRWluYV9C
b29sIGV3a192aWV3X2pzX29iamVjdF9hZGQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19KU19P
YmplY3QqIG9iamVjdCwgY28KICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYsIGZhbHNlKTsKIAorICAgIEpTQzo6SlNMb2NrIGxvY2soSlNDOjpTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOwogICAgIFdlYkNvcmU6OkpTRE9NV2luZG93KiB3aW5kb3cgPSB0b0pT
RE9NV2luZG93KHByaXYtPm1haW5GcmFtZSwgV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxk
KCkpOwotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sod2luZG93LT5nbG9iYWxFeGVjKCkpOwog
ICAgIEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3QqIHJvb3Q7CiAgICAgcm9vdCA9IHByaXYtPm1h
aW5GcmFtZS0+c2NyaXB0KCktPmJpbmRpbmdSb290T2JqZWN0KCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGsuY3BwCmluZGV4IDllYjg2NzFkNmRlMWZiYzFmOGMyMzA4ODFjNjE4N2Y0MWRmOTI3ODQu
LmE5ZGU4NzVjOTQ3ZjEyZDE4ODNlNzg2ZjMwY2RmODJmZTM3YjZiNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmNwcApAQCAtNjAwLDcgKzYwMCw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrOjpnY0NvbGxlY3RKYXZhc2NyaXB0T2JqZWN0c09uQWx0ZXJuYXRlVGhyZWFkKGJvb2wK
IAogdW5zaWduZWQgbG9uZyBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdjQ291bnRKYXZhc2Ny
aXB0T2JqZWN0cygpCiB7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhKU0RPTVdpbmRvdzo6
Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAgIEpTQzo6SlNMb2NrIGxvY2soSlNDOjpTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOwogICAgIHJldHVybiBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxE
YXRhKCktPmhlYXAub2JqZWN0Q291bnQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vV2Vi
RE9NT3BlcmF0aW9ucy5tbQppbmRleCBhYWE3YTcwMjc2Mjc4YTEyZmZjYzNjYjg1YWQwYTJjZGUz
ZTkyNGEwLi5lNmU2ZDNhMmNkMDczZjA4NDZhOTg4MDkzNThmOGE5OGNiM2U4MDg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9ucy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9ucy5tbQpAQCAtNjcsOSArNjcsOCBAQCB1
c2luZyBuYW1lc3BhY2UgSlNDOwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBKU0xvY2tIb2xkZXIg
bG9jayhleGVjKTsKLSAgICByZXR1cm4ga2l0KHRvRWxlbWVudCh0b0pTKGV4ZWMsIHZhbHVlKSkp
OworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisgICAgcmV0dXJuIGtp
dCh0b0VsZW1lbnQodG9KUyh0b0pTKGNvbnRleHQpLCB2YWx1ZSkpKTsKIH0KIAogLSAoTlNTdHJp
bmcgKilfbWFya2VyVGV4dEZvckxpc3RJdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJD
b3JlU3RhdGlzdGljcy5tbQppbmRleCAyOTZkZDZiMjViZDhiZGI3N2EzYzY4MGUxMzI0ZTViMzk3
ZDI2NmMzLi4xODQwNDUxZDZlYjMxZGFmOTdhNGQwYTlkOGU2NWI2MDNkYzg5Y2I1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KQEAgLTU4LDMxICs1OCwz
MSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogKyAoc2l6ZV90KWphdmFTY3JpcHRPYmpl
Y3RzQ291bnQKIHsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhKU0RPTVdpbmRvdzo6Y29tbW9uSlNH
bG9iYWxEYXRhKCkpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAg
ICAgcmV0dXJuIEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVhcC5vYmplY3RD
b3VudCgpOwogfQogCiArIChzaXplX3QpamF2YVNjcmlwdEdsb2JhbE9iamVjdHNDb3VudAogewot
ICAgIEpTTG9ja0hvbGRlciBsb2NrKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSk7
CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICByZXR1cm4gSlNE
T01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLmdsb2JhbE9iamVjdENvdW50KCk7
CiB9CiAKICsgKHNpemVfdClqYXZhU2NyaXB0UHJvdGVjdGVkT2JqZWN0c0NvdW50CiB7Ci0gICAg
SlNMb2NrSG9sZGVyIGxvY2soSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAg
ICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIHJldHVybiBKU0RPTVdp
bmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAucHJvdGVjdGVkT2JqZWN0Q291bnQoKTsK
IH0KIAogKyAoc2l6ZV90KWphdmFTY3JpcHRQcm90ZWN0ZWRHbG9iYWxPYmplY3RzQ291bnQKIHsK
LSAgICBKU0xvY2tIb2xkZXIgbG9jayhKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCkp
OworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgcmV0dXJuIEpT
RE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVhcC5wcm90ZWN0ZWRHbG9iYWxPYmpl
Y3RDb3VudCgpOwogfQogCiArIChOU0NvdW50ZWRTZXQgKilqYXZhU2NyaXB0UHJvdGVjdGVkT2Jq
ZWN0VHlwZUNvdW50cwogewotICAgIEpTTG9ja0hvbGRlciBsb2NrKEpTRE9NV2luZG93Ojpjb21t
b25KU0dsb2JhbERhdGEoKSk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5
KTsKICAgICAKICAgICBOU0NvdW50ZWRTZXQgKnJlc3VsdCA9IFtOU0NvdW50ZWRTZXQgc2V0XTsK
IApAQCAtOTcsNyArOTcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogKyAoTlNDb3Vu
dGVkU2V0ICopamF2YVNjcmlwdE9iamVjdFR5cGVDb3VudHMKIHsKLSAgICBKU0xvY2tIb2xkZXIg
bG9jayhKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAgIEpTTG9jayBsb2Nr
KFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgCiAgICAgTlNDb3VudGVkU2V0ICpyZXN1bHQg
PSBbTlNDb3VudGVkU2V0IHNldF07CiAKQEAgLTE2NywxMyArMTY3LDEzIEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiArIChCT09MKXNob3VsZFByaW50RXhjZXB0aW9ucwogewotICAgIEpT
TG9ja0hvbGRlciBsb2NrKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSk7CisgICAg
SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICByZXR1cm4gQ29uc29sZTo6
c2hvdWxkUHJpbnRFeGNlcHRpb25zKCk7CiB9CiAKICsgKHZvaWQpc2V0U2hvdWxkUHJpbnRFeGNl
cHRpb25zOihCT09MKXByaW50CiB7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soSlNET01XaW5kb3c6
OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9u
c09ubHkpOwogICAgIENvbnNvbGU6OnNldFNob3VsZFByaW50RXhjZXB0aW9ucyhwcmludCk7CiB9
CiAKQEAgLTIwMSw3ICsyMDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHsKICAgICBX
VEY6OkZhc3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzID0gV1RGOjpmYXN0
TWFsbG9jU3RhdGlzdGljcygpOwogICAgIAotICAgIEpTTG9ja0hvbGRlciBsb2NrKEpTRE9NV2lu
ZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKICAgICBzaXplX3QgaGVhcFNpemUgPSBKU0RPTVdpbmRvdzo6Y29tbW9uSlNH
bG9iYWxEYXRhKCktPmhlYXAuc2l6ZSgpOwogICAgIHNpemVfdCBoZWFwRnJlZSA9IEpTRE9NV2lu
ZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVhcC5jYXBhY2l0eSgpIC0gaGVhcFNpemU7CiAg
ICAgR2xvYmFsTWVtb3J5U3RhdGlzdGljcyBnbG9iYWxNZW1vcnlTdGF0cyA9IGdsb2JhbE1lbW9y
eVN0YXRpc3RpY3MoKTsKQEAgLTI0NSw3ICsyNDUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogKyAoc2l6ZV90KWphdmFTY3JpcHRSZWZlcmVuY2VkT2JqZWN0c0NvdW50CiB7Ci0gICAg
SlNMb2NrSG9sZGVyIGxvY2soSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAg
ICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIHJldHVybiBKU0RPTVdp
bmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAucHJvdGVjdGVkT2JqZWN0Q291bnQoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IDRhN2QzZDI2NjIxMGMyZGNj
ZGY2MTE3Yjc0ZmMyYjI5ZGVhNmFhNzguLmZhODIwOTZlYzAwMGRlZGE4ZGVmMjEwOWJjNjJmNDU1
ZDJlZmIzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTg2Nyw3ICs4Njcs
OCBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGUodWludDMyX3Qg
b2JqZWN0SUQsIGNvbnN0IFN0cmluZyYgc2NyaQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIEpTTG9ja0hvbGRlciBsb2NrKHBsdWdpbldvcmxkKCktPmdsb2Jh
bERhdGEoKSk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKyAgICAK
ICAgICBTdHJvbmc8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCgqcGx1Z2luV29ybGQoKS0+
Z2xvYmFsRGF0YSgpLCBmcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdChwbHVnaW5Xb3JsZCgp
KSk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAK
QEAgLTkwMyw3ICs5MDQsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6aW52
b2tlKHVpbnQzMl90IG9iamVjdElELCBjb25zdCBJZGVudGlmaWVyJiBtZQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCiAgICAgRXhlY1N0YXRlKiBleGVjID0gZnJhbWUtPnNjcmlwdCgpLT5n
bG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSktPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0xvY2tIb2xk
ZXIgbG9jayhleGVjKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwog
ICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBvYmplY3QtPmdldChleGVjLCBtZXRob2ROYW1lKTsKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRh
KGZ1bmN0aW9uLCBjYWxsRGF0YSk7CkBAIC05MzYsNyArOTM3LDcgQEAgYm9vbCBOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6Omludm9rZURlZmF1bHQodWludDMyX3Qgb2JqZWN0SUQsIGRhdGFf
dCBhcmd1bWUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IGZyYW1lLT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0KHBsdWdpbldvcmxkKCkpLT5nbG9iYWxF
eGVjKCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7ICAgIAorICAgIEpTTG9jayBsb2Nr
KFNpbGVuY2VBc3NlcnRpb25zT25seSk7ICAgIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShv
YmplY3QsIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQpAQCAt
OTY4LDcgKzk2OSw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpjb25zdHJ1
Y3QodWludDMyX3Qgb2JqZWN0SUQsIGRhdGFfdCBhcmd1bWVudHNECiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBmcmFtZS0+c2NyaXB0KCktPmdsb2Jh
bE9iamVjdChwbHVnaW5Xb3JsZCgpKS0+Z2xvYmFsRXhlYygpOwotICAgIEpTTG9ja0hvbGRlciBs
b2NrKGV4ZWMpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKICAg
ICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1
Y3RUeXBlID0gb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKG9iamVjdCwg
Y29uc3RydWN0RGF0YSk7CkBAIC0xMDAxLDcgKzEwMDIsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eTo6Z2V0UHJvcGVydHkodWludDMyX3Qgb2JqZWN0SUQsIGNvbnN0IElkZW50
aWZpZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgRXhlY1N0YXRlKiBleGVjID0g
ZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSktPmdsb2JhbEV4ZWMo
KTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsgICAgCisgICAgSlNMb2NrIGxvY2soU2ls
ZW5jZUFzc2VydGlvbnNPbmx5KTsgICAgCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0
KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgCiAgICAgbWFyc2hhbFZhbHVlKGV4ZWMsIHZhbHVl
LCByZXN1bHREYXRhLCByZXN1bHRMZW5ndGgpOwpAQCAtMTAyMiw3ICsxMDIzLDcgQEAgYm9vbCBO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmdldFByb3BlcnR5KHVpbnQzMl90IG9iamVjdElE
LCB1bnNpZ25lZCBwcm9wZXIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IGZyYW1lLT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0KHBsdWdpbldvcmxkKCkp
LT5nbG9iYWxFeGVjKCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7ICAgIAorICAgIEpT
TG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7ICAgIAogICAgIEpTVmFsdWUgdmFsdWUg
PSBvYmplY3QtPmdldChleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIAogICAgIG1hcnNoYWxWYWx1
ZShleGVjLCB2YWx1ZSwgcmVzdWx0RGF0YSwgcmVzdWx0TGVuZ3RoKTsKQEAgLTEwNDYsNyArMTA0
Nyw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpzZXRQcm9wZXJ0eSh1aW50
MzJfdCBvYmplY3RJRCwgY29uc3QgSWRlbnRpZmllCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBmcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdChw
bHVnaW5Xb3JsZCgpKS0+Z2xvYmFsRXhlYygpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMp
OyAgICAKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOyAgICAKIAogICAg
IEpTVmFsdWUgdmFsdWUgPSBkZW1hcnNoYWxWYWx1ZShleGVjLCB2YWx1ZURhdGEsIHZhbHVlTGVu
Z3RoKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKQEAgLTEwNzIsNyArMTA3Myw3IEBAIGJv
b2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpzZXRQcm9wZXJ0eSh1aW50MzJfdCBvYmpl
Y3RJRCwgdW5zaWduZWQgcHJvcGVyCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSBmcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdChwbHVnaW5Xb3Js
ZCgpKS0+Z2xvYmFsRXhlYygpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOyAgICAKKyAg
ICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOyAgICAKICAgICAKICAgICBKU1Zh
bHVlIHZhbHVlID0gZGVtYXJzaGFsVmFsdWUoZXhlYywgdmFsdWVEYXRhLCB2YWx1ZUxlbmd0aCk7
CiAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KG9iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgZmFsc2UpOwpAQCAtMTA5NywxMiArMTA5OCwxMiBAQCBib29sIE5l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6cmVtb3ZlUHJvcGVydHkodWludDMyX3Qgb2JqZWN0
SUQsIGNvbnN0IElkZW50aQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBmcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdChwbHVnaW5Xb3JsZCgpKS0+Z2xv
YmFsRXhlYygpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgIGlmICghb2JqZWN0
LT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGV4ZWMtPmNsZWFy
RXhjZXB0aW9uKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCisgICAgSlNM
b2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KCktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICBleGVj
LT5jbGVhckV4Y2VwdGlvbigpOyAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMjQsMTIgKzEx
MjUsMTIgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnJlbW92ZVByb3BlcnR5
KHVpbnQzMl90IG9iamVjdElELCB1bnNpZ25lZCBwcm8KICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGZyYW1lLT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0
KHBsdWdpbldvcmxkKCkpLT5nbG9iYWxFeGVjKCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhl
Yyk7CiAgICAgaWYgKCFvYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSkpIHsK
ICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICAKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAg
IG9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lKTsKICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOyAgICAKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTExOTUsNyArMTE5Niw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5OjpoYXNNZXRob2QodWludDMyX3Qgb2JqZWN0SUQsIGNvbnN0IElkZW50aWZpZXIm
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBmcmFt
ZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdChwbHVnaW5Xb3JsZCgpKS0+Z2xvYmFsRXhlYygpOwot
ICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3Nl
cnRpb25zT25seSk7CiAgICAgSlNWYWx1ZSBmdW5jID0gb2JqZWN0LT5nZXQoZXhlYywgbWV0aG9k
TmFtZSk7CiAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKICAgICByZXR1cm4gIWZ1bmMuaXNV
bmRlZmluZWQoKTsKQEAgLTEyMTcsNyArMTIxOCw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5OjplbnVtZXJhdGUodWludDMyX3Qgb2JqZWN0SUQsIGRhdGFfdCYgcmVzdWx0RGF0
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBmcmFt
ZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdChwbHVnaW5Xb3JsZCgpKS0+Z2xvYmFsRXhlYygpOwot
ICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3Nl
cnRpb25zT25seSk7CiAgCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVj
KTsKICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMob2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKQEAgLTEyNjEs
NyArMTI2Miw3IEBAIHN0YXRpYyBib29sIGdldE9iamVjdElEKE5ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eSogcGx1Z2luSW5zdGFuY2VQcm94eSwgSlNPYmplCiAgICAgCiB2b2lkIE5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6YWRkVmFsdWVUb0FycmF5KE5TTXV0YWJsZUFycmF5ICphcnJh
eSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEpTTG9ja0hvbGRlciBs
b2NrKGV4ZWMpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKICAg
ICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgewogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU051
bWJlciBudW1iZXJXaXRoSW50OlN0cmluZ1ZhbHVlVHlwZV1dOwpAQCAtMTY3MSw3ICsxNjcyLDcg
QEAgdm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Om1vdmVHbG9iYWxFeGNlcHRpb25U
b0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMKICAgICAgICAgcmV0dXJuOwogCiAgICAgewotICAg
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICAgICAgSlNMb2NrIGxvY2soU2lsZW5j
ZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVFcnJvcihl
eGVjLCBzdHJpbmdUb1VTdHJpbmcoZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkpKSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
U3RyZWFtLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0
cmVhbS5tbQppbmRleCBhN2RhYWFlYzA0ZDUxMGFhN2QwMWNjYWNiMGJlOTYzMjdkMWVkYzJkLi5i
YjdmNGQ1ZjVkOTEzODM2NmYzZDI0YzA5MGY4ODMwMjJmZjE1MTE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KQEAgLTM2
OCw3ICszNjgsNyBAQCBib29sIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjp3YW50c0FsbFN0cmVh
bXMoKSBjb25zdAogICAgIE5QRXJyb3IgZXJyb3I7CiAgICAgewogICAgICAgICBQbHVnaW5TdG9w
RGVmZXJyZXIgZGVmZXJyZXIobV9wbHVnaW5WaWV3LmdldCgpKTsKLSAgICAgICAgSlNDOjpKU0xv
Y2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0ds
b2JhbERhdGEoKSk7CisgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExv
Y2tzKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgZXJyb3IgPSBtX3BsdWdp
bkZ1bmNzLT5nZXR2YWx1ZShtX3BsdWdpbiwgTlBQVnBsdWdpbldhbnRzQWxsTmV0d29ya1N0cmVh
bXMsICZ2YWx1ZSk7CiAgICAgfQogICAgIGlmIChlcnJvciAhPSBOUEVSUl9OT19FUlJPUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0K
aW5kZXggNDI2NDA1ZjI1ZGE2OTk1OGI3YTkxMTU5MjhkMTcyOTViZTUxZWE4Ni4uNWYxZjU1Njk0
MWE5NGMxMGY0ZDViNzFiMjgzMzgzOWVhMjViZTA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTY2OSw3ICs2NjksNyBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0TlBSZWN0KGNvbnN0IE5TUmVjdCYgbnIsIE5QUmVjdCYg
bnByKQogICAgIC8vIFNldCB0aGUgcGx1Z2luQWxsb3dQb3B1cCBmbGFnLgogICAgIEFTU0VSVChf
ZXZlbnRIYW5kbGVyKTsKICAgICB7Ci0gICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3Mg
ZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAg
ICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0M6OlNpbGVuY2VB
c3NlcnRpb25zT25seSk7CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRp
Y2F0b3IoX2V2ZW50SGFuZGxlci0+Y3VycmVudEV2ZW50SXNVc2VyR2VzdHVyZSgpID8gRGVmaW5p
dGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IFBvc3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KTsKICAgICAgICAgYWNjZXB0ZWRFdmVudCA9IFtfcGx1Z2luUGFja2FnZS5nZXQoKSBwbHVnaW5G
dW5jc10tPmV2ZW50KHBsdWdpbiwgZXZlbnQpOwogICAgIH0KQEAgLTg1MCw3ICs4NTAsNyBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgZ2V0TlBSZWN0KGNvbnN0IE5TUmVjdCYgbnIsIE5QUmVjdCYgbnBy
KQogCiAgICAgW3NlbGYgd2lsbENhbGxQbHVnSW5GdW5jdGlvbl07CiAgICAgewotICAgICAgICBK
U0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0RPTVdpbmRvd0Jhc2U6OmNv
bW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBk
cm9wQWxsTG9ja3MoSlNDOjpTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAgICBpZiAoW19w
bHVnaW5QYWNrYWdlLmdldCgpIHBsdWdpbkZ1bmNzXS0+c2V0dmFsdWUpCiAgICAgICAgICAgICBb
X3BsdWdpblBhY2thZ2UuZ2V0KCkgcGx1Z2luRnVuY3NdLT5zZXR2YWx1ZShwbHVnaW4sIE5QTlZw
cml2YXRlTW9kZUJvb2wsICZ2YWx1ZSk7CiAgICAgfQpAQCAtOTkxLDcgKzk5MSw3IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBnZXROUFJlY3QoY29uc3QgTlNSZWN0JiBuciwgTlBSZWN0JiBucHIpCiAg
ICAgICAgIGluU2V0V2luZG93ID0gWUVTOyAgICAgICAgCiAgICAgICAgIFtzZWxmIHdpbGxDYWxs
UGx1Z0luRnVuY3Rpb25dOwogICAgICAgICB7Ci0gICAgICAgICAgICBKU0M6OkpTTG9jazo6RHJv
cEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0
YSgpKTsKKyAgICAgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tz
KEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgICAgIG5wRXJyID0gW19wbHVn
aW5QYWNrYWdlLmdldCgpIHBsdWdpbkZ1bmNzXS0+c2V0d2luZG93KHBsdWdpbiwgJndpbmRvdyk7
CiAgICAgICAgIH0KICAgICAgICAgW3NlbGYgZGlkQ2FsbFBsdWdJbkZ1bmN0aW9uXTsKQEAgLTE0
NDQsNyArMTQ0NCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXROUFJlY3QoY29uc3QgTlNSZWN0
JiBuciwgTlBSZWN0JiBucHIpCiAgICAgTlBFcnJvciBlcnJvcjsKICAgICBbc2VsZiB3aWxsQ2Fs
bFBsdWdJbkZ1bmN0aW9uXTsKICAgICB7Ci0gICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9j
a3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOwor
ICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0M6OlNpbGVu
Y2VBc3NlcnRpb25zT25seSk7CiAgICAgICAgIGVycm9yID0gW19wbHVnaW5QYWNrYWdlLmdldCgp
IHBsdWdpbkZ1bmNzXS0+Z2V0dmFsdWUocGx1Z2luLCBOUFBWcGx1Z2luU2NyaXB0YWJsZU5QT2Jq
ZWN0LCAmdmFsdWUpOwogICAgIH0KICAgICBbc2VsZiBkaWRDYWxsUGx1Z0luRnVuY3Rpb25dOwpA
QCAtMTQ2Myw3ICsxNDYzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldE5QUmVjdChjb25zdCBO
U1JlY3QmIG5yLCBOUFJlY3QmIG5wcikKICAgICBOUEVycm9yIGVycm9yOwogICAgIFtzZWxmIHdp
bGxDYWxsUGx1Z0luRnVuY3Rpb25dOwogICAgIHsKLSAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BB
bGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEo
KSk7CisgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTQzo6
U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgZXJyb3IgPSBbX3BsdWdpblBhY2thZ2Uu
Z2V0KCkgcGx1Z2luRnVuY3NdLT5nZXR2YWx1ZShwbHVnaW4sIE5QUFZmb3JtVmFsdWUsICZidWZm
ZXIpOwogICAgIH0KICAgICBbc2VsZiBkaWRDYWxsUGx1Z0luRnVuY3Rpb25dOwpAQCAtMTU5NSw3
ICsxNTk1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldE5QUmVjdChjb25zdCBOU1JlY3QmIG5y
LCBOUFJlY3QmIG5wcikKICAgICAgICAgaWYgKFtKU1BsdWdpblJlcXVlc3Qgc2VuZE5vdGlmaWNh
dGlvbl0pIHsKICAgICAgICAgICAgIFtzZWxmIHdpbGxDYWxsUGx1Z0luRnVuY3Rpb25dOwogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJv
cEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAgICAg
ICAgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTQzo6U2ls
ZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgICAgICAgICBbX3BsdWdpblBhY2thZ2UuZ2V0
KCkgcGx1Z2luRnVuY3NdLT51cmxub3RpZnkocGx1Z2luLCBbVVJMIF93ZWJfVVJMQ1N0cmluZ10s
IE5QUkVTX0RPTkUsIFtKU1BsdWdpblJlcXVlc3Qgbm90aWZ5RGF0YV0pOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgW3NlbGYgZGlkQ2FsbFBsdWdJbkZ1bmN0aW9uXTsKQEAgLTE2MjcsNyAr
MTYyNyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXROUFJlY3QoY29uc3QgTlNSZWN0JiBuciwg
TlBSZWN0JiBucHIpCiAgICAgICAgIAogICAgIFtzZWxmIHdpbGxDYWxsUGx1Z0luRnVuY3Rpb25d
OwogICAgIHsKLSAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3Mo
SlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgICAgIEpTQzo6SlNM
b2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5
KTsKICAgICAgICAgW19wbHVnaW5QYWNrYWdlLmdldCgpIHBsdWdpbkZ1bmNzXS0+dXJsbm90aWZ5
KHBsdWdpbiwgW1tbcGx1Z2luUmVxdWVzdCByZXF1ZXN0XSBVUkxdIF93ZWJfVVJMQ1N0cmluZ10s
IHJlYXNvbiwgW3BsdWdpblJlcXVlc3Qgbm90aWZ5RGF0YV0pOwogICAgIH0KICAgICBbc2VsZiBk
aWRDYWxsUGx1Z0luRnVuY3Rpb25dOwpAQCAtMTY3MSw3ICsxNjcxLDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGdldE5QUmVjdChjb25zdCBOU1JlY3QmIG5yLCBOUFJlY3QmIG5wcikKICAgICAgICAg
ICAgICAgICBpZiAoW3BsdWdpblJlcXVlc3Qgc2VuZE5vdGlmaWNhdGlvbl0pIHsKICAgICAgICAg
ICAgICAgICAgICAgW3NlbGYgd2lsbENhbGxQbHVnSW5GdW5jdGlvbl07CiAgICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9j
a3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxs
TG9ja3MoSlNDOjpTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgW19wbHVnaW5QYWNrYWdlLmdldCgpIHBsdWdpbkZ1bmNzXS0+dXJsbm90aWZ5KHBsdWdpbiwg
W1tbcGx1Z2luUmVxdWVzdCByZXF1ZXN0XSBVUkxdIF93ZWJfVVJMQ1N0cmluZ10sIE5QRVJSX0dF
TkVSSUNfRVJST1IsIFtwbHVnaW5SZXF1ZXN0IG5vdGlmeURhdGFdKTsKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICBbc2VsZiBkaWRDYWxsUGx1Z0luRnVuY3Rpb25d
OwpAQCAtMjQ3MSw3ICsyNDcxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldE5QUmVjdChjb25z
dCBOU1JlY3QmIG5yLCBOUFJlY3QmIG5wcikKICAgICAvLyBUZWxsIHRoZSBwbHVnaW4gdG8gcHJp
bnQgaW50byB0aGUgR1dvcmxkCiAgICAgW3NlbGYgd2lsbENhbGxQbHVnSW5GdW5jdGlvbl07CiAg
ICAgewotICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0RP
TVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAgICAgICAgSlNDOjpKU0xvY2s6
OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNDOjpTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwog
ICAgICAgICBbX3BsdWdpblBhY2thZ2UuZ2V0KCkgcGx1Z2luRnVuY3NdLT5wcmludChwbHVnaW4s
ICZucFByaW50KTsKICAgICB9CiAgICAgW3NlbGYgZGlkQ2FsbFBsdWdJbkZ1bmN0aW9uXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbQppbmRl
eCBkZDU5OWQ2ZDE5YjE1MzkzZWIxNWE1MmRhOThkNzYwNzMzMTlhYmI1Li42NWEwNWFlNDAxZWU1
NzRlMzc2YmU1NmY1YjJlMTU4ZDc1NTgyNWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9XZWJQbHVnaW5Db250cm9sbGVyLm1tCkBAIC05NiwxMCArOTYsMTAgQEAgc3RhdGlj
IE5TTXV0YWJsZVNldCAqcGx1Z2luVmlld3MgPSBuaWw7CiAgICAgTlNWaWV3ICp2aWV3ID0gbmls
OwogCiAgICAgaWYgKFt2aWV3RmFjdG9yeSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBs
dWdJblZpZXdXaXRoQXJndW1lbnRzOildKSB7Ci0gICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxs
TG9ja3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkp
OworICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0M6OlNp
bGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgICAgIHZpZXcgPSBbdmlld0ZhY3RvcnkgcGx1Z0lu
Vmlld1dpdGhBcmd1bWVudHM6YXJndW1lbnRzXTsKICAgICB9IGVsc2UgaWYgKFt2aWV3RmFjdG9y
eSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBsdWdpblZpZXdXaXRoQXJndW1lbnRzOild
KSB7Ci0gICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTRE9N
V2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAgICAgICBKU0M6OkpTTG9jazo6
RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0M6OlNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAg
ICAgICAgIHZpZXcgPSBbdmlld0ZhY3RvcnkgcGx1Z2luVmlld1dpdGhBcmd1bWVudHM6YXJndW1l
bnRzXTsKICAgICB9CiAgICAgCkBAIC0xNDksMTAgKzE0OSwxMCBAQCBzdGF0aWMgTlNNdXRhYmxl
U2V0ICpwbHVnaW5WaWV3cyA9IG5pbDsKIC0gKHZvaWQpc3RvcE9uZVBsdWdpbjooTlNWaWV3ICop
dmlldwogewogICAgIGlmIChbdmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlBs
dWdJblN0b3ApXSkgewotICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxM
b2NrcyhKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAgICAgICAgSlND
OjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNDOjpTaWxlbmNlQXNzZXJ0aW9u
c09ubHkpOwogICAgICAgICBbdmlldyB3ZWJQbHVnSW5TdG9wXTsKICAgICB9IGVsc2UgaWYgKFt2
aWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGx1Z2luU3RvcCldKSB7Ci0gICAgICAg
IEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6
Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tz
IGRyb3BBbGxMb2NrcyhKU0M6OlNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgICAgIFt2aWV3
IHBsdWdpblN0b3BdOwogICAgIH0KIH0KQEAgLTE2MCwxMCArMTYwLDEwIEBAIHN0YXRpYyBOU011
dGFibGVTZXQgKnBsdWdpblZpZXdzID0gbmlsOwogLSAodm9pZClkZXN0cm95T25lUGx1Z2luOihO
U1ZpZXcgKil2aWV3CiB7CiAgICAgaWYgKFt2aWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3Iod2ViUGx1Z0luRGVzdHJveSldKSB7Ci0gICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9j
a3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOwor
ICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0M6OlNpbGVu
Y2VBc3NlcnRpb25zT25seSk7CiAgICAgICAgIFt2aWV3IHdlYlBsdWdJbkRlc3Ryb3ldOwogICAg
IH0gZWxzZSBpZiAoW3ZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwbHVnaW5EZXN0
cm95KV0pIHsKLSAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3Mo
SlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgICAgIEpTQzo6SlNM
b2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5
KTsKICAgICAgICAgW3ZpZXcgcGx1Z2luRGVzdHJveV07CiAgICAgfQogfQpAQCAtMTgwLDEwICsx
ODAsMTAgQEAgc3RhdGljIE5TTXV0YWJsZVNldCAqcGx1Z2luVmlld3MgPSBuaWw7CiAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgIGlkIGFWaWV3ID0gW192aWV3
cyBvYmplY3RBdEluZGV4OmldOwogICAgICAgICBpZiAoW2FWaWV3IHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Iod2ViUGx1Z0luU3RhcnQpXSkgewotICAgICAgICAgICAgSlNDOjpKU0xvY2s6
OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2Jh
bERhdGEoKSk7CisgICAgICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxM
b2NrcyhKU0M6OlNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgICAgICAgICBbYVZpZXcgd2Vi
UGx1Z0luU3RhcnRdOwogICAgICAgICB9IGVsc2UgaWYgKFthVmlldyByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHBsdWdpblN0YXJ0KV0pIHsKLSAgICAgICAgICAgIEpTQzo6SlNMb2NrOjpE
cm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxE
YXRhKCkpOworICAgICAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9j
a3MoSlNDOjpTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAgICAgICAgW2FWaWV3IHBsdWdp
blN0YXJ0XTsKICAgICAgICAgfQogICAgIH0KQEAgLTI1MiwxMCArMjUyLDEwIEBAIHN0YXRpYyBO
U011dGFibGVTZXQgKnBsdWdpblZpZXdzID0gbmlsOwogCiAgICAgICAgIExPRyhQbHVnaW5zLCAi
aW5pdGlhbGl6aW5nIHBsdWctaW4gJUAiLCB2aWV3KTsKICAgICAgICAgaWYgKFt2aWV3IHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUGx1Z0luSW5pdGlhbGl6ZSldKSB7Ci0gICAgICAg
ICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0RPTVdpbmRvd0Jh
c2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAgICAgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9w
QWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAg
ICAgICAgIFt2aWV3IHdlYlBsdWdJbkluaXRpYWxpemVdOwogICAgICAgICB9IGVsc2UgaWYgKFt2
aWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGx1Z2luSW5pdGlhbGl6ZSldKSB7Ci0g
ICAgICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0RPTVdp
bmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAgICAgICAgICAgIEpTQzo6SlNMb2Nr
OjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsK
ICAgICAgICAgICAgIFt2aWV3IHBsdWdpbkluaXRpYWxpemVdOwogICAgICAgICB9CiAKQEAgLTI2
NSwxNSArMjY1LDE1IEBAIHN0YXRpYyBOU011dGFibGVTZXQgKnBsdWdpblZpZXdzID0gbmlsOwog
ICAgICAgICBpZiAoX3N0YXJ0ZWQpIHsKICAgICAgICAgICAgIExPRyhQbHVnaW5zLCAic3RhcnRp
bmcgcGx1Zy1pbiAlQCIsIHZpZXcpOwogICAgICAgICAgICAgaWYgKFt2aWV3IHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3Iod2ViUGx1Z0luU3RhcnQpXSkgewotICAgICAgICAgICAgICAgIEpT
Qzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6Y29t
bW9uSlNHbG9iYWxEYXRhKCkpOworICAgICAgICAgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxs
TG9ja3MgZHJvcEFsbExvY2tzKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAg
ICAgICAgICBbdmlldyB3ZWJQbHVnSW5TdGFydF07CiAgICAgICAgICAgICB9IGVsc2UgaWYgKFt2
aWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGx1Z2luU3RhcnQpXSkgewotICAgICAg
ICAgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTRE9NV2lu
ZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAgICAgICAgICAgICAgIEpTQzo6SlNM
b2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5
KTsKICAgICAgICAgICAgICAgICBbdmlldyBwbHVnaW5TdGFydF07CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChbdmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHNldENvbnRhaW5pbmdXaW5kb3c6KV0pIHsKLSAgICAgICAgICAgICAgICBKU0M6OkpT
TG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpT
R2xvYmFsRGF0YSgpKTsKKyAgICAgICAgICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tz
IGRyb3BBbGxMb2NrcyhKU0M6OlNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgICAgICAgICAg
ICAgW3ZpZXcgc2V0Q29udGFpbmluZ1dpbmRvdzpbX2RvY3VtZW50VmlldyB3aW5kb3ddXTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
aW5kZXggMGFkMGVjYTI1NGQxNjIyMjlkYWI4MmQzNWZlMDM4M2UzNTEwOGUzNy4uM2M0OTdmNjYz
ZmY3NGRjZGNlYmVmN2U2NTk2YzJiYjRhZWQ2YTMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCkBAIC0xMDQsNiArMTA0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIHVzaW5nIEpTQzo6SlNHbG9iYWxPYmplY3Q7CiB1c2luZyBKU0M6OkpTTG9jazsKIHVzaW5n
IEpTQzo6SlNWYWx1ZTsKK3VzaW5nIEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5OwogCiAvKgog
SGVyZSBpcyB0aGUgY3VycmVudCBiZWhhdmlvciBtYXRyaXggZm9yIGZvdXIgdHlwZXMgb2YgbmF2
aWdhdGlvbnM6CkBAIC01OTYsOCArNTk3LDggQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNl
ICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgaWYgKCFyZXN1bHQgfHwg
KCFyZXN1bHQuaXNCb29sZWFuKCkgJiYgIXJlc3VsdC5pc1N0cmluZygpICYmICFyZXN1bHQuaXNO
dW1iZXIoKSkpCiAgICAgICAgIHJldHVybiBAIiI7CiAKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gX3ByaXZhdGUtPmNv
cmVGcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkt
Pmdsb2JhbEV4ZWMoKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgIHJl
dHVybiB1c3RyaW5nVG9TdHJpbmcocmVzdWx0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7
CiB9CiAKQEAgLTExMjIsOCArMTEyMyw4IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAq
ZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIGlmICghcmVzdWx0IHx8ICgh
cmVzdWx0LmlzQm9vbGVhbigpICYmICFyZXN1bHQuaXNTdHJpbmcoKSAmJiAhcmVzdWx0LmlzTnVt
YmVyKCkpKQogICAgICAgICByZXR1cm4gQCIiOwogCisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFz
c2VydGlvbnNPbmx5KTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGFueVdvcmxkR2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
ICAgICByZXR1cm4gdXN0cmluZ1RvU3RyaW5nKHJlc3VsdC50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNj
cmlwdERlYnVnRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlw
dERlYnVnRGVsZWdhdGUubW0KaW5kZXggNTBiODRiZTI0NGRmYTZiODk2ZDBjNWM5ZGEyNzkyOTNl
ZTVmNGRlZC4uMjVhNTk2Y2EzZGE3N2RhYTEwNTViNmJkNmRmODZjYTNiNWQ2MzZiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z0RlbGVnYXRlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5t
bQpAQCAtMTc0LDkgKzE3NCw5IEBAIE5TU3RyaW5nICogY29uc3QgV2ViU2NyaXB0RXJyb3JMaW5l
TnVtYmVyS2V5ID0gQCJXZWJTY3JpcHRFcnJvckxpbmVOdW1iZXIiOwogICAgIGlmICghX3ByaXZh
dGUtPmRlYnVnZ2VyQ2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOwog
CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAgIFNjb3BlQ2hh
aW5Ob2RlKiBzY29wZUNoYWluID0gX3ByaXZhdGUtPmRlYnVnZ2VyQ2FsbEZyYW1lLT5zY29wZUNo
YWluKCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSk7CiAg
ICAgaWYgKCFzY29wZUNoYWluLT5uZXh0KSAgLy8gZ2xvYmFsIGZyYW1lCiAgICAgICAgIHJldHVy
biBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6X3ByaXZhdGUtPmdsb2JhbE9iamVjdF07CiAKQEAg
LTIyOSwxMyArMjI5LDEzIEBAIE5TU3RyaW5nICogY29uc3QgV2ViU2NyaXB0RXJyb3JMaW5lTnVt
YmVyS2V5ID0gQCJXZWJTY3JpcHRFcnJvckxpbmVOdW1iZXIiOwogICAgIGlmICghX3ByaXZhdGUt
PmRlYnVnZ2VyQ2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gbmlsOwogCisgICAgSlNMb2NrIGxv
Y2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKwogICAgIC8vIElmIHRoaXMgaXMgdGhlIGdsb2Jh
bCBjYWxsIGZyYW1lIGFuZCB0aGVyZSBpcyBubyBkeW5hbWljIGdsb2JhbCBvYmplY3QsCiAgICAg
Ly8gRGFzaGNvZGUgaXMgYXR0ZW1wdGluZyB0byBleGVjdXRlIEpTIGluIHRoZSBldmFsdWF0b3Ig
dXNpbmcgYSBzdGFsZQogICAgIC8vIFdlYlNjcmlwdENhbGxGcmFtZS4gSW5zdGVhZCwgd2UgbmVl
ZCB0byBzZXQgdGhlIGR5bmFtaWMgZ2xvYmFsIG9iamVjdAogICAgIC8vIGFuZCBldmFsdWF0ZSB0
aGUgSlMgaW4gdGhlIGdsb2JhbCBvYmplY3QncyBnbG9iYWwgY2FsbCBmcmFtZS4KICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gX3ByaXZhdGUtPmRlYnVnZ2VyLT5nbG9iYWxPYmpl
Y3QoKTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSk7
Ci0KICAgICBpZiAoc2VsZiA9PSBfcHJpdmF0ZS0+ZGVidWdnZXItPmdsb2JhbENhbGxGcmFtZSgp
ICYmICFnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5keW5hbWljR2xvYmFsT2JqZWN0KSB7CiAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBfcHJpdmF0ZS0+ZGVidWdnZXIt
Pmdsb2JhbE9iamVjdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXgg
NDVhNGNmNWQwZjU4MDhlMGMyNTQ0Njg5ZjVkMjYwOTE3MTEyYjZjYi4uZjdhNjgxYmM3OWYzNTky
ZGQ2NWQ1MWE0ZThkMDAwYmM4M2I4NDY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQpAQCAtNTgxLDggKzU4MSw4IEBAIHN0YXRpYyBOU1N0cmluZyAqY3JlYXRlVXNlclZpc2li
bGVXZWJLaXRWZXJzaW9uU3RyaW5nKCkKICAgICBpZiAoIWV4Y2VwdGlvbiB8fCAhY29udGV4dCkK
ICAgICAgICAgcmV0dXJuOwogCisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5
KTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlID0gdG9KUyhjb250ZXh0KTsKLSAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjU3RhdGUpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250
ZXh0IGhhcyBhIERPTVdpbmRvdyBnbG9iYWwgb2JqZWN0LCBvdGhlcndpc2UgdGhpcyBjb250ZXh0
IGRpZG4ndCBvcmlnaW5hdGUgZnJvbSBhIFdlYlZpZXcuCiAgICAgaWYgKCF0b0pTRE9NV2luZG93
KGV4ZWNTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSkKQEAgLTQ4NTEsNyArNDg1MSw3IEBA
IHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9tSlNWYWx1ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUganNWYWx1CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBjb3JlRnJhbWUt
PnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KHNjcmlwdCwgdHJ1ZSkuanNWYWx1ZSgpOwogICAgIGlm
ICghcmVzdWx0KSAvLyBGSVhNRTogcGFzcyBlcnJvcnMKICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
SlNMb2NrSG9sZGVyIGxvY2soY29yZUZyYW1lLT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0KG1haW5U
aHJlYWROb3JtYWxXb3JsZCgpKS0+Z2xvYmFsRXhlYygpKTsKKyAgICBKU0xvY2sgbG9jayhTaWxl
bmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIHJldHVybiBhZURlc2NGcm9tSlNWYWx1ZShjb3JlRnJh
bWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5nbG9i
YWxFeGVjKCksIHJlc3VsdCk7CiB9CiAKQEAgLTY1NjAsOCArNjU2MCw4IEBAIHN0YXRpYyB2b2lk
IGdsaWJDb250ZXh0SXRlcmF0aW9uQ2FsbGJhY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVu
TG9vcEFjdGl2aXR5CiAKIC0gKEpTVmFsdWVSZWYpX2NvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNp
dGVkSW5mbzooSlNDb250ZXh0UmVmKWNvbnRleHQgZm9yRWxlbWVudDooSlNWYWx1ZVJlZil2YWx1
ZQogeworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgRXhlY1N0
YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
ICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7CiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9KUyhleGVjLCB2YWx1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9x
dC9BcGkvcXdlYmZyYW1lLmNwcAppbmRleCAwMzYwNjM4MjE1MGU5NzFlZTZjMTE5NDZlOGY0YTc2
ZTViNGE0NzMzLi5iNzJkNGU0N2FkNzgwZThkNjY0YzA5OGYxZjM4Njg3OTRhY2U3OTc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKQEAgLTUwNiwxMiArNTA2LDEzIEBAIHN0YXRpYyBK
U1ZhbHVlUmVmIHF0U2VuZGVyQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmLCBKU09iamVjdFJlCiAKIHZvaWQgUVdlYkZyYW1lUHJpdmF0ZTo6YWRkUXRTZW5kZXJUb0ds
b2JhbE9iamVjdCgpCiB7CisgICAgSlNDOjpKU0xvY2sgbG9jayhKU0M6OlNpbGVuY2VBc3NlcnRp
b25zT25seSk7CisKICAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gdG9KU0RPTVdpbmRvdyhmcmFt
ZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogICAgIFFfQVNTRVJUKHdpbmRvdyk7CiAKICAg
ICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHdpbmRvdy0+Z2xvYmFsRXhlYygpOwogICAgIFFfQVNT
RVJUKGV4ZWMpOwotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAKICAgICBKU0Nv
bnRleHRSZWYgY29udGV4dCA9IDo6dG9SZWYoZXhlYyk7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IHByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
Il9fcXRfc2VuZGVyX18iKSk7CkBAIC02NTYsNiArNjU3LDcgQEAgdm9pZCBRV2ViRnJhbWU6OmFk
ZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdChjb25zdCBRU3RyaW5nICZuYW1lLCBRT2JqZWN0ICpv
YmplY3QKICAgICAgICAgcmV0dXJuOwogI2lmIFVTRShKU0MpCiAgICAgSlNDOjpCaW5kaW5nczo6
UXRJbnN0YW5jZTo6VmFsdWVPd25lcnNoaXAgdmFsdWVPd25lcnNoaXAgPSBzdGF0aWNfY2FzdDxK
U0M6OkJpbmRpbmdzOjpRdEluc3RhbmNlOjpWYWx1ZU93bmVyc2hpcD4ob3duZXJzaGlwKTsKKyAg
ICBKU0M6OkpTTG9jayBsb2NrKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBKU0RP
TVdpbmRvdyogd2luZG93ID0gdG9KU0RPTVdpbmRvdyhkLT5mcmFtZSwgbWFpblRocmVhZE5vcm1h
bFdvcmxkKCkpOwogICAgIEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3QqIHJvb3Q7CiAgICAgaWYg
KHZhbHVlT3duZXJzaGlwID09IEpTQzo6QmluZGluZ3M6OlF0SW5zdGFuY2U6OlF0T3duZXJzaGlw
KQpAQCAtNjczLDcgKzY3NSw2IEBAIHZvaWQgUVdlYkZyYW1lOjphZGRUb0phdmFTY3JpcHRXaW5k
b3dPYmplY3QoY29uc3QgUVN0cmluZyAmbmFtZSwgUU9iamVjdCAqb2JqZWN0CiAgICAgfQogCiAg
ICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB3aW5kb3ctPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogCiAgICAgSlNDOjpKU09iamVjdCogcnVudGltZU9i
amVjdCA9CiAgICAgICAgICAgICBKU0M6OkJpbmRpbmdzOjpRdEluc3RhbmNlOjpnZXRRdEluc3Rh
bmNlKG9iamVjdCwgcm9vdCwgdmFsdWVPd25lcnNoaXApLT5jcmVhdGVSdW50aW1lT2JqZWN0KGV4
ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAppbmRleCBhY2M2NjM1YzM4YzA4M2FiODJkYmVkMTA5
Y2I1YWYwMDBmMmI5YzgxLi4zODE0ZDM1NjkyOGZjY2ZiODA0Y2MyZWYxNTdmN2JjZGY1ZWFmNmQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcApAQCAtMTA4NiwxMiArMTA4NiwxMyBAQCB2b2lkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjppbmplY3RJbnRlcm5hbHNPYmplY3QoUVdlYkZyYW1lKiBm
cmFtZSkKIHsKICAgICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0gUVdlYkZyYW1lUHJpdmF0
ZTo6Y29yZShmcmFtZSk7CiAjaWYgVVNFKEpTQykKKyAgICBKU0M6OkpTTG9jayBsb2NrKEpTQzo6
U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKwogICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSB0b0pT
RE9NV2luZG93KGNvcmVGcmFtZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogICAgIFFfQVNT
RVJUKHdpbmRvdyk7CiAKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHdpbmRvdy0+Z2xvYmFs
RXhlYygpOwogICAgIFFfQVNTRVJUKGV4ZWMpOwotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2so
ZXhlYyk7CiAKICAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IHRvUmVmKGV4ZWMpOwogICAgIFdl
YkNvcmVUZXN0U3VwcG9ydDo6aW5qZWN0SW50ZXJuYWxzT2JqZWN0KGNvbnRleHQpOwpAQCAtMTEx
MiwxMiArMTExMywxMyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZXNldEludGVy
bmFsc09iamVjdChRV2ViRnJhbWUqIGZyYW1lKQogewogICAgIFdlYkNvcmU6OkZyYW1lKiBjb3Jl
RnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKGZyYW1lKTsKICNpZiBVU0UoSlNDKQorICAg
IEpTQzo6SlNMb2NrIGxvY2soSlNDOjpTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworCiAgICAgSlNE
T01XaW5kb3cqIHdpbmRvdyA9IHRvSlNET01XaW5kb3coY29yZUZyYW1lLCBtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSk7CiAgICAgUV9BU1NFUlQod2luZG93KTsKIAogICAgIEpTQzo6RXhlY1N0YXRl
KiBleGVjID0gd2luZG93LT5nbG9iYWxFeGVjKCk7CiAgICAgUV9BU1NFUlQoZXhlYyk7Ci0gICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKIAogICAgIEpTQ29udGV4dFJlZiBjb250ZXh0
ID0gdG9SZWYoZXhlYyk7CiAgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpyZXNldEludGVybmFsc09i
amVjdChjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdGF0
aXN0aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAppbmRl
eCBjMWNhOWYyMTRmMjQ5YzBhNDlmMWZjYjEyMmYwNmFkMzQ5M2I0YjE5Li4wZTMwNTc2ODJkNmNj
NzFiNDQ0ZWNkZWUxMTI4ODM1NTMxZTc4MDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN0
YXRpc3RpY3MuY3BwCkBAIC05OCw3ICs5OCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRPYmplY3RzQ291bnQoCiAgICAgaWYgKCFjb3Vu
dCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIEpTTG9ja0hvbGRlciBsb2NrKEpT
RE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5j
ZUFzc2VydGlvbnNPbmx5KTsKICAgICAqY291bnQgPSAoVUlOVClKU0RPTVdpbmRvdzo6Y29tbW9u
SlNHbG9iYWxEYXRhKCktPmhlYXAub2JqZWN0Q291bnQoKTsKICAgICByZXR1cm4gU19PSzsKIH0K
QEAgLTEwOSw3ICsxMDksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNvcmVTdGF0
aXN0aWNzOjpqYXZhU2NyaXB0R2xvYmFsT2JqZWN0c0NvdW50KAogICAgIGlmICghY291bnQpCiAg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhKU0RPTVdp
bmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3Nl
cnRpb25zT25seSk7CiAgICAgKmNvdW50ID0gKFVJTlQpSlNET01XaW5kb3c6OmNvbW1vbkpTR2xv
YmFsRGF0YSgpLT5oZWFwLmdsb2JhbE9iamVjdENvdW50KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CkBAIC0xMjAsNyArMTIwLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb3JlU3Rh
dGlzdGljczo6amF2YVNjcmlwdFByb3RlY3RlZE9iamVjdHNDb3VudCgKICAgICBpZiAoIWNvdW50
KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soSlNE
T01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOwogICAgICpjb3VudCA9IChVSU5UKUpTRE9NV2luZG93Ojpjb21tb25K
U0dsb2JhbERhdGEoKS0+aGVhcC5wcm90ZWN0ZWRPYmplY3RDb3VudCgpOwogICAgIHJldHVybiBT
X09LOwogfQpAQCAtMTMxLDcgKzEzMSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Q29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRQcm90ZWN0ZWRHbG9iYWxPYmplY3RzQ291CiAgICAg
aWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIEpTTG9ja0hvbGRl
ciBsb2NrKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgSlNMb2NrIGxv
Y2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAqY291bnQgPSAoVUlOVClKU0RPTVdpbmRv
dzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAucHJvdGVjdGVkR2xvYmFsT2JqZWN0Q291bnQo
KTsKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTEzOSw3ICsxMzksNyBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkNvcmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0UHJvdGVjdGVkR2xvYmFs
T2JqZWN0c0NvdQogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb3JlU3RhdGlzdGljczo6
amF2YVNjcmlwdFByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoIAogICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSVByb3BlcnR5QmFnMioqIHR5cGVOYW1lc0FuZENvdW50cykKIHsKLSAgICBKU0xvY2tI
b2xkZXIgbG9jayhKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAgIEpTTG9j
ayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgT3duUHRyPFR5cGVDb3VudFNldD4g
anNPYmplY3RUeXBlTmFtZXMoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFw
LnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoKSk7CiAgICAgdHlwZWRlZiBUeXBlQ291bnRTZXQ6
OmNvbnN0X2l0ZXJhdG9yIEl0ZXJhdG9yOwogICAgIEl0ZXJhdG9yIGVuZCA9IGpzT2JqZWN0VHlw
ZU5hbWVzLT5lbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAppbmRleCA5Y2UxYzc4MTE1NWRmZDA3
YTczMTI4ZTIwZmQyZDFhZmQ2MWI3MmNiLi4yN2QyNGYyZmI3OTRkZjlhZjNkMTU3ZTM3ZjYyOTNk
YjQ3YzNiNWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCkBAIC0xMjYsNiArMTI2LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIEpTQzo6SlNHbG9iYWxPYmplY3Q7CiB1c2luZyBKU0M6
OkpTTG9jazsKIHVzaW5nIEpTQzo6SlNWYWx1ZTsKK3VzaW5nIEpTQzo6U2lsZW5jZUFzc2VydGlv
bnNPbmx5OwogCiAjZGVmaW5lIEZMQVNIX1JFRFJBVyAwCiAKQEAgLTI1MjcsOCArMjUyOCw4IEBA
IEhSRVNVTFQgV2ViRnJhbWU6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRJblNjcmlwdFdv
cmxkKElXZWJTY3JpcHRXb3JsZCogaVdvCiAgICAgaWYgKCFyZXN1bHQgfHwgIXJlc3VsdC5pc0Jv
b2xlYW4oKSAmJiAhcmVzdWx0LmlzU3RyaW5nKCkgJiYgIXJlc3VsdC5pc051bWJlcigpKQogICAg
ICAgICByZXR1cm4gU19PSzsKIAorICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25s
eSk7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBhbnlXb3JsZEdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpOwotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgU3RyaW5n
IHJlc3VsdFN0cmluZyA9IHVzdHJpbmdUb1N0cmluZyhyZXN1bHQudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKTsKICAgICAqZXZhbHVhdGlvblJlc3VsdCA9IEJTdHJpbmcocmVzdWx0U3RyaW5n
KS5yZWxlYXNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkphdmFTY3Jp
cHRDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rv
ci5jcHAKaW5kZXggN2IyZjY3ZmE2M2QzMGZmMmNlYjY2NWY5NDM5MjhiZGRiMjBjZGQ5OS4uY2I1
NmIyN2UyMzg5NmZmODE5MGVkMzIwNzgyNDg4Y2E5ZDA5MTQwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6Om9iamVjdENvdW50
KAogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgIH0KIAotICAgIEpTTG9ja0hvbGRlciBs
b2NrKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgSlNMb2NrIGxvY2so
U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAqY291bnQgPSAoVUlOVClKU0RPTVdpbmRvdzo6
Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAub2JqZWN0Q291bnQoKTsKICAgICByZXR1cm4gU19P
SzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggYjMyYzhiNGJmYTYxZWQwNjA3Njk4YTc3MGU1
ZmYyYmRmYjRlNmFjYS4uODgwYmMxYmQwYmZhZTI0OTUxNTE2MjFiN2M4ZjJmYmZhNWU0ZmM3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTMxOTQsOCArMzE5NCw4IEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViVmlldzo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJp
bmcoCiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25SZXN1bHQpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAgICAgZWxzZSBpZiAoc2NyaXB0RXhlY3V0aW9uUmVzdWx0LmlzU3RyaW5nKCkpIHsKKyAg
ICAgICAgSlNMb2NrIGxvY2soSlNDOjpTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAgICBK
U0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGNvcmVGcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdCht
YWluVGhyZWFkTm9ybWFsV29ybGQoKSktPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAgICAgKnJlc3VsdCA9IEJTdHJpbmcodXN0cmluZ1Rv
U3RyaW5nKHNjcmlwdEV4ZWN1dGlvblJlc3VsdC5nZXRTdHJpbmcoZXhlYykpKTsKICAgICB9CiAK
QEAgLTU4NTEsOCArNTg1MSw4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
cmVwb3J0RXhjZXB0aW9uKAogICAgIGlmICghY29udGV4dCB8fCAhZXhjZXB0aW9uKQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwogCisgICAgSlNMb2NrIGxvY2soSlNDOjpTaWxlbmNlQXNzZXJ0aW9u
c09ubHkpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUgPSB0b0pTKGNvbnRleHQpOwot
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZXhlY1N0YXRlKTsKIAogICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgY29udGV4dCBoYXMgYSBET01XaW5kb3cgZ2xvYmFsIG9iamVjdCwgb3RoZXJ3aXNlIHRo
aXMgY29udGV4dCBkaWRuJ3Qgb3JpZ2luYXRlIGZyb20gYSBXZWJWaWV3LgogICAgIGlmICghdG9K
U0RPTVdpbmRvdyhleGVjU3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpCkBAIC01ODc4LDkg
KzU4NzgsOCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmVsZW1lbnRGcm9t
SlMoCiAgICAgaWYgKCFub2RlT2JqZWN0KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAg
SlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOwotICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2soZXhlYyk7Ci0gICAgRWxlbWVudCogZWx0ID0gdG9FbGVtZW50KHRvSlMoZXhlYywg
bm9kZU9iamVjdCkpOworICAgIEpTTG9jayBsb2NrKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5
KTsKKyAgICBFbGVtZW50KiBlbHQgPSB0b0VsZW1lbnQodG9KUyh0b0pTKGNvbnRleHQpLCBub2Rl
T2JqZWN0KSk7CiAgICAgaWYgKCFlbHQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViTWVtb3J5U2FtcGxlci5tYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYk1lbW9yeVNhbXBsZXIubWFjLm1tCmluZGV4
IDI5Y2RkZGMwZjk5ZDE5MzhmMzQ3ZTU5ZTQzMjk5MjA0YzQ2NzhkYzAuLjZhOTQ3YWU0OGFiMzQ4
N2UzZjgwY2MxYTgxZTljNzFlOTZkOTlmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvV2ViTWVtb3J5U2FtcGxlci5tYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9XZWJNZW1vcnlTYW1wbGVyLm1hYy5tbQpAQCAtMTE2LDcgKzExNiw3IEBAIFdlYk1l
bW9yeVN0YXRpc3RpY3MgV2ViTWVtb3J5U2FtcGxlcjo6c2FtcGxlV2ViS2l0KCkgY29uc3QKICAg
ICB0b3RhbEJ5dGVzSW5Vc2UgKz0gZmFzdE1hbGxvY0J5dGVzSW5Vc2U7CiAgICAgdG90YWxCeXRl
c0NvbW1pdHRlZCArPSBmYXN0TWFsbG9jQnl0ZXNDb21taXR0ZWQ7CiAgICAgCi0gICAgSlNMb2Nr
SG9sZGVyIGxvY2soSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAgICBKU0xv
Y2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIHNpemVfdCBqc2NIZWFwQnl0ZXNJ
blVzZSA9IEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVhcC5zaXplKCk7CiAg
ICAgc2l6ZV90IGpzY0hlYXBCeXRlc0NvbW1pdHRlZCA9IEpTRE9NV2luZG93Ojpjb21tb25KU0ds
b2JhbERhdGEoKS0+aGVhcC5jYXBhY2l0eSgpOwogICAgIHRvdGFsQnl0ZXNJblVzZSArPSBqc2NI
ZWFwQnl0ZXNJblVzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNTBmYWNiYmYxZDllMDBj
NGRjNWIwOTFhNmZhNDFlMmI5Y2ViZDI3OC4uYzZlOWE2MGI1ZTdhNjlkODllOGNjYzAzMTE2ZTgx
YzllMzEyMGY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTQwOSw3ICs0MDksNyBAQCB2
b2lkIEluamVjdGVkQnVuZGxlOjpnYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3RzT25BbHRl
cm5hdGVUaHJlYWRGb3JEZWJ1Z2dpbgogCiBzaXplX3QgSW5qZWN0ZWRCdW5kbGU6OmphdmFTY3Jp
cHRPYmplY3RzQ291bnQoKQogewotICAgIEpTTG9ja0hvbGRlciBsb2NrKEpTRE9NV2luZG93Ojpj
b21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNP
bmx5KTsKICAgICByZXR1cm4gSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFw
Lm9iamVjdENvdW50KCk7CiB9CiAKQEAgLTQxOCw4ICs0MTgsOCBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlOjpyZXBvcnRFeGNlcHRpb24oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgZXhj
ZXB0aW9uKQogICAgIGlmICghY29udGV4dCB8fCAhZXhjZXB0aW9uKQogICAgICAgICByZXR1cm47
CiAKKyAgICBKU0xvY2sgbG9jayhKU0M6OlNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgSlND
OjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZSA9IHRvSlMoY29udGV4dCk7Ci0gICAgSlNMb2NrSG9sZGVy
IGxvY2soZXhlY1N0YXRlKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29udGV4dCBoYXMgYSBE
T01XaW5kb3cgZ2xvYmFsIG9iamVjdCwgb3RoZXJ3aXNlIHRoaXMgY29udGV4dCBkaWRuJ3Qgb3Jp
Z2luYXRlIGZyb20gYSBQYWdlLgogICAgIGlmICghdG9KU0RPTVdpbmRvdyhleGVjU3RhdGUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKaW5kZXggNTRmZWMwYzFhMjcz
OGEzMGM4N2MzNzkxMzI2MzY4Y2UxYWVlMmI4Mi4uZGM1OTdjNjNjY2NmYjJiZTczZmJmMmIxMjM2
MjUzNTQxZjkzODdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L09iamVjdFByb3RvdHlwZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWRlbnRpZmllclJlcC5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3dCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMTI2LDcgKzEy
NSw3IEBAIEpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIE5Q
SWRlbnRpZmllciBtZXRob2ROYW1lKQogICAgIFZPSURfVE9fTlBWQVJJQU5UKHJlc3VsdCk7CiAg
ICAgCiAgICAgewotICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNE
T01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgICAgIEpTTG9jazo6RHJv
cEFsbExvY2tzIGRyb3BBbGxMb2NrcyhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fbnBPYmplY3QtPl9jbGFzcy0+aW52b2tlKG1fbnBPYmplY3QsIG1ldGhv
ZE5hbWUsIGFyZ3VtZW50cy5kYXRhKCksIGFyZ3VtZW50Q291bnQsICZyZXN1bHQpOwogICAgICAg
ICBOUFJ1bnRpbWVPYmplY3RNYXA6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShleGVj
KTsKICAgICB9CkBAIC0xNjYsNyArMTY1LDcgQEAgSlNDOjpKU1ZhbHVlIEpTTlBPYmplY3Q6OmNh
bGxPYmplY3QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAgICAgVk9JRF9UT19OUFZBUklBTlQocmVz
dWx0KTsKIAogICAgIHsKLSAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tz
KEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAgICAgICBKU0xvY2s6
OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX25wT2JqZWN0LT5fY2xhc3MtPmludm9rZURlZmF1bHQobV9ucE9i
amVjdCwgYXJndW1lbnRzLmRhdGEoKSwgYXJndW1lbnRDb3VudCwgJnJlc3VsdCk7CiAgICAgICAg
IE5QUnVudGltZU9iamVjdE1hcDo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKGV4ZWMp
OwogICAgIH0KQEAgLTIwNiw3ICsyMDUsNyBAQCBKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgVk9JRF9UT19OUFZBUklBTlQocmVzdWx0KTsK
ICAgICAKICAgICB7Ci0gICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhK
U0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAgICAgICAgSlNMb2NrOjpE
cm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgICAg
IHJldHVyblZhbHVlID0gbV9ucE9iamVjdC0+X2NsYXNzLT5jb25zdHJ1Y3QobV9ucE9iamVjdCwg
YXJndW1lbnRzLmRhdGEoKSwgYXJndW1lbnRDb3VudCwgJnJlc3VsdCk7CiAgICAgICAgIE5QUnVu
dGltZU9iamVjdE1hcDo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKGV4ZWMpOwogICAg
IH0KQEAgLTM0MSw3ICszNDAsNyBAQCB2b2lkIEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSgogICAgIE5QUnVu
dGltZU9iamVjdE1hcDo6UGx1Z2luUHJvdGVjdG9yIHByb3RlY3Rvcih0aGlzT2JqZWN0LT5tX29i
amVjdE1hcCk7CiAKICAgICB7Ci0gICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxM
b2NrcyhKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAgICAgICAgSlNM
b2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAg
ICAgICAgIHRoaXNPYmplY3QtPm1fbnBPYmplY3QtPl9jbGFzcy0+c2V0UHJvcGVydHkodGhpc09i
amVjdC0+bV9ucE9iamVjdCwgbnBJZGVudGlmaWVyLCAmdmFyaWFudCk7CiAKICAgICAgICAgTlBS
dW50aW1lT2JqZWN0TWFwOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoZXhlYyk7CkBA
IC0zODEsNyArMzgwLDcgQEAgYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShFeGVjU3Rh
dGUqIGV4ZWMsIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCiAgICAgTlBSdW50aW1lT2JqZWN0
TWFwOjpQbHVnaW5Qcm90ZWN0b3IgcHJvdGVjdG9yKG1fb2JqZWN0TWFwKTsKIAogICAgIHsKLSAg
ICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6
Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9w
QWxsTG9ja3MoU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAgICAgICAvLyBGSVhNRTogU2hv
dWxkIHdlIHRocm93IGFuIGV4Y2VwdGlvbiBpZiByZW1vdmVQcm9wZXJ0eSByZXR1cm5zIGZhbHNl
PwogICAgICAgICBpZiAoIW1fbnBPYmplY3QtPl9jbGFzcy0+cmVtb3ZlUHJvcGVydHkobV9ucE9i
amVjdCwgcHJvcGVydHlOYW1lKSkKQEAgLTQxNCw3ICs0MTMsNyBAQCB2b2lkIEpTTlBPYmplY3Q6
OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eQogICAgIE5QUnVudGltZU9iamVjdE1hcDo6UGx1Z2luUHJvdGVjdG9yIHByb3RlY3Rv
cih0aGlzT2JqZWN0LT5tX29iamVjdE1hcCk7CiAgICAgCiAgICAgewotICAgICAgICBKU0xvY2s6
OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2Jh
bERhdGEoKSk7CisgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhTaWxl
bmNlQXNzZXJ0aW9uc09ubHkpOwogCiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgdGhyb3cg
YW4gZXhjZXB0aW9uIGlmIGVudW1lcmF0ZSByZXR1cm5zIGZhbHNlPwogICAgICAgICBpZiAoIXRo
aXNPYmplY3QtPm1fbnBPYmplY3QtPl9jbGFzcy0+ZW51bWVyYXRlKHRoaXNPYmplY3QtPm1fbnBP
YmplY3QsICZpZGVudGlmaWVycywgJmlkZW50aWZpZXJDb3VudCkpCkBAIC00NjIsNyArNDYxLDcg
QEAgSlNWYWx1ZSBKU05QT2JqZWN0Ojpwcm9wZXJ0eUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmEKICAgICAKICAgICBib29sIHJldHVyblZhbHVlOwog
ICAgIHsKLSAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTRE9NV2lu
ZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAgICAgICBKU0xvY2s6OkRyb3BBbGxM
b2NrcyBkcm9wQWxsTG9ja3MoU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgTlBJZGVu
dGlmaWVyIG5wSWRlbnRpZmllciA9IG5wSWRlbnRpZmllckZyb21JZGVudGlmaWVyKHByb3BlcnR5
TmFtZSk7CiAgICAgICAgIHJldHVyblZhbHVlID0gdGhpc09iai0+bV9ucE9iamVjdC0+X2NsYXNz
LT5nZXRQcm9wZXJ0eSh0aGlzT2JqLT5tX25wT2JqZWN0LCBucElkZW50aWZpZXIsICZyZXN1bHQp
OwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAppbmRleCAxZmFkYzE3N2Y3M2ZjYmU0MWY3OWQ3
YTc3ZjAzYTcyMzNhMTM3YTc2Li40Y2VhN2U1ZmFhNzZmOTdkYTg5NGJiNzAyM2ZkZWNmNjBlN2U1
YjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTlBKU09iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05QSlNPYmplY3QuY3BwCkBAIC05OSw3ICs5OSw3IEBAIGJvb2wgTlBKU09iamVj
dDo6aGFzTWV0aG9kKE5QSWRlbnRpZmllciBtZXRob2ROYW1lKQogICAgIGlmICghZXhlYykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAg
SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAgIEpTVmFsdWUgdmFsdWUg
PSBtX2pzT2JqZWN0LT5nZXQoZXhlYywgaWRlbnRpZmllckZyb21JZGVudGlmaWVyUmVwKGV4ZWMs
IGlkZW50aWZpZXJSZXApKTsgICAgCiAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKQEAgLTEx
OSw3ICsxMTksNyBAQCBib29sIE5QSlNPYmplY3Q6Omludm9rZShOUElkZW50aWZpZXIgbWV0aG9k
TmFtZSwgY29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbgogICAgIGlmICghZXhlYykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwor
ICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKICAgICBKU1ZhbHVlIGZ1
bmN0aW9uID0gbV9qc09iamVjdC0+Z2V0KGV4ZWMsIGlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJl
cChleGVjLCBpZGVudGlmaWVyUmVwKSk7CiAgICAgcmV0dXJuIGludm9rZShleGVjLCBtX29iamVj
dE1hcC0+Z2xvYmFsT2JqZWN0KCksIGZ1bmN0aW9uLCBhcmd1bWVudHMsIGFyZ3VtZW50Q291bnQs
IHJlc3VsdCk7CkBAIC0xMzEsNyArMTMxLDcgQEAgYm9vbCBOUEpTT2JqZWN0OjppbnZva2VEZWZh
dWx0KGNvbnN0IE5QVmFyaWFudCogYXJndW1lbnRzLCB1aW50MzJfdCBhcmd1bWVudENvdW4KICAg
ICBpZiAoIWV4ZWMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEpTTG9ja0hvbGRlciBs
b2NrKGV4ZWMpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKICAg
ICBKU1ZhbHVlIGZ1bmN0aW9uID0gbV9qc09iamVjdC5nZXQoKTsKICAgICByZXR1cm4gaW52b2tl
KGV4ZWMsIG1fb2JqZWN0TWFwLT5nbG9iYWxPYmplY3QoKSwgZnVuY3Rpb24sIGFyZ3VtZW50cywg
YXJndW1lbnRDb3VudCwgcmVzdWx0KTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBib29sIE5QSlNPYmpl
Y3Q6Omhhc1Byb3BlcnR5KE5QSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIGlmICghZXhlYykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMp
OworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKICAgICBib29sIHJl
c3VsdDsKICAgICBpZiAoaWRlbnRpZmllclJlcC0+aXNTdHJpbmcoKSkKQEAgLTE2NSw3ICsxNjUs
NyBAQCBib29sIE5QSlNPYmplY3Q6OmdldFByb3BlcnR5KE5QSWRlbnRpZmllciBwcm9wZXJ0eU5h
bWUsIE5QVmFyaWFudCogcmVzdWx0KQogICAgIGlmICghZXhlYykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgSlNMb2NrIGxvY2soU2ls
ZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBKU1ZhbHVlIGpzUmVzdWx0OwogICAgIGlmIChpZGVu
dGlmaWVyUmVwLT5pc1N0cmluZygpKQogICAgICAgICBqc1Jlc3VsdCA9IG1fanNPYmplY3QtPmdl
dChleGVjLCBpZGVudGlmaWVyRnJvbUlkZW50aWZpZXJSZXAoZXhlYywgaWRlbnRpZmllclJlcCkp
OwpAQCAtMTg1LDcgKzE4NSw3IEBAIGJvb2wgTlBKU09iamVjdDo6c2V0UHJvcGVydHkoTlBJZGVu
dGlmaWVyIHByb3BlcnR5TmFtZSwgY29uc3QgTlBWYXJpYW50KiB2YWx1ZSkKICAgICBpZiAoIWV4
ZWMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhl
eGVjKTsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCiAgICAgSlNW
YWx1ZSBqc1ZhbHVlID0gbV9vYmplY3RNYXAtPmNvbnZlcnROUFZhcmlhbnRUb0pTVmFsdWUoZXhl
YywgbV9vYmplY3RNYXAtPmdsb2JhbE9iamVjdCgpLCAqdmFsdWUpOwogICAgIGlmIChpZGVudGlm
aWVyUmVwLT5pc1N0cmluZygpKSB7CkBAIC0yMDYsNyArMjA2LDcgQEAgYm9vbCBOUEpTT2JqZWN0
OjpyZW1vdmVQcm9wZXJ0eShOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKQogICAgIGlmICghZXhl
YykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7
CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBpZiAoaWRlbnRp
ZmllclJlcC0+aXNTdHJpbmcoKSkgewogICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBp
ZGVudGlmaWVyRnJvbUlkZW50aWZpZXJSZXAoZXhlYywgaWRlbnRpZmllclJlcCk7CiAgICAgICAg
IApAQCAtMjM1LDcgKzIzNSw3IEBAIGJvb2wgTlBKU09iamVjdDo6ZW51bWVyYXRlKE5QSWRlbnRp
ZmllcioqIGlkZW50aWZpZXJzLCB1aW50MzJfdCogaWRlbnRpZmllckNvdW50CiAgICAgaWYgKCFl
eGVjKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgSlNMb2NrSG9sZGVyIGxvY2so
ZXhlYyk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAgIFBy
b3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhlYyk7CiAgICAgbV9qc09iamVjdC0+bWV0
aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhtX2pzT2JqZWN0LmdldCgpLCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKQEAgLTI1Nyw3ICsyNTcsNyBA
QCBib29sIE5QSlNPYmplY3Q6OmNvbnN0cnVjdChjb25zdCBOUFZhcmlhbnQqIGFyZ3VtZW50cywg
dWludDMyX3QgYXJndW1lbnRDb3VudCwgTgogICAgIGlmICghZXhlYykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgSlNMb2NrIGxvY2so
U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0
YTsKICAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKG1f
anNPYmplY3QuZ2V0KCksIGNvbnN0cnVjdERhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0
TWFwLmNwcAppbmRleCAyYjExNWYxZTRlZDUwYWEzMTdkMDc4ODNjYzZmMjFmNTczZDRjYTdiLi44
ZjAzN2FlYWJjYjIxMTY0MWQ4OWE4ZmZkZjNiNDlmZTBiYTRlMDBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFw
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBS
dW50aW1lT2JqZWN0TWFwLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIEpTVmFsdWUgTlBSdW50aW1l
T2JqZWN0TWFwOjpjb252ZXJ0TlBWYXJpYW50VG9KU1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBKU0M6CiAKIHZvaWQgTlBSdW50aW1lT2JqZWN0TWFwOjpjb252ZXJ0SlNWYWx1ZVRvTlBWYXJp
YW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgTlBWYXJpYW50JiB2YXJpYW50KQog
ewotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7CiAKICAgICBWT0lEX1RPX05QVkFSSUFOVCh2YXJpYW50KTsKICAgICAK
QEAgLTE4Niw3ICsxODYsNyBAQCBib29sIE5QUnVudGltZU9iamVjdE1hcDo6ZXZhbHVhdGUoTlBP
YmplY3QqIG5wT2JqZWN0LCBjb25zdCBTdHJpbmcmc2NyaXB0U3RyaW5nLAogCiAgICAgRXhlY1N0
YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgCi0gICAgSlNMb2Nr
SG9sZGVyIGxvY2soZXhlYyk7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGdldE9yQ3JlYXRlSlNPYmplY3QoZ2xvYmFsT2Jq
ZWN0LmdldCgpLCBucE9iamVjdCk7CiAKICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50
aW1lb3V0Q2hlY2tlci5zdGFydCgpOwpAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgTlBSdW50aW1l
T2JqZWN0TWFwOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4
ZWMpOworICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAg
ICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIHN0cmluZ1RvVVN0cmluZyhnbG9i
YWxFeGNlcHRpb25TdHJpbmcoKSkpKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCBmMzZmYzAyMzhmZWFkM2VhY2Y2
YWMxMzJjOTBjOTUwODg5OTRjOTU0Li5kYjJlZDQxMjg3MjI2OWNlZmU4OWE4YTM1OTBkMzA1ZTcw
M2YwNzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAKQEAgLTY0Miw3ICs2NDIsNyBAQCBKU1ZhbHVlUmVmIFdlYkZyYW1lOjpqc1dyYXBwZXJG
b3JXb3JsZChJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUqIG5vZGVIYW5kbGUsIEluagogICAgIEpT
RE9NV2luZG93KiBnbG9iYWxPYmplY3QgPSBtX2NvcmVGcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9i
amVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAg
SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICByZXR1cm4gdG9SZWYoZXhl
YywgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG5vZGVIYW5kbGUtPmNvcmVOb2RlKCkpKTsKIH0K
IApAQCAtNjU0LDcgKzY1NCw3IEBAIEpTVmFsdWVSZWYgV2ViRnJhbWU6OmpzV3JhcHBlckZvcldv
cmxkKEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUqIHJhbmdlSGFuZGxlLCBJCiAgICAgSlNET01X
aW5kb3cqIGdsb2JhbE9iamVjdCA9IG1fY29yZUZyYW1lLT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0
KHdvcmxkLT5jb3JlV29ybGQoKSk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCk7CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBKU0xv
Y2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIHJldHVybiB0b1JlZihleGVjLCB0
b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgcmFuZ2VIYW5kbGUtPmNvcmVSYW5nZSgpKSk7CiB9CiAK
QEAgLTY3MSw3ICs2NzEsNyBAQCBKU1ZhbHVlUmVmIFdlYkZyYW1lOjpjb21wdXRlZFN0eWxlSW5j
bHVkaW5nVmlzaXRlZEluZm8oSlNPYmplY3RSZWYgZWxlbWVudCkKIAogICAgIFJlZlB0cjxDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uOjpjcmVhdGUoc3RhdGljX2Nhc3Q8SlNFbGVtZW50Kj4odG9KUyhlbGVtZW50KSktPmltcGwo
KSwgdHJ1ZSk7CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBKU0xvY2sgbG9j
ayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIHJldHVybiB0b1JlZihleGVjLCB0b0pTKGV4
ZWMsIGdsb2JhbE9iamVjdCwgc3R5bGUuZ2V0KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGYwMTc4MTQ5ZmY0YTYxMGI1NmM3
NDRmZTI4NjNlNjdhZTVmNDk2ZDguLjE3MzZiYzQ2YTBkNTU1Yjc3ZjZiM2ZmMWFkOTZhN2JkNjcz
MzdhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTE4MTUsNyArMTgxNSw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCB1aW50NjRfdCBjYWxsYmFja0lECiAgICAgUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVlOwogICAgIENv
cmVJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKIAotICAgIEpTTG9ja0hvbGRlciBs
b2NrKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgSlNMb2NrIGxvY2so
U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBpZiAoSlNWYWx1ZSByZXN1bHRWYWx1ZSA9IG1f
bWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoc2NyaXB0LCB0
cnVlKS5qc1ZhbHVlKCkpIHsKICAgICAgICAgaWYgKChzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShtX21haW5GcmFtZS0+anNDb250ZXh0KCksIHRv
UmVmKG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdChtYWlu
VGhyZWFkTm9ybWFsV29ybGQoKSktPmdsb2JhbEV4ZWMoKSwgcmVzdWx0VmFsdWUpLCAwKSkpCiAg
ICAgICAgICAgICBkYXRhUmVmZXJlbmNlID0gc2VyaWFsaXplZFJlc3VsdFZhbHVlLT5kYXRhKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAxNDI0YTFhNDA2
YWZkODdkNDJmZmQ4NmMwNGNmZmE1NWFkMWM5MTdhLi4yYjAzODJkYmE2MDdkY2MzNDFkNjRhYjAw
MWNjODdkZDM0N2ZhMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKQEAgLTkyMCw3ICs5MjAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmdldFdlYkNvcmVTdGF0aXN0
aWNzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgCiAgICAgLy8gR2F0aGVyIEphdmFTY3JpcHQg
c3RhdGlzdGljcy4KICAgICB7Ci0gICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKEpTRE9NV2luZG93
Ojpjb21tb25KU0dsb2JhbERhdGEoKSk7CisgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3Nl
cnRpb25zT25seSk7CiAgICAgICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KCJKYXZhU2Ny
aXB0T2JqZWN0c0NvdW50IiwgSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFw
Lm9iamVjdENvdW50KCkpOwogICAgICAgICBkYXRhLnN0YXRpc3RpY3NOdW1iZXJzLnNldCgiSmF2
YVNjcmlwdEdsb2JhbE9iamVjdHNDb3VudCIsIEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERh
dGEoKS0+aGVhcC5nbG9iYWxPYmplY3RDb3VudCgpKTsKICAgICAgICAgZGF0YS5zdGF0aXN0aWNz
TnVtYmVycy5zZXQoIkphdmFTY3JpcHRQcm90ZWN0ZWRPYmplY3RzQ291bnQiLCBKU0RPTVdpbmRv
dzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAucHJvdGVjdGVkT2JqZWN0Q291bnQoKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>