<?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>210926</bug_id>
          
          <creation_ts>2020-04-23 11:37:30 -0700</creation_ts>
          <short_desc>[GStreamer][Pipewire] Implement getDisplayMedia() backend</short_desc>
          <delta_ts>2021-08-16 04:17:07 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=190576</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=227902</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=227987</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=228941</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>227902</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Diego Pino">dpino</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>annulen</cc>
    
    <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>lmoura</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1644875</commentid>
    <comment_count>0</comment_count>
    <who name="Diego Pino">dpino</who>
    <bug_when>2020-04-23 11:37:30 -0700</bug_when>
    <thetext>fast/mediastream/getDisplayMedia-max-constraints.html [ Crash ]
  fast/mediastream/getDisplayMedia-max-constraints1.html [ Crash ]
  fast/mediastream/getDisplayMedia-max-constraints2.html [ Crash ]
  fast/mediastream/getDisplayMedia-max-constraints3.html [ Crash ]

See: https://build.webkit.org/results/GTK%20Linux%2064-bit%20Release%20(Tests)/r260563%20(13450)/fast/mediastream/getDisplayMedia-max-constraints-crash-log.txt

Thread 1 (Thread 0x7f8f6a9ce9c0 (LWP 13157)):
#0  0x00007f8f72dfa8be in WTFCrash () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libjavascriptcoregtk-4.0.so.18
#1  0x00007f8f74f42ccf in WebCore::MockCameraProperties&amp; WTF::__throw_bad_variant_access&lt;WebCore::MockCameraProperties&amp;&gt;(char const*) () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#2  0x00007f8f767be962 in WebCore::MockRealtimeVideoSource::generatePresets() () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#3  0x00007f8f767ad1b7 in WebCore::RealtimeVideoCaptureSource::presets() () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#4  0x00007f8f76dcbd20 in WebCore::MockGStreamerVideoCaptureSource::generatePresets() () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#5  0x00007f8f767ad1b7 in WebCore::RealtimeVideoCaptureSource::presets() () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#6  0x00007f8f767b01e7 in WebCore::RealtimeVideoCaptureSource::bestSupportedSizeAndFrameRate(WTF::Optional&lt;int&gt;, WTF::Optional&lt;int&gt;, WTF::Optional&lt;double&gt;) () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#7  0x00007f8f767b0aa8 in WebCore::RealtimeVideoCaptureSource::supportsSizeAndFrameRate(WTF::Optional&lt;int&gt;, WTF::Optional&lt;int&gt;, WTF::Optional&lt;double&gt;) () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#8  0x00007f8f767a019e in WebCore::RealtimeMediaSource::supportsSizeAndFrameRate(WTF::Optional&lt;WebCore::IntConstraint&gt;, WTF::Optional&lt;WebCore::IntConstraint&gt;, WTF::Optional&lt;WebCore::DoubleConstraint&gt;, WTF::String&amp;, double&amp;) () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#9  0x00007f8f767a3429 in WebCore::RealtimeMediaSource::selectSettings(WebCore::MediaConstraints const&amp;, WebCore::FlattenedConstraint&amp;, WTF::String&amp;) () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#10 0x00007f8f767a465a in WebCore::RealtimeMediaSource::supportsConstraints(WebCore::MediaConstraints const&amp;, WTF::String&amp;) () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#11 0x00007f8f767a4ab7 in WebCore::RealtimeMediaSourceCenter::getDisplayMediaDevices(WebCore::MediaStreamRequest const&amp;, WTF::Vector&lt;WebCore::RealtimeMediaSourceCenter::DeviceInfo, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;, WTF::String&amp;) () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#12 0x00007f8f767a6255 in WebCore::RealtimeMediaSourceCenter::validateRequestConstraints(WTF::Function&lt;void (WTF::Vector&lt;WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;&amp;, WTF::Vector&lt;WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;&amp;, WTF::String&amp;&amp;)&gt;&amp;&amp;, WTF::Function&lt;void (WTF::String const&amp;)&gt;&amp;&amp;, WebCore::MediaStreamRequest const&amp;, WTF::String&amp;&amp;) () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#13 0x00007f8f75182e54 in WTF::Detail::CallableWrapper&lt;WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionRequest()::{lambda(WTF::String&amp;&amp;)#1}, void, WTF::String&amp;&amp;&gt;::call(WTF::String&amp;&amp;) () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#14 0x00007f8f7516b75f in WebKit::DeviceIdHashSaltStorage::completeDeviceIdHashSaltForOriginCall(WebCore::SecurityOriginData&amp;&amp;, WebCore::SecurityOriginData&amp;&amp;, WTF::CompletionHandler&lt;void (WTF::String&amp;&amp;)&gt;&amp;&amp;) () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#15 0x00007f8f7516ba71 in WebKit::DeviceIdHashSaltStorage::deviceIdHashSaltForOrigin(WebCore::SecurityOrigin const&amp;, WebCore::SecurityOrigin const&amp;, WTF::CompletionHandler&lt;void (WTF::String&amp;&amp;)&gt;&amp;&amp;) () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#16 0x00007f8f75184e6e in WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionRequest() () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#17 0x00007f8f75186904 in WTF::Detail::CallableWrapper&lt;WebKit::UserMediaPermissionRequestManagerProxy::startProcessingUserMediaPermissionRequest(WTF::Ref&lt;WebKit::UserMediaPermissionRequestProxy, WTF::DumbPtrTraits&lt;WebKit::UserMediaPermissionRequestProxy&gt; &gt;&amp;&amp;)::{lambda(auto:1)#1}, void, WebKit::UserMediaPermissionCheckProxy::PermissionInfo&gt;::call(WebKit::UserMediaPermissionCheckProxy) () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#18 0x00007f8f75185903 in WTF::Detail::CallableWrapper&lt;WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo(WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WTF::Ref&lt;WebCore::SecurityOrigin, WTF::DumbPtrTraits&lt;WebCore::SecurityOrigin&gt; &gt;&amp;&amp;, WTF::Ref&lt;WebCore::SecurityOrigin, WTF::DumbPtrTraits&lt;WebCore::SecurityOrigin&gt; &gt;&amp;&amp;, WTF::CompletionHandler&lt;void (WebKit::UserMediaPermissionCheckProxy::PermissionInfo)&gt;&amp;&amp;)::{lambda(auto:1)#1}, void, WebKit::UserMediaPermissionCheckProxy::PermissionInfo&gt;::call(WebKit::UserMediaPermissionCheckProxy::PermissionInfo) () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#19 0x00007f8f751816fb in WebKit::UserMediaPermissionCheckProxy::complete(WebKit::UserMediaPermissionCheckProxy::PermissionInfo) () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#20 0x000055c820dffb01 in WTR::TestController::handleCheckOfUserMediaPermissionForOrigin(OpaqueWKFrame const*, OpaqueWKSecurityOrigin const*, OpaqueWKSecurityOrigin const*, OpaqueWKUserMediaPermissionCheck const* const&amp;) ()
#21 0x000055c820dffbba in WTR::checkUserMediaPermissionForOrigin(OpaqueWKPage const*, OpaqueWKFrame const*, OpaqueWKSecurityOrigin const*, OpaqueWKSecurityOrigin const*, OpaqueWKUserMediaPermissionCheck const*, void const*) ()
#22 0x00007f8f75185e20 in WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo(WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WTF::Ref&lt;WebCore::SecurityOrigin, WTF::DumbPtrTraits&lt;WebCore::SecurityOrigin&gt; &gt;&amp;&amp;, WTF::Ref&lt;WebCore::SecurityOrigin, WTF::DumbPtrTraits&lt;WebCore::SecurityOrigin&gt; &gt;&amp;&amp;, WTF::CompletionHandler&lt;void (WebKit::UserMediaPermissionCheckProxy::PermissionInfo)&gt;&amp;&amp;) () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#23 0x00007f8f75185ed4 in WebKit::UserMediaPermissionRequestManagerProxy::startProcessingUserMediaPermissionRequest(WTF::Ref&lt;WebKit::UserMediaPermissionRequestProxy, WTF::DumbPtrTraits&lt;WebKit::UserMediaPermissionRequestProxy&gt; &gt;&amp;&amp;) () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37


See: https://build.webkit.org/results/WPE%20Linux%2064-bit%20Release%20(Tests)/r260564%20(17842)/fast/mediastream/getDisplayMedia-max-constraints-crash-log.txt

