<?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>115657</bug_id>
          
          <creation_ts>2013-05-06 09:57:33 -0700</creation_ts>
          <short_desc>Use adoptCF and adoptNS in more places, test code and code not compiled on Mac</short_desc>
          <delta_ts>2013-05-08 00:39:24 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>885088</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-06 09:57:33 -0700</bug_when>
    <thetext>Use adoptCF and adoptNS in more places, test code and code not compiled on Mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885090</commentid>
    <comment_count>1</comment_count>
      <attachid>200716</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-06 10:01:08 -0700</bug_when>
    <thetext>Created attachment 200716
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885094</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-06 10:03:41 -0700</bug_when>
    <thetext>Attachment 200716 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/cf/win/CertificateCFWin.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.mm&apos;, u&apos;Source/WebCore/platform/graphics/ca/win/PlatformCAAnimationWin.cpp&apos;, u&apos;Source/WebCore/platform/graphics/ca/win/PlatformCALayerWin.cpp&apos;, u&apos;Source/WebCore/platform/graphics/ca/win/PlatformCALayerWinInternal.cpp&apos;, u&apos;Source/WebCore/platform/graphics/ca/win/WKCACFViewLayerTreeHost.cpp&apos;, u&apos;Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowMac.mm&apos;, u&apos;Source/WebCore/platform/graphics/win/FontCustomPlatformData.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/FontPlatformDataCGWin.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/GraphicsContextCGWin.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/ImageCGWin.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/WKCAImageQueue.cpp&apos;, u&apos;Source/WebCore/platform/image-decoders/ImageDecoder.h&apos;, u&apos;Source/WebCore/platform/network/cf/AuthenticationCF.cpp&apos;, u&apos;Source/WebCore/platform/network/cf/CookieJarCFNet.cpp&apos;, u&apos;Source/WebCore/platform/network/curl/ResourceHandleManager.cpp&apos;, u&apos;Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp&apos;, u&apos;Source/WebCore/platform/win/LocalizedStringsWin.cpp&apos;, u&apos;Source/WebCore/platform/win/SearchPopupMenuWin.cpp&apos;, u&apos;Source/WebCore/plugins/mac/PluginPackageMac.cpp&apos;, u&apos;Source/WebCore/plugins/mac/PluginViewMac.mm&apos;, u&apos;Source/WebCore/rendering/RenderThemeSafari.cpp&apos;, u&apos;Source/WebKit/win/CFDictionaryPropertyBag.cpp&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebCache.cpp&apos;, u&apos;Source/WebKit/win/WebCoreSupport/WebFrameLoaderClient.cpp&apos;, u&apos;Source/WebKit/win/WebCoreSupport/WebInspectorClient.cpp&apos;, u&apos;Source/WebKit/win/WebDatabaseManager.cpp&apos;, u&apos;Source/WebKit/win/WebDownloadCFNet.cpp&apos;, u&apos;Source/WebKit/win/WebError.cpp&apos;, u&apos;Source/WebKit/win/WebHistory.cpp&apos;, u&apos;Source/WebKit/win/WebIconDatabase.cpp&apos;, u&apos;Source/WebKit/win/WebLocalizableStrings.cpp&apos;, u&apos;Source/WebKit/win/WebMutableURLRequest.cpp&apos;, u&apos;Source/WebKit/win/WebPreferences.cpp&apos;, u&apos;Source/WebKit/win/WebView.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Shared/Downloads/cfnet/DownloadCFNet.cpp&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/DumpRenderTree/cf/WebArchiveDumpSupport.cpp&apos;, u&apos;Tools/DumpRenderTree/cg/ImageDiffCG.cpp&apos;, u&apos;Tools/DumpRenderTree/cg/PixelDumpSupportCG.cpp&apos;, u&apos;Tools/DumpRenderTree/cg/PixelDumpSupportCG.h&apos;, u&apos;Tools/DumpRenderTree/mac/MockWebNotificationProvider.mm&apos;, u&apos;Tools/DumpRenderTree/mac/PixelDumpSupportMac.mm&apos;, u&apos;Tools/DumpRenderTree/mac/TestRunnerMac.mm&apos;, u&apos;Tools/DumpRenderTree/mac/WebArchiveDumpSupportMac.mm&apos;, u&apos;Tools/DumpRenderTree/mac/WorkQueueItemMac.mm&apos;, u&apos;Tools/DumpRenderTree/win/DumpRenderTree.cpp&apos;, u&apos;Tools/DumpRenderTree/win/ImageDiffCairo.cpp&apos;, u&apos;Tools/DumpRenderTree/win/PixelDumpSupportWin.cpp&apos;, u&apos;Tools/DumpRenderTree/win/TestRunnerWin.cpp&apos;, u&apos;Tools/TestWebKitAPI/Tests/CustomProtocolsSyncXHRTest.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/TestWebKitAPI/mac/InstanceMethodSwizzler.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/WTF/cf/RetainPtrHashing.cpp&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/FindMatches.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/WebArchive.cpp&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/mac/GetBackingScaleFactor.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/win/DoNotCopyANullCFURLResponse.cpp&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/AcceptsFirstMouse.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/AttributedString.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/BackForwardList.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/CancelLoadFromResourceLoadDelegate.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/DOMHTMLTableCellCellAbove.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/DOMRangeOfString.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/DeviceScaleFactorInDashboardRegions.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/DeviceScaleFactorOnBack.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/DynamicDeviceScaleFactor.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/HTMLCollectionNamedItem.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/HTMLFormCollectionNamedItem.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/InspectorBar.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/MemoryCacheDisableWithinResourceLoadDelegate.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/MemoryCachePruneWithinResourceLoadDelegate.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/RenderedImageFromDOMRange.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/SetAndUpdateCacheModel.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/SetDocumentURI.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/SimplifyMarkup.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/StringByEvaluatingJavaScriptFromString.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/WillSendSubmitEvent.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/WindowlessWebViewWithMedia.mm&apos;, u&apos;Tools/TestWebKitAPI/mac/PlatformUtilitiesMac.mm&apos;, u&apos;Tools/TestWebKitAPI/mac/WebKitAgnosticTest.mm&apos;, u&apos;Tools/WebKitTestRunner/InjectedBundle/mac/InjectedBundlePageMac.mm&apos;, u&apos;Tools/WebKitTestRunner/InjectedBundle/mac/TestRunnerMac.mm&apos;, u&apos;Tools/WebKitTestRunner/cg/TestInvocationCG.cpp&apos;, u&apos;Tools/WebKitTestRunner/mac/EventSenderProxy.mm&apos;, u&apos;Tools/WebKitTestRunner/mac/PlatformWebViewMac.mm&apos;, u&apos;Tools/WebKitTestRunner/win/TestControllerWin.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/win/LocalizedStringsWin.cpp:81:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/rendering/RenderThemeSafari.cpp:763:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/rendering/RenderThemeSafari.cpp:768:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/rendering/RenderThemeSafari.cpp:772:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/rendering/RenderThemeSafari.cpp:977:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/platform/graphics/win/FontPlatformDataCGWin.cpp:91:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/platform/graphics/win/FontPlatformDataCGWin.cpp:98:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 7 in 94 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885110</commentid>
    <comment_count>3</comment_count>
      <attachid>200716</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-06 10:33:54 -0700</bug_when>
    <thetext>Comment on attachment 200716
Patch

Attachment 200716 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/378188</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885755</commentid>
    <comment_count>4</comment_count>
      <attachid>200910</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-07 09:10:23 -0700</bug_when>
    <thetext>Created attachment 200910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885760</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 09:13:04 -0700</bug_when>
    <thetext>Attachment 200910 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/cf/win/CertificateCFWin.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.mm&apos;, u&apos;Source/WebCore/platform/graphics/ca/win/PlatformCAAnimationWin.cpp&apos;, u&apos;Source/WebCore/platform/graphics/ca/win/PlatformCALayerWin.cpp&apos;, u&apos;Source/WebCore/platform/graphics/ca/win/PlatformCALayerWinInternal.cpp&apos;, u&apos;Source/WebCore/platform/graphics/ca/win/WKCACFViewLayerTreeHost.cpp&apos;, u&apos;Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowMac.mm&apos;, u&apos;Source/WebCore/platform/graphics/win/FontCustomPlatformData.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/FontPlatformDataCGWin.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/GraphicsContextCGWin.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/ImageCGWin.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/WKCAImageQueue.cpp&apos;, u&apos;Source/WebCore/platform/image-decoders/ImageDecoder.h&apos;, u&apos;Source/WebCore/platform/network/cf/AuthenticationCF.cpp&apos;, u&apos;Source/WebCore/platform/network/cf/CookieJarCFNet.cpp&apos;, u&apos;Source/WebCore/platform/network/curl/ResourceHandleManager.cpp&apos;, u&apos;Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp&apos;, u&apos;Source/WebCore/platform/win/LocalizedStringsWin.cpp&apos;, u&apos;Source/WebCore/platform/win/SearchPopupMenuWin.cpp&apos;, u&apos;Source/WebCore/plugins/mac/PluginPackageMac.cpp&apos;, u&apos;Source/WebCore/plugins/mac/PluginViewMac.mm&apos;, u&apos;Source/WebCore/rendering/RenderThemeSafari.cpp&apos;, u&apos;Source/WebKit/win/CFDictionaryPropertyBag.cpp&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebCache.cpp&apos;, u&apos;Source/WebKit/win/WebCoreSupport/WebFrameLoaderClient.cpp&apos;, u&apos;Source/WebKit/win/WebCoreSupport/WebInspectorClient.cpp&apos;, u&apos;Source/WebKit/win/WebDatabaseManager.cpp&apos;, u&apos;Source/WebKit/win/WebDownloadCFNet.cpp&apos;, u&apos;Source/WebKit/win/WebError.cpp&apos;, u&apos;Source/WebKit/win/WebHistory.cpp&apos;, u&apos;Source/WebKit/win/WebIconDatabase.cpp&apos;, u&apos;Source/WebKit/win/WebLocalizableStrings.cpp&apos;, u&apos;Source/WebKit/win/WebMutableURLRequest.cpp&apos;, u&apos;Source/WebKit/win/WebPreferences.cpp&apos;, u&apos;Source/WebKit/win/WebView.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Shared/Downloads/cfnet/DownloadCFNet.cpp&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/DumpRenderTree/cf/WebArchiveDumpSupport.cpp&apos;, u&apos;Tools/DumpRenderTree/cg/ImageDiffCG.cpp&apos;, u&apos;Tools/DumpRenderTree/cg/PixelDumpSupportCG.cpp&apos;, u&apos;Tools/DumpRenderTree/cg/PixelDumpSupportCG.h&apos;, u&apos;Tools/DumpRenderTree/mac/MockWebNotificationProvider.mm&apos;, u&apos;Tools/DumpRenderTree/mac/PixelDumpSupportMac.mm&apos;, u&apos;Tools/DumpRenderTree/mac/TestRunnerMac.mm&apos;, u&apos;Tools/DumpRenderTree/mac/WebArchiveDumpSupportMac.mm&apos;, u&apos;Tools/DumpRenderTree/mac/WorkQueueItemMac.mm&apos;, u&apos;Tools/DumpRenderTree/win/DumpRenderTree.cpp&apos;, u&apos;Tools/DumpRenderTree/win/ImageDiffCairo.cpp&apos;, u&apos;Tools/DumpRenderTree/win/PixelDumpSupportWin.cpp&apos;, u&apos;Tools/DumpRenderTree/win/TestRunnerWin.cpp&apos;, u&apos;Tools/TestWebKitAPI/Tests/CustomProtocolsSyncXHRTest.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/TestWebKitAPI/mac/InstanceMethodSwizzler.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/WTF/cf/RetainPtrHashing.cpp&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/FindMatches.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/WebArchive.cpp&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/mac/GetBackingScaleFactor.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/win/DoNotCopyANullCFURLResponse.cpp&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/AcceptsFirstMouse.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/AttributedString.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/BackForwardList.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/CancelLoadFromResourceLoadDelegate.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/DOMHTMLTableCellCellAbove.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/DOMRangeOfString.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/DeviceScaleFactorInDashboardRegions.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/DeviceScaleFactorOnBack.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/DynamicDeviceScaleFactor.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/HTMLCollectionNamedItem.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/HTMLFormCollectionNamedItem.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/InspectorBar.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/MemoryCacheDisableWithinResourceLoadDelegate.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/MemoryCachePruneWithinResourceLoadDelegate.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/RenderedImageFromDOMRange.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/SetAndUpdateCacheModel.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/SetDocumentURI.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/SimplifyMarkup.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/StringByEvaluatingJavaScriptFromString.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/WillSendSubmitEvent.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/WindowlessWebViewWithMedia.mm&apos;, u&apos;Tools/TestWebKitAPI/mac/PlatformUtilitiesMac.mm&apos;, u&apos;Tools/TestWebKitAPI/mac/WebKitAgnosticTest.mm&apos;, u&apos;Tools/WebKitTestRunner/InjectedBundle/mac/InjectedBundlePageMac.mm&apos;, u&apos;Tools/WebKitTestRunner/InjectedBundle/mac/TestRunnerMac.mm&apos;, u&apos;Tools/WebKitTestRunner/cg/TestInvocationCG.cpp&apos;, u&apos;Tools/WebKitTestRunner/mac/EventSenderProxy.mm&apos;, u&apos;Tools/WebKitTestRunner/mac/PlatformWebViewMac.mm&apos;, u&apos;Tools/WebKitTestRunner/win/TestControllerWin.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/win/LocalizedStringsWin.cpp:81:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/rendering/RenderThemeSafari.cpp:763:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/rendering/RenderThemeSafari.cpp:768:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/rendering/RenderThemeSafari.cpp:772:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/rendering/RenderThemeSafari.cpp:977:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/platform/graphics/win/FontPlatformDataCGWin.cpp:91:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/platform/graphics/win/FontPlatformDataCGWin.cpp:98:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 7 in 94 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885767</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-07 09:17:05 -0700</bug_when>
    <thetext>I don’t plan to fix the style queue complaints; they are all just pre-existing NULLs in Windows-specific code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885982</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-05-07 14:42:24 -0700</bug_when>
    <thetext>I don&apos;t mind the change but what is the rationale?

I would think if you do:
  foo.adoptCF(bar);
you only get a release for foo.m_ptr.

While:
   foo = adoptCF(bar);
would give you
  Retain(bar);
  Release(foo.m_ptr);
  Release(bar);

Or do you rely on Clang making it an rvalue reference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886082</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-07 18:23:14 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I don&apos;t mind the change but what is the rationale?

We’re getting rid of old slight micro-optimizations that aren’t needed with the newer compilers.

&gt; Or do you rely on Clang making it an rvalue reference?

Yes.

We don’t need all these multiple ways of doing things. RefPtr doesn’t have an adopt member function and RetainPtr doesn’t need it either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886086</commentid>
    <comment_count>9</comment_count>
      <attachid>200910</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 18:27:00 -0700</bug_when>
    <thetext>Comment on attachment 200910
Patch

Rejecting attachment 200910 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 200910, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
    -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 149701 = 36721b40217e2588bfec97f3f88d27b75ea6765d
r149702 = 97613a518ee6cc5d18fca5d9170bf51f75496bd8
r149703 = 3cd2c83578b6edba49a0da70da9940da79ad132c
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.

Full output: http://webkit-queues.appspot.com/results/447004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886187</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-08 00:39:24 -0700</bug_when>
    <thetext>Committed r149716: &lt;http://trac.webkit.org/changeset/149716&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200716</attachid>
            <date>2013-05-06 10:01:08 -0700</date>
            <delta_ts>2013-05-07 09:10:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115657-20130506100015.patch</filename>
            <type>text/plain</type>
            <size>219356</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZhODE5MjU5YjMwMzIy
YmE1Njk2N2JjNjEwMWIwNDRlOWExY2NlZi4uYjBiMmM0YmRhOWRlZWQ2Nzc2YmJlYWZjMTIyZDBh
YzJhNGU5ZWIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAxMy0wNS0wNiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGFkb3B0Q0YgYW5kIGFk
b3B0TlMgaW4gbW9yZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNTY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgaXMgc2ltaWxhciB0byBteSBsYXN0IHNldCBvZiBjaGFuZ2VzLCBi
dXQgY292ZXJzIGNvZGUgdGhhdCBJIG1pc3NlZCB3aXRoCisgICAgICAgIGdsb2JhbCByZXBsYWNl
IHVzaW5nIHRoZSBTYWZhcmkgWGNvZGUgd29ya3NwYWNlLgorCisgICAgICAgICogcGxhdGZvcm0v
Y2Yvd2luL0NlcnRpZmljYXRlQ0ZXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29weUNlcnRp
ZmljYXRlVG9EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBsYXRmb3JtQnVmZmVyZWRUaW1l
UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjpwbGF0Zm9ybU1pblRpbWVTZWVrYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1NYXhUaW1lU2Vla2FibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBsYXRmb3Jt
TWF4VGltZUxvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6dG90YWxCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjptaW1lVHlwZUNhY2hl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjp0
cmFja3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpzaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpj
cmVhdGVBc3NldEZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVQ
bGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVySXRlbSk6
CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpzZXRBc3NldCk6CisgICAgICAgIChXZWJD
b3JlOjpBVkZXcmFwcGVyOjpwbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldy
YXBwZXI6OmNyZWF0ZUFWQ0ZWaWRlb0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBw
ZXI6OmNyZWF0ZUltYWdlR2VuZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDOjps
YW5ndWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FB
bmltYXRpb25XaW4uY3BwOgorICAgICAgICAodG9DQUNGVGltaW5nRnVuY3Rpb24pOgorICAgICAg
ICAoUGxhdGZvcm1DQUFuaW1hdGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlvbik6CisgICAgICAgIChQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRGcm9tVmFsdWUpOgorICAgICAgICAoUGxhdGZvcm1DQUFu
aW1hdGlvbjo6c2V0VG9WYWx1ZSk6CisgICAgICAgIChQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRW
YWx1ZXMpOgorICAgICAgICAoUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0S2V5VGltZXMpOgorICAg
ICAgICAoUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VGltaW5nRnVuY3Rpb25zKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcDoKKyAgICAg
ICAgKFBsYXRmb3JtQ0FMYXllcjo6UGxhdGZvcm1DQUxheWVyKToKKyAgICAgICAgKFBsYXRmb3Jt
Q0FMYXllcjo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcjo6
c2V0Qm9yZGVyQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0
Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHA6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJXaW5J
bnRlcm5hbDo6UGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwpOgorICAgICAgICAoUGxhdGZvcm1D
QUxheWVyV2luSW50ZXJuYWw6OmFkZFRpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
S0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6V0tDQUNGVmlld0xheWVyVHJlZUhvc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93TWFjLm1t
OgorICAgICAgICAoUGxhdGZvcm1WaWRlb1dpbmRvdzo6UGxhdGZvcm1WaWRlb1dpbmRvdyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3Jt
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFD
R1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRQb3N0U2NyaXB0TmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybURhdGFJbml0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3V2luZG93c0JpdG1hcCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6c2V0Um9vdENoaWxkTGF5ZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlj
a1RpbWVWaXN1YWxDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OnJmYzI2MTZEYXRlU3RyaW5nRnJvbVRpbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UVRDRkRpY3Rpb25hcnlDcmVhdGVXaXRoRGF0YUNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRl
eHQ6OnJldHJpZXZlQ3VycmVudEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vV0tDQUltYWdlUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0tDQUltYWdlUXVldWU6
OldLQ0FJbWFnZVF1ZXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6cWNtc091dHB1dERl
dmljZVByb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvb2tpZURv
bWFpbik6CisgICAgICAgIChXZWJDb3JlOjpjb29raWVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvb2tpZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6ZmlsdGVyQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRDb29raWVzRnJv
bURPTSk6CisgICAgICAgIChXZWJDb3JlOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Omdl
dFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlQ29va2llKToKKyAgICAgICAg
KFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjZXJ0aWZpY2F0
ZVBhdGgpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6dXJsRnJvbVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
VVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVXZWJLaXRCdW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6
bG9jYWxpemVkU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2Vu
dFNlYXJjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6bG9hZFJl
Y2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBwbHVnaW5zL21hYy9QbHVnaW5QYWNrYWdlTWFjLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnN0cmluZ0xpc3RGcm9tUmVzb3VyY2VJZCk6CisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
UGx1Z2luUGFja2FnZTo6bG9hZCk6CisgICAgICAgICogcGx1Z2lucy9tYWMvUGx1Z2luVmlld01h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtU3RhcnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZVNhZmFyaTo6cGxhdGZvcm1Gb2N1c1JpbmdDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUcmFjayk6
CisgICAgICAgIFVzZSBhZG9wdENGIGFuZCBhZG9wdE5TIHRocm91Z2hvdXQuCisKIDIwMTMtMDUt
MDYgIFbDrWN0b3IgTWFudWVsIErDoXF1ZXogTGVhbCAgPHZqYXF1ZXpAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbdGV4bWFwXSBkcmF3IGNvbnRlbnQgaWYgZ3JhcGhpY3MgbGF5ZXIgZGlzcGxheXMg
YSB2aWRlbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDgxNTA4ZGU3YWRkNmMxMWVmMDk4M2UxNmFkMzI3
ZDc1YWJjYWNiOTEuLjgzNWZkZmZjYTllZjNhMTE3MzYzM2Q5ZWQ3NDliNzllZjdjMjJkNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBAQAorMjAxMy0wNS0wNiAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGFkb3B0Q0YgYW5kIGFkb3B0TlMgaW4g
bW9yZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgaXMgc2ltaWxhciB0byBteSBsYXN0IHNldCBvZiBjaGFuZ2VzLCBidXQgY292ZXJz
IGNvZGUgdGhhdCBJIG1pc3NlZCB3aXRoCisgICAgICAgIGdsb2JhbCByZXBsYWNlIHVzaW5nIHRo
ZSBTYWZhcmkgWGNvZGUgd29ya3NwYWNlLgorCisgICAgICAgICogQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWcuY3BwOgorICAgICAgICAoQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OldyaXRlKToKKyAg
ICAgICAgKiBXZWJDYWNoZS5jcHA6CisgICAgICAgIChXZWJDYWNoZTo6c3RhdGlzdGljcyk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4pOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6bG9jYWxpemVkU3RyaW5nc1VSTCk6CisgICAgICAg
ICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6
ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZSk6CisgICAgICAgICogV2ViRG93bmxvYWRDRk5ldC5j
cHA6CisgICAgICAgIChXZWJEb3dubG9hZDo6aW5pdCk6CisgICAgICAgIChXZWJEb3dubG9hZDo6
aW5pdFdpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYkRvd25sb2FkOjppbml0VG9SZXN1bWVXaXRo
QnVuZGxlKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjpjYW5jZWxGb3JSZXN1bWUpOgorICAgICAg
ICAoV2ViRG93bmxvYWQ6OnVzZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViRG93bmxvYWQ6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogV2ViRXJyb3IuY3Bw
OgorICAgICAgICAoV2ViRXJyb3I6OnNzbFBlZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgICogV2Vi
SGlzdG9yeS5jcHA6CisgICAgICAgIChjcmVhdGVVc2VySW5mb0Zyb21BcnJheSk6CisgICAgICAg
IChjcmVhdGVVc2VySW5mb0Zyb21IaXN0b3J5SXRlbSk6CisgICAgICAgIChXZWJIaXN0b3J5OjpX
ZWJIaXN0b3J5KToKKyAgICAgICAgKFdlYkhpc3Rvcnk6OmxvYWRGcm9tVVJMKToKKyAgICAgICAg
KFdlYkhpc3Rvcnk6OmxvYWRIaXN0b3J5R3V0c0Zyb21VUkwpOgorICAgICAgICAoV2ViSGlzdG9y
eTo6c2F2ZVRvVVJMKToKKyAgICAgICAgKFdlYkhpc3Rvcnk6OnNhdmVIaXN0b3J5R3V0cyk6Cisg
ICAgICAgIChXZWJIaXN0b3J5OjpyZW1vdmVBbGxJdGVtcyk6CisgICAgICAgIChXZWJIaXN0b3J5
OjpyZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYkhpc3Rvcnk6OmFkZEl0ZW0pOgorICAgICAgICAo
V2ViSGlzdG9yeTo6aXRlbUZvclVSTCk6CisgICAgICAgIChXZWJIaXN0b3J5OjphZGRJdGVtVG9E
YXRlQ2FjaGVzKToKKyAgICAgICAgKGdldERheUJvdW5kYXJpZXMpOgorICAgICAgICAqIFdlYklj
b25EYXRhYmFzZS5jcHA6CisgICAgICAgIChwb3N0RGlkQWRkSWNvbk5vdGlmaWNhdGlvbik6Cisg
ICAgICAgICogV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcDoKKyAgICAgICAgKGNmQnVuZGxlRm9y
U3RyaW5nc0J1bmRsZSk6CisgICAgICAgICogV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViTXV0YWJsZVVSTFJlcXVlc3Q6Om11dGFibGVDb3B5KToKKyAgICAgICAgKiBXZWJQ
cmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChjZk51bWJlcik6CisgICAgICAgIChXZWJQcmVmZXJl
bmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncyk6CisgICAgICAgIChXZWJQcmVmZXJlbmNl
czo6dmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OnNldFN0cmluZ1ZhbHVl
KToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpsb2FkKToKKyAgICAgICAgKFdlYlByZWZlcmVu
Y2VzOjptaWdyYXRlV2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5jZXMpOgorICAgICAgICAo
V2ViUHJlZmVyZW5jZXM6OnNldFByZWZlcmVuY2VGb3JUZXN0KToKKyAgICAgICAgKiBXZWJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAoV2ViVmll
dzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKyAgICAgICAgVXNlIGFkb3B0Q0YgYW5kIGFk
b3B0TlMuCisKIDIwMTMtMDUtMDQgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFuaW1hdGlvbnMgYW5kIFRyYW5zaXRpb25zIHNob3VsZCBub3Qgc3RhcnQgd2hlbiBn
bG9iYWxseSBzdXNwZW5kZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlYWZmZDNjZTdhZjNmMTFlZmYyYjZiZjk3
OTBmOWQ0MjAwODcwZGYyLi4zMzVmZGViMDU4NWIzOGI2MjU4ZTIwZDc1ODk4ZmYwMmNlODRhMGE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDUtMDYgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhZG9wdENGIGFuZCBhZG9wdE5TIGluIG1v
cmUgcGxhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTU2NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFNoYXJlZC9Eb3dubG9hZHMvY2ZuZXQvRG93bmxvYWRDRk5ldC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkOjp1c2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZSk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZDo6ZGlkRGVjaWRlRGVzdGluYXRpb24pOgorICAgICAgICBVc2UgYWRvcHRDRiBhbmQg
YWRvcHROUy4KKwogMjAxMy0wNS0wNiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW1dLMl0gTWFrZSB0aGUgV2ViQmF0dGVyeU1hbmFnZXJQcm94eSBhIHN1
cHBsZW1lbnQgdG8gdGhlIFdlYkNvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcAppbmRleCA4OGVhOTMzZmI2ZDJkMTJkYWRi
NWZiYjVhMWUxNGZmODM0YzQ1M2ZlLi44MjAzYzAzNmEzNjEyNTdlNTJlODA1ZDFmZjk1ODg0YzZi
NDgxYTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi93aW4vQ2VydGlm
aWNhdGVDRldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yvd2luL0NlcnRp
ZmljYXRlQ0ZXaW4uY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IGNv
cHlDZXJ0aWZpY2F0ZVRvRGF0YShQQ0NFUlRfQ09OVEVYVCBjZXJ0aWZpY2F0ZSkKIHsKICAgICBz
dGF0aWMgQ0ZBbGxvY2F0b3JSZWYgY2VydERlYWxsb2MgPSBjcmVhdGVDZXJ0Q29udGV4dERlYWxs
b2NhdG9yKCk7CiAgICAgUENDRVJUX0NPTlRFWFQgY2VydGlmaWNhdGVDb3B5ID0gQ2VydER1cGxp
Y2F0ZUNlcnRpZmljYXRlQ29udGV4dChjZXJ0aWZpY2F0ZSk7Ci0gICAgcmV0dXJuIFJldGFpblB0
cjxDRkRhdGFSZWY+KEFkb3B0Q0YsIENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2VydGlmaWNhdGVD
b3B5KSwgc2l6ZW9mKCpjZXJ0aWZpY2F0ZUNvcHkpLCBjZXJ0RGVhbGxvYykpOworICAgIHJldHVy
biBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2VydGlmaWNhdGVDb3B5KSwgc2l6ZW9m
KCpjZXJ0aWZpY2F0ZUNvcHkpLCBjZXJ0RGVhbGxvYykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRleCA3OWIzMjdjYTJmYmQ2Y2FmYjQxOGIwM2IxOWY5
YTBhN2FhYWQzOTg3Li5hMmRkODM0Y2I4OWRmMGFhN2E5ODAzYjI4Y2JhZDFiOTcyYmIyNmRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAKQEAgLTU0OCw3ICs1NDgsNyBAQCBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGlt
ZVJhbgogICAgIGlmICghYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpCiAgICAgICAgIHJldHVy
biB0aW1lUmFuZ2VzLnJlbGVhc2UoKTsKIAotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBsb2Fk
ZWRSYW5nZXMoQWRvcHRDRiwgQVZDRlBsYXllckl0ZW1Db3B5TG9hZGVkVGltZVJhbmdlcyhhdlBs
YXllckl0ZW0obV9hdmZXcmFwcGVyKSkpOworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBsb2Fk
ZWRSYW5nZXMgPSBhZG9wdENGKEFWQ0ZQbGF5ZXJJdGVtQ29weUxvYWRlZFRpbWVSYW5nZXMoYXZQ
bGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpKTsKICAgICBpZiAoIWxvYWRlZFJhbmdlcykKICAgICAg
ICAgcmV0dXJuIHRpbWVSYW5nZXMucmVsZWFzZSgpOwogCkBAIC01NzAsNyArNTcwLDcgQEAgUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxh
dGZvcm1CdWZmZXJlZFRpbWVSYW4KIAogZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGOjpwbGF0Zm9ybU1pblRpbWVTZWVrYWJsZSgpIGNvbnN0IAogeyAKLSAgICBSZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gc2Vla2FibGVSYW5nZXMoQWRvcHRDRiwgQVZDRlBsYXllckl0ZW1Db3B5
U2Vla2FibGVUaW1lUmFuZ2VzKGF2UGxheWVySXRlbShtX2F2ZldyYXBwZXIpKSk7CisgICAgUmV0
YWluUHRyPENGQXJyYXlSZWY+IHNlZWthYmxlUmFuZ2VzID0gYWRvcHRDRihBVkNGUGxheWVySXRl
bUNvcHlTZWVrYWJsZVRpbWVSYW5nZXMoYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpKTsKICAg
ICBpZiAoIXNlZWthYmxlUmFuZ2VzKSAKICAgICAgICAgcmV0dXJuIDA7IAogCkBAIC01OTcsNyAr
NTk3LDcgQEAgZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9y
bU1heFRpbWVTZWVrYWJsZSgpIGNvbnN0CiAgICAgaWYgKCFhdlBsYXllckl0ZW0obV9hdmZXcmFw
cGVyKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gc2Vl
a2FibGVSYW5nZXMoQWRvcHRDRiwgQVZDRlBsYXllckl0ZW1Db3B5U2Vla2FibGVUaW1lUmFuZ2Vz
KGF2UGxheWVySXRlbShtX2F2ZldyYXBwZXIpKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+
IHNlZWthYmxlUmFuZ2VzID0gYWRvcHRDRihBVkNGUGxheWVySXRlbUNvcHlTZWVrYWJsZVRpbWVS
YW5nZXMoYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpKTsKICAgICBpZiAoIXNlZWthYmxlUmFu
Z2VzKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtNjIzLDcgKzYyMyw3IEBAIGZsb2F0IE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybU1heFRpbWVMb2FkZWQoKSBjb25z
dAogICAgIGlmICghYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGxvYWRlZFJhbmdlcyhBZG9wdENGLCBBVkNG
UGxheWVySXRlbUNvcHlMb2FkZWRUaW1lUmFuZ2VzKGF2UGxheWVySXRlbShtX2F2ZldyYXBwZXIp
KSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGxvYWRlZFJhbmdlcyA9IGFkb3B0Q0YoQVZD
RlBsYXllckl0ZW1Db3B5TG9hZGVkVGltZVJhbmdlcyhhdlBsYXllckl0ZW0obV9hdmZXcmFwcGVy
KSkpOwogICAgIGlmICghbG9hZGVkUmFuZ2VzKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtNjUw
LDcgKzY1MCw3IEBAIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjp0
b3RhbEJ5dGVzKCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpbnQ2NF90IHRvdGFs
TWVkaWFTaXplID0gMDsKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gdHJhY2tzKEFkb3B0Q0Ys
IEFWQ0ZBc3NldENvcHlBc3NldFRyYWNrcyhhdkFzc2V0KG1fYXZmV3JhcHBlcikpKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZBcnJheVJlZj4gdHJhY2tzID0gYWRvcHRDRihBVkNGQXNzZXRDb3B5QXNzZXRU
cmFja3MoYXZBc3NldChtX2F2ZldyYXBwZXIpKSk7CiAgICAgQ0ZJbmRleCB0cmFja0NvdW50ID0g
Q0ZBcnJheUdldENvdW50KHRyYWNrcy5nZXQoKSk7CiAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBp
IDwgdHJhY2tDb3VudDsgaSsrKSB7CiAgICAgICAgIEFWQ0ZBc3NldFRyYWNrUmVmIGFzc2V0VHJh
Y2sgPSAoQVZDRkFzc2V0VHJhY2tSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleCh0cmFja3MuZ2V0
KCksIGkpOwpAQCAtNzM0LDcgKzczNCw3IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4gbWltZVR5
cGVDYWNoZSgpCiAgICAgICAgIHJldHVybiBjYWNoZTsKICAgICB0eXBlTGlzdEluaXRpYWxpemVk
ID0gdHJ1ZTsKICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gc3VwcG9ydGVkVHlwZXMo
QWRvcHRDRiwgQVZDRlVSTEFzc2V0Q29weUF1ZGlvdmlzdWFsTUlNRVR5cGVzKCkpOworICAgIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBzdXBwb3J0ZWRUeXBlcyA9IGFkb3B0Q0YoQVZDRlVSTEFzc2V0
Q29weUF1ZGlvdmlzdWFsTUlNRVR5cGVzKCkpOwogICAgIAogICAgIEFTU0VSVChzdXBwb3J0ZWRU
eXBlcyk7CiAgICAgaWYgKCFzdXBwb3J0ZWRUeXBlcykKQEAgLTc4NywyNyArNzg3LDI3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnRyYWNrc0NoYW5nZWQoKQogICAg
IGlmICghYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpIHsKICAgICAgICAgLy8gV2UgZG9uJ3Qg
aGF2ZSBhIHBsYXllciBpdGVtIHlldCwgc28gY2hlY2sgd2l0aCB0aGUgYXNzZXQgYmVjYXVzZSBz
b21lIGFzc2V0cyBzdXBwb3J0IGluc3BlY3Rpb24KICAgICAgICAgLy8gcHJpb3IgdG8gYmVjb21p
bmcgcmVhZHkgdG8gcGxheS4KLSAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHZpc3VhbFRy
YWNrcyhBZG9wdENGLCBBVkNGQXNzZXRDb3B5VHJhY2tzV2l0aE1lZGlhQ2hhcmFjdGVyaXN0aWMo
YXZBc3NldChtX2F2ZldyYXBwZXIpLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbCkpOwor
ICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gdmlzdWFsVHJhY2tzID0gYWRvcHRDRihBVkNG
QXNzZXRDb3B5VHJhY2tzV2l0aE1lZGlhQ2hhcmFjdGVyaXN0aWMoYXZBc3NldChtX2F2ZldyYXBw
ZXIpLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbCkpOwogICAgICAgICBzZXRIYXNWaWRl
byhDRkFycmF5R2V0Q291bnQodmlzdWFsVHJhY2tzLmdldCgpKSk7CiAKLSAgICAgICAgUmV0YWlu
UHRyPENGQXJyYXlSZWY+IGF1ZGlvVHJhY2tzKEFkb3B0Q0YsIEFWQ0ZBc3NldENvcHlUcmFja3NX
aXRoTWVkaWFDaGFyYWN0ZXJpc3RpYyhhdkFzc2V0KG1fYXZmV3JhcHBlciksIEFWQ0ZNZWRpYUNo
YXJhY3RlcmlzdGljQXVkaWJsZSkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gYXVk
aW9UcmFja3MgPSBhZG9wdENGKEFWQ0ZBc3NldENvcHlUcmFja3NXaXRoTWVkaWFDaGFyYWN0ZXJp
c3RpYyhhdkFzc2V0KG1fYXZmV3JhcHBlciksIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJs
ZSkpOwogICAgICAgICBzZXRIYXNBdWRpbyhDRkFycmF5R2V0Q291bnQoYXVkaW9UcmFja3MuZ2V0
KCkpKTsKIAotICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY2FwdGlvblRyYWNrcyhBZG9w
dENGLCBBVkNGQXNzZXRDb3B5VHJhY2tzV2l0aE1lZGlhVHlwZShhdkFzc2V0KG1fYXZmV3JhcHBl
ciksIEFWQ0ZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uKSk7CisgICAgICAgIFJldGFpblB0cjxDRkFy
cmF5UmVmPiBjYXB0aW9uVHJhY2tzID0gYWRvcHRDRihBVkNGQXNzZXRDb3B5VHJhY2tzV2l0aE1l
ZGlhVHlwZShhdkFzc2V0KG1fYXZmV3JhcHBlciksIEFWQ0ZNZWRpYVR5cGVDbG9zZWRDYXB0aW9u
KSk7CiAgICAgICAgIHNldEhhc0F1ZGlvKENGQXJyYXlHZXRDb3VudChjYXB0aW9uVHJhY2tzLmdl
dCgpKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYm9vbCBoYXNWaWRlbyA9IGZhbHNlOwogICAg
ICAgICBib29sIGhhc0F1ZGlvID0gZmFsc2U7CiAgICAgICAgIGJvb2wgaGFzQ2FwdGlvbnMgPSBm
YWxzZTsKIAotICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gdHJhY2tzKEFkb3B0Q0YsIEFW
Q0ZQbGF5ZXJJdGVtQ29weVRyYWNrcyhhdlBsYXllckl0ZW0obV9hdmZXcmFwcGVyKSkpOworICAg
ICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gdHJhY2tzID0gYWRvcHRDRihBVkNGUGxheWVySXRl
bUNvcHlUcmFja3MoYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpKTsKIAogICAgICAgICBDRklu
ZGV4IHRyYWNrQ291bnQgPSBDRkFycmF5R2V0Q291bnQodHJhY2tzLmdldCgpKTsKICAgICAgICAg
Zm9yIChDRkluZGV4IGkgPSAwOyBpIDwgdHJhY2tDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBB
VkNGUGxheWVySXRlbVRyYWNrUmVmIHRyYWNrID0gKEFWQ0ZQbGF5ZXJJdGVtVHJhY2tSZWYpKENG
QXJyYXlHZXRWYWx1ZUF0SW5kZXgodHJhY2tzLmdldCgpLCBpKSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGlmIChBVkNGUGxheWVySXRlbVRyYWNrSXNFbmFibGVkKHRyYWNrKSkgewotICAg
ICAgICAgICAgICAgIFJldGFpblB0cjxBVkNGQXNzZXRUcmFja1JlZj4gYXNzZXRUcmFjayhBZG9w
dENGLCBBVkNGUGxheWVySXRlbVRyYWNrQ29weUFzc2V0VHJhY2sodHJhY2spKTsKKyAgICAgICAg
ICAgICAgICBSZXRhaW5QdHI8QVZDRkFzc2V0VHJhY2tSZWY+IGFzc2V0VHJhY2sgPSBhZG9wdENG
KEFWQ0ZQbGF5ZXJJdGVtVHJhY2tDb3B5QXNzZXRUcmFjayh0cmFjaykpOwogICAgICAgICAgICAg
ICAgIENGU3RyaW5nUmVmIG1lZGlhVHlwZSA9IEFWQ0ZBc3NldFRyYWNrR2V0TWVkaWFUeXBlKGFz
c2V0VHJhY2suZ2V0KCkpOwogICAgICAgICAgICAgICAgIGlmICghbWVkaWFUeXBlKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTg0MCw3ICs4NDAsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpzaXplQ2hhbmdlZCgpCiAgICAgLy8gQVZBc3NldCdz
ICduYXR1cmFsU2l6ZScgcHJvcGVydHkgb25seSBjb25zaWRlcnMgdGhlIG1vdmllJ3MgZmlyc3Qg
dmlkZW8gdHJhY2ssIHNvIHdlIG5lZWQgdG8gY29tcHV0ZQogICAgIC8vIHRoZSB1bmlvbiBvZiBh
bGwgdmlzdWFsIHRyYWNrIHJlY3RzLgogICAgIENHUmVjdCB0cmFja1JlY3RVbmlvbiA9IENHUmVj
dFplcm87Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHRyYWNrcyhBZG9wdENGLCBBVkNGQXNz
ZXRDb3B5VHJhY2tzV2l0aE1lZGlhVHlwZShhdkFzc2V0KG1fYXZmV3JhcHBlciksIEFWQ0ZNZWRp
YUNoYXJhY3RlcmlzdGljVmlzdWFsKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHRyYWNr
cyA9IGFkb3B0Q0YoQVZDRkFzc2V0Q29weVRyYWNrc1dpdGhNZWRpYVR5cGUoYXZBc3NldChtX2F2
ZldyYXBwZXIpLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbCkpOwogICAgIENGSW5kZXgg
dHJhY2tDb3VudCA9IENGQXJyYXlHZXRDb3VudCh0cmFja3MuZ2V0KCkpOwogICAgIGZvciAoQ0ZJ
bmRleCBpID0gMDsgaSA8IHRyYWNrQ291bnQ7IGkrKykgewogICAgICAgICBBVkNGQXNzZXRUcmFj
a1JlZiBhc3NldFRyYWNrID0gKEFWQ0ZBc3NldFRyYWNrUmVmKShDRkFycmF5R2V0VmFsdWVBdElu
ZGV4KHRyYWNrcy5nZXQoKSwgaSkpOwpAQCAtOTgzLDE3ICs5ODMsMTcgQEAgdm9pZCBBVkZXcmFw
cGVyOjpjcmVhdGVBc3NldEZvclVSTChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBBU1NFUlQo
IWF2QXNzZXQoKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybFJlZihBZG9wdENGLCBL
VVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKS5jcmVhdGVDRlVSTCgpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IHVybFJlZiA9IGFkb3B0Q0YoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkuY3Jl
YXRlQ0ZVUkwoKSk7CiAKICAgICBBVkNGVVJMQXNzZXRSZWYgYXNzZXRSZWYgPSBBVkNGVVJMQXNz
ZXRDcmVhdGVXaXRoVVJMQW5kT3B0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmxSZWYuZ2V0
KCksIDAsIG1fbm90aWZpY2F0aW9uUXVldWUpOwotICAgIG1fYXZBc3NldC5hZG9wdENGKGFzc2V0
UmVmKTsKKyAgICBtX2F2QXNzZXQgPSBhZG9wdENGKGFzc2V0UmVmKTsKIH0KIAogdm9pZCBBVkZX
cmFwcGVyOjpjcmVhdGVQbGF5ZXIoSURpcmVjdDNERGV2aWNlOSogZDNkRGV2aWNlKQogewogICAg
IEFTU0VSVCghYXZQbGF5ZXIoKSAmJiBhdlBsYXllckl0ZW0oKSk7CiAKLSAgICBSZXRhaW5QdHI8
Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gb3B0aW9uc1JlZihBZG9wdENGLCBDRkRpY3Rpb25hcnlD
cmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gb3B0aW9uc1JlZiA9IGFkb3B0Q0YoQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAxLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAK
ICAgICBpZiAoZDNkRGV2aWNlKSB7CiAgICAgICAgIC8vIFFJIGZvciBhbiBJRGlyZWN0M0REZXZp
Y2U5RXggaW50ZXJmYWNlLCBpdCBpcyByZXF1aXJlZCB0byBkbyBIVyB2aWRlbyBkZWNvZGluZy4K
QEAgLTEwMDcsNyArMTAwNyw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVyKElEaXJl
Y3QzRERldmljZTkqIGQzZERldmljZSkKIAogICAgIC8vIEZJWE1FOiBXZSBuZWVkIGEgd2F5IHRv
IGNyZWF0ZSBhIEFWUGxheWVyIHdpdGhvdXQgYW4gQVZQbGF5ZXJJdGVtLCBzZWUgPHJkYXI6Ly9w
cm9ibGVtLzk4Nzc3MzA+LgogICAgIEFWQ0ZQbGF5ZXJSZWYgcGxheWVyUmVmID0gQVZDRlBsYXll
ckNyZWF0ZVdpdGhQbGF5ZXJJdGVtQW5kT3B0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhdlBs
YXllckl0ZW0oKSwgb3B0aW9uc1JlZi5nZXQoKSwgbV9ub3RpZmljYXRpb25RdWV1ZSk7Ci0gICAg
bV9hdlBsYXllci5hZG9wdENGKHBsYXllclJlZik7CisgICAgbV9hdlBsYXllciA9IGFkb3B0Q0Yo
cGxheWVyUmVmKTsKIAogICAgIGlmIChtX2QzZERldmljZSAmJiBBVkNGUGxheWVyU2V0RGlyZWN0
M0REZXZpY2VQdHIoKSkKICAgICAgICAgQVZDRlBsYXllclNldERpcmVjdDNERGV2aWNlUHRyKCko
cGxheWVyUmVmLCBtX2QzZERldmljZS5nZXQoKSk7CkBAIC0xMDIwLDcgKzEwMjAsNyBAQCB2b2lk
IEFWRldyYXBwZXI6OmNyZWF0ZVBsYXllcihJRGlyZWN0M0REZXZpY2U5KiBkM2REZXZpY2UpCiAg
ICAgLy8gQWRkIGEgdGltZSBvYnNlcnZlciwgYXNrIHRvIGJlIGNhbGxlZCBpbmZyZXF1ZW50bHkg
YmVjYXVzZSB3ZSBkb24ndCByZWFsbHkgd2FudCBwZXJpb2RpYyBjYWxsYmFja3MgYnV0CiAgICAg
Ly8gb3VyIG9ic2VydmVyIHdpbGwgYWxzbyBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBzZWVrIGhhcHBl
bnMuCiAgICAgY29uc3QgZG91YmxlIHZlcnlMb25nSW50ZXJ2YWwgPSA2MCo2MCo2MCoyNCozMDsK
LSAgICBtX3RpbWVPYnNlcnZlci5hZG9wdENGKEFWQ0ZQbGF5ZXJDcmVhdGVQZXJpb2RpY1RpbWVP
YnNlcnZlckZvckludGVydmFsKHBsYXllclJlZiwgQ01UaW1lTWFrZSh2ZXJ5TG9uZ0ludGVydmFs
LCAxMCksIG1fbm90aWZpY2F0aW9uUXVldWUsICZwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNr
LCBjYWxsYmFja0NvbnRleHQoKSkpOworICAgIG1fdGltZU9ic2VydmVyID0gYWRvcHRDRihBVkNG
UGxheWVyQ3JlYXRlUGVyaW9kaWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbChwbGF5ZXJSZWYsIENN
VGltZU1ha2UodmVyeUxvbmdJbnRlcnZhbCwgMTApLCBtX25vdGlmaWNhdGlvblF1ZXVlLCAmcGVy
aW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0KCkpKTsKIH0KIAogdm9p
ZCBBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXJJdGVtKCkKQEAgLTEwMjksNyArMTAyOSw3IEBAIHZv
aWQgQVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVySXRlbSgpCiAKICAgICAvLyBDcmVhdGUgdGhlIHBs
YXllciBpdGVtIHNvIHdlIGJlZ2luIGxvYWRpbmcgbWVkaWEgZGF0YS4KICAgICBBVkNGUGxheWVy
SXRlbVJlZiBpdGVtUmVmID0gQVZDRlBsYXllckl0ZW1DcmVhdGVXaXRoQXNzZXQoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgYXZBc3NldCgpLCBtX25vdGlmaWNhdGlvblF1ZXVlKTsKLSAgICBtX2F2UGxh
eWVySXRlbS5hZG9wdENGKGl0ZW1SZWYpOworICAgIG1fYXZQbGF5ZXJJdGVtID0gYWRvcHRDRihp
dGVtUmVmKTsKIAogICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVmIGNlbnRlciA9IENGTm90aWZp
Y2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKTsKICAgICBBU1NFUlQoY2VudGVyKTsKQEAgLTEx
NzgsNyArMTE3OCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6c2V0QXNzZXQoQVZDRlVSTEFzc2V0UmVm
IGFzc2V0KQogICAgICAgICByZXR1cm47CiAKICAgICBBVkNGQXNzZXRDYW5jZWxMb2FkaW5nKGF2
QXNzZXQoKSk7Ci0gICAgbV9hdkFzc2V0LmFkb3B0Q0YoYXNzZXQpOworICAgIG1fYXZBc3NldCA9
IGFkb3B0Q0YoYXNzZXQpOwogfQogCiBQbGF0Zm9ybUxheWVyKiBBVkZXcmFwcGVyOjpwbGF0Zm9y
bUxheWVyKCkKQEAgLTExOTksNyArMTE5OSw3IEBAIFBsYXRmb3JtTGF5ZXIqIEFWRldyYXBwZXI6
OnBsYXRmb3JtTGF5ZXIoKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIENBQ0ZMYXllclJlZiBs
YXllclJlZiA9IEFWQ0ZQbGF5ZXJMYXllckNvcHlDQUNGTGF5ZXIobV9hdkNGVmlkZW9MYXllci5n
ZXQoKSk7Ci0gICAgbV9jYVZpZGVvTGF5ZXIuYWRvcHRDRihsYXllclJlZik7CisgICAgbV9jYVZp
ZGVvTGF5ZXIgPSBhZG9wdENGKGxheWVyUmVmKTsKIAogICAgIENBQ0ZMYXllckluc2VydFN1Ymxh
eWVyKG1fdmlkZW9MYXllcldyYXBwZXItPnBsYXRmb3JtTGF5ZXIoKSwgbV9jYVZpZGVvTGF5ZXIu
Z2V0KCksIDApOwogICAgIG1fdmlkZW9MYXllcldyYXBwZXItPnNldEFuY2hvclBvaW50KEZsb2F0
UG9pbnQzRCgpKTsKQEAgLTEyMTQsNyArMTIxNCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRl
QVZDRlZpZGVvTGF5ZXIoKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGUgbGF5ZXIgd2ls
bCBnZXQgaG9va2VkIHVwIHZpYSBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5
ZXJDb25maWd1cmF0aW9uKCkuCi0gICAgbV9hdkNGVmlkZW9MYXllci5hZG9wdENGKEFWQ0ZQbGF5
ZXJMYXllckNyZWF0ZVdpdGhBVkNGUGxheWVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2UGxheWVy
KCksIG1fbm90aWZpY2F0aW9uUXVldWUpKTsKKyAgICBtX2F2Q0ZWaWRlb0xheWVyID0gYWRvcHRD
RihBVkNGUGxheWVyTGF5ZXJDcmVhdGVXaXRoQVZDRlBsYXllcihrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBhdlBsYXllcigpLCBtX25vdGlmaWNhdGlvblF1ZXVlKSk7CiAgICAgTE9HKE1lZGlhLCAiQVZG
V3JhcHBlcjo6Y3JlYXRlQVZDRlZpZGVvTGF5ZXIoJXApIC0gcmV0dXJuaW5nICVwIiwgdGhpcywg
dmlkZW9MYXllcigpKTsKIH0KIApAQCAtMTI0OCw3ICsxMjQ4LDcgQEAgdm9pZCBBVkZXcmFwcGVy
OjpjcmVhdGVJbWFnZUdlbmVyYXRvcigpCiAgICAgaWYgKCFhdkFzc2V0KCkgfHwgbV9pbWFnZUdl
bmVyYXRvcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbWFnZUdlbmVyYXRvci5hZG9wdENG
KEFWQ0ZBc3NldEltYWdlR2VuZXJhdG9yQ3JlYXRlV2l0aEFzc2V0KGtDRkFsbG9jYXRvckRlZmF1
bHQsIGF2QXNzZXQoKSkpOworICAgIG1faW1hZ2VHZW5lcmF0b3IgPSBhZG9wdENGKEFWQ0ZBc3Nl
dEltYWdlR2VuZXJhdG9yQ3JlYXRlV2l0aEFzc2V0KGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2QXNz
ZXQoKSkpOwogCiAgICAgQVZDRkFzc2V0SW1hZ2VHZW5lcmF0b3JTZXRBcGVydHVyZU1vZGUobV9p
bWFnZUdlbmVyYXRvci5nZXQoKSwgQVZDRkFzc2V0SW1hZ2VHZW5lcmF0b3JBcGVydHVyZU1vZGVD
bGVhbkFwZXJ0dXJlKTsKICAgICBBVkNGQXNzZXRJbWFnZUdlbmVyYXRvclNldFJlcXVlc3RlZFRp
bWVUb2xlcmFuY2VCZWZvcmUobV9pbWFnZUdlbmVyYXRvci5nZXQoKSwga0NNVGltZVplcm8pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlTGVnYWN5QVZGT2JqQy5tbQppbmRleCBlZGIzMTQyMWI1MzNjNGU4MTBjMmI0ODc5ZTgz
MjZlNmRiYzcyMDc1Li45YmFmMzk2NmU3ZGNiZWZmYmVjNmZkZThhZDY1NDM1Y2FhMjAzZWNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbQpAQCAtMTcwLDcgKzE3MCw3IEBAIEF0b21pY1N0cmlu
ZyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQzo6bGFuZ3VhZ2UoKSBjb25zdAog
ICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwogCiAgICAgTlNTdHJpbmcgKmxhbmd1YWdlQ29kZSA9
IFtbbV9wbGF5ZXJJdGVtVHJhY2sgYXNzZXRUcmFja10gbGFuZ3VhZ2VDb2RlXTsKLSAgICBSZXRh
aW5QdHI8TlNMb2NhbGU+IGxvY2FsZShBZG9wdE5TLCBbW05TTG9jYWxlIGFsbG9jXSBpbml0V2l0
aExvY2FsZUlkZW50aWZpZXI6bGFuZ3VhZ2VDb2RlXSk7CisgICAgUmV0YWluUHRyPE5TTG9jYWxl
PiBsb2NhbGUgPSBhZG9wdE5TKFtbTlNMb2NhbGUgYWxsb2NdIGluaXRXaXRoTG9jYWxlSWRlbnRp
ZmllcjpsYW5ndWFnZUNvZGVdKTsKICAgICByZXR1cm4gW2xvY2FsZSBsb2NhbGVJZGVudGlmaWVy
XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwCmluZGV4IDBiZTU1YTM5
NDI2OWE2MzYzZWNiMjQwZDdhOTA3MDBiYmQzNGYxM2IuLmNlMDU0NDBkODdhMjlmOTQxNzE0MTBj
MGM0ZjFhOWMxN2M3NTFiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAK
QEAgLTEyNyw3ICsxMjcsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENBQ0ZUaW1pbmdGdW5jdGlvblJl
Zj4gdG9DQUNGVGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3RpbwogICAgIEFTU0VSVCh0
aW1pbmdGdW5jdGlvbik7CiAgICAgaWYgKHRpbWluZ0Z1bmN0aW9uLT5pc0N1YmljQmV6aWVyVGlt
aW5nRnVuY3Rpb24oKSkgewogICAgICAgICBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
KiBjdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4odGlt
aW5nRnVuY3Rpb24pOwotICAgICAgICByZXR1cm4gUmV0YWluUHRyPENBQ0ZUaW1pbmdGdW5jdGlv
blJlZj4oQWRvcHRDRiwgQ0FDRlRpbWluZ0Z1bmN0aW9uQ3JlYXRlKHN0YXRpY19jYXN0PGZsb2F0
PihjdGYtPngxKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT55MSgpKSwgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGN0Zi0+eDIoKSksIHN0YXRpY19jYXN0PGZsb2F0PihjdGYtPnkyKCkpKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdENGKENBQ0ZUaW1pbmdGdW5jdGlvbkNyZWF0ZShzdGF0aWNfY2FzdDxm
bG9hdD4oY3RmLT54MSgpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eTEoKSksIHN0YXRpY19j
YXN0PGZsb2F0PihjdGYtPngyKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT55MigpKSkpOwog
ICAgIH0KICAgICAKICAgICByZXR1cm4gQ0FDRlRpbWluZ0Z1bmN0aW9uR2V0RnVuY3Rpb25XaXRo
TmFtZShrQ0FDRlRpbWluZ0Z1bmN0aW9uTGluZWFyKTsKQEAgLTE0Nyw5ICsxNDcsOSBAQCBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpQbGF0Zm9ybUNBQW5pbWF0aW9uKEFuaW1hdGlvblR5cGUgdHlwZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYQogICAgIDogbV90eXBlKHR5cGUpCiB7CiAgICAgaWYgKHR5cGUg
PT0gQmFzaWMpCi0gICAgICAgIG1fYW5pbWF0aW9uLmFkb3B0Q0YoQ0FDRkFuaW1hdGlvbkNyZWF0
ZShrQ0FDRkJhc2ljQW5pbWF0aW9uKSk7CisgICAgICAgIG1fYW5pbWF0aW9uID0gYWRvcHRDRihD
QUNGQW5pbWF0aW9uQ3JlYXRlKGtDQUNGQmFzaWNBbmltYXRpb24pKTsKICAgICBlbHNlCi0gICAg
ICAgIG1fYW5pbWF0aW9uLmFkb3B0Q0YoQ0FDRkFuaW1hdGlvbkNyZWF0ZShrQ0FDRktleWZyYW1l
QW5pbWF0aW9uKSk7CisgICAgICAgIG1fYW5pbWF0aW9uID0gYWRvcHRDRihDQUNGQW5pbWF0aW9u
Q3JlYXRlKGtDQUNGS2V5ZnJhbWVBbmltYXRpb24pKTsKICAgICAKICAgICBDQUNGQW5pbWF0aW9u
U2V0S2V5UGF0aChtX2FuaW1hdGlvbi5nZXQoKSwga2V5UGF0aC5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKIH0KQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNl
dEZyb21WYWx1ZShmbG9hdCB2YWx1ZSkKICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2lj
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHYoQWRvcHRD
RiwgQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyRmxvYXRUeXBlLCAmdmFsdWUpKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHYgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51
bWJlckZsb2F0VHlwZSwgJnZhbHVlKSk7CiAgICAgQ0FDRkFuaW1hdGlvblNldEZyb21WYWx1ZSht
X2FuaW1hdGlvbi5nZXQoKSwgdi5nZXQoKSk7CiB9CiAKQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lk
IFBsYXRmb3JtQ0FBbmltYXRpb246OnNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdmFsdQogICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4gdihBZG9w
dENGLCBDQUNGVmVjdG9yQ3JlYXRlVHJhbnNmb3JtKHZhbHVlKSk7CisgICAgUmV0YWluUHRyPENB
Q0ZWZWN0b3JSZWY+IHYgPSBhZG9wdENGKENBQ0ZWZWN0b3JDcmVhdGVUcmFuc2Zvcm0odmFsdWUp
KTsKICAgICBDQUNGQW5pbWF0aW9uU2V0RnJvbVZhbHVlKG1fYW5pbWF0aW9uLmdldCgpLCB2Lmdl
dCgpKTsKIH0KIApAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6
c2V0RnJvbVZhbHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGZsb2F0IGFbM10gPSB7IHZhbHVlLngoKSwgdmFsdWUueSgpLCB2YWx1ZS56KCkgfTsK
LSAgICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4gdihBZG9wdENGLCBDQUNGVmVjdG9yQ3JlYXRl
KDMsIGEpKTsKKyAgICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4gdiA9IGFkb3B0Q0YoQ0FDRlZl
Y3RvckNyZWF0ZSgzLCBhKSk7CiAgICAgQ0FDRkFuaW1hdGlvblNldEZyb21WYWx1ZShtX2FuaW1h
dGlvbi5nZXQoKSwgdi5nZXQoKSk7CiB9CiAKQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIFBsYXRm
b3JtQ0FBbmltYXRpb246OnNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xvciYgdmFsdWUp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGZsb2F0IGFbNF0gPSB7IHZhbHVlLnJlZCgpLCB2YWx1
ZS5ncmVlbigpLCB2YWx1ZS5ibHVlKCksIHZhbHVlLmFscGhhKCkgfTsKLSAgICBSZXRhaW5QdHI8
Q0FDRlZlY3RvclJlZj4gdihBZG9wdENGLCBDQUNGVmVjdG9yQ3JlYXRlKDQsIGEpKTsKKyAgICBS
ZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4gdiA9IGFkb3B0Q0YoQ0FDRlZlY3RvckNyZWF0ZSg0LCBh
KSk7CiAgICAgQ0FDRkFuaW1hdGlvblNldEZyb21WYWx1ZShtX2FuaW1hdGlvbi5nZXQoKSwgdi5n
ZXQoKSk7CiB9CiAKQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246
OnNldFRvVmFsdWUoZmxvYXQgdmFsdWUpCiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNp
YykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiB2KEFkb3B0
Q0YsIENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckZsb2F0VHlwZSwgJnZhbHVlKSk7CisgICAg
UmV0YWluUHRyPENGTnVtYmVyUmVmPiB2ID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZSgwLCBrQ0ZO
dW1iZXJGbG9hdFR5cGUsICZ2YWx1ZSkpOwogICAgIENBQ0ZBbmltYXRpb25TZXRUb1ZhbHVlKG1f
YW5pbWF0aW9uLmdldCgpLCB2LmdldCgpKTsKIH0KIApAQCAtMzk5LDcgKzM5OSw3IEBAIHZvaWQg
UGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdmFsdWUpCiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENBQ0ZWZWN0b3JSZWY+IHYoQWRvcHRDRiwg
Q0FDRlZlY3RvckNyZWF0ZVRyYW5zZm9ybSh2YWx1ZSkpOworICAgIFJldGFpblB0cjxDQUNGVmVj
dG9yUmVmPiB2ID0gYWRvcHRDRihDQUNGVmVjdG9yQ3JlYXRlVHJhbnNmb3JtKHZhbHVlKSk7CiAg
ICAgQ0FDRkFuaW1hdGlvblNldFRvVmFsdWUobV9hbmltYXRpb24uZ2V0KCksIHYuZ2V0KCkpOwog
fQogCkBAIC00MDksNyArNDA5LDcgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRUb1Zh
bHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZs
b2F0IGFbM10gPSB7IHZhbHVlLngoKSwgdmFsdWUueSgpLCB2YWx1ZS56KCkgfTsKLSAgICBSZXRh
aW5QdHI8Q0FDRlZlY3RvclJlZj4gdihBZG9wdENGLCBDQUNGVmVjdG9yQ3JlYXRlKDMsIGEpKTsK
KyAgICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4gdiA9IGFkb3B0Q0YoQ0FDRlZlY3RvckNyZWF0
ZSgzLCBhKSk7CiAgICAgQ0FDRkFuaW1hdGlvblNldFRvVmFsdWUobV9hbmltYXRpb24uZ2V0KCks
IHYuZ2V0KCkpOwogfQogCkBAIC00MTksNyArNDE5LDcgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiB2YWx1ZSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgZmxvYXQgYVs0XSA9IHsgdmFsdWUucmVkKCksIHZhbHVlLmdyZWVuKCksIHZh
bHVlLmJsdWUoKSwgdmFsdWUuYWxwaGEoKSB9OwotICAgIFJldGFpblB0cjxDQUNGVmVjdG9yUmVm
PiB2KEFkb3B0Q0YsIENBQ0ZWZWN0b3JDcmVhdGUoNCwgYSkpOworICAgIFJldGFpblB0cjxDQUNG
VmVjdG9yUmVmPiB2ID0gYWRvcHRDRihDQUNGVmVjdG9yQ3JlYXRlKDQsIGEpKTsKICAgICBDQUNG
QW5pbWF0aW9uU2V0VG9WYWx1ZShtX2FuaW1hdGlvbi5nZXQoKSwgdi5nZXQoKSk7CiB9CiAKQEAg
LTQ0NSw5ICs0NDUsOSBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFZhbHVlcyhjb25z
dCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZSkKICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZy
YW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+
IGFycmF5KEFkb3B0Q0YsIENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHZhbHVlLnNpemUoKSwgJmtD
RlR5cGVBcnJheUNhbGxCYWNrcykpOworICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4g
YXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHZhbHVlLnNpemUoKSwgJmtD
RlR5cGVBcnJheUNhbGxCYWNrcykpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiB2KEFkb3B0Q0Ys
IENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckZsb2F0VHlwZSwgJnZhbHVlW2ldKSk7CisgICAg
ICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gdiA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwg
a0NGTnVtYmVyRmxvYXRUeXBlLCAmdmFsdWVbaV0pKTsKICAgICAgICAgQ0ZBcnJheUFwcGVuZFZh
bHVlKGFycmF5LmdldCgpLCB2LmdldCgpKTsKICAgICB9CiAKQEAgLTQ1OSw5ICs0NTksOSBAQCB2
b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
VHJhbnNmb3JtYXRpb25NYXRyaXg+JgogICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJh
bWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4g
YXJyYXkoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgdmFsdWUuc2l6ZSgpLCAma0NG
VHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBh
cnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgdmFsdWUuc2l6ZSgpLCAma0NG
VHlwZUFycmF5Q2FsbEJhY2tzKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5z
aXplKCk7ICsraSkgewotICAgICAgICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4gdihBZG9wdENG
LCBDQUNGVmVjdG9yQ3JlYXRlVHJhbnNmb3JtKHZhbHVlW2ldKSk7CisgICAgICAgIFJldGFpblB0
cjxDQUNGVmVjdG9yUmVmPiB2ID0gYWRvcHRDRihDQUNGVmVjdG9yQ3JlYXRlVHJhbnNmb3JtKHZh
bHVlW2ldKSk7CiAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheS5nZXQoKSwgdi5nZXQo
KSk7CiAgICAgfQogCkBAIC00NzMsMTAgKzQ3MywxMCBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRp
b246OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8RmxvYXRQb2ludDNEPiYgdmFsdWUpCiAgICAgaWYg
KGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAK
LSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGFycmF5KEFkb3B0Q0YsIENGQXJyYXlD
cmVhdGVNdXRhYmxlKDAsIHZhbHVlLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwor
ICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gYXJyYXkgPSBhZG9wdENGKENGQXJyYXlD
cmVhdGVNdXRhYmxlKDAsIHZhbHVlLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
ZmxvYXQgYVszXSA9IHsgdmFsdWVbaV0ueCgpLCB2YWx1ZVtpXS55KCksIHZhbHVlW2ldLnooKSB9
OwotICAgICAgICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4gdihBZG9wdENGLCBDQUNGVmVjdG9y
Q3JlYXRlKDMsIGEpKTsKKyAgICAgICAgUmV0YWluUHRyPENBQ0ZWZWN0b3JSZWY+IHYgPSBhZG9w
dENGKENBQ0ZWZWN0b3JDcmVhdGUoMywgYSkpOwogICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUo
YXJyYXkuZ2V0KCksIHYuZ2V0KCkpOwogICAgIH0KIApAQCAtNDg4LDEwICs0ODgsMTAgQEAgdm9p
ZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
bG9yPiYgdmFsdWUpCiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGFy
cmF5KEFkb3B0Q0YsIENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHZhbHVlLnNpemUoKSwgJmtDRlR5
cGVBcnJheUNhbGxCYWNrcykpOworICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gYXJy
YXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHZhbHVlLnNpemUoKSwgJmtDRlR5
cGVBcnJheUNhbGxCYWNrcykpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgZmxvYXQgYVs0XSA9IHsgdmFsdWVbaV0ucmVkKCksIHZhbHVl
W2ldLmdyZWVuKCksIHZhbHVlW2ldLmJsdWUoKSwgdmFsdWVbaV0uYWxwaGEoKSB9OwotICAgICAg
ICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4gdihBZG9wdENGLCBDQUNGVmVjdG9yQ3JlYXRlKDQs
IGEpKTsKKyAgICAgICAgUmV0YWluUHRyPENBQ0ZWZWN0b3JSZWY+IHYgPSBhZG9wdENGKENBQ0ZW
ZWN0b3JDcmVhdGUoNCwgYSkpOwogICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJyYXkuZ2V0
KCksIHYuZ2V0KCkpOwogICAgIH0KIApAQCAtNTE4LDkgKzUxOCw5IEBAIHZvaWQgUGxhdGZvcm1D
QUFuaW1hdGlvbjo6c2V0S2V5VGltZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWUpCiAgICAg
aWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGFycmF5KEFkb3B0Q0YsIENGQXJy
YXlDcmVhdGVNdXRhYmxlKDAsIHZhbHVlLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykp
OworICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gYXJyYXkgPSBhZG9wdENGKENGQXJy
YXlDcmVhdGVNdXRhYmxlKDAsIHZhbHVlLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiB2KEFkb3B0Q0YsIENGTnVtYmVyQ3JlYXRlKDAsIGtD
Rk51bWJlckZsb2F0VHlwZSwgJnZhbHVlW2ldKSk7CisgICAgICAgIFJldGFpblB0cjxDRk51bWJl
clJlZj4gdiA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyRmxvYXRUeXBlLCAm
dmFsdWVbaV0pKTsKICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LmdldCgpLCB2Lmdl
dCgpKTsKICAgICB9CiAKQEAgLTU0MSw5ICs1NDEsOSBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRp
b246OnNldFRpbWluZ0Z1bmN0aW9ucyhjb25zdCBWZWN0b3I8Y29uc3QgVGltaW5nRnVuY3Rpb24q
PgogICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gYXJyYXkoQWRvcHRDRiwgQ0ZBcnJh
eUNyZWF0ZU11dGFibGUoMCwgdmFsdWUuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7
CisgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBhcnJheSA9IGFkb3B0Q0YoQ0ZBcnJh
eUNyZWF0ZU11dGFibGUoMCwgdmFsdWUuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7ICsraSkgewotICAgICAg
ICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHYoQWRvcHRDRiwgQ0ZOdW1iZXJDcmVhdGUoMCwga0NG
TnVtYmVyRmxvYXRUeXBlLCAmdmFsdWVbaV0pKTsKKyAgICAgICAgUmV0YWluUHRyPENGTnVtYmVy
UmVmPiB2ID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ2
YWx1ZVtpXSkpOwogICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJyYXkuZ2V0KCksIHRvQ0FD
RlRpbWluZ0Z1bmN0aW9uKHZhbHVlW2ldKS5nZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW4uY3BwCmluZGV4IDE5Y2ZkZmFkOWMyZDc2Nzk2MzU0NjcwYTQ1ZmM4MWNkZDZjZGFl
ZjIuLjY4ODY0OWUxZWI3MGJjZjE4YjYxZDkzZWUyYjEyYjQ2YjU0MjE4Y2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0
Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgUGxhdGZvcm1DQUxheWVyOjpQ
bGF0Zm9ybUNBTGF5ZXIoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1MYXllciogbGF5ZXIs
IFBsYXQKICAgICAgICAgbV9sYXllciA9IGxheWVyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1f
bGF5ZXJUeXBlID0gbGF5ZXJUeXBlOwotICAgICAgICBtX2xheWVyLmFkb3B0Q0YoQ0FDRkxheWVy
Q3JlYXRlKHRvQ0FDRkxheWVyVHlwZShsYXllclR5cGUpKSk7CisgICAgICAgIG1fbGF5ZXIgPSBh
ZG9wdENGKENBQ0ZMYXllckNyZWF0ZSh0b0NBQ0ZMYXllclR5cGUobGF5ZXJUeXBlKSkpOwogCiAg
ICAgICAgIC8vIENyZWF0ZSB0aGUgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwgb2JqZWN0IGFu
ZCBwb2ludCB0byBpdCBpbiB0aGUgdXNlcmRhdGEuCiAgICAgICAgIFBsYXRmb3JtQ0FMYXllcldp
bkludGVybmFsKiBpbnRlcm4gPSBuZXcgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwodGhpcyk7
CkBAIC01NDAsOCArNTQwLDggQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldEJhY2tncm91bmRD
b2xvcihjb25zdCBDb2xvciYgdmFsdWUpCiAgICAgQ0dGbG9hdCBjb21wb25lbnRzWzRdOwogICAg
IHZhbHVlLmdldFJHQkEoY29tcG9uZW50c1swXSwgY29tcG9uZW50c1sxXSwgY29tcG9uZW50c1sy
XSwgY29tcG9uZW50c1szXSk7CiAKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xv
clNwYWNlKEFkb3B0Q0YsIENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKLSAgICBSZXRh
aW5QdHI8Q0dDb2xvclJlZj4gY29sb3IoQWRvcHRDRiwgQ0dDb2xvckNyZWF0ZShjb2xvclNwYWNl
LmdldCgpLCBjb21wb25lbnRzKSk7CisgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29s
b3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOworICAgIFJl
dGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShjb2xvclNw
YWNlLmdldCgpLCBjb21wb25lbnRzKSk7CiAKICAgICBDQUNGTGF5ZXJTZXRCYWNrZ3JvdW5kQ29s
b3IobV9sYXllci5nZXQoKSwgY29sb3IuZ2V0KCkpOwogICAgIHNldE5lZWRzQ29tbWl0KCk7CkBA
IC01NjgsOCArNTY4LDggQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldEJvcmRlckNvbG9yKGNv
bnN0IENvbG9yJiB2YWx1ZSkKICAgICBDR0Zsb2F0IGNvbXBvbmVudHNbNF07CiAgICAgdmFsdWUu
Z2V0UkdCQShjb21wb25lbnRzWzBdLCBjb21wb25lbnRzWzFdLCBjb21wb25lbnRzWzJdLCBjb21w
b25lbnRzWzNdKTsKIAotICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2Uo
QWRvcHRDRiwgQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwotICAgIFJldGFpblB0cjxD
R0NvbG9yUmVmPiBjb2xvcihBZG9wdENGLCBDR0NvbG9yQ3JlYXRlKGNvbG9yU3BhY2UuZ2V0KCks
IGNvbXBvbmVudHMpKTsKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNl
ID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CisgICAgUmV0YWluUHRy
PENHQ29sb3JSZWY+IGNvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKGNvbG9yU3BhY2UuZ2V0
KCksIGNvbXBvbmVudHMpKTsKIAogICAgIENBQ0ZMYXllclNldEJvcmRlckNvbG9yKG1fbGF5ZXIu
Z2V0KCksIGNvbG9yLmdldCgpKTsKICAgICBzZXROZWVkc0NvbW1pdCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldp
bkludGVybmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKaW5kZXggMTUyNzViM2FlNWZlNWMxYzZhNGY4
Zjg0ZmQ2NjkwZDIxZmNmNThkYi4uNmQyMWZhODNiMDU3OTUyZWIwM2JmMGE4NmYxMzZkNDlmOWU3
NWM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCkBAIC01
MSw3ICs1MSw3IEBAIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjpQbGF0Zm9ybUNBTGF5ZXJX
aW5JbnRlcm5hbChQbGF0Zm9ybUNBTGF5ZXIqIG93bmVyKQogewogICAgIGlmIChtX293bmVyLT5s
YXllclR5cGUoKSA9PSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYlRpbGVkTGF5ZXIpIHsK
ICAgICAgICAgLy8gVGlsZWQgbGF5ZXJzIGFyZSBwbGFjZWQgaW4gYSBjaGlsZCBsYXllciB0aGF0
IGlzIGFsd2F5cyB0aGUgZmlyc3QgY2hpbGQgb2YgdGhlIFRpbGVkTGF5ZXIKLSAgICAgICAgbV90
aWxlUGFyZW50LmFkb3B0Q0YoQ0FDRkxheWVyQ3JlYXRlKGtDQUNGTGF5ZXIpKTsKKyAgICAgICAg
bV90aWxlUGFyZW50ID0gYWRvcHRDRihDQUNGTGF5ZXJDcmVhdGUoa0NBQ0ZMYXllcikpOwogICAg
ICAgICBDQUNGTGF5ZXJJbnNlcnRTdWJsYXllcihtX293bmVyLT5wbGF0Zm9ybUxheWVyKCksIG1f
dGlsZVBhcmVudC5nZXQoKSwgMCk7CiAgICAgICAgIHVwZGF0ZVRpbGVzKCk7CiAgICAgfQpAQCAt
Mzg0LDcgKzM4NCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OnRpbGVEaXNw
bGF5Q2FsbGJhY2soQ0FDRkxheWVyUmVmIGxheWVyLCBDR0NvbnRlCiAKIHZvaWQgUGxhdGZvcm1D
QUxheWVyV2luSW50ZXJuYWw6OmFkZFRpbGUoKQogewotICAgIFJldGFpblB0cjxDQUNGTGF5ZXJS
ZWY+IG5ld0xheWVyKEFkb3B0Q0YsIENBQ0ZMYXllckNyZWF0ZShrQ0FDRkxheWVyKSk7CisgICAg
UmV0YWluUHRyPENBQ0ZMYXllclJlZj4gbmV3TGF5ZXIgPSBhZG9wdENGKENBQ0ZMYXllckNyZWF0
ZShrQ0FDRkxheWVyKSk7CiAgICAgQ0FDRkxheWVyU2V0QW5jaG9yUG9pbnQobmV3TGF5ZXIuZ2V0
KCksIENHUG9pbnRNYWtlKDAsIDEpKTsKICAgICBDQUNGTGF5ZXJTZXRVc2VyRGF0YShuZXdMYXll
ci5nZXQoKSwgdGhpcyk7CiAgICAgQ0FDRkxheWVyU2V0RGlzcGxheUNhbGxiYWNrKG5ld0xheWVy
LmdldCgpLCB0aWxlRGlzcGxheUNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJl
ZUhvc3QuY3BwCmluZGV4IGQ5NDVjM2UyZWFjNjQwYWE5Y2FiZTBkMWEyZjFkMzE1YjA5Y2Y4M2Iu
LjJmNjRhYjE2MGNmODhjMGYwZjQzNmJkNmRlMjRlNTUxNjQzMGQxZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVl
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dL
Q0FDRlZpZXdMYXllclRyZWVIb3N0LmNwcApAQCAtNzIsNyArNzIsNyBAQCBQYXNzUmVmUHRyPFdL
Q0FDRlZpZXdMYXllclRyZWVIb3N0PiBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkK
IH0KIAogV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6OldLQ0FDRlZpZXdMYXllclRyZWVIb3N0KCkK
LSAgICA6IG1fdmlldyhBZG9wdENGLCBXS0NBQ0ZWaWV3Q3JlYXRlKGtXS0NBQ0ZWaWV3RHJhd2lu
Z0Rlc3RpbmF0aW9uV2luZG93KSkKKyAgICA6IG1fdmlldyhhZG9wdENGKFdLQ0FDRlZpZXdDcmVh
dGUoa1dLQ0FDRlZpZXdEcmF3aW5nRGVzdGluYXRpb25XaW5kb3cpKSkKICAgICAsIG1fdmlld05l
ZWRzVXBkYXRlKHRydWUpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd01hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93TWFj
Lm1tCmluZGV4IDk1MmZiN2Y2MWUxMzY3ODg3ZmNmMmJmY2VkZmRkNDQ5ZDk0Y2FiODEuLmEzNGFi
NzhlNDA2ZGZmNjNkMWY4YWEyOTkyY2EyZmU4OWIxYjg0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0
Zm9ybVZpZGVvV2luZG93TWFjLm1tCkBAIC0yOCw3ICsyOCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBQbGF0Zm9ybVZpZGVvV2luZG93OjpQbGF0Zm9ybVZpZGVvV2luZG93KCkKIHsK
LSAgICBtX3dpbmRvdy5hZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0XSk7CisgICAgbV93aW5k
b3cgPSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0XSk7CiAgICAgbV92aWRlb1dpbmRvd0lk
ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBsb25nPihtX3dpbmRvdy5nZXQoKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBlYzQyNmMxNTYyZmZmNGExZWYwMjA4
MmIzNDU1Y2Y1OWI1ZGU3ZjU5Li4yNDZiYjM1ZWEwYTI3MDNlY2NjMTFkMjg3MjRiMjlkZmFjYjVm
MTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC02NCw3ICs2NCw3IEBAIEZv
bnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShp
bnQgc2l6ZSwgYm9vbCBib2xkLCBiCiAKICAgICBIRk9OVCBoZm9udCA9IENyZWF0ZUZvbnRJbmRp
cmVjdCgmbG9nRm9udCk7CiAKLSAgICBSZXRhaW5QdHI8Q0dGb250UmVmPiBjZ0ZvbnQoQWRvcHRD
RiwgQ0dGb250Q3JlYXRlV2l0aFBsYXRmb3JtRm9udCgmbG9nRm9udCkpOworICAgIFJldGFpblB0
cjxDR0ZvbnRSZWY+IGNnRm9udCA9IGFkb3B0Q0YoQ0dGb250Q3JlYXRlV2l0aFBsYXRmb3JtRm9u
dCgmbG9nRm9udCkpOwogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKGhmb250LCBjZ0ZvbnQu
Z2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgcmVuZGVyaW5nTW9kZSA9PSBBbHRlcm5hdGVSZW5k
ZXJpbmdNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNHV2luLmNwcAppbmRleCBkODA3MGVi
MWU4MjNjOGYzMDI5YTU3YmY0MTYzMWUyYmRjNmE1Y2FmLi40ZDcxZjM3MjExMjE1ZjQzZGY2NjEw
ZTkzN2I5MWY3OTljOTFkMTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNHV2luLmNwcApAQCAtODgs
MTQgKzg4LDE0IEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBnZXRQb3N0U2NyaXB0TmFtZShDRlN0cmlu
Z1JlZiBmYWNlTmFtZSwgSERDIGRjKQogICAgICAgICAgICAgLy8gUGFzcyBCaWcgRW5kaWFuIGFz
IHRoZSBlbmNvZGluZy4KICAgICAgICAgICAgIGlmIChidWZmZXJTaXplIDwgc3RyaW5nc09mZnNl
dCArIG5hbWVPZmZzZXQgKyBsZW5ndGgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0g
ICAgICAgICAgICByZXN1bHQuYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcyhOVUxMLCBz
dHJpbmdzICsgbmFtZU9mZnNldCwgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjE2QkUsIGZh
bHNlKSk7CisgICAgICAgICAgICByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5
dGVzKE5VTEwsIHN0cmluZ3MgKyBuYW1lT2Zmc2V0LCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5n
VVRGMTZCRSwgZmFsc2UpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9IGVsc2UgaWYg
KHBsYXRmb3JtSUQgPT0gMSAmJiBlbmNvZGluZ0lEID09IDAgJiYgbGFuZ3VhZ2VJRCA9PSAwICYm
IG5hbWVJRCA9PSA2KSB7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgTWFjIFBvc3RTY3JpcHQg
bmFtZSBhbmQgaXMgdGhlcmVmb3JlIEFTQ0lJLgogICAgICAgICAgICAgLy8gU2VlIGh0dHA6Ly9k
ZXZlbG9wZXIuYXBwbGUuY29tL3RleHRmb250cy9UVFJlZk1hbi9STTA2L0NoYXA2bmFtZS5odG1s
CiAgICAgICAgICAgICBpZiAoYnVmZmVyU2l6ZSA8IHN0cmluZ3NPZmZzZXQgKyBuYW1lT2Zmc2V0
ICsgbGVuZ3RoKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgcmVz
dWx0LmFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoTlVMTCwgc3RyaW5ncyArIG5hbWVP
ZmZzZXQsIGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSwgZmFsc2UpKTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoTlVMTCwgc3RyaW5n
cyArIG5hbWVPZmZzZXQsIGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSwgZmFsc2UpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lk
IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtRGF0YUluaXQoSEZPTlQgZm9udCwgZmxvYXQgc2l6
ZSwgSERDIGhkYywgV0NIQVIqCiB7CiAgICAgTE9HRk9OVCBsb2dmb250OwogICAgIEdldE9iamVj
dChmb250LCBzaXplb2YobG9nZm9udCksICZsb2dmb250KTsKLSAgICBtX2NnRm9udC5hZG9wdENG
KENHRm9udENyZWF0ZVdpdGhQbGF0Zm9ybUZvbnQoJmxvZ2ZvbnQpKTsKKyAgICBtX2NnRm9udCA9
IGFkb3B0Q0YoQ0dGb250Q3JlYXRlV2l0aFBsYXRmb3JtRm9udCgmbG9nZm9udCkpOwogfQogCiBG
b250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEhGT05UIGhmb250LCBDR0ZvbnRSZWYg
Zm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIG9ibGlxdWUsIGJvb2wgdXNlR0RJKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dENHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHRDR1dpbi5jcHAKaW5kZXggMDYzZjdjYjY5YTkwOTkxMWExNjUwOWU4NjU3
OGQ0NjcwMGRjMjhlNC4uOTBiMGNmYzZhNDliMzBkYzc1MzBlNWYxMDBmNTZlYTExNDYxNWM5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dENHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCkBAIC0xMjIsOSArMTIyLDkgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdXaW5kb3dzQml0bWFwKFdpbmRvd3NCaXRtYXAqIGltYWdlLCBjb25z
dCBJbnRQb2ludCYgcG8KIHsKICAgICAvLyBGSVhNRTogQ3JlYXRpbmcgQ0ZEYXRhIGlzIG5vbi1v
cHRpbWFsLCBidXQgbmVlZGVkIHRvIGF2b2lkIGNyYXNoaW5nIHdoZW4gcHJpbnRpbmcuICBJZGVh
bGx5IHdlIHNob3VsZCAKICAgICAvLyBtYWtlIGEgY3VzdG9tIENHRGF0YVByb3ZpZGVyIHRoYXQg
Y29udHJvbHMgdGhlIFdpbmRvd3NCaXRtYXAgbGlmZXRpbWUuICBzZWUgPHJkYXI6Ly82Mzk0NDU1
PgotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGltYWdlRGF0YShBZG9wdENGLCBDRkRhdGFDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgaW1hZ2UtPmJ1ZmZlcigpLCBpbWFnZS0+YnVmZmVyTGVu
Z3RoKCkpKTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlcihB
ZG9wdENGLCBDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoaW1hZ2VEYXRhLmdldCgpKSk7
Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2UoQWRvcHRDRiwgQ0dJbWFnZUNyZWF0
ZShpbWFnZS0+c2l6ZSgpLndpZHRoKCksIGltYWdlLT5zaXplKCkuaGVpZ2h0KCksIDgsIDMyLCBp
bWFnZS0+Ynl0ZXNQZXJSb3coKSwgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpLAorICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IGltYWdlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGltYWdlLT5idWZmZXIoKSwgaW1hZ2UtPmJ1ZmZlckxlbmd0aCgpKSk7Cisg
ICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENH
RGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShpbWFnZURhdGEuZ2V0KCkpKTsKKyAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZS0+
c2l6ZSgpLndpZHRoKCksIGltYWdlLT5zaXplKCkuaGVpZ2h0KCksIDgsIDMyLCBpbWFnZS0+Ynl0
ZXNQZXJSb3coKSwgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NHQml0bWFwQnl0ZU9yZGVy
MzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhRmlyc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgdHJ1
ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAgIENHQ29udGV4dERyYXdJbWFnZSht
X2RhdGEtPm1fY2dDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKHBvaW50LngoKSwgcG9pbnQueSgp
LCBpbWFnZS0+c2l6ZSgpLndpZHRoKCksIGltYWdlLT5zaXplKCkuaGVpZ2h0KCkpLCBjZ0ltYWdl
LmdldCgpKTsgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA4MDA3NTExNjkxNjA0NmRkNzZlOWFjZjRmODAzYjE0
MTA0ZTg5YWViLi43ZDBlZjhlMjliYzFhZjhhZTA3NGIyZGRiYzIxYjA2MDRjYTM2MjM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4u
Y3BwCkBAIC01MCw3ICs1MCw3IEBAIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IEJpdG1hcEltYWdl
OjpjcmVhdGUoSEJJVE1BUCBoQml0bWFwKQogICAgIGlmICghZGliU2VjdGlvbi5kc0JtLmJtQml0
cykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRt
YXBDb250ZXh0KEFkb3B0Q0YsIENHQml0bWFwQ29udGV4dENyZWF0ZShkaWJTZWN0aW9uLmRzQm0u
Ym1CaXRzLCBkaWJTZWN0aW9uLmRzQm0uYm1XaWR0aCwgZGliU2VjdGlvbi5kc0JtLmJtSGVpZ2h0
LCA4LAorICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1hcENvbnRleHQgPSBhZG9wdENG
KENHQml0bWFwQ29udGV4dENyZWF0ZShkaWJTZWN0aW9uLmRzQm0uYm1CaXRzLCBkaWJTZWN0aW9u
LmRzQm0uYm1XaWR0aCwgZGliU2VjdGlvbi5kc0JtLmJtSGVpZ2h0LCA4LAogICAgICAgICBkaWJT
ZWN0aW9uLmRzQm0uYm1XaWR0aEJ5dGVzLCBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCksIGtDR0Jp
dG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCkp
OwogCiAgICAgLy8gVGhlIEJpdG1hcEltYWdlIHRha2VzIG93bmVyc2hpcCBvZiB0aGlzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVy
UHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwCmluZGV4IGY2
ZTZjYmU3YmY2MmQxYWIwNDU5ZTIxODk4NzI4YjFkMmE0ZjA5ODAuLjJkNjBkMjE4NTAwOTM2YzRi
ZmE5OThjMGI5M2IwNDJhMDBmZjQyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OnNldFJvb3RDaGlsZExheWVyKFBhc3NSZWZQdHI8
UGxhdGZvcm1DQQogICAgIG1fcm9vdENoaWxkLT5zZXRGcmFtZShyb290Qm91bmRzKTsKICAgICBt
X3Jvb3RDaGlsZC0+c2V0QmFja2dyb3VuZENvbG9yKENHQ29sb3JHZXRDb25zdGFudENvbG9yKGtD
R0NvbG9yQmxhY2spKTsKICNpZm5kZWYgTkRFQlVHCi0gICAgUmV0YWluUHRyPENHQ29sb3JSZWY+
IHJlZENvbG9yKEFkb3B0Q0YsIENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEsIDAsIDAsIDEpKTsK
KyAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVh
dGVHZW5lcmljUkdCKDEsIDAsIDAsIDEpKTsKICAgICByb290TGF5ZXItPnNldEJhY2tncm91bmRD
b2xvcihyZWRDb2xvci5nZXQoKSk7CiAjZWxzZQogICAgIHJvb3RMYXllci0+c2V0QmFja2dyb3Vu
ZENvbG9yKENHQ29sb3JHZXRDb25zdGFudENvbG9yKGtDR0NvbG9yQmxhY2spKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZh
dGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcApp
bmRleCBkZDlhMzEwNjcxNWIyMmY4ZTliMDliMzJjMTkxYjNlMTE4ODM0NTcwLi4zZmY2NWM3OTlk
MWE0OGI1NzkxOTRhNDJlMzlhN2M1MjIwODZiY2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFs
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCkBAIC0yMzUsNyArMjM1
LDcgQEAgU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OnJm
YzI2MTZEYXRlU3RyaW5nRnJvbVRpbWUoQ0ZBYnMKICAgICB0aW1lID0gQ0ZHcmVnb3JpYW5EYXRl
R2V0QWJzb2x1dGVUaW1lKGRhdGVWYWx1ZSwgZ210VGltZVpvbmUpOwogICAgIFNJbnQzMiBkYXkg
PSBDRkFic29sdXRlVGltZUdldERheU9mV2Vlayh0aW1lLCAwKTsKIAotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gZGF0ZUNGU3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1h
dCgwLCAwLCBkYXRlRm9ybWF0U3RyaW5nLCBkYXlTdHJpbmdzW2RheSAtIDFdLCBkYXRlVmFsdWUu
ZGF5LCAKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGRhdGVDRlN0cmluZyA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIGRhdGVGb3JtYXRTdHJpbmcsIGRheVN0cmlu
Z3NbZGF5IC0gMV0sIGRhdGVWYWx1ZS5kYXksIAogICAgICAgICBtb250aFN0cmluZ3NbZGF0ZVZh
bHVlLm1vbnRoIC0gMV0sIGRhdGVWYWx1ZS55ZWFyLCBkYXRlVmFsdWUuaG91ciwgZGF0ZVZhbHVl
Lm1pbnV0ZSwgKGludClkYXRlVmFsdWUuc2Vjb25kKSk7CiAgICAgcmV0dXJuIGRhdGVDRlN0cmlu
Zy5nZXQoKTsKIH0KQEAgLTc5OSw3ICs3OTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF1
aWNrVGltZVZpc3VhbENvbnRleHQ6OnZpc3VhbENvbnRleHRUaW1lckZpcmVkKFRpbWVyPE1lZAog
CiBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIFFUQ0ZEaWN0aW9uYXJ5Q3JlYXRlV2l0aERhdGFDYWxs
YmFjayhDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0IFVJbnQ4KiBieXRlcywgQ0ZJbmRl
eCBsZW5ndGgpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YShBZG9wdENGLCBDRkRh
dGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoYWxsb2NhdG9yLCBieXRlcywgbGVuZ3RoLCBrQ0ZBbGxv
Y2F0b3JOdWxsKSk7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ0ZE
YXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGFsbG9jYXRvciwgYnl0ZXMsIGxlbmd0aCwga0NGQWxs
b2NhdG9yTnVsbCkpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTg5
MCw3ICs4OTAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRl
eHQ6OnJldHJpZXZlQ3VycmVudEltYWdlKCkKICAgICAgICAgICAgICAgICAvLyBDQUltYWdlUXVl
dWUgd2l0aG91dCBiZWluZyBjb252ZXJ0ZWQgdG8gYSBub24tRGVidWcgQ0ZEaWN0aW9uYXJ5LiAg
QWRkaXRpb25hbGx5LAogICAgICAgICAgICAgICAgIC8vIG9sZCB2ZXJzaW9ucyBvZiBRdWlja1Rp
bWUgdXNlZCBhIG5vbi1BQVMgQ29yZUZvdW5kYXRpb24sIHNvIHRoZSB0eXBlcyBhcmUgbm90IAog
ICAgICAgICAgICAgICAgIC8vIGludGVyY2hhbmdhYmxlIGV2ZW4gaW4gdGhlIHJlbGVhc2UgY2Fz
ZS4KLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBhdHRhY2htZW50
cyhBZG9wdENGLCBRVENGRGljdGlvbmFyeUNyZWF0ZUNvcHlXaXRoRGF0YUNhbGxiYWNrKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGJ1ZmZlci5hdHRhY2htZW50cygpLCAmUVRDRkRpY3Rpb25hcnlDcmVh
dGVXaXRoRGF0YUNhbGxiYWNrKSk7CisgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gYXR0YWNobWVudHMgPSBhZG9wdENGKFFUQ0ZEaWN0aW9uYXJ5Q3JlYXRlQ29weVdp
dGhEYXRhQ2FsbGJhY2soa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVmZmVyLmF0dGFjaG1lbnRzKCks
ICZRVENGRGljdGlvbmFyeUNyZWF0ZVdpdGhEYXRhQ2FsbGJhY2spKTsKICAgICAgICAgICAgICAg
ICBDRlRpbWVJbnRlcnZhbCBpbWFnZVRpbWUgPSBRVE1vdmllVmlzdWFsQ29udGV4dDo6Y3VycmVu
dEhvc3RUaW1lKCk7CiAKICAgICAgICAgICAgICAgICBtX2ltYWdlUXVldWUtPmNvbGxlY3QoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1h
Z2VRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUlt
YWdlUXVldWUuY3BwCmluZGV4IDJiZjAyNTk2MGI1NzE2NGU3ZTk3ZDg5NDg1YjUzZjJiMGVlYTQx
NzAuLmVmOGExYzU3M2NhNWM5Nzc5NWEzYmI0YTIxYjYzZTA4NzE3ZjFjM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVl
LmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgdm9pZCBXS0NBSW1hZ2VRdWV1ZVJlbGVhc2Uo
Q0FJbWFnZVF1ZXVlUmVmIGlxKQogV0tDQUltYWdlUXVldWU6OldLQ0FJbWFnZVF1ZXVlKHVpbnQz
Ml90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGNhcGFjaXR5KQogICAgIDogbV9w
cml2YXRlKGFkb3B0UHRyKG5ldyBXS0NBSW1hZ2VRdWV1ZVByaXZhdGUoKSkpCiB7Ci0gICAgbV9w
cml2YXRlLT5tX2ltYWdlUXVldWUuYWRvcHRDRih3a0NBSW1hZ2VRdWV1ZUNyZWF0ZSh3aWR0aCwg
aGVpZ2h0LCBjYXBhY2l0eSkpOworICAgIG1fcHJpdmF0ZS0+bV9pbWFnZVF1ZXVlID0gYWRvcHRD
Rih3a0NBSW1hZ2VRdWV1ZUNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCBjYXBhY2l0eSkpOwogfQogCiBX
S0NBSW1hZ2VRdWV1ZTo6V0tDQUltYWdlUXVldWUoY29uc3QgV0tDQUltYWdlUXVldWUmIG8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURl
Y29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVj
b2Rlci5oCmluZGV4IGEzMmY4YzkwMjFjYTMxN2NhNDNiNDVhZDZkMWZmMzQzNjJkMjQ0NzIuLmZj
MzM3YWZiY2Y5YmY0OGE1MTZhODc2N2QyYjhmZDEwZGI4NzBlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0z
MDgsNyArMzA4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgIHFjbXNJ
bml0aWFsaXplZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBvcHRpb25h
bCBJQ0N2NCBzdXBwb3J0LgogI2lmIE9TKERBUldJTikKLSAgICAgICAgICAgICAgICBSZXRhaW5Q
dHI8Q0dDb2xvclNwYWNlUmVmPiBtb25pdG9yQ29sb3JTcGFjZShBZG9wdENGLCBDR0Rpc3BsYXlD
b3B5Q29sb3JTcGFjZShDR01haW5EaXNwbGF5SUQoKSkpOworICAgICAgICAgICAgICAgIFJldGFp
blB0cjxDR0NvbG9yU3BhY2VSZWY+IG1vbml0b3JDb2xvclNwYWNlID0gYWRvcHRDRihDR0Rpc3Bs
YXlDb3B5Q29sb3JTcGFjZShDR01haW5EaXNwbGF5SUQoKSkpOwogICAgICAgICAgICAgICAgIENG
RGF0YVJlZiBpY2NQcm9maWxlKENHQ29sb3JTcGFjZUNvcHlJQ0NQcm9maWxlKG1vbml0b3JDb2xv
clNwYWNlLmdldCgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKGljY1Byb2ZpbGUpIHsKICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IENGRGF0YUdldExlbmd0aChpY2NQcm9maWxl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVu
dGljYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhl
bnRpY2F0aW9uQ0YuY3BwCmluZGV4IDljYWE4OTAyYjZlMjc4ZGJmYWM4OTEzNDUwODEzZjgzYzRl
ZGFjYmMuLjAzMDBhNDBhZmI4MDQ4ZTNiYTE3MDZhMDE2MTM0Y2E1NGY4ZjZhNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlv
bkNGLmNwcApAQCAtMjE2LDcgKzIxNiw3IEBAIENyZWRlbnRpYWwgY29yZShDRlVSTENyZWRlbnRp
YWxSZWYgY2ZDcmVkZW50aWFsKQogICAgICAgICByZXR1cm4gQ3JlZGVudGlhbChpZGVudGl0eSwg
Q0ZVUkxDcmVkZW50aWFsR2V0Q2VydGlmaWNhdGVBcnJheShjZkNyZWRlbnRpYWwpLCBwZXJzaXN0
ZW5jZSk7CiAjZW5kaWYKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGFzc3dvcmQoQWRv
cHRDRiwgQ0ZVUkxDcmVkZW50aWFsQ29weVBhc3N3b3JkKGNmQ3JlZGVudGlhbCkpOworICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gcGFzc3dvcmQgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbENv
cHlQYXNzd29yZChjZkNyZWRlbnRpYWwpKTsKICAgICByZXR1cm4gQ3JlZGVudGlhbChDRlVSTENy
ZWRlbnRpYWxHZXRVc2VybmFtZShjZkNyZWRlbnRpYWwpLCBwYXNzd29yZC5nZXQoKSwgcGVyc2lz
dGVuY2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0Nvb2tpZUphckNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQ29va2llSmFyQ0ZOZXQuY3BwCmluZGV4IDlhMTk4MGE4MGZmN2Y1MzU3ZDQ4ODQzNWI5MmMz
ZmM1NDJlNzEzMDcuLjI4NDcyZTc3Yjc2YTE1ZmI3ZWZhYjU5YTNjNTBmNWNlMmZkNTljOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZO
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFy
Q0ZOZXQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBzX2Nv
b2tpZUNGID0gQ0ZTVFIoIkNvb2tpZSIpOwogCiBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY29va2llRG9tYWluKENGSFRUUENvb2tpZVJlZiBjb29raWUpCiB7Ci0gICAgcmV0
dXJuIFJldGFpblB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwgQ0ZIVFRQQ29va2llQ29weURvbWFp
bihjb29raWUpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkhUVFBDb29raWVDb3B5RG9tYWluKGNv
b2tpZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIENGQWJzb2x1dGVUaW1lIGNvb2tpZUV4cGlyYXRp
b25UaW1lKENGSFRUUENvb2tpZVJlZiBjb29raWUpCkBAIC01OCwyMyArNTgsMjMgQEAgc3RhdGlj
IGlubGluZSBDRkFic29sdXRlVGltZSBjb29raWVFeHBpcmF0aW9uVGltZShDRkhUVFBDb29raWVS
ZWYgY29va2llKQogCiBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY29va2ll
TmFtZShDRkhUVFBDb29raWVSZWYgY29va2llKQogewotICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+KEFkb3B0Q0YsIENGSFRUUENvb2tpZUNvcHlOYW1lKGNvb2tpZSkpOworICAgIHJl
dHVybiBhZG9wdENGKENGSFRUUENvb2tpZUNvcHlOYW1lKGNvb2tpZSkpOwogfQogCiBzdGF0aWMg
aW5saW5lIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY29va2llUGF0aChDRkhUVFBDb29raWVSZWYg
Y29va2llKQogewotICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KEFkb3B0Q0YsIENG
SFRUUENvb2tpZUNvcHlQYXRoKGNvb2tpZSkpOworICAgIHJldHVybiBhZG9wdENGKENGSFRUUENv
b2tpZUNvcHlQYXRoKGNvb2tpZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY29va2llVmFsdWUoQ0ZIVFRQQ29va2llUmVmIGNvb2tpZSkKIHsKLSAgICByZXR1
cm4gUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBDRkhUVFBDb29raWVDb3B5VmFsdWUo
Y29va2llKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZIVFRQQ29va2llQ29weVZhbHVlKGNvb2tp
ZSkpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENGQXJyYXlSZWY+IGZpbHRlckNvb2tpZXMoQ0ZB
cnJheVJlZiB1bmZpbHRlcmVkQ29va2llcykKIHsKICAgICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJh
eUdldENvdW50KHVuZmlsdGVyZWRDb29raWVzKTsKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJy
YXlSZWY+IGZpbHRlcmVkQ29va2llcyhBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBj
b3VudCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOworICAgIFJldGFpblB0cjxDRk11dGFibGVB
cnJheVJlZj4gZmlsdGVyZWRDb29raWVzID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgw
LCBjb3VudCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwogICAgIGZvciAoQ0ZJbmRleCBpID0g
MDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgQ0ZIVFRQQ29va2llUmVmIGNvb2tpZSA9IChD
RkhUVFBDb29raWVSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleCh1bmZpbHRlcmVkQ29va2llcywg
aSk7CiAKQEAgLTk5LDE5ICs5OSwxOSBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYQogICAgIGlm
ICh2YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRlVS
TFJlZj4gdXJsQ0YoQWRvcHRDRiwgdXJsLmNyZWF0ZUNGVVJMKCkpOwotICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gZmlyc3RQYXJ0eUZvckNvb2tpZXNDRihBZG9wdENGLCBmaXJzdFBhcnR5LmNyZWF0
ZUNGVVJMKCkpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YgPSBhZG9wdENGKHVybC5j
cmVhdGVDRlVSTCgpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGZpcnN0UGFydHlGb3JDb29r
aWVzQ0YgPSBhZG9wdENGKGZpcnN0UGFydHkuY3JlYXRlQ0ZVUkwoKSk7CiAKICAgICAvLyA8aHR0
cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMT4sIDxyZGFyOi8vNDQwOTAz
ND4KICAgICAvLyBjb29raWVzV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRzIGRvZXNuJ3QgcGFyc2Ug
Y29va2llcyB3aXRob3V0IGEgdmFsdWUKICAgICBTdHJpbmcgY29va2llU3RyaW5nID0gdmFsdWUu
Y29udGFpbnMoJz0nKSA/IHZhbHVlIDogdmFsdWUgKyAiPSI7CiAKICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGNvb2tpZVN0cmluZ0NGID0gY29va2llU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCk7
Ci0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVhZGVyRmllbGRzQ0YoQWRvcHRDRiwg
Q0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gaGVhZGVyRmllbGRzQ0YgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LAogICAgICAgICAoY29uc3Qgdm9pZCoqKSZzX3NldENvb2tp
ZUtleUNGLCAoY29uc3Qgdm9pZCoqKSZjb29raWVTdHJpbmdDRiwgMSwKICAgICAgICAgJmtDRlR5
cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNr
cykpOwogCi0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhU
VFBDb29raWVDcmVhdGVXaXRoUmVzcG9uc2VIZWFkZXJGaWVsZHMoa0NGQWxsb2NhdG9yRGVmYXVs
dCwKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGID0gYWRvcHRDRihDRkhUVFBD
b29raWVDcmVhdGVXaXRoUmVzcG9uc2VIZWFkZXJGaWVsZHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwK
ICAgICAgICAgaGVhZGVyRmllbGRzQ0YuZ2V0KCksIHVybENGLmdldCgpKSk7CiAKICAgICBDRkhU
VFBDb29raWVTdG9yYWdlU2V0Q29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwg
ZmlsdGVyQ29va2llcyhjb29raWVzQ0YuZ2V0KCkpLmdldCgpLCB1cmxDRi5nZXQoKSwgZmlyc3RQ
YXJ0eUZvckNvb2tpZXNDRi5nZXQoKSk7CkBAIC0xMTksMjEgKzExOSwyMSBAQCB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgZmlyc3RQYQogCiBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAg
UmV0YWluUHRyPENGVVJMUmVmPiB1cmxDRihBZG9wdENGLCB1cmwuY3JlYXRlQ0ZVUkwoKSk7Cisg
ICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxDRiA9IGFkb3B0Q0YodXJsLmNyZWF0ZUNGVVJMKCkp
OwogCiAgICAgYm9vbCBzZWN1cmUgPSB1cmwucHJvdG9jb2xJcygiaHR0cHMiKTsKLSAgICBSZXRh
aW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VD
b3B5Q29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsQ0YuZ2V0
KCksIHNlY3VyZSkpOwotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhlYWRlckNGKEFk
b3B0Q0YsIENGSFRUUENvb2tpZUNvcHlSZXF1ZXN0SGVhZGVyRmllbGRzKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGZpbHRlckNvb2tpZXMoY29va2llc0NGLmdldCgpKS5nZXQoKSkpOworICAgIFJldGFp
blB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0YgPSBhZG9wdENGKENGSFRUUENvb2tpZVN0b3JhZ2VD
b3B5Q29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsQ0YuZ2V0
KCksIHNlY3VyZSkpOworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhlYWRlckNGID0g
YWRvcHRDRihDRkhUVFBDb29raWVDb3B5UmVxdWVzdEhlYWRlckZpZWxkcyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBmaWx0ZXJDb29raWVzKGNvb2tpZXNDRi5nZXQoKSkuZ2V0KCkpKTsKICAgICByZXR1
cm4gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGhlYWRlckNGLmdldCgpLCBzX2Nv
b2tpZUNGKTsKIH0KIAogU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5
Ki8sIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGKEFk
b3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENG
ID0gYWRvcHRDRih1cmwuY3JlYXRlQ0ZVUkwoKSk7CiAKICAgICBib29sIHNlY3VyZSA9IHVybC5w
cm90b2NvbElzKCJodHRwcyIpOwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0Yo
QWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9yVVJMKHNlc3Npb24uY29v
a2llU3RvcmFnZSgpLmdldCgpLCB1cmxDRi5nZXQoKSwgc2VjdXJlKSk7Ci0gICAgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gaGVhZGVyQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llQ29weVJlcXVl
c3RIZWFkZXJGaWVsZHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY29va2llc0NGLmdldCgpKSk7Cisg
ICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRiA9IGFkb3B0Q0YoQ0ZIVFRQQ29va2ll
U3RvcmFnZUNvcHlDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1
cmxDRi5nZXQoKSwgc2VjdXJlKSk7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVh
ZGVyQ0YgPSBhZG9wdENGKENGSFRUUENvb2tpZUNvcHlSZXF1ZXN0SGVhZGVyRmllbGRzKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGNvb2tpZXNDRi5nZXQoKSkpOwogICAgIHJldHVybiAoQ0ZTdHJpbmdS
ZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaGVhZGVyQ0YuZ2V0KCksIHNfY29va2llQ0YpOwogfQog
CkBAIC0xNDcsMTAgKzE0NywxMCBAQCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydAogewogICAgIHJh
d0Nvb2tpZXMuY2xlYXIoKTsKIAotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YoQWRvcHRD
RiwgdXJsLmNyZWF0ZUNGVVJMKCkpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YgPSBh
ZG9wdENGKHVybC5jcmVhdGVDRlVSTCgpKTsKIAogICAgIGJvb2wgc2VuZFNlY3VyZUNvb2tpZXMg
PSB1cmwucHJvdG9jb2xJcygiaHR0cHMiKTsKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29v
a2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTChzZXNz
aW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlbmRTZWN1cmVDb29raWVz
KSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRiA9IGFkb3B0Q0YoQ0ZIVFRQ
Q29va2llU3RvcmFnZUNvcHlDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdl
dCgpLCB1cmxDRi5nZXQoKSwgc2VuZFNlY3VyZUNvb2tpZXMpKTsKIAogICAgIENGSW5kZXggY291
bnQgPSBDRkFycmF5R2V0Q291bnQoY29va2llc0NGLmdldCgpKTsKICAgICByYXdDb29raWVzLnJl
c2VydmVDYXBhY2l0eShjb3VudCk7CkBAIC0xNzgsMTAgKzE3OCwxMCBAQCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgUwogewogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29r
aWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9yYWdlKCk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZV
UkxSZWY+IHVybENGKEFkb3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IHVybENGID0gYWRvcHRDRih1cmwuY3JlYXRlQ0ZVUkwoKSk7CiAKICAgICBib29s
IHNlbmRTZWN1cmVDb29raWVzID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0gICAgUmV0YWlu
UHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29w
eUNvb2tpZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlbmRTZWN1
cmVDb29raWVzKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRiA9IGFkb3B0
Q0YoQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UuZ2V0
KCksIHVybENGLmdldCgpLCBzZW5kU2VjdXJlQ29va2llcykpOwogCiAgICAgQ0ZJbmRleCBjb3Vu
dCA9IENGQXJyYXlHZXRDb3VudChjb29raWVzQ0YuZ2V0KCkpOwogICAgIGZvciAoQ0ZJbmRleCBp
ID0gMDsgaSA8IGNvdW50OyBpKyspIHsKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgUwogCiB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7Ci0g
ICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVT
dG9yYWdlQ29weUNvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGID0gYWRvcHRDRihDRkhUVFBDb29raWVTdG9y
YWdlQ29weUNvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpKTsKICAgICBpZiAo
IWNvb2tpZXNDRikKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBk
ZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBTdHJpbmcKIHsKICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJl
Zj4gY29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2llU3RvcmFnZSgpOwogCi0gICAgUmV0YWlu
UHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29w
eUNvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkFycmF5UmVm
PiBjb29raWVzQ0YgPSBhZG9wdENGKENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llcyhjb29r
aWVTdG9yYWdlLmdldCgpKSk7CiAgICAgaWYgKCFjb29raWVzQ0YpCiAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlSGFuZGxlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAppbmRleCA1ZmNiZDA2MTc3OGUzZmVjNGY4NjBj
NGM4ZTUyMGNkNWIzZTRjNmRiLi40NTFkOTU1OGUyOGU1MzlhZmU5Y2M1MTVkMWZlMjZmZWU4Yjhl
NTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcApAQCAtNjksNyArNjksNyBAQCBzdGF0
aWMgQ1N0cmluZyBjZXJ0aWZpY2F0ZVBhdGgoKQogI2lmIFVTRShDRikKICAgICBDRkJ1bmRsZVJl
ZiB3ZWJLaXRCdW5kbGUgPSBDRkJ1bmRsZUdldEJ1bmRsZVdpdGhJZGVudGlmaWVyKENGU1RSKCJj
b20uYXBwbGUuV2ViS2l0IikpOwogICAgIGlmICh3ZWJLaXRCdW5kbGUpIHsKLSAgICAgICAgUmV0
YWluUHRyPENGVVJMUmVmPiBjZXJ0VVJMUmVmKEFkb3B0Q0YsIENGQnVuZGxlQ29weVJlc291cmNl
VVJMKHdlYktpdEJ1bmRsZSwgQ0ZTVFIoImNhY2VydCIpLCBDRlNUUigicGVtIiksIENGU1RSKCJj
ZXJ0aWZpY2F0ZXMiKSkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNlcnRVUkxSZWYg
PSBhZG9wdENGKENGQnVuZGxlQ29weVJlc291cmNlVVJMKHdlYktpdEJ1bmRsZSwgQ0ZTVFIoImNh
Y2VydCIpLCBDRlNUUigicGVtIiksIENGU1RSKCJjZXJ0aWZpY2F0ZXMiKSkpOwogICAgICAgICBp
ZiAoY2VydFVSTFJlZikgewogICAgICAgICAgICAgY2hhciBwYXRoW01BWF9QQVRIXTsKICAgICAg
ICAgICAgIENGVVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNlcnRVUkxSZWYuZ2V0KCks
IGZhbHNlLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocGF0aCksIE1BWF9QQVRIKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5j
cHAKaW5kZXggYjM0YzNmYjFmOTFlZGM0NmEwZWYwOTQyNDFkYmU0N2UwNTgzOTk2Ni4uMzBkMTZl
OGY3YTNiYWY2ZTI0ODVmNjBhZDA2ZDhkNzhjNjgyYzk3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKQEAgLTYwLDcg
KzYwLDcgQEAgc3RhdGljIGJvb2wgdXJsRnJvbVBhdGgoQ0ZTdHJpbmdSZWYgcGF0aCwgU3RyaW5n
JiB1cmwpCiAgICAgaWYgKCFwYXRoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IGNmVVJMKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1Q
YXRoKDAsIHBhdGgsIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWlu
UHRyPENGVVJMUmVmPiBjZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBh
dGgoMCwgcGF0aCwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2UpKTsKICAgICBpZiAoIWNm
VVJMKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQ4MSw3ICs0ODEsNyBAQCBTdHJpbmcg
Z2V0VVJMKElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBEcmFnRGF0YTo6RmlsZW5hbWVDb252ZXJz
aW9uUG9saWN5IGZpbGVuYQogICAgICAgICAgICAgLy8gZmlsZSB1c2luZyB1bmljb2RlCiAgICAg
ICAgICAgICB3Y2hhcl90KiBkYXRhID0gc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KEdsb2JhbExvY2so
c3RvcmUuaEdsb2JhbCkpOwogICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YVswXSAmJiAoUGF0
aEZpbGVFeGlzdHMoZGF0YSkgfHwgUGF0aElzVU5DKGRhdGEpKSkgewotICAgICAgICAgICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0aEFzQ0ZTdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdD
cmVhdGVXaXRoQ2hhcmFjdGVycyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVW5pQ2hhciop
ZGF0YSwgd2NzbGVuKGRhdGEpKSk7CisgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBwYXRoQXNDRlN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVy
cyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVW5pQ2hhciopZGF0YSwgd2NzbGVuKGRhdGEp
KSk7CiAgICAgICAgICAgICAgICAgaWYgKHVybEZyb21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgp
LCB1cmwpICYmIHRpdGxlKQogICAgICAgICAgICAgICAgICAgICAqdGl0bGUgPSB1cmw7CiAgICAg
ICAgICAgICB9CkBAIC00OTEsNyArNDkxLDcgQEAgU3RyaW5nIGdldFVSTChJRGF0YU9iamVjdCog
ZGF0YU9iamVjdCwgRHJhZ0RhdGE6OkZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmEKICAg
ICAgICAgICAgIC8vIGZpbGVuYW1lIHVzaW5nIGFzY2lpCiAgICAgICAgICAgICBjaGFyKiBkYXRh
ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCkpOwogICAgICAg
ICAgICAgaWYgKGRhdGEgJiYgZGF0YVswXSAmJiAoUGF0aEZpbGVFeGlzdHNBKGRhdGEpIHx8IFBh
dGhJc1VOQ0EoZGF0YSkpKSB7Ci0gICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBwYXRoQXNDRlN0cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGRhdGEsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpKTsKKyAgICAgICAg
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5nID0gYWRvcHRDRihD
RlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEsIGtDRlN0
cmluZ0VuY29kaW5nQVNDSUkpKTsKICAgICAgICAgICAgICAgICBpZiAodXJsRnJvbVBhdGgocGF0
aEFzQ0ZTdHJpbmcuZ2V0KCksIHVybCkgJiYgdGl0bGUpCiAgICAgICAgICAgICAgICAgICAgICp0
aXRsZSA9IHVybDsKICAgICAgICAgICAgIH0KQEAgLTUyMyw3ICs1MjMsNyBAQCBTdHJpbmcgZ2V0
VVJMKGNvbnN0IERyYWdEYXRhTWFwKiBkYXRhLCBEcmFnRGF0YTo6RmlsZW5hbWVDb252ZXJzaW9u
UG9saWN5IGZpbGVuYQogCiAgICAgaWYgKHN0cmluZ0RhdGEuaXNFbXB0eSgpIHx8ICghUGF0aEZp
bGVFeGlzdHMoc3RyaW5nRGF0YS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKSAmJiAh
UGF0aElzVU5DKHN0cmluZ0RhdGEuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSkpKQog
ICAgICAgICByZXR1cm4gdXJsOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0aEFzQ0ZT
dHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAoY29uc3QgVW5pQ2hhciAqKXN0cmluZ0RhdGEuY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKSwgd2NzbGVuKHN0cmluZ0RhdGEuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKSkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5nID0gYWRv
cHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGtDRkFsbG9jYXRvckRlZmF1bHQsIChj
b25zdCBVbmlDaGFyICopc3RyaW5nRGF0YS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
LCB3Y3NsZW4oc3RyaW5nRGF0YS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKSkpOwog
ICAgIGlmICh1cmxGcm9tUGF0aChwYXRoQXNDRlN0cmluZy5nZXQoKSwgdXJsKSAmJiB0aXRsZSkK
ICAgICAgICAgKnRpdGxlID0gdXJsOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggY2MyZjVjMjk3ZWVmN2Yx
OThjYTk0YzE1YjBjNjc2ODdiOTQwNzNlYi4uZTZlYTliNzYzZDM5NTQ2YzRiMzA1Yjc0ZTExODIw
NmE0MzQwMDlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2Fs
aXplZFN0cmluZ3NXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2Nh
bGl6ZWRTdHJpbmdzV2luLmNwcApAQCAtNTQsMTAgKzU0LDEwIEBAIHN0YXRpYyBDRkJ1bmRsZVJl
ZiBjcmVhdGVXZWJLaXRCdW5kbGUoKQogICAgIEFTU0VSVChsZW5ndGgpOwogICAgIEFTU0VSVChs
ZW5ndGggPCBXVEZfQVJSQVlfTEVOR1RIKGRsbFBhdGhCdWZmZXIpKTsKIAotICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gZGxsUGF0aChBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0
ZXJzTm9Db3B5KDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGRsbFBhdGhCdWZm
ZXIpLCBsZW5ndGgsIGtDRkFsbG9jYXRvck51bGwpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IGRsbFVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBkbGxQYXRo
LmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSkpOwotICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gZGxsRGlyZWN0b3J5VVJMKEFkb3B0Q0YsIENGVVJMQ3JlYXRlQ29weURlbGV0aW5n
TGFzdFBhdGhDb21wb25lbnQoMCwgZGxsVVJMLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENGVVJM
UmVmPiByZXNvdXJjZXNEaXJlY3RvcnlVUkwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVDb3B5QXBwZW5k
aW5nUGF0aENvbXBvbmVudCgwLCBkbGxEaXJlY3RvcnlVUkwuZ2V0KCksIENGU1RSKCJXZWJLaXQu
cmVzb3VyY2VzIiksIHRydWUpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGRsbFBhdGgg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoMCwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oZGxsUGF0aEJ1ZmZlciksIGxlbmd0aCwga0NGQWxsb2Nh
dG9yTnVsbCkpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gZGxsVVJMID0gYWRvcHRDRihDRlVS
TENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBkbGxQYXRoLmdldCgpLCBrQ0ZVUkxXaW5kb3dz
UGF0aFN0eWxlLCBmYWxzZSkpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gZGxsRGlyZWN0b3J5
VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUNvcHlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50KDAs
IGRsbFVSTC5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcmVzb3VyY2VzRGlyZWN0
b3J5VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUNvcHlBcHBlbmRpbmdQYXRoQ29tcG9uZW50KDAs
IGRsbERpcmVjdG9yeVVSTC5nZXQoKSwgQ0ZTVFIoIldlYktpdC5yZXNvdXJjZXMiKSwgdHJ1ZSkp
OwogCiAgICAgcmV0dXJuIENGQnVuZGxlQ3JlYXRlKDAsIHJlc291cmNlc0RpcmVjdG9yeVVSTC5n
ZXQoKSk7CiB9CkBAIC03OCw4ICs3OCw4IEBAIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3Qg
Y2hhcioga2V5KQogI2lmIFVTRShDRikKICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgbm90Rm91bmQg
PSBDRlNUUigibG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiKTsKIAotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4ga2V5U3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdO
b0NvcHkoTlVMTCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51bGwp
KTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdChBZG9wdENGLCBDRkNvcHlMb2Nh
bGl6ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKGtleVN0cmluZy5nZXQoKSwgMCwgd2ViS2l0QnVu
ZGxlKCksIG5vdEZvdW5kLCAwKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXlTdHJp
bmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoTlVMTCwga2V5LCBr
Q0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51bGwpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZDb3B5TG9jYWxpemVkU3RyaW5nV2l0aERl
ZmF1bHRWYWx1ZShrZXlTdHJpbmcuZ2V0KCksIDAsIHdlYktpdEJ1bmRsZSgpLCBub3RGb3VuZCwg
MCkpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0LmdldCgpICE9IG5vdEZvdW5kLCAi
Y291bGQgbm90IGZpbmQgbG9jYWxpemFibGUgc3RyaW5nICVzIGluIGJ1bmRsZSIsIGtleSk7CiAK
ICAgICByZXR1cm4gcmVzdWx0LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAppbmRleCAwZDI1MWRmMTgzYzdlY2MxOTZiMGRh
NzI3ZWFjNTRkNDliMTllNjdkLi43NGMzMDVhYzI5NTc1NmZmMTY1YzA1N2U3ODljZjkwYjJhNGRl
N2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBN
ZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBN
ZW51V2luLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6c2F2
ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogCiAg
ICAgc2l6ZV90IHNpemUgPSBzZWFyY2hJdGVtcy5zaXplKCk7CiAgICAgaWYgKHNpemUpIHsKLSAg
ICAgICAgaXRlbXMuYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBzaXplLCAma0NGVHlw
ZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgICAgIGl0ZW1zID0gYWRvcHRDRihDRkFycmF5Q3JlYXRl
TXV0YWJsZSgwLCBzaXplLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZh
bHVlKGl0ZW1zLmdldCgpLCBzZWFyY2hJdGVtc1tpXS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
ICAgICB9CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpsb2FkUmVj
ZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyCiAKICNpZiBV
U0UoQ0YpCiAgICAgc2VhcmNoSXRlbXMuY2xlYXIoKTsKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gaXRlbXMoQWRvcHRDRiwgcmVpbnRlcnByZXRfY2FzdDxDRkFycmF5UmVmPihDRlByZWZlcmVu
Y2VzQ29weUFwcFZhbHVlKGF1dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1
cnJlbnRBcHBsaWNhdGlvbikpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaXRlbXMgPSBh
ZG9wdENGKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZQcmVmZXJlbmNlc0NvcHlBcHBW
YWx1ZShhdXRvc2F2ZUtleShuYW1lKS5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGlj
YXRpb24pKSk7CiAKICAgICBpZiAoIWl0ZW1zIHx8IENGR2V0VHlwZUlEKGl0ZW1zLmdldCgpKSAh
PSBDRkFycmF5R2V0VHlwZUlEKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblBhY2thZ2VNYWMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9tYWMvUGx1Z2luUGFja2FnZU1hYy5jcHAKaW5kZXggZmVhZDg5YmMzNTM4ZWRj
ZTc3MDA1ZjQ3MDIyNjBkZDIyOTQ1NTg0NC4uNmI2YzQxNzc1NTJmNDc2MDFhY2RjMTFjMWY0OGFl
NTVkYjQ1MmFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2lu
UGFja2FnZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luUGFj
a2FnZU1hYy5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4gc3Ry
aW5nTGlzdEZyb21SZXNvdXJjZUlkKFNJbnQxNiBpZCkKIAogICAgIGZvciAoU0ludDE2IGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICB1bnNpZ25lZCBjaGFyIGxlbmd0aCA9ICpwOwot
ICAgICAgICBXVEY6OlJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyKEFkb3B0Q0YsIENGU3RyaW5n
Q3JlYXRlV2l0aFBhc2NhbFN0cmluZygwLCBwLCBlbmNvZGluZykpOworICAgICAgICBXVEY6OlJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhQYXNj
YWxTdHJpbmcoMCwgcCwgZW5jb2RpbmcpKTsKICAgICAgICAgbGlzdC5hcHBlbmQoc3RyLmdldCgp
KTsKICAgICAgICAgcCArPSAxICsgbGVuZ3RoOwogICAgIH0KQEAgLTEzOSw3ICsxMzksNyBAQCBi
b29sIFBsdWdpblBhY2thZ2U6OmZldGNoSW5mbygpCiAKICAgICAgICAgV1RGOjpSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGZpbGVOYW1lID0gKENGU3RyaW5nUmVmKW1pbWVUeXBlc0ZpbGVOYW1lLmdl
dCgpOwogICAgICAgICBXVEY6OlJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9tZURpciA9IGFkb3B0
Q0YoaG9tZURpcmVjdG9yeVBhdGgoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgV1RGOjpS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGgoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoRm9y
bWF0KDAsIDAsIENGU1RSKCIlQC9MaWJyYXJ5L1ByZWZlcmVuY2VzLyVAIiksIGhvbWVEaXIuZ2V0
KCksIGZpbGVOYW1lLmdldCgpKSk7CisgICAgICAgIFdURjo6UmV0YWluUHRyPENGU3RyaW5nUmVm
PiBwYXRoID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIiVA
L0xpYnJhcnkvUHJlZmVyZW5jZXMvJUAiKSwgaG9tZURpci5nZXQoKSwgZmlsZU5hbWUuZ2V0KCkp
KTsKIAogICAgICAgICBXVEY6OlJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHBsaXN0ID0gcmVh
ZFBMaXN0RmlsZShwYXRoLmdldCgpLCAvKmNyZWF0ZUZpbGUqLyBmYWxzZSwgbV9tb2R1bGUpOwog
ICAgICAgICBpZiAocGxpc3QpIHsKQEAgLTI1NSw4ICsyNTUsOCBAQCBib29sIFBsdWdpblBhY2th
Z2U6OmxvYWQoKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBXVEY6OlJldGFp
blB0cjxDRlN0cmluZ1JlZj4gcGF0aChBZG9wdENGLCBtX3BhdGguY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgV1RGOjpSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybChBZG9wdENGLCBDRlVSTENyZWF0ZVdp
dGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwYXRoLmdldCgpLAorICAgIFdU
Rjo6UmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoID0gYWRvcHRDRihtX3BhdGguY3JlYXRlQ0ZT
dHJpbmcoKSk7CisgICAgV1RGOjpSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IGFkb3B0Q0YoQ0ZV
UkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGF0aC5nZXQo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOwogICAgIG1f
bW9kdWxlID0gQ0ZCdW5kbGVDcmVhdGUoTlVMTCwgdXJsLmdldCgpKTsKICAgICBpZiAoIW1fbW9k
dWxlIHx8ICFDRkJ1bmRsZUxvYWRFeGVjdXRhYmxlKG1fbW9kdWxlKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMubW0KaW5kZXggYmRjMzg1NDI0NzA0MmYwZmZl
ZDA2NzIwYjgzODFmNTRiYWQ1ODFhNC4uNDJmYTU3OWNiY2Q4NzM3M2FmMWRhNWI5MDZjNDc3NTFi
MzkwYjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmll
d01hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1t
CkBAIC04NTMsNyArODUzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVLZXlib2FyZEV2ZW50
KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBXVEY6OlJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZUZXh0KFdURjo6
QWRvcHRDRiwgdGV4dC5jcmVhdGVDRlN0cmluZygpKTsKKyAgICAgICAgV1RGOjpSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGNmVGV4dCA9IGFkb3B0Q0YodGV4dC5jcmVhdGVDRlN0cmluZygpKTsKICAg
ICAgICAgCiAgICAgICAgIExPRyhQbHVnaW5zLCAiUFY6OmhLRSgpOiBQS0UudGV4dDogJXMsIFBL
RS51bm1vZGlmaWVkVGV4dDogJXMsIFBLRS5rZXlJZGVudGlmaWVyOiAlcyIsCiAgICAgICAgICAg
ICB0ZXh0LmFzY2lpKCkuZGF0YSgpLCBwbGF0Zm9ybUV2ZW50LT51bm1vZGlmaWVkVGV4dCgpLmFz
Y2lpKCkuZGF0YSgpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lU2FmYXJpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNh
ZmFyaS5jcHAKaW5kZXggZjMwMWVhY2YzZmUwYmM2MzAwZDg2ZGRlZjhmYzE3YTE5NTJiZmFiNi4u
OGFhZjlhYmE4ODg0NWQ5MGM3NDQzMzY2ZTJhMGIxNDJhY2Y0ZGRiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCkBAIC0xNzAsNyArMTcwLDcg
QEAgQ29sb3IgUmVuZGVyVGhlbWVTYWZhcmk6OnBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25z
dAogCiAgICAgaWYgKCFmb2N1c1JpbmdDb2xvci5pc1ZhbGlkKCkpIHsKICAgICAgICAgaWYgKFNU
Q29weVRoZW1lQ29sb3JQdHIoKSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+
IGNvbG9yKEFkb3B0Q0YsIFNUQ29weVRoZW1lQ29sb3JQdHIoKShzdEZvY3VzUmluZ0NvbG9ySUQs
IFNhZmFyaVRoZW1lOjpBY3RpdmVTdGF0ZSkpOworICAgICAgICAgICAgUmV0YWluUHRyPENHQ29s
b3JSZWY+IGNvbG9yID0gYWRvcHRDRihTVENvcHlUaGVtZUNvbG9yUHRyKCkoc3RGb2N1c1JpbmdD
b2xvcklELCBTYWZhcmlUaGVtZTo6QWN0aXZlU3RhdGUpKTsKICAgICAgICAgICAgIGZvY3VzUmlu
Z0NvbG9yID0gbWFrZVJHQkFGcm9tQ0dDb2xvcihjb2xvci5nZXQoKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCFmb2N1c1JpbmdDb2xvci5pc1ZhbGlkKCkpCkBAIC03NjAsMjEgKzc2MCwyMSBA
QCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbgogCiAgICAgRmxvYXRSZWN0IHRvcEdyYWRpZW50KHIu
eCgpLCByLnkoKSwgci53aWR0aCgpLCByLmhlaWdodCgpIC8gMi4wZik7CiAgICAgc3RydWN0IENH
RnVuY3Rpb25DYWxsYmFja3MgdG9wQ2FsbGJhY2tzID0geyAwLCBUb3BHcmFkaWVudEludGVycG9s
YXRlLCBOVUxMIH07Ci0gICAgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+IHRvcEZ1bmN0aW9uKEFk
b3B0Q0YsIENHRnVuY3Rpb25DcmVhdGUoTlVMTCwgMSwgTlVMTCwgNCwgTlVMTCwgJnRvcENhbGxi
YWNrcykpOwotICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IHRvcFNoYWRpbmcoQWRvcHRDRiwg
Q0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZSh0b3BHcmFkaWVudC54KCks
IHRvcEdyYWRpZW50LnkoKSksIENHUG9pbnRNYWtlKHRvcEdyYWRpZW50LngoKSwgdG9wR3JhZGll
bnQubWF4WSgpKSwgdG9wRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOworICAgIFJldGFp
blB0cjxDR0Z1bmN0aW9uUmVmPiB0b3BGdW5jdGlvbiA9IGFkb3B0Q0YoQ0dGdW5jdGlvbkNyZWF0
ZShOVUxMLCAxLCBOVUxMLCA0LCBOVUxMLCAmdG9wQ2FsbGJhY2tzKSk7CisgICAgUmV0YWluUHRy
PENHU2hhZGluZ1JlZj4gdG9wU2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwo
Y3NwYWNlLCBDR1BvaW50TWFrZSh0b3BHcmFkaWVudC54KCksIHRvcEdyYWRpZW50LnkoKSksIENH
UG9pbnRNYWtlKHRvcEdyYWRpZW50LngoKSwgdG9wR3JhZGllbnQubWF4WSgpKSwgdG9wRnVuY3Rp
b24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwogCiAgICAgRmxvYXRSZWN0IGJvdHRvbUdyYWRpZW50
KHIueCgpICsgcmFkaXVzLCByLnkoKSArIHIuaGVpZ2h0KCkgLyAyLjBmLCByLndpZHRoKCkgLSAy
LjBmICogcmFkaXVzLCByLmhlaWdodCgpIC8gMi4wZik7CiAgICAgc3RydWN0IENHRnVuY3Rpb25D
YWxsYmFja3MgYm90dG9tQ2FsbGJhY2tzID0geyAwLCBCb3R0b21HcmFkaWVudEludGVycG9sYXRl
LCBOVUxMIH07Ci0gICAgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+IGJvdHRvbUZ1bmN0aW9uKEFk
b3B0Q0YsIENHRnVuY3Rpb25DcmVhdGUoTlVMTCwgMSwgTlVMTCwgNCwgTlVMTCwgJmJvdHRvbUNh
bGxiYWNrcykpOwotICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IGJvdHRvbVNoYWRpbmcoQWRv
cHRDRiwgQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShib3R0b21HcmFk
aWVudC54KCksICBib3R0b21HcmFkaWVudC55KCkpLCBDR1BvaW50TWFrZShib3R0b21HcmFkaWVu
dC54KCksIGJvdHRvbUdyYWRpZW50Lm1heFkoKSksIGJvdHRvbUZ1bmN0aW9uLmdldCgpLCBmYWxz
ZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0dGdW5jdGlvblJlZj4gYm90dG9tRnVuY3Rpb24g
PSBhZG9wdENGKENHRnVuY3Rpb25DcmVhdGUoTlVMTCwgMSwgTlVMTCwgNCwgTlVMTCwgJmJvdHRv
bUNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IGJvdHRvbVNoYWRpbmcg
PSBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2UoYm90dG9t
R3JhZGllbnQueCgpLCAgYm90dG9tR3JhZGllbnQueSgpKSwgQ0dQb2ludE1ha2UoYm90dG9tR3Jh
ZGllbnQueCgpLCBib3R0b21HcmFkaWVudC5tYXhZKCkpLCBib3R0b21GdW5jdGlvbi5nZXQoKSwg
ZmFsc2UsIGZhbHNlKSk7CiAKICAgICBzdHJ1Y3QgQ0dGdW5jdGlvbkNhbGxiYWNrcyBtYWluQ2Fs
bGJhY2tzID0geyAwLCBNYWluR3JhZGllbnRJbnRlcnBvbGF0ZSwgTlVMTCB9OwotICAgIFJldGFp
blB0cjxDR0Z1bmN0aW9uUmVmPiBtYWluRnVuY3Rpb24oQWRvcHRDRiwgQ0dGdW5jdGlvbkNyZWF0
ZShOVUxMLCAxLCBOVUxMLCA0LCBOVUxMLCAmbWFpbkNhbGxiYWNrcykpOwotICAgIFJldGFpblB0
cjxDR1NoYWRpbmdSZWY+IG1haW5TaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFs
KGNzcGFjZSwgQ0dQb2ludE1ha2Uoci54KCksICByLnkoKSksIENHUG9pbnRNYWtlKHIueCgpLCBy
Lm1heFkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CisgICAgUmV0YWlu
UHRyPENHRnVuY3Rpb25SZWY+IG1haW5GdW5jdGlvbiA9IGFkb3B0Q0YoQ0dGdW5jdGlvbkNyZWF0
ZShOVUxMLCAxLCBOVUxMLCA0LCBOVUxMLCAmbWFpbkNhbGxiYWNrcykpOworICAgIFJldGFpblB0
cjxDR1NoYWRpbmdSZWY+IG1haW5TaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlh
bChjc3BhY2UsIENHUG9pbnRNYWtlKHIueCgpLCAgci55KCkpLCBDR1BvaW50TWFrZShyLngoKSwg
ci5tYXhZKCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwogCi0gICAgUmV0
YWluUHRyPENHU2hhZGluZ1JlZj4gbGVmdFNoYWRpbmcoQWRvcHRDRiwgQ0dTaGFkaW5nQ3JlYXRl
QXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShyLngoKSwgIHIueSgpKSwgQ0dQb2ludE1ha2Uoci54
KCkgKyByYWRpdXMsIHIueSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsK
KyAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiBsZWZ0U2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFk
aW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShyLngoKSwgIHIueSgpKSwgQ0dQb2lu
dE1ha2Uoci54KCkgKyByYWRpdXMsIHIueSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwg
ZmFsc2UpKTsKIAotICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IHJpZ2h0U2hhZGluZyhBZG9w
dENGLCBDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKHIubWF4WCgpLCAg
ci55KCkpLCBDR1BvaW50TWFrZShyLm1heFgoKSAtIHJhZGl1cywgci55KCkpLCBtYWluRnVuY3Rp
b24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOworICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IHJp
Z2h0U2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50
TWFrZShyLm1heFgoKSwgIHIueSgpKSwgQ0dQb2ludE1ha2Uoci5tYXhYKCkgLSByYWRpdXMsIHIu
eSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKICAgICBwYWludEluZm8u
Y29udGV4dC0+c2F2ZSgpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgYm91bmQu
cmVjdCgpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGJvdW5kKTsK
QEAgLTk3NCwxMiArOTc0LDEyIEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVy
VHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAgQ0dDb250
ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3VuZHMucmVjdCgpKTsKIAogICAgIHN0cnVjdCBDR0Z1
bmN0aW9uQ2FsbGJhY2tzIG1haW5DYWxsYmFja3MgPSB7IDAsIFRyYWNrR3JhZGllbnRJbnRlcnBv
bGF0ZSwgTlVMTCB9OwotICAgIFJldGFpblB0cjxDR0Z1bmN0aW9uUmVmPiBtYWluRnVuY3Rpb24o
QWRvcHRDRiwgQ0dGdW5jdGlvbkNyZWF0ZShOVUxMLCAxLCBOVUxMLCA0LCBOVUxMLCAmbWFpbkNh
bGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0Z1bmN0aW9uUmVmPiBtYWluRnVuY3Rpb24gPSBh
ZG9wdENGKENHRnVuY3Rpb25DcmVhdGUoTlVMTCwgMSwgTlVMTCwgNCwgTlVMTCwgJm1haW5DYWxs
YmFja3MpKTsKICAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiBtYWluU2hhZGluZzsKICAgICBp
ZiAoby0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IFNsaWRlclZlcnRpY2FsUGFydCkKLSAgICAg
ICAgbWFpblNoYWRpbmcuYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9p
bnRNYWtlKGJvdW5kcy5yZWN0KCkueCgpLCAgYm91bmRzLnJlY3QoKS5tYXhZKCkpLCBDR1BvaW50
TWFrZShib3VuZHMucmVjdCgpLm1heFgoKSwgYm91bmRzLnJlY3QoKS5tYXhZKCkpLCBtYWluRnVu
Y3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBtYWluU2hhZGluZyA9IGFkb3B0
Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShib3VuZHMucmVjdCgp
LngoKSwgIGJvdW5kcy5yZWN0KCkubWF4WSgpKSwgQ0dQb2ludE1ha2UoYm91bmRzLnJlY3QoKS5t
YXhYKCksIGJvdW5kcy5yZWN0KCkubWF4WSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwg
ZmFsc2UpKTsKICAgICBlbHNlCi0gICAgICAgIG1haW5TaGFkaW5nLmFkb3B0Q0YoQ0dTaGFkaW5n
Q3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShib3VuZHMucmVjdCgpLngoKSwgIGJvdW5k
cy5yZWN0KCkueSgpKSwgQ0dQb2ludE1ha2UoYm91bmRzLnJlY3QoKS54KCksIGJvdW5kcy5yZWN0
KCkubWF4WSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAg
bWFpblNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2lu
dE1ha2UoYm91bmRzLnJlY3QoKS54KCksICBib3VuZHMucmVjdCgpLnkoKSksIENHUG9pbnRNYWtl
KGJvdW5kcy5yZWN0KCkueCgpLCBib3VuZHMucmVjdCgpLm1heFkoKSksIG1haW5GdW5jdGlvbi5n
ZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAKICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5k
ZWRSZWN0KGJvdW5kcyk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbWFpblNo
YWRpbmcuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ0ZEaWN0aW9uYXJ5
UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlC
YWcuY3BwCmluZGV4IGY0ZmI1YjNhODllMTM4MWI4MDUzYWUxYTA4MjQ0NTQwYmM5NTI5ODAuLmMy
MjMxMWZkZWVhMGExOTk4NWRkN2FkYTMwM2RiNjRkMDg3YTNmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpXcml0ZShM
UENPTEVTVFIgcHN6UHJvcE5hbWUsCiAgICAgaWYgKCFwc3pQcm9wTmFtZSB8fCAhcFZhcikKICAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICBpZiAoIW1fZGljdGlvbmFyeSkgewotICAgICAg
ICBtX2RpY3Rpb25hcnkuYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpKTsKKyAgICAgICAgbV9kaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVh
dGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVE
aWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKICAgICB9CiAgICAgdm9pZCogY2ZPYmo7CiAgICAg
aWYgKENvbnZlcnRWYXJpYW50VG9DRlR5cGUocFZhciwgJmNmT2JqKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ2Fj
aGUuY3BwCmluZGV4IDZiOWIzMTcwMzBmNzYxZmZkMjI5MTUyYzJiYmVjZDJkZjAxYjcyYjMuLjMx
MTVlZDhlZDRmMjFmYmY4Y2MyZTMzMzU2NTM4MDAxNDczMGIyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDYWNo
ZS5jcHAKQEAgLTEwNyw4OSArMTA3LDg4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Q2FjaGU6OnN0YXRpc3RpY3MoCiAgICAgY29uc3QgaW50IHplcm8gPSAwOwogI2VuZGlmCiAKLSAg
ICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeShBZG9wdENGLAot
ICAgICAgICBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZE
aWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBSZXRhaW5QdHI8
Q0ZOdW1iZXJSZWY+IHZhbHVlKEFkb3B0Q0YsIENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlcklu
dFR5cGUsICZzdGF0LmltYWdlcy5jb3VudCkpOworICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4g
dmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZzdGF0
LmltYWdlcy5jb3VudCkpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0
KCksIGltYWdlc0tleSwgdmFsdWUuZ2V0KCkpOwogICAgIAotICAgIHZhbHVlLmFkb3B0Q0YoQ0ZO
dW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnN0YXQuY3NzU3R5bGVTaGVldHMuY291
bnQpKTsKKyAgICB2YWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50
VHlwZSwgJnN0YXQuY3NzU3R5bGVTaGVldHMuY291bnQpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBzdHlsZXNoZWV0c0tleSwgdmFsdWUuZ2V0KCkpOwogICAg
IAogI2lmIEVOQUJMRShYU0xUKQotICAgIHZhbHVlLmFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwg
a0NGTnVtYmVySW50VHlwZSwgJnN0YXQueHNsU3R5bGVTaGVldHMuY291bnQpKTsKKyAgICB2YWx1
ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnN0YXQueHNs
U3R5bGVTaGVldHMuY291bnQpKTsKICNlbHNlCi0gICAgdmFsdWUuYWRvcHRDRihDRk51bWJlckNy
ZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmemVybykpOworICAgIHZhbHVlID0gYWRvcHRDRihD
Rk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmemVybykpOwogI2VuZGlmCiAgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgeHNsS2V5LCB2YWx1ZS5nZXQo
KSk7CiAKLSAgICB2YWx1ZS5hZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5
cGUsICZzdGF0LnNjcmlwdHMuY291bnQpKTsKKyAgICB2YWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJD
cmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnN0YXQuc2NyaXB0cy5jb3VudCkpOwogICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIHNjcmlwdHNLZXksIHZhbHVlLmdl
dCgpKTsKIAogICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gcHJvcEJhZyA9IENG
RGljdGlvbmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZSgpOwogICAgIHByb3BCYWctPnNl
dERpY3Rpb25hcnkoZGljdGlvbmFyeS5nZXQoKSk7CiAgICAgc1swXSA9IHByb3BCYWcubGVha1Jl
ZigpOwogCi0gICAgZGljdGlvbmFyeS5hZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUo
MCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcykpOworICAgIGRpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNy
ZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlw
ZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgdmFsdWUuYWRvcHRDRihDRk51bWJl
ckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmc3RhdC5pbWFnZXMuc2l6ZSkpOworICAgIHZh
bHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmc3RhdC5p
bWFnZXMuc2l6ZSkpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCks
IGltYWdlc0tleSwgdmFsdWUuZ2V0KCkpOwogICAgIAotICAgIHZhbHVlLmFkb3B0Q0YoQ0ZOdW1i
ZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnN0YXQuY3NzU3R5bGVTaGVldHMuc2l6ZSkp
OworICAgIHZhbHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBl
LCAmc3RhdC5jc3NTdHlsZVNoZWV0cy5zaXplKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGljdGlvbmFyeS5nZXQoKSwgc3R5bGVzaGVldHNLZXksIHZhbHVlLmdldCgpKTsKICAgICAKICNp
ZiBFTkFCTEUoWFNMVCkKLSAgICB2YWx1ZS5hZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51
bWJlckludFR5cGUsICZzdGF0LnhzbFN0eWxlU2hlZXRzLnNpemUpKTsKKyAgICB2YWx1ZSA9IGFk
b3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnN0YXQueHNsU3R5bGVT
aGVldHMuc2l6ZSkpOwogI2Vsc2UKLSAgICB2YWx1ZS5hZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAs
IGtDRk51bWJlckludFR5cGUsICZ6ZXJvKSk7CisgICAgdmFsdWUgPSBhZG9wdENGKENGTnVtYmVy
Q3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZ6ZXJvKSk7CiAjZW5kaWYKICAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5LmdldCgpLCB4c2xLZXksIHZhbHVlLmdldCgpKTsKIAot
ICAgIHZhbHVlLmFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnN0
YXQuc2NyaXB0cy5zaXplKSk7CisgICAgdmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAs
IGtDRk51bWJlckludFR5cGUsICZzdGF0LnNjcmlwdHMuc2l6ZSkpOwogICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIHNjcmlwdHNLZXksIHZhbHVlLmdldCgpKTsKIAog
ICAgIHByb3BCYWcgPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKTsK
ICAgICBwcm9wQmFnLT5zZXREaWN0aW9uYXJ5KGRpY3Rpb25hcnkuZ2V0KCkpOwogICAgIHNbMV0g
PSBwcm9wQmFnLmxlYWtSZWYoKTsKIAotICAgIGRpY3Rpb25hcnkuYWRvcHRDRihDRkRpY3Rpb25h
cnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtD
RlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBkaWN0aW9uYXJ5ID0gYWRvcHRD
RihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNh
bGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAotICAgIHZhbHVl
LmFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnN0YXQuaW1hZ2Vz
LmxpdmVTaXplKSk7CisgICAgdmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51
bWJlckludFR5cGUsICZzdGF0LmltYWdlcy5saXZlU2l6ZSkpOwogICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIGltYWdlc0tleSwgdmFsdWUuZ2V0KCkpOwogICAgIAot
ICAgIHZhbHVlLmFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnN0
YXQuY3NzU3R5bGVTaGVldHMubGl2ZVNpemUpKTsKKyAgICB2YWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1i
ZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnN0YXQuY3NzU3R5bGVTaGVldHMubGl2ZVNp
emUpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBzdHlsZXNo
ZWV0c0tleSwgdmFsdWUuZ2V0KCkpOwogICAgIAogI2lmIEVOQUJMRShYU0xUKQotICAgIHZhbHVl
LmFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnN0YXQueHNsU3R5
bGVTaGVldHMubGl2ZVNpemUpKTsKKyAgICB2YWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUo
MCwga0NGTnVtYmVySW50VHlwZSwgJnN0YXQueHNsU3R5bGVTaGVldHMubGl2ZVNpemUpKTsKICNl
bHNlCi0gICAgdmFsdWUuYWRvcHRDRihDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBl
LCAmemVybykpOworICAgIHZhbHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1i
ZXJJbnRUeXBlLCAmemVybykpOwogI2VuZGlmCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGlj
dGlvbmFyeS5nZXQoKSwgeHNsS2V5LCB2YWx1ZS5nZXQoKSk7CiAKLSAgICB2YWx1ZS5hZG9wdENG
KENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZzdGF0LnNjcmlwdHMubGl2ZVNp
emUpKTsKKyAgICB2YWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50
VHlwZSwgJnN0YXQuc2NyaXB0cy5saXZlU2l6ZSkpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRpY3Rpb25hcnkuZ2V0KCksIHNjcmlwdHNLZXksIHZhbHVlLmdldCgpKTsKIAogICAgIHByb3BC
YWcgPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKTsKICAgICBwcm9w
QmFnLT5zZXREaWN0aW9uYXJ5KGRpY3Rpb25hcnkuZ2V0KCkpOwogICAgIHNbMl0gPSBwcm9wQmFn
LmxlYWtSZWYoKTsKIAotICAgIGRpY3Rpb25hcnkuYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVN
dXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBkaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rp
b25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywg
JmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAotICAgIHZhbHVlLmFkb3B0Q0Yo
Q0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnN0YXQuaW1hZ2VzLmRlY29kZWRT
aXplKSk7CisgICAgdmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlcklu
dFR5cGUsICZzdGF0LmltYWdlcy5kZWNvZGVkU2l6ZSkpOwogICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRpY3Rpb25hcnkuZ2V0KCksIGltYWdlc0tleSwgdmFsdWUuZ2V0KCkpOwogICAgIAotICAg
IHZhbHVlLmFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnN0YXQu
Y3NzU3R5bGVTaGVldHMuZGVjb2RlZFNpemUpKTsKKyAgICB2YWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1i
ZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnN0YXQuY3NzU3R5bGVTaGVldHMuZGVjb2Rl
ZFNpemUpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBzdHls
ZXNoZWV0c0tleSwgdmFsdWUuZ2V0KCkpOwogICAgIAogI2lmIEVOQUJMRShYU0xUKQotICAgIHZh
bHVlLmFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnN0YXQueHNs
U3R5bGVTaGVldHMuZGVjb2RlZFNpemUpKTsKKyAgICB2YWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJD
cmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnN0YXQueHNsU3R5bGVTaGVldHMuZGVjb2RlZFNp
emUpKTsKICNlbHNlCi0gICAgdmFsdWUuYWRvcHRDRihDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1i
ZXJJbnRUeXBlLCAmemVybykpOworICAgIHZhbHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZSgw
LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmemVybykpOwogI2VuZGlmCiAgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgeHNsS2V5LCB2YWx1ZS5nZXQoKSk7CiAKLSAgICB2YWx1
ZS5hZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZzdGF0LnNjcmlw
dHMuZGVjb2RlZFNpemUpKTsKKyAgICB2YWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwg
a0NGTnVtYmVySW50VHlwZSwgJnN0YXQuc2NyaXB0cy5kZWNvZGVkU2l6ZSkpOwogICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIHNjcmlwdHNLZXksIHZhbHVlLmdldCgp
KTsKIAogICAgIHByb3BCYWcgPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFu
Y2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAxMzMyZTRlNWE3MDg5YmFhYzlmYzg3NTZjZTJm
MTBmNmVhM2EwYWRkLi41ZjUyY2YwYzc1Yjk2OGM1N2UyYmI3NGZlOGFhMjJiZWZhNmNmNWViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCkBAIC03ODQsNyArNzg0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3KiBw
bHVnaW4KICAgICBpZiAoRkFJTEVEKHdlYlZpZXctPnJlc291cmNlTG9hZERlbGVnYXRlKCZyZXNv
dXJjZUxvYWREZWxlZ2F0ZSkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZN
dXRhYmxlRGljdGlvbmFyeVJlZj4gdXNlckluZm8oQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRl
TXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGlj
dGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25h
cnlSZWY+IHVzZXJJbmZvID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAs
ICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUobV93ZWJGcmFtZSk7CiAgICAg
QVNTRVJUKGZyYW1lID09IHBsdWdpblZpZXctPnBhcmVudEZyYW1lKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAK
aW5kZXggNWY2ZTgyOGY3NDRiOTEzMWYwMjY5ZjY0NGI5MTBjYmY5YzRhZGFiNi4uNDRkNjQyYjhj
OGQ5ZTlmNzdmODgzMWQ2Y2RhNDk3NjAwYTRmM2EyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xNjIs
NyArMTYyLDcgQEAgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0
b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnMKIAogICAgIENPTVB0cjxXZWJNdXRh
YmxlVVJMUmVxdWVzdD4gcmVxdWVzdChBZG9wdENPTSwgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNy
ZWF0ZUluc3RhbmNlKCkpOwogCi0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBodG1sVVJMUmVmKEFk
b3B0Q0YsIENGQnVuZGxlQ29weVJlc291cmNlVVJMKGdldFdlYktpdEJ1bmRsZSgpLCBDRlNUUigi
aW5zcGVjdG9yIiksIENGU1RSKCJodG1sIiksIENGU1RSKCJpbnNwZWN0b3IiKSkpOworICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gaHRtbFVSTFJlZiA9IGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5UmVzb3Vy
Y2VVUkwoZ2V0V2ViS2l0QnVuZGxlKCksIENGU1RSKCJpbnNwZWN0b3IiKSwgQ0ZTVFIoImh0bWwi
KSwgQ0ZTVFIoImluc3BlY3RvciIpKSk7CiAgICAgaWYgKCFodG1sVVJMUmVmKQogICAgICAgICBy
ZXR1cm4gMDsKIApAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OmZyb250ZW5kTG9hZGVkKCkKIAogU3RyaW5nIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50Ojpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVy
bChBZG9wdENGLCBDRkJ1bmRsZUNvcHlSZXNvdXJjZVVSTChnZXRXZWJLaXRCdW5kbGUoKSwgQ0ZT
VFIoImxvY2FsaXplZFN0cmluZ3MiKSwgQ0ZTVFIoImpzIiksIDApKTsKKyAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IHVybCA9IGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5UmVzb3VyY2VVUkwoZ2V0V2ViS2l0
QnVuZGxlKCksIENGU1RSKCJsb2NhbGl6ZWRTdHJpbmdzIiksIENGU1RSKCJqcyIpLCAwKSk7CiAg
ICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggY2ZkMTI0YzU3NzI2MDJkYTA0ZGNmZmRjNGZk
YTYxYmY4NTI4YjBiYi4uMzQyN2NmYjZkNjY0MmRhNjIzYzA5OWZiMjUxMzhlNzVjMTQyZWRiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0zOTgsNyArMzk4
LDcgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2Uo
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QKIAogICAgIENPTVB0cjxXZWJTZWN1cml0eU9y
aWdpbj4gc2VjdXJpdHlPcmlnaW4oQWRvcHRDT00sIFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVJ
bnN0YW5jZShvcmlnaW4pKTsKIAotICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVm
PiB1c2VySW5mbyhBZG9wdENGLCBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZU
eXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFj
a3MpKTsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gdXNlckluZm8gPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5
S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAg
c3RhdGljIENGU3RyaW5nUmVmIGRhdGFiYXNlTmFtZUtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6
TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJEYXRhYmFzZU5hbWVLZXkpOwogICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBkYXRhYmFzZU5hbWVLZXksIGRhdGFiYXNlTmFt
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5l
dC5jcHAKaW5kZXggZTlkN2YwMmZkYjBlOGM2NTA0MDA0YWM0OGU5NmU3MTZhYTNhNjBjOS4uN2Rm
OWJmNjQ0Y2IxMmIzYTZlNTI4MmM3OTUwZjkzODViZmVjMzNkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4v
V2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6
aW5pdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGMKICAgICAgICAgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkT2JqZWN0TmFtZUNh
bGxiYWNrLCBkaWRDcmVhdGVEZXN0aW5hdGlvbkNhbGxiYWNrLCBkaWRGaW5pc2hDYWxsYmFjaywg
ZGlkRmFpbENhbGxiYWNrfTsKIAogICAgIG1fcmVxdWVzdC5hZG9wdFJlZihXZWJNdXRhYmxlVVJM
UmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UocmVxdWVzdCkpOwotICAgIG1fZG93bmxvYWQuYWRvcHRD
RihDRlVSTERvd25sb2FkQ3JlYXRlQW5kU3RhcnRXaXRoTG9hZGluZ0Nvbm5lY3Rpb24oMCwgY29u
bmVjdGlvbiwgcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpLCByZXNwb25zZS5j
ZlVSTFJlc3BvbnNlKCksICZjbGllbnQpKTsKKyAgICBtX2Rvd25sb2FkID0gYWRvcHRDRihDRlVS
TERvd25sb2FkQ3JlYXRlQW5kU3RhcnRXaXRoTG9hZGluZ0Nvbm5lY3Rpb24oMCwgY29ubmVjdGlv
biwgcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpLCByZXNwb25zZS5jZlVSTFJl
c3BvbnNlKCksICZjbGllbnQpKTsKIAogICAgIC8vIEl0IGlzIHBvc3NpYmxlIGZvciBDRlVSTERv
d25sb2FkQ3JlYXRlQW5kU3RhcnRXaXRoTG9hZGluZ0Nvbm5lY3Rpb24oKSB0byBmYWlsIGlmIHRo
ZSBwYXNzZWQgaW4gQ0ZVUkxDb25uZWN0aW9uIGlzIG5vdCBpbiBhICJkb3dubG9hZGFibGUgc3Rh
dGUiCiAgICAgLy8gSG93ZXZlciwgd2Ugc2hvdWxkIG5ldmVyIGhpdCB0aGF0IGNhc2UKQEAgLTEx
Myw3ICsxMTMsNyBAQCB2b2lkIFdlYkRvd25sb2FkOjppbml0KGNvbnN0IEtVUkwmIHVybCwgSVdl
YkRvd25sb2FkRGVsZWdhdGUqIGRlbGVnYXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpZFJlY2VpdmVSZXNwb25zZUNhbGxiYWNrLCB3aWxsUmVzdW1lV2l0aFJlc3BvbnNl
Q2FsbGJhY2ssIGRpZFJlY2VpdmVEYXRhQ2FsbGJhY2ssIHNob3VsZERlY29kZURhdGFPZk1JTUVU
eXBlQ2FsbGJhY2ssIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZE9iamVjdE5hbWVDYWxsYmFjaywgZGlkQ3JlYXRlRGVzdGlu
YXRpb25DYWxsYmFjaywgZGlkRmluaXNoQ2FsbGJhY2ssIGRpZEZhaWxDYWxsYmFja307CiAgICAg
bV9yZXF1ZXN0LmFkb3B0UmVmKFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0YW5jZShy
ZXF1ZXN0KSk7Ci0gICAgbV9kb3dubG9hZC5hZG9wdENGKENGVVJMRG93bmxvYWRDcmVhdGUoMCwg
Y2ZSZXF1ZXN0LCAmY2xpZW50KSk7CisgICAgbV9kb3dubG9hZCA9IGFkb3B0Q0YoQ0ZVUkxEb3du
bG9hZENyZWF0ZSgwLCBjZlJlcXVlc3QsICZjbGllbnQpKTsKIAogICAgIENGVVJMRG93bmxvYWRT
Y2hlZHVsZVdpdGhDdXJyZW50TWVzc2FnZVF1ZXVlKG1fZG93bmxvYWQuZ2V0KCkpOwogICAgIENG
VVJMRG93bmxvYWRTY2hlZHVsZURvd25sb2FkV2l0aFJ1bkxvb3AobV9kb3dubG9hZC5nZXQoKSwg
bG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwpAQCAtMTQ0LDcgKzE0NCw3
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmluaXRXaXRoUmVxdWVz
dCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2VD
YWxsYmFjaywgd2lsbFJlc3VtZVdpdGhSZXNwb25zZUNhbGxiYWNrLCBkaWRSZWNlaXZlRGF0YUNh
bGxiYWNrLCBzaG91bGREZWNvZGVEYXRhT2ZNSU1FVHlwZUNhbGxiYWNrLCAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRPYmpl
Y3ROYW1lQ2FsbGJhY2ssIGRpZENyZWF0ZURlc3RpbmF0aW9uQ2FsbGJhY2ssIGRpZEZpbmlzaENh
bGxiYWNrLCBkaWRGYWlsQ2FsbGJhY2t9OwogICAgIG1fcmVxdWVzdC5hZG9wdFJlZihXZWJNdXRh
YmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2Uod2ViUmVxdWVzdC5nZXQoKSkpOwotICAgIG1f
ZG93bmxvYWQuYWRvcHRDRihDRlVSTERvd25sb2FkQ3JlYXRlKDAsIGNmUmVxdWVzdC5nZXQoKSwg
JmNsaWVudCkpOworICAgIG1fZG93bmxvYWQgPSBhZG9wdENGKENGVVJMRG93bmxvYWRDcmVhdGUo
MCwgY2ZSZXF1ZXN0LmdldCgpLCAmY2xpZW50KSk7CiAKICAgICAvLyBJZiBmb3Igc29tZSByZWFz
b24gdGhlIGRvd25sb2FkIGZhaWxlZCB0byBjcmVhdGUsIAogICAgIC8vIHdlIGhhdmUgcGFydGlj
dWxhciBjbGVhbnVwIHRvIGRvCkBAIC0xNjYsNyArMTY2LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJEb3dubG9hZDo6aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZSgKIHsKICAgICBMT0co
RG93bmxvYWQsICJBdHRlbXB0aW5nIHJlc3VtZSBvZiBkb3dubG9hZCBidW5kbGUgJXMiLCBTdHJp
bmcoYnVuZGxlUGF0aCwgU3lzU3RyaW5nTGVuKGJ1bmRsZVBhdGgpKS5hc2NpaSgpLmRhdGEoKSk7
CiAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByZXN1bWVEYXRhKEFkb3B0Q0YsIERvd25sb2Fk
QnVuZGxlOjpleHRyYWN0UmVzdW1lRGF0YShTdHJpbmcoYnVuZGxlUGF0aCwgU3lzU3RyaW5nTGVu
KGJ1bmRsZVBhdGgpKSkpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJlc3VtZURhdGEgPSBh
ZG9wdENGKERvd25sb2FkQnVuZGxlOjpleHRyYWN0UmVzdW1lRGF0YShTdHJpbmcoYnVuZGxlUGF0
aCwgU3lzU3RyaW5nTGVuKGJ1bmRsZVBhdGgpKSkpOwogCiAgICAgaWYgKCFyZXN1bWVEYXRhKQog
ICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMTgwLDEwICsxODAsMTAgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZSgKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2VDYWxsYmFjaywg
d2lsbFJlc3VtZVdpdGhSZXNwb25zZUNhbGxiYWNrLCBkaWRSZWNlaXZlRGF0YUNhbGxiYWNrLCBz
aG91bGREZWNvZGVEYXRhT2ZNSU1FVHlwZUNhbGxiYWNrLCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRPYmplY3ROYW1lQ2Fs
bGJhY2ssIGRpZENyZWF0ZURlc3RpbmF0aW9uQ2FsbGJhY2ssIGRpZEZpbmlzaENhbGxiYWNrLCBk
aWRGYWlsQ2FsbGJhY2t9OwogICAgIAotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcGF0aFVSTChB
ZG9wdENGLCBNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihTdHJp
bmcoYnVuZGxlUGF0aCwgU3lzU3RyaW5nTGVuKGJ1bmRsZVBhdGgpKSkpOworICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gcGF0aFVSTCA9IGFkb3B0Q0YoTWFyc2hhbGxpbmdIZWxwZXJzOjpQYXRoU3Ry
aW5nVG9GaWxlQ0ZVUkxSZWYoU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihidW5kbGVQ
YXRoKSkpKTsKICAgICBBU1NFUlQocGF0aFVSTCk7CiAKLSAgICBtX2Rvd25sb2FkLmFkb3B0Q0Yo
Q0ZVUkxEb3dubG9hZENyZWF0ZVdpdGhSZXN1bWVEYXRhKDAsIHJlc3VtZURhdGEuZ2V0KCksIHBh
dGhVUkwuZ2V0KCksICZjbGllbnQpKTsKKyAgICBtX2Rvd25sb2FkID0gYWRvcHRDRihDRlVSTERv
d25sb2FkQ3JlYXRlV2l0aFJlc3VtZURhdGEoMCwgcmVzdW1lRGF0YS5nZXQoKSwgcGF0aFVSTC5n
ZXQoKSwgJmNsaWVudCkpOwogCiAgICAgaWYgKCFtX2Rvd25sb2FkKSB7CiAgICAgICAgIExPRyhE
b3dubG9hZCwgIkZhaWxlZCB0byBjcmVhdGUgQ0ZVUkxEb3dubG9hZFJlZiBmb3IgcmVzdW1lIik7
ICAgIApAQCAtMjQ4LDcgKzI0OCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93
bmxvYWQ6OmNhbmNlbEZvclJlc3VtZSgpCiAgICAgQ0ZVUkxEb3dubG9hZFNldERlbGV0ZXNVcG9u
RmFpbHVyZShtX2Rvd25sb2FkLmdldCgpLCBmYWxzZSk7CiAgICAgQ0ZVUkxEb3dubG9hZENhbmNl
bChtX2Rvd25sb2FkLmdldCgpKTsKIAotICAgIHJlc3VtZURhdGEuYWRvcHRDRihDRlVSTERvd25s
b2FkQ29weVJlc3VtZURhdGEobV9kb3dubG9hZC5nZXQoKSkpOworICAgIHJlc3VtZURhdGEgPSBh
ZG9wdENGKENGVVJMRG93bmxvYWRDb3B5UmVzdW1lRGF0YShtX2Rvd25sb2FkLmdldCgpKSk7CiAg
ICAgaWYgKCFyZXN1bWVEYXRhKSB7CiAgICAgICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2Fk
IC0gVW5hYmxlIHRvIGNyZWF0ZSByZXN1bWUgZGF0YSBmb3IgZG93bmxvYWQgKCVwKSIsIHRoaXMp
OwogICAgICAgICBnb3RvIGV4aXQ7CkBAIC0zNDAsNyArMzQwLDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6dXNlQ3JlZGVudGlhbCgKICAgICBpZiAoIXdlYkNyZWRl
bnRpYWwpCiAgICAgICAgIHJldHVybiBFX05PSU5URVJGQUNFOwogCi0gICAgUmV0YWluUHRyPENG
VVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsKEFkb3B0Q0YsIGNyZWF0ZUNGKHdlYkNyZWRl
bnRpYWwtPmNyZWRlbnRpYWwoKSkpOworICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+
IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0Yod2ViQ3JlZGVudGlhbC0+Y3JlZGVudGlh
bCgpKSk7CiAKICAgICBpZiAobV9kb3dubG9hZCkKICAgICAgICAgQ0ZVUkxEb3dubG9hZFVzZUNy
ZWRlbnRpYWwobV9kb3dubG9hZC5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCB3ZWJDaGFsbGVu
Z2UtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwpA
QCAtMzg0LDcgKzM4NCw3IEBAIHZvaWQgV2ViRG93bmxvYWQ6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2hhbGxlCiAgICAgaWYgKCFDRlVS
TEF1dGhDaGFsbGVuZ2VHZXRQcmV2aW91c0ZhaWx1cmVDb3VudChjaGFsbGVuZ2UpKSB7CiAgICAg
ICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IENyZWRlbnRpYWxTdG9yYWdlOjpnZXQoY29yZShD
RlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2hhbGxlbmdlKSkpOwogICAgICAg
ICBpZiAoIWNyZWRlbnRpYWwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZV
UkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwoQWRvcHRDRiwgY3JlYXRlQ0YoY3JlZGVudGlh
bCkpOworICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50
aWFsID0gYWRvcHRDRihjcmVhdGVDRihjcmVkZW50aWFsKSk7CiAgICAgICAgICAgICBDRlVSTERv
d25sb2FkVXNlQ3JlZGVudGlhbChtX2Rvd25sb2FkLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCks
IGNoYWxsZW5nZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkVy
cm9yLmNwcAppbmRleCAxNjAwNmZmYjBjN2E0YmQyZjQ1ODk2NjJjZWJjZjJlMDM3ZjA5NGNlLi42
ZTJiMWRhZThkZmVhZDdiYmZkN2RhOWM4MDJmYWQ4MWY3ODM0NjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRXJy
b3IuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJF
cnJvcjo6c3NsUGVlckNlcnRpZmljYXRlKAogICAgIGlmICghbV9jZkVycm9yVXNlckluZm9EaWN0
KSB7CiAgICAgICAgIC8vIGNvcHkgdXNlcmluZm8gZnJvbSBDRkVycm9yUmVmCiAgICAgICAgIENG
RXJyb3JSZWYgY2ZFcnJvciA9IG1fZXJyb3I7Ci0gICAgICAgIG1fY2ZFcnJvclVzZXJJbmZvRGlj
dC5hZG9wdENGKENGRXJyb3JDb3B5VXNlckluZm8oY2ZFcnJvcikpOworICAgICAgICBtX2NmRXJy
b3JVc2VySW5mb0RpY3QgPSBhZG9wdENGKENGRXJyb3JDb3B5VXNlckluZm8oY2ZFcnJvcikpOwog
ICAgIH0KIAogICAgIGlmICghbV9jZkVycm9yVXNlckluZm9EaWN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0
b3J5LmNwcAppbmRleCA5MzllNjQ4MGFiZTIwNDgxY2RkMDgxODRhMzA3NTUzYWQ4MDU3MzVkLi43
OWU3YTUzYWQ2MDEwNDZlZmMzM2RhYjUyZTUyYTU0OWVmMjEwYmYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJI
aXN0b3J5LmNwcApAQCAtOTcsMTAgKzk3LDEwIEBAIHN0YXRpYyBib29sIGFyZUVxdWFsT3JDbG9z
ZShkb3VibGUgZDEsIGRvdWJsZSBkMikKIAogc3RhdGljIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9w
ZXJ0eUJhZz4gY3JlYXRlVXNlckluZm9Gcm9tQXJyYXkoQlNUUiBub3RpZmljYXRpb25TdHIsIENG
QXJyYXlSZWYgYXJyYXlJdGVtKQogewotICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5
UmVmPiBkaWN0aW9uYXJ5KEFkb3B0Q0YsIAorICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9u
YXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRigKICAgICAgICAgQ0ZEaWN0aW9uYXJ5Q3JlYXRl
TXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGlj
dGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtl
eShBZG9wdENGLCBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVmKG5vdGlmaWNh
dGlvblN0cikpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5ID0gYWRvcHRDRihNYXJz
aGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVmKG5vdGlmaWNhdGlvblN0cikpOwogICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIGtleS5nZXQoKSwgYXJyYXlJ
dGVtKTsKIAogICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gcmVzdWx0ID0gQ0ZE
aWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCk7CkBAIC0xMTEsNyArMTExLDcg
QEAgc3RhdGljIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gY3JlYXRlVXNlckluZm9G
cm9tQXJyYXkoQlNUUiBub3RpZmljYXRpb24KIHN0YXRpYyBDT01QdHI8Q0ZEaWN0aW9uYXJ5UHJv
cGVydHlCYWc+IGNyZWF0ZVVzZXJJbmZvRnJvbUhpc3RvcnlJdGVtKEJTVFIgbm90aWZpY2F0aW9u
U3RyLCBJV2ViSGlzdG9yeUl0ZW0qIGl0ZW0pCiB7CiAgICAgLy8gcmVmZXJlbmNlIGNvdW50aW5n
IG9mIGl0ZW0gYWRkZWQgdG8gdGhlIGFycmF5IGlzIG1hbmFnZWQgYnkgdGhlIENGQXJyYXkgdmFs
dWUgY2FsbGJhY2tzCi0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGl0ZW1MaXN0KEFkb3B0Q0Ys
IENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKikgJml0ZW0sIDEsICZNYXJzaGFsbGluZ0hl
bHBlcnM6OmtJVW5rbm93bkFycmF5Q2FsbEJhY2tzKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlS
ZWY+IGl0ZW1MaXN0ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopICZp
dGVtLCAxLCAmTWFyc2hhbGxpbmdIZWxwZXJzOjprSVVua25vd25BcnJheUNhbGxCYWNrcykpOwog
ICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gaW5mbyA9IGNyZWF0ZVVzZXJJbmZv
RnJvbUFycmF5KG5vdGlmaWNhdGlvblN0ciwgaXRlbUxpc3QuZ2V0KCkpOwogICAgIHJldHVybiBp
bmZvOwogfQpAQCAtMTI1LDcgKzEyNSw3IEBAIFdlYkhpc3Rvcnk6OldlYkhpc3RvcnkoKQogICAg
IGdDbGFzc0NvdW50Kys7CiAgICAgZ0NsYXNzTmFtZUNvdW50LmFkZCgiV2ViSGlzdG9yeSIpOwog
Ci0gICAgbV9lbnRyaWVzQnlVUkwuYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAs
IDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJk1hcnNoYWxsaW5nSGVscGVyczo6
a0lVbmtub3duRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgbV9lbnRyaWVzQnlVUkwg
PSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9u
YXJ5S2V5Q2FsbEJhY2tzLCAmTWFyc2hhbGxpbmdIZWxwZXJzOjprSVVua25vd25EaWN0aW9uYXJ5
VmFsdWVDYWxsQmFja3MpKTsKIAogICAgIG1fcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6
c2hhcmVkU3RhbmRhcmRQcmVmZXJlbmNlcygpOwogfQpAQCAtMjQwLDEwICsyNDAsMTAgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5Ojpsb2FkRnJvbVVSTCgKICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJPT0wqIHN1Y2NlZWRlZCkKIHsKICAgICBIUkVTVUxUIGhyID0gU19P
SzsKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGRpc2NhcmRlZEl0ZW1zKEFkb3B0
Q0YsIAorICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gZGlzY2FyZGVkSXRlbXMgPSBh
ZG9wdENGKAogICAgICAgICBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCAwLCAmTWFyc2hhbGxpbmdI
ZWxwZXJzOjprSVVua25vd25BcnJheUNhbGxCYWNrcykpOwogCi0gICAgUmV0YWluUHRyPENGVVJM
UmVmPiB1cmxSZWYoQWRvcHRDRiwgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlVSTFJlZih1
cmwpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybFJlZiA9IGFkb3B0Q0YoTWFyc2hhbGxp
bmdIZWxwZXJzOjpCU1RSVG9DRlVSTFJlZih1cmwpKTsKIAogICAgIGhyID0gbG9hZEhpc3RvcnlH
dXRzRnJvbVVSTCh1cmxSZWYuZ2V0KCksIGRpc2NhcmRlZEl0ZW1zLmdldCgpLCBlcnJvcik7CiAg
ICAgaWYgKEZBSUxFRChocikpCkBAIC0yNzcsMTQgKzI3NywxNCBAQCBIUkVTVUxUIFdlYkhpc3Rv
cnk6OmxvYWRIaXN0b3J5R3V0c0Zyb21VUkwoQ0ZVUkxSZWYgdXJsLCBDRk11dGFibGVBcnJheVJl
ZiBkaXNjYQogICAgIEhSRVNVTFQgaHIgPSBTX09LOwogICAgIGludCBudW1iZXJPZkl0ZW1zTG9h
ZGVkID0gMDsKIAotICAgIFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IHN0cmVhbShBZG9wdENG
LCBDRlJlYWRTdHJlYW1DcmVhdGVXaXRoRmlsZSgwLCB1cmwpKTsKKyAgICBSZXRhaW5QdHI8Q0ZS
ZWFkU3RyZWFtUmVmPiBzdHJlYW0gPSBhZG9wdENGKENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhGaWxl
KDAsIHVybCkpOwogICAgIGlmICghc3RyZWFtKSAKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAog
ICAgIGlmICghQ0ZSZWFkU3RyZWFtT3BlbihzdHJlYW0uZ2V0KCkpKSAKICAgICAgICAgcmV0dXJu
IEVfRkFJTDsKIAotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhpc3RvcnlMaXN0KEFk
b3B0Q0YsIGNyZWF0ZUhpc3RvcnlMaXN0RnJvbVN0cmVhbShzdHJlYW0uZ2V0KCksIGZvcm1hdCkp
OworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhpc3RvcnlMaXN0ID0gYWRvcHRDRihj
cmVhdGVIaXN0b3J5TGlzdEZyb21TdHJlYW0oc3RyZWFtLmdldCgpLCBmb3JtYXQpKTsKICAgICBD
RlJlYWRTdHJlYW1DbG9zZShzdHJlYW0uZ2V0KCkpOwogCiAgICAgaWYgKCFoaXN0b3J5TGlzdCkg
CkBAIC0zNTksNyArMzU5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5
OjpzYXZlVG9VUkwoCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBzdWNjZWVkZWQpCiB7
CiAgICAgSFJFU1VMVCBociA9IFNfT0s7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxSZWYo
QWRvcHRDRiwgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlVSTFJlZih1cmwpKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybFJlZiA9IGFkb3B0Q0YoTWFyc2hhbGxpbmdIZWxwZXJzOjpC
U1RSVG9DRlVSTFJlZih1cmwpKTsKIAogICAgIGhyID0gc2F2ZUhpc3RvcnlHdXRzKHVybFJlZi5n
ZXQoKSwgZXJyb3IpOwogCkBAIC0zODQsNyArMzg0LDcgQEAgSFJFU1VMVCBXZWJIaXN0b3J5Ojpz
YXZlSGlzdG9yeUd1dHMoQ0ZVUkxSZWYgdXJsLCBJV2ViRXJyb3IqKiBlcnJvcikKICAgICBpZiAo
IWRhdGEuZ2V0KCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBSZXRhaW5QdHI8Q0ZX
cml0ZVN0cmVhbVJlZj4gc3RyZWFtKEFkb3B0Q0YsIENGV3JpdGVTdHJlYW1DcmVhdGVXaXRoRmls
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmwpKTsKKyAgICBSZXRhaW5QdHI8Q0ZXcml0ZVN0cmVh
bVJlZj4gc3RyZWFtID0gYWRvcHRDRihDRldyaXRlU3RyZWFtQ3JlYXRlV2l0aEZpbGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgdXJsKSk7CiAgICAgaWYgKCFzdHJlYW0pIAogICAgICAgICByZXR1cm4g
RV9GQUlMOwogCkBAIC00NTEsNyArNDUxLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJIaXN0b3J5OjpyZW1vdmVBbGxJdGVtcyggdm9pZCkKICAgICBDRkluZGV4IGl0ZW1Db3VudCA9
IENGRGljdGlvbmFyeUdldENvdW50KG1fZW50cmllc0J5VVJMLmdldCgpKTsKICAgICBWZWN0b3I8
SVdlYkhpc3RvcnlJdGVtKj4gaXRlbXNWZWN0b3IoaXRlbUNvdW50KTsKICAgICBDRkRpY3Rpb25h
cnlHZXRLZXlzQW5kVmFsdWVzKG1fZW50cmllc0J5VVJMLmdldCgpLCAwLCAoY29uc3Qgdm9pZCoq
KWl0ZW1zVmVjdG9yLmRhdGEoKSk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGFsbEl0ZW1z
KEFkb3B0Q0YsIENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IHZvaWQq
KilpdGVtc1ZlY3Rvci5kYXRhKCksIGl0ZW1Db3VudCwgJk1hcnNoYWxsaW5nSGVscGVyczo6a0lV
bmtub3duQXJyYXlDYWxsQmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gYWxsSXRl
bXMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IHZv
aWQqKilpdGVtc1ZlY3Rvci5kYXRhKCksIGl0ZW1Db3VudCwgJk1hcnNoYWxsaW5nSGVscGVyczo6
a0lVbmtub3duQXJyYXlDYWxsQmFja3MpKTsKIAogICAgIENGRGljdGlvbmFyeVJlbW92ZUFsbFZh
bHVlcyhtX2VudHJpZXNCeVVSTC5nZXQoKSk7CiAKQEAgLTYyMiw3ICs2MjIsNyBAQCBIUkVTVUxU
IFdlYkhpc3Rvcnk6OnJlbW92ZUl0ZW0oSVdlYkhpc3RvcnlJdGVtKiBlbnRyeSkKICAgICBpZiAo
RkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiB1cmxTdHJpbmcoQWRvcHRDRiwgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmlu
Z1JlZih1cmxCU3RyKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmxTdHJpbmcgPSBh
ZG9wdENGKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJpbmdSZWYodXJsQlN0cikpOwog
CiAgICAgLy8gSWYgdGhpcyBleGFjdCBvYmplY3QgaXNuJ3Qgc3RvcmVkLCB0aGVuIG1ha2Ugbm8g
Y2hhbmdlLgogICAgIC8vIEZJWE1FOiBJcyB0aGlzIHRoZSByaWdodCBiZWhhdmlvciBpZiB0aGlz
IGVudHJ5IGlzbid0IHByZXNlbnQsIGJ1dCBhbm90aGVyIGVudHJ5IGZvciB0aGUgc2FtZSBVUkwg
aXM/CkBAIC02NTQsNyArNjU0LDcgQEAgSFJFU1VMVCBXZWJIaXN0b3J5OjphZGRJdGVtKElXZWJI
aXN0b3J5SXRlbSogZW50cnksIGJvb2wgZGlzY2FyZER1cGxpY2F0ZSwgYm9vbCoKICAgICBpZiAo
RkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiB1cmxTdHJpbmcoQWRvcHRDRiwgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmlu
Z1JlZih1cmxCU3RyKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmxTdHJpbmcgPSBh
ZG9wdENGKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJpbmdSZWYodXJsQlN0cikpOwog
CiAgICAgQ09NUHRyPElXZWJIaXN0b3J5SXRlbT4gb2xkRW50cnkoKElXZWJIaXN0b3J5SXRlbSop
IENGRGljdGlvbmFyeUdldFZhbHVlKAogICAgICAgICBtX2VudHJpZXNCeVVSTC5nZXQoKSwgdXJs
U3RyaW5nLmdldCgpKSk7CkBAIC03NjgsNyArNzY4LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJIaXN0b3J5OjppdGVtRm9yVVJMKAogICAgIC8qIFtpbl0gKi8gQlNUUiB1cmwsCiAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBJV2ViSGlzdG9yeUl0ZW0qKiBpdGVtKQogewotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5nKEFkb3B0Q0YsIE1hcnNoYWxsaW5nSGVscGVy
czo6QlNUUlRvQ0ZTdHJpbmdSZWYodXJsKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1
cmxTdHJpbmcgPSBhZG9wdENGKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJpbmdSZWYo
dXJsKSk7CiAgICAgcmV0dXJuIGl0ZW1Gb3JVUkxTdHJpbmcodXJsU3RyaW5nLmdldCgpLCBpdGVt
KTsKIH0KIApAQCAtODExLDcgKzgxMSw3IEBAIEhSRVNVTFQgV2ViSGlzdG9yeTo6YWRkSXRlbVRv
RGF0ZUNhY2hlcyhJV2ViSGlzdG9yeUl0ZW0qIGVudHJ5KQogICAgIH0gZWxzZSB7CiAgICAgICAg
IEFTU0VSVCghbV9lbnRyaWVzQnlEYXRlLmNvbnRhaW5zKGRhdGVLZXkpKTsKICAgICAgICAgLy8g
bm8gb3RoZXIgZW50cmllcyBleGlzdCBmb3IgdGhpcyBkYXRlCi0gICAgICAgIFJldGFpblB0cjxD
Rk11dGFibGVBcnJheVJlZj4gZW50cnlBcnJheShBZG9wdENGLCAKKyAgICAgICAgUmV0YWluUHRy
PENGTXV0YWJsZUFycmF5UmVmPiBlbnRyeUFycmF5ID0gYWRvcHRDRigKICAgICAgICAgICAgIENG
QXJyYXlDcmVhdGVNdXRhYmxlKDAsIDAsICZNYXJzaGFsbGluZ0hlbHBlcnM6OmtJVW5rbm93bkFy
cmF5Q2FsbEJhY2tzKSk7CiAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShlbnRyeUFycmF5Lmdl
dCgpLCBlbnRyeSk7CiAgICAgICAgIG1fZW50cmllc0J5RGF0ZS5zZXQoZGF0ZUtleSwgZW50cnlB
cnJheSk7CkBAIC04NTUsNyArODU1LDcgQEAgSFJFU1VMVCBXZWJIaXN0b3J5OjpyZW1vdmVJdGVt
RnJvbURhdGVDYWNoZXMoSVdlYkhpc3RvcnlJdGVtKiBlbnRyeSkKIAogc3RhdGljIHZvaWQgZ2V0
RGF5Qm91bmRhcmllcyhDRkFic29sdXRlVGltZSBkYXksIENGQWJzb2x1dGVUaW1lJiBiZWdpbm5p
bmdPZkRheSwgQ0ZBYnNvbHV0ZVRpbWUmIGJlZ2lubmluZ09mTmV4dERheSkKIHsKLSAgICBSZXRh
aW5QdHI8Q0ZUaW1lWm9uZVJlZj4gdGltZVpvbmUoQWRvcHRDRiwgQ0ZUaW1lWm9uZUNvcHlEZWZh
dWx0KCkpOworICAgIFJldGFpblB0cjxDRlRpbWVab25lUmVmPiB0aW1lWm9uZSA9IGFkb3B0Q0Yo
Q0ZUaW1lWm9uZUNvcHlEZWZhdWx0KCkpOwogICAgIENGR3JlZ29yaWFuRGF0ZSBkYXRlID0gQ0ZB
YnNvbHV0ZVRpbWVHZXRHcmVnb3JpYW5EYXRlKGRheSwgdGltZVpvbmUuZ2V0KCkpOwogICAgIGRh
dGUuaG91ciA9IDA7CiAgICAgZGF0ZS5taW51dGUgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vV2ViSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkljb25E
YXRhYmFzZS5jcHAKaW5kZXggNmRjNzhlODg2Y2Q0ODViMTFjYjM1NmUwYzA2NmFmNmNkZDk1NGUw
MS4uMzE2YTM1ODhlMWYwYTk1MWM1N2Y2ZjExMDM1YmNlODViOWQ4MzMwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJJY29uRGF0YWJhc2UuY3BwCkBAIC0zODQsNyArMzg0LDcgQEAgc3RhdGljIHZvaWQg
cG9zdERpZFJlbW92ZUFsbEljb25zTm90aWZpY2F0aW9uKFdlYkljb25EYXRhYmFzZSogaWNvbkRC
KQogCiBzdGF0aWMgdm9pZCBwb3N0RGlkQWRkSWNvbk5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcm
IHBhZ2VVUkwsIFdlYkljb25EYXRhYmFzZSogaWNvbkRCKQogewotICAgIFJldGFpblB0cjxDRk11
dGFibGVEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5KEFkb3B0Q0YsIAorICAgIFJldGFpblB0cjxD
Rk11dGFibGVEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRigKICAgICBDRkRpY3Rp
b25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywg
JmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAogICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlTm90
aWZpY2F0aW9uVXNlckluZm9VUkxLZXkoKSwgcGFnZVVSTC5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCmluZGV4IGRm
YjcxNGI0NjUwNjFhYjIwMzUyYmEzZDc1Nzc0ZmJlZmFmMjdkN2QuLjQzZjliNzA2MjQyOWFiOGEz
Zjg4ZWU2MzE0NzFlNjFiODk5OTc3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViTG9jYWxp
emFibGVTdHJpbmdzLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIHN0YXRpYyBDRkJ1bmRsZVJlZiBj
ZkJ1bmRsZUZvclN0cmluZ3NCdW5kbGUoV2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlKiBzdHJp
bmdzCiAgICAgY3JlYXRlV2ViS2l0QnVuZGxlKCk7CiAKICAgICBpZiAoIXN0cmluZ3NCdW5kbGUt
PmJ1bmRsZSkKLSAgICAgICAgc3RyaW5nc0J1bmRsZS0+YnVuZGxlID0gQ0ZCdW5kbGVHZXRCdW5k
bGVXaXRoSWRlbnRpZmllcihSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KEFkb3B0Q0YsIENGU3RyaW5n
Q3JlYXRlV2l0aENTdHJpbmcoMCwgc3RyaW5nc0J1bmRsZS0+aWRlbnRpZmllciwga0NGU3RyaW5n
RW5jb2RpbmdBU0NJSSkpLmdldCgpKTsKKyAgICAgICAgc3RyaW5nc0J1bmRsZS0+YnVuZGxlID0g
Q0ZCdW5kbGVHZXRCdW5kbGVXaXRoSWRlbnRpZmllcihhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0
aENTdHJpbmcoMCwgc3RyaW5nc0J1bmRsZS0+aWRlbnRpZmllciwga0NGU3RyaW5nRW5jb2RpbmdB
U0NJSSkpLmdldCgpKTsKICAgICByZXR1cm4gc3RyaW5nc0J1bmRsZS0+YnVuZGxlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKaW5kZXggZmI5MGU5ZjE2
MzdiNDhhM2RiNDhiOGQ5ODVhZjhlZDMzODI1MmRjMC4uNWZiY2IwOGRjZGVmMzZiZWM1NjM5Yzc5
OWViZDljNjZlMDNiZWQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJs
ZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1
ZXN0LmNwcApAQCAtMzc2LDcgKzM3Niw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
TXV0YWJsZVVSTFJlcXVlc3Q6Om11dGFibGVDb3B5KAogICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OwogCiAjaWYgVVNFKENGTkVUV09SSykKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVxdWVz
dFJlZj4gbXV0YWJsZVJlcXVlc3QoQWRvcHRDRiwgQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNv
cHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQ
Qm9keSkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZj4gbXV0YWJsZVJl
cXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpKSk7CiAgICAg
KnJlc3VsdCA9IGNyZWF0ZUluc3RhbmNlKFJlc291cmNlUmVxdWVzdChtdXRhYmxlUmVxdWVzdC5n
ZXQoKSkpOwogICAgIHJldHVybiBTX09LOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVu
Y2VzLmNwcAppbmRleCBmZjI2YjQ4NmQwMzQ4ZmU4MTcyYjQ2NWZkZmY0MWNlMWVkOWMwZGE4Li42
ODQ0ZmFmOThlMDMwNjAzNzFiNmQ5YTJjNmQ1OGJkZDAxZGNhYTAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4v
V2ViUHJlZmVyZW5jZXMuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBOdW1iZXJUeXBlIG51
bWJlclZhbHVlRm9yUHJlZmVyZW5jZXNWYWx1ZShDRlByb3BlcnR5TGlzdFJlZiB2YWx1ZSkKIHRl
bXBsYXRlPHR5cGVuYW1lIE51bWJlclR5cGU+CiBzdGF0aWMgUmV0YWluUHRyPENGTnVtYmVyUmVm
PiBjZk51bWJlcihOdW1iZXJUeXBlIHZhbHVlKQogewotICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZO
dW1iZXJSZWY+KEFkb3B0Q0YsIENGTnVtYmVyQ3JlYXRlKDAsIENGTnVtYmVyVHJhaXRzPE51bWJl
clR5cGU+OjpUeXBlLCAmdmFsdWUpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRk51bWJlckNyZWF0
ZSgwLCBDRk51bWJlclRyYWl0czxOdW1iZXJUeXBlPjo6VHlwZSwgJnZhbHVlKSk7CiB9CiAKIHN0
YXRpYyBib29sIGJvb2xlYW5WYWx1ZUZvclByZWZlcmVuY2VzVmFsdWUoQ0ZQcm9wZXJ0eUxpc3RS
ZWYgdmFsdWUpCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6aW5pdGlh
bGl6ZURlZmF1bHRTZXR0aW5ncygpCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdFNob3VsZERpc3BsYXlDYXB0aW9uc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuRmFsc2UpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRTaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9uc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
RmFsc2UpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsaW5rQmVoYXZpb3JTdHJpbmdS
ZWYoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCIlZCIpLCBX
ZWJLaXRFZGl0YWJsZUxpbmtEZWZhdWx0QmVoYXZpb3IpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGxpbmtCZWhhdmlvclN0cmluZ1JlZiA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRo
Rm9ybWF0KDAsIDAsIENGU1RSKCIlZCIpLCBXZWJLaXRFZGl0YWJsZUxpbmtEZWZhdWx0QmVoYXZp
b3IpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RWRp
dGFibGVMaW5rQmVoYXZpb3JQcmVmZXJlbmNlS2V5KSwgbGlua0JlaGF2aW9yU3RyaW5nUmVmLmdl
dCgpKTsKIAogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRI
aXN0b3J5SXRlbUxpbWl0S2V5KSwgQ0ZTVFIoIjEwMDAiKSk7CkBAIC0yNDksNyArMjQ5LDcgQEAg
dm9pZCBXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncygpCiAgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVzZXNQYWdlQ2FjaGVQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5
KSwgQ0ZTVFIoIiIpKTsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVNb2RlbFJl
ZihBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIiVkIiksIFdl
YkNhY2hlTW9kZWxEb2N1bWVudFZpZXdlcikpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
Y2FjaGVNb2RlbFJlZiA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENG
U1RSKCIlZCIpLCBXZWJDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXIpKTsKICAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q2FjaGVNb2RlbFByZWZlcmVuY2VLZXkp
LCBjYWNoZU1vZGVsUmVmLmdldCgpKTsKIAogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZFByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuVHJ1ZSk7CkBAIC0yODQsNyArMjg0LDcgQEAgUmV0YWluUHRyPENGUHJvcGVy
dHlMaXN0UmVmPiBXZWJQcmVmZXJlbmNlczo6dmFsdWVGb3JLZXkoQ0ZTdHJpbmdSZWYga2V5KQog
ICAgIGlmICh2YWx1ZSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgdmFsdWUuYWRvcHRD
RihDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKGtleSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBw
bGljYXRpb24pKTsKKyAgICB2YWx1ZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1
ZShrZXksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKSk7CiAgICAgaWYgKHZhbHVl
KQogICAgICAgICByZXR1cm4gdmFsdWU7CiAKQEAgLTM1NCw4ICszNTQsNyBAQCB2b2lkIFdlYlBy
ZWZlcmVuY2VzOjpzZXRTdHJpbmdWYWx1ZShDRlN0cmluZ1JlZiBrZXksIExQQ1RTVFIgdmFsdWUp
CiAgICAgaWYgKHZhbCAmJiAhd2NzY21wKHZhbCwgdmFsdWUpKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZVJlZihBZG9wdENGLAotICAgICAg
ICBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KDAsIChVbmlDaGFyKilfd2NzZHVw
KHZhbHVlKSwgKENGSW5kZXgpd2NzbGVuKHZhbHVlKSwga0NGQWxsb2NhdG9yTWFsbG9jKSk7Cisg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZVJlZiA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVh
dGVXaXRoQ2hhcmFjdGVyc05vQ29weSgwLCAoVW5pQ2hhciopX3djc2R1cCh2YWx1ZSksIChDRklu
ZGV4KXdjc2xlbih2YWx1ZSksIGtDRkFsbG9jYXRvck1hbGxvYykpOwogICAgIHNldFZhbHVlRm9y
S2V5KGtleSwgdmFsdWVSZWYuZ2V0KCkpOwogCiAgICAgcG9zdFByZWZlcmVuY2VzQ2hhbmdlc05v
dGlmaWNhdGlvbigpOwpAQCAtNDIyLDcgKzQyMSw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6Omxv
YWQoKQogewogICAgIGluaXRpYWxpemVEZWZhdWx0U2V0dGluZ3MoKTsKIAotICAgIG1fcHJpdmF0
ZVByZWZzLmFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
CisgICAgbV9wcml2YXRlUHJlZnMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUo
MCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcykpOwogCiAgICAgbWlncmF0ZVdlYktpdFByZWZlcmVuY2VzVG9DRlByZWZl
cmVuY2VzKCk7CiB9CkBAIC00MzksMTEgKzQzOCwxMSBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpt
aWdyYXRlV2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5jZXMoKQogCiAgICAgV1RGOjpDU3Ry
aW5nIHBhdGggPSBvbGRQcmVmZXJlbmNlc1BhdGgoKS51dGY4KCk7CiAKLSAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IHVybFJlZihBZG9wdENGLCBDRlVSTENyZWF0ZUZyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHBhdGguZGF0YSgpKSwg
cGF0aC5sZW5ndGgoKSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybFJlZiA9
IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKDAsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihwYXRoLmRhdGEoKSksIHBhdGgubGVuZ3RoKCksIGZh
bHNlKSk7CiAgICAgaWYgKCF1cmxSZWYpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0
cjxDRlJlYWRTdHJlYW1SZWY+IHN0cmVhbShBZG9wdENGLCBDRlJlYWRTdHJlYW1DcmVhdGVXaXRo
RmlsZSgwLCB1cmxSZWYuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVmPiBz
dHJlYW0gPSBhZG9wdENGKENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhGaWxlKDAsIHVybFJlZi5nZXQo
KSkpOwogICAgIGlmICghc3RyZWFtKQogICAgICAgICByZXR1cm47CiAKQEAgLTQ1MSw3ICs0NTAs
NyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjptaWdyYXRlV2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJl
ZmVyZW5jZXMoKQogICAgICAgICByZXR1cm47CiAKICAgICBDRlByb3BlcnR5TGlzdEZvcm1hdCBm
b3JtYXQgPSBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCB8IGtDRlByb3BlcnR5TGlz
dFhNTEZvcm1hdF92MV8wOwotICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4gcGxpc3Qo
QWRvcHRDRiwgQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVGcm9tU3RyZWFtKDAsIHN0cmVhbS5nZXQoKSwg
MCwga0NGUHJvcGVydHlMaXN0TXV0YWJsZUNvbnRhaW5lcnNBbmRMZWF2ZXMsICZmb3JtYXQsIDAp
KTsKKyAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IHBsaXN0ID0gYWRvcHRDRihDRlBy
b3BlcnR5TGlzdENyZWF0ZUZyb21TdHJlYW0oMCwgc3RyZWFtLmdldCgpLCAwLCBrQ0ZQcm9wZXJ0
eUxpc3RNdXRhYmxlQ29udGFpbmVyc0FuZExlYXZlcywgJmZvcm1hdCwgMCkpOwogICAgIENGUmVh
ZFN0cmVhbUNsb3NlKHN0cmVhbS5nZXQoKSk7CiAKICAgICBpZiAoIXBsaXN0IHx8IENGR2V0VHlw
ZUlEKHBsaXN0LmdldCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkKQEAgLTE1MjAsOCAr
MTUxOSw4IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldFByZWZlcmVuY2VGb3JUZXN0KEJT
VFIga2V5LCBCU1RSIHZhbHVlKQogewogICAgIGlmICghU3lzU3RyaW5nTGVuKGtleSkgfHwgIVN5
c1N0cmluZ0xlbih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7Ci0gICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBrZXlTdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVycygwLCByZWludGVycHJldF9jYXN0PFVuaUNoYXIqPihrZXkpLCBTeXNTdHJpbmdMZW4oa2V5
KSkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdmFsdWVTdHJpbmcoQWRvcHRDRiwgQ0ZT
dHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCByZWludGVycHJldF9jYXN0PFVuaUNoYXIqPih2
YWx1ZSksIFN5c1N0cmluZ0xlbih2YWx1ZSkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGtleVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCByZWlu
dGVycHJldF9jYXN0PFVuaUNoYXIqPihrZXkpLCBTeXNTdHJpbmdMZW4oa2V5KSkpOworICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gdmFsdWVTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aENoYXJhY3RlcnMoMCwgcmVpbnRlcnByZXRfY2FzdDxVbmlDaGFyKj4odmFsdWUpLCBTeXNT
dHJpbmdMZW4odmFsdWUpKSk7CiAgICAgc2V0VmFsdWVGb3JLZXkoa2V5U3RyaW5nLmdldCgpLCB2
YWx1ZVN0cmluZy5nZXQoKSk7CiAgICAgcG9zdFByZWZlcmVuY2VzQ2hhbmdlc05vdGlmaWNhdGlv
bigpOwogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCAwM2MwYTE1ZjEz
Njg2YmNhM2JiNTFhMDZmNTZmNjczMjMwZGE2MjE5Li5lNDc3NmZkZTA0M2Q1MGMxODRjY2MyZmE2
MzZhMzI5ZjZkMjIwMzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtNDY5LDggKzQ2OSw4IEBA
IHZvaWQgV2ViVmlldzo6c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAg
ICAgaWYgKHNfZGlkU2V0Q2FjaGVNb2RlbCAmJiBjYWNoZU1vZGVsID09IHNfY2FjaGVNb2RlbCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IGNmdXJsQ2Fj
aGUoQWRvcHRDRiwgQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSgpKTsKLSAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGNmdXJsQ2FjaGVEaXJlY3RvcnkoQWRvcHRDRiwgd2tDb3B5Rm91bmRh
dGlvbkNhY2hlRGlyZWN0b3J5KDApKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxDYWNoZVJlZj4gY2Z1
cmxDYWNoZSA9IGFkb3B0Q0YoQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSgpKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBhZG9wdENGKHdrQ29w
eUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgwKSk7CiAgICAgaWYgKCFjZnVybENhY2hlRGlyZWN0
b3J5KQogICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5ID0gV2ViQ29yZTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKIApAQCAtNDcyNiw3ICs0
NzI2LDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoSVdlYk5v
dGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogICAgICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAg
ICAgICAgIHJldHVybiBocjsKIAotICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybChBZG9w
dENGLCBDRlVSTENyZWF0ZVdpdGhTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdG9TdHJpbmco
c3RyKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwKSk7CisgICAgICAgIFJldGFpblB0cjxDRlVS
TFJlZj4gdXJsID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhTdHJpbmcoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgdG9TdHJpbmcoc3RyKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwKSk7CiAKICAgICAg
ICAgLy8gQ2hlY2sgaWYgdGhlIHBhc3NlZCBpbiBzdHJpbmcgaXMgYSBwYXRoIGFuZCBjb252ZXJ0
IGl0IHRvIGEgVVJMLgogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9y
IG5pZ2h0bHkgYnVpbGRzIHVudGlsIHdlIGNhbiBnZXQgU2FmYXJpIHRvIHBhc3MgCkBAIC00NzM5
LDcgKzQ3MzksNyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChJ
V2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgICAgICAgICBpZiAoIVdpZGVDaGFy
VG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgc3RyLCBsZW4sIChMUFNUUil1dGY4UGF0aC5kYXRhKCks
IHJlc3VsdCwgMCwgMCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgICAg
ICAgICAgdXJsLmFkb3B0Q0YoQ0ZVUkxDcmVhdGVGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KDAsIHV0ZjhQYXRoLmRhdGEoKSwgcmVzdWx0IC0gMSwgZmFsc2UpKTsKKyAgICAgICAgICAgIHVy
bCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKDAsIHV0
ZjhQYXRoLmRhdGEoKSwgcmVzdWx0IC0gMSwgZmFsc2UpKTsKICAgICAgICAgfQogCiAgICAgICAg
IHNldHRpbmdzLT5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKHVybC5nZXQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL2NmbmV0L0Rvd25sb2FkQ0ZOZXQu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9jZm5ldC9Eb3dubG9hZENGTmV0
LmNwcAppbmRleCA0OWIzODYxNjhiNjlmZjBmNDRjYWVjNTYzMTViOTc4M2FjYmQ0Nzc2Li4yNWJh
NjFmNzViMWE3ZWY3OWExMjBjZTZiYzg4NzUwNmZkODVjNjMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL2NmbmV0L0Rvd25sb2FkQ0ZOZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvY2ZuZXQvRG93bmxvYWRDRk5ldC5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgdm9pZCBEb3dubG9hZDo6dXNlQ3JlZGVudGlhbChjb25zdCBXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLAogewogICAgIGlmICghbV9kb3du
bG9hZCkKICAgICAgICAgcmV0dXJuOwotICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+
IGNmQ3JlZGVudGlhbChBZG9wdENGLCBjcmVhdGVDRihjcmVkZW50aWFsKSk7CisgICAgUmV0YWlu
UHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRihj
cmVkZW50aWFsKSk7CiAgICAgQ0ZVUkxEb3dubG9hZFVzZUNyZWRlbnRpYWwobV9kb3dubG9hZC5n
ZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVm
KCkpOwogfQogCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgRG93bmxvYWQ6OnN0YXJ0KCkKICAgICBD
RlVSTERvd25sb2FkQ2xpZW50IGNsaWVudCA9IHswLCB0aGlzLCAwLCAwLCAwLCBkaWRTdGFydENh
bGxiYWNrLCB3aWxsU2VuZFJlcXVlc3RDYWxsYmFjaywgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQ2FsbGJhY2ssIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRp
ZFJlY2VpdmVSZXNwb25zZUNhbGxiYWNrLCB3aWxsUmVzdW1lV2l0aFJlc3BvbnNlQ2FsbGJhY2ss
IGRpZFJlY2VpdmVEYXRhQ2FsbGJhY2ssIHNob3VsZERlY29kZURhdGFPZk1JTUVUeXBlQ2FsbGJh
Y2ssIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZE9iamVjdE5hbWVDYWxsYmFjaywgZGlkQ3JlYXRlRGVzdGluYXRpb25DYWxs
YmFjaywgZGlkRmluaXNoQ2FsbGJhY2ssIGRpZEZhaWxDYWxsYmFja307Ci0gICAgbV9kb3dubG9h
ZC5hZG9wdENGKENGVVJMRG93bmxvYWRDcmVhdGUoMCwgY2ZSZXF1ZXN0LCAmY2xpZW50KSk7Cisg
ICAgbV9kb3dubG9hZCA9IGFkb3B0Q0YoQ0ZVUkxEb3dubG9hZENyZWF0ZSgwLCBjZlJlcXVlc3Qs
ICZjbGllbnQpKTsKIAogICAgIC8vIEZJWE1FOiBBbGxvdyB0aGlzIHRvIGJlIGNoYW5nZWQgYnkg
dGhlIGNsaWVudC4KICAgICBDRlVSTERvd25sb2FkU2V0RGVsZXRlc1Vwb25GYWlsdXJlKG1fZG93
bmxvYWQuZ2V0KCksIGZhbHNlKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIERvd25sb2FkOjpz
dGFydFdpdGhIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVSZXNw
b25zZUNhbGxiYWNrLCB3aWxsUmVzdW1lV2l0aFJlc3BvbnNlQ2FsbGJhY2ssIGRpZFJlY2VpdmVE
YXRhQ2FsbGJhY2ssIHNob3VsZERlY29kZURhdGFPZk1JTUVUeXBlQ2FsbGJhY2ssCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
T2JqZWN0TmFtZUNhbGxiYWNrLCBkaWRDcmVhdGVEZXN0aW5hdGlvbkNhbGxiYWNrLCBkaWRGaW5p
c2hDYWxsYmFjaywgZGlkRmFpbENhbGxiYWNrfTsKIAotICAgIG1fZG93bmxvYWQuYWRvcHRDRihD
RlVSTERvd25sb2FkQ3JlYXRlQW5kU3RhcnRXaXRoTG9hZGluZ0Nvbm5lY3Rpb24oMCwgY29ubmVj
dGlvbiwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoKSwgcmVzcG9uc2UuY2ZV
UkxSZXNwb25zZSgpLCAmY2xpZW50KSk7CisgICAgbV9kb3dubG9hZCA9IGFkb3B0Q0YoQ0ZVUkxE
b3dubG9hZENyZWF0ZUFuZFN0YXJ0V2l0aExvYWRpbmdDb25uZWN0aW9uKDAsIGNvbm5lY3Rpb24s
IGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuY2ZVUkxSZXF1ZXN0KCksIHJlc3BvbnNlLmNmVVJMUmVz
cG9uc2UoKSwgJmNsaWVudCkpOwogCiAgICAgLy8gSXQgaXMgcG9zc2libGUgZm9yIENGVVJMRG93
bmxvYWRDcmVhdGVBbmRTdGFydFdpdGhMb2FkaW5nQ29ubmVjdGlvbigpIHRvIGZhaWwgaWYgdGhl
IHBhc3NlZCBpbiBDRlVSTENvbm5lY3Rpb24gaXMgbm90IGluIGEgImRvd25sb2FkYWJsZSBzdGF0
ZSIKICAgICAvLyBIb3dldmVyLCB3ZSBzaG91bGQgbmV2ZXIgaGl0IHRoYXQgY2FzZQpAQCAtMTQ0
LDcgKzE0NCw3IEBAIHZvaWQgRG93bmxvYWQ6OmNhbmNlbCgpCiAgICAgQ0ZVUkxEb3dubG9hZFNl
dERlbGV0ZXNVcG9uRmFpbHVyZShtX2Rvd25sb2FkLmdldCgpLCBmYWxzZSk7CiAgICAgQ0ZVUkxE
b3dubG9hZENhbmNlbChtX2Rvd25sb2FkLmdldCgpKTsKIAotICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IHJlc3VtZURhdGEoQWRvcHRDRiwgQ0ZVUkxEb3dubG9hZENvcHlSZXN1bWVEYXRhKG1fZG93
bmxvYWQuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByZXN1bWVEYXRhID0gYWRv
cHRDRihDRlVSTERvd25sb2FkQ29weVJlc3VtZURhdGEobV9kb3dubG9hZC5nZXQoKSkpOwogICAg
IGlmIChyZXN1bWVEYXRhKQogICAgICAgICBEb3dubG9hZEJ1bmRsZTo6YXBwZW5kUmVzdW1lRGF0
YShyZXN1bWVEYXRhLmdldCgpLCBtX2J1bmRsZVBhdGgpOwogCkBAIC0xNjgsOCArMTY4LDggQEAg
dm9pZCBEb3dubG9hZDo6ZGlkRGVjaWRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvbiwgYm9vbCBhbGxvd092ZXJ3cmkKICAgICBtX2Rlc3RpbmF0aW9uID0gZGVzdGluYXRpb247
CiAgICAgbV9idW5kbGVQYXRoID0gZGVzdGluYXRpb24gKyBEb3dubG9hZEJ1bmRsZTo6ZmlsZUV4
dGVuc2lvbigpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBidW5kbGVQYXRoKEFkb3B0
Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoMCwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVbmlDaGFyKj4obV9idW5kbGVQYXRoLmNoYXJhY3RlcnMoKSksIG1fYnVuZGxlUGF0
aC5sZW5ndGgoKSwga0NGQWxsb2NhdG9yTnVsbCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
YnVuZGxlUGF0aFVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBi
dW5kbGVQYXRoLmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSkpOworICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gYnVuZGxlUGF0aCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVyc05vQ29weSgwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPiht
X2J1bmRsZVBhdGguY2hhcmFjdGVycygpKSwgbV9idW5kbGVQYXRoLmxlbmd0aCgpLCBrQ0ZBbGxv
Y2F0b3JOdWxsKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVQYXRoVVJMID0gYWRv
cHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBidW5kbGVQYXRoLmdldCgpLCBr
Q0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSkpOwogICAgIENGVVJMRG93bmxvYWRTZXREZXN0
aW5hdGlvbihtX2Rvd25sb2FkLmdldCgpLCBidW5kbGVQYXRoVVJMLmdldCgpLCBhbGxvd092ZXJ3
cml0ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAwNzBjMDQ5M2JiZGIxMjNkYzgwNGQ5YjQ4MjBlNDljMDJiNmE1YjlhLi5kMDJkNzFm
NTY1MWFiNWU3YzdlYjAzMjcxYjgyNGJjZTFkNjZhOWY3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYwIEBACisyMDEzLTA1LTA2
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgYWRvcHRDRiBh
bmQgYWRvcHROUyBpbiBtb3JlIHBsYWNlcywgdGVzdCBjb2RlIGFuZCBjb2RlIG5vdCBjb21waWxl
ZCBvbiBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNTY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgaXMgc2ltaWxhciB0byBteSBsYXN0IHNldCBvZiBjaGFuZ2VzLCBidXQgY292ZXJzIGNv
ZGUgdGhhdCBJIG1pc3NlZCB3aXRoCisgICAgICAgIGdsb2JhbCByZXBsYWNlIHVzaW5nIHRoZSBT
YWZhcmkgWGNvZGUgd29ya3NwYWNlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2YvV2Vi
QXJjaGl2ZUR1bXBTdXBwb3J0LmNwcDoKKyAgICAgICAgKGNvbnZlcnRXZWJSZXNvdXJjZURhdGFU
b1N0cmluZyk6CisgICAgICAgIChjb252ZXJ0V2ViUmVzb3VyY2VSZXNwb25zZVRvRGljdGlvbmFy
eSk6CisgICAgICAgIChjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2NnL0ltYWdlRGlmZkNHLmNwcDoKKyAgICAgICAgKGNyZWF0ZUlt
YWdlRnJvbVN0ZGluKToKKyAgICAgICAgKGNyZWF0ZURpZmZlcmVuY2VJbWFnZSk6CisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cu
Y3BwOgorICAgICAgICAocHJpbnRQTkcpOgorICAgICAgICAoZHVtcEJpdG1hcCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmg6CisgICAgICAgIChCaXRt
YXBDb250ZXh0OjpCaXRtYXBDb250ZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMv
TW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tOgorICAgICAgICAoLVtNb2NrV2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXIgaW5pdF0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9QaXhl
bER1bXBTdXBwb3J0TWFjLm1tOgorICAgICAgICAoY3JlYXRlQml0bWFwQ29udGV4dCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgIChUZXN0
UnVubmVyOjphZGREaXNhbGxvd2VkVVJMKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmFwcGxpY2F0
aW9uQ2FjaGVEaXNrVXNhZ2VGb3JPcmlnaW4pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6bG9jYWxT
dG9yYWdlRGlza1VzYWdlRm9yT3JpZ2luKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmNsZWFyQXBw
bGljYXRpb25DYWNoZUZvck9yaWdpbik6CisgICAgICAgIChUZXN0UnVubmVyOjpkZWxldGVMb2Nh
bFN0b3JhZ2VGb3JPcmlnaW4pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6Y29weURlY29kZWRIb3N0
TmFtZSk6CisgICAgICAgIChUZXN0UnVubmVyOjpjb3B5RW5jb2RlZEhvc3ROYW1lKToKKyAgICAg
ICAgKFRlc3RSdW5uZXI6OnF1ZXVlTG9hZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXREb21h
aW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKToKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcik6CisgICAgICAgIChU
ZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKToKKyAgICAgICAgKFRlc3RSdW5u
ZXI6OnNldFZhbHVlRm9yVXNlcik6CisgICAgICAgIChUZXN0UnVubmVyOjpvdmVycmlkZVByZWZl
cmVuY2UpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0
TG9jYXRpb24pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6ZXhlY0NvbW1hbmQpOgorICAgICAgICAo
VGVzdFJ1bm5lcjo6ZmluZFN0cmluZyk6CisgICAgICAgIChUZXN0UnVubmVyOjppc0NvbW1hbmRF
bmFibGVkKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVu
dHJ5KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVu
dHJ5KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmFkZFVzZXJTY3JpcHQpOgorICAgICAgICAoVGVz
dFJ1bm5lcjo6YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6ZXZhbHVh
dGVJbldlYkluc3BlY3Rvcik6CisgICAgICAgIChUZXN0UnVubmVyOjpldmFsdWF0ZVNjcmlwdElu
SXNvbGF0ZWRXb3JsZCk6CisgICAgICAgIChUZXN0UnVubmVyOjphcGlUZXN0TmV3V2luZG93RGF0
YUxvYWRCYXNlVVJMKToKKyAgICAgICAgKC1bU3luY2hyb25vdXNMb2FkZXIgY29ubmVjdGlvbjpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XSk6CisgICAgICAgIChUZXN0UnVubmVy
OjphdXRoZW50aWNhdGVTZXNzaW9uKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmdyYW50V2ViTm90
aWZpY2F0aW9uUGVybWlzc2lvbik6CisgICAgICAgIChUZXN0UnVubmVyOjpkZW55V2ViTm90aWZp
Y2F0aW9uUGVybWlzc2lvbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1dlYkFyY2hp
dmVEdW1wU3VwcG9ydE1hYy5tbToKKyAgICAgICAgKGNyZWF0ZUNGVVJMUmVzcG9uc2VGcm9tUmVz
cG9uc2VEYXRhKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvV29ya1F1ZXVlSXRlbU1h
Yy5tbToKKyAgICAgICAgKExvYWRJdGVtOjppbnZva2UpOgorICAgICAgICAoTG9hZEhUTUxTdHJp
bmdJdGVtOjppbnZva2UpOgorICAgICAgICAoU2NyaXB0SXRlbTo6aW52b2tlKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAoc3Vic3Ry
aW5nRnJvbUluZGV4KToKKyAgICAgICAgKHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6CisgICAg
ICAgIChsYXN0UGF0aENvbXBvbmVudCk6CisgICAgICAgIChzaGFyZWRDRlVSTENhY2hlKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vSW1hZ2VEaWZmQ2Fpcm8uY3BwOgorICAgICAgICAo
Y3JlYXRlSW1hZ2VGcm9tU3RkaW4pOgorICAgICAgICAobWFpbik6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnRXaW4uY3BwOgorICAgICAgICAoY3JlYXRlQml0
bWFwQ29udGV4dEZyb21XZWJWaWV3KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vVGVz
dFJ1bm5lcldpbi5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldExv
Y2F0aW9uKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL0N1c3RvbVByb3RvY29s
c1N5bmNYSFJUZXN0Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9UZXN0V2ViS2l0QVBJL21hYy9JbnN0YW5jZU1ldGhvZFN3
aXp6bGVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvY2YvUmV0YWluUHRySGFzaGluZy5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvRmluZE1hdGNoZXMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViQXJjaGl2ZS5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21hYy9HZXRCYWNraW5nU2NhbGVG
YWN0b3IubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVXaW5kb3cpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL3dpbi9Eb05vdENvcHlBTnVsbENGVVJMUmVzcG9uc2UuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQWNj
ZXB0c0ZpcnN0TW91c2UubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpBY2NlcHRzRmlyc3RN
b3VzZTo6cnVuVGVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQXR0cmli
dXRlZFN0cmluZy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0JhY2tGb3J3YXJkTGlzdC5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Nh
bmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGUubW06CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZXh0TWVu
dUNhbkNvcHlVUkwubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9ET01IVE1MVGFibGVDZWxsQ2VsbEFib3ZlLm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvRE9NUmFuZ2VPZlN0cmluZy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RldmljZVNjYWxlRmFjdG9y
SW5EYXNoYm9hcmRSZWdpb25zLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRGV2aWNlU2NhbGVGYWN0b3JPbkJhY2su
bW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpEZXZpY2VTY2FsZUZhY3Rvck9uQmFjazo6Y3Jl
YXRlV2luZG93KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9EeW5hbWljRGV2
aWNlU2NhbGVGYWN0b3IubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpEeW5hbWljRGV2aWNl
U2NhbGVGYWN0b3I6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0ubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9IVE1MRm9ybUNvbGxl
Y3Rpb25OYW1lZEl0ZW0ubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9JbnNwZWN0b3JCYXIubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9N
ZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L01lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L1BhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlczo6cnVuVGVzdCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvUmVuZGVyZWRJbWFnZUZyb21ET01S
YW5nZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL1NldEFuZFVwZGF0ZUNhY2hlTW9kZWwubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9T
ZXREb2N1bWVudFVSSS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1NpbXBsaWZ5TWFya3VwLm1tOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
U3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmcubW06CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XaWxs
U2VuZFN1Ym1pdEV2ZW50Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEu
bW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL21hYy9QbGF0Zm9ybVV0aWxpdGllc01hYy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlV0aWw6Ok1JTUVUeXBlRm9yV0tVUkxSZXNwb25zZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9tYWMvV2ViS2l0QWdub3N0aWNUZXN0Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6V2Vi
S2l0QWdub3N0aWNUZXN0OjpydW5XZWJLaXQxVGVzdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpXZWJLaXRBZ25vc3RpY1Rlc3Q6OnJ1bldlYktpdDJUZXN0KToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VNYWMubW06Cisg
ICAgICAgIChXVFI6OnRlc3RQYXRoRnJvbVVSTCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKFdUUjo6VGVz
dFJ1bm5lcjo6aW5pdGlhbGl6ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySWZOZWVkZWQpOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHA6CisgICAgICAg
IChXVFI6OmNyZWF0ZUNHQ29udGV4dEZyb21JbWFnZSk6CisgICAgICAgIChXVFI6OmR1bXBCaXRt
YXApOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVX
aXRoRXhwZWN0ZWQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVy
UHJveHkubW06CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlU2Nyb2xsQnkp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbToK
KyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dTbmFwc2hvdEltYWdlKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dpbi9UZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjppbml0aWFsaXplVGVzdFBsdWdpbkRpcmVjdG9yeSk6
CisgICAgICAgIFVzZSBhZG9wdENGIGFuZCBhZG9wdE5TLgorCiAyMDEzLTA1LTA2ICBBbmR5IEVz
dGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRlZCB0d28gZmlsZXMgSSBuZWds
ZWN0ZWQgdG8gY29tbWl0IGluIHIxNDk1ODkuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jZi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcAppbmRleCAxZjdmMTcyYWJjYzgwNGI2NDY1YzRi
ZDhjMWQzYmMyZjQwNzY0ZDIxLi41MTQwZGJmMTYyOTBmMzdhYTIzMjY4MDI1YmFhYTczMDZkOGY0
YjI0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZi9XZWJBcmNoaXZlRHVtcFN1
cHBvcnQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NmL1dlYkFyY2hpdmVEdW1wU3Vw
cG9ydC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIHZvaWQgY29udmVydFdlYlJlc291cmNl
RGF0YVRvU3RyaW5nKENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcmVzb3VyY2UpCiAgICAgICAgICAg
ICBzdHJpbmdFbmNvZGluZyA9IGtDRlN0cmluZ0VuY29kaW5nVVRGODsKIAogICAgICAgICBDRkRh
dGFSZWYgZGF0YSA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
cmVzb3VyY2UsIENGU1RSKCJXZWJSZXNvdXJjZURhdGEiKSkpOwotICAgICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGRhdGFBc1N0cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZUZyb21FeHRl
cm5hbFJlcHJlc2VudGF0aW9uKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEsIHN0cmluZ0VuY29k
aW5nKSk7CisgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZGF0YUFzU3RyaW5nID0gYWRv
cHRDRihDRlN0cmluZ0NyZWF0ZUZyb21FeHRlcm5hbFJlcHJlc2VudGF0aW9uKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGRhdGEsIHN0cmluZ0VuY29kaW5nKSk7CiAgICAgICAgIGlmIChkYXRhQXNTdHJp
bmcpCiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNvdXJjZSwgQ0ZTVFIoIldl
YlJlc291cmNlRGF0YSIpLCBkYXRhQXNTdHJpbmcuZ2V0KCkpOwogICAgIH0KQEAgLTEwOSwxNyAr
MTA5LDE3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRXZWJSZXNvdXJjZVJlc3BvbnNlVG9EaWN0aW9u
YXJ5KENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcHJvcGVyCiAgICAgaWYgKENGR2V0VHlwZUlEKHJl
c3BvbnNlRGF0YSkgIT0gQ0ZEYXRhR2V0VHlwZUlEKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiByZXNwb25zZShBZG9wdENGLCBjcmVhdGVDRlVS
TFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShyZXNwb25zZURhdGEpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZVUkxSZXNwb25zZVJlZj4gcmVzcG9uc2UgPSBhZG9wdENGKGNyZWF0ZUNGVVJMUmVzcG9uc2VG
cm9tUmVzcG9uc2VEYXRhKHJlc3BvbnNlRGF0YSkpOwogICAgIGlmICghcmVzcG9uc2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiByZXNw
b25zZURpY3Rpb25hcnkoQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rp
b25hcnlSZWY+IHJlc3BvbnNlRGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRl
TXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxs
QmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBSZXRhaW5Q
dHI8Q0ZNdXRhYmxlU3RyaW5nUmVmPiB1cmxTdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVN
dXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDRlVSTEdldFN0cmluZyhDRlVSTFJl
c3BvbnNlR2V0VVJMKHJlc3BvbnNlLmdldCgpKSkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
U3RyaW5nUmVmPiB1cmxTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHko
a0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ0ZVUkxHZXRTdHJpbmcoQ0ZVUkxSZXNwb25zZUdldFVS
TChyZXNwb25zZS5nZXQoKSkpKSk7CiAgICAgbm9ybWFsaXplV2ViUmVzb3VyY2VVUkwodXJsU3Ry
aW5nLmdldCgpKTsKICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25zZURpY3Rpb25hcnku
Z2V0KCksIENGU1RSKCJVUkwiKSwgdXJsU3RyaW5nLmdldCgpKTsKIAotICAgIFJldGFpblB0cjxD
Rk11dGFibGVTdHJpbmdSZWY+IG1pbWVUeXBlU3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRl
TXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ0ZVUkxSZXNwb25zZUdldE1JTUVU
eXBlKHJlc3BvbnNlLmdldCgpKSkpOworICAgIFJldGFpblB0cjxDRk11dGFibGVTdHJpbmdSZWY+
IG1pbWVUeXBlU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFs
bG9jYXRvckRlZmF1bHQsIDAsIENGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShyZXNwb25zZS5nZXQo
KSkpKTsKICAgICBjb252ZXJ0TUlNRVR5cGUobWltZVR5cGVTdHJpbmcuZ2V0KCkpOwogICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoIk1JTUVU
eXBlIiksIG1pbWVUeXBlU3RyaW5nLmdldCgpKTsKIApAQCAtMTI4LDE3ICsxMjgsMTcgQEAgc3Rh
dGljIHZvaWQgY29udmVydFdlYlJlc291cmNlUmVzcG9uc2VUb0RpY3Rpb25hcnkoQ0ZNdXRhYmxl
RGljdGlvbmFyeVJlZiBwcm9wZXIKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9u
c2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigidGV4dEVuY29kaW5nTmFtZSIpLCB0ZXh0RW5jb2Rp
bmdOYW1lKTsKIAogICAgIFNJbnQ2NCBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBDRlVSTFJlc3Bv
bnNlR2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKHJlc3BvbnNlLmdldCgpKTsKLSAgICBSZXRhaW5Q
dHI8Q0ZOdW1iZXJSZWY+IGV4cGVjdGVkQ29udGVudExlbmd0aE51bWJlcihBZG9wdENGLCBDRk51
bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKSk7CisgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBleHBlY3Rl
ZENvbnRlbnRMZW5ndGhOdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGtDRk51bWJlclNJbnQ2NFR5cGUsICZleHBlY3RlZENvbnRlbnRMZW5ndGgpKTsK
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RS
KCJleHBlY3RlZENvbnRlbnRMZW5ndGgiKSwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoTnVtYmVyLmdl
dCgpKTsKIAogICAgIGlmIChDRkhUVFBNZXNzYWdlUmVmIGh0dHBNZXNzYWdlID0gQ0ZVUkxSZXNw
b25zZUdldEhUVFBSZXNwb25zZShyZXNwb25zZS5nZXQoKSkpIHsKLSAgICAgICAgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gYWxsSGVhZGVycyhBZG9wdENGLCBDRkhUVFBNZXNzYWdlQ29weUFs
bEhlYWRlckZpZWxkcyhodHRwTWVzc2FnZSkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
RGljdGlvbmFyeVJlZj4gYWxsSGVhZGVyRmllbGRzKEFkb3B0Q0YsIENGRGljdGlvbmFyeUNyZWF0
ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGFsbEhlYWRlcnMuZ2V0KCkpKTsK
KyAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gYWxsSGVhZGVycyA9IGFkb3B0Q0Yo
Q0ZIVFRQTWVzc2FnZUNvcHlBbGxIZWFkZXJGaWVsZHMoaHR0cE1lc3NhZ2UpKTsKKyAgICAgICAg
UmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGFsbEhlYWRlckZpZWxkcyA9IGFkb3B0
Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
YWxsSGVhZGVycy5nZXQoKSkpOwogICAgICAgICBub3JtYWxpemVIVFRQUmVzcG9uc2VIZWFkZXJG
aWVsZHMoYWxsSGVhZGVyRmllbGRzLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigiYWxsSGVhZGVyRmllbGRzIiksIGFs
bEhlYWRlckZpZWxkcy5nZXQoKSk7CiAKICAgICAgICAgQ0ZJbmRleCBzdGF0dXNDb2RlID0gQ0ZI
VFRQTWVzc2FnZUdldFJlc3BvbnNlU3RhdHVzQ29kZShodHRwTWVzc2FnZSk7Ci0gICAgICAgIFJl
dGFpblB0cjxDRk51bWJlclJlZj4gc3RhdHVzQ29kZU51bWJlcihBZG9wdENGLCBDRk51bWJlckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJDRkluZGV4VHlwZSwgJnN0YXR1c0Nv
ZGUpKTsKKyAgICAgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBzdGF0dXNDb2RlTnVtYmVyID0g
YWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJDRklu
ZGV4VHlwZSwgJnN0YXR1c0NvZGUpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVz
cG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigic3RhdHVzQ29kZSIpLCBzdGF0dXNDb2RlTnVt
YmVyLmdldCgpKTsKICAgICB9CiAKQEAgLTE2MCwxMiArMTYwLDEyIEBAIENGU3RyaW5nUmVmIGNy
ZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURhdGEp
CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKICAgICBDRklu
ZGV4IGJ5dGVzQ291bnQgPSBDRkRhdGFHZXRMZW5ndGgod2ViQXJjaGl2ZURhdGEpOwotICAgIFJl
dGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IHJlYWRTdHJlYW0oQWRvcHRDRiwgQ0ZSZWFkU3RyZWFt
Q3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIENGRGF0YUdldEJ5dGVQ
dHIod2ViQXJjaGl2ZURhdGEpLCBieXRlc0NvdW50LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAg
UmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gcmVhZFN0cmVhbSA9IGFkb3B0Q0YoQ0ZSZWFkU3Ry
ZWFtQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIENGRGF0YUdldEJ5
dGVQdHIod2ViQXJjaGl2ZURhdGEpLCBieXRlc0NvdW50LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAg
ICAgQ0ZSZWFkU3RyZWFtT3BlbihyZWFkU3RyZWFtLmdldCgpKTsKLSAgICBSZXRhaW5QdHI8Q0ZN
dXRhYmxlRGljdGlvbmFyeVJlZj4gcHJvcGVydHlMaXN0KEFkb3B0Q0YsIChDRk11dGFibGVEaWN0
aW9uYXJ5UmVmKUNGUHJvcGVydHlMaXN0Q3JlYXRlRnJvbVN0cmVhbShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCByZWFkU3RyZWFtLmdldCgpLCBieXRlc0NvdW50LCBrQ0ZQcm9wZXJ0eUxpc3RNdXRhYmxl
Q29udGFpbmVyc0FuZExlYXZlcywgJmZvcm1hdCwgMCkpOworICAgIFJldGFpblB0cjxDRk11dGFi
bGVEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0eUxpc3QgPSBhZG9wdENGKChDRk11dGFibGVEaWN0aW9u
YXJ5UmVmKUNGUHJvcGVydHlMaXN0Q3JlYXRlRnJvbVN0cmVhbShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCByZWFkU3RyZWFtLmdldCgpLCBieXRlc0NvdW50LCBrQ0ZQcm9wZXJ0eUxpc3RNdXRhYmxlQ29u
dGFpbmVyc0FuZExlYXZlcywgJmZvcm1hdCwgMCkpOwogICAgIENGUmVhZFN0cmVhbUNsb3NlKHJl
YWRTdHJlYW0uZ2V0KCkpOwogI2Vsc2UKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFy
eVJlZj4gcHJvcGVydHlMaXN0KEFkb3B0Q0YsIChDRk11dGFibGVEaWN0aW9uYXJ5UmVmKUNGUHJv
cGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgd2ViQXJjaGl2ZURh
dGEsIGtDRlByb3BlcnR5TGlzdE11dGFibGVDb250YWluZXJzQW5kTGVhdmVzLCAmZm9ybWF0LCAm
ZXJyb3IpKTsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gcHJvcGVydHlM
aXN0ID0gYWRvcHRDRigoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZilDRlByb3BlcnR5TGlzdENyZWF0
ZVdpdGhEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIHdlYkFyY2hpdmVEYXRhLCBrQ0ZQcm9wZXJ0
eUxpc3RNdXRhYmxlQ29udGFpbmVyc0FuZExlYXZlcywgJmZvcm1hdCwgJmVycm9yKSk7CiAjZW5k
aWYKIAogICAgIGlmICghcHJvcGVydHlMaXN0KSB7CkBAIC0xNzQsNyArMTc0LDcgQEAgQ0ZTdHJp
bmdSZWYgY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNo
aXZlRGF0YSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRlJldGFp
bihDRlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0aW5nIGRhdGEgdG8gcHJv
cGVydHkgbGlzdC4iKSkpOwogICAgIH0KIAotICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJl
Zj4gcmVzb3VyY2VzKEFkb3B0Q0YsIENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRh
YmxlQXJyYXlSZWY+IHJlc291cmNlcyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwogICAgIENGQXJy
YXlBcHBlbmRWYWx1ZShyZXNvdXJjZXMuZ2V0KCksIHByb3BlcnR5TGlzdC5nZXQoKSk7CiAKICAg
ICB3aGlsZSAoQ0ZBcnJheUdldENvdW50KHJlc291cmNlcy5nZXQoKSkpIHsKQEAgLTIwOSw5ICsy
MDksOSBAQCBDRlN0cmluZ1JlZiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoQ0ZE
YXRhUmVmIHdlYkFyY2hpdmVEYXRhKQogICAgIGVycm9yID0gMDsKIAogI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHht
bERhdGEoQWRvcHRDRiwgQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVYTUxEYXRhKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHByb3BlcnR5TGlzdC5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHht
bERhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlWE1MRGF0YShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBwcm9wZXJ0eUxpc3QuZ2V0KCkpKTsKICNlbHNlCi0gICAgUmV0YWluUHRyPENGRGF0
YVJlZj4geG1sRGF0YShBZG9wdENGLCBDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgcHJvcGVydHlMaXN0LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RYTUxGb3JtYXRf
djFfMCwgMCwgJmVycm9yKSk7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4geG1sRGF0YSA9IGFk
b3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIHByb3Bl
cnR5TGlzdC5nZXQoKSwga0NGUHJvcGVydHlMaXN0WE1MRm9ybWF0X3YxXzAsIDAsICZlcnJvcikp
OwogI2VuZGlmCiAKICAgICBpZiAoIXhtbERhdGEpIHsKQEAgLTIyMCw4ICsyMjAsOCBAQCBDRlN0
cmluZ1JlZiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoQ0ZEYXRhUmVmIHdlYkFy
Y2hpdmVEYXRhKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGUmV0
YWluKENGU1RSKCJBbiB1bmtub3duIGVycm9yIG9jY3VycmVkIGNvbnZlcnRpbmcgcHJvcGVydHkg
bGlzdCB0byBkYXRhLiIpKSk7CiAgICAgfQogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB4
bWxTdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVGcm9tRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB4bWxEYXRhLmdldCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VU
RjgpKTsKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlU3RyaW5nUmVmPiBzdHJpbmcoQWRvcHRDRiwg
Q0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCB4bWxTdHJp
bmcuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHhtbFN0cmluZyA9IGFkb3B0
Q0YoQ0ZTdHJpbmdDcmVhdGVGcm9tRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCB4bWxEYXRhLmdldCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZNdXRhYmxlU3RyaW5nUmVmPiBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
TXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgeG1sU3RyaW5nLmdldCgpKSk7CiAK
ICAgICAvLyBSZXBsYWNlICJBcHBsZSBDb21wdXRlciIgd2l0aCAiQXBwbGUiIGluIHRoZSBEVEQg
ZGVjbGFyYXRpb24uCiAgICAgQ0ZTdHJpbmdGaW5kQW5kUmVwbGFjZShzdHJpbmcuZ2V0KCksIENG
U1RSKCItLy9BcHBsZSBDb21wdXRlci8vIiksIENGU1RSKCItLy9BcHBsZS8vIiksIENGUmFuZ2VN
YWtlKDAsIENGU3RyaW5nR2V0TGVuZ3RoKHN0cmluZy5nZXQoKSkpLCAwKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL0ltYWdlRGlmZkNHLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2NnL0ltYWdlRGlmZkNHLmNwcAppbmRleCA3ZmE1MTEwYmJkNTllN2U1MTIyMWY4NGJl
M2Q1MmM1ZGIwYjBkNTQ5Li45MDBmMWJhMTUyMDllMTkwNmMyNjlkNmY4YTUxZTFmMTUyYWMzMjQ5
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmZDRy5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvSW1hZ2VEaWZmQ0cuY3BwCkBAIC03NSw3ICs3NSw3
IEBAIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlUE5HID0gQ0ZTVFIoInB1YmxpYy5w
bmciKTsKIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VGcm9tU3RkaW4o
aW50IGJ5dGVzUmVtYWluaW5nKQogewogICAgIHVuc2lnbmVkIGNoYXIgYnVmZmVyWzIwNDhdOwot
ICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBkYXRhKEFkb3B0Q0YsIENGRGF0YUNyZWF0
ZU11dGFibGUoMCwgYnl0ZXNSZW1haW5pbmcpKTsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0
YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCBieXRlc1JlbWFpbmlu
ZykpOwogCiAgICAgd2hpbGUgKGJ5dGVzUmVtYWluaW5nID4gMCkgewogICAgICAgICBzaXplX3Qg
Ynl0ZXNUb1JlYWQgPSBtaW4oYnl0ZXNSZW1haW5pbmcsIDIwNDgpOwpAQCAtODMsOCArODMsOCBA
QCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUltYWdlRnJvbVN0ZGluKGludCBi
eXRlc1JlbWFpbmluZykKICAgICAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoZGF0YS5nZXQoKSwgYnVm
ZmVyLCBzdGF0aWNfY2FzdDxDRkluZGV4PihieXRlc1JlYWQpKTsKICAgICAgICAgYnl0ZXNSZW1h
aW5pbmcgLT0gc3RhdGljX2Nhc3Q8aW50PihieXRlc1JlYWQpOwogICAgIH0KLSAgICBSZXRhaW5Q
dHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlcihBZG9wdENGLCBDR0RhdGFQcm92aWRl
ckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOwotICAgIHJldHVybiBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4oQWRvcHRDRiwgQ0dJbWFnZUNyZWF0ZVdpdGhQTkdEYXRhUHJvdmlkZXIoZGF0YVBy
b3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAg
IFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOworICAgIHJldHVybiBhZG9w
dENGKENHSW1hZ2VDcmVhdGVXaXRoUE5HRGF0YVByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSwg
MCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKIH0KIAogc3RhdGljIHZvaWQg
cmVsZWFzZU1hbGxvY0J1ZmZlcih2b2lkKiBpbmZvLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qg
c2l6ZSkKQEAgLTEwMCwxMiArMTAwLDEyIEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
Y3JlYXRlRGlmZmVyZW5jZUltYWdlKENHSW1hZ2VSZWYgYmFzZUltYWdlLCBDR0ltYWdlCiAKICAg
ICAvLyBEcmF3IGJhc2UgaW1hZ2UgaW4gYml0bWFwIGNvbnRleHQKICAgICB2b2lkKiBiYXNlQnVm
ZmVyID0gY2FsbG9jKGhlaWdodCwgcm93Qnl0ZXMpOwotICAgIFJldGFpblB0cjxDR0NvbnRleHRS
ZWY+IGJhc2VDb250ZXh0KEFkb3B0Q0YsIENHQml0bWFwQ29udGV4dENyZWF0ZShiYXNlQnVmZmVy
LCB3aWR0aCwgaGVpZ2h0LCA4LCByb3dCeXRlcywgQ0dJbWFnZUdldENvbG9yU3BhY2UoYmFzZUlt
YWdlKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRl
cjMySG9zdCkpOworICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJhc2VDb250ZXh0ID0gYWRv
cHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoYmFzZUJ1ZmZlciwgd2lkdGgsIGhlaWdodCwgOCwg
cm93Qnl0ZXMsIENHSW1hZ2VHZXRDb2xvclNwYWNlKGJhc2VJbWFnZSksIGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKTsKICAgICBDR0Nv
bnRleHREcmF3SW1hZ2UoYmFzZUNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgd2lkdGgs
IGhlaWdodCksIGJhc2VJbWFnZSk7CiAKICAgICAvLyBEcmF3IHRlc3QgaW1hZ2UgaW4gYml0bWFw
IGNvbnRleHQKICAgICB2b2lkKiBidWZmZXIgPSBjYWxsb2MoaGVpZ2h0LCByb3dCeXRlcyk7Ci0g
ICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY29udGV4dChBZG9wdENGLCBDR0JpdG1hcENvbnRl
eHRDcmVhdGUoYnVmZmVyLCB3aWR0aCwgaGVpZ2h0LCA4LCByb3dCeXRlcywgQ0dJbWFnZUdldENv
bG9yU3BhY2UodGVzdEltYWdlKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtD
R0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpOworICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNv
bnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShidWZmZXIsIHdpZHRoLCBoZWln
aHQsIDgsIHJvd0J5dGVzLCBDR0ltYWdlR2V0Q29sb3JTcGFjZSh0ZXN0SW1hZ2UpLCBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CiAg
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgd2lk
dGgsIGhlaWdodCksIHRlc3RJbWFnZSk7CiAKICAgICAvLyBDb21wYXJlIHRoZSBjb250ZW50IG9m
IHRoZSAyIGJpdG1hcHMKQEAgLTE1NCw4ICsxNTQsOCBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IGNyZWF0ZURpZmZlcmVuY2VJbWFnZShDR0ltYWdlUmVmIGJhc2VJbWFnZSwgQ0dJbWFn
ZQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGRp
ZmZDb2xvcnNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlR3JheSgpOwotICAgICAgICBS
ZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IHByb3ZpZGVyKEFkb3B0Q0YsIENHRGF0YVByb3Zp
ZGVyQ3JlYXRlV2l0aERhdGEoMCwgZGlmZkJ1ZmZlciwgd2lkdGggKiBoZWlnaHQsIHJlbGVhc2VN
YWxsb2NCdWZmZXIpKTsKLSAgICAgICAgZGlmZkltYWdlLmFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZSh3
aWR0aCwgaGVpZ2h0LCA4LCA4LCB3aWR0aCwgZGlmZkNvbG9yc3BhY2UsIDAsIHByb3ZpZGVyLmdl
dCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgICAgICBSZXRh
aW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZVdpdGhEYXRhKDAsIGRpZmZCdWZmZXIsIHdpZHRoICogaGVpZ2h0LCByZWxlYXNlTWFs
bG9jQnVmZmVyKSk7CisgICAgICAgIGRpZmZJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZSh3
aWR0aCwgaGVpZ2h0LCA4LCA4LCB3aWR0aCwgZGlmZkNvbG9yc3BhY2UsIDAsIHByb3ZpZGVyLmdl
dCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAgIH0KICAgICBl
bHNlCiAgICAgICAgIGZyZWUoZGlmZkJ1ZmZlcik7CkBAIC0yNDIsOCArMjQyLDggQEAgaW50IG1h
aW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKGRpZmZlcmVuY2UgPiAwLjBmKSB7CiAgICAgICAgICAgICAgICAgaWYgKGRpZmZJbWFn
ZSkgewotICAgICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gaW1h
Z2VEYXRhKEFkb3B0Q0YsIENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwotICAgICAgICAgICAg
ICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZURlc3RpbmF0aW9uUmVmPiBpbWFnZURlc3QoQWRvcHRD
RiwgQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoaW1hZ2VEYXRhLmdldCgpLCBrVVRU
eXBlUE5HLCAxLCAwKSk7CisgICAgICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVE
YXRhUmVmPiBpbWFnZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwor
ICAgICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZURlc3RpbmF0aW9uUmVmPiBpbWFn
ZURlc3QgPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhKGltYWdlRGF0
YS5nZXQoKSwga1VUVHlwZVBORywgMSwgMCkpOwogICAgICAgICAgICAgICAgICAgICBDR0ltYWdl
RGVzdGluYXRpb25BZGRJbWFnZShpbWFnZURlc3QuZ2V0KCksIGRpZmZJbWFnZS5nZXQoKSwgMCk7
CiAgICAgICAgICAgICAgICAgICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGltYWdlRGVz
dC5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiQ29udGVudC1MZW5ndGg6ICVs
dVxuIiwgQ0ZEYXRhR2V0TGVuZ3RoKGltYWdlRGF0YS5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAKaW5kZXggYmY1OWIwM2VjM2YzMDI3
OWMzYmEyNzllMzRmZTIxZjU3NDU3YzJkYS4uMzE2OGQyMGE1ZTQ2NTQ0MWE0ODNlMjY5YTM3ODMx
OGEzZTZmMDYwNyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1w
U3VwcG9ydENHLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBw
b3J0Q0cuY3BwCkBAIC01Nyw4ICs1Nyw4IEBAIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrVVRU
eXBlUE5HID0gQ0ZTVFIoInB1YmxpYy5wbmciKTsKIAogc3RhdGljIHZvaWQgcHJpbnRQTkcoQ0dJ
bWFnZVJlZiBpbWFnZSwgY29uc3QgY2hhciogY2hlY2tzdW0pCiB7Ci0gICAgUmV0YWluUHRyPENG
TXV0YWJsZURhdGFSZWY+IGltYWdlRGF0YShBZG9wdENGLCBDRkRhdGFDcmVhdGVNdXRhYmxlKDAs
IDApKTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZURlc3RpbmF0aW9uUmVmPiBpbWFnZURlc3QoQWRv
cHRDRiwgQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoaW1hZ2VEYXRhLmdldCgpLCBr
VVRUeXBlUE5HLCAxLCAwKSk7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGltYWdl
RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CisgICAgUmV0YWluUHRy
PENHSW1hZ2VEZXN0aW5hdGlvblJlZj4gaW1hZ2VEZXN0ID0gYWRvcHRDRihDR0ltYWdlRGVzdGlu
YXRpb25DcmVhdGVXaXRoRGF0YShpbWFnZURhdGEuZ2V0KCksIGtVVFR5cGVQTkcsIDEsIDApKTsK
ICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShpbWFnZURlc3QuZ2V0KCksIGltYWdlLCAw
KTsKICAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShpbWFnZURlc3QuZ2V0KCkpOwogCkBA
IC0xMDgsNiArMTA4LDYgQEAgdm9pZCBjb21wdXRlTUQ1SGFzaFN0cmluZ0ZvckJpdG1hcENvbnRl
eHQoQml0bWFwQ29udGV4dCogY29udGV4dCwgY2hhciBoYXNoU3RyaW4KIAogdm9pZCBkdW1wQml0
bWFwKEJpdG1hcENvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIGNoZWNrc3VtKQogewotICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZShBZG9wdENGLCBDR0JpdG1hcENvbnRleHRDcmVh
dGVJbWFnZShjb250ZXh0LT5jZ0NvbnRleHQoKSkpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC0+Y2dD
b250ZXh0KCkpKTsKICAgICBwcmludFBORyhpbWFnZS5nZXQoKSwgY2hlY2tzdW0pOwogfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuaAppbmRleCBmMGM5NzQ2
MzFiNWJjMGU3MTU2ZDM2YTJhZDgwNWFhMjYyNDhhYjRlLi4zNTNhNmI2MDVjMGQxZWFkODI4MWY5
MzdkZDVjZWRkOWRiZDgyZTBmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9Q
aXhlbER1bXBTdXBwb3J0Q0cuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1
bXBTdXBwb3J0Q0cuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogCiAgICAgQml0bWFwQ29u
dGV4dChQbGF0Zm9ybUJpdG1hcEJ1ZmZlciBidWZmZXIsIENHQ29udGV4dFJlZiBjb250ZXh0KQog
ICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlcikKLSAgICAgICAgLCBtX2NvbnRleHQoQWRvcHRDRiwg
Y29udGV4dCkKKyAgICAgICAgLCBtX2NvbnRleHQoYWRvcHRDRihjb250ZXh0KSkKICAgICB7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja1dlYk5vdGlm
aWNhdGlvblByb3ZpZGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5tbQppbmRleCBkODBmNmJhNGUyYzE3OWM0NWM1ZjIwYjEzZWQwYzRm
ZGYzNzg2NGFlLi5hZGY1ZDllMzEzZmMzNWI4Njk2MThmMjVhODNjNDFjMDhjYjY1YjZhIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja1dlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXIubW0KQEAgLTQzLDcgKzQzLDcgQEAgLSAoaWQpaW5pdAogewogICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIF9wZXJtaXNzaW9u
cy5hZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIF9wZXJt
aXNzaW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAg
ICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVs
RHVtcFN1cHBvcnRNYWMubW0KaW5kZXggZjRjYzdjMTk4NDk5YWU2MGY5ZWZjYzg4MGRmNTc4OWNk
YmU2ZWRiZS4uYzJkNDNkYWJmMDkyZmVlOWM3N2M1MjVlYTcyMDY0OGE4NDdjZjJiYiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0KKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0KQEAgLTUz
LDcgKzUzLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFw
Q29udGV4dChzaXplX3QgcGl4ZWxzV2lkZSwgc2l6ZV90IHAKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgCiAgICAgLy8gQ3JlYXRpbmcgdGhpcyBiaXRtYXAgaW4gdGhlIGRldmljZSBjb2xvciBzcGFj
ZSBwcmV2ZW50cyBhbnkgY29sb3IgY29udmVyc2lvbiB3aGVuIHRoZSBpbWFnZSBvZiB0aGUgd2Vi
IHZpZXcgaXMgZHJhd24gaW50byBpdC4KLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBj
b2xvclNwYWNlKEFkb3B0Q0YsIENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKKyAgICBS
ZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3Bh
Y2VDcmVhdGVEZXZpY2VSR0IoKSk7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1h
cENvbnRleHRDcmVhdGUoYnVmZmVyLCBwaXhlbHNXaWRlLCBwaXhlbHNIaWdoLCA4LCByb3dCeXRl
cywgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtD
R0JpdG1hcEJ5dGVPcmRlcjMySG9zdCk7IC8vIFVzZSBBUkdCOCBvbiBQUEMgb3IgQkdSQTggb24g
WDg2IHRvIGltcHJvdmUgQ0cgcGVyZm9ybWFuY2UKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAg
ICAgZnJlZShidWZmZXIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rl
c3RSdW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5t
bQppbmRleCBmNDEwYzc1NWQyMmEzOTFkMmM2YTk1OTAyOGJiYmU5NDQxZjA1ZWEyLi45OGI2ZTQ3
ZWYyMmU4M2Q4NTljMzdlYzcyOWZhYmNkNDFhNmZhYTFkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtMTE5LDcgKzExOSw3IEBAIFRlc3RSdW5uZXI6On5U
ZXN0UnVubmVyKCkKIAogdm9pZCBUZXN0UnVubmVyOjphZGREaXNhbGxvd2VkVVJMKEpTU3RyaW5n
UmVmIHVybCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybENGKEFkb3B0Q0YsIEpT
U3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybCkpOworICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gdXJsQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtD
RkFsbG9jYXRvckRlZmF1bHQsIHVybCkpOwogCiAgICAgaWYgKCFkaXNhbGxvd2VkVVJMcykKICAg
ICAgICAgZGlzYWxsb3dlZFVSTHMgPSBDRlNldENyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgMCwgTlVMTCk7CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpjbGVh
ckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCkKIAogbG9uZyBsb25nIFRlc3RSdW5uZXI6OmFwcGxpY2F0
aW9uQ2FjaGVEaXNrVXNhZ2VGb3JPcmlnaW4oSlNTdHJpbmdSZWYgdXJsKQogewotICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gdXJsQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgdXJsKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmxD
RiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJs
KSk7CiAgICAgV2ViU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4g
YWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmluZyAqKXVybENG
LmdldCgpXV07CiAgICAgbG9uZyBsb25nIHVzYWdlID0gW1dlYkFwcGxpY2F0aW9uQ2FjaGUgZGlz
a1VzYWdlRm9yT3JpZ2luOm9yaWdpbl07CiAgICAgW29yaWdpbiByZWxlYXNlXTsKQEAgLTE1Nyw3
ICsxNTcsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnN5bmNMb2NhbFN0b3JhZ2UoKQogCiBsb25nIGxv
bmcgVGVzdFJ1bm5lcjo6bG9jYWxTdG9yYWdlRGlza1VzYWdlRm9yT3JpZ2luKEpTU3RyaW5nUmVm
IHVybCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybENGKEFkb3B0Q0YsIEpTU3Ry
aW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybCkpOworICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdXJsQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHVybCkpOwogICAgIFdlYlNlY3VyaXR5T3JpZ2luICpvcmlnaW4gPSBb
W1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzooTlNTdHJpbmcgKil1cmxDRi5nZXQoKV1dOwogICAgIGxvbmcgbG9uZyB1c2FnZSA9IFtbV2Vi
U3RvcmFnZU1hbmFnZXIgc2hhcmVkV2ViU3RvcmFnZU1hbmFnZXJdIGRpc2tVc2FnZUZvck9yaWdp
bjpvcmlnaW5dOwogICAgIFtvcmlnaW4gcmVsZWFzZV07CkBAIC0xNzEsNyArMTcxLDcgQEAgdm9p
ZCBUZXN0UnVubmVyOjpvYnNlcnZlU3RvcmFnZVRyYWNrZXJOb3RpZmljYXRpb25zKHVuc2lnbmVk
IG51bWJlcikKIAogdm9pZCBUZXN0UnVubmVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmln
aW4oSlNTdHJpbmdSZWYgdXJsKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsQ0Yo
QWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsKSk7
CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmxDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5
Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsKSk7CiAKICAgICBXZWJTZWN1cml0eU9y
aWdpbiAqb3JpZ2luID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gaW5pdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6KE5TU3RyaW5nICopdXJsQ0YuZ2V0KCldXTsKICAgICBbV2ViQXBw
bGljYXRpb25DYWNoZSBkZWxldGVDYWNoZUZvck9yaWdpbjpvcmlnaW5dOwpAQCAtMjI0LDcgKzIy
NCw3IEBAIEpTVmFsdWVSZWYgVGVzdFJ1bm5lcjo6b3JpZ2luc1dpdGhMb2NhbFN0b3JhZ2UoSlND
b250ZXh0UmVmIGNvbnRleHQpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6ZGVsZXRlTG9jYWxTdG9yYWdl
Rm9yT3JpZ2luKEpTU3RyaW5nUmVmIFVSTCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHVybENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQs
IFVSTCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsQ0YgPSBhZG9wdENGKEpTU3Ry
aW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIFVSTCkpOwogICAgIAogICAgIFdl
YlNlY3VyaXR5T3JpZ2luICpvcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBpbml0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooTlNTdHJpbmcgKil1cmxDRi5nZXQoKV1dOwog
ICAgIFtbV2ViU3RvcmFnZU1hbmFnZXIgc2hhcmVkV2ViU3RvcmFnZU1hbmFnZXJdIGRlbGV0ZU9y
aWdpbjpvcmlnaW5dOwpAQCAtMjQ4LDE0ICsyNDgsMTQgQEAgdm9pZCBUZXN0UnVubmVyOjpjbGVh
ckJhY2tGb3J3YXJkTGlzdCgpCiAKIEpTU3RyaW5nUmVmIFRlc3RSdW5uZXI6OmNvcHlEZWNvZGVk
SG9zdE5hbWUoSlNTdHJpbmdSZWYgbmFtZSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IG5hbWVDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBuYW1lKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuYW1lQ0YgPSBhZG9wdENGKEpT
U3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG5hbWUpKTsKICAgICBOU1N0
cmluZyAqbmFtZU5TID0gKE5TU3RyaW5nICopbmFtZUNGLmdldCgpOwogICAgIHJldHVybiBKU1N0
cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpW25hbWVOUyBfd2ViX2RlY29kZUhv
c3ROYW1lXSk7CiB9CiAKIEpTU3RyaW5nUmVmIFRlc3RSdW5uZXI6OmNvcHlFbmNvZGVkSG9zdE5h
bWUoSlNTdHJpbmdSZWYgbmFtZSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5hbWVD
RihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBuYW1l
KSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuYW1lQ0YgPSBhZG9wdENGKEpTU3RyaW5n
Q29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG5hbWUpKTsKICAgICBOU1N0cmluZyAq
bmFtZU5TID0gKE5TU3RyaW5nICopbmFtZUNGLmdldCgpOwogICAgIHJldHVybiBKU1N0cmluZ0Ny
ZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpW25hbWVOUyBfd2ViX2VuY29kZUhvc3ROYW1l
XSk7CiB9CkBAIC0zNjMsNyArMzYzLDcgQEAgSlNTdHJpbmdSZWYgVGVzdFJ1bm5lcjo6cGF0aFRv
TG9jYWxSZXNvdXJjZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNTdHJpbmdSZWYgbG8KIAogdm9p
ZCBUZXN0UnVubmVyOjpxdWV1ZUxvYWQoSlNTdHJpbmdSZWYgdXJsLCBKU1N0cmluZ1JlZiB0YXJn
ZXQpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmxDRihBZG9wdENGLCBKU1N0cmlu
Z0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmwpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHVybENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCB1cmwpKTsKICAgICBOU1N0cmluZyAqdXJsTlMgPSAoTlNTdHJpbmcgKil1
cmxDRi5nZXQoKTsKIAogICAgIE5TVVJMICpuc3VybCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOnVy
bE5TIHJlbGF0aXZlVG9VUkw6W1tbbWFpbkZyYW1lIGRhdGFTb3VyY2VdIHJlc3BvbnNlXSBVUkxd
XTsKQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldERlZmVyc0xvYWRpbmco
Ym9vbCBkZWZlcnMpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJp
ZGRlbkZvclVSTFNjaGVtZShib29sIGZvcmJpZGRlbiwgSlNTdHJpbmdSZWYgc2NoZW1lKQogewot
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc2NoZW1lQ0ZTdHJpbmcoQWRvcHRDRiwgSlNTdHJp
bmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2NoZW1lKSk7CisgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBzY2hlbWVDRlN0cmluZyA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZT
dHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2NoZW1lKSk7CiAgICAgW1dlYlZpZXcgX3NldERv
bWFpblJlbGF4YXRpb25Gb3JiaWRkZW46Zm9yYmlkZGVuIGZvclVSTFNjaGVtZTooTlNTdHJpbmcg
KilzY2hlbWVDRlN0cmluZy5nZXQoKV07CiB9CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFRl
c3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91
YmxlIGxvbmdpdHVkZSwgZAogCiB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uVW5hdmFpbGFibGVFcnJvcihKU1N0cmluZ1JlZiBtZXNzYWdlKQogewotICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gbWVzc2FnZUNGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5n
KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1lc3NhZ2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IG1lc3NhZ2VDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgbWVzc2FnZSkpOwogICAgIE5TU3RyaW5nICptZXNzYWdlTlMgPSAoTlNTdHJpbmcg
KiltZXNzYWdlQ0YuZ2V0KCk7CiAgICAgW1tNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzaGFyZWRd
IHNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcldpdGhNZXNzYWdlOm1lc3NhZ2VOU107CiB9CkBA
IC01NzYsNyArNTc2LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJs
ZWQoYm9vbCBmbGFnKQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRp
b24oSlNTdHJpbmdSZWYgcGF0aCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhD
RihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwYXRo
KSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoQ0YgPSBhZG9wdENGKEpTU3RyaW5n
Q29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhdGgpKTsKICAgICBOU1VSTCAqdXJs
ID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6KE5TU3RyaW5nICopcGF0aENGLmdldCgpXTsKICAgICBb
W1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIHNldFVzZXJTdHlsZVNoZWV0TG9j
YXRpb246dXJsXTsKIH0KQEAgLTU4Nyw3ICs1ODcsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFZh
bHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBK
UwogICAgIGlmICghZWxlbWVudCB8fCAhW2VsZW1lbnQgaXNLaW5kT2ZDbGFzczpbRE9NSFRNTElu
cHV0RWxlbWVudCBjbGFzc11dKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHZhbHVlQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgdmFsdWUpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHZhbHVlQ0Yg
PSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHZhbHVl
KSk7CiAgICAgWyhET01IVE1MSW5wdXRFbGVtZW50ICopZWxlbWVudCBzZXRWYWx1ZUZvclVzZXI6
KE5TU3RyaW5nICopdmFsdWVDRi5nZXQoKV07CiB9CiAKQEAgLTYwMywxMCArNjAzLDEwIEBAIHZv
aWQgVGVzdFJ1bm5lcjo6ZGlzcGF0Y2hQZW5kaW5nTG9hZFJlcXVlc3RzKCkKIAogdm9pZCBUZXN0
UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYga2V5LCBKU1N0cmluZ1JlZiB2
YWx1ZSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleUNGKEFkb3B0Q0YsIEpTU3Ry
aW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleSkpOworICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4ga2V5Q0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGtleSkpOwogICAgIE5TU3RyaW5nICprZXlOUyA9IChOU1N0cmluZyAq
KWtleUNGLmdldCgpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZUNGKEFkb3B0
Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHZhbHVlKSk7Cisg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZUNGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlD
RlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB2YWx1ZSkpOwogICAgIE5TU3RyaW5nICp2YWx1
ZU5TID0gKE5TU3RyaW5nICopdmFsdWVDRi5nZXQoKTsKIAogICAgIFtbV2ViUHJlZmVyZW5jZXMg
c3RhbmRhcmRQcmVmZXJlbmNlc10gX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOnZhbHVl
TlMgZm9yS2V5OmtleU5TXTsKQEAgLTYxOSw3ICs2MTksNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnJl
bW92ZUFsbFZpc2l0ZWRMaW5rcygpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0UGVyc2lzdGVudFVz
ZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYganNVUkwpCiB7Ci0gICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiB1cmxTdHJpbmcoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoMCwg
anNVUkwpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybFN0cmluZyA9IGFkb3B0Q0Yo
SlNTdHJpbmdDb3B5Q0ZTdHJpbmcoMCwganNVUkwpKTsKICAgICA6OnNldFBlcnNpc3RlbnRVc2Vy
U3R5bGVTaGVldExvY2F0aW9uKHVybFN0cmluZy5nZXQoKSk7CiB9CiAKQEAgLTY1NSwxMCArNjU1
LDEwIEBAIGludCBUZXN0UnVubmVyOjp3aW5kb3dDb3VudCgpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6
ZXhlY0NvbW1hbmQoSlNTdHJpbmdSZWYgbmFtZSwgSlNTdHJpbmdSZWYgdmFsdWUpCiB7Ci0gICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBuYW1lQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbmFtZSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gbmFtZUNGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBuYW1lKSk7CiAgICAgTlNTdHJpbmcgKm5hbWVOUyA9IChOU1N0cmluZyAqKW5hbWVDRi5n
ZXQoKTsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdmFsdWVDRihBZG9wdENGLCBKU1N0
cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB2YWx1ZSkpOworICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gdmFsdWVDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmco
a0NGQWxsb2NhdG9yRGVmYXVsdCwgdmFsdWUpKTsKICAgICBOU1N0cmluZyAqdmFsdWVOUyA9IChO
U1N0cmluZyAqKXZhbHVlQ0YuZ2V0KCk7CiAKICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBfZXhl
Y3V0ZUNvcmVDb21tYW5kQnlOYW1lOm5hbWVOUyB2YWx1ZTp2YWx1ZU5TXTsKQEAgLTY3Myw3ICs2
NzMsNyBAQCBib29sIFRlc3RSdW5uZXI6OmZpbmRTdHJpbmcoSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTU3RyaW5nUmVmIHRhcmdldCwgSlNPYmplY3RSZQogICAgIGlmICghSlNWYWx1ZUlzTnVtYmVy
KGNvbnRleHQsIGxlbmd0aFZhbHVlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiB0YXJnZXRDRlN0cmluZyhBZG9wdENGLCBKU1N0cmluZ0NvcHlD
RlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0YXJnZXQpKTsKKyAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHRhcmdldENGU3RyaW5nID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCB0YXJnZXQpKTsKIAogICAgIHNpemVfdCBsZW5ndGggPSBzdGF0
aWNfY2FzdDxzaXplX3Q+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBsZW5ndGhWYWx1ZSwgMCkp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKQEAgLTcwNyw3ICs3
MDcsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldENhY2hlTW9kZWwoaW50IGNhY2hlTW9kZWwpCiAK
IGJvb2wgVGVzdFJ1bm5lcjo6aXNDb21tYW5kRW5hYmxlZChKU1N0cmluZ1JlZiBuYW1lKQogewot
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbmFtZUNGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNG
U3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG5hbWUpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IG5hbWVDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgbmFtZSkpOwogICAgIE5TU3RyaW5nICpuYW1lTlMgPSAoTlNTdHJpbmcgKiluYW1l
Q0YuZ2V0KCk7CiAKICAgICAvLyBBY2NlcHQgY29tbWFuZCBzdHJpbmdzIHdpdGggY2FwaXRhbCBs
ZXR0ZXJzIGZvciBmaXJzdCBsZXR0ZXIgd2l0aG91dCB0cmFpbGluZyBjb2xvbi4KQEAgLTcxOCw3
ICs3MTgsNyBAQCBib29sIFRlc3RSdW5uZXI6OmlzQ29tbWFuZEVuYWJsZWQoSlNTdHJpbmdSZWYg
bmFtZSkKICAgICB9CiAKICAgICBTRUwgc2VsZWN0b3IgPSBOU1NlbGVjdG9yRnJvbVN0cmluZyhu
YW1lTlMpOwotICAgIFJldGFpblB0cjxDb21tYW5kVmFsaWRhdGlvblRhcmdldD4gdGFyZ2V0KEFk
b3B0TlMsIFtbQ29tbWFuZFZhbGlkYXRpb25UYXJnZXQgYWxsb2NdIGluaXRXaXRoQWN0aW9uOnNl
bGVjdG9yXSk7CisgICAgUmV0YWluUHRyPENvbW1hbmRWYWxpZGF0aW9uVGFyZ2V0PiB0YXJnZXQg
PSBhZG9wdE5TKFtbQ29tbWFuZFZhbGlkYXRpb25UYXJnZXQgYWxsb2NdIGluaXRXaXRoQWN0aW9u
OnNlbGVjdG9yXSk7CiAgICAgaWQgdmFsaWRhdG9yID0gW05TQXBwIHRhcmdldEZvckFjdGlvbjpz
ZWxlY3RvciB0bzpbbWFpbkZyYW1lIHdlYlZpZXddIGZyb206dGFyZ2V0LmdldCgpXTsKICAgICBp
ZiAoIXZhbGlkYXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzM4LDIyICs3MzgsMjIg
QEAgdm9pZCBUZXN0UnVubmVyOjp3YWl0Rm9yUG9saWN5RGVsZWdhdGUoKQogCiB2b2lkIFRlc3RS
dW5uZXI6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEpTU3RyaW5nUmVmIHNvdXJjZU9y
aWdpbiwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwgSlNTdHJpbmdSZWYgZGVzdGlu
YXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewotICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gc291cmNlT3JpZ2luQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZT
dHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc291cmNlT3JpZ2luKSk7CisgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBzb3VyY2VPcmlnaW5DRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc291cmNlT3JpZ2luKSk7CiAgICAgTlNTdHJpbmcgKnNv
dXJjZU9yaWdpbk5TID0gKE5TU3RyaW5nICopc291cmNlT3JpZ2luQ0YuZ2V0KCk7Ci0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBwcm90b2NvbENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRlc3RpbmF0aW9uUHJvdG9jb2wpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHByb3RvY29sQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRlc3RpbmF0aW9uUHJvdG9jb2wpKTsKICAgICBOU1N0
cmluZyAqZGVzdGluYXRpb25Qcm90b2NvbE5TID0gKE5TU3RyaW5nICopcHJvdG9jb2xDRi5nZXQo
KTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3RDRihBZG9wdENGLCBKU1N0cmluZ0Nv
cHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkZXN0aW5hdGlvbkhvc3QpKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3RDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGVzdGluYXRpb25Ib3N0KSk7CiAgICAgTlNTdHJpbmcg
KmRlc3RpbmF0aW9uSG9zdE5TID0gKE5TU3RyaW5nICopaG9zdENGLmdldCgpOwogICAgIFtXZWJW
aWV3IF9hZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeVdpdGhTb3VyY2VPcmlnaW46c291cmNl
T3JpZ2luTlMgZGVzdGluYXRpb25Qcm90b2NvbDpkZXN0aW5hdGlvblByb3RvY29sTlMgZGVzdGlu
YXRpb25Ib3N0OmRlc3RpbmF0aW9uSG9zdE5TIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zOmFs
bG93RGVzdGluYXRpb25TdWJkb21haW5zXTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShKU1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIEpTU3Ry
aW5nUmVmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIEpTU3RyaW5nUmVmIGRlc3RpbmF0aW9uSG9zdCwg
Ym9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHNvdXJjZU9yaWdpbkNGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHNvdXJjZU9yaWdpbikpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gc291cmNlT3JpZ2luQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9j
YXRvckRlZmF1bHQsIHNvdXJjZU9yaWdpbikpOwogICAgIE5TU3RyaW5nICpzb3VyY2VPcmlnaW5O
UyA9IChOU1N0cmluZyAqKXNvdXJjZU9yaWdpbkNGLmdldCgpOwotICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gcHJvdG9jb2xDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBkZXN0aW5hdGlvblByb3RvY29sKSk7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBwcm90b2NvbENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBkZXN0aW5hdGlvblByb3RvY29sKSk7CiAgICAgTlNTdHJpbmcgKmRlc3Rp
bmF0aW9uUHJvdG9jb2xOUyA9IChOU1N0cmluZyAqKXByb3RvY29sQ0YuZ2V0KCk7Ci0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBob3N0Q0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmco
a0NGQWxsb2NhdG9yRGVmYXVsdCwgZGVzdGluYXRpb25Ib3N0KSk7CisgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBob3N0Q0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGRlc3RpbmF0aW9uSG9zdCkpOwogICAgIE5TU3RyaW5nICpkZXN0aW5hdGlv
bkhvc3ROUyA9IChOU1N0cmluZyAqKWhvc3RDRi5nZXQoKTsKICAgICBbV2ViVmlldyBfcmVtb3Zl
T3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnlXaXRoU291cmNlT3JpZ2luOnNvdXJjZU9yaWdpbk5T
IGRlc3RpbmF0aW9uUHJvdG9jb2w6ZGVzdGluYXRpb25Qcm90b2NvbE5TIGRlc3RpbmF0aW9uSG9z
dDpkZXN0aW5hdGlvbkhvc3ROUyBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWluczphbGxvd0Rlc3Rp
bmF0aW9uU3ViZG9tYWluc107CiB9CkBAIC03NjUsMTQgKzc2NSwxNCBAQCB2b2lkIFRlc3RSdW5u
ZXI6OnNldFNjcm9sbGJhclBvbGljeShKU1N0cmluZ1JlZiBvcmllbnRhdGlvbiwgSlNTdHJpbmdS
ZWYgcG9saWN5KQogCiB2b2lkIFRlc3RSdW5uZXI6OmFkZFVzZXJTY3JpcHQoSlNTdHJpbmdSZWYg
c291cmNlLCBib29sIHJ1bkF0U3RhcnQsIGJvb2wgYWxsRnJhbWVzKQogewotICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gc291cmNlQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgc291cmNlKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBz
b3VyY2VDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgc291cmNlKSk7CiAgICAgTlNTdHJpbmcgKnNvdXJjZU5TID0gKE5TU3RyaW5nICopc291cmNl
Q0YuZ2V0KCk7CiAgICAgW1dlYlZpZXcgX2FkZFVzZXJTY3JpcHRUb0dyb3VwOkAib3JnLndlYmtp
dC5EdW1wUmVuZGVyVHJlZSIgd29ybGQ6W1dlYlNjcmlwdFdvcmxkIHdvcmxkXSBzb3VyY2U6c291
cmNlTlMgdXJsOm5pbCB3aGl0ZWxpc3Q6bmlsIGJsYWNrbGlzdDpuaWwgaW5qZWN0aW9uVGltZToo
cnVuQXRTdGFydCA/IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA6IFdlYkluamVjdEF0RG9jdW1l
bnRFbmQpIGluamVjdGVkRnJhbWVzOihhbGxGcmFtZXMgPyBXZWJJbmplY3RJbkFsbEZyYW1lcyA6
IFdlYkluamVjdEluVG9wRnJhbWVPbmx5KV07CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6YWRkVXNl
clN0eWxlU2hlZXQoSlNTdHJpbmdSZWYgc291cmNlLCBib29sIGFsbEZyYW1lcykKIHsKLSAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNvdXJjZUNGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNvdXJjZSkpOworICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gc291cmNlQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHNvdXJjZSkpOwogICAgIE5TU3RyaW5nICpzb3VyY2VOUyA9IChOU1N0cmluZyAq
KXNvdXJjZUNGLmdldCgpOwogICAgIFtXZWJWaWV3IF9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6
QCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlIiB3b3JsZDpbV2ViU2NyaXB0V29ybGQgd29ybGRd
IHNvdXJjZTpzb3VyY2VOUyB1cmw6bmlsIHdoaXRlbGlzdDpuaWwgYmxhY2tsaXN0Om5pbCBpbmpl
Y3RlZEZyYW1lczooYWxsRnJhbWVzID8gV2ViSW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJJbmplY3RJ
blRvcEZyYW1lT25seSldOwogfQpAQCAtNzk0LDcgKzc5NCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6
Y2xvc2VXZWJJbnNwZWN0b3IoKQogCiB2b2lkIFRlc3RSdW5uZXI6OmV2YWx1YXRlSW5XZWJJbnNw
ZWN0b3IobG9uZyBjYWxsSWQsIEpTU3RyaW5nUmVmIHNjcmlwdCkKIHsKLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHNjcmlwdENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHNjcmlwdCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc2Ny
aXB0Q0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQs
IHNjcmlwdCkpOwogICAgIE5TU3RyaW5nICpzY3JpcHROUyA9IChOU1N0cmluZyAqKXNjcmlwdENG
LmdldCgpOwogICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBpbnNwZWN0b3JdIGV2YWx1YXRlSW5G
cm9udGVuZDpuaWwgY2FsbElkOmNhbGxJZCBzY3JpcHQ6c2NyaXB0TlNdOwogfQpAQCAtODI0LDcg
KzgyNCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGRB
bmRSZXR1cm5WYWx1ZSh1bnNpZ25lZCB3b3JsZElELCBKCiAKIHZvaWQgVGVzdFJ1bm5lcjo6ZXZh
bHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQodW5zaWduZWQgd29ybGRJRCwgSlNPYmplY3RSZWYg
Z2xvYmFsT2JqZWN0LCBKU1N0cmluZ1JlZiBzY3JpcHQpCiB7Ci0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBzY3JpcHRDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBzY3JpcHQpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNjcmlwdENG
ID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzY3Jp
cHQpKTsKICAgICBOU1N0cmluZyAqc2NyaXB0TlMgPSAoTlNTdHJpbmcgKilzY3JpcHRDRi5nZXQo
KTsKIAogICAgIC8vIEEgd29ybGRJRCBvZiAwIGFsd2F5cyBjb3JyZXNwb25kcyB0byBhIG5ldyB3
b3JsZC4gQW55IG90aGVyIHdvcmxkSUQgY29ycmVzcG9uZHMgdG8gYSB3b3JsZApAQCAtODM1LDcg
KzgzNSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQo
dW5zaWduZWQgd29ybGRJRCwgSlNPYmplY3RSZWYgZ2xvCiAgICAgZWxzZSB7CiAgICAgICAgIFJl
dGFpblB0cjxXZWJTY3JpcHRXb3JsZD4mIHdvcmxkU2xvdCA9IHdvcmxkTWFwKCkuYWRkKHdvcmxk
SUQsIDApLml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgaWYgKCF3b3JsZFNsb3QpCi0gICAgICAg
ICAgICB3b3JsZFNsb3QuYWRvcHROUyhbW1dlYlNjcmlwdFdvcmxkIGFsbG9jXSBpbml0XSk7Cisg
ICAgICAgICAgICB3b3JsZFNsb3QgPSBhZG9wdE5TKFtbV2ViU2NyaXB0V29ybGQgYWxsb2NdIGlu
aXRdKTsKICAgICAgICAgd29ybGQgPSB3b3JsZFNsb3QuZ2V0KCk7CiAgICAgfQogCkBAIC04ODMs
OCArODgzLDggQEAgdm9pZCBUZXN0UnVubmVyOjphcGlUZXN0TmV3V2luZG93RGF0YUxvYWRCYXNl
VVJMKEpTU3RyaW5nUmVmIHV0ZjhEYXRhLCBKU1N0cmluZ1IKIHsKICAgICBOU0F1dG9yZWxlYXNl
UG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwogCi0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiB1dGY4RGF0YUNGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHV0ZjhEYXRhKSk7Ci0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBiYXNlVVJMQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgYmFzZVVSTCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRmOERh
dGFDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
dXRmOERhdGEpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJhc2VVUkxDRiA9IGFkb3B0
Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFzZVVSTCkpOwog
ICAgIAogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNaZXJvUmVjdCBmcmFtZU5hbWU6QCIiIGdyb3VwTmFtZTpAIiJdOwogCkBAIC05NTEsNyAr
OTUxLDcgQEAgLSAoQk9PTCljb25uZWN0aW9uU2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U6KE5T
VVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25u
ZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKIHsKICAgICBpZiAoW2NoYWxs
ZW5nZSBwcmV2aW91c0ZhaWx1cmVDb3VudF0gPT0gMCkgewotICAgICAgICBSZXRhaW5QdHI8TlNV
UkxDcmVkZW50aWFsPiBjcmVkZW50aWFsKEFkb3B0TlMsIFtbTlNVUkxDcmVkZW50aWFsIGFsbG9j
XSAgaW5pdFdpdGhVc2VyOm1fdXNlcm5hbWUgcGFzc3dvcmQ6bV9wYXNzd29yZCBwZXJzaXN0ZW5j
ZTpOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb25dKTsKKyAgICAgICAgUmV0YWlu
UHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVudGlhbCA9IGFkb3B0TlMoW1tOU1VSTENyZWRlbnRp
YWwgYWxsb2NdICBpbml0V2l0aFVzZXI6bV91c2VybmFtZSBwYXNzd29yZDptX3Bhc3N3b3JkIHBl
cnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbl0pOwogICAgICAg
ICBbW2NoYWxsZW5nZSBzZW5kZXJdIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlhbC5nZXQoKSBmb3JB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2VdOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtOTk3LDExICs5OTcsMTEgQEAgdm9pZCBUZXN0UnVubmVyOjphdXRoZW50aWNhdGVTZXNz
aW9uKEpTU3RyaW5nUmVmIHVybCwgSlNTdHJpbmdSZWYgdXNlcm5hbWUsIEpTU3QKIHsKICAgICAv
LyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzc4ODA2OTk+LgogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA2MAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5n
Q0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJs
KSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1c2VybmFtZUNGKEFkb3B0Q0YsIEpTU3Ry
aW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVzZXJuYW1lKSk7Ci0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBwYXNzd29yZENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhc3N3b3JkKSk7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiB1cmxTdHJpbmdDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgdXJsKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1c2VybmFt
ZUNGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1
c2VybmFtZSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGFzc3dvcmRDRiA9IGFkb3B0
Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGFzc3dvcmQpKTsK
IAotICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlcXVlc3QoQWRvcHROUywgW1tOU1VSTFJl
cXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmluZyAq
KXVybFN0cmluZ0NGLmdldCgpXV0pOworICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlcXVl
c3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzooTlNTdHJpbmcgKil1cmxTdHJpbmdDRi5nZXQoKV1dKTsKIAogICAgIFtTeW5j
aHJvbm91c0xvYWRlciBtYWtlUmVxdWVzdDpyZXF1ZXN0LmdldCgpIHdpdGhVc2VybmFtZTooTlNT
dHJpbmcgKil1c2VybmFtZUNGLmdldCgpIHBhc3N3b3JkOihOU1N0cmluZyAqKXBhc3N3b3JkQ0Yu
Z2V0KCldOwogI2VuZGlmCkBAIC0xMDg0LDE0ICsxMDg0LDE0IEBAIHZvaWQgVGVzdFJ1bm5lcjo6
c2V0UGFnZVZpc2liaWxpdHkoY29uc3QgY2hhciogbmV3VmlzaWJpbGl0eSkKIAogdm9pZCBUZXN0
UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYganNPcmln
aW4pCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZk9yaWdpbihBZG9wdENGLCBKU1N0
cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc09yaWdpbikpOworICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZPcmlnaW4gPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzT3JpZ2luKSk7CiAgICAgQVNTRVJUKFtbbWFpbkZy
YW1lIHdlYlZpZXddIF9ub3RpZmljYXRpb25Qcm92aWRlcl0gPT0gW01vY2tXZWJOb3RpZmljYXRp
b25Qcm92aWRlciBzaGFyZWRdKTsKICAgICBbW01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlciBz
aGFyZWRdIHNldFdlYk5vdGlmaWNhdGlvbk9yaWdpbjooTlNTdHJpbmcgKiljZk9yaWdpbi5nZXQo
KSBwZXJtaXNzaW9uOlRSVUVdOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OmRlbnlXZWJOb3RpZmlj
YXRpb25QZXJtaXNzaW9uKEpTU3RyaW5nUmVmIGpzT3JpZ2luKQogewotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gY2ZPcmlnaW4oQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxs
b2NhdG9yRGVmYXVsdCwganNPcmlnaW4pKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNm
T3JpZ2luID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBqc09yaWdpbikpOwogICAgIEFTU0VSVChbW21haW5GcmFtZSB3ZWJWaWV3XSBfbm90aWZpY2F0
aW9uUHJvdmlkZXJdID09IFtNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgc2hhcmVkXSk7CiAg
ICAgW1tNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgc2hhcmVkXSBzZXRXZWJOb3RpZmljYXRp
b25PcmlnaW46KE5TU3RyaW5nICopY2ZPcmlnaW4uZ2V0KCkgcGVybWlzc2lvbjpGQUxTRV07CiB9
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvV2ViQXJjaGl2ZUR1bXBTdXBw
b3J0TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1dlYkFyY2hpdmVEdW1wU3VwcG9y
dE1hYy5tbQppbmRleCA5Zjk0ZWNiYzQwYzhmZDViZDQzZWIzYmVjNTMxZjk1YTFhNzdiN2YzLi5l
MDZlNzk3NTBlMzIwOTliMDJhYmJkOGMwMzE5NDczNjhiZTkxZGU3IDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9XZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMubW0KQEAgLTUy
LDcgKzUyLDcgQEAgdm9pZCBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUoQ0ZVUkxSZXNwb25zZVJl
ZiByZXNwb25zZSwgQ0ZTdHJpbmdSZWYgbWltZVR5cGUpOwogQ0ZVUkxSZXNwb25zZVJlZiBjcmVh
dGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShDRkRhdGFSZWYgcmVzcG9uc2VEYXRhKQog
ewogICAgIC8vIERlY29kZSBOU1VSTFJlc3BvbnNlCi0gICAgUmV0YWluUHRyPE5TS2V5ZWRVbmFy
Y2hpdmVyPiB1bmFyY2hpdmVyKEFkb3B0TlMsIFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGlu
aXRGb3JSZWFkaW5nV2l0aERhdGE6KE5TRGF0YSAqKXJlc3BvbnNlRGF0YV0pOworICAgIFJldGFp
blB0cjxOU0tleWVkVW5hcmNoaXZlcj4gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5h
cmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdXaXRoRGF0YTooTlNEYXRhICopcmVzcG9uc2VE
YXRhXSk7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBbdW5hcmNoaXZlci5nZXQoKSBk
ZWNvZGVPYmplY3RGb3JLZXk6QCJXZWJSZXNvdXJjZVJlc3BvbnNlIl07IC8vIFdlYlJlc291cmNl
UmVzcG9uc2VLZXkgaW4gV2ViUmVzb3VyY2UubQogICAgIFt1bmFyY2hpdmVyLmdldCgpIGZpbmlz
aERlY29kaW5nXTsKIApAQCAtNjIsNyArNjIsNyBAQCBDRlVSTFJlc3BvbnNlUmVmIGNyZWF0ZUNG
VVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKENGRGF0YVJlZiByZXNwb25zZURhdGEpCiAgICAg
TlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSA9IChOU0hUVFBVUkxSZXNwb25zZSAqKXJl
c3BvbnNlOwogCiAgICAgLy8gTlNVUkxSZXNwb25zZSBpcyBub3QgdG9sbC1mcmVlIGJyaWRnZWQg
dG8gQ0ZVUkxSZXNwb25zZS4KLSAgICBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gaHR0cE1l
c3NhZ2UoQWRvcHRDRiwgQ0ZIVFRQTWVzc2FnZUNyZWF0ZVJlc3BvbnNlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIFtodHRwUmVzcG9uc2Ugc3RhdHVzQ29kZV0sIDAsIGtDRkhUVFBWZXJzaW9uMV8xKSk7
CisgICAgUmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+IGh0dHBNZXNzYWdlID0gYWRvcHRDRihD
RkhUVFBNZXNzYWdlQ3JlYXRlUmVzcG9uc2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgW2h0dHBSZXNw
b25zZSBzdGF0dXNDb2RlXSwgMCwga0NGSFRUUFZlcnNpb24xXzEpKTsKIAogICAgIE5TRGljdGlv
bmFyeSAqaGVhZGVyRmllbGRzID0gW2h0dHBSZXNwb25zZSBhbGxIZWFkZXJGaWVsZHNdOwogICAg
IGZvciAoTlNTdHJpbmcgKmhlYWRlckZpZWxkIGluIFtoZWFkZXJGaWVsZHMga2V5RW51bWVyYXRv
cl0pCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvV29ya1F1ZXVlSXRlbU1h
Yy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Xb3JrUXVldWVJdGVtTWFjLm1tCmluZGV4
IGMyOGU5OTFlMmFhZDFkZWU2YTg1MGNiMzRlYWM5Njg3ZjU4NjkxMDMuLmYwYjZjMzNkYzg1YWU1
YmE4ZGM4NzlmZjJkZmUzODMzZDZhNDY1NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9Xb3JrUXVldWVJdGVtTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9Xb3JrUXVldWVJdGVtTWFjLm1tCkBAIC00MCw5ICs0MCw5IEBACiAKIGJvb2wgTG9hZEl0ZW06
Omludm9rZSgpIGNvbnN0CiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmxDRihBZG9w
dENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3VybC5nZXQo
KSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsQ0YgPSBhZG9wdENGKEpTU3RyaW5n
Q29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fdXJsLmdldCgpKSk7CiAgICAgTlNT
dHJpbmcgKnVybE5TID0gKE5TU3RyaW5nICopdXJsQ0YuZ2V0KCk7Ci0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiB0YXJnZXRDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBtX3RhcmdldC5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gdGFyZ2V0Q0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIG1fdGFyZ2V0LmdldCgpKSk7CiAgICAgTlNTdHJpbmcgKnRhcmdldE5TID0gKE5TU3Ry
aW5nICopdGFyZ2V0Q0YuZ2V0KCk7CiAKICAgICBXZWJGcmFtZSAqdGFyZ2V0RnJhbWU7CkBAIC01
NiwxMSArNTYsMTEgQEAgYm9vbCBMb2FkSXRlbTo6aW52b2tlKCkgY29uc3QKIAogYm9vbCBMb2Fk
SFRNTFN0cmluZ0l0ZW06Omludm9rZSgpIGNvbnN0CiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBjb250ZW50Q0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgbV9jb250ZW50LmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBi
YXNlVVJMQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgbV9iYXNlVVJMLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjb250ZW50
Q0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1f
Y29udGVudC5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYmFzZVVSTENGID0g
YWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2Jhc2VV
UkwuZ2V0KCkpKTsKIAogICAgIGlmIChtX3VucmVhY2hhYmxlVVJMKSB7Ci0gICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gdW5yZWFjaGFibGVVUkxDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlD
RlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3VucmVhY2hhYmxlVVJMLmdldCgpKSk7Cisg
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdW5yZWFjaGFibGVVUkxDRiA9IGFkb3B0Q0Yo
SlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV91bnJlYWNoYWJsZVVS
TC5nZXQoKSkpOwogICAgICAgICBbbWFpbkZyYW1lIGxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nOihO
U1N0cmluZyAqKWNvbnRlbnRDRi5nZXQoKSBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOihO
U1N0cmluZyAqKWJhc2VVUkxDRi5nZXQoKV0gZm9yVW5yZWFjaGFibGVVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6KE5TU3RyaW5nICopdW5yZWFjaGFibGVVUkxDRi5nZXQoKV1dOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC03Nyw3ICs3Nyw3IEBAIGJvb2wgUmVsb2FkSXRlbTo6aW52
b2tlKCkgY29uc3QKIAogYm9vbCBTY3JpcHRJdGVtOjppbnZva2UoKSBjb25zdAogewotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gc2NyaXB0Q0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9zY3JpcHQuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHNjcmlwdENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBtX3NjcmlwdC5nZXQoKSkpOwogICAgIE5TU3RyaW5nICpzY3JpcHRO
UyA9IChOU1N0cmluZyAqKXNjcmlwdENGLmdldCgpOwogICAgIFtbbWFpbkZyYW1lIHdlYlZpZXdd
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOnNjcmlwdE5TXTsKICAgICBy
ZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVu
ZGVyVHJlZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3Bw
CmluZGV4IDdlOTE2NzJmODcyOTg3NGY1NmJiZGFhZjNjZWY0ZWNjNjNjOWIzNjguLmViYTdkNjM2
MTdlNTUxOWZjMWVhYjhjMTM2NGUzOTU3YmI1MjUyNmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtMTM2LDE0ICsxMzYsMTQgQEAgYm9vbCBzZXRB
bHdheXNBY2NlcHRDb29raWVzKGJvb2wgYWx3YXlzQWNjZXB0Q29va2llcykKIAogc3RhdGljIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gc3Vic3RyaW5nRnJvbUluZGV4KENGU3RyaW5nUmVmIHN0cmlu
ZywgQ0ZJbmRleCBpbmRleCkKIHsKLSAgICByZXR1cm4gUmV0YWluUHRyPENGU3RyaW5nUmVmPihB
ZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhTdWJzdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
c3RyaW5nLCBDRlJhbmdlTWFrZShpbmRleCwgQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nKSAtIGlu
ZGV4KSkpOworICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aFN1YnN0cmluZyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHJpbmcsIENGUmFuZ2VNYWtlKGluZGV4LCBDRlN0cmluZ0dl
dExlbmd0aChzdHJpbmcpIC0gaW5kZXgpKSk7CiB9CiAKIHdzdHJpbmcgdXJsU3VpdGFibGVGb3JU
ZXN0UmVzdWx0KGNvbnN0IHdzdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBSZXRhaW5QdHI8Q0ZV
UkxSZWY+IHVybChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhCeXRlcyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4odXJsU3RyaW5nLmNfc3RyKCkpLCB1
cmxTdHJpbmcubGVuZ3RoKCkgKiBzaXplb2Yod3N0cmluZzo6dmFsdWVfdHlwZSksIGtDRlN0cmlu
Z0VuY29kaW5nVVRGMTYsIDApKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IGFkb3B0
Q0YoQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVSW50OCo+KHVybFN0cmluZy5jX3N0cigpKSwgdXJsU3RyaW5nLmxlbmd0aCgp
ICogc2l6ZW9mKHdzdHJpbmc6OnZhbHVlX3R5cGUpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjE2LCAw
KSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNjaGVtZShBZG9wdENGLCBDRlVSTENv
cHlTY2hlbWUodXJsLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzY2hlbWUg
PSBhZG9wdENGKENGVVJMQ29weVNjaGVtZSh1cmwuZ2V0KCkpKTsKICAgICBpZiAoc2NoZW1lICYm
IENGU3RyaW5nQ29tcGFyZShzY2hlbWUuZ2V0KCksIENGU1RSKCJmaWxlIiksIGtDRkNvbXBhcmVD
YXNlSW5zZW5zaXRpdmUpICE9IGtDRkNvbXBhcmVFcXVhbFRvKQogICAgICAgICByZXR1cm4gdXJs
U3RyaW5nOwogCkBAIC0xNjEsMTEgKzE2MSwxMSBAQCB3c3RyaW5nIHVybFN1aXRhYmxlRm9yVGVz
dFJlc3VsdChjb25zdCB3c3RyaW5nJiB1cmxTdHJpbmcpCiAgICAgaWYgKEZBSUxFRChyZXF1ZXN0
LT5VUkwocmVxdWVzdFVSTFN0cmluZy5HZXRBZGRyZXNzKCkpKSkKICAgICAgICAgcmV0dXJuIHVy
bFN0cmluZzsKIAotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcmVxdWVzdFVSTChBZG9wdENGLCBD
RlVSTENyZWF0ZVdpdGhCeXRlcyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0
PGNvbnN0IFVJbnQ4Kj4ocmVxdWVzdFVSTFN0cmluZy5HZXRCU1RSKCkpLCByZXF1ZXN0VVJMU3Ry
aW5nLmxlbmd0aCgpICogc2l6ZW9mKE9MRUNIQVIpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjE2LCAw
KSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBiYXNlVVJMKEFkb3B0Q0YsIENGVVJMQ3JlYXRl
Q29weURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVxdWVz
dFVSTC5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcmVxdWVzdFVSTCA9IGFkb3B0
Q0YoQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVSW50OCo+KHJlcXVlc3RVUkxTdHJpbmcuR2V0QlNUUigpKSwgcmVxdWVzdFVS
TFN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihPTEVDSEFSKSwga0NGU3RyaW5nRW5jb2RpbmdVVEYx
NiwgMCkpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYmFzZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxD
cmVhdGVDb3B5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBy
ZXF1ZXN0VVJMLmdldCgpKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJhc2VQYXRo
KEFkb3B0Q0YsIENGVVJMQ29weVBhdGgoYmFzZVVSTC5nZXQoKSkpOwotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gcGF0aChBZG9wdENGLCBDRlVSTENvcHlQYXRoKHVybC5nZXQoKSkpOworICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYmFzZVBhdGggPSBhZG9wdENGKENGVVJMQ29weVBhdGgo
YmFzZVVSTC5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0aCA9IGFkb3B0
Q0YoQ0ZVUkxDb3B5UGF0aCh1cmwuZ2V0KCkpKTsKIAogICAgIHJldHVybiBjZlN0cmluZ1JlZlRv
V1N0cmluZyhzdWJzdHJpbmdGcm9tSW5kZXgocGF0aC5nZXQoKSwgQ0ZTdHJpbmdHZXRMZW5ndGgo
YmFzZVBhdGguZ2V0KCkpKS5nZXQoKSk7CiB9CkBAIC0xNzUsOCArMTc1LDEzIEBAIHdzdHJpbmcg
bGFzdFBhdGhDb21wb25lbnQoY29uc3Qgd3N0cmluZyYgdXJsU3RyaW5nKQogICAgIGlmICh1cmxT
dHJpbmcuZW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHVybFN0cmluZzsKIAorPDw8PDw8PCBIRUFE
CiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoQnl0
ZXMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHVy
bFN0cmluZy5jX3N0cigpKSwgdXJsU3RyaW5nLmxlbmd0aCgpICogc2l6ZW9mKHdzdHJpbmc6OnZh
bHVlX3R5cGUpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjE2LCAwKSk7CiAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBsYXN0UGF0aENvbXBvbmVudChDRlVSTENvcHlMYXN0UGF0aENvbXBvbmVudCh1
cmwuZ2V0KCkpKTsKKz09PT09PT0KKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IGFkb3B0
Q0YoQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVSW50OCo+KHVybFN0cmluZy5jX3N0cigpKSwgdXJsU3RyaW5nLmxlbmd0aCgp
ICogc2l6ZW9mKHdzdHJpbmc6OnZhbHVlX3R5cGUpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjE2LCAw
KSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYXN0UGF0aENvbXBvbmVudCA9IGFkb3B0
Q0YoQ0ZVUkxDb3B5TGFzdFBhdGhDb21wb25lbnQodXJsLmdldCgpKSk7Cis+Pj4+Pj4+IDBkNjhh
NjcuLi4gVXNlIGFkb3B0Q0YgYW5kIGFkb3B0TlMgaW4gbW9yZSBwbGFjZXMsIHRlc3QgY29kZSBh
bmQgY29kZSBub3QgY29tcGlsZWQgb24gTWFjCiAKICAgICByZXR1cm4gY2ZTdHJpbmdSZWZUb1dT
dHJpbmcobGFzdFBhdGhDb21wb25lbnQuZ2V0KCkpOwogfQpAQCAtMTI3OCw3ICsxMjgzLDcgQEAg
UmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IHNoYXJlZENGVVJMQ2FjaGUoKQogCiAgICAgdHlwZWRl
ZiBDRlVSTENhY2hlUmVmICgqQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZVByb2NQdHIpKHZv
aWQpOwogICAgIGlmIChDRlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hlUHJvY1B0ciBjb3B5Q2Fj
aGUgPSByZWludGVycHJldF9jYXN0PENGVVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGVQcm9jUHRy
PihHZXRQcm9jQWRkcmVzcyhtb2R1bGUsICJDRlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hlIikp
KQotICAgICAgICByZXR1cm4gUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+KEFkb3B0Q0YsIGNvcHlD
YWNoZSgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0YoY29weUNhY2hlKCkpOwogCiAgICAgdHlw
ZWRlZiBDRlVSTENhY2hlUmVmICgqQ0ZVUkxDYWNoZVNoYXJlZFVSTENhY2hlUHJvY1B0cikodm9p
ZCk7CiAgICAgaWYgKENGVVJMQ2FjaGVTaGFyZWRVUkxDYWNoZVByb2NQdHIgc2hhcmVkQ2FjaGUg
PSByZWludGVycHJldF9jYXN0PENGVVJMQ2FjaGVTaGFyZWRVUkxDYWNoZVByb2NQdHI+KEdldFBy
b2NBZGRyZXNzKG1vZHVsZSwgIkNGVVJMQ2FjaGVTaGFyZWRVUkxDYWNoZSIpKSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9JbWFnZURpZmZDYWlyby5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vSW1hZ2VEaWZmQ2Fpcm8uY3BwCmluZGV4IGQxMGNjMTRjNmUwMWU1
NzA0ZThkNjEwNDgxYjM1YjgxZjNiMzdiNDkuLmQ1YTgxYjQ5NWVlZTg4ZDE0MTQ0YTQwYWYxMzg3
Y2ZhODhhNzA5MTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9JbWFnZURp
ZmZDYWlyby5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ltYWdlRGlmZkNhaXJv
LmNwcApAQCAtNzMsNyArNzMsNyBAQCBzdGF0aWMgY2Fpcm9fc3RhdHVzX3QgcmVhZEZyb21EYXRh
KHZvaWQqIGNsb3N1cmUsIHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkCiBzdGF0aWMgY2Fp
cm9fc3VyZmFjZV90KiBjcmVhdGVJbWFnZUZyb21TdGRpbihpbnQgYnl0ZXNSZW1haW5pbmcpCiB7
CiAgICAgdW5zaWduZWQgY2hhciBidWZmZXJbc19idWZmZXJTaXplXTsKLSAgICBSZXRhaW5QdHI8
Q0ZNdXRhYmxlRGF0YVJlZj4gZGF0YShBZG9wdENGLCBDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIGJ5
dGVzUmVtYWluaW5nKSk7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGRhdGEgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgYnl0ZXNSZW1haW5pbmcpKTsKIAogICAgIHdo
aWxlIChieXRlc1JlbWFpbmluZyA+IDApIHsKICAgICAgICAgc2l6ZV90IGJ5dGVzVG9SZWFkID0g
bWluKGJ5dGVzUmVtYWluaW5nLCBzX2J1ZmZlclNpemUpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIGlu
dCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAoZGlmZmVyZW5jZSA+IDAuMCkgewogICAgICAgICAgICAgICAgIGlmIChk
aWZmSW1hZ2UpIHsKLSAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFS
ZWY+IGltYWdlRGF0YShBZG9wdENGLCBDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKKyAgICAg
ICAgICAgICAgICAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGltYWdlRGF0YSA9IGFk
b3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAgICAgICAgICAgICAgICAgICAgIGNh
aXJvX3N1cmZhY2Vfd3JpdGVfdG9fcG5nX3N0cmVhbShkaWZmSW1hZ2UsIChjYWlyb193cml0ZV9m
dW5jX3Qpd3JpdGVUb0RhdGEsIGltYWdlRGF0YS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAg
IHByaW50ZigiQ29udGVudC1MZW5ndGg6ICVsdVxuIiwgQ0ZEYXRhR2V0TGVuZ3RoKGltYWdlRGF0
YS5nZXQoKSkpOwogICAgICAgICAgICAgICAgICAgICBmd3JpdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihp
bWFnZURhdGEuZ2V0KCkpLCAxLCBDRkRhdGFHZXRMZW5ndGgoaW1hZ2VEYXRhLmdldCgpKSwgc3Rk
b3V0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBw
b3J0V2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBwb3J0V2lu
LmNwcAppbmRleCAxMGNhNTE2M2Y5ZmY3OWU5YWM4ZDllZmYyOTM5ZjYzYTA2NDUwZjIxLi5mMjAy
NWM2NmIzMGJjZDg1ZWFhZThmYzUyMjdkZmUxMWEyNjFmNTViIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vUGl4ZWxEdW1wU3VwcG9ydFdpbi5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnRXaW4uY3BwCkBAIC04NSw3ICs4NSw3IEBA
IFBhc3NSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3
KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5jCiAgICAgbWFrZUFscGhhQ2hhbm5lbE9wYXF1ZShpbmZv
LmJtQml0cywgaW5mby5ibVdpZHRoLCBpbmZvLmJtSGVpZ2h0KTsKIAogI2lmIFVTRShDRykKLSAg
ICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlKEFkb3B0Q0YsIENHQ29sb3JT
cGFjZUNyZWF0ZURldmljZVJHQigpKTsKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBj
b2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CiAgICAg
Q0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUoaW5mby5ibUJpdHMs
IGluZm8uYm1XaWR0aCwgaW5mby5ibUhlaWdodCwgOCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uYm1XaWR0aEJ5dGVzLCBjb2xvclNwYWNlLmdl
dCgpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QgfCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGll
ZEZpcnN0KTsKICNlbGlmIFVTRShDQUlSTykgCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVz
dFJ1bm5lcldpbi5jcHAKaW5kZXggZDViOTgxMDcyNmQ4M2M1OGY4NDRkZTMxYzU2M2Q2NjgwNTZm
YjcwYS4uZjFhMmIyYjAzYTBmNWIyODMxNmNhMTM3YWVjMzI1YmZkYzk3Yjc3NSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcApAQCAtNjMzLDEzICs2MzMsMTMg
QEAgdm9pZCBUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVm
IGpzVVJMKQogICAgIGlmIChGQUlMRUQod2ViVmlldy0+cHJlZmVyZW5jZXMoJnByZWZlcmVuY2Vz
KSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3Ry
aW5nKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKDAsIGpzVVJMKSk7Ci0gICAgUmV0YWlu
UHRyPENGVVJMUmVmPiB1cmwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKDAsIHVybFN0
cmluZy5nZXQoKSwgMCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5nID0g
YWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZygwLCBqc1VSTCkpOworICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gdXJsID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhTdHJpbmcoMCwgdXJsU3RyaW5n
LmdldCgpLCAwKSk7CiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIE5v
dyBjb3B5IHRoZSBmaWxlIHN5c3RlbSBwYXRoLCBQT1NJWCBzdHlsZS4KLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHBhdGhDRihBZG9wdENGLCBDRlVSTENvcHlGaWxlU3lzdGVtUGF0aCh1cmwu
Z2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBwYXRoQ0YgPSBhZG9wdENGKENGVVJMQ29weUZpbGVTeXN0ZW1QYXRoKHVybC5nZXQoKSwga0NG
VVJMUE9TSVhQYXRoU3R5bGUpKTsKICAgICBpZiAoIXBhdGhDRikKICAgICAgICAgcmV0dXJuOwog
CkBAIC02OTcsNyArNjk3LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRWaWV3TW9kZU1lZGlhRmVh
dHVyZShKU1N0cmluZ1JlZiBtb2RlKQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFBlcnNpc3RlbnRV
c2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIGpzVVJMKQogewotICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5nKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKDAs
IGpzVVJMKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmxTdHJpbmcgPSBhZG9wdENG
KEpTU3RyaW5nQ29weUNGU3RyaW5nKDAsIGpzVVJMKSk7CiAgICAgOjpzZXRQZXJzaXN0ZW50VXNl
clN0eWxlU2hlZXRMb2NhdGlvbih1cmxTdHJpbmcuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0N1c3RvbVByb3RvY29sc1N5bmNYSFJUZXN0Lm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9DdXN0b21Qcm90b2NvbHNTeW5jWEhSVGVzdC5tbQpp
bmRleCAyMGJlOWQ5MzJkOTJhYWFkYzQ0MjYxMDdjYmU3MzkwM2ZmZDM3YWRkLi40NjFjZDc1YmRm
MzAxYmQ3ZGMyZmRkNjkwYWJkNzJkZWM4YjI1MDk5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL0N1c3RvbVByb3RvY29sc1N5bmNYSFJUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvQ3VzdG9tUHJvdG9jb2xzU3luY1hIUlRlc3QubW0KQEAgLTQ2LDE2
ICs0NiwxNiBAQCBURVNUKFdlYktpdDJDdXN0b21Qcm90b2NvbHNUZXN0LCBTeW5jWEhSKQogICAg
IFtOU1VSTFByb3RvY29sIHJlZ2lzdGVyQ2xhc3M6W1Rlc3RQcm90b2NvbCBjbGFzc11dOwogICAg
IFtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgcmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90
b2NvbDpbVGVzdFByb3RvY29sIHNjaGVtZV1dOwogCi0gICAgUmV0YWluUHRyPFdLUHJvY2Vzc0dy
b3VwPiBwcm9jZXNzR3JvdXAoQWRvcHROUywgW1tXS1Byb2Nlc3NHcm91cCBhbGxvY10gaW5pdF0p
OwotICAgIFJldGFpblB0cjxXS0Jyb3dzaW5nQ29udGV4dEdyb3VwPiBicm93c2luZ0NvbnRleHRH
cm91cChBZG9wdE5TLCBbW1dLQnJvd3NpbmdDb250ZXh0R3JvdXAgYWxsb2NdIGluaXRXaXRoSWRl
bnRpZmllcjpAIlRlc3RJZGVudGlmaWVyIl0pOworICAgIFJldGFpblB0cjxXS1Byb2Nlc3NHcm91
cD4gcHJvY2Vzc0dyb3VwID0gYWRvcHROUyhbW1dLUHJvY2Vzc0dyb3VwIGFsbG9jXSBpbml0XSk7
CisgICAgUmV0YWluUHRyPFdLQnJvd3NpbmdDb250ZXh0R3JvdXA+IGJyb3dzaW5nQ29udGV4dEdy
b3VwID0gYWRvcHROUyhbW1dLQnJvd3NpbmdDb250ZXh0R3JvdXAgYWxsb2NdIGluaXRXaXRoSWRl
bnRpZmllcjpAIlRlc3RJZGVudGlmaWVyIl0pOwogCiAgICAgLy8gQWxsb3cgZmlsZSBVUkxzIHRv
IGxvYWQgbm9uLWZpbGUgcmVzb3VyY2VzCiAgICAgV0tSZXRhaW5QdHI8V0tQcmVmZXJlbmNlc1Jl
Zj4gcHJlZmVyZW5jZXMoQWRvcHRXSywgV0tQcmVmZXJlbmNlc0NyZWF0ZSgpKTsKICAgICBXS1By
ZWZlcmVuY2VzU2V0VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzQWxsb3dlZChwcmVmZXJlbmNl
cy5nZXQoKSwgdHJ1ZSk7CiAgICAgV0tQYWdlR3JvdXBTZXRQcmVmZXJlbmNlcyhicm93c2luZ0Nv
bnRleHRHcm91cC5nZXQoKS5fcGFnZUdyb3VwUmVmLCBwcmVmZXJlbmNlcy5nZXQoKSk7CiAKLSAg
ICBSZXRhaW5QdHI8V0tWaWV3PiB3a1ZpZXcoQWRvcHROUywgW1tXS1ZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NH
cm91cC5nZXQoKSBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQo
KV0pOwotICAgICBSZXRhaW5QdHI8VGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZT4gZGVs
ZWdhdGUoQWRvcHROUywgW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBp
bml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNl
bmRlcikgeworICAgIFJldGFpblB0cjxXS1ZpZXc+IHdrVmlldyA9IGFkb3B0TlMoW1tXS1ZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dy
b3VwOnByb2Nlc3NHcm91cC5nZXQoKSBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRl
eHRHcm91cC5nZXQoKV0pOworICAgICBSZXRhaW5QdHI8VGVzdEJyb3dzaW5nQ29udGV4dExvYWRE
ZWxlZ2F0ZT4gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyICpzZW5kZXIpIHsKICAgICAgICAgIEVYUEVDVF9KU19FUSh3a1ZpZXcuZ2V0KCku
cGFnZVJlZiwgIndpbmRvdy5fdGVzdFJlc3VsdCIsICJQQVNTIik7CiAgICAgICAgICB0ZXN0Rmlu
aXNoZWQgPSB0cnVlOwogICAgIH1dKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvVGVzdFdlYktpdEFQSS9tYWMvSW5zdGFuY2VNZXRob2RTd2l6emxlci5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvVGVzdFdlYktpdEFQSS9tYWMvSW5zdGFuY2VNZXRob2RTd2l6
emxlci5tbQppbmRleCBmODY5MjcyZWE2ZmQ5NDk5YTlmNmM5NzgzZDhkMzAyNGI1YzYyNTdkLi45
NGJiN2VmOTcxNDczNDY1MjUxNzUwMDA5MTljZGI2NmEwMjAyNTliIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1Rlc3RXZWJLaXRBUEkvbWFjL0luc3RhbmNlTWV0aG9kU3dp
enpsZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9UZXN0V2ViS2l0QVBJL21h
Yy9JbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyB2b2lk
IHNldFZhbHVlMyhpZCBzZWxmLCBTRUwgX2NtZCwgaW50KiB2YWx1ZSkKIAogVEVTVChUZXN0V2Vi
S2l0QVBJLCBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyKQogewotICAgIFJldGFpblB0cjxTaW1wbGVP
YmplY3Q+IG9iamVjdChBZG9wdE5TLCBbW1NpbXBsZU9iamVjdCBhbGxvY10gaW5pdF0pOworICAg
IFJldGFpblB0cjxTaW1wbGVPYmplY3Q+IG9iamVjdCA9IGFkb3B0TlMoW1tTaW1wbGVPYmplY3Qg
YWxsb2NdIGluaXRdKTsKIAogICAgIGludCB2YWx1ZSA9IDA7CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2NmL1JldGFpblB0ckhhc2hpbmcuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvY2YvUmV0YWluUHRySGFzaGluZy5jcHAKaW5kZXggMGNk
MjhjOWJiMmI2YTU1M2MwNjAwNDIyMGI2NDRkYWMxNDExNzZlNy4uNmRkN2I2YTU2ZjcyZTJiOGRi
MjFkZWI3Mzk0MTE0MTRhNTE3ZjBmYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvY2YvUmV0YWluUHRySGFzaGluZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvY2YvUmV0YWluUHRySGFzaGluZy5jcHAKQEAgLTM4LDEzICszOCwxMyBAQCBU
RVNUKFJldGFpblB0ckhhc2hpbmcsIEhhc2hTZXQpCiB7CiAgICAgSGFzaFNldDxSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+ID4gc2V0OwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmb28oQWRv
cHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAiZm9v
Iiwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBm
b28gPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgImZvbyIsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOwogCiAgICAgRVhQRUNUX0ZBTFNFKHNl
dC5jb250YWlucyhmb28pKTsKICAgICBzZXQuYWRkKGZvbyk7CiAgICAgRVhQRUNUX1RSVUUoc2V0
LmNvbnRhaW5zKGZvbykpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmb28yKEFkb3B0
Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgImZvbyIs
IGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZm9v
MiA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAiZm9vIiwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KSk7CiAgICAgRVhQRUNUX0ZBTFNFKHNldC5j
b250YWlucyhmb28yKSk7CiAgICAgc2V0LmFkZChmb28yKTsKICAgICBFWFBFQ1RfVFJVRShzZXQu
Y29udGFpbnMoZm9vMikpOwpAQCAtNTcsMTMgKzU3LDEzIEBAIFRFU1QoUmV0YWluUHRySGFzaGlu
ZywgSGFzaE1hcEtleSkKIHsKICAgICBIYXNoTWFwPFJldGFpblB0cjxDRlN0cmluZ1JlZj4sIGlu
dD4gbWFwOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmb28oQWRvcHRDRiwgQ0ZTdHJp
bmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAiZm9vIiwga0NGU3RyaW5n
RW5jb2RpbmdVVEY4KSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmb28gPSBhZG9wdENG
KENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgImZvbyIsIGtD
RlN0cmluZ0VuY29kaW5nVVRGOCkpOwogCiAgICAgRVhQRUNUX0ZBTFNFKG1hcC5jb250YWlucyhm
b28pKTsKICAgICBtYXAuYWRkKGZvbywgMSk7CiAgICAgRVhQRUNUX0VRKDEsIG1hcC5nZXQoZm9v
KSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZvbzIoQWRvcHRDRiwgQ0ZTdHJpbmdD
cmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAiZm9vIiwga0NGU3RyaW5nRW5j
b2RpbmdVVEY4KSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmb28yID0gYWRvcHRDRihD
RlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsICJmb28iLCBrQ0ZT
dHJpbmdFbmNvZGluZ1VURjgpKTsKICAgICBFWFBFQ1RfRkFMU0UobWFwLmNvbnRhaW5zKGZvbzIp
KTsKICAgICBtYXAuYWRkKGZvbzIsIDIpOwogICAgIEVYUEVDVF9FUSgyLCBtYXAuZ2V0KGZvbzIp
KTsKQEAgLTc2LDEzICs3NiwxMyBAQCBURVNUKFJldGFpblB0ckhhc2hpbmcsIEhhc2hNYXBWYWx1
ZSkKIHsKICAgICBIYXNoTWFwPGludCwgUmV0YWluUHRyPENGU3RyaW5nUmVmPiA+IG1hcDsKIAot
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZm9vKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0
aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgImZvbyIsIGtDRlN0cmluZ0VuY29kaW5nVVRG
OCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZm9vID0gYWRvcHRDRihDRlN0cmluZ0Ny
ZWF0ZVdpdGhDU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsICJmb28iLCBrQ0ZTdHJpbmdFbmNv
ZGluZ1VURjgpKTsKIAogICAgIEVYUEVDVF9GQUxTRShtYXAuY29udGFpbnMoMSkpOwogICAgIG1h
cC5hZGQoMSwgZm9vKTsKICAgICBFWFBFQ1RfRVEoZm9vLCBtYXAuZ2V0KDEpKTsKIAotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gZm9vMihBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsICJmb28iLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZvbzIgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgImZvbyIsIGtDRlN0cmluZ0VuY29kaW5n
VVRGOCkpOwogICAgIEVYUEVDVF9GQUxTRShtYXAuY29udGFpbnMoMikpOwogICAgIG1hcC5hZGQo
MiwgZm9vMik7CiAgICAgRVhQRUNUX0VRKGZvbzIsIG1hcC5nZXQoMikpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZpbmRNYXRjaGVzLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZpbmRNYXRjaGVzLm1tCmluZGV4IDRiMDg5NzI0
ZGI2NGZlMjUwMDg1N2Q2NjE2NjcxMWYwN2U0ZmRmOTAuLmU1NzU1ZDgyMzQ2MzgyNjM1NWI0NDhl
MTJmYTA2NzZlZGE2OWJhNTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9GaW5kTWF0Y2hlcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvRmluZE1hdGNoZXMubW0KQEAgLTEyNyw4ICsxMjcsOCBAQCBURVNUKFdlYktpdDIsIEZp
bmRNYXRjaGVzKQogICAgIFdLUGFnZUZpbmRTdHJpbmdNYXRjaGVzKHdlYlZpZXcucGFnZSgpLCBm
aW5kU3RyaW5nLmdldCgpLCB0cnVlLCAxMDApOwogICAgIFV0aWw6OnJ1bigmZGlkQ2FsbEZpbmRT
dHJpbmdNYXRjaGVzKTsKIAotICAgIHdlYmtpdDFWaWV3LmFkb3B0TlMoW1tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwg
Z3JvdXBOYW1lOm5pbF0pOwotICAgIFJldGFpblB0cjxGaW5kTWF0Y2hlc1dLMUZyYW1lTG9hZERl
bGVnYXRlPiBmcmFtZUxvYWREZWxlZ2F0ZShBZG9wdE5TLCBbRmluZE1hdGNoZXNXSzFGcmFtZUxv
YWREZWxlZ2F0ZSBuZXddKTsKKyAgICB3ZWJraXQxVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpu
aWwgZ3JvdXBOYW1lOm5pbF0pOworICAgIFJldGFpblB0cjxGaW5kTWF0Y2hlc1dLMUZyYW1lTG9h
ZERlbGVnYXRlPiBmcmFtZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW0ZpbmRNYXRjaGVzV0sxRnJh
bWVMb2FkRGVsZWdhdGUgbmV3XSk7CiAKICAgICB3ZWJraXQxVmlldy5nZXQoKS5mcmFtZUxvYWRE
ZWxlZ2F0ZSA9IGZyYW1lTG9hZERlbGVnYXRlLmdldCgpOwogICAgIFt3ZWJraXQxVmlldy5nZXQo
KS5tYWluRnJhbWUgbG9hZEhUTUxTdHJpbmc6QCJUZXN0IHNlYXJjaC4gSGVsbG8gPHNwYW4gaWQ9
XCJ0YXJnZXRcIj5IZWxsbzwvc3Bhbj4gSGVsbG8hIiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiYWJvdXQ6YmxhbmsiXV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvV2ViQXJjaGl2ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvV2ViQXJjaGl2ZS5jcHAKaW5kZXggN2RlYTMxNTU0MmU0ZTZjOTI2ZjE1MzRjZjU1ZWFh
OTZiNzMyNjY2MC4uMGU2Yjk4NWZiNmRhNTg0ZWE2ZGI1MzkzMGE5NzhkOWVlYjliYjllOSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYkFyY2hpdmUuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJBcmNoaXZlLmNwcApA
QCAtNDgsOCArNDgsOCBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZwogICAgIC8vIERvIGJhc2lj
IHNhbml0eSBjaGVja3Mgb24gdGhlIHJldHVybmVkIHdlYmFyY2hpdmUuIFdlIGhhdmUgbW9yZSB0
aG9yb3VnaCBjaGVja3MgaW4gTGF5b3V0VGVzdHMuCiAgICAgc2l6ZV90IHNpemUgPSBXS0RhdGFH
ZXRTaXplKHJlY2VpdmVkRGF0YSk7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYnl0ZXMgPSBX
S0RhdGFHZXRCeXRlcyhyZWNlaXZlZERhdGEpOwotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRh
dGEoQWRvcHRDRiwgQ0ZEYXRhQ3JlYXRlKDAsIGJ5dGVzLCBzaXplKSk7Ci0gICAgUmV0YWluUHRy
PENGUHJvcGVydHlMaXN0UmVmPiBwcm9wZXJ0eUxpc3QoQWRvcHRDRiwgQ0ZQcm9wZXJ0eUxpc3RD
cmVhdGVXaXRoRGF0YSgwLCBkYXRhLmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RJbW11dGFibGUsIDAs
IDApKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVh
dGUoMCwgYnl0ZXMsIHNpemUpKTsKKyAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IHBy
b3BlcnR5TGlzdCA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YSgwLCBkYXRh
LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RJbW11dGFibGUsIDAsIDApKTsKICAgICBFWFBFQ1RfVFJV
RShwcm9wZXJ0eUxpc3QpOwogICAgIAogICAgIC8vIEl0IHNob3VsZCBiZSBhIGRpY3Rpb25hcnku
CkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnCiAgICAgRVhQRUNUX1RS
VUUocmVzb3VyY2VEYXRhKTsKICAgICBFWFBFQ1RfRVEoQ0ZEYXRhR2V0VHlwZUlEKCksIENGR2V0
VHlwZUlEKHJlc291cmNlRGF0YSkpOwogICAgIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
c3RyaW5nRGF0YShBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZUZyb21FeHRlcm5hbFJlcHJlc2VudGF0
aW9uKDAsIChDRkRhdGFSZWYpcmVzb3VyY2VEYXRhLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZ0RhdGEgPSBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlRnJvbUV4dGVybmFsUmVwcmVzZW50YXRpb24oMCwgKENGRGF0YVJlZilyZXNvdXJjZURh
dGEsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOwogICAgIEVYUEVDVF9UUlVFKHN0cmluZ0RhdGEp
OwogICAgIAogICAgIC8vIEl0IHNob3VsZCBjb250YWluIHRoZSBzdHJpbmcgIlNpbXBsZSBIVE1M
IGZpbGUuIiBpbiBpdC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9tYWMvR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL21hYy9HZXRCYWNraW5nU2NhbGVGYWN0b3IubW0KaW5kZXggNGFmZDcyZmEy
ZmVjYTQ2ZTY0ZTBiYjdiN2M1N2ZmZjBlNjBlZGZkMC4uZWE3NzA1MTlhMzAwY2M0Njc3NDgyZDJl
Njg4MjU3MDNhMjQzZjk3YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL21hYy9HZXRCYWNraW5nU2NhbGVGYWN0b3IubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL21hYy9HZXRCYWNraW5nU2NhbGVGYWN0b3IubW0KQEAgLTU1LDcg
KzU1LDcgQEAgc3RhdGljIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVm
IGNvbnRleHQpCiAKIHN0YXRpYyBSZXRhaW5QdHI8U3ludGhldGljQmFja2luZ1NjYWxlRmFjdG9y
V2luZG93PiBjcmVhdGVXaW5kb3coKQogewotICAgIFJldGFpblB0cjxTeW50aGV0aWNCYWNraW5n
U2NhbGVGYWN0b3JXaW5kb3c+IHdpbmRvdyhBZG9wdE5TLCBbW1N5bnRoZXRpY0JhY2tpbmdTY2Fs
ZUZhY3RvcldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFj
a2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXSk7CisgICAgUmV0YWluUHRyPFN5bnRoZXRpY0Jh
Y2tpbmdTY2FsZUZhY3RvcldpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW1N5bnRoZXRpY0JhY2tp
bmdTY2FsZUZhY3RvcldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5n
Ok5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXSk7CiAgICAgW3dpbmRvdy5nZXQoKSBz
ZXRSZWxlYXNlZFdoZW5DbG9zZWQ6Tk9dOwogICAgIHJldHVybiB3aW5kb3c7CiB9CkBAIC02NCw3
ICs2NCw3IEBAIFRFU1QoV2ViS2l0MiwgR2V0QmFja2luZ1NjYWxlRmFjdG9yKQogewogICAgIFdL
UmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29u
dGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiR2V0QmFja2luZ1NjYWxlRmFjdG9yVGVzdCIpKTsK
ICAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpKTsKLSAgICBSZXRhaW5Q
dHI8V0tWaWV3PiB2aWV3KEFkb3B0TlMsIFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbnRleHRSZWY6Y29udGV4dC5nZXQoKSBwYWdlR3Jv
dXBSZWY6MF0pOworICAgIFJldGFpblB0cjxXS1ZpZXc+IHZpZXcgPSBhZG9wdE5TKFtbV0tWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbnRleHRS
ZWY6Y29udGV4dC5nZXQoKSBwYWdlR3JvdXBSZWY6MF0pOwogCiAgICAgUmV0YWluUHRyPFN5bnRo
ZXRpY0JhY2tpbmdTY2FsZUZhY3RvcldpbmRvdz4gd2luZG93MSA9IGNyZWF0ZVdpbmRvdygpOwog
ICAgIFt3aW5kb3cxLmdldCgpIHNldEJhY2tpbmdTY2FsZUZhY3RvcjoxXTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93aW4vRG9Ob3RDb3B5QU51bGxDRlVS
TFJlc3BvbnNlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93aW4vRG9O
b3RDb3B5QU51bGxDRlVSTFJlc3BvbnNlLmNwcAppbmRleCA4YmQwYzU2NzgwZWZkMDgyY2Y1ODYy
YjFmYjlhYmNiM2RlNWMzNmYyLi40NGE1YjMwZDBhMzM0OGFlMzIxNDkyN2NjM2ZkZDQ1NGIzMjY4
ZDdhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvd2luL0Rv
Tm90Q29weUFOdWxsQ0ZVUkxSZXNwb25zZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL3dpbi9Eb05vdENvcHlBTnVsbENGVVJMUmVzcG9uc2UuY3BwCkBAIC0zNCw3
ICszNCw3IEBAIFRFU1QoV2ViS2l0MiwgRG9Ob3RDb3B5QU51bGxDRlVSTFJlc3BvbnNlKQogewog
ICAgIC8vIE5laXRoZXIgb2YgdGhlc2UgY2FsbHMgc2hvdWxkIGNhdXNlIGEgY3Jhc2guCiAgICAg
V0tSZXRhaW5QdHI8V0tVUkxSZXNwb25zZVJlZj4gbnVsbFdLUmVzcG9uc2UoQWRvcHRXSywgV0tV
UkxSZXNwb25zZUNyZWF0ZVdpdGhDRlVSTFJlc3BvbnNlKDApKTsKLSAgICBSZXRhaW5QdHI8Q0ZV
UkxSZXNwb25zZVJlZj4gbnVsbENGUmVzcG9uc2UoQWRvcHRDRiwgV0tVUkxSZXNwb25zZUNvcHlD
RlVSTFJlc3BvbnNlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxXS1Jlc3BvbnNlLmdldCgpKSk7
CisgICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IG51bGxDRlJlc3BvbnNlID0gYWRvcHRD
RihXS1VSTFJlc3BvbnNlQ29weUNGVVJMUmVzcG9uc2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVs
bFdLUmVzcG9uc2UuZ2V0KCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQWNjZXB0c0ZpcnN0TW91
c2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9BY2NlcHRzRmlyc3RNb3VzZS5t
bQppbmRleCBiYzJmNzg2Zjg3ZDE3MDgwYmUwNTc5MTRjOTEwMzg0ZmZlN2YxNThiLi5kZWM3ODg4
MDRmNjViNDE2NjFlOWU5ZDBmM2ZmMGQ2YWZlZTQ3YjIyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9BY2NlcHRzRmlyc3RNb3VzZS5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9BY2NlcHRzRmlyc3RNb3VzZS5tbQpAQCAtNDcsNyArNDcsNyBA
QCBwdWJsaWM6CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlldz4KIHZvaWQgQWNjZXB0c0ZpcnN0TW91
c2U6OnJ1blRlc3QoVmlldyB2aWV3KQogewotICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93
KEFkb3B0TlMsIFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6dmlldy5mcmFt
ZSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3Jl
QnVmZmVyZWQgZGVmZXI6WUVTXSk7CisgICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBh
ZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6dmlldy5mcmFtZSBz
dHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVm
ZmVyZWQgZGVmZXI6WUVTXSk7CiAgICAgW1t3aW5kb3cuZ2V0KCkgY29udGVudFZpZXddIGFkZFN1
YnZpZXc6dmlld107CiAKICAgICBDR0Zsb2F0IHZpZXdIZWlnaHQgPSB2aWV3LmJvdW5kcy5zaXpl
LmhlaWdodDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0F0dHJp
YnV0ZWRTdHJpbmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9BdHRyaWJ1dGVk
U3RyaW5nLm1tCmluZGV4IDE4Y2NlOWMyZDFiMTY2YzIzZWNmMTc4MDFlNzE3NGZmZGQ5MzhiMzMu
LjYzODZjYWQ1ZjY1MjY1MmQ4NjY5MDIyN2UxNDQwZWQ2YTk3MWZjYTcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0F0dHJpYnV0ZWRTdHJpbmcubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQXR0cmlidXRlZFN0cmluZy5tbQpAQCAtNTIsOCAr
NTIsOCBAQCBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQogCiBURVNUKFdlYktpdDEsIEF0dHJpYnV0
ZWRTdHJpbmdUZXN0KQogewotICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3KEFkb3B0TlMs
IFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAw
KSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKLSAgICBSZXRhaW5QdHI8QXR0cmlidXRl
ZFN0cmluZ1Rlc3Q+IHRlc3RDb250cm9sbGVyKEFkb3B0TlMsIFtBdHRyaWJ1dGVkU3RyaW5nVGVz
dCBuZXddKTsKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1l
TmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOworICAgIFJldGFpblB0cjxBdHRyaWJ1dGVkU3RyaW5n
VGVzdD4gdGVzdENvbnRyb2xsZXIgPSBhZG9wdE5TKFtBdHRyaWJ1dGVkU3RyaW5nVGVzdCBuZXdd
KTsKICAgICAKICAgICB3ZWJWaWV3LmdldCgpLmZyYW1lTG9hZERlbGVnYXRlID0gdGVzdENvbnRy
b2xsZXIuZ2V0KCk7CiAgICAgW1t3ZWJWaWV3LmdldCgpIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAiYXR0cmlidXRlZFN0cmluZ0N1c3RvbUZvbnQiIHdpdGhFeHRlbnNpb246QCJo
dG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9CYWNrRm9yd2FyZExpc3QubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9CYWNrRm9yd2FyZExpc3QubW0KaW5kZXggMDk4
NDUzZDE4YTY4ODNlMTAzZjUxNzU5YmVmMmUxYzgyZGQyMzRhNS4uODJkZGIzODMwZmQ4YTFlMzNk
MDUyYzYyYzBhYjJhNmZlYmRjNDcxNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvQmFja0ZvcndhcmRMaXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL0JhY2tGb3J3YXJkTGlzdC5tbQpAQCAtNTQsOCArNTQsOCBAQCBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CiAKIFRFU1QoV2ViS2l0MSwgUmVsb2FkQmFja0ZvcndhcmQpCiB7Ci0gICAg
UmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcoQWRvcHROUywgW1tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBO
YW1lOm5pbF0pOwotICAgIFJldGFpblB0cjxCYWNrRm9yd2FyZExpc3RUZXN0PiB0ZXN0Q29udHJv
bGxlcihBZG9wdE5TLCBbQmFja0ZvcndhcmRMaXN0VGVzdCBuZXddKTsKKyAgICBSZXRhaW5QdHI8
V2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0p
OworICAgIFJldGFpblB0cjxCYWNrRm9yd2FyZExpc3RUZXN0PiB0ZXN0Q29udHJvbGxlciA9IGFk
b3B0TlMoW0JhY2tGb3J3YXJkTGlzdFRlc3QgbmV3XSk7CiAgICAgd2ViVmlldy5nZXQoKS5mcmFt
ZUxvYWREZWxlZ2F0ZSA9IHRlc3RDb250cm9sbGVyLmdldCgpOwogICAgIFtbd2ViVmlldy5nZXQo
KSBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZG9lcy1ub3QtZXhpc3QuZXhhbXBsZSJdXV07CiAg
ICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL0NhbmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9DYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERl
bGVnYXRlLm1tCmluZGV4IDM3MjllYjUzY2EzZmMwNzdmYWRjNzcwOWNiMTQ4OWVkM2RkMmFkZWUu
LjlhMTlmOTM2YzBlNzdkMjFkMTY4NzYxMTVjZGQzMTRmMDViN2E5MzEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NhbmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVs
ZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ2FuY2VsTG9hZEZy
b21SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQpAQCAtNjQsMTEgKzY0LDExIEBAIFRFU1QoV2ViS2l0
MSwgQ2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZSkKIHsKICAgICBOU0F1dG9yZWxl
YXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwogCi0gICAg
UmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcoQWRvcHROUywgW1tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBO
YW1lOm5pbF0pOworICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJh
bWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CiAKLSAgICBSZXRhaW5QdHI8Q2FuY2VsTG9hZEZy
b21SZXNvdXJjZUxvYWREZWxlZ2F0ZT4gcmVzb3VyY2VMb2FkRGVsZWdhdGUoQWRvcHROUywgW1tD
YW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgUmV0
YWluUHRyPENhbmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGU+IHJlc291cmNlTG9hZERl
bGVnYXRlID0gYWRvcHROUyhbW0NhbmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKICAgICB3ZWJWaWV3LmdldCgpLnJlc291cmNlTG9hZERlbGVnYXRlID0gcmVz
b3VyY2VMb2FkRGVsZWdhdGUuZ2V0KCk7Ci0gICAgUmV0YWluUHRyPENhbmNlbExvYWRGcm9tUmVz
b3VyY2VMb2FkRGVsZWdhdGVGcmFtZUxvYWREZWxlZ2F0ZT4gZnJhbWVMb2FkRGVsZWdhdGUoQWRv
cHROUywgW1tDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlRnJhbWVMb2FkRGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8Q2FuY2VsTG9hZEZyb21SZXNvdXJjZUxv
YWREZWxlZ2F0ZUZyYW1lTG9hZERlbGVnYXRlPiBmcmFtZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlRnJhbWVMb2FkRGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKICAgICB3ZWJWaWV3LmdldCgpLmZyYW1lTG9hZERlbGVnYXRlID0gZnJhbWVM
b2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAgICBbW3dlYlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBsb2Fk
UmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXV1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGV4
dE1lbnVDYW5Db3B5VVJMLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGV4
dE1lbnVDYW5Db3B5VVJMLm1tCmluZGV4IDQwYWMzNzdlMWNkZDk2NTBiODFiYjE4NTFkYzM0ZWMw
Yjc5ZDJhN2IuLmY3OTUzNWY2NGY4NGU2ZDdjOTZhM2NmNGU4NTI2NGFhZjEwMDAxNzQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRleHRNZW51Q2FuQ29weVVS
TC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZXh0TWVudUNhbkNv
cHlVUkwubW0KQEAgLTg4LDkgKzg4LDkgQEAgc3RhdGljIHZvaWQgY29udGV4dE1lbnVDb3B5TGlu
ayhXZWJWaWV3KiB3ZWJWaWV3LCBpbnQgaXRlbUluZGV4KQogCiBURVNUKFdlYktpdDEsIENvbnRl
eHRNZW51Q2FuQ29weVVSTCkKIHsKLSAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyhBZG9w
dE5TLCBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLDAsODAwLDYw
MCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7Ci0gICAgUmV0YWluUHRyPE5TV2luZG93
PiB3aW5kb3coQWRvcHROUywgW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpO
U01ha2VSZWN0KDEwMCwgMTAwLCA4MDAsIDYwMCkgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRv
d01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllFU10pOwotICAgIFJl
dGFpblB0cjxDb250ZXh0TWVudUNhbkNvcHlVUkxEZWxlZ2F0ZT4gZGVsZWdhdGUoQWRvcHROUywg
W1tDb250ZXh0TWVudUNhbkNvcHlVUkxEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFJldGFp
blB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLDAsODAwLDYwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmls
XSk7CisgICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cg
YWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNNYWtlUmVjdCgxMDAsIDEwMCwgODAwLCA2MDAp
IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVC
dWZmZXJlZCBkZWZlcjpZRVNdKTsKKyAgICBSZXRhaW5QdHI8Q29udGV4dE1lbnVDYW5Db3B5VVJM
RGVsZWdhdGU+IGRlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRleHRNZW51Q2FuQ29weVVSTERlbGVn
YXRlIGFsbG9jXSBpbml0XSk7CiAKICAgICBbd2luZG93LmdldCgpLmNvbnRlbnRWaWV3IGFkZFN1
YnZpZXc6d2ViVmlldy5nZXQoKV07CiAgICAgd2ViVmlldy5nZXQoKS5mcmFtZUxvYWREZWxlZ2F0
ZSA9IGRlbGVnYXRlLmdldCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvRE9NSFRNTFRhYmxlQ2VsbENlbGxBYm92ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL0RPTUhUTUxUYWJsZUNlbGxDZWxsQWJvdmUubW0KaW5kZXggZDljMjRhNzNmMjhk
YTBmZTA2ZThhMzkwYmJmYzliZDcxNjc5OTcxZS4uMmM4Y2EzOTg2NThlMTIwNTYyMTk0NWIyMDY4
YWMyNmJkMGQ0NjZlZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
RE9NSFRNTFRhYmxlQ2VsbENlbGxBYm92ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9ET01IVE1MVGFibGVDZWxsQ2VsbEFib3ZlLm1tCkBAIC01Niw4ICs1Niw4IEBAIHN0
YXRpYyB2b2lkIGV4cGVjdENlbGxBYm92ZUNlbGwoRE9NRG9jdW1lbnQgKmRvY3VtZW50LCBOU1N0
cmluZyAqY2VsbElELCBOU1N0cmluCiAKIFRFU1QoV2ViS2l0MSwgSFRNTFRhYmxlQ2VsbEVsZW1l
bnRDZWxsQWJvdmUpCiB7Ci0gICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcoQWRvcHROUywg
W1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDAp
IGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwotICAgIFJldGFpblB0cjxIVE1MVGFibGVD
ZWxsRWxlbWVudENlbGxBYm92ZVRlc3Q+IHRlc3RDb250cm9sbGVyKEFkb3B0TlMsIFtIVE1MVGFi
bGVDZWxsRWxlbWVudENlbGxBYm92ZVRlc3QgbmV3XSk7CisgICAgUmV0YWluUHRyPFdlYlZpZXc+
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKKyAgICBS
ZXRhaW5QdHI8SFRNTFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmVUZXN0PiB0ZXN0Q29udHJvbGxl
ciA9IGFkb3B0TlMoW0hUTUxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlVGVzdCBuZXddKTsKIAog
ICAgIHdlYlZpZXcuZ2V0KCkuZnJhbWVMb2FkRGVsZWdhdGUgPSB0ZXN0Q29udHJvbGxlci5nZXQo
KTsKICAgICBbW3dlYlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RPTVJhbmdlT2ZTdHJpbmcubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9ET01SYW5nZU9mU3RyaW5nLm1tCmluZGV4IDFlODA4MDUz
OWRmYWMzNzM1N2Y0ZWU5Mjk4MjQ0OTBkYWRmODFmZWIuLmE0NDg1MTc4ZDE3M2JkZTlhODViNTlj
OTI1MDQxOWMxZWRhNTM3ZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL0RPTVJhbmdlT2ZTdHJpbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvRE9NUmFuZ2VPZlN0cmluZy5tbQpAQCAtNDgsOCArNDgsOCBAQCBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CiAKIFRFU1QoV2ViS2l0MSwgRE9NUmFuZ2VPZlN0cmluZykKIHsKLSAgICBSZXRh
aW5QdHI8V2ViVmlldz4gd2ViVmlldyhBZG9wdE5TLCBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNaZXJvUmVjdCBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKLSAgICBSZXRh
aW5QdHI8RE9NUmFuZ2VPZlN0cmluZ0ZyYW1lTG9hZERlbGVnYXRlPiBmcmFtZUxvYWREZWxlZ2F0
ZShBZG9wdE5TLCBbRE9NUmFuZ2VPZlN0cmluZ0ZyYW1lTG9hZERlbGVnYXRlIG5ld10pOworICAg
IFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKKyAg
ICBSZXRhaW5QdHI8RE9NUmFuZ2VPZlN0cmluZ0ZyYW1lTG9hZERlbGVnYXRlPiBmcmFtZUxvYWRE
ZWxlZ2F0ZSA9IGFkb3B0TlMoW0RPTVJhbmdlT2ZTdHJpbmdGcmFtZUxvYWREZWxlZ2F0ZSBuZXdd
KTsKIAogICAgIHdlYlZpZXcuZ2V0KCkuZnJhbWVMb2FkRGVsZWdhdGUgPSBmcmFtZUxvYWREZWxl
Z2F0ZS5nZXQoKTsKICAgICBbW3dlYlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJET01SYW5nZU9mU3RyaW5nIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwpAQCAtNzQsNyArNzQsNyBAQCBU
RVNUKFdlYktpdDEsIERPTVJhbmdlT2ZTdHJpbmcpCiAgICAgcmVzdWx0UmFuZ2UgPSBbd2ViVmll
dy5nZXQoKSBET01SYW5nZU9mU3RyaW5nOkAibiIgcmVsYXRpdmVUbzpuZWVkbGVSYW5nZSBvcHRp
b25zOldlYkZpbmRPcHRpb25zU3RhcnRJblNlbGVjdGlvbl07CiAgICAgRVhQRUNUX0VRKDI4LCBy
ZXN1bHRSYW5nZS5zdGFydE9mZnNldCk7CiAKLSAgICBSZXRhaW5QdHI8V2ViVmlldz4gb3RoZXJX
ZWJWaWV3KEFkb3B0TlMsIFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0
IGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOworICAgIFJldGFpblB0cjxXZWJWaWV3PiBv
dGhlcldlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1pl
cm9SZWN0IGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwogICAgIERPTVJhbmdlICpmb3Jl
aWduUmFuZ2UgPSBbW1tvdGhlcldlYlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBET01Eb2N1bWVudF0g
Y3JlYXRlUmFuZ2VdOwogICAgIHJlc3VsdFJhbmdlID0gW3dlYlZpZXcuZ2V0KCkgRE9NUmFuZ2VP
ZlN0cmluZzpAIm5lZWRsZSIgcmVsYXRpdmVUbzpmb3JlaWduUmFuZ2Ugb3B0aW9uczowXTsKICAg
ICBFWFBFQ1RfRVEobmlsLCByZXN1bHRSYW5nZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9EZXZpY2VTY2FsZUZhY3RvckluRGFzaGJvYXJkUmVnaW9ucy5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RldmljZVNjYWxlRmFjdG9ySW5EYXNoYm9h
cmRSZWdpb25zLm1tCmluZGV4IGYyMDM1NjQyOWE2MGI3NzZjNGQwMGNjMWM2NTczMjA4OWNkNzY1
OTMuLjY4ZWNiZjgxOWRlOTcwZTU1YWE4ODA3MDkwMzYzZDNmY2I4NDliMmMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RldmljZVNjYWxlRmFjdG9ySW5EYXNoYm9h
cmRSZWdpb25zLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RldmljZVNj
YWxlRmFjdG9ySW5EYXNoYm9hcmRSZWdpb25zLm1tCkBAIC01MywxMiArNTMsMTIgQEAgbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewogVEVTVChXZWJLaXQxLCBEZXZpY2VTY2FsZUZhY3RvckluRGFz
aGJvYXJkUmVnaW9ucykKIHsKICAgICBOU1JlY3Qgdmlld0ZyYW1lID0gTlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCk7Ci0gICAgUmV0YWluUHRyPFN5bnRoZXRpY0JhY2tpbmdTY2FsZUZhY3Rvcldp
bmRvdz4gd2luZG93KEFkb3B0TlMsIFtbU3ludGhldGljQmFja2luZ1NjYWxlRmFjdG9yV2luZG93
IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OnZpZXdGcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJs
ZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXSk7
CisgICAgUmV0YWluUHRyPFN5bnRoZXRpY0JhY2tpbmdTY2FsZUZhY3RvcldpbmRvdz4gd2luZG93
ID0gYWRvcHROUyhbW1N5bnRoZXRpY0JhY2tpbmdTY2FsZUZhY3RvcldpbmRvdyBhbGxvY10gaW5p
dFdpdGhDb250ZW50UmVjdDp2aWV3RnJhbWUgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01h
c2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllFU10pOwogICAgIFt3aW5k
b3cuZ2V0KCkgc2V0UmVsZWFzZWRXaGVuQ2xvc2VkOk5PXTsKICAgICBbd2luZG93LmdldCgpIHNl
dEJhY2tpbmdTY2FsZUZhY3RvcjoyXTsKIAotICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3
KEFkb3B0TlMsIFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTp2aWV3RnJhbWUgZnJhbWVO
YW1lOm5pbCBncm91cE5hbWU6bmlsXSk7Ci0gICAgUmV0YWluUHRyPERldmljZVNjYWxlRmFjdG9y
SW5EYXNoYm9hcmRSZWdpb25zVUlEZWxlZ2F0ZT4gdWlEZWxlZ2F0ZShBZG9wdE5TLCBbRGV2aWNl
U2NhbGVGYWN0b3JJbkRhc2hib2FyZFJlZ2lvbnNVSURlbGVnYXRlIG5ld10pOworICAgIFJldGFp
blB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6dmlld0ZyYW1lIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOworICAgIFJldGFp
blB0cjxEZXZpY2VTY2FsZUZhY3RvckluRGFzaGJvYXJkUmVnaW9uc1VJRGVsZWdhdGU+IHVpRGVs
ZWdhdGUgPSBhZG9wdE5TKFtEZXZpY2VTY2FsZUZhY3RvckluRGFzaGJvYXJkUmVnaW9uc1VJRGVs
ZWdhdGUgbmV3XSk7CiAgICAgd2ViVmlldy5nZXQoKS5VSURlbGVnYXRlID0gdWlEZWxlZ2F0ZS5n
ZXQoKTsKICAgICBbd2luZG93LmdldCgpLmNvbnRlbnRWaWV3IGFkZFN1YnZpZXc6d2ViVmlldy5n
ZXQoKV07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Rldmlj
ZVNjYWxlRmFjdG9yT25CYWNrLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRGV2
aWNlU2NhbGVGYWN0b3JPbkJhY2subW0KaW5kZXggMTU0YjhjMzJjMGQwNjBkNmNlZGI3NDE1NjBl
MmRlZWNlNzEzMDQzNy4uOGM0NTQyODJhYTNhYzYxODA5MzBkZWU5MTMwOTUxMTQ3ZjEwOTQ5NyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRGV2aWNlU2NhbGVGYWN0
b3JPbkJhY2subW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRGV2aWNlU2Nh
bGVGYWN0b3JPbkJhY2subW0KQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiBSZXRhaW5QdHI8
U3ludGhldGljQmFja2luZ1NjYWxlRmFjdG9yV2luZG93PiBEZXZpY2VTY2FsZUZhY3Rvck9uQmFj
azo6Y3JlYXRlV2luZG93KCkKIHsKLSAgICBSZXRhaW5QdHI8U3ludGhldGljQmFja2luZ1NjYWxl
RmFjdG9yV2luZG93PiB3aW5kb3coQWRvcHROUywgW1tTeW50aGV0aWNCYWNraW5nU2NhbGVGYWN0
b3JXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6dmlld0ZyYW1lIHN0eWxlTWFzazpO
U0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZl
cjpZRVNdKTsKKyAgICBSZXRhaW5QdHI8U3ludGhldGljQmFja2luZ1NjYWxlRmFjdG9yV2luZG93
PiB3aW5kb3cgPSBhZG9wdE5TKFtbU3ludGhldGljQmFja2luZ1NjYWxlRmFjdG9yV2luZG93IGFs
bG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OnZpZXdGcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNz
V2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXSk7CiAg
ICAgW3dpbmRvdy5nZXQoKSBzZXRSZWxlYXNlZFdoZW5DbG9zZWQ6Tk9dOwogICAgIHJldHVybiB3
aW5kb3c7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9EeW5h
bWljRGV2aWNlU2NhbGVGYWN0b3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9E
eW5hbWljRGV2aWNlU2NhbGVGYWN0b3IubW0KaW5kZXggZDBlYmQ1MTc3Yzg1ZDYyZWViYzE0NzY2
MjZlZjhjMDgyYmIwZTFmNC4uNjFhMWVmZWQ3OTczM2M1ODIyMTA5NGY2NTJiYWYzNTY3MjUxMzRk
OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRHluYW1pY0Rldmlj
ZVNjYWxlRmFjdG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0R5bmFt
aWNEZXZpY2VTY2FsZUZhY3Rvci5tbQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKIFJldGFp
blB0cjxTeW50aGV0aWNCYWNraW5nU2NhbGVGYWN0b3JXaW5kb3c+IER5bmFtaWNEZXZpY2VTY2Fs
ZUZhY3Rvcjo6Y3JlYXRlV2luZG93KCkKIHsKLSAgICBSZXRhaW5QdHI8U3ludGhldGljQmFja2lu
Z1NjYWxlRmFjdG9yV2luZG93PiB3aW5kb3coQWRvcHROUywgW1tTeW50aGV0aWNCYWNraW5nU2Nh
bGVGYWN0b3JXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6dmlld0ZyYW1lIHN0eWxl
TWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJl
ZCBkZWZlcjpZRVNdKTsKKyAgICBSZXRhaW5QdHI8U3ludGhldGljQmFja2luZ1NjYWxlRmFjdG9y
V2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbU3ludGhldGljQmFja2luZ1NjYWxlRmFjdG9yV2lu
ZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OnZpZXdGcmFtZSBzdHlsZU1hc2s6TlNCb3Jk
ZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVT
XSk7CiAgICAgW3dpbmRvdy5nZXQoKSBzZXRSZWxlYXNlZFdoZW5DbG9zZWQ6Tk9dOwogICAgIHJl
dHVybiB3aW5kb3c7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9IVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL0hUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tCmluZGV4IDUwYWFmZWViYWQ4NmNmMjgyZmQx
NTg0ZDJhODJiODM2MjYxMWY5OGMuLjYyY2I3OTc1MTQ1MThhNmYxYjJjNzlhMzgxNjAxYmEzNTg0
NGVhMTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0hUTUxDb2xs
ZWN0aW9uTmFtZWRJdGVtLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0hU
TUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tCkBAIC01MCw4ICs1MCw4IEBAIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIAogVEVTVChXZWJLaXQxLCBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbVRlc3Qp
CiB7Ci0gICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcoQWRvcHROUywgW1tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpu
aWwgZ3JvdXBOYW1lOm5pbF0pOwotICAgIFJldGFpblB0cjxIVE1MQ29sbGVjdGlvbk5hbWVkSXRl
bVRlc3Q+IHRlc3RDb250cm9sbGVyKEFkb3B0TlMsIFtIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbVRl
c3QgbmV3XSk7CisgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFt
ZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKKyAgICBSZXRhaW5QdHI8SFRNTENvbGxlY3Rpb25O
YW1lZEl0ZW1UZXN0PiB0ZXN0Q29udHJvbGxlciA9IGFkb3B0TlMoW0hUTUxDb2xsZWN0aW9uTmFt
ZWRJdGVtVGVzdCBuZXddKTsKIAogICAgIHdlYlZpZXcuZ2V0KCkuZnJhbWVMb2FkRGVsZWdhdGUg
PSB0ZXN0Q29udHJvbGxlci5nZXQoKTsKICAgICBbW3dlYlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0hUTUxGb3Jt
Q29sbGVjdGlvbk5hbWVkSXRlbS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0hU
TUxGb3JtQ29sbGVjdGlvbk5hbWVkSXRlbS5tbQppbmRleCBjZjJkYTJkZmJhYmFmNTg1ZmRmNDc1
YzllMzk2YWY1MzZiMzM5MzMyLi5hNzE2YWI5MmY4M2JjMjlmNTI3MGVlZWJjNzg0ZjljYjI1NWRj
MjgwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9IVE1MRm9ybUNv
bGxlY3Rpb25OYW1lZEl0ZW0ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
SFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtLm1tCkBAIC01MCw4ICs1MCw4IEBAIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChXZWJLaXQxLCBIVE1MRm9ybUNvbGxlY3Rpb25OYW1l
ZEl0ZW1UZXN0KQogewotICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3KEFkb3B0TlMsIFtb
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBm
cmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKLSAgICBSZXRhaW5QdHI8SFRNTEZvcm1Db2xs
ZWN0aW9uTmFtZWRJdGVtVGVzdD4gdGVzdENvbnRyb2xsZXIoQWRvcHROUywgW0hUTUxGb3JtQ29s
bGVjdGlvbk5hbWVkSXRlbVRlc3QgbmV3XSk7CisgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKKyAgICBSZXRhaW5Q
dHI8SFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtVGVzdD4gdGVzdENvbnRyb2xsZXIgPSBhZG9w
dE5TKFtIVE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW1UZXN0IG5ld10pOwogCiAgICAgd2ViVmll
dy5nZXQoKS5mcmFtZUxvYWREZWxlZ2F0ZSA9IHRlc3RDb250cm9sbGVyLmdldCgpOwogICAgIFtb
d2ViVmlldy5nZXQoKSBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9tYWMvSW5zcGVjdG9yQmFyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvSW5zcGVjdG9yQmFyLm1tCmluZGV4IDBhNTFlMmZiNDUxY2I3MGFjMWU5NDAyNWIx
NjVmMzZhODA1ODM1OTguLjVmMjIwNWJlOGZhYTRkY2UwOTg2NGI5MjZlOGJlYTBhMmVlM2JiMDkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0luc3BlY3RvckJhci5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9JbnNwZWN0b3JCYXIubW0KQEAg
LTUyLDggKzUyLDggQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFdlYktpdDEs
IEluc3BlY3RvckJhclRlc3QpCiB7Ci0gICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcoQWRv
cHROUywgW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIw
LCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwotICAgIFJldGFpblB0cjxJbnNw
ZWN0b3JCYXJDb250cm9sbGVyPiBpbnNwZWN0b3JCYXJDb250cm9sbGVyKEFkb3B0TlMsIFtJbnNw
ZWN0b3JCYXJDb250cm9sbGVyIG5ld10pOworICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CisgICAgUmV0YWluUHRy
PEluc3BlY3RvckJhckNvbnRyb2xsZXI+IGluc3BlY3RvckJhckNvbnRyb2xsZXIgPSBhZG9wdE5T
KFtJbnNwZWN0b3JCYXJDb250cm9sbGVyIG5ld10pOwogCiAgICAgd2ViVmlldy5nZXQoKS5mcmFt
ZUxvYWREZWxlZ2F0ZSA9IGluc3BlY3RvckJhckNvbnRyb2xsZXIuZ2V0KCk7CiAgICAgW3dlYlZp
ZXcuZ2V0KCkubWFpbkZyYW1lIGxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgY29udGVudGVkaXRhYmxl
IHN0eWxlPVwiY29sb3I6IGdyZWVuXCI+PHU+TG9yZW0gaXBzdW0gc2l0IGFtZXQ8L3U+PC9ib2R5
PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImFib3V0OmJsYW5rIl1dOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVEaXNhYmxlV2l0
aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9NZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQppbmRleCBh
ZWI5NTU1MDhmMDJlMTc1ZWYxMTZjYThiMmE3YzA1NmU3MWJhZWNkLi5lMmVjZGVhYzQ2ZTIzZWJj
YTRhY2UxYWFlYWRjZDlkNGNkNTZkYmVhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9NZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZURpc2FibGVX
aXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQpAQCAtNzQsOSArNzQsOSBAQCBURVNUKFdlYktp
dDEsIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlKQogewogICAg
IE5TQXV0b3JlbGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5p
dF07CiAKLSAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyhBZG9wdE5TLCBbW1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1l
Om5pbCBncm91cE5hbWU6bmlsXSk7CisgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEy
MCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKIAotICAgIFJldGFpblB0cjxN
ZW1vcnlDYWNoZURpc2FibGVUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGU+IHJlc291cmNlTG9hZERl
bGVnYXRlKEFkb3B0TlMsIFtbTWVtb3J5Q2FjaGVEaXNhYmxlVGVzdFJlc291cmNlTG9hZERlbGVn
YXRlIGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPE1lbW9yeUNhY2hlRGlzYWJsZVRlc3RS
ZXNvdXJjZUxvYWREZWxlZ2F0ZT4gcmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbTWVt
b3J5Q2FjaGVEaXNhYmxlVGVzdFJlc291cmNlTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAg
ICAgd2ViVmlldy5nZXQoKS5yZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IHJlc291cmNlTG9hZERlbGVn
YXRlLmdldCgpOwogCiAgICAgW1t3ZWJWaWV3LmdldCgpIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAiTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUi
IHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdXV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1v
cnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdh
dGUubW0KaW5kZXggY2YzZDMxMWRhN2Y0OTA4NGRkMjEwZjkxMDI0NDZkMDRhZmY3YTFiZS4uMjEy
ODIwZTBhNDU4OGE3ZjI4ODU0ZGEwZjE3YTk4ZTkzMWIyN2EzMiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9h
ZERlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeUNh
Y2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQpAQCAtNzksMTMgKzc5LDEzIEBA
IFRFU1QoV2ViS2l0MSwgRElTQUJMRURfTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9h
ZERlbGVnYXRlKQogewogICAgIE5TQXV0b3JlbGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxl
YXNlUG9vbCBhbGxvY10gaW5pdF07CiAKLSAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldzEo
QWRvcHROUywgW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
MTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwotICAgIFJldGFpblB0cjxX
ZWJWaWV3PiB3ZWJWaWV3MihBZG9wdE5TLCBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7
CisgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcxID0gYWRvcHROUyhbW1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5p
bCBncm91cE5hbWU6bmlsXSk7CisgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcyID0gYWRv
cHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAs
IDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CiAKICAgICBOU1dpbmRvdyogd2lu
ZG93ID0gW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDp3ZWJWaWV3Mi5nZXQo
KS5mcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2lu
Z1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXTsKICAgICBbd2luZG93LmNvbnRlbnRWaWV3IGFkZFN1
YnZpZXc6d2ViVmlldzIuZ2V0KCldOwogCi0gICAgUmV0YWluUHRyPE1lbW9yeUNhY2hlUHJ1bmVU
ZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGU+IHJlc291cmNlTG9hZERlbGVnYXRlKEFkb3B0TlMsIFtb
TWVtb3J5Q2FjaGVQcnVuZVRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwor
ICAgIFJldGFpblB0cjxNZW1vcnlDYWNoZVBydW5lVGVzdFJlc291cmNlTG9hZERlbGVnYXRlPiBy
ZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tNZW1vcnlDYWNoZVBydW5lVGVzdFJlc291
cmNlTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgcmVzb3VyY2VMb2FkRGVsZWdhdGUu
Z2V0KCktPl93aW5kb3cgPSB3aW5kb3c7CiAgICAgd2ViVmlldzEuZ2V0KCkucmVzb3VyY2VMb2Fk
RGVsZWdhdGUgPSByZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dD
aGFuZ2VzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvUGFnZVZpc2liaWxpdHlT
dGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1tCmluZGV4IGNlYzEzOGNiNzdiYzQ2ZTRkNGU5MDk3YmNl
ZTA1NGRmMjk0ZjlmYmQuLmYwOGQzYjcyOTM1ZGMxNDEzMTM4ZjdjODU0Mjc0ZDc3M2E1MDQ0Mjcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1BhZ2VWaXNpYmlsaXR5
U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9QYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW0KQEAgLTExMSw3ICsx
MTEsNyBAQCB2b2lkIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlczo6cnVuVGVz
dChWaWV3IHZpZXcpCiAgICAgRVhQRUNUX0pTX0VRKHZpZXcsICJkb2N1bWVudC53ZWJraXRWaXNp
YmlsaXR5U3RhdGUiLCAiaGlkZGVuIik7CiAKICAgICAvLyBBZGQgaXQgdG8gYSBub24tdmlzaWJs
ZSB3aW5kb3cuIFBhZ2VWaXNpYmlsaXR5IHNob3VsZCBzdGlsbCBiZSAiaGlkZGVuIi4KLSAgICBS
ZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyhBZG9wdE5TLCBbW05TV2luZG93IGFsbG9jXSBpbml0
V2l0aENvbnRlbnRSZWN0OnZpZXcuZnJhbWUgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01h
c2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CisgICAgUmV0YWlu
UHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRo
Q29udGVudFJlY3Q6dmlldy5mcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBi
YWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKICAgICBbd2luZG93Lmdl
dCgpLmNvbnRlbnRWaWV3IGFkZFN1YnZpZXc6dmlld107CiAgICAgRVhQRUNUX05PVF9OVUxMKFt2
aWV3IHdpbmRvd10pOwogICAgIEVYUEVDVF9OT1RfTlVMTChbdmlldyBzdXBlcnZpZXddKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1JlbmRlcmVkSW1hZ2VGcm9t
RE9NUmFuZ2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9SZW5kZXJlZEltYWdl
RnJvbURPTVJhbmdlLm1tCmluZGV4IDVhZDQzYmQyNWNiZTBkM2FlMjViYzNkMzI3NWJjNTUxMTA5
MmFjYjIuLmJjM2ExMWRiMzdjMTAyM2UzYWZjODkyMzBlZWQ1NjE3ZDcwMWVmZTIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1JlbmRlcmVkSW1hZ2VGcm9tRE9NUmFu
Z2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvUmVuZGVyZWRJbWFnZUZy
b21ET01SYW5nZS5tbQpAQCAtNDgsOCArNDgsOCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CiAKIFRFU1QoV2ViS2l0MSwgUmVuZGVyZWRJbWFnZUZyb21ET01SYW5nZSkKIHsKLSAgICBSZXRh
aW5QdHI8V2ViVmlldz4gd2ViVmlldyhBZG9wdE5TLCBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6
bmlsXSk7Ci0gICAgUmV0YWluUHRyPFJlbmRlcmVkSW1hZ2VGcm9tRE9NUmFuZ2VGcmFtZUxvYWRE
ZWxlZ2F0ZT4gZnJhbWVMb2FkRGVsZWdhdGUoQWRvcHROUywgW1JlbmRlcmVkSW1hZ2VGcm9tRE9N
UmFuZ2VGcmFtZUxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOworICAgIFJldGFp
blB0cjxSZW5kZXJlZEltYWdlRnJvbURPTVJhbmdlRnJhbWVMb2FkRGVsZWdhdGU+IGZyYW1lTG9h
ZERlbGVnYXRlID0gYWRvcHROUyhbUmVuZGVyZWRJbWFnZUZyb21ET01SYW5nZUZyYW1lTG9hZERl
bGVnYXRlIG5ld10pOwogCiAgICAgd2ViVmlldy5nZXQoKS5mcmFtZUxvYWREZWxlZ2F0ZSA9IGZy
YW1lTG9hZERlbGVnYXRlLmdldCgpOwogICAgIFt3ZWJWaWV3LmdldCgpLm1haW5GcmFtZSBsb2Fk
SFRNTFN0cmluZzpAIjxkaXYgc3R5bGU9XCJ3aWR0aDogMTAwcHg7XCI+TG9yZW0gPHNwYW4gaWQ9
XCJ0YXJnZXRcIj5pcHN1bSBkb2xvcjwvc3Bhbj4gc2l0IGFtZXQ8L2Rpdj4iIGJhc2VVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJhYm91dDpibGFuayJdXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL1NldEFuZFVwZGF0ZUNhY2hlTW9kZWwubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TZXRBbmRVcGRhdGVDYWNoZU1vZGVsLm1tCmluZGV4IGVl
ZDFmODE4MGQxNjA3M2U3ZWEzMGIwNGRhMGU5ZDNkMjZkMDEwZjUuLjAwMzc1NTIzNWI5YWVmYTRl
ZGEwYzUyMDY5MTBlNjk5MTAwNmExYzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL1NldEFuZFVwZGF0ZUNhY2hlTW9kZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvU2V0QW5kVXBkYXRlQ2FjaGVNb2RlbC5tbQpAQCAtMzksNyArMzksNyBA
QCBURVNUKFdlYktpdDEsIFNldEFuZFVwZGF0ZUNhY2hlTW9kZWxJbml0aWFsTW9kZWwpCiB7CiAg
ICAgRVhQRUNUX0VRKChpbnQpV2ViQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyLCAoaW50KVtXZWJW
aWV3IF9jYWNoZU1vZGVsXSk7CiAKLSAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyhBZG9w
dE5TLCBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAs
IDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CisgICAgUmV0YWluUHRyPFdlYlZp
ZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKIAog
ICAgIEVYUEVDVF9FUSgoaW50KVdlYkNhY2hlTW9kZWxEb2N1bWVudEJyb3dzZXIsIChpbnQpW1dl
YlZpZXcgX2NhY2hlTW9kZWxdKTsKIH0KQEAgLTY0LDcgKzY0LDcgQEAgVEVTVChXZWJLaXQxLCBT
ZXRBbmRVcGRhdGVDYWNoZU1vZGVsUHJlZmVyZW5jZXNDaGFuZ2VNaXgpCiAgICAgRVhQRUNUX0VR
KChpbnQpV2ViQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyLCAoaW50KVtXZWJWaWV3IF9jYWNoZU1v
ZGVsXSk7CiAKICAgICBXZWJQcmVmZXJlbmNlcyAqc3RhbmRhcmRQcmVmZXJlbmNlcyA9IFtXZWJQ
cmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXTsKLSAgICBSZXRhaW5QdHI8V2ViUHJlZmVy
ZW5jZXM+IGN1c3RvbVByZWZlcmVuY2VzKEFkb3B0TlMsIFtbV2ViUHJlZmVyZW5jZXMgYWxsb2Nd
IGluaXRXaXRoSWRlbnRpZmllcjpAIlNldEFuZFVwZGF0ZUNhY2hlTW9kZWxQcmVmZXJlbmNlc0No
YW5nZU1peCJdKTsKKyAgICBSZXRhaW5QdHI8V2ViUHJlZmVyZW5jZXM+IGN1c3RvbVByZWZlcmVu
Y2VzID0gYWRvcHROUyhbW1dlYlByZWZlcmVuY2VzIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6
QCJTZXRBbmRVcGRhdGVDYWNoZU1vZGVsUHJlZmVyZW5jZXNDaGFuZ2VNaXgiXSk7CiAKICAgICAv
LyAxKSBUaGUgY3VzdG9tUHJlZmVyZW5jZXMgaXMgbm90IHNldCBvbiBhIHZpZXcuCiAgICAgRVhQ
RUNUX0VRKChpbnQpV2ViQ2FjaGVNb2RlbERvY3VtZW50QnJvd3NlciwgKGludClbV2ViVmlldyBf
Y2FjaGVNb2RlbF0pOwpAQCAtNzksNyArNzksNyBAQCBURVNUKFdlYktpdDEsIFNldEFuZFVwZGF0
ZUNhY2hlTW9kZWxQcmVmZXJlbmNlc0NoYW5nZU1peCkKIAogCiAgICAgLy8gMikgVGhlIGNhY2hl
IG1vZGVsIHNob3VsZCBmb2xsb3cgdGhlIGhpZ2hlc3QgdmFsdWUgb2YgY2FjaGUgbW9kZWwgYmV0
d2VlbiB0aGUgdHdvIHByZWZlcmVuY2VzLgotICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3
KEFkb3B0TlMsIFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKKyAgICBSZXRhaW5QdHI8
V2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0p
OwogICAgIFt3ZWJWaWV3LmdldCgpIHNldFByZWZlcmVuY2VzOmN1c3RvbVByZWZlcmVuY2VzLmdl
dCgpXTsKICAgICBFWFBFQ1RfRVEoKGludClXZWJDYWNoZU1vZGVsUHJpbWFyeVdlYkJyb3dzZXIs
IChpbnQpW1dlYlZpZXcgX2NhY2hlTW9kZWxdKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9tYWMvU2V0RG9jdW1lbnRVUkkubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9TZXREb2N1bWVudFVSSS5tbQppbmRleCBmMDc3ZWQ5NWIwYTE2OGIzY2NmMTkw
MmQyNWFiZjA1OWNlYTQ2ZWNmLi40NGVjYzNlOWIzNTAwNDQ3ZDUxODZlODI3OWI0ZGNlZWJkNmI0
NWJhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TZXREb2N1bWVu
dFVSSS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TZXREb2N1bWVudFVS
SS5tbQpAQCAtNDksOCArNDksOCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1Qo
V2ViS2l0MSwgU2V0RG9jdW1lbnRVUklUZXN0RmlsZSkKIHsKLSAgICBSZXRhaW5QdHI8V2ViVmll
dz4gd2ViVmlldyhBZG9wdE5TLCBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7Ci0gICAg
UmV0YWluUHRyPFNldERvY3VtZW50VVJJVGVzdD4gdGVzdENvbnRyb2xsZXIoQWRvcHROUywgW1Nl
dERvY3VtZW50VVJJVGVzdCBuZXddKTsKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyA9
IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
MTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOworICAgIFJldGFpblB0cjxT
ZXREb2N1bWVudFVSSVRlc3Q+IHRlc3RDb250cm9sbGVyID0gYWRvcHROUyhbU2V0RG9jdW1lbnRV
UklUZXN0IG5ld10pOwogICAgIHdlYlZpZXcuZ2V0KCkuZnJhbWVMb2FkRGVsZWdhdGUgPSB0ZXN0
Q29udHJvbGxlci5nZXQoKTsKICAgICBbW3dlYlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJTZXREb2N1bWVudFVSSSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKICAgICBVdGlsOjpydW4o
JmRpZEZpbmlzaExvYWQpOwpAQCAtNjYsOCArNjYsOCBAQCBURVNUKFdlYktpdDEsIFNldERvY3Vt
ZW50VVJJVGVzdEZpbGUpCiAKIFRFU1QoV2ViS2l0MSwgU2V0RG9jdW1lbnRVUklUZXN0VVJMKQog
ewotICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3KEFkb3B0TlMsIFtbV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmls
IGdyb3VwTmFtZTpuaWxdKTsKLSAgICBSZXRhaW5QdHI8U2V0RG9jdW1lbnRVUklUZXN0PiB0ZXN0
Q29udHJvbGxlcihBZG9wdE5TLCBbU2V0RG9jdW1lbnRVUklUZXN0IG5ld10pOworICAgIFJldGFp
blB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6
bmlsXSk7CisgICAgUmV0YWluUHRyPFNldERvY3VtZW50VVJJVGVzdD4gdGVzdENvbnRyb2xsZXIg
PSBhZG9wdE5TKFtTZXREb2N1bWVudFVSSVRlc3QgbmV3XSk7CiAgICAgd2ViVmlldy5nZXQoKS5m
cmFtZUxvYWREZWxlZ2F0ZSA9IHRlc3RDb250cm9sbGVyLmdldCgpOwogICAgIFtbd2ViVmlldy5n
ZXQoKSBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIlNldERvY3VtZW50VVJJIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXV1dOwogICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CkBAIC04Niw4ICs4Niw4IEBA
IFRFU1QoV2ViS2l0MSwgU2V0RG9jdW1lbnRVUklUZXN0VVJMKQogCiBURVNUKFdlYktpdDEsIFNl
dERvY3VtZW50VVJJVGVzdFN0cmluZykKIHsKLSAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmll
dyhBZG9wdE5TLCBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7Ci0gICAgUmV0YWluUHRy
PFNldERvY3VtZW50VVJJVGVzdD4gdGVzdENvbnRyb2xsZXIoQWRvcHROUywgW1NldERvY3VtZW50
VVJJVGVzdCBuZXddKTsKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMo
W1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDAp
IGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOworICAgIFJldGFpblB0cjxTZXREb2N1bWVu
dFVSSVRlc3Q+IHRlc3RDb250cm9sbGVyID0gYWRvcHROUyhbU2V0RG9jdW1lbnRVUklUZXN0IG5l
d10pOwogICAgIHdlYlZpZXcuZ2V0KCkuZnJhbWVMb2FkRGVsZWdhdGUgPSB0ZXN0Q29udHJvbGxl
ci5nZXQoKTsKICAgICBbW3dlYlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVz
b3VyY2U6QCJTZXREb2N1bWVudFVSSSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKICAgICBVdGlsOjpydW4oJmRpZEZpbmlz
aExvYWQpOwpAQCAtMTAzLDggKzEwMyw4IEBAIFRFU1QoV2ViS2l0MSwgU2V0RG9jdW1lbnRVUklU
ZXN0U3RyaW5nKQogCiBURVNUKFdlYktpdDEsIFNldERvY3VtZW50VVJJVGVzdE51bGwpCiB7Ci0g
ICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcoQWRvcHROUywgW1tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3Jv
dXBOYW1lOm5pbF0pOwotICAgIFJldGFpblB0cjxTZXREb2N1bWVudFVSSVRlc3Q+IHRlc3RDb250
cm9sbGVyKEFkb3B0TlMsIFtTZXREb2N1bWVudFVSSVRlc3QgbmV3XSk7CisgICAgUmV0YWluUHRy
PFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxd
KTsKKyAgICBSZXRhaW5QdHI8U2V0RG9jdW1lbnRVUklUZXN0PiB0ZXN0Q29udHJvbGxlciA9IGFk
b3B0TlMoW1NldERvY3VtZW50VVJJVGVzdCBuZXddKTsKICAgICB3ZWJWaWV3LmdldCgpLmZyYW1l
TG9hZERlbGVnYXRlID0gdGVzdENvbnRyb2xsZXIuZ2V0KCk7CiAgICAgW1t3ZWJWaWV3LmdldCgp
IG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiU2V0RG9jdW1lbnRVUkkiIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
XV07CiAgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL1NpbXBsaWZ5TWFya3VwLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvU2ltcGxpZnlNYXJrdXAubW0KaW5kZXggNzBlYzQ3ZDU3YzdiYjM1OWUy
NzM5OWZjMTU4NzdkZjNkN2M4Yzc0NS4uOWQ0NDNhZDA0NWZmZWUwYzgzMzg2Yzc5NWEyNTBkOTJl
OWM3ZTdhNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU2ltcGxp
ZnlNYXJrdXAubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU2ltcGxpZnlN
YXJrdXAubW0KQEAgLTQ5LDkgKzQ5LDkgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBU
RVNUKFdlYktpdDEsIFNpbXBsaWZ5TWFya3VwVGVzdCkKIHsKLSAgICBSZXRhaW5QdHI8V2ViVmll
dz4gd2ViVmlldzEoQWRvcHROUywgW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwotICAg
IFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3MihBZG9wdE5TLCBbW1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91
cE5hbWU6bmlsXSk7Ci0gICAgUmV0YWluUHRyPFNpbXBsaWZ5TWFya3VwVGVzdD4gdGVzdENvbnRy
b2xsZXIoQWRvcHROUywgW1NpbXBsaWZ5TWFya3VwVGVzdCBuZXddKTsKKyAgICBSZXRhaW5QdHI8
V2ViVmlldz4gd2ViVmlldzEgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxd
KTsKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldzIgPSBhZG9wdE5TKFtbV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6
bmlsIGdyb3VwTmFtZTpuaWxdKTsKKyAgICBSZXRhaW5QdHI8U2ltcGxpZnlNYXJrdXBUZXN0PiB0
ZXN0Q29udHJvbGxlciA9IGFkb3B0TlMoW1NpbXBsaWZ5TWFya3VwVGVzdCBuZXddKTsKICAgICAK
ICAgICB3ZWJWaWV3MS5nZXQoKS5mcmFtZUxvYWREZWxlZ2F0ZSA9IHRlc3RDb250cm9sbGVyLmdl
dCgpOwogICAgIFtbd2ViVmlldzEuZ2V0KCkgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJ2ZXJib3NlTWFya3VwIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvU3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmcubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0RnJvbVN0cmluZy5tbQppbmRleCA0ZTNlM2VjNzUwNzBmMTdkNGE0NDg0MTE0MjA3ZTM5ODk4
NzExOWM1Li4yNjBhNWE1M2U3NGVlODA3MjU2NzFhMGFmOWFlMTcxMDAyNTM1NzMwIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0RnJvbVN0cmluZy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9T
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZy5tbQpAQCAtMzIsNyArMzIsNyBA
QCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiBURVNUKFdlYktpdDEsIFN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nKQogewogICAgIC8vIG1hcHMgZXhwZWN0ZWQgcmVzdWx0
IDw9IEphdmFTY3JpcHQgZXhwcmVzc2lvbgotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGV4
cHJlc3Npb25zKEFkb3B0TlMsIFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNB
bmRLZXlzOgorICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGV4cHJlc3Npb25zID0gYWRvcHRO
UyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKICAgICAgICAg
QCIwIiwgQCIwIiwKICAgICAgICAgQCIwIiwgQCInMCciLAogICAgICAgICBAIiIsIEAiIiwKQEAg
LTUzLDcgKzUzLDcgQEAgVEVTVChXZWJLaXQxLCBTdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
RnJvbVN0cmluZykKICAgICAgICAgbmlsCiAgICAgXSk7CiAKLSAgICBSZXRhaW5QdHI8V2ViVmll
dz4gd2ViVmlldyAoQWRvcHROUywgW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVy
b1JlY3QgZnJhbWVOYW1lOkAiIiBncm91cE5hbWU6QCIiXSk7CisgICAgUmV0YWluUHRyPFdlYlZp
ZXc+IHdlYlZpZXcgID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNa
ZXJvUmVjdCBmcmFtZU5hbWU6QCIiIGdyb3VwTmFtZTpAIiJdKTsKIAogICAgIC8vIFRlc3QgYSBu
aWwgc3RyaW5nCiAgICAgTlNTdHJpbmcgKnJlc3VsdCA9IFt3ZWJWaWV3LmdldCgpIHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOm5pbF07CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XaWxsU2VuZFN1Ym1pdEV2ZW50Lm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvV2lsbFNlbmRTdWJtaXRFdmVudC5tbQppbmRleCA3NTQ1OTQx
YzVhOWYzMjMwOWY4MzBiZTk2NmY4M2Y3MDY4ZDMwZTdlLi4xNjU0ZjljYTgwMzkwNGY5YjA5NjQ1
NjkyYTk3MDhmYjJmZDJhZTAyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9XaWxsU2VuZFN1Ym1pdEV2ZW50Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL1dpbGxTZW5kU3VibWl0RXZlbnQubW0KQEAgLTYwLDcgKzYwLDcgQEAgbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogVEVTVChXZWJLaXQxLCBXaWxsU2VuZFN1Ym1pdEV2ZW50KQogewog
ICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmll
dyhBZG9wdE5TLCBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CisgICAgICAgIFJldGFp
blB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6
bmlsXSk7CiAKICAgICAgICAgUmV0YWluUHRyPEZvcm1EZWxlZ2F0ZT4gZm9ybURlbGVnYXRlID0g
W1tGb3JtRGVsZWdhdGUgYWxsb2NdIGluaXRdOwogICAgICAgICBbd2ViVmlldyBfc2V0Rm9ybURl
bGVnYXRlOmZvcm1EZWxlZ2F0ZS5nZXQoKV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL21hYy9XaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL1dpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1tCmluZGV4IGJm
NTkzZTZlZjA3OTAyMmUxZDQ4Yjk4Y2QxN2Y5YjUwMmNiOTZiNWUuLjkyMjU3ODNhYjYwYTEyNDE5
MDlmZDkwMmNhMGQ3ZTkzM2MxYTE5NjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL1dpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL1dpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1tCkBAIC02NSw4
ICs2NSw4IEBAIFRFU1QoV2ViS2l0MSwgV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEpCiB7CiAg
ICAgTlNBdXRvcmVsZWFzZVBvb2wgKnBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBp
bml0XTsKIAotICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3KEFkb3B0TlMsIFtbV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5h
bWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKLSAgICBSZXRhaW5QdHI8V2luZG93bGVzc1dlYlZpZXdX
aXRoTWVkaWFGcmFtZUxvYWREZWxlZ2F0ZT4gdGVzdENvbnRyb2xsZXIoQWRvcHROUywgW1dpbmRv
d2xlc3NXZWJWaWV3V2l0aE1lZGlhRnJhbWVMb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgUmV0YWlu
UHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpu
aWxdKTsKKyAgICBSZXRhaW5QdHI8V2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWFGcmFtZUxvYWRE
ZWxlZ2F0ZT4gdGVzdENvbnRyb2xsZXIgPSBhZG9wdE5TKFtXaW5kb3dsZXNzV2ViVmlld1dpdGhN
ZWRpYUZyYW1lTG9hZERlbGVnYXRlIG5ld10pOwogICAgIHdlYlZpZXcuZ2V0KCkuZnJhbWVMb2Fk
RGVsZWdhdGUgPSB0ZXN0Q29udHJvbGxlci5nZXQoKTsKICAgICBbW3dlYlZpZXcuZ2V0KCkgbWFp
bkZyYW1lXSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRp
YSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl1dXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvUGxhdGZv
cm1VdGlsaXRpZXNNYWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVV0aWxp
dGllc01hYy5tbQppbmRleCA5NzlmNGNkMjI0NGU5MzBlYjZhODQ4NjZjMTkyNzg0OWNlZWY1Mjc0
Li4xZTczYWRiYjM4MTAzYjE0YmEzMGQxYzE4MGFlZTJkOWI2M2NkZmQwIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVV0aWxpdGllc01hYy5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVV0aWxpdGllc01hYy5tbQpAQCAtNjcsNyArNjcs
NyBAQCBXS1VSTFJlZiBVUkxGb3JOb25FeGlzdGVudFJlc291cmNlKCkKIAogV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IE1JTUVUeXBlRm9yV0tVUkxSZXNwb25zZShXS1VSTFJlc3BvbnNlUmVmIHdr
UmVzcG9uc2UpCiB7Ci0gICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IHJlc3BvbnNlKEFkb3B0
TlMsIFdLVVJMUmVzcG9uc2VDb3B5TlNVUkxSZXNwb25zZSh3a1Jlc3BvbnNlKSk7CisgICAgUmV0
YWluUHRyPE5TVVJMUmVzcG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhXS1VSTFJlc3BvbnNlQ29w
eU5TVVJMUmVzcG9uc2Uod2tSZXNwb25zZSkpOwogICAgIHJldHVybiBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilbcmVzcG9uc2UuZ2V0KCkgTUlNRVR5cGVd
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1dlYktpdEFnbm9z
dGljVGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1dlYktpdEFnbm9zdGljVGVzdC5t
bQppbmRleCBjZTI1YTg0ZGFkNWU0NDc3MDNkOWE4YTIyYzE0NWM4YzBmZWM5NDBhLi4wMzU1MmIz
YThlNzQ3Njk4NTg0MzU4OWJkNzA2YjY1MWQ0ZTllNzI5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL21hYy9XZWJLaXRBZ25vc3RpY1Rlc3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9tYWMvV2ViS2l0QWdub3N0aWNUZXN0Lm1tCkBAIC04Myw4ICs4Myw4IEBAIFdlYktpdEFn
bm9zdGljVGVzdDo6V2ViS2l0QWdub3N0aWNUZXN0KCkKIAogdm9pZCBXZWJLaXRBZ25vc3RpY1Rl
c3Q6OnJ1bldlYktpdDFUZXN0KCkKIHsKLSAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyhB
ZG9wdE5TLCBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6dmlld0ZyYW1lXSk7Ci0gICAg
UmV0YWluUHRyPEZyYW1lTG9hZERlbGVnYXRlPiBkZWxlZ2F0ZShBZG9wdE5TLCBbW0ZyYW1lTG9h
ZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERpZEZpbmlzaExvYWRCb29sZWFuOiZkaWRGaW5pc2hM
b2FkXSk7CisgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTp2aWV3RnJhbWVdKTsKKyAgICBSZXRhaW5QdHI8RnJhbWVM
b2FkRGVsZWdhdGU+IGRlbGVnYXRlID0gYWRvcHROUyhbW0ZyYW1lTG9hZERlbGVnYXRlIGFsbG9j
XSBpbml0V2l0aERpZEZpbmlzaExvYWRCb29sZWFuOiZkaWRGaW5pc2hMb2FkXSk7CiAgICAgW3dl
YlZpZXcuZ2V0KCkgc2V0RnJhbWVMb2FkRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogICAgIGlu
aXRpYWxpemVWaWV3KHdlYlZpZXcuZ2V0KCkpOwogCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgV2Vi
S2l0QWdub3N0aWNUZXN0OjpydW5XZWJLaXQyVGVzdCgpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tD
b250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhXS0NvbnRleHRDcmVhdGUoKSk7CiAgICAgV0tS
ZXRhaW5QdHI8V0tQYWdlR3JvdXBSZWY+IHBhZ2VHcm91cCA9IGFkb3B0V0soV0tQYWdlR3JvdXBD
cmVhdGVXaXRoSWRlbnRpZmllcihVdGlsOjp0b1dLKCJXZWJLaXRBZ25vc3RpY1Rlc3QiKS5nZXQo
KSkpOwotICAgIFJldGFpblB0cjxXS1ZpZXc+IHZpZXcoQWRvcHROUywgW1tXS1ZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6dmlld0ZyYW1lIGNvbnRleHRSZWY6Y29udGV4dC5nZXQoKSBwYWdlR3Jv
dXBSZWY6cGFnZUdyb3VwLmdldCgpXSk7CisgICAgUmV0YWluUHRyPFdLVmlldz4gdmlldyA9IGFk
b3B0TlMoW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6dmlld0ZyYW1lIGNvbnRleHRSZWY6
Y29udGV4dC5nZXQoKSBwYWdlR3JvdXBSZWY6cGFnZUdyb3VwLmdldCgpXSk7CiAgICAgc2V0UGFn
ZUxvYWRlckNsaWVudChbdmlldy5nZXQoKSBwYWdlUmVmXSwgJmRpZEZpbmlzaExvYWQpOwogICAg
IGluaXRpYWxpemVWaWV3KHZpZXcuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VNYWMubW0gYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBh
Z2VNYWMubW0KaW5kZXggYjBjYjRlMDMxY2I3NDQ2MjhjMGJjMzRkNTdkMTc2YjY4N2FmMTM0NS4u
NDE4ZDUxMzllOWJiYWViNTBhZjVlZjU1MGU5N2M2Zjc3ZmM3MmIzZCAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdl
TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0lu
amVjdGVkQnVuZGxlUGFnZU1hYy5tbQpAQCAtNDEsMTIgKzQxLDEyIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXVEY7CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiBzdGF0
aWMgU3RyaW5nIHRlc3RQYXRoRnJvbVVSTChXS1VSTFJlZiB1cmwpCiB7Ci0gICAgUmV0YWluUHRy
PENGVVJMUmVmPiBjZlVSTChBZG9wdENGLCBXS1VSTENvcHlDRlVSTChrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCB1cmwpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMID0gYWRvcHRDRihXS1VS
TENvcHlDRlVSTChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmwpKTsKICAgICBpZiAoIWNmVVJMKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNj
aGVtZUNGU3RyaW5nKEFkb3B0Q0YsIENGVVJMQ29weVNjaGVtZShjZlVSTC5nZXQoKSkpOwotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0aENGU3RyaW5nKEFkb3B0Q0YsIENGVVJMQ29weVBh
dGgoY2ZVUkwuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNjaGVtZUNGU3Ry
aW5nID0gYWRvcHRDRihDRlVSTENvcHlTY2hlbWUoY2ZVUkwuZ2V0KCkpKTsKKyAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHBhdGhDRlN0cmluZyA9IGFkb3B0Q0YoQ0ZVUkxDb3B5UGF0aChjZlVS
TC5nZXQoKSkpOwogCiAgICAgU3RyaW5nIHNjaGVtZVN0cmluZyhzY2hlbWVDRlN0cmluZy5nZXQo
KSk7CiAgICAgU3RyaW5nIHBhdGhTdHJpbmcocGF0aENGU3RyaW5nLmdldCgpKTsKQEAgLTYzLDcg
KzYzLDcgQEAgc3RhdGljIFN0cmluZyB0ZXN0UGF0aEZyb21VUkwoV0tVUkxSZWYgdXJsKQogICAg
IGlmICghZXF1YWxJZ25vcmluZ0Nhc2Uoc2NoZW1lU3RyaW5nLCAiaHR0cCIpICYmICFlcXVhbEln
bm9yaW5nQ2FzZShzY2hlbWVTdHJpbmcsICJodHRwcyIpKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3RDRlN0cmluZyhBZG9wdENGLCBD
RlVSTENvcHlIb3N0TmFtZShjZlVSTC5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gaG9zdENGU3RyaW5nID0gYWRvcHRDRihDRlVSTENvcHlIb3N0TmFtZShjZlVSTC5nZXQoKSkp
OwogICAgIFN0cmluZyBob3N0U3RyaW5nKGhvc3RDRlN0cmluZy5nZXQoKSk7CiAgICAgaWYgKGhv
c3RTdHJpbmcgPT0gIjEyNy4wLjAuMSIgICYmIChDRlVSTEdldFBvcnROdW1iZXIoY2ZVUkwuZ2V0
KCkpID09IDgwMDAgfHwgQ0ZVUkxHZXRQb3J0TnVtYmVyKGNmVVJMLmdldCgpKSA9PSA4NDQzKSkK
ICAgICAgICAgcmV0dXJuIHBhdGhTdHJpbmc7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9UZXN0UnVubmVyTWFjLm1tIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCBkY2Ey
N2U2YTAzMTQ2ZWY0YmVhMDlmZjk1NWNmYTEzMWZkNGMzY2NkLi5jOWJmM2NhZjlhZWExZThkYTM2
ODkyOWVlZDA4MTI4MjFjMGE5NTUyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL21hYy9UZXN0UnVubmVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTUyLDcgKzUy
LDcgQEAgdm9pZCBUZXN0UnVubmVyOjppbml0aWFsaXplV2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJ
Zk5lZWRlZCgpCiAgICAgaWYgKG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIuYWRvcHRDRihDRlJ1bkxvb3BU
aW1lckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQo
KSArIHdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySW50ZXJ2YWwsIDAsIDAsIDAsIFdUUjo6d2FpdFVu
dGlsRG9uZVdhdGNoZG9nVGltZXJGaXJlZCwgTlVMTCkpOworICAgIG1fd2FpdFRvRHVtcFdhdGNo
ZG9nVGltZXIgPSBhZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgd2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJ
bnRlcnZhbCwgMCwgMCwgMCwgV1RSOjp3YWl0VW50aWxEb25lV2F0Y2hkb2dUaW1lckZpcmVkLCBO
VUxMKSk7CiAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtX3dh
aXRUb0R1bXBXYXRjaGRvZ1RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQog
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcAppbmRl
eCA5OTM1NWYwODdhNTNjNmMwMjQ5ZDg0MGE0NTc5NjJhYjE0Mjk5ZmFlLi40ZTYwYWViM2Y0MDY2
MTY2MDA5NTRiMjg1ZDVmZDk4Njc3NTZjNjM2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAKQEAgLTUyLDE0ICs1MiwxNCBAQCBlbnVtIEZsaXBH
cmFwaGljc0NvbnRleHRPck5vdCB7CiAKIHN0YXRpYyBDR0NvbnRleHRSZWYgY3JlYXRlQ0dDb250
ZXh0RnJvbUltYWdlKFdLSW1hZ2VSZWYgd2tJbWFnZSwgRmxpcEdyYXBoaWNzQ29udGV4dE9yTm90
IGZsaXAgPSBEb250RmxpcEdyYXBoaWNzQ29udGV4dCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gaW1hZ2UoQWRvcHRDRiwgV0tJbWFnZUNyZWF0ZUNHSW1hZ2Uod2tJbWFnZSkpOworICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGFkb3B0Q0YoV0tJbWFnZUNyZWF0ZUNHSW1h
Z2Uod2tJbWFnZSkpOwogCiAgICAgc2l6ZV90IHBpeGVsc1dpZGUgPSBDR0ltYWdlR2V0V2lkdGgo
aW1hZ2UuZ2V0KCkpOwogICAgIHNpemVfdCBwaXhlbHNIaWdoID0gQ0dJbWFnZUdldEhlaWdodChp
bWFnZS5nZXQoKSk7CiAgICAgc2l6ZV90IHJvd0J5dGVzID0gKDQgKiBwaXhlbHNXaWRlICsgNjMp
ICYgfjYzOwogCiAgICAgLy8gQ3JlYXRpbmcgdGhpcyBiaXRtYXAgaW4gdGhlIGRldmljZSBjb2xv
ciBzcGFjZSBzaG91bGQgcHJldmVudCBhbnkgY29sb3IgY29udmVyc2lvbiB3aGVuIHRoZSBpbWFn
ZSBvZiB0aGUgd2ViIHZpZXcgaXMgZHJhd24gaW50byBpdC4KLSAgICBSZXRhaW5QdHI8Q0dDb2xv
clNwYWNlUmVmPiBjb2xvclNwYWNlKEFkb3B0Q0YsIENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJH
QigpKTsKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0gYWRvcHRD
RihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRl
eHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgcGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgOCwg
cm93Qnl0ZXMsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmly
c3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpOwogICAgIAogICAgIGlmIChmbGlwID09IEZs
aXBHcmFwaGljc0NvbnRleHQpIHsKQEAgLTExMyw5ICsxMTMsOSBAQCB2b2lkIGNvbXB1dGVNRDVI
YXNoU3RyaW5nRm9yQ29udGV4dChDR0NvbnRleHRSZWYgYml0bWFwQ29udGV4dCwgY2hhciBoYXNo
U3RyaW5nWwogCiBzdGF0aWMgdm9pZCBkdW1wQml0bWFwKENHQ29udGV4dFJlZiBiaXRtYXBDb250
ZXh0LCBjb25zdCBjaGFyKiBjaGVja3N1bSkKIHsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
aW1hZ2UoQWRvcHRDRiwgQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dCkp
OwotICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBpbWFnZURhdGEoQWRvcHRDRiwgQ0ZE
YXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VEZXN0aW5hdGlv
blJlZj4gaW1hZ2VEZXN0KEFkb3B0Q0YsIENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRh
KGltYWdlRGF0YS5nZXQoKSwga1VUVHlwZVBORywgMSwgMCkpOworICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFw
Q29udGV4dCkpOworICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBpbWFnZURhdGEgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOworICAgIFJldGFpblB0cjxDR0ltYWdl
RGVzdGluYXRpb25SZWY+IGltYWdlRGVzdCA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3Jl
YXRlV2l0aERhdGEoaW1hZ2VEYXRhLmdldCgpLCBrVVRUeXBlUE5HLCAxLCAwKSk7CiAgICAgQ0dJ
bWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoaW1hZ2VEZXN0LmdldCgpLCBpbWFnZS5nZXQoKSwgMCk7
CiAgICAgQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUoaW1hZ2VEZXN0LmdldCgpKTsKIApAQCAt
MTY1LDkgKzE2NSw5IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJl
V2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYgaW1hZ2UsIFdLQXJyYXlSCiAKICAgICBSZXRhaW5QdHI8
Q0dDb250ZXh0UmVmPiBjb250ZXh0OwogICAgIGlmICh3aW5kb3dTbmFwc2hvdCkKLSAgICAgICAg
Y29udGV4dC5hZG9wdENGKGNyZWF0ZUNHQ29udGV4dEZyb21JbWFnZSh3aW5kb3dTbmFwc2hvdC5n
ZXQoKSwgRG9udEZsaXBHcmFwaGljc0NvbnRleHQpKTsKKyAgICAgICAgY29udGV4dCA9IGFkb3B0
Q0YoY3JlYXRlQ0dDb250ZXh0RnJvbUltYWdlKHdpbmRvd1NuYXBzaG90LmdldCgpLCBEb250Rmxp
cEdyYXBoaWNzQ29udGV4dCkpOwogICAgIGVsc2UKLSAgICAgICAgY29udGV4dC5hZG9wdENGKGNy
ZWF0ZUNHQ29udGV4dEZyb21JbWFnZShpbWFnZSkpOworICAgICAgICBjb250ZXh0ID0gYWRvcHRD
RihjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2UoaW1hZ2UpKTsKIAogICAgIC8vIEEgbm9uLW51bGwg
cmVwYWludFJlY3RzIGFycmF5IG1lYW5zIHdlJ3JlIGRvaW5nIGEgcmVwYWludCB0ZXN0LgogICAg
IGlmIChyZXBhaW50UmVjdHMpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21h
Yy9FdmVudFNlbmRlclByb3h5Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRT
ZW5kZXJQcm94eS5tbQppbmRleCA4N2MxY2Y3MGY2NmFjZDA2MjczZjA3MmQyM2UxOTc4NGFiZjM5
MDZhLi42NzIzZjlhZjMzN2VjZTlmYTJjYjlkNzA4YmZkNWViMTNlYWFlNmMxIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KQEAgLTQxNyw3ICs0
MTcsNyBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSZWYga2V5LCBX
S0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6
Om1vdXNlU2Nyb2xsQnkoaW50IHgsIGludCB5KQogewotICAgIFJldGFpblB0cjxDR0V2ZW50UmVm
PiBjZ1Njcm9sbEV2ZW50KEFkb3B0Q0YsIENHRXZlbnRDcmVhdGVTY3JvbGxXaGVlbEV2ZW50KDAs
IGtDR1Njcm9sbEV2ZW50VW5pdExpbmUsIDIsIHksIHgpKTsKKyAgICBSZXRhaW5QdHI8Q0dFdmVu
dFJlZj4gY2dTY3JvbGxFdmVudCA9IGFkb3B0Q0YoQ0dFdmVudENyZWF0ZVNjcm9sbFdoZWVsRXZl
bnQoMCwga0NHU2Nyb2xsRXZlbnRVbml0TGluZSwgMiwgeSwgeCkpOwogCiAgICAgLy8gQ0dFdmVu
dCBsb2NhdGlvbnMgYXJlIGluIGdsb2JhbCBkaXNwbGF5IGNvb3JkaW5hdGVzLgogICAgIENHUG9p
bnQgbGFzdEdsb2JhbE1vdXNlUG9zaXRpb24gPSBDR1BvaW50TWFrZShtX3Bvc2l0aW9uLngsIFtb
TlNTY3JlZW4gbWFpblNjcmVlbl0gZnJhbWVdLnNpemUuaGVpZ2h0IC0gbV9wb3NpdGlvbi55KTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01h
Yy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQpp
bmRleCA4NzdkZTc2NGNlN2M0MjdmZjI2YTViN2JmY2U0YjljYjc3ODQ2ZWExLi42MGI4ODcyMDEz
NGI2NDAzN2ZiNmYyNWQ2MzY5YzllZmE0NmUyMjUwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCkBAIC0yMjAsNyArMjIwLDcgQEAgdm9p
ZCBQbGF0Zm9ybVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIoKQogV0tSZXRhaW5Q
dHI8V0tJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dTbmFwc2hvdEltYWdlKCkKIHsK
ICAgICBbbV92aWV3IGRpc3BsYXldOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiB3aW5kb3dT
bmFwc2hvdEltYWdlKEFkb3B0Q0YsIENHV2luZG93TGlzdENyZWF0ZUltYWdlKENHUmVjdE51bGws
IGtDR1dpbmRvd0xpc3RPcHRpb25JbmNsdWRpbmdXaW5kb3csIFttX3dpbmRvdyB3aW5kb3dOdW1i
ZXJdLCBrQ0dXaW5kb3dJbWFnZUJvdW5kc0lnbm9yZUZyYW1pbmcgfCBrQ0dXaW5kb3dJbWFnZVNo
b3VsZEJlT3BhcXVlKSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHdpbmRvd1NuYXBzaG90
SW1hZ2UgPSBhZG9wdENGKENHV2luZG93TGlzdENyZWF0ZUltYWdlKENHUmVjdE51bGwsIGtDR1dp
bmRvd0xpc3RPcHRpb25JbmNsdWRpbmdXaW5kb3csIFttX3dpbmRvdyB3aW5kb3dOdW1iZXJdLCBr
Q0dXaW5kb3dJbWFnZUJvdW5kc0lnbm9yZUZyYW1pbmcgfCBrQ0dXaW5kb3dJbWFnZVNob3VsZEJl
T3BhcXVlKSk7CiAKICAgICAvLyB3aW5kb3dTbmFwc2hvdEltYWdlIHdpbGwgYmUgaW4gR2VuZXJp
Y1JHQiwgYXMgd2UndmUgc2V0IHRoZSBtYWluIGRpc3BsYXkncyBjb2xvciBzcGFjZSB0byBHZW5l
cmljUkdCLgogICAgIHJldHVybiBhZG9wdFdLKFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZSh3aW5k
b3dTbmFwc2hvdEltYWdlLmdldCgpLCAwKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL3dpbi9UZXN0Q29udHJvbGxlcldpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L3dpbi9UZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggOGYyZWFhZjQ4ZjRhOWI1MzJjMTZiYTYy
NGRkOWY1NjJiMTFiZDkzZi4uNmU4MGY1Njk1ZjRiY2E3M2NhNDNiZDFmZjUyNjdjYzQ1NjdmZTli
NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdENvbnRyb2xsZXJX
aW4uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RDb250cm9sbGVyV2lu
LmNwcApAQCAtMTM1LDExICsxMzUsMTEgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6
ZUluamVjdGVkQnVuZGxlUGF0aCgpCiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVU
ZXN0UGx1Z2luRGlyZWN0b3J5KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVS
TChBZG9wdENGLCBDRkJ1bmRsZUNvcHlFeGVjdXRhYmxlVVJMKENGQnVuZGxlR2V0TWFpbkJ1bmRs
ZSgpKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVEaXJlY3RvcnlVUkwoQWRvcHRD
RiwgQ0ZVUkxDcmVhdGVDb3B5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudCgwLCBidW5kbGVVUkwu
Z2V0KCkpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRlc3RQbHVnaW5EaXJlY3RvcnlO
YW1lU3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4odGVzdFBsdWdpbkRpcmVjdG9yeU5hbWUpLCB3Y3Ns
ZW4odGVzdFBsdWdpbkRpcmVjdG9yeU5hbWUpKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiB0
ZXN0UGx1Z2luRGlyZWN0b3J5VVJMKEFkb3B0Q0YsIENGVVJMQ3JlYXRlQ29weUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQoMCwgYnVuZGxlRGlyZWN0b3J5VVJMLmdldCgpLCB0ZXN0UGx1Z2luRGlyZWN0
b3J5TmFtZVN0cmluZy5nZXQoKSwgdHJ1ZSkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
dGVzdFBsdWdpbkRpcmVjdG9yeVBhdGgoQWRvcHRDRiwgQ0ZVUkxDb3B5RmlsZVN5c3RlbVBhdGgo
dGVzdFBsdWdpbkRpcmVjdG9yeVVSTC5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSkpOwor
ICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMID0gYWRvcHRDRihDRkJ1bmRsZUNvcHlF
eGVjdXRhYmxlVVJMKENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpKSk7CisgICAgUmV0YWluUHRyPENG
VVJMUmVmPiBidW5kbGVEaXJlY3RvcnlVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlQ29weURlbGV0
aW5nTGFzdFBhdGhDb21wb25lbnQoMCwgYnVuZGxlVVJMLmdldCgpKSk7CisgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiB0ZXN0UGx1Z2luRGlyZWN0b3J5TmFtZVN0cmluZyA9IGFkb3B0Q0YoQ0ZT
dHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNo
YXIqPih0ZXN0UGx1Z2luRGlyZWN0b3J5TmFtZSksIHdjc2xlbih0ZXN0UGx1Z2luRGlyZWN0b3J5
TmFtZSkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHRlc3RQbHVnaW5EaXJlY3RvcnlVUkwg
PSBhZG9wdENGKENGVVJMQ3JlYXRlQ29weUFwcGVuZGluZ1BhdGhDb21wb25lbnQoMCwgYnVuZGxl
RGlyZWN0b3J5VVJMLmdldCgpLCB0ZXN0UGx1Z2luRGlyZWN0b3J5TmFtZVN0cmluZy5nZXQoKSwg
dHJ1ZSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdGVzdFBsdWdpbkRpcmVjdG9yeVBh
dGggPSBhZG9wdENGKENGVVJMQ29weUZpbGVTeXN0ZW1QYXRoKHRlc3RQbHVnaW5EaXJlY3RvcnlV
UkwuZ2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUpKTsKICAgICBtX3Rlc3RQbHVnaW5EaXJl
Y3RvcnkuYWRvcHQoV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcodGVzdFBsdWdpbkRpcmVjdG9y
eVBhdGguZ2V0KCkpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200910</attachid>
            <date>2013-05-07 09:10:23 -0700</date>
            <delta_ts>2013-05-07 18:27:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115657-20130507090929.patch</filename>
            <type>text/plain</type>
            <size>219045</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRhMzBjMDRhMDNjM2Zj
YjhiZWEwMzE4ZTAwYTk0YWZjMzVkNGJiNi4uOGQyYTg5MDk1ZGFjZDZmZGEyYTk4YTJjMzUxZjI2
OWViYTFiZGZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAxMy0wNS0wNiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGFkb3B0Q0YgYW5kIGFk
b3B0TlMgaW4gbW9yZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNTY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgaXMgc2ltaWxhciB0byBteSBsYXN0IHNldCBvZiBjaGFuZ2VzLCBi
dXQgY292ZXJzIGNvZGUgdGhhdCBJIG1pc3NlZCB3aXRoCisgICAgICAgIGdsb2JhbCByZXBsYWNl
IHVzaW5nIHRoZSBTYWZhcmkgWGNvZGUgd29ya3NwYWNlLgorCisgICAgICAgICogcGxhdGZvcm0v
Y2Yvd2luL0NlcnRpZmljYXRlQ0ZXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29weUNlcnRp
ZmljYXRlVG9EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBsYXRmb3JtQnVmZmVyZWRUaW1l
UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjpwbGF0Zm9ybU1pblRpbWVTZWVrYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1NYXhUaW1lU2Vla2FibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBsYXRmb3Jt
TWF4VGltZUxvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6dG90YWxCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjptaW1lVHlwZUNhY2hl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjp0
cmFja3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpzaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpj
cmVhdGVBc3NldEZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVQ
bGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVySXRlbSk6
CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpzZXRBc3NldCk6CisgICAgICAgIChXZWJD
b3JlOjpBVkZXcmFwcGVyOjpwbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldy
YXBwZXI6OmNyZWF0ZUFWQ0ZWaWRlb0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBw
ZXI6OmNyZWF0ZUltYWdlR2VuZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDOjps
YW5ndWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FB
bmltYXRpb25XaW4uY3BwOgorICAgICAgICAodG9DQUNGVGltaW5nRnVuY3Rpb24pOgorICAgICAg
ICAoUGxhdGZvcm1DQUFuaW1hdGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlvbik6CisgICAgICAgIChQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRGcm9tVmFsdWUpOgorICAgICAgICAoUGxhdGZvcm1DQUFu
aW1hdGlvbjo6c2V0VG9WYWx1ZSk6CisgICAgICAgIChQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRW
YWx1ZXMpOgorICAgICAgICAoUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0S2V5VGltZXMpOgorICAg
ICAgICAoUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VGltaW5nRnVuY3Rpb25zKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcDoKKyAgICAg
ICAgKFBsYXRmb3JtQ0FMYXllcjo6UGxhdGZvcm1DQUxheWVyKToKKyAgICAgICAgKFBsYXRmb3Jt
Q0FMYXllcjo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcjo6
c2V0Qm9yZGVyQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0
Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHA6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJXaW5J
bnRlcm5hbDo6UGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwpOgorICAgICAgICAoUGxhdGZvcm1D
QUxheWVyV2luSW50ZXJuYWw6OmFkZFRpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
S0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6V0tDQUNGVmlld0xheWVyVHJlZUhvc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93TWFjLm1t
OgorICAgICAgICAoUGxhdGZvcm1WaWRlb1dpbmRvdzo6UGxhdGZvcm1WaWRlb1dpbmRvdyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3Jt
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFD
R1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRQb3N0U2NyaXB0TmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybURhdGFJbml0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3V2luZG93c0JpdG1hcCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6c2V0Um9vdENoaWxkTGF5ZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlj
a1RpbWVWaXN1YWxDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OnJmYzI2MTZEYXRlU3RyaW5nRnJvbVRpbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UVRDRkRpY3Rpb25hcnlDcmVhdGVXaXRoRGF0YUNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRl
eHQ6OnJldHJpZXZlQ3VycmVudEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vV0tDQUltYWdlUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0tDQUltYWdlUXVldWU6
OldLQ0FJbWFnZVF1ZXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6cWNtc091dHB1dERl
dmljZVByb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvb2tpZURv
bWFpbik6CisgICAgICAgIChXZWJDb3JlOjpjb29raWVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvb2tpZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6ZmlsdGVyQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRDb29raWVzRnJv
bURPTSk6CisgICAgICAgIChXZWJDb3JlOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Omdl
dFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlQ29va2llKToKKyAgICAgICAg
KFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjZXJ0aWZpY2F0
ZVBhdGgpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6dXJsRnJvbVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
VVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVXZWJLaXRCdW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6
bG9jYWxpemVkU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2Vu
dFNlYXJjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6bG9hZFJl
Y2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBwbHVnaW5zL21hYy9QbHVnaW5QYWNrYWdlTWFjLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnN0cmluZ0xpc3RGcm9tUmVzb3VyY2VJZCk6CisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
UGx1Z2luUGFja2FnZTo6bG9hZCk6CisgICAgICAgICogcGx1Z2lucy9tYWMvUGx1Z2luVmlld01h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtU3RhcnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZVNhZmFyaTo6cGxhdGZvcm1Gb2N1c1JpbmdDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUcmFjayk6
CisgICAgICAgIFVzZSBhZG9wdENGIGFuZCBhZG9wdE5TIHRocm91Z2hvdXQuCisKIDIwMTMtMDUt
MDcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgQWx3YXlzSW5saW5lLmggZnJvbSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAzMmMyOGY4ZTE1
MDE3MjIyNWYzZmFmOTI1MmU5MzZiMjcxMzZmODU2Li5mZjMwNjcxYjk5M2I5N2RiYmUxZTFjODA1
YjI0Y2Q1MjE0YjQzMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTMt
MDUtMDYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhZG9w
dENGIGFuZCBhZG9wdE5TIGluIG1vcmUgcGxhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU2NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHNpbWlsYXIgdG8gbXkgbGFzdCBzZXQgb2Yg
Y2hhbmdlcywgYnV0IGNvdmVycyBjb2RlIHRoYXQgSSBtaXNzZWQgd2l0aAorICAgICAgICBnbG9i
YWwgcmVwbGFjZSB1c2luZyB0aGUgU2FmYXJpIFhjb2RlIHdvcmtzcGFjZS4KKworICAgICAgICAq
IENGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcDoKKyAgICAgICAgKENGRGljdGlvbmFyeVByb3Bl
cnR5QmFnOjpXcml0ZSk6CisgICAgICAgICogV2ViQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ2Fj
aGU6OnN0YXRpc3RpY3MpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZh
aWxUb1N0YXJ0UGx1Z2luKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJv
bnRlbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmxvY2FsaXplZFN0
cmluZ3NVUkwpOgorICAgICAgICAqIFdlYkRhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJEYXRhYmFzZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UpOgorICAgICAgICAq
IFdlYkRvd25sb2FkQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViRG93bmxvYWQ6OmluaXQpOgorICAg
ICAgICAoV2ViRG93bmxvYWQ6OmluaXRXaXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJEb3dubG9h
ZDo6aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZSk6CisgICAgICAgIChXZWJEb3dubG9hZDo6Y2FuY2Vs
Rm9yUmVzdW1lKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjp1c2VDcmVkZW50aWFsKToKKyAgICAg
ICAgKFdlYkRvd25sb2FkOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAg
ICAgICAqIFdlYkVycm9yLmNwcDoKKyAgICAgICAgKFdlYkVycm9yOjpzc2xQZWVyQ2VydGlmaWNh
dGUpOgorICAgICAgICAqIFdlYkhpc3RvcnkuY3BwOgorICAgICAgICAoY3JlYXRlVXNlckluZm9G
cm9tQXJyYXkpOgorICAgICAgICAoY3JlYXRlVXNlckluZm9Gcm9tSGlzdG9yeUl0ZW0pOgorICAg
ICAgICAoV2ViSGlzdG9yeTo6V2ViSGlzdG9yeSk6CisgICAgICAgIChXZWJIaXN0b3J5Ojpsb2Fk
RnJvbVVSTCk6CisgICAgICAgIChXZWJIaXN0b3J5Ojpsb2FkSGlzdG9yeUd1dHNGcm9tVVJMKToK
KyAgICAgICAgKFdlYkhpc3Rvcnk6OnNhdmVUb1VSTCk6CisgICAgICAgIChXZWJIaXN0b3J5Ojpz
YXZlSGlzdG9yeUd1dHMpOgorICAgICAgICAoV2ViSGlzdG9yeTo6cmVtb3ZlQWxsSXRlbXMpOgor
ICAgICAgICAoV2ViSGlzdG9yeTo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJIaXN0b3J5Ojph
ZGRJdGVtKToKKyAgICAgICAgKFdlYkhpc3Rvcnk6Oml0ZW1Gb3JVUkwpOgorICAgICAgICAoV2Vi
SGlzdG9yeTo6YWRkSXRlbVRvRGF0ZUNhY2hlcyk6CisgICAgICAgIChnZXREYXlCb3VuZGFyaWVz
KToKKyAgICAgICAgKiBXZWJJY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAocG9zdERpZEFkZElj
b25Ob3RpZmljYXRpb24pOgorICAgICAgICAqIFdlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHA6Cisg
ICAgICAgIChjZkJ1bmRsZUZvclN0cmluZ3NCdW5kbGUpOgorICAgICAgICAqIFdlYk11dGFibGVV
UkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYk11dGFibGVVUkxSZXF1ZXN0OjptdXRhYmxlQ29w
eSk6CisgICAgICAgICogV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoY2ZOdW1iZXIpOgor
ICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OmluaXRpYWxpemVEZWZhdWx0U2V0dGluZ3MpOgorICAg
ICAgICAoV2ViUHJlZmVyZW5jZXM6OnZhbHVlRm9yS2V5KToKKyAgICAgICAgKFdlYlByZWZlcmVu
Y2VzOjpzZXRTdHJpbmdWYWx1ZSk6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6bG9hZCk6Cisg
ICAgICAgIChXZWJQcmVmZXJlbmNlczo6bWlncmF0ZVdlYktpdFByZWZlcmVuY2VzVG9DRlByZWZl
cmVuY2VzKToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpzZXRQcmVmZXJlbmNlRm9yVGVzdCk6
CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpzZXRDYWNoZU1vZGVs
KToKKyAgICAgICAgKFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6CisgICAgICAg
IFVzZSBhZG9wdENGIGFuZCBhZG9wdE5TLgorCiAyMDEzLTA1LTA2ICBSb2dlciBGb25nICA8cm9n
ZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQXBwbGVXaW4gYnVpbGQg
Zml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IGQ3NzIyODRlZTQ2NjFhZGQxZThlNWMxZWYxYjRkYmJhODZiYmU2
NjYuLmM0OWNkMjYxODdhMzYyYmFkMjJjZWE0ZWYxYjI3MDJiNTAwMWI0YjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAxMy0wNS0wNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgVXNlIGFkb3B0Q0YgYW5kIGFkb3B0TlMgaW4gbW9yZSBwbGFjZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTY1NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0Rv
d25sb2Fkcy9jZm5ldC9Eb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OnVzZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6c3RhcnQpOgor
ICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWQ6OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkaWRE
ZWNpZGVEZXN0aW5hdGlvbik6CisgICAgICAgIFVzZSBhZG9wdENGIGFuZCBhZG9wdE5TLgorCiAy
MDEzLTA1LTA3ICBKaW53b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KIAogICAg
ICAgICBbRUZMXVtXSzJdIEFkZCBld2sgQVBJcyBmb3Igc2V0dGluZyBhbmQgZ2V0dGluZyB1c2Vy
IGFnZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi93aW4vQ2VydGlm
aWNhdGVDRldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNh
dGVDRldpbi5jcHAKaW5kZXggODhlYTkzM2ZiNmQyZDEyZGFkYjVmYmI1YTFlMTRmZjgzNGM0NTNm
ZS4uODIwM2MwMzZhMzYxMjU3ZTUyZTgwNWQxZmY5NTg4NGM2YjQ4MWE2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yvd2luL0NlcnRpZmljYXRlQ0ZXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcApAQCAt
NDYsNyArNDYsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjb3B5Q2VydGlmaWNhdGVUb0RhdGEo
UENDRVJUX0NPTlRFWFQgY2VydGlmaWNhdGUpCiB7CiAgICAgc3RhdGljIENGQWxsb2NhdG9yUmVm
IGNlcnREZWFsbG9jID0gY3JlYXRlQ2VydENvbnRleHREZWFsbG9jYXRvcigpOwogICAgIFBDQ0VS
VF9DT05URVhUIGNlcnRpZmljYXRlQ29weSA9IENlcnREdXBsaWNhdGVDZXJ0aWZpY2F0ZUNvbnRl
eHQoY2VydGlmaWNhdGUpOwotICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPihBZG9wdENG
LCBDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGNlcnRpZmljYXRlQ29weSksIHNpemVvZigqY2VydGlm
aWNhdGVDb3B5KSwgY2VydERlYWxsb2MpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVh
dGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVSW50OCo+KGNlcnRpZmljYXRlQ29weSksIHNpemVvZigqY2VydGlmaWNhdGVDb3B5KSwg
Y2VydERlYWxsb2MpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5j
cHAKaW5kZXggNzliMzI3Y2EyZmJkNmNhZmI0MThiMDNiMTlmOWEwYTdhYWFkMzk4Ny4uYTJkZDgz
NGNiODlkZjBhYTdhOTgwM2IyOGNiYWQxYjk3MmJiMjZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBA
IC01NDgsNyArNTQ4LDcgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW4KICAgICBpZiAoIWF2UGxh
eWVySXRlbShtX2F2ZldyYXBwZXIpKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlcy5yZWxlYXNl
KCk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbG9hZGVkUmFuZ2VzKEFkb3B0Q0YsIEFW
Q0ZQbGF5ZXJJdGVtQ29weUxvYWRlZFRpbWVSYW5nZXMoYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBl
cikpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbG9hZGVkUmFuZ2VzID0gYWRvcHRDRihB
VkNGUGxheWVySXRlbUNvcHlMb2FkZWRUaW1lUmFuZ2VzKGF2UGxheWVySXRlbShtX2F2ZldyYXBw
ZXIpKSk7CiAgICAgaWYgKCFsb2FkZWRSYW5nZXMpCiAgICAgICAgIHJldHVybiB0aW1lUmFuZ2Vz
LnJlbGVhc2UoKTsKIApAQCAtNTcwLDcgKzU3MCw3IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4g
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFu
CiAKIGRvdWJsZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1NaW5U
aW1lU2Vla2FibGUoKSBjb25zdCAKIHsgCi0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHNlZWth
YmxlUmFuZ2VzKEFkb3B0Q0YsIEFWQ0ZQbGF5ZXJJdGVtQ29weVNlZWthYmxlVGltZVJhbmdlcyhh
dlBsYXllckl0ZW0obV9hdmZXcmFwcGVyKSkpOworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBz
ZWVrYWJsZVJhbmdlcyA9IGFkb3B0Q0YoQVZDRlBsYXllckl0ZW1Db3B5U2Vla2FibGVUaW1lUmFu
Z2VzKGF2UGxheWVySXRlbShtX2F2ZldyYXBwZXIpKSk7CiAgICAgaWYgKCFzZWVrYWJsZVJhbmdl
cykgCiAgICAgICAgIHJldHVybiAwOyAKIApAQCAtNTk3LDcgKzU5Nyw3IEBAIGRvdWJsZSBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1NYXhUaW1lU2Vla2FibGUoKSBj
b25zdAogICAgIGlmICghYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHNlZWthYmxlUmFuZ2VzKEFkb3B0Q0Ys
IEFWQ0ZQbGF5ZXJJdGVtQ29weVNlZWthYmxlVGltZVJhbmdlcyhhdlBsYXllckl0ZW0obV9hdmZX
cmFwcGVyKSkpOworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBzZWVrYWJsZVJhbmdlcyA9IGFk
b3B0Q0YoQVZDRlBsYXllckl0ZW1Db3B5U2Vla2FibGVUaW1lUmFuZ2VzKGF2UGxheWVySXRlbSht
X2F2ZldyYXBwZXIpKSk7CiAgICAgaWYgKCFzZWVrYWJsZVJhbmdlcykKICAgICAgICAgcmV0dXJu
IDA7CiAKQEAgLTYyMyw3ICs2MjMsNyBAQCBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6cGxhdGZvcm1NYXhUaW1lTG9hZGVkKCkgY29uc3QKICAgICBpZiAoIWF2UGxheWVy
SXRlbShtX2F2ZldyYXBwZXIpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJldGFpblB0cjxD
RkFycmF5UmVmPiBsb2FkZWRSYW5nZXMoQWRvcHRDRiwgQVZDRlBsYXllckl0ZW1Db3B5TG9hZGVk
VGltZVJhbmdlcyhhdlBsYXllckl0ZW0obV9hdmZXcmFwcGVyKSkpOworICAgIFJldGFpblB0cjxD
RkFycmF5UmVmPiBsb2FkZWRSYW5nZXMgPSBhZG9wdENGKEFWQ0ZQbGF5ZXJJdGVtQ29weUxvYWRl
ZFRpbWVSYW5nZXMoYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpKTsKICAgICBpZiAoIWxvYWRl
ZFJhbmdlcykKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTY1MCw3ICs2NTAsNyBAQCB1bnNpZ25l
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6dG90YWxCeXRlcygpIGNvbnN0CiAg
ICAgICAgIHJldHVybiAwOwogCiAgICAgaW50NjRfdCB0b3RhbE1lZGlhU2l6ZSA9IDA7Ci0gICAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IHRyYWNrcyhBZG9wdENGLCBBVkNGQXNzZXRDb3B5QXNzZXRU
cmFja3MoYXZBc3NldChtX2F2ZldyYXBwZXIpKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+
IHRyYWNrcyA9IGFkb3B0Q0YoQVZDRkFzc2V0Q29weUFzc2V0VHJhY2tzKGF2QXNzZXQobV9hdmZX
cmFwcGVyKSkpOwogICAgIENGSW5kZXggdHJhY2tDb3VudCA9IENGQXJyYXlHZXRDb3VudCh0cmFj
a3MuZ2V0KCkpOwogICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IHRyYWNrQ291bnQ7IGkrKykg
ewogICAgICAgICBBVkNGQXNzZXRUcmFja1JlZiBhc3NldFRyYWNrID0gKEFWQ0ZBc3NldFRyYWNr
UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgodHJhY2tzLmdldCgpLCBpKTsKQEAgLTczNCw3ICs3
MzQsNyBAQCBzdGF0aWMgSGFzaFNldDxTdHJpbmc+IG1pbWVUeXBlQ2FjaGUoKQogICAgICAgICBy
ZXR1cm4gY2FjaGU7CiAgICAgdHlwZUxpc3RJbml0aWFsaXplZCA9IHRydWU7CiAgICAgCi0gICAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IHN1cHBvcnRlZFR5cGVzKEFkb3B0Q0YsIEFWQ0ZVUkxBc3Nl
dENvcHlBdWRpb3Zpc3VhbE1JTUVUeXBlcygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4g
c3VwcG9ydGVkVHlwZXMgPSBhZG9wdENGKEFWQ0ZVUkxBc3NldENvcHlBdWRpb3Zpc3VhbE1JTUVU
eXBlcygpKTsKICAgICAKICAgICBBU1NFUlQoc3VwcG9ydGVkVHlwZXMpOwogICAgIGlmICghc3Vw
cG9ydGVkVHlwZXMpCkBAIC03ODcsMjcgKzc4NywyNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjp0cmFja3NDaGFuZ2VkKCkKICAgICBpZiAoIWF2UGxheWVySXRlbSht
X2F2ZldyYXBwZXIpKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYSBwbGF5ZXIgaXRlbSB5
ZXQsIHNvIGNoZWNrIHdpdGggdGhlIGFzc2V0IGJlY2F1c2Ugc29tZSBhc3NldHMgc3VwcG9ydCBp
bnNwZWN0aW9uCiAgICAgICAgIC8vIHByaW9yIHRvIGJlY29taW5nIHJlYWR5IHRvIHBsYXkuCi0g
ICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiB2aXN1YWxUcmFja3MoQWRvcHRDRiwgQVZDRkFz
c2V0Q29weVRyYWNrc1dpdGhNZWRpYUNoYXJhY3RlcmlzdGljKGF2QXNzZXQobV9hdmZXcmFwcGVy
KSwgQVZDRk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWwpKTsKKyAgICAgICAgUmV0YWluUHRyPENG
QXJyYXlSZWY+IHZpc3VhbFRyYWNrcyA9IGFkb3B0Q0YoQVZDRkFzc2V0Q29weVRyYWNrc1dpdGhN
ZWRpYUNoYXJhY3RlcmlzdGljKGF2QXNzZXQobV9hdmZXcmFwcGVyKSwgQVZDRk1lZGlhQ2hhcmFj
dGVyaXN0aWNWaXN1YWwpKTsKICAgICAgICAgc2V0SGFzVmlkZW8oQ0ZBcnJheUdldENvdW50KHZp
c3VhbFRyYWNrcy5nZXQoKSkpOwogCi0gICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBhdWRp
b1RyYWNrcyhBZG9wdENGLCBBVkNGQXNzZXRDb3B5VHJhY2tzV2l0aE1lZGlhQ2hhcmFjdGVyaXN0
aWMoYXZBc3NldChtX2F2ZldyYXBwZXIpLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGUp
KTsKKyAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGF1ZGlvVHJhY2tzID0gYWRvcHRDRihB
VkNGQXNzZXRDb3B5VHJhY2tzV2l0aE1lZGlhQ2hhcmFjdGVyaXN0aWMoYXZBc3NldChtX2F2Zldy
YXBwZXIpLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGUpKTsKICAgICAgICAgc2V0SGFz
QXVkaW8oQ0ZBcnJheUdldENvdW50KGF1ZGlvVHJhY2tzLmdldCgpKSk7CiAKLSAgICAgICAgUmV0
YWluUHRyPENGQXJyYXlSZWY+IGNhcHRpb25UcmFja3MoQWRvcHRDRiwgQVZDRkFzc2V0Q29weVRy
YWNrc1dpdGhNZWRpYVR5cGUoYXZBc3NldChtX2F2ZldyYXBwZXIpLCBBVkNGTWVkaWFUeXBlQ2xv
c2VkQ2FwdGlvbikpOworICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY2FwdGlvblRyYWNr
cyA9IGFkb3B0Q0YoQVZDRkFzc2V0Q29weVRyYWNrc1dpdGhNZWRpYVR5cGUoYXZBc3NldChtX2F2
ZldyYXBwZXIpLCBBVkNGTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbikpOwogICAgICAgICBzZXRIYXNB
dWRpbyhDRkFycmF5R2V0Q291bnQoY2FwdGlvblRyYWNrcy5nZXQoKSkpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIGJvb2wgaGFzVmlkZW8gPSBmYWxzZTsKICAgICAgICAgYm9vbCBoYXNBdWRpbyA9
IGZhbHNlOwogICAgICAgICBib29sIGhhc0NhcHRpb25zID0gZmFsc2U7CiAKLSAgICAgICAgUmV0
YWluUHRyPENGQXJyYXlSZWY+IHRyYWNrcyhBZG9wdENGLCBBVkNGUGxheWVySXRlbUNvcHlUcmFj
a3MoYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpKTsKKyAgICAgICAgUmV0YWluUHRyPENGQXJy
YXlSZWY+IHRyYWNrcyA9IGFkb3B0Q0YoQVZDRlBsYXllckl0ZW1Db3B5VHJhY2tzKGF2UGxheWVy
SXRlbShtX2F2ZldyYXBwZXIpKSk7CiAKICAgICAgICAgQ0ZJbmRleCB0cmFja0NvdW50ID0gQ0ZB
cnJheUdldENvdW50KHRyYWNrcy5nZXQoKSk7CiAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsg
aSA8IHRyYWNrQ291bnQ7IGkrKykgewogICAgICAgICAgICAgQVZDRlBsYXllckl0ZW1UcmFja1Jl
ZiB0cmFjayA9IChBVkNGUGxheWVySXRlbVRyYWNrUmVmKShDRkFycmF5R2V0VmFsdWVBdEluZGV4
KHRyYWNrcy5nZXQoKSwgaSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoQVZDRlBs
YXllckl0ZW1UcmFja0lzRW5hYmxlZCh0cmFjaykpIHsKLSAgICAgICAgICAgICAgICBSZXRhaW5Q
dHI8QVZDRkFzc2V0VHJhY2tSZWY+IGFzc2V0VHJhY2soQWRvcHRDRiwgQVZDRlBsYXllckl0ZW1U
cmFja0NvcHlBc3NldFRyYWNrKHRyYWNrKSk7CisgICAgICAgICAgICAgICAgUmV0YWluUHRyPEFW
Q0ZBc3NldFRyYWNrUmVmPiBhc3NldFRyYWNrID0gYWRvcHRDRihBVkNGUGxheWVySXRlbVRyYWNr
Q29weUFzc2V0VHJhY2sodHJhY2spKTsKICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBtZWRp
YVR5cGUgPSBBVkNGQXNzZXRUcmFja0dldE1lZGlhVHlwZShhc3NldFRyYWNrLmdldCgpKTsKICAg
ICAgICAgICAgICAgICBpZiAoIW1lZGlhVHlwZSkKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRjo6c2l6ZUNoYW5nZWQoKQogICAgIC8vIEFWQXNzZXQncyAnbmF0dXJhbFNpemUnIHByb3Bl
cnR5IG9ubHkgY29uc2lkZXJzIHRoZSBtb3ZpZSdzIGZpcnN0IHZpZGVvIHRyYWNrLCBzbyB3ZSBu
ZWVkIHRvIGNvbXB1dGUKICAgICAvLyB0aGUgdW5pb24gb2YgYWxsIHZpc3VhbCB0cmFjayByZWN0
cy4KICAgICBDR1JlY3QgdHJhY2tSZWN0VW5pb24gPSBDR1JlY3RaZXJvOwotICAgIFJldGFpblB0
cjxDRkFycmF5UmVmPiB0cmFja3MoQWRvcHRDRiwgQVZDRkFzc2V0Q29weVRyYWNrc1dpdGhNZWRp
YVR5cGUoYXZBc3NldChtX2F2ZldyYXBwZXIpLCBBVkNGTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3Vh
bCkpOworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiB0cmFja3MgPSBhZG9wdENGKEFWQ0ZBc3Nl
dENvcHlUcmFja3NXaXRoTWVkaWFUeXBlKGF2QXNzZXQobV9hdmZXcmFwcGVyKSwgQVZDRk1lZGlh
Q2hhcmFjdGVyaXN0aWNWaXN1YWwpKTsKICAgICBDRkluZGV4IHRyYWNrQ291bnQgPSBDRkFycmF5
R2V0Q291bnQodHJhY2tzLmdldCgpKTsKICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCB0cmFj
a0NvdW50OyBpKyspIHsKICAgICAgICAgQVZDRkFzc2V0VHJhY2tSZWYgYXNzZXRUcmFjayA9IChB
VkNGQXNzZXRUcmFja1JlZikoQ0ZBcnJheUdldFZhbHVlQXRJbmRleCh0cmFja3MuZ2V0KCksIGkp
KTsKQEAgLTk4MywxNyArOTgzLDE3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JV
UkwoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgQVNTRVJUKCFhdkFzc2V0KCkpOwogCi0gICAg
UmV0YWluUHRyPENGVVJMUmVmPiB1cmxSZWYoQWRvcHRDRiwgS1VSTChQYXJzZWRVUkxTdHJpbmcs
IHVybCkuY3JlYXRlQ0ZVUkwoKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxSZWYgPSBh
ZG9wdENGKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLmNyZWF0ZUNGVVJMKCkpOwogCiAgICAg
QVZDRlVSTEFzc2V0UmVmIGFzc2V0UmVmID0gQVZDRlVSTEFzc2V0Q3JlYXRlV2l0aFVSTEFuZE9w
dGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsUmVmLmdldCgpLCAwLCBtX25vdGlmaWNhdGlv
blF1ZXVlKTsKLSAgICBtX2F2QXNzZXQuYWRvcHRDRihhc3NldFJlZik7CisgICAgbV9hdkFzc2V0
ID0gYWRvcHRDRihhc3NldFJlZik7CiB9CiAKIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVy
KElEaXJlY3QzRERldmljZTkqIGQzZERldmljZSkKIHsKICAgICBBU1NFUlQoIWF2UGxheWVyKCkg
JiYgYXZQbGF5ZXJJdGVtKCkpOwogCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlS
ZWY+IG9wdGlvbnNSZWYoQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rp
b25hcnlSZWY+IG9wdGlvbnNSZWYgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAm
a0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgaWYgKGQzZERldmljZSkg
ewogICAgICAgICAvLyBRSSBmb3IgYW4gSURpcmVjdDNERGV2aWNlOUV4IGludGVyZmFjZSwgaXQg
aXMgcmVxdWlyZWQgdG8gZG8gSFcgdmlkZW8gZGVjb2RpbmcuCkBAIC0xMDA3LDcgKzEwMDcsNyBA
QCB2b2lkIEFWRldyYXBwZXI6OmNyZWF0ZVBsYXllcihJRGlyZWN0M0REZXZpY2U5KiBkM2REZXZp
Y2UpCiAKICAgICAvLyBGSVhNRTogV2UgbmVlZCBhIHdheSB0byBjcmVhdGUgYSBBVlBsYXllciB3
aXRob3V0IGFuIEFWUGxheWVySXRlbSwgc2VlIDxyZGFyOi8vcHJvYmxlbS85ODc3NzMwPi4KICAg
ICBBVkNGUGxheWVyUmVmIHBsYXllclJlZiA9IEFWQ0ZQbGF5ZXJDcmVhdGVXaXRoUGxheWVySXRl
bUFuZE9wdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXJJdGVtKCksIG9wdGlvbnNS
ZWYuZ2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUpOwotICAgIG1fYXZQbGF5ZXIuYWRvcHRDRihw
bGF5ZXJSZWYpOworICAgIG1fYXZQbGF5ZXIgPSBhZG9wdENGKHBsYXllclJlZik7CiAKICAgICBp
ZiAobV9kM2REZXZpY2UgJiYgQVZDRlBsYXllclNldERpcmVjdDNERGV2aWNlUHRyKCkpCiAgICAg
ICAgIEFWQ0ZQbGF5ZXJTZXREaXJlY3QzRERldmljZVB0cigpKHBsYXllclJlZiwgbV9kM2REZXZp
Y2UuZ2V0KCkpOwpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpjcmVhdGVQ
bGF5ZXIoSURpcmVjdDNERGV2aWNlOSogZDNkRGV2aWNlKQogICAgIC8vIEFkZCBhIHRpbWUgb2Jz
ZXJ2ZXIsIGFzayB0byBiZSBjYWxsZWQgaW5mcmVxdWVudGx5IGJlY2F1c2Ugd2UgZG9uJ3QgcmVh
bGx5IHdhbnQgcGVyaW9kaWMgY2FsbGJhY2tzIGJ1dAogICAgIC8vIG91ciBvYnNlcnZlciB3aWxs
IGFsc28gYmUgY2FsbGVkIHdoZW5ldmVyIGEgc2VlayBoYXBwZW5zLgogICAgIGNvbnN0IGRvdWJs
ZSB2ZXJ5TG9uZ0ludGVydmFsID0gNjAqNjAqNjAqMjQqMzA7Ci0gICAgbV90aW1lT2JzZXJ2ZXIu
YWRvcHRDRihBVkNGUGxheWVyQ3JlYXRlUGVyaW9kaWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbChw
bGF5ZXJSZWYsIENNVGltZU1ha2UodmVyeUxvbmdJbnRlcnZhbCwgMTApLCBtX25vdGlmaWNhdGlv
blF1ZXVlLCAmcGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0KCkp
KTsKKyAgICBtX3RpbWVPYnNlcnZlciA9IGFkb3B0Q0YoQVZDRlBsYXllckNyZWF0ZVBlcmlvZGlj
VGltZU9ic2VydmVyRm9ySW50ZXJ2YWwocGxheWVyUmVmLCBDTVRpbWVNYWtlKHZlcnlMb25nSW50
ZXJ2YWwsIDEwKSwgbV9ub3RpZmljYXRpb25RdWV1ZSwgJnBlcmlvZGljVGltZU9ic2VydmVyQ2Fs
bGJhY2ssIGNhbGxiYWNrQ29udGV4dCgpKSk7CiB9CiAKIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRl
UGxheWVySXRlbSgpCkBAIC0xMDI5LDcgKzEwMjksNyBAQCB2b2lkIEFWRldyYXBwZXI6OmNyZWF0
ZVBsYXllckl0ZW0oKQogCiAgICAgLy8gQ3JlYXRlIHRoZSBwbGF5ZXIgaXRlbSBzbyB3ZSBiZWdp
biBsb2FkaW5nIG1lZGlhIGRhdGEuCiAgICAgQVZDRlBsYXllckl0ZW1SZWYgaXRlbVJlZiA9IEFW
Q0ZQbGF5ZXJJdGVtQ3JlYXRlV2l0aEFzc2V0KGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2QXNzZXQo
KSwgbV9ub3RpZmljYXRpb25RdWV1ZSk7Ci0gICAgbV9hdlBsYXllckl0ZW0uYWRvcHRDRihpdGVt
UmVmKTsKKyAgICBtX2F2UGxheWVySXRlbSA9IGFkb3B0Q0YoaXRlbVJlZik7CiAKICAgICBDRk5v
dGlmaWNhdGlvbkNlbnRlclJlZiBjZW50ZXIgPSBDRk5vdGlmaWNhdGlvbkNlbnRlckdldExvY2Fs
Q2VudGVyKCk7CiAgICAgQVNTRVJUKGNlbnRlcik7CkBAIC0xMTc4LDcgKzExNzgsNyBAQCB2b2lk
IEFWRldyYXBwZXI6OnNldEFzc2V0KEFWQ0ZVUkxBc3NldFJlZiBhc3NldCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgQVZDRkFzc2V0Q2FuY2VsTG9hZGluZyhhdkFzc2V0KCkpOwotICAgIG1fYXZB
c3NldC5hZG9wdENGKGFzc2V0KTsKKyAgICBtX2F2QXNzZXQgPSBhZG9wdENGKGFzc2V0KTsKIH0K
IAogUGxhdGZvcm1MYXllciogQVZGV3JhcHBlcjo6cGxhdGZvcm1MYXllcigpCkBAIC0xMTk5LDcg
KzExOTksNyBAQCBQbGF0Zm9ybUxheWVyKiBBVkZXcmFwcGVyOjpwbGF0Zm9ybUxheWVyKCkKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICBDQUNGTGF5ZXJSZWYgbGF5ZXJSZWYgPSBBVkNGUGxheWVy
TGF5ZXJDb3B5Q0FDRkxheWVyKG1fYXZDRlZpZGVvTGF5ZXIuZ2V0KCkpOwotICAgIG1fY2FWaWRl
b0xheWVyLmFkb3B0Q0YobGF5ZXJSZWYpOworICAgIG1fY2FWaWRlb0xheWVyID0gYWRvcHRDRihs
YXllclJlZik7CiAKICAgICBDQUNGTGF5ZXJJbnNlcnRTdWJsYXllcihtX3ZpZGVvTGF5ZXJXcmFw
cGVyLT5wbGF0Zm9ybUxheWVyKCksIG1fY2FWaWRlb0xheWVyLmdldCgpLCAwKTsKICAgICBtX3Zp
ZGVvTGF5ZXJXcmFwcGVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CkBAIC0xMjE0
LDcgKzEyMTQsNyBAQCB2b2lkIEFWRldyYXBwZXI6OmNyZWF0ZUFWQ0ZWaWRlb0xheWVyKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGxheWVyIHdpbGwgZ2V0IGhvb2tlZCB1cCB2aWEg
UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyQ29uZmlndXJhdGlvbigpLgot
ICAgIG1fYXZDRlZpZGVvTGF5ZXIuYWRvcHRDRihBVkNGUGxheWVyTGF5ZXJDcmVhdGVXaXRoQVZD
RlBsYXllcihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhdlBsYXllcigpLCBtX25vdGlmaWNhdGlvblF1
ZXVlKSk7CisgICAgbV9hdkNGVmlkZW9MYXllciA9IGFkb3B0Q0YoQVZDRlBsYXllckxheWVyQ3Jl
YXRlV2l0aEFWQ0ZQbGF5ZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXIoKSwgbV9ub3Rp
ZmljYXRpb25RdWV1ZSkpOwogICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OmNyZWF0ZUFWQ0ZW
aWRlb0xheWVyKCVwKSAtIHJldHVybmluZyAlcCIsIHRoaXMsIHZpZGVvTGF5ZXIoKSk7CiB9CiAK
QEAgLTEyNDgsNyArMTI0OCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlSW1hZ2VHZW5lcmF0
b3IoKQogICAgIGlmICghYXZBc3NldCgpIHx8IG1faW1hZ2VHZW5lcmF0b3IpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1faW1hZ2VHZW5lcmF0b3IuYWRvcHRDRihBVkNGQXNzZXRJbWFnZUdlbmVy
YXRvckNyZWF0ZVdpdGhBc3NldChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhdkFzc2V0KCkpKTsKKyAg
ICBtX2ltYWdlR2VuZXJhdG9yID0gYWRvcHRDRihBVkNGQXNzZXRJbWFnZUdlbmVyYXRvckNyZWF0
ZVdpdGhBc3NldChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhdkFzc2V0KCkpKTsKIAogICAgIEFWQ0ZB
c3NldEltYWdlR2VuZXJhdG9yU2V0QXBlcnR1cmVNb2RlKG1faW1hZ2VHZW5lcmF0b3IuZ2V0KCks
IEFWQ0ZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVyZSk7CiAgICAg
QVZDRkFzc2V0SW1hZ2VHZW5lcmF0b3JTZXRSZXF1ZXN0ZWRUaW1lVG9sZXJhbmNlQmVmb3JlKG1f
aW1hZ2VHZW5lcmF0b3IuZ2V0KCksIGtDTVRpbWVaZXJvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMu
bW0KaW5kZXggZWRiMzE0MjFiNTMzYzRlODEwYzJiNDg3OWU4MzI2ZTZkYmM3MjA3NS4uOWJhZjM5
NjZlN2RjYmVmZmJlYzZmZGU4YWQ2NTQzNWNhYTIwM2VjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9i
akMubW0KQEAgLTE3MCw3ICsxNzAsNyBAQCBBdG9taWNTdHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWRk9iakM6Omxhbmd1YWdlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGVtcHR5
QXRvbTsKIAogICAgIE5TU3RyaW5nICpsYW5ndWFnZUNvZGUgPSBbW21fcGxheWVySXRlbVRyYWNr
IGFzc2V0VHJhY2tdIGxhbmd1YWdlQ29kZV07Ci0gICAgUmV0YWluUHRyPE5TTG9jYWxlPiBsb2Nh
bGUoQWRvcHROUywgW1tOU0xvY2FsZSBhbGxvY10gaW5pdFdpdGhMb2NhbGVJZGVudGlmaWVyOmxh
bmd1YWdlQ29kZV0pOworICAgIFJldGFpblB0cjxOU0xvY2FsZT4gbG9jYWxlID0gYWRvcHROUyhb
W05TTG9jYWxlIGFsbG9jXSBpbml0V2l0aExvY2FsZUlkZW50aWZpZXI6bGFuZ3VhZ2VDb2RlXSk7
CiAgICAgcmV0dXJuIFtsb2NhbGUgbG9jYWxlSWRlbnRpZmllcl07CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0
aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0
Zm9ybUNBQW5pbWF0aW9uV2luLmNwcAppbmRleCAwYmU1NWEzOTQyNjlhNjM2M2VjYjI0MGQ3YTkw
NzAwYmJkMzRmMTNiLi5jZTA1NDQwZDg3YTI5Zjk0MTcxNDEwYzBjNGYxYTljMTdjNzUxYjJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZv
cm1DQUFuaW1hdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAg
c3RhdGljIFJldGFpblB0cjxDQUNGVGltaW5nRnVuY3Rpb25SZWY+IHRvQ0FDRlRpbWluZ0Z1bmN0
aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW8KICAgICBBU1NFUlQodGltaW5nRnVuY3Rpb24pOwogICAg
IGlmICh0aW1pbmdGdW5jdGlvbi0+aXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpIHsKICAg
ICAgICAgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiogY3RmID0gc3RhdGljX2Nhc3Q8
Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsKLSAgICAg
ICAgcmV0dXJuIFJldGFpblB0cjxDQUNGVGltaW5nRnVuY3Rpb25SZWY+KEFkb3B0Q0YsIENBQ0ZU
aW1pbmdGdW5jdGlvbkNyZWF0ZShzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT54MSgpKSwgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGN0Zi0+eTEoKSksIHN0YXRpY19jYXN0PGZsb2F0PihjdGYtPngyKCkpLCBz
dGF0aWNfY2FzdDxmbG9hdD4oY3RmLT55MigpKSkpOworICAgICAgICByZXR1cm4gYWRvcHRDRihD
QUNGVGltaW5nRnVuY3Rpb25DcmVhdGUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eDEoKSksIHN0
YXRpY19jYXN0PGZsb2F0PihjdGYtPnkxKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT54Migp
KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eTIoKSkpKTsKICAgICB9CiAgICAgCiAgICAgcmV0
dXJuIENBQ0ZUaW1pbmdGdW5jdGlvbkdldEZ1bmN0aW9uV2l0aE5hbWUoa0NBQ0ZUaW1pbmdGdW5j
dGlvbkxpbmVhcik7CkBAIC0xNDcsOSArMTQ3LDkgQEAgUGxhdGZvcm1DQUFuaW1hdGlvbjo6UGxh
dGZvcm1DQUFuaW1hdGlvbihBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGEK
ICAgICA6IG1fdHlwZSh0eXBlKQogewogICAgIGlmICh0eXBlID09IEJhc2ljKQotICAgICAgICBt
X2FuaW1hdGlvbi5hZG9wdENGKENBQ0ZBbmltYXRpb25DcmVhdGUoa0NBQ0ZCYXNpY0FuaW1hdGlv
bikpOworICAgICAgICBtX2FuaW1hdGlvbiA9IGFkb3B0Q0YoQ0FDRkFuaW1hdGlvbkNyZWF0ZShr
Q0FDRkJhc2ljQW5pbWF0aW9uKSk7CiAgICAgZWxzZQotICAgICAgICBtX2FuaW1hdGlvbi5hZG9w
dENGKENBQ0ZBbmltYXRpb25DcmVhdGUoa0NBQ0ZLZXlmcmFtZUFuaW1hdGlvbikpOworICAgICAg
ICBtX2FuaW1hdGlvbiA9IGFkb3B0Q0YoQ0FDRkFuaW1hdGlvbkNyZWF0ZShrQ0FDRktleWZyYW1l
QW5pbWF0aW9uKSk7CiAgICAgCiAgICAgQ0FDRkFuaW1hdGlvblNldEtleVBhdGgobV9hbmltYXRp
b24uZ2V0KCksIGtleVBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CkBAIC0zMzcsNyAr
MzM3LDcgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRGcm9tVmFsdWUoZmxvYXQgdmFs
dWUpCiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiB2KEFkb3B0Q0YsIENGTnVtYmVyQ3JlYXRlKDAs
IGtDRk51bWJlckZsb2F0VHlwZSwgJnZhbHVlKSk7CisgICAgUmV0YWluUHRyPENGTnVtYmVyUmVm
PiB2ID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ2YWx1
ZSkpOwogICAgIENBQ0ZBbmltYXRpb25TZXRGcm9tVmFsdWUobV9hbmltYXRpb24uZ2V0KCksIHYu
Z2V0KCkpOwogfQogCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9u
OjpzZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHUK
ICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQogICAgICAgICByZXR1cm47CiAgICAg
Ci0gICAgUmV0YWluUHRyPENBQ0ZWZWN0b3JSZWY+IHYoQWRvcHRDRiwgQ0FDRlZlY3RvckNyZWF0
ZVRyYW5zZm9ybSh2YWx1ZSkpOworICAgIFJldGFpblB0cjxDQUNGVmVjdG9yUmVmPiB2ID0gYWRv
cHRDRihDQUNGVmVjdG9yQ3JlYXRlVHJhbnNmb3JtKHZhbHVlKSk7CiAgICAgQ0FDRkFuaW1hdGlv
blNldEZyb21WYWx1ZShtX2FuaW1hdGlvbi5nZXQoKSwgdi5nZXQoKSk7CiB9CiAKQEAgLTM1Niw3
ICszNTYsNyBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldEZyb21WYWx1ZShjb25zdCBG
bG9hdFBvaW50M0QmIHZhbHVlKQogICAgICAgICByZXR1cm47CiAKICAgICBmbG9hdCBhWzNdID0g
eyB2YWx1ZS54KCksIHZhbHVlLnkoKSwgdmFsdWUueigpIH07Ci0gICAgUmV0YWluUHRyPENBQ0ZW
ZWN0b3JSZWY+IHYoQWRvcHRDRiwgQ0FDRlZlY3RvckNyZWF0ZSgzLCBhKSk7CisgICAgUmV0YWlu
UHRyPENBQ0ZWZWN0b3JSZWY+IHYgPSBhZG9wdENGKENBQ0ZWZWN0b3JDcmVhdGUoMywgYSkpOwog
ICAgIENBQ0ZBbmltYXRpb25TZXRGcm9tVmFsdWUobV9hbmltYXRpb24uZ2V0KCksIHYuZ2V0KCkp
OwogfQogCkBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRG
cm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29sb3ImIHZhbHVlKQogICAgICAgICByZXR1cm47CiAK
ICAgICBmbG9hdCBhWzRdID0geyB2YWx1ZS5yZWQoKSwgdmFsdWUuZ3JlZW4oKSwgdmFsdWUuYmx1
ZSgpLCB2YWx1ZS5hbHBoYSgpIH07Ci0gICAgUmV0YWluUHRyPENBQ0ZWZWN0b3JSZWY+IHYoQWRv
cHRDRiwgQ0FDRlZlY3RvckNyZWF0ZSg0LCBhKSk7CisgICAgUmV0YWluUHRyPENBQ0ZWZWN0b3JS
ZWY+IHYgPSBhZG9wdENGKENBQ0ZWZWN0b3JDcmVhdGUoNCwgYSkpOwogICAgIENBQ0ZBbmltYXRp
b25TZXRGcm9tVmFsdWUobV9hbmltYXRpb24uZ2V0KCksIHYuZ2V0KCkpOwogfQogCkBAIC0zOTAs
NyArMzkwLDcgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRUb1ZhbHVlKGZsb2F0IHZh
bHVlKQogICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gdihBZG9wdENGLCBDRk51bWJlckNyZWF0ZSgw
LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ2YWx1ZSkpOworICAgIFJldGFpblB0cjxDRk51bWJlclJl
Zj4gdiA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyRmxvYXRUeXBlLCAmdmFs
dWUpKTsKICAgICBDQUNGQW5pbWF0aW9uU2V0VG9WYWx1ZShtX2FuaW1hdGlvbi5nZXQoKSwgdi5n
ZXQoKSk7CiB9CiAKQEAgLTM5OSw3ICszOTksNyBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246
OnNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQog
ICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJldGFpblB0cjxDQUNGVmVjdG9yUmVmPiB2KEFkb3B0Q0YsIENBQ0ZWZWN0b3JDcmVhdGVUcmFu
c2Zvcm0odmFsdWUpKTsKKyAgICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4gdiA9IGFkb3B0Q0Yo
Q0FDRlZlY3RvckNyZWF0ZVRyYW5zZm9ybSh2YWx1ZSkpOwogICAgIENBQ0ZBbmltYXRpb25TZXRU
b1ZhbHVlKG1fYW5pbWF0aW9uLmdldCgpLCB2LmdldCgpKTsKIH0KIApAQCAtNDA5LDcgKzQwOSw3
IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VG9WYWx1ZShjb25zdCBGbG9hdFBvaW50
M0QmIHZhbHVlKQogICAgICAgICByZXR1cm47CiAKICAgICBmbG9hdCBhWzNdID0geyB2YWx1ZS54
KCksIHZhbHVlLnkoKSwgdmFsdWUueigpIH07Ci0gICAgUmV0YWluUHRyPENBQ0ZWZWN0b3JSZWY+
IHYoQWRvcHRDRiwgQ0FDRlZlY3RvckNyZWF0ZSgzLCBhKSk7CisgICAgUmV0YWluUHRyPENBQ0ZW
ZWN0b3JSZWY+IHYgPSBhZG9wdENGKENBQ0ZWZWN0b3JDcmVhdGUoMywgYSkpOwogICAgIENBQ0ZB
bmltYXRpb25TZXRUb1ZhbHVlKG1fYW5pbWF0aW9uLmdldCgpLCB2LmdldCgpKTsKIH0KIApAQCAt
NDE5LDcgKzQxOSw3IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VG9WYWx1ZShjb25z
dCBXZWJDb3JlOjpDb2xvciYgdmFsdWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZsb2F0IGFb
NF0gPSB7IHZhbHVlLnJlZCgpLCB2YWx1ZS5ncmVlbigpLCB2YWx1ZS5ibHVlKCksIHZhbHVlLmFs
cGhhKCkgfTsKLSAgICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4gdihBZG9wdENGLCBDQUNGVmVj
dG9yQ3JlYXRlKDQsIGEpKTsKKyAgICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4gdiA9IGFkb3B0
Q0YoQ0FDRlZlY3RvckNyZWF0ZSg0LCBhKSk7CiAgICAgQ0FDRkFuaW1hdGlvblNldFRvVmFsdWUo
bV9hbmltYXRpb24uZ2V0KCksIHYuZ2V0KCkpOwogfQogCkBAIC00NDUsOSArNDQ1LDkgQEAgdm9p
ZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFs
dWUpCiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBhcnJheShBZG9wdENGLCBDRkFy
cmF5Q3JlYXRlTXV0YWJsZSgwLCB2YWx1ZS5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3Mp
KTsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGFycmF5ID0gYWRvcHRDRihDRkFy
cmF5Q3JlYXRlTXV0YWJsZSgwLCB2YWx1ZS5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3Mp
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gdihBZG9wdENGLCBDRk51bWJlckNyZWF0ZSgwLCBr
Q0ZOdW1iZXJGbG9hdFR5cGUsICZ2YWx1ZVtpXSkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZOdW1i
ZXJSZWY+IHYgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckZsb2F0VHlwZSwg
JnZhbHVlW2ldKSk7CiAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheS5nZXQoKSwgdi5n
ZXQoKSk7CiAgICAgfQogCkBAIC00NTksOSArNDU5LDkgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4
PiYKICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGFycmF5KEFkb3B0Q0YsIENGQXJy
YXlDcmVhdGVNdXRhYmxlKDAsIHZhbHVlLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykp
OworICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gYXJyYXkgPSBhZG9wdENGKENGQXJy
YXlDcmVhdGVNdXRhYmxlKDAsIHZhbHVlLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgUmV0YWluUHRyPENBQ0ZWZWN0b3JSZWY+IHYoQWRvcHRDRiwgQ0FDRlZlY3RvckNyZWF0ZVRy
YW5zZm9ybSh2YWx1ZVtpXSkpOworICAgICAgICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4gdiA9
IGFkb3B0Q0YoQ0FDRlZlY3RvckNyZWF0ZVRyYW5zZm9ybSh2YWx1ZVtpXSkpOwogICAgICAgICBD
RkFycmF5QXBwZW5kVmFsdWUoYXJyYXkuZ2V0KCksIHYuZ2V0KCkpOwogICAgIH0KIApAQCAtNDcz
LDEwICs0NzMsMTAgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRWYWx1ZXMoY29uc3Qg
VmVjdG9yPEZsb2F0UG9pbnQzRD4mIHZhbHVlKQogICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0g
S2V5ZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgUmV0YWluUHRyPENGTXV0
YWJsZUFycmF5UmVmPiBhcnJheShBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCB2YWx1
ZS5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRh
YmxlQXJyYXlSZWY+IGFycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCB2YWx1
ZS5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGZsb2F0IGFbM10gPSB7IHZhbHVl
W2ldLngoKSwgdmFsdWVbaV0ueSgpLCB2YWx1ZVtpXS56KCkgfTsKLSAgICAgICAgUmV0YWluUHRy
PENBQ0ZWZWN0b3JSZWY+IHYoQWRvcHRDRiwgQ0FDRlZlY3RvckNyZWF0ZSgzLCBhKSk7CisgICAg
ICAgIFJldGFpblB0cjxDQUNGVmVjdG9yUmVmPiB2ID0gYWRvcHRDRihDQUNGVmVjdG9yQ3JlYXRl
KDMsIGEpKTsKICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LmdldCgpLCB2LmdldCgp
KTsKICAgICB9CiAKQEAgLTQ4OCwxMCArNDg4LDEwIEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlv
bjo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb2xvcj4mIHZhbHVlKQogICAgIGlm
IChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAg
Ci0gICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBhcnJheShBZG9wdENGLCBDRkFycmF5
Q3JlYXRlTXV0YWJsZSgwLCB2YWx1ZS5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGFycmF5ID0gYWRvcHRDRihDRkFycmF5
Q3JlYXRlTXV0YWJsZSgwLCB2YWx1ZS5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGZsb2F0IGFbNF0gPSB7IHZhbHVlW2ldLnJlZCgpLCB2YWx1ZVtpXS5ncmVlbigpLCB2YWx1ZVtp
XS5ibHVlKCksIHZhbHVlW2ldLmFscGhhKCkgfTsKLSAgICAgICAgUmV0YWluUHRyPENBQ0ZWZWN0
b3JSZWY+IHYoQWRvcHRDRiwgQ0FDRlZlY3RvckNyZWF0ZSg0LCBhKSk7CisgICAgICAgIFJldGFp
blB0cjxDQUNGVmVjdG9yUmVmPiB2ID0gYWRvcHRDRihDQUNGVmVjdG9yQ3JlYXRlKDQsIGEpKTsK
ICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LmdldCgpLCB2LmdldCgpKTsKICAgICB9
CiAKQEAgLTUxOCw5ICs1MTgsOSBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldEtleVRp
bWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlKQogICAgIGlmIChhbmltYXRpb25UeXBlKCkg
IT0gS2V5ZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgUmV0YWluUHRyPENG
TXV0YWJsZUFycmF5UmVmPiBhcnJheShBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCB2
YWx1ZS5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0ZN
dXRhYmxlQXJyYXlSZWY+IGFycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCB2
YWx1ZS5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRk51bWJl
clJlZj4gdihBZG9wdENGLCBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ2
YWx1ZVtpXSkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHYgPSBhZG9wdENGKENG
TnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckZsb2F0VHlwZSwgJnZhbHVlW2ldKSk7CiAgICAgICAg
IENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheS5nZXQoKSwgdi5nZXQoKSk7CiAgICAgfQogCkBAIC01
NDEsOSArNTQxLDkgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRUaW1pbmdGdW5jdGlv
bnMoY29uc3QgVmVjdG9yPGNvbnN0IFRpbWluZ0Z1bmN0aW9uKj4KICAgICBpZiAoYW5pbWF0aW9u
VHlwZSgpICE9IEtleWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZN
dXRhYmxlQXJyYXlSZWY+IGFycmF5KEFkb3B0Q0YsIENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHZh
bHVlLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOworICAgIFJldGFpblB0cjxDRk11
dGFibGVBcnJheVJlZj4gYXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHZh
bHVlLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgUmV0YWluUHRyPENGTnVtYmVy
UmVmPiB2KEFkb3B0Q0YsIENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckZsb2F0VHlwZSwgJnZh
bHVlW2ldKSk7CisgICAgICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gdiA9IGFkb3B0Q0YoQ0ZO
dW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyRmxvYXRUeXBlLCAmdmFsdWVbaV0pKTsKICAgICAgICAg
Q0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LmdldCgpLCB0b0NBQ0ZUaW1pbmdGdW5jdGlvbih2YWx1
ZVtpXSkuZ2V0KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCAx
OWNmZGZhZDljMmQ3Njc5NjM1NDY3MGE0NWZjODFjZGQ2Y2RhZWYyLi42ODg2NDllMWViNzBiY2Yx
OGI2MWQ5M2VlMmIxMmI0NmI1NDIxOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApA
QCAtMTE2LDcgKzExNiw3IEBAIFBsYXRmb3JtQ0FMYXllcjo6UGxhdGZvcm1DQUxheWVyKExheWVy
VHlwZSBsYXllclR5cGUsIFBsYXRmb3JtTGF5ZXIqIGxheWVyLCBQbGF0CiAgICAgICAgIG1fbGF5
ZXIgPSBsYXllcjsKICAgICB9IGVsc2UgewogICAgICAgICBtX2xheWVyVHlwZSA9IGxheWVyVHlw
ZTsKLSAgICAgICAgbV9sYXllci5hZG9wdENGKENBQ0ZMYXllckNyZWF0ZSh0b0NBQ0ZMYXllclR5
cGUobGF5ZXJUeXBlKSkpOworICAgICAgICBtX2xheWVyID0gYWRvcHRDRihDQUNGTGF5ZXJDcmVh
dGUodG9DQUNGTGF5ZXJUeXBlKGxheWVyVHlwZSkpKTsKIAogICAgICAgICAvLyBDcmVhdGUgdGhl
IFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsIG9iamVjdCBhbmQgcG9pbnQgdG8gaXQgaW4gdGhl
IHVzZXJkYXRhLgogICAgICAgICBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbCogaW50ZXJuID0g
bmV3IFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKHRoaXMpOwpAQCAtNTQwLDggKzU0MCw4IEBA
IHZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHZh
bHVlKQogICAgIENHRmxvYXQgY29tcG9uZW50c1s0XTsKICAgICB2YWx1ZS5nZXRSR0JBKGNvbXBv
bmVudHNbMF0sIGNvbXBvbmVudHNbMV0sIGNvbXBvbmVudHNbMl0sIGNvbXBvbmVudHNbM10pOwog
Ci0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZShBZG9wdENGLCBDR0Nv
bG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7Ci0gICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNv
bG9yKEFkb3B0Q0YsIENHQ29sb3JDcmVhdGUoY29sb3JTcGFjZS5nZXQoKSwgY29tcG9uZW50cykp
OworICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UgPSBhZG9wdENGKENH
Q29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4g
Y29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoY29sb3JTcGFjZS5nZXQoKSwgY29tcG9uZW50
cykpOwogCiAgICAgQ0FDRkxheWVyU2V0QmFja2dyb3VuZENvbG9yKG1fbGF5ZXIuZ2V0KCksIGNv
bG9yLmdldCgpKTsKICAgICBzZXROZWVkc0NvbW1pdCgpOwpAQCAtNTY4LDggKzU2OCw4IEBAIHZv
aWQgUGxhdGZvcm1DQUxheWVyOjpzZXRCb3JkZXJDb2xvcihjb25zdCBDb2xvciYgdmFsdWUpCiAg
ICAgQ0dGbG9hdCBjb21wb25lbnRzWzRdOwogICAgIHZhbHVlLmdldFJHQkEoY29tcG9uZW50c1sw
XSwgY29tcG9uZW50c1sxXSwgY29tcG9uZW50c1syXSwgY29tcG9uZW50c1szXSk7CiAKLSAgICBS
ZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlKEFkb3B0Q0YsIENHQ29sb3JTcGFj
ZUNyZWF0ZURldmljZVJHQigpKTsKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3IoQWRv
cHRDRiwgQ0dDb2xvckNyZWF0ZShjb2xvclNwYWNlLmdldCgpLCBjb21wb25lbnRzKSk7CisgICAg
UmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNw
YWNlQ3JlYXRlRGV2aWNlUkdCKCkpOworICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvciA9
IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShjb2xvclNwYWNlLmdldCgpLCBjb21wb25lbnRzKSk7CiAK
ICAgICBDQUNGTGF5ZXJTZXRCb3JkZXJDb2xvcihtX2xheWVyLmdldCgpLCBjb2xvci5nZXQoKSk7
CiAgICAgc2V0TmVlZHNDb21taXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50
ZXJuYWwuY3BwCmluZGV4IDE1Mjc1YjNhZTVmZTVjMWM2YTRmOGY4NGZkNjY5MGQyMWZjZjU4ZGIu
LjZkMjFmYTgzYjA1Nzk1MmViMDNiZjBhODZmMTM2ZDQ5ZjllNzVjNzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5J
bnRlcm5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcApAQCAtNTEsNyArNTEsNyBAQCBQbGF0Zm9y
bUNBTGF5ZXJXaW5JbnRlcm5hbDo6UGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwoUGxhdGZvcm1D
QUxheWVyKiBvd25lcikKIHsKICAgICBpZiAobV9vd25lci0+bGF5ZXJUeXBlKCkgPT0gUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVXZWJUaWxlZExheWVyKSB7CiAgICAgICAgIC8vIFRpbGVkIGxh
eWVycyBhcmUgcGxhY2VkIGluIGEgY2hpbGQgbGF5ZXIgdGhhdCBpcyBhbHdheXMgdGhlIGZpcnN0
IGNoaWxkIG9mIHRoZSBUaWxlZExheWVyCi0gICAgICAgIG1fdGlsZVBhcmVudC5hZG9wdENGKENB
Q0ZMYXllckNyZWF0ZShrQ0FDRkxheWVyKSk7CisgICAgICAgIG1fdGlsZVBhcmVudCA9IGFkb3B0
Q0YoQ0FDRkxheWVyQ3JlYXRlKGtDQUNGTGF5ZXIpKTsKICAgICAgICAgQ0FDRkxheWVySW5zZXJ0
U3VibGF5ZXIobV9vd25lci0+cGxhdGZvcm1MYXllcigpLCBtX3RpbGVQYXJlbnQuZ2V0KCksIDAp
OwogICAgICAgICB1cGRhdGVUaWxlcygpOwogICAgIH0KQEAgLTM4NCw3ICszODQsNyBAQCB2b2lk
IFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjp0aWxlRGlzcGxheUNhbGxiYWNrKENBQ0ZMYXll
clJlZiBsYXllciwgQ0dDb250ZQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjph
ZGRUaWxlKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0FDRkxheWVyUmVmPiBuZXdMYXllcihBZG9wdENG
LCBDQUNGTGF5ZXJDcmVhdGUoa0NBQ0ZMYXllcikpOworICAgIFJldGFpblB0cjxDQUNGTGF5ZXJS
ZWY+IG5ld0xheWVyID0gYWRvcHRDRihDQUNGTGF5ZXJDcmVhdGUoa0NBQ0ZMYXllcikpOwogICAg
IENBQ0ZMYXllclNldEFuY2hvclBvaW50KG5ld0xheWVyLmdldCgpLCBDR1BvaW50TWFrZSgwLCAx
KSk7CiAgICAgQ0FDRkxheWVyU2V0VXNlckRhdGEobmV3TGF5ZXIuZ2V0KCksIHRoaXMpOwogICAg
IENBQ0ZMYXllclNldERpc3BsYXlDYWxsYmFjayhuZXdMYXllci5nZXQoKSwgdGlsZURpc3BsYXlD
YWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmNwcAppbmRleCBkOTQ1
YzNlMmVhYzY0MGFhOWNhYmUwZDFhMmYxZDMxNWIwOWNmODNiLi4yZjY0YWIxNjBjZjg4YzBmMGY0
MzZiZDZkZTI0ZTU1MTY0MzBkMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9z
dC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgUGFzc1JlZlB0cjxXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9z
dD4gV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpCiB9CiAKIFdLQ0FDRlZpZXdMYXll
clRyZWVIb3N0OjpXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdCgpCi0gICAgOiBtX3ZpZXcoQWRvcHRD
RiwgV0tDQUNGVmlld0NyZWF0ZShrV0tDQUNGVmlld0RyYXdpbmdEZXN0aW5hdGlvbldpbmRvdykp
CisgICAgOiBtX3ZpZXcoYWRvcHRDRihXS0NBQ0ZWaWV3Q3JlYXRlKGtXS0NBQ0ZWaWV3RHJhd2lu
Z0Rlc3RpbmF0aW9uV2luZG93KSkpCiAgICAgLCBtX3ZpZXdOZWVkc1VwZGF0ZSh0cnVlKQogewog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1BsYXRmb3JtVmlkZW9XaW5kb3dNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd01hYy5tbQppbmRleCA5NTJmYjdmNjFl
MTM2Nzg4N2ZjZjJiZmNlZGZkZDQ0OWQ5NGNhYjgxLi5hMzRhYjc4ZTQwNmRmZjYzZDFmOGFhMjk5
MmNhMmZlODliMWI4NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd01hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd01hYy5t
bQpAQCAtMjgsNyArMjgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUGxhdGZvcm1W
aWRlb1dpbmRvdzo6UGxhdGZvcm1WaWRlb1dpbmRvdygpCiB7Ci0gICAgbV93aW5kb3cuYWRvcHRO
UyhbW05TVmlldyBhbGxvY10gaW5pdF0pOworICAgIG1fd2luZG93ID0gYWRvcHROUyhbW05TVmll
dyBhbGxvY10gaW5pdF0pOwogICAgIG1fdmlkZW9XaW5kb3dJZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dW5zaWduZWQgbG9uZz4obV93aW5kb3cuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAKaW5kZXggZWM0MjZjMTU2MmZmZjRhMWVmMDIwODJiMzQ1NWNmNTliNWRlN2Y1OS4u
MjQ2YmIzNWVhMGEyNzAzZWNjYzExZDI4NzI0YjI5ZGZhY2I1ZjE0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcApAQCAtNjQsNyArNjQsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoaW50IHNpemUsIGJvb2wgYm9sZCwg
YgogCiAgICAgSEZPTlQgaGZvbnQgPSBDcmVhdGVGb250SW5kaXJlY3QoJmxvZ0ZvbnQpOwogCi0g
ICAgUmV0YWluUHRyPENHRm9udFJlZj4gY2dGb250KEFkb3B0Q0YsIENHRm9udENyZWF0ZVdpdGhQ
bGF0Zm9ybUZvbnQoJmxvZ0ZvbnQpKTsKKyAgICBSZXRhaW5QdHI8Q0dGb250UmVmPiBjZ0ZvbnQg
PSBhZG9wdENGKENHRm9udENyZWF0ZVdpdGhQbGF0Zm9ybUZvbnQoJmxvZ0ZvbnQpKTsKICAgICBy
ZXR1cm4gRm9udFBsYXRmb3JtRGF0YShoZm9udCwgY2dGb250LmdldCgpLCBzaXplLCBib2xkLCBp
dGFsaWMsIHJlbmRlcmluZ01vZGUgPT0gQWx0ZXJuYXRlUmVuZGVyaW5nTW9kZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFDR1dpbi5jcHAKaW5kZXggZDgwNzBlYjFlODIzYzhmMzAyOWE1N2JmNDE2
MzFlMmJkYzZhNWNhZi4uNGQ3MWYzNzIxMTIxNWY0M2RmNjYxMGU5MzdiOTFmNzk5YzkxZDEyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRQbGF0Zm9ybURhdGFDR1dpbi5jcHAKQEAgLTg4LDE0ICs4OCwxNCBAQCBzdGF0aWMg
Q0ZTdHJpbmdSZWYgZ2V0UG9zdFNjcmlwdE5hbWUoQ0ZTdHJpbmdSZWYgZmFjZU5hbWUsIEhEQyBk
YykKICAgICAgICAgICAgIC8vIFBhc3MgQmlnIEVuZGlhbiBhcyB0aGUgZW5jb2RpbmcuCiAgICAg
ICAgICAgICBpZiAoYnVmZmVyU2l6ZSA8IHN0cmluZ3NPZmZzZXQgKyBuYW1lT2Zmc2V0ICsgbGVu
Z3RoKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgcmVzdWx0LmFk
b3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoTlVMTCwgc3RyaW5ncyArIG5hbWVPZmZzZXQs
IGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEYxNkJFLCBmYWxzZSkpOworICAgICAgICAgICAg
cmVzdWx0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcyhOVUxMLCBzdHJpbmdzICsg
bmFtZU9mZnNldCwgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjE2QkUsIGZhbHNlKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfSBlbHNlIGlmIChwbGF0Zm9ybUlEID09IDEgJiYg
ZW5jb2RpbmdJRCA9PSAwICYmIGxhbmd1YWdlSUQgPT0gMCAmJiBuYW1lSUQgPT0gNikgewogICAg
ICAgICAgICAgLy8gVGhpcyBpcyBhIE1hYyBQb3N0U2NyaXB0IG5hbWUgYW5kIGlzIHRoZXJlZm9y
ZSBBU0NJSS4KICAgICAgICAgICAgIC8vIFNlZSBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS90
ZXh0Zm9udHMvVFRSZWZNYW4vUk0wNi9DaGFwNm5hbWUuaHRtbAogICAgICAgICAgICAgaWYgKGJ1
ZmZlclNpemUgPCBzdHJpbmdzT2Zmc2V0ICsgbmFtZU9mZnNldCArIGxlbmd0aCkKICAgICAgICAg
ICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIHJlc3VsdC5hZG9wdENGKENGU3RyaW5n
Q3JlYXRlV2l0aEJ5dGVzKE5VTEwsIHN0cmluZ3MgKyBuYW1lT2Zmc2V0LCBsZW5ndGgsIGtDRlN0
cmluZ0VuY29kaW5nQVNDSUksIGZhbHNlKSk7CisgICAgICAgICAgICByZXN1bHQgPSBhZG9wdENG
KENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKE5VTEwsIHN0cmluZ3MgKyBuYW1lT2Zmc2V0LCBsZW5n
dGgsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGZhbHNlKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBGb250UGxhdGZvcm1EYXRhOjpw
bGF0Zm9ybURhdGFJbml0KEhGT05UIGZvbnQsIGZsb2F0IHNpemUsIEhEQyBoZGMsIFdDSEFSKgog
ewogICAgIExPR0ZPTlQgbG9nZm9udDsKICAgICBHZXRPYmplY3QoZm9udCwgc2l6ZW9mKGxvZ2Zv
bnQpLCAmbG9nZm9udCk7Ci0gICAgbV9jZ0ZvbnQuYWRvcHRDRihDR0ZvbnRDcmVhdGVXaXRoUGxh
dGZvcm1Gb250KCZsb2dmb250KSk7CisgICAgbV9jZ0ZvbnQgPSBhZG9wdENGKENHRm9udENyZWF0
ZVdpdGhQbGF0Zm9ybUZvbnQoJmxvZ2ZvbnQpKTsKIH0KIAogRm9udFBsYXRmb3JtRGF0YTo6Rm9u
dFBsYXRmb3JtRGF0YShIRk9OVCBoZm9udCwgQ0dGb250UmVmIGZvbnQsIGZsb2F0IHNpemUsIGJv
b2wgYm9sZCwgYm9vbCBvYmxpcXVlLCBib29sIHVzZUdESSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4u
Y3BwCmluZGV4IDA2M2Y3Y2I2OWE5MDk5MTFhMTY1MDllODY1NzhkNDY3MDBkYzI4ZTQuLjkwYjBj
ZmM2YTQ5YjMwZGM3NTMwZTVmMTAwZjU2ZWExMTQ2MTVjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENH
V2luLmNwcApAQCAtMTIyLDkgKzEyMiw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3V2lu
ZG93c0JpdG1hcChXaW5kb3dzQml0bWFwKiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIHBvCiB7CiAg
ICAgLy8gRklYTUU6IENyZWF0aW5nIENGRGF0YSBpcyBub24tb3B0aW1hbCwgYnV0IG5lZWRlZCB0
byBhdm9pZCBjcmFzaGluZyB3aGVuIHByaW50aW5nLiAgSWRlYWxseSB3ZSBzaG91bGQgCiAgICAg
Ly8gbWFrZSBhIGN1c3RvbSBDR0RhdGFQcm92aWRlciB0aGF0IGNvbnRyb2xzIHRoZSBXaW5kb3dz
Qml0bWFwIGxpZmV0aW1lLiAgc2VlIDxyZGFyOi8vNjM5NDQ1NT4KLSAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBpbWFnZURhdGEoQWRvcHRDRiwgQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGltYWdlLT5idWZmZXIoKSwgaW1hZ2UtPmJ1ZmZlckxlbmd0aCgpKSk7Ci0gICAgUmV0YWlu
UHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIoQWRvcHRDRiwgQ0dEYXRhUHJvdmlk
ZXJDcmVhdGVXaXRoQ0ZEYXRhKGltYWdlRGF0YS5nZXQoKSkpOwotICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBjZ0ltYWdlKEFkb3B0Q0YsIENHSW1hZ2VDcmVhdGUoaW1hZ2UtPnNpemUoKS53aWR0
aCgpLCBpbWFnZS0+c2l6ZSgpLmhlaWdodCgpLCA4LCAzMiwgaW1hZ2UtPmJ5dGVzUGVyUm93KCks
IGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSwKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBpbWFn
ZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBpbWFnZS0+
YnVmZmVyKCksIGltYWdlLT5idWZmZXJMZW5ndGgoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQ
cm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdp
dGhDRkRhdGEoaW1hZ2VEYXRhLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNn
SW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2UtPnNpemUoKS53aWR0aCgpLCBpbWFn
ZS0+c2l6ZSgpLmhlaWdodCgpLCA4LCAzMiwgaW1hZ2UtPmJ5dGVzUGVyUm93KCksIGRldmljZVJH
QkNvbG9yU3BhY2VSZWYoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VB
bHBoYUZpcnN0LCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVu
dERlZmF1bHQpKTsKICAgICBDR0NvbnRleHREcmF3SW1hZ2UobV9kYXRhLT5tX2NnQ29udGV4dC5n
ZXQoKSwgQ0dSZWN0TWFrZShwb2ludC54KCksIHBvaW50LnkoKSwgaW1hZ2UtPnNpemUoKS53aWR0
aCgpLCBpbWFnZS0+c2l6ZSgpLmhlaWdodCgpKSwgY2dJbWFnZS5nZXQoKSk7ICAgCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAK
aW5kZXggODAwNzUxMTY5MTYwNDZkZDc2ZTlhY2Y0ZjgwM2IxNDEwNGU4OWFlYi4uN2QwZWY4ZTI5
YmMxYWY4YWUwNzRiMmRkYmMyMWIwNjA0Y2EzNjIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApAQCAtNTAsNyArNTAsNyBA
QCBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBCaXRtYXBJbWFnZTo6Y3JlYXRlKEhCSVRNQVAgaEJp
dG1hcCkKICAgICBpZiAoIWRpYlNlY3Rpb24uZHNCbS5ibUJpdHMpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dChBZG9wdENGLCBD
R0JpdG1hcENvbnRleHRDcmVhdGUoZGliU2VjdGlvbi5kc0JtLmJtQml0cywgZGliU2VjdGlvbi5k
c0JtLmJtV2lkdGgsIGRpYlNlY3Rpb24uZHNCbS5ibUhlaWdodCwgOCwKKyAgICBSZXRhaW5QdHI8
Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVh
dGUoZGliU2VjdGlvbi5kc0JtLmJtQml0cywgZGliU2VjdGlvbi5kc0JtLmJtV2lkdGgsIGRpYlNl
Y3Rpb24uZHNCbS5ibUhlaWdodCwgOCwKICAgICAgICAgZGliU2VjdGlvbi5kc0JtLmJtV2lkdGhC
eXRlcywgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRs
ZSB8IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpKTsKIAogICAgIC8vIFRoZSBCaXRt
YXBJbWFnZSB0YWtlcyBvd25lcnNoaXAgb2YgdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcAppbmRleCBmNmU2Y2JlN2JmNjJkMWFiMDQ1OWUy
MTg5ODcyOGIxZDJhNGYwOTgwLi4yZDYwZDIxODUwMDkzNmM0YmZhOTk4YzBiOTNiMDQyYTAwZmY0
MmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVk
aWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cu
Y3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVu
V2luZG93OjpzZXRSb290Q2hpbGRMYXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0EKICAgICBtX3Jv
b3RDaGlsZC0+c2V0RnJhbWUocm9vdEJvdW5kcyk7CiAgICAgbV9yb290Q2hpbGQtPnNldEJhY2tn
cm91bmRDb2xvcihDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvckJsYWNrKSk7CiAjaWZu
ZGVmIE5ERUJVRwotICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiByZWRDb2xvcihBZG9wdENGLCBD
R0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigxLCAwLCAwLCAxKSk7CisgICAgUmV0YWluUHRyPENHQ29s
b3JSZWY+IHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigxLCAwLCAw
LCAxKSk7CiAgICAgcm9vdExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IocmVkQ29sb3IuZ2V0KCkp
OwogI2Vsc2UKICAgICByb290TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihDR0NvbG9yR2V0Q29u
c3RhbnRDb2xvcihrQ0dDb2xvckJsYWNrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAKaW5kZXggZGQ5YTMxMDY3MTViMjJm
OGU5YjA5YjMyYzE5MWIzZTExODgzNDU3MC4uM2ZmNjVjNzk5ZDFhNDhiNTc5MTk0YTQyZTM5YTdj
NTIyMDg2YmNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlj
a1RpbWVWaXN1YWxDb250ZXh0LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIFN0cmluZyBNZWRpYVBs
YXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpyZmMyNjE2RGF0ZVN0cmluZ0Zyb21U
aW1lKENGQWJzCiAgICAgdGltZSA9IENGR3JlZ29yaWFuRGF0ZUdldEFic29sdXRlVGltZShkYXRl
VmFsdWUsIGdtdFRpbWVab25lKTsKICAgICBTSW50MzIgZGF5ID0gQ0ZBYnNvbHV0ZVRpbWVHZXRE
YXlPZldlZWsodGltZSwgMCk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGRhdGVDRlN0
cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgZGF0ZUZvcm1hdFN0
cmluZywgZGF5U3RyaW5nc1tkYXkgLSAxXSwgZGF0ZVZhbHVlLmRheSwgCisgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBkYXRlQ0ZTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZv
cm1hdCgwLCAwLCBkYXRlRm9ybWF0U3RyaW5nLCBkYXlTdHJpbmdzW2RheSAtIDFdLCBkYXRlVmFs
dWUuZGF5LCAKICAgICAgICAgbW9udGhTdHJpbmdzW2RhdGVWYWx1ZS5tb250aCAtIDFdLCBkYXRl
VmFsdWUueWVhciwgZGF0ZVZhbHVlLmhvdXIsIGRhdGVWYWx1ZS5taW51dGUsIChpbnQpZGF0ZVZh
bHVlLnNlY29uZCkpOwogICAgIHJldHVybiBkYXRlQ0ZTdHJpbmcuZ2V0KCk7CiB9CkBAIC03OTks
NyArNzk5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0
Ojp2aXN1YWxDb250ZXh0VGltZXJGaXJlZChUaW1lcjxNZWQKIAogc3RhdGljIENGRGljdGlvbmFy
eVJlZiBRVENGRGljdGlvbmFyeUNyZWF0ZVdpdGhEYXRhQ2FsbGJhY2soQ0ZBbGxvY2F0b3JSZWYg
YWxsb2NhdG9yLCBjb25zdCBVSW50OCogYnl0ZXMsIENGSW5kZXggbGVuZ3RoKQogewotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGRhdGEoQWRvcHRDRiwgQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9D
b3B5KGFsbG9jYXRvciwgYnl0ZXMsIGxlbmd0aCwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05v
Q29weShhbGxvY2F0b3IsIGJ5dGVzLCBsZW5ndGgsIGtDRkFsbG9jYXRvck51bGwpKTsKICAgICBp
ZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC04OTAsNyArODkwLDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpyZXRyaWV2ZUN1cnJlbnRJ
bWFnZSgpCiAgICAgICAgICAgICAgICAgLy8gQ0FJbWFnZVF1ZXVlIHdpdGhvdXQgYmVpbmcgY29u
dmVydGVkIHRvIGEgbm9uLURlYnVnIENGRGljdGlvbmFyeS4gIEFkZGl0aW9uYWxseSwKICAgICAg
ICAgICAgICAgICAvLyBvbGQgdmVyc2lvbnMgb2YgUXVpY2tUaW1lIHVzZWQgYSBub24tQUFTIENv
cmVGb3VuZGF0aW9uLCBzbyB0aGUgdHlwZXMgYXJlIG5vdCAKICAgICAgICAgICAgICAgICAvLyBp
bnRlcmNoYW5nYWJsZSBldmVuIGluIHRoZSByZWxlYXNlIGNhc2UuCi0gICAgICAgICAgICAgICAg
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gYXR0YWNobWVudHMoQWRvcHRDRiwgUVRDRkRpY3Rp
b25hcnlDcmVhdGVDb3B5V2l0aERhdGFDYWxsYmFjayhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZm
ZXIuYXR0YWNobWVudHMoKSwgJlFUQ0ZEaWN0aW9uYXJ5Q3JlYXRlV2l0aERhdGFDYWxsYmFjaykp
OworICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGF0dGFjaG1lbnRz
ID0gYWRvcHRDRihRVENGRGljdGlvbmFyeUNyZWF0ZUNvcHlXaXRoRGF0YUNhbGxiYWNrKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGJ1ZmZlci5hdHRhY2htZW50cygpLCAmUVRDRkRpY3Rpb25hcnlDcmVh
dGVXaXRoRGF0YUNhbGxiYWNrKSk7CiAgICAgICAgICAgICAgICAgQ0ZUaW1lSW50ZXJ2YWwgaW1h
Z2VUaW1lID0gUVRNb3ZpZVZpc3VhbENvbnRleHQ6OmN1cnJlbnRIb3N0VGltZSgpOwogCiAgICAg
ICAgICAgICAgICAgbV9pbWFnZVF1ZXVlLT5jb2xsZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUltYWdlUXVldWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcAppbmRleCAy
YmYwMjU5NjBiNTcxNjRlN2U5N2Q4OTQ4NWI1M2YyYjBlZWE0MTcwLi5lZjhhMWM1NzNjYTVjOTc3
OTVhM2JiNGEyMWI2M2UwODcxN2YxYzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vV0tDQUltYWdlUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAKQEAgLTU2LDcgKzU2LDcg
QEAgc3RhdGljIHZvaWQgV0tDQUltYWdlUXVldWVSZWxlYXNlKENBSW1hZ2VRdWV1ZVJlZiBpcSkK
IFdLQ0FJbWFnZVF1ZXVlOjpXS0NBSW1hZ2VRdWV1ZSh1aW50MzJfdCB3aWR0aCwgdWludDMyX3Qg
aGVpZ2h0LCB1aW50MzJfdCBjYXBhY2l0eSkKICAgICA6IG1fcHJpdmF0ZShhZG9wdFB0cihuZXcg
V0tDQUltYWdlUXVldWVQcml2YXRlKCkpKQogewotICAgIG1fcHJpdmF0ZS0+bV9pbWFnZVF1ZXVl
LmFkb3B0Q0Yod2tDQUltYWdlUXVldWVDcmVhdGUod2lkdGgsIGhlaWdodCwgY2FwYWNpdHkpKTsK
KyAgICBtX3ByaXZhdGUtPm1faW1hZ2VRdWV1ZSA9IGFkb3B0Q0Yod2tDQUltYWdlUXVldWVDcmVh
dGUod2lkdGgsIGhlaWdodCwgY2FwYWNpdHkpKTsKIH0KIAogV0tDQUltYWdlUXVldWU6OldLQ0FJ
bWFnZVF1ZXVlKGNvbnN0IFdLQ0FJbWFnZVF1ZXVlJiBvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRleCBhMzJmOGM5
MDIxY2EzMTdjYTQzYjQ1YWQ2ZDFmZjM0MzYyZDI0NDcyLi5mYzMzN2FmYmNmOWJmNDhhNTE2YTg3
NjdkMmI4ZmQxMGRiODcwZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtMzA4LDcgKzMwOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICBxY21zSW5pdGlhbGl6ZWQgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgb3B0aW9uYWwgSUNDdjQgc3VwcG9ydC4KICNp
ZiBPUyhEQVJXSU4pCi0gICAgICAgICAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4g
bW9uaXRvckNvbG9yU3BhY2UoQWRvcHRDRiwgQ0dEaXNwbGF5Q29weUNvbG9yU3BhY2UoQ0dNYWlu
RGlzcGxheUlEKCkpKTsKKyAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVm
PiBtb25pdG9yQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dEaXNwbGF5Q29weUNvbG9yU3BhY2UoQ0dN
YWluRGlzcGxheUlEKCkpKTsKICAgICAgICAgICAgICAgICBDRkRhdGFSZWYgaWNjUHJvZmlsZShD
R0NvbG9yU3BhY2VDb3B5SUNDUHJvZmlsZShtb25pdG9yQ29sb3JTcGFjZS5nZXQoKSkpOwogICAg
ICAgICAgICAgICAgIGlmIChpY2NQcm9maWxlKSB7CiAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBsZW5ndGggPSBDRkRhdGFHZXRMZW5ndGgoaWNjUHJvZmlsZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAppbmRl
eCA5Y2FhODkwMmI2ZTI3OGRiZmFjODkxMzQ1MDgxM2Y4M2M0ZWRhY2JjLi4wMzAwYTQwYWZiODA0
OGUzYmExNzA2YTAxNjEzNGNhNTRmOGY2YTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAKQEAgLTIxNiw3ICsy
MTYsNyBAQCBDcmVkZW50aWFsIGNvcmUoQ0ZVUkxDcmVkZW50aWFsUmVmIGNmQ3JlZGVudGlhbCkK
ICAgICAgICAgcmV0dXJuIENyZWRlbnRpYWwoaWRlbnRpdHksIENGVVJMQ3JlZGVudGlhbEdldENl
cnRpZmljYXRlQXJyYXkoY2ZDcmVkZW50aWFsKSwgcGVyc2lzdGVuY2UpOwogI2VuZGlmCiAKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhc3N3b3JkKEFkb3B0Q0YsIENGVVJMQ3JlZGVudGlh
bENvcHlQYXNzd29yZChjZkNyZWRlbnRpYWwpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHBhc3N3b3JkID0gYWRvcHRDRihDRlVSTENyZWRlbnRpYWxDb3B5UGFzc3dvcmQoY2ZDcmVkZW50
aWFsKSk7CiAgICAgcmV0dXJuIENyZWRlbnRpYWwoQ0ZVUkxDcmVkZW50aWFsR2V0VXNlcm5hbWUo
Y2ZDcmVkZW50aWFsKSwgcGFzc3dvcmQuZ2V0KCksIHBlcnNpc3RlbmNlKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNw
cAppbmRleCA5YTE5ODBhODBmZjdmNTM1N2Q0ODg0MzViOTJjM2ZjNTQyZTcxMzA3Li4yODQ3MmU3
N2I3NmExNWZiN2VmYWI1OWEzYzUwZjVjZTJmZDU5YzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcApAQCAtNDgsNyAr
NDgsNyBAQCBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgc19jb29raWVDRiA9IENGU1RSKCJDb29r
aWUiKTsKIAogc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNvb2tpZURvbWFp
bihDRkhUVFBDb29raWVSZWYgY29va2llKQogewotICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+KEFkb3B0Q0YsIENGSFRUUENvb2tpZUNvcHlEb21haW4oY29va2llKSk7CisgICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZIVFRQQ29va2llQ29weURvbWFpbihjb29raWUpKTsKIH0KIAogc3RhdGlj
IGlubGluZSBDRkFic29sdXRlVGltZSBjb29raWVFeHBpcmF0aW9uVGltZShDRkhUVFBDb29raWVS
ZWYgY29va2llKQpAQCAtNTgsMjMgKzU4LDIzIEBAIHN0YXRpYyBpbmxpbmUgQ0ZBYnNvbHV0ZVRp
bWUgY29va2llRXhwaXJhdGlvblRpbWUoQ0ZIVFRQQ29va2llUmVmIGNvb2tpZSkKIAogc3RhdGlj
IGlubGluZSBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNvb2tpZU5hbWUoQ0ZIVFRQQ29va2llUmVm
IGNvb2tpZSkKIHsKLSAgICByZXR1cm4gUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBD
RkhUVFBDb29raWVDb3B5TmFtZShjb29raWUpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkhUVFBD
b29raWVDb3B5TmFtZShjb29raWUpKTsKIH0KIAogc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGNvb2tpZVBhdGgoQ0ZIVFRQQ29va2llUmVmIGNvb2tpZSkKIHsKLSAgICByZXR1
cm4gUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBDRkhUVFBDb29raWVDb3B5UGF0aChj
b29raWUpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkhUVFBDb29raWVDb3B5UGF0aChjb29raWUp
KTsKIH0KIAogc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNvb2tpZVZhbHVl
KENGSFRUUENvb2tpZVJlZiBjb29raWUpCiB7Ci0gICAgcmV0dXJuIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4oQWRvcHRDRiwgQ0ZIVFRQQ29va2llQ29weVZhbHVlKGNvb2tpZSkpOworICAgIHJldHVy
biBhZG9wdENGKENGSFRUUENvb2tpZUNvcHlWYWx1ZShjb29raWUpKTsKIH0KIAogc3RhdGljIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBmaWx0ZXJDb29raWVzKENGQXJyYXlSZWYgdW5maWx0ZXJlZENv
b2tpZXMpCiB7CiAgICAgQ0ZJbmRleCBjb3VudCA9IENGQXJyYXlHZXRDb3VudCh1bmZpbHRlcmVk
Q29va2llcyk7Ci0gICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBmaWx0ZXJlZENvb2tp
ZXMoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgY291bnQsICZrQ0ZUeXBlQXJyYXlD
YWxsQmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGZpbHRlcmVkQ29v
a2llcyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgY291bnQsICZrQ0ZUeXBlQXJy
YXlDYWxsQmFja3MpKTsKICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7
CiAgICAgICAgIENGSFRUUENvb2tpZVJlZiBjb29raWUgPSAoQ0ZIVFRQQ29va2llUmVmKUNGQXJy
YXlHZXRWYWx1ZUF0SW5kZXgodW5maWx0ZXJlZENvb2tpZXMsIGkpOwogCkBAIC05OSwxOSArOTks
MTkgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGEKICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGKEFkb3B0Q0Ys
IHVybC5jcmVhdGVDRlVSTCgpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGZpcnN0UGFydHlG
b3JDb29raWVzQ0YoQWRvcHRDRiwgZmlyc3RQYXJ0eS5jcmVhdGVDRlVSTCgpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHVybENGID0gYWRvcHRDRih1cmwuY3JlYXRlQ0ZVUkwoKSk7CisgICAg
UmV0YWluUHRyPENGVVJMUmVmPiBmaXJzdFBhcnR5Rm9yQ29va2llc0NGID0gYWRvcHRDRihmaXJz
dFBhcnR5LmNyZWF0ZUNGVVJMKCkpOwogCiAgICAgLy8gPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY1MzE+LCA8cmRhcjovLzQ0MDkwMzQ+CiAgICAgLy8gY29va2llc1dp
dGhSZXNwb25zZUhlYWRlckZpZWxkcyBkb2Vzbid0IHBhcnNlIGNvb2tpZXMgd2l0aG91dCBhIHZh
bHVlCiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZyA9IHZhbHVlLmNvbnRhaW5zKCc9JykgPyB2YWx1
ZSA6IHZhbHVlICsgIj0iOwogCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjb29raWVTdHJp
bmdDRiA9IGNvb2tpZVN0cmluZy5jcmVhdGVDRlN0cmluZygpOwotICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IGhlYWRlckZpZWxkc0NGKEFkb3B0Q0YsIENGRGljdGlvbmFyeUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LAorICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhlYWRl
ckZpZWxkc0NGID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwKICAgICAgICAgKGNvbnN0IHZvaWQqKikmc19zZXRDb29raWVLZXlDRiwgKGNvbnN0IHZvaWQq
KikmY29va2llU3RyaW5nQ0YsIDEsCiAgICAgICAgICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAotICAgIFJldGFpblB0
cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llQ3JlYXRlV2l0aFJl
c3BvbnNlSGVhZGVyRmllbGRzKGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgUmV0YWluUHRyPENG
QXJyYXlSZWY+IGNvb2tpZXNDRiA9IGFkb3B0Q0YoQ0ZIVFRQQ29va2llQ3JlYXRlV2l0aFJlc3Bv
bnNlSGVhZGVyRmllbGRzKGtDRkFsbG9jYXRvckRlZmF1bHQsCiAgICAgICAgIGhlYWRlckZpZWxk
c0NGLmdldCgpLCB1cmxDRi5nZXQoKSkpOwogCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENv
b2tpZXMoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpbHRlckNvb2tpZXMoY29va2ll
c0NGLmdldCgpKS5nZXQoKSwgdXJsQ0YuZ2V0KCksIGZpcnN0UGFydHlGb3JDb29raWVzQ0YuZ2V0
KCkpOwpAQCAtMTE5LDIxICsxMTksMjEgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGEKIAogU3Ry
aW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
dXJsQ0YoQWRvcHRDRiwgdXJsLmNyZWF0ZUNGVVJMKCkpOworICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gdXJsQ0YgPSBhZG9wdENGKHVybC5jcmVhdGVDRlVSTCgpKTsKIAogICAgIGJvb2wgc2VjdXJl
ID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNv
b2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoc2Vz
c2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHVybENGLmdldCgpLCBzZWN1cmUpKTsKLSAgICBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBoZWFkZXJDRihBZG9wdENGLCBDRkhUVFBDb29raWVD
b3B5UmVxdWVzdEhlYWRlckZpZWxkcyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmaWx0ZXJDb29raWVz
KGNvb2tpZXNDRi5nZXQoKSkuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29v
a2llc0NGID0gYWRvcHRDRihDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoc2Vz
c2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHVybENGLmdldCgpLCBzZWN1cmUpKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBoZWFkZXJDRiA9IGFkb3B0Q0YoQ0ZIVFRQQ29va2ll
Q29weVJlcXVlc3RIZWFkZXJGaWVsZHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmlsdGVyQ29va2ll
cyhjb29raWVzQ0YuZ2V0KCkpLmdldCgpKSk7CiAgICAgcmV0dXJuIChDRlN0cmluZ1JlZilDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShoZWFkZXJDRi5nZXQoKSwgc19jb29raWVDRik7CiB9CiAKIFN0cmlu
ZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwp
CiB7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxDRihBZG9wdENGLCB1cmwuY3JlYXRlQ0ZV
UkwoKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxDRiA9IGFkb3B0Q0YodXJsLmNyZWF0
ZUNGVVJMKCkpOwogCiAgICAgYm9vbCBzZWN1cmUgPSB1cmwucHJvdG9jb2xJcygiaHR0cHMiKTsK
LSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tp
ZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwg
dXJsQ0YuZ2V0KCksIHNlY3VyZSkpOwotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhl
YWRlckNGKEFkb3B0Q0YsIENGSFRUUENvb2tpZUNvcHlSZXF1ZXN0SGVhZGVyRmllbGRzKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGNvb2tpZXNDRi5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkFycmF5
UmVmPiBjb29raWVzQ0YgPSBhZG9wdENGKENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0Zv
clVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlY3VyZSkp
OworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhlYWRlckNGID0gYWRvcHRDRihDRkhU
VFBDb29raWVDb3B5UmVxdWVzdEhlYWRlckZpZWxkcyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjb29r
aWVzQ0YuZ2V0KCkpKTsKICAgICByZXR1cm4gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZh
bHVlKGhlYWRlckNGLmdldCgpLCBzX2Nvb2tpZUNGKTsKIH0KIApAQCAtMTQ3LDEwICsxNDcsMTAg
QEAgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnQKIHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAK
LSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGKEFkb3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgp
KTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGID0gYWRvcHRDRih1cmwuY3JlYXRlQ0ZV
UkwoKSk7CiAKICAgICBib29sIHNlbmRTZWN1cmVDb29raWVzID0gdXJsLnByb3RvY29sSXMoImh0
dHBzIik7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhU
VFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCku
Z2V0KCksIHVybENGLmdldCgpLCBzZW5kU2VjdXJlQ29va2llcykpOworICAgIFJldGFpblB0cjxD
RkFycmF5UmVmPiBjb29raWVzQ0YgPSBhZG9wdENGKENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29v
a2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNl
bmRTZWN1cmVDb29raWVzKSk7CiAKICAgICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50
KGNvb2tpZXNDRi5nZXQoKSk7CiAgICAgcmF3Q29va2llcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQp
OwpAQCAtMTc4LDEwICsxNzgsMTAgQEAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFMKIHsKICAgICBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IHNlc3Npb24u
Y29va2llU3RvcmFnZSgpOwogCi0gICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxDRihBZG9wdENG
LCB1cmwuY3JlYXRlQ0ZVUkwoKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxDRiA9IGFk
b3B0Q0YodXJsLmNyZWF0ZUNGVVJMKCkpOwogCiAgICAgYm9vbCBzZW5kU2VjdXJlQ29va2llcyA9
IHVybC5wcm90b2NvbElzKCJodHRwcyIpOwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29r
aWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9yVVJMKGNvb2tp
ZVN0b3JhZ2UuZ2V0KCksIHVybENGLmdldCgpLCBzZW5kU2VjdXJlQ29va2llcykpOworICAgIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0YgPSBhZG9wdENGKENGSFRUUENvb2tpZVN0b3Jh
Z2VDb3B5Q29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCB1cmxDRi5nZXQoKSwgc2Vu
ZFNlY3VyZUNvb2tpZXMpKTsKIAogICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQo
Y29va2llc0NGLmdldCgpKTsKICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBjb3VudDsgaSsr
KSB7CkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFMKIAogdm9pZCBn
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewotICAgIFJldGFpblB0cjxDRkFycmF5
UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzKHNl
c3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+
IGNvb2tpZXNDRiA9IGFkb3B0Q0YoQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzKHNlc3Np
b24uY29va2llU3RvcmFnZSgpLmdldCgpKSk7CiAgICAgaWYgKCFjb29raWVzQ0YpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3Ru
YW1lKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nCiB7
CiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBz
ZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsKIAotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29r
aWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzKGNvb2tpZVN0b3Jh
Z2UuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGID0gYWRvcHRD
RihDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSkpOwog
ICAgIGlmICghY29va2llc0NGKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFu
YWdlci5jcHAKaW5kZXggODYxMjRlYmIyYmI4YmIzMjc5M2I2MzVmMTRmNzE1NzEzMWIyYjYzNi4u
MmIyNjY3NzAzNzdjYWJjZWZjZDc0Y2JiY2MyOTI0YjRlYWI4ZjgxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFu
ZGxlTWFuYWdlci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIENTdHJpbmcgY2VydGlmaWNh
dGVQYXRoKCkKICNpZiBVU0UoQ0YpCiAgICAgQ0ZCdW5kbGVSZWYgd2ViS2l0QnVuZGxlID0gQ0ZC
dW5kbGVHZXRCdW5kbGVXaXRoSWRlbnRpZmllcihDRlNUUigiY29tLmFwcGxlLldlYktpdCIpKTsK
ICAgICBpZiAod2ViS2l0QnVuZGxlKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2Vy
dFVSTFJlZihBZG9wdENGLCBDRkJ1bmRsZUNvcHlSZXNvdXJjZVVSTCh3ZWJLaXRCdW5kbGUsIENG
U1RSKCJjYWNlcnQiKSwgQ0ZTVFIoInBlbSIpLCBDRlNUUigiY2VydGlmaWNhdGVzIikpKTsKKyAg
ICAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZXJ0VVJMUmVmID0gYWRvcHRDRihDRkJ1bmRsZUNv
cHlSZXNvdXJjZVVSTCh3ZWJLaXRCdW5kbGUsIENGU1RSKCJjYWNlcnQiKSwgQ0ZTVFIoInBlbSIp
LCBDRlNUUigiY2VydGlmaWNhdGVzIikpKTsKICAgICAgICAgaWYgKGNlcnRVUkxSZWYpIHsKICAg
ICAgICAgICAgIGNoYXIgcGF0aFtNQVhfUEFUSF07CiAgICAgICAgICAgICBDRlVSTEdldEZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjZXJ0VVJMUmVmLmdldCgpLCBmYWxzZSwgcmVpbnRlcnByZXRf
Y2FzdDxVSW50OCo+KHBhdGgpLCBNQVhfUEFUSCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCmluZGV4IGIzNGMzZmIxZjkx
ZWRjNDZhMGVmMDk0MjQxZGJlNDdlMDU4Mzk5NjYuLjMwZDE2ZThmN2EzYmFmNmUyNDg1ZjYwYWQw
NmQ4ZDc4YzY4MmM5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
bGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBib29s
IHVybEZyb21QYXRoKENGU3RyaW5nUmVmIHBhdGgsIFN0cmluZyYgdXJsKQogICAgIGlmICghcGF0
aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVS
TChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBwYXRoLCBrQ0ZVUkxX
aW5kb3dzUGF0aFN0eWxlLCBmYWxzZSkpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkwg
PSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGgsIGtDRlVSTFdp
bmRvd3NQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgaWYgKCFjZlVSTCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC00ODEsNyArNDgxLDcgQEAgU3RyaW5nIGdldFVSTChJRGF0YU9iamVjdCog
ZGF0YU9iamVjdCwgRHJhZ0RhdGE6OkZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmEKICAg
ICAgICAgICAgIC8vIGZpbGUgdXNpbmcgdW5pY29kZQogICAgICAgICAgICAgd2NoYXJfdCogZGF0
YSA9IHN0YXRpY19jYXN0PHdjaGFyX3QqPihHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpKTsKICAg
ICAgICAgICAgIGlmIChkYXRhICYmIGRhdGFbMF0gJiYgKFBhdGhGaWxlRXhpc3RzKGRhdGEpIHx8
IFBhdGhJc1VOQyhkYXRhKSkpIHsKLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHBhdGhBc0NGU3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVuaUNoYXIqKWRhdGEsIHdjc2xlbihkYXRhKSkp
OworICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0aEFzQ0ZTdHJpbmcg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgKGNvbnN0IFVuaUNoYXIqKWRhdGEsIHdjc2xlbihkYXRhKSkpOwogICAgICAgICAgICAgICAg
IGlmICh1cmxGcm9tUGF0aChwYXRoQXNDRlN0cmluZy5nZXQoKSwgdXJsKSAmJiB0aXRsZSkKICAg
ICAgICAgICAgICAgICAgICAgKnRpdGxlID0gdXJsOwogICAgICAgICAgICAgfQpAQCAtNDkxLDcg
KzQ5MSw3IEBAIFN0cmluZyBnZXRVUkwoSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIERyYWdEYXRh
OjpGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hCiAgICAgICAgICAgICAvLyBmaWxlbmFt
ZSB1c2luZyBhc2NpaQogICAgICAgICAgICAgY2hhciogZGF0YSA9IHN0YXRpY19jYXN0PGNoYXIq
PihHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpKTsKICAgICAgICAgICAgIGlmIChkYXRhICYmIGRh
dGFbMF0gJiYgKFBhdGhGaWxlRXhpc3RzQShkYXRhKSB8fCBQYXRoSXNVTkNBKGRhdGEpKSkgewot
ICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0aEFzQ0ZTdHJpbmcoQWRv
cHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkYXRh
LCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJKSk7CisgICAgICAgICAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBwYXRoQXNDRlN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0
cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkYXRhLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJKSk7
CiAgICAgICAgICAgICAgICAgaWYgKHVybEZyb21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgpLCB1
cmwpICYmIHRpdGxlKQogICAgICAgICAgICAgICAgICAgICAqdGl0bGUgPSB1cmw7CiAgICAgICAg
ICAgICB9CkBAIC01MjMsNyArNTIzLDcgQEAgU3RyaW5nIGdldFVSTChjb25zdCBEcmFnRGF0YU1h
cCogZGF0YSwgRHJhZ0RhdGE6OkZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmEKIAogICAg
IGlmIChzdHJpbmdEYXRhLmlzRW1wdHkoKSB8fCAoIVBhdGhGaWxlRXhpc3RzKHN0cmluZ0RhdGEu
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSkgJiYgIVBhdGhJc1VOQyhzdHJpbmdEYXRh
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpKSkKICAgICAgICAgcmV0dXJuIHVybDsK
LSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5nKEFkb3B0Q0YsIENGU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVuaUNo
YXIgKilzdHJpbmdEYXRhLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIHdjc2xlbihz
dHJpbmdEYXRhLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpKSk7CisgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBwYXRoQXNDRlN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVW5pQ2hhciAqKXN0cmlu
Z0RhdGEuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgd2NzbGVuKHN0cmluZ0RhdGEu
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSkpKTsKICAgICBpZiAodXJsRnJvbVBhdGgo
cGF0aEFzQ0ZTdHJpbmcuZ2V0KCksIHVybCkgJiYgdGl0bGUpCiAgICAgICAgICp0aXRsZSA9IHVy
bDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2Fs
aXplZFN0cmluZ3NXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXpl
ZFN0cmluZ3NXaW4uY3BwCmluZGV4IGNjMmY1YzI5N2VlZjdmMTk4Y2E5NGMxNWIwYzY3Njg3Yjk0
MDczZWIuLmU2ZWE5Yjc2M2QzOTU0NmM0YjMwNWI3NGUxMTgyMDZhNDM0MDA5ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAK
QEAgLTU0LDEwICs1NCwxMCBAQCBzdGF0aWMgQ0ZCdW5kbGVSZWYgY3JlYXRlV2ViS2l0QnVuZGxl
KCkKICAgICBBU1NFUlQobGVuZ3RoKTsKICAgICBBU1NFUlQobGVuZ3RoIDwgV1RGX0FSUkFZX0xF
TkdUSChkbGxQYXRoQnVmZmVyKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGRsbFBh
dGgoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVyc05vQ29weSgwLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPihkbGxQYXRoQnVmZmVyKSwgbGVuZ3RoLCBrQ0ZBbGxv
Y2F0b3JOdWxsKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBkbGxVUkwoQWRvcHRDRiwgQ0ZV
UkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgZGxsUGF0aC5nZXQoKSwga0NGVVJMV2luZG93
c1BhdGhTdHlsZSwgZmFsc2UpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGRsbERpcmVjdG9y
eVVSTChBZG9wdENGLCBDRlVSTENyZWF0ZUNvcHlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50KDAs
IGRsbFVSTC5nZXQoKSkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcmVzb3VyY2VzRGlyZWN0
b3J5VVJMKEFkb3B0Q0YsIENGVVJMQ3JlYXRlQ29weUFwcGVuZGluZ1BhdGhDb21wb25lbnQoMCwg
ZGxsRGlyZWN0b3J5VVJMLmdldCgpLCBDRlNUUigiV2ViS2l0LnJlc291cmNlcyIpLCB0cnVlKSk7
CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBkbGxQYXRoID0gYWRvcHRDRihDRlN0cmluZ0Ny
ZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hh
cio+KGRsbFBhdGhCdWZmZXIpLCBsZW5ndGgsIGtDRkFsbG9jYXRvck51bGwpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IGRsbFVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3Rl
bVBhdGgoMCwgZGxsUGF0aC5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2UpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGRsbERpcmVjdG9yeVVSTCA9IGFkb3B0Q0YoQ0ZVUkxD
cmVhdGVDb3B5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudCgwLCBkbGxVUkwuZ2V0KCkpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHJlc291cmNlc0RpcmVjdG9yeVVSTCA9IGFkb3B0Q0YoQ0ZV
UkxDcmVhdGVDb3B5QXBwZW5kaW5nUGF0aENvbXBvbmVudCgwLCBkbGxEaXJlY3RvcnlVUkwuZ2V0
KCksIENGU1RSKCJXZWJLaXQucmVzb3VyY2VzIiksIHRydWUpKTsKIAogICAgIHJldHVybiBDRkJ1
bmRsZUNyZWF0ZSgwLCByZXNvdXJjZXNEaXJlY3RvcnlVUkwuZ2V0KCkpOwogfQpAQCAtNzgsOCAr
NzgsOCBAQCBTdHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtleSkKICNpZiBVU0Uo
Q0YpCiAgICAgc3RhdGljIENGU3RyaW5nUmVmIG5vdEZvdW5kID0gQ0ZTVFIoImxvY2FsaXplZCBz
dHJpbmcgbm90IGZvdW5kIik7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleVN0cmlu
ZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KE5VTEwsIGtleSwga0NG
U3RyaW5nRW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7Ci0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiByZXN1bHQoQWRvcHRDRiwgQ0ZDb3B5TG9jYWxpemVkU3RyaW5nV2l0aERlZmF1
bHRWYWx1ZShrZXlTdHJpbmcuZ2V0KCksIDAsIHdlYktpdEJ1bmRsZSgpLCBub3RGb3VuZCwgMCkp
OworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5U3RyaW5nID0gYWRvcHRDRihDRlN0cmlu
Z0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KE5VTEwsIGtleSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4
LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXN1bHQg
PSBhZG9wdENGKENGQ29weUxvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoa2V5U3RyaW5n
LmdldCgpLCAwLCB3ZWJLaXRCdW5kbGUoKSwgbm90Rm91bmQsIDApKTsKICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKHJlc3VsdC5nZXQoKSAhPSBub3RGb3VuZCwgImNvdWxkIG5vdCBmaW5kIGxvY2Fs
aXphYmxlIHN0cmluZyAlcyBpbiBidW5kbGUiLCBrZXkpOwogCiAgICAgcmV0dXJuIHJlc3VsdC5n
ZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1
cE1lbnVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVu
dVdpbi5jcHAKaW5kZXggMGQyNTFkZjE4M2M3ZWNjMTk2YjBkYTcyN2VhYzU0ZDQ5YjE5ZTY3ZC4u
NzRjMzA1YWMyOTU3NTZmZjE2NWMwNTdlNzg5Y2Y5MGIyYTRkZTdiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKQEAgLTY1LDcg
KzY1LDcgQEAgdm9pZCBTZWFyY2hQb3B1cE1lbnVXaW46OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3QKIAogICAgIHNpemVfdCBzaXplID0gc2Vh
cmNoSXRlbXMuc2l6ZSgpOwogICAgIGlmIChzaXplKSB7Ci0gICAgICAgIGl0ZW1zLmFkb3B0Q0Yo
Q0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgc2l6ZSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwor
ICAgICAgICBpdGVtcyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgc2l6ZSwgJmtD
RlR5cGVBcnJheUNhbGxCYWNrcykpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNp
emU7ICsraSkKICAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgc2Vh
cmNoSXRlbXNbaV0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQpAQCAtODIsNyArODIs
NyBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cgogCiAjaWYgVVNFKENGKQogICAgIHNlYXJjaEl0
ZW1zLmNsZWFyKCk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGl0ZW1zKEFkb3B0Q0YsIHJl
aW50ZXJwcmV0X2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShhdXRv
c2F2ZUtleShuYW1lKS5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pKSk7
CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGl0ZW1zID0gYWRvcHRDRihyZWludGVycHJldF9j
YXN0PENGQXJyYXlSZWY+KENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoYXV0b3NhdmVLZXkobmFt
ZSkuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKSkpOwogCiAgICAgaWYg
KCFpdGVtcyB8fCBDRkdldFR5cGVJRChpdGVtcy5nZXQoKSkgIT0gQ0ZBcnJheUdldFR5cGVJRCgp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL21h
Yy9QbHVnaW5QYWNrYWdlTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdp
blBhY2thZ2VNYWMuY3BwCmluZGV4IGZlYWQ4OWJjMzUzOGVkY2U3NzAwNWY0NzAyMjYwZGQyMjk0
NTU4NDQuLjZiNmM0MTc3NTUyZjQ3NjAxYWNkYzExYzFmNDhhZTU1ZGI0NTJhYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblBhY2thZ2VNYWMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblBhY2thZ2VNYWMuY3BwCkBAIC0xMTks
NyArMTE5LDcgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IHN0cmluZ0xpc3RGcm9tUmVzb3VyY2VJ
ZChTSW50MTYgaWQpCiAKICAgICBmb3IgKFNJbnQxNiBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsK
ICAgICAgICAgdW5zaWduZWQgY2hhciBsZW5ndGggPSAqcDsKLSAgICAgICAgV1RGOjpSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHN0cihBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhQYXNjYWxTdHJp
bmcoMCwgcCwgZW5jb2RpbmcpKTsKKyAgICAgICAgV1RGOjpSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHN0ciA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoUGFzY2FsU3RyaW5nKDAsIHAsIGVuY29k
aW5nKSk7CiAgICAgICAgIGxpc3QuYXBwZW5kKHN0ci5nZXQoKSk7CiAgICAgICAgIHAgKz0gMSAr
IGxlbmd0aDsKICAgICB9CkBAIC0xMzksNyArMTM5LDcgQEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpm
ZXRjaEluZm8oKQogCiAgICAgICAgIFdURjo6UmV0YWluUHRyPENGU3RyaW5nUmVmPiBmaWxlTmFt
ZSA9IChDRlN0cmluZ1JlZiltaW1lVHlwZXNGaWxlTmFtZS5nZXQoKTsKICAgICAgICAgV1RGOjpS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvbWVEaXIgPSBhZG9wdENGKGhvbWVEaXJlY3RvcnlQYXRo
KCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFdURjo6UmV0YWluUHRyPENGU3RyaW5nUmVm
PiBwYXRoKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiJUAv
TGlicmFyeS9QcmVmZXJlbmNlcy8lQCIpLCBob21lRGlyLmdldCgpLCBmaWxlTmFtZS5nZXQoKSkp
OworICAgICAgICBXVEY6OlJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0aCA9IGFkb3B0Q0YoQ0ZT
dHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCIlQC9MaWJyYXJ5L1ByZWZlcmVuY2Vz
LyVAIiksIGhvbWVEaXIuZ2V0KCksIGZpbGVOYW1lLmdldCgpKSk7CiAKICAgICAgICAgV1RGOjpS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9IHJlYWRQTGlzdEZpbGUocGF0aC5nZXQo
KSwgLypjcmVhdGVGaWxlKi8gZmFsc2UsIG1fbW9kdWxlKTsKICAgICAgICAgaWYgKHBsaXN0KSB7
CkBAIC0yNTUsOCArMjU1LDggQEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpsb2FkKCkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgV1RGOjpSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBh
dGgoQWRvcHRDRiwgbV9wYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFdURjo6UmV0YWluUHRy
PENGVVJMUmVmPiB1cmwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgcGF0aC5nZXQoKSwKKyAgICBXVEY6OlJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gcGF0aCA9IGFkb3B0Q0YobV9wYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIFdURjo6
UmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0
ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhdGguZ2V0KCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr
Q0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICBtX21vZHVsZSA9IENGQnVuZGxlQ3Jl
YXRlKE5VTEwsIHVybC5nZXQoKSk7CiAgICAgaWYgKCFtX21vZHVsZSB8fCAhQ0ZCdW5kbGVMb2Fk
RXhlY3V0YWJsZShtX21vZHVsZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvbWFjL1BsdWdpblZpZXdNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVn
aW5WaWV3TWFjLm1tCmluZGV4IGJkYzM4NTQyNDcwNDJmMGZmZWQwNjcyMGI4MzgxZjU0YmFkNTgx
YTQuLjQyZmE1NzljYmNkODczNzNhZjFkYTViOTA2YzQ3NzUxYjM5MGI2MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5tbQpAQCAtODUzLDcgKzg1Myw3IEBA
IHZvaWQgUGx1Z2luVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVu
dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgV1RG
OjpSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmVGV4dChXVEY6OkFkb3B0Q0YsIHRleHQuY3JlYXRl
Q0ZTdHJpbmcoKSk7CisgICAgICAgIFdURjo6UmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlRleHQg
PSBhZG9wdENGKHRleHQuY3JlYXRlQ0ZTdHJpbmcoKSk7CiAgICAgICAgIAogICAgICAgICBMT0co
UGx1Z2lucywgIlBWOjpoS0UoKTogUEtFLnRleHQ6ICVzLCBQS0UudW5tb2RpZmllZFRleHQ6ICVz
LCBQS0Uua2V5SWRlbnRpZmllcjogJXMiLAogICAgICAgICAgICAgdGV4dC5hc2NpaSgpLmRhdGEo
KSwgcGxhdGZvcm1FdmVudC0+dW5tb2RpZmllZFRleHQoKS5hc2NpaSgpLmRhdGEoKSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCmluZGV4IGYzMDFl
YWNmM2ZlMGJjNjMwMGQ4NmRkZWY4ZmMxN2ExOTUyYmZhYjYuLjhhYWY5YWJhODg4NDVkOTBjNzQ0
MzM2NmUyYTBiMTQyYWNmNGRkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lU2FmYXJpLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIENvbG9yIFJlbmRlclRoZW1l
U2FmYXJpOjpwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3QKIAogICAgIGlmICghZm9jdXNS
aW5nQ29sb3IuaXNWYWxpZCgpKSB7CiAgICAgICAgIGlmIChTVENvcHlUaGVtZUNvbG9yUHRyKCkp
IHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvcihBZG9wdENGLCBTVENv
cHlUaGVtZUNvbG9yUHRyKCkoc3RGb2N1c1JpbmdDb2xvcklELCBTYWZhcmlUaGVtZTo6QWN0aXZl
U3RhdGUpKTsKKyAgICAgICAgICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvciA9IGFkb3B0
Q0YoU1RDb3B5VGhlbWVDb2xvclB0cigpKHN0Rm9jdXNSaW5nQ29sb3JJRCwgU2FmYXJpVGhlbWU6
OkFjdGl2ZVN0YXRlKSk7CiAgICAgICAgICAgICBmb2N1c1JpbmdDb2xvciA9IG1ha2VSR0JBRnJv
bUNHQ29sb3IoY29sb3IuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICghZm9jdXNSaW5n
Q29sb3IuaXNWYWxpZCgpKQpAQCAtNzYwLDIxICs3NjAsMjEgQEAgdm9pZCBSZW5kZXJUaGVtZVNh
ZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFBhaW4KIAogICAgIEZsb2F0UmVjdCB0b3BHcmFkaWVudChyLngoKSwgci55KCksIHIud2lkdGgo
KSwgci5oZWlnaHQoKSAvIDIuMGYpOwogICAgIHN0cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIHRv
cENhbGxiYWNrcyA9IHsgMCwgVG9wR3JhZGllbnRJbnRlcnBvbGF0ZSwgTlVMTCB9OwotICAgIFJl
dGFpblB0cjxDR0Z1bmN0aW9uUmVmPiB0b3BGdW5jdGlvbihBZG9wdENGLCBDR0Z1bmN0aW9uQ3Jl
YXRlKE5VTEwsIDEsIE5VTEwsIDQsIE5VTEwsICZ0b3BDYWxsYmFja3MpKTsKLSAgICBSZXRhaW5Q
dHI8Q0dTaGFkaW5nUmVmPiB0b3BTaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFs
KGNzcGFjZSwgQ0dQb2ludE1ha2UodG9wR3JhZGllbnQueCgpLCB0b3BHcmFkaWVudC55KCkpLCBD
R1BvaW50TWFrZSh0b3BHcmFkaWVudC54KCksIHRvcEdyYWRpZW50Lm1heFkoKSksIHRvcEZ1bmN0
aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0dGdW5jdGlvblJlZj4g
dG9wRnVuY3Rpb24gPSBhZG9wdENGKENHRnVuY3Rpb25DcmVhdGUoTlVMTCwgMSwgTlVMTCwgNCwg
TlVMTCwgJnRvcENhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IHRvcFNo
YWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2Uo
dG9wR3JhZGllbnQueCgpLCB0b3BHcmFkaWVudC55KCkpLCBDR1BvaW50TWFrZSh0b3BHcmFkaWVu
dC54KCksIHRvcEdyYWRpZW50Lm1heFkoKSksIHRvcEZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFs
c2UpKTsKIAogICAgIEZsb2F0UmVjdCBib3R0b21HcmFkaWVudChyLngoKSArIHJhZGl1cywgci55
KCkgKyByLmhlaWdodCgpIC8gMi4wZiwgci53aWR0aCgpIC0gMi4wZiAqIHJhZGl1cywgci5oZWln
aHQoKSAvIDIuMGYpOwogICAgIHN0cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIGJvdHRvbUNhbGxi
YWNrcyA9IHsgMCwgQm90dG9tR3JhZGllbnRJbnRlcnBvbGF0ZSwgTlVMTCB9OwotICAgIFJldGFp
blB0cjxDR0Z1bmN0aW9uUmVmPiBib3R0b21GdW5jdGlvbihBZG9wdENGLCBDR0Z1bmN0aW9uQ3Jl
YXRlKE5VTEwsIDEsIE5VTEwsIDQsIE5VTEwsICZib3R0b21DYWxsYmFja3MpKTsKLSAgICBSZXRh
aW5QdHI8Q0dTaGFkaW5nUmVmPiBib3R0b21TaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0
ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2UoYm90dG9tR3JhZGllbnQueCgpLCAgYm90dG9tR3Jh
ZGllbnQueSgpKSwgQ0dQb2ludE1ha2UoYm90dG9tR3JhZGllbnQueCgpLCBib3R0b21HcmFkaWVu
dC5tYXhZKCkpLCBib3R0b21GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CisgICAgUmV0
YWluUHRyPENHRnVuY3Rpb25SZWY+IGJvdHRvbUZ1bmN0aW9uID0gYWRvcHRDRihDR0Z1bmN0aW9u
Q3JlYXRlKE5VTEwsIDEsIE5VTEwsIDQsIE5VTEwsICZib3R0b21DYWxsYmFja3MpKTsKKyAgICBS
ZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiBib3R0b21TaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdD
cmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKGJvdHRvbUdyYWRpZW50LngoKSwgIGJvdHRv
bUdyYWRpZW50LnkoKSksIENHUG9pbnRNYWtlKGJvdHRvbUdyYWRpZW50LngoKSwgYm90dG9tR3Jh
ZGllbnQubWF4WSgpKSwgYm90dG9tRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwogCiAg
ICAgc3RydWN0IENHRnVuY3Rpb25DYWxsYmFja3MgbWFpbkNhbGxiYWNrcyA9IHsgMCwgTWFpbkdy
YWRpZW50SW50ZXJwb2xhdGUsIE5VTEwgfTsKLSAgICBSZXRhaW5QdHI8Q0dGdW5jdGlvblJlZj4g
bWFpbkZ1bmN0aW9uKEFkb3B0Q0YsIENHRnVuY3Rpb25DcmVhdGUoTlVMTCwgMSwgTlVMTCwgNCwg
TlVMTCwgJm1haW5DYWxsYmFja3MpKTsKLSAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiBtYWlu
U2hhZGluZyhBZG9wdENGLCBDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtl
KHIueCgpLCAgci55KCkpLCBDR1BvaW50TWFrZShyLngoKSwgci5tYXhZKCkpLCBtYWluRnVuY3Rp
b24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOworICAgIFJldGFpblB0cjxDR0Z1bmN0aW9uUmVmPiBt
YWluRnVuY3Rpb24gPSBhZG9wdENGKENHRnVuY3Rpb25DcmVhdGUoTlVMTCwgMSwgTlVMTCwgNCwg
TlVMTCwgJm1haW5DYWxsYmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiBtYWlu
U2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFr
ZShyLngoKSwgIHIueSgpKSwgQ0dQb2ludE1ha2Uoci54KCksIHIubWF4WSgpKSwgbWFpbkZ1bmN0
aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAotICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+
IGxlZnRTaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2lu
dE1ha2Uoci54KCksICByLnkoKSksIENHUG9pbnRNYWtlKHIueCgpICsgcmFkaXVzLCByLnkoKSks
IG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENHU2hh
ZGluZ1JlZj4gbGVmdFNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFj
ZSwgQ0dQb2ludE1ha2Uoci54KCksICByLnkoKSksIENHUG9pbnRNYWtlKHIueCgpICsgcmFkaXVz
LCByLnkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAKLSAgICBSZXRh
aW5QdHI8Q0dTaGFkaW5nUmVmPiByaWdodFNoYWRpbmcoQWRvcHRDRiwgQ0dTaGFkaW5nQ3JlYXRl
QXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShyLm1heFgoKSwgIHIueSgpKSwgQ0dQb2ludE1ha2Uo
ci5tYXhYKCkgLSByYWRpdXMsIHIueSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFs
c2UpKTsKKyAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiByaWdodFNoYWRpbmcgPSBhZG9wdENG
KENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2Uoci5tYXhYKCksICByLnko
KSksIENHUG9pbnRNYWtlKHIubWF4WCgpIC0gcmFkaXVzLCByLnkoKSksIG1haW5GdW5jdGlvbi5n
ZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAg
ICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIGJvdW5kLnJlY3QoKSk7CiAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChib3VuZCk7CkBAIC05NzQsMTIgKzk3NCwxMiBA
QCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCog
bywgY29uc3QgUGFpbnRJbmZvJiBwYWludAogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4
dCwgYm91bmRzLnJlY3QoKSk7CiAKICAgICBzdHJ1Y3QgQ0dGdW5jdGlvbkNhbGxiYWNrcyBtYWlu
Q2FsbGJhY2tzID0geyAwLCBUcmFja0dyYWRpZW50SW50ZXJwb2xhdGUsIE5VTEwgfTsKLSAgICBS
ZXRhaW5QdHI8Q0dGdW5jdGlvblJlZj4gbWFpbkZ1bmN0aW9uKEFkb3B0Q0YsIENHRnVuY3Rpb25D
cmVhdGUoTlVMTCwgMSwgTlVMTCwgNCwgTlVMTCwgJm1haW5DYWxsYmFja3MpKTsKKyAgICBSZXRh
aW5QdHI8Q0dGdW5jdGlvblJlZj4gbWFpbkZ1bmN0aW9uID0gYWRvcHRDRihDR0Z1bmN0aW9uQ3Jl
YXRlKE5VTEwsIDEsIE5VTEwsIDQsIE5VTEwsICZtYWluQ2FsbGJhY2tzKSk7CiAgICAgUmV0YWlu
UHRyPENHU2hhZGluZ1JlZj4gbWFpblNoYWRpbmc7CiAgICAgaWYgKG8tPnN0eWxlKCktPmFwcGVh
cmFuY2UoKSA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQpCi0gICAgICAgIG1haW5TaGFkaW5nLmFkb3B0
Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShib3VuZHMucmVjdCgp
LngoKSwgIGJvdW5kcy5yZWN0KCkubWF4WSgpKSwgQ0dQb2ludE1ha2UoYm91bmRzLnJlY3QoKS5t
YXhYKCksIGJvdW5kcy5yZWN0KCkubWF4WSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwg
ZmFsc2UpKTsKKyAgICAgICAgbWFpblNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4
aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2UoYm91bmRzLnJlY3QoKS54KCksICBib3VuZHMucmVjdCgp
Lm1heFkoKSksIENHUG9pbnRNYWtlKGJvdW5kcy5yZWN0KCkubWF4WCgpLCBib3VuZHMucmVjdCgp
Lm1heFkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAgICAgZWxzZQot
ICAgICAgICBtYWluU2hhZGluZy5hZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwg
Q0dQb2ludE1ha2UoYm91bmRzLnJlY3QoKS54KCksICBib3VuZHMucmVjdCgpLnkoKSksIENHUG9p
bnRNYWtlKGJvdW5kcy5yZWN0KCkueCgpLCBib3VuZHMucmVjdCgpLm1heFkoKSksIG1haW5GdW5j
dGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIG1haW5TaGFkaW5nID0gYWRvcHRD
RihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKGJvdW5kcy5yZWN0KCku
eCgpLCAgYm91bmRzLnJlY3QoKS55KCkpLCBDR1BvaW50TWFrZShib3VuZHMucmVjdCgpLngoKSwg
Ym91bmRzLnJlY3QoKS5tYXhZKCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkp
OwogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChib3VuZHMpOwogICAg
IENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIG1haW5TaGFkaW5nLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAppbmRleCBmNGZiNWIz
YTg5ZTEzODFiODA1M2FlMWEwODI0NDU0MGJjOTUyOTgwLi5jMjIzMTFmZGVlYTBhMTk5ODVkZDdh
ZGEzMDNkYjY0ZDA4N2EzZjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ0ZEaWN0aW9uYXJ5
UHJvcGVydHlCYWcuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6V3JpdGUoTFBDT0xFU1RSIHBzelByb3BOYW1l
LAogICAgIGlmICghcHN6UHJvcE5hbWUgfHwgIXBWYXIpCiAgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CiAgICAgaWYgKCFtX2RpY3Rpb25hcnkpIHsKLSAgICAgICAgbV9kaWN0aW9uYXJ5LmFkb3B0
Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlD
YWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgICAgIG1f
ZGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NG
VHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJh
Y2tzKSk7CiAgICAgfQogICAgIHZvaWQqIGNmT2JqOwogICAgIGlmIChDb252ZXJ0VmFyaWFudFRv
Q0ZUeXBlKHBWYXIsICZjZk9iaikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNhY2hlLmNwcAppbmRleCA2YjliMzE3
MDMwZjc2MWZmZDIyOTE1MmMyYmJlY2QyZGYwMWI3MmIzLi4zMTE1ZWQ4ZWQ0ZjIxZmJmOGNjMmUz
MzM1NjUzODAwMTQ3MzBiMjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDYWNo
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ2FjaGUuY3BwCkBAIC0xMDcsODkgKzEw
Nyw4OCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNhY2hlOjpzdGF0aXN0aWNzKAog
ICAgIGNvbnN0IGludCB6ZXJvID0gMDsKICNlbmRpZgogCi0gICAgUmV0YWluUHRyPENGTXV0YWJs
ZURpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkoQWRvcHRDRiwKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5
Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZU
eXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZURp
Y3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFi
bGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiB2YWx1ZShB
ZG9wdENGLCBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmc3RhdC5pbWFnZXMu
Y291bnQpKTsKKyAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHZhbHVlID0gYWRvcHRDRihDRk51
bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmc3RhdC5pbWFnZXMuY291bnQpKTsKICAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBpbWFnZXNLZXksIHZhbHVl
LmdldCgpKTsKICAgICAKLSAgICB2YWx1ZS5hZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51
bWJlckludFR5cGUsICZzdGF0LmNzc1N0eWxlU2hlZXRzLmNvdW50KSk7CisgICAgdmFsdWUgPSBh
ZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZzdGF0LmNzc1N0eWxl
U2hlZXRzLmNvdW50KSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGljdGlvbmFyeS5nZXQo
KSwgc3R5bGVzaGVldHNLZXksIHZhbHVlLmdldCgpKTsKICAgICAKICNpZiBFTkFCTEUoWFNMVCkK
LSAgICB2YWx1ZS5hZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZz
dGF0LnhzbFN0eWxlU2hlZXRzLmNvdW50KSk7CisgICAgdmFsdWUgPSBhZG9wdENGKENGTnVtYmVy
Q3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZzdGF0LnhzbFN0eWxlU2hlZXRzLmNvdW50KSk7
CiAjZWxzZQotICAgIHZhbHVlLmFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50
VHlwZSwgJnplcm8pKTsKKyAgICB2YWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NG
TnVtYmVySW50VHlwZSwgJnplcm8pKTsKICNlbmRpZgogICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRpY3Rpb25hcnkuZ2V0KCksIHhzbEtleSwgdmFsdWUuZ2V0KCkpOwogCi0gICAgdmFsdWUuYWRv
cHRDRihDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmc3RhdC5zY3JpcHRzLmNv
dW50KSk7CisgICAgdmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlcklu
dFR5cGUsICZzdGF0LnNjcmlwdHMuY291bnQpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
aWN0aW9uYXJ5LmdldCgpLCBzY3JpcHRzS2V5LCB2YWx1ZS5nZXQoKSk7CiAKICAgICBDT01QdHI8
Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IHByb3BCYWcgPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJh
Zzo6Y3JlYXRlSW5zdGFuY2UoKTsKICAgICBwcm9wQmFnLT5zZXREaWN0aW9uYXJ5KGRpY3Rpb25h
cnkuZ2V0KCkpOwogICAgIHNbMF0gPSBwcm9wQmFnLmxlYWtSZWYoKTsKIAotICAgIGRpY3Rpb25h
cnkuYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlv
bmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAg
ICBkaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpKTsKIAotICAgIHZhbHVlLmFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVy
SW50VHlwZSwgJnN0YXQuaW1hZ2VzLnNpemUpKTsKKyAgICB2YWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1i
ZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnN0YXQuaW1hZ2VzLnNpemUpKTsKICAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBpbWFnZXNLZXksIHZhbHVlLmdl
dCgpKTsKICAgICAKLSAgICB2YWx1ZS5hZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJl
ckludFR5cGUsICZzdGF0LmNzc1N0eWxlU2hlZXRzLnNpemUpKTsKKyAgICB2YWx1ZSA9IGFkb3B0
Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnN0YXQuY3NzU3R5bGVTaGVl
dHMuc2l6ZSkpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIHN0
eWxlc2hlZXRzS2V5LCB2YWx1ZS5nZXQoKSk7CiAgICAgCiAjaWYgRU5BQkxFKFhTTFQpCi0gICAg
dmFsdWUuYWRvcHRDRihDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmc3RhdC54
c2xTdHlsZVNoZWV0cy5zaXplKSk7CisgICAgdmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRl
KDAsIGtDRk51bWJlckludFR5cGUsICZzdGF0LnhzbFN0eWxlU2hlZXRzLnNpemUpKTsKICNlbHNl
Ci0gICAgdmFsdWUuYWRvcHRDRihDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAm
emVybykpOworICAgIHZhbHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJ
bnRUeXBlLCAmemVybykpOwogI2VuZGlmCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGljdGlv
bmFyeS5nZXQoKSwgeHNsS2V5LCB2YWx1ZS5nZXQoKSk7CiAKLSAgICB2YWx1ZS5hZG9wdENGKENG
TnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZzdGF0LnNjcmlwdHMuc2l6ZSkpOwor
ICAgIHZhbHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAm
c3RhdC5zY3JpcHRzLnNpemUpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5
LmdldCgpLCBzY3JpcHRzS2V5LCB2YWx1ZS5nZXQoKSk7CiAKICAgICBwcm9wQmFnID0gQ0ZEaWN0
aW9uYXJ5UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCk7CiAgICAgcHJvcEJhZy0+c2V0RGlj
dGlvbmFyeShkaWN0aW9uYXJ5LmdldCgpKTsKICAgICBzWzFdID0gcHJvcEJhZy5sZWFrUmVmKCk7
CiAKLSAgICBkaWN0aW9uYXJ5LmFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAw
LCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVl
Q2FsbEJhY2tzKSk7CisgICAgZGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRl
TXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGlj
dGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICB2YWx1ZS5hZG9wdENGKENGTnVtYmVyQ3Jl
YXRlKDAsIGtDRk51bWJlckludFR5cGUsICZzdGF0LmltYWdlcy5saXZlU2l6ZSkpOworICAgIHZh
bHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmc3RhdC5p
bWFnZXMubGl2ZVNpemUpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5Lmdl
dCgpLCBpbWFnZXNLZXksIHZhbHVlLmdldCgpKTsKICAgICAKLSAgICB2YWx1ZS5hZG9wdENGKENG
TnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZzdGF0LmNzc1N0eWxlU2hlZXRzLmxp
dmVTaXplKSk7CisgICAgdmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJl
ckludFR5cGUsICZzdGF0LmNzc1N0eWxlU2hlZXRzLmxpdmVTaXplKSk7CiAgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgc3R5bGVzaGVldHNLZXksIHZhbHVlLmdldCgp
KTsKICAgICAKICNpZiBFTkFCTEUoWFNMVCkKLSAgICB2YWx1ZS5hZG9wdENGKENGTnVtYmVyQ3Jl
YXRlKDAsIGtDRk51bWJlckludFR5cGUsICZzdGF0LnhzbFN0eWxlU2hlZXRzLmxpdmVTaXplKSk7
CisgICAgdmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUs
ICZzdGF0LnhzbFN0eWxlU2hlZXRzLmxpdmVTaXplKSk7CiAjZWxzZQotICAgIHZhbHVlLmFkb3B0
Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnplcm8pKTsKKyAgICB2YWx1
ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnplcm8pKTsK
ICNlbmRpZgogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIHhzbEtl
eSwgdmFsdWUuZ2V0KCkpOwogCi0gICAgdmFsdWUuYWRvcHRDRihDRk51bWJlckNyZWF0ZSgwLCBr
Q0ZOdW1iZXJJbnRUeXBlLCAmc3RhdC5zY3JpcHRzLmxpdmVTaXplKSk7CisgICAgdmFsdWUgPSBh
ZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZzdGF0LnNjcmlwdHMu
bGl2ZVNpemUpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBz
Y3JpcHRzS2V5LCB2YWx1ZS5nZXQoKSk7CiAKICAgICBwcm9wQmFnID0gQ0ZEaWN0aW9uYXJ5UHJv
cGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCk7CiAgICAgcHJvcEJhZy0+c2V0RGljdGlvbmFyeShk
aWN0aW9uYXJ5LmdldCgpKTsKICAgICBzWzJdID0gcHJvcEJhZy5sZWFrUmVmKCk7CiAKLSAgICBk
aWN0aW9uYXJ5LmFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KSk7CisgICAgZGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgw
LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CiAKLSAgICB2YWx1ZS5hZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtD
Rk51bWJlckludFR5cGUsICZzdGF0LmltYWdlcy5kZWNvZGVkU2l6ZSkpOworICAgIHZhbHVlID0g
YWRvcHRDRihDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmc3RhdC5pbWFnZXMu
ZGVjb2RlZFNpemUpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5LmdldCgp
LCBpbWFnZXNLZXksIHZhbHVlLmdldCgpKTsKICAgICAKLSAgICB2YWx1ZS5hZG9wdENGKENGTnVt
YmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZzdGF0LmNzc1N0eWxlU2hlZXRzLmRlY29k
ZWRTaXplKSk7CisgICAgdmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJl
ckludFR5cGUsICZzdGF0LmNzc1N0eWxlU2hlZXRzLmRlY29kZWRTaXplKSk7CiAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgc3R5bGVzaGVldHNLZXksIHZhbHVlLmdl
dCgpKTsKICAgICAKICNpZiBFTkFCTEUoWFNMVCkKLSAgICB2YWx1ZS5hZG9wdENGKENGTnVtYmVy
Q3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZzdGF0LnhzbFN0eWxlU2hlZXRzLmRlY29kZWRT
aXplKSk7CisgICAgdmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlcklu
dFR5cGUsICZzdGF0LnhzbFN0eWxlU2hlZXRzLmRlY29kZWRTaXplKSk7CiAjZWxzZQotICAgIHZh
bHVlLmFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnplcm8pKTsK
KyAgICB2YWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwg
Jnplcm8pKTsKICNlbmRpZgogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0
KCksIHhzbEtleSwgdmFsdWUuZ2V0KCkpOwogCi0gICAgdmFsdWUuYWRvcHRDRihDRk51bWJlckNy
ZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmc3RhdC5zY3JpcHRzLmRlY29kZWRTaXplKSk7Cisg
ICAgdmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZz
dGF0LnNjcmlwdHMuZGVjb2RlZFNpemUpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0
aW9uYXJ5LmdldCgpLCBzY3JpcHRzS2V5LCB2YWx1ZS5nZXQoKSk7CiAKICAgICBwcm9wQmFnID0g
Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKaW5kZXggMTMzMmU0ZTVhNzA4OWJhYWM5ZmM4NzU2Y2UyZjEwZjZlYTNhMGFkZC4uNWY1MmNm
MGM3NWI5NjhjNTdlMmJiNzRmZThhYTIyYmVmYTZjZjVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApA
QCAtNzg0LDcgKzc4NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
RmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyogcGx1Z2luCiAgICAgaWYgKEZBSUxF
RCh3ZWJWaWV3LT5yZXNvdXJjZUxvYWREZWxlZ2F0ZSgmcmVzb3VyY2VMb2FkRGVsZWdhdGUpKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+
IHVzZXJJbmZvKEFkb3B0Q0YsIENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5
cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNr
cykpOworICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiB1c2VySW5mbyA9IGFk
b3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKICAgICBG
cmFtZSogZnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwogICAgIEFTU0VSVChmcmFtZSA9PSBwbHVn
aW5WaWV3LT5wYXJlbnRGcmFtZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDVmNmU4MjhmNzQ0Yjkx
MzFmMDI2OWY2NDRiOTEwY2JmOWM0YWRhYjYuLjQ0ZDY0MmI4YzhkOWU5Zjc3Zjg4MzFkNmNkYTQ5
NzYwMGE0ZjNhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVj
dG9yRnJvbnRlbmQoSW5zCiAKICAgICBDT01QdHI8V2ViTXV0YWJsZVVSTFJlcXVlc3Q+IHJlcXVl
c3QoQWRvcHRDT00sIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0YW5jZSgpKTsKIAot
ICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHRtbFVSTFJlZihBZG9wdENGLCBDRkJ1bmRsZUNvcHlS
ZXNvdXJjZVVSTChnZXRXZWJLaXRCdW5kbGUoKSwgQ0ZTVFIoImluc3BlY3RvciIpLCBDRlNUUigi
aHRtbCIpLCBDRlNUUigiaW5zcGVjdG9yIikpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0
bWxVUkxSZWYgPSBhZG9wdENGKENGQnVuZGxlQ29weVJlc291cmNlVVJMKGdldFdlYktpdEJ1bmRs
ZSgpLCBDRlNUUigiaW5zcGVjdG9yIiksIENGU1RSKCJodG1sIiksIENGU1RSKCJpbnNwZWN0b3Ii
KSkpOwogICAgIGlmICghaHRtbFVSTFJlZikKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTI2Miw3
ICsyNjIsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojpmcm9udGVuZExvYWRl
ZCgpCiAKIFN0cmluZyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6bG9jYWxpemVkU3RyaW5n
c1VSTCgpCiB7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwoQWRvcHRDRiwgQ0ZCdW5kbGVD
b3B5UmVzb3VyY2VVUkwoZ2V0V2ViS2l0QnVuZGxlKCksIENGU1RSKCJsb2NhbGl6ZWRTdHJpbmdz
IiksIENGU1RSKCJqcyIpLCAwKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBhZG9w
dENGKENGQnVuZGxlQ29weVJlc291cmNlVVJMKGdldFdlYktpdEJ1bmRsZSgpLCBDRlNUUigibG9j
YWxpemVkU3RyaW5ncyIpLCBDRlNUUigianMiKSwgMCkpOwogICAgIGlmICghdXJsKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRh
dGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIu
Y3BwCmluZGV4IGNmZDEyNGM1NzcyNjAyZGEwNGRjZmZkYzRmZGE2MWJmODUyOGIwYmIuLjM0Mjdj
ZmI2ZDY2NDJkYTYyM2MwOTlmYjI1MTM4ZTc1YzE0MmVkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4v
V2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMzk4LDcgKzM5OCw3IEBAIHZvaWQgV2ViRGF0YWJh
c2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4sIGNvbnN0CiAKICAgICBDT01QdHI8V2ViU2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2lu
KEFkb3B0Q09NLCBXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlSW5zdGFuY2Uob3JpZ2luKSk7CiAK
LSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gdXNlckluZm8oQWRvcHRDRiwg
Q0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxs
QmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgUmV0YWluUHRy
PENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHVzZXJJbmZvID0gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5
cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAogICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBk
YXRhYmFzZU5hbWVLZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdS
ZWYoV2ViRGF0YWJhc2VOYW1lS2V5KTsKICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5m
by5nZXQoKSwgZGF0YWJhc2VOYW1lS2V5LCBkYXRhYmFzZU5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZENGTmV0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IGU5ZDdmMDJm
ZGIwZThjNjUwNDAwNGFjNDhlOTZlNzE2YWEzYTYwYzkuLjdkZjliZjY0NGNiMTJiM2E2ZTUyODJj
Nzk1MGY5Mzg1YmZlYzMzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25s
b2FkQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3Bw
CkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgV2ViRG93bmxvYWQ6OmluaXQoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjCiAgICAgICAgIGRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZE9iamVjdE5hbWVDYWxsYmFjaywgZGlkQ3JlYXRlRGVz
dGluYXRpb25DYWxsYmFjaywgZGlkRmluaXNoQ2FsbGJhY2ssIGRpZEZhaWxDYWxsYmFja307CiAK
ICAgICBtX3JlcXVlc3QuYWRvcHRSZWYoV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3Rh
bmNlKHJlcXVlc3QpKTsKLSAgICBtX2Rvd25sb2FkLmFkb3B0Q0YoQ0ZVUkxEb3dubG9hZENyZWF0
ZUFuZFN0YXJ0V2l0aExvYWRpbmdDb25uZWN0aW9uKDAsIGNvbm5lY3Rpb24sIHJlcXVlc3QuY2ZV
UkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSwgcmVzcG9uc2UuY2ZVUkxSZXNwb25zZSgpLCAmY2xp
ZW50KSk7CisgICAgbV9kb3dubG9hZCA9IGFkb3B0Q0YoQ0ZVUkxEb3dubG9hZENyZWF0ZUFuZFN0
YXJ0V2l0aExvYWRpbmdDb25uZWN0aW9uKDAsIGNvbm5lY3Rpb24sIHJlcXVlc3QuY2ZVUkxSZXF1
ZXN0KFVwZGF0ZUhUVFBCb2R5KSwgcmVzcG9uc2UuY2ZVUkxSZXNwb25zZSgpLCAmY2xpZW50KSk7
CiAKICAgICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgQ0ZVUkxEb3dubG9hZENyZWF0ZUFuZFN0YXJ0
V2l0aExvYWRpbmdDb25uZWN0aW9uKCkgdG8gZmFpbCBpZiB0aGUgcGFzc2VkIGluIENGVVJMQ29u
bmVjdGlvbiBpcyBub3QgaW4gYSAiZG93bmxvYWRhYmxlIHN0YXRlIgogICAgIC8vIEhvd2V2ZXIs
IHdlIHNob3VsZCBuZXZlciBoaXQgdGhhdCBjYXNlCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBX
ZWJEb3dubG9hZDo6aW5pdChjb25zdCBLVVJMJiB1cmwsIElXZWJEb3dubG9hZERlbGVnYXRlKiBk
ZWxlZ2F0ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlUmVz
cG9uc2VDYWxsYmFjaywgd2lsbFJlc3VtZVdpdGhSZXNwb25zZUNhbGxiYWNrLCBkaWRSZWNlaXZl
RGF0YUNhbGxiYWNrLCBzaG91bGREZWNvZGVEYXRhT2ZNSU1FVHlwZUNhbGxiYWNrLCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRPYmplY3ROYW1lQ2FsbGJhY2ssIGRpZENyZWF0ZURlc3RpbmF0aW9uQ2FsbGJhY2ssIGRpZEZp
bmlzaENhbGxiYWNrLCBkaWRGYWlsQ2FsbGJhY2t9OwogICAgIG1fcmVxdWVzdC5hZG9wdFJlZihX
ZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UocmVxdWVzdCkpOwotICAgIG1fZG93
bmxvYWQuYWRvcHRDRihDRlVSTERvd25sb2FkQ3JlYXRlKDAsIGNmUmVxdWVzdCwgJmNsaWVudCkp
OworICAgIG1fZG93bmxvYWQgPSBhZG9wdENGKENGVVJMRG93bmxvYWRDcmVhdGUoMCwgY2ZSZXF1
ZXN0LCAmY2xpZW50KSk7CiAKICAgICBDRlVSTERvd25sb2FkU2NoZWR1bGVXaXRoQ3VycmVudE1l
c3NhZ2VRdWV1ZShtX2Rvd25sb2FkLmdldCgpKTsKICAgICBDRlVSTERvd25sb2FkU2NoZWR1bGVE
b3dubG9hZFdpdGhSdW5Mb29wKG1fZG93bmxvYWQuZ2V0KCksIGxvYWRlclJ1bkxvb3AoKSwga0NG
UnVuTG9vcERlZmF1bHRNb2RlKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkRvd25sb2FkOjppbml0V2l0aFJlcXVlc3QoCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJhY2ssIHdpbGxSZXN1bWVX
aXRoUmVzcG9uc2VDYWxsYmFjaywgZGlkUmVjZWl2ZURhdGFDYWxsYmFjaywgc2hvdWxkRGVjb2Rl
RGF0YU9mTUlNRVR5cGVDYWxsYmFjaywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkT2JqZWN0TmFtZUNhbGxiYWNrLCBkaWRD
cmVhdGVEZXN0aW5hdGlvbkNhbGxiYWNrLCBkaWRGaW5pc2hDYWxsYmFjaywgZGlkRmFpbENhbGxi
YWNrfTsKICAgICBtX3JlcXVlc3QuYWRvcHRSZWYoV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0
ZUluc3RhbmNlKHdlYlJlcXVlc3QuZ2V0KCkpKTsKLSAgICBtX2Rvd25sb2FkLmFkb3B0Q0YoQ0ZV
UkxEb3dubG9hZENyZWF0ZSgwLCBjZlJlcXVlc3QuZ2V0KCksICZjbGllbnQpKTsKKyAgICBtX2Rv
d25sb2FkID0gYWRvcHRDRihDRlVSTERvd25sb2FkQ3JlYXRlKDAsIGNmUmVxdWVzdC5nZXQoKSwg
JmNsaWVudCkpOwogCiAgICAgLy8gSWYgZm9yIHNvbWUgcmVhc29uIHRoZSBkb3dubG9hZCBmYWls
ZWQgdG8gY3JlYXRlLCAKICAgICAvLyB3ZSBoYXZlIHBhcnRpY3VsYXIgY2xlYW51cCB0byBkbwpA
QCAtMTY2LDcgKzE2Niw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6
OmluaXRUb1Jlc3VtZVdpdGhCdW5kbGUoCiB7CiAgICAgTE9HKERvd25sb2FkLCAiQXR0ZW1wdGlu
ZyByZXN1bWUgb2YgZG93bmxvYWQgYnVuZGxlICVzIiwgU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0
cmluZ0xlbihidW5kbGVQYXRoKSkuYXNjaWkoKS5kYXRhKCkpOwogCi0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gcmVzdW1lRGF0YShBZG9wdENGLCBEb3dubG9hZEJ1bmRsZTo6ZXh0cmFjdFJlc3Vt
ZURhdGEoU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihidW5kbGVQYXRoKSkpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByZXN1bWVEYXRhID0gYWRvcHRDRihEb3dubG9hZEJ1bmRs
ZTo6ZXh0cmFjdFJlc3VtZURhdGEoU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihidW5k
bGVQYXRoKSkpKTsKIAogICAgIGlmICghcmVzdW1lRGF0YSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKQEAgLTE4MCwxMCArMTgwLDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93
bmxvYWQ6OmluaXRUb1Jlc3VtZVdpdGhCdW5kbGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJhY2ssIHdpbGxSZXN1bWVXaXRoUmVzcG9u
c2VDYWxsYmFjaywgZGlkUmVjZWl2ZURhdGFDYWxsYmFjaywgc2hvdWxkRGVjb2RlRGF0YU9mTUlN
RVR5cGVDYWxsYmFjaywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkT2JqZWN0TmFtZUNhbGxiYWNrLCBkaWRDcmVhdGVEZXN0
aW5hdGlvbkNhbGxiYWNrLCBkaWRGaW5pc2hDYWxsYmFjaywgZGlkRmFpbENhbGxiYWNrfTsKICAg
ICAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBhdGhVUkwoQWRvcHRDRiwgTWFyc2hhbGxpbmdI
ZWxwZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYoU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0
cmluZ0xlbihidW5kbGVQYXRoKSkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBhdGhVUkwg
PSBhZG9wdENGKE1hcnNoYWxsaW5nSGVscGVyczo6UGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKFN0
cmluZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpKSk7CiAgICAgQVNTRVJU
KHBhdGhVUkwpOwogCi0gICAgbV9kb3dubG9hZC5hZG9wdENGKENGVVJMRG93bmxvYWRDcmVhdGVX
aXRoUmVzdW1lRGF0YSgwLCByZXN1bWVEYXRhLmdldCgpLCBwYXRoVVJMLmdldCgpLCAmY2xpZW50
KSk7CisgICAgbV9kb3dubG9hZCA9IGFkb3B0Q0YoQ0ZVUkxEb3dubG9hZENyZWF0ZVdpdGhSZXN1
bWVEYXRhKDAsIHJlc3VtZURhdGEuZ2V0KCksIHBhdGhVUkwuZ2V0KCksICZjbGllbnQpKTsKIAog
ICAgIGlmICghbV9kb3dubG9hZCkgewogICAgICAgICBMT0coRG93bmxvYWQsICJGYWlsZWQgdG8g
Y3JlYXRlIENGVVJMRG93bmxvYWRSZWYgZm9yIHJlc3VtZSIpOyAgICAKQEAgLTI0OCw3ICsyNDgs
NyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjYW5jZWxGb3JSZXN1
bWUoKQogICAgIENGVVJMRG93bmxvYWRTZXREZWxldGVzVXBvbkZhaWx1cmUobV9kb3dubG9hZC5n
ZXQoKSwgZmFsc2UpOwogICAgIENGVVJMRG93bmxvYWRDYW5jZWwobV9kb3dubG9hZC5nZXQoKSk7
CiAKLSAgICByZXN1bWVEYXRhLmFkb3B0Q0YoQ0ZVUkxEb3dubG9hZENvcHlSZXN1bWVEYXRhKG1f
ZG93bmxvYWQuZ2V0KCkpKTsKKyAgICByZXN1bWVEYXRhID0gYWRvcHRDRihDRlVSTERvd25sb2Fk
Q29weVJlc3VtZURhdGEobV9kb3dubG9hZC5nZXQoKSkpOwogICAgIGlmICghcmVzdW1lRGF0YSkg
ewogICAgICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIFVuYWJsZSB0byBjcmVhdGUg
cmVzdW1lIGRhdGEgZm9yIGRvd25sb2FkICglcCkiLCB0aGlzKTsKICAgICAgICAgZ290byBleGl0
OwpAQCAtMzQwLDcgKzM0MCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxv
YWQ6OnVzZUNyZWRlbnRpYWwoCiAgICAgaWYgKCF3ZWJDcmVkZW50aWFsKQogICAgICAgICByZXR1
cm4gRV9OT0lOVEVSRkFDRTsKIAotICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNm
Q3JlZGVudGlhbChBZG9wdENGLCBjcmVhdGVDRih3ZWJDcmVkZW50aWFsLT5jcmVkZW50aWFsKCkp
KTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9w
dENGKGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwtPmNyZWRlbnRpYWwoKSkpOwogCiAgICAgaWYgKG1f
ZG93bmxvYWQpCiAgICAgICAgIENGVVJMRG93bmxvYWRVc2VDcmVkZW50aWFsKG1fZG93bmxvYWQu
Z2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgd2ViQ2hhbGxlbmdlLT5hdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSgpLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKQEAgLTM4NCw3ICszODQsNyBAQCB2
b2lkIFdlYkRvd25sb2FkOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ0ZVUkxB
dXRoQ2hhbGxlbmdlUmVmIGNoYWxsZQogICAgIGlmICghQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJl
dmlvdXNGYWlsdXJlQ291bnQoY2hhbGxlbmdlKSkgewogICAgICAgICBDcmVkZW50aWFsIGNyZWRl
bnRpYWwgPSBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0
UHJvdGVjdGlvblNwYWNlKGNoYWxsZW5nZSkpKTsKICAgICAgICAgaWYgKCFjcmVkZW50aWFsLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZD
cmVkZW50aWFsKEFkb3B0Q0YsIGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKKyAgICAgICAgICAgIFJl
dGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRl
Q0YoY3JlZGVudGlhbCkpOwogICAgICAgICAgICAgQ0ZVUkxEb3dubG9hZFVzZUNyZWRlbnRpYWwo
bV9kb3dubG9hZC5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5jcHAKaW5kZXggMTYwMDZm
ZmIwYzdhNGJkMmY0NTg5NjYyY2ViY2YyZTAzN2YwOTRjZS4uNmUyYjFkYWU4ZGZlYWQ3YmJmZDdk
YTljODAyZmFkODFmNzgzNDYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRXJy
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9yLmNwcApAQCAtMjE5LDcgKzIx
OSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRXJyb3I6OnNzbFBlZXJDZXJ0aWZp
Y2F0ZSgKICAgICBpZiAoIW1fY2ZFcnJvclVzZXJJbmZvRGljdCkgewogICAgICAgICAvLyBjb3B5
IHVzZXJpbmZvIGZyb20gQ0ZFcnJvclJlZgogICAgICAgICBDRkVycm9yUmVmIGNmRXJyb3IgPSBt
X2Vycm9yOwotICAgICAgICBtX2NmRXJyb3JVc2VySW5mb0RpY3QuYWRvcHRDRihDRkVycm9yQ29w
eVVzZXJJbmZvKGNmRXJyb3IpKTsKKyAgICAgICAgbV9jZkVycm9yVXNlckluZm9EaWN0ID0gYWRv
cHRDRihDRkVycm9yQ29weVVzZXJJbmZvKGNmRXJyb3IpKTsKICAgICB9CiAKICAgICBpZiAoIW1f
Y2ZFcnJvclVzZXJJbmZvRGljdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhp
c3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXggOTM5ZTY0
ODBhYmUyMDQ4MWNkZDA4MTg0YTMwNzU1M2FkODA1NzM1ZC4uNzllN2E1M2FkNjAxMDQ2ZWZjMzNk
YWI1MmU1MmE1NDllZjIxMGJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlz
dG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAKQEAgLTk3LDEw
ICs5NywxMCBAQCBzdGF0aWMgYm9vbCBhcmVFcXVhbE9yQ2xvc2UoZG91YmxlIGQxLCBkb3VibGUg
ZDIpCiAKIHN0YXRpYyBDT01QdHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IGNyZWF0ZVVzZXJJ
bmZvRnJvbUFycmF5KEJTVFIgbm90aWZpY2F0aW9uU3RyLCBDRkFycmF5UmVmIGFycmF5SXRlbSkK
IHsKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeShBZG9w
dENGLCAKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeSA9
IGFkb3B0Q0YoCiAgICAgICAgIENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5
cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNr
cykpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXkoQWRvcHRDRiwgTWFyc2hhbGxp
bmdIZWxwZXJzOjpCU1RSVG9DRlN0cmluZ1JlZihub3RpZmljYXRpb25TdHIpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGtleSA9IGFkb3B0Q0YoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RS
VG9DRlN0cmluZ1JlZihub3RpZmljYXRpb25TdHIpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkaWN0aW9uYXJ5LmdldCgpLCBrZXkuZ2V0KCksIGFycmF5SXRlbSk7CiAKICAgICBDT01QdHI8
Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IHJlc3VsdCA9IENGRGljdGlvbmFyeVByb3BlcnR5QmFn
OjpjcmVhdGVJbnN0YW5jZSgpOwpAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBDT01QdHI8Q0ZE
aWN0aW9uYXJ5UHJvcGVydHlCYWc+IGNyZWF0ZVVzZXJJbmZvRnJvbUFycmF5KEJTVFIgbm90aWZp
Y2F0aW9uCiBzdGF0aWMgQ09NUHRyPENGRGljdGlvbmFyeVByb3BlcnR5QmFnPiBjcmVhdGVVc2Vy
SW5mb0Zyb21IaXN0b3J5SXRlbShCU1RSIG5vdGlmaWNhdGlvblN0ciwgSVdlYkhpc3RvcnlJdGVt
KiBpdGVtKQogewogICAgIC8vIHJlZmVyZW5jZSBjb3VudGluZyBvZiBpdGVtIGFkZGVkIHRvIHRo
ZSBhcnJheSBpcyBtYW5hZ2VkIGJ5IHRoZSBDRkFycmF5IHZhbHVlIGNhbGxiYWNrcwotICAgIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBpdGVtTGlzdChBZG9wdENGLCBDRkFycmF5Q3JlYXRlKDAsIChj
b25zdCB2b2lkKiopICZpdGVtLCAxLCAmTWFyc2hhbGxpbmdIZWxwZXJzOjprSVVua25vd25BcnJh
eUNhbGxCYWNrcykpOworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBpdGVtTGlzdCA9IGFkb3B0
Q0YoQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKSAmaXRlbSwgMSwgJk1hcnNoYWxsaW5n
SGVscGVyczo6a0lVbmtub3duQXJyYXlDYWxsQmFja3MpKTsKICAgICBDT01QdHI8Q0ZEaWN0aW9u
YXJ5UHJvcGVydHlCYWc+IGluZm8gPSBjcmVhdGVVc2VySW5mb0Zyb21BcnJheShub3RpZmljYXRp
b25TdHIsIGl0ZW1MaXN0LmdldCgpKTsKICAgICByZXR1cm4gaW5mbzsKIH0KQEAgLTEyNSw3ICsx
MjUsNyBAQCBXZWJIaXN0b3J5OjpXZWJIaXN0b3J5KCkKICAgICBnQ2xhc3NDb3VudCsrOwogICAg
IGdDbGFzc05hbWVDb3VudC5hZGQoIldlYkhpc3RvcnkiKTsKIAotICAgIG1fZW50cmllc0J5VVJM
LmFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZNYXJzaGFsbGluZ0hlbHBlcnM6OmtJVW5rbm93bkRpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcykpOworICAgIG1fZW50cmllc0J5VVJMID0gYWRvcHRDRihDRkRpY3Rpb25h
cnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJk1h
cnNoYWxsaW5nSGVscGVyczo6a0lVbmtub3duRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAK
ICAgICBtX3ByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJlZmVy
ZW5jZXMoKTsKIH0KQEAgLTI0MCwxMCArMjQwLDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViSGlzdG9yeTo6bG9hZEZyb21VUkwoCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09M
KiBzdWNjZWVkZWQpCiB7CiAgICAgSFJFU1VMVCBociA9IFNfT0s7Ci0gICAgUmV0YWluUHRyPENG
TXV0YWJsZUFycmF5UmVmPiBkaXNjYXJkZWRJdGVtcyhBZG9wdENGLCAKKyAgICBSZXRhaW5QdHI8
Q0ZNdXRhYmxlQXJyYXlSZWY+IGRpc2NhcmRlZEl0ZW1zID0gYWRvcHRDRigKICAgICAgICAgQ0ZB
cnJheUNyZWF0ZU11dGFibGUoMCwgMCwgJk1hcnNoYWxsaW5nSGVscGVyczo6a0lVbmtub3duQXJy
YXlDYWxsQmFja3MpKTsKIAotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsUmVmKEFkb3B0Q0Ys
IE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZVUkxSZWYodXJsKSk7CisgICAgUmV0YWluUHRy
PENGVVJMUmVmPiB1cmxSZWYgPSBhZG9wdENGKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZV
UkxSZWYodXJsKSk7CiAKICAgICBociA9IGxvYWRIaXN0b3J5R3V0c0Zyb21VUkwodXJsUmVmLmdl
dCgpLCBkaXNjYXJkZWRJdGVtcy5nZXQoKSwgZXJyb3IpOwogICAgIGlmIChGQUlMRUQoaHIpKQpA
QCAtMjc3LDE0ICsyNzcsMTQgQEAgSFJFU1VMVCBXZWJIaXN0b3J5Ojpsb2FkSGlzdG9yeUd1dHNG
cm9tVVJMKENGVVJMUmVmIHVybCwgQ0ZNdXRhYmxlQXJyYXlSZWYgZGlzY2EKICAgICBIUkVTVUxU
IGhyID0gU19PSzsKICAgICBpbnQgbnVtYmVyT2ZJdGVtc0xvYWRlZCA9IDA7CiAKLSAgICBSZXRh
aW5QdHI8Q0ZSZWFkU3RyZWFtUmVmPiBzdHJlYW0oQWRvcHRDRiwgQ0ZSZWFkU3RyZWFtQ3JlYXRl
V2l0aEZpbGUoMCwgdXJsKSk7CisgICAgUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gc3RyZWFt
ID0gYWRvcHRDRihDRlJlYWRTdHJlYW1DcmVhdGVXaXRoRmlsZSgwLCB1cmwpKTsKICAgICBpZiAo
IXN0cmVhbSkgCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBpZiAoIUNGUmVhZFN0cmVh
bU9wZW4oc3RyZWFtLmdldCgpKSkgCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBoaXN0b3J5TGlzdChBZG9wdENGLCBjcmVhdGVIaXN0b3J5
TGlzdEZyb21TdHJlYW0oc3RyZWFtLmdldCgpLCBmb3JtYXQpKTsKKyAgICBSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPiBoaXN0b3J5TGlzdCA9IGFkb3B0Q0YoY3JlYXRlSGlzdG9yeUxpc3RGcm9t
U3RyZWFtKHN0cmVhbS5nZXQoKSwgZm9ybWF0KSk7CiAgICAgQ0ZSZWFkU3RyZWFtQ2xvc2Uoc3Ry
ZWFtLmdldCgpKTsKIAogICAgIGlmICghaGlzdG9yeUxpc3QpIApAQCAtMzU5LDcgKzM1OSw3IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeTo6c2F2ZVRvVVJMKAogICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQk9PTCogc3VjY2VlZGVkKQogewogICAgIEhSRVNVTFQgaHIgPSBT
X09LOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsUmVmKEFkb3B0Q0YsIE1hcnNoYWxsaW5n
SGVscGVyczo6QlNUUlRvQ0ZVUkxSZWYodXJsKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1
cmxSZWYgPSBhZG9wdENGKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZVUkxSZWYodXJsKSk7
CiAKICAgICBociA9IHNhdmVIaXN0b3J5R3V0cyh1cmxSZWYuZ2V0KCksIGVycm9yKTsKIApAQCAt
Mzg0LDcgKzM4NCw3IEBAIEhSRVNVTFQgV2ViSGlzdG9yeTo6c2F2ZUhpc3RvcnlHdXRzKENGVVJM
UmVmIHVybCwgSVdlYkVycm9yKiogZXJyb3IpCiAgICAgaWYgKCFkYXRhLmdldCgpKQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwogCi0gICAgUmV0YWluUHRyPENGV3JpdGVTdHJlYW1SZWY+IHN0cmVh
bShBZG9wdENGLCBDRldyaXRlU3RyZWFtQ3JlYXRlV2l0aEZpbGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgdXJsKSk7CisgICAgUmV0YWluUHRyPENGV3JpdGVTdHJlYW1SZWY+IHN0cmVhbSA9IGFkb3B0
Q0YoQ0ZXcml0ZVN0cmVhbUNyZWF0ZVdpdGhGaWxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybCkp
OwogICAgIGlmICghc3RyZWFtKSAKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIApAQCAtNDUxLDcg
KzQ1MSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeTo6cmVtb3ZlQWxs
SXRlbXMoIHZvaWQpCiAgICAgQ0ZJbmRleCBpdGVtQ291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3Vu
dChtX2VudHJpZXNCeVVSTC5nZXQoKSk7CiAgICAgVmVjdG9yPElXZWJIaXN0b3J5SXRlbSo+IGl0
ZW1zVmVjdG9yKGl0ZW1Db3VudCk7CiAgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZhbHVlcyht
X2VudHJpZXNCeVVSTC5nZXQoKSwgMCwgKGNvbnN0IHZvaWQqKilpdGVtc1ZlY3Rvci5kYXRhKCkp
OwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBhbGxJdGVtcyhBZG9wdENGLCBDRkFycmF5Q3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lkKiopaXRlbXNWZWN0b3IuZGF0YSgp
LCBpdGVtQ291bnQsICZNYXJzaGFsbGluZ0hlbHBlcnM6OmtJVW5rbm93bkFycmF5Q2FsbEJhY2tz
KSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGFsbEl0ZW1zID0gYWRvcHRDRihDRkFycmF5
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lkKiopaXRlbXNWZWN0b3IuZGF0
YSgpLCBpdGVtQ291bnQsICZNYXJzaGFsbGluZ0hlbHBlcnM6OmtJVW5rbm93bkFycmF5Q2FsbEJh
Y2tzKSk7CiAKICAgICBDRkRpY3Rpb25hcnlSZW1vdmVBbGxWYWx1ZXMobV9lbnRyaWVzQnlVUkwu
Z2V0KCkpOwogCkBAIC02MjIsNyArNjIyLDcgQEAgSFJFU1VMVCBXZWJIaXN0b3J5OjpyZW1vdmVJ
dGVtKElXZWJIaXN0b3J5SXRlbSogZW50cnkpCiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAg
IHJldHVybiBocjsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5nKEFkb3B0
Q0YsIE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJpbmdSZWYodXJsQlN0cikpOworICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5nID0gYWRvcHRDRihNYXJzaGFsbGluZ0hl
bHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVmKHVybEJTdHIpKTsKIAogICAgIC8vIElmIHRoaXMgZXhh
Y3Qgb2JqZWN0IGlzbid0IHN0b3JlZCwgdGhlbiBtYWtlIG5vIGNoYW5nZS4KICAgICAvLyBGSVhN
RTogSXMgdGhpcyB0aGUgcmlnaHQgYmVoYXZpb3IgaWYgdGhpcyBlbnRyeSBpc24ndCBwcmVzZW50
LCBidXQgYW5vdGhlciBlbnRyeSBmb3IgdGhlIHNhbWUgVVJMIGlzPwpAQCAtNjU0LDcgKzY1NCw3
IEBAIEhSRVNVTFQgV2ViSGlzdG9yeTo6YWRkSXRlbShJV2ViSGlzdG9yeUl0ZW0qIGVudHJ5LCBi
b29sIGRpc2NhcmREdXBsaWNhdGUsIGJvb2wqCiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAg
IHJldHVybiBocjsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5nKEFkb3B0
Q0YsIE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJpbmdSZWYodXJsQlN0cikpOworICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5nID0gYWRvcHRDRihNYXJzaGFsbGluZ0hl
bHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVmKHVybEJTdHIpKTsKIAogICAgIENPTVB0cjxJV2ViSGlz
dG9yeUl0ZW0+IG9sZEVudHJ5KChJV2ViSGlzdG9yeUl0ZW0qKSBDRkRpY3Rpb25hcnlHZXRWYWx1
ZSgKICAgICAgICAgbV9lbnRyaWVzQnlVUkwuZ2V0KCksIHVybFN0cmluZy5nZXQoKSkpOwpAQCAt
NzY4LDcgKzc2OCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeTo6aXRl
bUZvclVSTCgKICAgICAvKiBbaW5dICovIEJTVFIgdXJsLAogICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gSVdlYkhpc3RvcnlJdGVtKiogaXRlbSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHVybFN0cmluZyhBZG9wdENGLCBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVm
KHVybCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5nID0gYWRvcHRDRihN
YXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVmKHVybCkpOwogICAgIHJldHVybiBp
dGVtRm9yVVJMU3RyaW5nKHVybFN0cmluZy5nZXQoKSwgaXRlbSk7CiB9CiAKQEAgLTgxMSw3ICs4
MTEsNyBAQCBIUkVTVUxUIFdlYkhpc3Rvcnk6OmFkZEl0ZW1Ub0RhdGVDYWNoZXMoSVdlYkhpc3Rv
cnlJdGVtKiBlbnRyeSkKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoIW1fZW50cmllc0J5
RGF0ZS5jb250YWlucyhkYXRlS2V5KSk7CiAgICAgICAgIC8vIG5vIG90aGVyIGVudHJpZXMgZXhp
c3QgZm9yIHRoaXMgZGF0ZQotICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGVu
dHJ5QXJyYXkoQWRvcHRDRiwgCisgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4g
ZW50cnlBcnJheSA9IGFkb3B0Q0YoCiAgICAgICAgICAgICBDRkFycmF5Q3JlYXRlTXV0YWJsZSgw
LCAwLCAmTWFyc2hhbGxpbmdIZWxwZXJzOjprSVVua25vd25BcnJheUNhbGxCYWNrcykpOwogICAg
ICAgICBDRkFycmF5QXBwZW5kVmFsdWUoZW50cnlBcnJheS5nZXQoKSwgZW50cnkpOwogICAgICAg
ICBtX2VudHJpZXNCeURhdGUuc2V0KGRhdGVLZXksIGVudHJ5QXJyYXkpOwpAQCAtODU1LDcgKzg1
NSw3IEBAIEhSRVNVTFQgV2ViSGlzdG9yeTo6cmVtb3ZlSXRlbUZyb21EYXRlQ2FjaGVzKElXZWJI
aXN0b3J5SXRlbSogZW50cnkpCiAKIHN0YXRpYyB2b2lkIGdldERheUJvdW5kYXJpZXMoQ0ZBYnNv
bHV0ZVRpbWUgZGF5LCBDRkFic29sdXRlVGltZSYgYmVnaW5uaW5nT2ZEYXksIENGQWJzb2x1dGVU
aW1lJiBiZWdpbm5pbmdPZk5leHREYXkpCiB7Ci0gICAgUmV0YWluUHRyPENGVGltZVpvbmVSZWY+
IHRpbWVab25lKEFkb3B0Q0YsIENGVGltZVpvbmVDb3B5RGVmYXVsdCgpKTsKKyAgICBSZXRhaW5Q
dHI8Q0ZUaW1lWm9uZVJlZj4gdGltZVpvbmUgPSBhZG9wdENGKENGVGltZVpvbmVDb3B5RGVmYXVs
dCgpKTsKICAgICBDRkdyZWdvcmlhbkRhdGUgZGF0ZSA9IENGQWJzb2x1dGVUaW1lR2V0R3JlZ29y
aWFuRGF0ZShkYXksIHRpbWVab25lLmdldCgpKTsKICAgICBkYXRlLmhvdXIgPSAwOwogICAgIGRh
dGUubWludXRlID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkljb25EYXRh
YmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJY29uRGF0YWJhc2UuY3BwCmluZGV4IDZk
Yzc4ZTg4NmNkNDg1YjExY2IzNTZlMGMwNjZhZjZjZGQ5NTRlMDEuLjMxNmEzNTg4ZTFmMGE5NTFj
NTdmNmYxMTAzNWJjZTg1YjlkODMzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
Ykljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNl
LmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIHN0YXRpYyB2b2lkIHBvc3REaWRSZW1vdmVBbGxJY29u
c05vdGlmaWNhdGlvbihXZWJJY29uRGF0YWJhc2UqIGljb25EQikKIAogc3RhdGljIHZvaWQgcG9z
dERpZEFkZEljb25Ob3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBXZWJJY29uRGF0
YWJhc2UqIGljb25EQikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4g
ZGljdGlvbmFyeShBZG9wdENGLCAKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJl
Zj4gZGljdGlvbmFyeSA9IGFkb3B0Q0YoCiAgICAgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgw
LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CiAKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5Lmdl
dCgpLCBXZWJJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZU5vdGlmaWNhdGlvblVzZXJJbmZvVVJM
S2V5KCksIHBhZ2VVUkwuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwIGIvU291cmNlL1dlYktpdC93
aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAppbmRleCBkZmI3MTRiNDY1MDYxYWIyMDM1MmJh
M2Q3NTc3NGZiZWZhZjI3ZDdkLi40M2Y5YjcwNjI0MjlhYjhhM2Y4OGVlNjMxNDcxZTYxYjg5OTk3
NzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKQEAg
LTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMgQ0ZCdW5kbGVSZWYgY2ZCdW5kbGVGb3JTdHJpbmdzQnVu
ZGxlKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3RyaW5ncwogICAgIGNyZWF0ZVdlYktp
dEJ1bmRsZSgpOwogCiAgICAgaWYgKCFzdHJpbmdzQnVuZGxlLT5idW5kbGUpCi0gICAgICAgIHN0
cmluZ3NCdW5kbGUtPmJ1bmRsZSA9IENGQnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIoUmV0
YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKDAs
IHN0cmluZ3NCdW5kbGUtPmlkZW50aWZpZXIsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpKS5nZXQo
KSk7CisgICAgICAgIHN0cmluZ3NCdW5kbGUtPmJ1bmRsZSA9IENGQnVuZGxlR2V0QnVuZGxlV2l0
aElkZW50aWZpZXIoYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKDAsIHN0cmluZ3NC
dW5kbGUtPmlkZW50aWZpZXIsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpKS5nZXQoKSk7CiAgICAg
cmV0dXJuIHN0cmluZ3NCdW5kbGUtPmJ1bmRsZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
TXV0YWJsZVVSTFJlcXVlc3QuY3BwCmluZGV4IGZiOTBlOWYxNjM3YjQ4YTNkYjQ4YjhkOTg1YWY4
ZWQzMzgyNTJkYzAuLjVmYmNiMDhkY2RlZjM2YmVjNTYzOWM3OTllYmQ5YzY2ZTAzYmVkNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKQEAgLTM3Niw3ICsz
NzYsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYk11dGFibGVVUkxSZXF1ZXN0Ojpt
dXRhYmxlQ29weSgKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAogI2lmIFVTRShDRk5FVFdP
UkspCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZVVSTFJlcXVlc3RSZWY+IG11dGFibGVSZXF1ZXN0
KEFkb3B0Q0YsIENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1
bHQsIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpKSk7CisgICAgUmV0YWlu
UHRyPENGTXV0YWJsZVVSTFJlcXVlc3RSZWY+IG11dGFibGVSZXF1ZXN0ID0gYWRvcHRDRihDRlVS
TFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3JlcXVlc3Qu
Y2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSkpOwogICAgICpyZXN1bHQgPSBjcmVhdGVJbnN0
YW5jZShSZXNvdXJjZVJlcXVlc3QobXV0YWJsZVJlcXVlc3QuZ2V0KCkpKTsKICAgICByZXR1cm4g
U19PSzsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNl
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggZmYyNmI0
ODZkMDM0OGZlODE3MmI0NjVmZGZmNDFjZTFlZDljMGRhOC4uNjg0NGZhZjk4ZTAzMDYwMzcxYjZk
OWEyYzZkNThiZGQwMWRjYWEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViUHJl
ZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcApA
QCAtODksNyArODksNyBAQCBzdGF0aWMgTnVtYmVyVHlwZSBudW1iZXJWYWx1ZUZvclByZWZlcmVu
Y2VzVmFsdWUoQ0ZQcm9wZXJ0eUxpc3RSZWYgdmFsdWUpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBOdW1i
ZXJUeXBlPgogc3RhdGljIFJldGFpblB0cjxDRk51bWJlclJlZj4gY2ZOdW1iZXIoTnVtYmVyVHlw
ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gUmV0YWluUHRyPENGTnVtYmVyUmVmPihBZG9wdENGLCBD
Rk51bWJlckNyZWF0ZSgwLCBDRk51bWJlclRyYWl0czxOdW1iZXJUeXBlPjo6VHlwZSwgJnZhbHVl
KSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwgQ0ZOdW1iZXJUcmFpdHM8
TnVtYmVyVHlwZT46OlR5cGUsICZ2YWx1ZSkpOwogfQogCiBzdGF0aWMgYm9vbCBib29sZWFuVmFs
dWVGb3JQcmVmZXJlbmNlc1ZhbHVlKENGUHJvcGVydHlMaXN0UmVmIHZhbHVlKQpAQCAtMjMzLDcg
KzIzMyw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmluaXRpYWxpemVEZWZhdWx0U2V0dGluZ3Mo
KQogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTaG91bGRE
aXNwbGF5Q2FwdGlvbnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKICAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2hvdWxkRGlzcGxheVRleHRE
ZXNjcmlwdGlvbnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gbGlua0JlaGF2aW9yU3RyaW5nUmVmKEFkb3B0Q0YsIENGU3RyaW5n
Q3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiJWQiKSwgV2ViS2l0RWRpdGFibGVMaW5rRGVm
YXVsdEJlaGF2aW9yKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsaW5rQmVoYXZpb3JT
dHJpbmdSZWYgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigi
JWQiKSwgV2ViS2l0RWRpdGFibGVMaW5rRGVmYXVsdEJlaGF2aW9yKSk7CiAgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEVkaXRhYmxlTGlua0JlaGF2aW9yUHJl
ZmVyZW5jZUtleSksIGxpbmtCZWhhdmlvclN0cmluZ1JlZi5nZXQoKSk7CiAKICAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SGlzdG9yeUl0ZW1MaW1pdEtleSks
IENGU1RSKCIxMDAwIikpOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6
OmluaXRpYWxpemVEZWZhdWx0U2V0dGluZ3MoKQogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5UcnVlKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoUHJlZmVyZW5jZUtleSksIENGU1RSKCIiKSk7CiAKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNhY2hlTW9kZWxSZWYoQWRvcHRDRiwgQ0ZTdHJpbmdD
cmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCIlZCIpLCBXZWJDYWNoZU1vZGVsRG9jdW1lbnRW
aWV3ZXIpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNhY2hlTW9kZWxSZWYgPSBhZG9w
dENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiJWQiKSwgV2ViQ2FjaGVN
b2RlbERvY3VtZW50Vmlld2VyKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdENhY2hlTW9kZWxQcmVmZXJlbmNlS2V5KSwgY2FjaGVNb2RlbFJlZi5nZXQo
KSk7CiAKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QXV0
aG9yQW5kVXNlclN0eWxlc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwpA
QCAtMjg0LDcgKzI4NCw3IEBAIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4gV2ViUHJlZmVy
ZW5jZXM6OnZhbHVlRm9yS2V5KENGU3RyaW5nUmVmIGtleSkKICAgICBpZiAodmFsdWUpCiAgICAg
ICAgIHJldHVybiB2YWx1ZTsKIAotICAgIHZhbHVlLmFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlB
cHBWYWx1ZShrZXksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKSk7CisgICAgdmFs
dWUgPSBhZG9wdENGKENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoa2V5LCBrQ0ZQcmVmZXJlbmNl
c0N1cnJlbnRBcHBsaWNhdGlvbikpOwogICAgIGlmICh2YWx1ZSkKICAgICAgICAgcmV0dXJuIHZh
bHVlOwogCkBAIC0zNTQsOCArMzU0LDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0U3RyaW5n
VmFsdWUoQ0ZTdHJpbmdSZWYga2V5LCBMUENUU1RSIHZhbHVlKQogICAgIGlmICh2YWwgJiYgIXdj
c2NtcCh2YWwsIHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gdmFsdWVSZWYoQWRvcHRDRiwKLSAgICAgICAgQ0ZTdHJpbmdDcmVhdGVXaXRo
Q2hhcmFjdGVyc05vQ29weSgwLCAoVW5pQ2hhciopX3djc2R1cCh2YWx1ZSksIChDRkluZGV4KXdj
c2xlbih2YWx1ZSksIGtDRkFsbG9jYXRvck1hbGxvYykpOworICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gdmFsdWVSZWYgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0Nv
cHkoMCwgKFVuaUNoYXIqKV93Y3NkdXAodmFsdWUpLCAoQ0ZJbmRleCl3Y3NsZW4odmFsdWUpLCBr
Q0ZBbGxvY2F0b3JNYWxsb2MpKTsKICAgICBzZXRWYWx1ZUZvcktleShrZXksIHZhbHVlUmVmLmdl
dCgpKTsKIAogICAgIHBvc3RQcmVmZXJlbmNlc0NoYW5nZXNOb3RpZmljYXRpb24oKTsKQEAgLTQy
Miw3ICs0MjEsNyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpsb2FkKCkKIHsKICAgICBpbml0aWFs
aXplRGVmYXVsdFNldHRpbmdzKCk7CiAKLSAgICBtX3ByaXZhdGVQcmVmcy5hZG9wdENGKENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgIG1fcHJpdmF0ZVByZWZz
ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlv
bmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAog
ICAgIG1pZ3JhdGVXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcygpOwogfQpAQCAtNDM5
LDExICs0MzgsMTEgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6bWlncmF0ZVdlYktpdFByZWZlcmVu
Y2VzVG9DRlByZWZlcmVuY2VzKCkKIAogICAgIFdURjo6Q1N0cmluZyBwYXRoID0gb2xkUHJlZmVy
ZW5jZXNQYXRoKCkudXRmOCgpOwogCi0gICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxSZWYoQWRv
cHRDRiwgQ0ZVUkxDcmVhdGVGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKDAsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUludDgqPihwYXRoLmRhdGEoKSksIHBhdGgubGVuZ3RoKCksIGZhbHNl
KSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxSZWYgPSBhZG9wdENGKENGVVJMQ3JlYXRl
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJ
bnQ4Kj4ocGF0aC5kYXRhKCkpLCBwYXRoLmxlbmd0aCgpLCBmYWxzZSkpOwogICAgIGlmICghdXJs
UmVmKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVmPiBz
dHJlYW0oQWRvcHRDRiwgQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEZpbGUoMCwgdXJsUmVmLmdldCgp
KSk7CisgICAgUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gc3RyZWFtID0gYWRvcHRDRihDRlJl
YWRTdHJlYW1DcmVhdGVXaXRoRmlsZSgwLCB1cmxSZWYuZ2V0KCkpKTsKICAgICBpZiAoIXN0cmVh
bSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00NTEsNyArNDUwLDcgQEAgdm9pZCBXZWJQcmVmZXJl
bmNlczo6bWlncmF0ZVdlYktpdFByZWZlcmVuY2VzVG9DRlByZWZlcmVuY2VzKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQ0ZQcm9wZXJ0eUxpc3RGb3JtYXQgZm9ybWF0ID0ga0NGUHJvcGVydHlM
aXN0QmluYXJ5Rm9ybWF0X3YxXzAgfCBrQ0ZQcm9wZXJ0eUxpc3RYTUxGb3JtYXRfdjFfMDsKLSAg
ICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IHBsaXN0KEFkb3B0Q0YsIENGUHJvcGVydHlM
aXN0Q3JlYXRlRnJvbVN0cmVhbSgwLCBzdHJlYW0uZ2V0KCksIDAsIGtDRlByb3BlcnR5TGlzdE11
dGFibGVDb250YWluZXJzQW5kTGVhdmVzLCAmZm9ybWF0LCAwKSk7CisgICAgUmV0YWluUHRyPENG
UHJvcGVydHlMaXN0UmVmPiBwbGlzdCA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVGcm9t
U3RyZWFtKDAsIHN0cmVhbS5nZXQoKSwgMCwga0NGUHJvcGVydHlMaXN0TXV0YWJsZUNvbnRhaW5l
cnNBbmRMZWF2ZXMsICZmb3JtYXQsIDApKTsKICAgICBDRlJlYWRTdHJlYW1DbG9zZShzdHJlYW0u
Z2V0KCkpOwogCiAgICAgaWYgKCFwbGlzdCB8fCBDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0g
Q0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpCkBAIC0xNTIwLDggKzE1MTksOCBAQCBIUkVTVUxUIFdl
YlByZWZlcmVuY2VzOjpzZXRQcmVmZXJlbmNlRm9yVGVzdChCU1RSIGtleSwgQlNUUiB2YWx1ZSkK
IHsKICAgICBpZiAoIVN5c1N0cmluZ0xlbihrZXkpIHx8ICFTeXNTdHJpbmdMZW4odmFsdWUpKQog
ICAgICAgICByZXR1cm4gRV9GQUlMOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5U3Ry
aW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgcmVpbnRlcnByZXRf
Y2FzdDxVbmlDaGFyKj4oa2V5KSwgU3lzU3RyaW5nTGVuKGtleSkpKTsKLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHZhbHVlU3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJh
Y3RlcnMoMCwgcmVpbnRlcnByZXRfY2FzdDxVbmlDaGFyKj4odmFsdWUpLCBTeXNTdHJpbmdMZW4o
dmFsdWUpKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXlTdHJpbmcgPSBhZG9wdENG
KENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgcmVpbnRlcnByZXRfY2FzdDxVbmlDaGFy
Kj4oa2V5KSwgU3lzU3RyaW5nTGVuKGtleSkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHZhbHVlU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIHJl
aW50ZXJwcmV0X2Nhc3Q8VW5pQ2hhcio+KHZhbHVlKSwgU3lzU3RyaW5nTGVuKHZhbHVlKSkpOwog
ICAgIHNldFZhbHVlRm9yS2V5KGtleVN0cmluZy5nZXQoKSwgdmFsdWVTdHJpbmcuZ2V0KCkpOwog
ICAgIHBvc3RQcmVmZXJlbmNlc0NoYW5nZXNOb3RpZmljYXRpb24oKTsKICAgICByZXR1cm4gU19P
SzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggMDNjMGExNWYxMzY4NmJjYTNiYjUxYTA2ZjU2ZjY3
MzIzMGRhNjIxOS4uZTQ3NzZmZGUwNDNkNTBjMTg0Y2NjMmZhNjM2YTMyOWY2ZDIyMDM0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViVmlldy5jcHAKQEAgLTQ2OSw4ICs0NjksOCBAQCB2b2lkIFdlYlZpZXc6OnNldENh
Y2hlTW9kZWwoV2ViQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQogICAgIGlmIChzX2RpZFNldENhY2hl
TW9kZWwgJiYgY2FjaGVNb2RlbCA9PSBzX2NhY2hlTW9kZWwpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFJldGFpblB0cjxDRlVSTENhY2hlUmVmPiBjZnVybENhY2hlKEFkb3B0Q0YsIENGVVJMQ2Fj
aGVDb3B5U2hhcmVkVVJMQ2FjaGUoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZnVy
bENhY2hlRGlyZWN0b3J5KEFkb3B0Q0YsIHdrQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgw
KSk7CisgICAgUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IGNmdXJsQ2FjaGUgPSBhZG9wdENGKENG
VVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBjZnVybENhY2hlRGlyZWN0b3J5ID0gYWRvcHRDRih3a0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJl
Y3RvcnkoMCkpOwogICAgIGlmICghY2Z1cmxDYWNoZURpcmVjdG9yeSkKICAgICAgICAgY2Z1cmxD
YWNoZURpcmVjdG9yeSA9IFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9y
eSgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKQEAgLTQ3MjYsNyArNDcyNiw3IEBAIEhSRVNVTFQgV2Vi
Vmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKElXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNh
dGlvbikKICAgICAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgICAgICByZXR1cm4gaHI7CiAK
LSAgICAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRo
U3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHRvU3RyaW5nKHN0cikuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwgMCkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IGFkb3B0Q0Yo
Q0ZVUkxDcmVhdGVXaXRoU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHRvU3RyaW5nKHN0ciku
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkpOwogCiAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBw
YXNzZWQgaW4gc3RyaW5nIGlzIGEgcGF0aCBhbmQgY29udmVydCBpdCB0byBhIFVSTC4KICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBuaWdodGx5IGJ1aWxkcyB1bnRp
bCB3ZSBjYW4gZ2V0IFNhZmFyaSB0byBwYXNzIApAQCAtNDczOSw3ICs0NzM5LDcgQEAgSFJFU1VM
VCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoSVdlYk5vdGlmaWNhdGlvbiogbm90
aWZpY2F0aW9uKQogICAgICAgICAgICAgaWYgKCFXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgs
IDAsIHN0ciwgbGVuLCAoTFBTVFIpdXRmOFBhdGguZGF0YSgpLCByZXN1bHQsIDAsIDApKQogICAg
ICAgICAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICAgICAgICAgIHVybC5hZG9wdENGKENG
VVJMQ3JlYXRlRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigwLCB1dGY4UGF0aC5kYXRhKCks
IHJlc3VsdCAtIDEsIGZhbHNlKSk7CisgICAgICAgICAgICB1cmwgPSBhZG9wdENGKENGVVJMQ3Jl
YXRlRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigwLCB1dGY4UGF0aC5kYXRhKCksIHJlc3Vs
dCAtIDEsIGZhbHNlKSk7CiAgICAgICAgIH0KIAogICAgICAgICBzZXR0aW5ncy0+c2V0VXNlclN0
eWxlU2hlZXRMb2NhdGlvbih1cmwuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Rvd25sb2Fkcy9jZm5ldC9Eb3dubG9hZENGTmV0LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Eb3dubG9hZHMvY2ZuZXQvRG93bmxvYWRDRk5ldC5jcHAKaW5kZXggNDliMzg2MTY4
YjY5ZmYwZjQ0Y2FlYzU2MzE1Yjk3ODNhY2JkNDc3Ni4uMjViYTYxZjc1YjFhN2VmNzlhMTIwY2U2
YmM4ODc1MDZmZDg1YzYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25s
b2Fkcy9jZm5ldC9Eb3dubG9hZENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
RG93bmxvYWRzL2NmbmV0L0Rvd25sb2FkQ0ZOZXQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQg
RG93bmxvYWQ6OnVzZUNyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGNoYWxsZW5nZSwKIHsKICAgICBpZiAoIW1fZG93bmxvYWQpCiAgICAgICAgIHJldHVy
bjsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwoQWRvcHRD
RiwgY3JlYXRlQ0YoY3JlZGVudGlhbCkpOworICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxS
ZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOwogICAgIENG
VVJMRG93bmxvYWRVc2VDcmVkZW50aWFsKG1fZG93bmxvYWQuZ2V0KCksIGNmQ3JlZGVudGlhbC5n
ZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKIH0KIApAQCAtOTYsNyAr
OTYsNyBAQCB2b2lkIERvd25sb2FkOjpzdGFydCgpCiAgICAgQ0ZVUkxEb3dubG9hZENsaWVudCBj
bGllbnQgPSB7MCwgdGhpcywgMCwgMCwgMCwgZGlkU3RhcnRDYWxsYmFjaywgd2lsbFNlbmRSZXF1
ZXN0Q2FsbGJhY2ssIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNhbGxiYWNrLCAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2VDYWxs
YmFjaywgd2lsbFJlc3VtZVdpdGhSZXNwb25zZUNhbGxiYWNrLCBkaWRSZWNlaXZlRGF0YUNhbGxi
YWNrLCBzaG91bGREZWNvZGVEYXRhT2ZNSU1FVHlwZUNhbGxiYWNrLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRPYmplY3RO
YW1lQ2FsbGJhY2ssIGRpZENyZWF0ZURlc3RpbmF0aW9uQ2FsbGJhY2ssIGRpZEZpbmlzaENhbGxi
YWNrLCBkaWRGYWlsQ2FsbGJhY2t9OwotICAgIG1fZG93bmxvYWQuYWRvcHRDRihDRlVSTERvd25s
b2FkQ3JlYXRlKDAsIGNmUmVxdWVzdCwgJmNsaWVudCkpOworICAgIG1fZG93bmxvYWQgPSBhZG9w
dENGKENGVVJMRG93bmxvYWRDcmVhdGUoMCwgY2ZSZXF1ZXN0LCAmY2xpZW50KSk7CiAKICAgICAv
LyBGSVhNRTogQWxsb3cgdGhpcyB0byBiZSBjaGFuZ2VkIGJ5IHRoZSBjbGllbnQuCiAgICAgQ0ZV
UkxEb3dubG9hZFNldERlbGV0ZXNVcG9uRmFpbHVyZShtX2Rvd25sb2FkLmdldCgpLCBmYWxzZSk7
CkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKFJlc291
cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2VDYWxsYmFjaywgd2lsbFJl
c3VtZVdpdGhSZXNwb25zZUNhbGxiYWNrLCBkaWRSZWNlaXZlRGF0YUNhbGxiYWNrLCBzaG91bGRE
ZWNvZGVEYXRhT2ZNSU1FVHlwZUNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZE9iamVjdE5hbWVDYWxsYmFjaywg
ZGlkQ3JlYXRlRGVzdGluYXRpb25DYWxsYmFjaywgZGlkRmluaXNoQ2FsbGJhY2ssIGRpZEZhaWxD
YWxsYmFja307CiAKLSAgICBtX2Rvd25sb2FkLmFkb3B0Q0YoQ0ZVUkxEb3dubG9hZENyZWF0ZUFu
ZFN0YXJ0V2l0aExvYWRpbmdDb25uZWN0aW9uKDAsIGNvbm5lY3Rpb24sIGhhbmRsZS0+Zmlyc3RS
ZXF1ZXN0KCkuY2ZVUkxSZXF1ZXN0KCksIHJlc3BvbnNlLmNmVVJMUmVzcG9uc2UoKSwgJmNsaWVu
dCkpOworICAgIG1fZG93bmxvYWQgPSBhZG9wdENGKENGVVJMRG93bmxvYWRDcmVhdGVBbmRTdGFy
dFdpdGhMb2FkaW5nQ29ubmVjdGlvbigwLCBjb25uZWN0aW9uLCBoYW5kbGUtPmZpcnN0UmVxdWVz
dCgpLmNmVVJMUmVxdWVzdCgpLCByZXNwb25zZS5jZlVSTFJlc3BvbnNlKCksICZjbGllbnQpKTsK
IAogICAgIC8vIEl0IGlzIHBvc3NpYmxlIGZvciBDRlVSTERvd25sb2FkQ3JlYXRlQW5kU3RhcnRX
aXRoTG9hZGluZ0Nvbm5lY3Rpb24oKSB0byBmYWlsIGlmIHRoZSBwYXNzZWQgaW4gQ0ZVUkxDb25u
ZWN0aW9uIGlzIG5vdCBpbiBhICJkb3dubG9hZGFibGUgc3RhdGUiCiAgICAgLy8gSG93ZXZlciwg
d2Ugc2hvdWxkIG5ldmVyIGhpdCB0aGF0IGNhc2UKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIERv
d25sb2FkOjpjYW5jZWwoKQogICAgIENGVVJMRG93bmxvYWRTZXREZWxldGVzVXBvbkZhaWx1cmUo
bV9kb3dubG9hZC5nZXQoKSwgZmFsc2UpOwogICAgIENGVVJMRG93bmxvYWRDYW5jZWwobV9kb3du
bG9hZC5nZXQoKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByZXN1bWVEYXRhKEFkb3B0
Q0YsIENGVVJMRG93bmxvYWRDb3B5UmVzdW1lRGF0YShtX2Rvd25sb2FkLmdldCgpKSk7CisgICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gcmVzdW1lRGF0YSA9IGFkb3B0Q0YoQ0ZVUkxEb3dubG9hZENv
cHlSZXN1bWVEYXRhKG1fZG93bmxvYWQuZ2V0KCkpKTsKICAgICBpZiAocmVzdW1lRGF0YSkKICAg
ICAgICAgRG93bmxvYWRCdW5kbGU6OmFwcGVuZFJlc3VtZURhdGEocmVzdW1lRGF0YS5nZXQoKSwg
bV9idW5kbGVQYXRoKTsKIApAQCAtMTY4LDggKzE2OCw4IEBAIHZvaWQgRG93bmxvYWQ6OmRpZERl
Y2lkZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24sIGJvb2wgYWxsb3dPdmVy
d3JpCiAgICAgbV9kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uOwogICAgIG1fYnVuZGxlUGF0aCA9
IGRlc3RpbmF0aW9uICsgRG93bmxvYWRCdW5kbGU6OmZpbGVFeHRlbnNpb24oKTsKIAotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gYnVuZGxlUGF0aChBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdp
dGhDaGFyYWN0ZXJzTm9Db3B5KDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KG1f
YnVuZGxlUGF0aC5jaGFyYWN0ZXJzKCkpLCBtX2J1bmRsZVBhdGgubGVuZ3RoKCksIGtDRkFsbG9j
YXRvck51bGwpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVBhdGhVUkwoQWRvcHRD
RiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgYnVuZGxlUGF0aC5nZXQoKSwga0NG
VVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGJ1bmRsZVBhdGggPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHko
MCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4obV9idW5kbGVQYXRoLmNoYXJhY3Rl
cnMoKSksIG1fYnVuZGxlUGF0aC5sZW5ndGgoKSwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlUGF0aFVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRo
RmlsZVN5c3RlbVBhdGgoMCwgYnVuZGxlUGF0aC5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHls
ZSwgZmFsc2UpKTsKICAgICBDRlVSTERvd25sb2FkU2V0RGVzdGluYXRpb24obV9kb3dubG9hZC5n
ZXQoKSwgYnVuZGxlUGF0aFVSTC5nZXQoKSwgYWxsb3dPdmVyd3JpdGUpOwogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjY3OTM3YzZhNGJm
MzQyOGJiZWQ5MWEyNjE1ZjJmMmQyOGNlZWU0MS4uMGJkNDIzMmY3ZjNkZmZkNjg4ZGY1ODc1ZjM4
NjU0OGY0ZmYwYTk5YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2MCBAQAorMjAxMy0wNS0wNiAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGFkb3B0Q0YgYW5kIGFkb3B0TlMgaW4gbW9yZSBw
bGFjZXMsIHRlc3QgY29kZSBhbmQgY29kZSBub3QgY29tcGlsZWQgb24gTWFjCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU2NTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHNpbWlsYXIgdG8g
bXkgbGFzdCBzZXQgb2YgY2hhbmdlcywgYnV0IGNvdmVycyBjb2RlIHRoYXQgSSBtaXNzZWQgd2l0
aAorICAgICAgICBnbG9iYWwgcmVwbGFjZSB1c2luZyB0aGUgU2FmYXJpIFhjb2RlIHdvcmtzcGFj
ZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5j
cHA6CisgICAgICAgIChjb252ZXJ0V2ViUmVzb3VyY2VEYXRhVG9TdHJpbmcpOgorICAgICAgICAo
Y29udmVydFdlYlJlc291cmNlUmVzcG9uc2VUb0RpY3Rpb25hcnkpOgorICAgICAgICAoY3JlYXRl
WE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
Zy9JbWFnZURpZmZDRy5jcHA6CisgICAgICAgIChjcmVhdGVJbWFnZUZyb21TdGRpbik6CisgICAg
ICAgIChjcmVhdGVEaWZmZXJlbmNlSW1hZ2UpOgorICAgICAgICAobWFpbik6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcDoKKyAgICAgICAgKHByaW50
UE5HKToKKyAgICAgICAgKGR1bXBCaXRtYXApOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nn
L1BpeGVsRHVtcFN1cHBvcnRDRy5oOgorICAgICAgICAoQml0bWFwQ29udGV4dDo6Qml0bWFwQ29u
dGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL01vY2tXZWJOb3RpZmljYXRpb25Q
cm92aWRlci5tbToKKyAgICAgICAgKC1bTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyIGluaXRd
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbToK
KyAgICAgICAgKGNyZWF0ZUJpdG1hcENvbnRleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6YWRkRGlzYWxsb3dl
ZFVSTCk6CisgICAgICAgIChUZXN0UnVubmVyOjphcHBsaWNhdGlvbkNhY2hlRGlza1VzYWdlRm9y
T3JpZ2luKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmxvY2FsU3RvcmFnZURpc2tVc2FnZUZvck9y
aWdpbik6CisgICAgICAgIChUZXN0UnVubmVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmln
aW4pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2luKToK
KyAgICAgICAgKFRlc3RSdW5uZXI6OmNvcHlEZWNvZGVkSG9zdE5hbWUpOgorICAgICAgICAoVGVz
dFJ1bm5lcjo6Y29weUVuY29kZWRIb3N0TmFtZSk6CisgICAgICAgIChUZXN0UnVubmVyOjpxdWV1
ZUxvYWQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRl
bkZvclVSTFNjaGVtZSk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvblVuYXZhaWxhYmxlRXJyb3IpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0VXNlclN0
eWxlU2hlZXRMb2NhdGlvbik6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRWYWx1ZUZvclVzZXIp
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKFRl
c3RSdW5uZXI6OnNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OmV4ZWNDb21tYW5kKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmZpbmRTdHJp
bmcpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6aXNDb21tYW5kRW5hYmxlZCk6CisgICAgICAgIChU
ZXN0UnVubmVyOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChUZXN0
UnVubmVyOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChUZXN0
UnVubmVyOjphZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmFkZFVzZXJTdHls
ZVNoZWV0KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IpOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQpOgorICAg
ICAgICAoVGVzdFJ1bm5lcjo6YXBpVGVzdE5ld1dpbmRvd0RhdGFMb2FkQmFzZVVSTCk6CisgICAg
ICAgICgtW1N5bmNocm9ub3VzTG9hZGVyIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOl0pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6YXV0aGVudGljYXRlU2Vzc2lv
bik6CisgICAgICAgIChUZXN0UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24p
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6ZGVueVdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24pOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9XZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMubW06
CisgICAgICAgIChjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YSk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL1dvcmtRdWV1ZUl0ZW1NYWMubW06CisgICAgICAgIChMb2Fk
SXRlbTo6aW52b2tlKToKKyAgICAgICAgKExvYWRIVE1MU3RyaW5nSXRlbTo6aW52b2tlKToKKyAg
ICAgICAgKFNjcmlwdEl0ZW06Omludm9rZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKHN1YnN0cmluZ0Zyb21JbmRleCk6CisgICAg
ICAgICh1cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQpOgorICAgICAgICAobGFzdFBhdGhDb21wb25l
bnQpOgorICAgICAgICAoc2hhcmVkQ0ZVUkxDYWNoZSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd2luL0ltYWdlRGlmZkNhaXJvLmNwcDoKKyAgICAgICAgKGNyZWF0ZUltYWdlRnJvbVN0ZGlu
KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9QaXhlbER1
bXBTdXBwb3J0V2luLmNwcDoKKyAgICAgICAgKGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmll
dyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwOgorICAg
ICAgICAoVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbik6CisgICAgICAgIChU
ZXN0UnVubmVyOjpzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbik6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9DdXN0b21Qcm90b2NvbHNTeW5jWEhSVGVzdC5tbToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvVGVzdFdlYktpdEFQSS9tYWMvSW5zdGFuY2VNZXRob2RTd2l6emxlci5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L2NmL1JldGFpblB0ckhhc2hpbmcuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZpbmRNYXRjaGVzLm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL1dlYkFyY2hpdmUuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9tYWMvR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1tOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93aW4vRG9Ob3RDb3B5
QU51bGxDRlVSTFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0FjY2VwdHNGaXJzdE1vdXNlLm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6QWNjZXB0c0ZpcnN0TW91c2U6OnJ1blRlc3QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0F0dHJpYnV0ZWRTdHJpbmcubW06CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9CYWNrRm9yd2FyZExpc3QubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9DYW5jZWxMb2FkRnJvbVJlc291cmNl
TG9hZERlbGVnYXRlLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGV4dE1lbnVDYW5Db3B5VVJMLm1tOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvRE9NSFRNTFRhYmxlQ2VsbENlbGxBYm92ZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RPTVJhbmdlT2ZT
dHJpbmcubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9EZXZpY2VTY2FsZUZhY3RvckluRGFzaGJvYXJkUmVnaW9ucy5t
bToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvbWFjL0RldmljZVNjYWxlRmFjdG9yT25CYWNrLm1tOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6RGV2aWNlU2NhbGVGYWN0b3JPbkJhY2s6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRHluYW1pY0RldmljZVNjYWxlRmFjdG9yLm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6RHluYW1pY0RldmljZVNjYWxlRmFjdG9yOjpjcmVhdGVX
aW5kb3cpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0hUTUxDb2xsZWN0aW9u
TmFtZWRJdGVtLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtLm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvSW5zcGVjdG9yQmFyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVEaXNhYmxlV2l0
aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZVBydW5lV2l0
aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9QYWdlVmlzaWJpbGl0eVN0YXRl
V2l0aFdpbmRvd0NoYW5nZXMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQYWdlVmlzaWJp
bGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXM6OnJ1blRlc3QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL1JlbmRlcmVkSW1hZ2VGcm9tRE9NUmFuZ2UubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9T
ZXRBbmRVcGRhdGVDYWNoZU1vZGVsLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU2V0RG9jdW1lbnRVUkkubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9TaW1wbGlmeU1hcmt1cC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1N0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHRGcm9tU3RyaW5nLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2lsbFNlbmRTdWJtaXRFdmVudC5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL1dpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1tOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9tYWMvUGxhdGZvcm1VdGls
aXRpZXNNYWMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjpNSU1FVHlwZUZvcldL
VVJMUmVzcG9uc2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL1dlYktpdEFnbm9zdGlj
VGVzdC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OldlYktpdEFnbm9zdGljVGVzdDo6cnVu
V2ViS2l0MVRlc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6V2ViS2l0QWdub3N0aWNUZXN0
OjpydW5XZWJLaXQyVGVzdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tOgorICAgICAgICAoV1RSOjp0ZXN0UGF0
aEZyb21VUkwpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmluaXRpYWxpemVX
YWl0VG9EdW1wV2F0Y2hkb2dUaW1lcklmTmVlZGVkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwOgorICAgICAgICAoV1RSOjpjcmVhdGVDR0NvbnRl
eHRGcm9tSW1hZ2UpOgorICAgICAgICAoV1RSOjpkdW1wQml0bWFwKToKKyAgICAgICAgKFdUUjo6
VGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5KToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW06CisgICAgICAgIChXVFI6OlBsYXRm
b3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJbWFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci93aW4vVGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6aW5pdGlhbGl6ZVRlc3RQbHVnaW5EaXJlY3RvcnkpOgorICAgICAgICBVc2UgYWRvcHRD
RiBhbmQgYWRvcHROUy4KKwogMjAxMy0wNS0wNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBBbHdheXNJbmxpbmUuaCBmcm9tIFdURgpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAKaW5k
ZXggMWY3ZjE3MmFiY2M4MDRiNjQ2NWM0YmQ4YzFkM2JjMmY0MDc2NGQyMS4uNTE0MGRiZjE2Mjkw
ZjM3YWEyMzI2ODAyNWJhYWE3MzA2ZDhmNGIyNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jZi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRp
YyB2b2lkIGNvbnZlcnRXZWJSZXNvdXJjZURhdGFUb1N0cmluZyhDRk11dGFibGVEaWN0aW9uYXJ5
UmVmIHJlc291cmNlKQogICAgICAgICAgICAgc3RyaW5nRW5jb2RpbmcgPSBrQ0ZTdHJpbmdFbmNv
ZGluZ1VURjg7CiAKICAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSBzdGF0aWNfY2FzdDxDRkRhdGFS
ZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHJlc291cmNlLCBDRlNUUigiV2ViUmVzb3VyY2VEYXRh
IikpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBkYXRhQXNTdHJpbmcoQWRvcHRD
RiwgQ0ZTdHJpbmdDcmVhdGVGcm9tRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBkYXRhLCBzdHJpbmdFbmNvZGluZykpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGRhdGFBc1N0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVGcm9tRXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkYXRhLCBzdHJpbmdFbmNvZGluZykp
OwogICAgICAgICBpZiAoZGF0YUFzU3RyaW5nKQogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUocmVzb3VyY2UsIENGU1RSKCJXZWJSZXNvdXJjZURhdGEiKSwgZGF0YUFzU3RyaW5nLmdl
dCgpKTsKICAgICB9CkBAIC0xMDksMTcgKzEwOSwxNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0V2Vi
UmVzb3VyY2VSZXNwb25zZVRvRGljdGlvbmFyeShDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHByb3Bl
cgogICAgIGlmIChDRkdldFR5cGVJRChyZXNwb25zZURhdGEpICE9IENGRGF0YUdldFR5cGVJRCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZXNwb25zZVJlZj4gcmVz
cG9uc2UoQWRvcHRDRiwgY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEocmVzcG9u
c2VEYXRhKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IHJlc3BvbnNlID0gYWRv
cHRDRihjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShyZXNwb25zZURhdGEpKTsK
ICAgICBpZiAoIXJlc3BvbnNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZN
dXRhYmxlRGljdGlvbmFyeVJlZj4gcmVzcG9uc2VEaWN0aW9uYXJ5KEFkb3B0Q0YsIENGRGljdGlv
bmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9u
YXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAg
IFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiByZXNwb25zZURpY3Rpb25hcnkgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOwogCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZVN0cmluZ1JlZj4gdXJsU3RyaW5n
KEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
MCwgQ0ZVUkxHZXRTdHJpbmcoQ0ZVUkxSZXNwb25zZUdldFVSTChyZXNwb25zZS5nZXQoKSkpKSk7
CisgICAgUmV0YWluUHRyPENGTXV0YWJsZVN0cmluZ1JlZj4gdXJsU3RyaW5nID0gYWRvcHRDRihD
RlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENGVVJMR2V0
U3RyaW5nKENGVVJMUmVzcG9uc2VHZXRVUkwocmVzcG9uc2UuZ2V0KCkpKSkpOwogICAgIG5vcm1h
bGl6ZVdlYlJlc291cmNlVVJMKHVybFN0cmluZy5nZXQoKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigiVVJMIiksIHVybFN0cmluZy5n
ZXQoKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlU3RyaW5nUmVmPiBtaW1lVHlwZVN0cmlu
ZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQs
IDAsIENGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShyZXNwb25zZS5nZXQoKSkpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZNdXRhYmxlU3RyaW5nUmVmPiBtaW1lVHlwZVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJp
bmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDRlVSTFJlc3BvbnNl
R2V0TUlNRVR5cGUocmVzcG9uc2UuZ2V0KCkpKSk7CiAgICAgY29udmVydE1JTUVUeXBlKG1pbWVU
eXBlU3RyaW5nLmdldCgpKTsKICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25zZURpY3Rp
b25hcnkuZ2V0KCksIENGU1RSKCJNSU1FVHlwZSIpLCBtaW1lVHlwZVN0cmluZy5nZXQoKSk7CiAK
QEAgLTEyOCwxNyArMTI4LDE3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRXZWJSZXNvdXJjZVJlc3Bv
bnNlVG9EaWN0aW9uYXJ5KENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcHJvcGVyCiAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoInRleHRF
bmNvZGluZ05hbWUiKSwgdGV4dEVuY29kaW5nTmFtZSk7CiAKICAgICBTSW50NjQgZXhwZWN0ZWRD
b250ZW50TGVuZ3RoID0gQ0ZVUkxSZXNwb25zZUdldEV4cGVjdGVkQ29udGVudExlbmd0aChyZXNw
b25zZS5nZXQoKSk7Ci0gICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBleHBlY3RlZENvbnRlbnRM
ZW5ndGhOdW1iZXIoQWRvcHRDRiwgQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
a0NGTnVtYmVyU0ludDY0VHlwZSwgJmV4cGVjdGVkQ29udGVudExlbmd0aCkpOworICAgIFJldGFp
blB0cjxDRk51bWJlclJlZj4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoTnVtYmVyID0gYWRvcHRDRihD
Rk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAm
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9u
c2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigiZXhwZWN0ZWRDb250ZW50TGVuZ3RoIiksIGV4cGVj
dGVkQ29udGVudExlbmd0aE51bWJlci5nZXQoKSk7CiAKICAgICBpZiAoQ0ZIVFRQTWVzc2FnZVJl
ZiBodHRwTWVzc2FnZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UocmVzcG9uc2UuZ2V0
KCkpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGFsbEhlYWRlcnMoQWRv
cHRDRiwgQ0ZIVFRQTWVzc2FnZUNvcHlBbGxIZWFkZXJGaWVsZHMoaHR0cE1lc3NhZ2UpKTsKLSAg
ICAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGFsbEhlYWRlckZpZWxkcyhB
ZG9wdENGLCBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAwLCBhbGxIZWFkZXJzLmdldCgpKSk7CisgICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlS
ZWY+IGFsbEhlYWRlcnMgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDb3B5QWxsSGVhZGVyRmllbGRz
KGh0dHBNZXNzYWdlKSk7CisgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVm
PiBhbGxIZWFkZXJGaWVsZHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5
KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGFsbEhlYWRlcnMuZ2V0KCkpKTsKICAgICAgICAgbm9y
bWFsaXplSFRUUFJlc3BvbnNlSGVhZGVyRmllbGRzKGFsbEhlYWRlckZpZWxkcy5nZXQoKSk7CiAg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZT
VFIoImFsbEhlYWRlckZpZWxkcyIpLCBhbGxIZWFkZXJGaWVsZHMuZ2V0KCkpOwogCiAgICAgICAg
IENGSW5kZXggc3RhdHVzQ29kZSA9IENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUo
aHR0cE1lc3NhZ2UpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHN0YXR1c0NvZGVO
dW1iZXIoQWRvcHRDRiwgQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVt
YmVyQ0ZJbmRleFR5cGUsICZzdGF0dXNDb2RlKSk7CisgICAgICAgIFJldGFpblB0cjxDRk51bWJl
clJlZj4gc3RhdHVzQ29kZU51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwga0NGTnVtYmVyQ0ZJbmRleFR5cGUsICZzdGF0dXNDb2RlKSk7CiAgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoInN0
YXR1c0NvZGUiKSwgc3RhdHVzQ29kZU51bWJlci5nZXQoKSk7CiAgICAgfQogCkBAIC0xNjAsMTIg
KzE2MCwxMiBAQCBDRlN0cmluZ1JlZiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEo
Q0ZEYXRhUmVmIHdlYkFyY2hpdmVEYXRhKQogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA9PSAxMDUwCiAgICAgQ0ZJbmRleCBieXRlc0NvdW50ID0gQ0ZEYXRhR2V0TGVuZ3Ro
KHdlYkFyY2hpdmVEYXRhKTsKLSAgICBSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVmPiByZWFkU3Ry
ZWFtKEFkb3B0Q0YsIENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBDRkRhdGFHZXRCeXRlUHRyKHdlYkFyY2hpdmVEYXRhKSwgYnl0ZXNDb3VudCwg
a0NGQWxsb2NhdG9yTnVsbCkpOworICAgIFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IHJlYWRT
dHJlYW0gPSBhZG9wdENGKENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBDRkRhdGFHZXRCeXRlUHRyKHdlYkFyY2hpdmVEYXRhKSwgYnl0ZXNDb3Vu
dCwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAgIENGUmVhZFN0cmVhbU9wZW4ocmVhZFN0cmVhbS5n
ZXQoKSk7Ci0gICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHByb3BlcnR5TGlz
dChBZG9wdENGLCAoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZilDRlByb3BlcnR5TGlzdENyZWF0ZUZy
b21TdHJlYW0oa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVhZFN0cmVhbS5nZXQoKSwgYnl0ZXNDb3Vu
dCwga0NGUHJvcGVydHlMaXN0TXV0YWJsZUNvbnRhaW5lcnNBbmRMZWF2ZXMsICZmb3JtYXQsIDAp
KTsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gcHJvcGVydHlMaXN0ID0g
YWRvcHRDRigoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZilDRlByb3BlcnR5TGlzdENyZWF0ZUZyb21T
dHJlYW0oa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVhZFN0cmVhbS5nZXQoKSwgYnl0ZXNDb3VudCwg
a0NGUHJvcGVydHlMaXN0TXV0YWJsZUNvbnRhaW5lcnNBbmRMZWF2ZXMsICZmb3JtYXQsIDApKTsK
ICAgICBDRlJlYWRTdHJlYW1DbG9zZShyZWFkU3RyZWFtLmdldCgpKTsKICNlbHNlCi0gICAgUmV0
YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHByb3BlcnR5TGlzdChBZG9wdENGLCAoQ0ZN
dXRhYmxlRGljdGlvbmFyeVJlZilDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKGtDRkFsbG9j
YXRvckRlZmF1bHQsIHdlYkFyY2hpdmVEYXRhLCBrQ0ZQcm9wZXJ0eUxpc3RNdXRhYmxlQ29udGFp
bmVyc0FuZExlYXZlcywgJmZvcm1hdCwgJmVycm9yKSk7CisgICAgUmV0YWluUHRyPENGTXV0YWJs
ZURpY3Rpb25hcnlSZWY+IHByb3BlcnR5TGlzdCA9IGFkb3B0Q0YoKENGTXV0YWJsZURpY3Rpb25h
cnlSZWYpQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB3
ZWJBcmNoaXZlRGF0YSwga0NGUHJvcGVydHlMaXN0TXV0YWJsZUNvbnRhaW5lcnNBbmRMZWF2ZXMs
ICZmb3JtYXQsICZlcnJvcikpOwogI2VuZGlmCiAKICAgICBpZiAoIXByb3BlcnR5TGlzdCkgewpA
QCAtMTc0LDcgKzE3NCw3IEBAIENGU3RyaW5nUmVmIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNo
aXZlRGF0YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURhdGEpCiAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxDRlN0cmluZ1JlZj4oQ0ZSZXRhaW4oQ0ZTVFIoIkFuIHVua25vd24gZXJyb3Igb2NjdXJy
ZWQgY29udmVydGluZyBkYXRhIHRvIHByb3BlcnR5IGxpc3QuIikpKTsKICAgICB9CiAKLSAgICBS
ZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IHJlc291cmNlcyhBZG9wdENGLCBDRkFycmF5Q3Jl
YXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tz
KSk7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiByZXNvdXJjZXMgPSBhZG9wdENG
KENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlQXJy
YXlDYWxsQmFja3MpKTsKICAgICBDRkFycmF5QXBwZW5kVmFsdWUocmVzb3VyY2VzLmdldCgpLCBw
cm9wZXJ0eUxpc3QuZ2V0KCkpOwogCiAgICAgd2hpbGUgKENGQXJyYXlHZXRDb3VudChyZXNvdXJj
ZXMuZ2V0KCkpKSB7CkBAIC0yMDksOSArMjA5LDkgQEAgQ0ZTdHJpbmdSZWYgY3JlYXRlWE1MU3Ry
aW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSkKICAgICBlcnJv
ciA9IDA7CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLSAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiB4bWxEYXRhKEFkb3B0Q0YsIENGUHJvcGVydHlMaXN0Q3Jl
YXRlWE1MRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwcm9wZXJ0eUxpc3QuZ2V0KCkpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiB4bWxEYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENy
ZWF0ZVhNTERhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcHJvcGVydHlMaXN0LmdldCgpKSk7CiAj
ZWxzZQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHhtbERhdGEoQWRvcHRDRiwgQ0ZQcm9wZXJ0
eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIHByb3BlcnR5TGlzdC5nZXQoKSwg
a0NGUHJvcGVydHlMaXN0WE1MRm9ybWF0X3YxXzAsIDAsICZlcnJvcikpOworICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IHhtbERhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBwcm9wZXJ0eUxpc3QuZ2V0KCksIGtDRlByb3BlcnR5TGlzdFhN
TEZvcm1hdF92MV8wLCAwLCAmZXJyb3IpKTsKICNlbmRpZgogCiAgICAgaWYgKCF4bWxEYXRhKSB7
CkBAIC0yMjAsOCArMjIwLDggQEAgQ0ZTdHJpbmdSZWYgY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFy
Y2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSkKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PENGU3RyaW5nUmVmPihDRlJldGFpbihDRlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1
cnJlZCBjb252ZXJ0aW5nIHByb3BlcnR5IGxpc3QgdG8gZGF0YS4iKSkpOwogICAgIH0KIAotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4geG1sU3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRl
RnJvbUV4dGVybmFsUmVwcmVzZW50YXRpb24oa0NGQWxsb2NhdG9yRGVmYXVsdCwgeG1sRGF0YS5n
ZXQoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KSk7Ci0gICAgUmV0YWluUHRyPENGTXV0YWJsZVN0
cmluZ1JlZj4gc3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgMCwgeG1sU3RyaW5nLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiB4bWxTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlRnJvbUV4dGVybmFsUmVw
cmVzZW50YXRpb24oa0NGQWxsb2NhdG9yRGVmYXVsdCwgeG1sRGF0YS5nZXQoKSwga0NGU3RyaW5n
RW5jb2RpbmdVVEY4KSk7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZVN0cmluZ1JlZj4gc3RyaW5n
ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQs
IDAsIHhtbFN0cmluZy5nZXQoKSkpOwogCiAgICAgLy8gUmVwbGFjZSAiQXBwbGUgQ29tcHV0ZXIi
IHdpdGggIkFwcGxlIiBpbiB0aGUgRFREIGRlY2xhcmF0aW9uLgogICAgIENGU3RyaW5nRmluZEFu
ZFJlcGxhY2Uoc3RyaW5nLmdldCgpLCBDRlNUUigiLS8vQXBwbGUgQ29tcHV0ZXIvLyIpLCBDRlNU
UigiLS8vQXBwbGUvLyIpLCBDRlJhbmdlTWFrZSgwLCBDRlN0cmluZ0dldExlbmd0aChzdHJpbmcu
Z2V0KCkpKSwgMCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURp
ZmZDRy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmZDRy5jcHAKaW5kZXgg
N2ZhNTExMGJiZDU5ZTdlNTEyMjFmODRiZTNkNTJjNWRiMGIwZDU0OS4uOTAwZjFiYTE1MjA5ZTE5
MDZjMjY5ZDZmOGE1MWUxZjE1MmFjMzI0OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2cvSW1hZ2VEaWZmQ0cuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL0ltYWdl
RGlmZkNHLmNwcApAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga1VU
VHlwZVBORyA9IENGU1RSKCJwdWJsaWMucG5nIik7CiBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IGNyZWF0ZUltYWdlRnJvbVN0ZGluKGludCBieXRlc1JlbWFpbmluZykKIHsKICAgICB1bnNp
Z25lZCBjaGFyIGJ1ZmZlclsyMDQ4XTsKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4g
ZGF0YShBZG9wdENGLCBDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIGJ5dGVzUmVtYWluaW5nKSk7Cisg
ICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZU11dGFibGUoMCwgYnl0ZXNSZW1haW5pbmcpKTsKIAogICAgIHdoaWxlIChieXRlc1JlbWFpbmlu
ZyA+IDApIHsKICAgICAgICAgc2l6ZV90IGJ5dGVzVG9SZWFkID0gbWluKGJ5dGVzUmVtYWluaW5n
LCAyMDQ4KTsKQEAgLTgzLDggKzgzLDggQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBj
cmVhdGVJbWFnZUZyb21TdGRpbihpbnQgYnl0ZXNSZW1haW5pbmcpCiAgICAgICAgIENGRGF0YUFw
cGVuZEJ5dGVzKGRhdGEuZ2V0KCksIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oYnl0ZXNS
ZWFkKSk7CiAgICAgICAgIGJ5dGVzUmVtYWluaW5nIC09IHN0YXRpY19jYXN0PGludD4oYnl0ZXNS
ZWFkKTsKICAgICB9Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlk
ZXIoQWRvcHRDRiwgQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0KCkpKTsK
LSAgICByZXR1cm4gUmV0YWluUHRyPENHSW1hZ2VSZWY+KEFkb3B0Q0YsIENHSW1hZ2VDcmVhdGVX
aXRoUE5HRGF0YVByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRl
cmluZ0ludGVudERlZmF1bHQpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRh
dGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEu
Z2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aFBOR0RhdGFQcm92
aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZh
dWx0KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlbGVhc2VNYWxsb2NCdWZmZXIodm9pZCogaW5mbywg
Y29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUpCkBAIC0xMDAsMTIgKzEwMCwxMiBAQCBzdGF0
aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZURpZmZlcmVuY2VJbWFnZShDR0ltYWdlUmVm
IGJhc2VJbWFnZSwgQ0dJbWFnZQogCiAgICAgLy8gRHJhdyBiYXNlIGltYWdlIGluIGJpdG1hcCBj
b250ZXh0CiAgICAgdm9pZCogYmFzZUJ1ZmZlciA9IGNhbGxvYyhoZWlnaHQsIHJvd0J5dGVzKTsK
LSAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiYXNlQ29udGV4dChBZG9wdENGLCBDR0JpdG1h
cENvbnRleHRDcmVhdGUoYmFzZUJ1ZmZlciwgd2lkdGgsIGhlaWdodCwgOCwgcm93Qnl0ZXMsIENH
SW1hZ2VHZXRDb2xvclNwYWNlKGJhc2VJbWFnZSksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVk
Rmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKTsKKyAgICBSZXRhaW5QdHI8Q0dDb250
ZXh0UmVmPiBiYXNlQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJhc2VC
dWZmZXIsIHdpZHRoLCBoZWlnaHQsIDgsIHJvd0J5dGVzLCBDR0ltYWdlR2V0Q29sb3JTcGFjZShi
YXNlSW1hZ2UpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0
ZU9yZGVyMzJIb3N0KSk7CiAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJhc2VDb250ZXh0LmdldCgp
LCBDR1JlY3RNYWtlKDAsIDAsIHdpZHRoLCBoZWlnaHQpLCBiYXNlSW1hZ2UpOwogCiAgICAgLy8g
RHJhdyB0ZXN0IGltYWdlIGluIGJpdG1hcCBjb250ZXh0CiAgICAgdm9pZCogYnVmZmVyID0gY2Fs
bG9jKGhlaWdodCwgcm93Qnl0ZXMpOwotICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNvbnRl
eHQoQWRvcHRDRiwgQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJ1ZmZlciwgd2lkdGgsIGhlaWdodCwg
OCwgcm93Qnl0ZXMsIENHSW1hZ2VHZXRDb2xvclNwYWNlKHRlc3RJbWFnZSksIGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKTsKKyAgICBS
ZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRD
cmVhdGUoYnVmZmVyLCB3aWR0aCwgaGVpZ2h0LCA4LCByb3dCeXRlcywgQ0dJbWFnZUdldENvbG9y
U3BhY2UodGVzdEltYWdlKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0Jp
dG1hcEJ5dGVPcmRlcjMySG9zdCkpOwogICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0Lmdl
dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHdpZHRoLCBoZWlnaHQpLCB0ZXN0SW1hZ2UpOwogCiAgICAg
Ly8gQ29tcGFyZSB0aGUgY29udGVudCBvZiB0aGUgMiBiaXRtYXBzCkBAIC0xNTQsOCArMTU0LDgg
QEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVEaWZmZXJlbmNlSW1hZ2UoQ0dJ
bWFnZVJlZiBiYXNlSW1hZ2UsIENHSW1hZ2UKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
c3RhdGljIENHQ29sb3JTcGFjZVJlZiBkaWZmQ29sb3JzcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0
ZURldmljZUdyYXkoKTsKLSAgICAgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBwcm92
aWRlcihBZG9wdENGLCBDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKDAsIGRpZmZCdWZmZXIs
IHdpZHRoICogaGVpZ2h0LCByZWxlYXNlTWFsbG9jQnVmZmVyKSk7Ci0gICAgICAgIGRpZmZJbWFn
ZS5hZG9wdENGKENHSW1hZ2VDcmVhdGUod2lkdGgsIGhlaWdodCwgOCwgOCwgd2lkdGgsIGRpZmZD
b2xvcnNwYWNlLCAwLCBwcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVu
dERlZmF1bHQpKTsKKyAgICAgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBwcm92aWRl
ciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgwLCBkaWZmQnVmZmVyLCB3
aWR0aCAqIGhlaWdodCwgcmVsZWFzZU1hbGxvY0J1ZmZlcikpOworICAgICAgICBkaWZmSW1hZ2Ug
PSBhZG9wdENGKENHSW1hZ2VDcmVhdGUod2lkdGgsIGhlaWdodCwgOCwgOCwgd2lkdGgsIGRpZmZD
b2xvcnNwYWNlLCAwLCBwcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVu
dERlZmF1bHQpKTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICBmcmVlKGRpZmZCdWZmZXIpOwpA
QCAtMjQyLDggKzI0Miw4IEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10p
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChkaWZmZXJlbmNlID4gMC4wZikgewogICAg
ICAgICAgICAgICAgIGlmIChkaWZmSW1hZ2UpIHsKLSAgICAgICAgICAgICAgICAgICAgUmV0YWlu
UHRyPENGTXV0YWJsZURhdGFSZWY+IGltYWdlRGF0YShBZG9wdENGLCBDRkRhdGFDcmVhdGVNdXRh
YmxlKDAsIDApKTsKLSAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VEZXN0aW5h
dGlvblJlZj4gaW1hZ2VEZXN0KEFkb3B0Q0YsIENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhE
YXRhKGltYWdlRGF0YS5nZXQoKSwga1VUVHlwZVBORywgMSwgMCkpOworICAgICAgICAgICAgICAg
ICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gaW1hZ2VEYXRhID0gYWRvcHRDRihDRkRh
dGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKKyAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENH
SW1hZ2VEZXN0aW5hdGlvblJlZj4gaW1hZ2VEZXN0ID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRp
b25DcmVhdGVXaXRoRGF0YShpbWFnZURhdGEuZ2V0KCksIGtVVFR5cGVQTkcsIDEsIDApKTsKICAg
ICAgICAgICAgICAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoaW1hZ2VEZXN0Lmdl
dCgpLCBkaWZmSW1hZ2UuZ2V0KCksIDApOwogICAgICAgICAgICAgICAgICAgICBDR0ltYWdlRGVz
dGluYXRpb25GaW5hbGl6ZShpbWFnZURlc3QuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBw
cmludGYoIkNvbnRlbnQtTGVuZ3RoOiAlbHVcbiIsIENGRGF0YUdldExlbmd0aChpbWFnZURhdGEu
Z2V0KCkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1
cHBvcnRDRy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cu
Y3BwCmluZGV4IGJmNTliMDNlYzNmMzAyNzljM2JhMjc5ZTM0ZmUyMWY1NzQ1N2MyZGEuLjMxNjhk
MjBhNWU0NjU0NDFhNDgzZTI2OWEzNzgzMThhM2U2ZjA2MDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcApAQCAtNTcsOCArNTcsOCBAQCBzdGF0
aWMgY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZVBORyA9IENGU1RSKCJwdWJsaWMucG5nIik7CiAK
IHN0YXRpYyB2b2lkIHByaW50UE5HKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IGNoYXIqIGNoZWNr
c3VtKQogewotICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBpbWFnZURhdGEoQWRvcHRD
RiwgQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VEZXN0
aW5hdGlvblJlZj4gaW1hZ2VEZXN0KEFkb3B0Q0YsIENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdp
dGhEYXRhKGltYWdlRGF0YS5nZXQoKSwga1VUVHlwZVBORywgMSwgMCkpOworICAgIFJldGFpblB0
cjxDRk11dGFibGVEYXRhUmVmPiBpbWFnZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFi
bGUoMCwgMCkpOworICAgIFJldGFpblB0cjxDR0ltYWdlRGVzdGluYXRpb25SZWY+IGltYWdlRGVz
dCA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoaW1hZ2VEYXRhLmdl
dCgpLCBrVVRUeXBlUE5HLCAxLCAwKSk7CiAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2Uo
aW1hZ2VEZXN0LmdldCgpLCBpbWFnZSwgMCk7CiAgICAgQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxp
emUoaW1hZ2VEZXN0LmdldCgpKTsKIApAQCAtMTA4LDYgKzEwOCw2IEBAIHZvaWQgY29tcHV0ZU1E
NUhhc2hTdHJpbmdGb3JCaXRtYXBDb250ZXh0KEJpdG1hcENvbnRleHQqIGNvbnRleHQsIGNoYXIg
aGFzaFN0cmluCiAKIHZvaWQgZHVtcEJpdG1hcChCaXRtYXBDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjaGVja3N1bSkKIHsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UoQWRv
cHRDRiwgQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC0+Y2dDb250ZXh0KCkpKTsK
KyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4
dENyZWF0ZUltYWdlKGNvbnRleHQtPmNnQ29udGV4dCgpKSk7CiAgICAgcHJpbnRQTkcoaW1hZ2Uu
Z2V0KCksIGNoZWNrc3VtKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nn
L1BpeGVsRHVtcFN1cHBvcnRDRy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1w
U3VwcG9ydENHLmgKaW5kZXggZjBjOTc0NjMxYjViYzBlNzE1NmQzNmEyYWQ4MDVhYTI2MjQ4YWI0
ZS4uMzUzYTZiNjA1YzBkMWVhZDgyODFmOTM3ZGQ1Y2VkZDlkYmQ4MmUwZiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmgKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmgKQEAgLTcwLDcgKzcwLDcgQEAg
cHJpdmF0ZToKIAogICAgIEJpdG1hcENvbnRleHQoUGxhdGZvcm1CaXRtYXBCdWZmZXIgYnVmZmVy
LCBDR0NvbnRleHRSZWYgY29udGV4dCkKICAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIpCi0gICAg
ICAgICwgbV9jb250ZXh0KEFkb3B0Q0YsIGNvbnRleHQpCisgICAgICAgICwgbV9jb250ZXh0KGFk
b3B0Q0YoY29udGV4dCkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbSBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9Nb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW0KaW5kZXggZDgwZjZi
YTRlMmMxNzljNDVjNWYyMGIxM2VkMGM0ZmRmMzc4NjRhZS4uYWRmNWQ5ZTMxM2ZjMzViODY5NjE4
ZjI1YTgzYzQxYzA4Y2I2NWI2YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tCkBAIC00Myw3ICs0Myw3IEBAIC0g
KGlkKWluaXQKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICBfcGVybWlzc2lvbnMuYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRdKTsKKyAgICBfcGVybWlzc2lvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgIHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tCmluZGV4IGY0Y2M3YzE5
ODQ5OWFlNjBmOWVmY2M4ODBkZjU3ODljZGJlNmVkYmUuLmMyZDQzZGFiZjA5MmZlZTljNzdjNTI1
ZWE3MjA2NDhhODQ3Y2YyYmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Q
aXhlbER1bXBTdXBwb3J0TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhl
bER1bXBTdXBwb3J0TWFjLm1tCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEJp
dG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHQoc2l6ZV90IHBpeGVsc1dpZGUsIHNpemVf
dCBwCiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIC8vIENyZWF0aW5nIHRoaXMgYml0bWFw
IGluIHRoZSBkZXZpY2UgY29sb3Igc3BhY2UgcHJldmVudHMgYW55IGNvbG9yIGNvbnZlcnNpb24g
d2hlbiB0aGUgaW1hZ2Ugb2YgdGhlIHdlYiB2aWV3IGlzIGRyYXduIGludG8gaXQuCi0gICAgUmV0
YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZShBZG9wdENGLCBDR0NvbG9yU3BhY2VD
cmVhdGVEZXZpY2VSR0IoKSk7CisgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JT
cGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwogICAgIENHQ29u
dGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJ1ZmZlciwgcGl4ZWxzV2lk
ZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpOyAvLyBVc2Ug
QVJHQjggb24gUFBDIG9yIEJHUkE4IG9uIFg4NiB0byBpbXByb3ZlIENHIHBlcmZvcm1hbmNlCiAg
ICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIGZyZWUoYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KaW5kZXggZjQxMGM3NTVkMjJhMzkxZDJjNmE5NTkw
MjhiYmJlOTQ0MWYwNWVhMi4uOThiNmU0N2VmMjJlODNkODU5YzM3ZWM3MjlmYWJjZDQxYTZmYWEx
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0K
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTExOSw3
ICsxMTksNyBAQCBUZXN0UnVubmVyOjp+VGVzdFJ1bm5lcigpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6
YWRkRGlzYWxsb3dlZFVSTChKU1N0cmluZ1JlZiB1cmwpCiB7Ci0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiB1cmxDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCB1cmwpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybENGID0gYWRvcHRD
RihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmwpKTsKIAogICAg
IGlmICghZGlzYWxsb3dlZFVSTHMpCiAgICAgICAgIGRpc2FsbG93ZWRVUkxzID0gQ0ZTZXRDcmVh
dGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIE5VTEwpOwpAQCAtMTQzLDcgKzE0Myw3
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpCiAKIGxvbmcg
bG9uZyBUZXN0UnVubmVyOjphcHBsaWNhdGlvbkNhY2hlRGlza1VzYWdlRm9yT3JpZ2luKEpTU3Ry
aW5nUmVmIHVybCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybENGKEFkb3B0Q0Ys
IEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybCkpOworICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5n
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybCkpOwogICAgIFdlYlNlY3VyaXR5T3JpZ2luICpvcmln
aW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzooTlNTdHJpbmcgKil1cmxDRi5nZXQoKV1dOwogICAgIGxvbmcgbG9uZyB1c2FnZSA9
IFtXZWJBcHBsaWNhdGlvbkNhY2hlIGRpc2tVc2FnZUZvck9yaWdpbjpvcmlnaW5dOwogICAgIFtv
cmlnaW4gcmVsZWFzZV07CkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzeW5j
TG9jYWxTdG9yYWdlKCkKIAogbG9uZyBsb25nIFRlc3RSdW5uZXI6OmxvY2FsU3RvcmFnZURpc2tV
c2FnZUZvck9yaWdpbihKU1N0cmluZ1JlZiB1cmwpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiB1cmxDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCB1cmwpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybENGID0gYWRvcHRDRihK
U1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmwpKTsKICAgICBXZWJT
ZWN1cml0eU9yaWdpbiAqb3JpZ2luID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gaW5pdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6KE5TU3RyaW5nICopdXJsQ0YuZ2V0KCldXTsKICAg
ICBsb25nIGxvbmcgdXNhZ2UgPSBbW1dlYlN0b3JhZ2VNYW5hZ2VyIHNoYXJlZFdlYlN0b3JhZ2VN
YW5hZ2VyXSBkaXNrVXNhZ2VGb3JPcmlnaW46b3JpZ2luXTsKICAgICBbb3JpZ2luIHJlbGVhc2Vd
OwpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6b2JzZXJ2ZVN0b3JhZ2VUcmFj
a2VyTm90aWZpY2F0aW9ucyh1bnNpZ25lZCBudW1iZXIpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6Y2xl
YXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIHVybCkKIHsKLSAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHVybENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtD
RkFsbG9jYXRvckRlZmF1bHQsIHVybCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJs
Q0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVy
bCkpOwogCiAgICAgV2ViU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmln
aW4gYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmluZyAqKXVy
bENGLmdldCgpXV07CiAgICAgW1dlYkFwcGxpY2F0aW9uQ2FjaGUgZGVsZXRlQ2FjaGVGb3JPcmln
aW46b3JpZ2luXTsKQEAgLTIyNCw3ICsyMjQsNyBAQCBKU1ZhbHVlUmVmIFRlc3RSdW5uZXI6Om9y
aWdpbnNXaXRoTG9jYWxTdG9yYWdlKEpTQ29udGV4dFJlZiBjb250ZXh0KQogCiB2b2lkIFRlc3RS
dW5uZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbihKU1N0cmluZ1JlZiBVUkwpCiB7Ci0g
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmxDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0
cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBVUkwpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHVybENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBVUkwpKTsKICAgICAKICAgICBXZWJTZWN1cml0eU9yaWdpbiAqb3JpZ2luID0gW1tXZWJT
ZWN1cml0eU9yaWdpbiBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6KE5T
U3RyaW5nICopdXJsQ0YuZ2V0KCldXTsKICAgICBbW1dlYlN0b3JhZ2VNYW5hZ2VyIHNoYXJlZFdl
YlN0b3JhZ2VNYW5hZ2VyXSBkZWxldGVPcmlnaW46b3JpZ2luXTsKQEAgLTI0OCwxNCArMjQ4LDE0
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2xlYXJCYWNrRm9yd2FyZExpc3QoKQogCiBKU1N0cmluZ1Jl
ZiBUZXN0UnVubmVyOjpjb3B5RGVjb2RlZEhvc3ROYW1lKEpTU3RyaW5nUmVmIG5hbWUpCiB7Ci0g
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuYW1lQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZT
dHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbmFtZSkpOworICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gbmFtZUNGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBuYW1lKSk7CiAgICAgTlNTdHJpbmcgKm5hbWVOUyA9IChOU1N0cmluZyAqKW5hbWVD
Ri5nZXQoKTsKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5n
UmVmKVtuYW1lTlMgX3dlYl9kZWNvZGVIb3N0TmFtZV0pOwogfQogCiBKU1N0cmluZ1JlZiBUZXN0
UnVubmVyOjpjb3B5RW5jb2RlZEhvc3ROYW1lKEpTU3RyaW5nUmVmIG5hbWUpCiB7Ci0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBuYW1lQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmco
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbmFtZSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
bmFtZUNGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBuYW1lKSk7CiAgICAgTlNTdHJpbmcgKm5hbWVOUyA9IChOU1N0cmluZyAqKW5hbWVDRi5nZXQo
KTsKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKVtu
YW1lTlMgX3dlYl9lbmNvZGVIb3N0TmFtZV0pOwogfQpAQCAtMzYzLDcgKzM2Myw3IEBAIEpTU3Ry
aW5nUmVmIFRlc3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UoSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTU3RyaW5nUmVmIGxvCiAKIHZvaWQgVGVzdFJ1bm5lcjo6cXVldWVMb2FkKEpTU3RyaW5n
UmVmIHVybCwgSlNTdHJpbmdSZWYgdGFyZ2V0KQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gdXJsQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgdXJsKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmxDRiA9IGFkb3B0Q0YoSlNT
dHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsKSk7CiAgICAgTlNTdHJp
bmcgKnVybE5TID0gKE5TU3RyaW5nICopdXJsQ0YuZ2V0KCk7CiAKICAgICBOU1VSTCAqbnN1cmwg
PSBbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxOUyByZWxhdGl2ZVRvVVJMOltbW21haW5GcmFtZSBk
YXRhU291cmNlXSByZXNwb25zZV0gVVJMXV07CkBAIC00MzMsNyArNDMzLDcgQEAgdm9pZCBUZXN0
UnVubmVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzKQogCiB2b2lkIFRlc3RSdW5uZXI6
OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoYm9vbCBmb3JiaWRkZW4s
IEpTU3RyaW5nUmVmIHNjaGVtZSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNjaGVt
ZUNGU3RyaW5nKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1
bHQsIHNjaGVtZSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc2NoZW1lQ0ZTdHJpbmcg
PSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNjaGVt
ZSkpOwogICAgIFtXZWJWaWV3IF9zZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuOmZvcmJpZGRl
biBmb3JVUkxTY2hlbWU6KE5TU3RyaW5nICopc2NoZW1lQ0ZTdHJpbmcuZ2V0KCldOwogfQogCkBA
IC00NjMsNyArNDYzLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGQKIAogdm9pZCBUZXN0UnVu
bmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoSlNTdHJpbmdS
ZWYgbWVzc2FnZSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1lc3NhZ2VDRihBZG9w
dENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtZXNzYWdlKSk7
CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtZXNzYWdlQ0YgPSBhZG9wdENGKEpTU3RyaW5n
Q29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1lc3NhZ2UpKTsKICAgICBOU1N0cmlu
ZyAqbWVzc2FnZU5TID0gKE5TU3RyaW5nICopbWVzc2FnZUNGLmdldCgpOwogICAgIFtbTW9ja0dl
b2xvY2F0aW9uUHJvdmlkZXIgc2hhcmVkXSBzZXRQb3NpdGlvblVuYXZhaWxhYmxlRXJyb3JXaXRo
TWVzc2FnZTptZXNzYWdlTlNdOwogfQpAQCAtNTc2LDcgKzU3Niw3IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKGJvb2wgZmxhZykKIAogdm9pZCBUZXN0UnVubmVy
OjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpCiB7Ci0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmco
a0NGQWxsb2NhdG9yRGVmYXVsdCwgcGF0aCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
cGF0aENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBwYXRoKSk7CiAgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmlu
ZyAqKXBhdGhDRi5nZXQoKV07CiAgICAgW1tXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVu
Y2VzXSBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uOnVybF07CiB9CkBAIC01ODcsNyArNTg3LDcg
QEAgdm9pZCBUZXN0UnVubmVyOjpzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgSlMKICAgICBpZiAoIWVsZW1lbnQgfHwgIVtlbGVtZW50
IGlzS2luZE9mQ2xhc3M6W0RPTUhUTUxJbnB1dEVsZW1lbnQgY2xhc3NdXSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZUNGKEFkb3B0Q0YsIEpTU3Ry
aW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHZhbHVlKSk7CisgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiB2YWx1ZUNGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCB2YWx1ZSkpOwogICAgIFsoRE9NSFRNTElucHV0RWxlbWVudCAq
KWVsZW1lbnQgc2V0VmFsdWVGb3JVc2VyOihOU1N0cmluZyAqKXZhbHVlQ0YuZ2V0KCldOwogfQog
CkBAIC02MDMsMTAgKzYwMywxMCBAQCB2b2lkIFRlc3RSdW5uZXI6OmRpc3BhdGNoUGVuZGluZ0xv
YWRSZXF1ZXN0cygpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3Ry
aW5nUmVmIGtleSwgSlNTdHJpbmdSZWYgdmFsdWUpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBrZXlDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBrZXkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleUNGID0gYWRvcHRDRihK
U1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXkpKTsKICAgICBOU1N0
cmluZyAqa2V5TlMgPSAoTlNTdHJpbmcgKilrZXlDRi5nZXQoKTsKIAotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gdmFsdWVDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCB2YWx1ZSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdmFsdWVD
RiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdmFs
dWUpKTsKICAgICBOU1N0cmluZyAqdmFsdWVOUyA9IChOU1N0cmluZyAqKXZhbHVlQ0YuZ2V0KCk7
CiAKICAgICBbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIF9zZXRQcmVmZXJl
bmNlRm9yVGVzdFdpdGhWYWx1ZTp2YWx1ZU5TIGZvcktleTprZXlOU107CkBAIC02MTksNyArNjE5
LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxWaXNpdGVkTGlua3MoKQogCiB2b2lkIFRl
c3RSdW5uZXI6OnNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVm
IGpzVVJMKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5nKEFkb3B0Q0Ys
IEpTU3RyaW5nQ29weUNGU3RyaW5nKDAsIGpzVVJMKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiB1cmxTdHJpbmcgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKDAsIGpzVVJMKSk7
CiAgICAgOjpzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbih1cmxTdHJpbmcuZ2V0
KCkpOwogfQogCkBAIC02NTUsMTAgKzY1NSwxMCBAQCBpbnQgVGVzdFJ1bm5lcjo6d2luZG93Q291
bnQoKQogCiB2b2lkIFRlc3RSdW5uZXI6OmV4ZWNDb21tYW5kKEpTU3RyaW5nUmVmIG5hbWUsIEpT
U3RyaW5nUmVmIHZhbHVlKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbmFtZUNGKEFk
b3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG5hbWUpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5hbWVDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5
Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbmFtZSkpOwogICAgIE5TU3RyaW5nICpuYW1l
TlMgPSAoTlNTdHJpbmcgKiluYW1lQ0YuZ2V0KCk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHZhbHVlQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgdmFsdWUpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHZhbHVlQ0YgPSBhZG9w
dENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHZhbHVlKSk7CiAg
ICAgTlNTdHJpbmcgKnZhbHVlTlMgPSAoTlNTdHJpbmcgKil2YWx1ZUNGLmdldCgpOwogCiAgICAg
W1ttYWluRnJhbWUgd2ViVmlld10gX2V4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZTpuYW1lTlMgdmFs
dWU6dmFsdWVOU107CkBAIC02NzMsNyArNjczLDcgQEAgYm9vbCBUZXN0UnVubmVyOjpmaW5kU3Ry
aW5nKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1N0cmluZ1JlZiB0YXJnZXQsIEpTT2JqZWN0UmUK
ICAgICBpZiAoIUpTVmFsdWVJc051bWJlcihjb250ZXh0LCBsZW5ndGhWYWx1ZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdGFyZ2V0Q0ZTdHJp
bmcoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdGFy
Z2V0KSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0YXJnZXRDRlN0cmluZyA9IGFkb3B0
Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdGFyZ2V0KSk7CiAK
ICAgICBzaXplX3QgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihKU1ZhbHVlVG9OdW1iZXIo
Y29udGV4dCwgbGVuZ3RoVmFsdWUsIDApKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7CkBAIC03MDcsNyArNzA3LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRDYWNo
ZU1vZGVsKGludCBjYWNoZU1vZGVsKQogCiBib29sIFRlc3RSdW5uZXI6OmlzQ29tbWFuZEVuYWJs
ZWQoSlNTdHJpbmdSZWYgbmFtZSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5hbWVD
RihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBuYW1l
KSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuYW1lQ0YgPSBhZG9wdENGKEpTU3RyaW5n
Q29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG5hbWUpKTsKICAgICBOU1N0cmluZyAq
bmFtZU5TID0gKE5TU3RyaW5nICopbmFtZUNGLmdldCgpOwogCiAgICAgLy8gQWNjZXB0IGNvbW1h
bmQgc3RyaW5ncyB3aXRoIGNhcGl0YWwgbGV0dGVycyBmb3IgZmlyc3QgbGV0dGVyIHdpdGhvdXQg
dHJhaWxpbmcgY29sb24uCkBAIC03MTgsNyArNzE4LDcgQEAgYm9vbCBUZXN0UnVubmVyOjppc0Nv
bW1hbmRFbmFibGVkKEpTU3RyaW5nUmVmIG5hbWUpCiAgICAgfQogCiAgICAgU0VMIHNlbGVjdG9y
ID0gTlNTZWxlY3RvckZyb21TdHJpbmcobmFtZU5TKTsKLSAgICBSZXRhaW5QdHI8Q29tbWFuZFZh
bGlkYXRpb25UYXJnZXQ+IHRhcmdldChBZG9wdE5TLCBbW0NvbW1hbmRWYWxpZGF0aW9uVGFyZ2V0
IGFsbG9jXSBpbml0V2l0aEFjdGlvbjpzZWxlY3Rvcl0pOworICAgIFJldGFpblB0cjxDb21tYW5k
VmFsaWRhdGlvblRhcmdldD4gdGFyZ2V0ID0gYWRvcHROUyhbW0NvbW1hbmRWYWxpZGF0aW9uVGFy
Z2V0IGFsbG9jXSBpbml0V2l0aEFjdGlvbjpzZWxlY3Rvcl0pOwogICAgIGlkIHZhbGlkYXRvciA9
IFtOU0FwcCB0YXJnZXRGb3JBY3Rpb246c2VsZWN0b3IgdG86W21haW5GcmFtZSB3ZWJWaWV3XSBm
cm9tOnRhcmdldC5nZXQoKV07CiAgICAgaWYgKCF2YWxpZGF0b3IpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTczOCwyMiArNzM4LDIyIEBAIHZvaWQgVGVzdFJ1bm5lcjo6d2FpdEZvclBvbGlj
eURlbGVnYXRlKCkKIAogdm9pZCBUZXN0UnVubmVyOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeShKU1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIEpTU3RyaW5nUmVmIGRlc3RpbmF0aW9uUHJv
dG9jb2wsIEpTU3RyaW5nUmVmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9u
U3ViZG9tYWlucykKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNvdXJjZU9yaWdpbkNG
KEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNvdXJj
ZU9yaWdpbikpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc291cmNlT3JpZ2luQ0YgPSBh
ZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNvdXJjZU9y
aWdpbikpOwogICAgIE5TU3RyaW5nICpzb3VyY2VPcmlnaW5OUyA9IChOU1N0cmluZyAqKXNvdXJj
ZU9yaWdpbkNGLmdldCgpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJvdG9jb2xDRihB
ZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkZXN0aW5h
dGlvblByb3RvY29sKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcm90b2NvbENGID0g
YWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkZXN0aW5h
dGlvblByb3RvY29sKSk7CiAgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uUHJvdG9jb2xOUyA9IChO
U1N0cmluZyAqKXByb3RvY29sQ0YuZ2V0KCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBo
b3N0Q0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
ZGVzdGluYXRpb25Ib3N0KSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBob3N0Q0YgPSBh
ZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRlc3RpbmF0
aW9uSG9zdCkpOwogICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvbkhvc3ROUyA9IChOU1N0cmluZyAq
KWhvc3RDRi5nZXQoKTsKICAgICBbV2ViVmlldyBfYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnlXaXRoU291cmNlT3JpZ2luOnNvdXJjZU9yaWdpbk5TIGRlc3RpbmF0aW9uUHJvdG9jb2w6ZGVz
dGluYXRpb25Qcm90b2NvbE5TIGRlc3RpbmF0aW9uSG9zdDpkZXN0aW5hdGlvbkhvc3ROUyBhbGxv
d0Rlc3RpbmF0aW9uU3ViZG9tYWluczphbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWluc107CiB9CiAK
IHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoSlNTdHJp
bmdSZWYgc291cmNlT3JpZ2luLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvblByb3RvY29sLCBKU1N0
cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
CiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzb3VyY2VPcmlnaW5DRihBZG9wdENGLCBK
U1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzb3VyY2VPcmlnaW4pKTsK
KyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNvdXJjZU9yaWdpbkNGID0gYWRvcHRDRihKU1N0
cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzb3VyY2VPcmlnaW4pKTsKICAg
ICBOU1N0cmluZyAqc291cmNlT3JpZ2luTlMgPSAoTlNTdHJpbmcgKilzb3VyY2VPcmlnaW5DRi5n
ZXQoKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHByb3RvY29sQ0YoQWRvcHRDRiwgSlNT
dHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGVzdGluYXRpb25Qcm90b2Nv
bCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJvdG9jb2xDRiA9IGFkb3B0Q0YoSlNT
dHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGVzdGluYXRpb25Qcm90b2Nv
bCkpOwogICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvblByb3RvY29sTlMgPSAoTlNTdHJpbmcgKilw
cm90b2NvbENGLmdldCgpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdENGKEFkb3B0
Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRlc3RpbmF0aW9u
SG9zdCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdENGID0gYWRvcHRDRihKU1N0
cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkZXN0aW5hdGlvbkhvc3QpKTsK
ICAgICBOU1N0cmluZyAqZGVzdGluYXRpb25Ib3N0TlMgPSAoTlNTdHJpbmcgKilob3N0Q0YuZ2V0
KCk7CiAgICAgW1dlYlZpZXcgX3JlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5V2l0aFNv
dXJjZU9yaWdpbjpzb3VyY2VPcmlnaW5OUyBkZXN0aW5hdGlvblByb3RvY29sOmRlc3RpbmF0aW9u
UHJvdG9jb2xOUyBkZXN0aW5hdGlvbkhvc3Q6ZGVzdGluYXRpb25Ib3N0TlMgYWxsb3dEZXN0aW5h
dGlvblN1YmRvbWFpbnM6YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnNdOwogfQpAQCAtNzY1LDE0
ICs3NjUsMTQgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTY3JvbGxiYXJQb2xpY3koSlNTdHJpbmdS
ZWYgb3JpZW50YXRpb24sIEpTU3RyaW5nUmVmIHBvbGljeSkKIAogdm9pZCBUZXN0UnVubmVyOjph
ZGRVc2VyU2NyaXB0KEpTU3RyaW5nUmVmIHNvdXJjZSwgYm9vbCBydW5BdFN0YXJ0LCBib29sIGFs
bEZyYW1lcykKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNvdXJjZUNGKEFkb3B0Q0Ys
IEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNvdXJjZSkpOworICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc291cmNlQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNG
U3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNvdXJjZSkpOwogICAgIE5TU3RyaW5nICpzb3Vy
Y2VOUyA9IChOU1N0cmluZyAqKXNvdXJjZUNGLmdldCgpOwogICAgIFtXZWJWaWV3IF9hZGRVc2Vy
U2NyaXB0VG9Hcm91cDpAIm9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUiIHdvcmxkOltXZWJTY3Jp
cHRXb3JsZCB3b3JsZF0gc291cmNlOnNvdXJjZU5TIHVybDpuaWwgd2hpdGVsaXN0Om5pbCBibGFj
a2xpc3Q6bmlsIGluamVjdGlvblRpbWU6KHJ1bkF0U3RhcnQgPyBXZWJJbmplY3RBdERvY3VtZW50
U3RhcnQgOiBXZWJJbmplY3RBdERvY3VtZW50RW5kKSBpbmplY3RlZEZyYW1lczooYWxsRnJhbWVz
ID8gV2ViSW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJJbmplY3RJblRvcEZyYW1lT25seSldOwogfQog
CiB2b2lkIFRlc3RSdW5uZXI6OmFkZFVzZXJTdHlsZVNoZWV0KEpTU3RyaW5nUmVmIHNvdXJjZSwg
Ym9vbCBhbGxGcmFtZXMpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzb3VyY2VDRihB
ZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzb3VyY2Up
KTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNvdXJjZUNGID0gYWRvcHRDRihKU1N0cmlu
Z0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzb3VyY2UpKTsKICAgICBOU1N0cmlu
ZyAqc291cmNlTlMgPSAoTlNTdHJpbmcgKilzb3VyY2VDRi5nZXQoKTsKICAgICBbV2ViVmlldyBf
YWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOkAib3JnLndlYmtpdC5EdW1wUmVuZGVyVHJlZSIgd29y
bGQ6W1dlYlNjcmlwdFdvcmxkIHdvcmxkXSBzb3VyY2U6c291cmNlTlMgdXJsOm5pbCB3aGl0ZWxp
c3Q6bmlsIGJsYWNrbGlzdDpuaWwgaW5qZWN0ZWRGcmFtZXM6KGFsbEZyYW1lcyA/IFdlYkluamVj
dEluQWxsRnJhbWVzIDogV2ViSW5qZWN0SW5Ub3BGcmFtZU9ubHkpXTsKIH0KQEAgLTc5NCw3ICs3
OTQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OmNsb3NlV2ViSW5zcGVjdG9yKCkKIAogdm9pZCBUZXN0
UnVubmVyOjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGxvbmcgY2FsbElkLCBKU1N0cmluZ1JlZiBz
Y3JpcHQpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzY3JpcHRDRihBZG9wdENGLCBK
U1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzY3JpcHQpKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNjcmlwdENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0
cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzY3JpcHQpKTsKICAgICBOU1N0cmluZyAqc2NyaXB0
TlMgPSAoTlNTdHJpbmcgKilzY3JpcHRDRi5nZXQoKTsKICAgICBbW1ttYWluRnJhbWUgd2ViVmll
d10gaW5zcGVjdG9yXSBldmFsdWF0ZUluRnJvbnRlbmQ6bmlsIGNhbGxJZDpjYWxsSWQgc2NyaXB0
OnNjcmlwdE5TXTsKIH0KQEAgLTgyNCw3ICs4MjQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OmV2YWx1
YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkQW5kUmV0dXJuVmFsdWUodW5zaWduZWQgd29ybGRJRCwg
SgogCiB2b2lkIFRlc3RSdW5uZXI6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKHVuc2ln
bmVkIHdvcmxkSUQsIEpTT2JqZWN0UmVmIGdsb2JhbE9iamVjdCwgSlNTdHJpbmdSZWYgc2NyaXB0
KQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc2NyaXB0Q0YoQWRvcHRDRiwgSlNTdHJp
bmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2NyaXB0KSk7CisgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBzY3JpcHRDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmco
a0NGQWxsb2NhdG9yRGVmYXVsdCwgc2NyaXB0KSk7CiAgICAgTlNTdHJpbmcgKnNjcmlwdE5TID0g
KE5TU3RyaW5nICopc2NyaXB0Q0YuZ2V0KCk7CiAKICAgICAvLyBBIHdvcmxkSUQgb2YgMCBhbHdh
eXMgY29ycmVzcG9uZHMgdG8gYSBuZXcgd29ybGQuIEFueSBvdGhlciB3b3JsZElEIGNvcnJlc3Bv
bmRzIHRvIGEgd29ybGQKQEAgLTgzNSw3ICs4MzUsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OmV2YWx1
YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKHVuc2lnbmVkIHdvcmxkSUQsIEpTT2JqZWN0UmVmIGds
bwogICAgIGVsc2UgewogICAgICAgICBSZXRhaW5QdHI8V2ViU2NyaXB0V29ybGQ+JiB3b3JsZFNs
b3QgPSB3b3JsZE1hcCgpLmFkZCh3b3JsZElELCAwKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAg
IGlmICghd29ybGRTbG90KQotICAgICAgICAgICAgd29ybGRTbG90LmFkb3B0TlMoW1tXZWJTY3Jp
cHRXb3JsZCBhbGxvY10gaW5pdF0pOworICAgICAgICAgICAgd29ybGRTbG90ID0gYWRvcHROUyhb
W1dlYlNjcmlwdFdvcmxkIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIHdvcmxkID0gd29ybGRTbG90
LmdldCgpOwogICAgIH0KIApAQCAtODgzLDggKzg4Myw4IEBAIHZvaWQgVGVzdFJ1bm5lcjo6YXBp
VGVzdE5ld1dpbmRvd0RhdGFMb2FkQmFzZVVSTChKU1N0cmluZ1JlZiB1dGY4RGF0YSwgSlNTdHJp
bmdSCiB7CiAgICAgTlNBdXRvcmVsZWFzZVBvb2wgKnBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29s
IGFsbG9jXSBpbml0XTsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRmOERhdGFDRihB
ZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1dGY4RGF0
YSkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYmFzZVVSTENGKEFkb3B0Q0YsIEpTU3Ry
aW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJhc2VVUkwpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHV0ZjhEYXRhQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHV0ZjhEYXRhKSk7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBiYXNlVVJMQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGJhc2VVUkwpKTsKICAgICAKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW1tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgZnJhbWVOYW1lOkAiIiBncm91
cE5hbWU6QCIiXTsKIApAQCAtOTUxLDcgKzk1MSw3IEBAIC0gKEJPT0wpY29ubmVjdGlvblNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCiAtICh2
b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hh
bGxlbmdlCiB7CiAgICAgaWYgKFtjaGFsbGVuZ2UgcHJldmlvdXNGYWlsdXJlQ291bnRdID09IDAp
IHsKLSAgICAgICAgUmV0YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVudGlhbChBZG9wdE5T
LCBbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10gIGluaXRXaXRoVXNlcjptX3VzZXJuYW1lIHBhc3N3
b3JkOm1fcGFzc3dvcmQgcGVyc2lzdGVuY2U6TlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JT
ZXNzaW9uXSk7CisgICAgICAgIFJldGFpblB0cjxOU1VSTENyZWRlbnRpYWw+IGNyZWRlbnRpYWwg
PSBhZG9wdE5TKFtbTlNVUkxDcmVkZW50aWFsIGFsbG9jXSAgaW5pdFdpdGhVc2VyOm1fdXNlcm5h
bWUgcGFzc3dvcmQ6bV9wYXNzd29yZCBwZXJzaXN0ZW5jZTpOU1VSTENyZWRlbnRpYWxQZXJzaXN0
ZW5jZUZvclNlc3Npb25dKTsKICAgICAgICAgW1tjaGFsbGVuZ2Ugc2VuZGVyXSB1c2VDcmVkZW50
aWFsOmNyZWRlbnRpYWwuZ2V0KCkgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y2hhbGxlbmdl
XTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTk5NywxMSArOTk3LDExIEBAIHZvaWQgVGVz
dFJ1bm5lcjo6YXV0aGVudGljYXRlU2Vzc2lvbihKU1N0cmluZ1JlZiB1cmwsIEpTU3RyaW5nUmVm
IHVzZXJuYW1lLCBKU1N0CiB7CiAgICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS83ODgwNjk5Pi4K
ICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKLSAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHVybFN0cmluZ0NGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5n
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
dXNlcm5hbWVDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCB1c2VybmFtZSkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGFzc3dvcmRDRihB
ZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwYXNzd29y
ZCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5nQ0YgPSBhZG9wdENGKEpT
U3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybCkpOworICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gdXNlcm5hbWVDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXNlcm5hbWUpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHBhc3N3b3JkQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9j
YXRvckRlZmF1bHQsIHBhc3N3b3JkKSk7CiAKLSAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBy
ZXF1ZXN0KEFkb3B0TlMsIFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzooTlNTdHJpbmcgKil1cmxTdHJpbmdDRi5nZXQoKV1dKTsKKyAgICBSZXRh
aW5QdHI8TlNVUkxSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxv
Y10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6KE5TU3RyaW5nICopdXJsU3RyaW5n
Q0YuZ2V0KCldXSk7CiAKICAgICBbU3luY2hyb25vdXNMb2FkZXIgbWFrZVJlcXVlc3Q6cmVxdWVz
dC5nZXQoKSB3aXRoVXNlcm5hbWU6KE5TU3RyaW5nICopdXNlcm5hbWVDRi5nZXQoKSBwYXNzd29y
ZDooTlNTdHJpbmcgKilwYXNzd29yZENGLmdldCgpXTsKICNlbmRpZgpAQCAtMTA4NCwxNCArMTA4
NCwxNCBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFBhZ2VWaXNpYmlsaXR5KGNvbnN0IGNoYXIqIG5l
d1Zpc2liaWxpdHkpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6Z3JhbnRXZWJOb3RpZmljYXRpb25QZXJt
aXNzaW9uKEpTU3RyaW5nUmVmIGpzT3JpZ2luKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY2ZPcmlnaW4oQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVm
YXVsdCwganNPcmlnaW4pKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmT3JpZ2luID0g
YWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc09yaWdp
bikpOwogICAgIEFTU0VSVChbW21haW5GcmFtZSB3ZWJWaWV3XSBfbm90aWZpY2F0aW9uUHJvdmlk
ZXJdID09IFtNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgc2hhcmVkXSk7CiAgICAgW1tNb2Nr
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgc2hhcmVkXSBzZXRXZWJOb3RpZmljYXRpb25PcmlnaW46
KE5TU3RyaW5nICopY2ZPcmlnaW4uZ2V0KCkgcGVybWlzc2lvbjpUUlVFXTsKIH0KIAogdm9pZCBU
ZXN0UnVubmVyOjpkZW55V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihKU1N0cmluZ1JlZiBqc09y
aWdpbikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmT3JpZ2luKEFkb3B0Q0YsIEpT
U3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzT3JpZ2luKSk7CisgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZk9yaWdpbiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZT
dHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNPcmlnaW4pKTsKICAgICBBU1NFUlQoW1ttYWlu
RnJhbWUgd2ViVmlld10gX25vdGlmaWNhdGlvblByb3ZpZGVyXSA9PSBbTW9ja1dlYk5vdGlmaWNh
dGlvblByb3ZpZGVyIHNoYXJlZF0pOwogICAgIFtbTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVy
IHNoYXJlZF0gc2V0V2ViTm90aWZpY2F0aW9uT3JpZ2luOihOU1N0cmluZyAqKWNmT3JpZ2luLmdl
dCgpIHBlcm1pc3Npb246RkFMU0VdOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1dlYkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9XZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMubW0KaW5kZXggOWY5NGVjYmM0MGM4ZmQ1YmQ0
M2ViM2JlYzUzMWY5NWExYTc3YjdmMy4uZTA2ZTc5NzUwZTMyMDk5YjAyYWJiZDhjMDMxOTQ3MzY4
YmU5MWRlNyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1dlYkFyY2hpdmVE
dW1wU3VwcG9ydE1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvV2ViQXJjaGl2
ZUR1bXBTdXBwb3J0TWFjLm1tCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgQ0ZVUkxSZXNwb25zZVNl
dE1JTUVUeXBlKENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIENGU3RyaW5nUmVmIG1pbWVUeXBl
KTsKIENGVVJMUmVzcG9uc2VSZWYgY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEo
Q0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSkKIHsKICAgICAvLyBEZWNvZGUgTlNVUkxSZXNwb25zZQot
ICAgIFJldGFpblB0cjxOU0tleWVkVW5hcmNoaXZlcj4gdW5hcmNoaXZlcihBZG9wdE5TLCBbW05T
S2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ1dpdGhEYXRhOihOU0RhdGEgKily
ZXNwb25zZURhdGFdKTsKKyAgICBSZXRhaW5QdHI8TlNLZXllZFVuYXJjaGl2ZXI+IHVuYXJjaGl2
ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nV2l0
aERhdGE6KE5TRGF0YSAqKXJlc3BvbnNlRGF0YV0pOwogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3Bv
bnNlID0gW3VuYXJjaGl2ZXIuZ2V0KCkgZGVjb2RlT2JqZWN0Rm9yS2V5OkAiV2ViUmVzb3VyY2VS
ZXNwb25zZSJdOyAvLyBXZWJSZXNvdXJjZVJlc3BvbnNlS2V5IGluIFdlYlJlc291cmNlLm0KICAg
ICBbdW5hcmNoaXZlci5nZXQoKSBmaW5pc2hEZWNvZGluZ107CiAKQEAgLTYyLDcgKzYyLDcgQEAg
Q0ZVUkxSZXNwb25zZVJlZiBjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShDRkRh
dGFSZWYgcmVzcG9uc2VEYXRhKQogICAgIE5TSFRUUFVSTFJlc3BvbnNlICpodHRwUmVzcG9uc2Ug
PSAoTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZTsKIAogICAgIC8vIE5TVVJMUmVzcG9uc2Ug
aXMgbm90IHRvbGwtZnJlZSBicmlkZ2VkIHRvIENGVVJMUmVzcG9uc2UuCi0gICAgUmV0YWluUHRy
PENGSFRUUE1lc3NhZ2VSZWY+IGh0dHBNZXNzYWdlKEFkb3B0Q0YsIENGSFRUUE1lc3NhZ2VDcmVh
dGVSZXNwb25zZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBbaHR0cFJlc3BvbnNlIHN0YXR1c0NvZGVd
LCAwLCBrQ0ZIVFRQVmVyc2lvbjFfMSkpOworICAgIFJldGFpblB0cjxDRkhUVFBNZXNzYWdlUmVm
PiBodHRwTWVzc2FnZSA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNyZWF0ZVJlc3BvbnNlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIFtodHRwUmVzcG9uc2Ugc3RhdHVzQ29kZV0sIDAsIGtDRkhUVFBWZXJz
aW9uMV8xKSk7CiAKICAgICBOU0RpY3Rpb25hcnkgKmhlYWRlckZpZWxkcyA9IFtodHRwUmVzcG9u
c2UgYWxsSGVhZGVyRmllbGRzXTsKICAgICBmb3IgKE5TU3RyaW5nICpoZWFkZXJGaWVsZCBpbiBb
aGVhZGVyRmllbGRzIGtleUVudW1lcmF0b3JdKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1dvcmtRdWV1ZUl0ZW1NYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
V29ya1F1ZXVlSXRlbU1hYy5tbQppbmRleCBjMjhlOTkxZTJhYWQxZGVlNmE4NTBjYjM0ZWFjOTY4
N2Y1ODY5MTAzLi5mMGI2YzMzZGM4NWFlNWJhOGRjODc5ZmYyZGZlMzgzM2Q2YTQ2NTc5IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvV29ya1F1ZXVlSXRlbU1hYy5tbQorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvV29ya1F1ZXVlSXRlbU1hYy5tbQpAQCAtNDAsOSAr
NDAsOSBAQAogCiBib29sIExvYWRJdGVtOjppbnZva2UoKSBjb25zdAogewotICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdXJsQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgbV91cmwuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHVybENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBtX3VybC5nZXQoKSkpOwogICAgIE5TU3RyaW5nICp1cmxOUyA9IChOU1N0cmluZyAqKXVybENG
LmdldCgpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdGFyZ2V0Q0YoQWRvcHRDRiwgSlNT
dHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV90YXJnZXQuZ2V0KCkpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRhcmdldENGID0gYWRvcHRDRihKU1N0cmluZ0Nv
cHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3RhcmdldC5nZXQoKSkpOwogICAgIE5T
U3RyaW5nICp0YXJnZXROUyA9IChOU1N0cmluZyAqKXRhcmdldENGLmdldCgpOwogCiAgICAgV2Vi
RnJhbWUgKnRhcmdldEZyYW1lOwpAQCAtNTYsMTEgKzU2LDExIEBAIGJvb2wgTG9hZEl0ZW06Omlu
dm9rZSgpIGNvbnN0CiAKIGJvb2wgTG9hZEhUTUxTdHJpbmdJdGVtOjppbnZva2UoKSBjb25zdAog
ewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY29udGVudENGKEFkb3B0Q0YsIEpTU3RyaW5n
Q29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fY29udGVudC5nZXQoKSkpOwotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYmFzZVVSTENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNG
U3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fYmFzZVVSTC5nZXQoKSkpOworICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gY29udGVudENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmlu
ZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2NvbnRlbnQuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGJhc2VVUkxDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgbV9iYXNlVVJMLmdldCgpKSk7CiAKICAgICBpZiAobV91bnJlYWNo
YWJsZVVSTCkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVucmVhY2hhYmxlVVJM
Q0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV91
bnJlYWNoYWJsZVVSTC5nZXQoKSkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVu
cmVhY2hhYmxlVVJMQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG1fdW5yZWFjaGFibGVVUkwuZ2V0KCkpKTsKICAgICAgICAgW21haW5GcmFtZSBs
b2FkQWx0ZXJuYXRlSFRNTFN0cmluZzooTlNTdHJpbmcgKiljb250ZW50Q0YuZ2V0KCkgYmFzZVVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzooTlNTdHJpbmcgKiliYXNlVVJMQ0YuZ2V0KCldIGZvclVu
cmVhY2hhYmxlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmluZyAqKXVucmVhY2hhYmxl
VVJMQ0YuZ2V0KCldXTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNzcsNyArNzcs
NyBAQCBib29sIFJlbG9hZEl0ZW06Omludm9rZSgpIGNvbnN0CiAKIGJvb2wgU2NyaXB0SXRlbTo6
aW52b2tlKCkgY29uc3QKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNjcmlwdENGKEFk
b3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fc2NyaXB0
LmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzY3JpcHRDRiA9IGFkb3B0Q0Yo
SlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9zY3JpcHQuZ2V0KCkp
KTsKICAgICBOU1N0cmluZyAqc2NyaXB0TlMgPSAoTlNTdHJpbmcgKilzY3JpcHRDRi5nZXQoKTsK
ICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJv
bVN0cmluZzpzY3JpcHROU107CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCA3ZTkxNjcyZjg3Mjk4NzRmNTZiYmRhYWYz
Y2VmNGVjYzYzYzliMzY4Li5jZTg2Y2U5YTM0NGVjYjE3MjQ3ZjhhYTFmYzk0Y2Y3OWFmMzhiOWIy
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTEz
NiwxNCArMTM2LDE0IEBAIGJvb2wgc2V0QWx3YXlzQWNjZXB0Q29va2llcyhib29sIGFsd2F5c0Fj
Y2VwdENvb2tpZXMpCiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN1YnN0cmluZ0Zy
b21JbmRleChDRlN0cmluZ1JlZiBzdHJpbmcsIENGSW5kZXggaW5kZXgpCiB7Ci0gICAgcmV0dXJu
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoU3Vic3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0cmluZywgQ0ZSYW5nZU1ha2UoaW5kZXgsIENGU3Ry
aW5nR2V0TGVuZ3RoKHN0cmluZykgLSBpbmRleCkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZVdpdGhTdWJzdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RyaW5nLCBDRlJh
bmdlTWFrZShpbmRleCwgQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nKSAtIGluZGV4KSkpOwogfQog
CiB3c3RyaW5nIHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCB3c3RyaW5nJiB1cmxTdHJp
bmcpCiB7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVX
aXRoQnl0ZXMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50
OCo+KHVybFN0cmluZy5jX3N0cigpKSwgdXJsU3RyaW5nLmxlbmd0aCgpICogc2l6ZW9mKHdzdHJp
bmc6OnZhbHVlX3R5cGUpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjE2LCAwKSk7CisgICAgUmV0YWlu
UHRyPENGVVJMUmVmPiB1cmwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEJ5dGVzKGtDRkFsbG9j
YXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPih1cmxTdHJpbmcuY19z
dHIoKSksIHVybFN0cmluZy5sZW5ndGgoKSAqIHNpemVvZih3c3RyaW5nOjp2YWx1ZV90eXBlKSwg
a0NGU3RyaW5nRW5jb2RpbmdVVEYxNiwgMCkpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBzY2hlbWUoQWRvcHRDRiwgQ0ZVUkxDb3B5U2NoZW1lKHVybC5nZXQoKSkpOworICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gc2NoZW1lID0gYWRvcHRDRihDRlVSTENvcHlTY2hlbWUodXJsLmdl
dCgpKSk7CiAgICAgaWYgKHNjaGVtZSAmJiBDRlN0cmluZ0NvbXBhcmUoc2NoZW1lLmdldCgpLCBD
RlNUUigiZmlsZSIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSAhPSBrQ0ZDb21wYXJlRXF1
YWxUbykKICAgICAgICAgcmV0dXJuIHVybFN0cmluZzsKIApAQCAtMTYxLDExICsxNjEsMTEgQEAg
d3N0cmluZyB1cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3Qgd3N0cmluZyYgdXJsU3RyaW5n
KQogICAgIGlmIChGQUlMRUQocmVxdWVzdC0+VVJMKHJlcXVlc3RVUkxTdHJpbmcuR2V0QWRkcmVz
cygpKSkpCiAgICAgICAgIHJldHVybiB1cmxTdHJpbmc7CiAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxS
ZWY+IHJlcXVlc3RVUkwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHJlcXVlc3RVUkxTdHJpbmcu
R2V0QlNUUigpKSwgcmVxdWVzdFVSTFN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihPTEVDSEFSKSwg
a0NGU3RyaW5nRW5jb2RpbmdVVEYxNiwgMCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYmFz
ZVVSTChBZG9wdENGLCBDRlVSTENyZWF0ZUNvcHlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50KGtD
RkFsbG9jYXRvckRlZmF1bHQsIHJlcXVlc3RVUkwuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZV
UkxSZWY+IHJlcXVlc3RVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEJ5dGVzKGtDRkFsbG9j
YXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihyZXF1ZXN0VVJMU3Ry
aW5nLkdldEJTVFIoKSksIHJlcXVlc3RVUkxTdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoT0xFQ0hB
UiksIGtDRlN0cmluZ0VuY29kaW5nVVRGMTYsIDApKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IGJhc2VVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlQ29weURlbGV0aW5nTGFzdFBhdGhDb21wb25l
bnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVxdWVzdFVSTC5nZXQoKSkpOwogCi0gICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBiYXNlUGF0aChBZG9wdENGLCBDRlVSTENvcHlQYXRoKGJhc2VVUkwu
Z2V0KCkpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGgoQWRvcHRDRiwgQ0ZVUkxD
b3B5UGF0aCh1cmwuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJhc2VQYXRo
ID0gYWRvcHRDRihDRlVSTENvcHlQYXRoKGJhc2VVUkwuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHBhdGggPSBhZG9wdENGKENGVVJMQ29weVBhdGgodXJsLmdldCgpKSk7CiAK
ICAgICByZXR1cm4gY2ZTdHJpbmdSZWZUb1dTdHJpbmcoc3Vic3RyaW5nRnJvbUluZGV4KHBhdGgu
Z2V0KCksIENGU3RyaW5nR2V0TGVuZ3RoKGJhc2VQYXRoLmdldCgpKSkuZ2V0KCkpOwogfQpAQCAt
MTc1LDcgKzE3NSw3IEBAIHdzdHJpbmcgbGFzdFBhdGhDb21wb25lbnQoY29uc3Qgd3N0cmluZyYg
dXJsU3RyaW5nKQogICAgIGlmICh1cmxTdHJpbmcuZW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHVy
bFN0cmluZzsKIAotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsKEFkb3B0Q0YsIENGVVJMQ3Jl
YXRlV2l0aEJ5dGVzKGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VUludDgqPih1cmxTdHJpbmcuY19zdHIoKSksIHVybFN0cmluZy5sZW5ndGgoKSAqIHNpemVvZih3
c3RyaW5nOjp2YWx1ZV90eXBlKSwga0NGU3RyaW5nRW5jb2RpbmdVVEYxNiwgMCkpOworICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gdXJsID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhCeXRlcyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4odXJsU3RyaW5n
LmNfc3RyKCkpLCB1cmxTdHJpbmcubGVuZ3RoKCkgKiBzaXplb2Yod3N0cmluZzo6dmFsdWVfdHlw
ZSksIGtDRlN0cmluZ0VuY29kaW5nVVRGMTYsIDApKTsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGxhc3RQYXRoQ29tcG9uZW50KENGVVJMQ29weUxhc3RQYXRoQ29tcG9uZW50KHVybC5nZXQo
KSkpOwogCiAgICAgcmV0dXJuIGNmU3RyaW5nUmVmVG9XU3RyaW5nKGxhc3RQYXRoQ29tcG9uZW50
LmdldCgpKTsKQEAgLTEyNzgsNyArMTI3OCw3IEBAIFJldGFpblB0cjxDRlVSTENhY2hlUmVmPiBz
aGFyZWRDRlVSTENhY2hlKCkKIAogICAgIHR5cGVkZWYgQ0ZVUkxDYWNoZVJlZiAoKkNGVVJMQ2Fj
aGVDb3B5U2hhcmVkVVJMQ2FjaGVQcm9jUHRyKSh2b2lkKTsKICAgICBpZiAoQ0ZVUkxDYWNoZUNv
cHlTaGFyZWRVUkxDYWNoZVByb2NQdHIgY29weUNhY2hlID0gcmVpbnRlcnByZXRfY2FzdDxDRlVS
TENhY2hlQ29weVNoYXJlZFVSTENhY2hlUHJvY1B0cj4oR2V0UHJvY0FkZHJlc3MobW9kdWxlLCAi
Q0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSIpKSkKLSAgICAgICAgcmV0dXJuIFJldGFpblB0
cjxDRlVSTENhY2hlUmVmPihBZG9wdENGLCBjb3B5Q2FjaGUoKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdENGKGNvcHlDYWNoZSgpKTsKIAogICAgIHR5cGVkZWYgQ0ZVUkxDYWNoZVJlZiAoKkNGVVJM
Q2FjaGVTaGFyZWRVUkxDYWNoZVByb2NQdHIpKHZvaWQpOwogICAgIGlmIChDRlVSTENhY2hlU2hh
cmVkVVJMQ2FjaGVQcm9jUHRyIHNoYXJlZENhY2hlID0gcmVpbnRlcnByZXRfY2FzdDxDRlVSTENh
Y2hlU2hhcmVkVVJMQ2FjaGVQcm9jUHRyPihHZXRQcm9jQWRkcmVzcyhtb2R1bGUsICJDRlVSTENh
Y2hlU2hhcmVkVVJMQ2FjaGUiKSkpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vSW1hZ2VEaWZmQ2Fpcm8uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ltYWdlRGlm
ZkNhaXJvLmNwcAppbmRleCBkMTBjYzE0YzZlMDFlNTcwNGU4ZDYxMDQ4MWIzNWI4MWYzYjM3YjQ5
Li5kNWE4MWI0OTVlZWU4OGQxNDE0NGE0MGFmMTM4N2NmYTg4YTcwOTExIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vSW1hZ2VEaWZmQ2Fpcm8uY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9JbWFnZURpZmZDYWlyby5jcHAKQEAgLTczLDcgKzczLDcgQEAgc3Rh
dGljIGNhaXJvX3N0YXR1c190IHJlYWRGcm9tRGF0YSh2b2lkKiBjbG9zdXJlLCB1bnNpZ25lZCBj
aGFyKiBkYXRhLCB1bnNpZ25lZAogc3RhdGljIGNhaXJvX3N1cmZhY2VfdCogY3JlYXRlSW1hZ2VG
cm9tU3RkaW4oaW50IGJ5dGVzUmVtYWluaW5nKQogewogICAgIHVuc2lnbmVkIGNoYXIgYnVmZmVy
W3NfYnVmZmVyU2l6ZV07Ci0gICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGRhdGEoQWRv
cHRDRiwgQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCBieXRlc1JlbWFpbmluZykpOworICAgIFJldGFp
blB0cjxDRk11dGFibGVEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxl
KDAsIGJ5dGVzUmVtYWluaW5nKSk7CiAKICAgICB3aGlsZSAoYnl0ZXNSZW1haW5pbmcgPiAwKSB7
CiAgICAgICAgIHNpemVfdCBieXRlc1RvUmVhZCA9IG1pbihieXRlc1JlbWFpbmluZywgc19idWZm
ZXJTaXplKTsKQEAgLTIzNSw3ICsyMzUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hh
ciogYXJndltdKQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGRpZmZlcmVuY2Ug
PiAwLjApIHsKICAgICAgICAgICAgICAgICBpZiAoZGlmZkltYWdlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBpbWFnZURhdGEoQWRvcHRDRiwgQ0ZE
YXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CisgICAgICAgICAgICAgICAgICAgIFJldGFpblB0cjxD
Rk11dGFibGVEYXRhUmVmPiBpbWFnZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUo
MCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBjYWlyb19zdXJmYWNlX3dyaXRlX3RvX3BuZ19z
dHJlYW0oZGlmZkltYWdlLCAoY2Fpcm9fd3JpdGVfZnVuY190KXdyaXRlVG9EYXRhLCBpbWFnZURh
dGEuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNvbnRlbnQtTGVuZ3RoOiAl
bHVcbiIsIENGRGF0YUdldExlbmd0aChpbWFnZURhdGEuZ2V0KCkpKTsKICAgICAgICAgICAgICAg
ICAgICAgZndyaXRlKENGRGF0YUdldEJ5dGVQdHIoaW1hZ2VEYXRhLmdldCgpKSwgMSwgQ0ZEYXRh
R2V0TGVuZ3RoKGltYWdlRGF0YS5nZXQoKSksIHN0ZG91dCk7CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vUGl4ZWxEdW1wU3VwcG9ydFdpbi5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vUGl4ZWxEdW1wU3VwcG9ydFdpbi5jcHAKaW5kZXggMTBjYTUxNjNmOWZmNzll
OWFjOGQ5ZWZmMjkzOWY2M2EwNjQ1MGYyMS4uZjIwMjVjNjZiMzBiY2Q4NWVhYWU4ZmM1MjI3ZGZl
MTFhMjYxZjU1YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVt
cFN1cHBvcnRXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9QaXhlbER1bXBT
dXBwb3J0V2luLmNwcApAQCAtODUsNyArODUsNyBAQCBQYXNzUmVmUHRyPEJpdG1hcENvbnRleHQ+
IGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhib29sIG9uc2NyZWVuLCBib29sIGluYwog
ICAgIG1ha2VBbHBoYUNoYW5uZWxPcGFxdWUoaW5mby5ibUJpdHMsIGluZm8uYm1XaWR0aCwgaW5m
by5ibUhlaWdodCk7CiAKICNpZiBVU0UoQ0cpCi0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJl
Zj4gY29sb3JTcGFjZShBZG9wdENGLCBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7Cisg
ICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xv
clNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dC
aXRtYXBDb250ZXh0Q3JlYXRlKGluZm8uYm1CaXRzLCBpbmZvLmJtV2lkdGgsIGluZm8uYm1IZWln
aHQsIDgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmZvLmJtV2lkdGhCeXRlcywgY29sb3JTcGFjZS5nZXQoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJI
b3N0IHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCk7CiAjZWxpZiBVU0UoQ0FJUk8p
IApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCmluZGV4IGQ1Yjk4
MTA3MjZkODNjNThmODQ0ZGUzMWM1NjNkNjY4MDU2ZmI3MGEuLmYxYTJiMmIwM2EwZjViMjgzMTZj
YTEzN2FlYzMyNWJmZGM5N2I3NzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9UZXN0UnVubmVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1
bm5lcldpbi5jcHAKQEAgLTYzMywxMyArNjMzLDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNl
clN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBqc1VSTCkKICAgICBpZiAoRkFJTEVEKHdl
YlZpZXctPnByZWZlcmVuY2VzKCZwcmVmZXJlbmNlcykpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybFN0cmluZyhBZG9wdENGLCBKU1N0cmluZ0NvcHlD
RlN0cmluZygwLCBqc1VSTCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsKEFkb3B0Q0Ys
IENGVVJMQ3JlYXRlV2l0aFN0cmluZygwLCB1cmxTdHJpbmcuZ2V0KCksIDApKTsKKyAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHVybFN0cmluZyA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoMCwganNVUkwpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IGFkb3B0Q0YoQ0ZV
UkxDcmVhdGVXaXRoU3RyaW5nKDAsIHVybFN0cmluZy5nZXQoKSwgMCkpOwogICAgIGlmICghdXJs
KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBOb3cgY29weSB0aGUgZmlsZSBzeXN0ZW0gcGF0
aCwgUE9TSVggc3R5bGUuCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoQ0YoQWRvcHRD
RiwgQ0ZVUkxDb3B5RmlsZVN5c3RlbVBhdGgodXJsLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHls
ZSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0aENGID0gYWRvcHRDRihDRlVSTENv
cHlGaWxlU3lzdGVtUGF0aCh1cmwuZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlKSk7CiAgICAg
aWYgKCFwYXRoQ0YpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjk3LDcgKzY5Nyw3IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6c2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoSlNTdHJpbmdSZWYgbW9kZSkKIAog
dm9pZCBUZXN0UnVubmVyOjpzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0
cmluZ1JlZiBqc1VSTCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybFN0cmluZyhB
ZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZygwLCBqc1VSTCkpOworICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gdXJsU3RyaW5nID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZygwLCBq
c1VSTCkpOwogICAgIDo6c2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24odXJsU3Ry
aW5nLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9D
dXN0b21Qcm90b2NvbHNTeW5jWEhSVGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
Q3VzdG9tUHJvdG9jb2xzU3luY1hIUlRlc3QubW0KaW5kZXggMjBiZTlkOTMyZDkyYWFhZGM0NDI2
MTA3Y2JlNzM5MDNmZmQzN2FkZC4uNDYxY2Q3NWJkZjMwMWJkN2RjMmZkZDY5MGFiZDcyZGVjOGIy
NTA5OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9DdXN0b21Qcm90b2Nv
bHNTeW5jWEhSVGVzdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0N1c3RvbVBy
b3RvY29sc1N5bmNYSFJUZXN0Lm1tCkBAIC00NiwxNiArNDYsMTYgQEAgVEVTVChXZWJLaXQyQ3Vz
dG9tUHJvdG9jb2xzVGVzdCwgU3luY1hIUikKICAgICBbTlNVUkxQcm90b2NvbCByZWdpc3RlckNs
YXNzOltUZXN0UHJvdG9jb2wgY2xhc3NdXTsKICAgICBbV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyIHJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6W1Rlc3RQcm90b2NvbCBzY2hlbWVd
XTsKIAotICAgIFJldGFpblB0cjxXS1Byb2Nlc3NHcm91cD4gcHJvY2Vzc0dyb3VwKEFkb3B0TlMs
IFtbV0tQcm9jZXNzR3JvdXAgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRhaW5QdHI8V0tCcm93c2lu
Z0NvbnRleHRHcm91cD4gYnJvd3NpbmdDb250ZXh0R3JvdXAoQWRvcHROUywgW1tXS0Jyb3dzaW5n
Q29udGV4dEdyb3VwIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJUZXN0SWRlbnRpZmllciJd
KTsKKyAgICBSZXRhaW5QdHI8V0tQcm9jZXNzR3JvdXA+IHByb2Nlc3NHcm91cCA9IGFkb3B0TlMo
W1tXS1Byb2Nlc3NHcm91cCBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxXS0Jyb3dzaW5n
Q29udGV4dEdyb3VwPiBicm93c2luZ0NvbnRleHRHcm91cCA9IGFkb3B0TlMoW1tXS0Jyb3dzaW5n
Q29udGV4dEdyb3VwIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJUZXN0SWRlbnRpZmllciJd
KTsKIAogICAgIC8vIEFsbG93IGZpbGUgVVJMcyB0byBsb2FkIG5vbi1maWxlIHJlc291cmNlcwog
ICAgIFdLUmV0YWluUHRyPFdLUHJlZmVyZW5jZXNSZWY+IHByZWZlcmVuY2VzKEFkb3B0V0ssIFdL
UHJlZmVyZW5jZXNDcmVhdGUoKSk7CiAgICAgV0tQcmVmZXJlbmNlc1NldFVuaXZlcnNhbEFjY2Vz
c0Zyb21GaWxlVVJMc0FsbG93ZWQocHJlZmVyZW5jZXMuZ2V0KCksIHRydWUpOwogICAgIFdLUGFn
ZUdyb3VwU2V0UHJlZmVyZW5jZXMoYnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCkuX3BhZ2VHcm91
cFJlZiwgcHJlZmVyZW5jZXMuZ2V0KCkpOwogCi0gICAgUmV0YWluUHRyPFdLVmlldz4gd2tWaWV3
KEFkb3B0TlMsIFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAuZ2V0KCkgYnJvd3NpbmdDb250ZXh0
R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldKTsKLSAgICAgUmV0YWluUHRyPFRlc3RC
cm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGU+IGRlbGVnYXRlKEFkb3B0TlMsIFtbVGVzdEJyb3dz
aW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4o
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKKyAgICBSZXRhaW5QdHI8V0tW
aWV3PiB3a1ZpZXcgPSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAuZ2V0KCkgYnJv
d3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldKTsKKyAgICAgUmV0
YWluUHRyPFRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGU+IGRlbGVnYXRlID0gYWRvcHRO
UyhbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tU
b1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CiAgICAg
ICAgICBFWFBFQ1RfSlNfRVEod2tWaWV3LmdldCgpLnBhZ2VSZWYsICJ3aW5kb3cuX3Rlc3RSZXN1
bHQiLCAiUEFTUyIpOwogICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKICAgICB9XSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1Rlc3RXZWJLaXRBUEkvbWFjL0lu
c3RhbmNlTWV0aG9kU3dpenpsZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1Rlc3RX
ZWJLaXRBUEkvbWFjL0luc3RhbmNlTWV0aG9kU3dpenpsZXIubW0KaW5kZXggZjg2OTI3MmVhNmZk
OTQ5OWE5ZjZjOTc4M2Q4ZDMwMjRiNWM2MjU3ZC4uOTRiYjdlZjk3MTQ3MzQ2NTI1MTc1MDAwOTE5
Y2RiNjZhMDIwMjU5YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9UZXN0
V2ViS2l0QVBJL21hYy9JbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvVGVzdFdlYktpdEFQSS9tYWMvSW5zdGFuY2VNZXRob2RTd2l6emxlci5t
bQpAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgdm9pZCBzZXRWYWx1ZTMoaWQgc2VsZiwgU0VMIF9j
bWQsIGludCogdmFsdWUpCiAKIFRFU1QoVGVzdFdlYktpdEFQSSwgSW5zdGFuY2VNZXRob2RTd2l6
emxlcikKIHsKLSAgICBSZXRhaW5QdHI8U2ltcGxlT2JqZWN0PiBvYmplY3QoQWRvcHROUywgW1tT
aW1wbGVPYmplY3QgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8U2ltcGxlT2JqZWN0PiBv
YmplY3QgPSBhZG9wdE5TKFtbU2ltcGxlT2JqZWN0IGFsbG9jXSBpbml0XSk7CiAKICAgICBpbnQg
dmFsdWUgPSAwOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9j
Zi9SZXRhaW5QdHJIYXNoaW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2Nm
L1JldGFpblB0ckhhc2hpbmcuY3BwCmluZGV4IDBjZDI4YzliYjJiNmE1NTNjMDYwMDQyMjBiNjQ0
ZGFjMTQxMTc2ZTcuLjZkZDdiNmE1NmY3MmUyYjhkYjIxZGViNzM5NDExNDE0YTUxN2YwZmIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2NmL1JldGFpblB0ckhhc2hp
bmcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2NmL1JldGFpblB0ckhh
c2hpbmcuY3BwCkBAIC0zOCwxMyArMzgsMTMgQEAgVEVTVChSZXRhaW5QdHJIYXNoaW5nLCBIYXNo
U2V0KQogewogICAgIEhhc2hTZXQ8UmV0YWluUHRyPENGU3RyaW5nUmVmPiA+IHNldDsKIAotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZm9vKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENT
dHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgImZvbyIsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkp
OworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZm9vID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0
ZVdpdGhDU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsICJmb28iLCBrQ0ZTdHJpbmdFbmNvZGlu
Z1VURjgpKTsKIAogICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnMoZm9vKSk7CiAgICAgc2V0
LmFkZChmb28pOwogICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhmb28pKTsKIAotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gZm9vMihBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsICJmb28iLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZvbzIgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgImZvbyIsIGtDRlN0cmluZ0VuY29kaW5n
VVRGOCkpOwogICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnMoZm9vMikpOwogICAgIHNldC5h
ZGQoZm9vMik7CiAgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKGZvbzIpKTsKQEAgLTU3LDEz
ICs1NywxMyBAQCBURVNUKFJldGFpblB0ckhhc2hpbmcsIEhhc2hNYXBLZXkpCiB7CiAgICAgSGFz
aE1hcDxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LCBpbnQ+IG1hcDsKIAotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gZm9vKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgImZvbyIsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOworICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gZm9vID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5n
KGtDRkFsbG9jYXRvckRlZmF1bHQsICJmb28iLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKIAog
ICAgIEVYUEVDVF9GQUxTRShtYXAuY29udGFpbnMoZm9vKSk7CiAgICAgbWFwLmFkZChmb28sIDEp
OwogICAgIEVYUEVDVF9FUSgxLCBtYXAuZ2V0KGZvbykpOwogCi0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBmb28yKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgImZvbyIsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOworICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gZm9vMiA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCAiZm9vIiwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KSk7CiAgICAg
RVhQRUNUX0ZBTFNFKG1hcC5jb250YWlucyhmb28yKSk7CiAgICAgbWFwLmFkZChmb28yLCAyKTsK
ICAgICBFWFBFQ1RfRVEoMiwgbWFwLmdldChmb28yKSk7CkBAIC03NiwxMyArNzYsMTMgQEAgVEVT
VChSZXRhaW5QdHJIYXNoaW5nLCBIYXNoTWFwVmFsdWUpCiB7CiAgICAgSGFzaE1hcDxpbnQsIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gPiBtYXA7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGZvbyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1
bHQsICJmb28iLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGZvbyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAiZm9vIiwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KSk7CiAKICAgICBFWFBFQ1Rf
RkFMU0UobWFwLmNvbnRhaW5zKDEpKTsKICAgICBtYXAuYWRkKDEsIGZvbyk7CiAgICAgRVhQRUNU
X0VRKGZvbywgbWFwLmdldCgxKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZvbzIo
QWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAi
Zm9vIiwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBmb28yID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsICJmb28iLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKICAgICBFWFBFQ1RfRkFMU0Uo
bWFwLmNvbnRhaW5zKDIpKTsKICAgICBtYXAuYWRkKDIsIGZvbzIpOwogICAgIEVYUEVDVF9FUShm
b28yLCBtYXAuZ2V0KDIpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9GaW5kTWF0Y2hlcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9GaW5kTWF0Y2hlcy5tbQppbmRleCA0YjA4OTcyNGRiNjRmZTI1MDA4NTdkNjYxNjY3MTFmMDdl
NGZkZjkwLi5lNTc1NWQ4MjM0NjM4MjYzNTViNDQ4ZTEyZmEwNjc2ZWRhNjliYTUyIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRmluZE1hdGNoZXMubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZpbmRNYXRjaGVzLm1tCkBAIC0x
MjcsOCArMTI3LDggQEAgVEVTVChXZWJLaXQyLCBGaW5kTWF0Y2hlcykKICAgICBXS1BhZ2VGaW5k
U3RyaW5nTWF0Y2hlcyh3ZWJWaWV3LnBhZ2UoKSwgZmluZFN0cmluZy5nZXQoKSwgdHJ1ZSwgMTAw
KTsKICAgICBVdGlsOjpydW4oJmRpZENhbGxGaW5kU3RyaW5nTWF0Y2hlcyk7CiAKLSAgICB3ZWJr
aXQxVmlldy5hZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKLSAgICBSZXRh
aW5QdHI8RmluZE1hdGNoZXNXSzFGcmFtZUxvYWREZWxlZ2F0ZT4gZnJhbWVMb2FkRGVsZWdhdGUo
QWRvcHROUywgW0ZpbmRNYXRjaGVzV0sxRnJhbWVMb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgd2Vi
a2l0MVZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKKyAgICBS
ZXRhaW5QdHI8RmluZE1hdGNoZXNXSzFGcmFtZUxvYWREZWxlZ2F0ZT4gZnJhbWVMb2FkRGVsZWdh
dGUgPSBhZG9wdE5TKFtGaW5kTWF0Y2hlc1dLMUZyYW1lTG9hZERlbGVnYXRlIG5ld10pOwogCiAg
ICAgd2Via2l0MVZpZXcuZ2V0KCkuZnJhbWVMb2FkRGVsZWdhdGUgPSBmcmFtZUxvYWREZWxlZ2F0
ZS5nZXQoKTsKICAgICBbd2Via2l0MVZpZXcuZ2V0KCkubWFpbkZyYW1lIGxvYWRIVE1MU3RyaW5n
OkAiVGVzdCBzZWFyY2guIEhlbGxvIDxzcGFuIGlkPVwidGFyZ2V0XCI+SGVsbG88L3NwYW4+IEhl
bGxvISIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImFib3V0OmJsYW5rIl1dOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYkFyY2hpdmUuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYkFyY2hpdmUuY3BwCmluZGV4
IDdkZWEzMTU1NDJlNGU2YzkyNmYxNTM0Y2Y1NWVhYTk2YjczMjY2NjAuLjBlNmI5ODVmYjZkYTU4
NGVhNmRiNTM5MzBhOTc4ZDllZWI5YmI5ZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9XZWJBcmNoaXZlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvV2ViQXJjaGl2ZS5jcHAKQEAgLTQ4LDggKzQ4LDggQEAgc3RhdGljIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmLCBXS1N0
cmluZ1JlZiBtZXNzYWcKICAgICAvLyBEbyBiYXNpYyBzYW5pdHkgY2hlY2tzIG9uIHRoZSByZXR1
cm5lZCB3ZWJhcmNoaXZlLiBXZSBoYXZlIG1vcmUgdGhvcm91Z2ggY2hlY2tzIGluIExheW91dFRl
c3RzLgogICAgIHNpemVfdCBzaXplID0gV0tEYXRhR2V0U2l6ZShyZWNlaXZlZERhdGEpOwogICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJ5dGVzID0gV0tEYXRhR2V0Qnl0ZXMocmVjZWl2ZWREYXRh
KTsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhKEFkb3B0Q0YsIENGRGF0YUNyZWF0ZSgw
LCBieXRlcywgc2l6ZSkpOwotICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4gcHJvcGVy
dHlMaXN0KEFkb3B0Q0YsIENGUHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgZGF0YS5nZXQo
KSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAwKSk7CisgICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAsIGJ5dGVzLCBzaXplKSk7CisgICAg
UmV0YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiBwcm9wZXJ0eUxpc3QgPSBhZG9wdENGKENGUHJv
cGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgZGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1t
dXRhYmxlLCAwLCAwKSk7CiAgICAgRVhQRUNUX1RSVUUocHJvcGVydHlMaXN0KTsKICAgICAKICAg
ICAvLyBJdCBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LgpAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdL
U3RyaW5nUmVmIG1lc3NhZwogICAgIEVYUEVDVF9UUlVFKHJlc291cmNlRGF0YSk7CiAgICAgRVhQ
RUNUX0VRKENGRGF0YUdldFR5cGVJRCgpLCBDRkdldFR5cGVJRChyZXNvdXJjZURhdGEpKTsKICAg
ICAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZ0RhdGEoQWRvcHRDRiwgQ0ZTdHJp
bmdDcmVhdGVGcm9tRXh0ZXJuYWxSZXByZXNlbnRhdGlvbigwLCAoQ0ZEYXRhUmVmKXJlc291cmNl
RGF0YSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBzdHJpbmdEYXRhID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZUZyb21FeHRlcm5hbFJlcHJlc2Vu
dGF0aW9uKDAsIChDRkRhdGFSZWYpcmVzb3VyY2VEYXRhLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgp
KTsKICAgICBFWFBFQ1RfVFJVRShzdHJpbmdEYXRhKTsKICAgICAKICAgICAvLyBJdCBzaG91bGQg
Y29udGFpbiB0aGUgc3RyaW5nICJTaW1wbGUgSFRNTCBmaWxlLiIgaW4gaXQuCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbWFjL0dldEJhY2tpbmdTY2FsZUZh
Y3Rvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tYWMvR2V0QmFja2lu
Z1NjYWxlRmFjdG9yLm1tCmluZGV4IDRhZmQ3MmZhMmZlY2E0NmU2NGUwYmI3YjdjNTdmZmYwZTYw
ZWRmZDAuLmVhNzcwNTE5YTMwMGNjNDY3NzQ4MmQyZTY4ODI1NzAzYTI0M2Y5N2EgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tYWMvR2V0QmFja2luZ1NjYWxl
RmFjdG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tYWMvR2V0
QmFja2luZ1NjYWxlRmFjdG9yLm1tCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyB2b2lkIHNldElu
amVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0KQogCiBzdGF0aWMgUmV0YWlu
UHRyPFN5bnRoZXRpY0JhY2tpbmdTY2FsZUZhY3RvcldpbmRvdz4gY3JlYXRlV2luZG93KCkKIHsK
LSAgICBSZXRhaW5QdHI8U3ludGhldGljQmFja2luZ1NjYWxlRmFjdG9yV2luZG93PiB3aW5kb3co
QWRvcHROUywgW1tTeW50aGV0aWNCYWNraW5nU2NhbGVGYWN0b3JXaW5kb3cgYWxsb2NdIGluaXRX
aXRoQ29udGVudFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgc3R5bGVNYXNrOk5TQm9y
ZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllF
U10pOworICAgIFJldGFpblB0cjxTeW50aGV0aWNCYWNraW5nU2NhbGVGYWN0b3JXaW5kb3c+IHdp
bmRvdyA9IGFkb3B0TlMoW1tTeW50aGV0aWNCYWNraW5nU2NhbGVGYWN0b3JXaW5kb3cgYWxsb2Nd
IGluaXRXaXRoQ29udGVudFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgc3R5bGVNYXNr
Ok5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRl
ZmVyOllFU10pOwogICAgIFt3aW5kb3cuZ2V0KCkgc2V0UmVsZWFzZWRXaGVuQ2xvc2VkOk5PXTsK
ICAgICByZXR1cm4gd2luZG93OwogfQpAQCAtNjQsNyArNjQsNyBAQCBURVNUKFdlYktpdDIsIEdl
dEJhY2tpbmdTY2FsZUZhY3RvcikKIHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNv
bnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3Qo
IkdldEJhY2tpbmdTY2FsZUZhY3RvclRlc3QiKSk7CiAgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGll
bnQoY29udGV4dC5nZXQoKSk7Ci0gICAgUmV0YWluUHRyPFdLVmlldz4gdmlldyhBZG9wdE5TLCBb
W1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b250ZXh0UmVmOmNvbnRleHQuZ2V0KCkgcGFnZUdyb3VwUmVmOjBdKTsKKyAgICBSZXRhaW5QdHI8
V0tWaWV3PiB2aWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb250ZXh0UmVmOmNvbnRleHQuZ2V0KCkgcGFnZUdyb3Vw
UmVmOjBdKTsKIAogICAgIFJldGFpblB0cjxTeW50aGV0aWNCYWNraW5nU2NhbGVGYWN0b3JXaW5k
b3c+IHdpbmRvdzEgPSBjcmVhdGVXaW5kb3coKTsKICAgICBbd2luZG93MS5nZXQoKSBzZXRCYWNr
aW5nU2NhbGVGYWN0b3I6MV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvd2luL0RvTm90Q29weUFOdWxsQ0ZVUkxSZXNwb25zZS5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvd2luL0RvTm90Q29weUFOdWxsQ0ZVUkxSZXNwb25zZS5j
cHAKaW5kZXggOGJkMGM1Njc4MGVmZDA4MmNmNTg2MmIxZmI5YWJjYjNkZTVjMzZmMi4uNDRhNWIz
MGQwYTMzNDhhZTMyMTQ5MjdjYzNmZGQ0NTRiMzI2OGQ3YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3dpbi9Eb05vdENvcHlBTnVsbENGVVJMUmVzcG9uc2Uu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93aW4vRG9Ob3RDb3B5
QU51bGxDRlVSTFJlc3BvbnNlLmNwcApAQCAtMzQsNyArMzQsNyBAQCBURVNUKFdlYktpdDIsIERv
Tm90Q29weUFOdWxsQ0ZVUkxSZXNwb25zZSkKIHsKICAgICAvLyBOZWl0aGVyIG9mIHRoZXNlIGNh
bGxzIHNob3VsZCBjYXVzZSBhIGNyYXNoLgogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVzcG9uc2VS
ZWY+IG51bGxXS1Jlc3BvbnNlKEFkb3B0V0ssIFdLVVJMUmVzcG9uc2VDcmVhdGVXaXRoQ0ZVUkxS
ZXNwb25zZSgwKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IG51bGxDRlJlc3Bv
bnNlKEFkb3B0Q0YsIFdLVVJMUmVzcG9uc2VDb3B5Q0ZVUkxSZXNwb25zZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBudWxsV0tSZXNwb25zZS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRlVSTFJlc3Bv
bnNlUmVmPiBudWxsQ0ZSZXNwb25zZSA9IGFkb3B0Q0YoV0tVUkxSZXNwb25zZUNvcHlDRlVSTFJl
c3BvbnNlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxXS1Jlc3BvbnNlLmdldCgpKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL0FjY2VwdHNGaXJzdE1vdXNlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvQWNjZXB0c0ZpcnN0TW91c2UubW0KaW5kZXggYmMyZjc4NmY4N2QxNzA4MGJl
MDU3OTE0YzkxMDM4NGZmZTdmMTU4Yi4uZGVjNzg4ODA0ZjY1YjQxNjYxZTllOWQwZjNmZjBkNmFm
ZWU0N2IyMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQWNjZXB0
c0ZpcnN0TW91c2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQWNjZXB0
c0ZpcnN0TW91c2UubW0KQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogdGVtcGxhdGUgPHR5cGVu
YW1lIFZpZXc+CiB2b2lkIEFjY2VwdHNGaXJzdE1vdXNlOjpydW5UZXN0KFZpZXcgdmlldykKIHsK
LSAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyhBZG9wdE5TLCBbW05TV2luZG93IGFsbG9j
XSBpbml0V2l0aENvbnRlbnRSZWN0OnZpZXcuZnJhbWUgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dp
bmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllFU10pOworICAg
IFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBp
bml0V2l0aENvbnRlbnRSZWN0OnZpZXcuZnJhbWUgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRv
d01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllFU10pOwogICAgIFtb
d2luZG93LmdldCgpIGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OnZpZXddOwogCiAgICAgQ0dGbG9h
dCB2aWV3SGVpZ2h0ID0gdmlldy5ib3VuZHMuc2l6ZS5oZWlnaHQ7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9BdHRyaWJ1dGVkU3RyaW5nLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvQXR0cmlidXRlZFN0cmluZy5tbQppbmRleCAxOGNjZTljMmQx
YjE2NmMyM2VjZjE3ODAxZTcxNzRmZmRkOTM4YjMzLi42Mzg2Y2FkNWY2NTI2NTJkODY2OTAyMjdl
MTQ0MGVkNmE5NzFmY2E3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9BdHRyaWJ1dGVkU3RyaW5nLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L0F0dHJpYnV0ZWRTdHJpbmcubW0KQEAgLTUyLDggKzUyLDggQEAgc3RhdGljIHZvaWQgZGlkRmlu
aXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2
b2lkKikKIAogVEVTVChXZWJLaXQxLCBBdHRyaWJ1dGVkU3RyaW5nVGVzdCkKIHsKLSAgICBSZXRh
aW5QdHI8V2ViVmlldz4gd2ViVmlldyhBZG9wdE5TLCBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6
bmlsXSk7Ci0gICAgUmV0YWluUHRyPEF0dHJpYnV0ZWRTdHJpbmdUZXN0PiB0ZXN0Q29udHJvbGxl
cihBZG9wdE5TLCBbQXR0cmlidXRlZFN0cmluZ1Rlc3QgbmV3XSk7CisgICAgUmV0YWluUHRyPFdl
YlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsK
KyAgICBSZXRhaW5QdHI8QXR0cmlidXRlZFN0cmluZ1Rlc3Q+IHRlc3RDb250cm9sbGVyID0gYWRv
cHROUyhbQXR0cmlidXRlZFN0cmluZ1Rlc3QgbmV3XSk7CiAgICAgCiAgICAgd2ViVmlldy5nZXQo
KS5mcmFtZUxvYWREZWxlZ2F0ZSA9IHRlc3RDb250cm9sbGVyLmdldCgpOwogICAgIFtbd2ViVmll
dy5nZXQoKSBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImF0dHJpYnV0ZWRTdHJp
bmdDdXN0b21Gb250IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXV1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvQmFja0ZvcndhcmRMaXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvQmFja0ZvcndhcmRMaXN0Lm1tCmluZGV4IDA5ODQ1M2QxOGE2ODgzZTEwM2Y1MTc1OWJlZjJl
MWM4MmRkMjM0YTUuLjgyZGRiMzgzMGZkOGExZTMzZDA1MmM2MmMwYWIyYTZmZWJkYzQ3MTUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0JhY2tGb3J3YXJkTGlzdC5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9CYWNrRm9yd2FyZExpc3QubW0K
QEAgLTU0LDggKzU0LDggQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFdlYktp
dDEsIFJlbG9hZEJhY2tGb3J3YXJkKQogewotICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3
KEFkb3B0TlMsIFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKLSAgICBSZXRhaW5QdHI8
QmFja0ZvcndhcmRMaXN0VGVzdD4gdGVzdENvbnRyb2xsZXIoQWRvcHROUywgW0JhY2tGb3J3YXJk
TGlzdFRlc3QgbmV3XSk7CisgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5T
KFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAw
KSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKKyAgICBSZXRhaW5QdHI8QmFja0Zvcndh
cmRMaXN0VGVzdD4gdGVzdENvbnRyb2xsZXIgPSBhZG9wdE5TKFtCYWNrRm9yd2FyZExpc3RUZXN0
IG5ld10pOwogICAgIHdlYlZpZXcuZ2V0KCkuZnJhbWVMb2FkRGVsZWdhdGUgPSB0ZXN0Q29udHJv
bGxlci5nZXQoKTsKICAgICBbW3dlYlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDov
L2RvZXMtbm90LWV4aXN0LmV4YW1wbGUiXV1dOwogICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9h
ZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9DYW5jZWxMb2Fk
RnJvbVJlc291cmNlTG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvQ2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQppbmRleCAzNzI5ZWI1M2Nh
M2ZjMDc3ZmFkYzc3MDljYjE0ODllZDNkZDJhZGVlLi45YTE5ZjkzNmMwZTc3ZDIxZDE2ODc2MTE1
Y2RkMzE0ZjA1YjdhOTMxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9DYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL0NhbmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0K
QEAgLTY0LDExICs2NCwxMSBAQCBURVNUKFdlYktpdDEsIENhbmNlbExvYWRGcm9tUmVzb3VyY2VM
b2FkRGVsZWdhdGUpCiB7CiAgICAgTlNBdXRvcmVsZWFzZVBvb2wgKnBvb2wgPSBbW05TQXV0b3Jl
bGVhc2VQb29sIGFsbG9jXSBpbml0XTsKIAotICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3
KEFkb3B0TlMsIFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKKyAgICBSZXRhaW5QdHI8
V2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0p
OwogCi0gICAgUmV0YWluUHRyPENhbmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGU+IHJl
c291cmNlTG9hZERlbGVnYXRlKEFkb3B0TlMsIFtbQ2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWRE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxDYW5jZWxMb2FkRnJvbVJlc291
cmNlTG9hZERlbGVnYXRlPiByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tDYW5jZWxM
b2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgd2ViVmlldy5n
ZXQoKS5yZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IHJlc291cmNlTG9hZERlbGVnYXRlLmdldCgpOwot
ICAgIFJldGFpblB0cjxDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlRnJhbWVMb2Fk
RGVsZWdhdGU+IGZyYW1lTG9hZERlbGVnYXRlKEFkb3B0TlMsIFtbQ2FuY2VsTG9hZEZyb21SZXNv
dXJjZUxvYWREZWxlZ2F0ZUZyYW1lTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgUmV0
YWluUHRyPENhbmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGVGcmFtZUxvYWREZWxlZ2F0
ZT4gZnJhbWVMb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ2FuY2VsTG9hZEZyb21SZXNvdXJjZUxv
YWREZWxlZ2F0ZUZyYW1lTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgd2ViVmlldy5n
ZXQoKS5mcmFtZUxvYWREZWxlZ2F0ZSA9IGZyYW1lTG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAg
W1t3ZWJWaWV3LmdldCgpIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiQ2FuY2Vs
TG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRleHRNZW51Q2FuQ29weVVSTC5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRleHRNZW51Q2FuQ29weVVSTC5tbQppbmRleCA0
MGFjMzc3ZTFjZGQ5NjUwYjgxYmIxODUxZGMzNGVjMGI3OWQyYTdiLi5mNzk1MzVmNjRmODRlNmQ3
Yzk2YTNjZjRlODUyNjRhYWYxMDAwMTc0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9Db250ZXh0TWVudUNhbkNvcHlVUkwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvQ29udGV4dE1lbnVDYW5Db3B5VVJMLm1tCkBAIC04OCw5ICs4OCw5IEBA
IHN0YXRpYyB2b2lkIGNvbnRleHRNZW51Q29weUxpbmsoV2ViVmlldyogd2ViVmlldywgaW50IGl0
ZW1JbmRleCkKIAogVEVTVChXZWJLaXQxLCBDb250ZXh0TWVudUNhbkNvcHlVUkwpCiB7Ci0gICAg
UmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcoQWRvcHROUywgW1tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwwLDgwMCw2MDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1l
Om5pbF0pOwotICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93KEFkb3B0TlMsIFtbTlNXaW5k
b3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNNYWtlUmVjdCgxMDAsIDEwMCwgODAwLCA2
MDApIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3Rv
cmVCdWZmZXJlZCBkZWZlcjpZRVNdKTsKLSAgICBSZXRhaW5QdHI8Q29udGV4dE1lbnVDYW5Db3B5
VVJMRGVsZWdhdGU+IGRlbGVnYXRlKEFkb3B0TlMsIFtbQ29udGV4dE1lbnVDYW5Db3B5VVJMRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyA9IGFk
b3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwwLDgwMCw2
MDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOworICAgIFJldGFpblB0cjxOU1dpbmRv
dz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0
Ok5TTWFrZVJlY3QoMTAwLCAxMDAsIDgwMCwgNjAwKSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2lu
ZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXSk7CisgICAg
UmV0YWluUHRyPENvbnRleHRNZW51Q2FuQ29weVVSTERlbGVnYXRlPiBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tDb250ZXh0TWVudUNhbkNvcHlVUkxEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogCiAgICAg
W3dpbmRvdy5nZXQoKS5jb250ZW50VmlldyBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOwogICAg
IHdlYlZpZXcuZ2V0KCkuZnJhbWVMb2FkRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RPTUhUTUxUYWJsZUNlbGxDZWxs
QWJvdmUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9ET01IVE1MVGFibGVDZWxs
Q2VsbEFib3ZlLm1tCmluZGV4IGQ5YzI0YTczZjI4ZGEwZmUwNmU4YTM5MGJiZmM5YmQ3MTY3OTk3
MWUuLjJjOGNhMzk4NjU4ZTEyMDU2MjE5NDViMjA2OGFjMjZiZDBkNDY2ZWYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RPTUhUTUxUYWJsZUNlbGxDZWxsQWJvdmUu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRE9NSFRNTFRhYmxlQ2VsbENl
bGxBYm92ZS5tbQpAQCAtNTYsOCArNTYsOCBAQCBzdGF0aWMgdm9pZCBleHBlY3RDZWxsQWJvdmVD
ZWxsKERPTURvY3VtZW50ICpkb2N1bWVudCwgTlNTdHJpbmcgKmNlbGxJRCwgTlNTdHJpbgogCiBU
RVNUKFdlYktpdDEsIEhUTUxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlKQogewotICAgIFJldGFp
blB0cjxXZWJWaWV3PiB3ZWJWaWV3KEFkb3B0TlMsIFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpu
aWxdKTsKLSAgICBSZXRhaW5QdHI8SFRNTFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmVUZXN0PiB0
ZXN0Q29udHJvbGxlcihBZG9wdE5TLCBbSFRNTFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmVUZXN0
IG5ld10pOworICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVO
YW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CisgICAgUmV0YWluUHRyPEhUTUxUYWJsZUNlbGxFbGVt
ZW50Q2VsbEFib3ZlVGVzdD4gdGVzdENvbnRyb2xsZXIgPSBhZG9wdE5TKFtIVE1MVGFibGVDZWxs
RWxlbWVudENlbGxBYm92ZVRlc3QgbmV3XSk7CiAKICAgICB3ZWJWaWV3LmdldCgpLmZyYW1lTG9h
ZERlbGVnYXRlID0gdGVzdENvbnRyb2xsZXIuZ2V0KCk7CiAgICAgW1t3ZWJWaWV3LmdldCgpIG1h
aW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVu
ZGxlIG1haW5CdW5kbGVdCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9ET01SYW5nZU9mU3RyaW5nLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRE9N
UmFuZ2VPZlN0cmluZy5tbQppbmRleCAxZTgwODA1MzlkZmFjMzczNTdmNGVlOTI5ODI0NDkwZGFk
ZjgxZmViLi5hNDQ4NTE3OGQxNzNiZGU5YTg1YjU5YzkyNTA0MTljMWVkYTUzN2Q4IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9ET01SYW5nZU9mU3RyaW5nLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RPTVJhbmdlT2ZTdHJpbmcubW0KQEAg
LTQ4LDggKzQ4LDggQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFdlYktpdDEs
IERPTVJhbmdlT2ZTdHJpbmcpCiB7Ci0gICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcoQWRv
cHROUywgW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgZnJhbWVOYW1l
Om5pbCBncm91cE5hbWU6bmlsXSk7Ci0gICAgUmV0YWluUHRyPERPTVJhbmdlT2ZTdHJpbmdGcmFt
ZUxvYWREZWxlZ2F0ZT4gZnJhbWVMb2FkRGVsZWdhdGUoQWRvcHROUywgW0RPTVJhbmdlT2ZTdHJp
bmdGcmFtZUxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmll
dyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgZnJh
bWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CisgICAgUmV0YWluUHRyPERPTVJhbmdlT2ZTdHJp
bmdGcmFtZUxvYWREZWxlZ2F0ZT4gZnJhbWVMb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtET01SYW5n
ZU9mU3RyaW5nRnJhbWVMb2FkRGVsZWdhdGUgbmV3XSk7CiAKICAgICB3ZWJWaWV3LmdldCgpLmZy
YW1lTG9hZERlbGVnYXRlID0gZnJhbWVMb2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAgW1t3ZWJWaWV3
LmdldCgpIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiRE9NUmFuZ2VPZlN0cmlu
ZyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl1dXTsKQEAgLTc0LDcgKzc0LDcgQEAgVEVTVChXZWJLaXQxLCBET01SYW5nZU9mU3Ry
aW5nKQogICAgIHJlc3VsdFJhbmdlID0gW3dlYlZpZXcuZ2V0KCkgRE9NUmFuZ2VPZlN0cmluZzpA
Im4iIHJlbGF0aXZlVG86bmVlZGxlUmFuZ2Ugb3B0aW9uczpXZWJGaW5kT3B0aW9uc1N0YXJ0SW5T
ZWxlY3Rpb25dOwogICAgIEVYUEVDVF9FUSgyOCwgcmVzdWx0UmFuZ2Uuc3RhcnRPZmZzZXQpOwog
Ci0gICAgUmV0YWluUHRyPFdlYlZpZXc+IG90aGVyV2ViVmlldyhBZG9wdE5TLCBbW1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpu
aWxdKTsKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gb3RoZXJXZWJWaWV3ID0gYWRvcHROUyhbW1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFtZU5hbWU6bmlsIGdyb3Vw
TmFtZTpuaWxdKTsKICAgICBET01SYW5nZSAqZm9yZWlnblJhbmdlID0gW1tbb3RoZXJXZWJWaWV3
LmdldCgpIG1haW5GcmFtZV0gRE9NRG9jdW1lbnRdIGNyZWF0ZVJhbmdlXTsKICAgICByZXN1bHRS
YW5nZSA9IFt3ZWJWaWV3LmdldCgpIERPTVJhbmdlT2ZTdHJpbmc6QCJuZWVkbGUiIHJlbGF0aXZl
VG86Zm9yZWlnblJhbmdlIG9wdGlvbnM6MF07CiAgICAgRVhQRUNUX0VRKG5pbCwgcmVzdWx0UmFu
Z2UpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRGV2aWNlU2Nh
bGVGYWN0b3JJbkRhc2hib2FyZFJlZ2lvbnMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9EZXZpY2VTY2FsZUZhY3RvckluRGFzaGJvYXJkUmVnaW9ucy5tbQppbmRleCBmMjAzNTY0
MjlhNjBiNzc2YzRkMDBjYzFjNjU3MzIwODljZDc2NTkzLi42OGVjYmY4MTlkZTk3MGU1NWFhODgw
NzA5MDM2M2QzZmNiODQ5YjJjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9EZXZpY2VTY2FsZUZhY3RvckluRGFzaGJvYXJkUmVnaW9ucy5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9EZXZpY2VTY2FsZUZhY3RvckluRGFzaGJvYXJkUmVnaW9u
cy5tbQpAQCAtNTMsMTIgKzUzLDEyIEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIFRFU1Qo
V2ViS2l0MSwgRGV2aWNlU2NhbGVGYWN0b3JJbkRhc2hib2FyZFJlZ2lvbnMpCiB7CiAgICAgTlNS
ZWN0IHZpZXdGcmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApOwotICAgIFJldGFpblB0
cjxTeW50aGV0aWNCYWNraW5nU2NhbGVGYWN0b3JXaW5kb3c+IHdpbmRvdyhBZG9wdE5TLCBbW1N5
bnRoZXRpY0JhY2tpbmdTY2FsZUZhY3RvcldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVj
dDp2aWV3RnJhbWUgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0Jh
Y2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllFU10pOworICAgIFJldGFpblB0cjxTeW50aGV0aWNC
YWNraW5nU2NhbGVGYWN0b3JXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tTeW50aGV0aWNCYWNr
aW5nU2NhbGVGYWN0b3JXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6dmlld0ZyYW1l
IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVC
dWZmZXJlZCBkZWZlcjpZRVNdKTsKICAgICBbd2luZG93LmdldCgpIHNldFJlbGVhc2VkV2hlbkNs
b3NlZDpOT107CiAgICAgW3dpbmRvdy5nZXQoKSBzZXRCYWNraW5nU2NhbGVGYWN0b3I6Ml07CiAK
LSAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyhBZG9wdE5TLCBbW1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6dmlld0ZyYW1lIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwot
ICAgIFJldGFpblB0cjxEZXZpY2VTY2FsZUZhY3RvckluRGFzaGJvYXJkUmVnaW9uc1VJRGVsZWdh
dGU+IHVpRGVsZWdhdGUoQWRvcHROUywgW0RldmljZVNjYWxlRmFjdG9ySW5EYXNoYm9hcmRSZWdp
b25zVUlEZWxlZ2F0ZSBuZXddKTsKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyA9IGFk
b3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnZpZXdGcmFtZSBmcmFtZU5hbWU6
bmlsIGdyb3VwTmFtZTpuaWxdKTsKKyAgICBSZXRhaW5QdHI8RGV2aWNlU2NhbGVGYWN0b3JJbkRh
c2hib2FyZFJlZ2lvbnNVSURlbGVnYXRlPiB1aURlbGVnYXRlID0gYWRvcHROUyhbRGV2aWNlU2Nh
bGVGYWN0b3JJbkRhc2hib2FyZFJlZ2lvbnNVSURlbGVnYXRlIG5ld10pOwogICAgIHdlYlZpZXcu
Z2V0KCkuVUlEZWxlZ2F0ZSA9IHVpRGVsZWdhdGUuZ2V0KCk7CiAgICAgW3dpbmRvdy5nZXQoKS5j
b250ZW50VmlldyBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOwogCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9EZXZpY2VTY2FsZUZhY3Rvck9uQmFjay5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RldmljZVNjYWxlRmFjdG9yT25CYWNrLm1tCmlu
ZGV4IDE1NGI4YzMyYzBkMDYwZDZjZWRiNzQxNTYwZTJkZWVjZTcxMzA0MzcuLjhjNDU0MjgyYWEz
YWM2MTgwOTMwZGVlOTEzMDk1MTE0N2YxMDk0OTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL0RldmljZVNjYWxlRmFjdG9yT25CYWNrLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RldmljZVNjYWxlRmFjdG9yT25CYWNrLm1tCkBAIC01MCw3
ICs1MCw3IEBAIHB1YmxpYzoKIAogUmV0YWluUHRyPFN5bnRoZXRpY0JhY2tpbmdTY2FsZUZhY3Rv
cldpbmRvdz4gRGV2aWNlU2NhbGVGYWN0b3JPbkJhY2s6OmNyZWF0ZVdpbmRvdygpCiB7Ci0gICAg
UmV0YWluUHRyPFN5bnRoZXRpY0JhY2tpbmdTY2FsZUZhY3RvcldpbmRvdz4gd2luZG93KEFkb3B0
TlMsIFtbU3ludGhldGljQmFja2luZ1NjYWxlRmFjdG9yV2luZG93IGFsbG9jXSBpbml0V2l0aENv
bnRlbnRSZWN0OnZpZXdGcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNr
aW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXSk7CisgICAgUmV0YWluUHRyPFN5
bnRoZXRpY0JhY2tpbmdTY2FsZUZhY3RvcldpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW1N5bnRo
ZXRpY0JhY2tpbmdTY2FsZUZhY3RvcldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDp2
aWV3RnJhbWUgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tp
bmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllFU10pOwogICAgIFt3aW5kb3cuZ2V0KCkgc2V0UmVsZWFz
ZWRXaGVuQ2xvc2VkOk5PXTsKICAgICByZXR1cm4gd2luZG93OwogfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRHluYW1pY0RldmljZVNjYWxlRmFjdG9yLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRHluYW1pY0RldmljZVNjYWxlRmFjdG9yLm1t
CmluZGV4IGQwZWJkNTE3N2M4NWQ2MmVlYmMxNDc2NjI2ZWY4YzA4MmJiMGUxZjQuLjYxYTFlZmVk
Nzk3MzNjNTgyMjEwOTRmNjUyYmFmMzU2NzI1MTM0ZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL0R5bmFtaWNEZXZpY2VTY2FsZUZhY3Rvci5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9EeW5hbWljRGV2aWNlU2NhbGVGYWN0b3IubW0KQEAg
LTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiBSZXRhaW5QdHI8U3ludGhldGljQmFja2luZ1NjYWxl
RmFjdG9yV2luZG93PiBEeW5hbWljRGV2aWNlU2NhbGVGYWN0b3I6OmNyZWF0ZVdpbmRvdygpCiB7
Ci0gICAgUmV0YWluUHRyPFN5bnRoZXRpY0JhY2tpbmdTY2FsZUZhY3RvcldpbmRvdz4gd2luZG93
KEFkb3B0TlMsIFtbU3ludGhldGljQmFja2luZ1NjYWxlRmFjdG9yV2luZG93IGFsbG9jXSBpbml0
V2l0aENvbnRlbnRSZWN0OnZpZXdGcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFz
ayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXSk7CisgICAgUmV0YWlu
UHRyPFN5bnRoZXRpY0JhY2tpbmdTY2FsZUZhY3RvcldpbmRvdz4gd2luZG93ID0gYWRvcHROUyhb
W1N5bnRoZXRpY0JhY2tpbmdTY2FsZUZhY3RvcldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50
UmVjdDp2aWV3RnJhbWUgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpO
U0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllFU10pOwogICAgIFt3aW5kb3cuZ2V0KCkgc2V0
UmVsZWFzZWRXaGVuQ2xvc2VkOk5PXTsKICAgICByZXR1cm4gd2luZG93OwogfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0u
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9IVE1MQ29sbGVjdGlvbk5hbWVkSXRl
bS5tbQppbmRleCA1MGFhZmVlYmFkODZjZjI4MmZkMTU4NGQyYTgyYjgzNjI2MTFmOThjLi42MmNi
Nzk3NTE0NTE4YTZmMWIyYzc5YTM4MTYwMWJhMzU4NDRlYTE1IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9IVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9IVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5tbQpA
QCAtNTAsOCArNTAsOCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoV2ViS2l0
MSwgSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW1UZXN0KQogewotICAgIFJldGFpblB0cjxXZWJWaWV3
PiB3ZWJWaWV3KEFkb3B0TlMsIFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKLSAgICBS
ZXRhaW5QdHI8SFRNTENvbGxlY3Rpb25OYW1lZEl0ZW1UZXN0PiB0ZXN0Q29udHJvbGxlcihBZG9w
dE5TLCBbSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW1UZXN0IG5ld10pOworICAgIFJldGFpblB0cjxX
ZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7
CisgICAgUmV0YWluUHRyPEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtVGVzdD4gdGVzdENvbnRyb2xs
ZXIgPSBhZG9wdE5TKFtIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbVRlc3QgbmV3XSk7CiAKICAgICB3
ZWJWaWV3LmdldCgpLmZyYW1lTG9hZERlbGVnYXRlID0gdGVzdENvbnRyb2xsZXIuZ2V0KCk7CiAg
ICAgW1t3ZWJWaWV3LmdldCgpIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9IVE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW0ubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9IVE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW0u
bW0KaW5kZXggY2YyZGEyZGZiYWJhZjU4NWZkZjQ3NWM5ZTM5NmFmNTM2YjMzOTMzMi4uYTcxNmFi
OTJmODNiYzI5ZjUyNzBlZWViYzc4NGY5Y2IyNTVkYzI4MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0hUTUxGb3JtQ29sbGVjdGlvbk5hbWVkSXRl
bS5tbQpAQCAtNTAsOCArNTAsOCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1Qo
V2ViS2l0MSwgSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtVGVzdCkKIHsKLSAgICBSZXRhaW5Q
dHI8V2ViVmlldz4gd2ViVmlldyhBZG9wdE5TLCBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmls
XSk7Ci0gICAgUmV0YWluUHRyPEhUTUxGb3JtQ29sbGVjdGlvbk5hbWVkSXRlbVRlc3Q+IHRlc3RD
b250cm9sbGVyKEFkb3B0TlMsIFtIVE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW1UZXN0IG5ld10p
OworICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5p
bCBncm91cE5hbWU6bmlsXSk7CisgICAgUmV0YWluUHRyPEhUTUxGb3JtQ29sbGVjdGlvbk5hbWVk
SXRlbVRlc3Q+IHRlc3RDb250cm9sbGVyID0gYWRvcHROUyhbSFRNTEZvcm1Db2xsZWN0aW9uTmFt
ZWRJdGVtVGVzdCBuZXddKTsKIAogICAgIHdlYlZpZXcuZ2V0KCkuZnJhbWVMb2FkRGVsZWdhdGUg
PSB0ZXN0Q29udHJvbGxlci5nZXQoKTsKICAgICBbW3dlYlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0luc3BlY3Rv
ckJhci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0luc3BlY3RvckJhci5tbQpp
bmRleCAwYTUxZTJmYjQ1MWNiNzBhYzFlOTQwMjViMTY1ZjM2YTgwNTgzNTk4Li41ZjIyMDViZThm
YWE0ZGNlMDk4NjRiOTI2ZThiZWEwYTJlZTNiYjA5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9JbnNwZWN0b3JCYXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvSW5zcGVjdG9yQmFyLm1tCkBAIC01Miw4ICs1Miw4IEBAIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIAogVEVTVChXZWJLaXQxLCBJbnNwZWN0b3JCYXJUZXN0KQogewotICAg
IFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3KEFkb3B0TlMsIFtbV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3Vw
TmFtZTpuaWxdKTsKLSAgICBSZXRhaW5QdHI8SW5zcGVjdG9yQmFyQ29udHJvbGxlcj4gaW5zcGVj
dG9yQmFyQ29udHJvbGxlcihBZG9wdE5TLCBbSW5zcGVjdG9yQmFyQ29udHJvbGxlciBuZXddKTsK
KyAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwg
Z3JvdXBOYW1lOm5pbF0pOworICAgIFJldGFpblB0cjxJbnNwZWN0b3JCYXJDb250cm9sbGVyPiBp
bnNwZWN0b3JCYXJDb250cm9sbGVyID0gYWRvcHROUyhbSW5zcGVjdG9yQmFyQ29udHJvbGxlciBu
ZXddKTsKIAogICAgIHdlYlZpZXcuZ2V0KCkuZnJhbWVMb2FkRGVsZWdhdGUgPSBpbnNwZWN0b3JC
YXJDb250cm9sbGVyLmdldCgpOwogICAgIFt3ZWJWaWV3LmdldCgpLm1haW5GcmFtZSBsb2FkSFRN
TFN0cmluZzpAIjxib2R5IGNvbnRlbnRlZGl0YWJsZSBzdHlsZT1cImNvbG9yOiBncmVlblwiPjx1
PkxvcmVtIGlwc3VtIHNpdCBhbWV0PC91PjwvYm9keT4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJhYm91dDpibGFuayJdXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL01lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGlu
UmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KaW5kZXggYWViOTU1NTA4ZjAyZTE3NWVmMTE2Y2E4YjJh
N2MwNTZlNzFiYWVjZC4uZTJlY2RlYWM0NmUyM2ViY2E0YWNlMWFhZWFkY2Q5ZDRjZDU2ZGJlYSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVEaXNh
YmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUu
bW0KQEAgLTc0LDkgKzc0LDkgQEAgVEVTVChXZWJLaXQxLCBNZW1vcnlDYWNoZURpc2FibGVXaXRo
aW5SZXNvdXJjZUxvYWREZWxlZ2F0ZSkKIHsKICAgICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9
IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwogCi0gICAgUmV0YWluUHRyPFdlYlZp
ZXc+IHdlYlZpZXcoQWRvcHROUywgW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOworICAg
IFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91
cE5hbWU6bmlsXSk7CiAKLSAgICBSZXRhaW5QdHI8TWVtb3J5Q2FjaGVEaXNhYmxlVGVzdFJlc291
cmNlTG9hZERlbGVnYXRlPiByZXNvdXJjZUxvYWREZWxlZ2F0ZShBZG9wdE5TLCBbW01lbW9yeUNh
Y2hlRGlzYWJsZVRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFJl
dGFpblB0cjxNZW1vcnlDYWNoZURpc2FibGVUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGU+IHJlc291
cmNlTG9hZERlbGVnYXRlID0gYWRvcHROUyhbW01lbW9yeUNhY2hlRGlzYWJsZVRlc3RSZXNvdXJj
ZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIHdlYlZpZXcuZ2V0KCkucmVzb3VyY2VM
b2FkRGVsZWdhdGUgPSByZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQoKTsKIAogICAgIFtbd2ViVmll
dy5nZXQoKSBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIk1lbW9yeUNhY2hlRGlz
YWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNl
TG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2Fj
aGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tCmluZGV4IGNmM2QzMTFkYTdmNDkw
ODRkZDIxMGY5MTAyNDQ2ZDA0YWZmN2ExYmUuLjIxMjgyMGUwYTQ1ODhhN2YyODg1NGRhMGYxN2E5
OGU5MzFiMjdhMzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01l
bW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2Fk
RGVsZWdhdGUubW0KQEAgLTc5LDEzICs3OSwxMyBAQCBURVNUKFdlYktpdDEsIERJU0FCTEVEX01l
bW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZSkKIHsKICAgICBOU0F1dG9y
ZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwogCi0g
ICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcxKEFkb3B0TlMsIFtbV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdy
b3VwTmFtZTpuaWxdKTsKLSAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldzIoQWRvcHROUywg
W1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDAp
IGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOworICAgIFJldGFpblB0cjxXZWJWaWV3PiB3
ZWJWaWV3MSA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOworICAgIFJl
dGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBO
YW1lOm5pbF0pOwogCiAgICAgTlNXaW5kb3cqIHdpbmRvdyA9IFtbTlNXaW5kb3cgYWxsb2NdIGlu
aXRXaXRoQ29udGVudFJlY3Q6d2ViVmlldzIuZ2V0KCkuZnJhbWUgc3R5bGVNYXNrOk5TQm9yZGVy
bGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllFU107
CiAgICAgW3dpbmRvdy5jb250ZW50VmlldyBhZGRTdWJ2aWV3OndlYlZpZXcyLmdldCgpXTsKIAot
ICAgIFJldGFpblB0cjxNZW1vcnlDYWNoZVBydW5lVGVzdFJlc291cmNlTG9hZERlbGVnYXRlPiBy
ZXNvdXJjZUxvYWREZWxlZ2F0ZShBZG9wdE5TLCBbW01lbW9yeUNhY2hlUHJ1bmVUZXN0UmVzb3Vy
Y2VMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8TWVtb3J5Q2FjaGVQ
cnVuZVRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZT4gcmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBhZG9w
dE5TKFtbTWVtb3J5Q2FjaGVQcnVuZVRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOwogICAgIHJlc291cmNlTG9hZERlbGVnYXRlLmdldCgpLT5fd2luZG93ID0gd2luZG93Owog
ICAgIHdlYlZpZXcxLmdldCgpLnJlc291cmNlTG9hZERlbGVnYXRlID0gcmVzb3VyY2VMb2FkRGVs
ZWdhdGUuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L1BhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL1BhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbQpp
bmRleCBjZWMxMzhjYjc3YmM0NmU0ZDRlOTA5N2JjZWUwNTRkZjI5NGY5ZmJkLi5mMDhkM2I3Mjkz
NWRjMTQxMzEzOGY3Yzg1NDI3NGQ3NzNhNTA0NDI3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9QYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvUGFnZVZpc2liaWxpdHlTdGF0ZVdp
dGhXaW5kb3dDaGFuZ2VzLm1tCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYWdlVmlzaWJpbGl0
eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXM6OnJ1blRlc3QoVmlldyB2aWV3KQogICAgIEVYUEVDVF9K
U19FUSh2aWV3LCAiZG9jdW1lbnQud2Via2l0VmlzaWJpbGl0eVN0YXRlIiwgImhpZGRlbiIpOwog
CiAgICAgLy8gQWRkIGl0IHRvIGEgbm9uLXZpc2libGUgd2luZG93LiBQYWdlVmlzaWJpbGl0eSBz
aG91bGQgc3RpbGwgYmUgImhpZGRlbiIuCi0gICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3co
QWRvcHROUywgW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDp2aWV3LmZyYW1l
IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVC
dWZmZXJlZCBkZWZlcjpOT10pOworICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRv
cHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OnZpZXcuZnJhbWUgc3R5
bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZl
cmVkIGRlZmVyOk5PXSk7CiAgICAgW3dpbmRvdy5nZXQoKS5jb250ZW50VmlldyBhZGRTdWJ2aWV3
OnZpZXddOwogICAgIEVYUEVDVF9OT1RfTlVMTChbdmlldyB3aW5kb3ddKTsKICAgICBFWFBFQ1Rf
Tk9UX05VTEwoW3ZpZXcgc3VwZXJ2aWV3XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL21hYy9SZW5kZXJlZEltYWdlRnJvbURPTVJhbmdlLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9tYWMvUmVuZGVyZWRJbWFnZUZyb21ET01SYW5nZS5tbQppbmRleCA1YWQ0
M2JkMjVjYmUwZDNhZTI1YmMzZDMyNzViYzU1MTEwOTJhY2IyLi5iYzNhMTFkYjM3YzEwMjNlM2Fm
Yzg5MjMwZWVkNTYxN2Q3MDFlZmUyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9SZW5kZXJlZEltYWdlRnJvbURPTVJhbmdlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL1JlbmRlcmVkSW1hZ2VGcm9tRE9NUmFuZ2UubW0KQEAgLTQ4LDggKzQ4
LDggQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFdlYktpdDEsIFJlbmRlcmVk
SW1hZ2VGcm9tRE9NUmFuZ2UpCiB7Ci0gICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcoQWRv
cHROUywgW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIw
LCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwotICAgIFJldGFpblB0cjxSZW5k
ZXJlZEltYWdlRnJvbURPTVJhbmdlRnJhbWVMb2FkRGVsZWdhdGU+IGZyYW1lTG9hZERlbGVnYXRl
KEFkb3B0TlMsIFtSZW5kZXJlZEltYWdlRnJvbURPTVJhbmdlRnJhbWVMb2FkRGVsZWdhdGUgbmV3
XSk7CisgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6
bmlsIGdyb3VwTmFtZTpuaWxdKTsKKyAgICBSZXRhaW5QdHI8UmVuZGVyZWRJbWFnZUZyb21ET01S
YW5nZUZyYW1lTG9hZERlbGVnYXRlPiBmcmFtZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1JlbmRl
cmVkSW1hZ2VGcm9tRE9NUmFuZ2VGcmFtZUxvYWREZWxlZ2F0ZSBuZXddKTsKIAogICAgIHdlYlZp
ZXcuZ2V0KCkuZnJhbWVMb2FkRGVsZWdhdGUgPSBmcmFtZUxvYWREZWxlZ2F0ZS5nZXQoKTsKICAg
ICBbd2ViVmlldy5nZXQoKS5tYWluRnJhbWUgbG9hZEhUTUxTdHJpbmc6QCI8ZGl2IHN0eWxlPVwi
d2lkdGg6IDEwMHB4O1wiPkxvcmVtIDxzcGFuIGlkPVwidGFyZ2V0XCI+aXBzdW0gZG9sb3I8L3Nw
YW4+IHNpdCBhbWV0PC9kaXY+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6
YmxhbmsiXV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TZXRB
bmRVcGRhdGVDYWNoZU1vZGVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU2V0
QW5kVXBkYXRlQ2FjaGVNb2RlbC5tbQppbmRleCBlZWQxZjgxODBkMTYwNzNlN2VhMzBiMDRkYTBl
OWQzZDI2ZDAxMGY1Li4wMDM3NTUyMzViOWFlZmE0ZWRhMGM1MjA2OTEwZTY5OTEwMDZhMWMyIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TZXRBbmRVcGRhdGVDYWNo
ZU1vZGVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1NldEFuZFVwZGF0
ZUNhY2hlTW9kZWwubW0KQEAgLTM5LDcgKzM5LDcgQEAgVEVTVChXZWJLaXQxLCBTZXRBbmRVcGRh
dGVDYWNoZU1vZGVsSW5pdGlhbE1vZGVsKQogewogICAgIEVYUEVDVF9FUSgoaW50KVdlYkNhY2hl
TW9kZWxEb2N1bWVudFZpZXdlciwgKGludClbV2ViVmlldyBfY2FjaGVNb2RlbF0pOwogCi0gICAg
UmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcoQWRvcHROUywgW1tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBO
YW1lOm5pbF0pOworICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJh
bWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CiAKICAgICBFWFBFQ1RfRVEoKGludClXZWJDYWNo
ZU1vZGVsRG9jdW1lbnRCcm93c2VyLCAoaW50KVtXZWJWaWV3IF9jYWNoZU1vZGVsXSk7CiB9CkBA
IC02NCw3ICs2NCw3IEBAIFRFU1QoV2ViS2l0MSwgU2V0QW5kVXBkYXRlQ2FjaGVNb2RlbFByZWZl
cmVuY2VzQ2hhbmdlTWl4KQogICAgIEVYUEVDVF9FUSgoaW50KVdlYkNhY2hlTW9kZWxEb2N1bWVu
dFZpZXdlciwgKGludClbV2ViVmlldyBfY2FjaGVNb2RlbF0pOwogCiAgICAgV2ViUHJlZmVyZW5j
ZXMgKnN0YW5kYXJkUHJlZmVyZW5jZXMgPSBbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJl
bmNlc107Ci0gICAgUmV0YWluUHRyPFdlYlByZWZlcmVuY2VzPiBjdXN0b21QcmVmZXJlbmNlcyhB
ZG9wdE5TLCBbW1dlYlByZWZlcmVuY2VzIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJTZXRB
bmRVcGRhdGVDYWNoZU1vZGVsUHJlZmVyZW5jZXNDaGFuZ2VNaXgiXSk7CisgICAgUmV0YWluUHRy
PFdlYlByZWZlcmVuY2VzPiBjdXN0b21QcmVmZXJlbmNlcyA9IGFkb3B0TlMoW1tXZWJQcmVmZXJl
bmNlcyBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAiU2V0QW5kVXBkYXRlQ2FjaGVNb2RlbFBy
ZWZlcmVuY2VzQ2hhbmdlTWl4Il0pOwogCiAgICAgLy8gMSkgVGhlIGN1c3RvbVByZWZlcmVuY2Vz
IGlzIG5vdCBzZXQgb24gYSB2aWV3LgogICAgIEVYUEVDVF9FUSgoaW50KVdlYkNhY2hlTW9kZWxE
b2N1bWVudEJyb3dzZXIsIChpbnQpW1dlYlZpZXcgX2NhY2hlTW9kZWxdKTsKQEAgLTc5LDcgKzc5
LDcgQEAgVEVTVChXZWJLaXQxLCBTZXRBbmRVcGRhdGVDYWNoZU1vZGVsUHJlZmVyZW5jZXNDaGFu
Z2VNaXgpCiAKIAogICAgIC8vIDIpIFRoZSBjYWNoZSBtb2RlbCBzaG91bGQgZm9sbG93IHRoZSBo
aWdoZXN0IHZhbHVlIG9mIGNhY2hlIG1vZGVsIGJldHdlZW4gdGhlIHR3byBwcmVmZXJlbmNlcy4K
LSAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyhBZG9wdE5TLCBbW1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBn
cm91cE5hbWU6bmlsXSk7CisgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5T
KFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAw
KSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKICAgICBbd2ViVmlldy5nZXQoKSBzZXRQ
cmVmZXJlbmNlczpjdXN0b21QcmVmZXJlbmNlcy5nZXQoKV07CiAgICAgRVhQRUNUX0VRKChpbnQp
V2ViQ2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyLCAoaW50KVtXZWJWaWV3IF9jYWNoZU1vZGVs
XSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1NldERvY3Vt
ZW50VVJJLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU2V0RG9jdW1lbnRVUkku
bW0KaW5kZXggZjA3N2VkOTViMGExNjhiM2NjZjE5MDJkMjVhYmYwNTljZWE0NmVjZi4uNDRlY2Mz
ZTliMzUwMDQ0N2Q1MTg2ZTgyNzliNGRjZWViZDZiNDViYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvU2V0RG9jdW1lbnRVUkkubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9tYWMvU2V0RG9jdW1lbnRVUkkubW0KQEAgLTQ5LDggKzQ5LDggQEAgbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFdlYktpdDEsIFNldERvY3VtZW50VVJJVGVz
dEZpbGUpCiB7Ci0gICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcoQWRvcHROUywgW1tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1l
TmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwotICAgIFJldGFpblB0cjxTZXREb2N1bWVudFVSSVRl
c3Q+IHRlc3RDb250cm9sbGVyKEFkb3B0TlMsIFtTZXREb2N1bWVudFVSSVRlc3QgbmV3XSk7Cisg
ICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdy
b3VwTmFtZTpuaWxdKTsKKyAgICBSZXRhaW5QdHI8U2V0RG9jdW1lbnRVUklUZXN0PiB0ZXN0Q29u
dHJvbGxlciA9IGFkb3B0TlMoW1NldERvY3VtZW50VVJJVGVzdCBuZXddKTsKICAgICB3ZWJWaWV3
LmdldCgpLmZyYW1lTG9hZERlbGVnYXRlID0gdGVzdENvbnRyb2xsZXIuZ2V0KCk7CiAgICAgW1t3
ZWJWaWV3LmdldCgpIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiU2V0RG9jdW1l
bnRVUkkiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdXV07CiAgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKQEAgLTY2LDgg
KzY2LDggQEAgVEVTVChXZWJLaXQxLCBTZXREb2N1bWVudFVSSVRlc3RGaWxlKQogCiBURVNUKFdl
YktpdDEsIFNldERvY3VtZW50VVJJVGVzdFVSTCkKIHsKLSAgICBSZXRhaW5QdHI8V2ViVmlldz4g
d2ViVmlldyhBZG9wdE5TLCBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7Ci0gICAgUmV0
YWluUHRyPFNldERvY3VtZW50VVJJVGVzdD4gdGVzdENvbnRyb2xsZXIoQWRvcHROUywgW1NldERv
Y3VtZW50VVJJVGVzdCBuZXddKTsKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyA9IGFk
b3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIw
LCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOworICAgIFJldGFpblB0cjxTZXRE
b2N1bWVudFVSSVRlc3Q+IHRlc3RDb250cm9sbGVyID0gYWRvcHROUyhbU2V0RG9jdW1lbnRVUklU
ZXN0IG5ld10pOwogICAgIHdlYlZpZXcuZ2V0KCkuZnJhbWVMb2FkRGVsZWdhdGUgPSB0ZXN0Q29u
dHJvbGxlci5nZXQoKTsKICAgICBbW3dlYlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBsb2FkUmVxdWVz
dDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJTZXREb2N1bWVudFVSSSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKICAgICBVdGlsOjpydW4oJmRp
ZEZpbmlzaExvYWQpOwpAQCAtODYsOCArODYsOCBAQCBURVNUKFdlYktpdDEsIFNldERvY3VtZW50
VVJJVGVzdFVSTCkKIAogVEVTVChXZWJLaXQxLCBTZXREb2N1bWVudFVSSVRlc3RTdHJpbmcpCiB7
Ci0gICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcoQWRvcHROUywgW1tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwg
Z3JvdXBOYW1lOm5pbF0pOwotICAgIFJldGFpblB0cjxTZXREb2N1bWVudFVSSVRlc3Q+IHRlc3RD
b250cm9sbGVyKEFkb3B0TlMsIFtTZXREb2N1bWVudFVSSVRlc3QgbmV3XSk7CisgICAgUmV0YWlu
UHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpu
aWxdKTsKKyAgICBSZXRhaW5QdHI8U2V0RG9jdW1lbnRVUklUZXN0PiB0ZXN0Q29udHJvbGxlciA9
IGFkb3B0TlMoW1NldERvY3VtZW50VVJJVGVzdCBuZXddKTsKICAgICB3ZWJWaWV3LmdldCgpLmZy
YW1lTG9hZERlbGVnYXRlID0gdGVzdENvbnRyb2xsZXIuZ2V0KCk7CiAgICAgW1t3ZWJWaWV3Lmdl
dCgpIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiU2V0RG9jdW1lbnRVUkkiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdXV07CiAgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKQEAgLTEwMyw4ICsxMDMsOCBA
QCBURVNUKFdlYktpdDEsIFNldERvY3VtZW50VVJJVGVzdFN0cmluZykKIAogVEVTVChXZWJLaXQx
LCBTZXREb2N1bWVudFVSSVRlc3ROdWxsKQogewotICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJW
aWV3KEFkb3B0TlMsIFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKLSAgICBSZXRhaW5Q
dHI8U2V0RG9jdW1lbnRVUklUZXN0PiB0ZXN0Q29udHJvbGxlcihBZG9wdE5TLCBbU2V0RG9jdW1l
bnRVUklUZXN0IG5ld10pOworICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIw
MCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CisgICAgUmV0YWluUHRyPFNldERvY3Vt
ZW50VVJJVGVzdD4gdGVzdENvbnRyb2xsZXIgPSBhZG9wdE5TKFtTZXREb2N1bWVudFVSSVRlc3Qg
bmV3XSk7CiAgICAgd2ViVmlldy5nZXQoKS5mcmFtZUxvYWREZWxlZ2F0ZSA9IHRlc3RDb250cm9s
bGVyLmdldCgpOwogICAgIFtbd2ViVmlldy5nZXQoKSBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAIlNldERvY3VtZW50VVJJIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwogICAgIFV0aWw6OnJ1bigmZGlkRmlu
aXNoTG9hZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TaW1w
bGlmeU1hcmt1cC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1NpbXBsaWZ5TWFy
a3VwLm1tCmluZGV4IDcwZWM0N2Q1N2M3YmIzNTllMjczOTlmYzE1ODc3ZGYzZDdjOGM3NDUuLjlk
NDQzYWQwNDVmZmVlMGM4MzM4NmM3OTVhMjUwZDkyZTljN2U3YTQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1NpbXBsaWZ5TWFya3VwLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL1NpbXBsaWZ5TWFya3VwLm1tCkBAIC00OSw5ICs0OSw5IEBA
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChXZWJLaXQxLCBTaW1wbGlmeU1hcmt1
cFRlc3QpCiB7Ci0gICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcxKEFkb3B0TlMsIFtbV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFt
ZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKLSAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmll
dzIoQWRvcHROUywgW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwotICAgIFJldGFpblB0
cjxTaW1wbGlmeU1hcmt1cFRlc3Q+IHRlc3RDb250cm9sbGVyKEFkb3B0TlMsIFtTaW1wbGlmeU1h
cmt1cFRlc3QgbmV3XSk7CisgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcxID0gYWRvcHRO
UyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIw
MCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CisgICAgUmV0YWluUHRyPFdlYlZpZXc+
IHdlYlZpZXcyID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CisgICAg
UmV0YWluUHRyPFNpbXBsaWZ5TWFya3VwVGVzdD4gdGVzdENvbnRyb2xsZXIgPSBhZG9wdE5TKFtT
aW1wbGlmeU1hcmt1cFRlc3QgbmV3XSk7CiAgICAgCiAgICAgd2ViVmlldzEuZ2V0KCkuZnJhbWVM
b2FkRGVsZWdhdGUgPSB0ZXN0Q29udHJvbGxlci5nZXQoKTsKICAgICBbW3dlYlZpZXcxLmdldCgp
IG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidmVyYm9zZU1hcmt1cCIgd2l0aEV4
dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1d
XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1N0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvU3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmcubW0KaW5kZXggNGUz
ZTNlYzc1MDcwZjE3ZDRhNDQ4NDExNDIwN2UzOTg5ODcxMTljNS4uMjYwYTVhNTNlNzRlZTgwNzI1
NjcxYTBhZjlhZTE3MTAwMjUzNTczMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvU3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmcubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dEZyb21TdHJpbmcubW0KQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogVEVTVChXZWJLaXQxLCBTdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZykK
IHsKICAgICAvLyBtYXBzIGV4cGVjdGVkIHJlc3VsdCA8PSBKYXZhU2NyaXB0IGV4cHJlc3Npb24K
LSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBleHByZXNzaW9ucyhBZG9wdE5TLCBbW05TRGlj
dGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKKyAgICBSZXRhaW5QdHI8TlNE
aWN0aW9uYXJ5PiBleHByZXNzaW9ucyA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0c0FuZEtleXM6CiAgICAgICAgIEAiMCIsIEAiMCIsCiAgICAgICAgIEAiMCIs
IEAiJzAnIiwKICAgICAgICAgQCIiLCBAIiIsCkBAIC01Myw3ICs1Myw3IEBAIFRFU1QoV2ViS2l0
MSwgU3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmcpCiAgICAgICAgIG5pbAog
ICAgIF0pOwogCi0gICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcgKEFkb3B0TlMsIFtbV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGZyYW1lTmFtZTpAIiIgZ3JvdXBO
YW1lOkAiIl0pOworICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3ICA9IGFkb3B0TlMoW1tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgZnJhbWVOYW1lOkAiIiBncm91
cE5hbWU6QCIiXSk7CiAKICAgICAvLyBUZXN0IGEgbmlsIHN0cmluZwogICAgIE5TU3RyaW5nICpy
ZXN1bHQgPSBbd2ViVmlldy5nZXQoKSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0
cmluZzpuaWxdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ls
bFNlbmRTdWJtaXRFdmVudC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dpbGxT
ZW5kU3VibWl0RXZlbnQubW0KaW5kZXggNzU0NTk0MWM1YTlmMzIzMDlmODMwYmU5NjZmODNmNzA2
OGQzMGU3ZS4uMTY1NGY5Y2E4MDM5MDRmOWIwOTY0NTY5MmE5NzA4ZmIyZmQyYWUwMiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2lsbFNlbmRTdWJtaXRFdmVudC5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XaWxsU2VuZFN1Ym1pdEV2ZW50
Lm1tCkBAIC02MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIFRFU1QoV2Vi
S2l0MSwgV2lsbFNlbmRTdWJtaXRFdmVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAg
ICAgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcoQWRvcHROUywgW1tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwg
Z3JvdXBOYW1lOm5pbF0pOworICAgICAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyA9IGFk
b3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIw
LCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwogCiAgICAgICAgIFJldGFpblB0
cjxGb3JtRGVsZWdhdGU+IGZvcm1EZWxlZ2F0ZSA9IFtbRm9ybURlbGVnYXRlIGFsbG9jXSBpbml0
XTsKICAgICAgICAgW3dlYlZpZXcgX3NldEZvcm1EZWxlZ2F0ZTpmb3JtRGVsZWdhdGUuZ2V0KCld
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2luZG93bGVzc1dl
YlZpZXdXaXRoTWVkaWEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XaW5kb3ds
ZXNzV2ViVmlld1dpdGhNZWRpYS5tbQppbmRleCBiZjU5M2U2ZWYwNzkwMjJlMWQ0OGI5OGNkMTdm
OWI1MDJjYjk2YjVlLi45MjI1NzgzYWI2MGExMjQxOTA5ZmQ5MDJjYTBkN2U5MzNjMWExOTY4IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XaW5kb3dsZXNzV2ViVmll
d1dpdGhNZWRpYS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XaW5kb3ds
ZXNzV2ViVmlld1dpdGhNZWRpYS5tbQpAQCAtNjUsOCArNjUsOCBAQCBURVNUKFdlYktpdDEsIFdp
bmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhKQogewogICAgIE5TQXV0b3JlbGVhc2VQb29sICpwb29s
ID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CiAKLSAgICBSZXRhaW5QdHI8V2Vi
Vmlldz4gd2ViVmlldyhBZG9wdE5TLCBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7Ci0g
ICAgUmV0YWluUHRyPFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhRnJhbWVMb2FkRGVsZWdhdGU+
IHRlc3RDb250cm9sbGVyKEFkb3B0TlMsIFtXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYUZyYW1l
TG9hZERlbGVnYXRlIG5ld10pOworICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAs
IDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CisgICAgUmV0YWluUHRyPFdpbmRv
d2xlc3NXZWJWaWV3V2l0aE1lZGlhRnJhbWVMb2FkRGVsZWdhdGU+IHRlc3RDb250cm9sbGVyID0g
YWRvcHROUyhbV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWFGcmFtZUxvYWREZWxlZ2F0ZSBuZXdd
KTsKICAgICB3ZWJWaWV3LmdldCgpLmZyYW1lTG9hZERlbGVnYXRlID0gdGVzdENvbnRyb2xsZXIu
Z2V0KCk7CiAgICAgW1t3ZWJWaWV3LmdldCgpIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAiV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEiIHdpdGhFeHRlbnNpb246QCJodG1sIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1BsYXRmb3JtVXRpbGl0aWVzTWFjLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9tYWMvUGxhdGZvcm1VdGlsaXRpZXNNYWMubW0KaW5kZXggOTc5ZjRjZDIy
NDRlOTMwZWI2YTg0ODY2YzE5Mjc4NDljZWVmNTI3NC4uMWU3M2FkYmIzODEwM2IxNGJhMzBkMWMx
ODBhZWUyZDliNjNjZGZkMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvUGxh
dGZvcm1VdGlsaXRpZXNNYWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvUGxhdGZv
cm1VdGlsaXRpZXNNYWMubW0KQEAgLTY3LDcgKzY3LDcgQEAgV0tVUkxSZWYgVVJMRm9yTm9uRXhp
c3RlbnRSZXNvdXJjZSgpCiAKIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBNSU1FVHlwZUZvcldL
VVJMUmVzcG9uc2UoV0tVUkxSZXNwb25zZVJlZiB3a1Jlc3BvbnNlKQogewotICAgIFJldGFpblB0
cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZShBZG9wdE5TLCBXS1VSTFJlc3BvbnNlQ29weU5TVVJM
UmVzcG9uc2Uod2tSZXNwb25zZSkpOworICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNw
b25zZSA9IGFkb3B0TlMoV0tVUkxSZXNwb25zZUNvcHlOU1VSTFJlc3BvbnNlKHdrUmVzcG9uc2Up
KTsKICAgICByZXR1cm4gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJp
bmdSZWYpW3Jlc3BvbnNlLmdldCgpIE1JTUVUeXBlXSkpOwogfQogCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL21hYy9XZWJLaXRBZ25vc3RpY1Rlc3QubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL21hYy9XZWJLaXRBZ25vc3RpY1Rlc3QubW0KaW5kZXggY2UyNWE4NGRhZDVlNDQ3NzAz
ZDlhOGEyMmMxNDVjOGMwZmVjOTQwYS4uMDM1NTJiM2E4ZTc0NzY5ODU4NDM1ODliZDcwNmI2NTFk
NGU5ZTcyOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvV2ViS2l0QWdub3N0
aWNUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1dlYktpdEFnbm9zdGljVGVz
dC5tbQpAQCAtODMsOCArODMsOCBAQCBXZWJLaXRBZ25vc3RpY1Rlc3Q6OldlYktpdEFnbm9zdGlj
VGVzdCgpCiAKIHZvaWQgV2ViS2l0QWdub3N0aWNUZXN0OjpydW5XZWJLaXQxVGVzdCgpCiB7Ci0g
ICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcoQWRvcHROUywgW1tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOnZpZXdGcmFtZV0pOwotICAgIFJldGFpblB0cjxGcmFtZUxvYWREZWxlZ2F0
ZT4gZGVsZWdhdGUoQWRvcHROUywgW1tGcmFtZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhE
aWRGaW5pc2hMb2FkQm9vbGVhbjomZGlkRmluaXNoTG9hZF0pOworICAgIFJldGFpblB0cjxXZWJW
aWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6dmll
d0ZyYW1lXSk7CisgICAgUmV0YWluUHRyPEZyYW1lTG9hZERlbGVnYXRlPiBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tGcmFtZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEaWRGaW5pc2hMb2FkQm9v
bGVhbjomZGlkRmluaXNoTG9hZF0pOwogICAgIFt3ZWJWaWV3LmdldCgpIHNldEZyYW1lTG9hZERl
bGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBpbml0aWFsaXplVmlldyh3ZWJWaWV3LmdldCgp
KTsKIApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIFdlYktpdEFnbm9zdGljVGVzdDo6cnVuV2ViS2l0
MlRlc3QoKQogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0
V0soV0tDb250ZXh0Q3JlYXRlKCkpOwogICAgIFdLUmV0YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBw
YWdlR3JvdXAgPSBhZG9wdFdLKFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoVXRpbDo6
dG9XSygiV2ViS2l0QWdub3N0aWNUZXN0IikuZ2V0KCkpKTsKLSAgICBSZXRhaW5QdHI8V0tWaWV3
PiB2aWV3KEFkb3B0TlMsIFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnZpZXdGcmFtZSBj
b250ZXh0UmVmOmNvbnRleHQuZ2V0KCkgcGFnZUdyb3VwUmVmOnBhZ2VHcm91cC5nZXQoKV0pOwor
ICAgIFJldGFpblB0cjxXS1ZpZXc+IHZpZXcgPSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOnZpZXdGcmFtZSBjb250ZXh0UmVmOmNvbnRleHQuZ2V0KCkgcGFnZUdyb3VwUmVm
OnBhZ2VHcm91cC5nZXQoKV0pOwogICAgIHNldFBhZ2VMb2FkZXJDbGllbnQoW3ZpZXcuZ2V0KCkg
cGFnZVJlZl0sICZkaWRGaW5pc2hMb2FkKTsKICAgICBpbml0aWFsaXplVmlldyh2aWV3LmdldCgp
KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9t
YWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tCmluZGV4IGIwY2I0ZTAzMWNi
NzQ0NjI4YzBiYzM0ZDU3ZDE3NmI2ODdhZjEzNDUuLjQxOGQ1MTM5ZTliYmFlYjUwYWY1ZWY1NTBl
OTdjNmY3N2ZjNzJiM2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlUGFnZU1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VNYWMubW0KQEAg
LTQxLDEyICs0MSwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogI2lmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogc3RhdGljIFN0cmluZyB0ZXN0UGF0aEZyb21VUkwo
V0tVUkxSZWYgdXJsKQogewotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkwoQWRvcHRDRiwg
V0tVUkxDb3B5Q0ZVUkwoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsKSk7CisgICAgUmV0YWluUHRy
PENGVVJMUmVmPiBjZlVSTCA9IGFkb3B0Q0YoV0tVUkxDb3B5Q0ZVUkwoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgdXJsKSk7CiAgICAgaWYgKCFjZlVSTCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzY2hlbWVDRlN0cmluZyhBZG9wdENGLCBDRlVS
TENvcHlTY2hlbWUoY2ZVUkwuZ2V0KCkpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBh
dGhDRlN0cmluZyhBZG9wdENGLCBDRlVSTENvcHlQYXRoKGNmVVJMLmdldCgpKSk7CisgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBzY2hlbWVDRlN0cmluZyA9IGFkb3B0Q0YoQ0ZVUkxDb3B5U2No
ZW1lKGNmVVJMLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoQ0ZTdHJp
bmcgPSBhZG9wdENGKENGVVJMQ29weVBhdGgoY2ZVUkwuZ2V0KCkpKTsKIAogICAgIFN0cmluZyBz
Y2hlbWVTdHJpbmcoc2NoZW1lQ0ZTdHJpbmcuZ2V0KCkpOwogICAgIFN0cmluZyBwYXRoU3RyaW5n
KHBhdGhDRlN0cmluZy5nZXQoKSk7CkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBTdHJpbmcgdGVz
dFBhdGhGcm9tVVJMKFdLVVJMUmVmIHVybCkKICAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKHNj
aGVtZVN0cmluZywgImh0dHAiKSAmJiAhZXF1YWxJZ25vcmluZ0Nhc2Uoc2NoZW1lU3RyaW5nLCAi
aHR0cHMiKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBob3N0Q0ZTdHJpbmcoQWRvcHRDRiwgQ0ZVUkxDb3B5SG9zdE5hbWUoY2ZVUkwuZ2V0
KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3RDRlN0cmluZyA9IGFkb3B0Q0Yo
Q0ZVUkxDb3B5SG9zdE5hbWUoY2ZVUkwuZ2V0KCkpKTsKICAgICBTdHJpbmcgaG9zdFN0cmluZyho
b3N0Q0ZTdHJpbmcuZ2V0KCkpOwogICAgIGlmIChob3N0U3RyaW5nID09ICIxMjcuMC4wLjEiICAm
JiAoQ0ZVUkxHZXRQb3J0TnVtYmVyKGNmVVJMLmdldCgpKSA9PSA4MDAwIHx8IENGVVJMR2V0UG9y
dE51bWJlcihjZlVSTC5nZXQoKSkgPT0gODQ0MykpCiAgICAgICAgIHJldHVybiBwYXRoU3RyaW5n
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMv
VGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
bWFjL1Rlc3RSdW5uZXJNYWMubW0KaW5kZXggZGNhMjdlNmEwMzE0NmVmNGJlYTA5ZmY5NTVjZmEx
MzFmZDRjM2NjZC4uYzliZjNjYWY5YWVhMWU4ZGEzNjg5MjllZWQwODEyODIxYzBhOTU1MiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21h
Yy9UZXN0UnVubmVyTWFjLm1tCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6aW5p
dGlhbGl6ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySWZOZWVkZWQoKQogICAgIGlmIChtX3dhaXRU
b0R1bXBXYXRjaGRvZ1RpbWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3dhaXRUb0R1bXBX
YXRjaGRvZ1RpbWVyLmFkb3B0Q0YoQ0ZSdW5Mb29wVGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1l
ckludGVydmFsLCAwLCAwLCAwLCBXVFI6OndhaXRVbnRpbERvbmVXYXRjaGRvZ1RpbWVyRmlyZWQs
IE5VTEwpKTsKKyAgICBtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyID0gYWRvcHRDRihDRlJ1bkxv
b3BUaW1lckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGltZUdldEN1cnJl
bnQoKSArIHdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySW50ZXJ2YWwsIDAsIDAsIDAsIFdUUjo6d2Fp
dFVudGlsRG9uZVdhdGNoZG9nVGltZXJGaXJlZCwgTlVMTCkpOwogICAgIENGUnVuTG9vcEFkZFRp
bWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lci5nZXQo
KSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAKaW5kZXggOTkzNTVmMDg3YTUzYzZjMDI0OWQ4NDBh
NDU3OTYyYWIxNDI5OWZhZS4uNGU2MGFlYjNmNDA2NjE2NjAwOTU0YjI4NWQ1ZmQ5ODY3NzU2YzYz
NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNH
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3Bw
CkBAIC01MiwxNCArNTIsMTQgQEAgZW51bSBGbGlwR3JhcGhpY3NDb250ZXh0T3JOb3QgewogCiBz
dGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZUNHQ29udGV4dEZyb21JbWFnZShXS0ltYWdlUmVmIHdr
SW1hZ2UsIEZsaXBHcmFwaGljc0NvbnRleHRPck5vdCBmbGlwID0gRG9udEZsaXBHcmFwaGljc0Nv
bnRleHQpCiB7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlKEFkb3B0Q0YsIFdLSW1h
Z2VDcmVhdGVDR0ltYWdlKHdrSW1hZ2UpKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1h
Z2UgPSBhZG9wdENGKFdLSW1hZ2VDcmVhdGVDR0ltYWdlKHdrSW1hZ2UpKTsKIAogICAgIHNpemVf
dCBwaXhlbHNXaWRlID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKTsKICAgICBzaXplX3Qg
cGl4ZWxzSGlnaCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpOwogICAgIHNpemVfdCBy
b3dCeXRlcyA9ICg0ICogcGl4ZWxzV2lkZSArIDYzKSAmIH42MzsKIAogICAgIC8vIENyZWF0aW5n
IHRoaXMgYml0bWFwIGluIHRoZSBkZXZpY2UgY29sb3Igc3BhY2Ugc2hvdWxkIHByZXZlbnQgYW55
IGNvbG9yIGNvbnZlcnNpb24gd2hlbiB0aGUgaW1hZ2Ugb2YgdGhlIHdlYiB2aWV3IGlzIGRyYXdu
IGludG8gaXQuCi0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZShBZG9w
dENGLCBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CisgICAgUmV0YWluUHRyPENHQ29s
b3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNl
UkdCKCkpOwogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
KDAsIHBpeGVsc1dpZGUsIHBpeGVsc0hpZ2gsIDgsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdldCgp
LCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJI
b3N0KTsKICAgICAKICAgICBpZiAoZmxpcCA9PSBGbGlwR3JhcGhpY3NDb250ZXh0KSB7CkBAIC0x
MTMsOSArMTEzLDkgQEAgdm9pZCBjb21wdXRlTUQ1SGFzaFN0cmluZ0ZvckNvbnRleHQoQ0dDb250
ZXh0UmVmIGJpdG1hcENvbnRleHQsIGNoYXIgaGFzaFN0cmluZ1sKIAogc3RhdGljIHZvaWQgZHVt
cEJpdG1hcChDR0NvbnRleHRSZWYgYml0bWFwQ29udGV4dCwgY29uc3QgY2hhciogY2hlY2tzdW0p
CiB7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlKEFkb3B0Q0YsIENHQml0bWFwQ29u
dGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQpKTsKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
RGF0YVJlZj4gaW1hZ2VEYXRhKEFkb3B0Q0YsIENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwot
ICAgIFJldGFpblB0cjxDR0ltYWdlRGVzdGluYXRpb25SZWY+IGltYWdlRGVzdChBZG9wdENGLCBD
R0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YShpbWFnZURhdGEuZ2V0KCksIGtVVFR5cGVQ
TkcsIDEsIDApKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENH
Qml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZNdXRhYmxlRGF0YVJlZj4gaW1hZ2VEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxl
KDAsIDApKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZURlc3RpbmF0aW9uUmVmPiBpbWFnZURlc3Qg
PSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhKGltYWdlRGF0YS5nZXQo
KSwga1VUVHlwZVBORywgMSwgMCkpOwogICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGlt
YWdlRGVzdC5nZXQoKSwgaW1hZ2UuZ2V0KCksIDApOwogICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZp
bmFsaXplKGltYWdlRGVzdC5nZXQoKSk7CiAKQEAgLTE2NSw5ICsxNjUsOSBAQCB2b2lkIFRlc3RJ
bnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVmIGlt
YWdlLCBXS0FycmF5UgogCiAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY29udGV4dDsKICAg
ICBpZiAod2luZG93U25hcHNob3QpCi0gICAgICAgIGNvbnRleHQuYWRvcHRDRihjcmVhdGVDR0Nv
bnRleHRGcm9tSW1hZ2Uod2luZG93U25hcHNob3QuZ2V0KCksIERvbnRGbGlwR3JhcGhpY3NDb250
ZXh0KSk7CisgICAgICAgIGNvbnRleHQgPSBhZG9wdENGKGNyZWF0ZUNHQ29udGV4dEZyb21JbWFn
ZSh3aW5kb3dTbmFwc2hvdC5nZXQoKSwgRG9udEZsaXBHcmFwaGljc0NvbnRleHQpKTsKICAgICBl
bHNlCi0gICAgICAgIGNvbnRleHQuYWRvcHRDRihjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2UoaW1h
Z2UpKTsKKyAgICAgICAgY29udGV4dCA9IGFkb3B0Q0YoY3JlYXRlQ0dDb250ZXh0RnJvbUltYWdl
KGltYWdlKSk7CiAKICAgICAvLyBBIG5vbi1udWxsIHJlcGFpbnRSZWN0cyBhcnJheSBtZWFucyB3
ZSdyZSBkb2luZyBhIHJlcGFpbnQgdGVzdC4KICAgICBpZiAocmVwYWludFJlY3RzKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbSBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KaW5kZXggODdjMWNm
NzBmNjZhY2QwNjI3M2YwNzJkMjNlMTk3ODRhYmYzOTA2YS4uNjcyM2Y5YWYzMzdlY2U5ZmEyY2I5
ZDcwOGJmZDVlYjEzZWFhZTZjMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9t
YWMvRXZlbnRTZW5kZXJQcm94eS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9F
dmVudFNlbmRlclByb3h5Lm1tCkBAIC00MTcsNyArNDE3LDcgQEAgdm9pZCBFdmVudFNlbmRlclBy
b3h5OjprZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMs
IHVuc2kKIAogdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQg
eSkKIHsKLSAgICBSZXRhaW5QdHI8Q0dFdmVudFJlZj4gY2dTY3JvbGxFdmVudChBZG9wdENGLCBD
R0V2ZW50Q3JlYXRlU2Nyb2xsV2hlZWxFdmVudCgwLCBrQ0dTY3JvbGxFdmVudFVuaXRMaW5lLCAy
LCB5LCB4KSk7CisgICAgUmV0YWluUHRyPENHRXZlbnRSZWY+IGNnU2Nyb2xsRXZlbnQgPSBhZG9w
dENGKENHRXZlbnRDcmVhdGVTY3JvbGxXaGVlbEV2ZW50KDAsIGtDR1Njcm9sbEV2ZW50VW5pdExp
bmUsIDIsIHksIHgpKTsKIAogICAgIC8vIENHRXZlbnQgbG9jYXRpb25zIGFyZSBpbiBnbG9iYWwg
ZGlzcGxheSBjb29yZGluYXRlcy4KICAgICBDR1BvaW50IGxhc3RHbG9iYWxNb3VzZVBvc2l0aW9u
ID0gQ0dQb2ludE1ha2UobV9wb3NpdGlvbi54LCBbW05TU2NyZWVuIG1haW5TY3JlZW5dIGZyYW1l
XS5zaXplLmhlaWdodCAtIG1fcG9zaXRpb24ueSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KaW5kZXggODc3ZGU3NjRjZTdjNDI3ZmYyNmE1
YjdiZmNlNGI5Y2I3Nzg0NmVhMS4uNjBiODg3MjAxMzRiNjQwMzdmYjZmMjVkNjM2OWM5ZWZhNDZl
MjI1MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJW
aWV3TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmll
d01hYy5tbQpAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjptYWtlV2Vi
Vmlld0ZpcnN0UmVzcG9uZGVyKCkKIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IFBsYXRmb3JtV2Vi
Vmlldzo6d2luZG93U25hcHNob3RJbWFnZSgpCiB7CiAgICAgW21fdmlldyBkaXNwbGF5XTsKLSAg
ICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gd2luZG93U25hcHNob3RJbWFnZShBZG9wdENGLCBDR1dp
bmRvd0xpc3RDcmVhdGVJbWFnZShDR1JlY3ROdWxsLCBrQ0dXaW5kb3dMaXN0T3B0aW9uSW5jbHVk
aW5nV2luZG93LCBbbV93aW5kb3cgd2luZG93TnVtYmVyXSwga0NHV2luZG93SW1hZ2VCb3VuZHNJ
Z25vcmVGcmFtaW5nIHwga0NHV2luZG93SW1hZ2VTaG91bGRCZU9wYXF1ZSkpOworICAgIFJldGFp
blB0cjxDR0ltYWdlUmVmPiB3aW5kb3dTbmFwc2hvdEltYWdlID0gYWRvcHRDRihDR1dpbmRvd0xp
c3RDcmVhdGVJbWFnZShDR1JlY3ROdWxsLCBrQ0dXaW5kb3dMaXN0T3B0aW9uSW5jbHVkaW5nV2lu
ZG93LCBbbV93aW5kb3cgd2luZG93TnVtYmVyXSwga0NHV2luZG93SW1hZ2VCb3VuZHNJZ25vcmVG
cmFtaW5nIHwga0NHV2luZG93SW1hZ2VTaG91bGRCZU9wYXF1ZSkpOwogCiAgICAgLy8gd2luZG93
U25hcHNob3RJbWFnZSB3aWxsIGJlIGluIEdlbmVyaWNSR0IsIGFzIHdlJ3ZlIHNldCB0aGUgbWFp
biBkaXNwbGF5J3MgY29sb3Igc3BhY2UgdG8gR2VuZXJpY1JHQi4KICAgICByZXR1cm4gYWRvcHRX
SyhXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2Uod2luZG93U25hcHNob3RJbWFnZS5nZXQoKSwgMCkp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdENvbnRyb2xsZXJX
aW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdENvbnRyb2xsZXJXaW4uY3Bw
CmluZGV4IDhmMmVhYWY0OGY0YTliNTMyYzE2YmE2MjRkZDlmNTYyYjExYmQ5M2YuLjZlODBmNTY5
NWY0YmNhNzNjYTQzYmQxZmY1MjY3Y2M0NTY3ZmU5YjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvd2luL1Rlc3RDb250cm9sbGVyV2luLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL3dpbi9UZXN0Q29udHJvbGxlcldpbi5jcHAKQEAgLTEzNSwxMSArMTM1LDExIEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBhdGgoKQogCiB2
b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplVGVzdFBsdWdpbkRpcmVjdG9yeSgpCiB7Ci0g
ICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwoQWRvcHRDRiwgQ0ZCdW5kbGVDb3B5RXhl
Y3V0YWJsZVVSTChDRkJ1bmRsZUdldE1haW5CdW5kbGUoKSkpOwotICAgIFJldGFpblB0cjxDRlVS
TFJlZj4gYnVuZGxlRGlyZWN0b3J5VVJMKEFkb3B0Q0YsIENGVVJMQ3JlYXRlQ29weURlbGV0aW5n
TGFzdFBhdGhDb21wb25lbnQoMCwgYnVuZGxlVVJMLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiB0ZXN0UGx1Z2luRGlyZWN0b3J5TmFtZVN0cmluZyhBZG9wdENGLCBDRlN0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+
KHRlc3RQbHVnaW5EaXJlY3RvcnlOYW1lKSwgd2NzbGVuKHRlc3RQbHVnaW5EaXJlY3RvcnlOYW1l
KSkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdGVzdFBsdWdpbkRpcmVjdG9yeVVSTChBZG9w
dENGLCBDRlVSTENyZWF0ZUNvcHlBcHBlbmRpbmdQYXRoQ29tcG9uZW50KDAsIGJ1bmRsZURpcmVj
dG9yeVVSTC5nZXQoKSwgdGVzdFBsdWdpbkRpcmVjdG9yeU5hbWVTdHJpbmcuZ2V0KCksIHRydWUp
KTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRlc3RQbHVnaW5EaXJlY3RvcnlQYXRoKEFk
b3B0Q0YsIENGVVJMQ29weUZpbGVTeXN0ZW1QYXRoKHRlc3RQbHVnaW5EaXJlY3RvcnlVUkwuZ2V0
KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1
bmRsZVVSTCA9IGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5RXhlY3V0YWJsZVVSTChDRkJ1bmRsZUdldE1h
aW5CdW5kbGUoKSkpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlRGlyZWN0b3J5VVJM
ID0gYWRvcHRDRihDRlVSTENyZWF0ZUNvcHlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50KDAsIGJ1
bmRsZVVSTC5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdGVzdFBsdWdpbkRp
cmVjdG9yeU5hbWVTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
MCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4odGVzdFBsdWdpbkRpcmVjdG9yeU5h
bWUpLCB3Y3NsZW4odGVzdFBsdWdpbkRpcmVjdG9yeU5hbWUpKSk7CisgICAgUmV0YWluUHRyPENG
VVJMUmVmPiB0ZXN0UGx1Z2luRGlyZWN0b3J5VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUNvcHlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50KDAsIGJ1bmRsZURpcmVjdG9yeVVSTC5nZXQoKSwgdGVzdFBs
dWdpbkRpcmVjdG9yeU5hbWVTdHJpbmcuZ2V0KCksIHRydWUpKTsKKyAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHRlc3RQbHVnaW5EaXJlY3RvcnlQYXRoID0gYWRvcHRDRihDRlVSTENvcHlGaWxl
U3lzdGVtUGF0aCh0ZXN0UGx1Z2luRGlyZWN0b3J5VVJMLmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0
aFN0eWxlKSk7CiAgICAgbV90ZXN0UGx1Z2luRGlyZWN0b3J5LmFkb3B0KFdLU3RyaW5nQ3JlYXRl
V2l0aENGU3RyaW5nKHRlc3RQbHVnaW5EaXJlY3RvcnlQYXRoLmdldCgpKSk7CiB9CiAK
</data>
<flag name="review"
          id="222204"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="222208"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>