<?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>68911</bug_id>
          
          <creation_ts>2011-09-27 10:13:16 -0700</creation_ts>
          <short_desc>Sync requestAnimationFrame callback to CVDisplayLink on Mac</short_desc>
          <delta_ts>2011-10-13 15:19:26 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Marrin">cmarrin</reporter>
          <assigned_to name="Chris Marrin">cmarrin</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>efidler</cc>
    
    <cc>jamesr</cc>
    
    <cc>levin+threading</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thakis</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>474029</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-09-27 10:13:16 -0700</bug_when>
    <thetext>Currently there is an implementation of requestAnimationFrame which uses a WebCore::Timer to fire its events. When it fires, it passes currentTime as the timestamp. This does not sync with display refresh and causes visual glitches. There should be a better timestamp which is based on the display refresh. We can also use this to determine the rate of firing of the Timer to avoid excessive calls to rAF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474037</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-09-27 10:20:03 -0700</bug_when>
    <thetext>This bug will cover the feature of providing a platform specific API for getting the timestamp based on the display refresh rate. I will do a platform specific implementation for WebKit 2 on Mac, and leave the rest as an exercise for the port author :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474055</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-09-27 10:35:03 -0700</bug_when>
    <thetext>My intention is to create a call, similar to scheduleAnimation() but which simply asks platform specific code for a time estimate of when the next frame will be visible. That can not only be used as the timestamp sent to rAF, but as the basis for when the next call to rAF is made. That should avoid any excessive calls to rAF. 

For Mac, I plan to look into adding a displayLink thread which will maintain a timestamp value tied to refresh. I didn&apos;t try using a displayLink at first because I initially thought I&apos;d use it to actually drive the firing of the callback, which would have been complicated and require a lot of communication between the threads. Just having the displayLink maintain a timestamp means I just need to provide thread safe access to that value. Hopefully that will keep overhead low but will achieve the synchronization goal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476447</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2011-09-30 17:34:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/10218848&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479621</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-10-06 16:47:07 -0700</bug_when>
    <thetext>After doing a lot of testing, I&apos;ve decided that using CVDisplayLink as a passive timestamp manager can never give the callback firing accuracy we desire. So I&apos;m repurposing this bug to just be for adding the CVDisplayLink sync work for mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480123</commentid>
    <comment_count>5</comment_count>
      <attachid>110172</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-10-07 10:46:20 -0700</bug_when>
    <thetext>Created attachment 110172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480133</commentid>
    <comment_count>6</comment_count>
      <attachid>110172</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-10-07 10:53:20 -0700</bug_when>
    <thetext>Comment on attachment 110172
Patch

Can more of this code be in WebCore so it can be shared between WebKit1 and WebKit2?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480151</commentid>
    <comment_count>7</comment_count>
      <attachid>110172</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-10-07 11:17:25 -0700</bug_when>
    <thetext>Comment on attachment 110172
Patch

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

Does this all work when subframe is calling rAF?

&gt; Source/WebKit/mac/WebView/WebView.mm:6109
&gt; +    WebView* webView = (WebView*) data;

The * goes on the right for Obj-C pointers. No space after the ). You should also use a C++-style cast.

&gt; Source/WebKit/mac/WebView/WebView.mm:6114
&gt; +        webView-&gt;_private-&gt;animationScheduleState = AnimationStateIdle;

Is there any danger that webView-&gt;_private may have gone away already?

&gt; Source/WebKit/mac/WebView/WebView.mm:6125
&gt; +    WebView* webView = (WebView*) data;

Ditto.

&gt; Source/WebKit/mac/WebView/WebView.mm:6128
&gt; +    double outputTimeSeconds = static_cast&lt;double&gt;(outputTime-&gt;videoTime) / static_cast&lt;double&gt;(outputTime-&gt;videoTimeScale);

Can you not just use the hostTime field for these?

&gt; Source/WebKit/mac/WebView/WebView.mm:6129
&gt; +    double webKitNow = currentTime();

Is this using the same timebase as the CVTimeStamp times?

&gt; Source/WebKit/mac/WebView/WebView.mm:6146
&gt; +        ASSERT(!error);

I think you should actually handle this error (e.g. return). There may be situations where it fails (e.g. a headless machine).

&gt; Source/WebKit/mac/WebView/WebView.mm:6152
&gt; +        error = CVDisplayLinkStart(_private-&gt;displayLink);
&gt; +        ASSERT(!error);

Ditto.

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:416
&gt; +    void changeScreen(CGDirectDisplayID);

I think this name is a bit too generic. Maybe windowScreenDidChange().

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:275
&gt; +    shutdownDisplayLink();

This feels like it might be too late. Can a WebPage be disconnected from the view but stay alive?

&gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:602
&gt; +    double nowSeconds = static_cast&lt;double&gt;(now-&gt;videoTime) / static_cast&lt;double&gt;(now-&gt;videoTimeScale);
&gt; +    double outputTimeSeconds = static_cast&lt;double&gt;(outputTime-&gt;videoTime) / static_cast&lt;double&gt;(outputTime-&gt;videoTimeScale);
&gt; +    double webKitNow = currentTime();

Same comments about time as above.

&gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:626
&gt; +    if (webPage-&gt;corePage()-&gt;mainFrame() &amp;&amp; webPage-&gt;corePage()-&gt;mainFrame()-&gt;view())
&gt; +        webPage-&gt;corePage()-&gt;mainFrame()-&gt;view()-&gt;serviceScriptedAnimations(convertSecondsToDOMTimeStamp(timestamp));

Stash webPage-&gt;corePage()-&gt;mainFrame() in a local var?

&gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:633
&gt; +        if (!m_displayID)
&gt; +            m_displayID = CGMainDisplayID();

Is the display ID always non-zero?

&gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:642
&gt; +        CVReturn error = CVDisplayLinkCreateWithCGDisplay(m_displayID, &amp;m_displayLink);
&gt; +        ASSERT(!error);
&gt; +    
&gt; +        error = CVDisplayLinkSetOutputCallback(m_displayLink, displayLinkCallback, this);
&gt; +        ASSERT(!error);
&gt; +    
&gt; +        error = CVDisplayLinkStart(m_displayLink);
&gt; +        ASSERT(!error);

I think you need to handle these errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480278</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-10-07 13:37:08 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 110172 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=110172&amp;action=review
&gt; 
&gt; Does this all work when subframe is calling rAF?

I&apos;m writing a test case for this

&gt; &gt; Source/WebKit/mac/WebView/WebView.mm:6114
&gt; &gt; +        webView-&gt;_private-&gt;animationScheduleState = AnimationStateIdle;
&gt; 
&gt; Is there any danger that webView-&gt;_private may have gone away already?

I&apos;ve added protectors on both WK and WK2

&gt; &gt; Source/WebKit/mac/WebView/WebView.mm:6128
&gt; &gt; +    double outputTimeSeconds = static_cast&lt;double&gt;(outputTime-&gt;videoTime) / static_cast&lt;double&gt;(outputTime-&gt;videoTimeScale);
&gt; 
&gt; Can you not just use the hostTime field for these?

hostTime is not a consistent value on all platforms, apparently. At any rate, it&apos;s not the same timebase as WebKit time

&gt; 
&gt; &gt; Source/WebKit/mac/WebView/WebView.mm:6129
&gt; &gt; +    double webKitNow = currentTime();
&gt; 
&gt; Is this using the same timebase as the CVTimeStamp times?

No. Those times are based on when the program started or something.

...
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:275
&gt; &gt; +    shutdownDisplayLink();
&gt; 
&gt; This feels like it might be too late. Can a WebPage be disconnected from the view but stay alive?

Maybe. But the CVDisplayLink can stay alive as long as the WebPage lives. The only downside might be some overhead of constantly firing the displayLink. But the displayLink just checks the flag and then returns if there&apos;s no work. So I don&apos;t think the overhead matters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482816</commentid>
    <comment_count>9</comment_count>
      <attachid>110761</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-10-12 15:54:38 -0700</bug_when>
    <thetext>Created attachment 110761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482818</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-10-12 15:57:09 -0700</bug_when>
    <thetext>Latest patch takes a different approach, on recommendation from Adam and Simon. It moves the CVDisplayLink down into WebCore. This not only avoids duplicate code, but also allows fallback to the timer based rAF if the CVDisplayLink can&apos;t be initialized. This happens if you&apos;re on a headless system.

I also now manage the displayLinks with a singleton manager and maintain only one displayLink for each display to avoid many threads when there are many different Windows using rAF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482833</commentid>
    <comment_count>11</comment_count>
      <attachid>110765</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-10-12 16:13:06 -0700</bug_when>
    <thetext>Created attachment 110765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482891</commentid>
    <comment_count>12</comment_count>
      <attachid>110765</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-12 17:27:21 -0700</bug_when>
    <thetext>Comment on attachment 110765
Patch

Attachment 110765 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10046081</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482910</commentid>
    <comment_count>13</comment_count>
      <attachid>110782</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-10-12 17:51:42 -0700</bug_when>
    <thetext>Created attachment 110782
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482923</commentid>
    <comment_count>14</comment_count>
      <attachid>110782</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-10-12 18:25:45 -0700</bug_when>
    <thetext>Comment on attachment 110782
Patch

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

This is pretty close; just some nits to tidy up.

&gt; Source/WebCore/dom/Document.cpp:5129
&gt;          m_scriptedAnimationController = ScriptedAnimationController::create(this);
&gt; +        m_scriptedAnimationController-&gt;windowScreenDidChange(page()-&gt;displayID());

I think it would be better to pass in the displayID to the ScriptedAnimationController ctor.

&gt; Source/WebCore/dom/ScriptedAnimationController.cpp:156
&gt; +#if PLATFORM(MAC)
&gt; +    DisplayRefreshMonitorManager::sharedManager()-&gt;windowScreenDidChange(displayID, this);
&gt; +#else

Shame to have Mac #ifdefs in this file. Maybe define USE_DISPLAY_MONITOR somewhere?

&gt; Source/WebCore/dom/ScriptedAnimationController.cpp:166
&gt; +        m_useTimer = !DisplayRefreshMonitorManager::sharedManager()-&gt;scheduleAnimation(this);

This is a little hard to grok. Maybe 
if (DisplayRefreshMonitorManager::sharedManager()-&gt;scheduleAnimation(this))
  return;
 
m_useTimer = true
...

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:78
&gt; +    for (size_t i = 0; i &lt; monitor-&gt;m_clients.size(); ++i)
&gt; +        monitor-&gt;m_clients[i]-&gt;fireDisplayRefreshIfNeeded(timestamp);

Can fireDisplayRefreshIfNeeded modify the m_clients array?

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:84
&gt; +    static DisplayRefreshMonitorManager* staticManager = new DisplayRefreshMonitorManager;
&gt; +    return staticManager;

DEFINE_STATIC_LOCAL perhaps, and return a reference?

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:87
&gt; +size_t DisplayRefreshMonitorManager::findMonitor(PlatformDisplayID displayID) const

Why not just
DisplayRefreshMonitor* monitorForDisplay(PlatformDisplayID)
?

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:101
&gt; +    size_t i = findMonitor(client-&gt;m_displayID);

I&apos;d use monitorIndex or index, reserving i for use in loops.

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:106
&gt; +        monitor = new DisplayRefreshMonitor(client-&gt;m_displayID);
&gt; +        m_monitors.append(monitor);

m_monitors could contain OwnPtrs to avoid manual new/delete.

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:123
&gt; +    size_t i = findMonitor(client-&gt;m_displayID);
&gt; +    if (i == notFound)
&gt; +        return;
&gt; +    
&gt; +    DisplayRefreshMonitor* monitor = m_monitors[i];
&gt; +    if (monitor-&gt;removeClient(client)) {

You&apos;ve done two array walks here; should be able to do it in one.

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:140
&gt; +    client-&gt;scheduleAnimation();
&gt; +    return m_monitors[i]-&gt;scheduleAnimation();

Maybe too many scheduleAnimation() methods which don&apos;t really all mean the same thing. Reading the code, I&apos;m not sure why there are two calls here.

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:150
&gt; +    client-&gt;m_displayID = displayID;
&gt; +    client-&gt;m_displayIDIsSet = true; 

Have a setDisplayID method?

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.h:60
&gt; +    bool m_scheduled;
&gt; +    PlatformDisplayID m_displayID;
&gt; +    bool m_displayIDIsSet;

Put the bools next to eachother to optimize packing.

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.h:118
&gt; +    bool scheduleAnimation(DisplayRefreshMonitorClient*);

Should say what the return value means.

&gt; Source/WebKit/mac/WebView/WebView.mm:3296
&gt; +    _private-&gt;page-&gt;windowScreenDidChange((PlatformDisplayID)[[[[[self window] screen] deviceDescription] objectForKey:@&quot;NSScreenNumber&quot;] intValue]);

Might want to do some null checking on private and private-&gt;page.

&gt; Source/WebKit/mac/WebView/WebView.mm:3324
&gt; +    [self _windowDidChangeScreen:notification];

You shouldn&apos;t send an unrelated notification to the _windowDidChangeScreen method.

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:1886
&gt; +    [self _windowDidChangeScreen:notification];

Ditto.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1167
&gt; +    // FIXME: IPC has trouble sending params it doesn&apos;t understand, so cast into a common type
&gt; +    process()-&gt;send(Messages::WebPage::WindowScreenDidChange(displayID), m_pageID);

It&apos;s unclear what is actionable about this FIXME. Does it not work here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483261</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-10-13 10:08:00 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 110782 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=110782&amp;action=review
&gt; 
&gt; This is pretty close; just some nits to tidy up.
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:5129
&gt; &gt;          m_scriptedAnimationController = ScriptedAnimationController::create(this);
&gt; &gt; +        m_scriptedAnimationController-&gt;windowScreenDidChange(page()-&gt;displayID());
&gt; 
&gt; I think it would be better to pass in the displayID to the ScriptedAnimationController ctor.

done

&gt; 
&gt; &gt; Source/WebCore/dom/ScriptedAnimationController.cpp:156
&gt; &gt; +#if PLATFORM(MAC)
&gt; &gt; +    DisplayRefreshMonitorManager::sharedManager()-&gt;windowScreenDidChange(displayID, this);
&gt; &gt; +#else
&gt; 
&gt; Shame to have Mac #ifdefs in this file. Maybe define USE_DISPLAY_MONITOR somewhere?

I added WTF_USE_REQUEST_ANIMATION_FRAME_DISPLAYMONITOR to Platform.h

&gt; 
&gt; &gt; Source/WebCore/dom/ScriptedAnimationController.cpp:166
&gt; &gt; +        m_useTimer = !DisplayRefreshMonitorManager::sharedManager()-&gt;scheduleAnimation(this);
&gt; 
&gt; This is a little hard to grok. Maybe 
&gt; if (DisplayRefreshMonitorManager::sharedManager()-&gt;scheduleAnimation(this))
&gt;   return;
&gt; 
&gt; m_useTimer = true
&gt; …


done

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:78
&gt; &gt; +    for (size_t i = 0; i &lt; monitor-&gt;m_clients.size(); ++i)
&gt; &gt; +        monitor-&gt;m_clients[i]-&gt;fireDisplayRefreshIfNeeded(timestamp);
&gt; 
&gt; Can fireDisplayRefreshIfNeeded modify the m_clients array?

The only way to modify it is to call windowScreenDidChange(). That only gets called when the ScriptedAnimationController is created or when an event comes in to change it. Both of those are synchronous, so I don&apos;t think they can happen in the callback.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:84
&gt; &gt; +    static DisplayRefreshMonitorManager* staticManager = new DisplayRefreshMonitorManager;
&gt; &gt; +    return staticManager;
&gt; 
&gt; DEFINE_STATIC_LOCAL perhaps, and return a reference?

done

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:87
&gt; &gt; +size_t DisplayRefreshMonitorManager::findMonitor(PlatformDisplayID displayID) const
&gt; 
&gt; Why not just
&gt; DisplayRefreshMonitor* monitorForDisplay(PlatformDisplayID)
&gt; ?

In the case of removing a monitor, I need its index to pass to Vector::remove()

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:101
&gt; &gt; +    size_t i = findMonitor(client-&gt;m_displayID);
&gt; 
&gt; I&apos;d use monitorIndex or index, reserving i for use in loops.

done

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:106
&gt; &gt; +        monitor = new DisplayRefreshMonitor(client-&gt;m_displayID);
&gt; &gt; +        m_monitors.append(monitor);
&gt; 
&gt; m_monitors could contain OwnPtrs to avoid manual new/delete.

Well, it would only get rid of the delete, which is in only one place. I started doing this, and the transfer of ownership upon creation feels trickier and more fragile than just doing a manual delete in this case. So I don&apos;t think it would help make the code more clear or more safe.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:123
&gt; &gt; +    size_t i = findMonitor(client-&gt;m_displayID);
&gt; &gt; +    if (i == notFound)
&gt; &gt; +        return;
&gt; &gt; +    
&gt; &gt; +    DisplayRefreshMonitor* monitor = m_monitors[i];
&gt; &gt; +    if (monitor-&gt;removeClient(client)) {
&gt; 
&gt; You&apos;ve done two array walks here; should be able to do it in one.

Hmmm, where am I doing that? findMonitor() walks the m_monitors array and removeClient() walks the m_clients array. Those are two different arrays. How can I eliminate one? Or are you seeing something else?

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:140
&gt; &gt; +    client-&gt;scheduleAnimation();
&gt; &gt; +    return m_monitors[i]-&gt;scheduleAnimation();
&gt; 
&gt; Maybe too many scheduleAnimation() methods which don&apos;t really all mean the same thing. Reading the code, I&apos;m not sure why there are two calls here.

Fixed

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:150
&gt; &gt; +    client-&gt;m_displayID = displayID;
&gt; &gt; +    client-&gt;m_displayIDIsSet = true; 
&gt; 
&gt; Have a setDisplayID method?

done

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.h:60
&gt; &gt; +    bool m_scheduled;
&gt; &gt; +    PlatformDisplayID m_displayID;
&gt; &gt; +    bool m_displayIDIsSet;
&gt; 
&gt; Put the bools next to eachother to optimize packing.

done

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.h:118
&gt; &gt; +    bool scheduleAnimation(DisplayRefreshMonitorClient*);
&gt; 
&gt; Should say what the return value means.

done

&gt; 
&gt; &gt; Source/WebKit/mac/WebView/WebView.mm:3296
&gt; &gt; +    _private-&gt;page-&gt;windowScreenDidChange((PlatformDisplayID)[[[[[self window] screen] deviceDescription] objectForKey:@&quot;NSScreenNumber&quot;] intValue]);
&gt; 
&gt; Might want to do some null checking on private and private-&gt;page.

done

&gt; 
&gt; &gt; Source/WebKit/mac/WebView/WebView.mm:3324
&gt; &gt; +    [self _windowDidChangeScreen:notification];
&gt; 

done

&gt; You shouldn&apos;t send an unrelated notification to the _windowDidChangeScreen method.

I&apos;ve split this out into a doWindowDidChangeScreen, which both notifications call

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:1886
&gt; &gt; +    [self _windowDidChangeScreen:notification];
&gt; 
&gt; Ditto.

ditto

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1167
&gt; &gt; +    // FIXME: IPC has trouble sending params it doesn&apos;t understand, so cast into a common type
&gt; &gt; +    process()-&gt;send(Messages::WebPage::WindowScreenDidChange(displayID), m_pageID);
&gt; 
&gt; It&apos;s unclear what is actionable about this FIXME. Does it not work here?

Sorry, that was cruft

Another patch on the way</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483277</commentid>
    <comment_count>16</comment_count>
      <attachid>110870</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-10-13 10:23:26 -0700</bug_when>
    <thetext>Created attachment 110870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483339</commentid>
    <comment_count>17</comment_count>
      <attachid>110870</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-10-13 11:32:55 -0700</bug_when>
    <thetext>Comment on attachment 110870
Patch

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

&gt; Source/WebCore/dom/ScriptedAnimationController.h:91
&gt; +    void displayRefreshFired(double timestamp) { serviceScriptedAnimations(convertSecondsToDOMTimeStamp(timestamp)); }

Declare as virtual to make it more obvious that it&apos;s implementing the client interface.

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:121
&gt; +    size_t i = findMonitor(client-&gt;m_displayID);
&gt; +    if (i == notFound)
&gt; +        return;
&gt; +    

i -&gt; index</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483528</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-10-13 14:58:28 -0700</bug_when>
    <thetext>Committed r97405: &lt;http://trac.webkit.org/changeset/97405&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483551</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-13 15:19:26 -0700</bug_when>
    <thetext>This patch appears to have broken Leopard build:
http://build.webkit.org/builders/Leopard%20Intel%20Debug%20%28Build%29/builds/40587/steps/compile-webkit/logs/stdio</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110172</attachid>
            <date>2011-10-07 10:46:20 -0700</date>
            <delta_ts>2011-10-12 15:54:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68911-20111007104619.patch</filename>
            <type>text/plain</type>
            <size>25797</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY3NDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRm
OTEzOTY1MzgxYzk1NWVkZmY5NjcyMWRhYzA2ZmY5MjA4M2UxYjEuLjE5NDlkYWYzYjMzZDE4NTE4
MmIxY2RhZTJmNzUwNTUxMzIzNDM2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDExLTEwLTA3ICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNvbT4K
KworICAgICAgICBTeW5jIHJlcXVlc3RBbmltYXRpb25GcmFtZSBjYWxsYmFjayB0byBDVkRpc3Bs
YXlMaW5rIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Njg5MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUdXJuIG9mZiBSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9USU1FUiBmb3IgTWFjCisKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMS0xMC0wNSAgU2hlcmlmZiBCb3QgIDx3ZWJr
aXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjk2NzMzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9y
bS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGE5ODYxZjZm
MjE1ZTUwMTJmYjI4MjBkODVlZTVmZmFjNmYwNzI2OWYuLjM2NmJiY2JlODUwYmE2OTRlNjhmZmZi
MWU0YzNkOTU4OGQzM2FmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKQEAg
LTEwOTksNyArMTA5OSw3IEBACiAjZGVmaW5lIFdURl9VU0VfQVZGT1VOREFUSU9OIDEKICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IChQTEFURk9STShXSU4p
ICYmICFPUyhXSU5DRSkgJiYgIVBMQVRGT1JNKFdJTl9DQUlSTykpCisjaWYgUExBVEZPUk0oR1RL
KSB8fCAoUExBVEZPUk0oV0lOKSAmJiAhT1MoV0lOQ0UpICYmICFQTEFURk9STShXSU5fQ0FJUk8p
KQogI2RlZmluZSBXVEZfVVNFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSIDEKICNkZWZp
bmUgV1RGX1VTRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9USU1FUiAxCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCA5ZDY0MWM2N2I2OWE2Njk1MTI1ZDQ5MmQ1YjZjYWNkOGU5ZGExNGFlLi4y
MGRiODNiNjkyMjRjM2UwOGUwYzhlMTNhNGI4N2VkYjIxODgzZWUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMTAtMDcgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBw
bGUuY29tPgorCisgICAgICAgIFN5bmMgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNhbGxiYWNrIHRv
IENWRGlzcGxheUxpbmsgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02ODkxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCBDVkRpc3BsYXlMaW5rIHdoaWNoIGNoZWNrcyB0byBzZWUg
aWYgYW55IHNjaGVkdWxlQW5pbWF0aW9uIHJlcXVlc3RzCisgICAgICAgIGhhdmUgY29tZSBpbi4g
SWYgc28sIHJlbWVtYmVyIHRoZSB0aW1lc3RhbXAgYW5kIGRvIGEgY2FsbE9uTWFpblRocmVhZCB0
byBmaXJlCisgICAgICAgIHRoZSBjYWxsYmFja3MuIEFsc28gYWRkZWQgbG9naWMgdG8gY2hhbmdl
IHVwZGF0ZSB0aGUgc2NyZWVuIGZvciB0aGUgZGlzcGxheQorICAgICAgICBsaW5rIHdoZW4gaXQg
Y2hhbmdlcyB0byBzdGF5IGluIHN5bmMgd2l0aCB0aGUgc2NyZWVuIHRoZSBwYWdlIGlzIGN1cnJl
bnRseSBvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdl
YkNocm9tZUNsaWVudDo6c2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
SFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9yZW1vdmVXaW5kb3dPYnNlcnZl
cnNdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgYWRkV2luZG93T2JzZXJ2ZXJzXSk6CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IHdpbmRvd0RpZENoYW5nZVNjcmVlbjpdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2Nsb3NlXSk6CisgICAgICAg
ICgtW1dlYlZpZXcgX3NodXRkb3duRGlzcGxheUxpbmtdKToKKyAgICAgICAgKHJlZnJlc2hEaXNw
bGF5T25NYWluVGhyZWFkKToKKyAgICAgICAgKGRpc3BsYXlMaW5rQ2FsbGJhY2spOgorICAgICAg
ICAoLVtXZWJWaWV3IF9zY2hlZHVsZUFuaW1hdGlvbl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9z
Y3JlZW5EaWRDaGFuZ2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoKKwogMjAxMS0xMC0wNCAgS2VudCBUYW11
cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW50cm9kdWNlIGZlYXR1cmUgZmxh
Z3MgZm9yIGluY29tcGxldGUgaW5wdXQgdHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZmU2ZmFmYWI5NTBkYmMxODhh
NDUzOTllNjFkNzg2YWY5ZDZhYzBmNi4uMzA1MWRmNDhmNGFjZWI5ZmI4MzcxMDRmZDEwMWUzZjM4
Mjk1YjM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKQEAgLTEyNiw2ICsxMjYsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSBPVkVSUklERTsK
IAorI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJiYgUExBVEZPUk0oTUFDKQor
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpOworI2VuZGlmCisKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjdXN0b21IaWdobGlnaHRSZWN0KFdlYkNvcmU6Ok5vZGUq
LCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBsaW5lUmVjdCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q3VzdG9tSGlnaGxp
Z2h0KFdlYkNvcmU6Ok5vZGUqLCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgdHlwZSwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBib3hSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGxp
bmVSZWN0LCBib29sIGJlaGluZFRleHQsIGJvb2wgZW50aXJlTGluZSkgT1ZFUlJJREU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5t
bQppbmRleCBhNzczMDc3ZThlN2NhZTJjMmI2MGIyZWM5ZGU2YTliMjE0NzZjMzIxLi5mMTgwZWFh
YmNiOGIxODI3MDVkZGU3YjQ2YWEyM2MyMTE0ZTQ5OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC05MTksNiArOTE5
LDE1IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5j
KCkKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICYmIFBM
QVRGT1JNKE1BQykKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzY2hlZHVsZUFuaW1hdGlvbigpCit7
CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIFttX3dlYlZpZXcgX3NjaGVk
dWxlQW5pbWF0aW9uXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworfQorI2VuZGlm
CisKICNpZiBFTkFCTEUoVklERU8pCiAKIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzdXBwb3J0c0Z1
bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQppbmRleCAwOTBmMDAwYWI2YTcyZDM3MTZiMjNlY2RmMTg0MTc2OGI5
ZmVhN2Y2Li41ZTFjZmZkOTdkM2E1NGEwMjRjZDM1NTA4ODU5YWRjOThmNWRhZjEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTkzNiw2ICs5MzYsMTAgQEAg
LSAodm9pZClfcmVtb3ZlV2luZG93T2JzZXJ2ZXJzCiAgICAgW25vdGlmaWNhdGlvbkNlbnRlciBy
ZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6V0tXaW5kb3dXaWxsT3JkZXJPZmZTY3JlZW5Ob3RpZmlj
YXRpb24oKSBvYmplY3Q6d2luZG93XTsKICAgICBbbm90aWZpY2F0aW9uQ2VudGVyIHJlbW92ZU9i
c2VydmVyOnNlbGYgbmFtZTpOU1dpbmRvd1dpbGxDbG9zZU5vdGlmaWNhdGlvbiBvYmplY3Q6d2lu
ZG93XTsKICAgICAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisgICAgW25v
dGlmaWNhdGlvbkNlbnRlciByZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6TlNXaW5kb3dEaWRDaGFu
Z2VTY3JlZW5Ob3RpZmljYXRpb24gb2JqZWN0OndpbmRvd107CisjZW5kaWYKKwogICAgIF9wcml2
YXRlLT5vYnNlcnZpbmdXaW5kb3dOb3RpZmljYXRpb25zID0gZmFsc2U7CiB9CiAKQEAgLTI4NjQs
NiArMjg2OCwxMCBAQCAtICh2b2lkKWFkZFdpbmRvd09ic2VydmVycwogICAgIFtub3RpZmljYXRp
b25DZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Iod2luZG93V2lsbE9y
ZGVyT25TY3JlZW46KSBuYW1lOldLV2luZG93V2lsbE9yZGVyT25TY3JlZW5Ob3RpZmljYXRpb24o
KSBvYmplY3Q6d2luZG93XTsKICAgICBbbm90aWZpY2F0aW9uQ2VudGVyIGFkZE9ic2VydmVyOnNl
bGYgc2VsZWN0b3I6QHNlbGVjdG9yKHdpbmRvd1dpbGxPcmRlck9mZlNjcmVlbjopIG5hbWU6V0tX
aW5kb3dXaWxsT3JkZXJPZmZTY3JlZW5Ob3RpZmljYXRpb24oKSBvYmplY3Q6d2luZG93XTsKICAg
ICBbbm90aWZpY2F0aW9uQ2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9y
KHdpbmRvd1dpbGxDbG9zZTopIG5hbWU6TlNXaW5kb3dXaWxsQ2xvc2VOb3RpZmljYXRpb24gb2Jq
ZWN0OndpbmRvd107CisKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisgICAg
W25vdGlmaWNhdGlvbkNlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih3
aW5kb3dEaWRDaGFuZ2VTY3JlZW46KSBuYW1lOk5TV2luZG93RGlkQ2hhbmdlU2NyZWVuTm90aWZp
Y2F0aW9uIG9iamVjdDp3aW5kb3ddOworI2VuZGlmCiAgICAgCiAgICAgX3ByaXZhdGUtPm9ic2Vy
dmluZ1dpbmRvd05vdGlmaWNhdGlvbnMgPSB0cnVlOwogfQpAQCAtMzQxNyw2ICszNDI1LDE4IEBA
IC0gKHZvaWQpd2luZG93V2lsbENsb3NlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgog
ICAgIFtbc2VsZiBfcGx1Z2luQ29udHJvbGxlcl0gZGVzdHJveUFsbFBsdWdpbnNdOwogfQogCisj
aWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQorLSAodm9pZCl3aW5kb3dEaWRDaGFu
Z2VTY3JlZW46KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7CisgICAgaWYgKCFwdGhy
ZWFkX21haW5fbnAoKSkgeworICAgICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3JPbk1haW5UaHJl
YWQ6X2NtZCB3aXRoT2JqZWN0Om5vdGlmaWNhdGlvbiB3YWl0VW50aWxEb25lOk5PXTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFtbc2VsZiBfd2ViVmlld10gX3NjcmVlbkRpZENoYW5n
ZV07Cit9CisjZW5kaWYKKwogLSAodm9pZClzY3JvbGxXaGVlbDooTlNFdmVudCAqKWV2ZW50CiB7
CiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHJlc3BvbmRpbmcgdG8gdGhpcyBldmVudCB3
aWxsIHJ1biBhIG5lc3RlZCBldmVudCBsb29wLCBhbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQppbmRleCAzZWZkYjg4Mzk3NTI5M2NjZmIwN2QwMWRhYzFlMzAzNTlkZjMwN2Q2Li42
NGM5OTc3YWFjZmIzNGNmNTRmNWJmNDQ0Nzc1MWYwNzQzODNhODU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0zOTUsNiArMzk1LDkgQEAgLSAoTlNSZXNwb25kZXIgKilf
cmVzcG9uZGVyRm9yUmVzcG9uZGVyT3BlcmF0aW9uczsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiAtICh2b2lkKV9jbGVhckxheWVyU3luY0xvb3BPYnNlcnZlcjsKICNlbmRpZgor
I2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKy0gKHZvaWQpX3NodXRkb3duRGlz
cGxheUxpbms7CisjZW5kaWYKICNpZiBFTkFCTEUoR0xJQl9TVVBQT1JUKQogLSAodm9pZClfY2xl
YXJHbGliTG9vcE9ic2VydmVyOwogI2VuZGlmCkBAIC0xMDk5LDYgKzExMDIsMTAgQEAgLSAodm9p
ZClfY2xvc2UKICAgICBbc2VsZiBfY2xlYXJMYXllclN5bmNMb29wT2JzZXJ2ZXJdOwogI2VuZGlm
CiAgICAgCisjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQorICAgIFtzZWxmIF9z
aHV0ZG93bkRpc3BsYXlMaW5rXTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEdMSUJfU1VQUE9SVCkK
ICAgICBbc2VsZiBfY2xlYXJHbGliTG9vcE9ic2VydmVyXTsKICNlbmRpZgpAQCAtNTgxOCw2ICs1
ODI1LDE3IEBAIC0gKHZvaWQpX2NsZWFyTGF5ZXJTeW5jTG9vcE9ic2VydmVyCiB9CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKy0gKHZvaWQpX3NodXRkb3du
RGlzcGxheUxpbmsKK3sKKyAgICBpZiAoX3ByaXZhdGUtPmRpc3BsYXlMaW5rKSB7CisgICAgICAg
IENWRGlzcGxheUxpbmtTdG9wKF9wcml2YXRlLT5kaXNwbGF5TGluayk7CisgICAgICAgIENWRGlz
cGxheUxpbmtSZWxlYXNlKF9wcml2YXRlLT5kaXNwbGF5TGluayk7CisgICAgICAgIF9wcml2YXRl
LT5kaXNwbGF5TGluayA9IDA7CisgICAgfQorfQorI2VuZGlmCisKICNpZiBFTkFCTEUoR0xJQl9T
VVBQT1JUKQogLSAodm9pZClfY2xlYXJHbGliTG9vcE9ic2VydmVyCiB7CkBAIC02MDg1LDYgKzYx
MDMsNzMgQEAgLSAodm9pZClfc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYwogCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKK3N0YXRpYyB2b2lkIHJlZnJl
c2hEaXNwbGF5T25NYWluVGhyZWFkKHZvaWQqIGRhdGEpCit7CisgICAgV2ViVmlldyogd2ViVmll
dyA9IChXZWJWaWV3KikgZGF0YTsKKworICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgeworICAg
ICAgICBNdXRleExvY2tlciBsb2NrKHdlYlZpZXctPl9wcml2YXRlLT5kaXNwbGF5UmVmcmVzaE11
dGV4KTsKKyAgICAgICAgd2ViVmlldy0+X3ByaXZhdGUtPmFuaW1hdGlvblNjaGVkdWxlU3RhdGUg
PSBBbmltYXRpb25TdGF0ZUlkbGU7CisgICAgICAgIHRpbWVzdGFtcCA9IHdlYlZpZXctPl9wcml2
YXRlLT50aW1lc3RhbXA7CisgICAgfQorCisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IFt3ZWJWaWV3
IF9tYWluQ29yZUZyYW1lXSkKKyAgICAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJh
bWUtPnZpZXcoKSkKKyAgICAgICAgICAgIGZyYW1lVmlldy0+c2VydmljZVNjcmlwdGVkQW5pbWF0
aW9ucyhjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKHRpbWVzdGFtcCkpOworfQorCitzdGF0
aWMgQ1ZSZXR1cm4gZGlzcGxheUxpbmtDYWxsYmFjayhDVkRpc3BsYXlMaW5rUmVmLCBjb25zdCBD
VlRpbWVTdGFtcCogbm93LCBjb25zdCBDVlRpbWVTdGFtcCogb3V0cHV0VGltZSwgQ1ZPcHRpb25G
bGFncywgQ1ZPcHRpb25GbGFncyosIHZvaWQqIGRhdGEpCit7CisgICAgV2ViVmlldyogd2ViVmll
dyA9IChXZWJWaWV3KikgZGF0YTsKKyAgICAKKyAgICBkb3VibGUgbm93U2Vjb25kcyA9IHN0YXRp
Y19jYXN0PGRvdWJsZT4obm93LT52aWRlb1RpbWUpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihub3ct
PnZpZGVvVGltZVNjYWxlKTsKKyAgICBkb3VibGUgb3V0cHV0VGltZVNlY29uZHMgPSBzdGF0aWNf
Y2FzdDxkb3VibGU+KG91dHB1dFRpbWUtPnZpZGVvVGltZSkgLyBzdGF0aWNfY2FzdDxkb3VibGU+
KG91dHB1dFRpbWUtPnZpZGVvVGltZVNjYWxlKTsKKyAgICBkb3VibGUgd2ViS2l0Tm93ID0gY3Vy
cmVudFRpbWUoKTsKKyAgICAKKyAgICBNdXRleExvY2tlciBsb2NrKHdlYlZpZXctPl9wcml2YXRl
LT5kaXNwbGF5UmVmcmVzaE11dGV4KTsKKyAgICBpZiAod2ViVmlldy0+X3ByaXZhdGUtPmFuaW1h
dGlvblNjaGVkdWxlU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGVTY2hlZHVsaW5nTmVlZGVkKSB7Cisg
ICAgICAgIHdlYlZpZXctPl9wcml2YXRlLT5hbmltYXRpb25TY2hlZHVsZVN0YXRlID0gQW5pbWF0
aW9uU3RhdGVBbmltYXRpb25QZW5kaW5nOworICAgICAgICB3ZWJWaWV3LT5fcHJpdmF0ZS0+dGlt
ZXN0YW1wID0gd2ViS2l0Tm93IC0gbm93U2Vjb25kcyArIG91dHB1dFRpbWVTZWNvbmRzOworICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKHJlZnJlc2hEaXNwbGF5T25NYWluVGhyZWFkLCB3ZWJWaWV3
KTsKKyAgICB9CisKKyAgICByZXR1cm4ga0NWUmV0dXJuU3VjY2VzczsKK30KKworLSAodm9pZClf
c2NoZWR1bGVBbmltYXRpb24KK3sKKyAgICBpZiAoIV9wcml2YXRlLT5kaXNwbGF5TGluaykgewor
ICAgICAgICBfcHJpdmF0ZS0+ZGlzcGxheUlEID0gKENHRGlyZWN0RGlzcGxheUlEKVtbW1tbc2Vs
ZiBob3N0V2luZG93XSBzY3JlZW5dIGRldmljZURlc2NyaXB0aW9uXSBvYmplY3RGb3JLZXk6QCJO
U1NjcmVlbk51bWJlciJdIGludFZhbHVlXTsKKyAgICAgICAgQ1ZSZXR1cm4gZXJyb3IgPSBDVkRp
c3BsYXlMaW5rQ3JlYXRlV2l0aENHRGlzcGxheShfcHJpdmF0ZS0+ZGlzcGxheUlELCAmX3ByaXZh
dGUtPmRpc3BsYXlMaW5rKTsKKyAgICAgICAgQVNTRVJUKCFlcnJvcik7CisgICAgCisgICAgICAg
IGVycm9yID0gQ1ZEaXNwbGF5TGlua1NldE91dHB1dENhbGxiYWNrKF9wcml2YXRlLT5kaXNwbGF5
TGluaywgZGlzcGxheUxpbmtDYWxsYmFjaywgc2VsZik7CisgICAgICAgIEFTU0VSVCghZXJyb3Ip
OworICAgIAorICAgICAgICBlcnJvciA9IENWRGlzcGxheUxpbmtTdGFydChfcHJpdmF0ZS0+ZGlz
cGxheUxpbmspOworICAgICAgICBBU1NFUlQoIWVycm9yKTsKKyAgICB9CisKKyAgICBNdXRleExv
Y2tlciBsb2NrKF9wcml2YXRlLT5kaXNwbGF5UmVmcmVzaE11dGV4KTsKKyAgICBpZiAoX3ByaXZh
dGUtPmFuaW1hdGlvblNjaGVkdWxlU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGVJZGxlKQorICAgICAg
ICBfcHJpdmF0ZS0+YW5pbWF0aW9uU2NoZWR1bGVTdGF0ZSA9IEFuaW1hdGlvblN0YXRlU2NoZWR1
bGluZ05lZWRlZDsgICAgCit9CisKKy0gKHZvaWQpX3NjcmVlbkRpZENoYW5nZQoreworICAgIENH
RGlyZWN0RGlzcGxheUlEIGRpc3BsYXlJRCA9IChDR0RpcmVjdERpc3BsYXlJRClbW1tbW3NlbGYg
aG9zdFdpbmRvd10gc2NyZWVuXSBkZXZpY2VEZXNjcmlwdGlvbl0gb2JqZWN0Rm9yS2V5OkAiTlNT
Y3JlZW5OdW1iZXIiXSBpbnRWYWx1ZV07CisKKyAgICBpZiAoX3ByaXZhdGUtPmRpc3BsYXlMaW5r
ICYmIGRpc3BsYXlJRCAmJiBkaXNwbGF5SUQgIT0gX3ByaXZhdGUtPmRpc3BsYXlJRCkgeworICAg
ICAgICBDVkRpc3BsYXlMaW5rU3RvcChfcHJpdmF0ZS0+ZGlzcGxheUxpbmspOworICAgICAgICBD
VkRpc3BsYXlMaW5rU2V0Q3VycmVudENHRGlzcGxheShfcHJpdmF0ZS0+ZGlzcGxheUxpbmssIGRp
c3BsYXlJRCk7CisgICAgICAgIF9wcml2YXRlLT5kaXNwbGF5SUQgPSBkaXNwbGF5SUQ7CisgICAg
ICAgIENWRGlzcGxheUxpbmtTdGFydChfcHJpdmF0ZS0+ZGlzcGxheUxpbmspOworICAgIH0KK30K
KyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVPKQogCiAtICh2b2lkKV9lbnRlckZ1bGxzY3JlZW5G
b3JOb2RlOihXZWJDb3JlOjpOb2RlKilub2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdEYXRhLmgKaW5kZXggOWIzMjU4MzYzMjdhNGQ2NGI1MjgxNTU2MmY3M2ZiYjVjY2U2ZTQ1NS4u
OGU2MGE3YWFlOWFkYWZhZDM4OTMzNjFhNzQ0ZmQ1OWUwMGEzMDY5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaApAQCAtMjksNiArMjksMTEgQEAKIAogI2ltcG9ydCAi
V2ViVHlwZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNh
Y2hpbmcuaCIKKworI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKyNpbXBvcnQg
PFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2VuZGlmCisKICNpbXBvcnQgPFdlYkNvcmUvUGxh
dGZvcm1TdHJpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUtleWJvYXJkVUlNb2RlLmg+
CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgpAQCAtMTUyLDYgKzE1NywxNSBAQCBleHRlcm4gaW50
IHBsdWdpbkRhdGFiYXNlQ2xpZW50Q291bnQ7CiAgICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgbGF5
ZXJTeW5jUnVuTG9vcE9ic2VydmVyOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUUpCisgICAgZW51bSBBbmltYXRpb25TY2hlZHVsZVN0YXRlIHsgQW5pbWF0aW9u
U3RhdGVJZGxlLCBBbmltYXRpb25TdGF0ZVNjaGVkdWxpbmdOZWVkZWQsIEFuaW1hdGlvblN0YXRl
QW5pbWF0aW9uUGVuZGluZyB9OworICAgIEFuaW1hdGlvblNjaGVkdWxlU3RhdGUgYW5pbWF0aW9u
U2NoZWR1bGVTdGF0ZTsKKyAgICBkb3VibGUgdGltZXN0YW1wOworICAgIENHRGlyZWN0RGlzcGxh
eUlEIGRpc3BsYXlJRDsKKyAgICBDVkRpc3BsYXlMaW5rUmVmIGRpc3BsYXlMaW5rOworICAgIE11
dGV4IGRpc3BsYXlSZWZyZXNoTXV0ZXg7CisjZW5kaWYKKwogICAgIE5TUGFzdGVib2FyZCAqaW5z
ZXJ0aW9uUGFzdGVib2FyZDsKICAgICAgICAgICAgIAogICAgIE5TU2l6ZSBsYXN0TGF5b3V0U2l6
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFs
LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDIz
NzkxYjIzNTEwNzUyOTQ0ZTdlYmQzNTBkOGVmZjA1NTk5MGJmNjYuLjBkNGNiM2I1Y2I0ZTA5OGU5
MTI4ZGU2Zjk0YTE2YWNiYTg2MTM5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3SW50ZXJuYWwuaApAQCAtOTEsNiArOTEsMTEgQEAgV2ViQ29yZTo6RmluZE9wdGlvbnMg
Y29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMgb3B0aW9ucyk7CiAtICh2b2lkKV9zY2hlZHVsZUNv
bXBvc2l0aW5nTGF5ZXJTeW5jOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUUpCistICh2b2lkKV9zY2hlZHVsZUFuaW1hdGlvbjsKKy0gKHZvaWQpX3NjcmVlbkRp
ZENoYW5nZTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEdMSUJfU1VQUE9SVCkKIC0gKHZvaWQpX3Nj
aGVkdWxlR2xpYkNvbnRleHRJdGVyYXRpb25zOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmY2ZjM3
ZDFmY2Y1M2NhNGQwNDQ5YWZjNzA4OTFkYmY1Mzk5ODYxYy4uNWVhZTg2ZTZjYzZhMDhjYjVmNTI4
MDAwYzkwYmIxODIzOWViNzY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTEw
LTA3ICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNvbT4KKworICAgICAgICBTeW5jIHJl
cXVlc3RBbmltYXRpb25GcmFtZSBjYWxsYmFjayB0byBDVkRpc3BsYXlMaW5rIG9uIE1hYworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg5MTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgQ1ZE
aXNwbGF5TGluayB3aGljaCBjaGVja3MgdG8gc2VlIGlmIGFueSBzY2hlZHVsZUFuaW1hdGlvbiBy
ZXF1ZXN0cworICAgICAgICBoYXZlIGNvbWUgaW4uIElmIHNvLCByZW1lbWJlciB0aGUgdGltZXN0
YW1wIGFuZCBkbyBhIGNhbGxPbk1haW5UaHJlYWQgdG8gZmlyZQorICAgICAgICB0aGUgY2FsbGJh
Y2tzLiBBbHNvIGFkZGVkIGxvZ2ljIHRvIGNoYW5nZSB1cGRhdGUgdGhlIHNjcmVlbiBmb3IgdGhl
IGRpc3BsYXkKKyAgICAgICAgbGluayB3aGVuIGl0IGNoYW5nZXMgdG8gc3RheSBpbiBzeW5jIHdp
dGggdGhlIHNjcmVlbiB0aGUgcGFnZSBpcyBjdXJyZW50bHkgb24uCisKKyAgICAgICAgSW4gV0sy
IHRoZSBldmVudCBub3RpZnlpbmcgdGhhdCB0aGUgc2NyZWVuIGhhcyBjaGFuZ2VkIGNvbWVzIGlu
IG9uIHRoZSBVSVByb2Nlc3MuCisgICAgICAgIEJ1dCB0aGUgQ1ZEaXNwbGF5TGluayBpcyBydW5u
aW5nIGluIHRoZSBXZWJQcm9jZXNzLCBzbyBhIG1lc3NhZ2UgaXMgc2VudCBvbgorICAgICAgICBz
Y3JlZW4gY2hhbmdlIGZyb20gVUkgdG8gV2ViLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgYWRkV2luZG93T2JzZXJ2ZXJzRm9yV2lu
ZG93Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgcmVtb3ZlV2luZG93T2JzZXJ2ZXJzXSk6CisgICAg
ICAgICgtW1dLVmlldyBfd2luZG93RGlkQ2hhbmdlU2NyZWVuOl0pOgorICAgICAgICAoLVtXS1Zp
ZXcgX3dpbmRvd0ZyYW1lRGlkQ2hhbmdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFuZ2VTY3JlZW4pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQ2hyb21lQ2xpZW50OjpzY2hlZHVsZUFuaW1hdGlvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Oldl
YlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp+V2ViUGFnZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNodXRkb3duRGlzcGxh
eUxpbmspOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaXNwbGF5TGlua0NhbGxiYWNrKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVmcmVzaERpc3BsYXlPbk1haW5UaHJlYWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzY2hlZHVsZUFuaW1hdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmNoYW5nZVNjcmVlbik6CisKIDIwMTEtMTAtMDUgIENhaW8gTWFyY2Vs
byBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KIAogICAg
ICAgICBbUXRdIFtXSzJdIFN1cHBvcnQgSlMgYWxlcnQvY29uZmlybS9wcm9tcHQgaW4gUURlc2t0
b3BXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KaW5k
ZXggMGZiYjA3NmY0OTIxMzM3Y2NjYzFlYjJkOWQwOGFjMmIzYWM3YmNhNS4uZTNmNGQ0OWVkODYx
OWM1YTUyNDc4NGExZGMxZjk4MmNiM2VlNmE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMTg5Niw5ICsxODk2LDIwIEBAIC0gKHZvaWQpX3dpbmRv
d0RpZERlbWluaWF0dXJpemU6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCiAgICAgW3Nl
bGYgX3VwZGF0ZVdpbmRvd1Zpc2liaWxpdHldOwogfQogCisjaWYgRU5BQkxFKFJFUVVFU1RfQU5J
TUFUSU9OX0ZSQU1FKQorLSAodm9pZClfd2luZG93RGlkQ2hhbmdlU2NyZWVuOihOU05vdGlmaWNh
dGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIENHRGlyZWN0RGlzcGxheUlEIGRpc3BsYXlJRCA9
IChDR0RpcmVjdERpc3BsYXlJRClbW1tbW3NlbGYgd2luZG93XSBzY3JlZW5dIGRldmljZURlc2Ny
aXB0aW9uXSBvYmplY3RGb3JLZXk6QCJOU1NjcmVlbk51bWJlciJdIGludFZhbHVlXTsKKyAgICBf
ZGF0YS0+X3BhZ2UtPmNoYW5nZVNjcmVlbihkaXNwbGF5SUQpOworfQorI2VuZGlmCisKIC0gKHZv
aWQpX3dpbmRvd0ZyYW1lRGlkQ2hhbmdlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgog
ewogICAgIFtzZWxmIF91cGRhdGVXaW5kb3dBbmRWaWV3RnJhbWVzXTsKKyNpZiBFTkFCTEUoUkVR
VUVTVF9BTklNQVRJT05fRlJBTUUpCisgICAgW3NlbGYgX3dpbmRvd0RpZENoYW5nZVNjcmVlbjpu
b3RpZmljYXRpb25dOworI2VuZGlmCiB9CiAKIC0gKHZvaWQpX3dpbmRvd0RpZE9yZGVyT2ZmU2Ny
ZWVuOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDFiMThhYjhiMmQ4MjM5MGNhNTIwMWJlM2QyMjM4Nzc4YjBk
Y2JmYzMuLjYwYjUxZThmODU1ODRmOTZiZjYzMmFhYzdjZDllZGUwMDJjMjJkYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTQxMSw2ICs0MTEsMTAgQEAgcHVi
bGljOgogICAgIGJvb2wgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcyk7CiAg
ICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSk7CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKTsKKworI2lmIEVOQUJMRShS
RVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKyAgICB2b2lkIGNoYW5nZVNjcmVlbihDR0RpcmVjdERp
c3BsYXlJRCk7CisjZW5kaWYKICNlbmRpZgogCiAgICAgdm9pZCBwYWdlU2NhbGVGYWN0b3JEaWRD
aGFuZ2UoZG91YmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0KaW5kZXggMTdjNzY4YmNiN2M0ZDY2ZGJiYzAxMjcwZDBmNDQ3MDA4OTNmZDM0
MS4uNDQ1OTQ3MjM1ZjFkZGZiMmY0ZGY0MzE2OGMwNDUyMTAwZDFjMDcyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTMzNCw2ICsz
MzQsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om1ha2VGaXJzdFJlc3BvbmRlcigpCiAgICAgbV9w
YWdlQ2xpZW50LT5tYWtlRmlyc3RSZXNwb25kZXIoKTsKIH0KICAgICAKKyNpZiBFTkFCTEUoUkVR
VUVTVF9BTklNQVRJT05fRlJBTUUpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlU2NyZWVuKENH
RGlyZWN0RGlzcGxheUlEIGRpc3BsYXlJRCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdl
U2NyZWVuKGRpc3BsYXlJRCksIG1fcGFnZUlEKTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IENvcmVJUEM6
OkRhdGFSZWZlcmVuY2UmIGVsZW1lbnRUb2tlbiwgY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5j
ZSYgd2luZG93VG9rZW4pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKaW5kZXggZmZmYjYwMjU4OGUxNWQ3YjY3ZWNhYmE5NTVkMWE5OTRiMDY3MmUzYS4uOTll
ZjMzOTI2NGQ0ZTBlNjM2Nzc3MWZlZjJhNzU4ZDRhYzkwOGIzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcApAQCAtNjQ1LDYgKzY0NSwxMyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0Q3Vy
c29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wgaGlkZGVuVW50aWxNb3VzZU1vdmVzKQogICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRDdXJzb3JIaWRkZW5VbnRp
bE1vdXNlTW92ZXMoaGlkZGVuVW50aWxNb3VzZU1vdmVzKSk7CiB9CiAKKyNpZiBFTkFCTEUoUkVR
VUVTVF9BTklNQVRJT05fRlJBTUUpICYmIFBMQVRGT1JNKE1BQykKK3ZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpzY2hlZHVsZUFuaW1hdGlvbigpCit7CisgICAgbV9wYWdlLT5zY2hlZHVsZUFuaW1hdGlv
bigpOworfQorI2VuZGlmCisKIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb3JtU3RhdGVEaWRDaGFu
Z2UoY29uc3QgTm9kZSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCmluZGV4IGIxOGNlYzNlZTAzYjg0Zjc3YTZhODBkOGU5ZjM3ZmMxNzYxM2YzNGYuLmI3MGM1
OTFiNmE3Y2FhYmY4ZmRiMWY0ZTgxMTc1ZTM1MjZiZTk2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aApAQCAtMTY0LDYgKzE2NCwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJz
b3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNl
dEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSBPVkVSUklERTsKIAorI2lmIEVOQUJM
RShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJiYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpOworI2VuZGlmCisKICAgICAvLyBOb3RpZmljYXRpb24g
dGhhdCB0aGUgZ2l2ZW4gZm9ybSBlbGVtZW50IGhhcyBjaGFuZ2VkLiBUaGlzIGZ1bmN0aW9uCiAg
ICAgLy8gd2lsbCBiZSBjYWxsZWQgZnJlcXVlbnRseSwgc28gaGFuZGxpbmcgc2hvdWxkIGJlIHZl
cnkgZmFzdC4KICAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IFdlYkNv
cmU6Ok5vZGUqKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCAwOTE3ODliOGI0MjUzNzc4MTFiOGJiZTNjZTExOWQ4MWY3YWVm
MmU0Li43ZGRlYmViYzNlMWFkMGRkYzQ1NjlhZDY5YTk2NTQ4ZTYzNzdhNjY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNzgsNiArMTc4
LDEyIEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgICwgbV93aW5kb3dJc1Zpc2libGUoZmFs
c2UpCiAgICAgLCBtX2lzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKHBhcmFtZXRlcnMuaXNTbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQpCiAgICAgLCBtX2tleWJvYXJkRXZlbnRCZWluZ0ludGVycHJl
dGVkKDApCisjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQorICAgICwgbV9hbmlt
YXRpb25TY2hlZHVsZVN0YXRlKEFuaW1hdGlvblN0YXRlSWRsZSkKKyAgICAsIG1fdGltZXN0YW1w
KDApCisgICAgLCBtX2Rpc3BsYXlJRCgwKQorICAgICwgbV9kaXNwbGF5TGluaygwKQorI2VuZGlm
CiAjZWxpZiBQTEFURk9STShXSU4pCiAgICAgLCBtX25hdGl2ZVdpbmRvdyhwYXJhbWV0ZXJzLm5h
dGl2ZVdpbmRvdykKICNlbmRpZgpAQCAtMjY0LDYgKzI3MCwxMCBAQCBXZWJQYWdlOjp+V2ViUGFn
ZSgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgQVNTRVJUKG1fcGx1Z2luVmlld3MuaXNFbXB0
eSgpKTsKKworI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKyAgICBzaHV0ZG93
bkRpc3BsYXlMaW5rKCk7CisjZW5kaWYKICNlbmRpZgogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYjNkODdhY2E3NjRl
YTU5MDg5ODVmN2RhYTlkMDlhYzZlZGQ3ZTc2Yi4uNDQzNmM4ZWU3Y2ExNTVjMzlhNWI2YzY2Nzdm
OWMwYTE1MDVhMmM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC02Nyw2ICs2Nyw3IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAi
RGljdGlvbmFyeVBvcHVwSW5mby5oIgorI2luY2x1ZGUgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5o
PgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIE9CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5Owog
T0JKQ19DTEFTUyBOU09iamVjdDsKQEAgLTM2Myw2ICszNjQsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgYWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVyLCBjb25zdCBXZWJLaXQ6OldlYk1v
dXNlRXZlbnQmLCBib29sJiByZXN1bHQpOwogICAgIGJvb2wgcGVyZm9ybU5vbkVkaXRpbmdCZWhh
dmlvckZvclNlbGVjdG9yKGNvbnN0IFN0cmluZyYpOwogCisjaWYgRU5BQkxFKFJFUVVFU1RfQU5J
TUFUSU9OX0ZSQU1FKQorICAgIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKTsKKyAgICB2b2lkIGNo
YW5nZVNjcmVlbihDR0RpcmVjdERpc3BsYXlJRCk7CisjZW5kaWYKKwogI2VsaWYgUExBVEZPUk0o
V0lOKQogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRp
b25TdHJpbmcpOwogICAgIHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGNv
bXBvc2l0aW9uU3RyaW5nLCBjb25zdCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVu
ZGVybGluZT4mIHVuZGVybGluZXMsIHVpbnQ2NF90IGN1cnNvclBvc2l0aW9uKTsKQEAgLTYyOSw2
ICs2MzUsMjAgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OktleWJvYXJkRXZlbnQqIG1fa2V5
Ym9hcmRFdmVudEJlaW5nSW50ZXJwcmV0ZWQ7CiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUUpCisgICAgc3RhdGljIENWUmV0dXJuIGRpc3BsYXlMaW5rQ2FsbGJhY2soQ1ZEaXNw
bGF5TGlua1JlZiwgY29uc3QgQ1ZUaW1lU3RhbXAqIG5vdywgY29uc3QgQ1ZUaW1lU3RhbXAqIG91
dHB1dFRpbWUsIENWT3B0aW9uRmxhZ3MsIENWT3B0aW9uRmxhZ3MqLCB2b2lkKiBkYXRhKTsKKyAg
ICBzdGF0aWMgdm9pZCByZWZyZXNoRGlzcGxheU9uTWFpblRocmVhZCh2b2lkKiBkYXRhKTsKKwor
ICAgIHZvaWQgc2h1dGRvd25EaXNwbGF5TGluaygpOworCisgICAgZW51bSBBbmltYXRpb25TY2hl
ZHVsZVN0YXRlIHsgQW5pbWF0aW9uU3RhdGVJZGxlLCBBbmltYXRpb25TdGF0ZVNjaGVkdWxpbmdO
ZWVkZWQsIEFuaW1hdGlvblN0YXRlQW5pbWF0aW9uUGVuZGluZyB9OworICAgIEFuaW1hdGlvblNj
aGVkdWxlU3RhdGUgbV9hbmltYXRpb25TY2hlZHVsZVN0YXRlOworICAgIGRvdWJsZSBtX3RpbWVz
dGFtcDsKKyAgICBDR0RpcmVjdERpc3BsYXlJRCBtX2Rpc3BsYXlJRDsKKyAgICBDVkRpc3BsYXlM
aW5rUmVmIG1fZGlzcGxheUxpbms7CisgICAgTXV0ZXggbV9kaXNwbGF5UmVmcmVzaE11dGV4Owor
I2VuZGlmCisKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICAvLyBPdXIgdmlldydzIHdpbmRvdyAo
aW4gdGhlIFVJIHByb2Nlc3MpLgogICAgIEhXTkQgbV9uYXRpdmVXaW5kb3c7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmlu
ZGV4IDFiNzcxZDRkMjNhYTI4YWRhOWFiOTY2NmE3Zjk1ZWQ4NDFjMWIwZDYuLmQxZGZkZTRiNzc0
ZjJhMzEwZjc0NTgwYTc2NzU2OTVjMTY0YjlhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xODksNiArMTg5
LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIFNlbmRDb21wbGV4VGV4dElucHV0VG9Q
bHVnaW4odWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIFN0cmluZyB0
ZXh0SW5wdXQpCiAKICAgICBTZXRXaW5kb3dJc1Zpc2libGUoYm9vbCB3aW5kb3dJc1Zpc2libGUp
CisKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisgICAgQ2hhbmdlU2NyZWVu
KENHRGlyZWN0RGlzcGxheUlEIGRpc3BsYXlJRCkKKyNlbmRpZgorCiAgICAgV2luZG93QW5kVmll
d0ZyYW1lc0NoYW5nZWQoV2ViQ29yZTo6SW50UmVjdCB3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRp
bmF0ZXMsIFdlYkNvcmU6OkludFJlY3Qgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRlcywgV2Vi
Q29yZTo6SW50UG9pbnQgYWNjZXNzaWJpbGl0eVZpZXdDb29yZGluYXRlcykKICAgICBSZWdpc3Rl
clVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSBlbGVt
ZW5Ub2tlbiwgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSB3aW5kb3dUb2tlbikKICAgICBXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZChXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpWZWN0
b3I8V1RGOjpTdHJpbmc+IHBhc3RlYm9hcmRUeXBlcykgLT4gKGJvb2wgcmVzdWx0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmlu
ZGV4IDQzNjliMGU0MDFlNGQ2NDUzN2Y2YmFlMmM3Njg5MTUyZWVmZDFhOTcuLmM4NmRlMWUyNWYw
NmUzOGQyMzE3M2M5OGIwMzU2ZWJiYTIwYmM3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU4Myw2ICs1ODMsODQg
QEAgYm9vbCBXZWJQYWdlOjpwZXJmb3JtTm9uRWRpdGluZ0JlaGF2aW9yRm9yU2VsZWN0b3IoY29u
c3QgU3RyaW5nJiBzZWxlY3RvcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmIEVOQUJMRShS
RVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKK3ZvaWQgV2ViUGFnZTo6c2h1dGRvd25EaXNwbGF5TGlu
aygpCit7CisgICAgaWYgKG1fZGlzcGxheUxpbmspIHsKKyAgICAgICAgQ1ZEaXNwbGF5TGlua1N0
b3AobV9kaXNwbGF5TGluayk7CisgICAgICAgIENWRGlzcGxheUxpbmtSZWxlYXNlKG1fZGlzcGxh
eUxpbmspOworICAgICAgICBtX2Rpc3BsYXlMaW5rID0gMDsKKyAgICB9Cit9CisKK0NWUmV0dXJu
IFdlYlBhZ2U6OmRpc3BsYXlMaW5rQ2FsbGJhY2soQ1ZEaXNwbGF5TGlua1JlZiwgY29uc3QgQ1ZU
aW1lU3RhbXAqIG5vdywgY29uc3QgQ1ZUaW1lU3RhbXAqIG91dHB1dFRpbWUsIENWT3B0aW9uRmxh
Z3MsIENWT3B0aW9uRmxhZ3MqLCB2b2lkKiBkYXRhKQoreworICAgIFdlYlBhZ2UqIHdlYlBhZ2Ug
PSBzdGF0aWNfY2FzdDxXZWJQYWdlKj4oZGF0YSk7CisgICAgCisgICAgZG91YmxlIG5vd1NlY29u
ZHMgPSBzdGF0aWNfY2FzdDxkb3VibGU+KG5vdy0+dmlkZW9UaW1lKSAvIHN0YXRpY19jYXN0PGRv
dWJsZT4obm93LT52aWRlb1RpbWVTY2FsZSk7CisgICAgZG91YmxlIG91dHB1dFRpbWVTZWNvbmRz
ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihvdXRwdXRUaW1lLT52aWRlb1RpbWUpIC8gc3RhdGljX2Nh
c3Q8ZG91YmxlPihvdXRwdXRUaW1lLT52aWRlb1RpbWVTY2FsZSk7CisgICAgZG91YmxlIHdlYktp
dE5vdyA9IGN1cnJlbnRUaW1lKCk7CisgICAgCisgICAgTXV0ZXhMb2NrZXIgbG9jayh3ZWJQYWdl
LT5tX2Rpc3BsYXlSZWZyZXNoTXV0ZXgpOworICAgIGlmICh3ZWJQYWdlLT5tX2FuaW1hdGlvblNj
aGVkdWxlU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGVTY2hlZHVsaW5nTmVlZGVkKSB7CisgICAgICAg
IHdlYlBhZ2UtPm1fYW5pbWF0aW9uU2NoZWR1bGVTdGF0ZSA9IEFuaW1hdGlvblN0YXRlQW5pbWF0
aW9uUGVuZGluZzsKKyAgICAgICAgd2ViUGFnZS0+bV90aW1lc3RhbXAgPSB3ZWJLaXROb3cgLSBu
b3dTZWNvbmRzICsgb3V0cHV0VGltZVNlY29uZHM7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
cmVmcmVzaERpc3BsYXlPbk1haW5UaHJlYWQsIHdlYlBhZ2UpOworICAgIH0KKworICAgIHJldHVy
biBrQ1ZSZXR1cm5TdWNjZXNzOworfQorCit2b2lkIFdlYlBhZ2U6OnJlZnJlc2hEaXNwbGF5T25N
YWluVGhyZWFkKHZvaWQqIGRhdGEpCit7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IHN0YXRpY19j
YXN0PFdlYlBhZ2UqPihkYXRhKTsKKworICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgeworICAg
ICAgICBNdXRleExvY2tlciBsb2NrKHdlYlBhZ2UtPm1fZGlzcGxheVJlZnJlc2hNdXRleCk7Cisg
ICAgICAgIHdlYlBhZ2UtPm1fYW5pbWF0aW9uU2NoZWR1bGVTdGF0ZSA9IEFuaW1hdGlvblN0YXRl
SWRsZTsKKyAgICAgICAgdGltZXN0YW1wID0gd2ViUGFnZS0+bV90aW1lc3RhbXA7CisgICAgfQor
CisgICAgaWYgKHdlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpICYmIHdlYlBhZ2UtPmNv
cmVQYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCkpCisgICAgICAgIHdlYlBhZ2UtPmNvcmVQYWdl
KCktPm1haW5GcmFtZSgpLT52aWV3KCktPnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoY29udmVy
dFNlY29uZHNUb0RPTVRpbWVTdGFtcCh0aW1lc3RhbXApKTsKK30KKwordm9pZCBXZWJQYWdlOjpz
Y2hlZHVsZUFuaW1hdGlvbigpCit7CisgICAgaWYgKCFtX2Rpc3BsYXlMaW5rKSB7CisgICAgICAg
IGlmICghbV9kaXNwbGF5SUQpCisgICAgICAgICAgICBtX2Rpc3BsYXlJRCA9IENHTWFpbkRpc3Bs
YXlJRCgpOworCisgICAgICAgIENWUmV0dXJuIGVycm9yID0gQ1ZEaXNwbGF5TGlua0NyZWF0ZVdp
dGhDR0Rpc3BsYXkobV9kaXNwbGF5SUQsICZtX2Rpc3BsYXlMaW5rKTsKKyAgICAgICAgQVNTRVJU
KCFlcnJvcik7CisgICAgCisgICAgICAgIGVycm9yID0gQ1ZEaXNwbGF5TGlua1NldE91dHB1dENh
bGxiYWNrKG1fZGlzcGxheUxpbmssIGRpc3BsYXlMaW5rQ2FsbGJhY2ssIHRoaXMpOworICAgICAg
ICBBU1NFUlQoIWVycm9yKTsKKyAgICAKKyAgICAgICAgZXJyb3IgPSBDVkRpc3BsYXlMaW5rU3Rh
cnQobV9kaXNwbGF5TGluayk7CisgICAgICAgIEFTU0VSVCghZXJyb3IpOworICAgIH0KKworICAg
IE11dGV4TG9ja2VyIGxvY2sobV9kaXNwbGF5UmVmcmVzaE11dGV4KTsKKyAgICBpZiAobV9hbmlt
YXRpb25TY2hlZHVsZVN0YXRlID09IEFuaW1hdGlvblN0YXRlSWRsZSkKKyAgICAgICAgbV9hbmlt
YXRpb25TY2hlZHVsZVN0YXRlID0gQW5pbWF0aW9uU3RhdGVTY2hlZHVsaW5nTmVlZGVkOyAgICAK
K30KKwordm9pZCBXZWJQYWdlOjpjaGFuZ2VTY3JlZW4oQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxh
eUlEKQoreworICAgIGlmICghbV9kaXNwbGF5SUQgfHwgbV9kaXNwbGF5SUQgIT0gZGlzcGxheUlE
KSB7CisgICAgICAgIG1fZGlzcGxheUlEID0gZGlzcGxheUlEOworICAgICAgICAKKyAgICAgICAg
aWYgKG1fZGlzcGxheUxpbmspIHsKKyAgICAgICAgICAgIENWRGlzcGxheUxpbmtTdG9wKG1fZGlz
cGxheUxpbmspOworICAgICAgICAgICAgQ1ZEaXNwbGF5TGlua1NldEN1cnJlbnRDR0Rpc3BsYXko
bV9kaXNwbGF5TGluaywgbV9kaXNwbGF5SUQpOworICAgICAgICAgICAgQ1ZEaXNwbGF5TGlua1N0
YXJ0KG1fZGlzcGxheUxpbmspOworICAgICAgICB9CisgICAgfQorfQorI2VuZGlmCisKIGJvb2wg
V2ViUGFnZTo6cGVyZm9ybURlZmF1bHRCZWhhdmlvckZvcktleUV2ZW50KGNvbnN0IFdlYktleWJv
YXJkRXZlbnQmKQogewogICAgIHJldHVybiBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110761</attachid>
            <date>2011-10-12 15:54:38 -0700</date>
            <delta_ts>2011-10-12 16:13:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68911-20111012155437.patch</filename>
            <type>text/plain</type>
            <size>49061</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY5NTgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NjlhMTQ5YzcwMTBiMDg4ZjUzM2U4
M2I1YzU0YjYwMDdiZjkwZmFkLi4zYmI0MjI5NjgwZDk1ZWE3Njk1N2Q5Y2YxNTJkMzUwZmY1YzZi
MGQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTAtMTIgIENocmlzIE1hcnJpbiAgPGNt
YXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFN5bmMgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNh
bGxiYWNrIHRvIENWRGlzcGxheUxpbmsgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODkxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3QgdG8gbWFrZSBzdXJlIHJlcXVlc3RBbmltYXRpb25G
cmFtZSBldmVudHMgZmlyZSBpbnNpZGUgaWZyYW1lCisKKyAgICAgICAgKiBmYXN0L2FuaW1hdGlv
bi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJhbWUuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9hbmltYXRpb24vc2NyaXB0LXRlc3RzL3JlcXVlc3Qt
YW5pbWF0aW9uLWZyYW1lLXN1YmZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDExLTEwLTA3ICBWaW5l
ZXQgQ2hhdWRhcnkgIDx2aW5lZXQuY2hhdWRoYXJ5QG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBi
YWNrZ3JvdW5kLWNvbG9yIGFmZmVjdHMgdGhlIGZvbnQgY29sb3IgaW4gZGlzYWJsZWQgdGV4dGFy
ZWEuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1h
dGlvbi1mcmFtZS1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRp
b24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43MmI0MzhkNDM5NWY0ODg1MDZhMmM4YzUyYTg5ZjZkY2ZlZWIxMDEwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUt
aWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyByZXF1ZXN0QW5pbWF0
aW9uRnJhbWUgaW4gYW4gaWZyYW1lCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGNhbGxiYWNrSW52b2tlZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9hbmlt
YXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJhbWUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45YTIzMzZkN2VmZDljZDFlZGIxM2RlMGFiOWMzNTRjN2RkYWUwZGY0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJh
bWUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8aWZyYW1lIHNyYz0ic2Ny
aXB0LXRlc3RzL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXN1YmZyYW1lLmh0bWwiIHdpZHRoPSI3
MDAiIGhlaWdodD0iNTAwIj48L2lmcmFtZT4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgY2hhcnNldD0idXRmLTgiPgorICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgcmVxdWVz
dEFuaW1hdGlvbkZyYW1lIGluIGFuIGlmcmFtZSIpOworCisgICAgICAgIHZhciBjYWxsYmFja0lu
dm9rZWQgPSBmYWxzZTsKKyAgICAKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gQ2FsbGVkIGZyb20gc3ViZnJhbWUuCisgICAgICAgIGZ1bmN0aW9u
IGRvRGlzcGxheSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxh
eSgpOworICAgICAgICB9CisgICAgCisgICAgICAgIGZ1bmN0aW9uIGRvQ2hlY2tSZXN1bHQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImNhbGxiYWNrSW52b2tlZCIpOwor
ICAgICAgICB9CisgICAgCisgICAgICAgIGZ1bmN0aW9uIGRvVGVzdERvbmUoKQorICAgICAgICB7
CisgICAgICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICA8L3NjcmlwdD4KKworICAgIDxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3NjcmlwdC10
ZXN0cy9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1zdWJmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9hbmltYXRpb24vc2NyaXB0LXRlc3RzL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXN1YmZy
YW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E2ZDljMjI3ZDQ0YTg3YThhZWM2ZjA3YjliYjVmYjY0NzUy
NzRjMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3Njcmlw
dC10ZXN0cy9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1zdWJmcmFtZS5odG1sCkBAIC0wLDAgKzEs
MjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNwYW4gaWQ9ImUiPjwvc3Bhbj4KKzxzcGFuIGlkPSJmIj48L3NwYW4+Cis8c2Ny
aXB0PgorICAgIHZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImUiKTsKKyAgICB3aW5k
b3cud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgeworICAgICAgICBwYXJl
bnQuY2FsbGJhY2tJbnZva2VkID0gdHJ1ZTsKKyAgICB9LCBlKTsKKworICAgIHBhcmVudC5kb0Rp
c3BsYXkoKTsKKyAgICAKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBwYXJl
bnQuZG9DaGVja1Jlc3VsdCgpOworICAgIH0sIDEwMCk7CisKKyAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeworICAgICAgICBwYXJlbnQuZG9UZXN0RG9uZSgpOworICAgIH0sIDIwMCk7ICAgIAor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBhYWFiZWU0NmVjNTEy
YmFmN2ZjNWNjNjRhMDY4MDg2MDQzNTIzZS4uNjFjZjQ0ZjcxM2M5Y2NiZjFkODhkN2NiMDQ0NGM4
N2NiOGZhNGVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDExLTEwLTEyICBDaHJp
cyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNvbT4KKworICAgICAgICBTeW5jIHJlcXVlc3RBbmlt
YXRpb25GcmFtZSBjYWxsYmFjayB0byBDVkRpc3BsYXlMaW5rIG9uIE1hYworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg5MTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2FuaW1hdGlvbi9y
ZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJhbWUuaHRtbAorCisgICAgICAgIEltcGxlbWVudCBD
VkRpc3BsYXlMaW5rIHdoaWNoIGNoZWNrcyB0byBzZWUgaWYgYW55IHNjaGVkdWxlQW5pbWF0aW9u
IHJlcXVlc3RzCisgICAgICAgIGhhdmUgY29tZSBpbi4gSWYgc28sIHJlbWVtYmVyIHRoZSB0aW1l
c3RhbXAgYW5kIGRvIGEgY2FsbE9uTWFpblRocmVhZCB0byBmaXJlCisgICAgICAgIHRoZSBjYWxs
YmFja3MuIEEgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlciBpcyBhIHNpbmdsZXRvbiB3aGlj
aCBoYXMgYSBsaXN0CisgICAgICAgIG9mIERpc3BsYXlSZWZyZXNoTW9uaXRvcnMsIG9uZSBmb3Ig
ZWFjaCBkaXNwbGF5LiBFYWNoIG1vbml0b3IgaGFzIG9uZSBvciBtb3JlCisgICAgICAgIERpc3Bs
YXlSZWZyZXNoTW9uaXRvckNsaWVudHMsIHdoaWNoIGlzIGEgYWJzdHJhY3QgdmlydHVhbCBjbGFz
cyBpbXBsZW1lbnRlZAorICAgICAgICBieSBTY3JpcHRBbmltYXRpb25Db250cm9sbGVyLiBXaGVu
IGFuIGFuaW1hdGlvbiBpcyBzY2hlZHVsZWQsIHRoZQorICAgICAgICBkaXNwbGF5UmVmcmVzaEZp
cmVkIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGNsaWVudCwgd2hpY2ggaW4gdHVybiBjYWxscyB0
aGUKKyAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNhbGxiYWNrcy4gCisKKyAgICAgICAg
RGlzcGxheVJlZnJlc2hNb25pdG9yIGFuZCB0aGVyZWZvcmUgdGhlIENWRGlzcGxheUxpbmsgaXQg
b3ducyBpcyBkaXNjYXJkZWQKKyAgICAgICAgd2hlbiBpdCBubyBsb25nZXIgaGFzIGFueSBjbGll
bnRzLiBUaGlzIG1pbmltaXplcyB0aGUgbnVtYmVyIG9mIGNvbmN1cnJlbnQKKyAgICAgICAgQ1ZE
aXNwbGF5TGluayB0aHJlYWRzLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2luZG93U2NyZWVuRGlkQ2hh
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0QW5pbWF0aW9u
RnJhbWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjp3aW5kb3dTY3JlZW5EaWRDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzY2hl
ZHVsZUFuaW1hdGlvbik6CisgICAgICAgICogZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpkaXNw
bGF5UmVmcmVzaEZpcmVkKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp3aW5kb3dTY3JlZW5E
aWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6ZGlzcGxheUlEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50OjpEaXNwbGF5
UmVmcmVzaE1vbml0b3JDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hN
b25pdG9yQ2xpZW50Ojp+RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudDo6ZmlyZURpc3BsYXlSZWZyZXNoSWZO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpEaXNwbGF5
UmVmcmVzaE1vbml0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9y
OjpyZWZyZXNoRGlzcGxheU9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OmZpbmRNb25pdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnJlZ2lzdGVyQ2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnVucmVnaXN0ZXJD
bGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6
c2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlcjo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQ6OnNjaGVkdWxlQW5pbWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6aGFzQ2xpZW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmFkZENsaWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlbW92ZUNsaWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlJRCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JN
YW5hZ2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hN
b25pdG9yTWFjLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1v
bml0b3I6OmRpc3BsYXlMaW5rQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJl
ZnJlc2hNb25pdG9yOjp+RGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6c2NoZWR1bGVBbmltYXRpb24pOgorCiAyMDExLTEwLTA3
ICBWaW5lZXQgQ2hhdWRhcnkgIDx2aW5lZXQuY2hhdWRoYXJ5QG1vdG9yb2xhLmNvbT4KIAogICAg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yIGFmZmVjdHMgdGhlIGZvbnQgY29sb3IgaW4gZGlzYWJsZWQg
dGV4dGFyZWEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDFkZjRkN2ZmMTI5NTAwYmM3ZjY3NmMw
Y2I1MTQ4ZWM5NzJhMDhmZmEuLjkzNjg0YzgxNmRlNWFiMzg1YzA1YjQ1NTM3ZjNjY2FkOTUxZmZl
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC03MzEsNiArNzMxLDcgQEAgX19aTjdXZWJDb3Jl
NFBhZ2UyMHJlbW92ZVNjcm9sbGFibGVBcmVhRVBOU18xNFNjcm9sbGFibGVBcmVhRQogX19aTjdX
ZWJDb3JlNFBhZ2UyMHNldERldmljZVNjYWxlRmFjdG9yRWYKIF9fWk43V2ViQ29yZTRQYWdlMjB1
bm1hcmtBbGxUZXh0TWF0Y2hlc0V2CiBfX1pON1dlYkNvcmU0UGFnZTIxbWFya0FsbE1hdGNoZXNG
b3JUZXh0RVJLTjNXVEY2U3RyaW5nRWpiagorX19aTjdXZWJDb3JlNFBhZ2UyMXdpbmRvd1NjcmVl
bkRpZENoYW5nZUVqCiBfX1pON1dlYkNvcmU0UGFnZTIyYWxsVmlzaXRlZFN0YXRlQ2hhbmdlZEVQ
TlNfOVBhZ2VHcm91cEUKIF9fWk43V2ViQ29yZTRQYWdlMjNjbGVhclVuZG9SZWRvT3BlcmF0aW9u
c0V2CiBfX1pON1dlYkNvcmU0UGFnZTI3c2V0SmF2YVNjcmlwdFVSTHNBcmVBbGxvd2VkRWIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA5NzAxNDRiMzUzNGYzOTkzNzNlMWY0ZWYxNTM4MGM2YjIwZmIxNDkwLi4yOWFiNDIwYWEwMGE3
ZWM1ZjYyYzQyZDdiZGI2M2JhZDk0OTliMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTY2LDYgKzExNjYsOCBAQAogCQk0
OUE1QTRGRTEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlBNUE0RjgxM0UyRjAxRTAwQ0ZE
QUUwIC8qIFBlZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJNDlBNUE0RkYxM0UyRjAxRTAwQ0ZE
QUUwIC8qIFBlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0OUE1QTRGOTEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rpb24u
aCAqLzsgfTsKIAkJNDlBNUE1MDExM0UyRjAxRTAwQ0ZEQUUwIC8qIFNpZ25hbGluZ0NhbGxiYWNr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUE1QTRG
QjEzRTJGMDFFMDBDRkRBRTAgLyogU2lnbmFsaW5nQ2FsbGJhY2suaCAqLzsgfTsKKwkJNDlBRjJE
NjkxNDQzNUQwNTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlBRjJENjgxNDQzNUQwNTAwMTZB
Nzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oICovOyB9OworCQk0OUFGMkQ2QzE0NDM1RDIx
MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QUYyRDZCMTQ0MzVEMjEwMDE2QTc4NCAv
KiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwICovOyB9OwogCQk0OUJFMzBEMjEzRDk3NDdC
MDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUJFMzBEMTEzRDk3NDdCMDAzODA4QTkgLyog
SlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgKi87IH07CiAJCTQ5QkUzMEYzMTNEOTc2NDYwMDM4
MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkUzMEVGMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25u
ZWN0aW9uLmNwcCAqLzsgfTsKIAkJNDlCRTMwRjQxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTUGVlckNv
bm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ5QkUzMEYwMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmggKi87IH07CkBA
IC0xMjg5LDYgKzEyOTEsNyBAQAogCQk0OUVFRDE0RTEwNTE5NzFBMDAwOTlGQUIgLyogSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLzsgfTsKIAkJNDlFRUQxNEYxMDUxOTcxQTAw
MDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZB
QiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi87IH07CiAJCTQ5RUVEMTUw
MTA1MTk3MUEwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQxNEQxMDUx
OTcxQTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi87IH07
CisJCTQ5RkM3QTUwMTQ0NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlGQzdBNEYx
NDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi87IH07CiAJCTQ5
RkZCRjFEMTFDODU1MEUwMDZBNzExOCAvKiBHcmFwaGljc0NvbnRleHQzRE1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjFDMTFDODU1MEUw
MDZBNzExOCAvKiBHcmFwaGljc0NvbnRleHQzRE1hYy5tbSAqLzsgfTsKIAkJNDlGRkJGM0YxMUM5
M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVy
LmggKi87IH07CiAJCTQ5RkZCRjQwMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlGRkJGM0UxMUM5
M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi87IH07CkBAIC04MzAxLDYgKzgzMDQsOCBA
QAogCQk0OUE1QTRGQTEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rpb24uaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgbmFtZSA9IFBlZXJDb25uZWN0aW9uLmlkbDsgcGF0aCA9IHAycC9QZWVyQ29u
bmVjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QTVBNEZCMTNFMkYw
MUUwMENGREFFMCAvKiBTaWduYWxpbmdDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBTaWduYWxpbmdDYWxsYmFjay5oOyBwYXRoID0gcDJwL1NpZ25hbGluZ0NhbGxi
YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QTVBNEZDMTNFMkYwMUUwMENG
REFFMCAvKiBTaWduYWxpbmdDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gU2ln
bmFsaW5nQ2FsbGJhY2suaWRsOyBwYXRoID0gcDJwL1NpZ25hbGluZ0NhbGxiYWNrLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlBRjJENjgxNDQzNUQwNTAwMTZBNzg0IC8qIERp
c3BsYXlSZWZyZXNoTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
aXNwbGF5UmVmcmVzaE1vbml0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlB
RjJENkIxNDQzNUQyMTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3JN
YWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUJFMzBEMTEzRDk3NDdCMDAz
ODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDlCRTMwRUYxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTUGVlckNvbm5l
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQZWVyQ29u
bmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QkUzMEYwMTNEOTc2
NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTUGVlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTg0NDMsNiArODQ0OCw3IEBACiAJCTQ5RUVEMTRCMTA1MTk3MTkwMDA5OUZBQiAvKiBKU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZBQiAvKiBKU1dl
YkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ5RUVEMTREMTA1MTk3MUEwMDA5OUZBQiAvKiBKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNo
TW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5
UmVmcmVzaE1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZGQkYx
QzExQzg1NTBFMDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0M0RNYWMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHQzRE1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdl
YkdMTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xMYXllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZGQkYzRTExQzkzRUUzMDA2QTcxMTgg
LyogV2ViR0xMYXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYkdMTGF5ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTAwOSw2ICsx
OTAxNSw3IEBACiAJCQkJMzdDMjM2MEYxMDk3RUU3NzAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29u
dHJvbGxlci5oICovLAogCQkJCTM3QzIzODFGMTA5OEM4NDIwMEVGOUY3MiAvKiBDb21wbGV4VGV4
dENvbnRyb2xsZXJBVFNVSS5jcHAgKi8sCiAJCQkJMzdDMjM4MjAxMDk4Qzg0MjAwRUY5RjcyIC8q
IENvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tICovLAorCQkJCTQ5QUYyRDZCMTQ0MzVE
MjEwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwICovLAogCQkJCUIyNzUz
NTRCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50TWFjLm1tICovLAogCQkJCUIyNzUzNTRD
MEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RNYWMubW0gKi8sCiAJCQkJQjI3NTM1NEQwQjA1
MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZU1hYy5tbSAqLywKQEAgLTE5MDYyLDYgKzE5MDY5LDgg
QEAKIAkJCQlCMjc1MzUzOTBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3IuaCAqLywKIAkJCQk5Mzgy
REY1NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFjZS5oICovLAogCQkJCUE4Q0I0MTAyMEU4
NUI4QTUwMDMyQzRGMCAvKiBEYXNoQXJyYXkuaCAqLywKKwkJCQk0OUZDN0E0RjE0NDRBRjVGMDBB
NUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCAqLywKKwkJCQk0OUFGMkQ2ODE0NDM1
RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggKi8sCiAJCQkJNkU2N0QyQTgx
MjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oICovLAogCQkJCUIyNzUzNTNBMEIwNTM4
MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmNwcCAqLywKIAkJCQlCMjc1MzUzQjBCMDUzODE0MDAy
Q0U2NEYgLyogRmxvYXRQb2ludC5oICovLApAQCAtMjQ1NjQsNiArMjQ1NzMsNyBAQAogCQkJCTMx
MDYwMzc1MTQzMjgxOUMwMEFCRjRCQSAvKiBKU1dlYktpdENTU0ZpbHRlclZhbHVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMTA2MDM3OTE0MzI4MUNEMDBBQkY0QkEgLyogRE9NV2ViS2l0Q1NTRmls
dGVyVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDYwMzdCMTQzMjgxQ0QwMEFCRjRCQSAv
KiBET01XZWJLaXRDU1NGaWx0ZXJWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
OUFGMkQ2OTE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTI3NDA5LDYgKzI3NDE5LDggQEAKIAkJCQkzMTA2MDM2RjE0MzI3RDJFMDBB
QkY0QkEgLyogV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEw
NjAzNzQxNDMyODE5QzAwQUJGNEJBIC8qIEpTV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzEwNjAzN0ExNDMyODFDRDAwQUJGNEJBIC8qIERPTVdlYktpdENTU0Zp
bHRlclZhbHVlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDlBRjJENkMxNDQzNUQyMTAwMTZBNzg0
IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0OUZD
N0E1MDE0NDRBRjVGMDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggN2U0ZGUxZjhiYzkzMzBjNjI4YWYz
NWZlNGQzOGNmOGQ4NjJhN2JhZS4uZjdlMDg1ZTlkMmU4ZGI2MWExYzEzN2VjZjYwYTZkNGY5Zjk4
ODhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00Nzc0LDYgKzQ3NzQsMTUgQEAgdm9p
ZCBEb2N1bWVudDo6cmVzdW1lU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCkK
ICNlbmRpZgogfQogCit2b2lkIERvY3VtZW50Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZv
cm1EaXNwbGF5SUQgZGlzcGxheUlEKQoreworI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9G
UkFNRSkKKyAgICBpZiAobV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIpCisgICAgICAgIG1f
c2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLT53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxh
eUlEKTsKKyNlbmRpZgorfQorCisKIFN0cmluZyBEb2N1bWVudDo6ZGlzcGxheVN0cmluZ01vZGlm
aWVkQnlFbmNvZGluZyhjb25zdCBTdHJpbmcmIHN0cikgY29uc3QKIHsKICAgICBpZiAobV9kZWNv
ZGVyKQpAQCAtNTExNSw4ICs1MTI0LDEwIEBAIHZvaWQgRG9jdW1lbnQ6OmxvYWRFdmVudERlbGF5
VGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4qKQogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRSkKIGludCBEb2N1bWVudDo6d2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKFBhc3NS
ZWZQdHI8UmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s+IGNhbGxiYWNrLCBFbGVtZW50KiBh
bmltYXRpb25FbGVtZW50KQogewotICAgIGlmICghbV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIpCisgICAgaWYgKCFtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcikgewogICAgICAgICBt
X3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlciA9IFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
cjo6Y3JlYXRlKHRoaXMpOworICAgICAgICBtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci0+
d2luZG93U2NyZWVuRGlkQ2hhbmdlKHBhZ2UoKS0+ZGlzcGxheUlEKCkpOworICAgIH0KIAogICAg
IHJldHVybiBtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci0+cmVnaXN0ZXJDYWxsYmFjayhj
YWxsYmFjaywgYW5pbWF0aW9uRWxlbWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGUx
MTk5NDYzNmZiYmM2OTI5YWViN2RmZjQyYzM3OWU2MjBmODM0MjEuLmI5MWY0Y2RiOGNiMzg1MTZk
YzJiNmQzMWE1MDA3YzE5MjIzOTU4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zOCw2ICsz
OCw3IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCiAj
aW5jbHVkZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVu
LmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKICNpbmNsdWRlICJTdHJpbmdXaXRoRGlyZWN0aW9uLmgiCkBAIC05NDQsNiAr
OTQ1LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRTY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lU2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CisgICAgCisgICAgdm9pZCB3aW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQpOwogCiAgICAgdmlydHVhbCB2b2lkIGZp
bmlzaGVkUGFyc2luZygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDZlY2Y0N2IzZWYyOTMxZDFiNzAyODM3ZTcyODQ3
YmM5ODE5NDQ3YzkuLjZhM2ViZWY3NDEwMjRlZGFkNmE2MjcwYjU0ZWZjZmNkMTM5NTJjMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwCkBAIC01Myw2ICs1Myw5IEBAIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6U2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyKERvY3VtZW50KiBkb2N1bWVudCkKICNpZiBVU0UoUkVRVUVT
VF9BTklNQVRJT05fRlJBTUVfVElNRVIpCiAgICAgLCBtX2FuaW1hdGlvblRpbWVyKHRoaXMsICZT
Y3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmFuaW1hdGlvblRpbWVyRmlyZWQpCiAgICAgLCBt
X2xhc3RBbmltYXRpb25GcmFtZVRpbWUoMCkKKyNpZiBQTEFURk9STShNQUMpCisgICAgLCBtX3Vz
ZVRpbWVyKGZhbHNlKQorI2VuZGlmCiAjZW5kaWYKIHsKIH0KQEAgLTE0Niw5ICsxNDksMjggQEAg
dm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlv
bnMoRE9NVGltZVN0YW1wIHRpbWUpCiAgICAgICAgIHNjaGVkdWxlQW5pbWF0aW9uKCk7CiB9CiAg
ICAgCit2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6d2luZG93U2NyZWVuRGlkQ2hh
bmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLT53aW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCB0aGlzKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KGRpc3BsYXlJRCk7CisjZW5kaWYgICAgCit9CisKIHZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyOjpzY2hlZHVsZUFuaW1hdGlvbigpCiB7CiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FX1RJTUVSKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIW1fdXNlVGltZXIpIHsK
KyAgICAgICAgbV91c2VUaW1lciA9ICFEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCktPnNjaGVkdWxlQW5pbWF0aW9uKHRoaXMpOworICAgICAgICBpZiAoIW1fdXNl
VGltZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgaWYgKG1fYW5p
bWF0aW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKICAgICBk
b3VibGUgc2NoZWR1bGVEZWxheSA9IG1heDxkb3VibGU+KE1pbmltdW1BbmltYXRpb25JbnRlcnZh
bCAtIChjdXJyZW50VGltZSgpIC0gbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lKSwgMCk7CiAgICAg
bV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNob3Qoc2NoZWR1bGVEZWxheSk7CiAjZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCmluZGV4
IGVjMjRmYjM1NTQwNDY0MjczMGUyM2ZmMWYzNjc5OTk1NDdhYTdjYzEuLmY0YjYwMTg0ZDNjY2M0
Yjc1NTA3YWZmNzM0NDFkZmE1NTJkZTBmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgKQEAgLTI5LDYgKzI5LDkgQEAKICNpZiBFTkFC
TEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAjaW5jbHVkZSAiRE9NVGltZVN0YW1wLmgiCiAj
aWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSKQorI2lmIFBMQVRGT1JNKE1BQykK
KyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKKyNlbmRpZgogI2luY2x1ZGUgIlRp
bWVyLmgiCiAjZW5kaWYKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTQyLDcgKzQ1
LDExIEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIFJlcXVlc3RBbmlt
YXRpb25GcmFtZUNhbGxiYWNrOwogCi1jbGFzcyBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIg
eworY2xhc3MgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIDogcHVibGljIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudAorI2VuZGlmCit7CiBXVEZf
TUFLRV9OT05DT1BZQUJMRShTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIpOwogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcj4gY3JlYXRl
KERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTU5LDYgKzY2LDggQEAgcHVibGljOgogICAgIHZvaWQg
c3VzcGVuZCgpOwogICAgIHZvaWQgcmVzdW1lKCk7CiAKKyAgICB2b2lkIHdpbmRvd1NjcmVlbkRp
ZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyKERvY3VtZW50Kik7CiAgICAgCkBAIC03NSw2ICs4NCwx
MyBAQCBwcml2YXRlOgogICAgIHZvaWQgYW5pbWF0aW9uVGltZXJGaXJlZChUaW1lcjxTY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXI+Kik7CiAgICAgVGltZXI8U2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyPiBtX2FuaW1hdGlvblRpbWVyOwogICAgIGRvdWJsZSBtX2xhc3RBbmltYXRpb25GcmFt
ZVRpbWU7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgLy8gT3ZlcnJpZGUgZm9yIERpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudAorICAgIHZvaWQgZGlzcGxheVJlZnJlc2hGaXJlZChkb3VibGUg
dGltZXN0YW1wKSB7IHNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoY29udmVydFNlY29uZHNUb0RP
TVRpbWVTdGFtcCh0aW1lc3RhbXApKTsgfQorCisgICAgYm9vbCBtX3VzZVRpbWVyOworI2VuZGlm
CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDM0ZmE0MGE4NzU3YzljYTljZTQ0
NzViMjY0YjYzOWNmMWNiODAwZTkuLmJmYmU3MGEzMjI3ZGY5MjU1Yjk1YzY5MzA3NmJlMjFlZmMy
NjUxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTcyLDYgKzE3Miw3IEBAIFBhZ2U6OlBhZ2Uo
UGFnZUNsaWVudHMmIHBhZ2VDbGllbnRzKQogI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJ
KQogICAgICwgbV92aXNpYmlsaXR5U3RhdGUoUGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUpCiAj
ZW5kaWYKKyAgICAsIG1fZGlzcGxheUlEKDApCiB7CiAgICAgaWYgKCFhbGxQYWdlcykgewogICAg
ICAgICBhbGxQYWdlcyA9IG5ldyBIYXNoU2V0PFBhZ2UqPjsKQEAgLTY4MCw2ICs2ODEsMTYgQEAg
dm9pZCBQYWdlOjp3aWxsTW92ZU9mZnNjcmVlbigpCiAgICAgfQogfQogCit2b2lkIFBhZ2U6Ondp
bmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCit7CisgICAg
bV9kaXNwbGF5SUQgPSBkaXNwbGF5SUQ7CisgICAgCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBt
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkp
IHsKKyAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgZnJhbWUtPmRv
Y3VtZW50KCktPndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQpOworICAgIH0KK30KKwog
dm9pZCBQYWdlOjp1c2VyU3R5bGVTaGVldExvY2F0aW9uQ2hhbmdlZCgpCiB7CiAgICAgLy8gRklY
TUU6IEV2ZW50dWFsbHkgd2Ugd2lsbCBtb3ZlIHRvIGEgbW9kZWwgb2YganVzdCBiZWluZyBoYW5k
ZWQgdGhlIHNoZWV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDEzOTBjOTg0ZGI2YTY1Mjg2MjMyMjM5M2Zm
YWQ4MWU1NmJlMjYyNWMuLmU3MGZkYmQwOTlkY2YxYTVkMzUzNWNmNDQ2OWVmYmI3Y2E4MzFmNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiRmluZE9wdGlvbnMu
aCIKICNpbmNsdWRlICJMYXlvdXRUeXBlcy5oIgogI2luY2x1ZGUgIlBhZ2VWaXNpYmlsaXR5U3Rh
dGUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgpAQCAtMjU2LDYgKzI1Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dm9pZCBkaWRNb3ZlT25zY3JlZW4oKTsKICAgICAgICAgdm9pZCB3aWxsTW92ZU9mZnNjcmVlbigp
OwogCisgICAgICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlE
KTsKKyAgICAgICAgCiAgICAgICAgIHZvaWQgdXNlclN0eWxlU2hlZXRMb2NhdGlvbkNoYW5nZWQo
KTsKICAgICAgICAgY29uc3QgU3RyaW5nJiB1c2VyU3R5bGVTaGVldCgpIGNvbnN0OwogCkBAIC0z
MTAsNiArMzEzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldFZpc2li
aWxpdHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRlLCBib29sKTsKICNlbmRpZgogCisgICAgICAg
IFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUlE
OyB9CisgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdEdyb3VwKCk7CiAK
QEAgLTQxNiw2ICs0MjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKFBBR0Vf
VklTSUJJTElUWV9BUEkpCiAgICAgICAgIFBhZ2VWaXNpYmlsaXR5U3RhdGUgbV92aXNpYmlsaXR5
U3RhdGU7CiAjZW5kaWYKKyAgICAgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNwbGF5SUQ7CiAg
ICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU2NyZWVuLmgKaW5kZXggNzY0ZmUwMmRlYmU2OTQ4ZWQwZjJkNjlkN2E4MzdiNWNiN2Ix
ZjhlNy4uODRmN2NjNjExODkxOWVkMDc2ZjNiNGI1YmNhZGIyNjJlMDE2ODVkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCkBAIC0zMSw2ICszMSw4IEBACiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPFF1YXJ0
ekNvcmUvUXVhcnR6Q29yZS5oPgorCiAjaWZkZWYgX19PQkpDX18KICAgICBAY2xhc3MgTlNTY3Jl
ZW47CiAgICAgQGNsYXNzIE5TV2luZG93OwpAQCAtMzgsNiArNDAsOSBAQAogICAgIGNsYXNzIE5T
U2NyZWVuOwogICAgIGNsYXNzIE5TV2luZG93OwogI2VuZGlmCit0eXBlZGVmIENHRGlyZWN0RGlz
cGxheUlEIFBsYXRmb3JtRGlzcGxheUlEOworI2Vsc2UKK3R5cGVkZWYgdWludDY0X3QgUGxhdGZv
cm1EaXNwbGF5SUQ7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTE4NmJkZDdiYjgwM2JjMTkwOWI4Zjk3OWUzMDQwMWYxNzc2ZDZh
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKQEAgLTAsMCArMSwxNTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKworI2luY2x1ZGUg
IkRpc3BsYXlSZWZyZXNoTW9uaXRvci5oIgorCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50OjpE
aXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQoKQorICAgIDogbV9zY2hlZHVsZWQoZmFsc2UpCisg
ICAgLCBtX2Rpc3BsYXlJRElzU2V0KGZhbHNlKQoreworfQorCitEaXNwbGF5UmVmcmVzaE1vbml0
b3JDbGllbnQ6On5EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQoKQoreworICAgIERpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS0+dW5yZWdpc3RlckNsaWVudCh0
aGlzKTsKK30KKwordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQ6OmZpcmVEaXNwbGF5
UmVmcmVzaElmTmVlZGVkKGRvdWJsZSB0aW1lc3RhbXApCit7CisgICAgaWYgKG1fc2NoZWR1bGVk
KSB7CisgICAgICAgIG1fc2NoZWR1bGVkID0gZmFsc2U7CisgICAgICAgIGRpc3BsYXlSZWZyZXNo
RmlyZWQodGltZXN0YW1wKTsKKyAgICB9Cit9CisKK0Rpc3BsYXlSZWZyZXNoTW9uaXRvcjo6RGlz
cGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKKyAgICA6IG1f
dGltZXN0YW1wKDApCisgICAgLCBtX2FjdGl2ZSh0cnVlKQorICAgICwgbV9zY2hlZHVsZWQoZmFs
c2UpCisgICAgLCBtX2Rpc3BsYXlJRChkaXNwbGF5SUQpCisjaWYgUExBVEZPUk0oTUFDKQorICAg
ICwgbV9kaXNwbGF5TGluaygwKQorI2VuZGlmCit7Cit9CisKK3ZvaWQgRGlzcGxheVJlZnJlc2hN
b25pdG9yOjpyZWZyZXNoRGlzcGxheU9uTWFpblRocmVhZCh2b2lkKiBkYXRhKQoreworICAgIERp
c3BsYXlSZWZyZXNoTW9uaXRvciogbW9uaXRvciA9IHN0YXRpY19jYXN0PERpc3BsYXlSZWZyZXNo
TW9uaXRvcio+KGRhdGEpOworCisgICAgZG91YmxlIHRpbWVzdGFtcDsKKyAgICB7CisgICAgICAg
IE11dGV4TG9ja2VyIGxvY2sobW9uaXRvci0+bV9tdXRleCk7CisgICAgICAgIG1vbml0b3ItPm1f
c2NoZWR1bGVkID0gZmFsc2U7CisgICAgICAgIHRpbWVzdGFtcCA9IG1vbml0b3ItPm1fdGltZXN0
YW1wOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbW9uaXRvci0+bV9jbGll
bnRzLnNpemUoKTsgKytpKQorICAgICAgICBtb25pdG9yLT5tX2NsaWVudHNbaV0tPmZpcmVEaXNw
bGF5UmVmcmVzaElmTmVlZGVkKHRpbWVzdGFtcCk7Cit9CisgCitEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYW5hZ2VyKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkK
K3sKKyAgICBzdGF0aWMgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlciogc3RhdGljTWFuYWdl
ciA9IG5ldyBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOworICAgIHJldHVybiBzdGF0aWNN
YW5hZ2VyOworfQorCitzaXplX3QgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6ZmluZE1v
bml0b3IoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKSBjb25zdAoreworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9tb25pdG9ycy5zaXplKCk7ICsraSkKKyAgICAgICAgaWYgKG1fbW9u
aXRvcnNbaV0tPmRpc3BsYXlJRCgpID09IGRpc3BsYXlJRCkKKyAgICAgICAgICAgIHJldHVybiBp
OworICAgICAgICAgICAgCisgICAgcmV0dXJuIG5vdEZvdW5kOworfQorCit2b2lkIERpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hbmFnZXI6OnJlZ2lzdGVyQ2xpZW50KERpc3BsYXlSZWZyZXNoTW9uaXRv
ckNsaWVudCogY2xpZW50KQoreworICAgIGlmICghY2xpZW50LT5tX2Rpc3BsYXlJRElzU2V0KQor
ICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIHNpemVfdCBpID0gZmluZE1vbml0b3IoY2xp
ZW50LT5tX2Rpc3BsYXlJRCk7CisgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiBtb25pdG9yOwor
ICAgIAorICAgIGlmIChpID09IG5vdEZvdW5kKSB7CisgICAgICAgIG1vbml0b3IgPSBuZXcgRGlz
cGxheVJlZnJlc2hNb25pdG9yKGNsaWVudC0+bV9kaXNwbGF5SUQpOworICAgICAgICBtX21vbml0
b3JzLmFwcGVuZChtb25pdG9yKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbW9uaXRvciA9IG1fbW9u
aXRvcnNbaV07CisgICAgICAgIAorICAgIG1vbml0b3ItPmFkZENsaWVudChjbGllbnQpOworfQor
Cit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnVucmVnaXN0ZXJDbGllbnQoRGlz
cGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKCFjbGllbnQtPm1f
ZGlzcGxheUlESXNTZXQpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgc2l6ZV90IGkg
PSBmaW5kTW9uaXRvcihjbGllbnQtPm1fZGlzcGxheUlEKTsKKyAgICBpZiAoaSA9PSBub3RGb3Vu
ZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvciogbW9u
aXRvciA9IG1fbW9uaXRvcnNbaV07CisgICAgaWYgKG1vbml0b3ItPnJlbW92ZUNsaWVudChjbGll
bnQpKSB7CisgICAgICAgIGlmICghbW9uaXRvci0+aGFzQ2xpZW50cygpKSB7CisgICAgICAgICAg
ICBtX21vbml0b3JzLnJlbW92ZShpKTsKKyAgICAgICAgICAgIGRlbGV0ZSBtb25pdG9yOworICAg
ICAgICB9CisgICAgfQorfQorCitib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNj
aGVkdWxlQW5pbWF0aW9uKERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCogY2xpZW50KQorewor
ICAgIGlmICghY2xpZW50LT5tX2Rpc3BsYXlJRElzU2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIAorICAgIHNpemVfdCBpID0gZmluZE1vbml0b3IoY2xpZW50LT5tX2Rpc3BsYXlJ
RCk7CisgICAgQVNTRVJUKGkgIT0gbm90Rm91bmQpOworCisgICAgY2xpZW50LT5zY2hlZHVsZUFu
aW1hdGlvbigpOworICAgIHJldHVybiBtX21vbml0b3JzW2ldLT5zY2hlZHVsZUFuaW1hdGlvbigp
OworfQorCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OndpbmRvd1NjcmVlbkRp
ZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIERpc3BsYXlSZWZyZXNoTW9uaXRv
ckNsaWVudCogY2xpZW50KQoreworICAgIGlmIChjbGllbnQtPm1fZGlzcGxheUlESXNTZXQgJiYg
Y2xpZW50LT5tX2Rpc3BsYXlJRCA9PSBkaXNwbGF5SUQpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICB1bnJlZ2lzdGVyQ2xpZW50KGNsaWVudCk7CisgICAgY2xpZW50LT5tX2Rpc3BsYXlJRCA9
IGRpc3BsYXlJRDsKKyAgICBjbGllbnQtPm1fZGlzcGxheUlESXNTZXQgPSB0cnVlOyAKKyAgICBy
ZWdpc3RlckNsaWVudChjbGllbnQpOworICAgIGlmIChjbGllbnQtPm1fc2NoZWR1bGVkKQorICAg
ICAgICBzY2hlZHVsZUFuaW1hdGlvbihjbGllbnQpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlk
YjZjNjZmOWQ5OGQ3YjRmNjU5NzdlOWIyOWZiYTdkYjFiNjY0NDQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3Iu
aApAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBEaXNwbGF5UmVmcmVzaE1vbml0b3JfaAorI2Rl
ZmluZSBEaXNwbGF5UmVmcmVzaE1vbml0b3JfaAorCisjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FKQorCisjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKKyNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvcjsKK2NsYXNzIERpc3BsYXlSZWZyZXNo
TW9uaXRvck1hbmFnZXI7CisKKy8vCisvLyBBYnN0cmFjdCB2aXJ0dWFsIGNsaWVudCB3aGljaCBy
ZWNlaXZlcyByZWZyZXNoIGZpcmVkIG1lc3NhZ2VzIG9uIHRoZSBtYWluIHRocmVhZAorLy8KK2Ns
YXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCB7CisgICAgZnJpZW5kIERpc3BsYXlSZWZy
ZXNoTW9uaXRvcjsKKyAgICBmcmllbmQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjsKKyAg
ICAKK3B1YmxpYzoKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQoKTsKKyAgICB2aXJ0
dWFsIH5EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQoKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZv
aWQgZGlzcGxheVJlZnJlc2hGaXJlZChkb3VibGUgdGltZXN0YW1wKSA9IDA7CisKK3ByaXZhdGU6
CisgICAgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpIHsgbV9zY2hlZHVsZWQgPSB0cnVlOyB9CisK
KyAgICB2b2lkIGZpcmVEaXNwbGF5UmVmcmVzaElmTmVlZGVkKGRvdWJsZSB0aW1lc3RhbXApOwor
ICAgIAorICAgIGJvb2wgbV9zY2hlZHVsZWQ7CisgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNw
bGF5SUQ7CisgICAgYm9vbCBtX2Rpc3BsYXlJRElzU2V0OworfTsKKworLy8KKy8vIE1vbml0b3Ig
Zm9yIGRpc3BsYXkgcmVmcmVzaCBtZXNzYWdlcyBmb3IgYSBnaXZlbiBzY3JlZW4KKy8vCisKK2Ns
YXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvciB7CitwdWJsaWM6CisgICAgRGlzcGxheVJlZnJlc2hN
b25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKTsKKyAgICB+RGlzcGxheVJlZnJlc2hNb25pdG9yKCk7
CisgICAgCisgICAgYm9vbCBzY2hlZHVsZUFuaW1hdGlvbigpOworICAgIHZvaWQgd2luZG93U2Ny
ZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKKyAgICAKKyAgICBib29sIGhhc0NsaWVu
dHMoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudHMuc2l6ZSgpOyB9CisgICAgdm9pZCBhZGRDbGll
bnQoRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnRzLmFwcGVu
ZChjbGllbnQpOyB9CisgICAgYm9vbCByZW1vdmVDbGllbnQoRGlzcGxheVJlZnJlc2hNb25pdG9y
Q2xpZW50KiBjbGllbnQpCisgICAgeworICAgICAgICBzaXplX3QgaSA9IG1fY2xpZW50cy5maW5k
KGNsaWVudCk7CisgICAgICAgIGlmIChpID09IG5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBtX2NsaWVudHMucmVtb3ZlKGkpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgCisgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KKworcHJpdmF0ZToKKyAgICBkb3VibGUgbV90aW1lc3Rh
bXA7CisgICAgYm9vbCBtX2FjdGl2ZTsKKyAgICBib29sIG1fc2NoZWR1bGVkOworICAgIFBsYXRm
b3JtRGlzcGxheUlEIG1fZGlzcGxheUlEOworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFn
ZXIqIG1fbWFuYWdlcjsKKyAgICBNdXRleCBtX211dGV4OworICAgIFZlY3RvcjxEaXNwbGF5UmVm
cmVzaE1vbml0b3JDbGllbnQqPiBtX2NsaWVudHM7CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIHN0YXRpYyB2b2lkIHJlZnJlc2hEaXNwbGF5T25NYWluVGhyZWFkKHZvaWQqIGRhdGEpOwor
ICAgIHN0YXRpYyBDVlJldHVybiBkaXNwbGF5TGlua0NhbGxiYWNrKENWRGlzcGxheUxpbmtSZWYs
IGNvbnN0IENWVGltZVN0YW1wKiBub3csIGNvbnN0IENWVGltZVN0YW1wKiBvdXRwdXRUaW1lLCBD
Vk9wdGlvbkZsYWdzLCBDVk9wdGlvbkZsYWdzKiwgdm9pZCogZGF0YSk7CisKKyAgICBDVkRpc3Bs
YXlMaW5rUmVmIG1fZGlzcGxheUxpbms7CisjZW5kaWYKK307CisKKy8vCisvLyBTaW5nbGV0b24g
bWFuYWdlciBmb3IgYWxsIHRoZSBEaXNwbGF5UmVmcmVzaE1vbml0b3JzLiBUaGlzIGlzIHRoZSBp
bnRlcmZhY2UgdG8gdGhlIAorLy8gb3V0c2lkZSB3b3JsZC4gSXQgZGlzdHJpYnV0ZXMgcmVxdWVz
dHMgdG8gdGhlIGFwcHJvcHJpYXRlIG1vbml0b3IuIFdoZW4gdGhlIGRpc3BsYXkKKy8vIHJlZnJl
c2ggZXZlbnQgZmlyZXMsIHRoZSBwYXNzZWQgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50IGlz
IGNhbGxlZCBkaXJlY3RseSBvbgorLy8gdGhlIG1haW4gdGhyZWFkLgorLy8KK2NsYXNzIERpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hbmFnZXIgeworcHVibGljOgorICAgIHN0YXRpYyBEaXNwbGF5UmVm
cmVzaE1vbml0b3JNYW5hZ2VyKiBzaGFyZWRNYW5hZ2VyKCk7CisgICAgCisgICAgdm9pZCByZWdp
c3RlckNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqKTsKKyAgICB2b2lkIHVucmVn
aXN0ZXJDbGllbnQoRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50Kik7CisKKyAgICBib29sIHNj
aGVkdWxlQW5pbWF0aW9uKERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCopOworICAgIHZvaWQg
d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBEaXNwbGF5UmVmcmVzaE1v
bml0b3JDbGllbnQqKTsKKworcHJpdmF0ZToKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5h
Z2VyKCkgeyB9CisKKyAgICBzaXplX3QgZmluZE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpIGNv
bnN0OworICAgIAorICAgIFZlY3RvcjxEaXNwbGF5UmVmcmVzaE1vbml0b3IqPiBtX21vbml0b3Jz
OworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDRk
NWMyM2E0NmRjODE3MjU4YzE1NDZiZjRlN2Q5YTAyYjI3NmRhYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0
b3JNYWMuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKworI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNo
TW9uaXRvci5oIgorCisjaW5jbHVkZSA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitDVlJldHVybiBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3Bs
YXlMaW5rQ2FsbGJhY2soQ1ZEaXNwbGF5TGlua1JlZiwgY29uc3QgQ1ZUaW1lU3RhbXAqIG5vdywg
Y29uc3QgQ1ZUaW1lU3RhbXAqIG91dHB1dFRpbWUsIENWT3B0aW9uRmxhZ3MsIENWT3B0aW9uRmxh
Z3MqLCB2b2lkKiBkYXRhKQoreworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvciogbW9uaXRvciA9
IHN0YXRpY19jYXN0PERpc3BsYXlSZWZyZXNoTW9uaXRvcio+KGRhdGEpOworICAgIAorICAgIE11
dGV4TG9ja2VyIGxvY2sobW9uaXRvci0+bV9tdXRleCk7CisgICAgaWYgKCFtb25pdG9yLT5tX3Nj
aGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIGtDVlJldHVyblN1Y2Nlc3M7CisKKyAgICBkb3VibGUg
bm93U2Vjb25kcyA9IHN0YXRpY19jYXN0PGRvdWJsZT4obm93LT52aWRlb1RpbWUpIC8gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihub3ctPnZpZGVvVGltZVNjYWxlKTsKKyAgICBkb3VibGUgb3V0cHV0VGlt
ZVNlY29uZHMgPSBzdGF0aWNfY2FzdDxkb3VibGU+KG91dHB1dFRpbWUtPnZpZGVvVGltZSkgLyBz
dGF0aWNfY2FzdDxkb3VibGU+KG91dHB1dFRpbWUtPnZpZGVvVGltZVNjYWxlKTsKKyAgICBkb3Vi
bGUgd2ViS2l0Tm93ID0gY3VycmVudFRpbWUoKTsKKyAgICBtb25pdG9yLT5tX3RpbWVzdGFtcCA9
IHdlYktpdE5vdyAtIG5vd1NlY29uZHMgKyBvdXRwdXRUaW1lU2Vjb25kczsKKyAgICAKKyAgICBj
YWxsT25NYWluVGhyZWFkKERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVmcmVzaERpc3BsYXlPbk1h
aW5UaHJlYWQsIG1vbml0b3IpOworICAgIHJldHVybiBrQ1ZSZXR1cm5TdWNjZXNzOworfQorIAor
RGlzcGxheVJlZnJlc2hNb25pdG9yOjp+RGlzcGxheVJlZnJlc2hNb25pdG9yKCkKK3sKKyAgICBj
YW5jZWxDYWxsT25NYWluVGhyZWFkKERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVmcmVzaERpc3Bs
YXlPbk1haW5UaHJlYWQsIHRoaXMpOworICAgIAorICAgIGlmIChtX2Rpc3BsYXlMaW5rKSB7Cisg
ICAgICAgIENWRGlzcGxheUxpbmtTdG9wKG1fZGlzcGxheUxpbmspOworICAgICAgICBDVkRpc3Bs
YXlMaW5rUmVsZWFzZShtX2Rpc3BsYXlMaW5rKTsKKyAgICAgICAgbV9kaXNwbGF5TGluayA9IDA7
CisgICAgfQorfQorCitib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6c2NoZWR1bGVBbmltYXRp
b24oKQoreworICAgIGlmICghbV9hY3RpdmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgaWYgKCFtX2Rpc3BsYXlMaW5rKSB7CisgICAgICAgIG1fYWN0aXZlID0gZmFsc2U7
CisgICAgICAgIENWUmV0dXJuIGVycm9yID0gQ1ZEaXNwbGF5TGlua0NyZWF0ZVdpdGhDR0Rpc3Bs
YXkobV9kaXNwbGF5SUQsICZtX2Rpc3BsYXlMaW5rKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGVycm9yID0gQ1ZEaXNwbGF5TGlua1Nl
dE91dHB1dENhbGxiYWNrKG1fZGlzcGxheUxpbmssIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlz
cGxheUxpbmtDYWxsYmFjaywgdGhpcyk7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICBlcnJvciA9IENWRGlzcGxheUxpbmtTdGFydChtX2Rp
c3BsYXlMaW5rKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIG1fYWN0aXZlID0gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgTXV0ZXhMb2Nr
ZXIgbG9jayhtX211dGV4KTsKKyAgICBtX3NjaGVkdWxlZCA9IHRydWU7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwppbmRleCAxZTBjNzg1ODllOTllNDJhOTg0ZjBiNjBhNDIyMWE0ODAyNGE4
ODcxLi42NTBlOGUwMDA4YzczNGIyMzdkYzhjNDIzMDdjYTNhNzI2ZTI4OTczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMTAtMTIgIENocmlzIE1hcnJpbiAgPGNtYXJy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFN5bmMgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNhbGxi
YWNrIHRvIENWRGlzcGxheUxpbmsgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02ODkxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCB3aW5kb3dEaWRDaGFuZ2VTY3JlZW4gZnVuY3Rpb24gd2hp
Y2ggbGlzdGVucyBmb3IgdGhlIHdpbmRvdyBjaGFuZ2luZworICAgICAgICBzY3JlZW5zIGFuZCBw
YXNzZXMgdGhlIG5ldyBkaXNwbGF5SUQgYWxvbmcgdG8gV2ViQ29yZTo6UGFnZS4gSXQgYWxzbyBz
ZW5kcworICAgICAgICBvbmUgb24gd2luZG93V2lsbE9yZGVyT25TY3JlZW4sIHNvIHRoZSBQYWdl
IGhhcyBhIGZyZXNoIGRpc3BsYXlJRCBhZnRlciBpdCdzCisgICAgICAgIGNyZWF0ZWQuCisKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgYWRkV2luZG93
T2JzZXJ2ZXJzRm9yV2luZG93Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IHJlbW92ZVdpbmRvd09i
c2VydmVyc10pOgorICAgICAgICAoLVtXZWJWaWV3IF93aW5kb3dEaWRDaGFuZ2VTY3JlZW46XSk6
CisgICAgICAgICgtW1dlYlZpZXcgX3dpbmRvd1dpbGxPcmRlck9uU2NyZWVuOl0pOgorCiAyMDEx
LTEwLTA2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
V2hlbiBidWlsZGluZyB3aXRoIGNsYW5nLCBlbmFibGUgLVdnbG9iYWwtY29uc3RydWN0b3JzIGFu
ZCAtV2V4aXQtdGltZS1kZXN0cnVjdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CmluZGV4IDk5NzQ2MmM5MDI1ZjY0MTg3NmFjMmY2ZDdlMzBiZGIxZjhmYzMxOWMuLmVjMTMwODVl
NzdkZDBiNTgyZmM5YmIwMGM0NmRkNmMxNTBhY2ZlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTMyMTgsNiArMzIxOCw4IEBAIC0gKHZvaWQpYWRkV2luZG93T2JzZXJ2
ZXJzRm9yV2luZG93OihOU1dpbmRvdyAqKXdpbmRvdwogICAgICAgICAgICAgbmFtZTpXS1dpbmRv
d1dpbGxPcmRlck9mZlNjcmVlbk5vdGlmaWNhdGlvbigpIG9iamVjdDp3aW5kb3ddOwogICAgICAg
ICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYg
c2VsZWN0b3I6QHNlbGVjdG9yKF93aW5kb3dEaWRDaGFuZ2VSZXNvbHV0aW9uOikKICAgICAgICAg
ICAgIG5hbWU6d2luZG93RGlkQ2hhbmdlUmVzb2x1dGlvbk5vdGlmaWNhdGlvbiBvYmplY3Q6d2lu
ZG93XTsKKyAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRP
YnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihfd2luZG93RGlkQ2hhbmdlU2NyZWVuOikK
KyAgICAgICAgICAgIG5hbWU6TlNXaW5kb3dEaWRDaGFuZ2VTY3JlZW5Ob3RpZmljYXRpb24gb2Jq
ZWN0OndpbmRvd107CiAgICAgfQogfQogCkBAIC0zMjM1LDYgKzMyMzcsOCBAQCAtICh2b2lkKXJl
bW92ZVdpbmRvd09ic2VydmVycwogICAgICAgICAgICAgbmFtZTpXS1dpbmRvd1dpbGxPcmRlck9m
ZlNjcmVlbk5vdGlmaWNhdGlvbigpIG9iamVjdDp3aW5kb3ddOwogICAgICAgICBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYKICAgICAgICAg
ICAgIG5hbWU6d2luZG93RGlkQ2hhbmdlUmVzb2x1dGlvbk5vdGlmaWNhdGlvbiBvYmplY3Q6d2lu
ZG93XTsKKyAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1v
dmVPYnNlcnZlcjpzZWxmCisgICAgICAgICAgICBuYW1lOk5TV2luZG93RGlkQ2hhbmdlU2NyZWVu
Tm90aWZpY2F0aW9uIG9iamVjdDp3aW5kb3ddOwogICAgIH0KIH0KIApAQCAtMzI4Nyw2ICszMjkx
LDExIEBAIC0gKHZvaWQpdmlld0RpZE1vdmVUb1dpbmRvdwogICAgIFtzZWxmIF91cGRhdGVBY3Rp
dmVTdGF0ZV07CiB9CiAKKy0gKHZvaWQpX3dpbmRvd0RpZENoYW5nZVNjcmVlbjooTlNOb3RpZmlj
YXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICBfcHJpdmF0ZS0+cGFnZS0+d2luZG93U2NyZWVu
RGlkQ2hhbmdlKChQbGF0Zm9ybURpc3BsYXlJRClbW1tbW3NlbGYgd2luZG93XSBzY3JlZW5dIGRl
dmljZURlc2NyaXB0aW9uXSBvYmplY3RGb3JLZXk6QCJOU1NjcmVlbk51bWJlciJdIGludFZhbHVl
XSk7Cit9CisKIC0gKHZvaWQpX3dpbmRvd0RpZEJlY29tZUtleTooTlNOb3RpZmljYXRpb24gKilu
b3RpZmljYXRpb24KIHsKICAgICBOU1dpbmRvdyAqa2V5V2luZG93ID0gW25vdGlmaWNhdGlvbiBv
YmplY3RdOwpAQCAtMzMxMCw2ICszMzE5LDkgQEAgLSAodm9pZClfd2luZG93V2lsbE9yZGVyT25T
Y3JlZW46KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCiAKICAgICBpZiAoIVtzZWxmIHNo
b3VsZFVwZGF0ZVdoaWxlT2Zmc2NyZWVuXSkKICAgICAgICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5
OllFU107CisKKyAgICAvLyBTZW5kIGEgY2hhbmdlIHNjcmVlbiB0byBtYWtlIHN1cmUgdGhlIGlu
aXRpYWwgZGlzcGxheUlEIGlzIHNldAorICAgIFtzZWxmIF93aW5kb3dEaWRDaGFuZ2VTY3JlZW46
bm90aWZpY2F0aW9uXTsKIH0KIAogLSAodm9pZClfd2luZG93V2lsbE9yZGVyT2ZmU2NyZWVuOihO
U05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDM5MDA0N2IyMmM2YWFj
NWZkNjNlOGY1NzRhOTU1ZTQ3MmY3NGMwOGEuLmI2YmRhMjU4MWRmYWY0Y2M3Y2U3YzNmZmVjODYz
NzNmZTU1NmI2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMS0xMC0xMiAgQ2hy
aXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3luYyByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUgY2FsbGJhY2sgdG8gQ1ZEaXNwbGF5TGluayBvbiBNYWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4OTExCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHdpbmRvd0RpZENoYW5nZVNj
cmVlbiBmdW5jdGlvbiB3aGljaCBsaXN0ZW5zIGZvciB0aGUgd2luZG93IGNoYW5naW5nCisgICAg
ICAgIHNjcmVlbnMgYW5kIHBhc3NlcyB0aGUgbmV3IGRpc3BsYXlJRCBhbG9uZyB0byBXZWJDb3Jl
OjpQYWdlLiBJdCBhbHNvIHNlbmRzCisgICAgICAgIG9uZSBvbiB3aW5kb3dEaWRCZWNvbWVLZXks
IHNvIHRoZSBQYWdlIGhhcyBhIGZyZXNoIGRpc3BsYXlJRCBhZnRlciBpdCdzCisgICAgICAgIGNy
ZWF0ZWQuIEV2ZW50IGlzIGdlbmVyYXRlZCBpbiB0aGUgVUlQcm9jZXNzIGFuZCB0aGVuIHNlbnQg
b3ZlciB0byB0aGUKKyAgICAgICAgV2ViUHJvY2Vzcywgd2hpY2ggYWN0dWFsbHkgc2VuZHMgaXQg
dG8gV2ViQ29yZTo6UGFnZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bToKKyAgICAgICAgKC1bV0tWaWV3IGFkZFdpbmRvd09ic2VydmVyc0ZvcldpbmRvdzpdKToKKyAg
ICAgICAgKC1bV0tWaWV3IHJlbW92ZVdpbmRvd09ic2VydmVyc10pOgorICAgICAgICAoLVtXS1Zp
ZXcgX3dpbmRvd0RpZENoYW5nZVNjcmVlbjpdKToKKyAgICAgICAgKC1bV0tWaWV3IF93aW5kb3dE
aWRCZWNvbWVLZXk6XSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp3aW5kb3dTY3Jl
ZW5EaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTEt
MTAtMDcgIFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtX
SzJdIEFwcGxpY2F0aW9uQ2FjaGUgTGF5b3V0VGVzdHMgZmFpbGVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KaW5kZXggMGZiYjA3NmY0OTIxMzM3Y2NjYzFlYjJk
OWQwOGFjMmIzYWM3YmNhNS4uYWMxMGRiYWY1NGFmYWE0ODdjMzBlNDc2NWFlZDdkMWViM2NmM2E3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMTc5
Nyw3ICsxNzk3LDggQEAgLSAodm9pZClhZGRXaW5kb3dPYnNlcnZlcnNGb3JXaW5kb3c6KE5TV2lu
ZG93ICopd2luZG93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5hbWU6QCJfTlNXaW5kb3dEaWRCZWNvbWVWaXNpYmxlIiBvYmplY3Q6d2luZG93
XTsKICAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNl
cnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihfd2luZG93RGlkQ2hhbmdlUmVzb2x1dGlvbjop
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5h
bWU6d2luZG93RGlkQ2hhbmdlUmVzb2x1dGlvbk5vdGlmaWNhdGlvbiBvYmplY3Q6d2luZG93XTsK
LQorICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2Vy
dmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF93aW5kb3dEaWRDaGFuZ2VTY3JlZW46KQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOk5T
V2luZG93RGlkQ2hhbmdlU2NyZWVuTm90aWZpY2F0aW9uIG9iamVjdDp3aW5kb3ddOwogICAgIH0K
IH0KIApAQCAtMTgxNiw3ICsxODE3LDcgQEAgLSAodm9pZClyZW1vdmVXaW5kb3dPYnNlcnZlcnMK
ICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVy
OnNlbGYgbmFtZTpAIk5TV2luZG93RGlkT3JkZXJPZmZTY3JlZW5Ob3RpZmljYXRpb24iIG9iamVj
dDp3aW5kb3ddOwogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVt
b3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOkAiX05TV2luZG93RGlkQmVjb21lVmlzaWJsZSIgb2JqZWN0
OndpbmRvd107CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1v
dmVPYnNlcnZlcjpzZWxmIG5hbWU6d2luZG93RGlkQ2hhbmdlUmVzb2x1dGlvbk5vdGlmaWNhdGlv
biBvYmplY3Q6d2luZG93XTsKLQorICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOk5TV2luZG93RGlkQ2hhbmdlU2NyZWVuTm90
aWZpY2F0aW9uIG9iamVjdDp3aW5kb3ddOwogfQogCiAtICh2b2lkKXZpZXdXaWxsTW92ZVRvV2lu
ZG93OihOU1dpbmRvdyAqKXdpbmRvdwpAQCAtMTg2OCw2ICsxODY5LDExIEBAIC0gKHZvaWQpdmll
d0RpZE1vdmVUb1dpbmRvdwogICAgIF9kYXRhLT5fcGFnZS0+c2V0SW50cmluc2ljRGV2aWNlU2Nh
bGVGYWN0b3IoW3NlbGYgX2ludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yXSk7CiB9CiAKKy0gKHZv
aWQpX3dpbmRvd0RpZENoYW5nZVNjcmVlbjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24K
K3sKKyAgICBfZGF0YS0+X3BhZ2UtPndpbmRvd1NjcmVlbkRpZENoYW5nZSgoUGxhdGZvcm1EaXNw
bGF5SUQpW1tbW1tzZWxmIHdpbmRvd10gc2NyZWVuXSBkZXZpY2VEZXNjcmlwdGlvbl0gb2JqZWN0
Rm9yS2V5OkAiTlNTY3JlZW5OdW1iZXIiXSBpbnRWYWx1ZV0pOworfQorCiAtICh2b2lkKV93aW5k
b3dEaWRCZWNvbWVLZXk6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCiB7CiAgICAgTlNX
aW5kb3cgKmtleVdpbmRvdyA9IFtub3RpZmljYXRpb24gb2JqZWN0XTsKQEAgLTE4NzUsNiArMTg4
MSw5IEBAIC0gKHZvaWQpX3dpbmRvd0RpZEJlY29tZUtleTooTlNOb3RpZmljYXRpb24gKilub3Rp
ZmljYXRpb24KICAgICAgICAgW3NlbGYgX3VwZGF0ZVNlY3VyZUlucHV0U3RhdGVdOwogICAgICAg
ICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdXaW5k
b3dJc0FjdGl2ZSk7CiAgICAgfQorCisgICAgLy8gU2VuZCBhIGNoYW5nZSBzY3JlZW4gdG8gbWFr
ZSBzdXJlIHRoZSBpbml0aWFsIGRpc3BsYXlJRCBpcyBzZXQKKyAgICBbc2VsZiBfd2luZG93RGlk
Q2hhbmdlU2NyZWVuOm5vdGlmaWNhdGlvbl07CiB9CiAKIC0gKHZvaWQpX3dpbmRvd0RpZFJlc2ln
bktleTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMDkzN2JmY2FlM2UyNWYxMDNjZWVhYzE1MTlhNTA0
YjYyZjk1NjhmOC4uZDVlNjk3OTVjMTY5MjRhZjI5MjQyMzYzMjZhMzA4ZDBiYTI0YmE1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTExNTQsNiArMTE1
NCwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3Io
ZmxvYXQgc2NhbGVGYWN0b3IpCiAgICAgbV9kcmF3aW5nQXJlYS0+ZGV2aWNlU2NhbGVGYWN0b3JE
aWRDaGFuZ2UoKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd1NjcmVlbkRpZENoYW5n
ZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBJUEMgaGFzIHRyb3VibGUgc2VuZGluZyBw
YXJhbXMgaXQgZG9lc24ndCB1bmRlcnN0YW5kLCBzbyBjYXN0IGludG8gYSBjb21tb24gdHlwZQor
ICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6V2luZG93U2NyZWVuRGlkQ2hh
bmdlKGRpc3BsYXlJRCksIG1fcGFnZUlEKTsKK30KKwogZmxvYXQgV2ViUGFnZVByb3h5OjpkZXZp
Y2VTY2FsZUZhY3RvcigpIGNvbnN0CiB7CiAgICAgaWYgKG1fY3VzdG9tRGV2aWNlU2NhbGVGYWN0
b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMWIxOGFiOGIy
ZDgyMzkwY2E1MjAxYmUzZDIyMzg3NzhiMGRjYmZjMy4uMGI0ZWJkN2UyNjU5ZmVjN2VlNDVhODg4
Y2ZhNWNiMjRiZmE1MTE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIldlYlVJQ2xpZW50LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tpbmcuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMzkxLDcgKzM5Miw4IEBAIHB1YmxpYzoKICAgICBmbG9h
dCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0OwogICAgIHZvaWQgc2V0SW50cmluc2ljRGV2aWNl
U2NhbGVGYWN0b3IoZmxvYXQpOwogICAgIHZvaWQgc2V0Q3VzdG9tRGV2aWNlU2NhbGVGYWN0b3Io
ZmxvYXQpOwotCisgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5
SUQpOworICAgIAogICAgIHZvaWQgc2V0VXNlRml4ZWRMYXlvdXQoYm9vbCk7CiAgICAgdm9pZCBz
ZXRGaXhlZExheW91dFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIGJvb2wgdXNl
Rml4ZWRMYXlvdXQoKSBjb25zdCB7IHJldHVybiBtX3VzZUZpeGVkTGF5b3V0OyB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGE4OTQxZWFm
ZmY4Yzg4ZGMzMmZhMjYwYTkxNmZmMTQxMmI1MThiZjQuLmRhNDU1N2I5NmQ1YWViMTRjNWFiZGUz
MjZhYTNjMDQ0ZjgzZDhkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTgxNSw2ICs4MTUsMTEgQEAgdm9pZCBXZWJQYWdlOjpzZXRQYWdl
QW5kVGV4dFpvb21GYWN0b3JzKGRvdWJsZSBwYWdlWm9vbUZhY3RvciwgZG91YmxlIHRleHRab29t
RmEKICAgICByZXR1cm4gZnJhbWUtPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHBhZ2Vab29tRmFjdG9yKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRleHRab29tRmFj
dG9yKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKHVpbnQ2NF90
IGRpc3BsYXlJRCkKK3sKKyAgICBtX3BhZ2UtPndpbmRvd1NjcmVlbkRpZENoYW5nZShzdGF0aWNf
Y2FzdDxQbGF0Zm9ybURpc3BsYXlJRD4oZGlzcGxheUlEKSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6
c2NhbGVQYWdlKGRvdWJsZSBzY2FsZSwgY29uc3QgSW50UG9pbnQmIG9yaWdpbikKIHsKICAgICBt
X3BhZ2UtPnNldFBhZ2VTY2FsZUZhY3RvcihzY2FsZSwgb3JpZ2luKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGIzZDg3YWNhNzY0ZWE1OTA4OTg1
ZjdkYWE5ZDA5YWM2ZWRkN2U3NmIuLjM5OTA3Zjc5MGJkZmUyZmMzNWZmZjNkNDUzZDliMGU3ZGEz
NWVjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYkNvcmVLZXlib2FyZFVJTW9kZS5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0yNTIsNiArMjUzLDcgQEAgcHVibGljOgog
ICAgIGRvdWJsZSBwYWdlWm9vbUZhY3RvcigpIGNvbnN0OwogICAgIHZvaWQgc2V0UGFnZVpvb21G
YWN0b3IoZG91YmxlKTsKICAgICB2b2lkIHNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZG91Ymxl
IHBhZ2Vab29tRmFjdG9yLCBkb3VibGUgdGV4dFpvb21GYWN0b3IpOworICAgIHZvaWQgd2luZG93
U2NyZWVuRGlkQ2hhbmdlKHVpbnQ2NF90KTsKIAogICAgIHZvaWQgc2NhbGVQYWdlKGRvdWJsZSBz
Y2FsZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG9yaWdpbik7CiAgICAgZG91YmxlIHBhZ2VT
Y2FsZUZhY3RvcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAxYjc3MWQ0ZDIzYWEyOGFkYTlhYjk2
NjZhN2Y5NWVkODQxYzFiMGQ2Li4wMWY0MGEwMzQxZGU2NTlmMzBhODMxNDhkZjA0YTEzOWI0YjVl
MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgpAQCAtMTEzLDYgKzExMyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2Ug
ewogICAgIFNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZG91YmxlIHBhZ2Vab29tRmFjdG9yLCBk
b3VibGUgdGV4dFpvb21GYWN0b3IpCiAgICAgU2V0UGFnZVpvb21GYWN0b3IoZG91YmxlIHpvb21G
YWN0b3IpCiAgICAgU2V0VGV4dFpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCisgICAgV2lu
ZG93U2NyZWVuRGlkQ2hhbmdlKHVpbnQ2NF90IGRpc3BsYXlJRCkKIAogICAgIFNjYWxlUGFnZShk
b3VibGUgc2NhbGUsIFdlYkNvcmU6OkludFBvaW50IG9yaWdpbikKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110765</attachid>
            <date>2011-10-12 16:13:06 -0700</date>
            <delta_ts>2011-10-12 17:51:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68911-20111012161305.patch</filename>
            <type>text/plain</type>
            <size>49068</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTczMTYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYzk5OTJjNzVhNDdkZTZhZTY4NzQ0
Y2E3YzcwZmNhZmI2OWYyMzdjLi4zNjBmZjVlYmU4NjVhOTQ2ZmNkYWQzNjNjNTU5NjI3OGE3NmE5
M2FmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTAtMTIgIENocmlzIE1hcnJpbiAgPGNt
YXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFN5bmMgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNh
bGxiYWNrIHRvIENWRGlzcGxheUxpbmsgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODkxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3QgdG8gbWFrZSBzdXJlIHJlcXVlc3RBbmltYXRpb25G
cmFtZSBldmVudHMgZmlyZSBpbnNpZGUgaWZyYW1lCisKKyAgICAgICAgKiBmYXN0L2FuaW1hdGlv
bi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJhbWUuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9hbmltYXRpb24vc2NyaXB0LXRlc3RzL3JlcXVlc3Qt
YW5pbWF0aW9uLWZyYW1lLXN1YmZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDExLTEwLTEyICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgogCiAgICAgICAgIFNraXAgYWNjZXNz
aWJpbGl0eS9tZW51LWxpc3Qtc2VuZHMtY2hhbmdlLW5vdGlmaWNhdGlvbi5odG1sIG9uIE1hYy4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9u
LWZyYW1lLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9y
ZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcy
YjQzOGQ0Mzk1ZjQ4ODUwNmEyYzhjNTJhODlmNmRjZmVlYjEwMTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJh
bWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHJlcXVlc3RBbmltYXRpb25G
cmFtZSBpbiBhbiBpZnJhbWUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
Y2FsbGJhY2tJbnZva2VkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlv
bi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
YW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjlhMjMzNmQ3ZWZkOWNkMWVkYjEzZGUwYWI5YzM1NGM3ZGRhZTBkZjQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1p
ZnJhbWUuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxpZnJhbWUgc3JjPSJzY3JpcHQt
dGVzdHMvcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtc3ViZnJhbWUuaHRtbCIgd2lkdGg9IjcwMCIg
aGVpZ2h0PSI1MDAiPjwvaWZyYW1lPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUgaW4gYW4gaWZyYW1lIik7CisKKyAgICAgICAgdmFyIGNhbGxiYWNrSW52b2tl
ZCA9IGZhbHNlOworICAgIAorICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0K
KworICAgICAgICAvLyBDYWxsZWQgZnJvbSBzdWJmcmFtZS4KKyAgICAgICAgZnVuY3Rpb24gZG9E
aXNwbGF5KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7
CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgZnVuY3Rpb24gZG9DaGVja1Jlc3VsdCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY2FsbGJhY2tJbnZva2VkIik7CisgICAg
ICAgIH0KKyAgICAKKyAgICAgICAgZnVuY3Rpb24gZG9UZXN0RG9uZSgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworICAgIDwvc2NyaXB0PgorCisgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vc2NyaXB0LXRlc3Rz
L3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXN1YmZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2FuaW1hdGlvbi9zY3JpcHQtdGVzdHMvcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtc3ViZnJhbWUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43YTZkOWMyMjdkNDRhODdhOGFlYzZmMDdiOWJiNWZiNjQ3NTI3NGMy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vc2NyaXB0LXRl
c3RzL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXN1YmZyYW1lLmh0bWwKQEAgLTAsMCArMSwyOSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c3BhbiBpZD0iZSI+PC9zcGFuPgorPHNwYW4gaWQ9ImYiPjwvc3Bhbj4KKzxzY3JpcHQ+
CisgICAgdmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZSIpOworICAgIHdpbmRvdy53
ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7CisgICAgICAgIHBhcmVudC5j
YWxsYmFja0ludm9rZWQgPSB0cnVlOworICAgIH0sIGUpOworCisgICAgcGFyZW50LmRvRGlzcGxh
eSgpOworICAgIAorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHBhcmVudC5k
b0NoZWNrUmVzdWx0KCk7CisgICAgfSwgMTAwKTsKKworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7CisgICAgICAgIHBhcmVudC5kb1Rlc3REb25lKCk7CisgICAgfSwgMjAwKTsgICAgCis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYmIzOWFiZTQ1NzQwMGM4ODkx
NDdiY2ZiNzE3MTdlNzY5NDcwNGM2Li45YzdlZWYzNDQxZWY3NjFkMjBmNjJiYjcyMDMxMTc2ODdm
ZmJhMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTEtMTAtMTIgIENocmlzIE1h
cnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFN5bmMgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lIGNhbGxiYWNrIHRvIENWRGlzcGxheUxpbmsgb24gTWFjCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODkxMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvYW5pbWF0aW9uL3JlcXVl
c3QtYW5pbWF0aW9uLWZyYW1lLWlmcmFtZS5odG1sCisKKyAgICAgICAgSW1wbGVtZW50IENWRGlz
cGxheUxpbmsgd2hpY2ggY2hlY2tzIHRvIHNlZSBpZiBhbnkgc2NoZWR1bGVBbmltYXRpb24gcmVx
dWVzdHMKKyAgICAgICAgaGF2ZSBjb21lIGluLiBJZiBzbywgcmVtZW1iZXIgdGhlIHRpbWVzdGFt
cCBhbmQgZG8gYSBjYWxsT25NYWluVGhyZWFkIHRvIGZpcmUKKyAgICAgICAgdGhlIGNhbGxiYWNr
cy4gQSBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyIGlzIGEgc2luZ2xldG9uIHdoaWNoIGhh
cyBhIGxpc3QKKyAgICAgICAgb2YgRGlzcGxheVJlZnJlc2hNb25pdG9ycywgb25lIGZvciBlYWNo
IGRpc3BsYXkuIEVhY2ggbW9uaXRvciBoYXMgb25lIG9yIG1vcmUKKyAgICAgICAgRGlzcGxheVJl
ZnJlc2hNb25pdG9yQ2xpZW50cywgd2hpY2ggaXMgYSBhYnN0cmFjdCB2aXJ0dWFsIGNsYXNzIGlt
cGxlbWVudGVkCisgICAgICAgIGJ5IFNjcmlwdEFuaW1hdGlvbkNvbnRyb2xsZXIuIFdoZW4gYW4g
YW5pbWF0aW9uIGlzIHNjaGVkdWxlZCwgdGhlCisgICAgICAgIGRpc3BsYXlSZWZyZXNoRmlyZWQg
bWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY2xpZW50LCB3aGljaCBpbiB0dXJuIGNhbGxzIHRoZQor
ICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgY2FsbGJhY2tzLiAKKworICAgICAgICBEaXNw
bGF5UmVmcmVzaE1vbml0b3IgYW5kIHRoZXJlZm9yZSB0aGUgQ1ZEaXNwbGF5TGluayBpdCBvd25z
IGlzIGRpc2NhcmRlZAorICAgICAgICB3aGVuIGl0IG5vIGxvbmdlciBoYXMgYW55IGNsaWVudHMu
IFRoaXMgbWluaW1pemVzIHRoZSBudW1iZXIgb2YgY29uY3VycmVudAorICAgICAgICBDVkRpc3Bs
YXlMaW5rIHRocmVhZHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFt
ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1NjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRlZEFuaW1hdGlv
bkNvbnRyb2xsZXI6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OndpbmRvd1NjcmVlbkRpZENoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNjaGVkdWxl
QW5pbWF0aW9uKToKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmRpc3BsYXlS
ZWZyZXNoRmlyZWQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OndpbmRvd1NjcmVlbkRpZENo
YW5nZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpk
aXNwbGF5SUQpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQ6OkRpc3BsYXlSZWZy
ZXNoTW9uaXRvckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0
b3JDbGllbnQ6On5EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50OjpmaXJlRGlzcGxheVJlZnJlc2hJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OkRpc3BsYXlSZWZy
ZXNoTW9uaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJl
ZnJlc2hEaXNwbGF5T25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6ZmluZE1vbml0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6cmVnaXN0ZXJDbGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6dW5yZWdpc3RlckNsaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzY2hl
ZHVsZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JN
YW5hZ2VyOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudDo6c2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpoYXNDbGllbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheUlEKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFn
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0
b3JNYWMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRv
cjo6ZGlzcGxheUxpbmtDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVz
aE1vbml0b3I6On5EaXNwbGF5UmVmcmVzaE1vbml0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheVJlZnJlc2hNb25pdG9yOjpzY2hlZHVsZUFuaW1hdGlvbik6CisKIDIwMTEtMTAtMTIgIEx1
a2UgTWFjcGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDbGVh
biB1cCBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uIGltcGxlbWVudGF0aW9uIGFuZCBFVGV4dERl
Y29yYXRpb24gdXNhZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
biBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDIwM2M3YTYyMzJjY2M4OTVk
NDdhMjMyZjAyZmMxNmFmNmVlNGU1NDIuLmU0NzNiYTk1NzIyMWViOTg1YjZhOTE2Y2E0MzcwMzYz
ZTNlNTE2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC03MzIsNiArNzMyLDcgQEAgX19aTjdX
ZWJDb3JlNFBhZ2UyMHJlbW92ZVNjcm9sbGFibGVBcmVhRVBOU18xNFNjcm9sbGFibGVBcmVhRQog
X19aTjdXZWJDb3JlNFBhZ2UyMHNldERldmljZVNjYWxlRmFjdG9yRWYKIF9fWk43V2ViQ29yZTRQ
YWdlMjB1bm1hcmtBbGxUZXh0TWF0Y2hlc0V2CiBfX1pON1dlYkNvcmU0UGFnZTIxbWFya0FsbE1h
dGNoZXNGb3JUZXh0RVJLTjNXVEY2U3RyaW5nRWpiagorX19aTjdXZWJDb3JlNFBhZ2UyMXdpbmRv
d1NjcmVlbkRpZENoYW5nZUVqCiBfX1pON1dlYkNvcmU0UGFnZTIyYWxsVmlzaXRlZFN0YXRlQ2hh
bmdlZEVQTlNfOVBhZ2VHcm91cEUKIF9fWk43V2ViQ29yZTRQYWdlMjNjbGVhclVuZG9SZWRvT3Bl
cmF0aW9uc0V2CiBfX1pON1dlYkNvcmU0UGFnZTI3c2V0SmF2YVNjcmlwdFVSTHNBcmVBbGxvd2Vk
RWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAwYWJmNGY3NTk0ZDc2YzNiY2MzNmVkYWRjZWEwMjE4YTdkZTJkNjNlLi40OTJmOGVm
MTFiMzU5NWMyY2ZhYTUwMDAyOWExYmRjYjMwY2E2OGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTY3LDYgKzExNjcsOCBA
QAogCQk0OUE1QTRGRTEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlBNUE0RjgxM0UyRjAx
RTAwQ0ZEQUUwIC8qIFBlZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJNDlBNUE0RkYxM0UyRjAx
RTAwQ0ZEQUUwIC8qIFBlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OUE1QTRGOTEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5l
Y3Rpb24uaCAqLzsgfTsKIAkJNDlBNUE1MDExM0UyRjAxRTAwQ0ZEQUUwIC8qIFNpZ25hbGluZ0Nh
bGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OUE1QTRGQjEzRTJGMDFFMDBDRkRBRTAgLyogU2lnbmFsaW5nQ2FsbGJhY2suaCAqLzsgfTsKKwkJ
NDlBRjJENjkxNDQzNUQwNTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlBRjJENjgxNDQzNUQw
NTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oICovOyB9OworCQk0OUFGMkQ2QzE0
NDM1RDIxMDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QUYyRDZCMTQ0MzVEMjEwMDE2
QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwICovOyB9OwogCQk0OUJFMzBEMjEz
RDk3NDdCMDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUJFMzBEMTEzRDk3NDdCMDAzODA4
QTkgLyogSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgKi87IH07CiAJCTQ5QkUzMEYzMTNEOTc2
NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkUzMEVGMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1Bl
ZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJNDlCRTMwRjQxM0Q5NzY0NjAwMzgwOEE5IC8qIEpT
UGVlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5QkUzMEYwMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmggKi87
IH07CkBAIC0xMjkwLDYgKzEyOTIsNyBAQAogCQk0OUVFRDE0RTEwNTE5NzFBMDAwOTlGQUIgLyog
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLzsgfTsKIAkJNDlFRUQxNEYxMDUx
OTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTRDMTA1MTk3MUEw
MDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi87IH07CiAJCTQ5
RUVEMTUwMTA1MTk3MUEwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQx
NEQxMDUxOTcxQTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAg
Ki87IH07CisJCTQ5RkM3QTUwMTQ0NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlG
QzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi87IH07
CiAJCTQ5RkZCRjFEMTFDODU1MEUwMDZBNzExOCAvKiBHcmFwaGljc0NvbnRleHQzRE1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjFDMTFD
ODU1MEUwMDZBNzExOCAvKiBHcmFwaGljc0NvbnRleHQzRE1hYy5tbSAqLzsgfTsKIAkJNDlGRkJG
M0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLmggKi87IH07CiAJCTQ5RkZCRjQwMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlGRkJG
M0UxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi87IH07CkBAIC04MzE1LDYgKzgz
MTgsOCBAQAogCQk0OUE1QTRGQTEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rpb24uaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFBlZXJDb25uZWN0aW9uLmlkbDsgcGF0aCA9IHAycC9Q
ZWVyQ29ubmVjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QTVBNEZC
MTNFMkYwMUUwMENGREFFMCAvKiBTaWduYWxpbmdDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBTaWduYWxpbmdDYWxsYmFjay5oOyBwYXRoID0gcDJwL1NpZ25hbGlu
Z0NhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QTVBNEZDMTNFMkYw
MUUwMENGREFFMCAvKiBTaWduYWxpbmdDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1l
ID0gU2lnbmFsaW5nQ2FsbGJhY2suaWRsOyBwYXRoID0gcDJwL1NpZ25hbGluZ0NhbGxiYWNrLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlBRjJENjgxNDQzNUQwNTAwMTZBNzg0
IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDlBRjJENkIxNDQzNUQyMTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUJFMzBEMTEzRDk3
NDdCMDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlCRTMwRUYxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTUGVl
ckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQ
ZWVyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QkUzMEYw
MTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTUGVlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTg0NTcsNiArODQ2Miw3IEBACiAJCTQ5RUVEMTRCMTA1MTk3MTkwMDA5OUZBQiAv
KiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZBQiAv
KiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RUVEMTREMTA1MTk3MUEwMDA5OUZBQiAvKiBKU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlS
ZWZyZXNoTW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
aXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
OUZGQkYxQzExQzg1NTBFMDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0M0RNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHQzRE1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4
IC8qIFdlYkdMTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xM
YXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZGQkYzRTExQzkzRUUzMDA2
QTcxMTggLyogV2ViR0xMYXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYkdMTGF5ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTA0
NSw2ICsxOTA1MSw3IEBACiAJCQkJMzdDMjM2MEYxMDk3RUU3NzAwRUY5RjcyIC8qIENvbXBsZXhU
ZXh0Q29udHJvbGxlci5oICovLAogCQkJCTM3QzIzODFGMTA5OEM4NDIwMEVGOUY3MiAvKiBDb21w
bGV4VGV4dENvbnRyb2xsZXJBVFNVSS5jcHAgKi8sCiAJCQkJMzdDMjM4MjAxMDk4Qzg0MjAwRUY5
RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tICovLAorCQkJCTQ5QUYyRDZC
MTQ0MzVEMjEwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwICovLAogCQkJ
CUIyNzUzNTRCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50TWFjLm1tICovLAogCQkJCUIy
NzUzNTRDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RNYWMubW0gKi8sCiAJCQkJQjI3NTM1
NEQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZU1hYy5tbSAqLywKQEAgLTE5MDk4LDYgKzE5
MTA1LDggQEAKIAkJCQlCMjc1MzUzOTBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3IuaCAqLywKIAkJ
CQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFjZS5oICovLAogCQkJCUE4Q0I0
MTAyMEU4NUI4QTUwMDMyQzRGMCAvKiBEYXNoQXJyYXkuaCAqLywKKwkJCQk0OUZDN0E0RjE0NDRB
RjVGMDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCAqLywKKwkJCQk0OUFGMkQ2
ODE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggKi8sCiAJCQkJNkU2
N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oICovLAogCQkJCUIyNzUzNTNB
MEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmNwcCAqLywKIAkJCQlCMjc1MzUzQjBCMDUz
ODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludC5oICovLApAQCAtMjQ2MTQsNiArMjQ2MjMsNyBAQAog
CQkJCTMxMDYwMzc5MTQzMjgxQ0QwMEFCRjRCQSAvKiBET01XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwNjAzN0IxNDMyODFDRDAwQUJGNEJBIC8qIERPTVdlYktp
dENTU0ZpbHRlclZhbHVlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QUNCMjEyMTQz
RTcxMjgwMDZCQ0E1RiAvKiBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDlBRjJENjkxNDQzNUQwNTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yNzQ2NSw2ICsyNzQ3NSw4IEBACiAJCQkJMzEwNjAzN0ExNDMy
ODFDRDAwQUJGNEJBIC8qIERPTVdlYktpdENTU0ZpbHRlclZhbHVlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMjlBQ0IyMTQxNDNFNzQ5ODAwNkJDQTVGIC8qIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMDkwODdGMTQ0NEZEQjIwMDAyODkxNyAvKiBTY3Jv
bGxiYXJUaGVtZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0OUFGMkQ2QzE0NDM1RDIxMDAxNkE3
ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5
RkM3QTUwMTQ0NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA3ZTRkZTFmOGJjOTMzMGM2Mjhh
ZjM1ZmU0ZDM4Y2Y4ZDg2MmE3YmFlLi5mN2UwODVlOWQyZThkYjYxYTFjMTM3ZWNmNjBhNmQ0Zjlm
OTg4OGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQ3NzQsNiArNDc3NCwxNSBAQCB2
b2lkIERvY3VtZW50OjpyZXN1bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3Mo
KQogI2VuZGlmCiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0
Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCit7CisjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FKQorICAgIGlmIChtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcikKKyAgICAgICAg
bV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXItPndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNw
bGF5SUQpOworI2VuZGlmCit9CisKKwogU3RyaW5nIERvY3VtZW50OjpkaXNwbGF5U3RyaW5nTW9k
aWZpZWRCeUVuY29kaW5nKGNvbnN0IFN0cmluZyYgc3RyKSBjb25zdAogewogICAgIGlmIChtX2Rl
Y29kZXIpCkBAIC01MTE1LDggKzUxMjQsMTAgQEAgdm9pZCBEb2N1bWVudDo6bG9hZEV2ZW50RGVs
YXlUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiopCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FKQogaW50IERvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoUGFz
c1JlZlB0cjxSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjaz4gY2FsbGJhY2ssIEVsZW1lbnQq
IGFuaW1hdGlvbkVsZW1lbnQpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJv
bGxlcikKKyAgICBpZiAoIW1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyKSB7CiAgICAgICAg
IG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyID0gU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyOjpjcmVhdGUodGhpcyk7CisgICAgICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
LT53aW5kb3dTY3JlZW5EaWRDaGFuZ2UocGFnZSgpLT5kaXNwbGF5SUQoKSk7CisgICAgfQogCiAg
ICAgcmV0dXJuIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLT5yZWdpc3RlckNhbGxiYWNr
KGNhbGxiYWNrLCBhbmltYXRpb25FbGVtZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXgg
Zjc5OTAxMmJlZjBmYTIzNzVhYTcwYmIxYzAyY2UxYzY0ZjlkNjg5OC4uNDNkNTg4ZTI2MjIyODFj
NWY0Mzg4OTM0NDFkM2U3NWVhYzI2NzBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM4LDYg
KzM4LDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIK
ICNpbmNsdWRlICJQYWdlVmlzaWJpbGl0eVN0YXRlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TY3Jl
ZW4uaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlN0cmluZ1dpdGhEaXJlY3Rpb24uaCIKQEAgLTk0NCw2
ICs5NDUsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZFNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVTY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICAKKyAgICB2b2lkIHdpbmRv
d1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoZWRQYXJzaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggNmVjZjQ3YjNlZjI5MzFkMWI3MDI4MzdlNzI4
NDdiYzk4MTk0NDdjOS4uNmEzZWJlZjc0MTAyNGVkYWQ2YTYyNzBiNTRlZmNmY2QxMzk1MmMxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAKQEAgLTUzLDYgKzUzLDkgQEAgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpTY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogI2lmIFVTRShSRVFV
RVNUX0FOSU1BVElPTl9GUkFNRV9USU1FUikKICAgICAsIG1fYW5pbWF0aW9uVGltZXIodGhpcywg
JlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6YW5pbWF0aW9uVGltZXJGaXJlZCkKICAgICAs
IG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZSgwKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1f
dXNlVGltZXIoZmFsc2UpCisjZW5kaWYKICNlbmRpZgogewogfQpAQCAtMTQ2LDkgKzE0OSwyOCBA
QCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2VydmljZVNjcmlwdGVkQW5pbWF0
aW9ucyhET01UaW1lU3RhbXAgdGltZSkKICAgICAgICAgc2NoZWR1bGVBbmltYXRpb24oKTsKIH0K
ICAgICAKK3ZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjp3aW5kb3dTY3JlZW5EaWRD
aGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQoreworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCktPndpbmRv
d1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQsIHRoaXMpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oZGlzcGxheUlEKTsKKyNlbmRpZiAgICAKK30KKwogdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXI6OnNjaGVkdWxlQW5pbWF0aW9uKCkKIHsKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUVfVElNRVIpCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICghbV91c2VUaW1lcikg
eworICAgICAgICBtX3VzZVRpbWVyID0gIURpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNo
YXJlZE1hbmFnZXIoKS0+c2NoZWR1bGVBbmltYXRpb24odGhpcyk7CisgICAgICAgIGlmICghbV91
c2VUaW1lcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAobV9h
bmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisgICAgICAgIAogICAg
IGRvdWJsZSBzY2hlZHVsZURlbGF5ID0gbWF4PGRvdWJsZT4oTWluaW11bUFuaW1hdGlvbkludGVy
dmFsIC0gKGN1cnJlbnRUaW1lKCkgLSBtX2xhc3RBbmltYXRpb25GcmFtZVRpbWUpLCAwKTsKICAg
ICBtX2FuaW1hdGlvblRpbWVyLnN0YXJ0T25lU2hvdChzY2hlZHVsZURlbGF5KTsKICNlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgKaW5k
ZXggZWMyNGZiMzU1NDA0NjQyNzMwZTIzZmYxZjM2Nzk5OTU0N2FhN2NjMS4uZjRiNjAxODRkM2Nj
YzRiNzU1MDdhZmY3MzQ0MWRmYTU1MmRlMGZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaApAQCAtMjksNiArMjksOSBAQAogI2lmIEVO
QUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKICNpbmNsdWRlICJET01UaW1lU3RhbXAuaCIK
ICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfVElNRVIpCisjaWYgUExBVEZPUk0oTUFD
KQorI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvci5oIgorI2VuZGlmCiAjaW5jbHVkZSAi
VGltZXIuaCIKICNlbmRpZgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDIsNyAr
NDUsMTEgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgUmVxdWVzdEFu
aW1hdGlvbkZyYW1lQ2FsbGJhY2s7CiAKLWNsYXNzIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ciB7CitjbGFzcyBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIKKyNpZiBQTEFURk9STShNQUMp
CisgICAgOiBwdWJsaWMgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50CisjZW5kaWYKK3sKIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcik7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyPiBjcmVh
dGUoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNTksNiArNjYsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzdXNwZW5kKCk7CiAgICAgdm9pZCByZXN1bWUoKTsKIAorICAgIHZvaWQgd2luZG93U2NyZWVu
RGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBT
Y3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIoRG9jdW1lbnQqKTsKICAgICAKQEAgLTc1LDYgKzg0
LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBhbmltYXRpb25UaW1lckZpcmVkKFRpbWVyPFNjcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlcj4qKTsKICAgICBUaW1lcjxTY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXI+IG1fYW5pbWF0aW9uVGltZXI7CiAgICAgZG91YmxlIG1fbGFzdEFuaW1hdGlvbkZy
YW1lVGltZTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAvLyBPdmVycmlkZSBmb3IgRGlzcGxh
eVJlZnJlc2hNb25pdG9yQ2xpZW50CisgICAgdm9pZCBkaXNwbGF5UmVmcmVzaEZpcmVkKGRvdWJs
ZSB0aW1lc3RhbXApIHsgc2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhjb252ZXJ0U2Vjb25kc1Rv
RE9NVGltZVN0YW1wKHRpbWVzdGFtcCkpOyB9CisKKyAgICBib29sIG1fdXNlVGltZXI7CisjZW5k
aWYKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMzRmYTQwYTg3NTdjOWNhOWNl
NDQ3NWIyNjRiNjM5Y2YxY2I4MDBlOS4uYmZiZTcwYTMyMjdkZjkyNTViOTVjNjkzMDc2YmUyMWVm
YzI2NTFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xNzIsNiArMTcyLDcgQEAgUGFnZTo6UGFn
ZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9B
UEkpCiAgICAgLCBtX3Zpc2liaWxpdHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSkK
ICNlbmRpZgorICAgICwgbV9kaXNwbGF5SUQoMCkKIHsKICAgICBpZiAoIWFsbFBhZ2VzKSB7CiAg
ICAgICAgIGFsbFBhZ2VzID0gbmV3IEhhc2hTZXQ8UGFnZSo+OwpAQCAtNjgwLDYgKzY4MSwxNiBA
QCB2b2lkIFBhZ2U6OndpbGxNb3ZlT2Zmc2NyZWVuKCkKICAgICB9CiB9CiAKK3ZvaWQgUGFnZTo6
d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKK3sKKyAg
ICBtX2Rpc3BsYXlJRCA9IGRpc3BsYXlJRDsKKyAgICAKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQo
KSkgeworICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgICAgICBmcmFtZS0+
ZG9jdW1lbnQoKS0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7CisgICAgfQorfQor
CiB2b2lkIFBhZ2U6OnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFuZ2VkKCkKIHsKICAgICAvLyBG
SVhNRTogRXZlbnR1YWxseSB3ZSB3aWxsIG1vdmUgdG8gYSBtb2RlbCBvZiBqdXN0IGJlaW5nIGhh
bmRlZCB0aGUgc2hlZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMTM5MGM5ODRkYjZhNjUyODYyMzIyMzkz
ZmZhZDgxZTU2YmUyNjI1Yy4uZTcwZmRiZDA5OWRjZjFhNWQzNTM1Y2Y0NDY5ZWZiYjdjYTgzMWY1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJGaW5kT3B0aW9u
cy5oIgogI2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCiAjaW5jbHVkZSAiUGFnZVZpc2liaWxpdHlT
dGF0ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CkBAIC0yNTYsNiArMjU3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2b2lkIGRpZE1vdmVPbnNjcmVlbigpOwogICAgICAgICB2b2lkIHdpbGxNb3ZlT2Zmc2NyZWVu
KCk7CiAKKyAgICAgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5
SUQpOworICAgICAgICAKICAgICAgICAgdm9pZCB1c2VyU3R5bGVTaGVldExvY2F0aW9uQ2hhbmdl
ZCgpOwogICAgICAgICBjb25zdCBTdHJpbmcmIHVzZXJTdHlsZVNoZWV0KCkgY29uc3Q7CiAKQEAg
LTMxMCw2ICszMTMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0Vmlz
aWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmlsaXR5U3RhdGUsIGJvb2wpOwogI2VuZGlmCiAKKyAgICAg
ICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
SUQ7IH0KKyAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBpbml0R3JvdXAoKTsK
IApAQCAtNDE2LDYgKzQyMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoUEFH
RV9WSVNJQklMSVRZX0FQSSkKICAgICAgICAgUGFnZVZpc2liaWxpdHlTdGF0ZSBtX3Zpc2liaWxp
dHlTdGF0ZTsKICNlbmRpZgorICAgICAgICBQbGF0Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJRDsK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TY3JlZW4uaAppbmRleCA3NjRmZTAyZGViZTY5NDhlZDBmMmQ2OWQ3YTgzN2I1Y2I3
YjFmOGU3Li44NGY3Y2M2MTE4OTE5ZWQwNzZmM2I0YjViY2FkYjI2MmUwMTY4NWRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgKQEAgLTMxLDYgKzMxLDggQEAKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSA8UXVh
cnR6Q29yZS9RdWFydHpDb3JlLmg+CisKICNpZmRlZiBfX09CSkNfXwogICAgIEBjbGFzcyBOU1Nj
cmVlbjsKICAgICBAY2xhc3MgTlNXaW5kb3c7CkBAIC0zOCw2ICs0MCw5IEBACiAgICAgY2xhc3Mg
TlNTY3JlZW47CiAgICAgY2xhc3MgTlNXaW5kb3c7CiAjZW5kaWYKK3R5cGVkZWYgQ0dEaXJlY3RE
aXNwbGF5SUQgUGxhdGZvcm1EaXNwbGF5SUQ7CisjZWxzZQordHlwZWRlZiB1aW50NjRfdCBQbGF0
Zm9ybURpc3BsYXlJRDsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lMTg2YmRkN2JiODAzYmMxOTA5YjhmOTc5ZTMwNDAxZjE3NzZk
NmEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcApAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQorCisjaW5jbHVk
ZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCisKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQ6
OkRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCgpCisgICAgOiBtX3NjaGVkdWxlZChmYWxzZSkK
KyAgICAsIG1fZGlzcGxheUlESXNTZXQoZmFsc2UpCit7Cit9CisKK0Rpc3BsYXlSZWZyZXNoTW9u
aXRvckNsaWVudDo6fkRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCgpCit7CisgICAgRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLT51bnJlZ2lzdGVyQ2xpZW50
KHRoaXMpOworfQorCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudDo6ZmlyZURpc3Bs
YXlSZWZyZXNoSWZOZWVkZWQoZG91YmxlIHRpbWVzdGFtcCkKK3sKKyAgICBpZiAobV9zY2hlZHVs
ZWQpIHsKKyAgICAgICAgbV9zY2hlZHVsZWQgPSBmYWxzZTsKKyAgICAgICAgZGlzcGxheVJlZnJl
c2hGaXJlZCh0aW1lc3RhbXApOworICAgIH0KK30KKworRGlzcGxheVJlZnJlc2hNb25pdG9yOjpE
aXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQorICAgIDog
bV90aW1lc3RhbXAoMCkKKyAgICAsIG1fYWN0aXZlKHRydWUpCisgICAgLCBtX3NjaGVkdWxlZChm
YWxzZSkKKyAgICAsIG1fZGlzcGxheUlEKGRpc3BsYXlJRCkKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgLCBtX2Rpc3BsYXlMaW5rKDApCisjZW5kaWYKK3sKK30KKwordm9pZCBEaXNwbGF5UmVmcmVz
aE1vbml0b3I6OnJlZnJlc2hEaXNwbGF5T25NYWluVGhyZWFkKHZvaWQqIGRhdGEpCit7CisgICAg
RGlzcGxheVJlZnJlc2hNb25pdG9yKiBtb25pdG9yID0gc3RhdGljX2Nhc3Q8RGlzcGxheVJlZnJl
c2hNb25pdG9yKj4oZGF0YSk7CisKKyAgICBkb3VibGUgdGltZXN0YW1wOworICAgIHsKKyAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9jayhtb25pdG9yLT5tX211dGV4KTsKKyAgICAgICAgbW9uaXRvci0+
bV9zY2hlZHVsZWQgPSBmYWxzZTsKKyAgICAgICAgdGltZXN0YW1wID0gbW9uaXRvci0+bV90aW1l
c3RhbXA7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtb25pdG9yLT5tX2Ns
aWVudHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1vbml0b3ItPm1fY2xpZW50c1tpXS0+ZmlyZURp
c3BsYXlSZWZyZXNoSWZOZWVkZWQodGltZXN0YW1wKTsKK30KKyAKK0Rpc3BsYXlSZWZyZXNoTW9u
aXRvck1hbmFnZXIqIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1hbmFnZXIo
KQoreworICAgIHN0YXRpYyBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyKiBzdGF0aWNNYW5h
Z2VyID0gbmV3IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI7CisgICAgcmV0dXJuIHN0YXRp
Y01hbmFnZXI7Cit9CisKK3NpemVfdCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpmaW5k
TW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpIGNvbnN0Cit7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX21vbml0b3JzLnNpemUoKTsgKytpKQorICAgICAgICBpZiAobV9t
b25pdG9yc1tpXS0+ZGlzcGxheUlEKCkgPT0gZGlzcGxheUlEKQorICAgICAgICAgICAgcmV0dXJu
IGk7CisgICAgICAgICAgICAKKyAgICByZXR1cm4gbm90Rm91bmQ7Cit9CisKK3ZvaWQgRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6cmVnaXN0ZXJDbGllbnQoRGlzcGxheVJlZnJlc2hNb25p
dG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKCFjbGllbnQtPm1fZGlzcGxheUlESXNTZXQp
CisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgc2l6ZV90IGkgPSBmaW5kTW9uaXRvcihj
bGllbnQtPm1fZGlzcGxheUlEKTsKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3IqIG1vbml0b3I7
CisgICAgCisgICAgaWYgKGkgPT0gbm90Rm91bmQpIHsKKyAgICAgICAgbW9uaXRvciA9IG5ldyBE
aXNwbGF5UmVmcmVzaE1vbml0b3IoY2xpZW50LT5tX2Rpc3BsYXlJRCk7CisgICAgICAgIG1fbW9u
aXRvcnMuYXBwZW5kKG1vbml0b3IpOworICAgIH0gZWxzZQorICAgICAgICBtb25pdG9yID0gbV9t
b25pdG9yc1tpXTsKKyAgICAgICAgCisgICAgbW9uaXRvci0+YWRkQ2xpZW50KGNsaWVudCk7Cit9
CisKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6dW5yZWdpc3RlckNsaWVudChE
aXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqIGNsaWVudCkKK3sKKyAgICBpZiAoIWNsaWVudC0+
bV9kaXNwbGF5SURJc1NldCkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBzaXplX3Qg
aSA9IGZpbmRNb25pdG9yKGNsaWVudC0+bV9kaXNwbGF5SUQpOworICAgIGlmIChpID09IG5vdEZv
dW5kKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiBt
b25pdG9yID0gbV9tb25pdG9yc1tpXTsKKyAgICBpZiAobW9uaXRvci0+cmVtb3ZlQ2xpZW50KGNs
aWVudCkpIHsKKyAgICAgICAgaWYgKCFtb25pdG9yLT5oYXNDbGllbnRzKCkpIHsKKyAgICAgICAg
ICAgIG1fbW9uaXRvcnMucmVtb3ZlKGkpOworICAgICAgICAgICAgZGVsZXRlIG1vbml0b3I7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6
c2NoZWR1bGVBbmltYXRpb24oRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KiBjbGllbnQpCit7
CisgICAgaWYgKCFjbGllbnQtPm1fZGlzcGxheUlESXNTZXQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgCisgICAgc2l6ZV90IGkgPSBmaW5kTW9uaXRvcihjbGllbnQtPm1fZGlzcGxh
eUlEKTsKKyAgICBBU1NFUlQoaSAhPSBub3RGb3VuZCk7CisKKyAgICBjbGllbnQtPnNjaGVkdWxl
QW5pbWF0aW9uKCk7CisgICAgcmV0dXJuIG1fbW9uaXRvcnNbaV0tPnNjaGVkdWxlQW5pbWF0aW9u
KCk7Cit9CisKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6d2luZG93U2NyZWVu
RGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgRGlzcGxheVJlZnJlc2hNb25p
dG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKGNsaWVudC0+bV9kaXNwbGF5SURJc1NldCAm
JiBjbGllbnQtPm1fZGlzcGxheUlEID09IGRpc3BsYXlJRCkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIHVucmVnaXN0ZXJDbGllbnQoY2xpZW50KTsKKyAgICBjbGllbnQtPm1fZGlzcGxheUlE
ID0gZGlzcGxheUlEOworICAgIGNsaWVudC0+bV9kaXNwbGF5SURJc1NldCA9IHRydWU7IAorICAg
IHJlZ2lzdGVyQ2xpZW50KGNsaWVudCk7CisgICAgaWYgKGNsaWVudC0+bV9zY2hlZHVsZWQpCisg
ICAgICAgIHNjaGVkdWxlQW5pbWF0aW9uKGNsaWVudCk7Cit9CisKK30KKworI2VuZGlmIC8vIEVO
QUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWRiNmM2NmY5ZDk4ZDdiNGY2NTk3N2U5YjI5ZmJhN2RiMWI2NjQ0NAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ci5oCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERpc3BsYXlSZWZyZXNoTW9uaXRvcl9oCisj
ZGVmaW5lIERpc3BsYXlSZWZyZXNoTW9uaXRvcl9oCisKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUUpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yOworY2xhc3MgRGlzcGxheVJlZnJl
c2hNb25pdG9yTWFuYWdlcjsKKworLy8KKy8vIEFic3RyYWN0IHZpcnR1YWwgY2xpZW50IHdoaWNo
IHJlY2VpdmVzIHJlZnJlc2ggZmlyZWQgbWVzc2FnZXMgb24gdGhlIG1haW4gdGhyZWFkCisvLwor
Y2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50IHsKKyAgICBmcmllbmQgRGlzcGxheVJl
ZnJlc2hNb25pdG9yOworICAgIGZyaWVuZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOwor
ICAgIAorcHVibGljOgorICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCgpOworICAgIHZp
cnR1YWwgfkRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCgpOworICAgIAorICAgIHZpcnR1YWwg
dm9pZCBkaXNwbGF5UmVmcmVzaEZpcmVkKGRvdWJsZSB0aW1lc3RhbXApID0gMDsKKworcHJpdmF0
ZToKKyAgICB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCkgeyBtX3NjaGVkdWxlZCA9IHRydWU7IH0K
KworICAgIHZvaWQgZmlyZURpc3BsYXlSZWZyZXNoSWZOZWVkZWQoZG91YmxlIHRpbWVzdGFtcCk7
CisgICAgCisgICAgYm9vbCBtX3NjaGVkdWxlZDsKKyAgICBQbGF0Zm9ybURpc3BsYXlJRCBtX2Rp
c3BsYXlJRDsKKyAgICBib29sIG1fZGlzcGxheUlESXNTZXQ7Cit9OworCisvLworLy8gTW9uaXRv
ciBmb3IgZGlzcGxheSByZWZyZXNoIG1lc3NhZ2VzIGZvciBhIGdpdmVuIHNjcmVlbgorLy8KKwor
Y2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yIHsKK3B1YmxpYzoKKyAgICBEaXNwbGF5UmVmcmVz
aE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpOworICAgIH5EaXNwbGF5UmVmcmVzaE1vbml0b3Io
KTsKKyAgICAKKyAgICBib29sIHNjaGVkdWxlQW5pbWF0aW9uKCk7CisgICAgdm9pZCB3aW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQpOworICAgIAorICAgIGJvb2wgaGFzQ2xp
ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50cy5zaXplKCk7IH0KKyAgICB2b2lkIGFkZENs
aWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudHMuYXBw
ZW5kKGNsaWVudCk7IH0KKyAgICBib29sIHJlbW92ZUNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0
b3JDbGllbnQqIGNsaWVudCkKKyAgICB7CisgICAgICAgIHNpemVfdCBpID0gbV9jbGllbnRzLmZp
bmQoY2xpZW50KTsKKyAgICAgICAgaWYgKGkgPT0gbm90Rm91bmQpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIG1fY2xpZW50cy5yZW1vdmUoaSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICAKKyAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25z
dCB7IHJldHVybiBtX2Rpc3BsYXlJRDsgfQorCitwcml2YXRlOgorICAgIGRvdWJsZSBtX3RpbWVz
dGFtcDsKKyAgICBib29sIG1fYWN0aXZlOworICAgIGJvb2wgbV9zY2hlZHVsZWQ7CisgICAgUGxh
dGZvcm1EaXNwbGF5SUQgbV9kaXNwbGF5SUQ7CisgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFu
YWdlciogbV9tYW5hZ2VyOworICAgIE11dGV4IG1fbXV0ZXg7CisgICAgVmVjdG9yPERpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudCo+IG1fY2xpZW50czsKKyAgICAKKyNpZiBQTEFURk9STShNQUMp
CisgICAgc3RhdGljIHZvaWQgcmVmcmVzaERpc3BsYXlPbk1haW5UaHJlYWQodm9pZCogZGF0YSk7
CisgICAgc3RhdGljIENWUmV0dXJuIGRpc3BsYXlMaW5rQ2FsbGJhY2soQ1ZEaXNwbGF5TGlua1Jl
ZiwgY29uc3QgQ1ZUaW1lU3RhbXAqIG5vdywgY29uc3QgQ1ZUaW1lU3RhbXAqIG91dHB1dFRpbWUs
IENWT3B0aW9uRmxhZ3MsIENWT3B0aW9uRmxhZ3MqLCB2b2lkKiBkYXRhKTsKKworICAgIENWRGlz
cGxheUxpbmtSZWYgbV9kaXNwbGF5TGluazsKKyNlbmRpZgorfTsKKworLy8KKy8vIFNpbmdsZXRv
biBtYW5hZ2VyIGZvciBhbGwgdGhlIERpc3BsYXlSZWZyZXNoTW9uaXRvcnMuIFRoaXMgaXMgdGhl
IGludGVyZmFjZSB0byB0aGUgCisvLyBvdXRzaWRlIHdvcmxkLiBJdCBkaXN0cmlidXRlcyByZXF1
ZXN0cyB0byB0aGUgYXBwcm9wcmlhdGUgbW9uaXRvci4gV2hlbiB0aGUgZGlzcGxheQorLy8gcmVm
cmVzaCBldmVudCBmaXJlcywgdGhlIHBhc3NlZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQg
aXMgY2FsbGVkIGRpcmVjdGx5IG9uCisvLyB0aGUgbWFpbiB0aHJlYWQuCisvLworY2xhc3MgRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlciB7CitwdWJsaWM6CisgICAgc3RhdGljIERpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hbmFnZXIqIHNoYXJlZE1hbmFnZXIoKTsKKyAgICAKKyAgICB2b2lkIHJl
Z2lzdGVyQ2xpZW50KERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCopOworICAgIHZvaWQgdW5y
ZWdpc3RlckNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqKTsKKworICAgIGJvb2wg
c2NoZWR1bGVBbmltYXRpb24oRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50Kik7CisgICAgdm9p
ZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQsIERpc3BsYXlSZWZyZXNo
TW9uaXRvckNsaWVudCopOworCitwcml2YXRlOgorICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1h
bmFnZXIoKSB7IH0KKworICAgIHNpemVfdCBmaW5kTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCkg
Y29uc3Q7CisgICAgCisgICAgVmVjdG9yPERpc3BsYXlSZWZyZXNoTW9uaXRvcio+IG1fbW9uaXRv
cnM7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUp
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NGQ1YzIzYTQ2ZGM4MTcyNThjMTU0NmJmNGU3ZDlhMDJiMjc2ZGFiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9u
aXRvck1hYy5jcHAKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQorCisjaW5jbHVkZSAiRGlzcGxheVJlZnJl
c2hNb25pdG9yLmgiCisKKyNpbmNsdWRlIDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0NWUmV0dXJuIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlz
cGxheUxpbmtDYWxsYmFjayhDVkRpc3BsYXlMaW5rUmVmLCBjb25zdCBDVlRpbWVTdGFtcCogbm93
LCBjb25zdCBDVlRpbWVTdGFtcCogb3V0cHV0VGltZSwgQ1ZPcHRpb25GbGFncywgQ1ZPcHRpb25G
bGFncyosIHZvaWQqIGRhdGEpCit7CisgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiBtb25pdG9y
ID0gc3RhdGljX2Nhc3Q8RGlzcGxheVJlZnJlc2hNb25pdG9yKj4oZGF0YSk7CisgICAgCisgICAg
TXV0ZXhMb2NrZXIgbG9jayhtb25pdG9yLT5tX211dGV4KTsKKyAgICBpZiAoIW1vbml0b3ItPm1f
c2NoZWR1bGVkKQorICAgICAgICByZXR1cm4ga0NWUmV0dXJuU3VjY2VzczsKKworICAgIGRvdWJs
ZSBub3dTZWNvbmRzID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihub3ctPnZpZGVvVGltZSkgLyBzdGF0
aWNfY2FzdDxkb3VibGU+KG5vdy0+dmlkZW9UaW1lU2NhbGUpOworICAgIGRvdWJsZSBvdXRwdXRU
aW1lU2Vjb25kcyA9IHN0YXRpY19jYXN0PGRvdWJsZT4ob3V0cHV0VGltZS0+dmlkZW9UaW1lKSAv
IHN0YXRpY19jYXN0PGRvdWJsZT4ob3V0cHV0VGltZS0+dmlkZW9UaW1lU2NhbGUpOworICAgIGRv
dWJsZSB3ZWJLaXROb3cgPSBjdXJyZW50VGltZSgpOworICAgIG1vbml0b3ItPm1fdGltZXN0YW1w
ID0gd2ViS2l0Tm93IC0gbm93U2Vjb25kcyArIG91dHB1dFRpbWVTZWNvbmRzOworICAgIAorICAg
IGNhbGxPbk1haW5UaHJlYWQoRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZWZyZXNoRGlzcGxheU9u
TWFpblRocmVhZCwgbW9uaXRvcik7CisgICAgcmV0dXJuIGtDVlJldHVyblN1Y2Nlc3M7Cit9Cisg
CitEaXNwbGF5UmVmcmVzaE1vbml0b3I6On5EaXNwbGF5UmVmcmVzaE1vbml0b3IoKQoreworICAg
IGNhbmNlbENhbGxPbk1haW5UaHJlYWQoRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZWZyZXNoRGlz
cGxheU9uTWFpblRocmVhZCwgdGhpcyk7CisgICAgCisgICAgaWYgKG1fZGlzcGxheUxpbmspIHsK
KyAgICAgICAgQ1ZEaXNwbGF5TGlua1N0b3AobV9kaXNwbGF5TGluayk7CisgICAgICAgIENWRGlz
cGxheUxpbmtSZWxlYXNlKG1fZGlzcGxheUxpbmspOworICAgICAgICBtX2Rpc3BsYXlMaW5rID0g
MDsKKyAgICB9Cit9CisKK2Jvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpzY2hlZHVsZUFuaW1h
dGlvbigpCit7CisgICAgaWYgKCFtX2FjdGl2ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAKKyAgICBpZiAoIW1fZGlzcGxheUxpbmspIHsKKyAgICAgICAgbV9hY3RpdmUgPSBmYWxz
ZTsKKyAgICAgICAgQ1ZSZXR1cm4gZXJyb3IgPSBDVkRpc3BsYXlMaW5rQ3JlYXRlV2l0aENHRGlz
cGxheShtX2Rpc3BsYXlJRCwgJm1fZGlzcGxheUxpbmspOworICAgICAgICBpZiAoZXJyb3IpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZXJyb3IgPSBDVkRpc3BsYXlMaW5r
U2V0T3V0cHV0Q2FsbGJhY2sobV9kaXNwbGF5TGluaywgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpk
aXNwbGF5TGlua0NhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGVycm9yID0gQ1ZEaXNwbGF5TGlua1N0YXJ0KG1f
ZGlzcGxheUxpbmspOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgbV9hY3RpdmUgPSB0cnVlOworICAgIH0KKyAgICAKKyAgICBNdXRleExv
Y2tlciBsb2NrKG1fbXV0ZXgpOworICAgIG1fc2NoZWR1bGVkID0gdHJ1ZTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCmluZGV4IDQ4ODFhYjc4NzJiZTZlYTU3NDljNzIxZDZiNjQzOGIyNjMz
NjZkNWMuLmI1YzQyMjM2MWY2MWQ1Y2IzODM2ZWEzNDg1ZGZiNzVkYmZmZTkyZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMS0xMC0xMiAgQ2hyaXMgTWFycmluICA8Y21h
cnJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3luYyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgY2Fs
bGJhY2sgdG8gQ1ZEaXNwbGF5TGluayBvbiBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY4OTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIHdpbmRvd0RpZENoYW5nZVNjcmVlbiBmdW5jdGlvbiB3
aGljaCBsaXN0ZW5zIGZvciB0aGUgd2luZG93IGNoYW5naW5nCisgICAgICAgIHNjcmVlbnMgYW5k
IHBhc3NlcyB0aGUgbmV3IGRpc3BsYXlJRCBhbG9uZyB0byBXZWJDb3JlOjpQYWdlLiBJdCBhbHNv
IHNlbmRzCisgICAgICAgIG9uZSBvbiB3aW5kb3dXaWxsT3JkZXJPblNjcmVlbiwgc28gdGhlIFBh
Z2UgaGFzIGEgZnJlc2ggZGlzcGxheUlEIGFmdGVyIGl0J3MKKyAgICAgICAgY3JlYXRlZC4KKwor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBhZGRXaW5k
b3dPYnNlcnZlcnNGb3JXaW5kb3c6XSk6CisgICAgICAgICgtW1dlYlZpZXcgcmVtb3ZlV2luZG93
T2JzZXJ2ZXJzXSk6CisgICAgICAgICgtW1dlYlZpZXcgX3dpbmRvd0RpZENoYW5nZVNjcmVlbjpd
KToKKyAgICAgICAgKC1bV2ViVmlldyBfd2luZG93V2lsbE9yZGVyT25TY3JlZW46XSk6CisKIDIw
MTEtMTAtMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
c2UgYSBDYWNoZWRJbWFnZUNsaWVudCBpbnN0ZWFkIG9mIENhY2hlZFJlc291cmNlQ2xpZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggOTk3NDYyYzkwMjVmNjQxODc2YWMy
ZjZkN2UzMGJkYjFmOGZjMzE5Yy4uZWMxMzA4NWU3N2RkMGI1ODJmYzliYjAwYzQ2ZGQ2YzE1MGFj
ZmVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMzIxOCw2ICszMjE4
LDggQEAgLSAodm9pZClhZGRXaW5kb3dPYnNlcnZlcnNGb3JXaW5kb3c6KE5TV2luZG93ICopd2lu
ZG93CiAgICAgICAgICAgICBuYW1lOldLV2luZG93V2lsbE9yZGVyT2ZmU2NyZWVuTm90aWZpY2F0
aW9uKCkgb2JqZWN0OndpbmRvd107CiAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVm
YXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX3dpbmRvd0Rp
ZENoYW5nZVJlc29sdXRpb246KQogICAgICAgICAgICAgbmFtZTp3aW5kb3dEaWRDaGFuZ2VSZXNv
bHV0aW9uTm90aWZpY2F0aW9uIG9iamVjdDp3aW5kb3ddOworICAgICAgICBbW05TTm90aWZpY2F0
aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVj
dG9yKF93aW5kb3dEaWRDaGFuZ2VTY3JlZW46KQorICAgICAgICAgICAgbmFtZTpOU1dpbmRvd0Rp
ZENoYW5nZVNjcmVlbk5vdGlmaWNhdGlvbiBvYmplY3Q6d2luZG93XTsKICAgICB9CiB9CiAKQEAg
LTMyMzUsNiArMzIzNyw4IEBAIC0gKHZvaWQpcmVtb3ZlV2luZG93T2JzZXJ2ZXJzCiAgICAgICAg
ICAgICBuYW1lOldLV2luZG93V2lsbE9yZGVyT2ZmU2NyZWVuTm90aWZpY2F0aW9uKCkgb2JqZWN0
OndpbmRvd107CiAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0g
cmVtb3ZlT2JzZXJ2ZXI6c2VsZgogICAgICAgICAgICAgbmFtZTp3aW5kb3dEaWRDaGFuZ2VSZXNv
bHV0aW9uTm90aWZpY2F0aW9uIG9iamVjdDp3aW5kb3ddOworICAgICAgICBbW05TTm90aWZpY2F0
aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYKKyAgICAgICAgICAg
IG5hbWU6TlNXaW5kb3dEaWRDaGFuZ2VTY3JlZW5Ob3RpZmljYXRpb24gb2JqZWN0OndpbmRvd107
CiAgICAgfQogfQogCkBAIC0zMjg3LDYgKzMyOTEsMTEgQEAgLSAodm9pZCl2aWV3RGlkTW92ZVRv
V2luZG93CiAgICAgW3NlbGYgX3VwZGF0ZUFjdGl2ZVN0YXRlXTsKIH0KIAorLSAodm9pZClfd2lu
ZG93RGlkQ2hhbmdlU2NyZWVuOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAg
IF9wcml2YXRlLT5wYWdlLT53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoKFBsYXRmb3JtRGlzcGxheUlE
KVtbW1tbc2VsZiB3aW5kb3ddIHNjcmVlbl0gZGV2aWNlRGVzY3JpcHRpb25dIG9iamVjdEZvcktl
eTpAIk5TU2NyZWVuTnVtYmVyIl0gaW50VmFsdWVdKTsKK30KKwogLSAodm9pZClfd2luZG93RGlk
QmVjb21lS2V5OihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogewogICAgIE5TV2luZG93
ICprZXlXaW5kb3cgPSBbbm90aWZpY2F0aW9uIG9iamVjdF07CkBAIC0zMzEwLDYgKzMzMTksOSBA
QCAtICh2b2lkKV93aW5kb3dXaWxsT3JkZXJPblNjcmVlbjooTlNOb3RpZmljYXRpb24gKilub3Rp
ZmljYXRpb24KIAogICAgIGlmICghW3NlbGYgc2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW5dKQog
ICAgICAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXk6WUVTXTsKKworICAgIC8vIFNlbmQgYSBjaGFu
Z2Ugc2NyZWVuIHRvIG1ha2Ugc3VyZSB0aGUgaW5pdGlhbCBkaXNwbGF5SUQgaXMgc2V0CisgICAg
W3NlbGYgX3dpbmRvd0RpZENoYW5nZVNjcmVlbjpub3RpZmljYXRpb25dOwogfQogCiAtICh2b2lk
KV93aW5kb3dXaWxsT3JkZXJPZmZTY3JlZW46KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggMmYyY2MxZjg4ZWY4YmFjM2E4MTBiNjI0ZjdkNTUxYWNkMDUzMGZmMy4u
MzRjMDEwMjc4NThlZTg2NTcyMWJjYmYyMTlkZDU5MTI2NTExYjE2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI5IEBACisyMDExLTEwLTEyICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNv
bT4KKworICAgICAgICBTeW5jIHJlcXVlc3RBbmltYXRpb25GcmFtZSBjYWxsYmFjayB0byBDVkRp
c3BsYXlMaW5rIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njg5MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgd2luZG93RGlkQ2hhbmdlU2NyZWVuIGZ1bmN0aW9uIHdoaWNoIGxpc3RlbnMg
Zm9yIHRoZSB3aW5kb3cgY2hhbmdpbmcKKyAgICAgICAgc2NyZWVucyBhbmQgcGFzc2VzIHRoZSBu
ZXcgZGlzcGxheUlEIGFsb25nIHRvIFdlYkNvcmU6OlBhZ2UuIEl0IGFsc28gc2VuZHMKKyAgICAg
ICAgb25lIG9uIHdpbmRvd0RpZEJlY29tZUtleSwgc28gdGhlIFBhZ2UgaGFzIGEgZnJlc2ggZGlz
cGxheUlEIGFmdGVyIGl0J3MKKyAgICAgICAgY3JlYXRlZC4gRXZlbnQgaXMgZ2VuZXJhdGVkIGlu
IHRoZSBVSVByb2Nlc3MgYW5kIHRoZW4gc2VudCBvdmVyIHRvIHRoZQorICAgICAgICBXZWJQcm9j
ZXNzLCB3aGljaCBhY3R1YWxseSBzZW5kcyBpdCB0byBXZWJDb3JlOjpQYWdlLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgYWRkV2lu
ZG93T2JzZXJ2ZXJzRm9yV2luZG93Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgcmVtb3ZlV2luZG93
T2JzZXJ2ZXJzXSk6CisgICAgICAgICgtW1dLVmlldyBfd2luZG93RGlkQ2hhbmdlU2NyZWVuOl0p
OgorICAgICAgICAoLVtXS1ZpZXcgX3dpbmRvd0RpZEJlY29tZUtleTpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OndpbmRvd1NjcmVlbkRpZENoYW5nZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxMS0xMC0xMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpA
YXBwbGUuY29tPgogCiAgICAgICAgIEhhbmcgYmVuZWF0aCBQbHVnaW5Qcm9jZXNzUHJveHk6OmNy
ZWF0ZVByb3BlcnR5TGlzdEZpbGUoKSB3aGVuIHVzaW5nIGEgdGhpbiBidWlsZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDBmYmIwNzZmNDkyMTMzN2Nj
Y2MxZWIyZDlkMDhhYzJiM2FjN2JjYTUuLmFjMTBkYmFmNTRhZmFhNDg3YzMwZTQ3NjVhZWQ3ZDFl
YjNjZjNhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0K
QEAgLTE3OTcsNyArMTc5Nyw4IEBAIC0gKHZvaWQpYWRkV2luZG93T2JzZXJ2ZXJzRm9yV2luZG93
OihOU1dpbmRvdyAqKXdpbmRvdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuYW1lOkAiX05TV2luZG93RGlkQmVjb21lVmlzaWJsZSIgb2JqZWN0
OndpbmRvd107CiAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0g
YWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX3dpbmRvd0RpZENoYW5nZVJlc29s
dXRpb246KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuYW1lOndpbmRvd0RpZENoYW5nZVJlc29sdXRpb25Ob3RpZmljYXRpb24gb2JqZWN0Ondp
bmRvd107Ci0KKyAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBh
ZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihfd2luZG93RGlkQ2hhbmdlU2NyZWVu
OikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bmFtZTpOU1dpbmRvd0RpZENoYW5nZVNjcmVlbk5vdGlmaWNhdGlvbiBvYmplY3Q6d2luZG93XTsK
ICAgICB9CiB9CiAKQEAgLTE4MTYsNyArMTgxNyw3IEBAIC0gKHZvaWQpcmVtb3ZlV2luZG93T2Jz
ZXJ2ZXJzCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVP
YnNlcnZlcjpzZWxmIG5hbWU6QCJOU1dpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuTm90aWZpY2F0aW9u
IiBvYmplY3Q6d2luZG93XTsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpAIl9OU1dpbmRvd0RpZEJlY29tZVZpc2libGUi
IG9iamVjdDp3aW5kb3ddOwogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRl
cl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOndpbmRvd0RpZENoYW5nZVJlc29sdXRpb25Ob3Rp
ZmljYXRpb24gb2JqZWN0OndpbmRvd107Ci0KKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpOU1dpbmRvd0RpZENoYW5nZVNj
cmVlbk5vdGlmaWNhdGlvbiBvYmplY3Q6d2luZG93XTsKIH0KIAogLSAodm9pZCl2aWV3V2lsbE1v
dmVUb1dpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cKQEAgLTE4NjgsNiArMTg2OSwxMSBAQCAtICh2
b2lkKXZpZXdEaWRNb3ZlVG9XaW5kb3cKICAgICBfZGF0YS0+X3BhZ2UtPnNldEludHJpbnNpY0Rl
dmljZVNjYWxlRmFjdG9yKFtzZWxmIF9pbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3Rvcl0pOwogfQog
CistICh2b2lkKV93aW5kb3dEaWRDaGFuZ2VTY3JlZW46KE5TTm90aWZpY2F0aW9uICopbm90aWZp
Y2F0aW9uCit7CisgICAgX2RhdGEtPl9wYWdlLT53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoKFBsYXRm
b3JtRGlzcGxheUlEKVtbW1tbc2VsZiB3aW5kb3ddIHNjcmVlbl0gZGV2aWNlRGVzY3JpcHRpb25d
IG9iamVjdEZvcktleTpAIk5TU2NyZWVuTnVtYmVyIl0gaW50VmFsdWVdKTsKK30KKwogLSAodm9p
ZClfd2luZG93RGlkQmVjb21lS2V5OihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogewog
ICAgIE5TV2luZG93ICprZXlXaW5kb3cgPSBbbm90aWZpY2F0aW9uIG9iamVjdF07CkBAIC0xODc1
LDYgKzE4ODEsOSBAQCAtICh2b2lkKV93aW5kb3dEaWRCZWNvbWVLZXk6KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uCiAgICAgICAgIFtzZWxmIF91cGRhdGVTZWN1cmVJbnB1dFN0YXRlXTsK
ICAgICAgICAgX2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpW
aWV3V2luZG93SXNBY3RpdmUpOwogICAgIH0KKworICAgIC8vIFNlbmQgYSBjaGFuZ2Ugc2NyZWVu
IHRvIG1ha2Ugc3VyZSB0aGUgaW5pdGlhbCBkaXNwbGF5SUQgaXMgc2V0CisgICAgW3NlbGYgX3dp
bmRvd0RpZENoYW5nZVNjcmVlbjpub3RpZmljYXRpb25dOwogfQogCiAtICh2b2lkKV93aW5kb3dE
aWRSZXNpZ25LZXk6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGFhODZlZjJlMmM5ZmJjNWZlNzVjNmQy
Y2M3NzQ1MzU3Y2RkOWVjNTkuLjAwZjFkZGYwNjVhNDYzMzg4NzQyMzAzZDg5YTliNWJhNTRjZDBh
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMTU4
LDYgKzExNTgsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEludHJpbnNpY0RldmljZVNjYWxl
RmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQogICAgIG1fZHJhd2luZ0FyZWEtPmRldmljZVNjYWxl
RmFjdG9yRGlkQ2hhbmdlKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dTY3JlZW5E
aWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQoreworICAgIGlmICghaXNWYWxp
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogSVBDIGhhcyB0cm91YmxlIHNl
bmRpbmcgcGFyYW1zIGl0IGRvZXNuJ3QgdW5kZXJzdGFuZCwgc28gY2FzdCBpbnRvIGEgY29tbW9u
IHR5cGUKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OldpbmRvd1NjcmVl
bkRpZENoYW5nZShkaXNwbGF5SUQpLCBtX3BhZ2VJRCk7Cit9CisKIGZsb2F0IFdlYlBhZ2VQcm94
eTo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAogewogICAgIGlmIChtX2N1c3RvbURldmljZVNj
YWxlRmFjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDQw
ODUxOTg2ODM1ZDY3ODZiOGJhY2Y4ZTgyOThhNjIxMWRmYzM2NzIuLjRlNGQ3MmNhYTIxMDhlMzkx
ZTY3YTM4NzgzMTY0YWY1MDU4MjU2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJXZWJVSUNsaWVudC5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RS
ZXN1bHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTM5MSw3ICszOTIsOCBAQCBwdWJsaWM6CiAg
ICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdDsKICAgICB2b2lkIHNldEludHJpbnNp
Y0RldmljZVNjYWxlRmFjdG9yKGZsb2F0KTsKICAgICB2b2lkIHNldEN1c3RvbURldmljZVNjYWxl
RmFjdG9yKGZsb2F0KTsKLQorICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3Jt
RGlzcGxheUlEKTsKKyAgICAKICAgICB2b2lkIHNldFVzZUZpeGVkTGF5b3V0KGJvb2wpOwogICAg
IHZvaWQgc2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICBi
b29sIHVzZUZpeGVkTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbV91c2VGaXhlZExheW91dDsgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4
MWUzZjhjN2VhZjQ5YWE4ODY3ZjQ0ZDEwMTZmOTM0OTdhOWExODc4Li4zNWU0YzhhYTZjNDdhZGZi
Yzg0Y2RmMmM0MjE3NWFkNTY4MjFmNmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC04MTYsNiArODE2LDExIEBAIHZvaWQgV2ViUGFnZTo6
c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhkb3VibGUgcGFnZVpvb21GYWN0b3IsIGRvdWJsZSB0
ZXh0Wm9vbUZhCiAgICAgcmV0dXJuIGZyYW1lLT5zZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKHN0
YXRpY19jYXN0PGZsb2F0PihwYWdlWm9vbUZhY3RvciksIHN0YXRpY19jYXN0PGZsb2F0Pih0ZXh0
Wm9vbUZhY3RvcikpOwogfQogCit2b2lkIFdlYlBhZ2U6OndpbmRvd1NjcmVlbkRpZENoYW5nZSh1
aW50NjRfdCBkaXNwbGF5SUQpCit7CisgICAgbV9wYWdlLT53aW5kb3dTY3JlZW5EaWRDaGFuZ2Uo
c3RhdGljX2Nhc3Q8UGxhdGZvcm1EaXNwbGF5SUQ+KGRpc3BsYXlJRCkpOworfQorCiB2b2lkIFdl
YlBhZ2U6OnNjYWxlUGFnZShkb3VibGUgc2NhbGUsIGNvbnN0IEludFBvaW50JiBvcmlnaW4pCiB7
CiAgICAgbV9wYWdlLT5zZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGUsIG9yaWdpbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAyZWMyYTY1Yjc1NGQ3
YjBlNTljYmFhZWJmMmVmNDM2MjAxZmI1ZjBkLi44YTdmODM1MWEzZjFkOTNlMGVmOTcwOTg3NjU1
MjEzNGE4M2RlNzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50
UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlS2V5Ym9hcmRV
SU1vZGUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMjU2LDYgKzI1Nyw3IEBAIHB1
YmxpYzoKICAgICBkb3VibGUgcGFnZVpvb21GYWN0b3IoKSBjb25zdDsKICAgICB2b2lkIHNldFBh
Z2Vab29tRmFjdG9yKGRvdWJsZSk7CiAgICAgdm9pZCBzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3Jz
KGRvdWJsZSBwYWdlWm9vbUZhY3RvciwgZG91YmxlIHRleHRab29tRmFjdG9yKTsKKyAgICB2b2lk
IHdpbmRvd1NjcmVlbkRpZENoYW5nZSh1aW50NjRfdCk7CiAKICAgICB2b2lkIHNjYWxlUGFnZShk
b3VibGUgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBvcmlnaW4pOwogICAgIGRvdWJs
ZSBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYzIyNDFlYmJiNTZkN2Fk
ZWU5ZTk2OGY2MTRlMDdkYjI3NjIwYTA3MS4uYTU4NTNjMjI0OTM5ODljMjE3ZDJmNDA2NjUxZDVh
ZjRjMTI3NzM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTExMyw2ICsxMTMsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlIHsKICAgICBTZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKGRvdWJsZSBwYWdlWm9vbUZh
Y3RvciwgZG91YmxlIHRleHRab29tRmFjdG9yKQogICAgIFNldFBhZ2Vab29tRmFjdG9yKGRvdWJs
ZSB6b29tRmFjdG9yKQogICAgIFNldFRleHRab29tRmFjdG9yKGRvdWJsZSB6b29tRmFjdG9yKQor
ICAgIFdpbmRvd1NjcmVlbkRpZENoYW5nZSh1aW50NjRfdCBkaXNwbGF5SUQpCiAKICAgICBTY2Fs
ZVBhZ2UoZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpJbnRQb2ludCBvcmlnaW4pCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110782</attachid>
            <date>2011-10-12 17:51:42 -0700</date>
            <delta_ts>2011-10-13 10:23:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68911-20111012175141.patch</filename>
            <type>text/plain</type>
            <size>49152</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTczMTYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYzk5OTJjNzVhNDdkZTZhZTY4NzQ0
Y2E3YzcwZmNhZmI2OWYyMzdjLi4zNjBmZjVlYmU4NjVhOTQ2ZmNkYWQzNjNjNTU5NjI3OGE3NmE5
M2FmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTAtMTIgIENocmlzIE1hcnJpbiAgPGNt
YXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFN5bmMgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNh
bGxiYWNrIHRvIENWRGlzcGxheUxpbmsgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODkxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3QgdG8gbWFrZSBzdXJlIHJlcXVlc3RBbmltYXRpb25G
cmFtZSBldmVudHMgZmlyZSBpbnNpZGUgaWZyYW1lCisKKyAgICAgICAgKiBmYXN0L2FuaW1hdGlv
bi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJhbWUuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9hbmltYXRpb24vc2NyaXB0LXRlc3RzL3JlcXVlc3Qt
YW5pbWF0aW9uLWZyYW1lLXN1YmZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDExLTEwLTEyICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgogCiAgICAgICAgIFNraXAgYWNjZXNz
aWJpbGl0eS9tZW51LWxpc3Qtc2VuZHMtY2hhbmdlLW5vdGlmaWNhdGlvbi5odG1sIG9uIE1hYy4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9u
LWZyYW1lLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9y
ZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcy
YjQzOGQ0Mzk1ZjQ4ODUwNmEyYzhjNTJhODlmNmRjZmVlYjEwMTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJh
bWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHJlcXVlc3RBbmltYXRpb25G
cmFtZSBpbiBhbiBpZnJhbWUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
Y2FsbGJhY2tJbnZva2VkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlv
bi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
YW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjlhMjMzNmQ3ZWZkOWNkMWVkYjEzZGUwYWI5YzM1NGM3ZGRhZTBkZjQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1p
ZnJhbWUuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxpZnJhbWUgc3JjPSJzY3JpcHQt
dGVzdHMvcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtc3ViZnJhbWUuaHRtbCIgd2lkdGg9IjcwMCIg
aGVpZ2h0PSI1MDAiPjwvaWZyYW1lPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUgaW4gYW4gaWZyYW1lIik7CisKKyAgICAgICAgdmFyIGNhbGxiYWNrSW52b2tl
ZCA9IGZhbHNlOworICAgIAorICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0K
KworICAgICAgICAvLyBDYWxsZWQgZnJvbSBzdWJmcmFtZS4KKyAgICAgICAgZnVuY3Rpb24gZG9E
aXNwbGF5KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7
CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgZnVuY3Rpb24gZG9DaGVja1Jlc3VsdCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY2FsbGJhY2tJbnZva2VkIik7CisgICAg
ICAgIH0KKyAgICAKKyAgICAgICAgZnVuY3Rpb24gZG9UZXN0RG9uZSgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworICAgIDwvc2NyaXB0PgorCisgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vc2NyaXB0LXRlc3Rz
L3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXN1YmZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2FuaW1hdGlvbi9zY3JpcHQtdGVzdHMvcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtc3ViZnJhbWUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43YTZkOWMyMjdkNDRhODdhOGFlYzZmMDdiOWJiNWZiNjQ3NTI3NGMy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vc2NyaXB0LXRl
c3RzL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXN1YmZyYW1lLmh0bWwKQEAgLTAsMCArMSwyOSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c3BhbiBpZD0iZSI+PC9zcGFuPgorPHNwYW4gaWQ9ImYiPjwvc3Bhbj4KKzxzY3JpcHQ+
CisgICAgdmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZSIpOworICAgIHdpbmRvdy53
ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7CisgICAgICAgIHBhcmVudC5j
YWxsYmFja0ludm9rZWQgPSB0cnVlOworICAgIH0sIGUpOworCisgICAgcGFyZW50LmRvRGlzcGxh
eSgpOworICAgIAorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHBhcmVudC5k
b0NoZWNrUmVzdWx0KCk7CisgICAgfSwgMTAwKTsKKworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7CisgICAgICAgIHBhcmVudC5kb1Rlc3REb25lKCk7CisgICAgfSwgMjAwKTsgICAgCis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYmIzOWFiZTQ1NzQwMGM4ODkx
NDdiY2ZiNzE3MTdlNzY5NDcwNGM2Li45YzdlZWYzNDQxZWY3NjFkMjBmNjJiYjcyMDMxMTc2ODdm
ZmJhMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTEtMTAtMTIgIENocmlzIE1h
cnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFN5bmMgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lIGNhbGxiYWNrIHRvIENWRGlzcGxheUxpbmsgb24gTWFjCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODkxMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvYW5pbWF0aW9uL3JlcXVl
c3QtYW5pbWF0aW9uLWZyYW1lLWlmcmFtZS5odG1sCisKKyAgICAgICAgSW1wbGVtZW50IENWRGlz
cGxheUxpbmsgd2hpY2ggY2hlY2tzIHRvIHNlZSBpZiBhbnkgc2NoZWR1bGVBbmltYXRpb24gcmVx
dWVzdHMKKyAgICAgICAgaGF2ZSBjb21lIGluLiBJZiBzbywgcmVtZW1iZXIgdGhlIHRpbWVzdGFt
cCBhbmQgZG8gYSBjYWxsT25NYWluVGhyZWFkIHRvIGZpcmUKKyAgICAgICAgdGhlIGNhbGxiYWNr
cy4gQSBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyIGlzIGEgc2luZ2xldG9uIHdoaWNoIGhh
cyBhIGxpc3QKKyAgICAgICAgb2YgRGlzcGxheVJlZnJlc2hNb25pdG9ycywgb25lIGZvciBlYWNo
IGRpc3BsYXkuIEVhY2ggbW9uaXRvciBoYXMgb25lIG9yIG1vcmUKKyAgICAgICAgRGlzcGxheVJl
ZnJlc2hNb25pdG9yQ2xpZW50cywgd2hpY2ggaXMgYSBhYnN0cmFjdCB2aXJ0dWFsIGNsYXNzIGlt
cGxlbWVudGVkCisgICAgICAgIGJ5IFNjcmlwdEFuaW1hdGlvbkNvbnRyb2xsZXIuIFdoZW4gYW4g
YW5pbWF0aW9uIGlzIHNjaGVkdWxlZCwgdGhlCisgICAgICAgIGRpc3BsYXlSZWZyZXNoRmlyZWQg
bWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY2xpZW50LCB3aGljaCBpbiB0dXJuIGNhbGxzIHRoZQor
ICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgY2FsbGJhY2tzLiAKKworICAgICAgICBEaXNw
bGF5UmVmcmVzaE1vbml0b3IgYW5kIHRoZXJlZm9yZSB0aGUgQ1ZEaXNwbGF5TGluayBpdCBvd25z
IGlzIGRpc2NhcmRlZAorICAgICAgICB3aGVuIGl0IG5vIGxvbmdlciBoYXMgYW55IGNsaWVudHMu
IFRoaXMgbWluaW1pemVzIHRoZSBudW1iZXIgb2YgY29uY3VycmVudAorICAgICAgICBDVkRpc3Bs
YXlMaW5rIHRocmVhZHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFt
ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1NjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRlZEFuaW1hdGlv
bkNvbnRyb2xsZXI6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OndpbmRvd1NjcmVlbkRpZENoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNjaGVkdWxl
QW5pbWF0aW9uKToKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmRpc3BsYXlS
ZWZyZXNoRmlyZWQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OndpbmRvd1NjcmVlbkRpZENo
YW5nZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpk
aXNwbGF5SUQpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQ6OkRpc3BsYXlSZWZy
ZXNoTW9uaXRvckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0
b3JDbGllbnQ6On5EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50OjpmaXJlRGlzcGxheVJlZnJlc2hJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OkRpc3BsYXlSZWZy
ZXNoTW9uaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJl
ZnJlc2hEaXNwbGF5T25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6ZmluZE1vbml0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6cmVnaXN0ZXJDbGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6dW5yZWdpc3RlckNsaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzY2hl
ZHVsZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JN
YW5hZ2VyOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudDo6c2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpoYXNDbGllbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheUlEKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFn
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0
b3JNYWMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRv
cjo6ZGlzcGxheUxpbmtDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVz
aE1vbml0b3I6On5EaXNwbGF5UmVmcmVzaE1vbml0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheVJlZnJlc2hNb25pdG9yOjpzY2hlZHVsZUFuaW1hdGlvbik6CisKIDIwMTEtMTAtMTIgIEx1
a2UgTWFjcGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDbGVh
biB1cCBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uIGltcGxlbWVudGF0aW9uIGFuZCBFVGV4dERl
Y29yYXRpb24gdXNhZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
biBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDIwM2M3YTYyMzJjY2M4OTVk
NDdhMjMyZjAyZmMxNmFmNmVlNGU1NDIuLmU0NzNiYTk1NzIyMWViOTg1YjZhOTE2Y2E0MzcwMzYz
ZTNlNTE2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC03MzIsNiArNzMyLDcgQEAgX19aTjdX
ZWJDb3JlNFBhZ2UyMHJlbW92ZVNjcm9sbGFibGVBcmVhRVBOU18xNFNjcm9sbGFibGVBcmVhRQog
X19aTjdXZWJDb3JlNFBhZ2UyMHNldERldmljZVNjYWxlRmFjdG9yRWYKIF9fWk43V2ViQ29yZTRQ
YWdlMjB1bm1hcmtBbGxUZXh0TWF0Y2hlc0V2CiBfX1pON1dlYkNvcmU0UGFnZTIxbWFya0FsbE1h
dGNoZXNGb3JUZXh0RVJLTjNXVEY2U3RyaW5nRWpiagorX19aTjdXZWJDb3JlNFBhZ2UyMXdpbmRv
d1NjcmVlbkRpZENoYW5nZUVqCiBfX1pON1dlYkNvcmU0UGFnZTIyYWxsVmlzaXRlZFN0YXRlQ2hh
bmdlZEVQTlNfOVBhZ2VHcm91cEUKIF9fWk43V2ViQ29yZTRQYWdlMjNjbGVhclVuZG9SZWRvT3Bl
cmF0aW9uc0V2CiBfX1pON1dlYkNvcmU0UGFnZTI3c2V0SmF2YVNjcmlwdFVSTHNBcmVBbGxvd2Vk
RWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAwYWJmNGY3NTk0ZDc2YzNiY2MzNmVkYWRjZWEwMjE4YTdkZTJkNjNlLi40OTJmOGVm
MTFiMzU5NWMyY2ZhYTUwMDAyOWExYmRjYjMwY2E2OGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTY3LDYgKzExNjcsOCBA
QAogCQk0OUE1QTRGRTEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlBNUE0RjgxM0UyRjAx
RTAwQ0ZEQUUwIC8qIFBlZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJNDlBNUE0RkYxM0UyRjAx
RTAwQ0ZEQUUwIC8qIFBlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OUE1QTRGOTEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5l
Y3Rpb24uaCAqLzsgfTsKIAkJNDlBNUE1MDExM0UyRjAxRTAwQ0ZEQUUwIC8qIFNpZ25hbGluZ0Nh
bGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OUE1QTRGQjEzRTJGMDFFMDBDRkRBRTAgLyogU2lnbmFsaW5nQ2FsbGJhY2suaCAqLzsgfTsKKwkJ
NDlBRjJENjkxNDQzNUQwNTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlBRjJENjgxNDQzNUQw
NTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oICovOyB9OworCQk0OUFGMkQ2QzE0
NDM1RDIxMDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QUYyRDZCMTQ0MzVEMjEwMDE2
QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwICovOyB9OwogCQk0OUJFMzBEMjEz
RDk3NDdCMDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUJFMzBEMTEzRDk3NDdCMDAzODA4
QTkgLyogSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgKi87IH07CiAJCTQ5QkUzMEYzMTNEOTc2
NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkUzMEVGMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1Bl
ZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJNDlCRTMwRjQxM0Q5NzY0NjAwMzgwOEE5IC8qIEpT
UGVlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5QkUzMEYwMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmggKi87
IH07CkBAIC0xMjkwLDYgKzEyOTIsNyBAQAogCQk0OUVFRDE0RTEwNTE5NzFBMDAwOTlGQUIgLyog
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLzsgfTsKIAkJNDlFRUQxNEYxMDUx
OTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTRDMTA1MTk3MUEw
MDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi87IH07CiAJCTQ5
RUVEMTUwMTA1MTk3MUEwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQx
NEQxMDUxOTcxQTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAg
Ki87IH07CisJCTQ5RkM3QTUwMTQ0NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlG
QzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi87IH07
CiAJCTQ5RkZCRjFEMTFDODU1MEUwMDZBNzExOCAvKiBHcmFwaGljc0NvbnRleHQzRE1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjFDMTFD
ODU1MEUwMDZBNzExOCAvKiBHcmFwaGljc0NvbnRleHQzRE1hYy5tbSAqLzsgfTsKIAkJNDlGRkJG
M0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLmggKi87IH07CiAJCTQ5RkZCRjQwMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlGRkJG
M0UxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi87IH07CkBAIC04MzE1LDYgKzgz
MTgsOCBAQAogCQk0OUE1QTRGQTEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rpb24uaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFBlZXJDb25uZWN0aW9uLmlkbDsgcGF0aCA9IHAycC9Q
ZWVyQ29ubmVjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QTVBNEZC
MTNFMkYwMUUwMENGREFFMCAvKiBTaWduYWxpbmdDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBTaWduYWxpbmdDYWxsYmFjay5oOyBwYXRoID0gcDJwL1NpZ25hbGlu
Z0NhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QTVBNEZDMTNFMkYw
MUUwMENGREFFMCAvKiBTaWduYWxpbmdDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1l
ID0gU2lnbmFsaW5nQ2FsbGJhY2suaWRsOyBwYXRoID0gcDJwL1NpZ25hbGluZ0NhbGxiYWNrLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlBRjJENjgxNDQzNUQwNTAwMTZBNzg0
IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDlBRjJENkIxNDQzNUQyMTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUJFMzBEMTEzRDk3
NDdCMDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlCRTMwRUYxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTUGVl
ckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQ
ZWVyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QkUzMEYw
MTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTUGVlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTg0NTcsNiArODQ2Miw3IEBACiAJCTQ5RUVEMTRCMTA1MTk3MTkwMDA5OUZBQiAv
KiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZBQiAv
KiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RUVEMTREMTA1MTk3MUEwMDA5OUZBQiAvKiBKU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlS
ZWZyZXNoTW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
aXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
OUZGQkYxQzExQzg1NTBFMDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0M0RNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHQzRE1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4
IC8qIFdlYkdMTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xM
YXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZGQkYzRTExQzkzRUUzMDA2
QTcxMTggLyogV2ViR0xMYXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYkdMTGF5ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTA0
NSw2ICsxOTA1MSw3IEBACiAJCQkJMzdDMjM2MEYxMDk3RUU3NzAwRUY5RjcyIC8qIENvbXBsZXhU
ZXh0Q29udHJvbGxlci5oICovLAogCQkJCTM3QzIzODFGMTA5OEM4NDIwMEVGOUY3MiAvKiBDb21w
bGV4VGV4dENvbnRyb2xsZXJBVFNVSS5jcHAgKi8sCiAJCQkJMzdDMjM4MjAxMDk4Qzg0MjAwRUY5
RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tICovLAorCQkJCTQ5QUYyRDZC
MTQ0MzVEMjEwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwICovLAogCQkJ
CUIyNzUzNTRCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50TWFjLm1tICovLAogCQkJCUIy
NzUzNTRDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RNYWMubW0gKi8sCiAJCQkJQjI3NTM1
NEQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZU1hYy5tbSAqLywKQEAgLTE5MDk4LDYgKzE5
MTA1LDggQEAKIAkJCQlCMjc1MzUzOTBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3IuaCAqLywKIAkJ
CQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFjZS5oICovLAogCQkJCUE4Q0I0
MTAyMEU4NUI4QTUwMDMyQzRGMCAvKiBEYXNoQXJyYXkuaCAqLywKKwkJCQk0OUZDN0E0RjE0NDRB
RjVGMDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCAqLywKKwkJCQk0OUFGMkQ2
ODE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggKi8sCiAJCQkJNkU2
N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oICovLAogCQkJCUIyNzUzNTNB
MEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmNwcCAqLywKIAkJCQlCMjc1MzUzQjBCMDUz
ODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludC5oICovLApAQCAtMjQ2MTQsNiArMjQ2MjMsNyBAQAog
CQkJCTMxMDYwMzc5MTQzMjgxQ0QwMEFCRjRCQSAvKiBET01XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwNjAzN0IxNDMyODFDRDAwQUJGNEJBIC8qIERPTVdlYktp
dENTU0ZpbHRlclZhbHVlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QUNCMjEyMTQz
RTcxMjgwMDZCQ0E1RiAvKiBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDlBRjJENjkxNDQzNUQwNTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yNzQ2NSw2ICsyNzQ3NSw4IEBACiAJCQkJMzEwNjAzN0ExNDMy
ODFDRDAwQUJGNEJBIC8qIERPTVdlYktpdENTU0ZpbHRlclZhbHVlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMjlBQ0IyMTQxNDNFNzQ5ODAwNkJDQTVGIC8qIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMDkwODdGMTQ0NEZEQjIwMDAyODkxNyAvKiBTY3Jv
bGxiYXJUaGVtZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0OUFGMkQ2QzE0NDM1RDIxMDAxNkE3
ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5
RkM3QTUwMTQ0NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA3ZTRkZTFmOGJjOTMzMGM2Mjhh
ZjM1ZmU0ZDM4Y2Y4ZDg2MmE3YmFlLi5mN2UwODVlOWQyZThkYjYxYTFjMTM3ZWNmNjBhNmQ0Zjlm
OTg4OGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQ3NzQsNiArNDc3NCwxNSBAQCB2
b2lkIERvY3VtZW50OjpyZXN1bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3Mo
KQogI2VuZGlmCiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0
Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCit7CisjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FKQorICAgIGlmIChtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcikKKyAgICAgICAg
bV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXItPndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNw
bGF5SUQpOworI2VuZGlmCit9CisKKwogU3RyaW5nIERvY3VtZW50OjpkaXNwbGF5U3RyaW5nTW9k
aWZpZWRCeUVuY29kaW5nKGNvbnN0IFN0cmluZyYgc3RyKSBjb25zdAogewogICAgIGlmIChtX2Rl
Y29kZXIpCkBAIC01MTE1LDggKzUxMjQsMTAgQEAgdm9pZCBEb2N1bWVudDo6bG9hZEV2ZW50RGVs
YXlUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiopCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FKQogaW50IERvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoUGFz
c1JlZlB0cjxSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjaz4gY2FsbGJhY2ssIEVsZW1lbnQq
IGFuaW1hdGlvbkVsZW1lbnQpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJv
bGxlcikKKyAgICBpZiAoIW1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyKSB7CiAgICAgICAg
IG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyID0gU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyOjpjcmVhdGUodGhpcyk7CisgICAgICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
LT53aW5kb3dTY3JlZW5EaWRDaGFuZ2UocGFnZSgpLT5kaXNwbGF5SUQoKSk7CisgICAgfQogCiAg
ICAgcmV0dXJuIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLT5yZWdpc3RlckNhbGxiYWNr
KGNhbGxiYWNrLCBhbmltYXRpb25FbGVtZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXgg
Zjc5OTAxMmJlZjBmYTIzNzVhYTcwYmIxYzAyY2UxYzY0ZjlkNjg5OC4uNDNkNTg4ZTI2MjIyODFj
NWY0Mzg4OTM0NDFkM2U3NWVhYzI2NzBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM4LDYg
KzM4LDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIK
ICNpbmNsdWRlICJQYWdlVmlzaWJpbGl0eVN0YXRlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TY3Jl
ZW4uaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlN0cmluZ1dpdGhEaXJlY3Rpb24uaCIKQEAgLTk0NCw2
ICs5NDUsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZFNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVTY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICAKKyAgICB2b2lkIHdpbmRv
d1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoZWRQYXJzaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggNmVjZjQ3YjNlZjI5MzFkMWI3MDI4MzdlNzI4
NDdiYzk4MTk0NDdjOS4uNmEzZWJlZjc0MTAyNGVkYWQ2YTYyNzBiNTRlZmNmY2QxMzk1MmMxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAKQEAgLTUzLDYgKzUzLDkgQEAgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpTY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogI2lmIFVTRShSRVFV
RVNUX0FOSU1BVElPTl9GUkFNRV9USU1FUikKICAgICAsIG1fYW5pbWF0aW9uVGltZXIodGhpcywg
JlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6YW5pbWF0aW9uVGltZXJGaXJlZCkKICAgICAs
IG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZSgwKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1f
dXNlVGltZXIoZmFsc2UpCisjZW5kaWYKICNlbmRpZgogewogfQpAQCAtMTQ2LDkgKzE0OSwyOCBA
QCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2VydmljZVNjcmlwdGVkQW5pbWF0
aW9ucyhET01UaW1lU3RhbXAgdGltZSkKICAgICAgICAgc2NoZWR1bGVBbmltYXRpb24oKTsKIH0K
ICAgICAKK3ZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjp3aW5kb3dTY3JlZW5EaWRD
aGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQoreworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCktPndpbmRv
d1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQsIHRoaXMpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oZGlzcGxheUlEKTsKKyNlbmRpZiAgICAKK30KKwogdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXI6OnNjaGVkdWxlQW5pbWF0aW9uKCkKIHsKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUVfVElNRVIpCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICghbV91c2VUaW1lcikg
eworICAgICAgICBtX3VzZVRpbWVyID0gIURpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNo
YXJlZE1hbmFnZXIoKS0+c2NoZWR1bGVBbmltYXRpb24odGhpcyk7CisgICAgICAgIGlmICghbV91
c2VUaW1lcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAobV9h
bmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisgICAgICAgIAogICAg
IGRvdWJsZSBzY2hlZHVsZURlbGF5ID0gbWF4PGRvdWJsZT4oTWluaW11bUFuaW1hdGlvbkludGVy
dmFsIC0gKGN1cnJlbnRUaW1lKCkgLSBtX2xhc3RBbmltYXRpb25GcmFtZVRpbWUpLCAwKTsKICAg
ICBtX2FuaW1hdGlvblRpbWVyLnN0YXJ0T25lU2hvdChzY2hlZHVsZURlbGF5KTsKICNlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgKaW5k
ZXggZWMyNGZiMzU1NDA0NjQyNzMwZTIzZmYxZjM2Nzk5OTU0N2FhN2NjMS4uN2ZmNjgzMTQ2OWQz
MTUzZmQzYzE4ZTI4ZTZjZTRmZGU5YzNkYzY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaApAQCAtMjksOCArMjksMTIgQEAKICNpZiBF
TkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAjaW5jbHVkZSAiRE9NVGltZVN0YW1wLmgi
CiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSKQorI2lmIFBMQVRGT1JNKE1B
QykKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKKyNlbmRpZgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjZW5kaWYKKyNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDIsNyArNDYsMTEgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFz
cyBFbGVtZW50OwogY2xhc3MgUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s7CiAKLWNsYXNz
IFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlciB7CitjbGFzcyBTY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXIKKyNpZiBQTEFURk9STShNQUMpCisgICAgOiBwdWJsaWMgRGlzcGxheVJlZnJlc2hN
b25pdG9yQ2xpZW50CisjZW5kaWYKK3sKIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlcik7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyPiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNTks
NiArNjcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kKCk7CiAgICAgdm9pZCByZXN1bWUo
KTsKIAorICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsK
KwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIoRG9j
dW1lbnQqKTsKICAgICAKQEAgLTc1LDYgKzg1LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBhbmlt
YXRpb25UaW1lckZpcmVkKFRpbWVyPFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcj4qKTsKICAg
ICBUaW1lcjxTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI+IG1fYW5pbWF0aW9uVGltZXI7CiAg
ICAgZG91YmxlIG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZTsKKworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICAvLyBPdmVycmlkZSBmb3IgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50CisgICAgdm9p
ZCBkaXNwbGF5UmVmcmVzaEZpcmVkKGRvdWJsZSB0aW1lc3RhbXApIHsgc2VydmljZVNjcmlwdGVk
QW5pbWF0aW9ucyhjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKHRpbWVzdGFtcCkpOyB9CisK
KyAgICBib29sIG1fdXNlVGltZXI7CisjZW5kaWYKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKaW5kZXggMzRmYTQwYTg3NTdjOWNhOWNlNDQ3NWIyNjRiNjM5Y2YxY2I4MDBlOS4uYmZiZTcw
YTMyMjdkZjkyNTViOTVjNjkzMDc2YmUyMWVmYzI2NTFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBA
IC0xNzIsNiArMTcyLDcgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAj
aWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCiAgICAgLCBtX3Zpc2liaWxpdHlTdGF0ZShQ
YWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSkKICNlbmRpZgorICAgICwgbV9kaXNwbGF5SUQoMCkK
IHsKICAgICBpZiAoIWFsbFBhZ2VzKSB7CiAgICAgICAgIGFsbFBhZ2VzID0gbmV3IEhhc2hTZXQ8
UGFnZSo+OwpAQCAtNjgwLDYgKzY4MSwxNiBAQCB2b2lkIFBhZ2U6OndpbGxNb3ZlT2Zmc2NyZWVu
KCkKICAgICB9CiB9CiAKK3ZvaWQgUGFnZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3Jt
RGlzcGxheUlEIGRpc3BsYXlJRCkKK3sKKyAgICBtX2Rpc3BsYXlJRCA9IGRpc3BsYXlJRDsKKyAg
ICAKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBpZiAoZnJhbWUtPmRvY3Vt
ZW50KCkpCisgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+d2luZG93U2NyZWVuRGlkQ2hh
bmdlKGRpc3BsYXlJRCk7CisgICAgfQorfQorCiB2b2lkIFBhZ2U6OnVzZXJTdHlsZVNoZWV0TG9j
YXRpb25DaGFuZ2VkKCkKIHsKICAgICAvLyBGSVhNRTogRXZlbnR1YWxseSB3ZSB3aWxsIG1vdmUg
dG8gYSBtb2RlbCBvZiBqdXN0IGJlaW5nIGhhbmRlZCB0aGUgc2hlZXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggMTM5MGM5ODRkYjZhNjUyODYyMzIyMzkzZmZhZDgxZTU2YmUyNjI1Yy4uZTcwZmRiZDA5OWRj
ZjFhNWQzNTM1Y2Y0NDY5ZWZiYjdjYTgzMWY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTI1LDYgKzI1
LDcgQEAKICNpbmNsdWRlICJGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIkxheW91dFR5cGVzLmgi
CiAjaW5jbHVkZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU2Ny
ZWVuLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFy
Z3VtZW50cy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0yNTYsNiArMjU3LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRpZE1vdmVPbnNjcmVlbigpOwogICAg
ICAgICB2b2lkIHdpbGxNb3ZlT2Zmc2NyZWVuKCk7CiAKKyAgICAgICAgdm9pZCB3aW5kb3dTY3Jl
ZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQpOworICAgICAgICAKICAgICAgICAgdm9pZCB1
c2VyU3R5bGVTaGVldExvY2F0aW9uQ2hhbmdlZCgpOwogICAgICAgICBjb25zdCBTdHJpbmcmIHVz
ZXJTdHlsZVNoZWV0KCkgY29uc3Q7CiAKQEAgLTMxMCw2ICszMTMsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZvaWQgc2V0VmlzaWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmlsaXR5U3Rh
dGUsIGJvb2wpOwogI2VuZGlmCiAKKyAgICAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlE
KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KKyAgICAgICAgCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdm9pZCBpbml0R3JvdXAoKTsKIApAQCAtNDE2LDYgKzQyMSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKICAgICAgICAgUGFn
ZVZpc2liaWxpdHlTdGF0ZSBtX3Zpc2liaWxpdHlTdGF0ZTsKICNlbmRpZgorICAgICAgICBQbGF0
Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJRDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaAppbmRleCA3NjRmZTAy
ZGViZTY5NDhlZDBmMmQ2OWQ3YTgzN2I1Y2I3YjFmOGU3Li44NGY3Y2M2MTE4OTE5ZWQwNzZmM2I0
YjViY2FkYjI2MmUwMTY4NWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVNjcmVlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2Ny
ZWVuLmgKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBQ
TEFURk9STShNQUMpCisjaW5jbHVkZSA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisKICNpZmRl
ZiBfX09CSkNfXwogICAgIEBjbGFzcyBOU1NjcmVlbjsKICAgICBAY2xhc3MgTlNXaW5kb3c7CkBA
IC0zOCw2ICs0MCw5IEBACiAgICAgY2xhc3MgTlNTY3JlZW47CiAgICAgY2xhc3MgTlNXaW5kb3c7
CiAjZW5kaWYKK3R5cGVkZWYgQ0dEaXJlY3REaXNwbGF5SUQgUGxhdGZvcm1EaXNwbGF5SUQ7Cisj
ZWxzZQordHlwZWRlZiB1aW50NjRfdCBQbGF0Zm9ybURpc3BsYXlJRDsKICNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTg2YmRkN2Ji
ODAzYmMxOTA5YjhmOTc5ZTMwNDAxZjE3NzZkNmEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcApAQCAt
MCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFJFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FKQorCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCisK
KyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitE
aXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCgp
CisgICAgOiBtX3NjaGVkdWxlZChmYWxzZSkKKyAgICAsIG1fZGlzcGxheUlESXNTZXQoZmFsc2Up
Cit7Cit9CisKK0Rpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudDo6fkRpc3BsYXlSZWZyZXNoTW9u
aXRvckNsaWVudCgpCit7CisgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVk
TWFuYWdlcigpLT51bnJlZ2lzdGVyQ2xpZW50KHRoaXMpOworfQorCit2b2lkIERpc3BsYXlSZWZy
ZXNoTW9uaXRvckNsaWVudDo6ZmlyZURpc3BsYXlSZWZyZXNoSWZOZWVkZWQoZG91YmxlIHRpbWVz
dGFtcCkKK3sKKyAgICBpZiAobV9zY2hlZHVsZWQpIHsKKyAgICAgICAgbV9zY2hlZHVsZWQgPSBm
YWxzZTsKKyAgICAgICAgZGlzcGxheVJlZnJlc2hGaXJlZCh0aW1lc3RhbXApOworICAgIH0KK30K
KworRGlzcGxheVJlZnJlc2hNb25pdG9yOjpEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1E
aXNwbGF5SUQgZGlzcGxheUlEKQorICAgIDogbV90aW1lc3RhbXAoMCkKKyAgICAsIG1fYWN0aXZl
KHRydWUpCisgICAgLCBtX3NjaGVkdWxlZChmYWxzZSkKKyAgICAsIG1fZGlzcGxheUlEKGRpc3Bs
YXlJRCkKKyNpZiBQTEFURk9STShNQUMpCisgICAgLCBtX2Rpc3BsYXlMaW5rKDApCisjZW5kaWYK
K3sKK30KKwordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlZnJlc2hEaXNwbGF5T25NYWlu
VGhyZWFkKHZvaWQqIGRhdGEpCit7CisgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiBtb25pdG9y
ID0gc3RhdGljX2Nhc3Q8RGlzcGxheVJlZnJlc2hNb25pdG9yKj4oZGF0YSk7CisKKyAgICBkb3Vi
bGUgdGltZXN0YW1wOworICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtb25pdG9yLT5t
X211dGV4KTsKKyAgICAgICAgbW9uaXRvci0+bV9zY2hlZHVsZWQgPSBmYWxzZTsKKyAgICAgICAg
dGltZXN0YW1wID0gbW9uaXRvci0+bV90aW1lc3RhbXA7CisgICAgfQorCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtb25pdG9yLT5tX2NsaWVudHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1v
bml0b3ItPm1fY2xpZW50c1tpXS0+ZmlyZURpc3BsYXlSZWZyZXNoSWZOZWVkZWQodGltZXN0YW1w
KTsKK30KKyAKK0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIqIERpc3BsYXlSZWZyZXNoTW9u
aXRvck1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKQoreworICAgIHN0YXRpYyBEaXNwbGF5UmVmcmVz
aE1vbml0b3JNYW5hZ2VyKiBzdGF0aWNNYW5hZ2VyID0gbmV3IERpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hbmFnZXI7CisgICAgcmV0dXJuIHN0YXRpY01hbmFnZXI7Cit9CisKK3NpemVfdCBEaXNwbGF5
UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpmaW5kTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCBkaXNw
bGF5SUQpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX21vbml0b3JzLnNp
emUoKTsgKytpKQorICAgICAgICBpZiAobV9tb25pdG9yc1tpXS0+ZGlzcGxheUlEKCkgPT0gZGlz
cGxheUlEKQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICAKKyAgICByZXR1cm4g
bm90Rm91bmQ7Cit9CisKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6cmVnaXN0
ZXJDbGllbnQoRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYg
KCFjbGllbnQtPm1fZGlzcGxheUlESXNTZXQpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisg
ICAgc2l6ZV90IGkgPSBmaW5kTW9uaXRvcihjbGllbnQtPm1fZGlzcGxheUlEKTsKKyAgICBEaXNw
bGF5UmVmcmVzaE1vbml0b3IqIG1vbml0b3I7CisgICAgCisgICAgaWYgKGkgPT0gbm90Rm91bmQp
IHsKKyAgICAgICAgbW9uaXRvciA9IG5ldyBEaXNwbGF5UmVmcmVzaE1vbml0b3IoY2xpZW50LT5t
X2Rpc3BsYXlJRCk7CisgICAgICAgIG1fbW9uaXRvcnMuYXBwZW5kKG1vbml0b3IpOworICAgIH0g
ZWxzZQorICAgICAgICBtb25pdG9yID0gbV9tb25pdG9yc1tpXTsKKyAgICAgICAgCisgICAgbW9u
aXRvci0+YWRkQ2xpZW50KGNsaWVudCk7Cit9CisKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFuYWdlcjo6dW5yZWdpc3RlckNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqIGNs
aWVudCkKK3sKKyAgICBpZiAoIWNsaWVudC0+bV9kaXNwbGF5SURJc1NldCkKKyAgICAgICAgcmV0
dXJuOworICAgICAgICAKKyAgICBzaXplX3QgaSA9IGZpbmRNb25pdG9yKGNsaWVudC0+bV9kaXNw
bGF5SUQpOworICAgIGlmIChpID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiBtb25pdG9yID0gbV9tb25pdG9yc1tpXTsKKyAgICBp
ZiAobW9uaXRvci0+cmVtb3ZlQ2xpZW50KGNsaWVudCkpIHsKKyAgICAgICAgaWYgKCFtb25pdG9y
LT5oYXNDbGllbnRzKCkpIHsKKyAgICAgICAgICAgIG1fbW9uaXRvcnMucmVtb3ZlKGkpOworICAg
ICAgICAgICAgZGVsZXRlIG1vbml0b3I7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2NoZWR1bGVBbmltYXRpb24oRGlzcGxheVJlZnJl
c2hNb25pdG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKCFjbGllbnQtPm1fZGlzcGxheUlE
SXNTZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgc2l6ZV90IGkgPSBm
aW5kTW9uaXRvcihjbGllbnQtPm1fZGlzcGxheUlEKTsKKyAgICBBU1NFUlQoaSAhPSBub3RGb3Vu
ZCk7CisKKyAgICBjbGllbnQtPnNjaGVkdWxlQW5pbWF0aW9uKCk7CisgICAgcmV0dXJuIG1fbW9u
aXRvcnNbaV0tPnNjaGVkdWxlQW5pbWF0aW9uKCk7Cit9CisKK3ZvaWQgRGlzcGxheVJlZnJlc2hN
b25pdG9yTWFuYWdlcjo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRp
c3BsYXlJRCwgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYg
KGNsaWVudC0+bV9kaXNwbGF5SURJc1NldCAmJiBjbGllbnQtPm1fZGlzcGxheUlEID09IGRpc3Bs
YXlJRCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHVucmVnaXN0ZXJDbGllbnQoY2xpZW50
KTsKKyAgICBjbGllbnQtPm1fZGlzcGxheUlEID0gZGlzcGxheUlEOworICAgIGNsaWVudC0+bV9k
aXNwbGF5SURJc1NldCA9IHRydWU7IAorICAgIHJlZ2lzdGVyQ2xpZW50KGNsaWVudCk7CisgICAg
aWYgKGNsaWVudC0+bV9zY2hlZHVsZWQpCisgICAgICAgIHNjaGVkdWxlQW5pbWF0aW9uKGNsaWVu
dCk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJl
ZnJlc2hNb25pdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRiNmM2NmY5ZDk4ZDdiNGY2NTk3N2U5YjI5ZmJh
N2RiMWI2NjQ0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IERpc3BsYXlSZWZyZXNoTW9uaXRvcl9oCisjZGVmaW5lIERpc3BsYXlSZWZyZXNoTW9uaXRvcl9o
CisKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisKKyNpbmNsdWRlICJQbGF0
Zm9ybVNjcmVlbi5oIgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGlzcGxheVJlZnJlc2hN
b25pdG9yOworY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjsKKworLy8KKy8vIEFi
c3RyYWN0IHZpcnR1YWwgY2xpZW50IHdoaWNoIHJlY2VpdmVzIHJlZnJlc2ggZmlyZWQgbWVzc2Fn
ZXMgb24gdGhlIG1haW4gdGhyZWFkCisvLworY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xp
ZW50IHsKKyAgICBmcmllbmQgRGlzcGxheVJlZnJlc2hNb25pdG9yOworICAgIGZyaWVuZCBEaXNw
bGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOworICAgIAorcHVibGljOgorICAgIERpc3BsYXlSZWZy
ZXNoTW9uaXRvckNsaWVudCgpOworICAgIHZpcnR1YWwgfkRpc3BsYXlSZWZyZXNoTW9uaXRvckNs
aWVudCgpOworICAgIAorICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5UmVmcmVzaEZpcmVkKGRvdWJs
ZSB0aW1lc3RhbXApID0gMDsKKworcHJpdmF0ZToKKyAgICB2b2lkIHNjaGVkdWxlQW5pbWF0aW9u
KCkgeyBtX3NjaGVkdWxlZCA9IHRydWU7IH0KKworICAgIHZvaWQgZmlyZURpc3BsYXlSZWZyZXNo
SWZOZWVkZWQoZG91YmxlIHRpbWVzdGFtcCk7CisgICAgCisgICAgYm9vbCBtX3NjaGVkdWxlZDsK
KyAgICBQbGF0Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJRDsKKyAgICBib29sIG1fZGlzcGxheUlE
SXNTZXQ7Cit9OworCisvLworLy8gTW9uaXRvciBmb3IgZGlzcGxheSByZWZyZXNoIG1lc3NhZ2Vz
IGZvciBhIGdpdmVuIHNjcmVlbgorLy8KKworY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yIHsK
K3B1YmxpYzoKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpOwor
ICAgIH5EaXNwbGF5UmVmcmVzaE1vbml0b3IoKTsKKyAgICAKKyAgICBib29sIHNjaGVkdWxlQW5p
bWF0aW9uKCk7CisgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5
SUQpOworICAgIAorICAgIGJvb2wgaGFzQ2xpZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50
cy5zaXplKCk7IH0KKyAgICB2b2lkIGFkZENsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGll
bnQqIGNsaWVudCkgeyBtX2NsaWVudHMuYXBwZW5kKGNsaWVudCk7IH0KKyAgICBib29sIHJlbW92
ZUNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqIGNsaWVudCkKKyAgICB7CisgICAg
ICAgIHNpemVfdCBpID0gbV9jbGllbnRzLmZpbmQoY2xpZW50KTsKKyAgICAgICAgaWYgKGkgPT0g
bm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1fY2xpZW50cy5y
ZW1vdmUoaSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBQbGF0Zm9y
bURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlJRDsgfQorCitw
cml2YXRlOgorICAgIGRvdWJsZSBtX3RpbWVzdGFtcDsKKyAgICBib29sIG1fYWN0aXZlOworICAg
IGJvb2wgbV9zY2hlZHVsZWQ7CisgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNwbGF5SUQ7Cisg
ICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlciogbV9tYW5hZ2VyOworICAgIE11dGV4IG1f
bXV0ZXg7CisgICAgVmVjdG9yPERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCo+IG1fY2xpZW50
czsKKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIHZvaWQgcmVmcmVzaERpc3Bs
YXlPbk1haW5UaHJlYWQodm9pZCogZGF0YSk7CisgICAgc3RhdGljIENWUmV0dXJuIGRpc3BsYXlM
aW5rQ2FsbGJhY2soQ1ZEaXNwbGF5TGlua1JlZiwgY29uc3QgQ1ZUaW1lU3RhbXAqIG5vdywgY29u
c3QgQ1ZUaW1lU3RhbXAqIG91dHB1dFRpbWUsIENWT3B0aW9uRmxhZ3MsIENWT3B0aW9uRmxhZ3Mq
LCB2b2lkKiBkYXRhKTsKKworICAgIENWRGlzcGxheUxpbmtSZWYgbV9kaXNwbGF5TGluazsKKyNl
bmRpZgorfTsKKworLy8KKy8vIFNpbmdsZXRvbiBtYW5hZ2VyIGZvciBhbGwgdGhlIERpc3BsYXlS
ZWZyZXNoTW9uaXRvcnMuIFRoaXMgaXMgdGhlIGludGVyZmFjZSB0byB0aGUgCisvLyBvdXRzaWRl
IHdvcmxkLiBJdCBkaXN0cmlidXRlcyByZXF1ZXN0cyB0byB0aGUgYXBwcm9wcmlhdGUgbW9uaXRv
ci4gV2hlbiB0aGUgZGlzcGxheQorLy8gcmVmcmVzaCBldmVudCBmaXJlcywgdGhlIHBhc3NlZCBE
aXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQgaXMgY2FsbGVkIGRpcmVjdGx5IG9uCisvLyB0aGUg
bWFpbiB0aHJlYWQuCisvLworY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlciB7Citw
dWJsaWM6CisgICAgc3RhdGljIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIqIHNoYXJlZE1h
bmFnZXIoKTsKKyAgICAKKyAgICB2b2lkIHJlZ2lzdGVyQ2xpZW50KERpc3BsYXlSZWZyZXNoTW9u
aXRvckNsaWVudCopOworICAgIHZvaWQgdW5yZWdpc3RlckNsaWVudChEaXNwbGF5UmVmcmVzaE1v
bml0b3JDbGllbnQqKTsKKworICAgIGJvb2wgc2NoZWR1bGVBbmltYXRpb24oRGlzcGxheVJlZnJl
c2hNb25pdG9yQ2xpZW50Kik7CisgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZv
cm1EaXNwbGF5SUQsIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCopOworCitwcml2YXRlOgor
ICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIoKSB7IH0KKworICAgIHNpemVfdCBmaW5k
TW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCkgY29uc3Q7CisgICAgCisgICAgVmVjdG9yPERpc3Bs
YXlSZWZyZXNoTW9uaXRvcio+IG1fbW9uaXRvcnM7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hN
b25pdG9yTWFjLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNGQ1YzIzYTQ2ZGM4MTcyNThjMTU0NmJmNGU3ZDlh
MDJiMjc2ZGFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKQEAgLTAsMCArMSw5NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
KQorCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCisKKyNpbmNsdWRlIDxRdWFy
dHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NWUmV0dXJu
IERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheUxpbmtDYWxsYmFjayhDVkRpc3BsYXlMaW5r
UmVmLCBjb25zdCBDVlRpbWVTdGFtcCogbm93LCBjb25zdCBDVlRpbWVTdGFtcCogb3V0cHV0VGlt
ZSwgQ1ZPcHRpb25GbGFncywgQ1ZPcHRpb25GbGFncyosIHZvaWQqIGRhdGEpCit7CisgICAgRGlz
cGxheVJlZnJlc2hNb25pdG9yKiBtb25pdG9yID0gc3RhdGljX2Nhc3Q8RGlzcGxheVJlZnJlc2hN
b25pdG9yKj4oZGF0YSk7CisgICAgCisgICAgTXV0ZXhMb2NrZXIgbG9jayhtb25pdG9yLT5tX211
dGV4KTsKKyAgICBpZiAoIW1vbml0b3ItPm1fc2NoZWR1bGVkKQorICAgICAgICByZXR1cm4ga0NW
UmV0dXJuU3VjY2VzczsKKworICAgIGRvdWJsZSBub3dTZWNvbmRzID0gc3RhdGljX2Nhc3Q8ZG91
YmxlPihub3ctPnZpZGVvVGltZSkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KG5vdy0+dmlkZW9UaW1l
U2NhbGUpOworICAgIGRvdWJsZSBvdXRwdXRUaW1lU2Vjb25kcyA9IHN0YXRpY19jYXN0PGRvdWJs
ZT4ob3V0cHV0VGltZS0+dmlkZW9UaW1lKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4ob3V0cHV0VGlt
ZS0+dmlkZW9UaW1lU2NhbGUpOworICAgIGRvdWJsZSB3ZWJLaXROb3cgPSBjdXJyZW50VGltZSgp
OworICAgIG1vbml0b3ItPm1fdGltZXN0YW1wID0gd2ViS2l0Tm93IC0gbm93U2Vjb25kcyArIG91
dHB1dFRpbWVTZWNvbmRzOworICAgIAorICAgIGNhbGxPbk1haW5UaHJlYWQoRGlzcGxheVJlZnJl
c2hNb25pdG9yOjpyZWZyZXNoRGlzcGxheU9uTWFpblRocmVhZCwgbW9uaXRvcik7CisgICAgcmV0
dXJuIGtDVlJldHVyblN1Y2Nlc3M7Cit9CisgCitEaXNwbGF5UmVmcmVzaE1vbml0b3I6On5EaXNw
bGF5UmVmcmVzaE1vbml0b3IoKQoreworICAgIGNhbmNlbENhbGxPbk1haW5UaHJlYWQoRGlzcGxh
eVJlZnJlc2hNb25pdG9yOjpyZWZyZXNoRGlzcGxheU9uTWFpblRocmVhZCwgdGhpcyk7CisgICAg
CisgICAgaWYgKG1fZGlzcGxheUxpbmspIHsKKyAgICAgICAgQ1ZEaXNwbGF5TGlua1N0b3AobV9k
aXNwbGF5TGluayk7CisgICAgICAgIENWRGlzcGxheUxpbmtSZWxlYXNlKG1fZGlzcGxheUxpbmsp
OworICAgICAgICBtX2Rpc3BsYXlMaW5rID0gMDsKKyAgICB9Cit9CisKK2Jvb2wgRGlzcGxheVJl
ZnJlc2hNb25pdG9yOjpzY2hlZHVsZUFuaW1hdGlvbigpCit7CisgICAgaWYgKCFtX2FjdGl2ZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICBpZiAoIW1fZGlzcGxheUxpbmsp
IHsKKyAgICAgICAgbV9hY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgQ1ZSZXR1cm4gZXJyb3IgPSBD
VkRpc3BsYXlMaW5rQ3JlYXRlV2l0aENHRGlzcGxheShtX2Rpc3BsYXlJRCwgJm1fZGlzcGxheUxp
bmspOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgZXJyb3IgPSBDVkRpc3BsYXlMaW5rU2V0T3V0cHV0Q2FsbGJhY2sobV9kaXNwbGF5TGlu
aywgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5TGlua0NhbGxiYWNrLCB0aGlzKTsKKyAg
ICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGVy
cm9yID0gQ1ZEaXNwbGF5TGlua1N0YXJ0KG1fZGlzcGxheUxpbmspOworICAgICAgICBpZiAoZXJy
b3IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbV9hY3RpdmUgPSB0cnVl
OworICAgIH0KKyAgICAKKyAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgIG1fc2No
ZWR1bGVkID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQorCisjZW5kaWYgLy8gRU5B
QkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDQ4ODFhYjc4
NzJiZTZlYTU3NDljNzIxZDZiNjQzOGIyNjMzNjZkNWMuLmI1YzQyMjM2MWY2MWQ1Y2IzODM2ZWEz
NDg1ZGZiNzVkYmZmZTkyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAx
MS0xMC0xMiAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3lu
YyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgY2FsbGJhY2sgdG8gQ1ZEaXNwbGF5TGluayBvbiBNYWMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4OTExCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHdpbmRv
d0RpZENoYW5nZVNjcmVlbiBmdW5jdGlvbiB3aGljaCBsaXN0ZW5zIGZvciB0aGUgd2luZG93IGNo
YW5naW5nCisgICAgICAgIHNjcmVlbnMgYW5kIHBhc3NlcyB0aGUgbmV3IGRpc3BsYXlJRCBhbG9u
ZyB0byBXZWJDb3JlOjpQYWdlLiBJdCBhbHNvIHNlbmRzCisgICAgICAgIG9uZSBvbiB3aW5kb3dX
aWxsT3JkZXJPblNjcmVlbiwgc28gdGhlIFBhZ2UgaGFzIGEgZnJlc2ggZGlzcGxheUlEIGFmdGVy
IGl0J3MKKyAgICAgICAgY3JlYXRlZC4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV2ViVmlldyBhZGRXaW5kb3dPYnNlcnZlcnNGb3JXaW5kb3c6XSk6CisgICAg
ICAgICgtW1dlYlZpZXcgcmVtb3ZlV2luZG93T2JzZXJ2ZXJzXSk6CisgICAgICAgICgtW1dlYlZp
ZXcgX3dpbmRvd0RpZENoYW5nZVNjcmVlbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfd2luZG93
V2lsbE9yZGVyT25TY3JlZW46XSk6CisKIDIwMTEtMTAtMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVc2UgYSBDYWNoZWRJbWFnZUNsaWVudCBpbnN0ZWFk
IG9mIENhY2hlZFJlc291cmNlQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
aW5kZXggOTk3NDYyYzkwMjVmNjQxODc2YWMyZjZkN2UzMGJkYjFmOGZjMzE5Yy4uZWMxMzA4NWU3
N2RkMGI1ODJmYzliYjAwYzQ2ZGQ2YzE1MGFjZmVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQpAQCAtMzIxOCw2ICszMjE4LDggQEAgLSAodm9pZClhZGRXaW5kb3dPYnNlcnZl
cnNGb3JXaW5kb3c6KE5TV2luZG93ICopd2luZG93CiAgICAgICAgICAgICBuYW1lOldLV2luZG93
V2lsbE9yZGVyT2ZmU2NyZWVuTm90aWZpY2F0aW9uKCkgb2JqZWN0OndpbmRvd107CiAgICAgICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBz
ZWxlY3RvcjpAc2VsZWN0b3IoX3dpbmRvd0RpZENoYW5nZVJlc29sdXRpb246KQogICAgICAgICAg
ICAgbmFtZTp3aW5kb3dEaWRDaGFuZ2VSZXNvbHV0aW9uTm90aWZpY2F0aW9uIG9iamVjdDp3aW5k
b3ddOworICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9i
c2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF93aW5kb3dEaWRDaGFuZ2VTY3JlZW46KQor
ICAgICAgICAgICAgbmFtZTpOU1dpbmRvd0RpZENoYW5nZVNjcmVlbk5vdGlmaWNhdGlvbiBvYmpl
Y3Q6d2luZG93XTsKICAgICB9CiB9CiAKQEAgLTMyMzUsNiArMzIzNyw4IEBAIC0gKHZvaWQpcmVt
b3ZlV2luZG93T2JzZXJ2ZXJzCiAgICAgICAgICAgICBuYW1lOldLV2luZG93V2lsbE9yZGVyT2Zm
U2NyZWVuTm90aWZpY2F0aW9uKCkgb2JqZWN0OndpbmRvd107CiAgICAgICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZgogICAgICAgICAg
ICAgbmFtZTp3aW5kb3dEaWRDaGFuZ2VSZXNvbHV0aW9uTm90aWZpY2F0aW9uIG9iamVjdDp3aW5k
b3ddOworICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92
ZU9ic2VydmVyOnNlbGYKKyAgICAgICAgICAgIG5hbWU6TlNXaW5kb3dEaWRDaGFuZ2VTY3JlZW5O
b3RpZmljYXRpb24gb2JqZWN0OndpbmRvd107CiAgICAgfQogfQogCkBAIC0zMjg3LDYgKzMyOTEs
MTEgQEAgLSAodm9pZCl2aWV3RGlkTW92ZVRvV2luZG93CiAgICAgW3NlbGYgX3VwZGF0ZUFjdGl2
ZVN0YXRlXTsKIH0KIAorLSAodm9pZClfd2luZG93RGlkQ2hhbmdlU2NyZWVuOihOU05vdGlmaWNh
dGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIF9wcml2YXRlLT5wYWdlLT53aW5kb3dTY3JlZW5E
aWRDaGFuZ2UoKFBsYXRmb3JtRGlzcGxheUlEKVtbW1tbc2VsZiB3aW5kb3ddIHNjcmVlbl0gZGV2
aWNlRGVzY3JpcHRpb25dIG9iamVjdEZvcktleTpAIk5TU2NyZWVuTnVtYmVyIl0gaW50VmFsdWVd
KTsKK30KKwogLSAodm9pZClfd2luZG93RGlkQmVjb21lS2V5OihOU05vdGlmaWNhdGlvbiAqKW5v
dGlmaWNhdGlvbgogewogICAgIE5TV2luZG93ICprZXlXaW5kb3cgPSBbbm90aWZpY2F0aW9uIG9i
amVjdF07CkBAIC0zMzEwLDYgKzMzMTksOSBAQCAtICh2b2lkKV93aW5kb3dXaWxsT3JkZXJPblNj
cmVlbjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KIAogICAgIGlmICghW3NlbGYgc2hv
dWxkVXBkYXRlV2hpbGVPZmZzY3JlZW5dKQogICAgICAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXk6
WUVTXTsKKworICAgIC8vIFNlbmQgYSBjaGFuZ2Ugc2NyZWVuIHRvIG1ha2Ugc3VyZSB0aGUgaW5p
dGlhbCBkaXNwbGF5SUQgaXMgc2V0CisgICAgW3NlbGYgX3dpbmRvd0RpZENoYW5nZVNjcmVlbjpu
b3RpZmljYXRpb25dOwogfQogCiAtICh2b2lkKV93aW5kb3dXaWxsT3JkZXJPZmZTY3JlZW46KE5T
Tm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmYyY2MxZjg4ZWY4YmFj
M2E4MTBiNjI0ZjdkNTUxYWNkMDUzMGZmMy4uMzRjMDEwMjc4NThlZTg2NTcyMWJjYmYyMTlkZDU5
MTI2NTExYjE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDExLTEwLTEyICBDaHJp
cyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNvbT4KKworICAgICAgICBTeW5jIHJlcXVlc3RBbmlt
YXRpb25GcmFtZSBjYWxsYmFjayB0byBDVkRpc3BsYXlMaW5rIG9uIE1hYworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg5MTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgd2luZG93RGlkQ2hhbmdlU2Ny
ZWVuIGZ1bmN0aW9uIHdoaWNoIGxpc3RlbnMgZm9yIHRoZSB3aW5kb3cgY2hhbmdpbmcKKyAgICAg
ICAgc2NyZWVucyBhbmQgcGFzc2VzIHRoZSBuZXcgZGlzcGxheUlEIGFsb25nIHRvIFdlYkNvcmU6
OlBhZ2UuIEl0IGFsc28gc2VuZHMKKyAgICAgICAgb25lIG9uIHdpbmRvd0RpZEJlY29tZUtleSwg
c28gdGhlIFBhZ2UgaGFzIGEgZnJlc2ggZGlzcGxheUlEIGFmdGVyIGl0J3MKKyAgICAgICAgY3Jl
YXRlZC4gRXZlbnQgaXMgZ2VuZXJhdGVkIGluIHRoZSBVSVByb2Nlc3MgYW5kIHRoZW4gc2VudCBv
dmVyIHRvIHRoZQorICAgICAgICBXZWJQcm9jZXNzLCB3aGljaCBhY3R1YWxseSBzZW5kcyBpdCB0
byBXZWJDb3JlOjpQYWdlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
OgorICAgICAgICAoLVtXS1ZpZXcgYWRkV2luZG93T2JzZXJ2ZXJzRm9yV2luZG93Ol0pOgorICAg
ICAgICAoLVtXS1ZpZXcgcmVtb3ZlV2luZG93T2JzZXJ2ZXJzXSk6CisgICAgICAgICgtW1dLVmll
dyBfd2luZG93RGlkQ2hhbmdlU2NyZWVuOl0pOgorICAgICAgICAoLVtXS1ZpZXcgX3dpbmRvd0Rp
ZEJlY29tZUtleTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OndpbmRvd1NjcmVl
bkRpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxMS0x
MC0xMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIEhhbmcgYmVu
ZWF0aCBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZVByb3BlcnR5TGlzdEZpbGUoKSB3aGVuIHVz
aW5nIGEgdGhpbiBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
Lm1tCmluZGV4IDBmYmIwNzZmNDkyMTMzN2NjY2MxZWIyZDlkMDhhYzJiM2FjN2JjYTUuLmFjMTBk
YmFmNTRhZmFhNDg3YzMwZTQ3NjVhZWQ3ZDFlYjNjZjNhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTE3OTcsNyArMTc5Nyw4IEBAIC0gKHZvaWQp
YWRkV2luZG93T2JzZXJ2ZXJzRm9yV2luZG93OihOU1dpbmRvdyAqKXdpbmRvdwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOkAiX05TV2lu
ZG93RGlkQmVjb21lVmlzaWJsZSIgb2JqZWN0OndpbmRvd107CiAgICAgICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2Vs
ZWN0b3IoX3dpbmRvd0RpZENoYW5nZVJlc29sdXRpb246KQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOndpbmRvd0RpZENoYW5nZVJlc29s
dXRpb25Ob3RpZmljYXRpb24gb2JqZWN0OndpbmRvd107Ci0KKyAgICAgICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3Rvcihfd2luZG93RGlkQ2hhbmdlU2NyZWVuOikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTpOU1dpbmRvd0RpZENoYW5nZVNjcmVlbk5v
dGlmaWNhdGlvbiBvYmplY3Q6d2luZG93XTsKICAgICB9CiB9CiAKQEAgLTE4MTYsNyArMTgxNyw3
IEBAIC0gKHZvaWQpcmVtb3ZlV2luZG93T2JzZXJ2ZXJzCiAgICAgW1tOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6QCJOU1dpbmRvd0Rp
ZE9yZGVyT2ZmU2NyZWVuTm90aWZpY2F0aW9uIiBvYmplY3Q6d2luZG93XTsKICAgICBbW05TTm90
aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpA
Il9OU1dpbmRvd0RpZEJlY29tZVZpc2libGUiIG9iamVjdDp3aW5kb3ddOwogICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOndp
bmRvd0RpZENoYW5nZVJlc29sdXRpb25Ob3RpZmljYXRpb24gb2JqZWN0OndpbmRvd107Ci0KKyAg
ICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNl
bGYgbmFtZTpOU1dpbmRvd0RpZENoYW5nZVNjcmVlbk5vdGlmaWNhdGlvbiBvYmplY3Q6d2luZG93
XTsKIH0KIAogLSAodm9pZCl2aWV3V2lsbE1vdmVUb1dpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cK
QEAgLTE4NjgsNiArMTg2OSwxMSBAQCAtICh2b2lkKXZpZXdEaWRNb3ZlVG9XaW5kb3cKICAgICBf
ZGF0YS0+X3BhZ2UtPnNldEludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKFtzZWxmIF9pbnRyaW5z
aWNEZXZpY2VTY2FsZUZhY3Rvcl0pOwogfQogCistICh2b2lkKV93aW5kb3dEaWRDaGFuZ2VTY3Jl
ZW46KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7CisgICAgX2RhdGEtPl9wYWdlLT53
aW5kb3dTY3JlZW5EaWRDaGFuZ2UoKFBsYXRmb3JtRGlzcGxheUlEKVtbW1tbc2VsZiB3aW5kb3dd
IHNjcmVlbl0gZGV2aWNlRGVzY3JpcHRpb25dIG9iamVjdEZvcktleTpAIk5TU2NyZWVuTnVtYmVy
Il0gaW50VmFsdWVdKTsKK30KKwogLSAodm9pZClfd2luZG93RGlkQmVjb21lS2V5OihOU05vdGlm
aWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogewogICAgIE5TV2luZG93ICprZXlXaW5kb3cgPSBbbm90
aWZpY2F0aW9uIG9iamVjdF07CkBAIC0xODc1LDYgKzE4ODEsOSBAQCAtICh2b2lkKV93aW5kb3dE
aWRCZWNvbWVLZXk6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCiAgICAgICAgIFtzZWxm
IF91cGRhdGVTZWN1cmVJbnB1dFN0YXRlXTsKICAgICAgICAgX2RhdGEtPl9wYWdlLT52aWV3U3Rh
dGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3V2luZG93SXNBY3RpdmUpOwogICAgIH0KKwor
ICAgIC8vIFNlbmQgYSBjaGFuZ2Ugc2NyZWVuIHRvIG1ha2Ugc3VyZSB0aGUgaW5pdGlhbCBkaXNw
bGF5SUQgaXMgc2V0CisgICAgW3NlbGYgX3dpbmRvd0RpZENoYW5nZVNjcmVlbjpub3RpZmljYXRp
b25dOwogfQogCiAtICh2b2lkKV93aW5kb3dEaWRSZXNpZ25LZXk6KE5TTm90aWZpY2F0aW9uICop
bm90aWZpY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IGFhODZlZjJlMmM5ZmJjNWZlNzVjNmQyY2M3NzQ1MzU3Y2RkOWVjNTkuLjAwZjFkZGYwNjVh
NDYzMzg4NzQyMzAzZDg5YTliNWJhNTRjZDBhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMTU4LDYgKzExNTgsMTUgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldEludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQogICAg
IG1fZHJhd2luZ0FyZWEtPmRldmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCk7CiB9CiAKK3ZvaWQg
V2ViUGFnZVByb3h5Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlz
cGxheUlEKQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBGSVhNRTogSVBDIGhhcyB0cm91YmxlIHNlbmRpbmcgcGFyYW1zIGl0IGRvZXNuJ3QgdW5kZXJz
dGFuZCwgc28gY2FzdCBpbnRvIGEgY29tbW9uIHR5cGUKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OldpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQpLCBtX3BhZ2VJ
RCk7Cit9CisKIGZsb2F0IFdlYlBhZ2VQcm94eTo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAog
ewogICAgIGlmIChtX2N1c3RvbURldmljZVNjYWxlRmFjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDQwODUxOTg2ODM1ZDY3ODZiOGJhY2Y4ZTgyOThhNjIx
MWRmYzM2NzIuLjRlNGQ3MmNhYTIxMDhlMzkxZTY3YTM4NzgzMTY0YWY1MDU4MjU2OWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTU1LDYgKzU1LDcgQEAKICNp
bmNsdWRlICJXZWJVSUNsaWVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAg
LTM5MSw3ICszOTIsOCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBj
b25zdDsKICAgICB2b2lkIHNldEludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKGZsb2F0KTsKICAg
ICB2b2lkIHNldEN1c3RvbURldmljZVNjYWxlRmFjdG9yKGZsb2F0KTsKLQorICAgIHZvaWQgd2lu
ZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKKyAgICAKICAgICB2b2lkIHNl
dFVzZUZpeGVkTGF5b3V0KGJvb2wpOwogICAgIHZvaWQgc2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKTsKICAgICBib29sIHVzZUZpeGVkTGF5b3V0KCkgY29uc3QgeyBy
ZXR1cm4gbV91c2VGaXhlZExheW91dDsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4MWUzZjhjN2VhZjQ5YWE4ODY3ZjQ0ZDEwMTZmOTM0
OTdhOWExODc4Li4zNWU0YzhhYTZjNDdhZGZiYzg0Y2RmMmM0MjE3NWFkNTY4MjFmNmY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC04MTYs
NiArODE2LDExIEBAIHZvaWQgV2ViUGFnZTo6c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhkb3Vi
bGUgcGFnZVpvb21GYWN0b3IsIGRvdWJsZSB0ZXh0Wm9vbUZhCiAgICAgcmV0dXJuIGZyYW1lLT5z
ZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKHN0YXRpY19jYXN0PGZsb2F0PihwYWdlWm9vbUZhY3Rv
ciksIHN0YXRpY19jYXN0PGZsb2F0Pih0ZXh0Wm9vbUZhY3RvcikpOwogfQogCit2b2lkIFdlYlBh
Z2U6OndpbmRvd1NjcmVlbkRpZENoYW5nZSh1aW50NjRfdCBkaXNwbGF5SUQpCit7CisgICAgbV9w
YWdlLT53aW5kb3dTY3JlZW5EaWRDaGFuZ2Uoc3RhdGljX2Nhc3Q8UGxhdGZvcm1EaXNwbGF5SUQ+
KGRpc3BsYXlJRCkpOworfQorCiB2b2lkIFdlYlBhZ2U6OnNjYWxlUGFnZShkb3VibGUgc2NhbGUs
IGNvbnN0IEludFBvaW50JiBvcmlnaW4pCiB7CiAgICAgbV9wYWdlLT5zZXRQYWdlU2NhbGVGYWN0
b3Ioc2NhbGUsIG9yaWdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCAyZWMyYTY1Yjc1NGQ3YjBlNTljYmFhZWJmMmVmNDM2MjAxZmI1ZjBkLi44
YTdmODM1MWEzZjFkOTNlMGVmOTcwOTg3NjU1MjEzNGE4M2RlNzQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBl
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9XZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgpAQCAtMjU2LDYgKzI1Nyw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgcGFnZVpvb21GYWN0
b3IoKSBjb25zdDsKICAgICB2b2lkIHNldFBhZ2Vab29tRmFjdG9yKGRvdWJsZSk7CiAgICAgdm9p
ZCBzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKGRvdWJsZSBwYWdlWm9vbUZhY3RvciwgZG91Ymxl
IHRleHRab29tRmFjdG9yKTsKKyAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZSh1aW50NjRf
dCk7CiAKICAgICB2b2lkIHNjYWxlUGFnZShkb3VibGUgc2NhbGUsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBvcmlnaW4pOwogICAgIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggYzIyNDFlYmJiNTZkN2FkZWU5ZTk2OGY2MTRlMDdkYjI3NjIwYTA3MS4uYTU4
NTNjMjI0OTM5ODljMjE3ZDJmNDA2NjUxZDVhZjRjMTI3NzM4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTEx
Myw2ICsxMTMsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICAgICBTZXRQYWdlQW5kVGV4dFpv
b21GYWN0b3JzKGRvdWJsZSBwYWdlWm9vbUZhY3RvciwgZG91YmxlIHRleHRab29tRmFjdG9yKQog
ICAgIFNldFBhZ2Vab29tRmFjdG9yKGRvdWJsZSB6b29tRmFjdG9yKQogICAgIFNldFRleHRab29t
RmFjdG9yKGRvdWJsZSB6b29tRmFjdG9yKQorICAgIFdpbmRvd1NjcmVlbkRpZENoYW5nZSh1aW50
NjRfdCBkaXNwbGF5SUQpCiAKICAgICBTY2FsZVBhZ2UoZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpJ
bnRQb2ludCBvcmlnaW4pCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110870</attachid>
            <date>2011-10-13 10:23:26 -0700</date>
            <delta_ts>2011-10-13 11:32:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68911-20111013102325.patch</filename>
            <type>text/plain</type>
            <size>50407</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTczMTYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYzk5OTJjNzVhNDdkZTZhZTY4NzQ0
Y2E3YzcwZmNhZmI2OWYyMzdjLi4zNjBmZjVlYmU4NjVhOTQ2ZmNkYWQzNjNjNTU5NjI3OGE3NmE5
M2FmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTAtMTIgIENocmlzIE1hcnJpbiAgPGNt
YXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFN5bmMgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNh
bGxiYWNrIHRvIENWRGlzcGxheUxpbmsgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODkxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3QgdG8gbWFrZSBzdXJlIHJlcXVlc3RBbmltYXRpb25G
cmFtZSBldmVudHMgZmlyZSBpbnNpZGUgaWZyYW1lCisKKyAgICAgICAgKiBmYXN0L2FuaW1hdGlv
bi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJhbWUuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9hbmltYXRpb24vc2NyaXB0LXRlc3RzL3JlcXVlc3Qt
YW5pbWF0aW9uLWZyYW1lLXN1YmZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDExLTEwLTEyICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgogCiAgICAgICAgIFNraXAgYWNjZXNz
aWJpbGl0eS9tZW51LWxpc3Qtc2VuZHMtY2hhbmdlLW5vdGlmaWNhdGlvbi5odG1sIG9uIE1hYy4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9u
LWZyYW1lLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9y
ZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcy
YjQzOGQ0Mzk1ZjQ4ODUwNmEyYzhjNTJhODlmNmRjZmVlYjEwMTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJh
bWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHJlcXVlc3RBbmltYXRpb25G
cmFtZSBpbiBhbiBpZnJhbWUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
Y2FsbGJhY2tJbnZva2VkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlv
bi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
YW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjlhMjMzNmQ3ZWZkOWNkMWVkYjEzZGUwYWI5YzM1NGM3ZGRhZTBkZjQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1p
ZnJhbWUuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxpZnJhbWUgc3JjPSJzY3JpcHQt
dGVzdHMvcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtc3ViZnJhbWUuaHRtbCIgd2lkdGg9IjcwMCIg
aGVpZ2h0PSI1MDAiPjwvaWZyYW1lPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUgaW4gYW4gaWZyYW1lIik7CisKKyAgICAgICAgdmFyIGNhbGxiYWNrSW52b2tl
ZCA9IGZhbHNlOworICAgIAorICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0K
KworICAgICAgICAvLyBDYWxsZWQgZnJvbSBzdWJmcmFtZS4KKyAgICAgICAgZnVuY3Rpb24gZG9E
aXNwbGF5KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7
CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgZnVuY3Rpb24gZG9DaGVja1Jlc3VsdCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY2FsbGJhY2tJbnZva2VkIik7CisgICAg
ICAgIH0KKyAgICAKKyAgICAgICAgZnVuY3Rpb24gZG9UZXN0RG9uZSgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworICAgIDwvc2NyaXB0PgorCisgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vc2NyaXB0LXRlc3Rz
L3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXN1YmZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2FuaW1hdGlvbi9zY3JpcHQtdGVzdHMvcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtc3ViZnJhbWUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43YTZkOWMyMjdkNDRhODdhOGFlYzZmMDdiOWJiNWZiNjQ3NTI3NGMy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vc2NyaXB0LXRl
c3RzL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXN1YmZyYW1lLmh0bWwKQEAgLTAsMCArMSwyOSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c3BhbiBpZD0iZSI+PC9zcGFuPgorPHNwYW4gaWQ9ImYiPjwvc3Bhbj4KKzxzY3JpcHQ+
CisgICAgdmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZSIpOworICAgIHdpbmRvdy53
ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7CisgICAgICAgIHBhcmVudC5j
YWxsYmFja0ludm9rZWQgPSB0cnVlOworICAgIH0sIGUpOworCisgICAgcGFyZW50LmRvRGlzcGxh
eSgpOworICAgIAorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHBhcmVudC5k
b0NoZWNrUmVzdWx0KCk7CisgICAgfSwgMTAwKTsKKworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7CisgICAgICAgIHBhcmVudC5kb1Rlc3REb25lKCk7CisgICAgfSwgMjAwKTsgICAgCis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYmIzOWFiZTQ1NzQwMGM4ODkx
NDdiY2ZiNzE3MTdlNzY5NDcwNGM2Li45YzdlZWYzNDQxZWY3NjFkMjBmNjJiYjcyMDMxMTc2ODdm
ZmJhMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTEtMTAtMTIgIENocmlzIE1h
cnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFN5bmMgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lIGNhbGxiYWNrIHRvIENWRGlzcGxheUxpbmsgb24gTWFjCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODkxMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvYW5pbWF0aW9uL3JlcXVl
c3QtYW5pbWF0aW9uLWZyYW1lLWlmcmFtZS5odG1sCisKKyAgICAgICAgSW1wbGVtZW50IENWRGlz
cGxheUxpbmsgd2hpY2ggY2hlY2tzIHRvIHNlZSBpZiBhbnkgc2NoZWR1bGVBbmltYXRpb24gcmVx
dWVzdHMKKyAgICAgICAgaGF2ZSBjb21lIGluLiBJZiBzbywgcmVtZW1iZXIgdGhlIHRpbWVzdGFt
cCBhbmQgZG8gYSBjYWxsT25NYWluVGhyZWFkIHRvIGZpcmUKKyAgICAgICAgdGhlIGNhbGxiYWNr
cy4gQSBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyIGlzIGEgc2luZ2xldG9uIHdoaWNoIGhh
cyBhIGxpc3QKKyAgICAgICAgb2YgRGlzcGxheVJlZnJlc2hNb25pdG9ycywgb25lIGZvciBlYWNo
IGRpc3BsYXkuIEVhY2ggbW9uaXRvciBoYXMgb25lIG9yIG1vcmUKKyAgICAgICAgRGlzcGxheVJl
ZnJlc2hNb25pdG9yQ2xpZW50cywgd2hpY2ggaXMgYSBhYnN0cmFjdCB2aXJ0dWFsIGNsYXNzIGlt
cGxlbWVudGVkCisgICAgICAgIGJ5IFNjcmlwdEFuaW1hdGlvbkNvbnRyb2xsZXIuIFdoZW4gYW4g
YW5pbWF0aW9uIGlzIHNjaGVkdWxlZCwgdGhlCisgICAgICAgIGRpc3BsYXlSZWZyZXNoRmlyZWQg
bWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY2xpZW50LCB3aGljaCBpbiB0dXJuIGNhbGxzIHRoZQor
ICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgY2FsbGJhY2tzLiAKKworICAgICAgICBEaXNw
bGF5UmVmcmVzaE1vbml0b3IgYW5kIHRoZXJlZm9yZSB0aGUgQ1ZEaXNwbGF5TGluayBpdCBvd25z
IGlzIGRpc2NhcmRlZAorICAgICAgICB3aGVuIGl0IG5vIGxvbmdlciBoYXMgYW55IGNsaWVudHMu
IFRoaXMgbWluaW1pemVzIHRoZSBudW1iZXIgb2YgY29uY3VycmVudAorICAgICAgICBDVkRpc3Bs
YXlMaW5rIHRocmVhZHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFt
ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1NjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRlZEFuaW1hdGlv
bkNvbnRyb2xsZXI6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OndpbmRvd1NjcmVlbkRpZENoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNjaGVkdWxl
QW5pbWF0aW9uKToKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmRpc3BsYXlS
ZWZyZXNoRmlyZWQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OndpbmRvd1NjcmVlbkRpZENo
YW5nZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpk
aXNwbGF5SUQpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQ6OkRpc3BsYXlSZWZy
ZXNoTW9uaXRvckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0
b3JDbGllbnQ6On5EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50OjpmaXJlRGlzcGxheVJlZnJlc2hJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OkRpc3BsYXlSZWZy
ZXNoTW9uaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJl
ZnJlc2hEaXNwbGF5T25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6ZmluZE1vbml0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6cmVnaXN0ZXJDbGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6dW5yZWdpc3RlckNsaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzY2hl
ZHVsZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JN
YW5hZ2VyOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudDo6c2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpoYXNDbGllbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheUlEKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFn
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0
b3JNYWMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRv
cjo6ZGlzcGxheUxpbmtDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVz
aE1vbml0b3I6On5EaXNwbGF5UmVmcmVzaE1vbml0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheVJlZnJlc2hNb25pdG9yOjpzY2hlZHVsZUFuaW1hdGlvbik6CisKIDIwMTEtMTAtMTIgIEx1
a2UgTWFjcGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDbGVh
biB1cCBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uIGltcGxlbWVudGF0aW9uIGFuZCBFVGV4dERl
Y29yYXRpb24gdXNhZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
biBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDIwM2M3YTYyMzJjY2M4OTVk
NDdhMjMyZjAyZmMxNmFmNmVlNGU1NDIuLmU0NzNiYTk1NzIyMWViOTg1YjZhOTE2Y2E0MzcwMzYz
ZTNlNTE2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC03MzIsNiArNzMyLDcgQEAgX19aTjdX
ZWJDb3JlNFBhZ2UyMHJlbW92ZVNjcm9sbGFibGVBcmVhRVBOU18xNFNjcm9sbGFibGVBcmVhRQog
X19aTjdXZWJDb3JlNFBhZ2UyMHNldERldmljZVNjYWxlRmFjdG9yRWYKIF9fWk43V2ViQ29yZTRQ
YWdlMjB1bm1hcmtBbGxUZXh0TWF0Y2hlc0V2CiBfX1pON1dlYkNvcmU0UGFnZTIxbWFya0FsbE1h
dGNoZXNGb3JUZXh0RVJLTjNXVEY2U3RyaW5nRWpiagorX19aTjdXZWJDb3JlNFBhZ2UyMXdpbmRv
d1NjcmVlbkRpZENoYW5nZUVqCiBfX1pON1dlYkNvcmU0UGFnZTIyYWxsVmlzaXRlZFN0YXRlQ2hh
bmdlZEVQTlNfOVBhZ2VHcm91cEUKIF9fWk43V2ViQ29yZTRQYWdlMjNjbGVhclVuZG9SZWRvT3Bl
cmF0aW9uc0V2CiBfX1pON1dlYkNvcmU0UGFnZTI3c2V0SmF2YVNjcmlwdFVSTHNBcmVBbGxvd2Vk
RWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAwYWJmNGY3NTk0ZDc2YzNiY2MzNmVkYWRjZWEwMjE4YTdkZTJkNjNlLi40OTJmOGVm
MTFiMzU5NWMyY2ZhYTUwMDAyOWExYmRjYjMwY2E2OGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTY3LDYgKzExNjcsOCBA
QAogCQk0OUE1QTRGRTEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlBNUE0RjgxM0UyRjAx
RTAwQ0ZEQUUwIC8qIFBlZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJNDlBNUE0RkYxM0UyRjAx
RTAwQ0ZEQUUwIC8qIFBlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OUE1QTRGOTEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5l
Y3Rpb24uaCAqLzsgfTsKIAkJNDlBNUE1MDExM0UyRjAxRTAwQ0ZEQUUwIC8qIFNpZ25hbGluZ0Nh
bGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OUE1QTRGQjEzRTJGMDFFMDBDRkRBRTAgLyogU2lnbmFsaW5nQ2FsbGJhY2suaCAqLzsgfTsKKwkJ
NDlBRjJENjkxNDQzNUQwNTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlBRjJENjgxNDQzNUQw
NTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oICovOyB9OworCQk0OUFGMkQ2QzE0
NDM1RDIxMDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QUYyRDZCMTQ0MzVEMjEwMDE2
QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwICovOyB9OwogCQk0OUJFMzBEMjEz
RDk3NDdCMDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUJFMzBEMTEzRDk3NDdCMDAzODA4
QTkgLyogSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgKi87IH07CiAJCTQ5QkUzMEYzMTNEOTc2
NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkUzMEVGMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1Bl
ZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJNDlCRTMwRjQxM0Q5NzY0NjAwMzgwOEE5IC8qIEpT
UGVlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5QkUzMEYwMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmggKi87
IH07CkBAIC0xMjkwLDYgKzEyOTIsNyBAQAogCQk0OUVFRDE0RTEwNTE5NzFBMDAwOTlGQUIgLyog
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLzsgfTsKIAkJNDlFRUQxNEYxMDUx
OTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTRDMTA1MTk3MUEw
MDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi87IH07CiAJCTQ5
RUVEMTUwMTA1MTk3MUEwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQx
NEQxMDUxOTcxQTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAg
Ki87IH07CisJCTQ5RkM3QTUwMTQ0NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlG
QzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi87IH07
CiAJCTQ5RkZCRjFEMTFDODU1MEUwMDZBNzExOCAvKiBHcmFwaGljc0NvbnRleHQzRE1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjFDMTFD
ODU1MEUwMDZBNzExOCAvKiBHcmFwaGljc0NvbnRleHQzRE1hYy5tbSAqLzsgfTsKIAkJNDlGRkJG
M0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLmggKi87IH07CiAJCTQ5RkZCRjQwMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlGRkJG
M0UxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi87IH07CkBAIC04MzE1LDYgKzgz
MTgsOCBAQAogCQk0OUE1QTRGQTEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rpb24uaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFBlZXJDb25uZWN0aW9uLmlkbDsgcGF0aCA9IHAycC9Q
ZWVyQ29ubmVjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QTVBNEZC
MTNFMkYwMUUwMENGREFFMCAvKiBTaWduYWxpbmdDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBTaWduYWxpbmdDYWxsYmFjay5oOyBwYXRoID0gcDJwL1NpZ25hbGlu
Z0NhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QTVBNEZDMTNFMkYw
MUUwMENGREFFMCAvKiBTaWduYWxpbmdDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1l
ID0gU2lnbmFsaW5nQ2FsbGJhY2suaWRsOyBwYXRoID0gcDJwL1NpZ25hbGluZ0NhbGxiYWNrLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlBRjJENjgxNDQzNUQwNTAwMTZBNzg0
IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDlBRjJENkIxNDQzNUQyMTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUJFMzBEMTEzRDk3
NDdCMDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlCRTMwRUYxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTUGVl
ckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQ
ZWVyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QkUzMEYw
MTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTUGVlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTg0NTcsNiArODQ2Miw3IEBACiAJCTQ5RUVEMTRCMTA1MTk3MTkwMDA5OUZBQiAv
KiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZBQiAv
KiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RUVEMTREMTA1MTk3MUEwMDA5OUZBQiAvKiBKU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlS
ZWZyZXNoTW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
aXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
OUZGQkYxQzExQzg1NTBFMDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0M0RNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHQzRE1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4
IC8qIFdlYkdMTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xM
YXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZGQkYzRTExQzkzRUUzMDA2
QTcxMTggLyogV2ViR0xMYXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYkdMTGF5ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTA0
NSw2ICsxOTA1MSw3IEBACiAJCQkJMzdDMjM2MEYxMDk3RUU3NzAwRUY5RjcyIC8qIENvbXBsZXhU
ZXh0Q29udHJvbGxlci5oICovLAogCQkJCTM3QzIzODFGMTA5OEM4NDIwMEVGOUY3MiAvKiBDb21w
bGV4VGV4dENvbnRyb2xsZXJBVFNVSS5jcHAgKi8sCiAJCQkJMzdDMjM4MjAxMDk4Qzg0MjAwRUY5
RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tICovLAorCQkJCTQ5QUYyRDZC
MTQ0MzVEMjEwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwICovLAogCQkJ
CUIyNzUzNTRCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50TWFjLm1tICovLAogCQkJCUIy
NzUzNTRDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RNYWMubW0gKi8sCiAJCQkJQjI3NTM1
NEQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZU1hYy5tbSAqLywKQEAgLTE5MDk4LDYgKzE5
MTA1LDggQEAKIAkJCQlCMjc1MzUzOTBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3IuaCAqLywKIAkJ
CQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFjZS5oICovLAogCQkJCUE4Q0I0
MTAyMEU4NUI4QTUwMDMyQzRGMCAvKiBEYXNoQXJyYXkuaCAqLywKKwkJCQk0OUZDN0E0RjE0NDRB
RjVGMDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCAqLywKKwkJCQk0OUFGMkQ2
ODE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggKi8sCiAJCQkJNkU2
N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oICovLAogCQkJCUIyNzUzNTNB
MEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmNwcCAqLywKIAkJCQlCMjc1MzUzQjBCMDUz
ODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludC5oICovLApAQCAtMjQ2MTQsNiArMjQ2MjMsNyBAQAog
CQkJCTMxMDYwMzc5MTQzMjgxQ0QwMEFCRjRCQSAvKiBET01XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwNjAzN0IxNDMyODFDRDAwQUJGNEJBIC8qIERPTVdlYktp
dENTU0ZpbHRlclZhbHVlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QUNCMjEyMTQz
RTcxMjgwMDZCQ0E1RiAvKiBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDlBRjJENjkxNDQzNUQwNTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yNzQ2NSw2ICsyNzQ3NSw4IEBACiAJCQkJMzEwNjAzN0ExNDMy
ODFDRDAwQUJGNEJBIC8qIERPTVdlYktpdENTU0ZpbHRlclZhbHVlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMjlBQ0IyMTQxNDNFNzQ5ODAwNkJDQTVGIC8qIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMDkwODdGMTQ0NEZEQjIwMDAyODkxNyAvKiBTY3Jv
bGxiYXJUaGVtZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0OUFGMkQ2QzE0NDM1RDIxMDAxNkE3
ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5
RkM3QTUwMTQ0NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA3ZTRkZTFmOGJjOTMzMGM2Mjhh
ZjM1ZmU0ZDM4Y2Y4ZDg2MmE3YmFlLi45MDUwZWQ5NjM2OWJkNTNiZDVkYWY0YTQxNmMxZWU3NzAx
OGYwMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQ3NzQsNiArNDc3NCwxNSBAQCB2
b2lkIERvY3VtZW50OjpyZXN1bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3Mo
KQogI2VuZGlmCiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0
Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCit7CisjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FKQorICAgIGlmIChtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcikKKyAgICAgICAg
bV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXItPndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNw
bGF5SUQpOworI2VuZGlmCit9CisKKwogU3RyaW5nIERvY3VtZW50OjpkaXNwbGF5U3RyaW5nTW9k
aWZpZWRCeUVuY29kaW5nKGNvbnN0IFN0cmluZyYgc3RyKSBjb25zdAogewogICAgIGlmIChtX2Rl
Y29kZXIpCkBAIC01MTE2LDcgKzUxMjUsNyBAQCB2b2lkIERvY3VtZW50Ojpsb2FkRXZlbnREZWxh
eVRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+KikKIGludCBEb2N1bWVudDo6d2Via2l0UmVxdWVz
dEFuaW1hdGlvbkZyYW1lKFBhc3NSZWZQdHI8UmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s+
IGNhbGxiYWNrLCBFbGVtZW50KiBhbmltYXRpb25FbGVtZW50KQogewogICAgIGlmICghbV9zY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIpCi0gICAgICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyID0gU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpjcmVhdGUodGhpcyk7CisgICAg
ICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyID0gU2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyOjpjcmVhdGUodGhpcywgcGFnZSgpLT5kaXNwbGF5SUQoKSk7CiAKICAgICByZXR1cm4g
bV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXItPnJlZ2lzdGVyQ2FsbGJhY2soY2FsbGJhY2ss
IGFuaW1hdGlvbkVsZW1lbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBmNzk5MDEyYmVm
MGZhMjM3NWFhNzBiYjFjMDJjZTFjNjRmOWQ2ODk4Li40M2Q1ODhlMjYyMjI4MWM1ZjQzODg5MzQ0
MWQzZTc1ZWFjMjY3MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzgsNiArMzgsNyBAQAog
I2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJMYXlvdXRUeXBlcy5oIgogI2luY2x1ZGUg
IlBhZ2VWaXNpYmlsaXR5U3RhdGUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2lu
Y2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCiAjaW5jbHVkZSAiU3RyaW5nV2l0aERpcmVjdGlvbi5oIgpAQCAtOTQ0LDYgKzk0NSw4IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyQ2FsbGJhY2tzKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0
aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOworICAgIAorICAgIHZvaWQgd2luZG93U2NyZWVuRGlk
Q2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKIAogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZFBh
cnNpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0
aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyLmNwcAppbmRleCA2ZWNmNDdiM2VmMjkzMWQxYjcwMjgzN2U3Mjg0N2JjOTgxOTQ0
N2M5Li4zZTUwYTg4ODc3ZmUyOWM5ODc4OTlmODEyYWIwNGVlMTI2MWZmN2UyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAt
NDYsMTUgKzQ2LDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRy
b2xsZXIoRG9jdW1lbnQqIGRvY3VtZW50KQorU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpT
Y3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBQbGF0Zm9ybURp
c3BsYXlJRCBkaXNwbGF5SUQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9u
ZXh0Q2FsbGJhY2tJZCgwKQogICAgICwgbV9zdXNwZW5kQ291bnQoMCkKICNpZiBVU0UoUkVRVUVT
VF9BTklNQVRJT05fRlJBTUVfVElNRVIpCiAgICAgLCBtX2FuaW1hdGlvblRpbWVyKHRoaXMsICZT
Y3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmFuaW1hdGlvblRpbWVyRmlyZWQpCiAgICAgLCBt
X2xhc3RBbmltYXRpb25GcmFtZVRpbWUoMCkKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJB
TUVfRElTUExBWV9NT05JVE9SKQorICAgICwgbV91c2VUaW1lcihmYWxzZSkKKyNlbmRpZgogI2Vu
ZGlmCiB7CisgICAgd2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7CiB9CiAKIHZvaWQg
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzdXNwZW5kKCkKQEAgLTE0Niw5ICsxNTAsMjkg
QEAgdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNlcnZpY2VTY3JpcHRlZEFuaW1h
dGlvbnMoRE9NVGltZVN0YW1wIHRpbWUpCiAgICAgICAgIHNjaGVkdWxlQW5pbWF0aW9uKCk7CiB9
CiAgICAgCit2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6d2luZG93U2NyZWVuRGlk
Q2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKK3sKKyNpZiBVU0UoUkVRVUVTVF9B
TklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorICAgIERpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJ
RCwgdGhpcyk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShkaXNwbGF5SUQpOworI2VuZGlmICAg
IAorfQorCiB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2NoZWR1bGVBbmltYXRp
b24oKQogewogI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9USU1FUikKKyNpZiBVU0Uo
UkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorICAgIGlmICghbV91c2VU
aW1lcikgeworICAgICAgICBpZiAoRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVk
TWFuYWdlcigpLT5zY2hlZHVsZUFuaW1hdGlvbih0aGlzKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIAorICAgICAgICBtX3VzZVRpbWVyID0gdHJ1ZTsKKyAgICB9CisjZW5kaWYK
KyAgICBpZiAobV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47Cisg
ICAgICAgIAogICAgIGRvdWJsZSBzY2hlZHVsZURlbGF5ID0gbWF4PGRvdWJsZT4oTWluaW11bUFu
aW1hdGlvbkludGVydmFsIC0gKGN1cnJlbnRUaW1lKCkgLSBtX2xhc3RBbmltYXRpb25GcmFtZVRp
bWUpLCAwKTsKICAgICBtX2FuaW1hdGlvblRpbWVyLnN0YXJ0T25lU2hvdChzY2hlZHVsZURlbGF5
KTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyLmgKaW5kZXggZWMyNGZiMzU1NDA0NjQyNzMwZTIzZmYxZjM2Nzk5OTU0N2FhN2NjMS4u
ZGNkZTNkZGJkMDkxYWU2MDBjZDE1NWE5MjBlZDE1MGQ1ZGM5ZWMwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaApAQCAtMjksOCArMjks
MTIgQEAKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAjaW5jbHVkZSAiRE9N
VGltZVN0YW1wLmgiCiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSKQorI2lm
IFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCisjaW5jbHVkZSAi
RGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCisjZW5kaWYKICNpbmNsdWRlICJUaW1lci5oIgogI2Vu
ZGlmCisjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KQEAgLTQyLDEyICs0NiwxNiBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBj
bGFzcyBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjazsKIAotY2xhc3MgU2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyIHsKK2NsYXNzIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcgorI2lm
IFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCisgICAgOiBwdWJs
aWMgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50CisjZW5kaWYKK3sKIFdURl9NQUtFX05PTkNP
UFlBQkxFKFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcik7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NPd25QdHI8U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyPiBjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPFNjcmlwdGVkQW5pbWF0aW9uQ29udHJv
bGxlcj4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxh
eUlEKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTY3JpcHRlZEFuaW1hdGlv
bkNvbnRyb2xsZXIoZG9jdW1lbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIoZG9jdW1lbnQsIGRpc3BsYXlJRCkpOwogICAgIH0KIAog
ICAgIHR5cGVkZWYgaW50IENhbGxiYWNrSWQ7CkBAIC01OSw4ICs2NywxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzdXNwZW5kKCk7CiAgICAgdm9pZCByZXN1bWUoKTsKIAorICAgIHZvaWQgd2luZG93
U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKKwogcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIoRG9jdW1lbnQqKTsKKyAgICBleHBsaWNp
dCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIoRG9jdW1lbnQqLCBQbGF0Zm9ybURpc3BsYXlJ
RCk7CiAgICAgCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFJlcXVlc3RBbmltYXRpb25GcmFt
ZUNhbGxiYWNrPiA+IENhbGxiYWNrTGlzdDsKICAgICBDYWxsYmFja0xpc3QgbV9jYWxsYmFja3M7
CkBAIC03NSw2ICs4NSwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgYW5pbWF0aW9uVGltZXJGaXJl
ZChUaW1lcjxTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI+Kik7CiAgICAgVGltZXI8U2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyPiBtX2FuaW1hdGlvblRpbWVyOwogICAgIGRvdWJsZSBtX2xh
c3RBbmltYXRpb25GcmFtZVRpbWU7CisKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVf
RElTUExBWV9NT05JVE9SKQorICAgIC8vIE92ZXJyaWRlIGZvciBEaXNwbGF5UmVmcmVzaE1vbml0
b3JDbGllbnQKKyAgICB2b2lkIGRpc3BsYXlSZWZyZXNoRmlyZWQoZG91YmxlIHRpbWVzdGFtcCkg
eyBzZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKGNvbnZlcnRTZWNvbmRzVG9ET01UaW1lU3RhbXAo
dGltZXN0YW1wKSk7IH0KKworICAgIGJvb2wgbV91c2VUaW1lcjsKKyNlbmRpZgogI2VuZGlmCiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAzNGZhNDBhODc1N2M5Y2E5Y2U0NDc1YjI2NGI2Mzlj
ZjFjYjgwMGU5Li5iZmJlNzBhMzIyN2RmOTI1NWI5NWM2OTMwNzZiZTIxZWZjMjY1MWRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKQEAgLTE3Miw2ICsxNzIsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDbGllbnRz
JiBwYWdlQ2xpZW50cykKICNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKICAgICAsIG1f
dmlzaWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKQogI2VuZGlmCisgICAg
LCBtX2Rpc3BsYXlJRCgwKQogewogICAgIGlmICghYWxsUGFnZXMpIHsKICAgICAgICAgYWxsUGFn
ZXMgPSBuZXcgSGFzaFNldDxQYWdlKj47CkBAIC02ODAsNiArNjgxLDE2IEBAIHZvaWQgUGFnZTo6
d2lsbE1vdmVPZmZzY3JlZW4oKQogICAgIH0KIH0KIAordm9pZCBQYWdlOjp3aW5kb3dTY3JlZW5E
aWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQoreworICAgIG1fZGlzcGxheUlE
ID0gZGlzcGxheUlEOworICAgIAorICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAg
IGlmIChmcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT53
aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlEKTsKKyAgICB9Cit9CisKIHZvaWQgUGFnZTo6
dXNlclN0eWxlU2hlZXRMb2NhdGlvbkNoYW5nZWQoKQogewogICAgIC8vIEZJWE1FOiBFdmVudHVh
bGx5IHdlIHdpbGwgbW92ZSB0byBhIG1vZGVsIG9mIGp1c3QgYmVpbmcgaGFuZGVkIHRoZSBzaGVl
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAppbmRleCAxMzkwYzk4NGRiNmE2NTI4NjIzMjIzOTNmZmFkODFlNTZiZTI2
MjVjLi5lNzBmZGJkMDk5ZGNmMWE1ZDM1MzVjZjQ0NjllZmJiN2NhODMxZjU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgiCiAjaW5jbHVk
ZSAiTGF5b3V0VHlwZXMuaCIKICNpbmNsdWRlICJQYWdlVmlzaWJpbGl0eVN0YXRlLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAg
LTI1Niw2ICsyNTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZGlkTW92
ZU9uc2NyZWVuKCk7CiAgICAgICAgIHZvaWQgd2lsbE1vdmVPZmZzY3JlZW4oKTsKIAorICAgICAg
ICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCk7CisgICAgICAg
IAogICAgICAgICB2b2lkIHVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFuZ2VkKCk7CiAgICAgICAg
IGNvbnN0IFN0cmluZyYgdXNlclN0eWxlU2hlZXQoKSBjb25zdDsKIApAQCAtMzEwLDYgKzMxMyw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRWaXNpYmlsaXR5U3RhdGUo
UGFnZVZpc2liaWxpdHlTdGF0ZSwgYm9vbCk7CiAjZW5kaWYKIAorICAgICAgICBQbGF0Zm9ybURp
c3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlJRDsgfQorICAgICAg
ICAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGluaXRHcm91cCgpOwogCkBAIC00MTYsNiAr
NDIxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlf
QVBJKQogICAgICAgICBQYWdlVmlzaWJpbGl0eVN0YXRlIG1fdmlzaWJpbGl0eVN0YXRlOwogI2Vu
ZGlmCisgICAgICAgIFBsYXRmb3JtRGlzcGxheUlEIG1fZGlzcGxheUlEOwogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtU2NyZWVuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVl
bi5oCmluZGV4IDc2NGZlMDJkZWJlNjk0OGVkMGYyZDY5ZDdhODM3YjVjYjdiMWY4ZTcuLjg0Zjdj
YzYxMTg5MTllZDA3NmYzYjRiNWJjYWRiMjYyZTAxNjg1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1TY3JlZW4uaApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlIDxRdWFydHpDb3JlL1F1YXJ0
ekNvcmUuaD4KKwogI2lmZGVmIF9fT0JKQ19fCiAgICAgQGNsYXNzIE5TU2NyZWVuOwogICAgIEBj
bGFzcyBOU1dpbmRvdzsKQEAgLTM4LDYgKzQwLDkgQEAKICAgICBjbGFzcyBOU1NjcmVlbjsKICAg
ICBjbGFzcyBOU1dpbmRvdzsKICNlbmRpZgordHlwZWRlZiBDR0RpcmVjdERpc3BsYXlJRCBQbGF0
Zm9ybURpc3BsYXlJRDsKKyNlbHNlCit0eXBlZGVmIHVpbnQ2NF90IFBsYXRmb3JtRGlzcGxheUlE
OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZlYzIwYWFjNWQyYThkYTY2ZjJhMzY1YjA2N2UyZGQ5MGFiMWIxZTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3IuY3BwCkBAIC0wLDAgKzEsMTU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorCisjaW5jbHVk
ZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCisKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQ6
OkRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCgpCisgICAgOiBtX3NjaGVkdWxlZChmYWxzZSkK
KyAgICAsIG1fZGlzcGxheUlESXNTZXQoZmFsc2UpCit7Cit9CisKK0Rpc3BsYXlSZWZyZXNoTW9u
aXRvckNsaWVudDo6fkRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCgpCit7CisgICAgRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLT51bnJlZ2lzdGVyQ2xpZW50
KHRoaXMpOworfQorCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudDo6ZmlyZURpc3Bs
YXlSZWZyZXNoSWZOZWVkZWQoZG91YmxlIHRpbWVzdGFtcCkKK3sKKyAgICBpZiAobV9zY2hlZHVs
ZWQpIHsKKyAgICAgICAgbV9zY2hlZHVsZWQgPSBmYWxzZTsKKyAgICAgICAgZGlzcGxheVJlZnJl
c2hGaXJlZCh0aW1lc3RhbXApOworICAgIH0KK30KKworRGlzcGxheVJlZnJlc2hNb25pdG9yOjpE
aXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQorICAgIDog
bV90aW1lc3RhbXAoMCkKKyAgICAsIG1fYWN0aXZlKHRydWUpCisgICAgLCBtX3NjaGVkdWxlZChm
YWxzZSkKKyAgICAsIG1fZGlzcGxheUlEKGRpc3BsYXlJRCkKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgLCBtX2Rpc3BsYXlMaW5rKDApCisjZW5kaWYKK3sKK30KKwordm9pZCBEaXNwbGF5UmVmcmVz
aE1vbml0b3I6OnJlZnJlc2hEaXNwbGF5T25NYWluVGhyZWFkKHZvaWQqIGRhdGEpCit7CisgICAg
RGlzcGxheVJlZnJlc2hNb25pdG9yKiBtb25pdG9yID0gc3RhdGljX2Nhc3Q8RGlzcGxheVJlZnJl
c2hNb25pdG9yKj4oZGF0YSk7CisKKyAgICBkb3VibGUgdGltZXN0YW1wOworICAgIHsKKyAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9jayhtb25pdG9yLT5tX211dGV4KTsKKyAgICAgICAgbW9uaXRvci0+
bV9zY2hlZHVsZWQgPSBmYWxzZTsKKyAgICAgICAgdGltZXN0YW1wID0gbW9uaXRvci0+bV90aW1l
c3RhbXA7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtb25pdG9yLT5tX2Ns
aWVudHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1vbml0b3ItPm1fY2xpZW50c1tpXS0+ZmlyZURp
c3BsYXlSZWZyZXNoSWZOZWVkZWQodGltZXN0YW1wKTsKK30KKyAKK0Rpc3BsYXlSZWZyZXNoTW9u
aXRvck1hbmFnZXIqIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1hbmFnZXIo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdl
ciwgbWFuYWdlciwgKCkpOworICAgIHJldHVybiBtYW5hZ2VyOworfQorCitzaXplX3QgRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6ZmluZE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQgZGlz
cGxheUlEKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9tb25pdG9ycy5z
aXplKCk7ICsraSkKKyAgICAgICAgaWYgKG1fbW9uaXRvcnNbaV0tPmRpc3BsYXlJRCgpID09IGRp
c3BsYXlJRCkKKyAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgCisgICAgcmV0dXJu
IG5vdEZvdW5kOworfQorCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnJlZ2lz
dGVyQ2xpZW50KERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCogY2xpZW50KQoreworICAgIGlm
ICghY2xpZW50LT5tX2Rpc3BsYXlJRElzU2V0KQorICAgICAgICByZXR1cm47CisgICAgICAgIAor
ICAgIHNpemVfdCBpbmRleCA9IGZpbmRNb25pdG9yKGNsaWVudC0+bV9kaXNwbGF5SUQpOworICAg
IERpc3BsYXlSZWZyZXNoTW9uaXRvciogbW9uaXRvcjsKKyAgICAKKyAgICBpZiAoaW5kZXggPT0g
bm90Rm91bmQpIHsKKyAgICAgICAgbW9uaXRvciA9IG5ldyBEaXNwbGF5UmVmcmVzaE1vbml0b3Io
Y2xpZW50LT5tX2Rpc3BsYXlJRCk7CisgICAgICAgIG1fbW9uaXRvcnMuYXBwZW5kKG1vbml0b3Ip
OworICAgIH0gZWxzZQorICAgICAgICBtb25pdG9yID0gbV9tb25pdG9yc1tpbmRleF07CisgICAg
ICAgIAorICAgIG1vbml0b3ItPmFkZENsaWVudChjbGllbnQpOworfQorCit2b2lkIERpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hbmFnZXI6OnVucmVnaXN0ZXJDbGllbnQoRGlzcGxheVJlZnJlc2hNb25p
dG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKCFjbGllbnQtPm1fZGlzcGxheUlESXNTZXQp
CisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgc2l6ZV90IGkgPSBmaW5kTW9uaXRvcihj
bGllbnQtPm1fZGlzcGxheUlEKTsKKyAgICBpZiAoaSA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvciogbW9uaXRvciA9IG1fbW9uaXRv
cnNbaV07CisgICAgaWYgKG1vbml0b3ItPnJlbW92ZUNsaWVudChjbGllbnQpKSB7CisgICAgICAg
IGlmICghbW9uaXRvci0+aGFzQ2xpZW50cygpKSB7CisgICAgICAgICAgICBtX21vbml0b3JzLnJl
bW92ZShpKTsKKyAgICAgICAgICAgIGRlbGV0ZSBtb25pdG9yOworICAgICAgICB9CisgICAgfQor
fQorCitib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNjaGVkdWxlQW5pbWF0aW9u
KERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCogY2xpZW50KQoreworICAgIGlmICghY2xpZW50
LT5tX2Rpc3BsYXlJRElzU2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAg
IHNpemVfdCBpID0gZmluZE1vbml0b3IoY2xpZW50LT5tX2Rpc3BsYXlJRCk7CisgICAgQVNTRVJU
KGkgIT0gbm90Rm91bmQpOworCisgICAgY2xpZW50LT5tX3NjaGVkdWxlZCA9IHRydWU7CisgICAg
cmV0dXJuIG1fbW9uaXRvcnNbaV0tPnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKTsKK30KKwordm9p
ZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxh
dGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqIGNs
aWVudCkKK3sKKyAgICBpZiAoY2xpZW50LT5tX2Rpc3BsYXlJRElzU2V0ICYmIGNsaWVudC0+bV9k
aXNwbGF5SUQgPT0gZGlzcGxheUlEKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgdW5yZWdp
c3RlckNsaWVudChjbGllbnQpOworICAgIGNsaWVudC0+c2V0RGlzcGxheUlEKGRpc3BsYXlJRCk7
CisgICAgcmVnaXN0ZXJDbGllbnQoY2xpZW50KTsKKyAgICBpZiAoY2xpZW50LT5tX3NjaGVkdWxl
ZCkKKyAgICAgICAgc2NoZWR1bGVBbmltYXRpb24oY2xpZW50KTsKK30KKworfQorCisjZW5kaWYg
Ly8gVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmQzOWQ5Y2IxZDlhMDZlMTlhMTI1ZWJkMWIxYmM1NGI1M2Q2MWJm
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvci5oCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERpc3BsYXlS
ZWZyZXNoTW9uaXRvcl9oCisjZGVmaW5lIERpc3BsYXlSZWZyZXNoTW9uaXRvcl9oCisKKyNpZiBV
U0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorCisjaW5jbHVkZSAi
UGxhdGZvcm1TY3JlZW4uaCIKKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERpc3BsYXlSZWZy
ZXNoTW9uaXRvcjsKK2NsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI7CisKKy8vCisv
LyBBYnN0cmFjdCB2aXJ0dWFsIGNsaWVudCB3aGljaCByZWNlaXZlcyByZWZyZXNoIGZpcmVkIG1l
c3NhZ2VzIG9uIHRoZSBtYWluIHRocmVhZAorLy8KK2NsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRv
ckNsaWVudCB7CisgICAgZnJpZW5kIERpc3BsYXlSZWZyZXNoTW9uaXRvcjsKKyAgICBmcmllbmQg
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjsKKyAgICAKK3B1YmxpYzoKKyAgICBEaXNwbGF5
UmVmcmVzaE1vbml0b3JDbGllbnQoKTsKKyAgICB2aXJ0dWFsIH5EaXNwbGF5UmVmcmVzaE1vbml0
b3JDbGllbnQoKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGxheVJlZnJlc2hGaXJlZChk
b3VibGUgdGltZXN0YW1wKSA9IDA7CisKK3ByaXZhdGU6CisgICAgdm9pZCBmaXJlRGlzcGxheVJl
ZnJlc2hJZk5lZWRlZChkb3VibGUgdGltZXN0YW1wKTsKKyAgICAKKyAgICB2b2lkIHNldERpc3Bs
YXlJRChQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCisgICAgeworICAgICAgICBtX2Rpc3Bs
YXlJRCA9IGRpc3BsYXlJRDsKKyAgICAgICAgbV9kaXNwbGF5SURTZXQgPSB0cnVlOworICAgIH0K
KyAgICAKKyAgICBib29sIG1fc2NoZWR1bGVkOworICAgIGJvb2wgbV9kaXNwbGF5SURJc1NldDsK
KyAgICBQbGF0Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJRDsKK307CisKKy8vCisvLyBNb25pdG9y
IGZvciBkaXNwbGF5IHJlZnJlc2ggbWVzc2FnZXMgZm9yIGEgZ2l2ZW4gc2NyZWVuCisvLworCitj
bGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3IgeworcHVibGljOgorICAgIERpc3BsYXlSZWZyZXNo
TW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCk7CisgICAgfkRpc3BsYXlSZWZyZXNoTW9uaXRvcigp
OworICAgIAorICAgIC8vIFJldHVybiB0cnVlIGlmIGNhbGxiYWNrIHJlcXVlc3Qgd2FzIHNjaGVk
dWxlZCwgZmFsc2UgaWYgaXQgY291bGRuJ3QgYmUKKyAgICAvLyAoZS5nLiwgaGFyZHdhcmUgcmVm
cmVzaCBpcyBub3QgYXZhaWxhYmxlKQorICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygp
OworICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKKyAg
ICAKKyAgICBib29sIGhhc0NsaWVudHMoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudHMuc2l6ZSgp
OyB9CisgICAgdm9pZCBhZGRDbGllbnQoRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KiBjbGll
bnQpIHsgbV9jbGllbnRzLmFwcGVuZChjbGllbnQpOyB9CisgICAgYm9vbCByZW1vdmVDbGllbnQo
RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KiBjbGllbnQpCisgICAgeworICAgICAgICBzaXpl
X3QgaSA9IG1fY2xpZW50cy5maW5kKGNsaWVudCk7CisgICAgICAgIGlmIChpID09IG5vdEZvdW5k
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX2NsaWVudHMucmVtb3ZlKGkp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KKworcHJpdmF0ZToK
KyAgICBkb3VibGUgbV90aW1lc3RhbXA7CisgICAgYm9vbCBtX2FjdGl2ZTsKKyAgICBib29sIG1f
c2NoZWR1bGVkOworICAgIFBsYXRmb3JtRGlzcGxheUlEIG1fZGlzcGxheUlEOworICAgIERpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hbmFnZXIqIG1fbWFuYWdlcjsKKyAgICBNdXRleCBtX211dGV4Owor
ICAgIFZlY3RvcjxEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqPiBtX2NsaWVudHM7CisgICAg
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyB2b2lkIHJlZnJlc2hEaXNwbGF5T25NYWlu
VGhyZWFkKHZvaWQqIGRhdGEpOworICAgIHN0YXRpYyBDVlJldHVybiBkaXNwbGF5TGlua0NhbGxi
YWNrKENWRGlzcGxheUxpbmtSZWYsIGNvbnN0IENWVGltZVN0YW1wKiBub3csIGNvbnN0IENWVGlt
ZVN0YW1wKiBvdXRwdXRUaW1lLCBDVk9wdGlvbkZsYWdzLCBDVk9wdGlvbkZsYWdzKiwgdm9pZCog
ZGF0YSk7CisKKyAgICBDVkRpc3BsYXlMaW5rUmVmIG1fZGlzcGxheUxpbms7CisjZW5kaWYKK307
CisKKy8vCisvLyBTaW5nbGV0b24gbWFuYWdlciBmb3IgYWxsIHRoZSBEaXNwbGF5UmVmcmVzaE1v
bml0b3JzLiBUaGlzIGlzIHRoZSBpbnRlcmZhY2UgdG8gdGhlIAorLy8gb3V0c2lkZSB3b3JsZC4g
SXQgZGlzdHJpYnV0ZXMgcmVxdWVzdHMgdG8gdGhlIGFwcHJvcHJpYXRlIG1vbml0b3IuIFdoZW4g
dGhlIGRpc3BsYXkKKy8vIHJlZnJlc2ggZXZlbnQgZmlyZXMsIHRoZSBwYXNzZWQgRGlzcGxheVJl
ZnJlc2hNb25pdG9yQ2xpZW50IGlzIGNhbGxlZCBkaXJlY3RseSBvbgorLy8gdGhlIG1haW4gdGhy
ZWFkLgorLy8KK2NsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIgeworcHVibGljOgor
ICAgIHN0YXRpYyBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyKiBzaGFyZWRNYW5hZ2VyKCk7
CisgICAgCisgICAgdm9pZCByZWdpc3RlckNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGll
bnQqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJDbGllbnQoRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xp
ZW50Kik7CisKKyAgICBib29sIHNjaGVkdWxlQW5pbWF0aW9uKERpc3BsYXlSZWZyZXNoTW9uaXRv
ckNsaWVudCopOworICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxh
eUlELCBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqKTsKKworcHJpdmF0ZToKKyAgICBEaXNw
bGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyKCkgeyB9CisKKyAgICBzaXplX3QgZmluZE1vbml0b3Io
UGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0OworICAgIAorICAgIFZlY3RvcjxEaXNwbGF5UmVmcmVz
aE1vbml0b3IqPiBtX21vbml0b3JzOworfTsKKworfQorCisjZW5kaWYgLy8gVVNFKFJFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JNYWMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NmEyZWY3ZjQ2ZGFlNDNlNTg2NTQwNDY3
MmRmZWEyZDc3NDQ0OWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcApAQCAtMCwwICsxLDk1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJB
TUVfRElTUExBWV9NT05JVE9SKQorCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgi
CisKKyNpbmNsdWRlIDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0NWUmV0dXJuIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheUxpbmtDYWxs
YmFjayhDVkRpc3BsYXlMaW5rUmVmLCBjb25zdCBDVlRpbWVTdGFtcCogbm93LCBjb25zdCBDVlRp
bWVTdGFtcCogb3V0cHV0VGltZSwgQ1ZPcHRpb25GbGFncywgQ1ZPcHRpb25GbGFncyosIHZvaWQq
IGRhdGEpCit7CisgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiBtb25pdG9yID0gc3RhdGljX2Nh
c3Q8RGlzcGxheVJlZnJlc2hNb25pdG9yKj4oZGF0YSk7CisgICAgCisgICAgTXV0ZXhMb2NrZXIg
bG9jayhtb25pdG9yLT5tX211dGV4KTsKKyAgICBpZiAoIW1vbml0b3ItPm1fc2NoZWR1bGVkKQor
ICAgICAgICByZXR1cm4ga0NWUmV0dXJuU3VjY2VzczsKKworICAgIGRvdWJsZSBub3dTZWNvbmRz
ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihub3ctPnZpZGVvVGltZSkgLyBzdGF0aWNfY2FzdDxkb3Vi
bGU+KG5vdy0+dmlkZW9UaW1lU2NhbGUpOworICAgIGRvdWJsZSBvdXRwdXRUaW1lU2Vjb25kcyA9
IHN0YXRpY19jYXN0PGRvdWJsZT4ob3V0cHV0VGltZS0+dmlkZW9UaW1lKSAvIHN0YXRpY19jYXN0
PGRvdWJsZT4ob3V0cHV0VGltZS0+dmlkZW9UaW1lU2NhbGUpOworICAgIGRvdWJsZSB3ZWJLaXRO
b3cgPSBjdXJyZW50VGltZSgpOworICAgIG1vbml0b3ItPm1fdGltZXN0YW1wID0gd2ViS2l0Tm93
IC0gbm93U2Vjb25kcyArIG91dHB1dFRpbWVTZWNvbmRzOworICAgIAorICAgIGNhbGxPbk1haW5U
aHJlYWQoRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZWZyZXNoRGlzcGxheU9uTWFpblRocmVhZCwg
bW9uaXRvcik7CisgICAgcmV0dXJuIGtDVlJldHVyblN1Y2Nlc3M7Cit9CisgCitEaXNwbGF5UmVm
cmVzaE1vbml0b3I6On5EaXNwbGF5UmVmcmVzaE1vbml0b3IoKQoreworICAgIGNhbmNlbENhbGxP
bk1haW5UaHJlYWQoRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZWZyZXNoRGlzcGxheU9uTWFpblRo
cmVhZCwgdGhpcyk7CisgICAgCisgICAgaWYgKG1fZGlzcGxheUxpbmspIHsKKyAgICAgICAgQ1ZE
aXNwbGF5TGlua1N0b3AobV9kaXNwbGF5TGluayk7CisgICAgICAgIENWRGlzcGxheUxpbmtSZWxl
YXNlKG1fZGlzcGxheUxpbmspOworICAgICAgICBtX2Rpc3BsYXlMaW5rID0gMDsKKyAgICB9Cit9
CisKK2Jvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkK
K3sKKyAgICBpZiAoIW1fYWN0aXZlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAor
ICAgIGlmICghbV9kaXNwbGF5TGluaykgeworICAgICAgICBtX2FjdGl2ZSA9IGZhbHNlOworICAg
ICAgICBDVlJldHVybiBlcnJvciA9IENWRGlzcGxheUxpbmtDcmVhdGVXaXRoQ0dEaXNwbGF5KG1f
ZGlzcGxheUlELCAmbV9kaXNwbGF5TGluayk7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBlcnJvciA9IENWRGlzcGxheUxpbmtTZXRPdXRw
dXRDYWxsYmFjayhtX2Rpc3BsYXlMaW5rLCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlM
aW5rQ2FsbGJhY2ssIHRoaXMpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgZXJyb3IgPSBDVkRpc3BsYXlMaW5rU3RhcnQobV9kaXNwbGF5
TGluayk7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICBtX2FjdGl2ZSA9IHRydWU7CisgICAgfQorICAgIAorICAgIE11dGV4TG9ja2VyIGxv
Y2sobV9tdXRleCk7CisgICAgbV9zY2hlZHVsZWQgPSB0cnVlOworICAgIHJldHVybiB0cnVlOwor
fQorCit9CisKKyNlbmRpZiAvLyBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9N
T05JVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDQ4ODFhYjc4NzJiZTZlYTU3NDljNzIxZDZiNjQz
OGIyNjMzNjZkNWMuLmI1YzQyMjM2MWY2MWQ1Y2IzODM2ZWEzNDg1ZGZiNzVkYmZmZTkyZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMS0xMC0xMiAgQ2hyaXMgTWFycmlu
ICA8Y21hcnJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3luYyByZXF1ZXN0QW5pbWF0aW9uRnJh
bWUgY2FsbGJhY2sgdG8gQ1ZEaXNwbGF5TGluayBvbiBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4OTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHdpbmRvd0RpZENoYW5nZVNjcmVlbiBmdW5j
dGlvbiB3aGljaCBsaXN0ZW5zIGZvciB0aGUgd2luZG93IGNoYW5naW5nCisgICAgICAgIHNjcmVl
bnMgYW5kIHBhc3NlcyB0aGUgbmV3IGRpc3BsYXlJRCBhbG9uZyB0byBXZWJDb3JlOjpQYWdlLiBJ
dCBhbHNvIHNlbmRzCisgICAgICAgIG9uZSBvbiB3aW5kb3dXaWxsT3JkZXJPblNjcmVlbiwgc28g
dGhlIFBhZ2UgaGFzIGEgZnJlc2ggZGlzcGxheUlEIGFmdGVyIGl0J3MKKyAgICAgICAgY3JlYXRl
ZC4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBh
ZGRXaW5kb3dPYnNlcnZlcnNGb3JXaW5kb3c6XSk6CisgICAgICAgICgtW1dlYlZpZXcgcmVtb3Zl
V2luZG93T2JzZXJ2ZXJzXSk6CisgICAgICAgICgtW1dlYlZpZXcgX3dpbmRvd0RpZENoYW5nZVNj
cmVlbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfd2luZG93V2lsbE9yZGVyT25TY3JlZW46XSk6
CisKIDIwMTEtMTAtMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBVc2UgYSBDYWNoZWRJbWFnZUNsaWVudCBpbnN0ZWFkIG9mIENhY2hlZFJlc291cmNlQ2xp
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggOTk3NDYyYzkwMjVmNjQx
ODc2YWMyZjZkN2UzMGJkYjFmOGZjMzE5Yy4uNGE1YWI2NmU3YjFmY2IzMWYyMDliYTNhZmJhNmVk
NzMyOWMxOTJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMzIxOCw2
ICszMjE4LDggQEAgLSAodm9pZClhZGRXaW5kb3dPYnNlcnZlcnNGb3JXaW5kb3c6KE5TV2luZG93
ICopd2luZG93CiAgICAgICAgICAgICBuYW1lOldLV2luZG93V2lsbE9yZGVyT2ZmU2NyZWVuTm90
aWZpY2F0aW9uKCkgb2JqZWN0OndpbmRvd107CiAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50
ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX3dp
bmRvd0RpZENoYW5nZVJlc29sdXRpb246KQogICAgICAgICAgICAgbmFtZTp3aW5kb3dEaWRDaGFu
Z2VSZXNvbHV0aW9uTm90aWZpY2F0aW9uIG9iamVjdDp3aW5kb3ddOworICAgICAgICBbW05TTm90
aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6
QHNlbGVjdG9yKF93aW5kb3dEaWRDaGFuZ2VTY3JlZW46KQorICAgICAgICAgICAgbmFtZTpOU1dp
bmRvd0RpZENoYW5nZVNjcmVlbk5vdGlmaWNhdGlvbiBvYmplY3Q6d2luZG93XTsKICAgICB9CiB9
CiAKQEAgLTMyMzUsNiArMzIzNyw4IEBAIC0gKHZvaWQpcmVtb3ZlV2luZG93T2JzZXJ2ZXJzCiAg
ICAgICAgICAgICBuYW1lOldLV2luZG93V2lsbE9yZGVyT2ZmU2NyZWVuTm90aWZpY2F0aW9uKCkg
b2JqZWN0OndpbmRvd107CiAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZgogICAgICAgICAgICAgbmFtZTp3aW5kb3dEaWRDaGFu
Z2VSZXNvbHV0aW9uTm90aWZpY2F0aW9uIG9iamVjdDp3aW5kb3ddOworICAgICAgICBbW05TTm90
aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYKKyAgICAg
ICAgICAgIG5hbWU6TlNXaW5kb3dEaWRDaGFuZ2VTY3JlZW5Ob3RpZmljYXRpb24gb2JqZWN0Ondp
bmRvd107CiAgICAgfQogfQogCkBAIC0zMjg3LDYgKzMyOTEsMTIgQEAgLSAodm9pZCl2aWV3RGlk
TW92ZVRvV2luZG93CiAgICAgW3NlbGYgX3VwZGF0ZUFjdGl2ZVN0YXRlXTsKIH0KIAorLSAodm9p
ZClkb1dpbmRvd0RpZENoYW5nZVNjcmVlbgoreworICAgIGlmIChfcHJpdmF0ZSAmJiBfcHJpdmF0
ZS0+cGFnZSkKKyAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPndpbmRvd1NjcmVlbkRpZENoYW5nZSgo
UGxhdGZvcm1EaXNwbGF5SUQpW1tbW1tzZWxmIHdpbmRvd10gc2NyZWVuXSBkZXZpY2VEZXNjcmlw
dGlvbl0gb2JqZWN0Rm9yS2V5OkAiTlNTY3JlZW5OdW1iZXIiXSBpbnRWYWx1ZV0pOworfQorCiAt
ICh2b2lkKV93aW5kb3dEaWRCZWNvbWVLZXk6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9u
CiB7CiAgICAgTlNXaW5kb3cgKmtleVdpbmRvdyA9IFtub3RpZmljYXRpb24gb2JqZWN0XTsKQEAg
LTMzMTAsNiArMzMyMCwxNCBAQCAtICh2b2lkKV93aW5kb3dXaWxsT3JkZXJPblNjcmVlbjooTlNO
b3RpZmljYXRpb24gKilub3RpZmljYXRpb24KIAogICAgIGlmICghW3NlbGYgc2hvdWxkVXBkYXRl
V2hpbGVPZmZzY3JlZW5dKQogICAgICAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXk6WUVTXTsKKwor
ICAgIC8vIFNlbmQgYSBjaGFuZ2Ugc2NyZWVuIHRvIG1ha2Ugc3VyZSB0aGUgaW5pdGlhbCBkaXNw
bGF5SUQgaXMgc2V0CisgICAgW3NlbGYgZG9XaW5kb3dEaWRDaGFuZ2VTY3JlZW5dOworfQorCist
ICh2b2lkKV93aW5kb3dEaWRDaGFuZ2VTY3JlZW46KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0
aW9uCit7CisgICAgW3NlbGYgZG9XaW5kb3dEaWRDaGFuZ2VTY3JlZW5dOwogfQogCiAtICh2b2lk
KV93aW5kb3dXaWxsT3JkZXJPZmZTY3JlZW46KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggMmYyY2MxZjg4ZWY4YmFjM2E4MTBiNjI0ZjdkNTUxYWNkMDUzMGZmMy4u
MzRjMDEwMjc4NThlZTg2NTcyMWJjYmYyMTlkZDU5MTI2NTExYjE2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI5IEBACisyMDExLTEwLTEyICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNv
bT4KKworICAgICAgICBTeW5jIHJlcXVlc3RBbmltYXRpb25GcmFtZSBjYWxsYmFjayB0byBDVkRp
c3BsYXlMaW5rIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njg5MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgd2luZG93RGlkQ2hhbmdlU2NyZWVuIGZ1bmN0aW9uIHdoaWNoIGxpc3RlbnMg
Zm9yIHRoZSB3aW5kb3cgY2hhbmdpbmcKKyAgICAgICAgc2NyZWVucyBhbmQgcGFzc2VzIHRoZSBu
ZXcgZGlzcGxheUlEIGFsb25nIHRvIFdlYkNvcmU6OlBhZ2UuIEl0IGFsc28gc2VuZHMKKyAgICAg
ICAgb25lIG9uIHdpbmRvd0RpZEJlY29tZUtleSwgc28gdGhlIFBhZ2UgaGFzIGEgZnJlc2ggZGlz
cGxheUlEIGFmdGVyIGl0J3MKKyAgICAgICAgY3JlYXRlZC4gRXZlbnQgaXMgZ2VuZXJhdGVkIGlu
IHRoZSBVSVByb2Nlc3MgYW5kIHRoZW4gc2VudCBvdmVyIHRvIHRoZQorICAgICAgICBXZWJQcm9j
ZXNzLCB3aGljaCBhY3R1YWxseSBzZW5kcyBpdCB0byBXZWJDb3JlOjpQYWdlLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgYWRkV2lu
ZG93T2JzZXJ2ZXJzRm9yV2luZG93Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgcmVtb3ZlV2luZG93
T2JzZXJ2ZXJzXSk6CisgICAgICAgICgtW1dLVmlldyBfd2luZG93RGlkQ2hhbmdlU2NyZWVuOl0p
OgorICAgICAgICAoLVtXS1ZpZXcgX3dpbmRvd0RpZEJlY29tZUtleTpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OndpbmRvd1NjcmVlbkRpZENoYW5nZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxMS0xMC0xMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpA
YXBwbGUuY29tPgogCiAgICAgICAgIEhhbmcgYmVuZWF0aCBQbHVnaW5Qcm9jZXNzUHJveHk6OmNy
ZWF0ZVByb3BlcnR5TGlzdEZpbGUoKSB3aGVuIHVzaW5nIGEgdGhpbiBidWlsZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDBmYmIwNzZmNDkyMTMzN2Nj
Y2MxZWIyZDlkMDhhYzJiM2FjN2JjYTUuLmZmZmYxNzVkNzZlYTI5NDEwNzkzZjcxOTc3OWRjNmM4
ZjRlODhmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0K
QEAgLTE3OTcsNyArMTc5Nyw4IEBAIC0gKHZvaWQpYWRkV2luZG93T2JzZXJ2ZXJzRm9yV2luZG93
OihOU1dpbmRvdyAqKXdpbmRvdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuYW1lOkAiX05TV2luZG93RGlkQmVjb21lVmlzaWJsZSIgb2JqZWN0
OndpbmRvd107CiAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0g
YWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX3dpbmRvd0RpZENoYW5nZVJlc29s
dXRpb246KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuYW1lOndpbmRvd0RpZENoYW5nZVJlc29sdXRpb25Ob3RpZmljYXRpb24gb2JqZWN0Ondp
bmRvd107Ci0KKyAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBh
ZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihfd2luZG93RGlkQ2hhbmdlU2NyZWVu
OikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bmFtZTpOU1dpbmRvd0RpZENoYW5nZVNjcmVlbk5vdGlmaWNhdGlvbiBvYmplY3Q6d2luZG93XTsK
ICAgICB9CiB9CiAKQEAgLTE4MTYsNyArMTgxNyw3IEBAIC0gKHZvaWQpcmVtb3ZlV2luZG93T2Jz
ZXJ2ZXJzCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVP
YnNlcnZlcjpzZWxmIG5hbWU6QCJOU1dpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuTm90aWZpY2F0aW9u
IiBvYmplY3Q6d2luZG93XTsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpAIl9OU1dpbmRvd0RpZEJlY29tZVZpc2libGUi
IG9iamVjdDp3aW5kb3ddOwogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRl
cl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOndpbmRvd0RpZENoYW5nZVJlc29sdXRpb25Ob3Rp
ZmljYXRpb24gb2JqZWN0OndpbmRvd107Ci0KKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpOU1dpbmRvd0RpZENoYW5nZVNj
cmVlbk5vdGlmaWNhdGlvbiBvYmplY3Q6d2luZG93XTsKIH0KIAogLSAodm9pZCl2aWV3V2lsbE1v
dmVUb1dpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cKQEAgLTE4NjgsNiArMTg2OSwxMSBAQCAtICh2
b2lkKXZpZXdEaWRNb3ZlVG9XaW5kb3cKICAgICBfZGF0YS0+X3BhZ2UtPnNldEludHJpbnNpY0Rl
dmljZVNjYWxlRmFjdG9yKFtzZWxmIF9pbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3Rvcl0pOwogfQog
CistICh2b2lkKWRvV2luZG93RGlkQ2hhbmdlU2NyZWVuCit7CisgICAgX2RhdGEtPl9wYWdlLT53
aW5kb3dTY3JlZW5EaWRDaGFuZ2UoKFBsYXRmb3JtRGlzcGxheUlEKVtbW1tbc2VsZiB3aW5kb3dd
IHNjcmVlbl0gZGV2aWNlRGVzY3JpcHRpb25dIG9iamVjdEZvcktleTpAIk5TU2NyZWVuTnVtYmVy
Il0gaW50VmFsdWVdKTsKK30KKwogLSAodm9pZClfd2luZG93RGlkQmVjb21lS2V5OihOU05vdGlm
aWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogewogICAgIE5TV2luZG93ICprZXlXaW5kb3cgPSBbbm90
aWZpY2F0aW9uIG9iamVjdF07CkBAIC0xODc1LDYgKzE4ODEsMTQgQEAgLSAodm9pZClfd2luZG93
RGlkQmVjb21lS2V5OihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogICAgICAgICBbc2Vs
ZiBfdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZV07CiAgICAgICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0
YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKICAgICB9CisK
KyAgICAvLyBTZW5kIGEgY2hhbmdlIHNjcmVlbiB0byBtYWtlIHN1cmUgdGhlIGluaXRpYWwgZGlz
cGxheUlEIGlzIHNldAorICAgIFtzZWxmIGRvV2luZG93RGlkQ2hhbmdlU2NyZWVuXTsKK30KKwor
LSAodm9pZClfd2luZG93RGlkQ2hhbmdlU2NyZWVuOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNh
dGlvbgoreworICAgIFtzZWxmIGRvV2luZG93RGlkQ2hhbmdlU2NyZWVuXTsKIH0KIAogLSAodm9p
ZClfd2luZG93RGlkUmVzaWduS2V5OihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBhYTg2ZWYyZTJjOWZi
YzVmZTc1YzZkMmNjNzc0NTM1N2NkZDllYzU5Li5iYzM4ODdmYjRiMmUzM2ZiMWI5NjUxYzExMjcx
YzAxYTNjODQxNjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtMTE1OCw2ICsxMTU4LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbnRyaW5zaWNE
ZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikKICAgICBtX2RyYXdpbmdBcmVhLT5k
ZXZpY2VTY2FsZUZhY3RvckRpZENoYW5nZSgpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6d2lu
ZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKK3sKKyAgICBp
ZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlEKSwgbV9wYWdl
SUQpOworfQorCiBmbG9hdCBXZWJQYWdlUHJveHk6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QK
IHsKICAgICBpZiAobV9jdXN0b21EZXZpY2VTY2FsZUZhY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0MDg1MTk4NjgzNWQ2Nzg2YjhiYWNmOGU4Mjk4YTYy
MTFkZmMzNjcyLi40ZTRkNzJjYWEyMTA4ZTM5MWU2N2EzODc4MzE2NGFmNTA1ODI1NjlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01NSw2ICs1NSw3IEBACiAj
aW5jbHVkZSAiV2ViVUlDbGllbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Q
bGF0Zm9ybVNjcmVlbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RleHRDaGVja2luZy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBA
IC0zOTEsNyArMzkyLDggQEAgcHVibGljOgogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCk7CiAg
ICAgdm9pZCBzZXRDdXN0b21EZXZpY2VTY2FsZUZhY3RvcihmbG9hdCk7Ci0KKyAgICB2b2lkIHdp
bmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCk7CisgICAgCiAgICAgdm9pZCBz
ZXRVc2VGaXhlZExheW91dChib29sKTsKICAgICB2b2lkIHNldEZpeGVkTGF5b3V0U2l6ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgYm9vbCB1c2VGaXhlZExheW91dCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXNlRml4ZWRMYXlvdXQ7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggODFlM2Y4YzdlYWY0OWFhODg2N2Y0NGQxMDE2Zjkz
NDk3YTlhMTg3OC4uMzVlNGM4YWE2YzQ3YWRmYmM4NGNkZjJjNDIxNzVhZDU2ODIxZjZmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtODE2
LDYgKzgxNiwxMSBAQCB2b2lkIFdlYlBhZ2U6OnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZG91
YmxlIHBhZ2Vab29tRmFjdG9yLCBkb3VibGUgdGV4dFpvb21GYQogICAgIHJldHVybiBmcmFtZS0+
c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhzdGF0aWNfY2FzdDxmbG9hdD4ocGFnZVpvb21GYWN0
b3IpLCBzdGF0aWNfY2FzdDxmbG9hdD4odGV4dFpvb21GYWN0b3IpKTsKIH0KIAordm9pZCBXZWJQ
YWdlOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UodWludDY0X3QgZGlzcGxheUlEKQoreworICAgIG1f
cGFnZS0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKHN0YXRpY19jYXN0PFBsYXRmb3JtRGlzcGxheUlE
PihkaXNwbGF5SUQpKTsKK30KKwogdm9pZCBXZWJQYWdlOjpzY2FsZVBhZ2UoZG91YmxlIHNjYWxl
LCBjb25zdCBJbnRQb2ludCYgb3JpZ2luKQogewogICAgIG1fcGFnZS0+c2V0UGFnZVNjYWxlRmFj
dG9yKHNjYWxlLCBvcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggMmVjMmE2NWI3NTRkN2IwZTU5Y2JhYWViZjJlZjQzNjIwMWZiNWYwZC4u
OGE3ZjgzNTFhM2YxZDkzZTBlZjk3MDk4NzY1NTIxMzRhODNkZTc0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00OSw2ICs0OSw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlw
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvV2ViQ29yZUtleWJvYXJkVUlNb2RlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KQEAgLTI1Niw2ICsyNTcsNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIHBhZ2Vab29tRmFj
dG9yKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRQYWdlWm9vbUZhY3Rvcihkb3VibGUpOwogICAgIHZv
aWQgc2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhkb3VibGUgcGFnZVpvb21GYWN0b3IsIGRvdWJs
ZSB0ZXh0Wm9vbUZhY3Rvcik7CisgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UodWludDY0
X3QpOwogCiAgICAgdm9pZCBzY2FsZVBhZ2UoZG91YmxlIHNjYWxlLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgb3JpZ2luKTsKICAgICBkb3VibGUgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCmluZGV4IGMyMjQxZWJiYjU2ZDdhZGVlOWU5NjhmNjE0ZTA3ZGIyNzYyMGEwNzEuLmE1
ODUzYzIyNDkzOTg5YzIxN2QyZjQwNjY1MWQ1YWY0YzEyNzczOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0x
MTMsNiArMTEzLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAgICAgU2V0UGFnZUFuZFRleHRa
b29tRmFjdG9ycyhkb3VibGUgcGFnZVpvb21GYWN0b3IsIGRvdWJsZSB0ZXh0Wm9vbUZhY3RvcikK
ICAgICBTZXRQYWdlWm9vbUZhY3Rvcihkb3VibGUgem9vbUZhY3RvcikKICAgICBTZXRUZXh0Wm9v
bUZhY3Rvcihkb3VibGUgem9vbUZhY3RvcikKKyAgICBXaW5kb3dTY3JlZW5EaWRDaGFuZ2UodWlu
dDY0X3QgZGlzcGxheUlEKQogCiAgICAgU2NhbGVQYWdlKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6
SW50UG9pbnQgb3JpZ2luKQogCg==
</data>
<flag name="review"
          id="108501"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>