STDERR: 1   0x7f7ae8f47dc9 WTFCrash
STDERR: 2   0x7f7ae5719c3f /app/webkit/WebKitBuild/Release/lib/libWPEWebKit-1.0.so.3(+0x21fdc3f) [0x7f7ae5719c3f]
STDERR: 3   0x7f7ae71cd7b2 /app/webkit/WebKitBuild/Release/lib/libWPEWebKit-1.0.so.3(+0x3cb17b2) [0x7f7ae71cd7b2]
STDERR: 4   0x7f7ae71bf937 WebCore::RealtimeVideoCaptureSource::presets()
STDERR: 5   0x7f7ae78b63d0 WebCore::MockGStreamerVideoCaptureSource::generatePresets()
STDERR: 6   0x7f7ae71bf937 WebCore::RealtimeVideoCaptureSource::presets()
STDERR: 7   0x7f7ae71c1af8 WebCore::RealtimeVideoCaptureSource::bestSupportedSizeAndFrameRate(WTF::Optional&lt;int&gt;, WTF::Optional&lt;int&gt;, WTF::Optional&lt;double&gt;)
STDERR: 8   0x7f7ae71c25ea WebCore::RealtimeVideoCaptureSource::supportsSizeAndFrameRate(WTF::Optional&lt;int&gt;, WTF::Optional&lt;int&gt;, WTF::Optional&lt;double&gt;)
STDERR: 9   0x7f7ae71ac043 WebCore::RealtimeMediaSource::supportsSizeAndFrameRate(WTF::Optional&lt;WebCore::IntConstraint&gt;, WTF::Optional&lt;WebCore::IntConstraint&gt;, WTF::Optional&lt;WebCore::DoubleConstraint&gt;, WTF::String&amp;, double&amp;)
STDERR: 10  0x7f7ae71b1082 WebCore::RealtimeMediaSource::selectSettings(WebCore::MediaConstraints const&amp;, WebCore::FlattenedConstraint&amp;, WTF::String&amp;)
STDERR: 11  0x7f7ae71b27ca WebCore::RealtimeMediaSource::supportsConstraints(WebCore::MediaConstraints const&amp;, WTF::String&amp;)
STDERR: 12  0x7f7ae71b2c1f WebCore::RealtimeMediaSourceCenter::getDisplayMediaDevices(WebCore::MediaStreamRequest const&amp;, WTF::Vector&lt;WebCore::RealtimeMediaSourceCenter::DeviceInfo, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;, WTF::String&amp;)
STDERR: 13  0x7f7ae71b38e5 WebCore::RealtimeMediaSourceCenter::validateRequestConstraints(WTF::Function&lt;void (WTF::Vector&lt;WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;&amp;, WTF::Vector&lt;WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;&amp;, WTF::String&amp;&amp;)&gt;&amp;&amp;, WTF::Function&lt;void (WTF::String const&amp;)&gt;&amp;&amp;, WebCore::MediaStreamRequest const&amp;, WTF::String&amp;&amp;)
STDERR: 14  0x7f7ae596c79e /app/webkit/WebKitBuild/Release/lib/libWPEWebKit-1.0.so.3(+0x245079e) [0x7f7ae596c79e]
STDERR: 15  0x7f7ae5955549 WebKit::DeviceIdHashSaltStorage::completeDeviceIdHashSaltForOriginCall(WebCore::SecurityOriginData&amp;&amp;, WebCore::SecurityOriginData&amp;&amp;, WTF::CompletionHandler&lt;void (WTF::String&amp;&amp;)&gt;&amp;&amp;)
STDERR: 16  0x7f7ae5955887 WebKit::DeviceIdHashSaltStorage::deviceIdHashSaltForOrigin(WebCore::SecurityOrigin const&amp;, WebCore::SecurityOrigin const&amp;, WTF::CompletionHandler&lt;void (WTF::String&amp;&amp;)&gt;&amp;&amp;)
STDERR: 17  0x7f7ae596f92c WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionRequest()
STDERR: 18  0x7f7ae5971164 /app/webkit/WebKitBuild/Release/lib/libWPEWebKit-1.0.so.3(+0x2455164) [0x7f7ae5971164]
STDERR: 19  0x7f7ae596fffc /app/webkit/WebKitBuild/Release/lib/libWPEWebKit-1.0.so.3(+0x2453ffc) [0x7f7ae596fffc]
STDERR: 20  0x7f7ae596bddc WebKit::UserMediaPermissionCheckProxy::complete(WebKit::UserMediaPermissionCheckProxy::PermissionInfo)
STDERR: 21  0x559da575f0ed /app/webkit/WebKitBuild/Release/bin/WebKitTestRunner(+0x310ed) [0x559da575f0ed]
STDERR: 22  0x559da575f1aa /app/webkit/WebKitBuild/Release/bin/WebKitTestRunner(+0x311aa) [0x559da575f1aa]
STDERR: 23  0x7f7ae59705ea WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo(WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WTF::Ref&lt;WebCore::SecurityOrigin, WTF::DumbPtrTraits&lt;WebCore::SecurityOrigin&gt; &gt;&amp;&amp;, WTF::Ref&lt;WebCore::SecurityOrigin, WTF::DumbPtrTraits&lt;WebCore::SecurityOrigin&gt; &gt;&amp;&amp;, WTF::CompletionHandler&lt;void (WebKit::UserMediaPermissionCheckProxy::PermissionInfo)&gt;&amp;&amp;)
STDERR: 24  0x7f7ae59706c2 WebKit::UserMediaPermissionRequestManagerProxy::startProcessingUserMediaPermissionRequest(WTF::Ref&lt;WebKit::UserMediaPermissionRequestProxy, WTF::DumbPtrTraits&lt;WebKit::UserMediaPermissionRequestProxy&gt; &gt;&amp;&amp;)
STDERR: 25  0x7f7ae5971848 WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame(unsigned long, WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WTF::Ref&lt;WebCore::SecurityOrigin, WTF::DumbPtrTraits&lt;WebCore::SecurityOrigin&gt; &gt;&amp;&amp;, WTF::Ref&lt;WebCore::SecurityOrigin, WTF::DumbPtrTraits&lt;WebCore::SecurityOrigin&gt; &gt;&amp;&amp;, WebCore::MediaStreamRequest&amp;&amp;)
STDERR: 26  0x7f7ae59a11f1 WebKit::WebPageProxy::requestUserMediaPermissionForFrame(unsigned long, WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WebCore::SecurityOriginData const&amp;, WebCore::SecurityOriginData const&amp;, WebCore::MediaStreamRequest&amp;&amp;)
STDERR: 27  0x7f7ae56ccc07 void IPC::handleMessage&lt;Messages::WebPageProxy::RequestUserMediaPermissionForFrame, WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long, WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WebCore::SecurityOriginData const&amp;, WebCore::SecurityOriginData const&amp;, WebCore::MediaStreamRequest&amp;&amp;)&gt;(IPC::Decoder&amp;, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned long, WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WebCore::SecurityOriginData const&amp;, WebCore::SecurityOriginData const&amp;, WebCore::MediaStreamRequest&amp;&amp;))
STDERR: 28  0x7f7ae569d25f WebKit::WebPageProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
STDERR: 29  0x7f7ae58cf66a IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
STDERR: 30  0x7f7ae599f98f non-virtual thunk to WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
STDERR: 31  0x7f7ae58c8280 IPC::Connection::dispatchMessage(IPC::Decoder&amp;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646973</commentid>
    <comment_count>1</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-04-29 07:19:50 -0700</bug_when>
    <thetext>This crash currently happens because the mock realtime media source center creates a video mock source instead of a display capture mock source.

I&apos;m working on a patch touching mock sources and now those tests timeout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646976</commentid>
    <comment_count>2</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-04-29 07:22:01 -0700</bug_when>
    <thetext>I will skip them, we know getDisplayMedia doesn&apos;t work yet and adding 3 or 4 timeouts to the already very slow bots isn&apos;t helping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653938</commentid>
    <comment_count>3</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2020-05-19 00:31:31 -0700</bug_when>
    <thetext>FYI, no longer crashing but only timing out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662957</commentid>
    <comment_count>4</comment_count>
    <who name="Diego Pino">dpino</who>
    <bug_when>2020-06-15 20:45:11 -0700</bug_when>
    <thetext>fast/mediastream/getDisplayMedia-max-constraints1.html is a flaky Crash:

https://results.webkit.org/?platform=WPE&amp;platform=GTK&amp;suite=layout-tests&amp;test=fast%2Fmediastream%2FgetDisplayMedia-max-constraints1.html

fast/mediastream/getDisplayMedia-max-constraints3.html had only one Crash since r261853.

Latest crash log for getDisplayMedia-max-constraints1.html:

Crash-log: https://build.webkit.org/results/WPE%20Linux%2064-bit%20Release%20(Tests)/r263069%20(18619)/fast/mediastream/getDisplayMedia-max-constraints1-crash-log.txt

STDERR:
STDERR: (WPEWebProcess:13235): GLib-GObject-CRITICAL **: 18:15:49.770: g_object_ref: assertion &apos;old_val &gt; 0&apos; failed

Thread 1 (Thread 0x7fb084cfe700 (LWP 14447)):
#0  0x00007fb16b67eee5 in _g_log_abort (breakpoint=1) at ../glib/gmessages.c:554
#1  0x00007fb16b6801c9 in g_logv (log_domain=0x7fb16be6b2f7 &quot;GLib-GObject&quot;, log_level=G_LOG_LEVEL_CRITICAL, format=&lt;optimized out&gt;, args=args@entry=0x7fb084cfa470) at ../glib/gmessages.c:1373
#2  0x00007fb16b680393 in g_log (log_domain=log_domain@entry=0x7fb16be6b2f7 &quot;GLib-GObject&quot;, log_level=log_level@entry=G_LOG_LEVEL_CRITICAL, format=format@entry=0x7fb16b6d177f &quot;%s: assertion &apos;%s&apos; failed&quot;) at ../glib/gmessages.c:1415
#3  0x00007fb16b680b8d in g_return_if_fail_warning (log_domain=log_domain@entry=0x7fb16be6b2f7 &quot;GLib-GObject&quot;, pretty_function=pretty_function@entry=0x7fb16be6e978 &lt;__func__.15604&gt; &quot;g_object_ref&quot;, expression=expression@entry=0x7fb16be6d715 &quot;old_val &gt; 0&quot;) at ../glib/gmessages.c:2771
#4  0x00007fb16be3e9fa in g_object_ref (_object=0x7fb098057310) at ../gobject/gobject.c:3368
#5  0x00007fb16be3e9fa in g_object_ref (_object=0x7fb098057310) at ../gobject/gobject.c:3360
#6  0x00007fb16be3eb08 in g_value_object_collect_value (value=0x7fb084cfa588, n_collect_values=&lt;optimized out&gt;, collect_values=&lt;optimized out&gt;, collect_flags=&lt;optimized out&gt;) at ../gobject/gobject.c:4007
#7  0x00007fb16b585a46 in gst_structure_set_valist_internal (structure=0x7fb06c045a60, fieldname=&lt;optimized out&gt;, varargs=varargs@entry=0x7fb084cfa630) at ../gst/gststructure.c:631
#8  0x00007fb16b586dc6 in gst_structure_set (structure=structure@entry=0x7fb06c045a60, field=field@entry=0x7fb16c2f1a19 &quot;context&quot;) at ../gst/gststructure.c:663
#9  0x00007fb16c2dc8e5 in gst_gl_handle_context_query (element=element@entry=0x55a06c4547c0 [GstGLUploadElement], query=query@entry=0x55a06c265590 [GstQuery], display=&lt;optimized out&gt;, gl_context=0x7fb098057310 [GstGLContextEGL], other_context=&lt;optimized out&gt;) at ../gst-libs/gst/gl/gstglutils.c:550
#10 0x00007fb16c2b9b1b in gst_gl_base_filter_query (trans=0x55a06c4547c0 [GstGLUploadElement], direction=GST_PAD_SRC, query=0x55a06c265590 [GstQuery]) at ../gst-libs/gst/gl/gstglbasefilter.c:224
#11 0x00007fb16b563238 in gst_pad_query (pad=pad@entry=0x7fb098047b20 [GstPad], query=query@entry=0x55a06c265590 [GstQuery]) at ../gst/gstpad.c:4072
#12 0x00007fb16b56399b in gst_pad_peer_query (pad=pad@entry=0x7fb0980478d0 [GstPad], query=query@entry=0x55a06c265590 [GstQuery]) at ../gst/gstpad.c:4204
#13 0x00007fb16c2db9b6 in pad_query (item=&lt;optimized out&gt;, value=0x7fb084cfa970, user_data=0x55a06c265590) at ../gst-libs/gst/gl/gstglutils.c:108
#14 0x00007fb16b55113c in gst_iterator_fold (it=it@entry=0x7fb0980048a0, func=func@entry=0x7fb16c2db990 &lt;pad_query&gt;, ret=ret@entry=0x7fb084cfa970, user_data=user_data@entry=0x55a06c265590) at ../gst/gstiterator.c:617
#15 0x00007fb16c2dbb26 in gst_gl_run_query (element=&lt;optimized out&gt;, query=query@entry=0x55a06c265590 [GstQuery], direction=direction@entry=GST_PAD_SINK) at ../gst-libs/gst/gl/gstglutils.c:136
#16 0x00007fb16c2dcabd in gst_gl_query_local_gl_context (element=0x55a06c454b30 [GstGLColorConvertElement], direction=direction@entry=GST_PAD_SINK, context_ptr=context_ptr@entry=0x55a06c454d78) at ../gst-libs/gst/gl/gstglutils.c:591
#17 0x00007fb16c2b964e in _find_local_gl_context (filter=0x55a06c454b30 [GstGLColorConvertElement]) at ../gst-libs/gst/gl/gstglbasefilter.c:197
#18 0x00007fb16c2b9df5 in gst_gl_base_filter_find_gl_context (filter=0x55a06c454b30 [GstGLColorConvertElement]) at ../gst-libs/gst/gl/gstglbasefilter.c:432
#19 0x00007fb109f434b1 in gst_gl_color_convert_element_transform_caps (bt=0x55a06c454b30 [GstGLColorConvertElement], direction=GST_PAD_SRC, caps=0x55a06c498f70 [GstCaps], filter=0x0) at ../ext/gl/gstglcolorconvertelement.c:145
#20 0x00007fb16c50ce71 in gst_base_transform_transform_caps (trans=trans@entry=0x55a06c454b30 [GstGLColorConvertElement], direction=GST_PAD_SRC, caps=caps@entry=0x55a06c498f70 [GstCaps], filter=filter@entry=0x0) at ../libs/gst/base/gstbasetransform.c:474</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729732</commentid>
    <comment_count>5</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2021-02-16 09:46:57 -0800</bug_when>
    <thetext>Update on these tests

fast/mediastream/getDisplayMedia-max-constraints.html was removed in r260638.

r272778 &quot;Make RemoteRealtimeVideoSource a RealtimeVideoCaptureSource&quot; made the timeouts vanish for constraints1 and constraints2, but still flaky timeout in constraints3.

Will update the expectations with Failures for 1&amp;2 and skip 3.

Failures still present:

--- /home/buildbot/worker/wpe-linux-64-release-tests/build/layout-test-results/fast/mediastream/getDisplayMedia-max-constraints1-expected.txt
+++ /home/buildbot/worker/wpe-linux-64-release-tests/build/layout-test-results/fast/mediastream/getDisplayMedia-max-constraints1-actual.txt
@@ -1,4 +1,4 @@
 
 PASS setup
-PASS Maximize the width if max height is too big
+FAIL Maximize the width if max height is too big assert_greater_than: waitForHeight expected a number greater than 0 but got 0

--- /home/buildbot/worker/wpe-linux-64-release-tests/build/layout-test-results/fast/mediastream/getDisplayMedia-max-constraints2-expected.txt
+++ /home/buildbot/worker/wpe-linux-64-release-tests/build/layout-test-results/fast/mediastream/getDisplayMedia-max-constraints2-actual.txt
@@ -1,4 +1,4 @@
 
 PASS setup
-PASS Maximize the height if max width is too big
+FAIL Maximize the height if max width is too big assert_greater_than: waitForWidth expected a number greater than 0 but got 0


--- /home/buildbot/worker/wpe-linux-64-release-tests/build/layout-test-results/fast/mediastream/getDisplayMedia-max-constraints3-expected.txt
+++ /home/buildbot/worker/wpe-linux-64-release-tests/build/layout-test-results/fast/mediastream/getDisplayMedia-max-constraints3-actual.txt
@@ -1,4 +1,4 @@
 
 PASS setup
-PASS No effect of the max values if they are too big
+FAIL No effect of the max values if they are too big assert_greater_than: waitForHeight expected a number greater than 0 but got 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776214</commentid>
    <comment_count>6</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-11 08:45:51 -0700</bug_when>
    <thetext>*** Bug 191007 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776216</commentid>
    <comment_count>7</comment_count>
      <attachid>433289</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-11 10:08:52 -0700</bug_when>
    <thetext>Created attachment 433289
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776217</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-07-11 10:09:56 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776313</commentid>
    <comment_count>9</comment_count>
      <attachid>433289</attachid>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2021-07-12 07:30:58 -0700</bug_when>
    <thetext>Comment on attachment 433289
Patch

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

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp:275
&gt; +    CaptureDevice captureDevice(WTF::numberToStringUnsigned&lt;String&gt;(fd), CaptureDevice::DeviceType::Screen, makeString(&quot;Capture Display&quot;));

I see there&apos;s a 

XdpSessionType xdp_session_get_session_type (XdpSession *session);

I don&apos;t know if that&apos;s what you need.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776315</commentid>
    <comment_count>10</comment_count>
      <attachid>433289</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-12 07:43:15 -0700</bug_when>
    <thetext>Comment on attachment 433289
Patch

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

&gt;&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp:275
&gt;&gt; +    CaptureDevice captureDevice(WTF::numberToStringUnsigned&lt;String&gt;(fd), CaptureDevice::DeviceType::Screen, makeString(&quot;Capture Display&quot;));
&gt; 
&gt; I see there&apos;s a 
&gt; 
&gt; XdpSessionType xdp_session_get_session_type (XdpSession *session);
&gt; 
&gt; I don&apos;t know if that&apos;s what you need.

Sadly, unrelated. I went this path already and found:

/**
 * XdpSessionType:
 * @XDP_SESSION_SCREENCAST: a screencast session.
 * @XDP_SESSION_REMOTE_DESKTOP: a remote desktop session.
 *
 * The type of a session.
 */
typedef enum {
  XDP_SESSION_SCREENCAST,
  XDP_SESSION_REMOTE_DESKTOP
} XdpSessionType;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776573</commentid>
    <comment_count>11</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-13 00:33:15 -0700</bug_when>
    <thetext>I&apos;ll move the API in a separate patch...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776595</commentid>
    <comment_count>12</comment_count>
      <attachid>433400</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-13 05:02:51 -0700</bug_when>
    <thetext>Created attachment 433400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776631</commentid>
    <comment_count>13</comment_count>
      <attachid>433400</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2021-07-13 08:31:19 -0700</bug_when>
    <thetext>Comment on attachment 433400
Patch

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

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:1104
&gt; +    auto deviceType = this-&gt;deviceType();
&gt; +    if (deviceType != CaptureDevice::DeviceType::Screen &amp;&amp; deviceType != CaptureDevice::DeviceType::Window)
&gt; +        ASSERT(!m_hashedID.isEmpty());

I think we should flag all this if #ifndef NDEBUG .

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp:234
&gt; +    xdp_portal_create_screencast_session(m_portal.get(), static_cast&lt;XdpOutputType&gt;(XDP_OUTPUT_MONITOR | XDP_OUTPUT_WINDOW), XDP_SCREENCAST_FLAG_NONE, nullptr, [](GObject* source, GAsyncResult* result, gpointer userData) {
&gt; +        GUniqueOutPtr&lt;GError&gt; error;
&gt; +        auto* session = xdp_portal_create_screencast_session_finish(XDP_PORTAL(source), result, &amp;error.outPtr());
&gt; +        if (!session) {
&gt; +            WTFLogAlways(&quot;Failed to create screencast session: %s&quot;, error-&gt;message);
&gt; +            return;
&gt; +        }
&gt; +        auto&amp; manager = *reinterpret_cast&lt;GStreamerDisplayCaptureDeviceManager*&gt;(userData);

Are we sure this is going to outlive this callback? Otherwise we might even want to turn GStreamerDisplayCaptureDeviceManager into RefCounted or WeakPtr and use it here.

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp:251
&gt; +    g_signal_connect_swapped(m_session.get(), &quot;closed&quot;, G_CALLBACK(+[](GStreamerDisplayCaptureDeviceManager* manager, XdpSession*) {
&gt; +        manager-&gt;sessionWasClosed();
&gt; +    }), this);

Ditto.

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp:255
&gt; +    xdp_session_start(m_session.get(), nullptr, nullptr, [](GObject* source, GAsyncResult* result, gpointer userData) {
&gt; +        auto* session = XDP_SESSION(source);
&gt; +        GUniqueOutPtr&lt;GError&gt; error;
&gt; +        auto&amp; manager = *reinterpret_cast&lt;GStreamerDisplayCaptureDeviceManager*&gt;(userData);

Ditto

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp:274
&gt; +    // user, so hardcode Screen here. ð¤·

Weird characters at the end?

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.h:96
&gt; +    GRefPtr&lt;XdpPortal&gt; m_portal;
&gt; +    GRefPtr&lt;XdpSession&gt; m_session;

I guess these are GObjects and we don&apos;t need to specify refGPtr and derefGPtr, right?

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.cpp:109
&gt; +            gst_pad_add_probe(pad.get(), GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM, [](GstPad*, GstPadProbeInfo* info, void* userData) -&gt; GstPadProbeReturn {
&gt; +                auto* event = gst_pad_probe_info_get_event(info);
&gt; +                if (GST_EVENT_TYPE(event) != GST_EVENT_CAPS)
&gt; +                    return GST_PAD_PROBE_OK;
&gt; +
&gt; +                callOnMainThread([event, capturer = reinterpret_cast&lt;GStreamerCapturer*&gt;(userData)] {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777170</commentid>
    <comment_count>14</comment_count>
      <attachid>433400</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-15 04:18:50 -0700</bug_when>
    <thetext>Comment on attachment 433400
Patch

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

&gt;&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp:234
&gt;&gt; +        auto&amp; manager = *reinterpret_cast&lt;GStreamerDisplayCaptureDeviceManager*&gt;(userData);
&gt; 
&gt; Are we sure this is going to outlive this callback? Otherwise we might even want to turn GStreamerDisplayCaptureDeviceManager into RefCounted or WeakPtr and use it here.

AFAICS it&apos;s a singleton, NeverDestroyed&lt;GStreamerDisplayCaptureDeviceManager&gt;.

&gt;&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp:274
&gt;&gt; +    // user, so hardcode Screen here. ð¤·
&gt; 
&gt; Weird characters at the end?

Shrug emoji.

&gt;&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.h:96
&gt;&gt; +    GRefPtr&lt;XdpSession&gt; m_session;
&gt; 
&gt; I guess these are GObjects and we don&apos;t need to specify refGPtr and derefGPtr, right?

Right!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777173</commentid>
    <comment_count>15</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-15 04:49:24 -0700</bug_when>
    <thetext>Committed r279940 (239684@main): &lt;https://commits.webkit.org/239684@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777174</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-15 04:50:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/80625215&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782460</commentid>
    <comment_count>17</comment_count>
      <attachid>433400</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-08-06 02:51:29 -0700</bug_when>
    <thetext>Comment on attachment 433400
Patch

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

&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:115
&gt; +    auto size = m_source-&gt;size();

This broke an API test, see https://bugs.webkit.org/show_bug.cgi?id=228759.

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:114
&gt; +    return CaptureSourceOrError(WTFMove(source));

To enable resizing and so on, we usually wrap the realtime video capture source with a realtime video source.
Something like: &quot;return CaptureSourceOrError(RealtimeVideoSource::create(WTFMove(source)));&quot;

I wonder whether doing so would allow removing some of the changes to the RealtimeXXSource classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784456</commentid>
    <comment_count>18</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-08-16 04:17:07 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #17)
&gt; Comment on attachment 433400 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=433400&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:115
&gt; &gt; +    auto size = m_source-&gt;size();
&gt; 
&gt; This broke an API test, see https://bugs.webkit.org/show_bug.cgi?id=228759.
&gt; 
&gt; &gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:114
&gt; &gt; +    return CaptureSourceOrError(WTFMove(source));
&gt; 
&gt; To enable resizing and so on, we usually wrap the realtime video capture
&gt; source with a realtime video source.
&gt; Something like: &quot;return
&gt; CaptureSourceOrError(RealtimeVideoSource::create(WTFMove(source)));&quot;
&gt; 
&gt; I wonder whether doing so would allow removing some of the changes to the
&gt; RealtimeXXSource classes.

Does not help.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433289</attachid>
            <date>2021-07-11 10:08:52 -0700</date>
            <delta_ts>2021-07-13 05:02:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210926-20210711100850.patch</filename>
            <type>text/plain</type>
            <size>103186</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVmNzE3MzQzODQ1MzdiMjI2N2ZmMzU1
ZDAxODc0N2RhYzNhNmMwNTAuLjdlOTE2ZWI1Mjg2MGJjZTJiY2ZmYzlhNjNjOTM4ZGZiYTRlN2Mx
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDctMTEgIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdW1BpcGV3aXJlXSBJbXBs
ZW1lbnQgZ2V0RGlzcGxheU1lZGlhKCkgYmFja2VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwOTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzRXhwZXJpbWVudGFsLnlhbWw6IEVuYWJsZSBzY3JlZW4tY2FwdHVyZSBpZiBsaWJwb3J0YWwK
KyAgICAgICAgd2FzIGZvdW5kLgorCiAyMDIxLTA3LTA5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gTWFrZSBDb29yZGluYXRvciBwbGF5YmFjayBj
b21tYW5kcyBtb3JlIHByZWNpc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZGExMmUyMWQwZTE4OTM3OWNkYTM3
MzBmYjIxOGJhZDY4N2VjZTgyLi45NjllZWU2YmNiNWRiNTE5ZjQ5OWUxYTcwNjQxYzdiNTljODA1
NmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODcgQEAKKzIwMjEtMDctMTEgIFBoaWxpcHBlIE5v
cm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdW1BpcGV3
aXJlXSBJbXBsZW1lbnQgZ2V0RGlzcGxheU1lZGlhKCkgYmFja2VuZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwOTI2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGlzcGxheSBjYXB0dXJlIGlzIG5vdyBz
dXBwb3J0ZWQgYnkgR1N0cmVhbWVyIHBvcnRzLiBXaGVuIHJlcXVlc3RlZCwgdGhlIGNhcHR1cmUg
ZGV2aWNlCisgICAgICAgIG1hbmFnZXIgcXVlcmllcyB0aGUgaG9zdCB0aHJvdWdoIHRoZSBsaWJw
b3J0YWwgQVBJLiBUaGUgdXNlciBpcyBwcmVzZW50ZWQgd2l0aCBhIHByb21wdAorICAgICAgICBh
bGxvd2luZyB0byBzZWxlY3QgZWl0aGVyIGEgbW9uaXRvciBvciBhbiBhcHBsaWNhdGlvbiB3aW5k
b3cuIE9uY2Ugc2VsZWN0ZWQsIHRoZSBtYW5hZ2VyCisgICAgICAgIGNyZWF0ZXMgdGhlIGFzc29j
aWF0ZWQgQ2FwdHVyZURldmljZSwgcGFzc2luZyB0aGUgcGlwZXdpcmUgZmlsZSBkZXNjcmlwdG9y
IGFsb25nLiBUaGUKKyAgICAgICAgZXhpc3RpbmcgR1N0cmVhbWVyIHZpZGVvIGNhcHR1cmUgc291
cmNlIGluZnJhc3RydWN0dXJlIGlzIHJldXNlZCwgbGV2ZXJhZ2luZyB0aGUgR1N0cmVhbWVyCisg
ICAgICAgIHBpcGV3aXJlc3JjIGVsZW1lbnQgdG8gZ2VuZXJhdGUgYSBsaXZlIHZpZGVvIHN0cmVh
bSBvZiB0aGUgZGlzcGxheSBkZXZpY2UuCisKKyAgICAgICAgQXMgZGlzcGxheSBjYXB0dXJlIGRl
dmljZXMgbmVlZCB0byByZXNwZWN0IHRoZSBhc3BlY3QtcmF0aW8gb2YgdGhlIHZpZGVvIGZyYW1l
LCB0YWtpbmcgaW50bworICAgICAgICBhY2NvdW50IG1heC17d2lkdGhlcixoZWlnaHR9LCBzb21l
IGNvZGUgd2FzIHJldXNlZCBmcm9tIHRoZSBDb2NvYSBkaXNwbGF5IGNhcHR1cmUgY29kZSBhbmQK
KyAgICAgICAgcGxhY2VkIGluIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlIGFzIGVuc3VyZUlu
dHJpbnNpY1NpemVNYWludGFpbnNBc3BlY3RSYXRpbygpLgorCisgICAgICAgIFVuZm9ydHVuYXRl
bHkgdGhpcyBhc3BlY3QtcmF0aW8gZW5mb3JjaW5nIGZlYXR1cmUgaXMgY3VycmVudGx5IHVzZWQg
b25seSBmb3IgbW9jayBjYXB0dXJlCisgICAgICAgIHNvdXJjZXMuIFRoZSBHU3RyZWFtZXIgcGlw
ZXdpcmVzcmMgZG9lc24ndCBzdXBwb3J0IGNhcHMgcmVuZWdvdGlhdGlvbiB3ZWxsIHlldCwgc28g
d2UgY2FuJ3QKKyAgICAgICAgY29tcGx5IHdpdGggdGhlIGFzcGVjdC1yYXRpbyBlbmZvcmNpbmcs
IGZvciB0aGUgdGltZSBiZWluZy4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGNvdmVyZWQgYnkg
bmV3bHkgdW5za2lwcGVkIGxheW91dCB0ZXN0cyBhbmQgQVBJIHRlc3RzLgorCisgICAgICAgICog
cGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZTo6c2V0SW50cmluc2ljU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlOjpoYXNoZWRJZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0
aW1lVmlkZW9DYXB0dXJlU291cmNlOjplbnN1cmVJbnRyaW5zaWNTaXplTWFpbnRhaW5zQXNwZWN0
UmF0aW8pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0
dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZVZpZGVvU291cmNlOjpzb3Vy
Y2VTZXR0aW5nc0NoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJl
YW1lckF1ZGlvQ2FwdHVyZXI6OkdTdHJlYW1lckF1ZGlvQ2FwdHVyZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1h
bmFnZXI6OkdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcik6CisgICAgICAgIChX
ZWJDb3JlOjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6On5HU3RyZWFtZXJE
aXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVy
RGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb21wdXRlQ2FwdHVyZURldmljZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXRT
ZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6c2Vzc2lvblN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRGlz
cGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpub3RpZnlDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uV2FzQ2xvc2Vk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2Fw
dHVyZURldmljZU1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVy
Q2FwdHVyZXI6OkdTdHJlYW1lckNhcHR1cmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1l
ckNhcHR1cmVyOjpPYnNlcnZlcjo6fk9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJl
YW1lckNhcHR1cmVyOjphZGRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJD
YXB0dXJlcjo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQ2Fw
dHVyZXI6OmZvckVhY2hPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJDYXB0
dXJlcjo6Y3JlYXRlU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckNh
cHR1cmVyOjpPYnNlcnZlcjo6c291cmNlQ2Fwc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
R1N0cmVhbWVyQ2FwdHVyZXI6OmRldmljZVR5cGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQaXBl
d2lyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3Vy
Y2U6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjptX2Rl
dmljZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNl
Ojp+R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJl
YW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6c291cmNlQ2Fwc0NoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpzdG9wUHJvZHVj
aW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjptX2NhcHR1cmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJl
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lclZpZGVvQ2FwdHVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZURlYnVn
Q2F0ZWdvcnkpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlcjo6R1N0
cmVhbWVyVmlkZW9DYXB0dXJlcik6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0Nh
cHR1cmVyOjpjcmVhdGVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9D
YXB0dXJlcjo6c2V0UGlwZXdpcmVGRCk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRl
b0NhcHR1cmVyOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclZpZGVvQ2Fw
dHVyZXI6OnNldEZyYW1lUmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lcjo6Y3JlYXRlTW9j
a0Rpc3BsYXlDYXB0dXJlU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjYXBhYmlsaXRpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmdlbmVyYXRlRnJhbWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaDoKKwogMjAyMS0wNy0x
MCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIGRvY3VtZW50LnJl
YWR5U3RhdGUgc2hvdWxkIGJlICJjb21wbGV0ZSIgYWZ0ZXIgY2FsbGluZyBET01QYXJzZXIucGFy
c2VGcm9tU3RyaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjIyNmIzZmU5ZDJhNzBiNWJjZWU1ZGM1OWY4ZTlk
ZTI0MGRmMjIwNC4uMWZlMzNhY2Y0NGQxY2VmMjhkMTg0ZWZiNTkxOThmMzU0OGJiM2Y5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAyMS0wNy0xMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBu
b3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl1bUGlwZXdpcmVdIEltcGxl
bWVudCBnZXREaXNwbGF5TWVkaWEoKSBiYWNrZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgbmV3IEdMaWIgQVBJIChhbmQgY29ycmVz
cG9uZGluZyBHT2JqZWN0IHByb3BlcnRpZXMpOgorCisgICAgICAgIHdlYmtpdF93ZWJfdmlld19n
ZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X2dldF9taWNy
b3Bob25lX2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9jYW1lcmFf
Y2FwdHVyZV9zdGF0ZQorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3JvcGhvbmVfY2Fw
dHVyZV9zdGF0ZQorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9z
dGF0ZQorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZQor
ICAgICAgICB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9kaXNwbGF5X2Rldmlj
ZQorCisgICAgICAgIFRoaXMgY2FuIGJlIHVzZWZ1bCBpbiBXZWIgYnJvd3NlcnMgd2lsbGluZyB0
byBpbmRpY2F0ZSB0aGUgc3RhdHVzIG9mIHRoZSBjYXB0dXJlIGRldmljZXMKKyAgICAgICAgY3Vy
cmVudGx5IGluIHVzZSBieSB0aGUgV2ViVmlldy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRVSUNsaWVudC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdF91c2Vy
X21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2Rpc3BsYXlfZGV2aWNlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJD
b250ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdNZWRpYUNhcHR1cmVTdGF0ZURpZENo
YW5nZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHkpOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0dldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19p
bml0KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdDb25maWd1cmVNZWRpYUNhcHR1cmUpOgorICAg
ICAgICAod2Via2l0X3dlYl92aWV3X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSk6CisgICAgICAg
ICh3ZWJraXRfd2ViX3ZpZXdfc2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKToKKyAgICAgICAgKHdl
YmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlKToKKyAgICAgICAgKHdl
YmtpdF93ZWJfdmlld19zZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlKToKKyAgICAgICAgKHdl
YmtpdF93ZWJfdmlld19nZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKToKKyAgICAgICAgKHdlYmtp
dF93ZWJfdmlld19zZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0OgorCiAyMDIxLTA3LTEwICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNz
XSBDYW52YXMgZHJhd2luZyBuZXZlciByZWxlYXNlcyBhbnkgZm9udHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55
YW1sIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJp
bWVudGFsLnlhbWwKaW5kZXggOWVjYjdhM2Q2YjM5Y2EyM2RkZDMyNTgzMjZhMWZkYzJmMDE2Y2Uz
MC4uNmNhNDliZDc1ZTVkNDMwMDQ3Njc3NmU1YWM3MTU1MWZhMTM2YTgzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFs
LnlhbWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2Vz
RXhwZXJpbWVudGFsLnlhbWwKQEAgLTkyNyw3ICs5MjcsNyBAQCBTY3JlZW5DYXB0dXJlRW5hYmxl
ZDoKICAgICBXZWJLaXRMZWdhY3k6CiAgICAgICBkZWZhdWx0OiBmYWxzZQogICAgIFdlYktpdDoK
LSAgICAgICJQTEFURk9STShNQUMpIjogdHJ1ZQorICAgICAgIlBMQVRGT1JNKE1BQykgfHwgVVNF
KFBJUEVXSVJFKSI6IHRydWUKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICAgV2ViQ29yZToKICAg
ICAgIGRlZmF1bHQ6IGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9H
U3RyZWFtZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UK
aW5kZXggNGE3NjQwNDkxYzUxZjMzYTQ2ZWY4N2RkYzUxYzdiNzBiNTNkOTllMC4uYWM5NWZmY2Vm
MjU4ZDU2ZDQwYWExN2VhYTNmMDg5ZDEzM2Y0Yjc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0dTdHJlYW1lci5jbWFrZQpAQCAtMTUxLDYgKzE1MSwxMCBAQCBpZiAoRU5BQkxFX1ZJREVPKQog
ICAgICAgICAgICAgICAgICR7R1NUUkVBTUVSX0NPREVDUEFSU0VSU19MSUJSQVJJRVN9CiAgICAg
ICAgICAgICApCiAgICAgICAgIGVuZGlmICgpCisKKyAgICAgICAgaWYgKFVTRV9QSVBFV0lSRSkK
KyAgICAgICAgICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfTElCUkFSSUVTIExJQlBPUlRBTDo6TElC
UE9SVEFMKQorICAgICAgICBlbmRpZiAoKQogICAgIGVuZGlmICgpCiBlbmRpZiAoKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuY3BwCmluZGV4IDIwMzVjNjc1ZWY3MmM3MWUyNWQ3MGM4YzEzYTIyMDk0YjU3
MjFkZjAuLmNkYzQ1MjBhNDZiYmExZmY2ZWI3MmQyODA2ZTU0NWFjYmY1NTBjN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuY3BwCkBAIC05NzgsNyArOTc4LDcgQEAgY29uc3QgSW50U2l6ZSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc2l6ZTsKIH0KIAotdm9pZCBS
ZWFsdGltZU1lZGlhU291cmNlOjpzZXRJbnRyaW5zaWNTaXplKGNvbnN0IEludFNpemUmIHNpemUp
Cit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEludHJpbnNpY1NpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgYm9vbCBub3RpZnlPYnNlcnZlcnMpCiB7CiAgICAgaWYgKG1faW50cmluc2ljU2l6
ZSA9PSBzaXplKQogICAgICAgICByZXR1cm47CkBAIC05ODcsNiArOTg3LDggQEAgdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlOjpzZXRJbnRyaW5zaWNTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAg
ICAgCiAgICAgYXV0byBjdXJyZW50U2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICBtX2ludHJpbnNp
Y1NpemUgPSBzaXplOworICAgIGlmICghbm90aWZ5T2JzZXJ2ZXJzKQorICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoY3VycmVudFNpemUgIT0gdGhpcy0+c2l6ZSgpKSB7CiAgICAgICAgIHNjaGVk
dWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CkBAIC0xMDk3LDcgKzEwOTksOSBAQCB2b2lkIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiBm
dW5jdGlvbikKIAogY29uc3QgU3RyaW5nJiBSZWFsdGltZU1lZGlhU291cmNlOjpoYXNoZWRJZCgp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFtX2hhc2hlZElELmlzRW1wdHkoKSk7CisgICAgYXV0byBk
ZXZpY2VUeXBlID0gdGhpcy0+ZGV2aWNlVHlwZSgpOworICAgIGlmIChkZXZpY2VUeXBlICE9IENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiAmJiBkZXZpY2VUeXBlICE9IENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OldpbmRvdykKKyAgICAgICAgQVNTRVJUKCFtX2hhc2hlZElELmlz
RW1wdHkoKSk7CiAgICAgcmV0dXJuIG1faGFzaGVkSUQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaApp
bmRleCA2MTI5MjZjNTFjMGNhYzljZjRjMTkzZDg0ODEzZmFiM2FkOGU1YzY1Li4zNGEzNDg4YjY2
NmIwNDI4NTBmMzcwZDM3NTlhZWIwMzAwYTNkMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCkBAIC0x
NTAsNyArMTUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJik7
CiAKICAgICBjb25zdCBJbnRTaXplIGludHJpbnNpY1NpemUoKSBjb25zdDsKLSAgICB2b2lkIHNl
dEludHJpbnNpY1NpemUoY29uc3QgSW50U2l6ZSYpOworICAgIHZvaWQgc2V0SW50cmluc2ljU2l6
ZShjb25zdCBJbnRTaXplJiwgYm9vbCBub3RpZnlPYnNlcnZlcnMgPSB0cnVlKTsKIAogICAgIGRv
dWJsZSBmcmFtZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmF0ZTsgfQogICAgIHZvaWQg
c2V0RnJhbWVSYXRlKGRvdWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAK
aW5kZXggMWFiOTdiNmU5ZGY5MDFmYTI4YTVlODk4ZWZlMjE5OTcxY2RhOGNjNC4uODY4NmJhYzRm
MTYxMjY2MDhjOWYxNTJhNjJlMTA0ZTNkYjcyNTc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0
dXJlU291cmNlLmNwcApAQCAtNDI3LDYgKzQyNywzMyBAQCB2b2lkIFJlYWx0aW1lVmlkZW9DYXB0
dXJlU291cmNlOjpjbGllbnRVcGRhdGVkU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGlu
dAogICAgIHNldEZyYW1lUmF0ZShtYXRjaC0+cmVxdWVzdGVkRnJhbWVSYXRlKTsKIH0KIAordm9p
ZCBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6ZW5zdXJlSW50cmluc2ljU2l6ZU1haW50YWlu
c0FzcGVjdFJhdGlvKCkKK3sKKyAgICBhdXRvIGludHJpbnNpY1NpemUgPSB0aGlzLT5pbnRyaW5z
aWNTaXplKCk7CisgICAgYXV0byBmcmFtZVNpemUgPSBzaXplKCk7CisgICAgaWYgKCFmcmFtZVNp
emUuaGVpZ2h0KCkpCisgICAgICAgIGZyYW1lU2l6ZS5zZXRIZWlnaHQoaW50cmluc2ljU2l6ZS5o
ZWlnaHQoKSk7CisgICAgaWYgKCFmcmFtZVNpemUud2lkdGgoKSkKKyAgICAgICAgZnJhbWVTaXpl
LnNldFdpZHRoKGludHJpbnNpY1NpemUud2lkdGgoKSk7CisKKyAgICBhdXRvIG1heEhlaWdodCA9
IHN0ZDo6bWluKGZyYW1lU2l6ZS5oZWlnaHQoKSwgaW50cmluc2ljU2l6ZS5oZWlnaHQoKSk7Cisg
ICAgYXV0byBtYXhXaWR0aCA9IHN0ZDo6bWluKGZyYW1lU2l6ZS53aWR0aCgpLCBpbnRyaW5zaWNT
aXplLndpZHRoKCkpOworCisgICAgYXV0byBoZWlnaHRGb3JNYXhXaWR0aCA9IG1heFdpZHRoICog
aW50cmluc2ljU2l6ZS5oZWlnaHQoKSAvIGludHJpbnNpY1NpemUud2lkdGgoKTsKKyAgICBhdXRv
IHdpZHRoRm9yTWF4SGVpZ2h0ID0gbWF4SGVpZ2h0ICogaW50cmluc2ljU2l6ZS53aWR0aCgpIC8g
aW50cmluc2ljU2l6ZS5oZWlnaHQoKTsKKworICAgIGlmIChoZWlnaHRGb3JNYXhXaWR0aCA8PSBt
YXhIZWlnaHQpIHsKKyAgICAgICAgc2V0U2l6ZSh7IG1heFdpZHRoLCBoZWlnaHRGb3JNYXhXaWR0
aCB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAod2lkdGhGb3JNYXhIZWlnaHQg
PD0gbWF4V2lkdGgpIHsKKyAgICAgICAgc2V0U2l6ZSh7IHdpZHRoRm9yTWF4SGVpZ2h0LCBtYXhI
ZWlnaHQgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzZXRTaXplKGludHJpbnNp
Y1NpemUpOworfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBSZWY8SlNPTjo6T2JqZWN0
PiBTaXplQW5kRnJhbWVSYXRlOjp0b0pTT05PYmplY3QoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlk
ZW9DYXB0dXJlU291cmNlLmgKaW5kZXggZDAzNGE4MDM1MDk1NDMxOTJlY2E4NjAwNTE5ZWJkY2Uy
MGUyYzRiMS4uMGFiMTVlN2I4NzE1N2Q0MjkzMjg4OTIyZDlmNDU5YWQ4Mzc4YzRiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0Nh
cHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC03Myw2ICs3Myw4IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIGRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycyhNZWRpYVNhbXBsZSYpOwog
ICAgIGNvbnN0IFZlY3RvcjxJbnRTaXplPiYgc3RhbmRhcmRWaWRlb1NpemVzKCk7CiAKKyAgICB2
b2lkIGVuc3VyZUludHJpbnNpY1NpemVNYWludGFpbnNBc3BlY3RSYXRpbygpOworCiBwcml2YXRl
OgogICAgIHN0cnVjdCBDYXB0dXJlU2l6ZUFuZEZyYW1lUmF0ZSB7CiAgICAgICAgIFJlZlB0cjxW
aWRlb1ByZXNldD4gZW5jb2RpbmdQcmVzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDFl
N2FmZmNlZmU3ZDFkYzVlODA4MGE4Y2M4MGNjMzZlNjIxMGEzMGQuLjFmZWE3OTE3MTJiMDEyYjY2
YmQ5NmFmOWY3MzNlOWJkYjM0NDYxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC0xMTIs
OSArMTEyLDcgQEAgdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpzb3VyY2VNdXRlZENoYW5nZWQo
KQogdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpzb3VyY2VTZXR0aW5nc0NoYW5nZWQoKQogewog
ICAgIGF1dG8gcm90YXRpb24gPSBtX3NvdXJjZS0+c2FtcGxlUm90YXRpb24oKTsKLSAgICBhdXRv
IHNpemUgPSB0aGlzLT5zaXplKCk7Ci0gICAgaWYgKHNpemUuaXNFbXB0eSgpKQotICAgICAgICBz
aXplID0gbV9zb3VyY2UtPnNpemUoKTsKKyAgICBhdXRvIHNpemUgPSBtX3NvdXJjZS0+c2l6ZSgp
OwogICAgIGlmIChyb3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdCB8
fCByb3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQpCiAgICAgICAg
IHNpemUgPSBzaXplLnRyYW5zcG9zZWRTaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJBdWRpb0NhcHR1cmVyLmNwcAppbmRleCBhMDNmN2M5OGY2MDkwY2JlYjQzYzUwNjFiMGY5
OWI4MzgwMTJkMGYxLi4yNmVlNDI2M2I5ZGI4NzgxZGJhZTYxZTFhMzAxMmVmN2RjNzA5NzI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyQXVkaW9DYXB0dXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZXIuY3BwCkBAIC00NSw3
ICs0NSw3IEBAIEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI6OkdTdHJlYW1lckF1ZGlvQ2FwdHVyZXIo
R1N0cmVhbWVyQ2FwdHVyZURldmljZSBkZXZpY2UpCiB9CiAKIEdTdHJlYW1lckF1ZGlvQ2FwdHVy
ZXI6OkdTdHJlYW1lckF1ZGlvQ2FwdHVyZXIoKQotICAgIDogR1N0cmVhbWVyQ2FwdHVyZXIoImFw
cHNyYyIsIGFkb3B0R1JlZihnc3RfY2Fwc19uZXdfc2ltcGxlKCJhdWRpby94LXJhdyIsICJyYXRl
IiwgR19UWVBFX0lOVCwgQXVkaW9DYXB0dXJlU2FtcGxlUmF0ZSwgbnVsbHB0cikpKQorICAgIDog
R1N0cmVhbWVyQ2FwdHVyZXIoImFwcHNyYyIsIGFkb3B0R1JlZihnc3RfY2Fwc19uZXdfc2ltcGxl
KCJhdWRpby94LXJhdyIsICJyYXRlIiwgR19UWVBFX0lOVCwgQXVkaW9DYXB0dXJlU2FtcGxlUmF0
ZSwgbnVsbHB0cikpLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5h
Z2VyLmNwcAppbmRleCAzZjlkZDU4YTkwZjk3ZThhZTNiMDNlMzJiZDNmNGI1MmVhMzM4ZDM3Li5h
MjM1MTUzYzc0ZmQ0ZmE5NmJmMTcwNzZhY2NhY2VjNjNkOGVlNTVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVy
ZURldmljZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAgLTI1LDYg
KzI1LDcgQEAKICNpbmNsdWRlICJHU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5oIgogCiAj
aW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvSW50ZWdlclRv
U3RyaW5nQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIwMiw2ICsy
MDMsOTcgQEAgdm9pZCBHU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaENhcHR1
cmVEZXZpY2VzKCkKICAgICB9CiB9CiAKK0dTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKK3sKKyNpZiBVU0Uo
UElQRVdJUkUpCisgICAgbV9wb3J0YWwgPSBhZG9wdEdSZWYoeGRwX3BvcnRhbF9uZXcoKSk7Cisj
ZW5kaWYKK30KKworR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjp+R1N0cmVh
bWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKK3sKKyNpZiBVU0UoUElQRVdJUkUpCisg
ICAgaWYgKG1fc2Vzc2lvbikgeworICAgICAgICB4ZHBfc2Vzc2lvbl9jbG9zZShtX3Nlc3Npb24u
Z2V0KCkpOworICAgICAgICBtX3Nlc3Npb24gPSBudWxscHRyOworICAgIH0KKyNlbmRpZgorfQor
Cit2b2lkIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29tcHV0ZUNhcHR1
cmVEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyNpZiBV
U0UoUElQRVdJUkUpCisgICAgbV9jYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIHhk
cF9wb3J0YWxfY3JlYXRlX3NjcmVlbmNhc3Rfc2Vzc2lvbihtX3BvcnRhbC5nZXQoKSwgc3RhdGlj
X2Nhc3Q8WGRwT3V0cHV0VHlwZT4oWERQX09VVFBVVF9NT05JVE9SIHwgWERQX09VVFBVVF9XSU5E
T1cpLCBYRFBfU0NSRUVOQ0FTVF9GTEFHX05PTkUsIG51bGxwdHIsIFtdKEdPYmplY3QqIHNvdXJj
ZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CisgICAgICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgYXV0byogc2Vzc2lvbiA9IHhkcF9w
b3J0YWxfY3JlYXRlX3NjcmVlbmNhc3Rfc2Vzc2lvbl9maW5pc2goWERQX1BPUlRBTChzb3VyY2Up
LCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSk7CisgICAgICAgIGlmICghc2Vzc2lvbikgeworICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gY3JlYXRlIHNjcmVlbmNhc3Qgc2Vzc2lv
bjogJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgYXV0byYgbWFuYWdlciA9ICpyZWludGVycHJldF9jYXN0PEdTdHJlYW1lckRpc3Bs
YXlDYXB0dXJlRGV2aWNlTWFuYWdlcio+KHVzZXJEYXRhKTsKKyAgICAgICAgbWFuYWdlci5zZXRT
ZXNzaW9uKHNlc3Npb24pOworICAgIH0sIHRoaXMpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICBjYWxsYmFjaygpOworI2VuZGlmCit9CisKKyNpZiBVU0UoUElQRVdJUkUp
Cit2b2lkIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2V0U2Vzc2lvbihY
ZHBTZXNzaW9uKiBzZXNzaW9uKQoreworICAgIEFTU0VSVChzZXNzaW9uKTsKKyAgICBtX3Nlc3Np
b24gPSBhZG9wdEdSZWYoc2Vzc2lvbik7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQo
bV9zZXNzaW9uLmdldCgpLCAiY2xvc2VkIiwgR19DQUxMQkFDSygrW10oR1N0cmVhbWVyRGlzcGxh
eUNhcHR1cmVEZXZpY2VNYW5hZ2VyKiBtYW5hZ2VyLCBYZHBTZXNzaW9uKikgeworICAgICAgICBt
YW5hZ2VyLT5zZXNzaW9uV2FzQ2xvc2VkKCk7CisgICAgfSksIHRoaXMpOworICAgIHhkcF9zZXNz
aW9uX3N0YXJ0KG1fc2Vzc2lvbi5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgW10oR09iamVjdCog
c291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKKyAgICAg
ICAgYXV0byogc2Vzc2lvbiA9IFhEUF9TRVNTSU9OKHNvdXJjZSk7CisgICAgICAgIEdVbmlxdWVP
dXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgYXV0byYgbWFuYWdlciA9ICpyZWludGVycHJl
dF9jYXN0PEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcio+KHVzZXJEYXRhKTsK
KyAgICAgICAgaWYgKCF4ZHBfc2Vzc2lvbl9zdGFydF9maW5pc2goc2Vzc2lvbiwgcmVzdWx0LCAm
ZXJyb3Iub3V0UHRyKCkpKSB7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBz
dGFydCBzY3JlZW5jYXN0IHNlc3Npb246ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICAg
ICAgbWFuYWdlci5ub3RpZnlDbGllbnQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIG1hbmFnZXIuc2Vzc2lvblN0YXJ0ZWQoKTsKKyAgICB9LCB0aGlzKTsKK30K
KyNlbmRpZgorCit2b2lkIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vz
c2lvblN0YXJ0ZWQoKQoreworICAgIG1fZGV2aWNlcy5jbGVhcigpOworI2lmIFVTRShQSVBFV0lS
RSkKKyAgICBpbnQgZmQgPSB4ZHBfc2Vzc2lvbl9vcGVuX3BpcGV3aXJlX3JlbW90ZShtX3Nlc3Np
b24uZ2V0KCkpOworCisgICAgLy8gRklYTUU6IFRoZSBsaWJwb3J0YWwgQVBJIGRvZXNuJ3Qgc2Vl
bSB0byBleHBvc2Ugd2hpY2ggWGRwT3V0cHV0VHlwZSB3YXMgc2VsZWN0ZWQgYnkgdGhlCisgICAg
Ly8gdXNlciwgc28gaGFyZGNvZGUgU2NyZWVuIGhlcmUuIPCfpLcKKyAgICBDYXB0dXJlRGV2aWNl
IGNhcHR1cmVEZXZpY2UoV1RGOjpudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFN0cmluZz4oZmQpLCBD
YXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIG1ha2VTdHJpbmcoIkNhcHR1cmUgRGlz
cGxheSIpKTsKKyAgICBjYXB0dXJlRGV2aWNlLnNldEVuYWJsZWQodHJ1ZSk7CisgICAgbV9kZXZp
Y2VzLmFwcGVuZChXVEZNb3ZlKGNhcHR1cmVEZXZpY2UpKTsKKyNlbmRpZgorICAgIG5vdGlmeUNs
aWVudCgpOworfQorCit2b2lkIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
bm90aWZ5Q2xpZW50KCkKK3sKKyAgICBpZiAobV9jYWxsYmFjaykKKyAgICAgICAgbV9jYWxsYmFj
aygpOworfQorCit2b2lkIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vz
c2lvbldhc0Nsb3NlZCgpCit7CisjaWYgVVNFKFBJUEVXSVJFKQorICAgIG1fc2Vzc2lvbiA9IG51
bGxwdHI7CisjZW5kaWYKKyAgICBtX2RldmljZXMuY2xlYXIoKTsKKyAgICBkZXZpY2VDaGFuZ2Vk
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5oCmluZGV4IDhjZTFiYTk0YjdhMDZjMjhlMmNkNmI4
MGViZGZiZGY5NTkxMWRlYjguLjk1Mzk4MWFlODYyZDA4Yjc1N2E0NGU1ZjM5MDAwMDMzMGY2NWY2
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFu
YWdlci5oCkBAIC0yOCw2ICsyOCwxMCBAQAogI2luY2x1ZGUgIkdTdHJlYW1lckNhcHR1cmVEZXZp
Y2UuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlRmFjdG9yeS5oIgogCisjaWYgVVNF
KFBJUEVXSVJFKQorI2luY2x1ZGUgPGxpYnBvcnRhbC9wb3J0YWwuaD4KKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyIDog
cHVibGljIENhcHR1cmVEZXZpY2VNYW5hZ2VyIHsKQEAgLTY2LDE1ICs3MCwzMiBAQCBwcml2YXRl
OgogICAgIEdTdHJlYW1lclZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoKSA9IGRlZmF1bHQ7CiB9
OwogCi1jbGFzcyBHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIgZmluYWwgOiBw
dWJsaWMgR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIgeworY2xhc3MgR1N0cmVhbWVyRGlz
cGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyIGZpbmFsIDogcHVibGljIENhcHR1cmVEZXZpY2VNYW5h
Z2VyIHsKICAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8R1N0cmVhbWVyRGlzcGxheUNh
cHR1cmVEZXZpY2VNYW5hZ2VyPjsKIHB1YmxpYzoKICAgICBzdGF0aWMgR1N0cmVhbWVyRGlzcGxh
eUNhcHR1cmVEZXZpY2VNYW5hZ2VyJiBzaW5nbGV0b24oKTsKLSAgICBDYXB0dXJlRGV2aWNlOjpE
ZXZpY2VUeXBlIGRldmljZVR5cGUoKSBmaW5hbCB7IHJldHVybiBDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlOjpTY3JlZW47IH0KKyAgICBjb25zdCBWZWN0b3I8Q2FwdHVyZURldmljZT4mIGNhcHR1
cmVEZXZpY2VzKCkgZmluYWwgeyByZXR1cm4gbV9kZXZpY2VzOyB9OworICAgIHZvaWQgY29tcHV0
ZUNhcHR1cmVEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisKK3By
b3RlY3RlZDoKKyNpZiBVU0UoUElQRVdJUkUpCisgICAgdm9pZCBzZXRTZXNzaW9uKFhkcFNlc3Np
b24qKTsKKyNlbmRpZgorICAgIHZvaWQgc2Vzc2lvblN0YXJ0ZWQoKTsKKyAgICB2b2lkIG5vdGlm
eUNsaWVudCgpOworICAgIHZvaWQgc2Vzc2lvbldhc0Nsb3NlZCgpOworCiBwcml2YXRlOgotICAg
IEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpID0gZGVmYXVsdDsKLX07Cisg
ICAgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKCk7CisgICAgfkdTdHJlYW1l
ckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpOwogCisgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiBtX2NhbGxiYWNrOworICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBtX2RldmljZXM7
CisjaWYgVVNFKFBJUEVXSVJFKQorICAgIEdSZWZQdHI8WGRwUG9ydGFsPiBtX3BvcnRhbDsKKyAg
ICBHUmVmUHRyPFhkcFNlc3Npb24+IG1fc2Vzc2lvbjsKKyNlbmRpZgorfTsKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNh
cHR1cmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJDYXB0dXJlci5jcHAKaW5kZXggODMxZDQ2MDI4NmYyZmIyYTM1MGNjOTQxMzdk
YTI3ZWM3OWY2MGYxNi4uZWVhMzQ0ZWU5YTgwZjM2NTUwMDE4YjlhZDBiZDViMWM1Y2MwN2QxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lckNhcHR1cmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZXIuY3BwCkBAIC00OCwxNCArNDgsMTYg
QEAgR1N0cmVhbWVyQ2FwdHVyZXI6OkdTdHJlYW1lckNhcHR1cmVyKEdTdHJlYW1lckNhcHR1cmVE
ZXZpY2UgZGV2aWNlLCBHUmVmUHRyPEdzdEMKICAgICA6IG1fZGV2aWNlKGRldmljZS5kZXZpY2Uo
KSkKICAgICAsIG1fY2FwcyhjYXBzKQogICAgICwgbV9zb3VyY2VGYWN0b3J5KG51bGxwdHIpCisg
ICAgLCBtX2RldmljZVR5cGUoZGV2aWNlLnR5cGUoKSkKIHsKICAgICBpbml0aWFsaXplRGVidWdD
YXRlZ29yeSgpOwogfQogCi1HU3RyZWFtZXJDYXB0dXJlcjo6R1N0cmVhbWVyQ2FwdHVyZXIoY29u
c3QgY2hhciogc291cmNlRmFjdG9yeSwgR1JlZlB0cjxHc3RDYXBzPiBjYXBzKQorR1N0cmVhbWVy
Q2FwdHVyZXI6OkdTdHJlYW1lckNhcHR1cmVyKGNvbnN0IGNoYXIqIHNvdXJjZUZhY3RvcnksIEdS
ZWZQdHI8R3N0Q2Fwcz4gY2FwcywgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBl
KQogICAgIDogbV9kZXZpY2UobnVsbHB0cikKICAgICAsIG1fY2FwcyhjYXBzKQogICAgICwgbV9z
b3VyY2VGYWN0b3J5KHNvdXJjZUZhY3RvcnkpCisgICAgLCBtX2RldmljZVR5cGUoZGV2aWNlVHlw
ZSkKIHsKICAgICBpbml0aWFsaXplRGVidWdDYXRlZ29yeSgpOwogfQpAQCAtNjYsMTQgKzY4LDU0
IEBAIEdTdHJlYW1lckNhcHR1cmVyOjp+R1N0cmVhbWVyQ2FwdHVyZXIoKQogICAgICAgICBkaXNj
b25uZWN0U2ltcGxlQnVzTWVzc2FnZUNhbGxiYWNrKHBpcGVsaW5lKCkpOwogfQogCitHU3RyZWFt
ZXJDYXB0dXJlcjo6T2JzZXJ2ZXI6On5PYnNlcnZlcigpCit7Cit9CisKK3ZvaWQgR1N0cmVhbWVy
Q2FwdHVyZXI6OmFkZE9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIG1fb2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7Cit9CisKK3Zv
aWQgR1N0cmVhbWVyQ2FwdHVyZXI6OnJlbW92ZU9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZShv
YnNlcnZlcik7Cit9CisKK3ZvaWQgR1N0cmVhbWVyQ2FwdHVyZXI6OmZvckVhY2hPYnNlcnZlcihj
b25zdCBGdW5jdGlvbjx2b2lkKE9ic2VydmVyJik+JiBhcHBseSkKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwor
ICAgIG1fb2JzZXJ2ZXJzLmZvckVhY2goYXBwbHkpOworfQorCiBHc3RFbGVtZW50KiBHU3RyZWFt
ZXJDYXB0dXJlcjo6Y3JlYXRlU291cmNlKCkKIHsKICAgICBpZiAobV9zb3VyY2VGYWN0b3J5KSB7
CiAgICAgICAgIG1fc3JjID0gbWFrZUVsZW1lbnQobV9zb3VyY2VGYWN0b3J5KTsKKyAgICAgICAg
QVNTRVJUKG1fc3JjKTsKICAgICAgICAgaWYgKEdTVF9JU19BUFBfU1JDKG1fc3JjLmdldCgpKSkK
ICAgICAgICAgICAgIGdfb2JqZWN0X3NldChtX3NyYy5nZXQoKSwgImlzLWxpdmUiLCB0cnVlLCAi
Zm9ybWF0IiwgR1NUX0ZPUk1BVF9USU1FLCBudWxscHRyKTsKIAotICAgICAgICBBU1NFUlQobV9z
cmMpOworICAgICAgICBpZiAobV9kZXZpY2VUeXBlID09IENhcHR1cmVEZXZpY2U6OkRldmljZVR5
cGU6OlNjcmVlbikgeworICAgICAgICAgICAgYXV0byBwYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1l
bnRfZ2V0X3N0YXRpY19wYWQobV9zcmMuZ2V0KCksICJzcmMiKSk7CisgICAgICAgICAgICBnc3Rf
cGFkX2FkZF9wcm9iZShwYWQuZ2V0KCksIEdTVF9QQURfUFJPQkVfVFlQRV9FVkVOVF9ET1dOU1RS
RUFNLCBbXShHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIHZvaWQqIHVzZXJEYXRhKSAt
PiBHc3RQYWRQcm9iZVJldHVybiB7CisgICAgICAgICAgICAgICAgYXV0byogZXZlbnQgPSBnc3Rf
cGFkX3Byb2JlX2luZm9fZ2V0X2V2ZW50KGluZm8pOworICAgICAgICAgICAgICAgIGlmIChHU1Rf
RVZFTlRfVFlQRShldmVudCkgIT0gR1NUX0VWRU5UX0NBUFMpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBHU1RfUEFEX1BST0JFX09LOworCisgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbZXZlbnQsIGNhcHR1cmVyID0gcmVpbnRlcnByZXRfY2FzdDxHU3RyZWFtZXJDYXB0dXJl
cio+KHVzZXJEYXRhKV0geworICAgICAgICAgICAgICAgICAgICBHc3RDYXBzKiBjYXBzOworICAg
ICAgICAgICAgICAgICAgICBnc3RfZXZlbnRfcGFyc2VfY2FwcyhldmVudCwgJmNhcHMpOworICAg
ICAgICAgICAgICAgICAgICBjYXB0dXJlci0+Zm9yRWFjaE9ic2VydmVyKFtjYXBzXShPYnNlcnZl
ciYgb2JzZXJ2ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLnNvdXJjZUNh
cHNDaGFuZ2VkKGNhcHMpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKKyAgICAgICAg
ICAgIH0sIHRoaXMsIG51bGxwdHIpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX3NyYy5n
ZXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmgKaW5kZXggZjNm
Zjg5NDMzMDA3NWE4MzQwNWU4YzNhMWZjY2I3MmJjNzllNTJhMS4uYzI5NzEzMjU0Yzc3YjQxNDEy
YmJmYTM0NGM5ZmZiMTk2MzA1MDAxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVy
LmgKQEAgLTI4LDE1ICsyOCwyOSBAQAogI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5oIgogCiAj
aW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIEdTdHJlYW1lckNhcHR1cmVyIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K2NsYXNzIEdTdHJlYW1lckNhcHR1cmVyCisgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8R1N0cmVhbWVyQ2FwdHVyZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW5SdW5Mb29w
PiB7CisKIHB1YmxpYzoKKyAgICBjbGFzcyBPYnNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxPYnNlcnZlcj4geworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKTsK
KworICAgICAgICB2aXJ0dWFsIHZvaWQgc291cmNlQ2Fwc0NoYW5nZWQoY29uc3QgR3N0Q2Fwcyop
IHsgfQorICAgIH07CisKICAgICBHU3RyZWFtZXJDYXB0dXJlcihHU3RyZWFtZXJDYXB0dXJlRGV2
aWNlLCBHUmVmUHRyPEdzdENhcHM+KTsKLSAgICBHU3RyZWFtZXJDYXB0dXJlcihjb25zdCBjaGFy
KiBzb3VyY2VGYWN0b3J5LCBHUmVmUHRyPEdzdENhcHM+KTsKLSAgICB+R1N0cmVhbWVyQ2FwdHVy
ZXIoKTsKKyAgICBHU3RyZWFtZXJDYXB0dXJlcihjb25zdCBjaGFyKiBzb3VyY2VGYWN0b3J5LCBH
UmVmUHRyPEdzdENhcHM+LCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlKTsKKyAgICB2aXJ0dWFs
IH5HU3RyZWFtZXJDYXB0dXJlcigpOworCisgICAgdm9pZCBhZGRPYnNlcnZlcihPYnNlcnZlciYp
OworICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImKTsKKyAgICB2b2lkIGZvckVhY2hP
YnNlcnZlcihjb25zdCBGdW5jdGlvbjx2b2lkKE9ic2VydmVyJik+Jik7CiAKICAgICB2b2lkIHNl
dHVwUGlwZWxpbmUoKTsKICAgICB2b2lkIHBsYXkoKTsKQEAgLTU3LDYgKzcxLDggQEAgcHVibGlj
OgogICAgIGJvb2wgaXNJbnRlcnJ1cHRlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0SW50ZXJydXB0
ZWQoYm9vbCk7CiAKKyAgICBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBj
b25zdCB7IHJldHVybiBtX2RldmljZVR5cGU7IH0KKwogcHJvdGVjdGVkOgogICAgIEdSZWZQdHI8
R3N0RWxlbWVudD4gbV9zaW5rOwogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9zcmM7CkBAIC02
NiwxMCArODIsMTEgQEAgcHJvdGVjdGVkOgogICAgIEdSZWZQdHI8R3N0RGV2aWNlPiBtX2Rldmlj
ZTsKICAgICBHUmVmUHRyPEdzdENhcHM+IG1fY2FwczsKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+
IG1fcGlwZWxpbmU7Ci0KLXByaXZhdGU6CiAgICAgY29uc3QgY2hhciogbV9zb3VyY2VGYWN0b3J5
OwogCitwcml2YXRlOgorICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgbV9kZXZpY2VUeXBl
OworICAgIFdlYWtIYXNoU2V0PE9ic2VydmVyPiBtX29ic2VydmVyczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2Fw
dHVyZVNvdXJjZS5jcHAKaW5kZXggY2Y0NGE5NDBlZGM4MjMxZjZlNmVjNTY3OGJmNWE2NDQwYTUy
YTY5NS4uZGU1ODhkNmE0MDVkZDQ4ZWVlMGFhNzRiMDJhYjE2ZmE0ZWQzM2FjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
clZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJNZWRpYVNhbXBsZUdTdHJlYW1lci5oIgogCiAjaW5jbHVk
ZSA8Z3N0L2FwcC9nc3RhcHBzaW5rLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRl
Z2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc3LDEwICs3OCwx
NSBAQCBWaWRlb0NhcHR1cmVGYWN0b3J5JiBsaWJXZWJSVENWaWRlb0NhcHR1cmVTb3VyY2VGYWN0
b3J5KCkKIAogY2xhc3MgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVTb3VyY2VGYWN0b3J5IGZpbmFs
IDogcHVibGljIERpc3BsYXlDYXB0dXJlRmFjdG9yeSB7CiBwdWJsaWM6Ci0gICAgQ2FwdHVyZVNv
dXJjZU9yRXJyb3IgY3JlYXRlRGlzcGxheUNhcHR1cmVTb3VyY2UoY29uc3QgQ2FwdHVyZURldmlj
ZSYsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKSBmaW5hbAorICAgIENhcHR1cmVTb3VyY2VPckVy
cm9yIGNyZWF0ZURpc3BsYXlDYXB0dXJlU291cmNlKGNvbnN0IENhcHR1cmVEZXZpY2UmIGRldmlj
ZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpIGZpbmFsCiAgICAgewotICAg
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisjaWYgVVNFKFBJUEVXSVJFKQorICAgICAg
ICByZXR1cm4gR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQaXBld2lyZVNvdXJj
ZShkZXZpY2UucGVyc2lzdGVudElkKCkuaXNvbGF0ZWRDb3B5KCksIHsgfSwgY29uc3RyYWludHMs
IGRldmljZS50eXBlKCkpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGRldmljZSk7Cisg
ICAgICAgIFVOVVNFRF9QQVJBTShjb25zdHJhaW50cyk7CiAgICAgICAgIHJldHVybiB7IH07Cisj
ZW5kaWYKICAgICB9CiBwcml2YXRlOgogICAgIENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBkaXNwbGF5
Q2FwdHVyZURldmljZU1hbmFnZXIoKSBmaW5hbCB7IHJldHVybiBHU3RyZWFtZXJEaXNwbGF5Q2Fw
dHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpOyB9CkBAIC0xMDEsNyArMTA3LDE2IEBAIENh
cHR1cmVTb3VyY2VPckVycm9yIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlKFN0
cmluZyYmIGRldmljZUlELCBTdHJpCiAgICAgfQogCiAgICAgYXV0byBzb3VyY2UgPSBhZG9wdFJl
ZigqbmV3IEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShkZXZpY2UudmFsdWUoKSwgV1RGTW92
ZShoYXNoU2FsdCkpKTsKKyAgICBpZiAoY29uc3RyYWludHMpIHsKKyAgICAgICAgaWYgKGF1dG8g
cmVzdWx0ID0gc291cmNlLT5hcHBseUNvbnN0cmFpbnRzKCpjb25zdHJhaW50cykpCisgICAgICAg
ICAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQtPmJhZENvbnN0cmFpbnQpOworICAgIH0KKyAgICBy
ZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJyb3IoV1RGTW92ZShzb3VyY2UpKTsKK30KIAorQ2FwdHVy
ZVNvdXJjZU9yRXJyb3IgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQaXBld2ly
ZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IE1lZGlh
Q29uc3RyYWludHMqIGNvbnN0cmFpbnRzLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmlj
ZVR5cGUpCit7CisgICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3IEdTdHJlYW1lclZpZGVv
Q2FwdHVyZVNvdXJjZShXVEZNb3ZlKGRldmljZUlEKSwgeyB9LCBXVEZNb3ZlKGhhc2hTYWx0KSwg
InBpcGV3aXJlc3JjIiwgZGV2aWNlVHlwZSkpOwogICAgIGlmIChjb25zdHJhaW50cykgewogICAg
ICAgICBpZiAoYXV0byByZXN1bHQgPSBzb3VyY2UtPmFwcGx5Q29uc3RyYWludHMoKmNvbnN0cmFp
bnRzKSkKICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdC0+YmFkQ29uc3RyYWludCk7
CkBAIC0xMTksMjIgKzEzNCwzNiBAQCBEaXNwbGF5Q2FwdHVyZUZhY3RvcnkmIEdTdHJlYW1lclZp
ZGVvQ2FwdHVyZVNvdXJjZTo6ZGlzcGxheUZhY3RvcnkoKQogICAgIHJldHVybiBsaWJXZWJSVENE
aXNwbGF5Q2FwdHVyZVNvdXJjZUZhY3RvcnkoKTsKIH0KIAotR1N0cmVhbWVyVmlkZW9DYXB0dXJl
U291cmNlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0
cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBnY2hhciAqc291cmNlX2ZhY3Rv
cnkpCi0gICAgOiBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZShXVEZNb3ZlKGRldmljZUlEKSwg
V1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCkpCi0gICAgLCBtX2NhcHR1cmVyKG1ha2VV
bmlxdWU8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4oc291cmNlX2ZhY3RvcnkpKQorR1N0cmVhbWVy
VmlkZW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoU3RyaW5nJiYg
ZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBnY2hhciog
c291cmNlRmFjdG9yeSwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKQorICAg
IDogUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UoV1RGTW92ZShuYW1lKSwgV1RGTW92ZShkZXZp
Y2VJRCksIFdURk1vdmUoaGFzaFNhbHQpKQorICAgICwgbV9jYXB0dXJlcihtYWtlVW5pcXVlPEdT
dHJlYW1lclZpZGVvQ2FwdHVyZXI+KHNvdXJjZUZhY3RvcnksIGRldmljZVR5cGUpKQorICAgICwg
bV9kZXZpY2VUeXBlKGRldmljZVR5cGUpCiB7CiAgICAgaW5pdGlhbGl6ZURlYnVnQ2F0ZWdvcnko
KTsKKworICAgIGlmIChnX3N0cl9lcXVhbChzb3VyY2VGYWN0b3J5LCAicGlwZXdpcmVzcmMiKSkg
eworICAgICAgICBpZiAoYXV0byBmZCA9IHBhcnNlSW50ZWdlcjxpbnQ+KHBlcnNpc3RlbnRJRCgp
KSkKKyAgICAgICAgICAgIG1fY2FwdHVyZXItPnNldFBpcGV3aXJlRkQoKmZkKTsKKyAgICB9Cisg
ICAgbV9jYXB0dXJlci0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwogfQogCiBHU3RyZWFtZXJWaWRlb0Nh
cHR1cmVTb3VyY2U6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShHU3RyZWFtZXJDYXB0dXJl
RGV2aWNlIGRldmljZSwgU3RyaW5nJiYgaGFzaFNhbHQpCiAgICAgOiBSZWFsdGltZVZpZGVvQ2Fw
dHVyZVNvdXJjZShTdHJpbmcgeyBkZXZpY2UucGVyc2lzdGVudElkKCkgfSwgU3RyaW5nIHsgZGV2
aWNlLmxhYmVsKCkgfSwgV1RGTW92ZShoYXNoU2FsdCkpCiAgICAgLCBtX2NhcHR1cmVyKG1ha2VV
bmlxdWU8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4oZGV2aWNlKSkKKyAgICAsIG1fZGV2aWNlVHlw
ZShDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEpCiB7CiAgICAgaW5pdGlhbGl6ZURl
YnVnQ2F0ZWdvcnkoKTsKKyAgICBtX2NhcHR1cmVyLT5hZGRPYnNlcnZlcigqdGhpcyk7CiB9CiAK
IEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6fkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJj
ZSgpCiB7CisgICAgbV9jYXB0dXJlci0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOworICAgIGlmICgh
bV9jYXB0dXJlci0+cGlwZWxpbmUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGdfc2lnbmFsX2hh
bmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhtX2NhcHR1cmVyLT5zaW5rKCksIHJlaW50ZXJwcmV0
X2Nhc3Q8Z3BvaW50ZXI+KG5ld1NhbXBsZUNhbGxiYWNrKSwgdGhpcyk7CisgICAgbV9jYXB0dXJl
ci0+c3RvcCgpOwogfQogCiB2b2lkIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dGlu
Z3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4g
c2V0dGluZ3MpCkBAIC0xNDUsMTAgKzE3NCwyNyBAQCB2b2lkIEdTdHJlYW1lclZpZGVvQ2FwdHVy
ZVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyYwog
ICAgICAgICBtX2NhcHR1cmVyLT5zZXRGcmFtZVJhdGUoZnJhbWVSYXRlKCkpOwogfQogCit2b2lk
IEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6c291cmNlQ2Fwc0NoYW5nZWQoY29uc3QgR3N0
Q2FwcyogY2FwcykKK3sKKyAgICBhdXRvIHZpZGVvUmVzb2x1dGlvbiA9IGdldFZpZGVvUmVzb2x1
dGlvbkZyb21DYXBzKGNhcHMpOworICAgIGlmICghdmlkZW9SZXNvbHV0aW9uKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzZXRJbnRyaW5zaWNTaXplKEludFNpemUoKnZpZGVvUmVzb2x1dGlvbiks
IGZhbHNlKTsKKyAgICBpZiAobV9kZXZpY2VUeXBlID09IENhcHR1cmVEZXZpY2U6OkRldmljZVR5
cGU6OlNjcmVlbikKKyAgICAgICAgZW5zdXJlSW50cmluc2ljU2l6ZU1haW50YWluc0FzcGVjdFJh
dGlvKCk7Cit9CisKIHZvaWQgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpzdGFydFByb2R1
Y2luZ0RhdGEoKQogeworICAgIGlmIChtX2NhcHR1cmVyLT5waXBlbGluZSgpKQorICAgICAgICBy
ZXR1cm47CisKICAgICBtX2NhcHR1cmVyLT5zZXR1cFBpcGVsaW5lKCk7Ci0gICAgbV9jYXB0dXJl
ci0+c2V0U2l6ZShzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKTsKKworICAgIGlmICht
X2RldmljZVR5cGUgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhKQorICAgICAg
ICBtX2NhcHR1cmVyLT5zZXRTaXplKHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkpOwor
CiAgICAgbV9jYXB0dXJlci0+c2V0RnJhbWVSYXRlKGZyYW1lUmF0ZSgpKTsKICAgICBnX3NpZ25h
bF9jb25uZWN0KG1fY2FwdHVyZXItPnNpbmsoKSwgIm5ldy1zYW1wbGUiLCBHX0NBTExCQUNLKG5l
d1NhbXBsZUNhbGxiYWNrKSwgdGhpcyk7CiAgICAgbV9jYXB0dXJlci0+cGxheSgpOwpAQCAtMTc2
LDkgKzIyMiw2IEBAIEdzdEZsb3dSZXR1cm4gR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpu
ZXdTYW1wbGVDYWxsYmFjayhHc3RFbGVtZW50KiBzaW5rLCBHCiAKIHZvaWQgR1N0cmVhbWVyVmlk
ZW9DYXB0dXJlU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAgZ19zaWduYWxfaGFu
ZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fY2FwdHVyZXItPnNpbmsoKSwgcmVpbnRlcnByZXRf
Y2FzdDxncG9pbnRlcj4obmV3U2FtcGxlQ2FsbGJhY2spLCB0aGlzKTsKLSAgICBtX2NhcHR1cmVy
LT5zdG9wKCk7Ci0KICAgICBHU1RfSU5GTygiUmVzZXQgaGVpZ2h0IGFuZCB3aWR0aCBhZnRlciBz
dG9wcGluZyBzb3VyY2UiKTsKICAgICBzZXRTaXplKHsgMCwgMCB9KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuaAppbmRleCAyZjA3NGZhZjE0
NDM1NDAxMGJjYWI3ZTU0Y2RiOWVjMDVmMWQyOWNmLi45YmUzOWRlYTNlNjA1NjBjZTRlMDYwNDdh
NDU4NGQ2MzU3ZTY2MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVv
Q2FwdHVyZVNvdXJjZS5oCkBAIC0yOSwxMyArMjksMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVW
aWRlb0NhcHR1cmVTb3VyY2UgeworY2xhc3MgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlIDog
cHVibGljIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLCBHU3RyZWFtZXJDYXB0dXJlcjo6T2Jz
ZXJ2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGUo
U3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBNZWRpYUNvbnN0cmFp
bnRzKik7CisgICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZVBpcGV3aXJlU291
cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgTWVkaWFDb25z
dHJhaW50cyosIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUpOworCiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFZpZGVvQ2FwdHVyZUZhY3RvcnkmIGZhY3RvcnkoKTsKIAotICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgdGhpcy4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRGlzcGxheUNhcHR1
cmVGYWN0b3J5JiBkaXNwbGF5RmFjdG9yeSgpOyAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
RGlzcGxheUNhcHR1cmVGYWN0b3J5JiBkaXNwbGF5RmFjdG9yeSgpOwogCiAgICAgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgb3ZlcnJpZGU7CiAg
ICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIG92ZXJyaWRl
OwpAQCAtNDMsOCArNDQsMTEgQEAgcHVibGljOgogICAgIEdTdHJlYW1lckNhcHR1cmVyKiBjYXB0
dXJlcigpIHsgcmV0dXJuIG1fY2FwdHVyZXIuZ2V0KCk7IH0KICAgICB2b2lkIHByb2Nlc3NOZXdG
cmFtZShSZWY8TWVkaWFTYW1wbGU+JiYpOwogCisgICAgLy8gR1N0cmVhbWVyQ2FwdHVyZXI6Ok9i
c2VydmVyCisgICAgdm9pZCBzb3VyY2VDYXBzQ2hhbmdlZChjb25zdCBHc3RDYXBzKikgZmluYWw7
CisKIHByb3RlY3RlZDoKLSAgICBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoU3RyaW5nJiYg
ZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBnY2hhciAq
IHNvdXJjZV9mYWN0b3J5KTsKKyAgICBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoU3RyaW5n
JiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBnY2hh
ciogc291cmNlX2ZhY3RvcnksIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUpOwogICAgIEdTdHJl
YW1lclZpZGVvQ2FwdHVyZVNvdXJjZShHU3RyZWFtZXJDYXB0dXJlRGV2aWNlLCBTdHJpbmcmJiBo
YXNoU2FsdCk7CiAgICAgdmlydHVhbCB+R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKCk7CiAg
ICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZTsKQEAgLTU1LDcgKzU5LDcgQEAg
cHJvdGVjdGVkOgogCiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwogICAgIG11dGFibGUgc3RkOjpvcHRpb25h
bDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOwotICAgIENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYTsgfQorICAgIENhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGV2
aWNlVHlwZTsgfQogCiBwcml2YXRlOgogICAgIHN0YXRpYyBHc3RGbG93UmV0dXJuIG5ld1NhbXBs
ZUNhbGxiYWNrKEdzdEVsZW1lbnQqLCBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UqKTsKQEAg
LTY0LDYgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlv
blNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+KSBmaW5hbDsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPiBtX2NhcHR1cmVyOworICAgIENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGUgbV9kZXZpY2VUeXBlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuY3Bw
CmluZGV4IDJkOGFkYzEwNGE1MTc5MzEwMWNmYWVkYTIxOGMyM2U2MzQ1NDFiYjYuLmQxYTgwYzI0
OWI3ZDU1MDVmYjhjYzI3MWZmZjJlZTg1YWZlYTQ1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyVmlkZW9DYXB0dXJlci5jcHAKQEAgLTI1LDE2ICsyNSwzOSBAQAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIFVTRShHU1RSRUFNRVIpCiAjaW5jbHVkZSAiR1N0cmVhbWVyVmlk
ZW9DYXB0dXJlci5oIgogCitHU1RfREVCVUdfQ0FURUdPUlkod2Via2l0X3ZpZGVvX2NhcHR1cmVy
X2RlYnVnKTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF92aWRlb19jYXB0dXJlcl9k
ZWJ1ZworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVEZWJ1
Z0NhdGVnb3J5KCkKK3sKKyAgICBlbnN1cmVHU3RyZWFtZXJJbml0aWFsaXplZCgpOworCisgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIGRlYnVnUmVnaXN0ZXJlZEZsYWc7CisgICAgc3RkOjpjYWxs
X29uY2UoZGVidWdSZWdpc3RlcmVkRmxhZywgW10geworICAgICAgICBHU1RfREVCVUdfQ0FURUdP
UllfSU5JVCh3ZWJraXRfdmlkZW9fY2FwdHVyZXJfZGVidWcsICJ3ZWJraXR2aWRlb2NhcHR1cmVy
IiwgMCwgIldlYktpdCBWaWRlbyBDYXB0dXJlciIpOworICAgIH0pOworfQorCiBHU3RyZWFtZXJW
aWRlb0NhcHR1cmVyOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVyKEdTdHJlYW1lckNhcHR1cmVEZXZp
Y2UgZGV2aWNlKQogICAgIDogR1N0cmVhbWVyQ2FwdHVyZXIoZGV2aWNlLCBhZG9wdEdSZWYoZ3N0
X2NhcHNfbmV3X2VtcHR5X3NpbXBsZSgidmlkZW8veC1yYXciKSkpCiB7CisgICAgaW5pdGlhbGl6
ZURlYnVnQ2F0ZWdvcnkoKTsKIH0KIAotR1N0cmVhbWVyVmlkZW9DYXB0dXJlcjo6R1N0cmVhbWVy
VmlkZW9DYXB0dXJlcihjb25zdCBjaGFyKiBzb3VyY2VGYWN0b3J5KQotICAgIDogR1N0cmVhbWVy
Q2FwdHVyZXIoc291cmNlRmFjdG9yeSwgYWRvcHRHUmVmKGdzdF9jYXBzX25ld19lbXB0eV9zaW1w
bGUoInZpZGVvL3gtcmF3IikpKQorR1N0cmVhbWVyVmlkZW9DYXB0dXJlcjo6R1N0cmVhbWVyVmlk
ZW9DYXB0dXJlcihjb25zdCBjaGFyKiBzb3VyY2VGYWN0b3J5LCBDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlIGRldmljZVR5cGUpCisgICAgOiBHU3RyZWFtZXJDYXB0dXJlcihzb3VyY2VGYWN0b3J5
LCBhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X2VtcHR5X3NpbXBsZSgidmlkZW8veC1yYXciKSksIGRl
dmljZVR5cGUpCiB7CisgICAgaW5pdGlhbGl6ZURlYnVnQ2F0ZWdvcnkoKTsKK30KKworR3N0RWxl
bWVudCogR1N0cmVhbWVyVmlkZW9DYXB0dXJlcjo6Y3JlYXRlU291cmNlKCkKK3sKKyAgICBhdXRv
KiBzcmMgPSBHU3RyZWFtZXJDYXB0dXJlcjo6Y3JlYXRlU291cmNlKCk7CisgICAgaWYgKG1fZmQp
CisgICAgICAgIGdfb2JqZWN0X3NldChtX3NyYy5nZXQoKSwgImZkIiwgKm1fZmQsIG51bGxwdHIp
OworICAgIHJldHVybiBzcmM7CiB9CiAKIEdzdEVsZW1lbnQqIEdTdHJlYW1lclZpZGVvQ2FwdHVy
ZXI6OmNyZWF0ZUNvbnZlcnRlcigpCkBAIC01MiwxMSArNzUsMjkgQEAgR3N0VmlkZW9JbmZvIEdT
dHJlYW1lclZpZGVvQ2FwdHVyZXI6OmdldEJlc3RGb3JtYXQoKQogICAgIHJldHVybiBpbmZvOwog
fQogCit2b2lkIEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OnNldFBpcGV3aXJlRkQoaW50IGZkKQor
eworICAgIG1fZmQgPSBmZDsKK30KKwogYm9vbCBHU3RyZWFtZXJWaWRlb0NhcHR1cmVyOjpzZXRT
aXplKGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKKyAgICBpZiAobV9mZC5oYXNfdmFsdWUoKSkg
eworICAgICAgICAvLyBQaXBld2lyZXNyYyBkb2Vzbid0IHNlZW0gdG8gc3VwcG9ydCBjYXBzIHJl
LW5lZ290aWF0aW9uIGFuZCBmcmFtZXJhdGUgY29uZmlndXJhdGlvbiBwcm9wZXJseS4KKyAgICAg
ICAgR1NUX0ZJWE1FX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAiUmVzaXppbmcgZGlzYWJsZWQg
b24gZGlzcGxheSBjYXB0dXJlIHNvdXJjZSIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKICAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAor
ICAgIGF1dG8gdmlkZW9SZXNvbHV0aW9uID0gZ2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMobV9j
YXBzLmdldCgpKTsKKyAgICBpZiAodmlkZW9SZXNvbHV0aW9uICYmIHZpZGVvUmVzb2x1dGlvbi0+
d2lkdGgoKSA9PSB3aWR0aCAmJiB2aWRlb1Jlc29sdXRpb24tPmhlaWdodCgpID09IGhlaWdodCkg
eworICAgICAgICBHU1RfREVCVUdfT0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCksICJTaXplIGhhcyBu
b3QgY2hhbmdlZCIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBHU1RfSU5G
T19PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwgIlNldHRpbmcgc2l6ZSB0byAlZHglZCIsIHdpZHRo
LCBoZWlnaHQpOwogICAgIG1fY2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19jb3B5KG1fY2Fwcy5n
ZXQoKSkpOwogICAgIGdzdF9jYXBzX3NldF9zaW1wbGUobV9jYXBzLmdldCgpLCAid2lkdGgiLCBH
X1RZUEVfSU5ULCB3aWR0aCwgImhlaWdodCIsIEdfVFlQRV9JTlQsIGhlaWdodCwgbnVsbHB0cik7
CiAKQEAgLTY0LDEyICsxMDUsMTcgQEAgYm9vbCBHU3RyZWFtZXJWaWRlb0NhcHR1cmVyOjpzZXRT
aXplKGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Z19vYmplY3Rfc2V0KG1fY2Fwc2ZpbHRlci5nZXQoKSwgImNhcHMiLCBtX2NhcHMuZ2V0KCksIG51
bGxwdHIpOwotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgR1N0cmVhbWVyVmlkZW9DYXB0
dXJlcjo6c2V0RnJhbWVSYXRlKGRvdWJsZSBmcmFtZVJhdGUpCiB7CisgICAgaWYgKG1fZmQuaGFz
X3ZhbHVlKCkpIHsKKyAgICAgICAgLy8gUGlwZXdpcmVzcmMgZG9lc24ndCBzZWVtIHRvIHN1cHBv
cnQgY2FwcyByZS1uZWdvdGlhdGlvbiBhbmQgZnJhbWVyYXRlIGNvbmZpZ3VyYXRpb24gcHJvcGVy
bHkuCisgICAgICAgIEdTVF9GSVhNRV9PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwgIkZyYW1lcmF0
ZSBvdmVycmlkZSBkaXNhYmxlZCBvbiBkaXNwbGF5IGNhcHR1cmUgc291cmNlIik7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKwogICAgIGludCBudW1lcmF0b3IsIGRlbm9taW5hdG9yOwog
CiAgICAgZ3N0X3V0aWxfZG91YmxlX3RvX2ZyYWN0aW9uKGZyYW1lUmF0ZSwgJm51bWVyYXRvciwg
JmRlbm9taW5hdG9yKTsKQEAgLTkwLDYgKzEzNiw3IEBAIGJvb2wgR1N0cmVhbWVyVmlkZW9DYXB0
dXJlcjo6c2V0RnJhbWVSYXRlKGRvdWJsZSBmcmFtZVJhdGUpCiAgICAgaWYgKCFtX2NhcHNmaWx0
ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIEdTVF9JTkZPX09CSkVDVChtX3BpcGVs
aW5lLmdldCgpLCAiU2V0dGluZyBmcmFtZXJhdGUgdG8gJWYgZnBzIiwgZnJhbWVSYXRlKTsKICAg
ICBnX29iamVjdF9zZXQobV9jYXBzZmlsdGVyLmdldCgpLCAiY2FwcyIsIG1fY2Fwcy5nZXQoKSwg
bnVsbHB0cik7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
VmlkZW9DYXB0dXJlci5oCmluZGV4IDQwYTFjNjNkY2IwYjYwNTU1YWJiNjUyYzg0OTA3MTk5ZTIy
MzcyNzguLjcwZDM2NTJkY2I1YmM1ZTNiMGU2MzVkMWNmYTIyYzdkY2UxMWY4ZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJWaWRlb0NhcHR1cmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuaApAQCAtMzMsMTQgKzMzLDE5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdTdHJlYW1lclZpZGVvQ2FwdHVyZXIgZmluYWwg
OiBwdWJsaWMgR1N0cmVhbWVyQ2FwdHVyZXIgewogcHVibGljOgogICAgIEdTdHJlYW1lclZpZGVv
Q2FwdHVyZXIoR1N0cmVhbWVyQ2FwdHVyZURldmljZSk7Ci0gICAgR1N0cmVhbWVyVmlkZW9DYXB0
dXJlcihjb25zdCBjaGFyKiBzb3VyY2VfZmFjdG9yeSk7CisgICAgR1N0cmVhbWVyVmlkZW9DYXB0
dXJlcihjb25zdCBjaGFyKiBzb3VyY2VfZmFjdG9yeSwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlw
ZSk7CiAKKyAgICBHc3RFbGVtZW50KiBjcmVhdGVTb3VyY2UoKSBmaW5hbDsKICAgICBHc3RFbGVt
ZW50KiBjcmVhdGVDb252ZXJ0ZXIoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBuYW1lKCkgZmlu
YWwgeyByZXR1cm4gIlZpZGVvIjsgfQogCiAgICAgYm9vbCBzZXRTaXplKGludCB3aWR0aCwgaW50
IGhlaWdodCk7CiAgICAgYm9vbCBzZXRGcmFtZVJhdGUoZG91YmxlKTsKICAgICBHc3RWaWRlb0lu
Zm8gZ2V0QmVzdEZvcm1hdCgpOworCisgICAgdm9pZCBzZXRQaXBld2lyZUZEKGludCk7Citwcml2
YXRlOgorICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBtX2ZkOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZUdTdHJlYW1lci5jcHAKaW5kZXggNTUwYjEyNTAzNzM0ODc5MmI5MzUzOGQwYmI3MjU3YmQw
MmQ2Mjg4YS4uZGJiZWIxZmUwMjA3OGE3NzU1NTg0ZWUxMzU2ZTk3Y2JmMjY3YWQ2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFt
ZXIuY3BwCkBAIC00NCw3ICs0NCwxOCBAQCBDYXB0dXJlU291cmNlT3JFcnJvciBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZTo6Y3JlYXRlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJgogICAgIGF1
dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1l
cihXVEZNb3ZlKGRldmljZUlEKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCkpKTsK
ICAgICBpZiAoY29uc3RyYWludHMpIHsKICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBzb3VyY2Ut
PmFwcGx5Q29uc3RyYWludHMoKmNvbnN0cmFpbnRzKSkKLSAgICAgICAgICAgIHJldHVybiBXVEZN
b3ZlKGVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGVycm9yLnZh
bHVlKCkuYmFkQ29uc3RyYWludCk7CisgICAgfQorCisgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VP
ckVycm9yKFJlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZShXVEZNb3ZlKHNvdXJjZSkpKTsKK30K
KworQ2FwdHVyZVNvdXJjZU9yRXJyb3IgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXI6
OmNyZWF0ZU1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5n
JiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0
cmFpbnRzKQoreworICAgIGF1dG8gc291cmNlID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3Ry
ZWFtZXI6OmNyZWF0ZUZvck1vY2tEaXNwbGF5Q2FwdHVyZXIoV1RGTW92ZShkZXZpY2VJRCksIFdU
Rk1vdmUobmFtZSksIFdURk1vdmUoaGFzaFNhbHQpKTsKKyAgICBpZiAoY29uc3RyYWludHMpIHsK
KyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBzb3VyY2UtPmFwcGx5Q29uc3RyYWludHMoKmNvbnN0
cmFpbnRzKSkKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGVycm9yLnZhbHVlKCkuYmFkQ29u
c3RyYWludCk7CiAgICAgfQogCiAgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yKFJlYWx0
aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZShXVEZNb3ZlKHNvdXJjZSkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmgKaW5kZXggOWQ2
NDJlNjg5MTRhZjNhNTVkMTg3NGUzNjU2ZDI4Mzk4OWZiNDU4ZC4uMTNkMGY4MTczZGViZDhiMDRj
MzhiYTFlYTNlNjVlNGJkNzUzYjQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmgKQEAgLTMyLDYgKzMyLDggQEAgY2xhc3Mg
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIgZmluYWwgOiBwdWJsaWMgTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2U+IGNyZWF0ZUZvck1vY2tEaXNwbGF5Q2FwdHVyZXIoU3RyaW5nJiYgZGV2aWNlSUQs
IFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0KTsKIAorICAgIHN0YXRpYyBDYXB0dXJl
U291cmNlT3JFcnJvciBjcmVhdGVNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2UoU3RyaW5nJiYgZGV2
aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBNZWRpYUNvbnN0
cmFpbnRzKik7CisKICAgICB+TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIoKSA9IGRl
ZmF1bHQ7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4IDM2NmEx
Nzg1NzNmZjAwZDE2ZGM4Nzc3MTE3MzhjYzg4ZDM3YzgxYjEuLjQwM2ZmMzkzMjhmZTJlMzY5ZDE0
MWZlZmIyOWU0OTAxYWI4NTE1Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCkBAIC00
Nyw2ICs0NywxMCBAQAogI2luY2x1ZGUgIk1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgiCiAj
ZW5kaWYKIAorI2lmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSAiTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VHU3RyZWFtZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRp
YyBpbmxpbmUgVmVjdG9yPE1vY2tNZWRpYURldmljZT4gZGVmYXVsdERldmljZXMoKQpAQCAtMTYw
LDYgKzE2NCw4IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlOjpXaW5kb3c6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICAgICAgcmV0dXJuIERpc3Bs
YXlDYXB0dXJlU291cmNlQ29jb2E6OmNyZWF0ZShVbmlxdWVSZWY8RGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYTo6Q2FwdHVyZXI+KG1ha2VVbmlxdWVSZWY8TW9ja0Rpc3BsYXlDYXB0dXJlcj4oZGV2
aWNlKSksIGRldmljZSwgY29uc3RyYWludHMpOworI2VsaWYgVVNFKEdTVFJFQU1FUikKKyAgICAg
ICAgICAgIHJldHVybiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lcjo6Y3JlYXRlTW9j
a0Rpc3BsYXlDYXB0dXJlU291cmNlKFN0cmluZyB7IGRldmljZS5wZXJzaXN0ZW50SWQoKSB9LCBT
dHJpbmcgeyBkZXZpY2UubGFiZWwoKSB9LCBTdHJpbmcgeyB9LCBjb25zdHJhaW50cyk7CiAjZWxz
ZQogICAgICAgICAgICAgcmV0dXJuIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoU3Ry
aW5nIHsgZGV2aWNlLnBlcnNpc3RlbnRJZCgpIH0sIFN0cmluZyB7IGRldmljZS5sYWJlbCgpIH0s
IFN0cmluZyB7IH0sIGNvbnN0cmFpbnRzKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAppbmRleCA1
OTRlYzJiMjU4ODE0M2Y2N2NhZGIzNmY5NDVmNjMyOTdmNDQ1N2M4Li5lZTBjZmY2NDA4Y2YwMWRi
ZmM3Njc2YzE2ZjRjYzhkMWZhZGFlMjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcApAQCAtMTMxLDYgKzEz
MSwxMCBAQCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZTo6Y2FwYWJpbGl0aWVzKCkKICAgICAgICAgICAgIGNhcGFiaWxpdGllcy5z
ZXREZXZpY2VJZChoYXNoZWRJZCgpKTsKICAgICAgICAgICAgIHVwZGF0ZUNhcGFiaWxpdGllcyhj
YXBhYmlsaXRpZXMpOwogICAgICAgICAgICAgY2FwYWJpbGl0aWVzLnNldERldmljZUlkKGhhc2hl
ZElkKCkpOworICAgICAgICB9IGVsc2UgaWYgKG1vY2tEaXNwbGF5KCkpIHsKKyAgICAgICAgICAg
IGNhcGFiaWxpdGllcy5zZXRXaWR0aChDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDcyLCBXVEY6Omdl
dDxNb2NrRGlzcGxheVByb3BlcnRpZXM+KG1fZGV2aWNlLnByb3BlcnRpZXMpLmRlZmF1bHRTaXpl
LndpZHRoKCkpKTsKKyAgICAgICAgICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHQoQ2FwYWJpbGl0
eVZhbHVlT3JSYW5nZSg0NSwgV1RGOjpnZXQ8TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPihtX2Rldmlj
ZS5wcm9wZXJ0aWVzKS5kZWZhdWx0U2l6ZS5oZWlnaHQoKSkpOworICAgICAgICAgICAgY2FwYWJp
bGl0aWVzLnNldEZyYW1lUmF0ZShDYXBhYmlsaXR5VmFsdWVPclJhbmdlKC4wMSwgNjAuMCkpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY2FwYWJpbGl0aWVzLnNldFdpZHRoKENhcGFi
aWxpdHlWYWx1ZU9yUmFuZ2UoNzIsIDI4ODApKTsKICAgICAgICAgICAgIGNhcGFiaWxpdGllcy5z
ZXRIZWlnaHQoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSg0NSwgMTgwMCkpOwpAQCAtNDI4LDYgKzQz
Miw5IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmdlbmVyYXRlRnJhbWUoKQogICAg
ICAgICBtX2RlbGF5VW50aWwgPSBNb25vdG9uaWNUaW1lKCk7CiAgICAgfQogCisgICAgaWYgKG1v
Y2tEaXNwbGF5KCkgJiYgIW1fZnJhbWVOdW1iZXIpCisgICAgICAgIGVuc3VyZUludHJpbnNpY1Np
emVNYWludGFpbnNBc3BlY3RSYXRpbygpOworCiAgICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlciA9IGlt
YWdlQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTQzNSw3
ICs0NDIsNyBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpnZW5lcmF0ZUZyYW1lKCkK
ICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBidWZmZXItPmNvbnRleHQoKTsKICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKLSAgICBhdXRv
IHNpemUgPSBjYXB0dXJlU2l6ZSgpOworICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNpemUoKTsKICAg
ICBGbG9hdFJlY3QgZnJhbWVSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSk7CiAKICAgICBjb250ZXh0
LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUpLCBtX2ZpbGxDb2xvcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVv
U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVv
U291cmNlLmgKaW5kZXggZjA1ZTVhMzI2ZWMyZDM0MDVmMjllZWZhYTBlYWI1MjFiMWI1NDYyMi4u
OWIyYzk5OWVlMGE0YTljMGNhNjMzNTMyODFlOTI1NDc3YjdlNzcyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaApA
QCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkg
ZmluYWw7CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgIGJvb2wgaXND
YXB0dXJlU291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYTsgfQorICAgIENhcHR1cmVEZXZpY2U6OkRldmlj
ZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1vY2tDYW1lcmEoKSA/IENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSA6IENhcHR1cmVEZXZpY2U6OkRldmljZVR5
cGU6OlNjcmVlbjsgfQogICAgIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0
aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25h
bDxkb3VibGU+KSBmaW5hbDsKICAgICB2b2lkIHNldFNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRp
b25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4pIGZpbmFsOwogICAgIHZvaWQgc2V0RnJhbWVSYXRlV2l0aFByZXNldChkb3VibGUs
IFJlZlB0cjxWaWRlb1ByZXNldD4pIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCmluZGV4IDBhZmQ5N2JlNDY0Y2ViNjA5
ZjFjNDNhYTcyMGYzYjRjMjk3Nzc4YmQuLjgzNjdiMjM4ZjIyY2Y4YTQ1NDdmOGVmN2VjNzY3YmVi
YjBhN2IyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRVSUNsaWVudC5jcHAKQEAgLTM1Miw2ICszNTIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAg
d2Via2l0V2ViVmlld0lzUGxheWluZ0F1ZGlvQ2hhbmdlZChtX3dlYlZpZXcpOwogICAgIH0KIAor
ICAgIHZvaWQgbWVkaWFDYXB0dXJlU3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6TWVkaWFQcm9kdWNl
cjo6TWVkaWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGVGbGFncykgZmluYWwKKyAgICB7CisgICAgICAg
IHdlYmtpdFdlYlZpZXdNZWRpYUNhcHR1cmVTdGF0ZURpZENoYW5nZShtX3dlYlZpZXcsIG1lZGlh
U3RhdGVGbGFncyk7CisgICAgfQorCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICB2b2lk
IHJlcXVlc3RQb2ludGVyTG9jayhXZWJQYWdlUHJveHkqIHBhZ2UpIGZpbmFsCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwCmluZGV4IGYwOGJmYzExMGY4YTA4
NzE2MWZlMmFmOTIxODEwZDE5ODFiODRlNTUuLjNkOTk3YTMyZjhlY2MzZWYwODk2Yjc3ZDRhODNi
YWE4ZjA1OGE2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAK
QEAgLTEzNiw2ICsxMzYsMjAgQEAgZ2Jvb2xlYW4gd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lv
bl9pc19mb3JfdmlkZW9fZGV2aWNlKFdlYktpdFVzZXJNZWRpYVBlcm1pc3MKICAgICByZXR1cm4g
cmVxdWVzdC0+cHJpdi0+cmVxdWVzdC0+cmVxdWlyZXNWaWRlb0NhcHR1cmUoKTsKIH0KIAorLyoq
CisgKiB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9kaXNwbGF5X2RldmljZToK
KyAqIEByZXF1ZXN0OiBhICNXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAorICoKKyAq
IFJldHVybnM6ICVUUlVFIGlmIGFjY2VzcyB0byBhIGRpc3BsYXkgZGV2aWNlIHdhcyByZXF1ZXN0
ZWQuCisgKgorICogU2luY2U6IDIuMzQKKyAqLworZ2Jvb2xlYW4gd2Via2l0X3VzZXJfbWVkaWFf
cGVybWlzc2lvbl9pc19mb3JfZGlzcGxheV9kZXZpY2UoV2ViS2l0VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocmVxdWVzdC0+
cHJpdi0+cmVxdWVzdCwgRkFMU0UpOworICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT5yZXF1ZXN0
LT5yZXF1aXJlc0Rpc3BsYXlDYXB0dXJlKCk7Cit9CisKIHN0YXRpYyB2b2lkIHdlYmtpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBw
cm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKIHsKICAgICBXZWJL
aXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9VU0VSX01FRElB
X1BFUk1JU1NJT05fUkVRVUVTVChvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA2ZGQ5ZjIwZTRmZjJi
ZGEwMTg0ZDA2NDUzMDFjZWYyMmU0N2RjZjE1Li4zMmVjOTE0ZDc2Nzk5Zjk0NWRkYzY5OWM2MTNl
MzFjYTE2NDE2MTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMzg1LDEzICszODUsMjEgQEAgc3RhdGljIHZv
aWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX2NvbnRleHRfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0
ZWQob2JqZWN0KTsKIAotICAgIEdVbmlxdWVQdHI8Y2hhcj4gYnVuZGxlRmlsZW5hbWUoZ19idWls
ZF9maWxlbmFtZShpbmplY3RlZEJ1bmRsZURpcmVjdG9yeSgpLCBJTkpFQ1RFRF9CVU5ETEVfRklM
RU5BTUUsIG51bGxwdHIpKTsKKyAgICBjb25zdCBjaGFyKiBidW5kbGVGaWxlbmFtZSA9IElOSkVD
VEVEX0JVTkRMRV9GSUxFTkFNRTsKKyNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCisgICAgY29u
c3QgY2hhciogb3ZlcnJpZGRlbkJ1bmRsZUZpbGVuYW1lID0gZ2V0ZW52KCJURVNUX1dFQktJVF9B
UElfV0VCS0lUMl9JTkpFQ1RFRF9CVU5ETEVfRklMRU5BTUUiKTsKKyAgICBpZiAob3ZlcnJpZGRl
bkJ1bmRsZUZpbGVuYW1lKQorICAgICAgICBidW5kbGVGaWxlbmFtZSA9IG92ZXJyaWRkZW5CdW5k
bGVGaWxlbmFtZTsKKyNlbmRpZgorCisgICAgR1VuaXF1ZVB0cjxjaGFyPiBidW5kbGVBYnNvbHV0
ZUZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoaW5qZWN0ZWRCdW5kbGVEaXJlY3RvcnkoKSwgYnVu
ZGxlRmlsZW5hbWUsIG51bGxwdHIpKTsKIAogICAgIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRl
eHQgPSBXRUJLSVRfV0VCX0NPTlRFWFQob2JqZWN0KTsKICAgICBXZWJLaXRXZWJDb250ZXh0UHJp
dmF0ZSogcHJpdiA9IHdlYkNvbnRleHQtPnByaXY7CiAKKwogICAgIEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247Ci0gICAgY29uZmlndXJhdGlvbi5zZXRJbmplY3Rl
ZEJ1bmRsZVBhdGgoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihidW5kbGVGaWxlbmFtZS5nZXQoKSkpOworICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5qZWN0ZWRC
dW5kbGVQYXRoKEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
YnVuZGxlQWJzb2x1dGVGaWxlbmFtZS5nZXQoKSkpOwogICAgIGNvbmZpZ3VyYXRpb24uc2V0VXNl
c1dlYlByb2Nlc3NDYWNoZSh0cnVlKTsKICNpZiBQTEFURk9STShHVEspCiAgICAgY29uZmlndXJh
dGlvbi5zZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24ocHJpdi0+cHNvbkVuYWJsZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApp
bmRleCBkOTNlYWI5M2E3OWJiZTMwMDVhNTEwMjI0Nzk4ZmY5OTU2YzlhZTE5Li5mZTk0MmEzMDY0
YWUzMTA4NzJiYzI4M2FlNzRmYmRlNTNkZTUwNWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjA3LDYgKzIwNywxMCBA
QCBlbnVtIHsKICAgICBQUk9QX1dFQlNJVEVfUE9MSUNJRVMsCiAgICAgUFJPUF9JU19XRUJfUFJP
Q0VTU19SRVNQT05TSVZFLAogCisgICAgUFJPUF9DQU1FUkFfQ0FQVFVSRV9TVEFURSwKKyAgICBQ
Uk9QX01JQ1JPUEhPTkVfQ0FQVFVSRV9TVEFURSwKKyAgICBQUk9QX0RJU1BMQVlfQ0FQVFVSRV9T
VEFURSwKKwogICAgIE5fUFJPUEVSVElFUywKIH07CiAKQEAgLTM1Miw2ICszNTYsMTYgQEAgdm9p
ZCB3ZWJraXRXZWJWaWV3SXNQbGF5aW5nQXVkaW9DaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCiAgICAgZ19vYmplY3Rfbm90aWZ5X2J5X3BzcGVjKEdfT0JKRUNUKHdlYlZpZXcpLCBzT2Jq
UHJvcGVydGllc1tQUk9QX0lTX1BMQVlJTkdfQVVESU9dKTsKIH0KIAordm9pZCB3ZWJraXRXZWJW
aWV3TWVkaWFDYXB0dXJlU3RhdGVEaWRDaGFuZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2Vi
Q29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGVGbGFncykKK3sK
KyAgICBpZiAobWVkaWFTdGF0ZUZsYWdzLmNvbnRhaW5zQW55KFdlYkNvcmU6Ok1lZGlhUHJvZHVj
ZXI6OkF1ZGlvQ2FwdHVyZU1hc2spKQorICAgICAgICBnX29iamVjdF9ub3RpZnlfYnlfcHNwZWMo
R19PQkpFQ1Qod2ViVmlldyksIHNPYmpQcm9wZXJ0aWVzW1BST1BfTUlDUk9QSE9ORV9DQVBUVVJF
X1NUQVRFXSk7CisgICAgaWYgKG1lZGlhU3RhdGVGbGFncy5jb250YWluc0FueShXZWJDb3JlOjpN
ZWRpYVByb2R1Y2VyOjpWaWRlb0NhcHR1cmVNYXNrKSkKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5
X2J5X3BzcGVjKEdfT0JKRUNUKHdlYlZpZXcpLCBzT2JqUHJvcGVydGllc1tQUk9QX0NBTUVSQV9D
QVBUVVJFX1NUQVRFXSk7CisgICAgaWYgKG1lZGlhU3RhdGVGbGFncy5jb250YWluc0FueShXZWJD
b3JlOjpNZWRpYVByb2R1Y2VyOjpEaXNwbGF5Q2FwdHVyZU1hc2spKQorICAgICAgICBnX29iamVj
dF9ub3RpZnlfYnlfcHNwZWMoR19PQkpFQ1Qod2ViVmlldyksIHNPYmpQcm9wZXJ0aWVzW1BST1Bf
RElTUExBWV9DQVBUVVJFX1NUQVRFXSk7Cit9CisKIGNsYXNzIFBhZ2VMb2FkU3RhdGVPYnNlcnZl
ciBmaW5hbCA6IHB1YmxpYyBQYWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC04NzIsNiArODg2LDE1IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYlZpZXdTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwg
Y29uc3QgR1ZhbHVlCiAgICAgY2FzZSBQUk9QX1dFQlNJVEVfUE9MSUNJRVM6CiAgICAgICAgIHdl
YlZpZXctPnByaXYtPndlYnNpdGVQb2xpY2llcyA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVQ
b2xpY2llcyo+KGdfdmFsdWVfZ2V0X29iamVjdCh2YWx1ZSkpOwogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfQ0FNRVJBX0NBUFRVUkVfU1RBVEU6CisgICAgICAgIHdlYmtpdF93ZWJfdmll
d19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUod2ViVmlldywgc3RhdGljX2Nhc3Q8V2ViS2l0TWVk
aWFDYXB0dXJlU3RhdGU+KGdfdmFsdWVfZ2V0X2VudW0odmFsdWUpKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9NSUNST1BIT05FX0NBUFRVUkVfU1RBVEU6CisgICAgICAgIHdlYmtp
dF93ZWJfdmlld19zZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcsIHN0YXRpY19j
YXN0PFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlPihnX3ZhbHVlX2dldF9lbnVtKHZhbHVlKSkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRElTUExBWV9DQVBUVVJFX1NUQVRFOgorICAg
ICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3LCBz
dGF0aWNfY2FzdDxXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZT4oZ192YWx1ZV9nZXRfZW51bSh2YWx1
ZSkpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FS
Tl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOwogICAgIH0K
QEAgLTk0Myw2ICs5NjYsMTUgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0dldFByb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHUKICAgICBjYXNlIFBS
T1BfSVNfV0VCX1BST0NFU1NfUkVTUE9OU0lWRToKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVh
bih2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF9pc193ZWJfcHJvY2Vzc19yZXNwb25zaXZlKHdl
YlZpZXcpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0NBTUVSQV9DQVBUVVJFX1NU
QVRFOgorICAgICAgICBnX3ZhbHVlX3NldF9lbnVtKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2NhbWVyYV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX01JQ1JPUEhPTkVfQ0FQVFVSRV9TVEFURToKKyAgICAgICAgZ192YWx1ZV9zZXRfZW51
bSh2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUod2Vi
VmlldykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRElTUExBWV9DQVBUVVJFX1NU
QVRFOgorICAgICAgICBnX3ZhbHVlX3NldF9lbnVtKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3KSk7CisgICAgICAgIGJyZWFrOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BJZCwgcGFyYW1TcGVjKTsKICAgICB9CkBAIC0xMzM3LDYgKzEzNjksNjkgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJW
aWV3Q2xhc3MpCiAgICAgICAgICAgICBUUlVFLAogICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JF
QURBQkxFKTsKIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6Y2FtZXJhLWNhcHR1cmUt
c3RhdGU6CisgICAgICoKKyAgICAgKiBDYXB0dXJlIHN0YXRlIG9mIHRoZSBjYW1lcmEgZGV2aWNl
LiBXaGVuZXZlciB0aGUgdXNlciBncmFudHMgYSBtZWRpYS1yZXF1ZXN0IHNlbnQgYnkgdGhlIHdl
YgorICAgICAqIHBhZ2UsIHJlcXVlc3RpbmcgdmlkZW8gY2FwdHVyZSBjYXBhYmlsaXRpZXMgKGBu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7dmlkZW86CisgICAgICogdHJ1ZX0p
YCkgdGhpcyBwcm9wZXJ0eSB3aWxsIGJlIHNldCB0byBAV0VCS0lUX01FRElBX0NBUFRVUkVfU1RB
VEVfQUNUSVZFLgorICAgICAqCisgICAgICogVGhlIGFwcGxpY2F0aW9uIGNhbiBtb25pdG9yIHRo
aXMgcHJvcGVydHkgYW5kIHByb3ZpZGUgYSB2aXN1YWwgaW5kaWNhdG9yIGFsbG93aW5nIG9wdGlv
bmFsbHkKKyAgICAgKiB0byBkZWFjdGl2YXRlIG9yIG11dGUgdGhlIGNhcHR1cmUgZGV2aWNlIGJ5
IHNldHRpbmcgdGhpcyBwcm9wZXJ0eSByZXNwZWN0aXZlbHkgdG8KKyAgICAgKiBAV0VCS0lUX01F
RElBX0NBUFRVUkVfU1RBVEVfTk9ORSBvciBAV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVU
RUQuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4zNAorICAgICAqLworICAgIHNPYmpQcm9wZXJ0
aWVzW1BST1BfQ0FNRVJBX0NBUFRVUkVfU1RBVEVdID0gZ19wYXJhbV9zcGVjX2VudW0oCisgICAg
ICAgICJjYW1lcmEtY2FwdHVyZS1zdGF0ZSIsCisgICAgICAgICJDYW1lcmEgQ2FwdHVyZSBTdGF0
ZSIsCisgICAgICAgIF8oIlRoZSBjYXB0dXJlIHN0YXRlIG9mIHRoZSBjYW1lcmEgZGV2aWNlIiks
CisgICAgICAgIFdFQktJVF9UWVBFX01FRElBX0NBUFRVUkVfU1RBVEUsCisgICAgICAgIFdFQktJ
VF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUsCisgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJ
VEUpOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzptaWNyb3Bob25lLWNhcHR1cmUt
c3RhdGU6CisgICAgICoKKyAgICAgKiBDYXB0dXJlIHN0YXRlIG9mIHRoZSBtaWNyb3Bob25lIGRl
dmljZS4gV2hlbmV2ZXIgdGhlIHVzZXIgZ3JhbnRzIGEgbWVkaWEtcmVxdWVzdCBzZW50IGJ5IHRo
ZSB3ZWIKKyAgICAgKiBwYWdlLCByZXF1ZXN0aW5nIGF1ZGlvIGNhcHR1cmUgY2FwYWJpbGl0aWVz
IChgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOgorICAgICAqIHRy
dWV9KWApIHRoaXMgcHJvcGVydHkgd2lsbCBiZSBzZXQgdG8gQFdFQktJVF9NRURJQV9DQVBUVVJF
X1NUQVRFX0FDVElWRS4KKyAgICAgKgorICAgICAqIFRoZSBhcHBsaWNhdGlvbiBjYW4gbW9uaXRv
ciB0aGlzIHByb3BlcnR5IGFuZCBwcm92aWRlIGEgdmlzdWFsIGluZGljYXRvciBhbGxvd2luZyBv
cHRpb25hbGx5CisgICAgICogdG8gZGVhY3RpdmF0ZSBvciBtdXRlIHRoZSBjYXB0dXJlIGRldmlj
ZSBieSBzZXR0aW5nIHRoaXMgcHJvcGVydHkgcmVzcGVjdGl2ZWx5IHRvCisgICAgICogQFdFQktJ
VF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUgb3IgQFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRF
X01VVEVELgorICAgICAqCisgICAgICogU2luY2U6IDIuMzQKKyAgICAgKi8KKyAgICBzT2JqUHJv
cGVydGllc1tQUk9QX01JQ1JPUEhPTkVfQ0FQVFVSRV9TVEFURV0gPSBnX3BhcmFtX3NwZWNfZW51
bSgKKyAgICAgICAgIm1pY3JvcGhvbmUtY2FwdHVyZS1zdGF0ZSIsCisgICAgICAgICJNaWNyb3Bo
b25lIENhcHR1cmUgU3RhdGUiLAorICAgICAgICBfKCJUaGUgY2FwdHVyZSBzdGF0ZSBvZiB0aGUg
bWljcm9waG9uZSBkZXZpY2UiKSwKKyAgICAgICAgV0VCS0lUX1RZUEVfTUVESUFfQ0FQVFVSRV9T
VEFURSwKKyAgICAgICAgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSwKKyAgICAgICAg
V0VCS0lUX1BBUkFNX1JFQURXUklURSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3
OmRpc3BsYXktY2FwdHVyZS1zdGF0ZToKKyAgICAgKgorICAgICAqIENhcHR1cmUgc3RhdGUgb2Yg
dGhlIGRpc3BsYXkgZGV2aWNlLiBXaGVuZXZlciB0aGUgdXNlciBncmFudHMgYSBtZWRpYS1yZXF1
ZXN0IHNlbnQgYnkgdGhlIHdlYgorICAgICAqIHBhZ2UsIHJlcXVlc3Rpbmcgc2NyZWVuY2FzdGlu
ZyBjYXBhYmlsaXRpZXMgKGBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldERpc3BsYXlNZWRpYSgp
IHRoaXMKKyAgICAgKiBwcm9wZXJ0eSB3aWxsIGJlIHNldCB0byBAV0VCS0lUX01FRElBX0NBUFRV
UkVfU1RBVEVfQUNUSVZFLgorICAgICAqCisgICAgICogVGhlIGFwcGxpY2F0aW9uIGNhbiBtb25p
dG9yIHRoaXMgcHJvcGVydHkgYW5kIHByb3ZpZGUgYSB2aXN1YWwgaW5kaWNhdG9yIGFsbG93aW5n
IG9wdGlvbmFsbHkKKyAgICAgKiB0byBkZWFjdGl2YXRlIG9yIG11dGUgdGhlIGNhcHR1cmUgZGV2
aWNlIGJ5IHNldHRpbmcgdGhpcyBwcm9wZXJ0eSByZXNwZWN0aXZlbHkgdG8KKyAgICAgKiBAV0VC
S0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSBvciBAV0VCS0lUX01FRElBX0NBUFRVUkVfU1RB
VEVfTVVURUQuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4zNAorICAgICAqLworICAgIHNPYmpQ
cm9wZXJ0aWVzW1BST1BfRElTUExBWV9DQVBUVVJFX1NUQVRFXSA9IGdfcGFyYW1fc3BlY19lbnVt
KAorICAgICAgICAiZGlzcGxheS1jYXB0dXJlLXN0YXRlIiwKKyAgICAgICAgIkRpc3BsYXkgQ2Fw
dHVyZSBTdGF0ZSIsCisgICAgICAgIF8oIlRoZSBjYXB0dXJlIHN0YXRlIG9mIHRoZSBkaXNwbGF5
IGRldmljZSIpLAorICAgICAgICBXRUJLSVRfVFlQRV9NRURJQV9DQVBUVVJFX1NUQVRFLAorICAg
ICAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FLAorICAgICAgICBXRUJLSVRfUEFS
QU1fUkVBRFdSSVRFKTsKKwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydGllcyhn
T2JqZWN0Q2xhc3MsIE5fUFJPUEVSVElFUywgc09ialByb3BlcnRpZXMpOwogCiAgICAgLyoqCkBA
IC00NzU0LDMgKzQ4NDksMTc0IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9jb3JzX2FsbG93
bGlzdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogY29uCiAKICAgICBnZXRQ
YWdlKHdlYlZpZXcpLnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhXVEZNb3ZlKGFsbG93TGlzdFZl
Y3RvcikpOwogfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uZmlndXJlTWVkaWFDYXB0
dXJlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlh
Q2FwdHVyZUtpbmQgY2FwdHVyZUtpbmQsIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlIGNhcHR1cmVT
dGF0ZSwgYm9vbCBpc0Zyb21EaXNwbGF5Q2FwdHVyZSA9IGZhbHNlKQoreworICAgIGF1dG8mIHBh
Z2UgPSBnZXRQYWdlKHdlYlZpZXcpOworICAgIGF1dG8gbXV0ZWRTdGF0ZSA9IHBhZ2UubXV0ZWRT
dGF0ZUZsYWdzKCk7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBjb21wbGV0aW9uSGFu
ZGxlciA9IFt3ZWJWaWV3LCBjYXB0dXJlS2luZCwgaXNGcm9tRGlzcGxheUNhcHR1cmVdIHsKKyAg
ICAgICAgaWYgKGlzRnJvbURpc3BsYXlDYXB0dXJlKSB7CisgICAgICAgICAgICBnX29iamVjdF9u
b3RpZnlfYnlfcHNwZWMoR19PQkpFQ1Qod2ViVmlldyksIHNPYmpQcm9wZXJ0aWVzW1BST1BfRElT
UExBWV9DQVBUVVJFX1NUQVRFXSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgc3dpdGNoIChjYXB0dXJlS2luZCkgeworICAgICAgICBjYXNlIFdlYkNvcmU6Ok1lZGlh
UHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OkF1ZGlvOgorICAgICAgICAgICAgZ19vYmplY3Rf
bm90aWZ5X2J5X3BzcGVjKEdfT0JKRUNUKHdlYlZpZXcpLCBzT2JqUHJvcGVydGllc1tQUk9QX01J
Q1JPUEhPTkVfQ0FQVFVSRV9TVEFURV0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6VmlkZW86CisgICAg
ICAgICAgICBnX29iamVjdF9ub3RpZnlfYnlfcHNwZWMoR19PQkpFQ1Qod2ViVmlldyksIHNPYmpQ
cm9wZXJ0aWVzW1BST1BfQ0FNRVJBX0NBUFRVUkVfU1RBVEVdKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6
OkF1ZGlvVmlkZW86CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9OworCisg
ICAgc3dpdGNoIChjYXB0dXJlU3RhdGUpIHsKKyAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBUVVJF
X1NUQVRFX05PTkU6CisgICAgICAgIHBhZ2Uuc3RvcE1lZGlhQ2FwdHVyZShjYXB0dXJlS2luZCwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdF
QktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRToKKyAgICAgICAgc3dpdGNoIChjYXB0dXJl
S2luZCkgeworICAgICAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVy
ZUtpbmQ6OkF1ZGlvOgorICAgICAgICAgICAgbXV0ZWRTdGF0ZS5yZW1vdmUoV2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZTo6QXVkaW9DYXB0dXJlSXNNdXRlZCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1
cmVLaW5kOjpWaWRlbzoKKyAgICAgICAgICAgIGlmIChpc0Zyb21EaXNwbGF5Q2FwdHVyZSkKKyAg
ICAgICAgICAgICAgICBtdXRlZFN0YXRlLnJlbW92ZShXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpN
dXRlZFN0YXRlOjpTY3JlZW5DYXB0dXJlSXNNdXRlZCk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgbXV0ZWRTdGF0ZS5yZW1vdmUoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0
ZWRTdGF0ZTo6VmlkZW9DYXB0dXJlSXNNdXRlZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpBdWRpb1Zp
ZGVvOgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHBhZ2Uuc2V0TXV0
ZWQobXV0ZWRTdGF0ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01VVEVEOgorICAgICAgICBz
d2l0Y2ggKGNhcHR1cmVLaW5kKSB7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFQcm9kdWNl
cjo6TWVkaWFDYXB0dXJlS2luZDo6QXVkaW86CisgICAgICAgICAgICBtdXRlZFN0YXRlLmFkZChX
ZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlOjpBdWRpb0NhcHR1cmVJc011dGVkKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6
Ok1lZGlhQ2FwdHVyZUtpbmQ6OlZpZGVvOgorICAgICAgICAgICAgaWYgKGlzRnJvbURpc3BsYXlD
YXB0dXJlKQorICAgICAgICAgICAgICAgIG11dGVkU3RhdGUuYWRkKFdlYkNvcmU6Ok1lZGlhUHJv
ZHVjZXI6Ok11dGVkU3RhdGU6OlNjcmVlbkNhcHR1cmVJc011dGVkKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBtdXRlZFN0YXRlLmFkZChXZWJDb3JlOjpNZWRpYVByb2R1Y2Vy
OjpNdXRlZFN0YXRlOjpWaWRlb0NhcHR1cmVJc011dGVkKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OkF1
ZGlvVmlkZW86CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcGFnZS5z
ZXRNdXRlZChtdXRlZFN0YXRlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9j
YXB0dXJlX3N0YXRlOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKgorICogR2V0
IHRoZSBjYW1lcmEgY2FwdHVyZSBzdGF0ZSBvZiBhICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIFJl
dHVybnM6IFRoZSAjV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgb2YgdGhlIGNhbWVyYSBkZXZpY2Uu
IElmIFdlYktpdFNldHRpbmdzOmVuYWJsZS1tZWRpYXN0cmVhbQorICogaXMgRkFMU0UsIHRoaXMg
bWV0aG9kIHdpbGwgcmV0dXJuICVXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FLgorICoK
KyAqIFNpbmNlOiAyLjM0CisgKi8KK1dlYktpdE1lZGlhQ2FwdHVyZVN0YXRlIHdlYmtpdF93ZWJf
dmlld19nZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sK
KyAgICBhdXRvIHN0YXRlID0gZ2V0UGFnZSh3ZWJWaWV3KS5yZXBvcnRlZE1lZGlhU3RhdGUoKTsK
KyAgICBpZiAoc3RhdGUgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlOjpIYXNB
Y3RpdmVWaWRlb0NhcHR1cmVEZXZpY2UpCisgICAgICAgIHJldHVybiBXRUJLSVRfTUVESUFfQ0FQ
VFVSRV9TVEFURV9BQ1RJVkU7CisgICAgaWYgKHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNl
cjo6TWVkaWFTdGF0ZTo6SGFzTXV0ZWRWaWRlb0NhcHR1cmVEZXZpY2UpCisgICAgICAgIHJldHVy
biBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRDsKKyAgICByZXR1cm4gV0VCS0lUX01F
RElBX0NBUFRVUkVfU1RBVEVfTk9ORTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0
X2NhbWVyYV9jYXB0dXJlX3N0YXRlOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3Cisg
KiBAc3RhdGU6IGEgI1dlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCisgKgorICogU2V0IHRoZSBjYW1l
cmEgY2FwdHVyZSBzdGF0ZSBvZiBhICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIElmIFdlYktpdFNl
dHRpbmdzOmVuYWJsZS1tZWRpYXN0cmVhbSBpcyBGQUxTRSwgdGhpcyBtZXRob2Qgd2lsbCBoYXZl
IG5vIHZpc2libGUgZWZmZWN0LgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK3ZvaWQgd2Via2l0
X3dlYl92aWV3X3NldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSBzdGF0ZSkKK3sKKyAgICB3ZWJraXRXZWJWaWV3Q29u
ZmlndXJlTWVkaWFDYXB0dXJlKHdlYlZpZXcsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlh
Q2FwdHVyZUtpbmQ6OlZpZGVvLCBzdGF0ZSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3
X2dldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGU6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdl
YlZpZXcKKyAqCisgKiBHZXQgdGhlIG1pY3JvcGhvbmUgY2FwdHVyZSBzdGF0ZSBvZiBhICNXZWJL
aXRXZWJWaWV3LgorICoKKyAqIFJldHVybnM6IFRoZSAjV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUg
b2YgdGhlIG1pY3JvcGhvbmUgZGV2aWNlLiBJZiBXZWJLaXRTZXR0aW5nczplbmFibGUtbWVkaWFz
dHJlYW0KKyAqIGlzIEZBTFNFLCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiAlV0VCS0lUX01FRElB
X0NBUFRVUkVfU1RBVEVfTk9ORS4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCitXZWJLaXRNZWRp
YUNhcHR1cmVTdGF0ZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0
ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGF1dG8gc3RhdGUgPSBnZXRQYWdlKHdl
YlZpZXcpLnJlcG9ydGVkTWVkaWFTdGF0ZSgpOworICAgIGlmIChzdGF0ZSAmIFdlYkNvcmU6Ok1l
ZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGU6Okhhc0FjdGl2ZUF1ZGlvQ2FwdHVyZURldmljZSkKKyAg
ICAgICAgcmV0dXJuIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRTsKKyAgICBpZiAo
c3RhdGUgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlOjpIYXNNdXRlZEF1ZGlv
Q2FwdHVyZURldmljZSkKKyAgICAgICAgcmV0dXJuIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRF
X01VVEVEOworICAgIHJldHVybiBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FOworfQor
CisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19zZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlOgor
ICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAc3RhdGU6IGEgI1dlYktpdE1lZGlh
Q2FwdHVyZVN0YXRlCisgKgorICogU2V0IHRoZSBtaWNyb3Bob25lIGNhcHR1cmUgc3RhdGUgb2Yg
YSAjV2ViS2l0V2ViVmlldy4KKyAqCisgKiBJZiBXZWJLaXRTZXR0aW5nczplbmFibGUtbWVkaWFz
dHJlYW0gaXMgRkFMU0UsIHRoaXMgbWV0aG9kIHdpbGwgaGF2ZSBubyB2aXNpYmxlIGVmZmVjdC4K
KyAqCisgKiBTaW5jZTogMi4zNAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfbWljcm9w
aG9uZV9jYXB0dXJlX3N0YXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdE1lZGlhQ2Fw
dHVyZVN0YXRlIHN0YXRlKQoreworICAgIHdlYmtpdFdlYlZpZXdDb25maWd1cmVNZWRpYUNhcHR1
cmUod2ViVmlldywgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6QXVk
aW8sIHN0YXRlKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2Fw
dHVyZV9zdGF0ZToKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdldCB0
aGUgZGlzcGxheSBjYXB0dXJlIHN0YXRlIG9mIGEgI1dlYktpdFdlYlZpZXcuCisgKgorICogUmV0
dXJuczogVGhlICNXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSBvZiB0aGUgZGlzcGxheSBkZXZpY2Uu
IElmIFdlYktpdFNldHRpbmdzOmVuYWJsZS1tZWRpYXN0cmVhbQorICogaXMgRkFMU0UsIHRoaXMg
bWV0aG9kIHdpbGwgcmV0dXJuICVXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FLgorICoK
KyAqIFNpbmNlOiAyLjM0CisgKi8KK1dlYktpdE1lZGlhQ2FwdHVyZVN0YXRlIHdlYmtpdF93ZWJf
dmlld19nZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7
CisgICAgYXV0byBzdGF0ZSA9IGdldFBhZ2Uod2ViVmlldykucmVwb3J0ZWRNZWRpYVN0YXRlKCk7
CisgICAgaWYgKHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZTo6SGFz
QWN0aXZlRGlzcGxheUNhcHR1cmVEZXZpY2UpCisgICAgICAgIHJldHVybiBXRUJLSVRfTUVESUFf
Q0FQVFVSRV9TVEFURV9BQ1RJVkU7CisgICAgaWYgKHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9k
dWNlcjo6TWVkaWFTdGF0ZTo6SGFzTXV0ZWREaXNwbGF5Q2FwdHVyZURldmljZSkKKyAgICAgICAg
cmV0dXJuIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01VVEVEOworICAgIHJldHVybiBXRUJL
SVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmll
d19zZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJW
aWV3CisgKiBAc3RhdGU6IGEgI1dlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCisgKgorICogU2V0IHRo
ZSBkaXNwbGF5IGNhcHR1cmUgc3RhdGUgb2YgYSAjV2ViS2l0V2ViVmlldy4KKyAqCisgKiBJZiBX
ZWJLaXRTZXR0aW5nczplbmFibGUtbWVkaWFzdHJlYW0gaXMgRkFMU0UsIHRoaXMgbWV0aG9kIHdp
bGwgaGF2ZSBubyB2aXNpYmxlIGVmZmVjdC4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCit2b2lk
IHdlYmtpdF93ZWJfdmlld19zZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlIHN0YXRlKQoreworICAgIHdlYmtpdFdl
YlZpZXdDb25maWd1cmVNZWRpYUNhcHR1cmUod2ViVmlldywgV2ViQ29yZTo6TWVkaWFQcm9kdWNl
cjo6TWVkaWFDYXB0dXJlS2luZDo6VmlkZW8sIHN0YXRlLCB0cnVlKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
CmluZGV4IGQ3YTQzMjA0YmU2OTNmMmE3ZWY4NjI0MGVhZjU2N2ZlNzAwNTJhMmMuLmZiYWIxYWZl
OWNhMDlmNWU2YTY3OTNmNTA2NWYwOGZjNzZiZmVkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtOTEs
NiArOTEsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdJbnNlY3VyZUNvbnRlbnREZXRlY3RlZChXZWJL
aXRXZWJWaWV3KiwgV2ViS2l0SW5zZWN1cmVDb250ZW50RQogYm9vbCB3ZWJraXRXZWJWaWV3RW1p
dFNob3dOb3RpZmljYXRpb24oV2ViS2l0V2ViVmlldyosIFdlYktpdE5vdGlmaWNhdGlvbiopOwog
dm9pZCB3ZWJraXRXZWJWaWV3V2ViUHJvY2Vzc1Rlcm1pbmF0ZWQoV2ViS2l0V2ViVmlldyosIFdl
YktpdFdlYlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbik7CiB2b2lkIHdlYmtpdFdlYlZpZXdJc1Bs
YXlpbmdBdWRpb0NoYW5nZWQoV2ViS2l0V2ViVmlldyopOwordm9pZCB3ZWJraXRXZWJWaWV3TWVk
aWFDYXB0dXJlU3RhdGVEaWRDaGFuZ2UoV2ViS2l0V2ViVmlldyosIFdlYkNvcmU6Ok1lZGlhUHJv
ZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7CiB2b2lkIHdlYmtpdFdlYlZpZXdTZWxlY3Rpb25EaWRD
aGFuZ2UoV2ViS2l0V2ViVmlldyopOwogdm9pZCB3ZWJraXRXZWJWaWV3UmVxdWVzdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6Okluc3RhbGxNaXNzaW5n
TWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QmKTsKIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdl
ciogd2Via2l0V2ViVmlld0dldFdlYnNpdGVEYXRhTWFuYWdlcihXZWJLaXRXZWJWaWV3Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKaW5kZXggYWQzODJiMWJhNGRmMzk0ODYw
OWRhMmIyZmZlOGY0YWM1MmUwYzhmZC4uM2Y4Y2UwYzAwNWZiNmVlYzExN2E5OTgyYWFiMmJjOWRm
OTE1YTY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaApAQCAtNjQsNiAr
NjQsOSBAQCB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9hdWRpb19kZXZpY2Ug
KFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZQogV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Vi
a2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfdmlkZW9fZGV2aWNlIChXZWJLaXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xlYW4K
K3dlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2Rpc3BsYXlfZGV2aWNlIChXZWJL
aXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCk7CisKIEdfRU5EX0RFQ0xTCiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuaAppbmRleCA4YjQyMDhlZmNkNzYxNTAyNjcwYzNjY2VjZjNhMGY4OGExMTQ5MzY0Li5hOWZm
ZTM2OTEyMjcwOWRhOGUzN2Q5OGU5YjZjYmI3NjNmOTNlNzA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtMjA1LDYgKzIwNSwyMiBA
QCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9XRUJfUFJPQ0VTU19URVJNSU5BVEVEX0JZX0FQ
SQogfSBXZWJLaXRXZWJQcm9jZXNzVGVybWluYXRpb25SZWFzb247CiAKKy8qKgorICogV2ViS2l0
TWVkaWFDYXB0dXJlU3RhdGU6CisgKiBAV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORTog
TWVkaWEgY2FwdHVyZSBpcyBkaXNhYmxlZC4KKyAqIEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFU
RV9BQ1RJVkU6IE1lZGlhIGNhcHR1cmUgaXMgYWN0aXZlLgorICogQFdFQktJVF9NRURJQV9DQVBU
VVJFX1NUQVRFX01VVEVEOiBNZWRpYSBjYXB0dXJlIGlzIG11dGVkLgorICoKKyAqIEVudW0gdmFs
dWVzIHVzZWQgdG8gc3BlY2lmeSB0aGUgY2FwdHVyZSBzdGF0ZSBvZiBhIG1lZGlhIGRldmljZS4K
KyAqCisgKiBTaW5jZTogMi4zNAorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9NRURJ
QV9DQVBUVVJFX1NUQVRFX05PTkUsCisgICAgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNU
SVZFLAorICAgIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01VVEVELAorfSBXZWJLaXRNZWRp
YUNhcHR1cmVTdGF0ZTsKKwogc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKICAgICBXZWJLaXRXZWJW
aWV3QmFzZSBwYXJlbnQ7CiAKQEAgLTYwMCw2ICs2MTYsMjQgQEAgd2Via2l0X3dlYl92aWV3X2dl
dF9pc193ZWJfcHJvY2Vzc19yZXNwb25zaXZlICAgICAgICAoV2ViS2l0V2ViVmlldwogV0VCS0lU
X0FQSSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdfdGVybWluYXRlX3dlYl9wcm9jZXNzICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9B
UEkgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUKK3dlYmtpdF93ZWJfdmlld19nZXRfY2FtZXJhX2Nh
cHR1cmVfc3RhdGUgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKKworV0VCS0lUX0FQSSB2b2lk
Cit3ZWJraXRfd2ViX3ZpZXdfc2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKFdlYktpdFdlYlZpZXcq
IHdlYl92aWV3LCBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSBzdGF0ZSk7CisKK1dFQktJVF9BUEkg
V2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUKK3dlYmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9uZV9j
YXB0dXJlX3N0YXRlKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKKworV0VCS0lUX0FQSSB2b2lk
Cit3ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZShXZWJLaXRXZWJW
aWV3KiB3ZWJfdmlldywgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgc3RhdGUpOworCitXRUJLSVRf
QVBJIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlf
Y2FwdHVyZV9zdGF0ZShXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CisKK1dFQktJVF9BUEkgdm9p
ZAord2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUoV2ViS2l0V2ViVmll
dyogd2ViX3ZpZXcsIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlIHN0YXRlKTsKKwogR19FTkRfREVD
TFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCBmMTA2YjBk
ZjhhZDkxZGRkMTBiOWRmY2RmYjk5ZDU2NDI1MDFkZjdhLi5jYjk3MzYyYjE2ZWVjYTU5MTBiY2Y1
ZGZjMDA4ZmE2NTU5Yjk0ZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAg
LTE5OSw2ICsxOTksNyBAQCBXZWJLaXRTbmFwc2hvdE9wdGlvbnMKIFdlYktpdFNuYXBzaG90UmVn
aW9uCiBXZWJLaXRXZWJQcm9jZXNzVGVybWluYXRpb25SZWFzb24KIFdlYktpdEF1dG9wbGF5UG9s
aWN5CitXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZQogCiA8U1VCU0VDVElPTiBFZGl0aW5nIENvbW1h
bmRzPgogV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQKQEAgLTI5Myw2ICsyOTQsMTIgQEAgd2Vi
a2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lz
X3dlYl9wcm9jZXNzX3Jlc3BvbnNpdmUKIHdlYmtpdF93ZWJfdmlld190ZXJtaW5hdGVfd2ViX3By
b2Nlc3MKIHdlYmtpdF93ZWJfdmlld19zZXRfY29yc19hbGxvd2xpc3QKK3dlYmtpdF93ZWJfdmll
d19nZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUKK3dlYmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9u
ZV9jYXB0dXJlX3N0YXRlCit3ZWJraXRfd2ViX3ZpZXdfc2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRl
Cit3ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZQord2Via2l0X3dl
Yl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUKK3dlYmtpdF93ZWJfdmlld19zZXRfZGlz
cGxheV9jYXB0dXJlX3N0YXRlCiAKIDxTVUJTRUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+
CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBAIC03OTIsNiArNzk5LDcgQEAgd2Via2l0X25hdmln
YXRpb25fYWN0aW9uX2dldF90eXBlCiBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAog
d2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfYXVkaW9fZGV2aWNlCiB3ZWJraXRf
dXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl92aWRlb19kZXZpY2UKK3dlYmtpdF91c2VyX21l
ZGlhX3Blcm1pc3Npb25faXNfZm9yX2Rpc3BsYXlfZGV2aWNlCiAKIDxTVUJTRUNUSU9OIFN0YW5k
YXJkPgogV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDbGFzcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdC5oCmluZGV4IGJlMTRkMzYzNzk4ZjBkMjRlNWE5NGFlNzBjMTQ3
MDk1MDIyYzkwMjcuLjIzZTk2MjlhOWI5OWRmM2I2YmU5N2MzZGMwNWY0NjQ1NWNhYTg0ODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTY0LDYgKzY0LDkgQEAgd2Vi
a2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfYXVkaW9fZGV2aWNlIChXZWJLaXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWUKIFdFQktJVF9BUEkgZ2Jvb2xlYW4KIHdlYmtpdF91c2VyX21l
ZGlhX3Blcm1pc3Npb25faXNfZm9yX3ZpZGVvX2RldmljZSAoV2ViS2l0VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QgKnJlcXVlc3QpOwogCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfdXNl
cl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9kaXNwbGF5X2RldmljZSAoV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3QpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKaW5kZXgg
NDNhZmNhMDMwZDkzZDU4MWExZmMzMzQ1OTU0YTNkMWUwZDk5OWQ5MS4uNzA4YWNjMmY0YzQxNThj
ZjExZjRhMjQwN2E1ODhiMmMzOTFhMGUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKQEAgLTE4Niw2ICsxODYsMjIgQEAgdHlwZWRlZiBl
bnVtIHsKIHR5cGVkZWYgdm9pZCAoKiBXZWJLaXRGcmFtZURpc3BsYXllZENhbGxiYWNrKSAoV2Vi
S2l0V2ViVmlldyAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdwb2ludGVyICAgICAgIHVzZXJfZGF0YSk7CiAKKy8qKgorICogV2ViS2l0
TWVkaWFDYXB0dXJlU3RhdGU6CisgKiBAV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORTog
TWVkaWEgY2FwdHVyZSBpcyBkaXNhYmxlZC4KKyAqIEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFU
RV9BQ1RJVkU6IE1lZGlhIGNhcHR1cmUgaXMgYWN0aXZlLgorICogQFdFQktJVF9NRURJQV9DQVBU
VVJFX1NUQVRFX01VVEVEOiBNZWRpYSBjYXB0dXJlIGlzIG11dGVkLgorICoKKyAqIEVudW0gdmFs
dWVzIHVzZWQgdG8gc3BlY2lmeSB0aGUgY2FwdHVyZSBzdGF0ZSBvZiBhIG1lZGlhIGRldmljZS4K
KyAqCisgKiBTaW5jZTogMi4zNAorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9NRURJ
QV9DQVBUVVJFX1NUQVRFX05PTkUsCisgICAgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNU
SVZFLAorICAgIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01VVEVELAorfSBXZWJLaXRNZWRp
YUNhcHR1cmVTdGF0ZTsKKwogc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKICAgICBHT2JqZWN0IHBh
cmVudDsKIApAQCAtNTc3LDYgKzU5MywyNyBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJf
dmlld19zZXRfY29yc19hbGxvd2xpc3QgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKiBjb25zdCAgICAgICAqYWxsb3dsaXN0
KTsKIAorV0VCS0lUX0FQSSBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZQord2Via2l0X3dlYl92aWV3
X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAqd2ViX3ZpZXcpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19z
ZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgICAgc3RhdGUpOworCitXRUJL
SVRfQVBJIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3Jv
cGhvbmVfY2FwdHVyZV9zdGF0ZSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3
ZWJfdmlldyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3NldF9taWNyb3Bo
b25lX2NhcHR1cmVfc3RhdGUgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2Vi
X3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSAgICBzdGF0ZSk7CisKK1dFQktJVF9BUEkgV2Vi
S2l0TWVkaWFDYXB0dXJlU3RhdGUKK3dlYmtpdF93ZWJfdmlld19nZXRfZGlzcGxheV9jYXB0dXJl
X3N0YXRlICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsK
KworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9z
dGF0ZSAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dE1lZGlhQ2FwdHVyZVN0YXRlICAgIHN0YXRlKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1z
ZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEu
MC1zZWN0aW9ucy50eHQKaW5kZXggOGNmOWQ0ZmYzODM4MmIzZDM0OGE3MzJkNjlkMDBlNzcyMDU3
Njc3Ny4uZTQwYzdhMzc3MTA0ZjkwNWY4YmZkNTc4MmEwMGYyMjVhNzYzY2RkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNl
Y3Rpb25zLnR4dApAQCAtMTczLDYgKzE3Myw3IEBAIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50
CiBXZWJLaXRXZWJQcm9jZXNzVGVybWluYXRpb25SZWFzb24KIFdlYktpdEZyYW1lRGlzcGxheWVk
Q2FsbGJhY2sKIFdlYktpdEF1dG9wbGF5UG9saWN5CitXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZQog
CiA8U1VCU0VDVElPTiBFZGl0aW5nIENvbW1hbmRzPgogV0VCS0lUX0VESVRJTkdfQ09NTUFORF9D
VVQKQEAgLTI2NSw2ICsyNjYsMTIgQEAgd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGlj
aWVzCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lzX3dlYl9wcm9jZXNzX3Jlc3BvbnNpdmUKIHdlYmtp
dF93ZWJfdmlld190ZXJtaW5hdGVfd2ViX3Byb2Nlc3MKIHdlYmtpdF93ZWJfdmlld19zZXRfY29y
c19hbGxvd2xpc3QKK3dlYmtpdF93ZWJfdmlld19nZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUKK3dl
YmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlCit3ZWJraXRfd2ViX3Zp
ZXdfc2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlCit3ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3JvcGhv
bmVfY2FwdHVyZV9zdGF0ZQord2Via2l0X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3Rh
dGUKK3dlYmtpdF93ZWJfdmlld19zZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlCiAKIDxTVUJTRUNU
SU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBAIC03
OTYsNiArODAzLDcgQEAgd2Via2l0X25hdmlnYXRpb25fYWN0aW9uX2dldF90eXBlCiBXZWJLaXRV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAogd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9p
c19mb3JfYXVkaW9fZGV2aWNlCiB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl92
aWRlb19kZXZpY2UKK3dlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2Rpc3BsYXlf
ZGV2aWNlCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RDbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRMSUJQT1JUQUwuY21h
a2UgYi9Tb3VyY2UvY21ha2UvRmluZExJQlBPUlRBTC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNWExNjVl
MjZjYTkwYzA5NDBiODE5Mjk2MjhmZTcyMjBhYzhlMGUwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL2NtYWtlL0ZpbmRMSUJQT1JUQUwuY21ha2UKQEAgLTAsMCArMSwxMDEgQEAKKyMgLSBUcnkg
dG8gZmluZCBsaWJwb3J0YWwKKyMgT25jZSBkb25lLCB0aGlzIHdpbGwgZGVmaW5lCisjCisjICBM
SUJQT1JUQUxfRk9VTkQgLSBzeXN0ZW0gaGFzIGxpYnBvcnRhbAorIyAgTElCUE9SVEFMX0lOQ0xV
REVfRElSUyAtIHRoZSBsaWJwb3J0YWwgaW5jbHVkZSBkaXJlY3RvcmllcworIyAgTElCUE9SVEFM
X0xJQlJBUklFUyAtIGxpbmsgdGhlc2UgdG8gdXNlIGxpYnBvcnRhbAorIworIyBDb3B5cmlnaHQg
KEMpIDIwMjEgSWdhbGlhIFMuTC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMKKyMgSVMn
JyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBJVFMKKyMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisjIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7CisjIE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLAorIyBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUgorIyBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGCisjIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjWz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Wy5yc3Q6CitG
aW5kTElCUE9SVEFMCistLS0tLS0tLS0tLS0tCisKK0ZpbmQgbGlicG9ydGFsIGhlYWRlcnMgYW5k
IGxpYnJhcmllcy4KKworSW1wb3J0ZWQgVGFyZ2V0cworXl5eXl5eXl5eXl5eXl5eXgorCitgYExJ
QlBPUlRBTDo6TElCUE9SVEFMYGAKKyAgVGhlIExJQlBPUlRBTCBsaWJyYXJ5LCBpZiBmb3VuZC4K
KworUmVzdWx0IFZhcmlhYmxlcworXl5eXl5eXl5eXl5eXl5eXgorCitUaGlzIHdpbGwgZGVmaW5l
IHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGluIHlvdXIgcHJvamVjdDoKKworYGBMSUJQT1JUQUxf
Rk9VTkRgYAorICB0cnVlIGlmICh0aGUgcmVxdWVzdGVkIHZlcnNpb24gb2YpIExJQlBPUlRBTCBp
cyBhdmFpbGFibGUuCitgYExJQlBPUlRBTF9WRVJTSU9OYGAKKyAgdGhlIHZlcnNpb24gb2YgTElC
UE9SVEFMLgorYGBMSUJQT1JUQUxfTElCUkFSSUVTYGAKKyAgdGhlIGxpYnJhcmllcyB0byBsaW5r
IGFnYWluc3QgdG8gdXNlIExJQlBPUlRBTC4KK2BgTElCUE9SVEFMX0lOQ0xVREVfRElSU2BgCisg
IHdoZXJlIHRvIGZpbmQgdGhlIExJQlBPUlRBTCBoZWFkZXJzLgorYGBMSUJQT1JUQUxfQ09NUElM
RV9PUFRJT05TYGAKKyAgdGhpcyBzaG91bGQgYmUgcGFzc2VkIHRvIHRhcmdldF9jb21waWxlX29w
dGlvbnMoKSwgaWYgdGhlCisgIHRhcmdldCBpcyBub3QgdXNlZCBmb3IgbGlua2luZworCisjXT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09XQorCitmaW5kX3BhY2thZ2UoUGtnQ29uZmlnKQorcGtnX2NoZWNrX21vZHVs
ZXMoUENfTElCUE9SVEFMIFFVSUVUIGxpYnBvcnRhbCkKK3NldChMSUJQT1JUQUxfQ09NUElMRV9P
UFRJT05TICR7UENfTElCUE9SVEFMX0NGTEFHU19PVEhFUn0pCitzZXQoTElCUE9SVEFMX1ZFUlNJ
T04gJHtQQ19MSUJQT1JUQUxfVkVSU0lPTn0pCisKK2ZpbmRfcGF0aChMSUJQT1JUQUxfSU5DTFVE
RV9ESVIKKyAgICBOQU1FUyBwb3J0YWwuaAorICAgIEhJTlRTICR7UENfTElCUE9SVEFMX0lOQ0xV
REVESVJ9CisgICAgICAgICAgJHtQQ19MSUJQT1JUQUxfSU5DTFVERV9ESVJTfQorICAgIFBBVEhf
U1VGRklYRVMgbGlicG9ydGFsCispCisKK2ZpbmRfbGlicmFyeShMSUJQT1JUQUxfTElCUkFSWQor
ICAgIE5BTUVTICR7TElCUE9SVEFMX05BTUVTfSBsaWJwb3J0YWwKKyAgICBISU5UUyAke1BDX0xJ
QlBPUlRBTF9MSUJESVJ9CisgICAgICAgICAgJHtQQ19MSUJQT1JUQUxfTElCUkFSWV9ESVJTfQor
KQorCitpbmNsdWRlKEZpbmRQYWNrYWdlSGFuZGxlU3RhbmRhcmRBcmdzKQorZmluZF9wYWNrYWdl
X2hhbmRsZV9zdGFuZGFyZF9hcmdzKExJQlBPUlRBTAorICAgIEZPVU5EX1ZBUiBMSUJQT1JUQUxf
Rk9VTkQKKyAgICBSRVFVSVJFRF9WQVJTIExJQlBPUlRBTF9JTkNMVURFX0RJUiBMSUJQT1JUQUxf
TElCUkFSWQorICAgIFZFUlNJT05fVkFSIExJQlBPUlRBTF9WRVJTSU9OCispCisKK2lmIChMSUJQ
T1JUQUxfTElCUkFSWSBBTkQgTk9UIFRBUkdFVCBMSUJQT1JUQUw6OkxJQlBPUlRBTCkKKyAgICBh
ZGRfbGlicmFyeShMSUJQT1JUQUw6OkxJQlBPUlRBTCBVTktOT1dOIElNUE9SVEVEIEdMT0JBTCkK
KyAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoTElCUE9SVEFMOjpMSUJQT1JUQUwgUFJPUEVSVElF
UworICAgICAgICBJTVBPUlRFRF9MT0NBVElPTiAiJHtMSUJQT1JUQUxfTElCUkFSWX0iCisgICAg
ICAgIElOVEVSRkFDRV9DT01QSUxFX09QVElPTlMgIiR7TElCUE9SVEFMX0NPTVBJTEVfT1BUSU9O
U30iCisgICAgICAgIElOVEVSRkFDRV9JTkNMVURFX0RJUkVDVE9SSUVTICIke0xJQlBPUlRBTF9J
TkNMVURFX0RJUn0iCisgICAgKQorZW5kaWYgKCkKKworbWFya19hc19hZHZhbmNlZChMSUJQT1JU
QUxfSU5DTFVERV9ESVIgTElCUE9SVEFMX0xJQlJBUlkpCisKK2lmIChMSUJQT1JUQUxfRk9VTkQp
CisgICAgc2V0KExJQlBPUlRBTF9MSUJSQVJJRVMgJHtMSUJQT1JUQUxfTElCUkFSWX0pCisgICAg
c2V0KExJQlBPUlRBTF9JTkNMVURFX0RJUlMgJHtMSUJQT1JUQUxfSU5DTFVERV9ESVJ9KQorZW5k
aWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21ha2UgYi9T
b3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tzLmNtYWtlCmluZGV4IDc3ZTk1ODQ1ZTk5MTNhNTk3
OGRhZDEwY2ZjNDMwMDkzYjQzYzdhYTMuLmFmOTY3NGIxNDBiZmNjMTc3Y2VhMTBjMjZmNzgyOWFm
ZjMxMDAwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21ha2UK
KysrIGIvU291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZQpAQCAtNTcsMyArNTcsMTIg
QEAgaWYgKEVOQUJMRV9NRURJQV9TVFJFQU0gQU5EIEVOQUJMRV9XRUJfUlRDKQogZWxzZSAoKQog
ICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9MSUJXRUJSVEMgRkFMU0UpCiBlbmRpZiAo
KQorCitpZiAoRU5BQkxFX01FRElBX1NUUkVBTSkKKyAgICBmaW5kX3BhY2thZ2UoTElCUE9SVEFM
KQorICAgIGlmIChMSUJQT1JUQUxfRk9VTkQpCisgICAgICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JV
SUxEKFVTRV9QSVBFV0lSRSBUUlVFKQorICAgIGVsc2UgKCkKKyAgICAgICAgU0VUX0FORF9FWFBP
U0VfVE9fQlVJTEQoVVNFX1BJUEVXSVJFIEZBTFNFKQorICAgIGVuZGlmICgpCitlbmRpZiAoKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ1MWJk
MmZmMjEwZjMxZWY2YTY1Y2Y3OGQwY2RmOWQ2ZTgxNzY1NzAuLmVjMWRhYTAyY2U3NzIyNzQwMDMy
MTE5M2Y3Y2M2OWRlMTEwNGJjZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAyMS0wNy0xMSAgUGhpbGlwcGUgTm9y
bWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl1bUGlwZXdp
cmVdIEltcGxlbWVudCBnZXREaXNwbGF5TWVkaWEoKSBiYWNrZW5kCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA5MjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgR1RLIE1pbmlCcm93c2VyIGlzIG5v
dyBhYmxlIHRvIHNob3cgbWVkaWEgY2FwdHVyZSBpbmRpY2F0b3JzLCB0aHJvdWdoIHRoZSBVUkkg
ZW50cnkuIEEKKyAgICAgICAgbmV3IEFQSSB0ZXN0cyB3YXMgYWRkaW5nLCBjaGVja2luZyBzdXBw
b3J0IGZvciBnZXREaXNwbGF5TWVkaWEoKS4gQXMgdGhpcyByZXF1aXJlcyB1c2VyCisgICAgICAg
IGdlc3R1cmUgc3VwcG9ydCwgYSBuZXcgbWluaW1hbCBpbmplY3RlZCBidW5kbGUgd2FzIGltcGxl
bWVudGVkLCBpbmplY3RpbmcgYHdpbmRvdy5pbnRlcm5hbHNgCisgICAgICAgIGluIHRoZSB0ZXN0
IHBhZ2UuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlclRhYi5jOgorICAgICAg
ICAocGVybWlzc2lvblJlcXVlc3REYXRhTmV3KToKKyAgICAgICAgKHBlcm1pc3Npb25SZXF1ZXN0
RGF0YUZyZWUpOgorICAgICAgICAoZGVjaWRlUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAq
IE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6CisgICAgICAgICh3ZWJWaWV3TWVkaWFD
YXB0dXJlU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKHdlYlZpZXdVcmlFbnRyeUljb25QcmVzc2Vk
KToKKyAgICAgICAgKGJyb3dzZXJXaW5kb3dTd2l0Y2hUYWIpOgorICAgICAgICAqIFNjcmlwdHMv
cnVuLWd0ay10ZXN0czoKKyAgICAgICAgKEd0a1Rlc3RSdW5uZXIpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RVSUNsaWVudC5jcHA6CisgICAgICAgICh0ZXN0V2ViVmlld1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0cyk6CisgICAgICAgICh0ZXN0V2ViVmlld0F1ZGlvT25seVVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyk6CisgICAgICAgICh0ZXN0V2ViVmlld0Rpc3BsYXlVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcDoKKyAg
ICAgICAgKHRlc3RXZWJzaXRlRGF0YURldmljZUlkSGFzaFNhbHQpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvZ2xpYi9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6c2luZ2xldG9uKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6SW5qZWN0
ZWRCdW5kbGVDb250cm9sbGVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVu
ZGxlQ29udHJvbGxlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpJbmpl
Y3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmRpZENyZWF0ZVBhZ2UpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjp3aWxsRGVzdHJveVBhZ2UpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVz
c2FnZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6
OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVj
dGVkQnVuZGxlQ29udHJvbGxlcjo6ZHVtcFRlc3ROYW1lcyk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmluaXRpYWxpemVUZXN0TmFtZWQpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpyZWdpc3RlckNy
ZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9uKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OkluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAg
KiBmbGF0cGFrL2ZsYXRwYWt1dGlscy5weToKKyAgICAgICAgKFdlYmtpdEZsYXRwYWsucnVuX2lu
X3NhbmRib3gpOgorICAgICAgICAqIGdsaWIvYXBpX3Rlc3RfcnVubmVyLnB5OgorICAgICAgICAo
VGVzdFJ1bm5lcik6CisgICAgICAgIChUZXN0UnVubmVyLl9ydW5fdGVzdF9nbGliKToKKwogMjAy
MS0wNy0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFNWR0ltYWdlRm9yQ29udGFpbmVyIHJlcG9ydHMgdHJ1ZSBmb3IgaXM8U1ZHSW1hZ2U+KCkg
YnV0IGl0IGRvZXNuJ3QgaW5oZXJpdCBmcm9tIFNWR0ltYWdlCmRpZmYgLS1naXQgYS9Ub29scy9N
aW5pQnJvd3Nlci9ndGsvQnJvd3NlclRhYi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dz
ZXJUYWIuYwppbmRleCBhYjc1YTY5ZjY0YWFkZWUyYjIyZTBkOGQxMTQ5MzJkYjU1YWFhMDAwLi4w
NjZkMTFmMTMwZjgzYTFhZjZmYmM0MjUyNGU3MGRjMzE0ZjVlNTdjIDEwMDY0NAotLS0gYS9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclRhYi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyVGFiLmMKQEAgLTMwNywxNiArMzA3LDIwIEBAIHN0YXRpYyBnYm9vbGVhbiBkZWNp
ZGVQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRQZXJtaXNz
aW9uCiAgICAgICAgIHRleHQgPSBnX3N0cmR1cCgiQWxsb3cgbm90aWZpY2F0aW9ucyByZXF1ZXN0
PyIpOwogICAgIH0gZWxzZSBpZiAoV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFV
RVNUKHJlcXVlc3QpKSB7CiAgICAgICAgIHRpdGxlID0gIlVzZXJNZWRpYSByZXF1ZXN0IjsKLSAg
ICAgICAgZ2Jvb2xlYW4gaXNfZm9yX2F1ZGlvX2RldmljZSA9IHdlYmtpdF91c2VyX21lZGlhX3Bl
cm1pc3Npb25faXNfZm9yX2F1ZGlvX2RldmljZShXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9O
X1JFUVVFU1QocmVxdWVzdCkpOwotICAgICAgICBnYm9vbGVhbiBpc19mb3JfdmlkZW9fZGV2aWNl
ID0gd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfdmlkZW9fZGV2aWNlKFdFQktJ
VF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7CisgICAgICAgIGdib29s
ZWFuIGlzRm9yQXVkaW9EZXZpY2UgPSB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zv
cl9hdWRpb19kZXZpY2UoV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVl
c3QpKTsKKyAgICAgICAgZ2Jvb2xlYW4gaXNGb3JWaWRlb0RldmljZSA9IHdlYmtpdF91c2VyX21l
ZGlhX3Blcm1pc3Npb25faXNfZm9yX3ZpZGVvX2RldmljZShXRUJLSVRfVVNFUl9NRURJQV9QRVJN
SVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworICAgICAgICBnYm9vbGVhbiBpc0ZvckRpc3BsYXlE
ZXZpY2UgPSB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9kaXNwbGF5X2Rldmlj
ZShXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworCiAgICAg
ICAgIGNvbnN0IGNoYXIgKm1lZGlhVHlwZSA9IE5VTEw7Ci0gICAgICAgIGlmIChpc19mb3JfYXVk
aW9fZGV2aWNlKSB7Ci0gICAgICAgICAgICBpZiAoaXNfZm9yX3ZpZGVvX2RldmljZSkKKyAgICAg
ICAgaWYgKGlzRm9yQXVkaW9EZXZpY2UpIHsKKyAgICAgICAgICAgIGlmIChpc0ZvclZpZGVvRGV2
aWNlKQogICAgICAgICAgICAgICAgIG1lZGlhVHlwZSA9ICJhdWRpby92aWRlbyI7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbWVkaWFUeXBlID0gImF1ZGlvIjsKLSAgICAgICAg
fSBlbHNlIGlmIChpc19mb3JfdmlkZW9fZGV2aWNlKQorICAgICAgICB9IGVsc2UgaWYgKGlzRm9y
VmlkZW9EZXZpY2UpCiAgICAgICAgICAgICBtZWRpYVR5cGUgPSAidmlkZW8iOworICAgICAgICBl
bHNlIGlmIChpc0ZvckRpc3BsYXlEZXZpY2UpCisgICAgICAgICAgICBtZWRpYVR5cGUgPSAiZGlz
cGxheSI7CiAgICAgICAgIHRleHQgPSBnX3N0cmR1cF9wcmludGYoIkFsbG93IGFjY2VzcyB0byAl
cyBkZXZpY2U/IiwgbWVkaWFUeXBlKTsKICAgICB9IGVsc2UgaWYgKFdFQktJVF9JU19JTlNUQUxM
X01JU1NJTkdfTUVESUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpIHsKICAg
ICAgICAgdGl0bGUgPSAiTWVkaWEgcGx1Z2luIG1pc3NpbmcgcmVxdWVzdCI7CmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jIGIvVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwppbmRleCAwNjNlOTQ1Njg0OTBjYzcyMTkzMjIyOTg3Yjgw
NWU3ZGZmZjk0ZmVhLi4xMThjYzIwMDIxNWIyMmRjZjA3OWYyNjYzYzIwOThiOWM0MGZkMzVmIDEw
MDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKQEAgLTY0OSw2ICs2NDksNzIgQEAg
c3RhdGljIHZvaWQgZmF2aWNvbkNoYW5nZWQoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgR1BhcmFt
U3BlYyAqcGFyYW1TcGVjLCBCcm93c2UKICAgICB1cGRhdGVVcmlFbnRyeUljb24od2luZG93KTsK
IH0KIAorc3RhdGljIHZvaWQgd2ViVmlld01lZGlhQ2FwdHVyZVN0YXRlQ2hhbmdlZChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMsIEJyb3dzZXJXaW5kb3cqIHdp
bmRvdykKK3sKKyAgICBjb25zdCBnY2hhciogbmFtZSA9IGdfcGFyYW1fc3BlY19nZXRfbmFtZShw
YXJhbVNwZWMpOworICAgIC8vIEZJWE1FOiB0aGUgVVJJIGVudHJ5IGlzIG5vdCBncmVhdCBzdG9y
YWdlIGluIGNhc2UgbW9yZSB0aGFuIG9uZSBjYXB0dXJlIGRldmljZSBpcyBpbiB1c2UsCisgICAg
Ly8gYmVjYXVzZSBpdCBjYW4gc3RvcmUgb25seSBvbmUgc2Vjb25kYXJ5IGljb24uCisgICAgR3Rr
RW50cnkgKmVudHJ5ID0gR1RLX0VOVFJZKHdpbmRvdy0+dXJpRW50cnkpOworCisgICAgaWYgKGdf
c3RyX2hhc19wcmVmaXgobmFtZSwgIm1pY3JvcGhvbmUiKSkgeworICAgICAgICBzd2l0Y2ggKHdl
YmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcpKSB7Cisg
ICAgICAgIGNhc2UgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORToKKyAgICAgICAgICAg
IGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX2ljb25fbmFtZShlbnRyeSwgR1RLX0VOVFJZX0lDT05f
U0VDT05EQVJZLCBOVUxMKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdFQktJ
VF9NRURJQV9DQVBUVVJFX1NUQVRFX01VVEVEOgorICAgICAgICAgICAgZ3RrX2VudHJ5X3NldF9p
Y29uX2Zyb21faWNvbl9uYW1lKGVudHJ5LCBHVEtfRU5UUllfSUNPTl9TRUNPTkRBUlksICJtaWNy
b3Bob25lLXNlbnNpdml0eS1tdXRlcy1zeW1ib2xpYyIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFOgorICAgICAgICAg
ICAgZ3RrX2VudHJ5X3NldF9pY29uX2Zyb21faWNvbl9uYW1lKGVudHJ5LCBHVEtfRU5UUllfSUNP
Tl9TRUNPTkRBUlksICJhdWRpby1pbnB1dC1taWNyb3Bob25lLXN5bWJvbGljIik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChu
YW1lLCAiY2FtZXJhIikpIHsKKyAgICAgICAgc3dpdGNoICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Nh
bWVyYV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcpKSB7CisgICAgICAgIGNhc2UgV0VCS0lUX01FRElB
X0NBUFRVUkVfU1RBVEVfTk9ORToKKyAgICAgICAgICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9t
X2ljb25fbmFtZShlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCBOVUxMKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01V
VEVEOgorICAgICAgICAgICAgZ3RrX2VudHJ5X3NldF9pY29uX2Zyb21faWNvbl9uYW1lKGVudHJ5
LCBHVEtfRU5UUllfSUNPTl9TRUNPTkRBUlksICJjYW1lcmEtZGlzYWJsZWQtc3ltYm9saWMiKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBUVVJFX1NU
QVRFX0FDVElWRToKKyAgICAgICAgICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX2ljb25fbmFt
ZShlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCAiY2FtZXJhLXdlYi1zeW1ib2xpYyIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGdfc3RyX2hh
c19wcmVmaXgobmFtZSwgImRpc3BsYXkiKSkgeworICAgICAgICBzd2l0Y2ggKHdlYmtpdF93ZWJf
dmlld19nZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcpKSB7CisgICAgICAgIGNhc2Ug
V0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORToKKyAgICAgICAgICAgIGd0a19lbnRyeV9z
ZXRfaWNvbl9mcm9tX2ljb25fbmFtZShlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCBO
VUxMKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBU
VVJFX1NUQVRFX01VVEVEOgorICAgICAgICAgICAgLy8gRklYTUU6IEkgZm91bmQgbm8gc3VpdGFi
bGUgaWNvbiBmb3IgdGhpcy4KKyAgICAgICAgICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX2lj
b25fbmFtZShlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCAibWVkaWEtcGxheWJhY2st
c3RvcC1zeW1ib2xpYyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0VCS0lU
X01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFOgorICAgICAgICAgICAgZ3RrX2VudHJ5X3NldF9p
Y29uX2Zyb21faWNvbl9uYW1lKGVudHJ5LCBHVEtfRU5UUllfSUNPTl9TRUNPTkRBUlksICJ2aWRl
by1kaXNwbGF5LXN5bWJvbGljIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KK30KKworc3RhdGljIHZvaWQgd2ViVmlld1VyaUVudHJ5SWNvblByZXNzZWQoR3RrRW50cnkq
IGVudHJ5LCBHdGtFbnRyeUljb25Qb3NpdGlvbiBwb3NpdGlvbiwgR2RrRXZlbnQqIGV2ZW50LCBC
cm93c2VyV2luZG93KiB3aW5kb3cpCit7CisgICAgaWYgKHBvc2l0aW9uICE9IEdUS19FTlRSWV9J
Q09OX1NFQ09OREFSWSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFdoYXQgYWJv
dXQgYXVkaW8vdmlkZW8/CisgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldyA9IGJyb3dzZXJfdGFi
X2dldF93ZWJfdmlldyh3aW5kb3ctPmFjdGl2ZVRhYik7CisgICAgc3dpdGNoICh3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3KSkgeworICAgIGNhc2UgV0VC
S0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBX
RUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRDoKKyAgICAgICAgd2Via2l0X3dlYl92aWV3
X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUod2ViVmlldywgV0VCS0lUX01FRElBX0NBUFRVUkVf
U1RBVEVfQUNUSVZFKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQ
VFVSRV9TVEFURV9BQ1RJVkU6CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfZGlzcGxheV9j
YXB0dXJlX3N0YXRlKHdlYlZpZXcsIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01VVEVEKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiBzdGF0aWMgdm9pZCB3ZWJWaWV3SXNMb2FkaW5n
Q2hhbmdlZChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBHUGFyYW1TcGVjICpwYXJhbVNwZWMsIEJy
b3dzZXJXaW5kb3cgKndpbmRvdykKIHsKICAgICBnYm9vbGVhbiBpc0xvYWRpbmcgPSB3ZWJraXRf
d2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KTsKQEAgLTExODAsNiArMTI0NiwxMiBAQCBzdGF0
aWMgdm9pZCBicm93c2VyV2luZG93U3dpdGNoVGFiKEd0a05vdGVib29rICpub3RlYm9vaywgQnJv
d3NlclRhYiAqdGFiLCBndWludAogI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKICAg
ICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJzY3JvbGwtZXZlbnQiLCBHX0NBTExCQUNLKHNj
cm9sbEV2ZW50Q2FsbGJhY2spLCB3aW5kb3cpOwogI2VuZGlmCisgICAgZ19zaWduYWxfY29ubmVj
dCh3ZWJWaWV3LCAibm90aWZ5OjpjYW1lcmEtY2FwdHVyZS1zdGF0ZSIsIEdfQ0FMTEJBQ0sod2Vi
Vmlld01lZGlhQ2FwdHVyZVN0YXRlQ2hhbmdlZCksIHdpbmRvdyk7CisgICAgZ19zaWduYWxfY29u
bmVjdCh3ZWJWaWV3LCAibm90aWZ5OjptaWNyb3Bob25lLWNhcHR1cmUtc3RhdGUiLCBHX0NBTExC
QUNLKHdlYlZpZXdNZWRpYUNhcHR1cmVTdGF0ZUNoYW5nZWQpLCB3aW5kb3cpOworICAgIGdfc2ln
bmFsX2Nvbm5lY3Qod2ViVmlldywgIm5vdGlmeTo6ZGlzcGxheS1jYXB0dXJlLXN0YXRlIiwgR19D
QUxMQkFDSyh3ZWJWaWV3TWVkaWFDYXB0dXJlU3RhdGVDaGFuZ2VkKSwgd2luZG93KTsKKworICAg
IGdfb2JqZWN0X3NldCh3aW5kb3ctPnVyaUVudHJ5LCAic2Vjb25kYXJ5LWljb24tYWN0aXZhdGFi
bGUiLCBUUlVFLCBOVUxMKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+dXJpRW50cnks
ICJpY29uLXByZXNzIiwgR19DQUxMQkFDSyh3ZWJWaWV3VXJpRW50cnlJY29uUHJlc3NlZCksIHdp
bmRvdyk7CiAKICAgICBXZWJLaXRCYWNrRm9yd2FyZExpc3QgKmJhY2tGb3J3YXJkbGlzdCA9IHdl
YmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xpc3Qod2ViVmlldyk7CiAgICAgYnJvd3Nl
cldpbmRvd1VwZGF0ZU5hdmlnYXRpb25NZW51KHdpbmRvdywgYmFja0ZvcndhcmRsaXN0KTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVu
LWd0ay10ZXN0cwppbmRleCBlMjM0N2FmZWUyNmFjODM5NWJkYzE4OTczZjY5YzhmNmNmY2IzZTc5
Li4zZjkxYTYyZDY2ZTM4MzFiN2ZmNjk0NzQwNGFhMGQ5MWFlZWQ1ZmJkIDEwMDc1NQotLS0gYS9U
b29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRl
c3RzCkBAIC0zNCw3ICszNCw4IEBAIGltcG9ydCBmbGF0cGFrdXRpbHMKIGZyb20gYXBpX3Rlc3Rf
cnVubmVyIGltcG9ydCBUZXN0UnVubmVyLCBhZGRfb3B0aW9ucwogCiBjbGFzcyBHdGtUZXN0UnVu
bmVyKFRlc3RSdW5uZXIpOgotICAgIFRlc3RSdW5uZXIuVEVTVF9UQVJHRVRTID0gWyAiV2ViS2l0
Mkd0ayIsICJUZXN0V2ViS2l0IiwgIlRlc3RKU0MiLCAiVGVzdFdURiIsICJUZXN0V2ViQ29yZSIs
ICJUZXN0SmF2YVNjcmlwdENvcmUiIF0KKyAgICBURVNUX1RBUkdFVFMgPSBbICJXZWJLaXQyR3Rr
IiwgIlRlc3RXZWJLaXQiLCAiVGVzdEpTQyIsICJUZXN0V1RGIiwgIlRlc3RXZWJDb3JlIiwgIlRl
c3RKYXZhU2NyaXB0Q29yZSIgXQorICAgIFRFU1RTX1JFUVVJUklOR19JTlRFUk5BTF9JTkpFQ1RF
RF9CVU5ETEUgPSBbICJUZXN0VUlDbGllbnQiIF0KIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBv
cHRpb25zLCB0ZXN0cz1bXSk6CiAgICAgICAgIHN1cGVyKEd0a1Rlc3RSdW5uZXIsIHNlbGYpLl9f
aW5pdF9fKCJndGsiLCBvcHRpb25zLCB0ZXN0cykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0
CmluZGV4IDY4NWQ1ZWUwNmE1ZTFlMDc5NTlhMGJhMThlZTA1ZWQwMDJmMTk1YjYuLjdjYmI3NzY2
ZmE3MDA0MDhlYzA4NmQyMmZhMjg4ZWQ5NDNhNDRjNmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxp
c3RzLnR4dApAQCAtMzcwLDYgKzM3MCwyNiBAQCBpZiAoRU5BQkxFX1dFQktJVCkKICAgICAgICAg
ICAgIG1hYy9QbGF0Zm9ybVV0aWxpdGllc01hYy5tbQogICAgICAgICApCiAgICAgZW5kaWYgKCkK
KworICAgIGlmIChQT1JUIFNUUkVRVUFMICJHVEsiIE9SIFBPUlQgU1RSRVFVQUwgIldQRSIpCisg
ICAgICAgIHNldChUZXN0V2ViS2l0QVBJSW50ZXJuYWxJbmplY3RlZEJ1bmRsZV9TT1VSQ0VTCisg
ICAgICAgICAgICBJbmplY3RlZEJ1bmRsZU1haW4uY3BwCisKKyAgICAgICAgICAgIGdsaWIvSW5q
ZWN0ZWRCdW5kbGVDb250cm9sbGVyLmNwcAorICAgICAgICApCisgICAgICAgIGFkZF9saWJyYXJ5
KFRlc3RXZWJLaXRBUElJbnRlcm5hbEluamVjdGVkQnVuZGxlIFNIQVJFRCAke1Rlc3RXZWJLaXRB
UElJbnRlcm5hbEluamVjdGVkQnVuZGxlX1NPVVJDRVN9KQorICAgICAgICB0YXJnZXRfY29tcGls
ZV9kZWZpbml0aW9ucyhUZXN0V2ViS2l0QVBJSW50ZXJuYWxJbmplY3RlZEJ1bmRsZSBQUklWQVRF
IEJVSUxESU5HX1Rlc3RXZWJLaXQpCisgICAgICAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVz
KFRlc3RXZWJLaXRBUElJbnRlcm5hbEluamVjdGVkQnVuZGxlIFBSSVZBVEUgJHtUZXN0V2ViS2l0
X1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFU30pCisgICAgICAgIHRhcmdldF9saW5rX2xpYnJh
cmllcyhUZXN0V2ViS2l0QVBJSW50ZXJuYWxJbmplY3RlZEJ1bmRsZSBQUklWQVRFIFdlYktpdDo6
V2ViS2l0IFdlYktpdDo6Z3Rlc3QgV2ViS2l0OjpXZWJDb3JlVGVzdFN1cHBvcnQpCisKKyAgICAg
ICAgaWYgKENPTVBJTEVSX0lTX0dDQ19PUl9DTEFORykKKyAgICAgICAgICAgIFdFQktJVF9BRERf
VEFSR0VUX0NYWF9GTEFHUyhUZXN0V2ViS2l0QVBJSW50ZXJuYWxJbmplY3RlZEJ1bmRsZSAtV25v
LWRhbmdsaW5nLWVsc2UKKyAgICAgICAgICAgICAgLVduby1zaWduLWNvbXBhcmUKKyAgICAgICAg
ICAgICAgLVduby11bmRlZgorICAgICAgICAgICAgICAtV25vLXVudXNlZC1wYXJhbWV0ZXIpCisg
ICAgICAgIGVuZGlmICgpCisgICAgZW5kaWYgKCkKKwogICAgIGFkZF9saWJyYXJ5KFRlc3RXZWJL
aXRBUElJbmplY3RlZEJ1bmRsZSBTSEFSRUQgJHtUZXN0V2ViS2l0QVBJSW5qZWN0ZWRCdW5kbGVf
U09VUkNFU30pCiAKICAgICB0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucyhUZXN0V2ViS2l0QVBJ
SW5qZWN0ZWRCdW5kbGUgUFJJVkFURSBCVUlMRElOR19UZXN0V2ViS2l0KQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RVSUNsaWVudC5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcAppbmRl
eCBhYmEzMjFjOWNhZTYyYTdlMDBmMDMzMjFlNDRjZTBjNzVjZTJkZjg4Li42NGMyODQ3MDU2YThi
NDIwNWViYzZkNjIxODFhMDFmYWY4MmUyYzUwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcApAQCAtMjQwLDYgKzI0MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
KiB1c2VyTWVkaWFSZXF1ZXN0ID0gV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNU
KHJlcXVlc3QpOwogICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfdXNlcl9tZWRpYV9w
ZXJtaXNzaW9uX2lzX2Zvcl9hdWRpb19kZXZpY2UodXNlck1lZGlhUmVxdWVzdCkgPT0gdGVzdC0+
bV9leHBlY3RlZEF1ZGlvTWVkaWEpOwogICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRf
dXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl92aWRlb19kZXZpY2UodXNlck1lZGlhUmVxdWVz
dCkgPT0gdGVzdC0+bV9leHBlY3RlZFZpZGVvTWVkaWEpOworICAgICAgICAgICAgZ19hc3NlcnRf
dHJ1ZSh3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9kaXNwbGF5X2RldmljZSh1
c2VyTWVkaWFSZXF1ZXN0KSA9PSB0ZXN0LT5tX2V4cGVjdGVkRGlzcGxheU1lZGlhKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmICh0ZXN0LT5tX2FsbG93UGVybWlzc2lvblJlcXVlc3RzKQpAQCAt
MjYzLDYgKzI2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3ZlcmlmeU1lZGlhVHlwZXMoZmFs
c2UpCiAgICAgICAgICwgbV9leHBlY3RlZEF1ZGlvTWVkaWEoZmFsc2UpCiAgICAgICAgICwgbV9l
eHBlY3RlZFZpZGVvTWVkaWEoZmFsc2UpCisgICAgICAgICwgbV9leHBlY3RlZERpc3BsYXlNZWRp
YShmYWxzZSkKICAgICAgICAgLCBtX21vdXNlVGFyZ2V0TW9kaWZpZXJzKDApCiAgICAgewogICAg
ICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRv
bWF0aWNhbGx5KHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MobV93ZWJWaWV3KSwgVFJVRSk7
CkBAIC00MTUsNiArNDE3LDcgQEAgcHVibGljOgogICAgIGdib29sZWFuIG1fdmVyaWZ5TWVkaWFU
eXBlczsKICAgICBnYm9vbGVhbiBtX2V4cGVjdGVkQXVkaW9NZWRpYTsKICAgICBnYm9vbGVhbiBt
X2V4cGVjdGVkVmlkZW9NZWRpYTsKKyAgICBnYm9vbGVhbiBtX2V4cGVjdGVkRGlzcGxheU1lZGlh
OwogICAgIFdpbmRvd1Byb3BlcnRpZXMgbV93aW5kb3dQcm9wZXJ0aWVzOwogICAgIEhhc2hTZXQ8
V1RGOjpTdHJpbmc+IG1fd2luZG93UHJvcGVydGllc0NoYW5nZWQ7CiAgICAgR1JlZlB0cjxXZWJL
aXRIaXRUZXN0UmVzdWx0PiBtX21vdXNlVGFyZ2V0SGl0VGVzdFJlc3VsdDsKQEAgLTEwMDEsNiAr
MTAwNCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pCiAgICAgdGVzdC0+bV92ZXJpZnlNZWRp
YVR5cGVzID0gVFJVRTsKICAgICB0ZXN0LT5tX2V4cGVjdGVkQXVkaW9NZWRpYSA9IFRSVUU7CiAg
ICAgdGVzdC0+bV9leHBlY3RlZFZpZGVvTWVkaWEgPSBUUlVFOworICAgIHRlc3QtPm1fZXhwZWN0
ZWREaXNwbGF5TWVkaWEgPSBGQUxTRTsKIAogICAgIC8vIFRlc3QgZGVueWluZyBhIHBlcm1pc3Np
b24gcmVxdWVzdC4KICAgICB0ZXN0LT5tX2FsbG93UGVybWlzc2lvblJlcXVlc3RzID0gZmFsc2U7
CkBAIC0xMDQxLDYgKzEwNDUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1ZGlvT25seVVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsCiAgICAgdGVzdC0+
bV92ZXJpZnlNZWRpYVR5cGVzID0gVFJVRTsKICAgICB0ZXN0LT5tX2V4cGVjdGVkQXVkaW9NZWRp
YSA9IFRSVUU7CiAgICAgdGVzdC0+bV9leHBlY3RlZFZpZGVvTWVkaWEgPSBGQUxTRTsKKyAgICB0
ZXN0LT5tX2V4cGVjdGVkRGlzcGxheU1lZGlhID0gRkFMU0U7CiAKICAgICAvLyBUZXN0IGRlbnlp
bmcgYSBwZXJtaXNzaW9uIHJlcXVlc3QuCiAgICAgdGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1
ZXN0cyA9IGZhbHNlOwpAQCAtMTA1MSw2ICsxMDU2LDQ5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3QXVkaW9Pbmx5VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVz
dCwKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tb2NrX2NhcHR1cmVfZGV2aWNlcyhz
ZXR0aW5ncywgRkFMU0UpOwogICAgIHdlYmtpdFNldHRpbmdzU2V0TWVkaWFDYXB0dXJlUmVxdWly
ZXNTZWN1cmVDb25uZWN0aW9uKHNldHRpbmdzLCBUUlVFKTsKIH0KKworc3RhdGljIHZvaWQgdGVz
dFdlYlZpZXdEaXNwbGF5VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MgPSB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHRlc3QtPm1fd2ViVmlldyk7CisgICAgZ2Jvb2xl
YW4gZW5hYmxlZCA9IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0
aW5ncyk7CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRp
bmdzLCBUUlVFKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tb2NrX2NhcHR1cmVf
ZGV2aWNlcyhzZXR0aW5ncywgVFJVRSk7CisgICAgd2Via2l0U2V0dGluZ3NTZXRNZWRpYUNhcHR1
cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24oc2V0dGluZ3MsIEZBTFNFKTsKKworICAgIHRlc3Qt
PnNob3dJbldpbmRvdygpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkaXNwbGF5TWVkaWFSZXF1
ZXN0SFRNTCA9ICI8aHRtbD4iCisgICAgICAgICIgIDxzY3JpcHQ+IgorICAgICAgICAiICBmdW5j
dGlvbiBydW5UZXN0KCkiCisgICAgICAgICIgIHsiCisgICAgICAgICIgICAgd2luZG93LmludGVy
bmFscy53aXRoVXNlckdlc3R1cmUoKCkgPT4geyIKKyAgICAgICAgIiAgICAgIG5hdmlnYXRvci5t
ZWRpYURldmljZXMuZ2V0RGlzcGxheU1lZGlhKCkiCisgICAgICAgICIgICAgICAgIC50aGVuKChz
dHJlYW0pID0+IHsgZG9jdW1lbnQudGl0bGUgPSBcIk9LXCI7IH0pIgorICAgICAgICAiICAgICAg
ICAuY2F0Y2goKGUpID0+IHsgZG9jdW1lbnQudGl0bGUgPSBlLm5hbWU7IH0pOyIKKyAgICAgICAg
IiAgICB9KTsiCisgICAgICAgICIgIH0iCisgICAgICAgICIgIDwvc2NyaXB0PiIKKyAgICAgICAg
IiAgPGJvZHkgb25sb2FkPSdydW5UZXN0KCk7Jz48L2JvZHk+IgorICAgICAgICAiPC9odG1sPiI7
CisKKyAgICB0ZXN0LT5tX3ZlcmlmeU1lZGlhVHlwZXMgPSBUUlVFOworICAgIHRlc3QtPm1fZXhw
ZWN0ZWRBdWRpb01lZGlhID0gRkFMU0U7CisgICAgdGVzdC0+bV9leHBlY3RlZFZpZGVvTWVkaWEg
PSBGQUxTRTsKKyAgICB0ZXN0LT5tX2V4cGVjdGVkRGlzcGxheU1lZGlhID0gVFJVRTsKKworICAg
IC8vIFRlc3QgZGVueWluZyBhIHBlcm1pc3Npb24gcmVxdWVzdC4KKyAgICB0ZXN0LT5tX2FsbG93
UGVybWlzc2lvblJlcXVlc3RzID0gZmFsc2U7CisgICAgdGVzdC0+bG9hZEh0bWwoZGlzcGxheU1l
ZGlhUmVxdWVzdEhUTUwsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hhbmdl
ZFRvKCJOb3RBbGxvd2VkRXJyb3IiKTsKKworICAgIC8vIFRlc3QgYWxsb3dpbmcgYSBwZXJtaXNz
aW9uIHJlcXVlc3QuCisgICAgdGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cyA9IHRydWU7
CisgICAgdGVzdC0+bG9hZEh0bWwoZGlzcGxheU1lZGlhUmVxdWVzdEhUTUwsIG51bGxwdHIpOwor
ICAgIHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJPSyIpOworCisgICAgd2Via2l0X3Nl
dHRpbmdzX3NldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzLCBlbmFibGVkKTsKKyAgICB3
ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tb2NrX2NhcHR1cmVfZGV2aWNlcyhzZXR0aW5ncywg
RkFMU0UpOworICAgIHdlYmtpdFNldHRpbmdzU2V0TWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVD
b25uZWN0aW9uKHNldHRpbmdzLCBUUlVFKTsKK30KICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKQogCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKQEAgLTEzNDMsNiArMTM5MSw3IEBAIHZv
aWQgYmVmb3JlQWxsKCkKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ1
c2VybWVkaWEtZW51bWVyYXRlZGV2aWNlcy1wZXJtaXNzaW9uLWNoZWNrIiwgdGVzdFdlYlZpZXdV
c2VyTWVkaWFFbnVtZXJhdGVEZXZpY2VzUGVybWlzc2lvbkNoZWNrKTsKICAgICBVSUNsaWVudFRl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ1c2VybWVkaWEtcGVybWlzc2lvbi1yZXF1ZXN0cyIs
IHRlc3RXZWJWaWV3VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKTsKICAgICBVSUNsaWVudFRl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhdWRpby11c2VybWVkaWEtcGVybWlzc2lvbi1yZXF1
ZXN0IiwgdGVzdFdlYlZpZXdBdWRpb09ubHlVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpOwor
ICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImRpc3BsYXktdXNlcm1lZGlh
LXBlcm1pc3Npb24tcmVxdWVzdCIsIHRlc3RXZWJWaWV3RGlzcGxheVVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0cyk7CiAjZW5kaWYKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1vdXNlIGNsaWNr
IGluIFdQRS4KICNpZiBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwCmluZGV4IDRmMzdkYjcz
NGJiMGYxZTU5MjZjZGU0MjFjZmY1NGNiODI1YmQzYTMuLmUzYWU3YzIxZTZkZTA5MDJmNmM4NWZi
ZmQxNDdhYWU2NDkxYjA5MDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwCkBAIC02MzUsNiArNjM1LDcgQEAg
c3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhRGV2aWNlSWRIYXNoU2FsdChXZWJzaXRlRGF0YVRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIKICAgICBXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MgPSB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHRlc3QtPm1fd2ViVmlldyk7CiAgICAgZ2Jvb2xl
YW4gZW5hYmxlZCA9IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0
aW5ncyk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRp
bmdzLCBUUlVFKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tb2NrX2NhcHR1cmVf
ZGV2aWNlcyhzZXR0aW5ncywgVFJVRSk7CiAKICAgICB0ZXN0LT5jbGVhcihXRUJLSVRfV0VCU0lU
RV9EQVRBX0RFVklDRV9JRF9IQVNIX1NBTFQsIDApOwogCkBAIC02ODEsNiArNjgyLDcgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhRGV2aWNlSWRIYXNoU2FsdChXZWJzaXRlRGF0YVRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIKICAgICBnX2Fzc2VydF9udWxsKGRhdGFMaXN0KTsKIAogICAg
IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncywgZW5hYmxl
ZCk7CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbW9ja19jYXB0dXJlX2RldmljZXMo
c2V0dGluZ3MsIGVuYWJsZWQpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFJVFAo
V2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL0luamVjdGVkQnVuZGxlQ29udHJvbGxlci5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2dsaWIvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NzkwZWNiMDA5ZDk0ZmE5MWVlMmJmYjgyYTlmZGMyYmY2YTQ5ODA5Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL0luamVjdGVkQnVuZGxlQ29udHJvbGxlci5j
cHAKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFdLX0hBVkVfQ19TUEkKKyNp
bmNsdWRlICJJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIkluamVjdGVk
QnVuZGxlVGVzdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvT3B0aW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmVUZXN0U3VwcG9ydC9X
ZWJDb3JlVGVzdFN1cHBvcnQuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVGcmFtZS5oPgor
I2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZVBhZ2UuaD4KKworI2luY2x1ZGUgPGFsZ29yaXRobT4K
KyNpbmNsdWRlIDxhc3NlcnQuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitJbmpl
Y3RlZEJ1bmRsZUNvbnRyb2xsZXImIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6c2luZ2xldG9u
KCkKK3sKKyAgICBzdGF0aWMgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyJiBzaGFyZWQgPSAqbmV3
IEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjsKKyAgICByZXR1cm4gc2hhcmVkOworfQorCitJbmpl
Y3RlZEJ1bmRsZUNvbnRyb2xsZXI6OkluamVjdGVkQnVuZGxlQ29udHJvbGxlcigpCit7Cit9CisK
K3ZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjppbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1
bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCit7CisgICAgcGxhdGZvcm1J
bml0aWFsaXplKCk7CisgICAgbV9idW5kbGUgPSBidW5kbGU7CisKKyAgICBXS0J1bmRsZUNsaWVu
dFYxIGNsaWVudCA9IHsKKyAgICAgICAgeyAwLCB0aGlzIH0sCisgICAgICAgIGRpZENyZWF0ZVBh
Z2UsCisgICAgICAgIHdpbGxEZXN0cm95UGFnZSwKKyAgICAgICAgbnVsbHB0ciwKKyAgICAgICAg
ZGlkUmVjZWl2ZU1lc3NhZ2UsCisgICAgICAgIGRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlCisgICAg
fTsKKyAgICBXS0J1bmRsZVNldENsaWVudChtX2J1bmRsZS5nZXQoKSwgJmNsaWVudC5iYXNlKTsK
K30KKwordm9pZCBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmRpZENyZWF0ZVBhZ2UoV0tCdW5k
bGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKK3sKKyAgICBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIqIHNlbGYgPSBzdGF0aWNfY2FzdDxJ
bmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7
CisKKyAgICBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMCBsb2FkZXJDbGllbnQ7CisgICAgbWVt
c2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKKworICAgIGxvYWRl
ckNsaWVudC5iYXNlLnZlcnNpb24gPSAwOworICAgIGxvYWRlckNsaWVudC5iYXNlLmNsaWVudElu
Zm8gPSBzZWxmOworICAgIGxvYWRlckNsaWVudC5kaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1l
ID0gW10oV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRsZVNj
cmlwdFdvcmxkUmVmIHdvcmxkLCBjb25zdCB2b2lkKikgeworICAgICAgICBKU0dsb2JhbENvbnRl
eHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dEZvcldvcmxk
KGZyYW1lLCB3b3JsZCk7CisgICAgICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6aW5qZWN0SW50ZXJu
YWxzT2JqZWN0KGNvbnRleHQpOworICAgIH07CisKKyAgICBXS0J1bmRsZVBhZ2VTZXRQYWdlTG9h
ZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQuYmFzZSk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRC
dW5kbGVDb250cm9sbGVyOjp3aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFn
ZVJlZiwgY29uc3Qgdm9pZCopCit7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVy
OjpkaWRSZWNlaXZlTWVzc2FnZShXS0J1bmRsZVJlZiwgV0tTdHJpbmdSZWYsIFdLVHlwZVJlZiwg
Y29uc3Qgdm9pZCopCit7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpkaWRS
ZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmLCBXS1N0cmlu
Z1JlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sKK30KKwordm9pZCBJbmplY3RlZEJ1bmRs
ZUNvbnRyb2xsZXI6OmR1bXBUZXN0TmFtZXMoKQoreworfQorCit2b2lkIEluamVjdGVkQnVuZGxl
Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRlc3ROYW1lZChXS0J1bmRsZVJlZiwgY29uc3Qgc3RkOjpz
dHJpbmcmLCBXS1R5cGVSZWYpCit7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVy
OjpyZWdpc3RlckNyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9uKGNvbnN0IHN0ZDo6c3Ry
aW5nJiwgQ3JlYXRlSW5qZWN0ZWRCdW5kbGVUZXN0RnVuY3Rpb24pCit7Cit9CisKK3ZvaWQgSW5q
ZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAgIEpTQzo6
Q29uZmlnOjpjb25maWd1cmVGb3JUZXN0aW5nKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9mbGF0cGFrL2ZsYXRwYWt1dGls
cy5weSBiL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5CmluZGV4IDFjYjI5ODJlY2JhMGUy
MzllYjIwY2FhNDM0NDhkMjdkYWVhNWNlYjAuLmI0ZDE5ZjA5MDdlMTIyODY0MjUxYTA0Y2EzYmY2
YjNhZmJkMTkxMTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5Cisr
KyBiL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5CkBAIC04MDEsOCArODAxLDEwIEBAIGNs
YXNzIFdlYmtpdEZsYXRwYWs6CiAgICAgICAgICAgICAiSlNDIiwKICAgICAgICAgICAgICJNRVNB
IiwKICAgICAgICAgICAgICJMSUJHTCIsCisgICAgICAgICAgICAiUElQRVdJUkUiLAogICAgICAg
ICAgICAgIlJVU1QiLAogICAgICAgICAgICAgIlNDQ0FDSEUiLAorICAgICAgICAgICAgIlNQQSIs
CiAgICAgICAgICAgICAiV0FZTEFORCIsCiAgICAgICAgICAgICAiV0VCS0lUIiwKICAgICAgICAg
ICAgICJXRUJLSVQyIiwKZGlmZiAtLWdpdCBhL1Rvb2xzL2dsaWIvYXBpX3Rlc3RfcnVubmVyLnB5
IGIvVG9vbHMvZ2xpYi9hcGlfdGVzdF9ydW5uZXIucHkKaW5kZXggNDkzYmVhZDUyNjA2NDE0ZDFk
N2YwMTQ3M2QwMWNlMTBlNDUwODkxOC4uZjUyMWMyZjI3Y2E0OWJmNjZiZGI1OGNiYzlmNGU5YjU1
OTFmMDZlMCAxMDA3NTUKLS0tIGEvVG9vbHMvZ2xpYi9hcGlfdGVzdF9ydW5uZXIucHkKKysrIGIv
VG9vbHMvZ2xpYi9hcGlfdGVzdF9ydW5uZXIucHkKQEAgLTQyLDYgKzQyLDcgQEAgZWxzZToKIAog
Y2xhc3MgVGVzdFJ1bm5lcihvYmplY3QpOgogICAgIFRFU1RfVEFSR0VUUyA9IFtdCisgICAgVEVT
VFNfUkVRVUlSSU5HX0lOVEVSTkFMX0lOSkVDVEVEX0JVTkRMRSA9IFtdCiAKICAgICBkZWYgX19p
bml0X18oc2VsZiwgcG9ydCwgb3B0aW9ucywgdGVzdHM9W10pOgogICAgICAgICBpZiBsZW4ob3B0
aW9ucy5zdWJ0ZXN0cykgPiAwIGFuZCBsZW4odGVzdHMpICE9IDE6CkBAIC0xNjgsNyArMTY5LDEy
IEBAIGNsYXNzIFRlc3RSdW5uZXIob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9l
eHBlY3RhdGlvbnMuaXNfc2xvdyh0ZXN0LCBzdWJ0ZXN0KQogCiAgICAgICAgIHJ1bm5lciA9IEdM
aWJUZXN0UnVubmVyKHRlc3RfcHJvZ3JhbSwgdGltZW91dCwgaXNfc2xvd190ZXN0LCB0aW1lb3V0
ICogMTApCi0gICAgICAgIHJldHVybiBydW5uZXIucnVuKHN1YnRlc3RzPXN1YnRlc3RzLCBza2lw
cGVkPXNraXBwZWRfdGVzdF9jYXNlcywgZW52PXNlbGYuX3Rlc3RfZW52KQorCisgICAgICAgIGVu
diA9IHNlbGYuX3Rlc3RfZW52LmNvcHkoKQorICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKHRl
c3RfcHJvZ3JhbSkgaW4gc2VsZi5URVNUU19SRVFVSVJJTkdfSU5URVJOQUxfSU5KRUNURURfQlVO
RExFOgorICAgICAgICAgICAgZW52WyJURVNUX1dFQktJVF9BUElfV0VCS0lUMl9JTkpFQ1RFRF9C
VU5ETEVfRklMRU5BTUUiXSA9ICJsaWJUZXN0V2ViS2l0QVBJSW50ZXJuYWxJbmplY3RlZEJ1bmRs
ZS5zbyIKKworICAgICAgICByZXR1cm4gcnVubmVyLnJ1bihzdWJ0ZXN0cz1zdWJ0ZXN0cywgc2tp
cHBlZD1za2lwcGVkX3Rlc3RfY2FzZXMsIGVudj1lbnYpCiAKICAgICBkZWYgX3J1bl90ZXN0X3F0
KHNlbGYsIHRlc3RfcHJvZ3JhbSk6CiAgICAgICAgIGVudiA9IHNlbGYuX3Rlc3RfZW52CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggYzJiZDIxNTRjNjJhZWY3NGJlMDllZjBmOTkyNWI5MGM1OTdmN2EyYS4uOGQzMzllZGQyMGJk
YzRiMGExYWVlOWJlMWE0NzBmNjU0MWRkZTczZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIx
LTA3LTExICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1N0cmVhbWVyXVtQaXBld2lyZV0gSW1wbGVtZW50IGdldERpc3BsYXlNZWRpYSgpIGJhY2tl
bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDky
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxh
dGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zOiBVbnNraXAgbm93LXBhc3NpbmcgZ2V0RGlzcGxh
eU1lZGlhIHRlc3RzLgorCiAyMDIxLTA3LTEwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3OTgwMy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiZjQ3NzJkZjcz
Zjg0YWFjMWVlNzY4OTRiZjgxNDE1YzZmNzY5ZGMyLi5hZWYxMTY4ZDcwMWUyYzA1NDdjNjI5NGZi
OTI4YmRjYTZkZTQyNjg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0
YXRpb25zCkBAIC0xNTIxLDE1ICsxNTIxLDYgQEAgaHR0cC90ZXN0cy9tZWRpYS90cmFjay1pbi1i
YW5kLWhscy1tZXRhZGF0YS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTA5NTcwIG1lZGlh
L3RyYWNrL3JlZ2lvbnMtd2VidnR0IFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTA5NTcwIG1lZGlh
L3RyYWNrL3czYyBbIFNraXAgXQogCi0jIE5vIHN1cHBvcnQgZm9yIHNjcmVlbiBjYXB0dXJlCi1m
YXN0L21lZGlhc3RyZWFtL3NjcmVlbmNhcHR1cmUtdXNlci1nZXN0dXJlLmh0bWwgWyBTa2lwIF0K
LXdlYmtpdC5vcmcvYi8yMTA5MjYgZmFzdC9tZWRpYXN0cmVhbS9nZXREaXNwbGF5TWVkaWEtbWF4
LWNvbnN0cmFpbnRzMS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMjEwOTI2IGZhc3QvbWVk
aWFzdHJlYW0vZ2V0RGlzcGxheU1lZGlhLW1heC1jb25zdHJhaW50czIuaHRtbCBbIFNraXAgXQot
d2Via2l0Lm9yZy9iLzIxMDkyNiBmYXN0L21lZGlhc3RyZWFtL2dldERpc3BsYXlNZWRpYS1tYXgt
Y29uc3RyYWludHMzLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8yMTA5MjYgZmFzdC9tZWRp
YXN0cmVhbS9nZXQtZGlzcGxheS1tZWRpYS1tdXRlZC5odG1sIFsgU2tpcCBdCi13ZWJraXQub3Jn
L2IvMjEwOTI2IGZhc3QvbWVkaWFzdHJlYW0vY29uc3RyYWludC1pbnRyaW5zaWMtc2l6ZS5odG1s
IFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTkxMDA3IGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc3Ry
ZWFtL2dldC1kaXNwbGF5LW1lZGlhLXByb21wdC5odG1sIFsgU2tpcCBdCi0KICMgTW9kZXJuLW1l
ZGlhLWNvbnRyb2xzIHN1cHBvcnQKIHdlYmtpdC5vcmcvYi8xODI1MDIgaHR0cC90ZXN0cy9tZWRp
YS9tb2Rlcm4tbWVkaWEtY29udHJvbHMgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xODI1MDIgbWVk
aWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cg
Yi9DaGFuZ2VMb2cKaW5kZXggNjlmM2Q4OThiYmZlOWVkOTE4MjM2ZGUwODAxNjIxNGE1OTE1YTdl
Ni4uODMxYmRjN2U4NjI1NjMyNGYzNzBiOWNlZmUxNmUzOTY0NzNiMjRjNiAxMDA2NDQKLS0tIGEv
Q2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA3LTExICBQ
aGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVh
bWVyXVtQaXBld2lyZV0gSW1wbGVtZW50IGdldERpc3BsYXlNZWRpYSgpIGJhY2tlbmQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDkyNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtl
L0ZpbmRMSUJQT1JUQUwuY21ha2U6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9HU3Ry
ZWFtZXJDaGVja3MuY21ha2U6IEVuYWJsZSBQaXBld2lyZSBzdXBwb3J0IGlmIGxpYnBvcnRhbCB3
YXMgZm91bmQuCisKIDIwMjEtMDYtMjQgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIzNjg0Nik6IFdQRSBzaG91bGRuJ3QgZGVwZW5k
IG9uIE9wZW5HTCBFUyAzCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433400</attachid>
            <date>2021-07-13 05:02:51 -0700</date>
            <delta_ts>2021-07-13 08:31:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210926-20210713050248.patch</filename>
            <type>text/plain</type>
            <size>51995</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk3YjEwMzE0YjYxZDczYjI1YjUzYzJl
ZjJiODMyMDM2N2MxMjkzNzEuLjVlYWM0MzA2NjRkOGJmY2Q3MmZhNzQwYzUyNzExOTg2MGY5ZGM3
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDctMTEgIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdW1BpcGV3aXJlXSBJbXBs
ZW1lbnQgZ2V0RGlzcGxheU1lZGlhKCkgYmFja2VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwOTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzRXhwZXJpbWVudGFsLnlhbWw6IEVuYWJsZSBzY3JlZW4tY2FwdHVyZSBpZiBsaWJwb3J0YWwK
KyAgICAgICAgd2FzIGZvdW5kLgorCiAyMDIxLTA3LTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+IGFuZCBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAg
ICAgTmV3IG1hbGxvYyBhbGdvcml0aG0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkOGI1NWU4ZjVjZjM5NWFkNmM4
NDJjNTVhNDAyNWIzMGIzYzBhMDI3Li5iZDQyNzBjMzQ2MWEwZTI1NmVjMTMzNzdkMDBlMmQyYTMz
OWFhZTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODcgQEAKKzIwMjEtMDctMTEgIFBoaWxpcHBl
IE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdW1Bp
cGV3aXJlXSBJbXBsZW1lbnQgZ2V0RGlzcGxheU1lZGlhKCkgYmFja2VuZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwOTI2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGlzcGxheSBjYXB0dXJlIGlzIG5v
dyBzdXBwb3J0ZWQgYnkgR1N0cmVhbWVyIHBvcnRzLiBXaGVuIHJlcXVlc3RlZCwgdGhlIGNhcHR1
cmUgZGV2aWNlCisgICAgICAgIG1hbmFnZXIgcXVlcmllcyB0aGUgaG9zdCB0aHJvdWdoIHRoZSBs
aWJwb3J0YWwgQVBJLiBUaGUgdXNlciBpcyBwcmVzZW50ZWQgd2l0aCBhIHByb21wdAorICAgICAg
ICBhbGxvd2luZyB0byBzZWxlY3QgZWl0aGVyIGEgbW9uaXRvciBvciBhbiBhcHBsaWNhdGlvbiB3
aW5kb3cuIE9uY2Ugc2VsZWN0ZWQsIHRoZSBtYW5hZ2VyCisgICAgICAgIGNyZWF0ZXMgdGhlIGFz
c29jaWF0ZWQgQ2FwdHVyZURldmljZSwgcGFzc2luZyB0aGUgcGlwZXdpcmUgZmlsZSBkZXNjcmlw
dG9yIGFsb25nLiBUaGUKKyAgICAgICAgZXhpc3RpbmcgR1N0cmVhbWVyIHZpZGVvIGNhcHR1cmUg
c291cmNlIGluZnJhc3RydWN0dXJlIGlzIHJldXNlZCwgbGV2ZXJhZ2luZyB0aGUgR1N0cmVhbWVy
CisgICAgICAgIHBpcGV3aXJlc3JjIGVsZW1lbnQgdG8gZ2VuZXJhdGUgYSBsaXZlIHZpZGVvIHN0
cmVhbSBvZiB0aGUgZGlzcGxheSBkZXZpY2UuCisKKyAgICAgICAgQXMgZGlzcGxheSBjYXB0dXJl
IGRldmljZXMgbmVlZCB0byByZXNwZWN0IHRoZSBhc3BlY3QtcmF0aW8gb2YgdGhlIHZpZGVvIGZy
YW1lLCB0YWtpbmcgaW50bworICAgICAgICBhY2NvdW50IG1heC17d2lkdGhlcixoZWlnaHR9LCBz
b21lIGNvZGUgd2FzIHJldXNlZCBmcm9tIHRoZSBDb2NvYSBkaXNwbGF5IGNhcHR1cmUgY29kZSBh
bmQKKyAgICAgICAgcGxhY2VkIGluIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlIGFzIGVuc3Vy
ZUludHJpbnNpY1NpemVNYWludGFpbnNBc3BlY3RSYXRpbygpLgorCisgICAgICAgIFVuZm9ydHVu
YXRlbHkgdGhpcyBhc3BlY3QtcmF0aW8gZW5mb3JjaW5nIGZlYXR1cmUgaXMgY3VycmVudGx5IHVz
ZWQgb25seSBmb3IgbW9jayBjYXB0dXJlCisgICAgICAgIHNvdXJjZXMuIFRoZSBHU3RyZWFtZXIg
cGlwZXdpcmVzcmMgZG9lc24ndCBzdXBwb3J0IGNhcHMgcmVuZWdvdGlhdGlvbiB3ZWxsIHlldCwg
c28gd2UgY2FuJ3QKKyAgICAgICAgY29tcGx5IHdpdGggdGhlIGFzcGVjdC1yYXRpbyBlbmZvcmNp
bmcsIGZvciB0aGUgdGltZSBiZWluZy4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGNvdmVyZWQg
YnkgbmV3bHkgdW5za2lwcGVkIGxheW91dCB0ZXN0cyBhbmQgQVBJIHRlc3RzLgorCisgICAgICAg
ICogcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZTo6c2V0SW50cmluc2ljU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlOjpoYXNoZWRJZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjplbnN1cmVJbnRyaW5zaWNTaXplTWFpbnRhaW5zQXNw
ZWN0UmF0aW8pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9D
YXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVW
aWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZVZpZGVvU291cmNlOjpz
b3VyY2VTZXR0aW5nc0NoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdT
dHJlYW1lckF1ZGlvQ2FwdHVyZXI6OkdTdHJlYW1lckF1ZGlvQ2FwdHVyZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmlj
ZU1hbmFnZXI6OkdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6On5HU3RyZWFt
ZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVh
bWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb21wdXRlQ2FwdHVyZURldmljZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpz
ZXRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6c2Vzc2lvblN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVy
RGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpub3RpZnlDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uV2FzQ2xv
c2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
Q2FwdHVyZURldmljZU1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVh
bWVyQ2FwdHVyZXI6OkdTdHJlYW1lckNhcHR1cmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJl
YW1lckNhcHR1cmVyOjpPYnNlcnZlcjo6fk9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdT
dHJlYW1lckNhcHR1cmVyOjphZGRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFt
ZXJDYXB0dXJlcjo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVy
Q2FwdHVyZXI6OmZvckVhY2hPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJD
YXB0dXJlcjo6Y3JlYXRlU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1l
ckNhcHR1cmVyOjpPYnNlcnZlcjo6c291cmNlQ2Fwc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6R1N0cmVhbWVyQ2FwdHVyZXI6OmRldmljZVR5cGUgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQ
aXBld2lyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVT
b3VyY2U6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpt
X2RldmljZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291
cmNlOjp+R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdT
dHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6c291cmNlQ2Fwc0NoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpzdG9wUHJv
ZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjptX2NhcHR1cmVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0
dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dT
dHJlYW1lclZpZGVvQ2FwdHVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZURl
YnVnQ2F0ZWdvcnkpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlcjo6
R1N0cmVhbWVyVmlkZW9DYXB0dXJlcik6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRl
b0NhcHR1cmVyOjpjcmVhdGVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlk
ZW9DYXB0dXJlcjo6c2V0UGlwZXdpcmVGRCk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJW
aWRlb0NhcHR1cmVyOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclZpZGVv
Q2FwdHVyZXI6OnNldEZyYW1lUmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lcjo6Y3JlYXRl
TW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjYXBhYmlsaXRpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmdlbmVyYXRlRnJhbWUpOgorICAg
ICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaDoKKwogMjAyMS0w
Ny0xMyAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAg
UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsUG9zaXRpb24gYXNzdW1lcyB0
aGF0IGl0IGNhbiBzY3JvbGwgdG8gdGhlIHRhcmdldGVkIHNjcm9sbCBwb3NpdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJp
bWVudGFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5j
ZXNFeHBlcmltZW50YWwueWFtbAppbmRleCA5ZWNiN2EzZDZiMzljYTIzZGRkMzI1ODMyNmExZmRj
MmYwMTZjZTMwLi42Y2E0OWJkNzVlNWQ0MzAwNDc2Nzc2ZTVhYzcxNTUxZmExMzZhODMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBl
cmltZW50YWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbApAQCAtOTI3LDcgKzkyNyw3IEBAIFNjcmVlbkNhcHR1
cmVFbmFibGVkOgogICAgIFdlYktpdExlZ2FjeToKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICAg
V2ViS2l0OgotICAgICAgIlBMQVRGT1JNKE1BQykiOiB0cnVlCisgICAgICAiUExBVEZPUk0oTUFD
KSB8fCBVU0UoUElQRVdJUkUpIjogdHJ1ZQogICAgICAgZGVmYXVsdDogZmFsc2UKICAgICBXZWJD
b3JlOgogICAgICAgZGVmYXVsdDogZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0dTdHJlYW1lci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1l
ci5jbWFrZQppbmRleCA0YTc2NDA0OTFjNTFmMzNhNDZlZjg3ZGRjNTFjN2I3MGI1M2Q5OWUwLi5h
Yzk1ZmZjZWYyNThkNTZkNDBhYTE3ZWFhM2YwODlkMTMzZjRiNzkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCkBAIC0xNTEsNiArMTUxLDEwIEBAIGlmIChFTkFCTEVf
VklERU8pCiAgICAgICAgICAgICAgICAgJHtHU1RSRUFNRVJfQ09ERUNQQVJTRVJTX0xJQlJBUklF
U30KICAgICAgICAgICAgICkKICAgICAgICAgZW5kaWYgKCkKKworICAgICAgICBpZiAoVVNFX1BJ
UEVXSVJFKQorICAgICAgICAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMgTElCUE9S
VEFMOjpMSUJQT1JUQUwpCisgICAgICAgIGVuZGlmICgpCiAgICAgZW5kaWYgKCkKIGVuZGlmICgp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXggMjAzNWM2NzVlZjcyYzcxZTI1ZDcwYzhjMTNh
MjIwOTRiNTcyMWRmMC4uY2RjNDUyMGE0NmJiYTFmZjZlYjcyZDI4MDZlNTQ1YWNiZjU1MGM3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKQEAgLTk3OCw3ICs5NzgsNyBAQCBjb25zdCBJbnRTaXpl
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzaXplOwogfQog
Ci12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEludHJpbnNpY1NpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0SW50cmluc2ljU2l6ZShjb25z
dCBJbnRTaXplJiBzaXplLCBib29sIG5vdGlmeU9ic2VydmVycykKIHsKICAgICBpZiAobV9pbnRy
aW5zaWNTaXplID09IHNpemUpCiAgICAgICAgIHJldHVybjsKQEAgLTk4Nyw2ICs5ODcsOCBAQCB2
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEludHJpbnNpY1NpemUoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKICAgICAKICAgICBhdXRvIGN1cnJlbnRTaXplID0gdGhpcy0+c2l6ZSgpOwogICAgIG1f
aW50cmluc2ljU2l6ZSA9IHNpemU7CisgICAgaWYgKCFub3RpZnlPYnNlcnZlcnMpCisgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChjdXJyZW50U2l6ZSAhPSB0aGlzLT5zaXplKCkpIHsKICAgICAg
ICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXNdIHsKQEAgLTEwOTcsNyArMTA5OSw5IEBAIHZv
aWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2soRnVuY3Rpb248dm9p
ZCgpPiYmIGZ1bmN0aW9uKQogCiBjb25zdCBTdHJpbmcmIFJlYWx0aW1lTWVkaWFTb3VyY2U6Omhh
c2hlZElkKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIW1faGFzaGVkSUQuaXNFbXB0eSgpKTsKKyAg
ICBhdXRvIGRldmljZVR5cGUgPSB0aGlzLT5kZXZpY2VUeXBlKCk7CisgICAgaWYgKGRldmljZVR5
cGUgIT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuICYmIGRldmljZVR5cGUgIT0g
Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6V2luZG93KQorICAgICAgICBBU1NFUlQoIW1faGFz
aGVkSUQuaXNFbXB0eSgpKTsKICAgICByZXR1cm4gbV9oYXNoZWRJRDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNv
dXJjZS5oCmluZGV4IDYxMjkyNmM1MWMwY2FjOWNmNGMxOTNkODQ4MTNmYWIzYWQ4ZTVjNjUuLjM0
YTM0ODhiNjY2YjA0Mjg1MGYzNzBkMzc1OWFlYjAzMDBhM2QwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
LmgKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IElu
dFNpemUmKTsKIAogICAgIGNvbnN0IEludFNpemUgaW50cmluc2ljU2l6ZSgpIGNvbnN0OwotICAg
IHZvaWQgc2V0SW50cmluc2ljU2l6ZShjb25zdCBJbnRTaXplJik7CisgICAgdm9pZCBzZXRJbnRy
aW5zaWNTaXplKGNvbnN0IEludFNpemUmLCBib29sIG5vdGlmeU9ic2VydmVycyA9IHRydWUpOwog
CiAgICAgZG91YmxlIGZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSYXRlOyB9CiAg
ICAgdm9pZCBzZXRGcmFtZVJhdGUoZG91YmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291
cmNlLmNwcAppbmRleCAxYWI5N2I2ZTlkZjkwMWZhMjhhNWU4OThlZmUyMTk5NzFjZGE4Y2M0Li44
Njg2YmFjNGYxNjEyNjYwOGM5ZjE1MmE2MmUxMDRlM2RiNzI1NzQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVW
aWRlb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC00MjcsNiArNDI3LDMzIEBAIHZvaWQgUmVhbHRpbWVW
aWRlb0NhcHR1cmVTb3VyY2U6OmNsaWVudFVwZGF0ZWRTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0
aW9uYWw8aW50CiAgICAgc2V0RnJhbWVSYXRlKG1hdGNoLT5yZXF1ZXN0ZWRGcmFtZVJhdGUpOwog
fQogCit2b2lkIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjplbnN1cmVJbnRyaW5zaWNTaXpl
TWFpbnRhaW5zQXNwZWN0UmF0aW8oKQoreworICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IHRoaXMt
PmludHJpbnNpY1NpemUoKTsKKyAgICBhdXRvIGZyYW1lU2l6ZSA9IHNpemUoKTsKKyAgICBpZiAo
IWZyYW1lU2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgZnJhbWVTaXplLnNldEhlaWdodChpbnRyaW5z
aWNTaXplLmhlaWdodCgpKTsKKyAgICBpZiAoIWZyYW1lU2l6ZS53aWR0aCgpKQorICAgICAgICBm
cmFtZVNpemUuc2V0V2lkdGgoaW50cmluc2ljU2l6ZS53aWR0aCgpKTsKKworICAgIGF1dG8gbWF4
SGVpZ2h0ID0gc3RkOjptaW4oZnJhbWVTaXplLmhlaWdodCgpLCBpbnRyaW5zaWNTaXplLmhlaWdo
dCgpKTsKKyAgICBhdXRvIG1heFdpZHRoID0gc3RkOjptaW4oZnJhbWVTaXplLndpZHRoKCksIGlu
dHJpbnNpY1NpemUud2lkdGgoKSk7CisKKyAgICBhdXRvIGhlaWdodEZvck1heFdpZHRoID0gbWF4
V2lkdGggKiBpbnRyaW5zaWNTaXplLmhlaWdodCgpIC8gaW50cmluc2ljU2l6ZS53aWR0aCgpOwor
ICAgIGF1dG8gd2lkdGhGb3JNYXhIZWlnaHQgPSBtYXhIZWlnaHQgKiBpbnRyaW5zaWNTaXplLndp
ZHRoKCkgLyBpbnRyaW5zaWNTaXplLmhlaWdodCgpOworCisgICAgaWYgKGhlaWdodEZvck1heFdp
ZHRoIDw9IG1heEhlaWdodCkgeworICAgICAgICBzZXRTaXplKHsgbWF4V2lkdGgsIGhlaWdodEZv
ck1heFdpZHRoIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICh3aWR0aEZvck1h
eEhlaWdodCA8PSBtYXhXaWR0aCkgeworICAgICAgICBzZXRTaXplKHsgd2lkdGhGb3JNYXhIZWln
aHQsIG1heEhlaWdodCB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNldFNpemUo
aW50cmluc2ljU2l6ZSk7Cit9CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIFJlZjxKU09O
OjpPYmplY3Q+IFNpemVBbmRGcmFtZVJhdGU6OnRvSlNPTk9iamVjdCgpIGNvbnN0CiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVv
Q2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuaAppbmRleCBkMDM0YTgwMzUwOTU0MzE5MmVjYTg2MDA1
MTllYmRjZTIwZTJjNGIxLi4wYWIxNWU3Yjg3MTU3ZDQyOTMyODg5MjJkOWY0NTlhZDgzNzhjNGIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZVZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmgKQEAgLTczLDYgKzczLDggQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgZGlzcGF0Y2hNZWRpYVNhbXBsZVRvT2JzZXJ2ZXJzKE1lZGlhU2Ft
cGxlJik7CiAgICAgY29uc3QgVmVjdG9yPEludFNpemU+JiBzdGFuZGFyZFZpZGVvU2l6ZXMoKTsK
IAorICAgIHZvaWQgZW5zdXJlSW50cmluc2ljU2l6ZU1haW50YWluc0FzcGVjdFJhdGlvKCk7CisK
IHByaXZhdGU6CiAgICAgc3RydWN0IENhcHR1cmVTaXplQW5kRnJhbWVSYXRlIHsKICAgICAgICAg
UmVmUHRyPFZpZGVvUHJlc2V0PiBlbmNvZGluZ1ByZXNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAK
aW5kZXggMWU3YWZmY2VmZTdkMWRjNWU4MDgwYThjYzgwY2MzNmU2MjEwYTMwZC4uMWZlYTc5MTcx
MmIwMTJiNjZiZDk2YWY5ZjczM2U5YmRiMzQ0NjE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAK
QEAgLTExMiw5ICsxMTIsNyBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNvdXJjZU11dGVk
Q2hhbmdlZCgpCiB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNvdXJjZVNldHRpbmdzQ2hhbmdl
ZCgpCiB7CiAgICAgYXV0byByb3RhdGlvbiA9IG1fc291cmNlLT5zYW1wbGVSb3RhdGlvbigpOwot
ICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNpemUoKTsKLSAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCi0g
ICAgICAgIHNpemUgPSBtX3NvdXJjZS0+c2l6ZSgpOworICAgIGF1dG8gc2l6ZSA9IG1fc291cmNl
LT5zaXplKCk7CiAgICAgaWYgKHJvdGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
OjpMZWZ0IHx8IHJvdGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodCkK
ICAgICAgICAgc2l6ZSA9IHNpemUudHJhbnNwb3NlZFNpemUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlv
Q2FwdHVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZXIuY3BwCmluZGV4IGEwM2Y3Yzk4ZjYwOTBjYmViNDNj
NTA2MWIwZjk5YjgzODAxMmQwZjEuLjI2ZWU0MjYzYjlkYjg3ODFkYmFlNjFlMWEzMDEyZWY3ZGM3
MDk3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlci5jcHAK
QEAgLTQ1LDcgKzQ1LDcgQEAgR1N0cmVhbWVyQXVkaW9DYXB0dXJlcjo6R1N0cmVhbWVyQXVkaW9D
YXB0dXJlcihHU3RyZWFtZXJDYXB0dXJlRGV2aWNlIGRldmljZSkKIH0KIAogR1N0cmVhbWVyQXVk
aW9DYXB0dXJlcjo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlcigpCi0gICAgOiBHU3RyZWFtZXJDYXB0
dXJlcigiYXBwc3JjIiwgYWRvcHRHUmVmKGdzdF9jYXBzX25ld19zaW1wbGUoImF1ZGlvL3gtcmF3
IiwgInJhdGUiLCBHX1RZUEVfSU5ULCBBdWRpb0NhcHR1cmVTYW1wbGVSYXRlLCBudWxscHRyKSkp
CisgICAgOiBHU3RyZWFtZXJDYXB0dXJlcigiYXBwc3JjIiwgYWRvcHRHUmVmKGdzdF9jYXBzX25l
d19zaW1wbGUoImF1ZGlvL3gtcmF3IiwgInJhdGUiLCBHX1RZUEVfSU5ULCBBdWRpb0NhcHR1cmVT
YW1wbGVSYXRlLCBudWxscHRyKSksIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhv
bmUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURl
dmljZU1hbmFnZXIuY3BwCmluZGV4IDNmOWRkNThhOTBmOTdlOGFlM2IwM2UzMmJkM2Y0YjUyZWEz
MzhkMzcuLmEyMzUxNTNjNzRmZDRmYTk2YmYxNzA3NmFjY2FjZWM2M2Q4ZWU1NWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcApA
QCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkdTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmgiCiAKICNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24uaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9J
bnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MjAyLDYgKzIwMyw5NyBAQCB2b2lkIEdTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZy
ZXNoQ2FwdHVyZURldmljZXMoKQogICAgIH0KIH0KIAorR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKQorewor
I2lmIFVTRShQSVBFV0lSRSkKKyAgICBtX3BvcnRhbCA9IGFkb3B0R1JlZih4ZHBfcG9ydGFsX25l
dygpKTsKKyNlbmRpZgorfQorCitHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6
On5HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKQoreworI2lmIFVTRShQSVBF
V0lSRSkKKyAgICBpZiAobV9zZXNzaW9uKSB7CisgICAgICAgIHhkcF9zZXNzaW9uX2Nsb3NlKG1f
c2Vzc2lvbi5nZXQoKSk7CisgICAgICAgIG1fc2Vzc2lvbiA9IG51bGxwdHI7CisgICAgfQorI2Vu
ZGlmCit9CisKK3ZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb21w
dXRlQ2FwdHVyZURldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQor
eworI2lmIFVTRShQSVBFV0lSRSkKKyAgICBtX2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7
CisgICAgeGRwX3BvcnRhbF9jcmVhdGVfc2NyZWVuY2FzdF9zZXNzaW9uKG1fcG9ydGFsLmdldCgp
LCBzdGF0aWNfY2FzdDxYZHBPdXRwdXRUeXBlPihYRFBfT1VUUFVUX01PTklUT1IgfCBYRFBfT1VU
UFVUX1dJTkRPVyksIFhEUF9TQ1JFRU5DQVNUX0ZMQUdfTk9ORSwgbnVsbHB0ciwgW10oR09iamVj
dCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKKyAg
ICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBhdXRvKiBzZXNzaW9u
ID0geGRwX3BvcnRhbF9jcmVhdGVfc2NyZWVuY2FzdF9zZXNzaW9uX2ZpbmlzaChYRFBfUE9SVEFM
KHNvdXJjZSksIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKTsKKyAgICAgICAgaWYgKCFzZXNzaW9u
KSB7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBjcmVhdGUgc2NyZWVuY2Fz
dCBzZXNzaW9uOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBhdXRvJiBtYW5hZ2VyID0gKnJlaW50ZXJwcmV0X2Nhc3Q8R1N0cmVh
bWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKj4odXNlckRhdGEpOworICAgICAgICBtYW5h
Z2VyLnNldFNlc3Npb24oc2Vzc2lvbik7CisgICAgfSwgdGhpcyk7CisjZWxzZQorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIGNhbGxiYWNrKCk7CisjZW5kaWYKK30KKworI2lmIFVTRShQ
SVBFV0lSRSkKK3ZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXRT
ZXNzaW9uKFhkcFNlc3Npb24qIHNlc3Npb24pCit7CisgICAgQVNTRVJUKHNlc3Npb24pOworICAg
IG1fc2Vzc2lvbiA9IGFkb3B0R1JlZihzZXNzaW9uKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3Rf
c3dhcHBlZChtX3Nlc3Npb24uZ2V0KCksICJjbG9zZWQiLCBHX0NBTExCQUNLKCtbXShHU3RyZWFt
ZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIqIG1hbmFnZXIsIFhkcFNlc3Npb24qKSB7Cisg
ICAgICAgIG1hbmFnZXItPnNlc3Npb25XYXNDbG9zZWQoKTsKKyAgICB9KSwgdGhpcyk7CisgICAg
eGRwX3Nlc3Npb25fc3RhcnQobV9zZXNzaW9uLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBbXShH
T2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkg
eworICAgICAgICBhdXRvKiBzZXNzaW9uID0gWERQX1NFU1NJT04oc291cmNlKTsKKyAgICAgICAg
R1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBhdXRvJiBtYW5hZ2VyID0gKnJl
aW50ZXJwcmV0X2Nhc3Q8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKj4odXNl
ckRhdGEpOworICAgICAgICBpZiAoIXhkcF9zZXNzaW9uX3N0YXJ0X2ZpbmlzaChzZXNzaW9uLCBy
ZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFp
bGVkIHRvIHN0YXJ0IHNjcmVlbmNhc3Qgc2Vzc2lvbjogJXMiLCBlcnJvci0+bWVzc2FnZSk7Cisg
ICAgICAgICAgICBtYW5hZ2VyLm5vdGlmeUNsaWVudCgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgbWFuYWdlci5zZXNzaW9uU3RhcnRlZCgpOworICAgIH0sIHRo
aXMpOworfQorI2VuZGlmCisKK3ZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpzZXNzaW9uU3RhcnRlZCgpCit7CisgICAgbV9kZXZpY2VzLmNsZWFyKCk7CisjaWYgVVNF
KFBJUEVXSVJFKQorICAgIGludCBmZCA9IHhkcF9zZXNzaW9uX29wZW5fcGlwZXdpcmVfcmVtb3Rl
KG1fc2Vzc2lvbi5nZXQoKSk7CisKKyAgICAvLyBGSVhNRTogVGhlIGxpYnBvcnRhbCBBUEkgZG9l
c24ndCBzZWVtIHRvIGV4cG9zZSB3aGljaCBYZHBPdXRwdXRUeXBlIHdhcyBzZWxlY3RlZCBieSB0
aGUKKyAgICAvLyB1c2VyLCBzbyBoYXJkY29kZSBTY3JlZW4gaGVyZS4g8J+ktworICAgIENhcHR1
cmVEZXZpY2UgY2FwdHVyZURldmljZShXVEY6Om51bWJlclRvU3RyaW5nVW5zaWduZWQ8U3RyaW5n
PihmZCksIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgbWFrZVN0cmluZygiQ2Fw
dHVyZSBEaXNwbGF5IikpOworICAgIGNhcHR1cmVEZXZpY2Uuc2V0RW5hYmxlZCh0cnVlKTsKKyAg
ICBtX2RldmljZXMuYXBwZW5kKFdURk1vdmUoY2FwdHVyZURldmljZSkpOworI2VuZGlmCisgICAg
bm90aWZ5Q2xpZW50KCk7Cit9CisKK3ZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpub3RpZnlDbGllbnQoKQoreworICAgIGlmIChtX2NhbGxiYWNrKQorICAgICAgICBt
X2NhbGxiYWNrKCk7Cit9CisKK3ZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpzZXNzaW9uV2FzQ2xvc2VkKCkKK3sKKyNpZiBVU0UoUElQRVdJUkUpCisgICAgbV9zZXNz
aW9uID0gbnVsbHB0cjsKKyNlbmRpZgorICAgIG1fZGV2aWNlcy5jbGVhcigpOworICAgIGRldmlj
ZUNoYW5nZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2
aWNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggOGNlMWJhOTRiN2EwNmMy
OGUyY2Q2YjgwZWJkZmJkZjk1OTExZGViOC4uOTUzOTgxYWU4NjJkMDhiNzU3YTQ0ZTVmMzkwMDAw
MzMwZjY1ZjYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmgKQEAgLTI4LDYgKzI4LDEwIEBACiAjaW5jbHVkZSAiR1N0cmVhbWVyQ2Fw
dHVyZURldmljZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VGYWN0b3J5LmgiCiAK
KyNpZiBVU0UoUElQRVdJUkUpCisjaW5jbHVkZSA8bGlicG9ydGFsL3BvcnRhbC5oPgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1N0cmVhbWVyQ2FwdHVyZURldmljZU1h
bmFnZXIgOiBwdWJsaWMgQ2FwdHVyZURldmljZU1hbmFnZXIgewpAQCAtNjYsMTUgKzcwLDMyIEBA
IHByaXZhdGU6CiAgICAgR1N0cmVhbWVyVmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpID0gZGVm
YXVsdDsKIH07CiAKLWNsYXNzIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlciBm
aW5hbCA6IHB1YmxpYyBHU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlciB7CitjbGFzcyBHU3Ry
ZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgQ2FwdHVyZURl
dmljZU1hbmFnZXIgewogICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxHU3RyZWFtZXJE
aXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI+OwogcHVibGljOgogICAgIHN0YXRpYyBHU3RyZWFt
ZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXImIHNpbmdsZXRvbigpOwotICAgIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGZpbmFsIHsgcmV0dXJuIENhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGU6OlNjcmVlbjsgfQorICAgIGNvbnN0IFZlY3RvcjxDYXB0dXJlRGV2aWNl
PiYgY2FwdHVyZURldmljZXMoKSBmaW5hbCB7IHJldHVybiBtX2RldmljZXM7IH07CisgICAgdm9p
ZCBjb21wdXRlQ2FwdHVyZURldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5h
bDsKKworcHJvdGVjdGVkOgorI2lmIFVTRShQSVBFV0lSRSkKKyAgICB2b2lkIHNldFNlc3Npb24o
WGRwU2Vzc2lvbiopOworI2VuZGlmCisgICAgdm9pZCBzZXNzaW9uU3RhcnRlZCgpOworICAgIHZv
aWQgbm90aWZ5Q2xpZW50KCk7CisgICAgdm9pZCBzZXNzaW9uV2FzQ2xvc2VkKCk7CisKIHByaXZh
dGU6Ci0gICAgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgPSBkZWZhdWx0
OwotfTsKKyAgICBHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKTsKKyAgICB+
R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKCk7CiAKKyAgICBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+IG1fY2FsbGJhY2s7CisgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IG1f
ZGV2aWNlczsKKyNpZiBVU0UoUElQRVdJUkUpCisgICAgR1JlZlB0cjxYZHBQb3J0YWw+IG1fcG9y
dGFsOworICAgIEdSZWZQdHI8WGRwU2Vzc2lvbj4gbV9zZXNzaW9uOworI2VuZGlmCit9OwogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgICYmIFVTRShHU1RSRUFNRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyQ2FwdHVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmNwcAppbmRleCA4MzFkNDYwMjg2ZjJmYjJhMzUw
Y2M5NDEzN2RhMjdlYzc5ZjYwZjE2Li5lZWEzNDRlZTlhODBmMzY1NTAwMThiOWFkMGJkNWIxYzVj
YzA3ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5jcHAKQEAgLTQ4LDE0
ICs0OCwxNiBAQCBHU3RyZWFtZXJDYXB0dXJlcjo6R1N0cmVhbWVyQ2FwdHVyZXIoR1N0cmVhbWVy
Q2FwdHVyZURldmljZSBkZXZpY2UsIEdSZWZQdHI8R3N0QwogICAgIDogbV9kZXZpY2UoZGV2aWNl
LmRldmljZSgpKQogICAgICwgbV9jYXBzKGNhcHMpCiAgICAgLCBtX3NvdXJjZUZhY3RvcnkobnVs
bHB0cikKKyAgICAsIG1fZGV2aWNlVHlwZShkZXZpY2UudHlwZSgpKQogewogICAgIGluaXRpYWxp
emVEZWJ1Z0NhdGVnb3J5KCk7CiB9CiAKLUdTdHJlYW1lckNhcHR1cmVyOjpHU3RyZWFtZXJDYXB0
dXJlcihjb25zdCBjaGFyKiBzb3VyY2VGYWN0b3J5LCBHUmVmUHRyPEdzdENhcHM+IGNhcHMpCitH
U3RyZWFtZXJDYXB0dXJlcjo6R1N0cmVhbWVyQ2FwdHVyZXIoY29uc3QgY2hhciogc291cmNlRmFj
dG9yeSwgR1JlZlB0cjxHc3RDYXBzPiBjYXBzLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRl
dmljZVR5cGUpCiAgICAgOiBtX2RldmljZShudWxscHRyKQogICAgICwgbV9jYXBzKGNhcHMpCiAg
ICAgLCBtX3NvdXJjZUZhY3Rvcnkoc291cmNlRmFjdG9yeSkKKyAgICAsIG1fZGV2aWNlVHlwZShk
ZXZpY2VUeXBlKQogewogICAgIGluaXRpYWxpemVEZWJ1Z0NhdGVnb3J5KCk7CiB9CkBAIC02Niwx
NCArNjgsNTQgQEAgR1N0cmVhbWVyQ2FwdHVyZXI6On5HU3RyZWFtZXJDYXB0dXJlcigpCiAgICAg
ICAgIGRpc2Nvbm5lY3RTaW1wbGVCdXNNZXNzYWdlQ2FsbGJhY2socGlwZWxpbmUoKSk7CiB9CiAK
K0dTdHJlYW1lckNhcHR1cmVyOjpPYnNlcnZlcjo6fk9ic2VydmVyKCkKK3sKK30KKwordm9pZCBH
U3RyZWFtZXJDYXB0dXJlcjo6YWRkT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV9vYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsK
K30KKwordm9pZCBHU3RyZWFtZXJDYXB0dXJlcjo6cmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9i
c2VydmVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV9vYnNlcnZlcnMu
cmVtb3ZlKG9ic2VydmVyKTsKK30KKwordm9pZCBHU3RyZWFtZXJDYXB0dXJlcjo6Zm9yRWFjaE9i
c2VydmVyKGNvbnN0IEZ1bmN0aW9uPHZvaWQoT2JzZXJ2ZXImKT4mIGFwcGx5KQoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyk7CisgICAgbV9vYnNlcnZlcnMuZm9yRWFjaChhcHBseSk7Cit9CisKIEdzdEVsZW1lbnQq
IEdTdHJlYW1lckNhcHR1cmVyOjpjcmVhdGVTb3VyY2UoKQogewogICAgIGlmIChtX3NvdXJjZUZh
Y3RvcnkpIHsKICAgICAgICAgbV9zcmMgPSBtYWtlRWxlbWVudChtX3NvdXJjZUZhY3RvcnkpOwor
ICAgICAgICBBU1NFUlQobV9zcmMpOwogICAgICAgICBpZiAoR1NUX0lTX0FQUF9TUkMobV9zcmMu
Z2V0KCkpKQogICAgICAgICAgICAgZ19vYmplY3Rfc2V0KG1fc3JjLmdldCgpLCAiaXMtbGl2ZSIs
IHRydWUsICJmb3JtYXQiLCBHU1RfRk9STUFUX1RJTUUsIG51bGxwdHIpOwogCi0gICAgICAgIEFT
U0VSVChtX3NyYyk7CisgICAgICAgIGlmIChtX2RldmljZVR5cGUgPT0gQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZTo6U2NyZWVuKSB7CisgICAgICAgICAgICBhdXRvIHBhZCA9IGFkb3B0R1JlZihn
c3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChtX3NyYy5nZXQoKSwgInNyYyIpKTsKKyAgICAgICAg
ICAgIGdzdF9wYWRfYWRkX3Byb2JlKHBhZC5nZXQoKSwgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5U
X0RPV05TVFJFQU0sIFtdKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywgdm9pZCogdXNl
ckRhdGEpIC0+IEdzdFBhZFByb2JlUmV0dXJuIHsKKyAgICAgICAgICAgICAgICBhdXRvKiBldmVu
dCA9IGdzdF9wYWRfcHJvYmVfaW5mb19nZXRfZXZlbnQoaW5mbyk7CisgICAgICAgICAgICAgICAg
aWYgKEdTVF9FVkVOVF9UWVBFKGV2ZW50KSAhPSBHU1RfRVZFTlRfQ0FQUykKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CisKKyAgICAgICAgICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtldmVudCwgY2FwdHVyZXIgPSByZWludGVycHJldF9jYXN0PEdTdHJlYW1l
ckNhcHR1cmVyKj4odXNlckRhdGEpXSB7CisgICAgICAgICAgICAgICAgICAgIEdzdENhcHMqIGNh
cHM7CisgICAgICAgICAgICAgICAgICAgIGdzdF9ldmVudF9wYXJzZV9jYXBzKGV2ZW50LCAmY2Fw
cyk7CisgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVyLT5mb3JFYWNoT2JzZXJ2ZXIoW2NhcHNd
KE9ic2VydmVyJiBvYnNlcnZlcikgeworICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIu
c291cmNlQ2Fwc0NoYW5nZWQoY2Fwcyk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwor
ICAgICAgICAgICAgfSwgdGhpcywgbnVsbHB0cik7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IG1fc3JjLmdldCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZXIuaApp
bmRleCBmM2ZmODk0MzMwMDc1YTgzNDA1ZThjM2ExZmNjYjcyYmM3OWU1MmExLi5jMjk3MTMyNTRj
NzdiNDE0MTJiYmZhMzQ0YzlmZmIxOTYzMDUwMDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
Q2FwdHVyZXIuaApAQCAtMjgsMTUgKzI4LDI5IEBACiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9u
LmgiCiAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgR1N0cmVhbWVyQ2FwdHVyZXIgewotICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworY2xhc3MgR1N0cmVhbWVyQ2FwdHVyZXIKKyAgICA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxHU3RyZWFtZXJDYXB0dXJlciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFp
blJ1bkxvb3A+IHsKKwogcHVibGljOgorICAgIGNsYXNzIE9ic2VydmVyIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPE9ic2VydmVyPiB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5PYnNl
cnZlcigpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VDYXBzQ2hhbmdlZChjb25zdCBH
c3RDYXBzKikgeyB9CisgICAgfTsKKwogICAgIEdTdHJlYW1lckNhcHR1cmVyKEdTdHJlYW1lckNh
cHR1cmVEZXZpY2UsIEdSZWZQdHI8R3N0Q2Fwcz4pOwotICAgIEdTdHJlYW1lckNhcHR1cmVyKGNv
bnN0IGNoYXIqIHNvdXJjZUZhY3RvcnksIEdSZWZQdHI8R3N0Q2Fwcz4pOwotICAgIH5HU3RyZWFt
ZXJDYXB0dXJlcigpOworICAgIEdTdHJlYW1lckNhcHR1cmVyKGNvbnN0IGNoYXIqIHNvdXJjZUZh
Y3RvcnksIEdSZWZQdHI8R3N0Q2Fwcz4sIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUpOworICAg
IHZpcnR1YWwgfkdTdHJlYW1lckNhcHR1cmVyKCk7CisKKyAgICB2b2lkIGFkZE9ic2VydmVyKE9i
c2VydmVyJik7CisgICAgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciYpOworICAgIHZvaWQg
Zm9yRWFjaE9ic2VydmVyKGNvbnN0IEZ1bmN0aW9uPHZvaWQoT2JzZXJ2ZXImKT4mKTsKIAogICAg
IHZvaWQgc2V0dXBQaXBlbGluZSgpOwogICAgIHZvaWQgcGxheSgpOwpAQCAtNTcsNiArNzEsOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0ludGVycnVwdGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJ
bnRlcnJ1cHRlZChib29sKTsKIAorICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNl
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlVHlwZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAg
R1JlZlB0cjxHc3RFbGVtZW50PiBtX3Npbms7CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3Ny
YzsKQEAgLTY2LDEwICs4MiwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgR1JlZlB0cjxHc3REZXZpY2U+
IG1fZGV2aWNlOwogICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbV9jYXBzOwogICAgIEdSZWZQdHI8R3N0
RWxlbWVudD4gbV9waXBlbGluZTsKLQotcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiBtX3NvdXJj
ZUZhY3Rvcnk7CiAKK3ByaXZhdGU6CisgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBtX2Rl
dmljZVR5cGU7CisgICAgV2Vha0hhc2hTZXQ8T2JzZXJ2ZXI+IG1fb2JzZXJ2ZXJzOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
VmlkZW9DYXB0dXJlU291cmNlLmNwcAppbmRleCBjZjQ0YTk0MGVkYzgyMzFmNmU2ZWM1Njc4YmY1
YTY0NDBhNTJhNjk1Li5kZTU4OGQ2YTQwNWRkNDhlZWUwYWE3NGIwMmFiMTZmYTRlZDMzYWM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNw
cApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk1lZGlhU2FtcGxlR1N0cmVhbWVyLmgiCiAK
ICNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzcs
MTAgKzc4LDE1IEBAIFZpZGVvQ2FwdHVyZUZhY3RvcnkmIGxpYldlYlJUQ1ZpZGVvQ2FwdHVyZVNv
dXJjZUZhY3RvcnkoKQogCiBjbGFzcyBHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZVNvdXJjZUZhY3Rv
cnkgZmluYWwgOiBwdWJsaWMgRGlzcGxheUNhcHR1cmVGYWN0b3J5IHsKIHB1YmxpYzoKLSAgICBD
YXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGVEaXNwbGF5Q2FwdHVyZVNvdXJjZShjb25zdCBDYXB0
dXJlRGV2aWNlJiwgY29uc3QgTWVkaWFDb25zdHJhaW50cyopIGZpbmFsCisgICAgQ2FwdHVyZVNv
dXJjZU9yRXJyb3IgY3JlYXRlRGlzcGxheUNhcHR1cmVTb3VyY2UoY29uc3QgQ2FwdHVyZURldmlj
ZSYgZGV2aWNlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykgZmluYWwKICAg
ICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyNpZiBVU0UoUElQRVdJUkUp
CisgICAgICAgIHJldHVybiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZVBpcGV3
aXJlU291cmNlKGRldmljZS5wZXJzaXN0ZW50SWQoKS5pc29sYXRlZENvcHkoKSwgeyB9LCBjb25z
dHJhaW50cywgZGV2aWNlLnR5cGUoKSk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0oZGV2
aWNlKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGNvbnN0cmFpbnRzKTsKICAgICAgICAgcmV0dXJu
IHsgfTsKKyNlbmRpZgogICAgIH0KIHByaXZhdGU6CiAgICAgQ2FwdHVyZURldmljZU1hbmFnZXIm
IGRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpIGZpbmFsIHsgcmV0dXJuIEdTdHJlYW1lckRp
c3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCk7IH0KQEAgLTEwMSw3ICsxMDcs
MTYgQEAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpj
cmVhdGUoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmkKICAgICB9CiAKICAgICBhdXRvIHNvdXJjZSA9
IGFkb3B0UmVmKCpuZXcgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKGRldmljZS52YWx1ZSgp
LCBXVEZNb3ZlKGhhc2hTYWx0KSkpOworICAgIGlmIChjb25zdHJhaW50cykgeworICAgICAgICBp
ZiAoYXV0byByZXN1bHQgPSBzb3VyY2UtPmFwcGx5Q29uc3RyYWludHMoKmNvbnN0cmFpbnRzKSkK
KyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdC0+YmFkQ29uc3RyYWludCk7CisgICAg
fQorICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvcihXVEZNb3ZlKHNvdXJjZSkpOworfQog
CitDYXB0dXJlU291cmNlT3JFcnJvciBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0
ZVBpcGV3aXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBoYXNoU2FsdCwgY29u
c3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5
cGUgZGV2aWNlVHlwZSkKK3sKKyAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgR1N0cmVh
bWVyVmlkZW9DYXB0dXJlU291cmNlKFdURk1vdmUoZGV2aWNlSUQpLCB7IH0sIFdURk1vdmUoaGFz
aFNhbHQpLCAicGlwZXdpcmVzcmMiLCBkZXZpY2VUeXBlKSk7CiAgICAgaWYgKGNvbnN0cmFpbnRz
KSB7CiAgICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IHNvdXJjZS0+YXBwbHlDb25zdHJhaW50cygq
Y29uc3RyYWludHMpKQogICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0LT5iYWRDb25z
dHJhaW50KTsKQEAgLTExOSwyMiArMTM0LDM2IEBAIERpc3BsYXlDYXB0dXJlRmFjdG9yeSYgR1N0
cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpkaXNwbGF5RmFjdG9yeSgpCiAgICAgcmV0dXJuIGxp
YldlYlJUQ0Rpc3BsYXlDYXB0dXJlU291cmNlRmFjdG9yeSgpOwogfQogCi1HU3RyZWFtZXJWaWRl
b0NhcHR1cmVTb3VyY2U6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShTdHJpbmcmJiBkZXZp
Y2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IGdjaGFyICpzb3Vy
Y2VfZmFjdG9yeSkKLSAgICA6IFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlKFdURk1vdmUoZGV2
aWNlSUQpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGhhc2hTYWx0KSkKLSAgICAsIG1fY2FwdHVy
ZXIobWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihzb3VyY2VfZmFjdG9yeSkpCitH
U3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShT
dHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0
IGdjaGFyKiBzb3VyY2VGYWN0b3J5LCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5
cGUpCisgICAgOiBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZShXVEZNb3ZlKG5hbWUpLCBXVEZN
b3ZlKGRldmljZUlEKSwgV1RGTW92ZShoYXNoU2FsdCkpCisgICAgLCBtX2NhcHR1cmVyKG1ha2VV
bmlxdWU8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4oc291cmNlRmFjdG9yeSwgZGV2aWNlVHlwZSkp
CisgICAgLCBtX2RldmljZVR5cGUoZGV2aWNlVHlwZSkKIHsKICAgICBpbml0aWFsaXplRGVidWdD
YXRlZ29yeSgpOworCisgICAgaWYgKGdfc3RyX2VxdWFsKHNvdXJjZUZhY3RvcnksICJwaXBld2ly
ZXNyYyIpKSB7CisgICAgICAgIGlmIChhdXRvIGZkID0gcGFyc2VJbnRlZ2VyPGludD4ocGVyc2lz
dGVudElEKCkpKQorICAgICAgICAgICAgbV9jYXB0dXJlci0+c2V0UGlwZXdpcmVGRCgqZmQpOwor
ICAgIH0KKyAgICBtX2NhcHR1cmVyLT5hZGRPYnNlcnZlcigqdGhpcyk7CiB9CiAKIEdTdHJlYW1l
clZpZGVvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKEdTdHJlYW1l
ckNhcHR1cmVEZXZpY2UgZGV2aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCkKICAgICA6IFJlYWx0aW1l
VmlkZW9DYXB0dXJlU291cmNlKFN0cmluZyB7IGRldmljZS5wZXJzaXN0ZW50SWQoKSB9LCBTdHJp
bmcgeyBkZXZpY2UubGFiZWwoKSB9LCBXVEZNb3ZlKGhhc2hTYWx0KSkKICAgICAsIG1fY2FwdHVy
ZXIobWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihkZXZpY2UpKQorICAgICwgbV9k
ZXZpY2VUeXBlKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSkKIHsKICAgICBpbml0
aWFsaXplRGVidWdDYXRlZ29yeSgpOworICAgIG1fY2FwdHVyZXItPmFkZE9ic2VydmVyKCp0aGlz
KTsKIH0KIAogR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjp+R1N0cmVhbWVyVmlkZW9DYXB0
dXJlU291cmNlKCkKIHsKKyAgICBtX2NhcHR1cmVyLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7Cisg
ICAgaWYgKCFtX2NhcHR1cmVyLT5waXBlbGluZSgpKQorICAgICAgICByZXR1cm47CisgICAgZ19z
aWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fY2FwdHVyZXItPnNpbmsoKSwgcmVp
bnRlcnByZXRfY2FzdDxncG9pbnRlcj4obmV3U2FtcGxlQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBt
X2NhcHR1cmVyLT5zdG9wKCk7CiB9CiAKIHZvaWQgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNl
OjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
OjpGbGFnPiBzZXR0aW5ncykKQEAgLTE0NSwxMCArMTc0LDI3IEBAIHZvaWQgR1N0cmVhbWVyVmlk
ZW9DYXB0dXJlU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRp
YVNvdXJjCiAgICAgICAgIG1fY2FwdHVyZXItPnNldEZyYW1lUmF0ZShmcmFtZVJhdGUoKSk7CiB9
CiAKK3ZvaWQgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpzb3VyY2VDYXBzQ2hhbmdlZChj
b25zdCBHc3RDYXBzKiBjYXBzKQoreworICAgIGF1dG8gdmlkZW9SZXNvbHV0aW9uID0gZ2V0Vmlk
ZW9SZXNvbHV0aW9uRnJvbUNhcHMoY2Fwcyk7CisgICAgaWYgKCF2aWRlb1Jlc29sdXRpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIHNldEludHJpbnNpY1NpemUoSW50U2l6ZSgqdmlkZW9SZXNv
bHV0aW9uKSwgZmFsc2UpOworICAgIGlmIChtX2RldmljZVR5cGUgPT0gQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZTo6U2NyZWVuKQorICAgICAgICBlbnN1cmVJbnRyaW5zaWNTaXplTWFpbnRhaW5z
QXNwZWN0UmF0aW8oKTsKK30KKwogdm9pZCBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OnN0
YXJ0UHJvZHVjaW5nRGF0YSgpCiB7CisgICAgaWYgKG1fY2FwdHVyZXItPnBpcGVsaW5lKCkpCisg
ICAgICAgIHJldHVybjsKKwogICAgIG1fY2FwdHVyZXItPnNldHVwUGlwZWxpbmUoKTsKLSAgICBt
X2NhcHR1cmVyLT5zZXRTaXplKHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkpOworCisg
ICAgaWYgKG1fZGV2aWNlVHlwZSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEp
CisgICAgICAgIG1fY2FwdHVyZXItPnNldFNpemUoc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWln
aHQoKSk7CisKICAgICBtX2NhcHR1cmVyLT5zZXRGcmFtZVJhdGUoZnJhbWVSYXRlKCkpOwogICAg
IGdfc2lnbmFsX2Nvbm5lY3QobV9jYXB0dXJlci0+c2luaygpLCAibmV3LXNhbXBsZSIsIEdfQ0FM
TEJBQ0sobmV3U2FtcGxlQ2FsbGJhY2spLCB0aGlzKTsKICAgICBtX2NhcHR1cmVyLT5wbGF5KCk7
CkBAIC0xNzYsOSArMjIyLDYgQEAgR3N0Rmxvd1JldHVybiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVT
b3VyY2U6Om5ld1NhbXBsZUNhbGxiYWNrKEdzdEVsZW1lbnQqIHNpbmssIEcKIAogdm9pZCBHU3Ry
ZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBnX3Np
Z25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMobV9jYXB0dXJlci0+c2luaygpLCByZWlu
dGVycHJldF9jYXN0PGdwb2ludGVyPihuZXdTYW1wbGVDYWxsYmFjayksIHRoaXMpOwotICAgIG1f
Y2FwdHVyZXItPnN0b3AoKTsKLQogICAgIEdTVF9JTkZPKCJSZXNldCBoZWlnaHQgYW5kIHdpZHRo
IGFmdGVyIHN0b3BwaW5nIHNvdXJjZSIpOwogICAgIHNldFNpemUoeyAwLCAwIH0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dT
dHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDJm
MDc0ZmFmMTQ0MzU0MDEwYmNhYjdlNTRjZGI5ZWMwNWYxZDI5Y2YuLjliZTM5ZGVhM2U2MDU2MGNl
NGUwNjA0N2E0NTg0ZDYzNTdlNjYyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyVmlkZW9DYXB0dXJlU291cmNlLmgKQEAgLTI5LDEzICsyOSwxNCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZSA6IHB1YmxpYyBS
ZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZSB7CitjbGFzcyBHU3RyZWFtZXJWaWRlb0NhcHR1cmVT
b3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UsIEdTdHJlYW1lckNhcHR1
cmVyOjpPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9y
IGNyZWF0ZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IE1lZGlh
Q29uc3RyYWludHMqKTsKKyAgICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlUGlw
ZXdpcmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBN
ZWRpYUNvbnN0cmFpbnRzKiwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSk7CisKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgVmlkZW9DYXB0dXJlRmFjdG9yeSYgZmFjdG9yeSgpOwogCi0gICAg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGlzLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEaXNw
bGF5Q2FwdHVyZUZhY3RvcnkmIGRpc3BsYXlGYWN0b3J5KCk7IAorICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBEaXNwbGF5Q2FwdHVyZUZhY3RvcnkmIGRpc3BsYXlGYWN0b3J5KCk7CiAKICAgICBj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBvdmVy
cmlkZTsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkg
b3ZlcnJpZGU7CkBAIC00Myw4ICs0NCwxMSBAQCBwdWJsaWM6CiAgICAgR1N0cmVhbWVyQ2FwdHVy
ZXIqIGNhcHR1cmVyKCkgeyByZXR1cm4gbV9jYXB0dXJlci5nZXQoKTsgfQogICAgIHZvaWQgcHJv
Y2Vzc05ld0ZyYW1lKFJlZjxNZWRpYVNhbXBsZT4mJik7CiAKKyAgICAvLyBHU3RyZWFtZXJDYXB0
dXJlcjo6T2JzZXJ2ZXIKKyAgICB2b2lkIHNvdXJjZUNhcHNDaGFuZ2VkKGNvbnN0IEdzdENhcHMq
KSBmaW5hbDsKKwogcHJvdGVjdGVkOgotICAgIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShT
dHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0
IGdjaGFyICogc291cmNlX2ZhY3RvcnkpOworICAgIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJj
ZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNv
bnN0IGdjaGFyKiBzb3VyY2VfZmFjdG9yeSwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSk7CiAg
ICAgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKEdTdHJlYW1lckNhcHR1cmVEZXZpY2UsIFN0
cmluZyYmIGhhc2hTYWx0KTsKICAgICB2aXJ0dWFsIH5HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3Vy
Y2UoKTsKICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlOwpAQCAtNTUsNyAr
NTksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7CiAgICAgbXV0YWJsZSBzdGQ6
Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7
Ci0gICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhOyB9CisgICAgQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9kZXZpY2VUeXBlOyB9CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIEdzdEZsb3dSZXR1cm4g
bmV3U2FtcGxlQ2FsbGJhY2soR3N0RWxlbWVudCosIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJj
ZSopOwpAQCAtNjQsNiArNjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFu
Z2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4pIGZpbmFsOwog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+IG1fY2FwdHVyZXI7
CisgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBtX2RldmljZVR5cGU7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0
dXJlci5jcHAKaW5kZXggMmQ4YWRjMTA0YTUxNzkzMTAxY2ZhZWRhMjE4YzIzZTYzNDU0MWJiNi4u
ZDFhODBjMjQ5YjdkNTUwNWZiOGNjMjcxZmZmMmVlODVhZmVhNDVjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVv
Q2FwdHVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmNwcApAQCAtMjUsMTYgKzI1LDM5IEBACiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEdTVFJFQU1FUikKICNpbmNsdWRlICJHU3Ry
ZWFtZXJWaWRlb0NhcHR1cmVyLmgiCiAKK0dTVF9ERUJVR19DQVRFR09SWSh3ZWJraXRfdmlkZW9f
Y2FwdHVyZXJfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X3ZpZGVvX2Nh
cHR1cmVyX2RlYnVnCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZURlYnVnQ2F0ZWdvcnkoKQoreworICAgIGVuc3VyZUdTdHJlYW1lckluaXRpYWxpemVkKCk7
CisKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgZGVidWdSZWdpc3RlcmVkRmxhZzsKKyAgICBz
dGQ6OmNhbGxfb25jZShkZWJ1Z1JlZ2lzdGVyZWRGbGFnLCBbXSB7CisgICAgICAgIEdTVF9ERUJV
R19DQVRFR09SWV9JTklUKHdlYmtpdF92aWRlb19jYXB0dXJlcl9kZWJ1ZywgIndlYmtpdHZpZGVv
Y2FwdHVyZXIiLCAwLCAiV2ViS2l0IFZpZGVvIENhcHR1cmVyIik7CisgICAgfSk7Cit9CisKIEdT
dHJlYW1lclZpZGVvQ2FwdHVyZXI6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZXIoR1N0cmVhbWVyQ2Fw
dHVyZURldmljZSBkZXZpY2UpCiAgICAgOiBHU3RyZWFtZXJDYXB0dXJlcihkZXZpY2UsIGFkb3B0
R1JlZihnc3RfY2Fwc19uZXdfZW1wdHlfc2ltcGxlKCJ2aWRlby94LXJhdyIpKSkKIHsKKyAgICBp
bml0aWFsaXplRGVidWdDYXRlZ29yeSgpOwogfQogCi1HU3RyZWFtZXJWaWRlb0NhcHR1cmVyOjpH
U3RyZWFtZXJWaWRlb0NhcHR1cmVyKGNvbnN0IGNoYXIqIHNvdXJjZUZhY3RvcnkpCi0gICAgOiBH
U3RyZWFtZXJDYXB0dXJlcihzb3VyY2VGYWN0b3J5LCBhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X2Vt
cHR5X3NpbXBsZSgidmlkZW8veC1yYXciKSkpCitHU3RyZWFtZXJWaWRlb0NhcHR1cmVyOjpHU3Ry
ZWFtZXJWaWRlb0NhcHR1cmVyKGNvbnN0IGNoYXIqIHNvdXJjZUZhY3RvcnksIENhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSkKKyAgICA6IEdTdHJlYW1lckNhcHR1cmVyKHNvdXJj
ZUZhY3RvcnksIGFkb3B0R1JlZihnc3RfY2Fwc19uZXdfZW1wdHlfc2ltcGxlKCJ2aWRlby94LXJh
dyIpKSwgZGV2aWNlVHlwZSkKIHsKKyAgICBpbml0aWFsaXplRGVidWdDYXRlZ29yeSgpOworfQor
CitHc3RFbGVtZW50KiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVyOjpjcmVhdGVTb3VyY2UoKQorewor
ICAgIGF1dG8qIHNyYyA9IEdTdHJlYW1lckNhcHR1cmVyOjpjcmVhdGVTb3VyY2UoKTsKKyAgICBp
ZiAobV9mZCkKKyAgICAgICAgZ19vYmplY3Rfc2V0KG1fc3JjLmdldCgpLCAiZmQiLCAqbV9mZCwg
bnVsbHB0cik7CisgICAgcmV0dXJuIHNyYzsKIH0KIAogR3N0RWxlbWVudCogR1N0cmVhbWVyVmlk
ZW9DYXB0dXJlcjo6Y3JlYXRlQ29udmVydGVyKCkKQEAgLTUyLDExICs3NSwyOSBAQCBHc3RWaWRl
b0luZm8gR1N0cmVhbWVyVmlkZW9DYXB0dXJlcjo6Z2V0QmVzdEZvcm1hdCgpCiAgICAgcmV0dXJu
IGluZm87CiB9CiAKK3ZvaWQgR1N0cmVhbWVyVmlkZW9DYXB0dXJlcjo6c2V0UGlwZXdpcmVGRChp
bnQgZmQpCit7CisgICAgbV9mZCA9IGZkOworfQorCiBib29sIEdTdHJlYW1lclZpZGVvQ2FwdHVy
ZXI6OnNldFNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogeworICAgIGlmIChtX2ZkLmhhc192
YWx1ZSgpKSB7CisgICAgICAgIC8vIFBpcGV3aXJlc3JjIGRvZXNuJ3Qgc2VlbSB0byBzdXBwb3J0
IGNhcHMgcmUtbmVnb3RpYXRpb24gYW5kIGZyYW1lcmF0ZSBjb25maWd1cmF0aW9uIHByb3Blcmx5
LgorICAgICAgICBHU1RfRklYTUVfT0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCksICJSZXNpemluZyBk
aXNhYmxlZCBvbiBkaXNwbGF5IGNhcHR1cmUgc291cmNlIik7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKwogICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCisgICAgYXV0byB2aWRlb1Jlc29sdXRpb24gPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9t
Q2FwcyhtX2NhcHMuZ2V0KCkpOworICAgIGlmICh2aWRlb1Jlc29sdXRpb24gJiYgdmlkZW9SZXNv
bHV0aW9uLT53aWR0aCgpID09IHdpZHRoICYmIHZpZGVvUmVzb2x1dGlvbi0+aGVpZ2h0KCkgPT0g
aGVpZ2h0KSB7CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwgIlNp
emUgaGFzIG5vdCBjaGFuZ2VkIik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IEdTVF9JTkZPX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAiU2V0dGluZyBzaXplIHRvICVkeCVk
Iiwgd2lkdGgsIGhlaWdodCk7CiAgICAgbV9jYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBzX2NvcHko
bV9jYXBzLmdldCgpKSk7CiAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZShtX2NhcHMuZ2V0KCksICJ3
aWR0aCIsIEdfVFlQRV9JTlQsIHdpZHRoLCAiaGVpZ2h0IiwgR19UWVBFX0lOVCwgaGVpZ2h0LCBu
dWxscHRyKTsKIApAQCAtNjQsMTIgKzEwNSwxNyBAQCBib29sIEdTdHJlYW1lclZpZGVvQ2FwdHVy
ZXI6OnNldFNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBnX29iamVjdF9zZXQobV9jYXBzZmlsdGVyLmdldCgpLCAiY2FwcyIsIG1fY2Fwcy5n
ZXQoKSwgbnVsbHB0cik7Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBHU3RyZWFtZXJW
aWRlb0NhcHR1cmVyOjpzZXRGcmFtZVJhdGUoZG91YmxlIGZyYW1lUmF0ZSkKIHsKKyAgICBpZiAo
bV9mZC5oYXNfdmFsdWUoKSkgeworICAgICAgICAvLyBQaXBld2lyZXNyYyBkb2Vzbid0IHNlZW0g
dG8gc3VwcG9ydCBjYXBzIHJlLW5lZ290aWF0aW9uIGFuZCBmcmFtZXJhdGUgY29uZmlndXJhdGlv
biBwcm9wZXJseS4KKyAgICAgICAgR1NUX0ZJWE1FX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAi
RnJhbWVyYXRlIG92ZXJyaWRlIGRpc2FibGVkIG9uIGRpc3BsYXkgY2FwdHVyZSBzb3VyY2UiKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgaW50IG51bWVyYXRvciwgZGVub21p
bmF0b3I7CiAKICAgICBnc3RfdXRpbF9kb3VibGVfdG9fZnJhY3Rpb24oZnJhbWVSYXRlLCAmbnVt
ZXJhdG9yLCAmZGVub21pbmF0b3IpOwpAQCAtOTAsNiArMTM2LDcgQEAgYm9vbCBHU3RyZWFtZXJW
aWRlb0NhcHR1cmVyOjpzZXRGcmFtZVJhdGUoZG91YmxlIGZyYW1lUmF0ZSkKICAgICBpZiAoIW1f
Y2Fwc2ZpbHRlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgR1NUX0lORk9fT0JKRUNU
KG1fcGlwZWxpbmUuZ2V0KCksICJTZXR0aW5nIGZyYW1lcmF0ZSB0byAlZiBmcHMiLCBmcmFtZVJh
dGUpOwogICAgIGdfb2JqZWN0X3NldChtX2NhcHNmaWx0ZXIuZ2V0KCksICJjYXBzIiwgbV9jYXBz
LmdldCgpLCBudWxscHRyKTsKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2Fw
dHVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJWaWRlb0NhcHR1cmVyLmgKaW5kZXggNDBhMWM2M2RjYjBiNjA1NTVhYmI2NTJjODQ5
MDcxOTllMjIzNzI3OC4uNzBkMzY1MmRjYjViYzVlM2IwZTYzNWQxY2ZhMjJjN2RjZTExZjhlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlci5oCkBAIC0zMywxNCAr
MzMsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR1N0cmVhbWVyVmlkZW9DYXB0dXJl
ciBmaW5hbCA6IHB1YmxpYyBHU3RyZWFtZXJDYXB0dXJlciB7CiBwdWJsaWM6CiAgICAgR1N0cmVh
bWVyVmlkZW9DYXB0dXJlcihHU3RyZWFtZXJDYXB0dXJlRGV2aWNlKTsKLSAgICBHU3RyZWFtZXJW
aWRlb0NhcHR1cmVyKGNvbnN0IGNoYXIqIHNvdXJjZV9mYWN0b3J5KTsKKyAgICBHU3RyZWFtZXJW
aWRlb0NhcHR1cmVyKGNvbnN0IGNoYXIqIHNvdXJjZV9mYWN0b3J5LCBDYXB0dXJlRGV2aWNlOjpE
ZXZpY2VUeXBlKTsKIAorICAgIEdzdEVsZW1lbnQqIGNyZWF0ZVNvdXJjZSgpIGZpbmFsOwogICAg
IEdzdEVsZW1lbnQqIGNyZWF0ZUNvbnZlcnRlcigpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIG5h
bWUoKSBmaW5hbCB7IHJldHVybiAiVmlkZW8iOyB9CiAKICAgICBib29sIHNldFNpemUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKICAgICBib29sIHNldEZyYW1lUmF0ZShkb3VibGUpOwogICAgIEdz
dFZpZGVvSW5mbyBnZXRCZXN0Rm9ybWF0KCk7CisKKyAgICB2b2lkIHNldFBpcGV3aXJlRkQoaW50
KTsKK3ByaXZhdGU6CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1fZmQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGlt
ZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA1NTBiMTI1MDM3MzQ4NzkyYjkzNTM4ZDBi
YjcyNTdiZDAyZDYyODhhLi5kYmJlYjFmZTAyMDc4YTc3NTU1ODRlZTEzNTZlOTdjYmYyNjdhZDY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZUdTdHJlYW1lci5jcHAKQEAgLTQ0LDcgKzQ0LDE4IEBAIENhcHR1cmVTb3VyY2VPckVycm9yIE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYm
CiAgICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3IE1vY2tSZWFsdGltZVZpZGVvU291cmNl
R1N0cmVhbWVyKFdURk1vdmUoZGV2aWNlSUQpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGhhc2hT
YWx0KSkpOwogICAgIGlmIChjb25zdHJhaW50cykgewogICAgICAgICBpZiAoYXV0byBlcnJvciA9
IHNvdXJjZS0+YXBwbHlDb25zdHJhaW50cygqY29uc3RyYWludHMpKQotICAgICAgICAgICAgcmV0
dXJuIFdURk1vdmUoZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUo
ZXJyb3IudmFsdWUoKS5iYWRDb25zdHJhaW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gQ2FwdHVy
ZVNvdXJjZU9yRXJyb3IoUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKFdURk1vdmUoc291cmNl
KSkpOworfQorCitDYXB0dXJlU291cmNlT3JFcnJvciBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdT
dHJlYW1lcjo6Y3JlYXRlTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlKFN0cmluZyYmIGRldmljZUlE
LCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgTWVkaWFDb25zdHJhaW50
cyogY29uc3RyYWludHMpCit7CisgICAgYXV0byBzb3VyY2UgPSBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZUdTdHJlYW1lcjo6Y3JlYXRlRm9yTW9ja0Rpc3BsYXlDYXB0dXJlcihXVEZNb3ZlKGRldmlj
ZUlEKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCkpOworICAgIGlmIChjb25zdHJh
aW50cykgeworICAgICAgICBpZiAoYXV0byBlcnJvciA9IHNvdXJjZS0+YXBwbHlDb25zdHJhaW50
cygqY29uc3RyYWludHMpKQorICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUoZXJyb3IudmFsdWUo
KS5iYWRDb25zdHJhaW50KTsKICAgICB9CiAKICAgICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJy
b3IoUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKFdURk1vdmUoc291cmNlKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuaApp
bmRleCA5ZDY0MmU2ODkxNGFmM2E1NWQxODc0ZTM2NTZkMjgzOTg5ZmI0NThkLi4xM2QwZjgxNzNk
ZWJkOGIwNGMzOGJhMWVhM2U2NWU0YmQ3NTNiNDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuaApAQCAtMzIsNiArMzIsOCBA
QCBjbGFzcyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZT4gY3JlYXRlRm9yTW9ja0Rpc3BsYXlDYXB0dXJlcihTdHJpbmcmJiBk
ZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQpOwogCisgICAgc3RhdGlj
IENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZU1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZShTdHJp
bmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IE1l
ZGlhQ29uc3RyYWludHMqKTsKKwogICAgIH5Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1l
cigpID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5k
ZXggMzY2YTE3ODU3M2ZmMDBkMTZkYzg3NzcxMTczOGNjODhkMzdjODFiMS4uNDAzZmYzOTMyOGZl
MmUzNjlkMTQxZmVmYjI5ZTQ5MDFhYjg1MTVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHAKQEAgLTQ3LDYgKzQ3LDEwIEBACiAjaW5jbHVkZSAiTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VN
YWMuaCIKICNlbmRpZgogCisjaWYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlICJNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZUdTdHJlYW1lci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RhdGljIGlubGluZSBWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiBkZWZhdWx0RGV2aWNlcygp
CkBAIC0xNjAsNiArMTY0LDggQEAgcHVibGljOgogICAgICAgICBjYXNlIENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGU6OldpbmRvdzoKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgICAgICByZXR1
cm4gRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y3JlYXRlKFVuaXF1ZVJlZjxEaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcj4obWFrZVVuaXF1ZVJlZjxNb2NrRGlzcGxheUNhcHR1
cmVyPihkZXZpY2UpKSwgZGV2aWNlLCBjb25zdHJhaW50cyk7CisjZWxpZiBVU0UoR1NUUkVBTUVS
KQorICAgICAgICAgICAgcmV0dXJuIE1vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyOjpj
cmVhdGVNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2UoU3RyaW5nIHsgZGV2aWNlLnBlcnNpc3RlbnRJ
ZCgpIH0sIFN0cmluZyB7IGRldmljZS5sYWJlbCgpIH0sIFN0cmluZyB7IH0sIGNvbnN0cmFpbnRz
KTsKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNy
ZWF0ZShTdHJpbmcgeyBkZXZpY2UucGVyc2lzdGVudElkKCkgfSwgU3RyaW5nIHsgZGV2aWNlLmxh
YmVsKCkgfSwgU3RyaW5nIHsgfSwgY29uc3RyYWludHMpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3Bw
CmluZGV4IDU5NGVjMmIyNTg4MTQzZjY3Y2FkYjM2Zjk0NWY2MzI5N2Y0NDU3YzguLmVlMGNmZjY0
MDhjZjAxZGJmYzc2NzZjMTZmNGNjOGQxZmFkYWUyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC0x
MzEsNiArMTMxLDEwIEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjpjYXBhYmlsaXRpZXMoKQogICAgICAgICAgICAgY2FwYWJp
bGl0aWVzLnNldERldmljZUlkKGhhc2hlZElkKCkpOwogICAgICAgICAgICAgdXBkYXRlQ2FwYWJp
bGl0aWVzKGNhcGFiaWxpdGllcyk7CiAgICAgICAgICAgICBjYXBhYmlsaXRpZXMuc2V0RGV2aWNl
SWQoaGFzaGVkSWQoKSk7CisgICAgICAgIH0gZWxzZSBpZiAobW9ja0Rpc3BsYXkoKSkgeworICAg
ICAgICAgICAgY2FwYWJpbGl0aWVzLnNldFdpZHRoKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoNzIs
IFdURjo6Z2V0PE1vY2tEaXNwbGF5UHJvcGVydGllcz4obV9kZXZpY2UucHJvcGVydGllcykuZGVm
YXVsdFNpemUud2lkdGgoKSkpOworICAgICAgICAgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodChD
YXBhYmlsaXR5VmFsdWVPclJhbmdlKDQ1LCBXVEY6OmdldDxNb2NrRGlzcGxheVByb3BlcnRpZXM+
KG1fZGV2aWNlLnByb3BlcnRpZXMpLmRlZmF1bHRTaXplLmhlaWdodCgpKSk7CisgICAgICAgICAg
ICBjYXBhYmlsaXRpZXMuc2V0RnJhbWVSYXRlKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoLjAxLCA2
MC4wKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjYXBhYmlsaXRpZXMuc2V0V2lk
dGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSg3MiwgMjg4MCkpOwogICAgICAgICAgICAgY2FwYWJp
bGl0aWVzLnNldEhlaWdodChDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDQ1LCAxODAwKSk7CkBAIC00
MjgsNiArNDMyLDkgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Z2VuZXJhdGVGcmFt
ZSgpCiAgICAgICAgIG1fZGVsYXlVbnRpbCA9IE1vbm90b25pY1RpbWUoKTsKICAgICB9CiAKKyAg
ICBpZiAobW9ja0Rpc3BsYXkoKSAmJiAhbV9mcmFtZU51bWJlcikKKyAgICAgICAgZW5zdXJlSW50
cmluc2ljU2l6ZU1haW50YWluc0FzcGVjdFJhdGlvKCk7CisKICAgICBJbWFnZUJ1ZmZlciogYnVm
ZmVyID0gaW1hZ2VCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpA
QCAtNDM1LDcgKzQ0Miw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmdlbmVyYXRl
RnJhbWUoKQogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IGJ1ZmZlci0+Y29udGV4dCgp
OwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKIAot
ICAgIGF1dG8gc2l6ZSA9IGNhcHR1cmVTaXplKCk7CisgICAgYXV0byBzaXplID0gdGhpcy0+c2l6
ZSgpOwogICAgIEZsb2F0UmVjdCBmcmFtZVJlY3QoRmxvYXRQb2ludCgpLCBzaXplKTsKIAogICAg
IGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSksIG1fZmlsbENv
bG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuaAppbmRleCBmMDVlNWEzMjZlYzJkMzQwNWYyOWVlZmFhMGVhYjUyMWIx
YjU0NjIyLi45YjJjOTk5ZWUwYTRhOWMwY2E2MzM1MzI4MWU5MjU0NzdiN2U3NzJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZS5oCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFByb2R1Y2lu
Z0RhdGEoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7CiAgICAg
Ym9vbCBpc0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhOyB9CisgICAgQ2FwdHVyZURldmlj
ZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbW9ja0NhbWVy
YSgpID8gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhIDogQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZTo6U2NyZWVuOyB9CiAgICAgYm9vbCBzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUo
c3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOwogICAgIHZvaWQgc2V0U2l6ZUFuZEZyYW1lUmF0ZShz
dGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7CiAgICAgdm9pZCBzZXRGcmFtZVJhdGVXaXRoUHJlc2V0
KGRvdWJsZSwgUmVmUHRyPFZpZGVvUHJlc2V0PikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Y21ha2UvRmluZExJQlBPUlRBTC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9GaW5kTElCUE9SVEFMLmNt
YWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ1YTE2NWUyNmNhOTBjMDk0MGI4MTkyOTYyOGZlNzIyMGFjOGUwZTAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvY21ha2UvRmluZExJQlBPUlRBTC5jbWFrZQpAQCAt
MCwwICsxLDEwMSBAQAorIyAtIFRyeSB0byBmaW5kIGxpYnBvcnRhbAorIyBPbmNlIGRvbmUsIHRo
aXMgd2lsbCBkZWZpbmUKKyMKKyMgIExJQlBPUlRBTF9GT1VORCAtIHN5c3RlbSBoYXMgbGlicG9y
dGFsCisjICBMSUJQT1JUQUxfSU5DTFVERV9ESVJTIC0gdGhlIGxpYnBvcnRhbCBpbmNsdWRlIGRp
cmVjdG9yaWVzCisjICBMSUJQT1JUQUxfTElCUkFSSUVTIC0gbGluayB0aGVzZSB0byB1c2UgbGli
cG9ydGFsCisjCisjIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUworIyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIE9SIElUUworIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsKKyMgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksCisjIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SCisjIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYKKyMgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNb
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT1bLnJzdDoKK0ZpbmRMSUJQT1JUQUwKKy0tLS0tLS0tLS0tLS0KKworRmlu
ZCBsaWJwb3J0YWwgaGVhZGVycyBhbmQgbGlicmFyaWVzLgorCitJbXBvcnRlZCBUYXJnZXRzCite
Xl5eXl5eXl5eXl5eXl5eCisKK2BgTElCUE9SVEFMOjpMSUJQT1JUQUxgYAorICBUaGUgTElCUE9S
VEFMIGxpYnJhcnksIGlmIGZvdW5kLgorCitSZXN1bHQgVmFyaWFibGVzCiteXl5eXl5eXl5eXl5e
Xl5eCisKK1RoaXMgd2lsbCBkZWZpbmUgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgaW4geW91ciBw
cm9qZWN0OgorCitgYExJQlBPUlRBTF9GT1VORGBgCisgIHRydWUgaWYgKHRoZSByZXF1ZXN0ZWQg
dmVyc2lvbiBvZikgTElCUE9SVEFMIGlzIGF2YWlsYWJsZS4KK2BgTElCUE9SVEFMX1ZFUlNJT05g
YAorICB0aGUgdmVyc2lvbiBvZiBMSUJQT1JUQUwuCitgYExJQlBPUlRBTF9MSUJSQVJJRVNgYAor
ICB0aGUgbGlicmFyaWVzIHRvIGxpbmsgYWdhaW5zdCB0byB1c2UgTElCUE9SVEFMLgorYGBMSUJQ
T1JUQUxfSU5DTFVERV9ESVJTYGAKKyAgd2hlcmUgdG8gZmluZCB0aGUgTElCUE9SVEFMIGhlYWRl
cnMuCitgYExJQlBPUlRBTF9DT01QSUxFX09QVElPTlNgYAorICB0aGlzIHNob3VsZCBiZSBwYXNz
ZWQgdG8gdGFyZ2V0X2NvbXBpbGVfb3B0aW9ucygpLCBpZiB0aGUKKyAgdGFyZ2V0IGlzIG5vdCB1
c2VkIGZvciBsaW5raW5nCisKKyNdPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1dCisKK2ZpbmRfcGFja2FnZShQa2dD
b25maWcpCitwa2dfY2hlY2tfbW9kdWxlcyhQQ19MSUJQT1JUQUwgUVVJRVQgbGlicG9ydGFsKQor
c2V0KExJQlBPUlRBTF9DT01QSUxFX09QVElPTlMgJHtQQ19MSUJQT1JUQUxfQ0ZMQUdTX09USEVS
fSkKK3NldChMSUJQT1JUQUxfVkVSU0lPTiAke1BDX0xJQlBPUlRBTF9WRVJTSU9OfSkKKworZmlu
ZF9wYXRoKExJQlBPUlRBTF9JTkNMVURFX0RJUgorICAgIE5BTUVTIHBvcnRhbC5oCisgICAgSElO
VFMgJHtQQ19MSUJQT1JUQUxfSU5DTFVERURJUn0KKyAgICAgICAgICAke1BDX0xJQlBPUlRBTF9J
TkNMVURFX0RJUlN9CisgICAgUEFUSF9TVUZGSVhFUyBsaWJwb3J0YWwKKykKKworZmluZF9saWJy
YXJ5KExJQlBPUlRBTF9MSUJSQVJZCisgICAgTkFNRVMgJHtMSUJQT1JUQUxfTkFNRVN9IGxpYnBv
cnRhbAorICAgIEhJTlRTICR7UENfTElCUE9SVEFMX0xJQkRJUn0KKyAgICAgICAgICAke1BDX0xJ
QlBPUlRBTF9MSUJSQVJZX0RJUlN9CispCisKK2luY2x1ZGUoRmluZFBhY2thZ2VIYW5kbGVTdGFu
ZGFyZEFyZ3MpCitmaW5kX3BhY2thZ2VfaGFuZGxlX3N0YW5kYXJkX2FyZ3MoTElCUE9SVEFMCisg
ICAgRk9VTkRfVkFSIExJQlBPUlRBTF9GT1VORAorICAgIFJFUVVJUkVEX1ZBUlMgTElCUE9SVEFM
X0lOQ0xVREVfRElSIExJQlBPUlRBTF9MSUJSQVJZCisgICAgVkVSU0lPTl9WQVIgTElCUE9SVEFM
X1ZFUlNJT04KKykKKworaWYgKExJQlBPUlRBTF9MSUJSQVJZIEFORCBOT1QgVEFSR0VUIExJQlBP
UlRBTDo6TElCUE9SVEFMKQorICAgIGFkZF9saWJyYXJ5KExJQlBPUlRBTDo6TElCUE9SVEFMIFVO
S05PV04gSU1QT1JURUQgR0xPQkFMKQorICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhMSUJQT1JU
QUw6OkxJQlBPUlRBTCBQUk9QRVJUSUVTCisgICAgICAgIElNUE9SVEVEX0xPQ0FUSU9OICIke0xJ
QlBPUlRBTF9MSUJSQVJZfSIKKyAgICAgICAgSU5URVJGQUNFX0NPTVBJTEVfT1BUSU9OUyAiJHtM
SUJQT1JUQUxfQ09NUElMRV9PUFRJT05TfSIKKyAgICAgICAgSU5URVJGQUNFX0lOQ0xVREVfRElS
RUNUT1JJRVMgIiR7TElCUE9SVEFMX0lOQ0xVREVfRElSfSIKKyAgICApCitlbmRpZiAoKQorCitt
YXJrX2FzX2FkdmFuY2VkKExJQlBPUlRBTF9JTkNMVURFX0RJUiBMSUJQT1JUQUxfTElCUkFSWSkK
KworaWYgKExJQlBPUlRBTF9GT1VORCkKKyAgICBzZXQoTElCUE9SVEFMX0xJQlJBUklFUyAke0xJ
QlBPUlRBTF9MSUJSQVJZfSkKKyAgICBzZXQoTElCUE9SVEFMX0lOQ0xVREVfRElSUyAke0xJQlBP
UlRBTF9JTkNMVURFX0RJUn0pCitlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0dT
dHJlYW1lckNoZWNrcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21ha2UK
aW5kZXggNzdlOTU4NDVlOTkxM2E1OTc4ZGFkMTBjZmM0MzAwOTNiNDNjN2FhMy4uYWY5Njc0YjE0
MGJmY2MxNzdjZWExMGMyNmY3ODI5YWZmMzEwMDA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtl
L0dTdHJlYW1lckNoZWNrcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tz
LmNtYWtlCkBAIC01NywzICs1NywxMiBAQCBpZiAoRU5BQkxFX01FRElBX1NUUkVBTSBBTkQgRU5B
QkxFX1dFQl9SVEMpCiBlbHNlICgpCiAgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0xJ
QldFQlJUQyBGQUxTRSkKIGVuZGlmICgpCisKK2lmIChFTkFCTEVfTUVESUFfU1RSRUFNKQorICAg
IGZpbmRfcGFja2FnZShMSUJQT1JUQUwpCisgICAgaWYgKExJQlBPUlRBTF9GT1VORCkKKyAgICAg
ICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1BJUEVXSVJFIFRSVUUpCisgICAgZWxzZSAo
KQorICAgICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfUElQRVdJUkUgRkFMU0UpCisg
ICAgZW5kaWYgKCkKK2VuZGlmICgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwCmluZGV4IDRmMzdkYjczNGJiMGYx
ZTU5MjZjZGU0MjFjZmY1NGNiODI1YmQzYTMuLmUzYWU3YzIxZTZkZTA5MDJmNmM4NWZiZmQxNDdh
YWU2NDkxYjA5MDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwCkBAIC02MzUsNiArNjM1LDcgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYnNpdGVEYXRhRGV2aWNlSWRIYXNoU2FsdChXZWJzaXRlRGF0YVRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIKICAgICBXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHRlc3QtPm1fd2ViVmlldyk7CiAgICAgZ2Jvb2xlYW4gZW5h
YmxlZCA9IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncyk7
CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzLCBU
UlVFKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tb2NrX2NhcHR1cmVfZGV2aWNl
cyhzZXR0aW5ncywgVFJVRSk7CiAKICAgICB0ZXN0LT5jbGVhcihXRUJLSVRfV0VCU0lURV9EQVRB
X0RFVklDRV9JRF9IQVNIX1NBTFQsIDApOwogCkBAIC02ODEsNiArNjgyLDcgQEAgc3RhdGljIHZv
aWQgdGVzdFdlYnNpdGVEYXRhRGV2aWNlSWRIYXNoU2FsdChXZWJzaXRlRGF0YVRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIKICAgICBnX2Fzc2VydF9udWxsKGRhdGFMaXN0KTsKIAogICAgIHdlYmtp
dF9zZXR0aW5nc19zZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncywgZW5hYmxlZCk7Cisg
ICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbW9ja19jYXB0dXJlX2RldmljZXMoc2V0dGlu
Z3MsIGVuYWJsZWQpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFJVFAoV2Vic2l0
ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU0MjFlNTExOGFiMjg2Mzkw
Y2YyMGU5ZjhiZWMzYTU2YjdjYjhiNjIuLmE5OTc1MTA0ZjU3MGY3ODA2M2MxM2VhNzUxYmM3MTNm
N2QwZWJkNDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wNy0xMSAgUGhpbGlwcGUgTm9y
bWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl1bUGlwZXdp
cmVdIEltcGxlbWVudCBnZXREaXNwbGF5TWVkaWEoKSBiYWNrZW5kCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA5MjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVj
dGF0aW9uczogVW5za2lwIG5vdy1wYXNzaW5nIGdldERpc3BsYXlNZWRpYSB0ZXN0cy4KKwogMjAy
MS0wNy0xMyAgQXJjYWR5IEdvbGRtaW50cy1PcmxvdiAgPGFnb2xkbWludHNAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR0xJQl0gVXBkYXRlIGJhc2VsaW5lcyBhZnRlciByMjc5NjczCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggODUxZmEyM2QwODJhMzg1
MTk4ODFjYzA5OTkzMThiM2MxODcxNWUyNy4uNWJkOGYwYjI1OWRjODIwNDMyMzdjYWIzZjgxNjQx
YzA3YWI2YzU1OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMTUxOSwxNSArMTUxOSw2IEBAIGh0dHAvdGVzdHMvbWVkaWEvdHJhY2staW4tYmFuZC1o
bHMtbWV0YWRhdGEuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEwOTU3MCBtZWRpYS90cmFj
ay9yZWdpb25zLXdlYnZ0dCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEwOTU3MCBtZWRpYS90cmFj
ay93M2MgWyBTa2lwIF0KIAotIyBObyBzdXBwb3J0IGZvciBzY3JlZW4gY2FwdHVyZQotZmFzdC9t
ZWRpYXN0cmVhbS9zY3JlZW5jYXB0dXJlLXVzZXItZ2VzdHVyZS5odG1sIFsgU2tpcCBdCi13ZWJr
aXQub3JnL2IvMjEwOTI2IGZhc3QvbWVkaWFzdHJlYW0vZ2V0RGlzcGxheU1lZGlhLW1heC1jb25z
dHJhaW50czEuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIxMDkyNiBmYXN0L21lZGlhc3Ry
ZWFtL2dldERpc3BsYXlNZWRpYS1tYXgtY29uc3RyYWludHMyLmh0bWwgWyBTa2lwIF0KLXdlYmtp
dC5vcmcvYi8yMTA5MjYgZmFzdC9tZWRpYXN0cmVhbS9nZXREaXNwbGF5TWVkaWEtbWF4LWNvbnN0
cmFpbnRzMy5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMjEwOTI2IGZhc3QvbWVkaWFzdHJl
YW0vZ2V0LWRpc3BsYXktbWVkaWEtbXV0ZWQuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIx
MDkyNiBmYXN0L21lZGlhc3RyZWFtL2NvbnN0cmFpbnQtaW50cmluc2ljLXNpemUuaHRtbCBbIFNr
aXAgXQotd2Via2l0Lm9yZy9iLzE5MTAwNyBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXN0cmVhbS9n
ZXQtZGlzcGxheS1tZWRpYS1wcm9tcHQuaHRtbCBbIFNraXAgXQotCiAjIE1vZGVybi1tZWRpYS1j
b250cm9scyBzdXBwb3J0CiB3ZWJraXQub3JnL2IvMTgyNTAyIGh0dHAvdGVzdHMvbWVkaWEvbW9k
ZXJuLW1lZGlhLWNvbnRyb2xzIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTgyNTAyIG1lZGlhL21v
ZGVybi1tZWRpYS1jb250cm9scyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hh
bmdlTG9nCmluZGV4IDY5ZjNkODk4YmJmZTllZDkxODIzNmRlMDgwMTYyMTRhNTkxNWE3ZTYuLjgz
MWJkYzdlODYyNTYzMjRmMzcwYjljZWZlMTZlMzk2NDczYjI0YzYgMTAwNjQ0Ci0tLSBhL0NoYW5n
ZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wNy0xMSAgUGhpbGlw
cGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl1b
UGlwZXdpcmVdIEltcGxlbWVudCBnZXREaXNwbGF5TWVkaWEoKSBiYWNrZW5kCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA5MjYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9GaW5k
TElCUE9SVEFMLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvY21ha2UvR1N0cmVhbWVy
Q2hlY2tzLmNtYWtlOiBFbmFibGUgUGlwZXdpcmUgc3VwcG9ydCBpZiBsaWJwb3J0YWwgd2FzIGZv
dW5kLgorCiAyMDIxLTA2LTI0ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OKHIyMzY4NDYpOiBXUEUgc2hvdWxkbid0IGRlcGVuZCBvbiBP
cGVuR0wgRVMgMwo=
</data>
<flag name="review"
          id="455623"
          type_id="1"
          status="+"
          setter="calvaris"
    />
          </attachment>
      

    </bug>

</bugzilla>