<?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>56055</bug_id>
          
          <creation_ts>2011-03-09 14:55:47 -0800</creation_ts>
          <short_desc>Hook up new AppKit autocorrection UI with WK2.</short_desc>
          <delta_ts>2011-03-23 19:53:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.6</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="Jia Pu">jiapu.mail</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddavidso</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>364805</commentid>
    <comment_count>0</comment_count>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-09 14:55:47 -0800</bug_when>
    <thetext>This task is to bring autocorrection UI in WK2 on Mac OS X to parity with that in WK1.
&lt;rdar://problem/8947463&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364833</commentid>
    <comment_count>1</comment_count>
      <attachid>85249</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-09 15:52:20 -0800</bug_when>
    <thetext>Created attachment 85249
Patch (v1)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368444</commentid>
    <comment_count>2</comment_count>
      <attachid>85249</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-16 12:10:27 -0700</bug_when>
    <thetext>Comment on attachment 85249
Patch (v1)

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

Looking pretty good. Still needs a little work.

&gt; Source/WebCore/editing/Editor.h:426
&gt;      void dismissCorrectionPanel(ReasonForDismissingCorrectionPanel);
&gt; +    void dismissCorrectionPanel(ReasonForDismissingCorrectionPanel, String&amp; result);

A more usual idiom for this would be to name the asynchronous version dismissCorrectionPanelSoon and use a normal return value for the synchronous version. Overloading based on an out parameter seems a little awkward to me.

&gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanelMac.h:37
&gt; +class CorrectionPanelMac {

Not sure this class needs the word Mac in its name.

Should be marked noncopyable.

&gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanelMac.h:48
&gt; +    void doDismiss(WebCore::ReasonForDismissingCorrectionPanel, bool dismissingExternally);

Not a great name for this function. It’s unclear how dismiss is different from doDismiss.

&gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanelMac.h:50
&gt; +    bool m_dismissedExternally;

Normally we would call this m_wasDismissedExternally.

&gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanelMac.h:54
&gt; +    WebView* m_view;
&gt; +    NSString* m_resultForSynchronousDismissal;
&gt; +    NSCondition* m_resultCondition;

For Objective-C classes we normally use a different style of where to put the*.

&gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanelMac.mm:40
&gt; +        case CorrectionPanelInfo::PanelTypeCorrection:
&gt; +            return NSCorrectionBubbleTypeCorrection;
&gt; +        case CorrectionPanelInfo::PanelTypeReversion:
&gt; +            return NSCorrectionBubbleTypeReversion;
&gt; +        case CorrectionPanelInfo::PanelTypeSpellingSuggestions:
&gt; +            return NSCorrectionBubbleTypeGuesses;

This is not the WebKit style of how to line up switch statements.

&gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanelMac.mm:52
&gt; +    m_resultCondition = [[NSCondition alloc] init];

This won’t work under GC. You need to have m_resultCondition be a RetainPtr instead.

&gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanelMac.mm:60
&gt; +    [m_resultCondition release];
&gt; +    if (m_resultForSynchronousDismissal)
&gt; +        [m_resultForSynchronousDismissal release];

These won’t work under GC. Both m_resultCondition and m_resultForSynchronousDismissal should be RetainPtr.

&gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanelMac.mm:133
&gt; +    result = String(m_resultForSynchronousDismissal);

The explicit String() should not be needed here.

&gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanelMac.mm:152
&gt; +    if (reason == ReasonForDismissingCorrectionPanelAccepted)
&gt; +        [[NSSpellChecker sharedSpellChecker] dismissCorrectionBubbleForView:m_view];
&gt; +    else
&gt; +        [[NSSpellChecker sharedSpellChecker] cancelCorrectionBubbleForView:m_view];
&gt; +    m_view = 0;

What’s the guarantee that m_view is still good here? I suggest making it a RetainPtr.

&gt; Source/WebKit/mac/WebView/WebView.mm:5315
&gt; +        coreFrame-&gt;editor()-&gt;handleCorrectionPanelResult(String(result));

Should not need an explicit String() here.

&gt; Source/WebKit2/UIProcess/API/mac/PageClientImpl.h:116
&gt; +#if !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them here.

&gt; Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm:446
&gt; +#if !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them here.

&gt; Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm:455
&gt; +#if !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them here.

&gt; Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm:462
&gt; +#if !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them here.

&gt; Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm:471
&gt; +#if !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them here.

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:2050
&gt; +    _data-&gt;_page-&gt;handleCorrectionPanelResult(WTF::String(result));

Should not need an existing WTF::String here.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2805
&gt; +#if PLATFORM(MAC) &amp;&amp; !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them here.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2885
&gt; +#if PLATFORM(MAC) &amp;&amp; !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them here.

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:657
&gt; +#if PLATFORM(MAC) &amp;&amp; !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them here.

&gt; Source/WebKit2/UIProcess/WebPageProxy.messages.in:212
&gt; +#if PLATFORM(MAC) &amp;&amp; !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them here.

&gt; Source/WebKit2/UIProcess/WebPageProxy.messages.in:214
&gt; +    ShowCorrectionPanel(WebCore::CorrectionPanelInfo::PanelType panelType, WebCore::FloatRect boundingBoxOfReplacedString, WTF::String replacedString, WTF::String replacementString, Vector&lt;WTF::String&gt; alternativeReplacementStrings)

We normally just use integers instead of adding enums to the cross process machinery for things like panelType.

&gt; Source/WebKit2/UIProcess/WebPageProxy.messages.in:217
&gt; +    RecordAutocorrectionResponse(WebCore::EditorClient::AutocorrectionResponseType responseType, WTF::String replacedString, WTF::String replacementString);

We normally just use integers instead of adding enums to the cross process machinery for things like responseType.

&gt; Source/WebKit2/UIProcess/mac/CorrectionPanelMac.h:29
&gt; +#if !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them here.

&gt; Source/WebKit2/UIProcess/mac/CorrectionPanelMac.mm:27
&gt; +#if !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them here.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:249
&gt;  #if !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them here.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2110
&gt; +#if PLATFORM(MAC) &amp;&amp; !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them here.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:359
&gt; +#if PLATFORM(MAC) &amp;&amp; !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them here.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.messages.in:196
&gt; +#if PLATFORM(MAC) &amp;&amp; !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)

WebKit2 doesn’t support Tiger or Leopard, so there is no need to mention them here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369699</commentid>
    <comment_count>3</comment_count>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-18 10:15:51 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 85249 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=85249&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanelMac.h:48
&gt; &gt; +    void doDismiss(WebCore::ReasonForDismissingCorrectionPanel, bool dismissingExternally);
&gt; 
&gt; Not a great name for this function. It’s unclear how dismiss is different from doDismiss.
&gt; 

doDismiss() contains the actual implementation, but shall not be called directly. It&apos;s used by both dismiss() and two other public functions().

dismiss() is public function which always pass false as second argument to doDismiss().

I&apos;m not sure what kind of naming convention WebKit uses in situation like this. Maybe just use the same name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369712</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-18 10:35:35 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I&apos;m not sure what kind of naming convention WebKit uses in situation like this. Maybe just use the same name?

Often we look for some difference in the functions to use to change the names. Other times we have used an “internal” suffix, when we couldn’t come up with anything better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370062</commentid>
    <comment_count>5</comment_count>
      <attachid>86252</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-18 18:34:53 -0700</bug_when>
    <thetext>Created attachment 86252
Patch (v2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371000</commentid>
    <comment_count>6</comment_count>
      <attachid>86252</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-21 16:32:16 -0700</bug_when>
    <thetext>Comment on attachment 86252
Patch (v2)

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

&gt; Source/WebCore/editing/Editor.cpp:2628
&gt;      if (client())
&gt; -        client()-&gt;dismissCorrectionPanel(reasonForDismissing);
&gt; +        return client()-&gt;dismissCorrectionPanelSoon(reasonForDismissing);
&gt; +    else
&gt; +        return String();

We normally do not put else after return in WebKit code. And we use early return style, returning when there is an error. So it should be:

    if (!client())
        return String();
    return client()-&gt;dismissCorrectionPanelSoon(reasonForDismissing);

&gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanel.mm:50
&gt; +    m_resultCondition.adoptNS([[NSCondition alloc] init]);

You can do that allocation in the constructor:

    , m_resultCondition(AdoptNS, [[NSCondition alloc] init])

&gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanel.mm:80
&gt; +    [spellChecker showCorrectionBubbleOfType:bubbleType primaryString:replacementStringAsNSString alternativeStrings:alternativeStrings forStringInRect:boundingBoxOfReplacedString view:m_view.get() completionHandler:^(NSString* acceptedString) {

This completion handler block is so big that I think you should factor most of it into a function.

What prevents this block from being called after the CorrectionPanel is deleted?

&gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanel.mm:122
&gt; +    if (!isShowing()) {
&gt; +        return String();
&gt; +    }

We normally do not use braces around a single line like this.

&gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanel.mm:131
&gt; +void CorrectionPanel::dismissInternal(WebCore::ReasonForDismissingCorrectionPanel reason, bool dismissingExternally)

Extra WebCore:: here.

&gt; Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:891
&gt; +void WebEditorClient::showCorrectionPanel(WebCore::CorrectionPanelInfo::PanelType panelType, const FloatRect&amp; boundingBoxOfReplacedString, const String&amp; replacedString, const String&amp; replacementString, const Vector&lt;String&gt;&amp; alternativeReplacementStrings) {

We put braces on the next line, not on the end of this line. Extra WebCore:: here.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2699
&gt; +#if PLATFORM(MAC) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)
&gt; +    dismissCorrectionPanel(ReasonForDismissingCorrectionPanelIgnored);
&gt; +#endif

This change seems wrong; we are quite early in the loading process at the point where we set a pending API request URL, and that’s not the right time to take down the correction panel. And most loads don’t have a pending API request URL, such as clicks on links.

&gt; Source/WebKit2/UIProcess/WebPageProxy.messages.in:217
&gt; +    ShowCorrectionPanel(int panelType, WebCore::FloatRect boundingBoxOfReplacedString, WTF::String replacedString, WTF::String replacementString, Vector&lt;WTF::String&gt; alternativeReplacementStrings)
&gt; +    DismissCorrectionPanel(int reason)
&gt; +    DismissCorrectionPanelSoon(int reason) -&gt; (String result)
&gt; +    RecordAutocorrectionResponse(int responseType, WTF::String replacedString, WTF::String replacementString);

We normally use int32_t rather than int in messages like these.

&gt; Source/WebKit2/UIProcess/mac/CorrectionPanel.h:55
&gt; +    WTF::String dismissSoon(WebCore::ReasonForDismissingCorrectionPanel);
&gt; +    static void recordAutocorrectionResponse(WKView*, NSCorrectionResponse, const WTF::String&amp; replacedString, const WTF::String&amp; replacementString);
&gt; +
&gt; +private:
&gt; +    bool isShowing() const { return m_view; }
&gt; +    void dismissInternal(WebCore::ReasonForDismissingCorrectionPanel, bool dismissingExternally);
&gt; +
&gt; +    bool m_wasDismissedExternally;
&gt; +    WebCore::ReasonForDismissingCorrectionPanel m_reasonForDismissing;
&gt; +    WTF::RetainPtr&lt;WKView&gt; m_view;
&gt; +    WTF::RetainPtr&lt;NSString&gt; m_resultForSynchronousDismissal;
&gt; +    WTF::RetainPtr&lt;NSCondition&gt; m_resultCondition;

No need for the WTF:: prefix on String or RetainPtr.

&gt; Source/WebKit2/UIProcess/mac/CorrectionPanel.mm:57
&gt; +    m_resultCondition.adoptNS([NSCondition new]);

Same comments as above. But especially strange to use new here instead of alloc init.

&gt; Source/WebKit2/UIProcess/mac/CorrectionPanel.mm:87
&gt; +    [spellChecker showCorrectionBubbleOfType:bubbleType primaryString:replacementStringAsNSString alternativeStrings:alternativeStrings forStringInRect:boundingBoxOfReplacedString view:m_view.get() completionHandler:^(NSString* acceptedString) {

Same comment as above about the size of this block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371083</commentid>
    <comment_count>7</comment_count>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-21 17:57:48 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 86252 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86252&amp;action=review

&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanel.mm:80
&gt; &gt; +    [spellChecker showCorrectionBubbleOfType:bubbleType primaryString:replacementStringAsNSString alternativeStrings:alternativeStrings forStringInRect:boundingBoxOfReplacedString view:m_view.get() completionHandler:^(NSString* acceptedString) {
&gt; 
&gt; This completion handler block is so big that I think you should factor most of it into a function.
&gt; 
&gt; What prevents this block from being called after the CorrectionPanel is deleted?

The lifetime of correction panel is managed by AppKit internally. When a NSView (or WebView) is deleted, AppKit makes sure to detach the correction panel if there is one. And NSCorrectionPanel will not call back if it&apos;s not attached to a window anymore.

&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2699
&gt; &gt; +#if PLATFORM(MAC) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)
&gt; &gt; +    dismissCorrectionPanel(ReasonForDismissingCorrectionPanelIgnored);
&gt; &gt; +#endif
&gt; 
&gt; This change seems wrong; we are quite early in the loading process at the point where we set a pending API request URL, and that’s not the right time to take down the correction panel. And most loads don’t have a pending API request URL, such as clicks on links.


Do you have a recommended spot to dismiss visible correction panel before loading a new page? In WK1, I don&apos;t actually need to do anything. In WK1, reloading a page will always dealloc NSView, hence dismiss the panel. However, in WK2, it doesn&apos;t seem always to be the case. Specifically when reloading another page when existing page is OpenSource/Source/WebCore/manual-tests/autocorrection/autocorrection-in-iframe.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371637</commentid>
    <comment_count>8</comment_count>
      <attachid>86505</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-22 14:22:20 -0700</bug_when>
    <thetext>Created attachment 86505
Patch (v3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371651</commentid>
    <comment_count>9</comment_count>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-22 14:33:49 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 86252 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86252&amp;action=review
&gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2699
&gt; &gt; &gt; +#if PLATFORM(MAC) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)
&gt; &gt; &gt; +    dismissCorrectionPanel(ReasonForDismissingCorrectionPanelIgnored);
&gt; &gt; &gt; +#endif
&gt; &gt; 
&gt; &gt; This change seems wrong; we are quite early in the loading process at the point where we set a pending API request URL, and that’s not the right time to take down the correction panel. And most loads don’t have a pending API request URL, such as clicks on links.
&gt; 
&gt; 
&gt; Do you have a recommended spot to dismiss visible correction panel before loading a new page? In WK1, I don&apos;t actually need to do anything. In WK1, reloading a page will always dealloc NSView, hence dismiss the panel. However, in WK2, it doesn&apos;t seem always to be the case. Specifically when reloading another page when existing page is OpenSource/Source/WebCore/manual-tests/autocorrection/autocorrection-in-iframe.html.

I took a closer look at this issue. The reason that we don&apos;t need to explicitly dismiss correction panel when loading a new page in WK1 is that there&apos;s code in AppKit to take care this. Whenever [WebFrameView _setDocumentView:] is called, which calls [NSScrollView setDocumentView:], AppKit find the WebView to which WebFrameView belongs, and removes the correction panel if it exists. This is rather fragile. So I think we should handle this within WK2. I moved the call to dismissCorrectionPanel() from setPendingAPIRequestURL() to didFinishDocumentLoadForFrame().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371687</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-22 14:59:58 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I moved the call to dismissCorrectionPanel() from setPendingAPIRequestURL() to didFinishDocumentLoadForFrame().

It should be in didCommitLoadForFrame, which is when we switch to a new document, rather than didFinishDocumentLoadForFrame, called only when we finish loading the new document, which could be a long time later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371700</commentid>
    <comment_count>11</comment_count>
      <attachid>86516</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-22 15:13:01 -0700</bug_when>
    <thetext>Created attachment 86516
Patch (v4)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371885</commentid>
    <comment_count>12</comment_count>
      <attachid>86516</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-22 18:19:39 -0700</bug_when>
    <thetext>Comment on attachment 86516
Patch (v4)

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

No time for a complete review, but I did get a chance to look over part of this.

&gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanel.h:46
&gt; +    WTF::String dismissSoon(WebCore::ReasonForDismissingCorrectionPanel);
&gt; +    static void recordAutocorrectionResponse(WebView*, NSCorrectionResponse, const WTF::String&amp; replacedString, const WTF::String&amp; replacementString);

This should just be String, not WTF::String.

&gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanel.h:57
&gt; +    WTF::RetainPtr&lt;WebView&gt; m_view;
&gt; +    WTF::RetainPtr&lt;NSString&gt; m_resultForSynchronousDismissal;
&gt; +    WTF::RetainPtr&lt;NSCondition&gt; m_resultCondition;

This should just be RetainPtr, not WTF::RetainPtr.

&gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanel.mm:103
&gt; +    m_wasDismissedExternally = dismissingExternally;

I don’t think we really want to set this to false if it was already set to true, and this was called an extra redundant time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372198</commentid>
    <comment_count>13</comment_count>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-23 09:33:39 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 86516 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86516&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanel.mm:103
&gt; &gt; +    m_wasDismissedExternally = dismissingExternally;
&gt; 
&gt; I don’t think we really want to set this to false if it was already set to true, and this was called an extra redundant time.

Sorry, I don&apos;t quite follow this comment. 

Every time dismissInternal() is called, we update m_wasDismissedExternally to keep track whether the dismissal is issued by caller who explicitly call dismiss() and dismissSoon(), in which case dismissingExternally is true. When dismissInternal() is called by ~CorrectionPanel() or show(), this argument is false. And in each of  these cases, dismissInternal() is called only once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372220</commentid>
    <comment_count>14</comment_count>
      <attachid>86635</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-23 10:00:23 -0700</bug_when>
    <thetext>Created attachment 86635
Patch (v5)

Removed unnecessary WTF namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372252</commentid>
    <comment_count>15</comment_count>
      <attachid>86635</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-23 10:39:04 -0700</bug_when>
    <thetext>Comment on attachment 86635
Patch (v5)

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

&gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanel.h:30
&gt; +#import &lt;JavaScriptCore/Platform.h&gt;
&gt; +#import &lt;JavaScriptCore/RetainPtr.h&gt;

We normally use &lt;wtf/Platform.h&gt; and &lt;wtf/RetainPtr.h&gt; even though the &lt;JavaScriptCore/&gt; style works.

The Platform.h include is not needed because the prefix takes care of that.

The RetainPtr.h include can go inside the ifdefs instead of outside.

&gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanel.mm:26
&gt; + */
&gt; +#import &quot;CorrectionPanel.h&quot;
&gt; +#import &quot;WebViewPrivate.h&quot;

Normally we have a blank line before the “own file” include and another after the “own file” include.

&gt; Source/WebKit/mac/WebCoreSupport/CorrectionPanel.mm:30
&gt; +using namespace WTF;

You should not need a using namespace WTF because of how WTF itself invokes using to put things into the global namespace.

&gt; Source/WebKit/mac/WebCoreSupport/WebEditorClient.h:33
&gt;  #import &lt;wtf/RetainPtr.h&gt;

This include is now redundant so can be removed.

&gt; Source/WebKit/mac/WebCoreSupport/WebEditorClient.h:145
&gt; +    virtual WTF::String dismissCorrectionPanelSoon(WebCore::ReasonForDismissingCorrectionPanel);

Should be no need for the WTF::String here or anywhere else in this file. Should just be String.

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:454
&gt; +    void handleCorrectionPanelResult(const WTF::String&amp; result);

Should just be String, not WTF::String.

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:654
&gt; +    void showCorrectionPanel(int32_t panelType, const WebCore::FloatRect&amp; boundingBoxOfReplacedString, const WTF::String&amp; replacedString, const WTF::String&amp; replacementString, const Vector&lt;WTF::String&gt;&amp; alternativeReplacementStrings);
&gt; +    void dismissCorrectionPanel(int32_t reason);
&gt; +    void dismissCorrectionPanelSoon(int32_t reason, String&amp; result);
&gt; +    void recordAutocorrectionResponse(int32_t responseType, const WTF::String&amp; replacedString, const WTF::String&amp; replacementString);

Same here. Just String, not WTF::String.

&gt; Source/WebKit2/UIProcess/WebPageProxy.messages.in:217
&gt; +    ShowCorrectionPanel(int32_t panelType, WebCore::FloatRect boundingBoxOfReplacedString, WTF::String replacedString, WTF::String replacementString, Vector&lt;WTF::String&gt; alternativeReplacementStrings)
&gt; +    DismissCorrectionPanel(int32_t reason)
&gt; +    DismissCorrectionPanelSoon(int32_t reason) -&gt; (String result)
&gt; +    RecordAutocorrectionResponse(int32_t responseType, WTF::String replacedString, WTF::String replacementString);

Just String, not WTF::String.

&gt; Source/WebKit2/UIProcess/mac/CorrectionPanel.mm:35
&gt; +using namespace WTF;

No need for this.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2135
&gt; +void WebPage::handleCorrectionPanelResult(const WTF::String&amp; result)

Just String, not WTF::String.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:365
&gt; +    void handleCorrectionPanelResult(const WTF::String&amp;);

Just String, not WTF::String.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.messages.in:197
&gt; +    HandleCorrectionPanelResult(WTF::String result)

Just String, not WTF::String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372312</commentid>
    <comment_count>16</comment_count>
      <attachid>86659</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-23 11:56:32 -0700</bug_when>
    <thetext>Created attachment 86659
Patch (v6)

Removed more unnecessary WTF namespace. Merged TOT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372433</commentid>
    <comment_count>17</comment_count>
      <attachid>86659</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-23 14:20:18 -0700</bug_when>
    <thetext>Comment on attachment 86659
Patch (v6)

The patch is not applying for some reason, so I can’t set commit-queue+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372454</commentid>
    <comment_count>18</comment_count>
      <attachid>86694</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-23 14:55:28 -0700</bug_when>
    <thetext>Created attachment 86694
Patch (v7)

Resolved merge conflict on WK2 project file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372532</commentid>
    <comment_count>19</comment_count>
      <attachid>86694</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-23 16:36:52 -0700</bug_when>
    <thetext>Comment on attachment 86694
Patch (v7)

Rejecting attachment 86694 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-8&apos;, &apos;build&apos;...&quot; exit_code: 2

Last 500 characters of output:
 setenv YACC /Developer/usr/bin/yacc
    /bin/sh -c /mnt/git/webkit-commit-queue/WebKitBuild/WebKit.build/Debug/WebKit.build/Script-5D88EE6C11407DE800BC3ABC.sh

** BUILD FAILED **


The following build commands failed:
WebKit:
	CompileC /mnt/git/webkit-commit-queue/WebKitBuild/WebKit.build/Debug/WebKit.build/Objects-normal/x86_64/WebEditorClient.o /mnt/git/webkit-commit-queue/Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm normal x86_64 objective-c++ com.apple.compilers.gcc.4_2
(1 failure)


Full output: http://queues.webkit.org/results/8236024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372545</commentid>
    <comment_count>20</comment_count>
      <attachid>86722</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-23 16:58:34 -0700</bug_when>
    <thetext>Created attachment 86722
Patch (v8)

Fixed build failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372547</commentid>
    <comment_count>21</comment_count>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-23 17:01:09 -0700</bug_when>
    <thetext>We need to either put &quot;#import &lt;wtf/RetainPtr.h&gt;&quot; above #if !defined(BUILDING_ON_SNOW_LEOPARD) in CorrectionPanel.h, or keep &quot;#import &lt;wtf/RetainPtr.h&gt;&quot; in WebEditorClient.h and PageClientImpl.h.

I chose the latter to maintain the alphabetic order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372632</commentid>
    <comment_count>22</comment_count>
      <attachid>86722</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-23 19:53:20 -0700</bug_when>
    <thetext>Comment on attachment 86722
Patch (v8)

Clearing flags on attachment: 86722

Committed r81847: &lt;http://trac.webkit.org/changeset/81847&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372633</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-23 19:53:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85249</attachid>
            <date>2011-03-09 15:52:20 -0800</date>
            <delta_ts>2011-03-18 18:34:50 -0700</delta_ts>
            <desc>Patch (v1)</desc>
            <filename>bug-56055-20110309155218.patch</filename>
            <type>text/plain</type>
            <size>87056</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA2NjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1MTE0MDY5ZmE0NzcyM2FmNDRlYjRl
ZmY1ZmJjMzdjNWQyYWI2MWQ0Li44YjYzZmFiMDhkYTQ2NTFiODhhYTZmYjdhYjRhZWE0YWU3Nzlh
ZWU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMDkgIEppYSBQdSAgPGpwdUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SG9vayB1cCBuZXcgQXBwS2l0IGF1dG9jb3JyZWN0aW9uIFVJIHdpdGggV0syLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwNTUKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzg5NDc0NjM+CisKKyAgICAgICAgUGxlYXNlIHNlZSBXZWJDb3JlL0NoYW5n
ZUxvZyBmb3IgZGV0YWlsLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOiBF
bmFibGUgYXV0b2NvcnJlY3Rpb24gdGVzdHMgb24gV0syLgorCiAyMDExLTAzLTA5ICBYaWFvbWVp
IEppICA8eGppQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi9Ta2lwcGVkCmluZGV4IDQyNTcwMGNjNmYxYzQxZjE3YTA0ZGZiY2Y3MGZj
YjM3NWM3MTBkODUuLjBjMWVkMTBiZWJiMjE5ZTUxYmNjMzg1MWZkNmM4Y2JhMzRlMTYyNWIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKQEAgLTU0OCwyMyArNTQ4LDYgQEAgcGxh
dGZvcm0vbWFjL2VkaXRpbmcvZGVsZXRpbmcvYmFja3dhcmQtZGVsZXRlLmh0bWwKIHBsYXRmb3Jt
L21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXNldC1kYXRhLWZpbGUtdXJsLmh0
bWwKIHBsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1zaG91bGQtbm90
LWV4cGFuZC1hY3Jvc3MtbGluZXMuaHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9u
L3dvcmQtdGhhaS5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9hdXRvY29ycmVj
dGlvbi1jb250cmFjdGlvbi5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9hdXRv
Y29ycmVjdGlvbi1kZWxldGUuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvYXV0
b2NvcnJlY3Rpb24tcmVtb3ZpbmctdW5kZXJsaW5lLWFmdGVyLXBhc3RlLmh0bWwKLXBsYXRmb3Jt
L21hYy9lZGl0aW5nL3NwZWxsaW5nL2F1dG9jb3JyZWN0aW9uLXJlbW92aW5nLXVuZGVybGluZS5o
dG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9hdXRvY29ycmVjdGlvbi1zaW1wbGUu
aHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvY2xpY2stYXV0b2NvcnJlY3RlZC13
b3JkLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1hdXRvY29ycmVj
dGVkLXdvcmQtMS5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9kZWxldGUtaW50
by1hdXRvY29ycmVjdGVkLXdvcmQuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcv
ZGVsZXRlLWludG8tbWlzc3BlbGxlZC13b3JkLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5nL3Nw
ZWxsaW5nL2VkaXRpbmctbXVsdGlwbGUtd29yZHMtd2l0aC1tYXJrZXJzLmh0bWwKLXBsYXRmb3Jt
L21hYy9lZGl0aW5nL3NwZWxsaW5nL2VkaXRpbmctd29yZC13aXRoLW1hcmtlci0xLmh0bWwKLXBs
YXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2VkaXRpbmctd29yZC13aXRoLW1hcmtlci0yLmh0
bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2ZvcndhcmQtZGVsZXRlLWludG8tYXV0
b2NvcnJlY3RlZC13b3JkLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL21vdmUt
Y3Vyc29yLWFyb3VuZC1taXNzcGVsbGVkLXdvcmQuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcv
c3BlbGxpbmcvbW92ZS1jdXJzb3ItdG8tYXV0b2NvcnJlY3RlZC13b3JkLmh0bWwKLXBsYXRmb3Jt
L21hYy9lZGl0aW5nL3NwZWxsaW5nL21vdmUtY3Vyc29yLXRvLWJlZ2lubmluZy1vZi1hdXRvY29y
cmVjdGVkLXdvcmQuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvcmVtb3Zpbmct
dW5kZXJsaW5lLWFmdGVyLWFjY2VwdGluZy1hdXRvY29ycmVjdGlvbi11c2luZy1wdW5jdHVhdGlv
bi5odG1sCiBwbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC1hcHBlYXJhbmNlLXNwaW5idXR0
b24tdXAuaHRtbAogcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvaW5wdXQtbnVtYmVyLWNsaWNrLmh0
bWwKIHBsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2xpc3Rib3gtc2Nyb2xsYmFyLWhpdC10ZXN0Lmh0
bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAzOGVhMmYyZTU2MzA0YzRiNjUyOTNjZDI1ZTc5MzYzMzY4ZGQ2OGE1
Li44MDI3MTBjZTRmZGVjN2I3OTRlMzdiZDU2NGQ0ZGE0ODllZTk4MjY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMTEtMDMtMDkgIEppYSBQdSAgPGpwdUBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayB1cCBuZXcg
QXBwS2l0IGF1dG9jb3JyZWN0aW9uIFVJIHdpdGggV0syLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwNTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzg5NDc0NjM+CisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyB0byBlbmFibGUgV0syIHRvIHV0aWxp
emUgYXV0b2NvcnJlY3Rpb24gVUkgb24gTWFjIE9TIFguIEl0IGNvbnRhaW5zIGZvbGxvd2luZwor
ICAgICAgICBtYWpvciBjaGFuZ2VzOgorCisgICAgICAgIDEuIEFsbCBidXQgb25lIGF1dG9jb3Jy
ZWN0aW9uIHJlbGF0ZWQgbWVzc2FnZSBpcyBzeW5jaHJvbm91cy4gU2luY2UgZGlzbWlzc2luZyBh
dXRvY29ycmVjdGlvbgorICAgICAgICBwYW5lbCBjYW4gcG90ZW50aWFsbHkgY2F1c2UgZWRpdGlu
ZyB0byBvY2N1ciwgYSBzeW5jaHJvbm91cyBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKCkgZnVuY3Rp
b24KKyAgICAgICAgaXMgaW50cm9kdWNlZCB0byBtYWtlIHN1cmUgYWxsIGVkaXRpbmcgY29tbWFu
ZHMgb2NjdXIgaW4gY29ycmVjdCBvcmRlci4gU28gRWRpdG9yQ2xpZW50IGN1cnJlbnRseQorICAg
ICAgICBjb250YWlucyB0d28gZGlzbWlzc0NvcnJlY3Rpb25QYW5lbCgpIGZ1bmN0aW9ucy4gZGlz
bWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKQor
ICAgICAgICBpcyBhc3luY2hyb25vdXMsIGFuZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNv
bkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwsIFN0cmluZyYpIGlzCisgICAgICAgIHN5bmNo
cm9ub3VzLgorCisgICAgICAgIDIuIFRvIGltcGxlbWVudCB0aGUgc3luY2hyb25vdXMgdmVyc2lv
biBvZiBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKCksIGFkZGl0aW9uYWwgY29uZGl0aW9uIHZhcmlh
YmxlCisgICAgICAgIGlzIG5lZWRlZC4gVG8gaW1wcm92ZSBtYWludGFpbmFiaWxpdHksIGEgQ29y
cmVjdGlvblBhbmVsTWFjIGNsYXNzIGlzIGludHJvZHVjZWQgdG8gbWFuYWdlIHRoZQorICAgICAg
ICBpbnRlcm5hbCBzdGF0ZSByZWxhdGVkIHRvIGNvcnJlY3Rpb24gcGFuZWwuIFRoaXMgY2hhbmdl
IGlzIGFwcGxpZWQgdG8gYm90aCBXSzEgYW5kIFdLMi4KKworICAgICAgICAzLiBFZGl0b3JDbGll
bnQ6OmlzU2hvd2luZ0NvcnJlY3Rpb25QYW5lbCgpIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSBvcmln
aW5hbCBwdXJwb3NlIGlzIHRvIGFsbG93CisgICAgICAgIGVkaXRvciB0byBrbm93IHdoZW4gdG8g
aGFuZGxlIEVTQyBrZXkgZXZlbnQuIE5vdyB0aGlzIGlzIGhhbmRsZWQgaW50ZXJuYWxseSBpbiBB
cHBLaXQsIHNvCisgICAgICAgIEVkaXRvckNsaWVudDo6aXNTaG93aW5nQ29ycmVjdGlvblBhbmVs
KCkgaXNuJ3QgbmVjZXNzYXJ5IGFueW1vcmUuCisKKyAgICAgICAgNC4gVGhlIEVkaXRvciogYXJn
dW1lbnQgaW4gRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKCkgaGFzIGJlZW4gcmVt
b3ZlZCwgc2luY2Ugd2UgY2FuCisgICAgICAgIGFjY2VzcyBvYmplY3QgdmlhIFdlYlZpZXcgb3Ig
V0tWaWV3LgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQpOiBVc2Ugc3luY2hy
b25vdXMgdmVyc2lvbiBvZiBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKCkuCisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMpOiBS
ZW1vdmUgRWRpdG9yKiBhcmd1bWVudCBmcm9tIHNob3dDb3JyZWN0aW9uUGFuZWwoKSBjYWxsLgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjb3JyZWN0aW9uUGFuZWxUaW1lckZpcmVkKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwpOiBB
ZGQgc3luY2hyb25vdXMgdmVyc2lvbiBvZiBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKCkuCisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OmFwcGx5QXV0b2NvcnJlY3Rpb25CZWZvcmVUeXBpbmdJZkFw
cHJvcHJpYXRlKTogVXNlIHN5bmNocm9ub3VzIHZlcnNpb24gb2YgZGlzbWlzc0NvcnJlY3Rpb25Q
YW5lbCgpLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbW1hbmRNYXApOiBS
ZW1vdmUgZXhlY3V0ZUNhbmNlbE9wZXJhdGlvbi4KKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGll
bnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUVkaXRvckNsaWVudDo6c2hvd0NvcnJlY3Rp
b25QYW5lbCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUVkaXRvckNsaWVudDo6ZGlzbWlzc0Nv
cnJlY3Rpb25QYW5lbCk6CisgICAgICAgICogbWFudWFsLXRlc3RzL2F1dG9jb3JyZWN0aW9uL2Ns
b3NlLXdpbmRvdy13aGVuLWNvcnJlY3Rpb24taXMtc2hvd24uaHRtbDogQWRkZWQuCisgICAgICAg
ICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKwogMjAxMS0wMy0wOSAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDg4MDc5NjUwNjhhNDM5MTBhOWFkOTM2NTFlMTQ2MmVj
YzhlOWNmOWEuLmNiYzZmMTliYzc3Y2ZhZWQ0NjMzYzQ4NjgyZjg1NzBiMzZiODBiYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTIwNzEsOSArMjA3MSwxMSBAQCB2b2lkIEVkaXRv
cjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKGNvbnN0IFZpc2libGVQb3NpdGlv
biAmd29yZFN0YXJ0LAogICAgICAgICBpZiAod29yZFRleHQubGVuZ3RoKCkgPiAwICYmIGlzQW1i
aWd1b3VzQm91bmRhcnlDaGFyYWN0ZXIod29yZFRleHRbd29yZFRleHQubGVuZ3RoKCkgLSAxXSkp
CiAgICAgICAgICAgICBkb0FwcGx5Q29ycmVjdGlvbiA9IGZhbHNlOwogICAgIH0KLSAgICBpZiAo
ZG9BcHBseUNvcnJlY3Rpb24pCi0gICAgICAgIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29u
Rm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbEFjY2VwdGVkKTsKLSAgICBlbHNlCisgICAgaWYg
KGRvQXBwbHlDb3JyZWN0aW9uKSB7CisgICAgICAgIFN0cmluZyByZXN1bHQ7CisgICAgICAgIGRp
c21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbEFj
Y2VwdGVkLCByZXN1bHQpOworICAgICAgICBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQocmVz
dWx0KTsKKyAgICB9IGVsc2UKICAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJhbmdlVG9C
ZVJlcGxhY2VkLmNsZWFyKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzZWxlY3Rpb25BZnRl
clR5cGluZyk7CkBAIC0yMzg3LDcgKzIzODksNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAog
ICAgICAgICAgICAgICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRTdHJpbmcg
PSBwbGFpblRleHQocmFuZ2VUb1JlcGxhY2UuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBt
X2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZW1lbnRTdHJpbmcgPSByZXN1bHQtPnJlcGxhY2Vt
ZW50OwogICAgICAgICAgICAgICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8uaXNBY3RpdmUg
PSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBjbGllbnQoKS0+c2hvd0NvcnJlY3Rpb25QYW5l
bChtX2NvcnJlY3Rpb25QYW5lbEluZm8ucGFuZWxUeXBlLCBib3VuZGluZ0JveCwgbV9jb3JyZWN0
aW9uUGFuZWxJbmZvLnJlcGxhY2VkU3RyaW5nLCByZXN1bHQtPnJlcGxhY2VtZW50LCBWZWN0b3I8
U3RyaW5nPigpLCB0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3Jy
ZWN0aW9uUGFuZWwobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3gs
IG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNlZFN0cmluZywgcmVzdWx0LT5yZXBsYWNlbWVu
dCwgVmVjdG9yPFN0cmluZz4oKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxl
ZCBmb3Igc2hvd2luZyBjb3JyZWN0aW9uIHBhbmVsLCB3ZSBpZ25vcmUgb3RoZXIgY29ycmVjdGlv
biBvciByZXBsYWNlbWVudC4KQEAgLTI1MTcsNyArMjUxOSw3IEBAIHZvaWQgRWRpdG9yOjpjb3Jy
ZWN0aW9uUGFuZWxUaW1lckZpcmVkKFRpbWVyPEVkaXRvcj4qKQogICAgICAgICBtX2NvcnJlY3Rp
b25QYW5lbEluZm8ucmVwbGFjZWRTdHJpbmcgPSBwbGFpblRleHQobV9jb3JyZWN0aW9uUGFuZWxJ
bmZvLnJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKTsKICAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5n
Qm94ID0gd2luZG93UmVjdEZvclJhbmdlKG1fY29ycmVjdGlvblBhbmVsSW5mby5yYW5nZVRvQmVS
ZXBsYWNlZC5nZXQoKSk7CiAgICAgICAgIGlmICghYm91bmRpbmdCb3guaXNFbXB0eSgpKQotICAg
ICAgICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFuZWwobV9jb3JyZWN0aW9uUGFuZWxJ
bmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3gsIG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNl
ZFN0cmluZywgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJlcGxhY2VtZW50U3RyaW5nLCBWZWN0b3I8
U3RyaW5nPigpLCB0aGlzKTsKKyAgICAgICAgICAgIGNsaWVudCgpLT5zaG93Q29ycmVjdGlvblBh
bmVsKG1fY29ycmVjdGlvblBhbmVsSW5mby5wYW5lbFR5cGUsIGJvdW5kaW5nQm94LCBtX2NvcnJl
Y3Rpb25QYW5lbEluZm8ucmVwbGFjZWRTdHJpbmcsIG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBs
YWNlbWVudFN0cmluZywgVmVjdG9yPFN0cmluZz4oKSk7CiAgICAgfQogICAgICAgICBicmVhazsK
ICAgICBjYXNlIENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZVNwZWxsaW5nU3VnZ2VzdGlv
bnM6IHsKQEAgLTI1MzUsNyArMjUzNyw3IEBAIHZvaWQgRWRpdG9yOjpjb3JyZWN0aW9uUGFuZWxU
aW1lckZpcmVkKFRpbWVyPEVkaXRvcj4qKQogICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8u
aXNBY3RpdmUgPSB0cnVlOwogICAgICAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3ggPSB3aW5kb3dS
ZWN0Rm9yUmFuZ2UobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJhbmdlVG9CZVJlcGxhY2VkLmdldCgp
KTsKICAgICAgICAgaWYgKCFib3VuZGluZ0JveC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBjbGll
bnQoKS0+c2hvd0NvcnJlY3Rpb25QYW5lbChtX2NvcnJlY3Rpb25QYW5lbEluZm8ucGFuZWxUeXBl
LCBib3VuZGluZ0JveCwgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJlcGxhY2VkU3RyaW5nLCB0b3BT
dWdnZXN0aW9uLCBzdWdnZXN0aW9ucywgdGhpcyk7CisgICAgICAgICAgICBjbGllbnQoKS0+c2hv
d0NvcnJlY3Rpb25QYW5lbChtX2NvcnJlY3Rpb25QYW5lbEluZm8ucGFuZWxUeXBlLCBib3VuZGlu
Z0JveCwgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJlcGxhY2VkU3RyaW5nLCB0b3BTdWdnZXN0aW9u
LCBzdWdnZXN0aW9ucyk7CiAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yNjAxLDI3
ICsyNjAzLDIxIEBAIHZvaWQgRWRpdG9yOjpzdG9wQ29ycmVjdGlvblBhbmVsVGltZXIoKQogI2Vu
ZGlmCiB9CiAKLXZvaWQgRWRpdG9yOjpoYW5kbGVDYW5jZWxPcGVyYXRpb24oKQordm9pZCBFZGl0
b3I6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25Q
YW5lbCByZWFzb25Gb3JEaXNtaXNzaW5nKQogewogI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05f
UEFORUwKICAgICBpZiAoIW1fY29ycmVjdGlvblBhbmVsSW5mby5pc0FjdGl2ZSkKICAgICAgICAg
cmV0dXJuOwogICAgIG1fY29ycmVjdGlvblBhbmVsSW5mby5pc0FjdGl2ZSA9IGZhbHNlOworICAg
IG1fY29ycmVjdGlvblBhbmVsSXNEaXNtaXNzZWRCeUVkaXRvciA9IHRydWU7CiAgICAgaWYgKGNs
aWVudCgpKQotICAgICAgICBjbGllbnQoKS0+ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25G
b3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsQ2FuY2VsbGVkKTsKLSNlbmRpZgotfQotCi1ib29s
IEVkaXRvcjo6aXNTaG93aW5nQ29ycmVjdGlvblBhbmVsKCkKLXsKLSNpZiBTVVBQT1JUX0FVVE9D
T1JSRUNUSU9OX1BBTkVMCi0gICAgaWYgKGNsaWVudCgpKQotICAgICAgICByZXR1cm4gY2xpZW50
KCktPmlzU2hvd2luZ0NvcnJlY3Rpb25QYW5lbCgpOworICAgICAgICBjbGllbnQoKS0+ZGlzbWlz
c0NvcnJlY3Rpb25QYW5lbChyZWFzb25Gb3JEaXNtaXNzaW5nKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHJlYXNvbkZvckRpc21pc3NpbmcpOwogI2VuZGlmCi0gICAgcmV0dXJuIGZhbHNlOwog
fQogCi12b2lkIEVkaXRvcjo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNz
aW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbkZvckRpc21pc3NpbmcpCit2b2lkIEVkaXRvcjo6ZGlz
bWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJl
YXNvbkZvckRpc21pc3NpbmcsIFN0cmluZyYgcmVzdWx0KQogewogI2lmIFNVUFBPUlRfQVVUT0NP
UlJFQ1RJT05fUEFORUwKICAgICBpZiAoIW1fY29ycmVjdGlvblBhbmVsSW5mby5pc0FjdGl2ZSkK
QEAgLTI2MjksMTEgKzI2MjUsMTMgQEAgdm9pZCBFZGl0b3I6OmRpc21pc3NDb3JyZWN0aW9uUGFu
ZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb25Gb3IKICAgICBtX2Nv
cnJlY3Rpb25QYW5lbEluZm8uaXNBY3RpdmUgPSBmYWxzZTsKICAgICBtX2NvcnJlY3Rpb25QYW5l
bElzRGlzbWlzc2VkQnlFZGl0b3IgPSB0cnVlOwogICAgIGlmIChjbGllbnQoKSkKLSAgICAgICAg
Y2xpZW50KCktPmRpc21pc3NDb3JyZWN0aW9uUGFuZWwocmVhc29uRm9yRGlzbWlzc2luZyk7Cisg
ICAgICAgIGNsaWVudCgpLT5kaXNtaXNzQ29ycmVjdGlvblBhbmVsKHJlYXNvbkZvckRpc21pc3Np
bmcsIHJlc3VsdCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZWFzb25Gb3JEaXNtaXNzaW5n
KTsKKyAgICByZXN1bHQgPSBTdHJpbmcoKTsKICNlbmRpZgogfQorCiB2b2lkIEVkaXRvcjo6cmVt
b3ZlU3BlbGxBbmRDb3JyZWN0aW9uTWFya2Vyc0Zyb21Xb3Jkc1RvQmVFZGl0ZWQoYm9vbCBkb05v
dFJlbW92ZUlmU2VsZWN0aW9uQXRXb3JkQm91bmRhcnkpCiB7CiAgICAgLy8gV2Ugd2FudCB0byBy
ZW1vdmUgdGhlIG1hcmtlcnMgZnJvbSBhIHdvcmQgaWYgYW4gZWRpdGluZyBjb21tYW5kIHdpbGwg
Y2hhbmdlIHRoZSB3b3JkLiBUaGlzIGNhbiBoYXBwZW4gaW4gb25lIG9mCkBAIC0yNzY4LDcgKzI3
NjYsOSBAQCBib29sIEVkaXRvcjo6YXBwbHlBdXRvY29ycmVjdGlvbkJlZm9yZVR5cGluZ0lmQXBw
cm9wcmlhdGUoKQogICAgIFBvc2l0aW9uIGNhcmV0UG9zaXRpb24gPSBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+c2VsZWN0aW9uKCkuc3RhcnQoKTsKIAogICAgIGlmIChtX2NvcnJlY3Rpb25QYW5lbElu
Zm8ucmFuZ2VUb0JlUmVwbGFjZWQtPmVuZFBvc2l0aW9uKCkgPT0gY2FyZXRQb3NpdGlvbikgewot
ICAgICAgICBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0
aW9uUGFuZWxBY2NlcHRlZCk7CisgICAgICAgIFN0cmluZyByZXN1bHQ7CisgICAgICAgIGRpc21p
c3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbEFjY2Vw
dGVkLCByZXN1bHQpOworICAgICAgICBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQocmVzdWx0
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSAKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCmluZGV4IGUxYTcxMTkyNDVlODNiZWQxMGQ3M2QyMDVlZmUyMTU0MDg1YzU2OWUuLjlhM2Jl
OWFiYmEyMzc5YTI0ZWU3OThmZWMwNmM4YWU3OGVkODRmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaApAQCAtMzIwLDExICszMjAsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZFRvS2lsbFJp
bmcoUmFuZ2UqLCBib29sIHByZXBlbmQpOwogCi0gICAgdm9pZCBoYW5kbGVDYW5jZWxPcGVyYXRp
b24oKTsKICAgICB2b2lkIHN0YXJ0Q29ycmVjdGlvblBhbmVsVGltZXIoQ29ycmVjdGlvblBhbmVs
SW5mbzo6UGFuZWxUeXBlKTsKICAgICAvLyBJZiB1c2VyIGNvbmZpcm1lZCBhIGNvcnJlY3Rpb24g
aW4gdGhlIGNvcnJlY3Rpb24gcGFuZWwsIGNvcnJlY3Rpb24gaGFzIG5vbi16ZXJvIGxlbmd0aCwg
b3RoZXJ3aXNlIGl0IG1lYW5zIHRoYXQgdXNlciBoYXMgZGlzbWlzc2VkIHRoZSBwYW5lbC4KICAg
ICB2b2lkIGhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdChjb25zdCBTdHJpbmcmIGNvcnJlY3Rp
b24pOwotICAgIGJvb2wgaXNTaG93aW5nQ29ycmVjdGlvblBhbmVsKCk7CiAKICAgICB2b2lkIHBh
c3RlQXNGcmFnbWVudChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+LCBib29sIHNtYXJ0UmVw
bGFjZSwgYm9vbCBtYXRjaFN0eWxlKTsKICAgICB2b2lkIHBhc3RlQXNQbGFpblRleHQoY29uc3Qg
U3RyaW5nJiwgYm9vbCBzbWFydFJlcGxhY2UpOwpAQCAtNDI1LDYgKzQyMyw3IEBAIHByaXZhdGU6
CiAgICAgTm9kZSogZmluZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlvbigpIGNvbnN0OwogICAgIHZv
aWQgc3RvcENvcnJlY3Rpb25QYW5lbFRpbWVyKCk7CiAgICAgdm9pZCBkaXNtaXNzQ29ycmVjdGlv
blBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOworICAgIHZvaWQgZGlz
bWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsLCBT
dHJpbmcmIHJlc3VsdCk7CiAgICAgdm9pZCBhcHBseUNvcnJlY3Rpb25QYW5lbEluZm8oY29uc3Qg
VmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYgbWFya2VyVHlwZXNUb0FkZCk7CiAg
ICAgLy8gUmV0dXJuIHRydWUgaWYgY29ycmVjdGlvbiB3YXMgYXBwbGllZCwgZmFsc2Ugb3RoZXJ3
aXNlLgogICAgIGJvb2wgYXBwbHlBdXRvY29ycmVjdGlvbkJlZm9yZVR5cGluZ0lmQXBwcm9wcmlh
dGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDZlYTk5
NTRkOTVkNjQ3ZGE3ZmMzYmFlZjg3M2IyMWU2YzdhYzAxNzQuLjllYWZkMThiNTIyZDJiZmM2M2Ix
MmYyYTg4NTJmZDg3YjNlNTdjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21t
YW5kLmNwcApAQCAtMTA5MSwxNCArMTA5MSw2IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVZYW5rQW5k
U2VsZWN0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCi1z
dGF0aWMgYm9vbCBleGVjdXRlQ2FuY2VsT3BlcmF0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQotewotICAgIGZyYW1lLT5lZGl0b3Io
KS0+aGFuZGxlQ2FuY2VsT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYK
LQogLy8gU3VwcG9ydGVkIGZ1bmN0aW9ucwogCiBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoRnJhbWUq
KQpAQCAtMTI0OSwxMyArMTI0MSw2IEBAIHN0YXRpYyBib29sIGVuYWJsZWRVbmRvKEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogICAgIHJldHVybiBmcmFtZS0+ZWRp
dG9yKCktPmNhblVuZG8oKTsKIH0KIAotI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwK
LXN0YXRpYyBib29sIGVuYWJsZWREaXNtaXNzQ29ycmVjdGlvblBhbmVsKEZyYW1lKiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQotewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9y
KCktPmlzU2hvd2luZ0NvcnJlY3Rpb25QYW5lbCgpOwotfQotI2VuZGlmCi0KIC8vIFN0YXRlIGZ1
bmN0aW9ucwogCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVOb25lKEZyYW1lKiwgRXZlbnQqKQpAQCAt
MTUzMiwxMCArMTUxNyw2IEBAIHN0YXRpYyBjb25zdCBDb21tYW5kTWFwJiBjcmVhdGVDb21tYW5k
TWFwKCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIHsgIlRha2VGaW5kU3RyaW5nRnJvbVNl
bGVjdGlvbiIsIHsgZXhlY3V0ZVRha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbiwgc3VwcG9ydGVk
RnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRUYWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb24s
IHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0
aW9uV2hlbkRpc2FibGVkIH0gfSwKICNlbmRpZgotCi0jaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElP
Tl9QQU5FTAotICAgICAgICB7ICJDYW5jZWxPcGVyYXRpb24iLCB7IGV4ZWN1dGVDYW5jZWxPcGVy
YXRpb24sIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkRGlzbWlzc0NvcnJl
Y3Rpb25QYW5lbCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90
QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAotI2VuZGlmCiAgICAgfTsKIAogICAgIC8v
IFRoZXNlIHVuc3VwcG9ydGVkIGNvbW1hbmRzIGFyZSBsaXN0ZWQgaGVyZSBzaW5jZSB0aGV5IGFw
cGVhciBpbiB0aGUgTWljcm9zb2Z0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5k
ZXggNjkzNWMzNzQ0OWM3ODkyOGE3ZGM0MjA5ZDlkNTA3OGQxMjYxNGUwZC4uYzljYmVhNGVmODZi
NGJhNGE2ZjRiMjg1OGRiNjg0YTQ2NTc5MTYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuaApAQCAtNTExLDkgKzUxMSw5IEBAIHB1YmxpYzoKICAgICBUZXh0Q2hlY2tlckNsaWVu
dCogdGV4dENoZWNrZXIoKSB7IHJldHVybiAmbV90ZXh0Q2hlY2tlckNsaWVudDsgfQogCiAjaWYg
U1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTAotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVj
dGlvblBhbmVsKENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBF
ZGl0b3IqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChDb3JyZWN0
aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25Q
YW5lbCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2hvd2luZ0NvcnJlY3Rpb25QYW5lbCgpIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwo
UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCwgU3RyaW5nJikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNw
b25zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQogI2VuZGlmCiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJp
bmcmLCBjb25zdCBHcmFtbWFyRGV0YWlsJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9tYW51YWwtdGVzdHMvYXV0b2NvcnJlY3Rpb24vY2xvc2Utd2luZG93LXdoZW4tY29ycmVjdGlv
bi1pcy1zaG93bi5odG1sIGIvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL2F1dG9jb3JyZWN0
aW9uL2Nsb3NlLXdpbmRvdy13aGVuLWNvcnJlY3Rpb24taXMtc2hvd24uaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41YzgyYTIwZjU4MTVmN2EzN2M5ZTU5NGNhNzdmZjYyMDlhMDU0OGI0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL2F1dG9jb3JyZWN0aW9uL2Nsb3NlLXdp
bmRvdy13aGVuLWNvcnJlY3Rpb24taXMtc2hvd24uaHRtbApAQCAtMCwwICsxLDQ4IEBACis8aHRt
bD4KKzxoZWFkPgorCis8c3R5bGU+CisuZWRpdGluZyB7CisgICAgYm9yZGVyOiAycHggc29saWQg
cmVkOworICAgIHBhZGRpbmc6IDEycHg7CisgICAgZm9udC1zaXplOiAyNHB4OworfQorPC9zdHls
ZT4KKzxzY3JpcHQgc3JjPS4uLy4uLy4uLy4uL0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGluZy5q
cyBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0IiA+PC9zY3JpcHQ+
CisKKzxzY3JpcHQ+CitmdW5jdGlvbiBlZGl0aW5nVGVzdCgpIHsKKyAgICB0eXBlQ2hhcmFjdGVy
Q29tbWFuZCgndCcpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdoJyk7CisgICAgdHlwZUNo
YXJhY3RlckNvbW1hbmQoJ2UnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnICcpOworICAg
IHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdtJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2Un
KTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgncycpOworICAgIHR5cGVDaGFyYWN0ZXJDb21t
YW5kKCdhJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2UnKTsKKyAgICB0eXBlQ2hhcmFj
dGVyQ29tbWFuZCgnZycpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdlJyk7CisgICAgdHlw
ZUNoYXJhY3RlckNvbW1hbmQoJ2UnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnICcpOwor
ICAgIGV4ZWNNb3ZlU2VsZWN0aW9uQmFja3dhcmRCeUNoYXJhY3RlckNvbW1hbmQoKTsKK30KKwor
PC9zY3JpcHQ+CisKKzx0aXRsZT5UZXN0aW5nIGNsb3Npbmcgd2luZG93IHdoZW4gY29ycmVjdGlv
biBzdWdnZXN0aW9uIGlzIHNob3duPC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj48cD5U
aGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3aGVuIGNvcnJlY3Rpb24gc3VnZ2VzdGlvbiBpcyB2aXNp
YmxlLCBjbG9zaW5nIHdpbmRvdyBkb2Vzbid0IGhhbmcgb3IgY3Jhc2guPC9wPgorPHA+QWZ0ZXIg
c2VlaW5nIHRoZSBwYW5lbCB3aXRoIG11bHRpcGxlIGNhbmRpZGF0ZXMsIGNsb3NlIHRoZSB3aW5k
b3cuPC9wPgorPGRpdiBjb250ZW50ZWRpdGFibGUgaWQ9InJvb3QiIGNsYXNzPSJlZGl0aW5nIj4K
KzxzcGFuIGlkPSJ0ZXN0Ij48L3NwYW4+Cis8L2Rpdj4KKworCis8c2NyaXB0PgorcnVuRWRpdGlu
Z1Rlc3QoKTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0
b3JDbGllbnQuaAppbmRleCBkNWRlNmE0MTAyY2JkMjc2OGRhYzlkYTNmNWYxYWQ5ZWNmODAzZDUw
Li4zZWE1ZDg3ZmRiOGMwMjBhMjU2YzYyMTFiMWJhNDYzMmFlNmY5OWExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmgKQEAgLTE1OCwxNCArMTU4LDE1IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgPSAwOwogCi0jaWYgU1VQUE9S
VF9BVVRPQ09SUkVDVElPTl9QQU5FTAogICAgIGVudW0gQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5
cGUgewogICAgICAgICBBdXRvY29ycmVjdGlvbkVkaXRlZCwKICAgICAgICAgQXV0b2NvcnJlY3Rp
b25SZXZlcnRlZAogICAgIH07Ci0gICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwo
Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRp
dmVSZXBsYWNlbWVudFN0cmluZ3MsIEVkaXRvciopID0gMDsKKworI2lmIFNVUFBPUlRfQVVUT0NP
UlJFQ1RJT05fUEFORUwKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChDb3Jy
ZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hP
ZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY21lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJl
cGxhY2VtZW50U3RyaW5ncykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlv
blBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNTaG93aW5nQ29ycmVjdGlvblBhbmVsKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFu
ZWwsIFN0cmluZyYgcmVzdWx0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDc4ZTgxNzQxOGU4OWYwOWQ2Y2UxMjE3MmVlZDQzNjZkMzg0MDE4
NTEuLjIxYmJlZjgwODk1ZTI1MzZjNGY2ZWVmZjhiMzJlNzFkOWNhZTQzYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMDkgIEppYSBQdSAgPGpwdUBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayB1cCBuZXcg
QXBwS2l0IGF1dG9jb3JyZWN0aW9uIFVJIHdpdGggV0syLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwNTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzg5NDc0NjM+CisKKyAgICAgICAgUGxlYXNlIHNlZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3IgZGV0
YWlsLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIw
MTEtMDMtMDIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA1YmViZGJlZTI3N2IwMmRmYjY5MDVjNzkzYTFlYzU4MWQy
ZjMzNjg0Li42OTFhNGVmYTAwYmJjZjU5YjMwY2EwNDFlMjFhYTRkODE2ZDBmZjhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMzOSw2
ICszMzksOCBAQAogCQlCNkNFNUMyNTEwMEJDNUY1MDAyMTk5MzYgLyogV2ViQXBwbGljYXRpb25D
YWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjY4
MDQ5NzEwRkZCQ0VDMTAwOUY3RjYyIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCODA0MTc2RjEyMTdBODMx
MDA0NjZCQUUgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4MDQxNzZEMTIxN0E4MzEwMDQ2NkJBRSAvKiBXZWJJ
bnNwZWN0b3JGcm9udGVuZC5oICovOyB9OwogCQlCODA0MTc3MDEyMTdBODMxMDA0NjZCQUUgLyog
V2ViSW5zcGVjdG9yRnJvbnRlbmQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCODA0MTc2RTEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5zcGVjdG9yRnJv
bnRlbmQubW0gKi87IH07CisJCUI4Mjk1OEQzMTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9u
UGFuZWxNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEI4Mjk1OEQxMTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWxNYWMuaCAqLzsgfTsK
KwkJQjgyOTU4RDQxMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbE1hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4Mjk1OEQyMTMyNzA3
RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWxNYWMubW0gKi87IH07CiAJCUJDMjZDNjlFMTBC
NzQzRjQwMEI2ODdFRCAvKiBXZWJTZXJpYWxpemVkSlNWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNkM2OUQxMEI3NDNGNDAwQjY4N0VEIC8q
IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQkMyNkM2QTUxMEI3NDQ3QTAwQjY4N0VEIC8qIFdlYlNlcmlhbGl6
ZWRKU1ZhbHVlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMyNkM2QTQxMEI3NDQ3QTAwQjY4N0VEIC8qIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlLm1tICov
OyB9OwogCQlCQzJFNDY0RDBGRDhBOTY4MDBBOUQ5REUgLyogV2ViVmlld0RhdGEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkU0NjRCMEZEOEE5Njgw
MEE5RDlERSAvKiBXZWJWaWV3RGF0YS5oICovOyB9OwpAQCAtNjUwLDYgKzY1Miw4IEBACiAJCUI2
ODA0OTcyMEZGQkNFQzEwMDlGN0Y2MiAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQXBwbGljYXRpb25DYWNoZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjgwNDE3NkQxMjE3QTgzMTAwNDY2QkFFIC8q
IFdlYkluc3BlY3RvckZyb250ZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkluc3BlY3RvckZyb250ZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4
MDQxNzZFMTIxN0E4MzEwMDQ2NkJBRSAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3RvckZyb250ZW5kLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCODI5NThEMTEzMjcwN0QwMDAwRDBFNzkg
LyogQ29ycmVjdGlvblBhbmVsTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvcnJlY3Rpb25QYW5lbE1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCODI5
NThEMjEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsTWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29ycmVjdGlvblBhbmVsTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI2QzY5RDEwQjc0M0Y0MDBCNjg3RUQgLyogV2Vi
U2VyaWFsaXplZEpTVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
U2VyaWFsaXplZEpTVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyNkM2
QTQxMEI3NDQ3QTAwQjY4N0VEIC8qIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU2VyaWFsaXplZEpTVmFsdWUubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkU0NjRCMEZEOEE5NjgwMEE5RDlERSAvKiBX
ZWJWaWV3RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWV3RGF0
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI4MCw2ICsxMjg0LDggQEAKIAkJ
RjVCMzZCNDAwMjgxREU4NzAxODYzNUNCIC8qIFdlYkNvcmVTdXBwb3J0ICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlCODI5NThEMTEzMjcwN0QwMDAwRDBF
NzkgLyogQ29ycmVjdGlvblBhbmVsTWFjLmggKi8sCisJCQkJQjgyOTU4RDIxMzI3MDdEMDAwMEQw
RTc5IC8qIENvcnJlY3Rpb25QYW5lbE1hYy5tbSAqLywKIAkJCQk1OThBRDkxRDEyMDFDRUNGMDBB
QkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQubW0gKi8sCiAJCQkJNTk4QUQ5MTkx
MjAxQ0VDOTAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmggKi8sCiAJCQkJ
QjY4MDQ5NzEwRkZCQ0VDMTAwOUY3RjYyIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGUuaCAqLywKQEAg
LTE2MjcsNiArMTYzMyw3IEBACiAJCQkJOTNFMkExQTQxMjNCMEIzQzAwOUZFMTJBIC8qIFdlYkRh
c2hib2FyZFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBNjJBRTIxMjVGODdDMjAwN0ZE
MTE4IC8qIFdlYkZ1bGxTY3JlZW5Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQy
RDMyNDEzMUVEMUUwMDA3NUZBNEIgLyogV2ViTG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAorCQkJCUI4Mjk1OEQzMTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9u
UGFuZWxNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTk5NSw2ICsyMDAyLDcgQEAKIAkJCQk5M0Uy
QTFBNTEyM0IwQjNDMDA5RkUxMkEgLyogV2ViRGFzaGJvYXJkUmVnaW9uLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0RBNjJBRTMxMjVGODdDMjAwN0ZEMTE4IC8qIFdlYkZ1bGxTY3JlZW5Db250cm9s
bGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MkQzNEQxMzFFRDM4ODAwNzVGQTRCIC8qIFdl
YkxvY2FsaXphYmxlU3RyaW5nc0ludGVybmFsLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQjgyOTU4
RDQxMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbE1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCmluZGV4IDdjMGQ4NTg1NWIxNDFiODU1YjRkYzdhZGEzMThjYTM5OGFh
ZjM0NDEuLmRhYjdlYTUwOTUyYmRkNDhlZTRkMDUyYTZjZjY2ODk4NGQ0ZWIzMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMS0wMy0wOSAgSmlhIFB1ICA8anB1QGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBI
b29rIHVwIG5ldyBBcHBLaXQgYXV0b2NvcnJlY3Rpb24gVUkgd2l0aCBXSzIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA1NQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vODk0NzQ2Mz4KKworICAgICAgICBQbGVhc2Ugc2VlIFdlYkNvcmUvQ2hhbmdl
TG9nIGZvciBkZXRhaWwuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFu
ZWxNYWMuaDogQWRkZWQuCisgICAgICAgIChDb3JyZWN0aW9uUGFuZWxNYWM6OmlzU2hvd2luZyk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsTWFjLm1tOiBBZGRlZC4K
KyAgICAgICAgKGNvcnJlY3Rpb25CdWJibGVUeXBlKToKKyAgICAgICAgKENvcnJlY3Rpb25QYW5l
bE1hYzo6Q29ycmVjdGlvblBhbmVsTWFjKToKKyAgICAgICAgKENvcnJlY3Rpb25QYW5lbE1hYzo6
fkNvcnJlY3Rpb25QYW5lbE1hYyk6CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWxNYWM6OnNob3cp
OgorICAgICAgICAoQ29ycmVjdGlvblBhbmVsTWFjOjpkaXNtaXNzKToKKyAgICAgICAgKENvcnJl
Y3Rpb25QYW5lbE1hYzo6ZG9EaXNtaXNzKToKKyAgICAgICAgKENvcnJlY3Rpb25QYW5lbE1hYzo6
cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpXZWJFZGl0b3JDbGllbnQpOgorICAg
ICAgICAoV2ViRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKToKKyAgICAgICAgKFdl
YkVkaXRvckNsaWVudDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbCk6CisgICAgICAgIChXZWJFZGl0
b3JDbGllbnQ6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBoYW5kbGVDb3JyZWN0aW9uUGFuZWxS
ZXN1bHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDExLTAz
LTA5ICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQWRhbSBSb2Jlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L0NvcnJlY3Rpb25QYW5lbE1hYy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvQ29ycmVjdGlvblBhbmVsTWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODVhMDRhNzc4NTJmZTYwYTc3
Y2E2MTY3MjY2NzNiMmQzYTczZDRhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbE1hYy5oCkBAIC0wLDAgKzEsNTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIENvcnJlY3Rpb25QYW5lbE1hY19oCisjZGVmaW5lIENvcnJl
Y3Rpb25QYW5lbE1hY19oCisKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1BsYXRmb3JtLmg+CisK
KyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
TEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorI2ltcG9ydCA8
QXBwS2l0L05TVGV4dENoZWNrZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ29ycmVjdGlvblBhbmVs
SW5mby5oPgorCitAY2xhc3MgV2ViVmlldzsKKworY2xhc3MgQ29ycmVjdGlvblBhbmVsTWFjIHsK
K3B1YmxpYzoKKyAgICBDb3JyZWN0aW9uUGFuZWxNYWMoKTsKKyAgICB+Q29ycmVjdGlvblBhbmVs
TWFjKCk7CisgICAgdm9pZCBzaG93KFdlYlZpZXcqLCBXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJ
bmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJl
cGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdU
Rjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYg
YWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOworICAgIHZvaWQgZGlzbWlzcyhXZWJDb3Jl
OjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKKyAgICB2b2lkIGRpc21pc3Mo
V2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCwgV1RGOjpTdHJpbmcm
IHJlc3VsdCk7CisgICAgc3RhdGljIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShX
ZWJWaWV3KiwgTlNDb3JyZWN0aW9uUmVzcG9uc2UsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKKworcHJpdmF0
ZToKKyAgICBib29sIGlzU2hvd2luZygpIGNvbnN0IHsgcmV0dXJuIG1fdmlldzsgfQorICAgIHZv
aWQgZG9EaXNtaXNzKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWws
IGJvb2wgZGlzbWlzc2luZ0V4dGVybmFsbHkpOworCisgICAgYm9vbCBtX2Rpc21pc3NlZEV4dGVy
bmFsbHk7CisgICAgV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCBt
X3JlYXNvbkZvckRpc21pc3Npbmc7CisgICAgV2ViVmlldyogbV92aWV3OworICAgIE5TU3RyaW5n
KiBtX3Jlc3VsdEZvclN5bmNocm9ub3VzRGlzbWlzc2FsOworICAgIE5TQ29uZGl0aW9uKiBtX3Jl
c3VsdENvbmRpdGlvbjsKK307CisKKyNlbmRpZiAvLyAhZGVmaW5lZChCVUlMRElOR19PTl9USUdF
UikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdf
T05fU05PV19MRU9QQVJEKQorCisjZW5kaWYgLy8gQ29ycmVjdGlvblBhbmVsTWFjX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbE1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbE1h
Yy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wZDE2MWYxM2NlM2U2OWQ3ZGNkMzEzMzM3Mzg2ODY0NTBjODVhOTU4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29y
cmVjdGlvblBhbmVsTWFjLm1tCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbXBvcnQg
IkNvcnJlY3Rpb25QYW5lbE1hYy5oIgorI2ltcG9ydCAiV2ViVmlld1ByaXZhdGUuaCIKKworI2lm
ICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9Q
QVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK3N0YXRpYyBpbmxpbmUgTlNDb3Jy
ZWN0aW9uQnViYmxlVHlwZSBjb3JyZWN0aW9uQnViYmxlVHlwZShDb3JyZWN0aW9uUGFuZWxJbmZv
OjpQYW5lbFR5cGUgcGFuZWxUeXBlKQoreworICAgIHN3aXRjaCAocGFuZWxUeXBlKSB7CisgICAg
ICAgIGNhc2UgQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlQ29ycmVjdGlvbjoKKyAgICAg
ICAgICAgIHJldHVybiBOU0NvcnJlY3Rpb25CdWJibGVUeXBlQ29ycmVjdGlvbjsKKyAgICAgICAg
Y2FzZSBDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGVSZXZlcnNpb246CisgICAgICAgICAg
ICByZXR1cm4gTlNDb3JyZWN0aW9uQnViYmxlVHlwZVJldmVyc2lvbjsKKyAgICAgICAgY2FzZSBD
b3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGVTcGVsbGluZ1N1Z2dlc3Rpb25zOgorICAgICAg
ICAgICAgcmV0dXJuIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVHdWVzc2VzOworICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTlNDb3JyZWN0aW9uQnViYmxlVHlwZUNv
cnJlY3Rpb247Cit9CisKK0NvcnJlY3Rpb25QYW5lbE1hYzo6Q29ycmVjdGlvblBhbmVsTWFjKCkK
KyAgICA6IG1fZGlzbWlzc2VkRXh0ZXJuYWxseShmYWxzZSkKKyAgICAsIG1fcmVhc29uRm9yRGlz
bWlzc2luZyhSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsSWdub3JlZCkKKyAgICAs
IG1fdmlldygwKQorICAgICwgbV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rpc21pc3NhbCgwKQorewor
ICAgIG1fcmVzdWx0Q29uZGl0aW9uID0gW1tOU0NvbmRpdGlvbiBhbGxvY10gaW5pdF07Cit9CisK
K0NvcnJlY3Rpb25QYW5lbE1hYzo6fkNvcnJlY3Rpb25QYW5lbE1hYygpCit7CisgICAgZG9EaXNt
aXNzKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxJZ25vcmVkLCBmYWxzZSk7Cisg
ICAgW21fcmVzdWx0Q29uZGl0aW9uIHJlbGVhc2VdOworICAgIGlmIChtX3Jlc3VsdEZvclN5bmNo
cm9ub3VzRGlzbWlzc2FsKQorICAgICAgICBbbV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rpc21pc3Nh
bCByZWxlYXNlXTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWxNYWM6OnNob3coV2ViVmlldyog
dmlldywgQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlIHR5cGUsIGNvbnN0IEZsb2F0UmVj
dCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCit7CisgICAgZG9EaXNtaXNzKFJlYXNv
bkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxJZ25vcmVkLCBmYWxzZSk7CisgICAgCisgICAg
aWYgKCF2aWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBOU1N0cmluZyogcmVwbGFjZWRTdHJp
bmdBc05TU3RyaW5nID0gcmVwbGFjZWRTdHJpbmc7CisgICAgTlNTdHJpbmcqIHJlcGxhY2VtZW50
U3RyaW5nQXNOU1N0cmluZyA9IHJlcGxhY2VtZW50U3RyaW5nOworICAgIG1fdmlldyA9IHZpZXc7
CisgICAgTlNDb3JyZWN0aW9uQnViYmxlVHlwZSBidWJibGVUeXBlID0gY29ycmVjdGlvbkJ1YmJs
ZVR5cGUodHlwZSk7CisgICAgCisgICAgTlNNdXRhYmxlQXJyYXkqIGFsdGVybmF0aXZlU3RyaW5n
cyA9IDA7CisgICAgaWYgKCFhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5pc0VtcHR5KCkp
IHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5z
aXplKCk7CisgICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncyA9IFtOU011dGFibGVBcnJheSBhcnJh
eVdpdGhDYXBhY2l0eTpzaXplXTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCisgICAgICAgICAgICBbYWx0ZXJuYXRpdmVTdHJpbmdzIGFkZE9iamVjdDooTlNTdHJp
bmcqKWFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzW2ldXTsKKyAgICB9CisKKyAgICBOU1Nw
ZWxsQ2hlY2tlciogc3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hl
Y2tlcl07CisgICAgTlNJbnRlZ2VyIGRvY3VtZW50VGFnID0gW3ZpZXcgc3BlbGxDaGVja2VyRG9j
dW1lbnRUYWddOworICAgIFtzcGVsbENoZWNrZXIgc2hvd0NvcnJlY3Rpb25CdWJibGVPZlR5cGU6
YnViYmxlVHlwZSBwcmltYXJ5U3RyaW5nOnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyBhbHRl
cm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGlu
Z0JveE9mUmVwbGFjZWRTdHJpbmcgdmlldzptX3ZpZXcgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0
cmluZyogYWNjZXB0ZWRTdHJpbmcpIHsKKyAgICAgICAgc3dpdGNoIChidWJibGVUeXBlKSB7Cisg
ICAgICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUNvcnJlY3Rpb246CisgICAgICAgICAg
ICBpZiAoYWNjZXB0ZWRTdHJpbmcpCisgICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNv
cmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkIHRvQ29ycmVjdGlvbjphY2Nl
cHRlZFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyBsYW5ndWFnZTpuaWwg
aW5TcGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZiAoIW1fZGlzbWlzc2VkRXh0ZXJuYWxseSB8fCBtX3JlYXNvbkZv
ckRpc21pc3NpbmcgPT0gUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbENhbmNlbGxl
ZCkKKyAgICAgICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0Nv
cnJlY3Rpb25SZXNwb25zZVJlamVjdGVkIHRvQ29ycmVjdGlvbjpyZXBsYWNlbWVudFN0cmluZ0Fz
TlNTdHJpbmcgZm9yV29yZDpyZXBsYWNlZFN0cmluZ0FzTlNTdHJpbmcgbGFuZ3VhZ2U6bmlsIGlu
U3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJl
Y3Rpb25SZXNwb25zZUlnbm9yZWQgdG9Db3JyZWN0aW9uOnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0
cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVs
bERvY3VtZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBOU0NvcnJlY3Rpb25CdWJibGVUeXBlUmV2ZXJzaW9uOgor
ICAgICAgICAgICAgaWYgKGFjY2VwdGVkU3RyaW5nKQorICAgICAgICAgICAgICAgIFtzcGVsbENo
ZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZCB0b0NvcnJl
Y3Rpb246cmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nIGZvcldvcmQ6YWNjZXB0ZWRTdHJpbmcgbGFu
Z3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUd1ZXNzZXM6Cisg
ICAgICAgICAgICBpZiAoYWNjZXB0ZWRTdHJpbmcpCisgICAgICAgICAgICAgICAgW3NwZWxsQ2hl
Y2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkIHRvQ29ycmVj
dGlvbjphY2NlcHRlZFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyBsYW5n
dWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX2Rpc21pc3NlZEV4dGVybmFsbHkp
IHsKKyAgICAgICAgICAgIFttX3Jlc3VsdENvbmRpdGlvbiBsb2NrXTsKKyAgICAgICAgICAgIGlm
IChhY2NlcHRlZFN0cmluZykKKyAgICAgICAgICAgICAgICBtX3Jlc3VsdEZvclN5bmNocm9ub3Vz
RGlzbWlzc2FsID0gW2FjY2VwdGVkU3RyaW5nIGNvcHldOworICAgICAgICAgICAgW21fcmVzdWx0
Q29uZGl0aW9uIHNpZ25hbF07CisgICAgICAgICAgICBbbV9yZXN1bHRDb25kaXRpb24gdW5sb2Nr
XTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBbbV92aWV3IGhhbmRsZUNvcnJlY3Rpb25Q
YW5lbFJlc3VsdDphY2NlcHRlZFN0cmluZ107CisgICAgfV07Cit9CisKK3ZvaWQgQ29ycmVjdGlv
blBhbmVsTWFjOjpkaXNtaXNzKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVh
c29uKQoreworICAgIGRvRGlzbWlzcyhyZWFzb24sIHRydWUpOworfQorCit2b2lkIENvcnJlY3Rp
b25QYW5lbE1hYzo6ZGlzbWlzcyhSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJl
YXNvbiwgU3RyaW5nJiByZXN1bHQpCit7CisgICAgaWYgKCFpc1Nob3dpbmcoKSkgeworICAgICAg
ICByZXN1bHQgPSBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBkb0Rpc21p
c3MocmVhc29uLCB0cnVlKTsKKyAgICBbbV9yZXN1bHRDb25kaXRpb24gbG9ja107CisgICAgd2hp
bGUgKCFtX3Jlc3VsdEZvclN5bmNocm9ub3VzRGlzbWlzc2FsKQorICAgICAgICBbbV9yZXN1bHRD
b25kaXRpb24gd2FpdF07CisgICAgcmVzdWx0ID0gU3RyaW5nKG1fcmVzdWx0Rm9yU3luY2hyb25v
dXNEaXNtaXNzYWwpOworICAgIFttX3Jlc3VsdENvbmRpdGlvbiB1bmxvY2tdOworfQorCit2b2lk
IENvcnJlY3Rpb25QYW5lbE1hYzo6ZG9EaXNtaXNzKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3Np
bmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uLCBib29sIGRpc21pc3NpbmdFeHRlcm5hbGx5KQorewor
ICAgIG1fZGlzbWlzc2VkRXh0ZXJuYWxseSA9IGRpc21pc3NpbmdFeHRlcm5hbGx5OworICAgIGlm
ICghaXNTaG93aW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3JlYXNvbkZvckRp
c21pc3NpbmcgPSByZWFzb247CisgICAgaWYgKG1fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNtaXNz
YWwpIHsKKyAgICAgICAgW21fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNtaXNzYWwgcmVsZWFzZV07
CisgICAgICAgIG1fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNtaXNzYWwgPSAwOworICAgIH0KKyAg
ICBpZiAocmVhc29uID09IFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxBY2NlcHRl
ZCkKKyAgICAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGRpc21pc3ND
b3JyZWN0aW9uQnViYmxlRm9yVmlldzptX3ZpZXddOworICAgIGVsc2UKKyAgICAgICAgW1tOU1Nw
ZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGNhbmNlbENvcnJlY3Rpb25CdWJibGVGb3JW
aWV3Om1fdmlld107CisgICAgbV92aWV3ID0gMDsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWxN
YWM6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViVmlldyogdmlldywgTlNDb3JyZWN0
aW9uUmVzcG9uc2UgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCit7CisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFy
ZWRTcGVsbENoZWNrZXJdIHJlY29yZFJlc3BvbnNlOnJlc3BvbnNlIHRvQ29ycmVjdGlvbjpyZXBs
YWNlbWVudFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nIGxhbmd1YWdlOm5pbCBpblNwZWxs
RG9jdW1lbnRXaXRoVGFnOlt2aWV3IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnXV07Cit9CisKKyNl
bmRpZiAvLyAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdf
T05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmlu
ZGV4IDFmYTEzMmFkNmM1YmQ0Mzc5ZmUwYmI4NWM5ZTZmZjBkNjZiMTE3MzUuLmJiOTc2YmJkNDg0
NjYzMjk2NmU5NmUwYmE0NDU2MWRmY2ZhOGU3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0yNyw3ICsyNyw3IEBACiAg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CisjaW1wb3J0ICJD
b3JyZWN0aW9uUGFuZWxNYWMuaCIKICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CkBAIC0xNDAsOSArMTQwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRJ
bnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpT
dHJpbmcmKTsKICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQot
ICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkNvcnJlY3Rpb25Q
YW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0Jv
eE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29u
c3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6
OlN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLCBXZWJDb3JlOjpFZGl0b3Iq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0
aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRp
bmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcs
IGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgV1RGOjpWZWN0b3I8
V1RGOjpTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CiAgICAgdmlydHVh
bCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2lu
Z0NvcnJlY3Rpb25QYW5lbCk7Ci0gICAgdmlydHVhbCBib29sIGlzU2hvd2luZ0NvcnJlY3Rpb25Q
YW5lbCgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6
OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwsIFdURjo6U3RyaW5nJiByZXN1bHQp
OwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CiAjZW5kaWYKIHByaXZhdGU6CkBA
IC0xNTQsOCArMTU0LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGF2ZVVuZG9SZWRvT3BlcmF0
aW9uczsKIAogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlM
RElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0g
ICAgQk9PTCBtX2NvcnJlY3Rpb25QYW5lbElzU2hvd247Ci0gICAgQk9PTCBtX2NvcnJlY3Rpb25Q
YW5lbElzRGlzbWlzc2VkRXh0ZXJuYWxseTsKLSAgICBXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNz
aW5nQ29ycmVjdGlvblBhbmVsIG1fcmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbDsK
KyAgICBDb3JyZWN0aW9uUGFuZWxNYWMgbV9jb3JyZWN0aW9uUGFuZWw7CiAjZW5kaWYKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
bW0KaW5kZXggNjlkZDU3NDczMWI0NGI0MzBjMjc0NThlNzIzYjQxYzRkZTUxNzRiMC4uNzNhNTJh
OGU2ZTk1YjU5N2M2ZmI0NmZlMjViMTVmMDRjYzkzZmQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtMjAyLDkgKzIw
Miw2IEBAIFdlYkVkaXRvckNsaWVudDo6V2ViRWRpdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcp
CiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICAgICAsIG1fdW5kb1RhcmdldChbW1tXZWJFZGl0
b3JVbmRvVGFyZ2V0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV0pCiAgICAgLCBtX2hhdmVVbmRv
UmVkb09wZXJhdGlvbnMoZmFsc2UpCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NO
T1dfTEVPUEFSRCkKLSAgICAsIG1fY29ycmVjdGlvblBhbmVsSXNTaG93bihmYWxzZSkKLSNlbmRp
ZgogewogfQogCkBAIC04OTEsNzMgKzg4OCwyNCBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dXBk
YXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYgYmFkR3JhbW1hcgog
fQogCiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKLXZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkNvcnJlY3Rpb25Q
YW5lbEluZm86OlBhbmVsVHlwZSBwYW5lbFR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdC
b3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRp
dmVSZXBsYWNlbWVudFN0cmluZ3MsIEVkaXRvciogZWRpdG9yKSB7Ci0gICAgZGlzbWlzc0NvcnJl
Y3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsSWdub3JlZCk7Ci0K
LSAgICAvLyBOZWVkIHRvIGV4cGxpY2l0bHkgdXNlIHRoZXNlIGxvY2FsIE5TU3RyaW5nIG9iamVj
dHMsIGJlY2F1c2UgdGhlIEMrKyByZWZlcmVuY2VzIG1heSBiZSBpbnZhbGlkYXRlZCBieSB0aGUg
dGltZSB0aGUgYmxvY2sgYmVsb3cgaXMgZXhlY3V0ZWQuCi0gICAgTlNTdHJpbmcgKnJlcGxhY2Vk
U3RyaW5nQXNOU1N0cmluZyA9IHJlcGxhY2VkU3RyaW5nOwotICAgIE5TU3RyaW5nICpyZXBsYWNl
bWVudFN0cmluZ0FzTlNTdHJpbmcgPSByZXBsYWNlbWVudFN0cmluZzsKLQotICAgIG1fY29ycmVj
dGlvblBhbmVsSXNTaG93biA9IFlFUzsKLSAgICBtX2NvcnJlY3Rpb25QYW5lbElzRGlzbWlzc2Vk
RXh0ZXJuYWxseSA9IE5POwotICAgIG1fcmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5l
bCA9IFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxJZ25vcmVkOwotCi0gICAgTlND
b3JyZWN0aW9uQnViYmxlVHlwZSBidWJibGVUeXBlID0gY29ycmVjdGlvbkJ1YmJsZVR5cGUocGFu
ZWxUeXBlKTsKLSAgICBOU011dGFibGVBcnJheSAqYWx0ZXJuYXRpdmVTdHJpbmdzID0gbmlsOwot
ICAgIGlmICghYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIHNpemVfdCBzaXplID0gYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3Muc2l6ZSgpOwot
ICAgICAgICBhbHRlcm5hdGl2ZVN0cmluZ3MgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2Fw
YWNpdHk6c2l6ZV07Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQot
ICAgICAgICAgICAgW2FsdGVybmF0aXZlU3RyaW5ncyBhZGRPYmplY3Q6KE5TU3RyaW5nKilhbHRl
cm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5nc1tpXV07Ci0gICAgfQotICAgIE5TU3BlbGxDaGVja2Vy
ICpzcGVsbENoZWNrZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXTsKLSAg
ICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gc2hvd0NvcnJlY3Rpb25CdWJi
bGVPZlR5cGU6YnViYmxlVHlwZSBwcmltYXJ5U3RyaW5nOnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0
cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0luUmVj
dDpib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcgdmlldzptX3dlYlZpZXcgY29tcGxldGlvbkhh
bmRsZXI6XihOU1N0cmluZyAqYWNjZXB0ZWRTdHJpbmcpIHsKLSAgICAgICAgc3dpdGNoIChidWJi
bGVUeXBlKSB7Ci0gICAgICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUNvcnJlY3Rpb246
Ci0gICAgICAgICAgICBpZiAoYWNjZXB0ZWRTdHJpbmcpCi0gICAgICAgICAgICAgICAgW3NwZWxs
Q2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkIHRvQ29y
cmVjdGlvbjphY2NlcHRlZFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyBs
YW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRh
ZygpXTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlmICghbV9jb3JyZWN0
aW9uUGFuZWxJc0Rpc21pc3NlZEV4dGVybmFsbHkgfHwgbV9yZWFzb25Gb3JEaXNtaXNzaW5nQ29y
cmVjdGlvblBhbmVsID09IFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxDYW5jZWxs
ZWQpCi0gICAgICAgICAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlND
b3JyZWN0aW9uUmVzcG9uc2VSZWplY3RlZCB0b0NvcnJlY3Rpb246cmVwbGFjZW1lbnRTdHJpbmdB
c05TU3RyaW5nIGZvcldvcmQ6cmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nIGxhbmd1YWdlOm5pbCBp
blNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCldOwotICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRS
ZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUlnbm9yZWQgdG9Db3JyZWN0aW9uOnJlcGxhY2Vt
ZW50U3RyaW5nQXNOU1N0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyBsYW5n
dWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygp
XTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5TQ29y
cmVjdGlvbkJ1YmJsZVR5cGVSZXZlcnNpb246Ci0gICAgICAgICAgICBpZiAoYWNjZXB0ZWRTdHJp
bmcpCi0gICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJl
Y3Rpb25SZXNwb25zZVJldmVydGVkIHRvQ29ycmVjdGlvbjpyZXBsYWNlZFN0cmluZ0FzTlNTdHJp
bmcgZm9yV29yZDphY2NlcHRlZFN0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0
aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVHdWVzc2VzOgotICAgICAgICAgICAgaWYg
KGFjY2VwdGVkU3RyaW5nKQotICAgICAgICAgICAgICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVk
U3BlbGxDaGVja2VyXSByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVk
IHRvQ29ycmVjdGlvbjphY2NlcHRlZFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nQXNOU1N0
cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpbbV93ZWJWaWV3IHNwZWxs
Q2hlY2tlckRvY3VtZW50VGFnXV07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBlZGl0b3ItPmhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdChTdHJpbmcoYWNjZXB0ZWRT
dHJpbmcpKTsKLSAgICB9XTsKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBh
bmVsKFdlYkNvcmU6OkNvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSBwYW5lbFR5cGUsIGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpIHsKKyAgICBtX2Nv
cnJlY3Rpb25QYW5lbC5zaG93KG1fd2ViVmlldywgcGFuZWxUeXBlLCBib3VuZGluZ0JveE9mUmVw
bGFjZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZywgYWx0ZXJuYXRp
dmVSZXBsYWNlbWVudFN0cmluZ3MpOwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlzbWlz
c0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNv
bkZvckRpc21pc3NpbmcpCiB7Ci0gICAgaWYgKGlzU2hvd2luZ0NvcnJlY3Rpb25QYW5lbCgpKSB7
Ci0gICAgICAgIG1fY29ycmVjdGlvblBhbmVsSXNEaXNtaXNzZWRFeHRlcm5hbGx5ID0gWUVTOwot
ICAgICAgICBtX3JlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgPSByZWFzb25Gb3JE
aXNtaXNzaW5nOwotICAgICAgICBpZiAocmVhc29uRm9yRGlzbWlzc2luZyA9PSBSZWFzb25Gb3JE
aXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsQWNjZXB0ZWQpCi0gICAgICAgICAgICBbW05TU3BlbGxD
aGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gZGlzbWlzc0NvcnJlY3Rpb25CdWJibGVGb3JWaWV3
Om1fd2ViVmlld107Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFtbTlNTcGVsbENoZWNrZXIg
c2hhcmVkU3BlbGxDaGVja2VyXSBjYW5jZWxDb3JyZWN0aW9uQnViYmxlRm9yVmlldzptX3dlYlZp
ZXddOwotICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbElzU2hvd24gPSBOTzsKLSAgICB9CisgICAg
bV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhyZWFzb25Gb3JEaXNtaXNzaW5nKTsKIH0KIAotYm9v
bCBXZWJFZGl0b3JDbGllbnQ6OmlzU2hvd2luZ0NvcnJlY3Rpb25QYW5lbCgpCit2b2lkIFdlYkVk
aXRvckNsaWVudDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29y
cmVjdGlvblBhbmVsIHJlYXNvbkZvckRpc21pc3NpbmcsIFN0cmluZyYgcmVzdWx0KQogewotICAg
IHJldHVybiBtX2NvcnJlY3Rpb25QYW5lbElzU2hvd247CisgICAgbV9jb3JyZWN0aW9uUGFuZWwu
ZGlzbWlzcyhyZWFzb25Gb3JEaXNtaXNzaW5nLCByZXN1bHQpOwogfQogCiB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShFZGl0b3JDbGllbnQ6OkF1dG9j
b3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKIHsKLSAgICBOU0NvcnJl
Y3Rpb25SZXNwb25zZSBzcGVsbENoZWNrZXJSZXNwb25zZSA9IHJlc3BvbnNlVHlwZSA9PSBFZGl0
b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQgPyBOU0NvcnJlY3Rpb25SZXNwb25zZVJl
dmVydGVkIDogTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7Ci0gICAgW1tOU1NwZWxsQ2hlY2tl
ciBzaGFyZWRTcGVsbENoZWNrZXJdIHJlY29yZFJlc3BvbnNlOnNwZWxsQ2hlY2tlclJlc3BvbnNl
IHRvQ29ycmVjdGlvbjpyZXBsYWNlbWVudFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nIGxh
bmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOlttX3dlYlZpZXcgc3BlbGxDaGVja2Vy
RG9jdW1lbnRUYWddXTsKKyAgICBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSA9IHJlc3Bv
bnNlVHlwZSA9PSBFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQgPyBOU0NvcnJl
Y3Rpb25SZXNwb25zZVJldmVydGVkIDogTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7CisgICAg
Q29ycmVjdGlvblBhbmVsTWFjOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKG1fd2ViVmll
dywgcmVzcG9uc2UsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDJmNDVjYTQxMDUwYWU0
YTM2YzMyOTRiZmQzM2RhM2Y2MWJmOTIzMzEuLjRlMjE4MGU1MzA1NzMzYjUzZDA0Nzg1MzY5Mjg5
YjJkZDA0YmI3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTUzMDYs
NiArNTMwNiwxNiBAQCBzdGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpT
VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGpzVmFsdQogCiAjZW5kaWYKIAorI2lmICFk
ZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJE
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCistICh2b2lkKWhhbmRsZUNv
cnJlY3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcqKXJlc3VsdAoreworICAgIFdlYkZyYW1lICp3
ZWJGcmFtZSA9IFtzZWxmIF9zZWxlY3RlZE9yTWFpbkZyYW1lXTsKKyAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZSh3ZWJGcmFtZSk7CisgICAgaWYgKGNvcmVGcmFtZSkKKyAgICAgICAgY29yZUZy
YW1lLT5lZGl0b3IoKS0+aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KFN0cmluZyhyZXN1bHQp
KTsKK30KKyNlbmRpZgorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJWaWV3
VW5kb2FibGVFZGl0aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oCmluZGV4IGE0ZWE4MDliMDAxZGJjNmE2NzIzNGYxNzJmMDIwYmMzNGNmN2U4NGMuLmNiOTQ4
NTEzN2RiMDZmOTFmNjlkMTNhYTA3NDMyNTJkZGZjNGU1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKQEAgLTY0NCw3ICs2NDQsOSBAQCBDb3VsZCBiZSB3
b3J0aCBhZGRpbmcgdG8gdGhlIEFQSS4KIC0gKHZvaWQpc2V0QXV0b21hdGljU3BlbGxpbmdDb3Jy
ZWN0aW9uRW5hYmxlZDooQk9PTClmbGFnOwogLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNTcGVsbGlu
Z0NvcnJlY3Rpb246KGlkKXNlbmRlcjsKICNlbmRpZgotCisjaWYgIWRlZmluZWQoQlVJTERJTkdf
T05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKy0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVz
dWx0OihOU1N0cmluZyopcmVzdWx0OworI2VuZGlmCiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViVmll
dyAoV2ViVmlld0VkaXRpbmdJbk1haWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTQ3NGE2YzcyMmRjM2VmZjRh
ZDA1MTBhNDNkMWNjZGJmMmNjM2JkMy4uNGM4YWZiZGI1YmM5Y2Q1OGE4ZTY4MTU2MWZiMjhhMmNl
MDZjODE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDExLTAzLTA5ICBKaWEgUHUg
IDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEhvb2sgdXAgbmV3IEFwcEtpdCBhdXRvY29ycmVjdGlvbiBVSSB3aXRoIFdLMi4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDU1Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS84OTQ3NDYzPgorCisgICAgICAgIFBsZWFzZSBzZWUgV2Vi
Q29yZS9DaGFuZ2VMb2cgZm9yIGRldGFpbC4KKworICAgICAgICBUaGUgY2FsbHMgdG8gQXBwS2l0
IGFyZSBpbXBsZW1lbnRlZCBpbiBQYWdlQ2xpZW50SW1wbC4gT3RoZXIgY2hhbmdlcyBhcmUgbmVj
ZXNzYXJ5IGZvciB0aGUKKyAgICAgICAgcGx1bWJpbmcgd29yay4KKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0Mi9tZXNzYWdlcy5weTogUHJldmVudCB0aGUgZW51bSB0eXBlcyBmcm9tIGJlaW5n
IHRyZWF0ZWQgYXMgY2xhc3Nlcy4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmg6IFNwZWNpYWxpemUgdGhlIGNvZGVyIHRlbXBsYXRlIGZvciBlbnVtIHR5cGVzLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpzaG93Q29ycmVjdGlvblBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgc3BlbGxDaGVja2Vy
RG9jdW1lbnRUYWddKToKKyAgICAgICAgKC1bV0tWaWV3IGhhbmRsZUNvcnJlY3Rpb25QYW5lbFJl
c3VsdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdQcml2YXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQZW5kaW5n
QVBJUmVxdWVzdFVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd0NvcnJl
Y3Rpb25QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzbWlzc0NvcnJl
Y3Rpb25QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzbWlzc0NvcnJl
Y3Rpb25QYW5lbFN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhh
bmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWxNYWMuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbE1hYzo6aXNTaG93aW5nKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbE1hYy5tbTogQWRkZWQuCisgICAgICAgIChjb3Jy
ZWN0aW9uQnViYmxlVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbE1hYzo6
Q29ycmVjdGlvblBhbmVsTWFjKToKKyAgICAgICAgKFdlYktpdDo6Q29ycmVjdGlvblBhbmVsTWFj
Ojp+Q29ycmVjdGlvblBhbmVsTWFjKToKKyAgICAgICAgKFdlYktpdDo6Q29ycmVjdGlvblBhbmVs
TWFjOjpzaG93KToKKyAgICAgICAgKFdlYktpdDo6Q29ycmVjdGlvblBhbmVsTWFjOjpkaXNtaXNz
KToKKyAgICAgICAgKFdlYktpdDo6Q29ycmVjdGlvblBhbmVsTWFjOjpkb0Rpc21pc3MpOgorICAg
ICAgICAoV2ViS2l0OjpDb3JyZWN0aW9uUGFuZWxNYWM6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2UpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBh
bmVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpyZWNvcmRBdXRvY29ycmVj
dGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxMS0wMy0wOSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJs
c3Nvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdl
cy5weSBiL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQppbmRleCAx
YzZhZTk3MTUyYWYyOTA1ZjAwNzFmNmIxOTQ4NTI4MjI2NWRhOWUwLi41Y2ExNGJmZDhiMGNjZGE4
ODlkNDA0MzU2N2QyMWNiYjkwMzI0MjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TY3Jp
cHRzL3dlYmtpdDIvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJr
aXQyL21lc3NhZ2VzLnB5CkBAIC0yOTUsNiArMjk1LDEwIEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0
aW9uc19hbmRfaGVhZGVycyhyZWNlaXZlcik6CiAgICAgICAgICciTWVzc2FnZUlELmgiJywKICAg
ICBdKQogCisgICAgc3BlY2lhbF9jYXNlcyA9IHNldChbCisgICAgICAgICdXZWJDb3JlOjpSZWFz
b25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsJywKKyAgICBdKQorCiAgICAgZm9yIHBhcmFt
ZXRlciBpbiByZWNlaXZlci5pdGVycGFyYW1ldGVycygpOgogICAgICAgICB0eXBlID0gcGFyYW1l
dGVyLnR5cGUKIApAQCAtMzAzLDYgKzMwNyw5IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19h
bmRfaGVhZGVycyhyZWNlaXZlcik6CiAgICAgICAgICAgICBoZWFkZXJzLnVwZGF0ZShoZWFkZXJz
X2Zvcl90eXBlKHR5cGUpKQogICAgICAgICAgICAgY29udGludWUKIAorICAgICAgICBpZiB0eXBl
IGluIHNwZWNpYWxfY2FzZXM6CisgICAgICAgICAgICBjb250aW51ZQorCiAgICAgICAgIHNwbGl0
ID0gdHlwZS5zcGxpdCgnOjonKQogCiAgICAgICAgIGlmIGxlbihzcGxpdCkgPT0gMjoKQEAgLTQy
NSw5ICs0MzIsMTEgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgc3BlY2lhbF9j
YXNlcyA9IHsKICAgICAgICAgJ1dURjo6U3RyaW5nJzogJzx3dGYvdGV4dC9XVEZTdHJpbmcuaD4n
LAogICAgICAgICAnV2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmUnOiAnPFdlYkNvcmUvRWRp
dG9yLmg+JywKKyAgICAgICAgJ1dlYkNvcmU6OkNvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlw
ZSc6ICc8V2ViQ29yZS9Db3JyZWN0aW9uUGFuZWxJbmZvLmg+JywKICAgICAgICAgJ1dlYkNvcmU6
OktleXByZXNzQ29tbWFuZCc6ICc8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+JywKICAgICAgICAg
J1dlYkNvcmU6OlBsdWdpbkluZm8nOiAnPFdlYkNvcmUvUGx1Z2luRGF0YS5oPicsCiAgICAgICAg
ICdXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQnOiAnPFdlYkNvcmUvVGV4dENoZWNrZXJDbGll
bnQuaD4nLAorICAgICAgICAnV2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJl
c3BvbnNlVHlwZSc6ICc8V2ViQ29yZS9FZGl0b3JDbGllbnQuaD4nLAogICAgICAgICAnV2ViS2l0
OjpXZWJHZXN0dXJlRXZlbnQnOiAnIldlYkV2ZW50LmgiJywKICAgICAgICAgJ1dlYktpdDo6V2Vi
S2V5Ym9hcmRFdmVudCc6ICciV2ViRXZlbnQuaCInLAogICAgICAgICAnV2ViS2l0OjpXZWJNb3Vz
ZUV2ZW50JzogJyJXZWJFdmVudC5oIicsCkBAIC00NDYsNyArNDU1LDYgQEAgZGVmIGhlYWRlcnNf
Zm9yX3R5cGUodHlwZSk6CiAgICAgICAgIHJldHVybiBbJyIlcy5oIicgJSBzcGxpdFsxXV0KICAg
ICByZXR1cm4gWyc8JXMvJXMuaD4nICUgdHVwbGUoc3BsaXQpXQogCi0KIGRlZiBnZW5lcmF0ZV9t
ZXNzYWdlX2hhbmRsZXIoZmlsZSk6CiAgICAgcmVjZWl2ZXIgPSBNZXNzYWdlUmVjZWl2ZXIucGFy
c2UoZmlsZSkKICAgICBoZWFkZXJzID0gc2V0KFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAxNjc5YmI2ZTdkNDNjZTNjOTc1NmI0ZGEzNmNk
YTZiOTBmNTcxNGMwLi5hNTJmMTZmYzVjNGI1YTE1ZGM2MjVhM2UwZThkODBkZTEzMTFiNTM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFw
SW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvcnJlY3Rpb25QYW5lbEluZm8uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VEZXRhaWxzLmg+CkBAIC00ODQsNiArNDg1LDQzIEBA
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVz
dWx0PiB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGU+IHsKKyAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJ
bmZvOjpQYW5lbFR5cGUgcGFuZWxUeXBlKQorICAgIHsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
RW51bShwYW5lbFR5cGUpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OkNvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlw
ZSYgcGFuZWxUeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRlY29kZXItPmRlY29kZUVudW0o
cGFuZWxUeXBlKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWw+IHsKKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBXZWJDb3JlOjpSZWFzb25G
b3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbikKKyAgICB7CisgICAgICAgIGVuY29k
ZXItPmVuY29kZUVudW0ocmVhc29uKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29y
cmVjdGlvblBhbmVsJiByZWFzb24pCisgICAgeworICAgICAgICByZXR1cm4gZGVjb2Rlci0+ZGVj
b2RlRW51bShyZWFzb24pOworICAgIH0KK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZT4g
eworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIFdlYkNv
cmU6OkVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBl
KQorICAgIHsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRW51bShyZXNwb25zZVR5cGUpOworICAg
IH0KKworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdl
YkNvcmU6OkVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUmIHJlc3BvbnNl
VHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBkZWNvZGVyLT5kZWNvZGVFbnVtKHJlc3BvbnNl
VHlwZSk7CisgICAgfQorICAgIAorfTsKKwogfSAvLyBuYW1lc3BhY2UgQ29yZUlQQwogCiAjZW5k
aWYgLy8gV2ViQ29yZUFyZ3VtZW50Q29kZXJzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IDdiNmY1M2Q0YTcwMDZiYjMwMjU1
OTgwN2UyZjY1M2UwM2JiYzRmY2IuLjEyNTdjNTUwMTY5NDdmMWE5MGE2NjM4ZTQ1YTJiYThmMDdl
YjI2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VD
bGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNs
aWVudEltcGwuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBQYWdlQ2xpZW50SW1wbF9oCiAj
ZGVmaW5lIFBhZ2VDbGllbnRJbXBsX2gKIAorI2luY2x1ZGUgIkNvcnJlY3Rpb25QYW5lbE1hYy5o
IgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
QEAgLTEwNSw4ICsxMDYsMTYgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJm
b3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBTdHJpbmcmLCBkb3VibGUgc2NhbGVGYWN0b3IsIGNv
bnN0IERpY3Rpb25hcnlQb3B1cEluZm8mKTsKIAorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVj
dGlvblBhbmVsKFdlYkNvcmU6OkNvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdU
Rjo6U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VtZW50
U3RyaW5nLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50
U3RyaW5ncyk7CisgICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29y
ZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7CisgICAgdmlydHVhbCB2b2lk
IGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJl
Y3Rpb25QYW5lbCwgU3RyaW5nJiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRv
Y29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6OkVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25S
ZXNwb25zZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgV1RG
OjpTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKKwogICAgIFdLVmlldyogbV93a1ZpZXc7CiAg
ICAgUmV0YWluUHRyPFdlYkVkaXRvclVuZG9UYXJnZXRPYmpDPiBtX3VuZG9UYXJnZXQ7CisjaWYg
IWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BB
UkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICBDb3JyZWN0aW9u
UGFuZWxNYWMgbV9jb3JyZWN0aW9uUGFuZWw7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFn
ZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xp
ZW50SW1wbC5tbQppbmRleCAzMDM4NWYwNWU3NzUxOTg0MWYyNTU3NjNlZjYwMGU3YzM2MDkyYWYw
Li4yM2EwNjAyOGJmMWU2OTUyMTU4OWVmOWMwMGIyNTllYzk4NGIxMDE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQpAQCAtNDQx
LDQgKzQ0MSwzNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRQZXJmb3JtRGljdGlvbmFyeUxv
b2t1cChjb25zdCBTdHJpbmcmIHRleHQsIGRvdWJsZSBzY2FsZQogICAgIFttX3drVmlldyBzaG93
RGVmaW5pdGlvbkZvckF0dHJpYnV0ZWRTdHJpbmc6YXR0cmlidXRlZFN0cmluZy5nZXQoKSByYW5n
ZTpOU01ha2VSYW5nZSgwLCBbYXR0cmlidXRlZFN0cmluZy5nZXQoKSBsZW5ndGhdKSBvcHRpb25z
Om9wdGlvbnMgYmFzZWxpbmVPcmlnaW5Qcm92aWRlcjpeKE5TUmFuZ2UgYWRqdXN0ZWRSYW5nZSkg
eyByZXR1cm4gKE5TUG9pbnQpdGV4dEJhc2VsaW5lT3JpZ2luOyB9XTsKIH0KIAordm9pZCBQYWdl
Q2xpZW50SW1wbDo6c2hvd0NvcnJlY3Rpb25QYW5lbChDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5l
bFR5cGUgdHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRT
dHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5n
cykKK3sKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAg
IGlmICghaXNWaWV3VmlzaWJsZSgpIHx8ICFpc1ZpZXdJbldpbmRvdygpKQorICAgICAgICByZXR1
cm47CisgICAgbV9jb3JyZWN0aW9uUGFuZWwuc2hvdyhtX3drVmlldywgdHlwZSwgYm91bmRpbmdC
b3hPZlJlcGxhY2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFs
dGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKKyNlbmRpZgorfQorCit2b2lkIFBhZ2VDbGll
bnRJbXBsOjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0
aW9uUGFuZWwgcmVhc29uKQoreworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9X
X0xFT1BBUkQpCisgICAgbV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhyZWFzb24pOworI2VuZGlm
Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29y
ZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24sIFN0cmluZyYgcmVz
dWx0KQoreworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlM
RElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisg
ICAgbV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhyZWFzb24sIHJlc3VsdCk7CisjZWxzZQorICAg
IHJlc3VsdCA9IFN0cmluZygpOworI2VuZGlmCit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJl
c3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCit7CisjaWYgIWRlZmluZWQoQlVJTERJTkdf
T05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25z
ZSA9IHJlc3BvbnNlVHlwZSA9PSBFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQg
PyBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkIDogTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0
ZWQ7CisgICAgQ29ycmVjdGlvblBhbmVsTWFjOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNl
KG1fd2tWaWV3LCByZXNwb25zZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKTsK
KyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCBlNDMyNTQ5NzdlN2I0OTgxN2Q0YWM0NGI4YjY3
ZGQyOGE0Yzc3NGZjLi4wYTllOWVkOWM5YjdmMjU0MWMzMDM4N2JjMTc0ZDY5ZmU5NWNiOGY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0xNDUsNiAr
MTQ1LDkgQEAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmFsaWRhdGlvblZlY3Rvcj4gVmFsaWRh
dGlvbk1hcDsKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgaWQgX2VuZEdlc3R1cmVN
b25pdG9yOwogI2VuZGlmCisKKyAgICBCT09MIF9oYXNTcGVsbENoZWNrZXJEb2N1bWVudFRhZzsK
KyAgICBOU0ludGVnZXIgX3NwZWxsQ2hlY2tlckRvY3VtZW50VGFnOwogfQogQGVuZAogCkBAIC0y
MDMzLDUgKzIwMzYsMTkgQEAgc3RhdGljIHZvaWQgZHJhd1BhZ2VCYWNrZ3JvdW5kKENHQ29udGV4
dFJlZiBjb250ZXh0LCBXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IEkKICAgICBfZGF0YS0+X3Bh
Z2UtPnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihGbG9hdFBvaW50KHRoZVBvaW50
LngsIHRoZVBvaW50LnkpKTsKIH0KIAorLSAoTlNJbnRlZ2VyKXNwZWxsQ2hlY2tlckRvY3VtZW50
VGFnCit7CisgICAgaWYgKCFfZGF0YS0+X2hhc1NwZWxsQ2hlY2tlckRvY3VtZW50VGFnKSB7Cisg
ICAgICAgIF9kYXRhLT5fc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcgPSBbTlNTcGVsbENoZWNrZXIg
dW5pcXVlU3BlbGxEb2N1bWVudFRhZ107CisgICAgICAgIF9kYXRhLT5faGFzU3BlbGxDaGVja2Vy
RG9jdW1lbnRUYWcgPSBZRVM7CisgICAgfQorICAgIHJldHVybiBfZGF0YS0+X3NwZWxsQ2hlY2tl
ckRvY3VtZW50VGFnOworfQorCistICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDoo
TlNTdHJpbmcqKXJlc3VsdAoreworICAgIF9kYXRhLT5fcGFnZS0+aGFuZGxlQ29ycmVjdGlvblBh
bmVsUmVzdWx0KFdURjo6U3RyaW5nKHJlc3VsdCkpOworfQorCiBAZW5kCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld1ByaXZhdGUuaAppbmRleCBjZWNlMWM3
NDBiNzcyYzdlYzYyYzZkYmU5NmJmYzBkNjM2MjRhZTM3Li4zN2MyZDhkZDgxZmIyODY1YTIxOGIx
Mjk4ZjRjMmI4Y2E2YmVjNTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3UHJpdmF0ZS5oCkBAIC0zNSw0ICszNSw2IEBACiAKIC0gKHZvaWQpcGVyZm9y
bURpY3Rpb25hcnlMb29rdXBBdEN1cnJlbnRNb3VzZUxvY2F0aW9uOwogCistIChOU0ludGVnZXIp
c3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7CistICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJl
c3VsdDooTlNTdHJpbmcqKXJlc3VsdDsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCmluZGV4IDBlM2E2MWVjMmM3MjdkZmRhM2FjNzc2MTA5OTYxZTIxYTU0MGM5NjEuLjI5
ZTBmMTI2MzBkZTUwZWJhMDZkYTBiMzkwZjU5YTI1NGE5YWM4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTMxLDYgKzEzMSwxMCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldEF1dG9kaXNwbGF5KGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIENHQ29udGV4
dFJlZiBjb250YWluaW5nV2luZG93R3JhcGhpY3NDb250ZXh0KCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBTdHJpbmcmLCBkb3VibGUgc2Nh
bGVGYWN0b3IsIGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFu
ZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0
cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmlu
ZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGFsdGVybmF0
aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJl
YXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwsIFN0cmluZyYgcmVzdWx0KSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6RWRp
dG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcm
IHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0g
MDsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNjcm9sbGJhcnNGb3JNYWlu
RnJhbWUoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDBhMzllN2FiNjM4YWQ4MGMyZWE1MjUxYzJjMzVmZjFhYjE4ZTY2YzYuLjI4ZTUy
ZGZmODYwNDVhYmE1MDg4ZjQyODkyNDZlNjBiMWRkMmIwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yODAwLDYgKzI4MDAsMTQgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb24oY29u
c3QgU3RyaW5nJiBzdWcKICAgICBtX3BhZ2VDbGllbnQtPmRpZEZpbmlzaExvYWRpbmdEYXRhRm9y
Q3VzdG9tUmVwcmVzZW50YXRpb24oc3VnZ2VzdGVkRmlsZW5hbWUsIGRhdGFSZWZlcmVuY2UpOwog
fQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGVuZGluZ0FQSVJlcXVlc3RVUkwoY29uc3QgU3Ry
aW5nJiBwZW5kaW5nQVBJUmVxdWVzdFVSTCkKK3sKKyNpZiBQTEFURk9STShNQUMpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisgICAgZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsSWdub3JlZCk7CisjZW5k
aWYKKyAgICBtX3BlbmRpbmdBUElSZXF1ZXN0VVJMID0gcGVuZGluZ0FQSVJlcXVlc3RVUkw7IAor
fQorCiAjaWYgUExBVEZPUk0oTUFDKQogdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBsZXhUZXh0
SW5wdXRFbmFibGVkKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBi
b29sIGNvbXBsZXhUZXh0SW5wdXRFbmFibGVkKQogewpAQCAtMjg3NCw0ICsyODgyLDM2IEBAIENv
bG9yIFdlYlBhZ2VQcm94eTo6YmFja2luZ1N0b3JlVXBkYXRlc0ZsYXNoQ29sb3IoKQogICAgIHJl
dHVybiBDb2xvcigyMDAsIDAsIDI1NSk7CiB9CiAKKyNpZiBQTEFURk9STShNQUMpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCit2b2lkIFdlYlBhZ2VQcm94eTo6
c2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5
cGUgcGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBs
YWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6
OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGFs
dGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQoreworICAgIG1fcGFnZUNsaWVudC0+c2hvd0Nv
cnJlY3Rpb25QYW5lbChwYW5lbFR5cGUsIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgcmVw
bGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nLCBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3Ry
aW5ncyk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdl
YkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uKQoreworICAg
IG1fcGFnZUNsaWVudC0+ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChyZWFzb24pOworfQorCit2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFN5bmMoV2ViQ29yZTo6UmVhc29u
Rm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24sIFN0cmluZyYgcmVzdWx0KQorewor
ICAgIG1fcGFnZUNsaWVudC0+ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChyZWFzb24sIHJlc3VsdCk7
Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdl
YkNvcmU6OkVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VU
eXBlLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5n
JiByZXBsYWNlbWVudFN0cmluZykKK3sKKyAgICBtX3BhZ2VDbGllbnQtPnJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UocmVzcG9uc2VUeXBlLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRT
dHJpbmcpOworfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpCit2b2lkIFdlYlBhZ2VQcm94
eTo6aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KGNvbnN0IFdURjo6U3RyaW5nJiByZXN1bHQp
Cit7CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICBp
ZiAoIWlzQ2xvc2VkKCkpCisgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6SGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KHJlc3VsdCksIG1fcGFnZUlELCAwKTsKKyNl
bmRpZgorfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGIxNjg5ODhhM2M0OTdlMWM3NDAwMmVjZjI3MjY0
ZDdjNTBiODg4YWUuLjg5YzYwM2IzMDQ0NjUyMzhiYzYwOGU3MGJkYWM1ZDY0Y2M2NmI0NTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTQ2MCw2ICs0NjAsMTAg
QEAgcHVibGljOgogCiAgICAgdm9pZCBmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkludFJlY3Q+JiB1cGRhdGVSZWN0cyk7CiAKKyNpZiBQTEFURk9STShNQUMp
CisgICAgdm9pZCBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQoY29uc3QgV1RGOjpTdHJpbmcm
IHJlc3VsdCk7CisjZW5kaWYKKwogICAgIHN0YXRpYyB2b2lkIHNldERlYnVnUGFpbnRGbGFncyhX
S1BhZ2VEZWJ1Z1BhaW50RmxhZ3MgZmxhZ3MpIHsgc19kZWJ1Z1BhaW50RmxhZ3MgPSBmbGFnczsg
fQogICAgIHN0YXRpYyBXS1BhZ2VEZWJ1Z1BhaW50RmxhZ3MgZGVidWdQYWludEZsYWdzKCkgeyBy
ZXR1cm4gc19kZWJ1Z1BhaW50RmxhZ3M7IH0KIApAQCAtNjQ2LDEwICs2NTAsMTcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpb25OYW1lID0gU3RyaW5nKCkpOwogCiAgICAgdm9pZCBjbGVhclBlbmRpbmdBUElSZXF1
ZXN0VVJMKCkgeyBtX3BlbmRpbmdBUElSZXF1ZXN0VVJMID0gU3RyaW5nKCk7IH0KLSAgICB2b2lk
IHNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKGNvbnN0IFN0cmluZyYgcGVuZGluZ0FQSVJlcXVlc3RV
UkwpIHsgbV9wZW5kaW5nQVBJUmVxdWVzdFVSTCA9IHBlbmRpbmdBUElSZXF1ZXN0VVJMOyB9Cisg
ICAgdm9pZCBzZXRQZW5kaW5nQVBJUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZv
aWQgaW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgV2ViQ29yZTo6S1VSTCYs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVm
aW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgIHZvaWQgc2hvd0NvcnJl
Y3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBX
VEY6OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVu
dFN0cmluZywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVu
dFN0cmluZ3MpOworICAgIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFz
b25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKKyAgICB2b2lkIGRpc21pc3NDb3JyZWN0
aW9uUGFuZWxTeW5jKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWws
IFN0cmluZyYgcmVzdWx0KTsKKyAgICB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2Uo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1l
bnRTdHJpbmcpOworI2VuZGlmCisKICAgICBQYWdlQ2xpZW50KiBtX3BhZ2VDbGllbnQ7CiAgICAg
V2ViTG9hZGVyQ2xpZW50IG1fbG9hZGVyQ2xpZW50OwogICAgIFdlYlBvbGljeUNsaWVudCBtX3Bv
bGljeUNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IDljNmRhMDMyZWU4YzQ2NWFjOTNmODM0ZWQ4ODM0YzU4M2VhM2I3
NTkuLjZjMmQyZTcyNzQyNWIzYzE2NDhjOGJiN2IyMGQ2MjAzYjA2NDhhMTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjA4
LDQgKzIwOCwxMiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2lmIFBMQVRGT1JNKFdJ
TikKICAgICBTdGFydERyYWdEcm9wKFdlYkNvcmU6OkludFBvaW50IGltYWdlUG9pbnQsIFdlYkNv
cmU6OkludFBvaW50IGRyYWdQb2ludCwgdWludDY0X3Qgb2tFZmZlY3QsIEhhc2hNYXA8VUlOVCxW
ZWN0b3I8U3RyaW5nPiA+IGRhdGFNYXAsIFdlYkNvcmU6OkludFNpemUgZHJhZ0ltYWdlU2l6ZSwg
V2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBkcmFnSW1hZ2UsIGJvb2wgbGlua0RyYWcpCiAj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKKyAgICAjIEF1dG9jb3JyZWN0aW9uIG1lc3NhZ2VzCisgICAgU2hvd0Nv
cnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUgcGFu
ZWxUeXBlLCBXZWJDb3JlOjpGbG9hdFJlY3QgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBX
VEY6OlN0cmluZyByZXBsYWNlZFN0cmluZywgV1RGOjpTdHJpbmcgcmVwbGFjZW1lbnRTdHJpbmcs
IFZlY3RvcjxXVEY6OlN0cmluZz4gYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCisgICAg
RGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVj
dGlvblBhbmVsIHJlYXNvbikKKyAgICBEaXNtaXNzQ29ycmVjdGlvblBhbmVsU3luYyhXZWJDb3Jl
OjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbikgLT4gKFN0cmluZyBy
ZXN1bHQpCisgICAgUmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShXZWJDb3JlOjpFZGl0b3JD
bGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgV1RGOjpTdHJp
bmcgcmVwbGFjZWRTdHJpbmcsIFdURjo6U3RyaW5nIHJlcGxhY2VtZW50U3RyaW5nKTsKKyNlbmRp
ZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9u
UGFuZWxNYWMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVs
TWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDM4ZWU5NDY2YTJlMWUzNTM1NjhlOTkzYTk4MDY1MjFmOGU2OTA3
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVj
dGlvblBhbmVsTWFjLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29y
cmVjdGlvblBhbmVsTWFjX2gKKyNkZWZpbmUgQ29ycmVjdGlvblBhbmVsTWFjX2gKKworI2lmICFk
ZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJE
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisjaW1wb3J0IDxBcHBLaXQv
TlNUZXh0Q2hlY2tlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9Db3JyZWN0aW9uUGFuZWxJbmZvLmg+
CisKK0BjbGFzcyBXS1ZpZXc7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDb3JyZWN0
aW9uUGFuZWxNYWMgeworcHVibGljOgorICAgIENvcnJlY3Rpb25QYW5lbE1hYygpOworICAgIH5D
b3JyZWN0aW9uUGFuZWxNYWMoKTsKKyAgICB2b2lkIHNob3coV0tWaWV3KiwgV2ViQ29yZTo6Q29y
cmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJv
dW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VkU3Ry
aW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxX
VEY6OlN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKKyAgICB2b2lkIGRp
c21pc3MoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7CisgICAg
dm9pZCBkaXNtaXNzKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWws
IFdURjo6U3RyaW5nJiByZXN1bHQpOworICAgIHN0YXRpYyB2b2lkIHJlY29yZEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2UoV0tWaWV3KiwgTlNDb3JyZWN0aW9uUmVzcG9uc2UsIGNvbnN0IFdURjo6U3Ry
aW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5n
KTsKKworcHJpdmF0ZToKKyAgICBib29sIGlzU2hvd2luZygpIGNvbnN0IHsgcmV0dXJuIG1fdmll
dzsgfQorICAgIHZvaWQgZG9EaXNtaXNzKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3Jy
ZWN0aW9uUGFuZWwsIGJvb2wgZGlzbWlzc2luZ0V4dGVybmFsbHkpOworCisgICAgYm9vbCBtX2Rp
c21pc3NlZEV4dGVybmFsbHk7CisgICAgV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJl
Y3Rpb25QYW5lbCBtX3JlYXNvbkZvckRpc21pc3Npbmc7CisgICAgV0tWaWV3KiBtX3ZpZXc7Cisg
ICAgTlNTdHJpbmcqIG1fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNtaXNzYWw7CisgICAgTlNDb25k
aXRpb24qIG1fcmVzdWx0Q29uZGl0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorCisj
ZW5kaWYgLy8gQ29ycmVjdGlvblBhbmVsTWFjX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsTWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWxNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWQyMDg5Y2RlYmY1
MmQzM2Y3ZWZmYWMzMDAwYTk3NjljZGE5ZDI2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsTWFjLm1tCkBAIC0wLDAgKzEsMTY5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaWYgIWRlZmluZWQoQlVJTERJ
TkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyNpbXBvcnQgIkNvcnJlY3Rpb25QYW5lbE1hYy5o
IgorCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIldLVmlldy5oIgorI2ltcG9y
dCAiV0tWaWV3UHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5h
bWVzcGFjZSBXVEY7CisKK3N0YXRpYyBpbmxpbmUgTlNDb3JyZWN0aW9uQnViYmxlVHlwZSBjb3Jy
ZWN0aW9uQnViYmxlVHlwZShDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUgcGFuZWxUeXBl
KQoreworICAgIHN3aXRjaCAocGFuZWxUeXBlKSB7CisgICAgICAgIGNhc2UgQ29ycmVjdGlvblBh
bmVsSW5mbzo6UGFuZWxUeXBlQ29ycmVjdGlvbjoKKyAgICAgICAgICAgIHJldHVybiBOU0NvcnJl
Y3Rpb25CdWJibGVUeXBlQ29ycmVjdGlvbjsKKyAgICAgICAgY2FzZSBDb3JyZWN0aW9uUGFuZWxJ
bmZvOjpQYW5lbFR5cGVSZXZlcnNpb246CisgICAgICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9u
QnViYmxlVHlwZVJldmVyc2lvbjsKKyAgICAgICAgY2FzZSBDb3JyZWN0aW9uUGFuZWxJbmZvOjpQ
YW5lbFR5cGVTcGVsbGluZ1N1Z2dlc3Rpb25zOgorICAgICAgICAgICAgcmV0dXJuIE5TQ29ycmVj
dGlvbkJ1YmJsZVR5cGVHdWVzc2VzOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gTlNDb3JyZWN0aW9uQnViYmxlVHlwZUNvcnJlY3Rpb247Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitDb3JyZWN0aW9uUGFuZWxNYWM6OkNvcnJlY3Rpb25QYW5lbE1hYygp
CisgICAgOiBtX2Rpc21pc3NlZEV4dGVybmFsbHkoZmFsc2UpCisgICAgLCBtX3JlYXNvbkZvckRp
c21pc3NpbmcoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbElnbm9yZWQpCisgICAg
LCBtX3ZpZXcoMCkKKyAgICAsIG1fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNtaXNzYWwoMCkKK3sK
KyAgICBtX3Jlc3VsdENvbmRpdGlvbiA9IFtOU0NvbmRpdGlvbiBuZXddOworfQorCitDb3JyZWN0
aW9uUGFuZWxNYWM6On5Db3JyZWN0aW9uUGFuZWxNYWMoKQoreworICAgIGRvRGlzbWlzcyhSZWFz
b25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsSWdub3JlZCwgZmFsc2UpOworICAgIFttX3Jl
c3VsdENvbmRpdGlvbiByZWxlYXNlXTsKKyAgICBpZiAobV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rp
c21pc3NhbCkKKyAgICAgICAgW21fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNtaXNzYWwgcmVsZWFz
ZV07Cit9CisKK3ZvaWQgQ29ycmVjdGlvblBhbmVsTWFjOjpzaG93KFdLVmlldyogdmlldywgQ29y
cmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlIHR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRp
bmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJu
YXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCit7CisgICAgZG9EaXNtaXNzKFJlYXNvbkZvckRpc21p
c3NpbmdDb3JyZWN0aW9uUGFuZWxJZ25vcmVkLCBmYWxzZSk7CisgICAgCisgICAgaWYgKCF2aWV3
KQorICAgICAgICByZXR1cm47CisKKyAgICBOU1N0cmluZyogcmVwbGFjZWRTdHJpbmdBc05TU3Ry
aW5nID0gcmVwbGFjZWRTdHJpbmc7CisgICAgTlNTdHJpbmcqIHJlcGxhY2VtZW50U3RyaW5nQXNO
U1N0cmluZyA9IHJlcGxhY2VtZW50U3RyaW5nOworICAgIG1fdmlldyA9IHZpZXc7CisgICAgTlND
b3JyZWN0aW9uQnViYmxlVHlwZSBidWJibGVUeXBlID0gY29ycmVjdGlvbkJ1YmJsZVR5cGUodHlw
ZSk7CisgICAgCisgICAgTlNNdXRhYmxlQXJyYXkqIGFsdGVybmF0aXZlU3RyaW5ncyA9IDA7Cisg
ICAgaWYgKCFhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgc2l6ZV90IHNpemUgPSBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5zaXplKCk7Cisg
ICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBh
Y2l0eTpzaXplXTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisg
ICAgICAgICAgICBbYWx0ZXJuYXRpdmVTdHJpbmdzIGFkZE9iamVjdDooTlNTdHJpbmcqKWFsdGVy
bmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzW2ldXTsKKyAgICB9CisKKyAgICBOU1NwZWxsQ2hlY2tl
ciogc3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl07Cisg
ICAgTlNJbnRlZ2VyIGRvY3VtZW50VGFnID0gW3ZpZXcgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWdd
OworICAgIFtzcGVsbENoZWNrZXIgc2hvd0NvcnJlY3Rpb25CdWJibGVPZlR5cGU6YnViYmxlVHlw
ZSBwcmltYXJ5U3RyaW5nOnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyBhbHRlcm5hdGl2ZVN0
cmluZ3M6YWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUmVw
bGFjZWRTdHJpbmcgdmlldzptX3ZpZXcgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyogYWNj
ZXB0ZWRTdHJpbmcpIHsKKyAgICAgICAgc3dpdGNoIChidWJibGVUeXBlKSB7CisgICAgICAgIGNh
c2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUNvcnJlY3Rpb246CisgICAgICAgICAgICBpZiAoYWNj
ZXB0ZWRTdHJpbmcpCisgICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25z
ZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkIHRvQ29ycmVjdGlvbjphY2NlcHRlZFN0cmlu
ZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERv
Y3VtZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIW1fZGlzbWlzc2VkRXh0ZXJuYWxseSB8fCBtX3JlYXNvbkZvckRpc21pc3Np
bmcgPT0gUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbENhbmNlbGxlZCkKKyAgICAg
ICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25S
ZXNwb25zZVJlamVjdGVkIHRvQ29ycmVjdGlvbjpyZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcg
Zm9yV29yZDpyZXBsYWNlZFN0cmluZ0FzTlNTdHJpbmcgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1
bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNw
b25zZUlnbm9yZWQgdG9Db3JyZWN0aW9uOnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyBmb3JX
b3JkOnJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50
V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBOU0NvcnJlY3Rpb25CdWJibGVUeXBlUmV2ZXJzaW9uOgorICAgICAgICAg
ICAgaWYgKGFjY2VwdGVkU3RyaW5nKQorICAgICAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVj
b3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZCB0b0NvcnJlY3Rpb246cmVw
bGFjZWRTdHJpbmdBc05TU3RyaW5nIGZvcldvcmQ6YWNjZXB0ZWRTdHJpbmcgbGFuZ3VhZ2U6bmls
IGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUd1ZXNzZXM6CisgICAgICAgICAg
ICBpZiAoYWNjZXB0ZWRTdHJpbmcpCisgICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNv
cmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkIHRvQ29ycmVjdGlvbjphY2Nl
cHRlZFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyBsYW5ndWFnZTpuaWwg
aW5TcGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChtX2Rpc21pc3NlZEV4dGVybmFsbHkpIHsKKyAgICAg
ICAgICAgIFttX3Jlc3VsdENvbmRpdGlvbiBsb2NrXTsKKyAgICAgICAgICAgIGlmIChhY2NlcHRl
ZFN0cmluZykKKyAgICAgICAgICAgICAgICBtX3Jlc3VsdEZvclN5bmNocm9ub3VzRGlzbWlzc2Fs
ID0gW2FjY2VwdGVkU3RyaW5nIGNvcHldOworICAgICAgICAgICAgW21fcmVzdWx0Q29uZGl0aW9u
IHNpZ25hbF07CisgICAgICAgICAgICBbbV9yZXN1bHRDb25kaXRpb24gdW5sb2NrXTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBbbV92aWV3IGhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3Vs
dDphY2NlcHRlZFN0cmluZ107CisgICAgfV07Cit9CisKK3ZvaWQgQ29ycmVjdGlvblBhbmVsTWFj
OjpkaXNtaXNzKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uKQorewor
ICAgIGRvRGlzbWlzcyhyZWFzb24sIHRydWUpOworfQorCit2b2lkIENvcnJlY3Rpb25QYW5lbE1h
Yzo6ZGlzbWlzcyhSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbiwgU3Ry
aW5nJiByZXN1bHQpCit7CisgICAgaWYgKCFpc1Nob3dpbmcoKSkgeworICAgICAgICByZXN1bHQg
PSBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBkb0Rpc21pc3MocmVhc29u
LCB0cnVlKTsKKyAgICBbbV9yZXN1bHRDb25kaXRpb24gbG9ja107CisgICAgd2hpbGUgKCFtX3Jl
c3VsdEZvclN5bmNocm9ub3VzRGlzbWlzc2FsKQorICAgICAgICBbbV9yZXN1bHRDb25kaXRpb24g
d2FpdF07CisgICAgcmVzdWx0ID0gU3RyaW5nKG1fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNtaXNz
YWwpOworICAgIFttX3Jlc3VsdENvbmRpdGlvbiB1bmxvY2tdOworfQorCit2b2lkIENvcnJlY3Rp
b25QYW5lbE1hYzo6ZG9EaXNtaXNzKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0
aW9uUGFuZWwgcmVhc29uLCBib29sIGRpc21pc3NpbmdFeHRlcm5hbGx5KQoreworICAgIG1fZGlz
bWlzc2VkRXh0ZXJuYWxseSA9IGRpc21pc3NpbmdFeHRlcm5hbGx5OworICAgIGlmICghaXNTaG93
aW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3JlYXNvbkZvckRpc21pc3Npbmcg
PSByZWFzb247CisgICAgaWYgKG1fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNtaXNzYWwpIHsKKyAg
ICAgICAgW21fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNtaXNzYWwgcmVsZWFzZV07CisgICAgICAg
IG1fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNtaXNzYWwgPSAwOworICAgIH0KKyAgICBpZiAocmVh
c29uID09IFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxBY2NlcHRlZCkKKyAgICAg
ICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGRpc21pc3NDb3JyZWN0aW9u
QnViYmxlRm9yVmlldzptX3ZpZXddOworICAgIGVsc2UKKyAgICAgICAgW1tOU1NwZWxsQ2hlY2tl
ciBzaGFyZWRTcGVsbENoZWNrZXJdIGNhbmNlbENvcnJlY3Rpb25CdWJibGVGb3JWaWV3Om1fdmll
d107CisgICAgbV92aWV3ID0gMDsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWxNYWM6OnJlY29y
ZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV0tWaWV3KiB2aWV3LCBOU0NvcnJlY3Rpb25SZXNwb25z
ZSByZXNwb25zZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlbWVudFN0cmluZykKK3sKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hl
Y2tlcl0gcmVjb3JkUmVzcG9uc2U6cmVzcG9uc2UgdG9Db3JyZWN0aW9uOnJlcGxhY2VtZW50U3Ry
aW5nIGZvcldvcmQ6cmVwbGFjZWRTdHJpbmcgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdp
dGhUYWc6W3ZpZXcgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWddXTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisjZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGM0MWE1MGM2MjE5ZmE4NzY5M2NiN2U5YjFlNDQzZTVkNzU3OWViNTkuLmU4
Njk0NDk1NWQ5NWQwNDM2NGQ0ODczM2E1ZjA0ODQ2ZDJlMzZhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1OSw2ICszNTks
OCBAQAogCQk5M0ZDNjdCRTEyRDNDQ0YyMDBBNjA2MTAgLyogRGVjb2RlckFkYXB0ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkM2NzlFMTJEM0ND
NzQwMEE2MDYxMCAvKiBEZWNvZGVyQWRhcHRlci5oICovOyB9OwogCQk5M0ZDNjdCRjEyRDNDQ0Yy
MDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGQzY3OUYxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29kZXJB
ZGFwdGVyLmNwcCAqLzsgfTsKIAkJOTNGQzY3QzAxMkQzQ0NGMjAwQTYwNjEwIC8qIEVuY29kZXJB
ZGFwdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0ZDNjdBMDEyRDNDQzc0MDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuaCAqLzsgfTsKKwkJQjhF
MDlGNUUxMzI4MzI1MDAwQUZDMTBGIC8qIENvcnJlY3Rpb25QYW5lbE1hYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjhFMDlGNUMxMzI4MzI0RjAwQUZD
MTBGIC8qIENvcnJlY3Rpb25QYW5lbE1hYy5oICovOyB9OworCQlCOEUwOUY1RjEzMjgzMjUwMDBB
RkMxMEYgLyogQ29ycmVjdGlvblBhbmVsTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjhFMDlGNUQxMzI4MzI1MDAwQUZDMTBGIC8qIENvcnJlY3Rp
b25QYW5lbE1hYy5tbSAqLzsgfTsKIAkJQkMwMDkyRjcxMTU4MzdBMzAwRTBBRTJBIC8qIFJ1bkxv
b3BNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzAwOTJGNTExNTgzN0EzMDBFMEFFMkEgLyogUnVuTG9vcE1hYy5tbSAqLzsgfTsKIAkJQkMwMDky
RjgxMTU4MzdBMzAwRTBBRTJBIC8qIFdvcmtRdWV1ZU1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwOTJGNjExNTgzN0EzMDBFMEFFMkEgLyog
V29ya1F1ZXVlTWFjLmNwcCAqLzsgfTsKIAkJQkMwMzJENzUxMEY0Mzc4RDAwNThDMTVBIC8qIFdl
YkNocm9tZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMwMzJENjAxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkNocm9tZUNsaWVudC5oICovOyB9
OwpAQCAtODE4LDcgKzgyMCw3IEBACiAJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJ
CQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBv
YmplY3QgKi87CiAJCQlwcm94eVR5cGUgPSAxOwotCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSBC
Q0RFMDkzMzEzMjcyNDk2MDAxMjU5RkIgLyogUGx1Z2luIFByb2Nlc3MgKi87CisJCQlyZW1vdGVH
bG9iYWxJRFN0cmluZyA9IEJDREUwOTMzMTMyNzI0OTYwMDEyNTlGQjsKIAkJCXJlbW90ZUluZm8g
PSAiUGx1Z2luIFByb2Nlc3MiOwogCQl9OwogLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBz
ZWN0aW9uICovCkBAIC0xMjE1LDYgKzEyMTcsOCBAQAogCQk5M0ZDNjdBMDEyRDNDQzc0MDBBNjA2
MTAgLyogRW5jb2RlckFkYXB0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RW5jb2RlckFkYXB0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyRDVEN0Yx
MjM2Q0JBODAwQTg4QjE1IC8qIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjM5NkVBNTUxMkUwRUQyRDAwRjRGRUI3IC8qIGNvbmZp
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjhFMDlGNUMxMzI4MzI0RjAwQUZDMTBGIC8qIENvcnJlY3Rp
b25QYW5lbE1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JyZWN0aW9u
UGFuZWxNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjhFMDlGNUQxMzI4MzI1
MDAwQUZDMTBGIC8qIENvcnJlY3Rpb25QYW5lbE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IENvcnJlY3Rpb25QYW5lbE1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkMwMDkyRjUxMTU4MzdBMzAwRTBBRTJBIC8qIFJ1bkxvb3BNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSdW5Mb29wTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAwOTJGNjExNTgzN0EzMDBFMEFFMkEgLyog
V29ya1F1ZXVlTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdv
cmtRdWV1ZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDMyRDYwMTBG
NDM3OEQwMDU4QzE1QSAvKiBXZWJDaHJvbWVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViQ2hyb21lQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yODc0LDYgKzI4NzgsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMUE2NDI5MkMxMkRF
NUY5ODAwQ0FBRTJDIC8qIEJhY2tpbmdTdG9yZU1hYy5tbSAqLywKIAkJCQlCQzI2NTFGNTExODI1
RUY4MDAyNDNFMTIgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlNYWMubW0gKi8sCisJ
CQkJQjhFMDlGNUMxMzI4MzI0RjAwQUZDMTBGIC8qIENvcnJlY3Rpb25QYW5lbE1hYy5oICovLAor
CQkJCUI4RTA5RjVEMTMyODMyNTAwMEFGQzEwRiAvKiBDb3JyZWN0aW9uUGFuZWxNYWMubW0gKi8s
CiAJCQkJMUFBNDE3RUQxMkMwMEQ4NzAwMkJFNjdCIC8qIFRleHRDaGVja2VyTWFjLm1tICovLAog
CQkJCTFBMUM2NDg2MTFGNDE1QjcwMDU1M0MxOSAvKiBXZWJDb250ZXh0TWFjLm1tICovLAogCQkJ
CTUxQUNCQjlFMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLmggKi8s
CkBAIC0zNDU5LDYgKzM0NjUsNyBAQAogCQkJCTM3QzRFOUY2MTMxQzZFN0UwMDI5QkQ1QSAvKiBj
b25maWcuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQkIxNkE0MTMyMDFCOUIwMEY0OTQzMSAvKiBG
dWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzM0FBMTA2NzEz
MUYwNjAwMDBENEE1NzUgLyogV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlCOEUwOUY1RTEzMjgzMjUwMDBBRkMxMEYgLyogQ29ycmVjdGlvblBhbmVsTWFj
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTQwNjMsNiArNDA3MCw3IEBACiAJCQkJQ0Q3M0JBNEUxMzFB
Q0RCNzAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUNENzNCQTUzMTMxQjY0NUIwMEVFREVEMiAvKiBXZWJGdWxsU2Ny
ZWVuTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDZGNzVGNDEzMUI2NkQwMDBENkIy
MUUgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlC
OEUwOUY1RjEzMjgzMjUwMDBBRkMxMEYgLyogQ29ycmVjdGlvblBhbmVsTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBmYTg0MjZhMzhlOTRmYmUzZjQxNjU5ODlm
ODE1MmYzYWQ3NGU2MDc4Li45NTMzYWRlZTE2OTRkZGM5NTU2ODM4YmNhNTljZmM1YWQ3MzBkODgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTE0Miw5ICsxNDIsOSBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7CiAgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcios
IGludCwgY29uc3QgV1RGOjpTdHJpbmcmKTsKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIHNob3dD
b3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmlu
ZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLCBX
ZWJDb3JlOjpFZGl0b3IqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChX
ZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3Jy
ZWN0aW9uUGFuZWwpOwotICAgIHZpcnR1YWwgYm9vbCBpc1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFz
b25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsLCBXVEY6OlN0cmluZyYgcmVzdWx0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlv
blJlc3BvbnNlVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBX
VEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogI2VuZGlmCiAgICAgV2ViUGFnZSogbV9w
YWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmluZGV4IDhhZjA0MzgwYzFm
ZmU4NGQ5NWRkMWYwODFmZWEwMjBhYTkxNjQ5OWMuLjUzNTg4ZmYzZDk1MTEyN2ZiZjZlNjk5YTU4
OTlmMzZlM2UyZDc3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KQEAg
LTI0NywyNSArMjQ3LDI0IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFn
cmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0CiB9CiAKICNpZiAhZGVm
aW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFu
ZWxUeXBlIHR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6
U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0
aXZlUmVwbGFjZW1lbnRTdHJpbmdzLCBXZWJDb3JlOjpFZGl0b3IqKQordm9pZCBXZWJFZGl0b3JD
bGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6
UGFuZWxUeXBlIHR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJl
cGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdU
Rjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVy
bmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb3JyZWN0aW9uUGFuZWwo
dHlwZSwgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFj
ZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSk7CiB9CiAKLXZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZv
ckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlzbWlz
c0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBh
bmVsIHJlYXNvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNtaXNzQ29ycmVjdGlvblBhbmVsKHJlYXNvbikpOwog
fQogCi1ib29sIFdlYkVkaXRvckNsaWVudDo6aXNTaG93aW5nQ29ycmVjdGlvblBhbmVsKCkKK3Zv
aWQgV2ViRWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNv
bkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uLCBTdHJpbmcmIHJlc3VsdCkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBtX3BhZ2UtPnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9uUGFuZWxTeW5j
KHJlYXNvbiksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9uUGFuZWxT
eW5jOjpSZXBseShyZXN1bHQpKTsKIH0KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNl
VHlwZSByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVjb3JkQXV0b2NvcnJlY3Rpb25S
ZXNwb25zZShyZXNwb25zZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZykp
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCBjYzliOGNkY2FlZjRiMmViNTA4ZThlYmVlYWM2YzBhMmVhNDBhOWQ0Li4w
YzQ2ZjAzMWYwNDAwYzQwNTgyMmZmYWY1MGNkY2JiYzk2NjQ5M2Q1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMTA3LDQgKzIxMDcsMTQg
QEAgdm9pZCBXZWJQYWdlOjpzZXRNZW1vcnlDYWNoZU1lc3NhZ2VzRW5hYmxlZChib29sIG1lbW9y
eUNhY2hlTWVzc2FnZXNFbmFibGVkKQogICAgIG1fcGFnZS0+c2V0TWVtb3J5Q2FjaGVDbGllbnRD
YWxsc0VuYWJsZWQobWVtb3J5Q2FjaGVNZXNzYWdlc0VuYWJsZWQpOwogfQogCisjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQordm9p
ZCBXZWJQYWdlOjpoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQoY29uc3QgV1RGOjpTdHJpbmcm
IHJlc3VsdCkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47
CisgICAgZnJhbWUtPmVkaXRvcigpLT5oYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQocmVzdWx0
KTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDExNDk3ZWQ4NzU0ZjUzY2YxMzkxZTI0
ZDgxZDQyZTcwZTdjYjRjMzcuLjkzODM5ZDI5ZTg0NDNlOWNkMzg5ODM4MzA4NTU0NTVlNzUzOTUz
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
MzU2LDYgKzM1NiwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZvcmNlUmVwYWludFdpdGhvdXRD
YWxsYmFjaygpOwogCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9U
SUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fU05PV19MRU9QQVJEKQorICAgIHZvaWQgaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0
KGNvbnN0IFdURjo6U3RyaW5nJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCmluZGV4IDY0ZjdkYWZkMDg2MDI4MmY1Mzg0MTYyMzA1NDBhYTE4OWIyMTE5MjIuLmEzODM0
YTc0NDBlYjY0ODMyMDUzNjU5NGM0NDliZDY0OWUzNTVhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xOTIs
NCArMTkyLDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAjaWYgUExBVEZPUk0oUVQpCiAgICAg
RmluZFpvb21hYmxlQXJlYUZvclBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50KQogI2VuZGlm
CisKKyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9X
X0xFT1BBUkQpCisgICAgSGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KFdURjo6U3RyaW5nIHJl
c3VsdCkKKyNlbmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86252</attachid>
            <date>2011-03-18 18:34:53 -0700</date>
            <delta_ts>2011-03-22 14:22:17 -0700</delta_ts>
            <desc>Patch (v2)</desc>
            <filename>bug-56055-20110318183452.patch</filename>
            <type>text/plain</type>
            <size>82145</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNGVlMGZmZDI4NWIwYWY0YTM2MjlhNDM3NmU5MDg1YTM4MDI5ZmQ5Li4yZDQxZTRm
ZGI2MWFjYjdhMDMwY2RmMjg3MjU4MGVmMDM0YmNiYTcxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTEtMDMtMTggIEppYSBQdSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayB1cCBuZXcgQXBwS2l0IGF1dG9jb3Jy
ZWN0aW9uIFVJIHdpdGggV0syLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTYwNTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg5NDc0NjM+CisKKyAg
ICAgICAgUGxlYXNlIHNlZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3IgZGV0YWlsLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOiBFbmFibGUgYXV0b2NvcnJlY3Rpb24gdGVzdHMg
Zm9yIFdLMi4KKwogMjAxMS0wMy0xOCBKYW1lcyBSb2JpbnNvbiA8amFtZXNyQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCB0ZXN0cyB0aGF0IHdpbGwgbmVlZCBhIHJlYmFz
ZWxpbmUgb24gd2luZG93cyB0byBleHBlY3RhdGlvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
U2tpcHBlZAppbmRleCA1OGRkOTkwZDYwZGQ5NTA0ODc0Zjg5OTQwOTMwZDAxMzBiOTE1ZDY3Li45
ZWU4NGYyMDQyYjRjY2YzOGJkZDdjZmE2MGZjMTIyMjcwZjlkYjFmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi9Ta2lwcGVkCkBAIC01NjksMjMgKzU2OSw2IEBAIHBsYXRmb3JtL21hYy9lZGl0
aW5nL2RlbGV0aW5nL2JhY2t3YXJkLWRlbGV0ZS5odG1sCiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci1zZXQtZGF0YS1maWxlLXVybC5odG1sCiBwbGF0Zm9ybS9t
YWMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2stc2hvdWxkLW5vdC1leHBhbmQtYWNyb3Nz
LWxpbmVzLmh0bWwKIHBsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi93b3JkLXRoYWkuaHRt
bAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvYXV0b2NvcnJlY3Rpb24tY29udHJhY3Rp
b24uaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvYXV0b2NvcnJlY3Rpb24tZGVs
ZXRlLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2F1dG9jb3JyZWN0aW9uLXJl
bW92aW5nLXVuZGVybGluZS1hZnRlci1wYXN0ZS5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGluZy9z
cGVsbGluZy9hdXRvY29ycmVjdGlvbi1yZW1vdmluZy11bmRlcmxpbmUuaHRtbAotcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc3BlbGxpbmcvYXV0b2NvcnJlY3Rpb24tc2ltcGxlLmh0bWwKLXBsYXRmb3Jt
L21hYy9lZGl0aW5nL3NwZWxsaW5nL2NsaWNrLWF1dG9jb3JyZWN0ZWQtd29yZC5odG1sCi1wbGF0
Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9kZWxldGUtYXV0b2NvcnJlY3RlZC13b3JkLTEuaHRt
bAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZGVsZXRlLWludG8tYXV0b2NvcnJlY3Rl
ZC13b3JkLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1pbnRvLW1p
c3NwZWxsZWQtd29yZC5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9lZGl0aW5n
LW11bHRpcGxlLXdvcmRzLXdpdGgtbWFya2Vycy5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGluZy9z
cGVsbGluZy9lZGl0aW5nLXdvcmQtd2l0aC1tYXJrZXItMS5odG1sCi1wbGF0Zm9ybS9tYWMvZWRp
dGluZy9zcGVsbGluZy9lZGl0aW5nLXdvcmQtd2l0aC1tYXJrZXItMi5odG1sCi1wbGF0Zm9ybS9t
YWMvZWRpdGluZy9zcGVsbGluZy9mb3J3YXJkLWRlbGV0ZS1pbnRvLWF1dG9jb3JyZWN0ZWQtd29y
ZC5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9tb3ZlLWN1cnNvci1hcm91bmQt
bWlzc3BlbGxlZC13b3JkLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL21vdmUt
Y3Vyc29yLXRvLWF1dG9jb3JyZWN0ZWQtd29yZC5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGluZy9z
cGVsbGluZy9tb3ZlLWN1cnNvci10by1iZWdpbm5pbmctb2YtYXV0b2NvcnJlY3RlZC13b3JkLmh0
bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3JlbW92aW5nLXVuZGVybGluZS1hZnRl
ci1hY2NlcHRpbmctYXV0b2NvcnJlY3Rpb24tdXNpbmctcHVuY3R1YXRpb24uaHRtbAogcGxhdGZv
cm0vbWFjL2Zhc3QvZm9ybXMvaW5wdXQtYXBwZWFyYW5jZS1zcGluYnV0dG9uLXVwLmh0bWwKIHBs
YXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LW51bWJlci1jbGljay5odG1sCiBwbGF0Zm9ybS9t
YWMvZmFzdC9mb3Jtcy9saXN0Ym94LXNjcm9sbGJhci1oaXQtdGVzdC5odG1sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggMTNmN2RkMzlhZTE0MzNmYjM4NTg0ZjUzNmY1YzY0MGQ5MDk4OTEyZi4uZmQ4ZmNmOWE2OTkz
MWY4OWFlZDE5MzIwN2EzYTkwMTg5YmZmNDMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBA
CisyMDExLTAzLTE4ICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhvb2sgdXAgbmV3IEFwcEtpdCBhdXRvY29y
cmVjdGlvbiBVSSB3aXRoIFdLMi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU2MDU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84OTQ3NDYzPgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggaXMgdG8gZW5hYmxlIFdLMiB0byB1dGlsaXplIGF1dG9jb3JyZWN0
aW9uIFVJIG9uIE1hYyBPUyBYLiBJdCBjb250YWlucyBmb2xsb3dpbmcKKyAgICAgICAgbWFqb3Ig
Y2hhbmdlczoKKworICAgICAgICAxLiBBbGwgYnV0IG9uZSBhdXRvY29ycmVjdGlvbiByZWxhdGVk
IG1lc3NhZ2UgaXMgc3luY2hyb25vdXMuIFNpbmNlIGRpc21pc3NpbmcgYXV0b2NvcnJlY3Rpb24K
KyAgICAgICAgcGFuZWwgY2FuIHBvdGVudGlhbGx5IGNhdXNlIGVkaXRpbmcgdG8gb2NjdXIsIGEg
c3luY2hyb25vdXMgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oKSBmdW5jdGlvbgorICAgICAg
ICBpcyBpbnRyb2R1Y2VkIHRvIG1ha2Ugc3VyZSBhbGwgZWRpdGluZyBjb21tYW5kcyBvY2N1ciBp
biBjb3JyZWN0IG9yZGVyLgorCisgICAgICAgIDIuIFRvIGltcGxlbWVudCBkaXNtaXNzQ29ycmVj
dGlvblBhbmVsU29vbigpLCBhZGRpdGlvbmFsIGNvbmRpdGlvbiB2YXJpYWJsZSBpcyBuZWVkZWQu
IAorICAgICAgICBUbyBpbXByb3ZlIG1haW50YWluYWJpbGl0eSwgQ29ycmVjdGlvblBhbmVsIGNs
YXNzIGlzIGludHJvZHVjZWQgdG8gbWFuYWdlIHRoZQorICAgICAgICBpbnRlcm5hbCBzdGF0ZSBy
ZWxhdGVkIHRvIGNvcnJlY3Rpb24gcGFuZWwuIFRoaXMgY2hhbmdlIGlzIGFwcGxpZWQgdG8gYm90
aCBXSzEgYW5kIFdLMi4KKworICAgICAgICAzLiBFZGl0b3JDbGllbnQ6OmlzU2hvd2luZ0NvcnJl
Y3Rpb25QYW5lbCgpIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSBvcmlnaW5hbCBwdXJwb3NlIGlzIHRv
IGFsbG93CisgICAgICAgIGVkaXRvciB0byBrbm93IHdoZW4gdG8gaGFuZGxlIEVTQyBrZXkgZXZl
bnQuIE5vdyB0aGlzIGlzIGhhbmRsZWQgaW50ZXJuYWxseSBpbiBBcHBLaXQsIHNvCisgICAgICAg
IEVkaXRvckNsaWVudDo6aXNTaG93aW5nQ29ycmVjdGlvblBhbmVsKCkgaXNuJ3QgbmVjZXNzYXJ5
IGFueW1vcmUuCisKKyAgICAgICAgNC4gVGhlIEVkaXRvciogYXJndW1lbnQgaW4gRWRpdG9yQ2xp
ZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKCkgaGFzIGJlZW4gcmVtb3ZlZCwgc2luY2Ugd2UgY2Fu
CisgICAgICAgIGFjY2VzcyBvYmplY3QgdmlhIFdlYlZpZXcgb3IgV0tWaWV3LgorCisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlz
c3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpt
YXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6Y29ycmVjdGlvblBhbmVsVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmFwcGx5QXV0b2NvcnJlY3Rpb25CZWZvcmVUeXBpbmdJZkFwcHJvcHJpYXRlKToKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDb21tYW5kTWFwKToKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUVkaXRvckNsaWVudDo6
c2hvd0NvcnJlY3Rpb25QYW5lbCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUVkaXRvckNsaWVu
dDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24pOgorICAgICAgICAqIG1hbnVhbC10ZXN0cy9h
dXRvY29ycmVjdGlvbi9jbG9zZS13aW5kb3ctd2hlbi1jb3JyZWN0aW9uLWlzLXNob3duLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisKIDIwMTEtMDMtMTggIEph
bWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggODgwNzk2
NTA2OGE0MzkxMGE5YWQ5MzY1MWUxNDYyZWNjOGU5Y2Y5YS4uZTNjZjg1YzFiYWMxYjc3ZTExNzYw
M2M0NTk1MWVjMmMyOTRiMzlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMjA3
Miw3ICsyMDcyLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1Rv
V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwKICAgICAgICAgICAgIGRvQXBw
bHlDb3JyZWN0aW9uID0gZmFsc2U7CiAgICAgfQogICAgIGlmIChkb0FwcGx5Q29ycmVjdGlvbikK
LSAgICAgICAgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVj
dGlvblBhbmVsQWNjZXB0ZWQpOworICAgICAgICBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQo
ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25Q
YW5lbEFjY2VwdGVkKSk7CiAgICAgZWxzZQogICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8u
cmFuZ2VUb0JlUmVwbGFjZWQuY2xlYXIoKTsKICNlbHNlCkBAIC0yMzg3LDcgKzIzODcsNyBAQCB2
b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0
Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAgICAgICAgICAgICAgICBtX2NvcnJlY3Rpb25Q
YW5lbEluZm8ucmVwbGFjZWRTdHJpbmcgPSBwbGFpblRleHQocmFuZ2VUb1JlcGxhY2UuZ2V0KCkp
OwogICAgICAgICAgICAgICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZW1lbnRT
dHJpbmcgPSByZXN1bHQtPnJlcGxhY2VtZW50OwogICAgICAgICAgICAgICAgICAgICBtX2NvcnJl
Y3Rpb25QYW5lbEluZm8uaXNBY3RpdmUgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBjbGll
bnQoKS0+c2hvd0NvcnJlY3Rpb25QYW5lbChtX2NvcnJlY3Rpb25QYW5lbEluZm8ucGFuZWxUeXBl
LCBib3VuZGluZ0JveCwgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJlcGxhY2VkU3RyaW5nLCByZXN1
bHQtPnJlcGxhY2VtZW50LCBWZWN0b3I8U3RyaW5nPigpLCB0aGlzKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFuZWwobV9jb3JyZWN0aW9uUGFuZWxJbmZv
LnBhbmVsVHlwZSwgYm91bmRpbmdCb3gsIG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNlZFN0
cmluZywgcmVzdWx0LT5yZXBsYWNlbWVudCwgVmVjdG9yPFN0cmluZz4oKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvLyBJ
ZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmb3Igc2hvd2luZyBjb3JyZWN0aW9uIHBhbmVsLCB3
ZSBpZ25vcmUgb3RoZXIgY29ycmVjdGlvbiBvciByZXBsYWNlbWVudC4KQEAgLTI1MTcsNyArMjUx
Nyw3IEBAIHZvaWQgRWRpdG9yOjpjb3JyZWN0aW9uUGFuZWxUaW1lckZpcmVkKFRpbWVyPEVkaXRv
cj4qKQogICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRTdHJpbmcgPSBwbGFp
blRleHQobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKTsKICAg
ICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gd2luZG93UmVjdEZvclJhbmdlKG1fY29ycmVj
dGlvblBhbmVsSW5mby5yYW5nZVRvQmVSZXBsYWNlZC5nZXQoKSk7CiAgICAgICAgIGlmICghYm91
bmRpbmdCb3guaXNFbXB0eSgpKQotICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9u
UGFuZWwobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3gsIG1fY29y
cmVjdGlvblBhbmVsSW5mby5yZXBsYWNlZFN0cmluZywgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJl
cGxhY2VtZW50U3RyaW5nLCBWZWN0b3I8U3RyaW5nPigpLCB0aGlzKTsKKyAgICAgICAgICAgIGNs
aWVudCgpLT5zaG93Q29ycmVjdGlvblBhbmVsKG1fY29ycmVjdGlvblBhbmVsSW5mby5wYW5lbFR5
cGUsIGJvdW5kaW5nQm94LCBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRTdHJpbmcsIG1f
Y29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNlbWVudFN0cmluZywgVmVjdG9yPFN0cmluZz4oKSk7
CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIENvcnJlY3Rpb25QYW5lbEluZm86OlBh
bmVsVHlwZVNwZWxsaW5nU3VnZ2VzdGlvbnM6IHsKQEAgLTI1MzUsNyArMjUzNSw3IEBAIHZvaWQg
RWRpdG9yOjpjb3JyZWN0aW9uUGFuZWxUaW1lckZpcmVkKFRpbWVyPEVkaXRvcj4qKQogICAgICAg
ICBtX2NvcnJlY3Rpb25QYW5lbEluZm8uaXNBY3RpdmUgPSB0cnVlOwogICAgICAgICBGbG9hdFJl
Y3QgYm91bmRpbmdCb3ggPSB3aW5kb3dSZWN0Rm9yUmFuZ2UobV9jb3JyZWN0aW9uUGFuZWxJbmZv
LnJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKTsKICAgICAgICAgaWYgKCFib3VuZGluZ0JveC5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICBjbGllbnQoKS0+c2hvd0NvcnJlY3Rpb25QYW5lbChtX2NvcnJl
Y3Rpb25QYW5lbEluZm8ucGFuZWxUeXBlLCBib3VuZGluZ0JveCwgbV9jb3JyZWN0aW9uUGFuZWxJ
bmZvLnJlcGxhY2VkU3RyaW5nLCB0b3BTdWdnZXN0aW9uLCBzdWdnZXN0aW9ucywgdGhpcyk7Cisg
ICAgICAgICAgICBjbGllbnQoKS0+c2hvd0NvcnJlY3Rpb25QYW5lbChtX2NvcnJlY3Rpb25QYW5l
bEluZm8ucGFuZWxUeXBlLCBib3VuZGluZ0JveCwgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJlcGxh
Y2VkU3RyaW5nLCB0b3BTdWdnZXN0aW9uLCBzdWdnZXN0aW9ucyk7CiAgICAgfQogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0yNjAxLDM5ICsyNjAxLDM3IEBAIHZvaWQgRWRpdG9yOjpzdG9wQ29y
cmVjdGlvblBhbmVsVGltZXIoKQogI2VuZGlmCiB9CiAKLXZvaWQgRWRpdG9yOjpoYW5kbGVDYW5j
ZWxPcGVyYXRpb24oKQordm9pZCBFZGl0b3I6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29u
Rm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb25Gb3JEaXNtaXNzaW5nKQogewogI2lm
IFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKICAgICBpZiAoIW1fY29ycmVjdGlvblBhbmVs
SW5mby5pc0FjdGl2ZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29ycmVjdGlvblBhbmVsSW5m
by5pc0FjdGl2ZSA9IGZhbHNlOworICAgIG1fY29ycmVjdGlvblBhbmVsSXNEaXNtaXNzZWRCeUVk
aXRvciA9IHRydWU7CiAgICAgaWYgKGNsaWVudCgpKQotICAgICAgICBjbGllbnQoKS0+ZGlzbWlz
c0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsQ2FuY2Vs
bGVkKTsKLSNlbmRpZgotfQotCi1ib29sIEVkaXRvcjo6aXNTaG93aW5nQ29ycmVjdGlvblBhbmVs
KCkKLXsKLSNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCi0gICAgaWYgKGNsaWVudCgp
KQotICAgICAgICByZXR1cm4gY2xpZW50KCktPmlzU2hvd2luZ0NvcnJlY3Rpb25QYW5lbCgpOwor
ICAgICAgICBjbGllbnQoKS0+ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChyZWFzb25Gb3JEaXNtaXNz
aW5nKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlYXNvbkZvckRpc21pc3NpbmcpOwogI2Vu
ZGlmCi0gICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEVkaXRvcjo6ZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbkZvckRpc21p
c3NpbmcpCitTdHJpbmcgRWRpdG9yOjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihSZWFzb25G
b3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbkZvckRpc21pc3NpbmcpCiB7CiAjaWYg
U1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTAogICAgIGlmICghbV9jb3JyZWN0aW9uUGFuZWxJ
bmZvLmlzQWN0aXZlKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
ICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8uaXNBY3RpdmUgPSBmYWxzZTsKICAgICBtX2NvcnJl
Y3Rpb25QYW5lbElzRGlzbWlzc2VkQnlFZGl0b3IgPSB0cnVlOwogICAgIGlmIChjbGllbnQoKSkK
LSAgICAgICAgY2xpZW50KCktPmRpc21pc3NDb3JyZWN0aW9uUGFuZWwocmVhc29uRm9yRGlzbWlz
c2luZyk7CisgICAgICAgIHJldHVybiBjbGllbnQoKS0+ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNv
b24ocmVhc29uRm9yRGlzbWlzc2luZyk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZWFzb25Gb3JEaXNtaXNzaW5nKTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAjZW5kaWYKIH0KKwogdm9pZCBFZGl0b3I6OnJlbW92ZVNwZWxsQW5k
Q29ycmVjdGlvbk1hcmtlcnNGcm9tV29yZHNUb0JlRWRpdGVkKGJvb2wgZG9Ob3RSZW1vdmVJZlNl
bGVjdGlvbkF0V29yZEJvdW5kYXJ5KQogewogICAgIC8vIFdlIHdhbnQgdG8gcmVtb3ZlIHRoZSBt
YXJrZXJzIGZyb20gYSB3b3JkIGlmIGFuIGVkaXRpbmcgY29tbWFuZCB3aWxsIGNoYW5nZSB0aGUg
d29yZC4gVGhpcyBjYW4gaGFwcGVuIGluIG9uZSBvZgpAQCAtMjc2OCw3ICsyNzY2LDcgQEAgYm9v
bCBFZGl0b3I6OmFwcGx5QXV0b2NvcnJlY3Rpb25CZWZvcmVUeXBpbmdJZkFwcHJvcHJpYXRlKCkK
ICAgICBQb3NpdGlvbiBjYXJldFBvc2l0aW9uID0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVj
dGlvbigpLnN0YXJ0KCk7CiAKICAgICBpZiAobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJhbmdlVG9C
ZVJlcGxhY2VkLT5lbmRQb3NpdGlvbigpID09IGNhcmV0UG9zaXRpb24pIHsKLSAgICAgICAgZGlz
bWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsQWNj
ZXB0ZWQpOworICAgICAgICBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQoZGlzbWlzc0NvcnJl
Y3Rpb25QYW5lbFNvb24oUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbEFjY2VwdGVk
KSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gCiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaAppbmRleCBlMWE3MTE5MjQ1ZTgzYmVkMTBkNzNkMjA1ZWZlMjE1NDA4NWM1NjllLi41ZmI0
OGM1ZDA1NmM1NTA5ZDdkYjJjNTMzN2I5ZmRjMzg4Y2I1OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKQEAgLTMyMCwxMSArMzIwLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRUb0tpbGxS
aW5nKFJhbmdlKiwgYm9vbCBwcmVwZW5kKTsKIAotICAgIHZvaWQgaGFuZGxlQ2FuY2VsT3BlcmF0
aW9uKCk7CiAgICAgdm9pZCBzdGFydENvcnJlY3Rpb25QYW5lbFRpbWVyKENvcnJlY3Rpb25QYW5l
bEluZm86OlBhbmVsVHlwZSk7CiAgICAgLy8gSWYgdXNlciBjb25maXJtZWQgYSBjb3JyZWN0aW9u
IGluIHRoZSBjb3JyZWN0aW9uIHBhbmVsLCBjb3JyZWN0aW9uIGhhcyBub24temVybyBsZW5ndGgs
IG90aGVyd2lzZSBpdCBtZWFucyB0aGF0IHVzZXIgaGFzIGRpc21pc3NlZCB0aGUgcGFuZWwuCiAg
ICAgdm9pZCBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQoY29uc3QgU3RyaW5nJiBjb3JyZWN0
aW9uKTsKLSAgICBib29sIGlzU2hvd2luZ0NvcnJlY3Rpb25QYW5lbCgpOwogCiAgICAgdm9pZCBw
YXN0ZUFzRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiwgYm9vbCBzbWFydFJl
cGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSk7CiAgICAgdm9pZCBwYXN0ZUFzUGxhaW5UZXh0KGNvbnN0
IFN0cmluZyYsIGJvb2wgc21hcnRSZXBsYWNlKTsKQEAgLTQyNSw2ICs0MjMsNyBAQCBwcml2YXRl
OgogICAgIE5vZGUqIGZpbmRFdmVudFRhcmdldEZyb21TZWxlY3Rpb24oKSBjb25zdDsKICAgICB2
b2lkIHN0b3BDb3JyZWN0aW9uUGFuZWxUaW1lcigpOwogICAgIHZvaWQgZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKKyAgICBTdHJpbmcg
ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25Q
YW5lbCk7CiAgICAgdm9pZCBhcHBseUNvcnJlY3Rpb25QYW5lbEluZm8oY29uc3QgVmVjdG9yPERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYgbWFya2VyVHlwZXNUb0FkZCk7CiAgICAgLy8gUmV0
dXJuIHRydWUgaWYgY29ycmVjdGlvbiB3YXMgYXBwbGllZCwgZmFsc2Ugb3RoZXJ3aXNlLgogICAg
IGJvb2wgYXBwbHlBdXRvY29ycmVjdGlvbkJlZm9yZVR5cGluZ0lmQXBwcm9wcmlhdGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDZlYTk5NTRkOTVkNjQ3
ZGE3ZmMzYmFlZjg3M2IyMWU2YzdhYzAxNzQuLjllYWZkMThiNTIyZDJiZmM2M2IxMmYyYTg4NTJm
ZDg3YjNlNTdjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApA
QCAtMTA5MSwxNCArMTA5MSw2IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVZYW5rQW5kU2VsZWN0KEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLSNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCi1zdGF0aWMgYm9v
bCBleGVjdXRlQ2FuY2VsT3BlcmF0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQotewotICAgIGZyYW1lLT5lZGl0b3IoKS0+aGFuZGxl
Q2FuY2VsT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYKLQogLy8gU3Vw
cG9ydGVkIGZ1bmN0aW9ucwogCiBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoRnJhbWUqKQpAQCAtMTI0
OSwxMyArMTI0MSw2IEBAIHN0YXRpYyBib29sIGVuYWJsZWRVbmRvKEZyYW1lKiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNh
blVuZG8oKTsKIH0KIAotI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKLXN0YXRpYyBi
b29sIGVuYWJsZWREaXNtaXNzQ29ycmVjdGlvblBhbmVsKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlKQotewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmlzU2hv
d2luZ0NvcnJlY3Rpb25QYW5lbCgpOwotfQotI2VuZGlmCi0KIC8vIFN0YXRlIGZ1bmN0aW9ucwog
CiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVOb25lKEZyYW1lKiwgRXZlbnQqKQpAQCAtMTUzMiwxMCAr
MTUxNyw2IEBAIHN0YXRpYyBjb25zdCBDb21tYW5kTWFwJiBjcmVhdGVDb21tYW5kTWFwKCkKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgICAgIHsgIlRha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbiIs
IHsgZXhlY3V0ZVRha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbiwgc3VwcG9ydGVkRnJvbU1lbnVP
cktleUJpbmRpbmcsIGVuYWJsZWRUYWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb24sIHN0YXRlTm9u
ZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRp
c2FibGVkIH0gfSwKICNlbmRpZgotCi0jaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTAot
ICAgICAgICB7ICJDYW5jZWxPcGVyYXRpb24iLCB7IGV4ZWN1dGVDYW5jZWxPcGVyYXRpb24sIHN1
cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkRGlzbWlzc0NvcnJlY3Rpb25QYW5l
bCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVj
dXRpb25XaGVuRGlzYWJsZWQgfSB9LAotI2VuZGlmCiAgICAgfTsKIAogICAgIC8vIFRoZXNlIHVu
c3VwcG9ydGVkIGNvbW1hbmRzIGFyZSBsaXN0ZWQgaGVyZSBzaW5jZSB0aGV5IGFwcGVhciBpbiB0
aGUgTWljcm9zb2Z0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggZWQ5MmYx
MTJjYmE4NzdmZDUyYzM0NjQwN2Y1YjRmZmUyNjEyMGY2Yy4uM2IwYWQyZTdhZDY0YjcwOTU5M2M4
ZDEzZjMwNDE4ZGNjZTUxZjBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApA
QCAtNTExLDkgKzUxMSw5IEBAIHB1YmxpYzoKICAgICBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENo
ZWNrZXIoKSB7IHJldHVybiAmbV90ZXh0Q2hlY2tlckNsaWVudDsgfQogCiAjaWYgU1VQUE9SVF9B
VVRPQ09SUkVDVElPTl9QQU5FTAotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVs
KENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBFZGl0b3IqKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChDb3JyZWN0aW9uUGFuZWxJ
bmZvOjpQYW5lbFR5cGUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc21p
c3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCkgeyB9
Ci0gICAgdmlydHVhbCBib29sIGlzU2hvd2luZ0NvcnJlY3Rpb25QYW5lbCgpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oUmVh
c29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlv
blJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9CiAjZW5kaWYK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0
IFN0cmluZyYsIGNvbnN0IEdyYW1tYXJEZXRhaWwmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL21hbnVhbC10ZXN0cy9hdXRvY29ycmVjdGlvbi9jbG9zZS13aW5kb3ctd2hlbi1jb3Jy
ZWN0aW9uLWlzLXNob3duLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvYXV0b2Nv
cnJlY3Rpb24vY2xvc2Utd2luZG93LXdoZW4tY29ycmVjdGlvbi1pcy1zaG93bi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVjODJhMjBmNTgxNWY3YTM3YzllNTk0Y2E3N2ZmNjIwOWEwNTQ4YjQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvYXV0b2NvcnJlY3Rpb24vY2xv
c2Utd2luZG93LXdoZW4tY29ycmVjdGlvbi1pcy1zaG93bi5odG1sCkBAIC0wLDAgKzEsNDggQEAK
KzxodG1sPgorPGhlYWQ+CisKKzxzdHlsZT4KKy5lZGl0aW5nIHsKKyAgICBib3JkZXI6IDJweCBz
b2xpZCByZWQ7CisgICAgcGFkZGluZzogMTJweDsKKyAgICBmb250LXNpemU6IDI0cHg7Cit9Cis8
L3N0eWxlPgorPHNjcmlwdCBzcmM9Li4vLi4vLi4vLi4vTGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0
aW5nLmpzIGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiID48L3Nj
cmlwdD4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIGVkaXRpbmdUZXN0KCkgeworICAgIHR5cGVDaGFy
YWN0ZXJDb21tYW5kKCd0Jyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2gnKTsKKyAgICB0
eXBlQ2hhcmFjdGVyQ29tbWFuZCgnZScpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCcgJyk7
CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ20nKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFu
ZCgnZScpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdzJyk7CisgICAgdHlwZUNoYXJhY3Rl
ckNvbW1hbmQoJ2EnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnZScpOworICAgIHR5cGVD
aGFyYWN0ZXJDb21tYW5kKCdnJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2UnKTsKKyAg
ICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnZScpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCcg
Jyk7CisgICAgZXhlY01vdmVTZWxlY3Rpb25CYWNrd2FyZEJ5Q2hhcmFjdGVyQ29tbWFuZCgpOwor
fQorCis8L3NjcmlwdD4KKworPHRpdGxlPlRlc3RpbmcgY2xvc2luZyB3aW5kb3cgd2hlbiBjb3Jy
ZWN0aW9uIHN1Z2dlc3Rpb24gaXMgc2hvd248L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
PjxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdoZW4gY29ycmVjdGlvbiBzdWdnZXN0aW9uIGlz
IHZpc2libGUsIGNsb3Npbmcgd2luZG93IGRvZXNuJ3QgaGFuZyBvciBjcmFzaC48L3A+Cis8cD5B
ZnRlciBzZWVpbmcgdGhlIHBhbmVsIHdpdGggbXVsdGlwbGUgY2FuZGlkYXRlcywgY2xvc2UgdGhl
IHdpbmRvdy48L3A+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZSBpZD0icm9vdCIgY2xhc3M9ImVkaXRp
bmciPgorPHNwYW4gaWQ9InRlc3QiPjwvc3Bhbj4KKzwvZGl2PgorCisKKzxzY3JpcHQ+CitydW5F
ZGl0aW5nVGVzdCgpOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0VkaXRvckNsaWVudC5oCmluZGV4IGQ1ZGU2YTQxMDJjYmQyNzY4ZGFjOWRhM2Y1ZjFhZDllY2Y4
MDNkNTAuLmFlZGE4NDQ1ODhjYTZlZjU1ZjA2ODIzNDI4NTM3MDM1OWM3YWE1MmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMTU4LDE0ICsxNTgsMTUgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSA9IDA7CiAKLSNpZiBT
VVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCiAgICAgZW51bSBBdXRvY29ycmVjdGlvblJlc3Bv
bnNlVHlwZSB7CiAgICAgICAgIEF1dG9jb3JyZWN0aW9uRWRpdGVkLAogICAgICAgICBBdXRvY29y
cmVjdGlvblJldmVydGVkCiAgICAgfTsKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25Q
YW5lbChDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91
bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHJlcGxhY21lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRl
cm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncywgRWRpdG9yKikgPSAwOworCisjaWYgU1VQUE9SVF9B
VVRPQ09SUkVDVElPTl9QQU5FTAorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVs
KENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGlu
Z0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0
aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCkgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBpc1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwoKSA9IDA7CisgICAgdmlydHVh
bCBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oUmVhc29uRm9yRGlzbWlzc2luZ0Nv
cnJlY3Rpb25QYW5lbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlv
blJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSA9IDA7CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAwM2UxODE2NWQ4NDZlNTcyNzUyNThhYjQ0OTEyOWM5ZjJiNjRhZGI2Li45
NDM5MTkxYzZhODczNjU3MjFkZjcyZjcxYzg4NjRlNjAxOThlNjIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDExLTAzLTE4ICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhvb2sgdXAgbmV3IEFwcEtp
dCBhdXRvY29ycmVjdGlvbiBVSSB3aXRoIFdLMi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84OTQ3
NDYzPgorCisgICAgICAgIFBsZWFzZSBzZWUgV2ViQ29yZS9DaGFuZ2VMb2cgZm9yIGRldGFpbC4K
KworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDExLTAz
LTE3ICBKZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgYSBjb25z
aXN0ZW50IHNldCBvZiBmaWxlIHBhdHRlcm5zIGluIHRoZSBzdm46aWdub3JlIHByb3BlcnR5IGZv
ciBhbGwgLnhjb2RlcHJvaiBkaXJlY3Rvcmllcywgc3BlY2lmaWNhbGx5OgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjBjMTU2Zjc5N2Ri
OTQwMjI4NGEwZDI1NTk1ZGNlYjk0NmE4ZjRkMy4uMDZhNTU2NjI3NDk4Nzg4YjRhNWU5NjAwYmYz
MDYxZTU1YTRmM2MxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0zNDQsNiArMzQ0LDggQEAKIAkJQjZDRTVDMjUxMDBCQzVGNTAwMjE5
OTM2IC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEI2ODA0OTcxMEZGQkNFQzEwMDlGN0Y2MiAvKiBXZWJBcHBsaWNh
dGlvbkNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQjgwNDE3NkYxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250ZW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCODA0MTc2RDEy
MTdBODMxMDA0NjZCQUUgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmQuaCAqLzsgfTsKIAkJQjgwNDE3
NzAxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250ZW5kLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjgwNDE3NkUxMjE3QTgzMTAwNDY2
QkFFIC8qIFdlYkluc3BlY3RvckZyb250ZW5kLm1tICovOyB9OworCQlCODI5NThEMzEzMjcwN0Qw
MDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCODI5NThEMTEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlv
blBhbmVsLmggKi87IH07CisJCUI4Mjk1OEQ0MTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9u
UGFuZWwubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
ODI5NThEMjEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLm1tICovOyB9OwogCQlC
QzI2QzY5RTEwQjc0M0Y0MDBCNjg3RUQgLyogV2ViU2VyaWFsaXplZEpTVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjZDNjlEMTBCNzQzRjQw
MEI2ODdFRCAvKiBXZWJTZXJpYWxpemVkSlNWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMjZDNkE1MTBCNzQ0N0EwMEI2ODdFRCAvKiBX
ZWJTZXJpYWxpemVkSlNWYWx1ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMjZDNkE0MTBCNzQ0N0EwMEI2ODdFRCAvKiBXZWJTZXJpYWxpemVkSlNW
YWx1ZS5tbSAqLzsgfTsKIAkJQkMyRTQ2NEQwRkQ4QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdEYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJFNDY0
QjBGRDhBOTY4MDBBOUQ5REUgLyogV2ViVmlld0RhdGEuaCAqLzsgfTsKQEAgLTY2MCw2ICs2NjIs
OCBAQAogCQlCNjgwNDk3MjBGRkJDRUMxMDA5RjdGNjIgLyogV2ViQXBwbGljYXRpb25DYWNoZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkFwcGxpY2F0aW9u
Q2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4MDQxNzZEMTIxN0E4MzEw
MDQ2NkJBRSAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJJbnNwZWN0b3JGcm9udGVuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCODA0MTc2RTEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JG
cm9udGVuZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjgyOTU4RDExMzI3MDdE
MDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb3JyZWN0aW9uUGFuZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QjgyOTU4RDIxMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvcnJlY3Rpb25QYW5lbC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyNkM2OUQxMEI3NDNGNDAwQjY4N0VEIC8qIFdlYlNl
cmlhbGl6ZWRKU1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNl
cmlhbGl6ZWRKU1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjZDNkE0
MTBCNzQ0N0EwMEI2ODdFRCAvKiBXZWJTZXJpYWxpemVkSlNWYWx1ZS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJFNDY0QjBGRDhBOTY4MDBBOUQ5REUgLyogV2Vi
Vmlld0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVmlld0RhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTUsNiArMTI5OSw4IEBACiAJCUY1
QjM2QjQwMDI4MURFODcwMTg2MzVDQiAvKiBXZWJDb3JlU3VwcG9ydCAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQjgyOTU4RDExMzI3MDdEMDAwMEQwRTc5
IC8qIENvcnJlY3Rpb25QYW5lbC5oICovLAorCQkJCUI4Mjk1OEQyMTMyNzA3RDAwMDBEMEU3OSAv
KiBDb3JyZWN0aW9uUGFuZWwubW0gKi8sCiAJCQkJNTk4QUQ5MUQxMjAxQ0VDRjAwQUJBRTRFIC8q
IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50Lm1tICovLAogCQkJCTU5OEFEOTE5MTIwMUNFQzkw
MEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oICovLAogCQkJCUI2ODA0OTcx
MEZGQkNFQzEwMDlGN0Y2MiAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmggKi8sCkBAIC0xNjQ1LDYg
KzE2NTEsNyBAQAogCQkJCTNBRTE1RDUwMTJEQkRFRDQwMDkzMjNDOCAvKiBXZWJTdG9yYWdlTWFu
YWdlckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzQUJCM0M3QTEzMDlDM0I1MDBFOTNE
OTQgLyogV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDJE
MzI0MTMxRUQxRTAwMDc1RkE0QiAvKiBXZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQjgyOTU4RDMxMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25Q
YW5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDE1LDYgKzIwMjIsNyBAQAogCQkJCUNEQTYyQUUz
MTI1Rjg3QzIwMDdGRDExOCAvKiBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTNBQkIzQzdCMTMwOUMzQjUwMEU5M0Q5NCAvKiBXZWJTdG9yYWdlVHJhY2tlckNs
aWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNDJEMzREMTMxRUQzODgwMDc1RkE0QiAvKiBX
ZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5tbSBpbiBTb3VyY2VzICovLAorCQkJCUI4Mjk1
OEQ0MTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwppbmRleCBmYjRjM2FlMWY4OGZmN2IyYWRhN2RmY2YyNWJkY2E1MjMwNmU0
NTM2Li4yNWFkMzY5ZjYxNDcxN2JjNTY2ZGE5NDdjN2JiOGY0OTdmMDAyNWRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDMtMTggIEppYSBQdSAgPGpwdUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9v
ayB1cCBuZXcgQXBwS2l0IGF1dG9jb3JyZWN0aW9uIFVJIHdpdGggV0syLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwNTUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzg5NDc0NjM+CisKKyAgICAgICAgUGxlYXNlIHNlZSBXZWJDb3JlL0NoYW5nZUxv
ZyBmb3IgZGV0YWlsLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVs
Lmg6IEFkZGVkLgorICAgICAgICAoQ29ycmVjdGlvblBhbmVsOjppc1Nob3dpbmcpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbTogQWRkZWQuCisgICAgICAgIChj
b3JyZWN0aW9uQnViYmxlVHlwZSk6CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6OkNvcnJlY3Rp
b25QYW5lbCk6CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6On5Db3JyZWN0aW9uUGFuZWwpOgor
ICAgICAgICAoQ29ycmVjdGlvblBhbmVsOjpzaG93KToKKyAgICAgICAgKENvcnJlY3Rpb25QYW5l
bDo6ZGlzbWlzcyk6CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3NTb29uKToKKyAg
ICAgICAgKENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzc0ludGVybmFsKToKKyAgICAgICAgKENvcnJl
Y3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpXZWJFZGl0b3JD
bGllbnQpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKToK
KyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbCk6CisgICAg
ICAgIChXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKToKKyAgICAg
ICAgKFdlYkVkaXRvckNsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGhhbmRsZUNvcnJl
Y3Rpb25QYW5lbFJlc3VsdDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6
CisKIDIwMTEtMDMtMTcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0OGIwOWMxNDA0Yzkw
Mjc4Mjk1ZDBlNWY5MTg4N2ZjNzg4YTgzOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwuaApAQCAtMCwwICsxLDYxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBDb3JyZWN0aW9uUGFuZWxfaAorI2RlZmluZSBDb3JyZWN0
aW9uUGFuZWxfaAorCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybS5oPgorI2ltcG9y
dCA8SmF2YVNjcmlwdENvcmUvUmV0YWluUHRyLmg+CisKKyNpZiAhZGVmaW5lZChCVUlMRElOR19P
Tl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fU05PV19MRU9QQVJEKQorI2ltcG9ydCA8QXBwS2l0L05TVGV4dENoZWNrZXIuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvQ29ycmVjdGlvblBhbmVsSW5mby5oPgorCitAY2xhc3MgV2ViVmll
dzsKKworY2xhc3MgQ29ycmVjdGlvblBhbmVsIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
b3JyZWN0aW9uUGFuZWwpOworcHVibGljOgorICAgIENvcnJlY3Rpb25QYW5lbCgpOworICAgIH5D
b3JyZWN0aW9uUGFuZWwoKTsKKyAgICB2b2lkIHNob3coV2ViVmlldyosIFdlYkNvcmU6OkNvcnJl
Y3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3Vu
ZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlZFN0cmlu
ZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CisgICAgdm9pZCBkaXNt
aXNzKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOworICAgIFdU
Rjo6U3RyaW5nIGRpc21pc3NTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0
aW9uUGFuZWwpOworICAgIHN0YXRpYyB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2Uo
V2ViVmlldyosIE5TQ29ycmVjdGlvblJlc3BvbnNlLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFj
ZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CisKK3ByaXZh
dGU6CisgICAgYm9vbCBpc1Nob3dpbmcoKSBjb25zdCB7IHJldHVybiBtX3ZpZXc7IH0KKyAgICB2
b2lkIGRpc21pc3NJbnRlcm5hbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlv
blBhbmVsLCBib29sIGRpc21pc3NpbmdFeHRlcm5hbGx5KTsKKworICAgIGJvb2wgbV93YXNEaXNt
aXNzZWRFeHRlcm5hbGx5OworICAgIFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0
aW9uUGFuZWwgbV9yZWFzb25Gb3JEaXNtaXNzaW5nOworICAgIFdURjo6UmV0YWluUHRyPFdlYlZp
ZXc+IG1fdmlldzsKKyAgICBXVEY6OlJldGFpblB0cjxOU1N0cmluZz4gbV9yZXN1bHRGb3JTeW5j
aHJvbm91c0Rpc21pc3NhbDsKKyAgICBXVEY6OlJldGFpblB0cjxOU0NvbmRpdGlvbj4gbV9yZXN1
bHRDb25kaXRpb247Cit9OworCisjZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKKworI2VuZGlmIC8vIENvcnJlY3Rpb25QYW5lbF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODc2OGYxMjJkMTRkZjcyMmE4ODg5ZDNiM2QwYjQwNTM3OTE3ODc2NwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5l
bC5tbQpAQCAtMCwwICsxLDE1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaW1wb3J0ICJDb3JyZWN0aW9uUGFu
ZWwuaCIKKyNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCisKKyNpZiAhZGVmaW5lZChCVUlMRElO
R19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQo
QlVJTERJTkdfT05fU05PV19MRU9QQVJEKQordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2lu
ZyBuYW1lc3BhY2UgV1RGOworCitzdGF0aWMgaW5saW5lIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGUg
Y29ycmVjdGlvbkJ1YmJsZVR5cGUoQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlIHBhbmVs
VHlwZSkKK3sKKyAgICBzd2l0Y2ggKHBhbmVsVHlwZSkgeworICAgIGNhc2UgQ29ycmVjdGlvblBh
bmVsSW5mbzo6UGFuZWxUeXBlQ29ycmVjdGlvbjoKKyAgICAgICAgcmV0dXJuIE5TQ29ycmVjdGlv
bkJ1YmJsZVR5cGVDb3JyZWN0aW9uOworICAgIGNhc2UgQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFu
ZWxUeXBlUmV2ZXJzaW9uOgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uQnViYmxlVHlwZVJl
dmVyc2lvbjsKKyAgICBjYXNlIENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZVNwZWxsaW5n
U3VnZ2VzdGlvbnM6CisgICAgICAgIHJldHVybiBOU0NvcnJlY3Rpb25CdWJibGVUeXBlR3Vlc3Nl
czsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE5TQ29ycmVj
dGlvbkJ1YmJsZVR5cGVDb3JyZWN0aW9uOworfQorCitDb3JyZWN0aW9uUGFuZWw6OkNvcnJlY3Rp
b25QYW5lbCgpCisgICAgOiBtX3dhc0Rpc21pc3NlZEV4dGVybmFsbHkoZmFsc2UpCisgICAgLCBt
X3JlYXNvbkZvckRpc21pc3NpbmcoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbEln
bm9yZWQpCit7CisgICAgbV9yZXN1bHRDb25kaXRpb24uYWRvcHROUyhbW05TQ29uZGl0aW9uIGFs
bG9jXSBpbml0XSk7Cit9CisKK0NvcnJlY3Rpb25QYW5lbDo6fkNvcnJlY3Rpb25QYW5lbCgpCit7
CisgICAgZGlzbWlzc0ludGVybmFsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxJ
Z25vcmVkLCBmYWxzZSk7Cit9CisKK3ZvaWQgQ29ycmVjdGlvblBhbmVsOjpzaG93KFdlYlZpZXcq
IHZpZXcsIENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSB0eXBlLCBjb25zdCBGbG9hdFJl
Y3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0
cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQoreworICAgIGRpc21pc3NJbnRlcm5h
bChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsSWdub3JlZCwgZmFsc2UpOworICAg
IAorICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNTdHJpbmcqIHJlcGxh
Y2VkU3RyaW5nQXNOU1N0cmluZyA9IHJlcGxhY2VkU3RyaW5nOworICAgIE5TU3RyaW5nKiByZXBs
YWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgPSByZXBsYWNlbWVudFN0cmluZzsKKyAgICBtX3ZpZXcg
PSB2aWV3OworICAgIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGUgYnViYmxlVHlwZSA9IGNvcnJlY3Rp
b25CdWJibGVUeXBlKHR5cGUpOworICAgIAorICAgIE5TTXV0YWJsZUFycmF5KiBhbHRlcm5hdGl2
ZVN0cmluZ3MgPSAwOworICAgIGlmICghYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MuaXNF
bXB0eSgpKSB7CisgICAgICAgIHNpemVfdCBzaXplID0gYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0
cmluZ3Muc2l6ZSgpOworICAgICAgICBhbHRlcm5hdGl2ZVN0cmluZ3MgPSBbTlNNdXRhYmxlQXJy
YXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2l6ZV07CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgW2FsdGVybmF0aXZlU3RyaW5ncyBhZGRPYmplY3Q6
KE5TU3RyaW5nKilhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5nc1tpXV07CisgICAgfQorCisg
ICAgTlNTcGVsbENoZWNrZXIqIHNwZWxsQ2hlY2tlciA9IFtOU1NwZWxsQ2hlY2tlciBzaGFyZWRT
cGVsbENoZWNrZXJdOworICAgIE5TSW50ZWdlciBkb2N1bWVudFRhZyA9IFt2aWV3IHNwZWxsQ2hl
Y2tlckRvY3VtZW50VGFnXTsKKyAgICBbc3BlbGxDaGVja2VyIHNob3dDb3JyZWN0aW9uQnViYmxl
T2ZUeXBlOmJ1YmJsZVR5cGUgcHJpbWFyeVN0cmluZzpyZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJp
bmcgYWx0ZXJuYXRpdmVTdHJpbmdzOmFsdGVybmF0aXZlU3RyaW5ncyBmb3JTdHJpbmdJblJlY3Q6
Ym91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nIHZpZXc6bV92aWV3LmdldCgpIGNvbXBsZXRpb25I
YW5kbGVyOl4oTlNTdHJpbmcqIGFjY2VwdGVkU3RyaW5nKSB7CisgICAgICAgIHN3aXRjaCAoYnVi
YmxlVHlwZSkgeworICAgICAgICBjYXNlIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVDb3JyZWN0aW9u
OgorICAgICAgICAgICAgaWYgKGFjY2VwdGVkU3RyaW5nKQorICAgICAgICAgICAgICAgIFtzcGVs
bENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZCB0b0Nv
cnJlY3Rpb246YWNjZXB0ZWRTdHJpbmcgZm9yV29yZDpyZXBsYWNlZFN0cmluZ0FzTlNTdHJpbmcg
bGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCFtX3dhc0Rpc21pc3NlZEV4dGVybmFs
bHkgfHwgbV9yZWFzb25Gb3JEaXNtaXNzaW5nID09IFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0
aW9uUGFuZWxDYW5jZWxsZWQpCisgICAgICAgICAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVj
b3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VSZWplY3RlZCB0b0NvcnJlY3Rpb246cmVw
bGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nIGZvcldvcmQ6cmVwbGFjZWRTdHJpbmdBc05TU3RyaW5n
IGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFnXTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3Jk
UmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VJZ25vcmVkIHRvQ29ycmVjdGlvbjpyZXBsYWNl
bWVudFN0cmluZ0FzTlNTdHJpbmcgZm9yV29yZDpyZXBsYWNlZFN0cmluZ0FzTlNTdHJpbmcgbGFu
Z3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxl
VHlwZVJldmVyc2lvbjoKKyAgICAgICAgICAgIGlmIChhY2NlcHRlZFN0cmluZykKKyAgICAgICAg
ICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNl
UmV2ZXJ0ZWQgdG9Db3JyZWN0aW9uOnJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyBmb3JXb3JkOmFj
Y2VwdGVkU3RyaW5nIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50
VGFnXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5TQ29ycmVjdGlvbkJ1YmJs
ZVR5cGVHdWVzc2VzOgorICAgICAgICAgICAgaWYgKGFjY2VwdGVkU3RyaW5nKQorICAgICAgICAg
ICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VB
Y2NlcHRlZCB0b0NvcnJlY3Rpb246YWNjZXB0ZWRTdHJpbmcgZm9yV29yZDpyZXBsYWNlZFN0cmlu
Z0FzTlNTdHJpbmcgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRU
YWddOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV93YXNE
aXNtaXNzZWRFeHRlcm5hbGx5KSB7CisgICAgICAgICAgICBbbV9yZXN1bHRDb25kaXRpb24uZ2V0
KCkgbG9ja107CisgICAgICAgICAgICBpZiAoYWNjZXB0ZWRTdHJpbmcpCisgICAgICAgICAgICAg
ICAgbV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rpc21pc3NhbC5hZG9wdE5TKFthY2NlcHRlZFN0cmlu
ZyBjb3B5XSk7CisgICAgICAgICAgICBbbV9yZXN1bHRDb25kaXRpb24uZ2V0KCkgc2lnbmFsXTsK
KyAgICAgICAgICAgIFttX3Jlc3VsdENvbmRpdGlvbi5nZXQoKSB1bmxvY2tdOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIFttX3ZpZXcuZ2V0KCkgaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVz
dWx0OmFjY2VwdGVkU3RyaW5nXTsKKyAgICB9XTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWw6
OmRpc21pc3MoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24pCit7Cisg
ICAgZGlzbWlzc0ludGVybmFsKHJlYXNvbiwgdHJ1ZSk7Cit9CisKK1N0cmluZyBDb3JyZWN0aW9u
UGFuZWw6OmRpc21pc3NTb29uKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVh
c29uKQoreworICAgIGlmICghaXNTaG93aW5nKCkpIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZygp
OworICAgIH0KKyAgICBkaXNtaXNzSW50ZXJuYWwocmVhc29uLCB0cnVlKTsKKyAgICBbbV9yZXN1
bHRDb25kaXRpb24uZ2V0KCkgbG9ja107CisgICAgd2hpbGUgKCFtX3Jlc3VsdEZvclN5bmNocm9u
b3VzRGlzbWlzc2FsKQorICAgICAgICBbbV9yZXN1bHRDb25kaXRpb24uZ2V0KCkgd2FpdF07Cisg
ICAgW21fcmVzdWx0Q29uZGl0aW9uLmdldCgpIHVubG9ja107CisgICAgcmV0dXJuIG1fcmVzdWx0
Rm9yU3luY2hyb25vdXNEaXNtaXNzYWwuZ2V0KCk7Cit9CisKK3ZvaWQgQ29ycmVjdGlvblBhbmVs
OjpkaXNtaXNzSW50ZXJuYWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25Q
YW5lbCByZWFzb24sIGJvb2wgZGlzbWlzc2luZ0V4dGVybmFsbHkpCit7CisgICAgbV93YXNEaXNt
aXNzZWRFeHRlcm5hbGx5ID0gZGlzbWlzc2luZ0V4dGVybmFsbHk7CisgICAgaWYgKCFpc1Nob3dp
bmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fcmVhc29uRm9yRGlzbWlzc2luZyA9
IHJlYXNvbjsKKyAgICBtX3Jlc3VsdEZvclN5bmNocm9ub3VzRGlzbWlzc2FsLmNsZWFyKCk7Cisg
ICAgaWYgKHJlYXNvbiA9PSBSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsQWNjZXB0
ZWQpCisgICAgICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBkaXNtaXNz
Q29ycmVjdGlvbkJ1YmJsZUZvclZpZXc6bV92aWV3LmdldCgpXTsKKyAgICBlbHNlCisgICAgICAg
IFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBjYW5jZWxDb3JyZWN0aW9uQnVi
YmxlRm9yVmlldzptX3ZpZXcuZ2V0KCldOworICAgIG1fdmlldy5jbGVhcigpOworfQorCit2b2lk
IENvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShXZWJWaWV3KiB2
aWV3LCBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSwgY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKK3sKKyAgICBbW05TU3Bl
bGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gcmVjb3JkUmVzcG9uc2U6cmVzcG9uc2UgdG9D
b3JyZWN0aW9uOnJlcGxhY2VtZW50U3RyaW5nIGZvcldvcmQ6cmVwbGFjZWRTdHJpbmcgbGFuZ3Vh
Z2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6W3ZpZXcgc3BlbGxDaGVja2VyRG9jdW1lbnRU
YWddXTsKK30KKworI2VuZGlmIC8vICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVm
aW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xF
T1BBUkQpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKaW5kZXggMWZhMTMyYWQ2YzViZDQzNzlmZTBiYjg1YzllNmZmMGQ2NmIxMTcz
NS4uZmFjZTE1ZWY1ZDY3NDkyMTk4MzUwYjMwMTY0NTY3MTFlMmU3ZWMxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTI3
LDcgKzI3LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3Iu
aD4KKyNpbXBvcnQgIkNvcnJlY3Rpb25QYW5lbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3JD
bGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dENoZWNrZXJDbGllbnQuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTE0MCw5ICsxNDAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBj
b25zdCBXVEY6OlN0cmluZyYpOwogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9X
X0xFT1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6
Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
IGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFdURjo6
VmVjdG9yPFdURjo6U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MsIFdlYkNv
cmU6OkVkaXRvciopOworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNv
cmU6OkNvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBs
YWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBX
VEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25G
b3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTaG93aW5n
Q29ycmVjdGlvblBhbmVsKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBkaXNtaXNzQ29ycmVj
dGlvblBhbmVsU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVs
KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29y
cmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBj
b25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogI2VuZGlmCiBwcml2YXRlOgpA
QCAtMTU0LDggKzE1NCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhdmVVbmRvUmVkb09wZXJh
dGlvbnM7CiAKICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQot
ICAgIEJPT0wgbV9jb3JyZWN0aW9uUGFuZWxJc1Nob3duOwotICAgIEJPT0wgbV9jb3JyZWN0aW9u
UGFuZWxJc0Rpc21pc3NlZEV4dGVybmFsbHk7Ci0gICAgV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlz
c2luZ0NvcnJlY3Rpb25QYW5lbCBtX3JlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWw7
CisgICAgQ29ycmVjdGlvblBhbmVsIG1fY29ycmVjdGlvblBhbmVsOwogI2VuZGlmCiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
CmluZGV4IDY5ZGQ1NzQ3MzFiNDRiNDMwYzI3NDU4ZTcyM2I0MWM0ZGU1MTc0YjAuLjRjZTJmZjMx
MmRmOGMxYTQ5NDAxZDY2MjlmY2MzYWNkNTU5N2VmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTIwMiw5ICsyMDIs
NiBAQCBXZWJFZGl0b3JDbGllbnQ6OldlYkVkaXRvckNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQog
ICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiAgICAgLCBtX3VuZG9UYXJnZXQoW1tbV2ViRWRpdG9y
VW5kb1RhcmdldCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdKQogICAgICwgbV9oYXZlVW5kb1Jl
ZG9PcGVyYXRpb25zKGZhbHNlKQotI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9X
X0xFT1BBUkQpCi0gICAgLCBtX2NvcnJlY3Rpb25QYW5lbElzU2hvd24oZmFsc2UpCi0jZW5kaWYK
IHsKIH0KIApAQCAtODkxLDczICs4ODgsMjQgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwZGF0
ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmIGJhZEdyYW1tYXIKIH0K
IAogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi12b2lkIFdl
YkVkaXRvckNsaWVudDo6c2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFu
ZWxJbmZvOjpQYW5lbFR5cGUgcGFuZWxUeXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94
T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZl
UmVwbGFjZW1lbnRTdHJpbmdzLCBFZGl0b3IqIGVkaXRvcikgewotICAgIGRpc21pc3NDb3JyZWN0
aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbElnbm9yZWQpOwotCi0g
ICAgLy8gTmVlZCB0byBleHBsaWNpdGx5IHVzZSB0aGVzZSBsb2NhbCBOU1N0cmluZyBvYmplY3Rz
LCBiZWNhdXNlIHRoZSBDKysgcmVmZXJlbmNlcyBtYXkgYmUgaW52YWxpZGF0ZWQgYnkgdGhlIHRp
bWUgdGhlIGJsb2NrIGJlbG93IGlzIGV4ZWN1dGVkLgotICAgIE5TU3RyaW5nICpyZXBsYWNlZFN0
cmluZ0FzTlNTdHJpbmcgPSByZXBsYWNlZFN0cmluZzsKLSAgICBOU1N0cmluZyAqcmVwbGFjZW1l
bnRTdHJpbmdBc05TU3RyaW5nID0gcmVwbGFjZW1lbnRTdHJpbmc7Ci0KLSAgICBtX2NvcnJlY3Rp
b25QYW5lbElzU2hvd24gPSBZRVM7Ci0gICAgbV9jb3JyZWN0aW9uUGFuZWxJc0Rpc21pc3NlZEV4
dGVybmFsbHkgPSBOTzsKLSAgICBtX3JlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwg
PSBSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsSWdub3JlZDsKLQotICAgIE5TQ29y
cmVjdGlvbkJ1YmJsZVR5cGUgYnViYmxlVHlwZSA9IGNvcnJlY3Rpb25CdWJibGVUeXBlKHBhbmVs
VHlwZSk7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKmFsdGVybmF0aXZlU3RyaW5ncyA9IG5pbDsKLSAg
ICBpZiAoIWFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLmlzRW1wdHkoKSkgewotICAgICAg
ICBzaXplX3Qgc2l6ZSA9IGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLnNpemUoKTsKLSAg
ICAgICAgYWx0ZXJuYXRpdmVTdHJpbmdzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFj
aXR5OnNpemVdOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAg
ICAgICAgICAgIFthbHRlcm5hdGl2ZVN0cmluZ3MgYWRkT2JqZWN0OihOU1N0cmluZyopYWx0ZXJu
YXRpdmVSZXBsYWNlbWVudFN0cmluZ3NbaV1dOwotICAgIH0KLSAgICBOU1NwZWxsQ2hlY2tlciAq
c3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl07Ci0gICAg
W1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHNob3dDb3JyZWN0aW9uQnViYmxl
T2ZUeXBlOmJ1YmJsZVR5cGUgcHJpbWFyeVN0cmluZzpyZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJp
bmcgYWx0ZXJuYXRpdmVTdHJpbmdzOmFsdGVybmF0aXZlU3RyaW5ncyBmb3JTdHJpbmdJblJlY3Q6
Ym91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nIHZpZXc6bV93ZWJWaWV3IGNvbXBsZXRpb25IYW5k
bGVyOl4oTlNTdHJpbmcgKmFjY2VwdGVkU3RyaW5nKSB7Ci0gICAgICAgIHN3aXRjaCAoYnViYmxl
VHlwZSkgewotICAgICAgICBjYXNlIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVDb3JyZWN0aW9uOgot
ICAgICAgICAgICAgaWYgKGFjY2VwdGVkU3RyaW5nKQotICAgICAgICAgICAgICAgIFtzcGVsbENo
ZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZCB0b0NvcnJl
Y3Rpb246YWNjZXB0ZWRTdHJpbmcgZm9yV29yZDpyZXBsYWNlZFN0cmluZ0FzTlNTdHJpbmcgbGFu
Z3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWco
KV07Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoIW1fY29ycmVjdGlv
blBhbmVsSXNEaXNtaXNzZWRFeHRlcm5hbGx5IHx8IG1fcmVhc29uRm9yRGlzbWlzc2luZ0NvcnJl
Y3Rpb25QYW5lbCA9PSBSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsQ2FuY2VsbGVk
KQotICAgICAgICAgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29y
cmVjdGlvblJlc3BvbnNlUmVqZWN0ZWQgdG9Db3JyZWN0aW9uOnJlcGxhY2VtZW50U3RyaW5nQXNO
U1N0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyBsYW5ndWFnZTpuaWwgaW5T
cGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpXTsKLSAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVz
cG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VJZ25vcmVkIHRvQ29ycmVjdGlvbjpyZXBsYWNlbWVu
dFN0cmluZ0FzTlNTdHJpbmcgZm9yV29yZDpyZXBsYWNlZFN0cmluZ0FzTlNTdHJpbmcgbGFuZ3Vh
Z2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKV07
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOU0NvcnJl
Y3Rpb25CdWJibGVUeXBlUmV2ZXJzaW9uOgotICAgICAgICAgICAgaWYgKGFjY2VwdGVkU3RyaW5n
KQotICAgICAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0
aW9uUmVzcG9uc2VSZXZlcnRlZCB0b0NvcnJlY3Rpb246cmVwbGFjZWRTdHJpbmdBc05TU3RyaW5n
IGZvcldvcmQ6YWNjZXB0ZWRTdHJpbmcgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhU
YWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKV07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBOU0NvcnJlY3Rpb25CdWJibGVUeXBlR3Vlc3NlczoKLSAgICAgICAgICAgIGlmIChh
Y2NlcHRlZFN0cmluZykKLSAgICAgICAgICAgICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNw
ZWxsQ2hlY2tlcl0gcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZCB0
b0NvcnJlY3Rpb246YWNjZXB0ZWRTdHJpbmcgZm9yV29yZDpyZXBsYWNlZFN0cmluZ0FzTlNTdHJp
bmcgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6W21fd2ViVmlldyBzcGVsbENo
ZWNrZXJEb2N1bWVudFRhZ11dOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgZWRpdG9yLT5oYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQoU3RyaW5nKGFjY2VwdGVkU3Ry
aW5nKSk7Ci0gICAgfV07Cit2b2lkIFdlYkVkaXRvckNsaWVudDo6c2hvd0NvcnJlY3Rpb25QYW5l
bChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUgcGFuZWxUeXBlLCBjb25z
dCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSB7CisgICAgbV9jb3Jy
ZWN0aW9uUGFuZWwuc2hvdyhtX3dlYlZpZXcsIHBhbmVsVHlwZSwgYm91bmRpbmdCb3hPZlJlcGxh
Y2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZl
UmVwbGFjZW1lbnRTdHJpbmdzKTsKIH0KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3ND
b3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb25G
b3JEaXNtaXNzaW5nKQogewotICAgIGlmIChpc1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwoKSkgewot
ICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbElzRGlzbWlzc2VkRXh0ZXJuYWxseSA9IFlFUzsKLSAg
ICAgICAgbV9yZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsID0gcmVhc29uRm9yRGlz
bWlzc2luZzsKLSAgICAgICAgaWYgKHJlYXNvbkZvckRpc21pc3NpbmcgPT0gUmVhc29uRm9yRGlz
bWlzc2luZ0NvcnJlY3Rpb25QYW5lbEFjY2VwdGVkKQotICAgICAgICAgICAgW1tOU1NwZWxsQ2hl
Y2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGRpc21pc3NDb3JyZWN0aW9uQnViYmxlRm9yVmlldzpt
X3dlYlZpZXddOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBbW05TU3BlbGxDaGVja2VyIHNo
YXJlZFNwZWxsQ2hlY2tlcl0gY2FuY2VsQ29ycmVjdGlvbkJ1YmJsZUZvclZpZXc6bV93ZWJWaWV3
XTsKLSAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJc1Nob3duID0gTk87Ci0gICAgfQorICAgIG1f
Y29ycmVjdGlvblBhbmVsLmRpc21pc3MocmVhc29uRm9yRGlzbWlzc2luZyk7CiB9CiAKLWJvb2wg
V2ViRWRpdG9yQ2xpZW50Ojppc1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwoKQorU3RyaW5nIFdlYkVk
aXRvckNsaWVudDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oUmVhc29uRm9yRGlzbWlzc2lu
Z0NvcnJlY3Rpb25QYW5lbCByZWFzb25Gb3JEaXNtaXNzaW5nKQogewotICAgIHJldHVybiBtX2Nv
cnJlY3Rpb25QYW5lbElzU2hvd247CisgICAgcmV0dXJuIG1fY29ycmVjdGlvblBhbmVsLmRpc21p
c3NTb29uKHJlYXNvbkZvckRpc21pc3NpbmcpOwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6
cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9u
UmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywg
Y29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKIHsKLSAgICBOU0NvcnJlY3Rpb25SZXNw
b25zZSBzcGVsbENoZWNrZXJSZXNwb25zZSA9IHJlc3BvbnNlVHlwZSA9PSBFZGl0b3JDbGllbnQ6
OkF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQgPyBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkIDog
TlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7Ci0gICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRT
cGVsbENoZWNrZXJdIHJlY29yZFJlc3BvbnNlOnNwZWxsQ2hlY2tlclJlc3BvbnNlIHRvQ29ycmVj
dGlvbjpyZXBsYWNlbWVudFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nIGxhbmd1YWdlOm5p
bCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOlttX3dlYlZpZXcgc3BlbGxDaGVja2VyRG9jdW1lbnRU
YWddXTsKKyAgICBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSA9IHJlc3BvbnNlVHlwZSA9
PSBFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQgPyBOU0NvcnJlY3Rpb25SZXNw
b25zZVJldmVydGVkIDogTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7CisgICAgQ29ycmVjdGlv
blBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKG1fd2ViVmlldywgcmVzcG9uc2Us
IHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGEwNWE5ODcyZmNjNDViYTYzN2QzMGNlZTU3
NjU2NDM2MDdjYmU4MzcuLjNkNjBjZGQwNTM3OThjZWRmOWQwN2EzNmRkODkwODY2MmJlZDQwOGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTUzMTEsNiArNTMxMSwxNiBA
QCBzdGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpTVmFsdWUoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIGpzVmFsdQogCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEJVSUxE
SU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCistICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5l
bFJlc3VsdDooTlNTdHJpbmcqKXJlc3VsdAoreworICAgIFdlYkZyYW1lICp3ZWJGcmFtZSA9IFtz
ZWxmIF9zZWxlY3RlZE9yTWFpbkZyYW1lXTsKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh3
ZWJGcmFtZSk7CisgICAgaWYgKGNvcmVGcmFtZSkKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3Io
KS0+aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KHJlc3VsdCk7Cit9CisjZW5kaWYKKwogQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld1VuZG9hYmxlRWRpdGluZykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCBhNGVhODA5YjAw
MWRiYzZhNjcyMzRmMTcyZjAyMGJjMzRjZjdlODRjLi5jYjk0ODUxMzdkYjA2ZjkxZjY5ZDEzYWEw
NzQzMjUyZGRmYzRlNWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJp
dmF0ZS5oCkBAIC02NDQsNyArNjQ0LDkgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBB
UEkuCiAtICh2b2lkKXNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ6KEJPT0wp
ZmxhZzsKIC0gKHZvaWQpdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uOihpZClzZW5k
ZXI7CiAjZW5kaWYKLQorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BB
UkQpCistICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcqKXJlc3Vs
dDsKKyNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdFZGl0aW5nSW5N
YWlsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDc1NDhhOWZkM2FhMTA4OTM2OWIwOTRiZTU1OTRmNjAxMTVlYzI4
NzUuLmM3NWM5OGU1Zjg5YWY4ZDY0ZWI5ZTdjOGFkYWE0Y2IzOTNmMDdiYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1OSBAQAorMjAxMS0wMy0xOCAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIb29rIHVwIG5l
dyBBcHBLaXQgYXV0b2NvcnJlY3Rpb24gVUkgd2l0aCBXSzIuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA1NQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODk0NzQ2Mz4KKworICAgICAgICBQbGVhc2Ugc2VlIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBk
ZXRhaWwuCisKKyAgICAgICAgVGhlIGNhbGxzIHRvIEFwcEtpdCBhcmUgaW1wbGVtZW50ZWQgaW4g
UGFnZUNsaWVudEltcGwuIE90aGVyIGNoYW5nZXMgYXJlIG5lY2Vzc2FyeSBmb3IgdGhlCisgICAg
ICAgIHBsdW1iaW5nIHdvcmsuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xp
ZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2hvd0NvcnJlY3Rpb25QYW5lbCk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaXNtaXNzQ29ycmVjdGlvblBhbmVs
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpc21pc3NDb3JyZWN0aW9uUGFu
ZWxTb29uKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToK
KyAgICAgICAgKC1bV0tWaWV3IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnXSk6CisgICAgICAgICgt
W1dLVmlldyBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xp
ZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0UGVuZGluZ0FQSVJlcXVlc3RVUkwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dDb3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvQ29y
cmVjdGlvblBhbmVsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDb3JyZWN0aW9uUGFuZWw6
OmlzU2hvd2luZyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW06
IEFkZGVkLgorICAgICAgICAoY29ycmVjdGlvbkJ1YmJsZVR5cGUpOgorICAgICAgICAoV2ViS2l0
OjpDb3JyZWN0aW9uUGFuZWw6OkNvcnJlY3Rpb25QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OkNv
cnJlY3Rpb25QYW5lbDo6fkNvcnJlY3Rpb25QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OkNvcnJl
Y3Rpb25QYW5lbDo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6ZGlz
bWlzcyk6CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzc1Nvb24pOgor
ICAgICAgICAoV2ViS2l0OjpDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3NJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25z
ZSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3JyZWN0aW9uUGFu
ZWxTb29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpyZWNvcmRBdXRvY29y
cmVjdGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3Vs
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxMS0wMy0xOCAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFn
ZUNsaWVudEltcGwuaAppbmRleCAzMzhmNzc2ODFmOTFjNzNjMjdjZGRiZWJmNjRkNmRmMDg5NTYy
Y2MxLi45OWJlNDMxMGQ4Y2VhZjU3MjQ1OTgwYThkMzBkMjk2YmY5MDNkZjgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNpZm5kZWYgUGFnZUNsaWVudEltcGxfaAogI2RlZmluZSBQYWdlQ2xpZW50
SW1wbF9oCiAKKyNpbmNsdWRlICJDb3JyZWN0aW9uUGFuZWwuaCIKICNpbmNsdWRlICJQYWdlQ2xp
ZW50LmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC0xMDQsOCArMTA1LDE2IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAo
Y29uc3QgU3RyaW5nJiwgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBEaWN0aW9uYXJ5UG9wdXBJ
bmZvJik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpD
b3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
Ym91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRT
dHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOworICAgIHZpcnR1
YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3Np
bmdDb3JyZWN0aW9uUGFuZWwpOworICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NDb3JyZWN0aW9u
UGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwor
ICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6OkVk
aXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5n
JiByZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsK
KwogICAgIFdLVmlldyogbV93a1ZpZXc7CiAgICAgUmV0YWluUHRyPFdlYkVkaXRvclVuZG9UYXJn
ZXRPYmpDPiBtX3VuZG9UYXJnZXQ7CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9Q
QVJEKQorICAgIENvcnJlY3Rpb25QYW5lbCBtX2NvcnJlY3Rpb25QYW5lbDsKKyNlbmRpZgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IDA5NGVkZmZjOTI1ZDhhZjljODE5OTFm
YTE5N2FhZWY0ODlmMGMyN2EuLmJiMTdhNjA0YjUxZWUxYWI0OTRhZTE4YjQ3YzUwMmRlZjVkODdk
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGll
bnRJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGll
bnRJbXBsLm1tCkBAIC00MzEsNCArNDMxLDM3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFBl
cmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IFN0cmluZyYgdGV4dCwgZG91YmxlIHNjYWxlCiAg
ICAgW21fd2tWaWV3IHNob3dEZWZpbml0aW9uRm9yQXR0cmlidXRlZFN0cmluZzphdHRyaWJ1dGVk
U3RyaW5nLmdldCgpIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFthdHRyaWJ1dGVkU3RyaW5nLmdldCgp
IGxlbmd0aF0pIG9wdGlvbnM6b3B0aW9ucyBiYXNlbGluZU9yaWdpblByb3ZpZGVyOl4oTlNSYW5n
ZSBhZGp1c3RlZFJhbmdlKSB7IHJldHVybiAoTlNQb2ludCl0ZXh0QmFzZWxpbmVPcmlnaW47IH1d
OwogfQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzaG93Q29ycmVjdGlvblBhbmVsKENvcnJlY3Rp
b25QYW5lbEluZm86OlBhbmVsVHlwZSB0eXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94
T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZl
UmVwbGFjZW1lbnRTdHJpbmdzKQoreworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkKKyAgICBpZiAoIWlzVmlld1Zpc2libGUoKSB8fCAhaXNWaWV3SW5XaW5kb3coKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fY29ycmVjdGlvblBhbmVsLnNob3cobV93a1ZpZXcsIHR5cGUs
IGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50
U3RyaW5nLCBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CisjZW5kaWYKK30KKwordm9p
ZCBQYWdlQ2xpZW50SW1wbDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNz
aW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbikKK3sKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9T
Tk9XX0xFT1BBUkQpCisgICAgbV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhyZWFzb24pOworI2Vu
ZGlmCit9CisKK1N0cmluZyBQYWdlQ2xpZW50SW1wbDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNv
b24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24pCit7
CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgIHJldHVybiBtX2Nv
cnJlY3Rpb25QYW5lbC5kaXNtaXNzU29vbihyZWFzb24pOworI2Vsc2UKKyAgICByZXR1cm4gU3Ry
aW5nKCk7CisjZW5kaWYKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVjb3JkQXV0b2NvcnJl
Y3Rpb25SZXNwb25zZShFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJl
c3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlbWVudFN0cmluZykKK3sKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BB
UkQpCisgICAgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2UgPSByZXNwb25zZVR5cGUgPT0g
RWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJldmVydGVkID8gTlNDb3JyZWN0aW9uUmVzcG9u
c2VSZXZlcnRlZCA6IE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOworICAgIENvcnJlY3Rpb25Q
YW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShtX3drVmlldywgcmVzcG9uc2UsIHJl
cGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0K
aW5kZXggNGFjZjc3MTk1MTYyNDdjMGE0ZTEwMzJkOTY0MmE1ZjM4YWRiMGVmYi4uNWEwMzRlMmY4
MDEzNDAzYTM5NzM0ZDQ4MThhYTlhNWRlYmI3ZGQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMTUzLDYgKzE1Myw5IEBAIHR5cGVkZWYgSGFzaE1h
cDxTdHJpbmcsIFZhbGlkYXRpb25WZWN0b3I+IFZhbGlkYXRpb25NYXA7CiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQogICAgIFJldGFpblB0cjxXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
PiBfZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI7CiAjZW5kaWYKKworICAgIEJPT0wgX2hhc1Nw
ZWxsQ2hlY2tlckRvY3VtZW50VGFnOworICAgIE5TSW50ZWdlciBfc3BlbGxDaGVja2VyRG9jdW1l
bnRUYWc7CiB9CiBAZW5kCiAKQEAgLTIwODMsNSArMjA4NiwxOSBAQCBzdGF0aWMgdm9pZCBkcmF3
UGFnZUJhY2tncm91bmQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdlYlBhZ2VQcm94eSogcGFnZSwg
Y29uc3QgSQogICAgIF9kYXRhLT5fcGFnZS0+cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0
aW9uKEZsb2F0UG9pbnQodGhlUG9pbnQueCwgdGhlUG9pbnQueSkpOwogfQogCistIChOU0ludGVn
ZXIpc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcKK3sKKyAgICBpZiAoIV9kYXRhLT5faGFzU3BlbGxD
aGVja2VyRG9jdW1lbnRUYWcpIHsKKyAgICAgICAgX2RhdGEtPl9zcGVsbENoZWNrZXJEb2N1bWVu
dFRhZyA9IFtOU1NwZWxsQ2hlY2tlciB1bmlxdWVTcGVsbERvY3VtZW50VGFnXTsKKyAgICAgICAg
X2RhdGEtPl9oYXNTcGVsbENoZWNrZXJEb2N1bWVudFRhZyA9IFlFUzsKKyAgICB9CisgICAgcmV0
dXJuIF9kYXRhLT5fc3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7Cit9CisKKy0gKHZvaWQpaGFuZGxl
Q29ycmVjdGlvblBhbmVsUmVzdWx0OihOU1N0cmluZyopcmVzdWx0Cit7CisgICAgX2RhdGEtPl9w
YWdlLT5oYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQocmVzdWx0KTsKK30KKwogQGVuZAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdQcml2YXRlLmgKaW5k
ZXggY2VjZTFjNzQwYjc3MmM3ZWM2MmM2ZGJlOTZiZmMwZDYzNjI0YWUzNy4uMzdjMmQ4ZGQ4MWZi
Mjg2NWEyMThiMTI5OGY0YzJiOGNhNmJlYzUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlld1ByaXZhdGUuaApAQCAtMzUsNCArMzUsNiBAQAogCiAtICh2
b2lkKXBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRDdXJyZW50TW91c2VMb2NhdGlvbjsKIAorLSAo
TlNJbnRlZ2VyKXNwZWxsQ2hlY2tlckRvY3VtZW50VGFnOworLSAodm9pZCloYW5kbGVDb3JyZWN0
aW9uUGFuZWxSZXN1bHQ6KE5TU3RyaW5nKilyZXN1bHQ7CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAppbmRleCAxMGJkMDc4N2E0NGI5NTNiY2EzODg3NzU1NmM0OWI2YjBi
ZGVhNmZiLi4xNWQ4ZGUzNjBhNDkzMjE3MjhkNmI0MmRiNmIxYmE5YmJkMmYwYTgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTEzMCw2ICsxMzAsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb21wbGV4VGV4dElucHV0RW5hYmxlZCh1aW50NjRfdCBw
bHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgYm9vbCBjb21wbGV4VGV4dElucHV0RW5h
YmxlZCkgPSAwOwogICAgIHZpcnR1YWwgQ0dDb250ZXh0UmVmIGNvbnRhaW5pbmdXaW5kb3dHcmFw
aGljc0NvbnRleHQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBzY2FsZUZhY3RvciwgY29uc3QgRGljdGlvbmFy
eVBvcHVwSW5mbyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChX
ZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29u
c3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFz
b25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcg
ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0Nv
cnJlY3Rpb25QYW5lbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlv
blJlc3BvbnNlKFdlYkNvcmU6OkVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5
cGUsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcm
IHJlcGxhY2VtZW50U3RyaW5nKSA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1lKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBkYWEyNmMxNWQwYzM2NDFhOTJmNzU5MWE4
ZGUyZjZmZDQwNjk0ZmE5Li5mOTkxYmFjZTIxY2UyNzc0MDZhYTI2MDY2YTVjMDdmZGRkMjUxYjAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjY5Miw2
ICsyNjkyLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1
c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgc3VnCiAgICAgbV9wYWdlQ2xpZW50LT5k
aWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKHN1Z2dlc3RlZEZpbGVu
YW1lLCBkYXRhUmVmZXJlbmNlKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNldFBlbmRpbmdB
UElSZXF1ZXN0VVJMKGNvbnN0IFN0cmluZyYgcGVuZGluZ0FQSVJlcXVlc3RVUkwpCit7CisjaWYg
UExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisgICAg
ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVs
SWdub3JlZCk7CisjZW5kaWYKKyAgICBtX3BlbmRpbmdBUElSZXF1ZXN0VVJMID0gcGVuZGluZ0FQ
SVJlcXVlc3RVUkw7IAorfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRSZW1vdmVk
SXRlbSh1aW50NjRfdCBpdGVtSUQpCiB7CiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oaXRlbUlEKSwgbV9wYWdlSUQpOwpAQCAt
Mjc1OSw0ICsyNzY3LDM2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlRGF0YVRvRmlsZUluRG93
bmxvYWRzRm9sZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hCiAgICAgbV91aUNsaWVu
dC5zYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKHRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1l
LCBtaW1lVHlwZSwgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGRhdGEpOwogfQogCisjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCit2b2lkIFdlYlBh
Z2VQcm94eTo6c2hvd0NvcnJlY3Rpb25QYW5lbChpbnQgcGFuZWxUeXBlLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcs
IGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdz
KQoreworICAgIG1fcGFnZUNsaWVudC0+c2hvd0NvcnJlY3Rpb25QYW5lbCgoV2ViQ29yZTo6Q29y
cmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlKXBhbmVsVHlwZSwgYm91bmRpbmdCb3hPZlJlcGxh
Y2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZl
UmVwbGFjZW1lbnRTdHJpbmdzKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWwoaW50IHJlYXNvbikKK3sKKyAgICBtX3BhZ2VDbGllbnQtPmRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWwoKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwp
cmVhc29uKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxT
b29uKGludCByZWFzb24sIFN0cmluZyYgcmVzdWx0KQoreworICAgIHJlc3VsdCA9IG1fcGFnZUNs
aWVudC0+ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oKFdlYkNvcmU6OlJlYXNvbkZvckRpc21p
c3NpbmdDb3JyZWN0aW9uUGFuZWwpcmVhc29uKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50IHJlc3BvbnNlVHlwZSwgY29uc3QgV1RGOjpT
dHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJp
bmcpCit7CisgICAgbV9wYWdlQ2xpZW50LT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKChX
ZWJDb3JlOjpFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlKXJlc3BvbnNl
VHlwZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKTsKK30KKyNlbmRpZgorCisj
aWYgUExBVEZPUk0oTUFDKQordm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUNvcnJlY3Rpb25QYW5l
bFJlc3VsdChjb25zdCBXVEY6OlN0cmluZyYgcmVzdWx0KQoreworI2lmICFkZWZpbmVkKEJVSUxE
SU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICBpZiAoIWlzQ2xvc2VkKCkpCisgICAgICAgIHByb2Nl
c3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0
KHJlc3VsdCksIG1fcGFnZUlELCAwKTsKKyNlbmRpZgorfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDg1
NDAwZjVhNGJiY2M2MzM0Mzk4YjFhMTc5NzM5NTYzMzk2NTU0OTYuLjg4ZjNlM2VlOGIwNzc0ZTdm
YzQzNjg3Njc2MTc1NGEyMzcxZTBhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTQ0OCw2ICs0NDgsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBmbGFzaEJh
Y2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiB1cGRhdGVS
ZWN0cyk7CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCBoYW5kbGVDb3JyZWN0aW9uUGFu
ZWxSZXN1bHQoY29uc3QgV1RGOjpTdHJpbmcmIHJlc3VsdCk7CisjZW5kaWYKKwogICAgIHN0YXRp
YyB2b2lkIHNldERlYnVnUGFpbnRGbGFncyhXS1BhZ2VEZWJ1Z1BhaW50RmxhZ3MgZmxhZ3MpIHsg
c19kZWJ1Z1BhaW50RmxhZ3MgPSBmbGFnczsgfQogICAgIHN0YXRpYyBXS1BhZ2VEZWJ1Z1BhaW50
RmxhZ3MgZGVidWdQYWludEZsYWdzKCkgeyByZXR1cm4gc19kZWJ1Z1BhaW50RmxhZ3M7IH0KIApA
QCAtNjM3LDEwICs2NDEsMTcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RyaW5nIHN0YW5kYXJk
VXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lID0gU3RyaW5nKCkpOwogCiAg
ICAgdm9pZCBjbGVhclBlbmRpbmdBUElSZXF1ZXN0VVJMKCkgeyBtX3BlbmRpbmdBUElSZXF1ZXN0
VVJMID0gU3RyaW5nKCk7IH0KLSAgICB2b2lkIHNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKGNvbnN0
IFN0cmluZyYgcGVuZGluZ0FQSVJlcXVlc3RVUkwpIHsgbV9wZW5kaW5nQVBJUmVxdWVzdFVSTCA9
IHBlbmRpbmdBUElSZXF1ZXN0VVJMOyB9CisgICAgdm9pZCBzZXRQZW5kaW5nQVBJUmVxdWVzdFVS
TChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25I
YW5kbGUoY29uc3QgV2ViQ29yZTo6S1VSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwog
CisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
CisgICAgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKGludCBwYW5lbFR5cGUsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0
cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmlu
ZywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmlu
Z3MpOworICAgIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChpbnQgcmVhc29uKTsKKyAgICB2
b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKGludCByZWFzb24sIFN0cmluZyYgcmVzdWx0
KTsKKyAgICB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50IHJlc3BvbnNlVHlw
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYg
cmVwbGFjZW1lbnRTdHJpbmcpOworI2VuZGlmCisKICAgICBQYWdlQ2xpZW50KiBtX3BhZ2VDbGll
bnQ7CiAgICAgV2ViTG9hZGVyQ2xpZW50IG1fbG9hZGVyQ2xpZW50OwogICAgIFdlYlBvbGljeUNs
aWVudCBtX3BvbGljeUNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGM4MTJhZTE2MjU3YmJiODgyYWI3NWVkODA3MWM2
NmNiMWMzMDk2YjIuLjkzZjc5NzdhNzlmZmRlMDMwNzMwMGY2ZGMxYzc3M2M1ZWFhMjVhMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgpAQCAtMjA4LDQgKzIwOCwxMiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2lmIFBM
QVRGT1JNKFdJTikKICAgICBTdGFydERyYWdEcm9wKFdlYkNvcmU6OkludFBvaW50IGltYWdlUG9p
bnQsIFdlYkNvcmU6OkludFBvaW50IGRyYWdQb2ludCwgdWludDY0X3Qgb2tFZmZlY3QsIEhhc2hN
YXA8VUlOVCxWZWN0b3I8U3RyaW5nPiA+IGRhdGFNYXAsIFdlYkNvcmU6OkludFNpemUgZHJhZ0lt
YWdlU2l6ZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBkcmFnSW1hZ2UsIGJvb2wgbGlu
a0RyYWcpCiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdf
T05fU05PV19MRU9QQVJEKQorICAgICMgQXV0b2NvcnJlY3Rpb24gbWVzc2FnZXMKKyAgICBTaG93
Q29ycmVjdGlvblBhbmVsKGludCBwYW5lbFR5cGUsIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZGlu
Z0JveE9mUmVwbGFjZWRTdHJpbmcsIFdURjo6U3RyaW5nIHJlcGxhY2VkU3RyaW5nLCBXVEY6OlN0
cmluZyByZXBsYWNlbWVudFN0cmluZywgVmVjdG9yPFdURjo6U3RyaW5nPiBhbHRlcm5hdGl2ZVJl
cGxhY2VtZW50U3RyaW5ncykKKyAgICBEaXNtaXNzQ29ycmVjdGlvblBhbmVsKGludCByZWFzb24p
CisgICAgRGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oaW50IHJlYXNvbikgLT4gKFN0cmluZyBy
ZXN1bHQpCisgICAgUmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShpbnQgcmVzcG9uc2VUeXBl
LCBXVEY6OlN0cmluZyByZXBsYWNlZFN0cmluZywgV1RGOjpTdHJpbmcgcmVwbGFjZW1lbnRTdHJp
bmcpOworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L0NvcnJlY3Rpb25QYW5lbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0
aW9uUGFuZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjI0MGU3OTE3NzYxODhmMTYyYWVlNjFjOWE0N2UwMWFl
YWJjMTM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9D
b3JyZWN0aW9uUGFuZWwuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBD
b3JyZWN0aW9uUGFuZWxfaAorI2RlZmluZSBDb3JyZWN0aW9uUGFuZWxfaAorCisjaWYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorI2ltcG9ydCA8QXBwS2l0L05TVGV4dENoZWNr
ZXIuaD4KKyNpbXBvcnQgPEphdmFzY3JpcHRDb3JlL1JldGFpblB0ci5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9Db3JyZWN0aW9uUGFuZWxJbmZvLmg+CisKK0BjbGFzcyBXS1ZpZXc7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBDb3JyZWN0aW9uUGFuZWwgeworcHVibGljOgorICAgIENvcnJl
Y3Rpb25QYW5lbCgpOworICAgIH5Db3JyZWN0aW9uUGFuZWwoKTsKKyAgICB2b2lkIHNob3coV0tW
aWV3KiwgV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpT
dHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJp
bmcsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJp
bmdzKTsKKyAgICB2b2lkIGRpc21pc3MoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJl
Y3Rpb25QYW5lbCk7CisgICAgV1RGOjpTdHJpbmcgZGlzbWlzc1Nvb24oV2ViQ29yZTo6UmVhc29u
Rm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7CisgICAgc3RhdGljIHZvaWQgcmVjb3JkQXV0
b2NvcnJlY3Rpb25SZXNwb25zZShXS1ZpZXcqLCBOU0NvcnJlY3Rpb25SZXNwb25zZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1l
bnRTdHJpbmcpOworCitwcml2YXRlOgorICAgIGJvb2wgaXNTaG93aW5nKCkgY29uc3QgeyByZXR1
cm4gbV92aWV3OyB9CisgICAgdm9pZCBkaXNtaXNzSW50ZXJuYWwoV2ViQ29yZTo6UmVhc29uRm9y
RGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCwgYm9vbCBkaXNtaXNzaW5nRXh0ZXJuYWxseSk7CisK
KyAgICBib29sIG1fd2FzRGlzbWlzc2VkRXh0ZXJuYWxseTsKKyAgICBXZWJDb3JlOjpSZWFzb25G
b3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIG1fcmVhc29uRm9yRGlzbWlzc2luZzsKKyAgICBX
VEY6OlJldGFpblB0cjxXS1ZpZXc+IG1fdmlldzsKKyAgICBXVEY6OlJldGFpblB0cjxOU1N0cmlu
Zz4gbV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rpc21pc3NhbDsKKyAgICBXVEY6OlJldGFpblB0cjxO
U0NvbmRpdGlvbj4gbV9yZXN1bHRDb25kaXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKworI2Vu
ZGlmIC8vIENvcnJlY3Rpb25QYW5lbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvQ29ycmVjdGlvblBhbmVsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiOTdkZmViYjgzNGRjYjk4ZDMxMGEx
OTUxMmRmYWYzZTY0NTJlYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQpAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkKKyNpbXBvcnQgIkNvcnJlY3Rpb25QYW5lbC5oIgorCisjaW1wb3J0ICJXZWJQYWdlUHJv
eHkuaCIKKyNpbXBvcnQgIldLVmlldy5oIgorI2ltcG9ydCAiV0tWaWV3UHJpdmF0ZS5oIgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK3N0YXRpYyBp
bmxpbmUgTlNDb3JyZWN0aW9uQnViYmxlVHlwZSBjb3JyZWN0aW9uQnViYmxlVHlwZShDb3JyZWN0
aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUgcGFuZWxUeXBlKQoreworICAgIHN3aXRjaCAocGFuZWxU
eXBlKSB7CisgICAgY2FzZSBDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGVDb3JyZWN0aW9u
OgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uQnViYmxlVHlwZUNvcnJlY3Rpb247CisgICAg
Y2FzZSBDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGVSZXZlcnNpb246CisgICAgICAgIHJl
dHVybiBOU0NvcnJlY3Rpb25CdWJibGVUeXBlUmV2ZXJzaW9uOworICAgIGNhc2UgQ29ycmVjdGlv
blBhbmVsSW5mbzo6UGFuZWxUeXBlU3BlbGxpbmdTdWdnZXN0aW9uczoKKyAgICAgICAgcmV0dXJu
IE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVHdWVzc2VzOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gTlNDb3JyZWN0aW9uQnViYmxlVHlwZUNvcnJlY3Rpb247Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitDb3JyZWN0aW9uUGFuZWw6OkNvcnJlY3Rpb25QYW5l
bCgpCisgICAgOiBtX3dhc0Rpc21pc3NlZEV4dGVybmFsbHkoZmFsc2UpCisgICAgLCBtX3JlYXNv
bkZvckRpc21pc3NpbmcoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbElnbm9yZWQp
Cit7CisgICAgbV9yZXN1bHRDb25kaXRpb24uYWRvcHROUyhbTlNDb25kaXRpb24gbmV3XSk7Cit9
CisKK0NvcnJlY3Rpb25QYW5lbDo6fkNvcnJlY3Rpb25QYW5lbCgpCit7CisgICAgZGlzbWlzc0lu
dGVybmFsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxJZ25vcmVkLCBmYWxzZSk7
Cit9CisKK3ZvaWQgQ29ycmVjdGlvblBhbmVsOjpzaG93KFdLVmlldyogdmlldywgQ29ycmVjdGlv
blBhbmVsSW5mbzo6UGFuZWxUeXBlIHR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hP
ZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVS
ZXBsYWNlbWVudFN0cmluZ3MpCit7CisgICAgZGlzbWlzc0ludGVybmFsKFJlYXNvbkZvckRpc21p
c3NpbmdDb3JyZWN0aW9uUGFuZWxJZ25vcmVkLCBmYWxzZSk7CisgICAgCisgICAgaWYgKCF2aWV3
KQorICAgICAgICByZXR1cm47CisKKyAgICBOU1N0cmluZyogcmVwbGFjZWRTdHJpbmdBc05TU3Ry
aW5nID0gcmVwbGFjZWRTdHJpbmc7CisgICAgTlNTdHJpbmcqIHJlcGxhY2VtZW50U3RyaW5nQXNO
U1N0cmluZyA9IHJlcGxhY2VtZW50U3RyaW5nOworICAgIG1fdmlldyA9IHZpZXc7CisgICAgTlND
b3JyZWN0aW9uQnViYmxlVHlwZSBidWJibGVUeXBlID0gY29ycmVjdGlvbkJ1YmJsZVR5cGUodHlw
ZSk7CisgICAgCisgICAgTlNNdXRhYmxlQXJyYXkqIGFsdGVybmF0aXZlU3RyaW5ncyA9IDA7Cisg
ICAgaWYgKCFhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgc2l6ZV90IHNpemUgPSBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5zaXplKCk7Cisg
ICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBh
Y2l0eTpzaXplXTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisg
ICAgICAgICAgICBbYWx0ZXJuYXRpdmVTdHJpbmdzIGFkZE9iamVjdDooTlNTdHJpbmcqKWFsdGVy
bmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzW2ldXTsKKyAgICB9CisKKyAgICBOU1NwZWxsQ2hlY2tl
ciogc3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl07Cisg
ICAgTlNJbnRlZ2VyIGRvY3VtZW50VGFnID0gW3ZpZXcgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWdd
OworICAgIFtzcGVsbENoZWNrZXIgc2hvd0NvcnJlY3Rpb25CdWJibGVPZlR5cGU6YnViYmxlVHlw
ZSBwcmltYXJ5U3RyaW5nOnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyBhbHRlcm5hdGl2ZVN0
cmluZ3M6YWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUmVw
bGFjZWRTdHJpbmcgdmlldzptX3ZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmlu
ZyogYWNjZXB0ZWRTdHJpbmcpIHsKKyAgICAgICAgc3dpdGNoIChidWJibGVUeXBlKSB7CisgICAg
ICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUNvcnJlY3Rpb246CisgICAgICAgICAgICBp
ZiAoYWNjZXB0ZWRTdHJpbmcpCisgICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRS
ZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkIHRvQ29ycmVjdGlvbjphY2NlcHRl
ZFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyBsYW5ndWFnZTpuaWwgaW5T
cGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIW1fd2FzRGlzbWlzc2VkRXh0ZXJuYWxseSB8fCBtX3JlYXNvbkZv
ckRpc21pc3NpbmcgPT0gUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbENhbmNlbGxl
ZCkKKyAgICAgICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0Nv
cnJlY3Rpb25SZXNwb25zZVJlamVjdGVkIHRvQ29ycmVjdGlvbjpyZXBsYWNlbWVudFN0cmluZ0Fz
TlNTdHJpbmcgZm9yV29yZDpyZXBsYWNlZFN0cmluZ0FzTlNTdHJpbmcgbGFuZ3VhZ2U6bmlsIGlu
U3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJl
Y3Rpb25SZXNwb25zZUlnbm9yZWQgdG9Db3JyZWN0aW9uOnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0
cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVs
bERvY3VtZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBOU0NvcnJlY3Rpb25CdWJibGVUeXBlUmV2ZXJzaW9uOgor
ICAgICAgICAgICAgaWYgKGFjY2VwdGVkU3RyaW5nKQorICAgICAgICAgICAgICAgIFtzcGVsbENo
ZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZCB0b0NvcnJl
Y3Rpb246cmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nIGZvcldvcmQ6YWNjZXB0ZWRTdHJpbmcgbGFu
Z3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUd1ZXNzZXM6Cisg
ICAgICAgICAgICBpZiAoYWNjZXB0ZWRTdHJpbmcpCisgICAgICAgICAgICAgICAgW3NwZWxsQ2hl
Y2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkIHRvQ29ycmVj
dGlvbjphY2NlcHRlZFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyBsYW5n
dWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX3dhc0Rpc21pc3NlZEV4dGVybmFs
bHkpIHsKKyAgICAgICAgICAgIFttX3Jlc3VsdENvbmRpdGlvbi5nZXQoKSBsb2NrXTsKKyAgICAg
ICAgICAgIGlmIChhY2NlcHRlZFN0cmluZykKKyAgICAgICAgICAgICAgICBtX3Jlc3VsdEZvclN5
bmNocm9ub3VzRGlzbWlzc2FsLmFkb3B0TlMoW2FjY2VwdGVkU3RyaW5nIGNvcHldKTsKKyAgICAg
ICAgICAgIFttX3Jlc3VsdENvbmRpdGlvbi5nZXQoKSBzaWduYWxdOworICAgICAgICAgICAgW21f
cmVzdWx0Q29uZGl0aW9uLmdldCgpIHVubG9ja107CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgW21fdmlldy5nZXQoKSBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6YWNjZXB0ZWRTdHJp
bmddOworICAgIH1dOworfQorCit2b2lkIENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzcyhSZWFzb25G
b3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbikKK3sKKyAgICBkaXNtaXNzSW50ZXJu
YWwocmVhc29uLCB0cnVlKTsKK30KKworU3RyaW5nIENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzc1Nv
b24oUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24pCit7CisgICAgaWYg
KCFpc1Nob3dpbmcoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgZGlzbWlzc0lu
dGVybmFsKHJlYXNvbiwgdHJ1ZSk7CisgICAgW21fcmVzdWx0Q29uZGl0aW9uLmdldCgpIGxvY2td
OworICAgIHdoaWxlICghbV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rpc21pc3NhbCkKKyAgICAgICAg
W21fcmVzdWx0Q29uZGl0aW9uLmdldCgpIHdhaXRdOworICAgIFttX3Jlc3VsdENvbmRpdGlvbi5n
ZXQoKSB1bmxvY2tdOworICAgIHJldHVybiBtX3Jlc3VsdEZvclN5bmNocm9ub3VzRGlzbWlzc2Fs
LmdldCgpOworfQorCit2b2lkIENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzc0ludGVybmFsKFdlYkNv
cmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uLCBib29sIGRpc21p
c3NpbmdFeHRlcm5hbGx5KQoreworICAgIG1fd2FzRGlzbWlzc2VkRXh0ZXJuYWxseSA9IGRpc21p
c3NpbmdFeHRlcm5hbGx5OworICAgIGlmICghaXNTaG93aW5nKCkpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICBtX3JlYXNvbkZvckRpc21pc3NpbmcgPSByZWFzb247CisgICAgbV9yZXN1bHRG
b3JTeW5jaHJvbm91c0Rpc21pc3NhbC5jbGVhcigpOworICAgIGlmIChyZWFzb24gPT0gUmVhc29u
Rm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbEFjY2VwdGVkKQorICAgICAgICBbW05TU3BlbGxD
aGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gZGlzbWlzc0NvcnJlY3Rpb25CdWJibGVGb3JWaWV3
Om1fdmlldy5nZXQoKV07CisgICAgZWxzZQorICAgICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl0gY2FuY2VsQ29ycmVjdGlvbkJ1YmJsZUZvclZpZXc6bV92aWV3LmdldCgp
XTsKKyAgICBtX3ZpZXcuY2xlYXIoKTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWw6OnJlY29y
ZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV0tWaWV3KiB2aWV3LCBOU0NvcnJlY3Rpb25SZXNwb25z
ZSByZXNwb25zZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlbWVudFN0cmluZykKK3sKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hl
Y2tlcl0gcmVjb3JkUmVzcG9uc2U6cmVzcG9uc2UgdG9Db3JyZWN0aW9uOnJlcGxhY2VtZW50U3Ry
aW5nIGZvcldvcmQ6cmVwbGFjZWRTdHJpbmcgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdp
dGhUYWc6W3ZpZXcgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWddXTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisjZW5kaWYgLy8hZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBlNWFkMWZmM2FiNjY0ZjdiNDAwMGEzZjA3N2Y3M2I4YTQ0YWQ1MjU1Li42MzVlZDQ0ZjMz
NzQzODgxZTBhOWRmYTAxYjUwZWIwNjBiNjYzMWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNjksNiArMzY5LDggQEAKIAkJ
OTNGQzY3QkUxMkQzQ0NGMjAwQTYwNjEwIC8qIERlY29kZXJBZGFwdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZDNjc5RTEyRDNDQzc0MDBBNjA2
MTAgLyogRGVjb2RlckFkYXB0ZXIuaCAqLzsgfTsKIAkJOTNGQzY3QkYxMkQzQ0NGMjAwQTYwNjEw
IC8qIEVuY29kZXJBZGFwdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRkM2NzlGMTJEM0NDNzQwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5j
cHAgKi87IH07CiAJCTkzRkM2N0MwMTJEM0NDRjIwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGQzY3QTAx
MkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmggKi87IH07CisJCUI4NzhCNjE1MTMz
NDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4NzhCNjEzMTMzNDI4REMwMDY4ODhFOSAvKiBDb3Jy
ZWN0aW9uUGFuZWwuaCAqLzsgfTsKKwkJQjg3OEI2MTYxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJl
Y3Rpb25QYW5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEI4NzhCNjE0MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gKi87IH07
CiAJCUJDMDA5MkY3MTE1ODM3QTMwMEUwQUUyQSAvKiBSdW5Mb29wTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMDkyRjUxMTU4MzdBMzAwRTBB
RTJBIC8qIFJ1bkxvb3BNYWMubW0gKi87IH07CiAJCUJDMDA5MkY4MTE1ODM3QTMwMEUwQUUyQSAv
KiBXb3JrUXVldWVNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMwMDkyRjYxMTU4MzdBMzAwRTBBRTJBIC8qIFdvcmtRdWV1ZU1hYy5jcHAgKi87
IH07CiAJCUJDMDMyRDc1MTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJDaHJvbWVDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyRDYwMTBGNDM3
OEQwMDU4QzE1QSAvKiBXZWJDaHJvbWVDbGllbnQuaCAqLzsgfTsKQEAgLTEyMzYsNiArMTIzOCw4
IEBACiAJCTkzRkM2N0EwMTJEM0NDNzQwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbmNvZGVyQWRhcHRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNzJENUQ3RjEyMzZDQkE4MDBBODhCMTUgLyogV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMzk2
RUE1NTEyRTBFRDJEMDBGNEZFQjcgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCODc4QjYx
MzEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvcnJlY3Rpb25QYW5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCODc4QjYxNDEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29ycmVjdGlvblBhbmVsLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAwOTJGNTExNTgzN0EzMDBFMEFFMkEg
LyogUnVuTG9vcE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFJ1bkxvb3BNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDA5MkY2MTE1
ODM3QTMwMEUwQUUyQSAvKiBXb3JrUXVldWVNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV29ya1F1ZXVlTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMwMzJENjAxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkNocm9tZUNsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDaHJvbWVDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MjMsMjAgKzI5MjcsMjIgQEAKIAkJQkNDRjA4NUMxMTNG
M0I3NTAwQzY1MEM1IC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJQ0RDQTg1REUxMzJBRDA1MzAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHlNYWMubW0gKi8sCi0JCQkJQ0RDQTg1QzYxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gKi8sCi0JCQkJQ0RDQTg1QzcxMzJBQkE0RTAwRTk2
MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLywKIAkJCQkxQTY0MjkyQzEy
REU1Rjk4MDBDQUFFMkMgLyogQmFja2luZ1N0b3JlTWFjLm1tICovLAogCQkJCUJDMjY1MUY1MTE4
MjVFRjgwMDI0M0UxMiAvKiBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eU1hYy5tbSAqLywK
KwkJCQlCODc4QjYxMzEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLmggKi8sCisJ
CQkJQjg3OEI2MTQxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAqLywKIAkJ
CQkxQUE0MTdFRDEyQzAwRDg3MDAyQkU2N0IgLyogVGV4dENoZWNrZXJNYWMubW0gKi8sCiAJCQkJ
MUExQzY0ODYxMUY0MTVCNzAwNTUzQzE5IC8qIFdlYkNvbnRleHRNYWMubW0gKi8sCiAJCQkJNTFB
Q0JCOUUxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMuaCAqLywKIAkJ
CQk1MUFDQkI5RjEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSAq
LywKKwkJCQlDRENBODVERTEzMkFEMDUzMDBFOTYxREYgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eU1hYy5tbSAqLywKIAkJCQkxQ0E4QjkzNTEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVj
dG9yUHJveHlNYWMubW0gKi8sCiAJCQkJQkM4NTdFODUxMkI3MUVCQjAwRURFQjJFIC8qIFdlYlBh
Z2VQcm94eU1hYy5tbSAqLywKIAkJCQlCQzU3NTA5NTEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9w
dXBNZW51UHJveHlNYWMuaCAqLywKIAkJCQlCQzU3NTA5NjEyNjhGM0M2MDA2RjBGMTIgLyogV2Vi
UG9wdXBNZW51UHJveHlNYWMubW0gKi8sCiAJCQkJQkM4NEVCMTcxMkE3MTAwQzAwODNGMkRBIC8q
IFdlYlByZWZlcmVuY2VzTWFjLm1tICovLAorCQkJCUNEQ0E4NUM2MTMyQUJBNEUwMEU5NjFERiAv
KiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tICovLAorCQkJCUNEQ0E4NUM3MTMyQUJB
NEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggKi8sCiAJCQkpOwog
CQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zNTM0LDYgKzM1
NDAsNyBAQAogCQkJCTUxMUIyNEFCMTMyRTA5NzIwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxRDAyRjZBMTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29u
RGF0YWJhc2VNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFEMDJGNkMxMzJFQzczNzAw
QkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAor
CQkJCUI4NzhCNjE1MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtNDE0Niw2ICs0MTUzLDcgQEAKIAkJCQk1MTFCMjRBQTEzMkUwOTcyMDAwNjVB
MEMgLyogV2ViSWNvbkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRDAyRjY0MTMy
RUM1QjkwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTFEMDJGNkIxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFz
ZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUI4NzhCNjE2MTMz
NDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCmluZGV4IGZhODQyNmEzOGU5NGZiZTNmNDE2NTk4OWY4MTUyZjNhZDc0ZTYw
NzguLjEwMDc2NGIxNjA1OTFlMzE5ODJlNjQ4MTJjNjEyNzcwYWE3M2MyMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaApAQCAtMTQxLDEwICsxNDEsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRN
ZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5n
Jik7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05P
V19MRU9QQVJEKQotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6
OkNvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncywgV2ViQ29yZTo6RWRpdG9yKik7CisjaWYg
UExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisgICAg
dmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVs
SW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZS
ZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5n
JiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVw
bGFjZW1lbnRTdHJpbmdzKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5l
bChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNTaG93aW5nQ29ycmVjdGlvblBhbmVsKCk7CisgICAgdmlydHVhbCBTdHJpbmcg
ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0Nv
cnJlY3Rpb25QYW5lbCk7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBs
YWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKICNlbmRp
ZgogICAgIFdlYlBhZ2UqIG1fcGFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5t
bQppbmRleCA4YWYwNDM4MGMxZmZlODRkOTVkZDFmMDgxZmVhMDIwYWE5MTY0OTljLi42NmQwNGMz
YTkxYzZmMTliOWYxYjZjYTQ2ODNhODMxMzBjNzgyMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRp
dG9yQ2xpZW50TWFjLm1tCkBAIC00Niw3ICs0Niw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2Uu
aD4KICNpbXBvcnQgPFdlYktpdC9XZWJSZXNvdXJjZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYk5T
VVJMRXh0cmFzLmg+Ci0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFS
RCkKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAjaW1wb3J0IDxBcHBL
aXQvTlNUZXh0Q2hlY2tlci5oPgogI2VuZGlmCiAKQEAgLTI0NiwyNiArMjQ2LDI3IEBAIHZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwg
aW50IGxlbmd0aCwgdWludDY0CiAgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpDaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmcodGV4dCwgbGVuZ3RoKSwgY2hlY2tp
bmdUeXBlcyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNoZWNrVGV4dE9mUGFyYWdyYXBoOjpS
ZXBseShyZXN1bHRzKSk7CiB9CiAKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05P
V19MRU9QQVJEKQotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwoV2Vi
Q29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlIHR5cGUsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmlu
ZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLCBXZWJD
b3JlOjpFZGl0b3IqKQorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKK3Zv
aWQgV2ViRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkNvcnJlY3Rp
b25QYW5lbEluZm86OlBhbmVsVHlwZSB0eXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJv
dW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VkU3Ry
aW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29y
cmVjdGlvblBhbmVsKHR5cGUsIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgcmVwbGFjZWRT
dHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nLCBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykp
OwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJD
b3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKQordm9pZCBXZWJFZGl0b3JD
bGllbnQ6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2lu
Z0NvcnJlY3Rpb25QYW5lbCByZWFzb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlzbWlzc0NvcnJlY3Rpb25QYW5l
bChyZWFzb24pKTsKIH0KIAotYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmlzU2hvd2luZ0NvcnJlY3Rp
b25QYW5lbCgpCitTdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVs
U29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbikK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBTdHJpbmcg
cmVzdWx0OworICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlz
bWlzc0NvcnJlY3Rpb25QYW5lbFNvb24ocmVhc29uKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb246OlJlcGx5KHJlc3VsdCkpOworICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWNvcmRBdXRvY29ycmVjdGlvblJl
c3BvbnNlKEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VU
eXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vt
ZW50U3RyaW5nKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UocmVzcG9u
c2VUeXBlLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
MDM2ZjZkMWI5MzE0ZTY2ZGE2YWMzZDAyMjdjMGM3ZTVhM2RkNDgzNi4uYTJkMTQ0NzdmODEwMjli
ZjVmNTdlZjgwNzM4NzY2OThlMjVlNTRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjEyOCw0ICsyMTI4LDE0IEBAIGJvb2wgV2ViUGFn
ZTo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCiAgICAgcmV0dXJuIHBsYXRmb3JtQ2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KTsKIH0KIAor
I2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQor
dm9pZCBXZWJQYWdlOjpoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQoY29uc3QgV1RGOjpTdHJp
bmcmIHJlc3VsdCkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1
cm47CisgICAgZnJhbWUtPmVkaXRvcigpLT5oYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQocmVz
dWx0KTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGE1NzNkZTIzMjQyMmI5YWQ0NTZj
NWYyYWJhMjVjNjU5ZmIxMTg4MGMuLjY2N2I2OTljOGJkOTdiMjYwY2U3NWYyOTE0YmQzMmEwMzAw
MDgwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtMzYxLDYgKzM2MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREcmFnU291cmNlKE5TT2Jq
ZWN0ICopOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX1NOT1dfTEVPUEFSRCkKKyAgICB2b2lkIGhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdChj
b25zdCBXVEY6OlN0cmluZyYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgppbmRleCA2NGY3ZGFmZDA4NjAyODJmNTM4NDE2MjMwNTQwYWExODliMjExOTIyLi40MzVlZDEx
MjU1MDI2ZmMyMmNkMTlkODE0NjAyMTMzZmU2NGJjZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMTkyLDQg
KzE5Miw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogI2lmIFBMQVRGT1JNKFFUKQogICAgIEZp
bmRab29tYWJsZUFyZWFGb3JQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICNlbmRpZgor
CisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
CisgICAgSGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KFdURjo6U3RyaW5nIHJlc3VsdCkKKyNl
bmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86505</attachid>
            <date>2011-03-22 14:22:20 -0700</date>
            <delta_ts>2011-03-22 15:12:59 -0700</delta_ts>
            <desc>Patch (v3)</desc>
            <filename>bug-56055-20110322142219.patch</filename>
            <type>text/plain</type>
            <size>82311</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE2OTIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYWE4MjhkZWU1NDhiMDg4ZDY5YjQ1
ZGExM2MxYzY5ZDQ5ZmQyZDE3Li45MDE0YjdiZDA0YWI4MzliNTcyMWE3OWUyMzE1Mzc0ODE3Njlm
YTgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMjIgIEppYSBQdSAgPGpwdUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SG9vayB1cCBuZXcgQXBwS2l0IGF1dG9jb3JyZWN0aW9uIFVJIHdpdGggV0syLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwNTUKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzg5NDc0NjM+CisKKyAgICAgICAgUGxlYXNlIHNlZSBXZWJDb3JlL0NoYW5n
ZUxvZyBmb3IgZGV0YWlsLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOiBF
bmFibGUgYXV0b2NvcnJlY3Rpb24gdGVzdHMgZm9yIFdLMi4KKwogMjAxMS0wMy0yMiAgSnVzdGlu
IFNjaHVoICA8anNjaHVoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJr
IFNjaHVsemUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBw
ZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKaW5kZXggNzk5MzhjN2Y3
YTYyYmQ4YTRkNGZjZTAxNzEwZmM5M2VmYTZkNzdkMy4uMDY4YWVjMzBkMTlhZGJiNDdiYTVhYTBl
YzYwMGM1YWQxNzNjODVkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZApAQCAt
NTY5LDIzICs1NjksNiBAQCBwbGF0Zm9ybS9tYWMvZWRpdGluZy9kZWxldGluZy9iYWNrd2FyZC1k
ZWxldGUuaHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXIt
c2V0LWRhdGEtZmlsZS11cmwuaHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2Rv
dWJsZWNsaWNrLXNob3VsZC1ub3QtZXhwYW5kLWFjcm9zcy1saW5lcy5odG1sCiBwbGF0Zm9ybS9t
YWMvZWRpdGluZy9zZWxlY3Rpb24vd29yZC10aGFpLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5n
L3NwZWxsaW5nL2F1dG9jb3JyZWN0aW9uLWNvbnRyYWN0aW9uLmh0bWwKLXBsYXRmb3JtL21hYy9l
ZGl0aW5nL3NwZWxsaW5nL2F1dG9jb3JyZWN0aW9uLWRlbGV0ZS5odG1sCi1wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9zcGVsbGluZy9hdXRvY29ycmVjdGlvbi1yZW1vdmluZy11bmRlcmxpbmUtYWZ0ZXIt
cGFzdGUuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvYXV0b2NvcnJlY3Rpb24t
cmVtb3ZpbmctdW5kZXJsaW5lLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2F1
dG9jb3JyZWN0aW9uLXNpbXBsZS5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9j
bGljay1hdXRvY29ycmVjdGVkLXdvcmQuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxp
bmcvZGVsZXRlLWF1dG9jb3JyZWN0ZWQtd29yZC0xLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5n
L3NwZWxsaW5nL2RlbGV0ZS1pbnRvLWF1dG9jb3JyZWN0ZWQtd29yZC5odG1sCi1wbGF0Zm9ybS9t
YWMvZWRpdGluZy9zcGVsbGluZy9kZWxldGUtaW50by1taXNzcGVsbGVkLXdvcmQuaHRtbAotcGxh
dGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy1tdWx0aXBsZS13b3Jkcy13aXRoLW1h
cmtlcnMuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy13b3JkLXdp
dGgtbWFya2VyLTEuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy13
b3JkLXdpdGgtbWFya2VyLTIuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZm9y
d2FyZC1kZWxldGUtaW50by1hdXRvY29ycmVjdGVkLXdvcmQuaHRtbAotcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvc3BlbGxpbmcvbW92ZS1jdXJzb3ItYXJvdW5kLW1pc3NwZWxsZWQtd29yZC5odG1sCi1w
bGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9tb3ZlLWN1cnNvci10by1hdXRvY29ycmVjdGVk
LXdvcmQuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvbW92ZS1jdXJzb3ItdG8t
YmVnaW5uaW5nLW9mLWF1dG9jb3JyZWN0ZWQtd29yZC5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGlu
Zy9zcGVsbGluZy9yZW1vdmluZy11bmRlcmxpbmUtYWZ0ZXItYWNjZXB0aW5nLWF1dG9jb3JyZWN0
aW9uLXVzaW5nLXB1bmN0dWF0aW9uLmh0bWwKIHBsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0
LWFwcGVhcmFuY2Utc3BpbmJ1dHRvbi11cC5odG1sCiBwbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9p
bnB1dC1udW1iZXItY2xpY2suaHRtbAogcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvbGlzdGJveC1z
Y3JvbGxiYXItaGl0LXRlc3QuaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFiMGI1MmFlYjAxMzk4MmQxMjQy
YzgwNzA3NTJjOTAyMWFjNGJhNWMuLjI0MGJjMGYzZWFlODU5NzQyYjQzYjA2NThkMGQ0MTNmOGY4
YWYwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMS0wMy0yMiAgSmlhIFB1ICA8
anB1QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBIb29rIHVwIG5ldyBBcHBLaXQgYXV0b2NvcnJlY3Rpb24gVUkgd2l0aCBXSzIuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA1NQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODk0NzQ2Mz4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIHRv
IGVuYWJsZSBXSzIgdG8gdXRpbGl6ZSBhdXRvY29ycmVjdGlvbiBVSSBvbiBNYWMgT1MgWC4gSXQg
Y29udGFpbnMgZm9sbG93aW5nCisgICAgICAgIG1ham9yIGNoYW5nZXM6CisKKyAgICAgICAgMS4g
QWxsIGJ1dCBvbmUgYXV0b2NvcnJlY3Rpb24gcmVsYXRlZCBtZXNzYWdlIGlzIHN5bmNocm9ub3Vz
LiBTaW5jZSBkaXNtaXNzaW5nIGF1dG9jb3JyZWN0aW9uCisgICAgICAgIHBhbmVsIGNhbiBwb3Rl
bnRpYWxseSBjYXVzZSBlZGl0aW5nIHRvIG9jY3VyLCBhIHN5bmNocm9ub3VzIGRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWxTb29uKCkgZnVuY3Rpb24KKyAgICAgICAgaXMgaW50cm9kdWNlZCB0byBlbnN1
cmUgYWxsIGVkaXRpbmcgY29tbWFuZHMgb2NjdXIgaW4gY29ycmVjdCBvcmRlci4KKworICAgICAg
ICAyLiBBZGRpdGlvbmFsIGNvbmRpdGlvbiB2YXJpYWJsZSBpcyBuZWVkZWQgdG8gaW1wbGVtZW50
IGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKCkuCisgICAgICAgIFRvIGltcHJvdmUgbWFpbnRh
aW5hYmlsaXR5LCBDb3JyZWN0aW9uUGFuZWwgY2xhc3MgaXMgaW50cm9kdWNlZCB0byBtYW5hZ2Ug
dGhlCisgICAgICAgIGludGVybmFsIHN0YXRlIHJlbGF0ZWQgdG8gY29ycmVjdGlvbiBwYW5lbC4g
VGhpcyBjaGFuZ2UgaXMgYXBwbGllZCB0byBib3RoIFdLMSBhbmQgV0syLgorCisgICAgICAgIDMu
IEVkaXRvckNsaWVudDo6aXNTaG93aW5nQ29ycmVjdGlvblBhbmVsKCkgaGFzIGJlZW4gcmVtb3Zl
ZC4gVGhlIG9yaWdpbmFsIHB1cnBvc2UgaXMgdG8gYWxsb3cKKyAgICAgICAgZWRpdG9yIHRvIGtu
b3cgd2hlbiB0byBoYW5kbGUgRVNDIGtleSBldmVudC4gTm93IHRoaXMgaXMgaGFuZGxlZCBpbnRl
cm5hbGx5IGluIEFwcEtpdCwgc28KKyAgICAgICAgRWRpdG9yQ2xpZW50Ojppc1Nob3dpbmdDb3Jy
ZWN0aW9uUGFuZWwoKSBpc24ndCBuZWNlc3NhcnkgYW55bW9yZS4KKworICAgICAgICA0LiBUaGUg
RWRpdG9yKiBhcmd1bWVudCBpbiBFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwoKSBo
YXMgYmVlbiByZW1vdmVkLCBzaW5jZSB3ZSBjYW4KKyAgICAgICAgYWNjZXNzIG9iamVjdCB2aWEg
V2ViVmlldyBvciBXS1ZpZXcuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFt
bWFySW5SYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjb3JyZWN0aW9uUGFuZWxU
aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGlzbWlzc0NvcnJlY3Rpb25Q
YW5lbCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxT
b29uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlBdXRvY29ycmVjdGlvbkJlZm9y
ZVR5cGluZ0lmQXBwcm9wcmlhdGUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUNvbW1hbmRNYXApOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkVtcHR5RWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVtcHR5RWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29v
bik6CisgICAgICAgICogbWFudWFsLXRlc3RzL2F1dG9jb3JyZWN0aW9uL2Nsb3NlLXdpbmRvdy13
aGVuLWNvcnJlY3Rpb24taXMtc2hvd24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGFnZS9FZGl0
b3JDbGllbnQuaDoKKwogMjAxMS0wMy0yMiAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCmluZGV4IDg4MDc5NjUwNjhhNDM5MTBhOWFkOTM2NTFlMTQ2MmVjYzhlOWNmOWEuLmI4
Yzk1Y2NlNThhYzU3YWMxZDk5OTc2ZjRkZjg2YTZjOGNiZTBmMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKQEAgLTIwNzIsNyArMjA3Miw3IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3Bl
bGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZ3b3JkU3RhcnQs
CiAgICAgICAgICAgICBkb0FwcGx5Q29ycmVjdGlvbiA9IGZhbHNlOwogICAgIH0KICAgICBpZiAo
ZG9BcHBseUNvcnJlY3Rpb24pCi0gICAgICAgIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29u
Rm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbEFjY2VwdGVkKTsKKyAgICAgICAgaGFuZGxlQ29y
cmVjdGlvblBhbmVsUmVzdWx0KGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFJlYXNvbkZvckRp
c21pc3NpbmdDb3JyZWN0aW9uUGFuZWxBY2NlcHRlZCkpOwogICAgIGVsc2UKICAgICAgICAgbV9j
b3JyZWN0aW9uUGFuZWxJbmZvLnJhbmdlVG9CZVJlcGxhY2VkLmNsZWFyKCk7CiAjZWxzZQpAQCAt
MjM4Nyw3ICsyMzg3LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2gKICAgICAgICAgICAgICAg
ICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJlcGxhY2VkU3RyaW5nID0gcGxhaW5UZXh0KHJh
bmdlVG9SZXBsYWNlLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgbV9jb3JyZWN0aW9uUGFu
ZWxJbmZvLnJlcGxhY2VtZW50U3RyaW5nID0gcmVzdWx0LT5yZXBsYWNlbWVudDsKICAgICAgICAg
ICAgICAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLmlzQWN0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFuZWwobV9jb3JyZWN0aW9u
UGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3gsIG1fY29ycmVjdGlvblBhbmVsSW5mby5y
ZXBsYWNlZFN0cmluZywgcmVzdWx0LT5yZXBsYWNlbWVudCwgVmVjdG9yPFN0cmluZz4oKSwgdGhp
cyk7CisgICAgICAgICAgICAgICAgICAgIGNsaWVudCgpLT5zaG93Q29ycmVjdGlvblBhbmVsKG1f
Y29ycmVjdGlvblBhbmVsSW5mby5wYW5lbFR5cGUsIGJvdW5kaW5nQm94LCBtX2NvcnJlY3Rpb25Q
YW5lbEluZm8ucmVwbGFjZWRTdHJpbmcsIHJlc3VsdC0+cmVwbGFjZW1lbnQsIFZlY3RvcjxTdHJp
bmc+KCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIHNob3dpbmcg
Y29ycmVjdGlvbiBwYW5lbCwgd2UgaWdub3JlIG90aGVyIGNvcnJlY3Rpb24gb3IgcmVwbGFjZW1l
bnQuCkBAIC0yNTE3LDcgKzI1MTcsNyBAQCB2b2lkIEVkaXRvcjo6Y29ycmVjdGlvblBhbmVsVGlt
ZXJGaXJlZChUaW1lcjxFZGl0b3I+KikKICAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJl
cGxhY2VkU3RyaW5nID0gcGxhaW5UZXh0KG1fY29ycmVjdGlvblBhbmVsSW5mby5yYW5nZVRvQmVS
ZXBsYWNlZC5nZXQoKSk7CiAgICAgICAgIEZsb2F0UmVjdCBib3VuZGluZ0JveCA9IHdpbmRvd1Jl
Y3RGb3JSYW5nZShtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmFuZ2VUb0JlUmVwbGFjZWQuZ2V0KCkp
OwogICAgICAgICBpZiAoIWJvdW5kaW5nQm94LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNsaWVu
dCgpLT5zaG93Q29ycmVjdGlvblBhbmVsKG1fY29ycmVjdGlvblBhbmVsSW5mby5wYW5lbFR5cGUs
IGJvdW5kaW5nQm94LCBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRTdHJpbmcsIG1fY29y
cmVjdGlvblBhbmVsSW5mby5yZXBsYWNlbWVudFN0cmluZywgVmVjdG9yPFN0cmluZz4oKSwgdGhp
cyk7CisgICAgICAgICAgICBjbGllbnQoKS0+c2hvd0NvcnJlY3Rpb25QYW5lbChtX2NvcnJlY3Rp
b25QYW5lbEluZm8ucGFuZWxUeXBlLCBib3VuZGluZ0JveCwgbV9jb3JyZWN0aW9uUGFuZWxJbmZv
LnJlcGxhY2VkU3RyaW5nLCBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZW1lbnRTdHJpbmcs
IFZlY3RvcjxTdHJpbmc+KCkpOwogICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb3Jy
ZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGVTcGVsbGluZ1N1Z2dlc3Rpb25zOiB7CkBAIC0yNTM1
LDcgKzI1MzUsNyBAQCB2b2lkIEVkaXRvcjo6Y29ycmVjdGlvblBhbmVsVGltZXJGaXJlZChUaW1l
cjxFZGl0b3I+KikKICAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLmlzQWN0aXZlID0gdHJ1
ZTsKICAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gd2luZG93UmVjdEZvclJhbmdlKG1f
Y29ycmVjdGlvblBhbmVsSW5mby5yYW5nZVRvQmVSZXBsYWNlZC5nZXQoKSk7CiAgICAgICAgIGlm
ICghYm91bmRpbmdCb3guaXNFbXB0eSgpKQotICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3Jy
ZWN0aW9uUGFuZWwobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3gs
IG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNlZFN0cmluZywgdG9wU3VnZ2VzdGlvbiwgc3Vn
Z2VzdGlvbnMsIHRoaXMpOworICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFu
ZWwobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3gsIG1fY29ycmVj
dGlvblBhbmVsSW5mby5yZXBsYWNlZFN0cmluZywgdG9wU3VnZ2VzdGlvbiwgc3VnZ2VzdGlvbnMp
OwogICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjYwMSwzOSArMjYwMSwzNiBAQCB2
b2lkIEVkaXRvcjo6c3RvcENvcnJlY3Rpb25QYW5lbFRpbWVyKCkKICNlbmRpZgogfQogCi12b2lk
IEVkaXRvcjo6aGFuZGxlQ2FuY2VsT3BlcmF0aW9uKCkKK3ZvaWQgRWRpdG9yOjpkaXNtaXNzQ29y
cmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uRm9y
RGlzbWlzc2luZykKIHsKICNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCiAgICAgaWYg
KCFtX2NvcnJlY3Rpb25QYW5lbEluZm8uaXNBY3RpdmUpCiAgICAgICAgIHJldHVybjsKICAgICBt
X2NvcnJlY3Rpb25QYW5lbEluZm8uaXNBY3RpdmUgPSBmYWxzZTsKKyAgICBtX2NvcnJlY3Rpb25Q
YW5lbElzRGlzbWlzc2VkQnlFZGl0b3IgPSB0cnVlOwogICAgIGlmIChjbGllbnQoKSkKLSAgICAg
ICAgY2xpZW50KCktPmRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0Nv
cnJlY3Rpb25QYW5lbENhbmNlbGxlZCk7Ci0jZW5kaWYKLX0KLQotYm9vbCBFZGl0b3I6OmlzU2hv
d2luZ0NvcnJlY3Rpb25QYW5lbCgpCi17Ci0jaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5F
TAotICAgIGlmIChjbGllbnQoKSkKLSAgICAgICAgcmV0dXJuIGNsaWVudCgpLT5pc1Nob3dpbmdD
b3JyZWN0aW9uUGFuZWwoKTsKKyAgICAgICAgY2xpZW50KCktPmRpc21pc3NDb3JyZWN0aW9uUGFu
ZWwocmVhc29uRm9yRGlzbWlzc2luZyk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWFzb25G
b3JEaXNtaXNzaW5nKTsKICNlbmRpZgotICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBFZGl0
b3I6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25Q
YW5lbCByZWFzb25Gb3JEaXNtaXNzaW5nKQorU3RyaW5nIEVkaXRvcjo6ZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbFNvb24oUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb25Gb3JE
aXNtaXNzaW5nKQogewogI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKICAgICBpZiAo
IW1fY29ycmVjdGlvblBhbmVsSW5mby5pc0FjdGl2ZSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLmlzQWN0aXZlID0g
ZmFsc2U7CiAgICAgbV9jb3JyZWN0aW9uUGFuZWxJc0Rpc21pc3NlZEJ5RWRpdG9yID0gdHJ1ZTsK
LSAgICBpZiAoY2xpZW50KCkpCi0gICAgICAgIGNsaWVudCgpLT5kaXNtaXNzQ29ycmVjdGlvblBh
bmVsKHJlYXNvbkZvckRpc21pc3NpbmcpOworICAgIGlmICghY2xpZW50KCkpCisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gY2xpZW50KCktPmRpc21pc3NDb3JyZWN0aW9uUGFu
ZWxTb29uKHJlYXNvbkZvckRpc21pc3NpbmcpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVh
c29uRm9yRGlzbWlzc2luZyk7CisgICAgcmV0dXJuIFN0cmluZygpOwogI2VuZGlmCiB9CisKIHZv
aWQgRWRpdG9yOjpyZW1vdmVTcGVsbEFuZENvcnJlY3Rpb25NYXJrZXJzRnJvbVdvcmRzVG9CZUVk
aXRlZChib29sIGRvTm90UmVtb3ZlSWZTZWxlY3Rpb25BdFdvcmRCb3VuZGFyeSkKIHsKICAgICAv
LyBXZSB3YW50IHRvIHJlbW92ZSB0aGUgbWFya2VycyBmcm9tIGEgd29yZCBpZiBhbiBlZGl0aW5n
IGNvbW1hbmQgd2lsbCBjaGFuZ2UgdGhlIHdvcmQuIFRoaXMgY2FuIGhhcHBlbiBpbiBvbmUgb2YK
QEAgLTI3NjgsNyArMjc2NSw3IEBAIGJvb2wgRWRpdG9yOjphcHBseUF1dG9jb3JyZWN0aW9uQmVm
b3JlVHlwaW5nSWZBcHByb3ByaWF0ZSgpCiAgICAgUG9zaXRpb24gY2FyZXRQb3NpdGlvbiA9IG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5zdGFydCgpOwogCiAgICAgaWYgKG1fY29y
cmVjdGlvblBhbmVsSW5mby5yYW5nZVRvQmVSZXBsYWNlZC0+ZW5kUG9zaXRpb24oKSA9PSBjYXJl
dFBvc2l0aW9uKSB7Ci0gICAgICAgIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlz
bWlzc2luZ0NvcnJlY3Rpb25QYW5lbEFjY2VwdGVkKTsKKyAgICAgICAgaGFuZGxlQ29ycmVjdGlv
blBhbmVsUmVzdWx0KGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFJlYXNvbkZvckRpc21pc3Np
bmdDb3JyZWN0aW9uUGFuZWxBY2NlcHRlZCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
IAogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggZTFhNzExOTI0NWU4M2JlZDEwZDcz
ZDIwNWVmZTIxNTQwODVjNTY5ZS4uNWZiNDhjNWQwNTZjNTUwOWQ3ZGIyYzUzMzdiOWZkYzM4OGNi
NTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0zMjAsMTEgKzMyMCw5IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgYWRkVG9LaWxsUmluZyhSYW5nZSosIGJvb2wgcHJlcGVuZCk7CiAKLSAg
ICB2b2lkIGhhbmRsZUNhbmNlbE9wZXJhdGlvbigpOwogICAgIHZvaWQgc3RhcnRDb3JyZWN0aW9u
UGFuZWxUaW1lcihDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUpOwogICAgIC8vIElmIHVz
ZXIgY29uZmlybWVkIGEgY29ycmVjdGlvbiBpbiB0aGUgY29ycmVjdGlvbiBwYW5lbCwgY29ycmVj
dGlvbiBoYXMgbm9uLXplcm8gbGVuZ3RoLCBvdGhlcndpc2UgaXQgbWVhbnMgdGhhdCB1c2VyIGhh
cyBkaXNtaXNzZWQgdGhlIHBhbmVsLgogICAgIHZvaWQgaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVz
dWx0KGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbik7Ci0gICAgYm9vbCBpc1Nob3dpbmdDb3JyZWN0
aW9uUGFuZWwoKTsKIAogICAgIHZvaWQgcGFzdGVBc0ZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4sIGJvb2wgc21hcnRSZXBsYWNlLCBib29sIG1hdGNoU3R5bGUpOwogICAgIHZv
aWQgcGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmLCBib29sIHNtYXJ0UmVwbGFjZSk7CkBA
IC00MjUsNiArNDIzLDcgQEAgcHJpdmF0ZToKICAgICBOb2RlKiBmaW5kRXZlbnRUYXJnZXRGcm9t
U2VsZWN0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzdG9wQ29ycmVjdGlvblBhbmVsVGltZXIoKTsK
ICAgICB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJl
Y3Rpb25QYW5lbCk7CisgICAgU3RyaW5nIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFJlYXNv
bkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwogICAgIHZvaWQgYXBwbHlDb3JyZWN0aW9u
UGFuZWxJbmZvKGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4mIG1hcmtl
clR5cGVzVG9BZGQpOwogICAgIC8vIFJldHVybiB0cnVlIGlmIGNvcnJlY3Rpb24gd2FzIGFwcGxp
ZWQsIGZhbHNlIG90aGVyd2lzZS4KICAgICBib29sIGFwcGx5QXV0b2NvcnJlY3Rpb25CZWZvcmVU
eXBpbmdJZkFwcHJvcHJpYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5k
LmNwcAppbmRleCA2ZWE5OTU0ZDk1ZDY0N2RhN2ZjM2JhZWY4NzNiMjFlNmM3YWMwMTc0Li45ZWFm
ZDE4YjUyMmQyYmZjNjNiMTJmMmE4ODUyZmQ4N2IzZTU3YzgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTEwOTEsMTQgKzEwOTEsNiBAQCBzdGF0aWMgYm9v
bCBleGVjdXRlWWFua0FuZFNlbGVjdChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwgY29ucwogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgU1VQUE9SVF9BVVRPQ09S
UkVDVElPTl9QQU5FTAotc3RhdGljIGJvb2wgZXhlY3V0ZUNhbmNlbE9wZXJhdGlvbihGcmFtZSog
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKLXsKLSAg
ICBmcmFtZS0+ZWRpdG9yKCktPmhhbmRsZUNhbmNlbE9wZXJhdGlvbigpOwotICAgIHJldHVybiB0
cnVlOwotfQotI2VuZGlmCi0KIC8vIFN1cHBvcnRlZCBmdW5jdGlvbnMKIAogc3RhdGljIGJvb2wg
c3VwcG9ydGVkKEZyYW1lKikKQEAgLTEyNDksMTMgKzEyNDEsNiBAQCBzdGF0aWMgYm9vbCBlbmFi
bGVkVW5kbyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSkKICAgICBy
ZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5VbmRvKCk7CiB9CiAKLSNpZiBTVVBQT1JUX0FVVE9D
T1JSRUNUSU9OX1BBTkVMCi1zdGF0aWMgYm9vbCBlbmFibGVkRGlzbWlzc0NvcnJlY3Rpb25QYW5l
bChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSkKLXsKLSAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLT5pc1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwoKTsKLX0KLSNlbmRp
ZgotCiAvLyBTdGF0ZSBmdW5jdGlvbnMKIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlTm9uZShGcmFt
ZSosIEV2ZW50KikKQEAgLTE1MzIsMTAgKzE1MTcsNiBAQCBzdGF0aWMgY29uc3QgQ29tbWFuZE1h
cCYgY3JlYXRlQ29tbWFuZE1hcCgpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICB7ICJUYWtl
RmluZFN0cmluZ0Zyb21TZWxlY3Rpb24iLCB7IGV4ZWN1dGVUYWtlRmluZFN0cmluZ0Zyb21TZWxl
Y3Rpb24sIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkVGFrZUZpbmRTdHJp
bmdGcm9tU2VsZWN0aW9uLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwg
ZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAjZW5kaWYKLQotI2lmIFNVUFBP
UlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKLSAgICAgICAgeyAiQ2FuY2VsT3BlcmF0aW9uIiwgeyBl
eGVjdXRlQ2FuY2VsT3BlcmF0aW9uLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5h
YmxlZERpc21pc3NDb3JyZWN0aW9uUGFuZWwsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0
SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKLSNlbmRpZgog
ICAgIH07CiAKICAgICAvLyBUaGVzZSB1bnN1cHBvcnRlZCBjb21tYW5kcyBhcmUgbGlzdGVkIGhl
cmUgc2luY2UgdGhleSBhcHBlYXIgaW4gdGhlIE1pY3Jvc29mdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCmluZGV4IGVkOTJmMTEyY2JhODc3ZmQ1MmMzNDY0MDdmNWI0ZmZlMjYxMjBm
NmMuLjNiMGFkMmU3YWQ2NGI3MDk1OTNjOGQxM2YzMDQxOGRjY2U1MWYwYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTUxMSw5ICs1MTEsOSBAQCBwdWJsaWM6CiAgICAg
VGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gJm1fdGV4dENoZWNrZXJD
bGllbnQ7IH0KIAogI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKLSAgICB2aXJ0dWFs
IHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgRWRpdG9yKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0
aW9uUGFuZWwoQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21p
c3NpbmdDb3JyZWN0aW9uUGFuZWwpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Nob3dpbmdDb3Jy
ZWN0aW9uUGFuZWwoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIGRpc21p
c3NDb3JyZWN0aW9uUGFuZWxTb29uKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwp
IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYpIHsgfQogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5n
VUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFtbWFyRGV0YWlsJikg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvYXV0b2NvcnJlY3Rp
b24vY2xvc2Utd2luZG93LXdoZW4tY29ycmVjdGlvbi1pcy1zaG93bi5odG1sIGIvU291cmNlL1dl
YkNvcmUvbWFudWFsLXRlc3RzL2F1dG9jb3JyZWN0aW9uL2Nsb3NlLXdpbmRvdy13aGVuLWNvcnJl
Y3Rpb24taXMtc2hvd24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzgyYTIwZjU4MTVmN2EzN2M5ZTU5NGNh
NzdmZjYyMDlhMDU0OGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbWFudWFs
LXRlc3RzL2F1dG9jb3JyZWN0aW9uL2Nsb3NlLXdpbmRvdy13aGVuLWNvcnJlY3Rpb24taXMtc2hv
d24uaHRtbApAQCAtMCwwICsxLDQ4IEBACis8aHRtbD4KKzxoZWFkPgorCis8c3R5bGU+CisuZWRp
dGluZyB7CisgICAgYm9yZGVyOiAycHggc29saWQgcmVkOworICAgIHBhZGRpbmc6IDEycHg7Cisg
ICAgZm9udC1zaXplOiAyNHB4OworfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPS4uLy4uLy4uLy4u
L0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGluZy5qcyBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlw
ZT0idGV4dC9KYXZhU2NyaXB0IiA+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiBlZGl0
aW5nVGVzdCgpIHsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgndCcpOworICAgIHR5cGVDaGFy
YWN0ZXJDb21tYW5kKCdoJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2UnKTsKKyAgICB0
eXBlQ2hhcmFjdGVyQ29tbWFuZCgnICcpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdtJyk7
CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2UnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFu
ZCgncycpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdhJyk7CisgICAgdHlwZUNoYXJhY3Rl
ckNvbW1hbmQoJ2UnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnZycpOworICAgIHR5cGVD
aGFyYWN0ZXJDb21tYW5kKCdlJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2UnKTsKKyAg
ICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnICcpOworICAgIGV4ZWNNb3ZlU2VsZWN0aW9uQmFja3dh
cmRCeUNoYXJhY3RlckNvbW1hbmQoKTsKK30KKworPC9zY3JpcHQ+CisKKzx0aXRsZT5UZXN0aW5n
IGNsb3Npbmcgd2luZG93IHdoZW4gY29ycmVjdGlvbiBzdWdnZXN0aW9uIGlzIHNob3duPC90aXRs
ZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj48cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3aGVu
IGNvcnJlY3Rpb24gc3VnZ2VzdGlvbiBpcyB2aXNpYmxlLCBjbG9zaW5nIHdpbmRvdyBkb2Vzbid0
IGhhbmcgb3IgY3Jhc2guPC9wPgorPHA+QWZ0ZXIgc2VlaW5nIHRoZSBwYW5lbCB3aXRoIG11bHRp
cGxlIGNhbmRpZGF0ZXMsIGNsb3NlIHRoZSB3aW5kb3cuPC9wPgorPGRpdiBjb250ZW50ZWRpdGFi
bGUgaWQ9InJvb3QiIGNsYXNzPSJlZGl0aW5nIj4KKzxzcGFuIGlkPSJ0ZXN0Ij48L3NwYW4+Cis8
L2Rpdj4KKworCis8c2NyaXB0PgorcnVuRWRpdGluZ1Rlc3QoKTsKKzwvc2NyaXB0PgorCis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCBkNWRlNmE0MTAy
Y2JkMjc2OGRhYzlkYTNmNWYxYWQ5ZWNmODAzZDUwLi5hZWRhODQ0NTg4Y2E2ZWY1NWYwNjgyMzQy
ODUzNzAzNTljN2FhNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTE1OCwx
NCArMTU4LDE1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRl
eHRDaGVja2VyKCkgPSAwOwogCi0jaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTAogICAg
IGVudW0gQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgewogICAgICAgICBBdXRvY29ycmVjdGlv
bkVkaXRlZCwKICAgICAgICAgQXV0b2NvcnJlY3Rpb25SZXZlcnRlZAogICAgIH07Ci0gICAgdmly
dHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxU
eXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNtZW50U3RyaW5nLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MsIEVkaXRv
ciopID0gMDsKKworI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKKyAgICB2aXJ0dWFs
IHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUs
IGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY21lbnRTdHJpbmcsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdD
b3JyZWN0aW9uUGFuZWwpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTaG93aW5nQ29ycmVjdGlv
blBhbmVsKCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxT
b29uKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNl
VHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudFN0cmluZykgPSAwOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDNlMTgxNjVkODQ2ZTU3Mjc1
MjU4YWI0NDkxMjljOWYyYjY0YWRiNi4uMzA3MjNjNjNmYjdiNjU0MjY5MzQ0NWFlMjc0MTcxNjE3
YzFkY2Y4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMy0yMiAgSmlhIFB1ICA8
anB1QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBIb29rIHVwIG5ldyBBcHBLaXQgYXV0b2NvcnJlY3Rpb24gVUkgd2l0aCBXSzIuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA1NQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODk0NzQ2Mz4KKworICAgICAgICBQbGVhc2Ugc2VlIFdlYkNv
cmUvQ2hhbmdlTG9nIGZvciBkZXRhaWwuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAxMS0wMy0xNyAgSmVmZiBNaWxsZXIgIDxqZWZmbUBhcHBsZS5j
b20+CiAKICAgICAgICAgVXNlIGEgY29uc2lzdGVudCBzZXQgb2YgZmlsZSBwYXR0ZXJucyBpbiB0
aGUgc3ZuOmlnbm9yZSBwcm9wZXJ0eSBmb3IgYWxsIC54Y29kZXByb2ogZGlyZWN0b3JpZXMsIHNw
ZWNpZmljYWxseToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDIwYzE1NmY3OTdkYjk0MDIyODRhMGQyNTU5NWRjZWI5NDZhOGY0ZDMuLjA2
YTU1NjYyNzQ5ODc4OGI0YTVlOTYwMGJmMzA2MWU1NWE0ZjNjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzQ0LDYgKzM0NCw4IEBA
CiAJCUI2Q0U1QzI1MTAwQkM1RjUwMDIxOTkzNiAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjgwNDk3MTBGRkJD
RUMxMDA5RjdGNjIgLyogV2ViQXBwbGljYXRpb25DYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUI4MDQxNzZGMTIxN0E4MzEwMDQ2NkJBRSAv
KiBXZWJJbnNwZWN0b3JGcm9udGVuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjgwNDE3NkQxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZy
b250ZW5kLmggKi87IH07CiAJCUI4MDQxNzcwMTIxN0E4MzEwMDQ2NkJBRSAvKiBXZWJJbnNwZWN0
b3JGcm9udGVuZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEI4MDQxNzZFMTIxN0E4MzEwMDQ2NkJBRSAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZC5tbSAq
LzsgfTsKKwkJQjgyOTU4RDMxMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjgyOTU4RDExMzI3
MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5oICovOyB9OworCQlCODI5NThENDEzMjcw
N0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjgyOTU4RDIxMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJl
Y3Rpb25QYW5lbC5tbSAqLzsgfTsKIAkJQkMyNkM2OUUxMEI3NDNGNDAwQjY4N0VEIC8qIFdlYlNl
cmlhbGl6ZWRKU1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzI2QzY5RDEwQjc0M0Y0MDBCNjg3RUQgLyogV2ViU2VyaWFsaXplZEpTVmFsdWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzI2
QzZBNTEwQjc0NDdBMDBCNjg3RUQgLyogV2ViU2VyaWFsaXplZEpTVmFsdWUubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2QzZBNDEwQjc0NDdBMDBC
Njg3RUQgLyogV2ViU2VyaWFsaXplZEpTVmFsdWUubW0gKi87IH07CiAJCUJDMkU0NjREMEZEOEE5
NjgwMEE5RDlERSAvKiBXZWJWaWV3RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMyRTQ2NEIwRkQ4QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdEYXRh
LmggKi87IH07CkBAIC02NjAsNiArNjYyLDggQEAKIAkJQjY4MDQ5NzIwRkZCQ0VDMTAwOUY3RjYy
IC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJBcHBsaWNhdGlvbkNhY2hlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCODA0MTc2RDEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yRnJvbnRlbmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjgwNDE3NkUxMjE3QTgzMTAwNDY2QkFF
IC8qIFdlYkluc3BlY3RvckZyb250ZW5kLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yRnJvbnRlbmQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUI4Mjk1OEQxMTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29ycmVjdGlvblBhbmVsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI4Mjk1OEQyMTMyNzA3RDAwMDBEMEU3OSAvKiBDb3Jy
ZWN0aW9uUGFuZWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBD
b3JyZWN0aW9uUGFuZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjZDNjlE
MTBCNzQzRjQwMEI2ODdFRCAvKiBXZWJTZXJpYWxpemVkSlNWYWx1ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTZXJpYWxpemVkSlNWYWx1ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzI2QzZBNDEwQjc0NDdBMDBCNjg3RUQgLyogV2ViU2VyaWFsaXpl
ZEpTVmFsdWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJT
ZXJpYWxpemVkSlNWYWx1ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRTQ2
NEIwRkQ4QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlZpZXdEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMjk1LDYgKzEyOTksOCBAQAogCQlGNUIzNkI0MDAyODFERTg3MDE4NjM1Q0IgLyogV2ViQ29y
ZVN1cHBvcnQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CUI4Mjk1OEQxMTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAqLywKKwkJCQlC
ODI5NThEMjEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLm1tICovLAogCQkJCTU5
OEFEOTFEMTIwMUNFQ0YwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbSAq
LywKIAkJCQk1OThBRDkxOTEyMDFDRUM5MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnQuaCAqLywKIAkJCQlCNjgwNDk3MTBGRkJDRUMxMDA5RjdGNjIgLyogV2ViQXBwbGljYXRp
b25DYWNoZS5oICovLApAQCAtMTY0NSw2ICsxNjUxLDcgQEAKIAkJCQkzQUUxNUQ1MDEyREJERUQ0
MDA5MzIzQzggLyogV2ViU3RvcmFnZU1hbmFnZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJM0FCQjNDN0ExMzA5QzNCNTAwRTkzRDk0IC8qIFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzQyRDMyNDEzMUVEMUUwMDA3NUZBNEIgLyogV2ViTG9jYWxp
emFibGVTdHJpbmdzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUI4Mjk1OEQzMTMyNzA3
RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjAxNSw2
ICsyMDIyLDcgQEAKIAkJCQlDREE2MkFFMzEyNUY4N0MyMDA3RkQxMTggLyogV2ViRnVsbFNjcmVl
bkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkzQUJCM0M3QjEzMDlDM0I1MDBFOTNE
OTQgLyogV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzQy
RDM0RDEzMUVEMzg4MDA3NUZBNEIgLyogV2ViTG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwubW0g
aW4gU291cmNlcyAqLywKKwkJCQlCODI5NThENDEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlv
blBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMzhhZmZhZTc5MTJk
MDE2OTFmYWJmZDUwMWY0YjM4YWE4NWIyODU2ZS4uZTQ3M2M2YzY4OWU2Zjc4MWFmNGM2Njc2Njkw
YWQ0ZjIxNjBiZDg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDExLTAz
LTIyICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEhvb2sgdXAgbmV3IEFwcEtpdCBhdXRvY29ycmVjdGlvbiBV
SSB3aXRoIFdLMi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU2MDU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84OTQ3NDYzPgorCisgICAgICAgIFBs
ZWFzZSBzZWUgV2ViQ29yZS9DaGFuZ2VMb2cgZm9yIGRldGFpbC4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5oOiBBZGRlZC4KKyAgICAgICAgKENvcnJlY3Rpb25Q
YW5lbDo6aXNTaG93aW5nKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFu
ZWwubW06IEFkZGVkLgorICAgICAgICAoY29ycmVjdGlvbkJ1YmJsZVR5cGUpOgorICAgICAgICAo
Q29ycmVjdGlvblBhbmVsOjpDb3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoQ29ycmVjdGlvblBh
bmVsOjp+Q29ycmVjdGlvblBhbmVsKToKKyAgICAgICAgKENvcnJlY3Rpb25QYW5lbDo6c2hvdyk6
CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3MpOgorICAgICAgICAoQ29ycmVjdGlv
blBhbmVsOjpkaXNtaXNzU29vbik6CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3NJ
bnRlcm5hbCk6CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9u
UmVzcG9uc2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdl
YkVkaXRvckNsaWVudDo6V2ViRWRpdG9yQ2xpZW50KToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVu
dDo6c2hvd0NvcnJlY3Rpb25QYW5lbCk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmRpc21p
c3NDb3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29y
cmVjdGlvblBhbmVsU29vbik6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnJlY29yZEF1dG9j
b3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViVmlldyBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6XSk6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDExLTAzLTIyICBNYXR0aGV3IERlbGFuZXkg
IDxtZGVsYW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlv
blBhbmVsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFu
ZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mMGY5ZjE1YTdlMThlYzQ1MzVkZTI0YzY1Y2JmMWY2MWYzNTMyNTVl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29y
cmVjdGlvblBhbmVsLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29y
cmVjdGlvblBhbmVsX2gKKyNkZWZpbmUgQ29ycmVjdGlvblBhbmVsX2gKKworI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvUGxhdGZvcm0uaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1JldGFpblB0
ci5oPgorCisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyNp
bXBvcnQgPEFwcEtpdC9OU1RleHRDaGVja2VyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NvcnJlY3Rp
b25QYW5lbEluZm8uaD4KKworQGNsYXNzIFdlYlZpZXc7CisKK2NsYXNzIENvcnJlY3Rpb25QYW5l
bCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29ycmVjdGlvblBhbmVsKTsKK3B1YmxpYzoK
KyAgICBDb3JyZWN0aW9uUGFuZWwoKTsKKyAgICB+Q29ycmVjdGlvblBhbmVsKCk7CisgICAgdm9p
ZCBzaG93KFdlYlZpZXcqLCBXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBj
b25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBs
YWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBs
YWNlbWVudFN0cmluZ3MpOworICAgIHZvaWQgZGlzbWlzcyhXZWJDb3JlOjpSZWFzb25Gb3JEaXNt
aXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKKyAgICBXVEY6OlN0cmluZyBkaXNtaXNzU29vbihXZWJD
b3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKKyAgICBzdGF0aWMgdm9p
ZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYlZpZXcqLCBOU0NvcnJlY3Rpb25SZXNw
b25zZSwgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmlu
ZyYgcmVwbGFjZW1lbnRTdHJpbmcpOworCitwcml2YXRlOgorICAgIGJvb2wgaXNTaG93aW5nKCkg
Y29uc3QgeyByZXR1cm4gbV92aWV3OyB9CisgICAgdm9pZCBkaXNtaXNzSW50ZXJuYWwoV2ViQ29y
ZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCwgYm9vbCBkaXNtaXNzaW5nRXh0
ZXJuYWxseSk7CisgICAgdm9pZCBoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBh
Y2NlcHRlZFJlcGxhY2VtZW50LCBOU1N0cmluZyogcmVwbGFjZWQsIE5TU3RyaW5nKiBwcm9wb3Nl
ZFJlcGxhY2VtZW50LCBOU0NvcnJlY3Rpb25CdWJibGVUeXBlKTsKKworICAgIGJvb2wgbV93YXNE
aXNtaXNzZWRFeHRlcm5hbGx5OworICAgIFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3Jy
ZWN0aW9uUGFuZWwgbV9yZWFzb25Gb3JEaXNtaXNzaW5nOworICAgIFdURjo6UmV0YWluUHRyPFdl
YlZpZXc+IG1fdmlldzsKKyAgICBXVEY6OlJldGFpblB0cjxOU1N0cmluZz4gbV9yZXN1bHRGb3JT
eW5jaHJvbm91c0Rpc21pc3NhbDsKKyAgICBXVEY6OlJldGFpblB0cjxOU0NvbmRpdGlvbj4gbV9y
ZXN1bHRDb25kaXRpb247Cit9OworCisjZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdfT05fVElH
RVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX1NOT1dfTEVPUEFSRCkKKworI2VuZGlmIC8vIENvcnJlY3Rpb25QYW5lbF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDkxOWU0MmJhMTMxNmJlNDJiYTg5YzIyYWQxZjA3ZjAwZWE1YzFkZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25Q
YW5lbC5tbQpAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaW1wb3J0ICJDb3JyZWN0aW9u
UGFuZWwuaCIKKyNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCisKKyNpZiAhZGVmaW5lZChCVUlM
RElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1
c2luZyBuYW1lc3BhY2UgV1RGOworCitzdGF0aWMgaW5saW5lIE5TQ29ycmVjdGlvbkJ1YmJsZVR5
cGUgY29ycmVjdGlvbkJ1YmJsZVR5cGUoQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlIHBh
bmVsVHlwZSkKK3sKKyAgICBzd2l0Y2ggKHBhbmVsVHlwZSkgeworICAgIGNhc2UgQ29ycmVjdGlv
blBhbmVsSW5mbzo6UGFuZWxUeXBlQ29ycmVjdGlvbjoKKyAgICAgICAgcmV0dXJuIE5TQ29ycmVj
dGlvbkJ1YmJsZVR5cGVDb3JyZWN0aW9uOworICAgIGNhc2UgQ29ycmVjdGlvblBhbmVsSW5mbzo6
UGFuZWxUeXBlUmV2ZXJzaW9uOgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uQnViYmxlVHlw
ZVJldmVyc2lvbjsKKyAgICBjYXNlIENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZVNwZWxs
aW5nU3VnZ2VzdGlvbnM6CisgICAgICAgIHJldHVybiBOU0NvcnJlY3Rpb25CdWJibGVUeXBlR3Vl
c3NlczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE5TQ29y
cmVjdGlvbkJ1YmJsZVR5cGVDb3JyZWN0aW9uOworfQorCitDb3JyZWN0aW9uUGFuZWw6OkNvcnJl
Y3Rpb25QYW5lbCgpCisgICAgOiBtX3dhc0Rpc21pc3NlZEV4dGVybmFsbHkoZmFsc2UpCisgICAg
LCBtX3JlYXNvbkZvckRpc21pc3NpbmcoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5l
bElnbm9yZWQpCisgICAgLCBtX3Jlc3VsdENvbmRpdGlvbihBZG9wdE5TLCBbW05TQ29uZGl0aW9u
IGFsbG9jXSBpbml0XSkKK3sKK30KKworQ29ycmVjdGlvblBhbmVsOjp+Q29ycmVjdGlvblBhbmVs
KCkKK3sKKyAgICBkaXNtaXNzSW50ZXJuYWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25Q
YW5lbElnbm9yZWQsIGZhbHNlKTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWw6OnNob3coV2Vi
VmlldyogdmlldywgQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlIHR5cGUsIGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCit7CisgICAgZGlzbWlzc0lu
dGVybmFsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxJZ25vcmVkLCBmYWxzZSk7
CisgICAgCisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBOU1N0cmluZyog
cmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nID0gcmVwbGFjZWRTdHJpbmc7CisgICAgTlNTdHJpbmcq
IHJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyA9IHJlcGxhY2VtZW50U3RyaW5nOworICAgIG1f
dmlldyA9IHZpZXc7CisgICAgTlNDb3JyZWN0aW9uQnViYmxlVHlwZSBidWJibGVUeXBlID0gY29y
cmVjdGlvbkJ1YmJsZVR5cGUodHlwZSk7CisgICAgCisgICAgTlNNdXRhYmxlQXJyYXkqIGFsdGVy
bmF0aXZlU3RyaW5ncyA9IDA7CisgICAgaWYgKCFhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5n
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBhbHRlcm5hdGl2ZVJlcGxhY2Vt
ZW50U3RyaW5ncy5zaXplKCk7CisgICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncyA9IFtOU011dGFi
bGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaXplXTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICBbYWx0ZXJuYXRpdmVTdHJpbmdzIGFkZE9i
amVjdDooTlNTdHJpbmcqKWFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzW2ldXTsKKyAgICB9
CisKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gc2hvd0NvcnJlY3Rp
b25CdWJibGVPZlR5cGU6YnViYmxlVHlwZSBwcmltYXJ5U3RyaW5nOnJlcGxhY2VtZW50U3RyaW5n
QXNOU1N0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmlu
Z0luUmVjdDpib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcgdmlldzptX3ZpZXcuZ2V0KCkgY29t
cGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyogYWNjZXB0ZWRTdHJpbmcpIHsKKyAgICAgICAgaGFu
ZGxlQWNjZXB0ZWRSZXBsYWNlbWVudChhY2NlcHRlZFN0cmluZywgcmVwbGFjZWRTdHJpbmdBc05T
U3RyaW5nLCByZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcsIGJ1YmJsZVR5cGUpOworICAgIH1d
OworfQorCit2b2lkIENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzcyhSZWFzb25Gb3JEaXNtaXNzaW5n
Q29ycmVjdGlvblBhbmVsIHJlYXNvbikKK3sKKyAgICBkaXNtaXNzSW50ZXJuYWwocmVhc29uLCB0
cnVlKTsKK30KKworU3RyaW5nIENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzc1Nvb24oUmVhc29uRm9y
RGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24pCit7CisgICAgaWYgKCFpc1Nob3dpbmco
KSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgZGlzbWlzc0ludGVybmFsKHJlYXNv
biwgdHJ1ZSk7CisgICAgW21fcmVzdWx0Q29uZGl0aW9uLmdldCgpIGxvY2tdOworICAgIHdoaWxl
ICghbV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rpc21pc3NhbCkKKyAgICAgICAgW21fcmVzdWx0Q29u
ZGl0aW9uLmdldCgpIHdhaXRdOworICAgIFttX3Jlc3VsdENvbmRpdGlvbi5nZXQoKSB1bmxvY2td
OworICAgIHJldHVybiBtX3Jlc3VsdEZvclN5bmNocm9ub3VzRGlzbWlzc2FsLmdldCgpOworfQor
Cit2b2lkIENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzc0ludGVybmFsKFJlYXNvbkZvckRpc21pc3Np
bmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uLCBib29sIGRpc21pc3NpbmdFeHRlcm5hbGx5KQorewor
ICAgIG1fd2FzRGlzbWlzc2VkRXh0ZXJuYWxseSA9IGRpc21pc3NpbmdFeHRlcm5hbGx5OworICAg
IGlmICghaXNTaG93aW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3JlYXNvbkZv
ckRpc21pc3NpbmcgPSByZWFzb247CisgICAgbV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rpc21pc3Nh
bC5jbGVhcigpOworICAgIGlmIChyZWFzb24gPT0gUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rp
b25QYW5lbEFjY2VwdGVkKQorICAgICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hl
Y2tlcl0gZGlzbWlzc0NvcnJlY3Rpb25CdWJibGVGb3JWaWV3Om1fdmlldy5nZXQoKV07CisgICAg
ZWxzZQorICAgICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gY2FuY2Vs
Q29ycmVjdGlvbkJ1YmJsZUZvclZpZXc6bV92aWV3LmdldCgpXTsKKyAgICBtX3ZpZXcuY2xlYXIo
KTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9u
c2UoV2ViVmlldyogdmlldywgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2UsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCit7
CisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHJlY29yZFJlc3BvbnNl
OnJlc3BvbnNlIHRvQ29ycmVjdGlvbjpyZXBsYWNlbWVudFN0cmluZyBmb3JXb3JkOnJlcGxhY2Vk
U3RyaW5nIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOlt2aWV3IHNwZWxsQ2hl
Y2tlckRvY3VtZW50VGFnXV07Cit9CisKK3ZvaWQgQ29ycmVjdGlvblBhbmVsOjpoYW5kbGVBY2Nl
cHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJlcGxhY2VtZW50LCBOU1N0cmluZyog
cmVwbGFjZWQsIE5TU3RyaW5nKiBwcm9wb3NlZFJlcGxhY2VtZW50LCAgTlNDb3JyZWN0aW9uQnVi
YmxlVHlwZSBjb3JyZWN0aW9uQnViYmxlVHlwZSkKK3sKKyAgICBOU1NwZWxsQ2hlY2tlciogc3Bl
bGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl07CisgICAgTlNJ
bnRlZ2VyIGRvY3VtZW50VGFnID0gW21fdmlldy5nZXQoKSBzcGVsbENoZWNrZXJEb2N1bWVudFRh
Z107CisKKyAgICBzd2l0Y2ggKGNvcnJlY3Rpb25CdWJibGVUeXBlKSB7CisgICAgY2FzZSBOU0Nv
cnJlY3Rpb25CdWJibGVUeXBlQ29ycmVjdGlvbjoKKyAgICAgICAgaWYgKGFjY2VwdGVkUmVwbGFj
ZW1lbnQpCisgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVj
dGlvblJlc3BvbnNlQWNjZXB0ZWQgdG9Db3JyZWN0aW9uOmFjY2VwdGVkUmVwbGFjZW1lbnQgZm9y
V29yZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVu
dFRhZ107CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKCFtX3dhc0Rpc21pc3NlZEV4
dGVybmFsbHkgfHwgbV9yZWFzb25Gb3JEaXNtaXNzaW5nID09IFJlYXNvbkZvckRpc21pc3NpbmdD
b3JyZWN0aW9uUGFuZWxDYW5jZWxsZWQpCisgICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciBy
ZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZVJlamVjdGVkIHRvQ29ycmVjdGlvbjpw
cm9wb3NlZFJlcGxhY2VtZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxE
b2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VJ
Z25vcmVkIHRvQ29ycmVjdGlvbjpwcm9wb3NlZFJlcGxhY2VtZW50IGZvcldvcmQ6cmVwbGFjZWQg
bGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZVJldmVy
c2lvbjoKKyAgICAgICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQpCisgICAgICAgICAgICBbc3Bl
bGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlUmV2ZXJ0ZWQgdG9D
b3JyZWN0aW9uOnJlcGxhY2VkIGZvcldvcmQ6YWNjZXB0ZWRSZXBsYWNlbWVudCBsYW5ndWFnZTpu
aWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUd1ZXNzZXM6CisgICAgICAgIGlmIChhY2Nl
cHRlZFJlcGxhY2VtZW50KQorICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25z
ZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkIHRvQ29ycmVjdGlvbjphY2NlcHRlZFJlcGxh
Y2VtZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhU
YWc6ZG9jdW1lbnRUYWddOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgaWYgKCFt
X3dhc0Rpc21pc3NlZEV4dGVybmFsbHkpIHsKKyAgICAgICAgW21fdmlldy5nZXQoKSBoYW5kbGVD
b3JyZWN0aW9uUGFuZWxSZXN1bHQ6YWNjZXB0ZWRSZXBsYWNlbWVudF07CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgW21fcmVzdWx0Q29uZGl0aW9uLmdldCgpIGxvY2tdOworICAg
IGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQorICAgICAgICBtX3Jlc3VsdEZvclN5bmNocm9ub3Vz
RGlzbWlzc2FsLmFkb3B0TlMoW2FjY2VwdGVkUmVwbGFjZW1lbnQgY29weV0pOworICAgIFttX3Jl
c3VsdENvbmRpdGlvbi5nZXQoKSBzaWduYWxdOworICAgIFttX3Jlc3VsdENvbmRpdGlvbi5nZXQo
KSB1bmxvY2tdOworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NO
T1dfTEVPUEFSRCkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaAppbmRleCAxZmExMzJhZDZjNWJkNDM3OWZlMGJiODVjOWU2ZmYwZDY2
YjExNzM1Li5mYWNlMTVlZjVkNjc0OTIxOTgzNTBiMzAxNjQ1NjcxMWUyZTdlYzFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApA
QCAtMjcsNyArMjcsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0IDxXZWJDb3JlL0Vk
aXRvci5oPgorI2ltcG9ydCAiQ29ycmVjdGlvblBhbmVsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0Vk
aXRvckNsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTQwLDkgKzE0MCw5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwogICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBp
bnQsIGNvbnN0IFdURjo6U3RyaW5nJik7CiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJD
b3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3Qg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncywg
V2ViQ29yZTo6RWRpdG9yKik7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwo
V2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcm
IHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNv
bnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmlu
Z3MpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJl
YXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwotICAgIHZpcnR1YWwgYm9vbCBpc1No
b3dpbmdDb3JyZWN0aW9uUGFuZWwoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGRpc21pc3ND
b3JyZWN0aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9u
UGFuZWwpOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJp
bmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CiAjZW5kaWYKIHByaXZh
dGU6CkBAIC0xNTQsOCArMTU0LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGF2ZVVuZG9SZWRv
T3BlcmF0aW9uczsKIAogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BB
UkQpCi0gICAgQk9PTCBtX2NvcnJlY3Rpb25QYW5lbElzU2hvd247Ci0gICAgQk9PTCBtX2NvcnJl
Y3Rpb25QYW5lbElzRGlzbWlzc2VkRXh0ZXJuYWxseTsKLSAgICBXZWJDb3JlOjpSZWFzb25Gb3JE
aXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIG1fcmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25Q
YW5lbDsKKyAgICBDb3JyZWN0aW9uUGFuZWwgbV9jb3JyZWN0aW9uUGFuZWw7CiAjZW5kaWYKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0KaW5kZXggNjlkZDU3NDczMWI0NGI0MzBjMjc0NThlNzIzYjQxYzRkZTUxNzRiMC4uY2Iz
ZmI1ODM5MTRmMzA2OTYwYTZkZjVhOTVhNGQ2N2Q1MDI1ZDQ5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtMjAyLDkg
KzIwMiw2IEBAIFdlYkVkaXRvckNsaWVudDo6V2ViRWRpdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZp
ZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICAgICAsIG1fdW5kb1RhcmdldChbW1tXZWJF
ZGl0b3JVbmRvVGFyZ2V0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV0pCiAgICAgLCBtX2hhdmVV
bmRvUmVkb09wZXJhdGlvbnMoZmFsc2UpCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKLSAgICAsIG1fY29ycmVjdGlvblBhbmVsSXNTaG93bihmYWxzZSkKLSNl
bmRpZgogewogfQogCkBAIC04OTEsNzMgKzg4OCwyNSBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6
dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYgYmFkR3JhbW1h
cgogfQogCiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKLXZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkNvcnJlY3Rp
b25QYW5lbEluZm86OlBhbmVsVHlwZSBwYW5lbFR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRp
bmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJu
YXRpdmVSZXBsYWNlbWVudFN0cmluZ3MsIEVkaXRvciogZWRpdG9yKSB7Ci0gICAgZGlzbWlzc0Nv
cnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsSWdub3JlZCk7
Ci0KLSAgICAvLyBOZWVkIHRvIGV4cGxpY2l0bHkgdXNlIHRoZXNlIGxvY2FsIE5TU3RyaW5nIG9i
amVjdHMsIGJlY2F1c2UgdGhlIEMrKyByZWZlcmVuY2VzIG1heSBiZSBpbnZhbGlkYXRlZCBieSB0
aGUgdGltZSB0aGUgYmxvY2sgYmVsb3cgaXMgZXhlY3V0ZWQuCi0gICAgTlNTdHJpbmcgKnJlcGxh
Y2VkU3RyaW5nQXNOU1N0cmluZyA9IHJlcGxhY2VkU3RyaW5nOwotICAgIE5TU3RyaW5nICpyZXBs
YWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgPSByZXBsYWNlbWVudFN0cmluZzsKLQotICAgIG1fY29y
cmVjdGlvblBhbmVsSXNTaG93biA9IFlFUzsKLSAgICBtX2NvcnJlY3Rpb25QYW5lbElzRGlzbWlz
c2VkRXh0ZXJuYWxseSA9IE5POwotICAgIG1fcmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25Q
YW5lbCA9IFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxJZ25vcmVkOwotCi0gICAg
TlNDb3JyZWN0aW9uQnViYmxlVHlwZSBidWJibGVUeXBlID0gY29ycmVjdGlvbkJ1YmJsZVR5cGUo
cGFuZWxUeXBlKTsKLSAgICBOU011dGFibGVBcnJheSAqYWx0ZXJuYXRpdmVTdHJpbmdzID0gbmls
OwotICAgIGlmICghYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIHNpemVfdCBzaXplID0gYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3Muc2l6ZSgp
OwotICAgICAgICBhbHRlcm5hdGl2ZVN0cmluZ3MgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRo
Q2FwYWNpdHk6c2l6ZV07Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KQotICAgICAgICAgICAgW2FsdGVybmF0aXZlU3RyaW5ncyBhZGRPYmplY3Q6KE5TU3RyaW5nKilh
bHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5nc1tpXV07Ci0gICAgfQotICAgIE5TU3BlbGxDaGVj
a2VyICpzcGVsbENoZWNrZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXTsK
LSAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gc2hvd0NvcnJlY3Rpb25C
dWJibGVPZlR5cGU6YnViYmxlVHlwZSBwcmltYXJ5U3RyaW5nOnJlcGxhY2VtZW50U3RyaW5nQXNO
U1N0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0lu
UmVjdDpib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcgdmlldzptX3dlYlZpZXcgY29tcGxldGlv
bkhhbmRsZXI6XihOU1N0cmluZyAqYWNjZXB0ZWRTdHJpbmcpIHsKLSAgICAgICAgc3dpdGNoIChi
dWJibGVUeXBlKSB7Ci0gICAgICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUNvcnJlY3Rp
b246Ci0gICAgICAgICAgICBpZiAoYWNjZXB0ZWRTdHJpbmcpCi0gICAgICAgICAgICAgICAgW3Nw
ZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkIHRv
Q29ycmVjdGlvbjphY2NlcHRlZFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nQXNOU1N0cmlu
ZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVu
dFRhZygpXTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlmICghbV9jb3Jy
ZWN0aW9uUGFuZWxJc0Rpc21pc3NlZEV4dGVybmFsbHkgfHwgbV9yZWFzb25Gb3JEaXNtaXNzaW5n
Q29ycmVjdGlvblBhbmVsID09IFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxDYW5j
ZWxsZWQpCi0gICAgICAgICAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6
TlNDb3JyZWN0aW9uUmVzcG9uc2VSZWplY3RlZCB0b0NvcnJlY3Rpb246cmVwbGFjZW1lbnRTdHJp
bmdBc05TU3RyaW5nIGZvcldvcmQ6cmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nIGxhbmd1YWdlOm5p
bCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCldOwotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNv
cmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUlnbm9yZWQgdG9Db3JyZWN0aW9uOnJlcGxh
Y2VtZW50U3RyaW5nQXNOU1N0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyBs
YW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRh
ZygpXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5T
Q29ycmVjdGlvbkJ1YmJsZVR5cGVSZXZlcnNpb246Ci0gICAgICAgICAgICBpZiAoYWNjZXB0ZWRT
dHJpbmcpCi0gICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0Nv
cnJlY3Rpb25SZXNwb25zZVJldmVydGVkIHRvQ29ycmVjdGlvbjpyZXBsYWNlZFN0cmluZ0FzTlNT
dHJpbmcgZm9yV29yZDphY2NlcHRlZFN0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50
V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpXTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVHdWVzc2VzOgotICAgICAgICAgICAg
aWYgKGFjY2VwdGVkU3RyaW5nKQotICAgICAgICAgICAgICAgIFtbTlNTcGVsbENoZWNrZXIgc2hh
cmVkU3BlbGxDaGVja2VyXSByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2Vw
dGVkIHRvQ29ycmVjdGlvbjphY2NlcHRlZFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nQXNO
U1N0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpbbV93ZWJWaWV3IHNw
ZWxsQ2hlY2tlckRvY3VtZW50VGFnXV07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBlZGl0b3ItPmhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdChTdHJpbmcoYWNjZXB0
ZWRTdHJpbmcpKTsKLSAgICB9XTsKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlv
blBhbmVsKENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSBwYW5lbFR5cGUsIGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCit7CisgICAgbV9jb3JyZWN0
aW9uUGFuZWwuc2hvdyhtX3dlYlZpZXcsIHBhbmVsVHlwZSwgYm91bmRpbmdCb3hPZlJlcGxhY2Vk
U3RyaW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZlUmVw
bGFjZW1lbnRTdHJpbmdzKTsKIH0KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb25Gb3JE
aXNtaXNzaW5nKQogewotICAgIGlmIChpc1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwoKSkgewotICAg
ICAgICBtX2NvcnJlY3Rpb25QYW5lbElzRGlzbWlzc2VkRXh0ZXJuYWxseSA9IFlFUzsKLSAgICAg
ICAgbV9yZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsID0gcmVhc29uRm9yRGlzbWlz
c2luZzsKLSAgICAgICAgaWYgKHJlYXNvbkZvckRpc21pc3NpbmcgPT0gUmVhc29uRm9yRGlzbWlz
c2luZ0NvcnJlY3Rpb25QYW5lbEFjY2VwdGVkKQotICAgICAgICAgICAgW1tOU1NwZWxsQ2hlY2tl
ciBzaGFyZWRTcGVsbENoZWNrZXJdIGRpc21pc3NDb3JyZWN0aW9uQnViYmxlRm9yVmlldzptX3dl
YlZpZXddOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl0gY2FuY2VsQ29ycmVjdGlvbkJ1YmJsZUZvclZpZXc6bV93ZWJWaWV3XTsK
LSAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJc1Nob3duID0gTk87Ci0gICAgfQorICAgIG1fY29y
cmVjdGlvblBhbmVsLmRpc21pc3MocmVhc29uRm9yRGlzbWlzc2luZyk7CiB9CiAKLWJvb2wgV2Vi
RWRpdG9yQ2xpZW50Ojppc1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwoKQorU3RyaW5nIFdlYkVkaXRv
ckNsaWVudDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oUmVhc29uRm9yRGlzbWlzc2luZ0Nv
cnJlY3Rpb25QYW5lbCByZWFzb25Gb3JEaXNtaXNzaW5nKQogewotICAgIHJldHVybiBtX2NvcnJl
Y3Rpb25QYW5lbElzU2hvd247CisgICAgcmV0dXJuIG1fY29ycmVjdGlvblBhbmVsLmRpc21pc3NT
b29uKHJlYXNvbkZvckRpc21pc3NpbmcpOwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVj
b3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVz
cG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKIHsKLSAgICBOU0NvcnJlY3Rpb25SZXNwb25z
ZSBzcGVsbENoZWNrZXJSZXNwb25zZSA9IHJlc3BvbnNlVHlwZSA9PSBFZGl0b3JDbGllbnQ6OkF1
dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQgPyBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkIDogTlND
b3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7Ci0gICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVs
bENoZWNrZXJdIHJlY29yZFJlc3BvbnNlOnNwZWxsQ2hlY2tlclJlc3BvbnNlIHRvQ29ycmVjdGlv
bjpyZXBsYWNlbWVudFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nIGxhbmd1YWdlOm5pbCBp
blNwZWxsRG9jdW1lbnRXaXRoVGFnOlttX3dlYlZpZXcgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWdd
XTsKKyAgICBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSA9IHJlc3BvbnNlVHlwZSA9PSBF
ZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQgPyBOU0NvcnJlY3Rpb25SZXNwb25z
ZVJldmVydGVkIDogTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7CisgICAgQ29ycmVjdGlvblBh
bmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKG1fd2ViVmlldywgcmVzcG9uc2UsIHJl
cGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDg0NzQ4ZTVjY2VlZGNhOGNiYmU1ODVkOTU0NWY2
NmRlMGU4ZmQ4OWUuLjU5ZWI4MGM2MWM4YjMwMTNhMTNkZjM2YzY5OGNiMmM4MWY0NWY5ODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTUzMTEsNiArNTMxMSwxNiBAQCBz
dGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpTVmFsdWUoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIGpzVmFsdQogCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEJVSUxESU5H
X09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCistICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJl
c3VsdDooTlNTdHJpbmcqKXJlc3VsdAoreworICAgIFdlYkZyYW1lICp3ZWJGcmFtZSA9IFtzZWxm
IF9zZWxlY3RlZE9yTWFpbkZyYW1lXTsKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh3ZWJG
cmFtZSk7CisgICAgaWYgKGNvcmVGcmFtZSkKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+
aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KHJlc3VsdCk7Cit9CisjZW5kaWYKKwogQGVuZAog
CiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld1VuZG9hYmxlRWRpdGluZykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCBhNGVhODA5YjAwMWRi
YzZhNjcyMzRmMTcyZjAyMGJjMzRjZjdlODRjLi5jYjk0ODUxMzdkYjA2ZjkxZjY5ZDEzYWEwNzQz
MjUyZGRmYzRlNWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oCkBAIC02NDQsNyArNjQ0LDkgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEku
CiAtICh2b2lkKXNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ6KEJPT0wpZmxh
ZzsKIC0gKHZvaWQpdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uOihpZClzZW5kZXI7
CiAjZW5kaWYKLQorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
CistICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcqKXJlc3VsdDsK
KyNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdFZGl0aW5nSW5NYWls
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDJlNDE2NDAzZDJjY2E5MzQ5MTljMzg4NjJmY2RhODE0ODdhYWRkMzIu
LjgxZGYwYzg3ZTlmNTIzMDUzYmUyMTE5MTc1MjZhZTE5OWMzMDc4YWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1OSBAQAorMjAxMS0wMy0yMiAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIb29rIHVwIG5ldyBB
cHBLaXQgYXV0b2NvcnJlY3Rpb24gVUkgd2l0aCBXSzIuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA1NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
ODk0NzQ2Mz4KKworICAgICAgICBQbGVhc2Ugc2VlIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBkZXRh
aWwuCisKKyAgICAgICAgVGhlIGNhbGxzIHRvIEFwcEtpdCBhcmUgaW1wbGVtZW50ZWQgaW4gUGFn
ZUNsaWVudEltcGwuIE90aGVyIGNoYW5nZXMgYXJlIG5lY2Vzc2FyeSBmb3IgdGhlCisgICAgICAg
IHBsdW1iaW5nIHdvcmsuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50
SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2hvd0NvcnJlY3Rpb25QYW5lbCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxT
b29uKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlY29yZEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAg
ICAgICAgKC1bV0tWaWV3IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnXSk6CisgICAgICAgICgtW1dL
VmlldyBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dDb3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1
bHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
Q29ycmVjdGlvblBhbmVsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDb3JyZWN0aW9uUGFu
ZWw6OmlzU2hvd2luZyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwu
bW06IEFkZGVkLgorICAgICAgICAoY29ycmVjdGlvbkJ1YmJsZVR5cGUpOgorICAgICAgICAoV2Vi
S2l0OjpDb3JyZWN0aW9uUGFuZWw6OkNvcnJlY3Rpb25QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6
OkNvcnJlY3Rpb25QYW5lbDo6fkNvcnJlY3Rpb25QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OkNv
cnJlY3Rpb25QYW5lbDo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6
ZGlzbWlzcyk6CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzc1Nvb24p
OgorICAgICAgICAoV2ViS2l0OjpDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3NJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3JyZWN0aW9uUGFu
ZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3JyZWN0aW9u
UGFuZWxTb29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpyZWNvcmRBdXRv
Y29ycmVjdGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUNvcnJlY3Rpb25QYW5lbFJl
c3VsdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxMS0wMy0yMiAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
UGFnZUNsaWVudEltcGwuaAppbmRleCAzMzhmNzc2ODFmOTFjNzNjMjdjZGRiZWJmNjRkNmRmMDg5
NTYyY2MxLi45OWJlNDMxMGQ4Y2VhZjU3MjQ1OTgwYThkMzBkMjk2YmY5MDNkZjgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUGFnZUNsaWVudEltcGxfaAogI2RlZmluZSBQYWdlQ2xp
ZW50SW1wbF9oCiAKKyNpbmNsdWRlICJDb3JyZWN0aW9uUGFuZWwuaCIKICNpbmNsdWRlICJQYWdl
Q2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC0xMDQsOCArMTA1LDE2
IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybURpY3Rpb25hcnlMb29r
dXAoY29uc3QgU3RyaW5nJiwgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBEaWN0aW9uYXJ5UG9w
dXBJbmZvJik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3Jl
OjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFj
ZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVj
dG9yPFdURjo6U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOworICAgIHZp
cnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21p
c3NpbmdDb3JyZWN0aW9uUGFuZWwpOworICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NDb3JyZWN0
aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwp
OworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6
OkVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFdURjo6U3Ry
aW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5n
KTsKKwogICAgIFdLVmlldyogbV93a1ZpZXc7CiAgICAgUmV0YWluUHRyPFdlYkVkaXRvclVuZG9U
YXJnZXRPYmpDPiBtX3VuZG9UYXJnZXQ7CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19M
RU9QQVJEKQorICAgIENvcnJlY3Rpb25QYW5lbCBtX2NvcnJlY3Rpb25QYW5lbDsKKyNlbmRpZgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IGUzNTAzZGU2Zjg3ZjY5OWZiNzY3
YzYyMjZlNDlmNTNjMWZjOTQ0NjAuLmM2MjQ0NWJmZGNiMmM3MjgxNzcxMWI2YjI3YmEyN2UzZDg0
ZDcwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VD
bGllbnRJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VD
bGllbnRJbXBsLm1tCkBAIC00MjcsNCArNDI3LDM3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRp
ZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IFN0cmluZyYgdGV4dCwgZG91YmxlIHNjYWxl
CiAgICAgW21fd2tWaWV3IHNob3dEZWZpbml0aW9uRm9yQXR0cmlidXRlZFN0cmluZzphdHRyaWJ1
dGVkU3RyaW5nLmdldCgpIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFthdHRyaWJ1dGVkU3RyaW5nLmdl
dCgpIGxlbmd0aF0pIG9wdGlvbnM6b3B0aW9ucyBiYXNlbGluZU9yaWdpblByb3ZpZGVyOl4oTlNS
YW5nZSBhZGp1c3RlZFJhbmdlKSB7IHJldHVybiAoTlNQb2ludCl0ZXh0QmFzZWxpbmVPcmlnaW47
IH1dOwogfQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzaG93Q29ycmVjdGlvblBhbmVsKENvcnJl
Y3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSB0eXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0
aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQoreworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1df
TEVPUEFSRCkKKyAgICBpZiAoIWlzVmlld1Zpc2libGUoKSB8fCAhaXNWaWV3SW5XaW5kb3coKSkK
KyAgICAgICAgcmV0dXJuOworICAgIG1fY29ycmVjdGlvblBhbmVsLnNob3cobV93a1ZpZXcsIHR5
cGUsIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2Vt
ZW50U3RyaW5nLCBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CisjZW5kaWYKK30KKwor
dm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNt
aXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbikKK3sKKyNpZiAhZGVmaW5lZChCVUlMRElOR19P
Tl9TTk9XX0xFT1BBUkQpCisgICAgbV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhyZWFzb24pOwor
I2VuZGlmCit9CisKK1N0cmluZyBQYWdlQ2xpZW50SW1wbDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5l
bFNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24p
Cit7CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgIHJldHVybiBt
X2NvcnJlY3Rpb25QYW5lbC5kaXNtaXNzU29vbihyZWFzb24pOworI2Vsc2UKKyAgICByZXR1cm4g
U3RyaW5nKCk7CisjZW5kaWYKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVjb3JkQXV0b2Nv
cnJlY3Rpb25SZXNwb25zZShFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBl
IHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5n
JiByZXBsYWNlbWVudFN0cmluZykKK3sKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xF
T1BBUkQpCisgICAgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2UgPSByZXNwb25zZVR5cGUg
PT0gRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJldmVydGVkID8gTlNDb3JyZWN0aW9uUmVz
cG9uc2VSZXZlcnRlZCA6IE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOworICAgIENvcnJlY3Rp
b25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShtX3drVmlldywgcmVzcG9uc2Us
IHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CisjZW5kaWYKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0KaW5kZXggYjUwZDY0YjMzNDU4MWU4Y2MzMDA4YTEwMmIyNTk0ODRiNDc3Yzg3OS4uYzIzMmEw
MmU2NTJjZDZjMjZjOGQ4M2RhNTQxNjg3MWNkMTdkMjk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMTQ5LDYgKzE0OSw5IEBAIHR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIFZhbGlkYXRpb25WZWN0b3I+IFZhbGlkYXRpb25NYXA7CiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQogICAgIFJldGFpblB0cjxXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyPiBfZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI7CiAjZW5kaWYKKworICAgIEJPT0wgX2hh
c1NwZWxsQ2hlY2tlckRvY3VtZW50VGFnOworICAgIE5TSW50ZWdlciBfc3BlbGxDaGVja2VyRG9j
dW1lbnRUYWc7CiB9CiBAZW5kCiAKQEAgLTIwNjEsNSArMjA2NCwxOSBAQCBzdGF0aWMgdm9pZCBk
cmF3UGFnZUJhY2tncm91bmQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdlYlBhZ2VQcm94eSogcGFn
ZSwgY29uc3QgSQogICAgIF9kYXRhLT5fcGFnZS0+cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExv
Y2F0aW9uKEZsb2F0UG9pbnQodGhlUG9pbnQueCwgdGhlUG9pbnQueSkpOwogfQogCistIChOU0lu
dGVnZXIpc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcKK3sKKyAgICBpZiAoIV9kYXRhLT5faGFzU3Bl
bGxDaGVja2VyRG9jdW1lbnRUYWcpIHsKKyAgICAgICAgX2RhdGEtPl9zcGVsbENoZWNrZXJEb2N1
bWVudFRhZyA9IFtOU1NwZWxsQ2hlY2tlciB1bmlxdWVTcGVsbERvY3VtZW50VGFnXTsKKyAgICAg
ICAgX2RhdGEtPl9oYXNTcGVsbENoZWNrZXJEb2N1bWVudFRhZyA9IFlFUzsKKyAgICB9CisgICAg
cmV0dXJuIF9kYXRhLT5fc3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7Cit9CisKKy0gKHZvaWQpaGFu
ZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OihOU1N0cmluZyopcmVzdWx0Cit7CisgICAgX2RhdGEt
Pl9wYWdlLT5oYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQocmVzdWx0KTsKK30KKwogQGVuZAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdQcml2YXRlLmgK
aW5kZXggY2VjZTFjNzQwYjc3MmM3ZWM2MmM2ZGJlOTZiZmMwZDYzNjI0YWUzNy4uMzdjMmQ4ZGQ4
MWZiMjg2NWEyMThiMTI5OGY0YzJiOGNhNmJlYzUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld1ByaXZhdGUuaApAQCAtMzUsNCArMzUsNiBAQAogCiAt
ICh2b2lkKXBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRDdXJyZW50TW91c2VMb2NhdGlvbjsKIAor
LSAoTlNJbnRlZ2VyKXNwZWxsQ2hlY2tlckRvY3VtZW50VGFnOworLSAodm9pZCloYW5kbGVDb3Jy
ZWN0aW9uUGFuZWxSZXN1bHQ6KE5TU3RyaW5nKilyZXN1bHQ7CiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCAxMGJkMDc4N2E0NGI5NTNiY2EzODg3NzU1NmM0OWI2
YjBiZGVhNmZiLi4xNWQ4ZGUzNjBhNDkzMjE3MjhkNmI0MmRiNmIxYmE5YmJkMmYwYTgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTEzMCw2ICsxMzAsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb21wbGV4VGV4dElucHV0RW5hYmxlZCh1aW50NjRf
dCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgYm9vbCBjb21wbGV4VGV4dElucHV0
RW5hYmxlZCkgPSAwOwogICAgIHZpcnR1YWwgQ0dDb250ZXh0UmVmIGNvbnRhaW5pbmdXaW5kb3dH
cmFwaGljc0NvbnRleHQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1EaWN0aW9u
YXJ5TG9va3VwKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBzY2FsZUZhY3RvciwgY29uc3QgRGljdGlv
bmFyeVBvcHVwSW5mbyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5l
bChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmlu
ZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywg
Y29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3Mp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpS
ZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKSA9IDA7CisgICAgdmlydHVhbCBTdHJp
bmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2lu
Z0NvcnJlY3Rpb25QYW5lbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVj
dGlvblJlc3BvbnNlKFdlYkNvcmU6OkVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNwb25z
ZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJp
bmcmIHJlcGxhY2VtZW50U3RyaW5nKSA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1lKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAyOWU4ZThhMjBlM2I0ZTJlMWY3ODRi
MjVkYTQzN2RhYjE3NjEwMjNkLi5iOTU4NjVjZWExMjA5ZDYxZWY2NWFiMGNmZDMzOTkxNzA3Nzhh
MmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTQx
OSw2ICsxNDE5LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpBcmd1CiAgICAgaWYgKCFhcmd1bWVu
dHMtPmRlY29kZShtZXNzYWdlRGVjb2RlcikpCiAgICAgICAgIHJldHVybjsKIAorI2lmIFBMQVRG
T1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgIGRpc21p
c3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbElnbm9y
ZWQpOworI2VuZGlmCisKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2Vi
RnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKQEAgLTI3NjUsNCAr
Mjc2OSwzNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0Zv
bGRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYQogICAgIG1fdWlDbGllbnQuc2F2ZURh
dGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcih0aGlzLCBzdWdnZXN0ZWRGaWxlbmFtZSwgbWltZVR5
cGUsIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBkYXRhKTsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQordm9pZCBXZWJQYWdlUHJveHk6
OnNob3dDb3JyZWN0aW9uUGFuZWwoaW50MzJfdCBwYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29u
c3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCit7
CisgICAgbV9wYWdlQ2xpZW50LT5zaG93Q29ycmVjdGlvblBhbmVsKChXZWJDb3JlOjpDb3JyZWN0
aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUpcGFuZWxUeXBlLCBib3VuZGluZ0JveE9mUmVwbGFjZWRT
dHJpbmcsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZywgYWx0ZXJuYXRpdmVSZXBs
YWNlbWVudFN0cmluZ3MpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbChpbnQzMl90IHJlYXNvbikKK3sKKyAgICBtX3BhZ2VDbGllbnQtPmRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWwoKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwp
cmVhc29uKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxT
b29uKGludDMyX3QgcmVhc29uLCBTdHJpbmcmIHJlc3VsdCkKK3sKKyAgICByZXN1bHQgPSBtX3Bh
Z2VDbGllbnQtPmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKChXZWJDb3JlOjpSZWFzb25Gb3JE
aXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKXJlYXNvbik7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5
OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9uc2VUeXBlLCBjb25z
dCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNl
bWVudFN0cmluZykKK3sKKyAgICBtX3BhZ2VDbGllbnQtPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2UoKFdlYkNvcmU6OkVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUp
cmVzcG9uc2VUeXBlLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpOworfQorI2Vu
ZGlmCisKKyNpZiBQTEFURk9STShNQUMpCit2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQ29ycmVj
dGlvblBhbmVsUmVzdWx0KGNvbnN0IFdURjo6U3RyaW5nJiByZXN1bHQpCit7CisjaWYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgIGlmICghaXNDbG9zZWQoKSkKKyAgICAg
ICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVDb3JyZWN0aW9uUGFu
ZWxSZXN1bHQocmVzdWx0KSwgbV9wYWdlSUQsIDApOworI2VuZGlmCit9CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggNWU4MmMyZDllMDcyY2IxODdjMjk2MDc0MDViNGU1ZGQwYjRjOTJkOS4uM2Y5ZWUwNWNl
OTUyZGY5YTIzODFkNmY5OWI3NjExYWU4YjM5MGViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtNDUwLDYgKzQ1MCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGZsYXNoQmFja2luZ1N0b3JlVXBkYXRlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4m
IHVwZGF0ZVJlY3RzKTsKIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lkIGhhbmRsZUNvcnJl
Y3Rpb25QYW5lbFJlc3VsdChjb25zdCBXVEY6OlN0cmluZyYgcmVzdWx0KTsKKyNlbmRpZgorCiAg
ICAgc3RhdGljIHZvaWQgc2V0RGVidWdQYWludEZsYWdzKFdLUGFnZURlYnVnUGFpbnRGbGFncyBm
bGFncykgeyBzX2RlYnVnUGFpbnRGbGFncyA9IGZsYWdzOyB9CiAgICAgc3RhdGljIFdLUGFnZURl
YnVnUGFpbnRGbGFncyBkZWJ1Z1BhaW50RmxhZ3MoKSB7IHJldHVybiBzX2RlYnVnUGFpbnRGbGFn
czsgfQogCkBAIC02NDMsNiArNjQ3LDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGluaXRpYWxp
emVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmKTsKIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fU05PV19MRU9QQVJEKQorICAgIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChpbnQzMl90
IHBhbmVsVHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFj
ZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpT
dHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBhbHRl
cm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CisgICAgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBh
bmVsKGludDMyX3QgcmVhc29uKTsKKyAgICB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29u
KGludDMyX3QgcmVhc29uLCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCByZWNvcmRBdXRvY29y
cmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9uc2VUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7Cisj
ZW5kaWYKKwogICAgIFBhZ2VDbGllbnQqIG1fcGFnZUNsaWVudDsKICAgICBXZWJMb2FkZXJDbGll
bnQgbV9sb2FkZXJDbGllbnQ7CiAgICAgV2ViUG9saWN5Q2xpZW50IG1fcG9saWN5Q2xpZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggYzgxMmFlMTYyNTdiYmI4ODJhYjc1ZWQ4MDcxYzY2Y2IxYzMwOTZiMi4uODNkNDM3MGY5
MjQyNTVmMWM4YmZmMGVmYTQ4MzljOTY4MzAzZjBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMDgsNCArMjA4LDEyIEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIFN0YXJ0
RHJhZ0Ryb3AoV2ViQ29yZTo6SW50UG9pbnQgaW1hZ2VQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQg
ZHJhZ1BvaW50LCB1aW50NjRfdCBva0VmZmVjdCwgSGFzaE1hcDxVSU5ULFZlY3RvcjxTdHJpbmc+
ID4gZGF0YU1hcCwgV2ViQ29yZTo6SW50U2l6ZSBkcmFnSW1hZ2VTaXplLCBXZWJLaXQ6OlNoYXJl
ZE1lbW9yeTo6SGFuZGxlIGRyYWdJbWFnZSwgYm9vbCBsaW5rRHJhZykKICNlbmRpZgorCisjaWYg
UExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisgICAg
IyBBdXRvY29ycmVjdGlvbiBtZXNzYWdlcworICAgIFNob3dDb3JyZWN0aW9uUGFuZWwoaW50MzJf
dCBwYW5lbFR5cGUsIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJp
bmcsIFdURjo6U3RyaW5nIHJlcGxhY2VkU3RyaW5nLCBXVEY6OlN0cmluZyByZXBsYWNlbWVudFN0
cmluZywgVmVjdG9yPFdURjo6U3RyaW5nPiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykK
KyAgICBEaXNtaXNzQ29ycmVjdGlvblBhbmVsKGludDMyX3QgcmVhc29uKQorICAgIERpc21pc3ND
b3JyZWN0aW9uUGFuZWxTb29uKGludDMyX3QgcmVhc29uKSAtPiAoU3RyaW5nIHJlc3VsdCkKKyAg
ICBSZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9uc2VUeXBlLCBXVEY6
OlN0cmluZyByZXBsYWNlZFN0cmluZywgV1RGOjpTdHJpbmcgcmVwbGFjZW1lbnRTdHJpbmcpOwor
I2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJl
Y3Rpb25QYW5lbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFu
ZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42MzUyZTYxYTE4ZjZjZWU5NjlhZDM2ZTljY2JiNzM5YTFjMDFmMzMz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0
aW9uUGFuZWwuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb3JyZWN0
aW9uUGFuZWxfaAorI2RlZmluZSBDb3JyZWN0aW9uUGFuZWxfaAorCisjaWYgIWRlZmluZWQoQlVJ
TERJTkdfT05fU05PV19MRU9QQVJEKQorI2ltcG9ydCA8QXBwS2l0L05TVGV4dENoZWNrZXIuaD4K
KyNpbXBvcnQgPEphdmFzY3JpcHRDb3JlL1JldGFpblB0ci5oPgorI2ltcG9ydCA8V2ViQ29yZS9D
b3JyZWN0aW9uUGFuZWxJbmZvLmg+CisKK0BjbGFzcyBXS1ZpZXc7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBDb3JyZWN0aW9uUGFuZWwgeworcHVibGljOgorICAgIENvcnJlY3Rpb25Q
YW5lbCgpOworICAgIH5Db3JyZWN0aW9uUGFuZWwoKTsKKyAgICB2b2lkIHNob3coV0tWaWV3Kiwg
V2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBs
YWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKKyAgICB2b2lkIGRpc21p
c3MoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7CisgICAgU3Ry
aW5nIGRpc21pc3NTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFu
ZWwpOworICAgIHN0YXRpYyB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV0tWaWV3
KiwgTlNDb3JyZWN0aW9uUmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOworCitwcml2YXRlOgorICAgIGJvb2wgaXNT
aG93aW5nKCkgY29uc3QgeyByZXR1cm4gbV92aWV3OyB9CisgICAgdm9pZCBkaXNtaXNzSW50ZXJu
YWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCwgYm9vbCBkaXNt
aXNzaW5nRXh0ZXJuYWxseSk7CisgICAgdm9pZCBoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KE5T
U3RyaW5nKiBhY2NlcHRlZFJlcGxhY2VtZW50LCBOU1N0cmluZyogcmVwbGFjZWQsIE5TU3RyaW5n
KiBwcm9wb3NlZFJlcGxhY2VtZW50LCBOU0NvcnJlY3Rpb25CdWJibGVUeXBlKTsKKworICAgIGJv
b2wgbV93YXNEaXNtaXNzZWRFeHRlcm5hbGx5OworICAgIFdlYkNvcmU6OlJlYXNvbkZvckRpc21p
c3NpbmdDb3JyZWN0aW9uUGFuZWwgbV9yZWFzb25Gb3JEaXNtaXNzaW5nOworICAgIFJldGFpblB0
cjxXS1ZpZXc+IG1fdmlldzsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fcmVzdWx0Rm9yU3lu
Y2hyb25vdXNEaXNtaXNzYWw7CisgICAgUmV0YWluUHRyPE5TQ29uZGl0aW9uPiBtX3Jlc3VsdENv
bmRpdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gIWRlZmlu
ZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorCisjZW5kaWYgLy8gQ29ycmVjdGlvblBhbmVs
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBh
bmVsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjU2NjNmNjQ5NTZlZTlkNTMzNTg5MDU1NWFkOTdiOWZhMDAyMDY1MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBh
bmVsLm1tCkBAIC0wLDAgKzEsMTcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorI2ltcG9ydCAiQ29ycmVj
dGlvblBhbmVsLmgiCisKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiV0tWaWV3
LmgiCisjaW1wb3J0ICJXS1ZpZXdQcml2YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworc3RhdGljIGlubGluZSBOU0NvcnJlY3Rpb25CdWJi
bGVUeXBlIGNvcnJlY3Rpb25CdWJibGVUeXBlKENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlw
ZSBwYW5lbFR5cGUpCit7CisgICAgc3dpdGNoIChwYW5lbFR5cGUpIHsKKyAgICBjYXNlIENvcnJl
Y3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZUNvcnJlY3Rpb246CisgICAgICAgIHJldHVybiBOU0Nv
cnJlY3Rpb25CdWJibGVUeXBlQ29ycmVjdGlvbjsKKyAgICBjYXNlIENvcnJlY3Rpb25QYW5lbElu
Zm86OlBhbmVsVHlwZVJldmVyc2lvbjoKKyAgICAgICAgcmV0dXJuIE5TQ29ycmVjdGlvbkJ1YmJs
ZVR5cGVSZXZlcnNpb247CisgICAgY2FzZSBDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGVT
cGVsbGluZ1N1Z2dlc3Rpb25zOgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uQnViYmxlVHlw
ZUd1ZXNzZXM7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBO
U0NvcnJlY3Rpb25CdWJibGVUeXBlQ29ycmVjdGlvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK0NvcnJlY3Rpb25QYW5lbDo6Q29ycmVjdGlvblBhbmVsKCkKKyAgICA6IG1fd2FzRGlzbWlz
c2VkRXh0ZXJuYWxseShmYWxzZSkKKyAgICAsIG1fcmVhc29uRm9yRGlzbWlzc2luZyhSZWFzb25G
b3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsSWdub3JlZCkKKyAgICAsIG1fcmVzdWx0Q29uZGl0
aW9uKEFkb3B0TlMsIFtbTlNDb25kaXRpb24gYWxsb2NdIGluaXRdKQoreworfQorCitDb3JyZWN0
aW9uUGFuZWw6On5Db3JyZWN0aW9uUGFuZWwoKQoreworICAgIGRpc21pc3NJbnRlcm5hbChSZWFz
b25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsSWdub3JlZCwgZmFsc2UpOworfQorCit2b2lk
IENvcnJlY3Rpb25QYW5lbDo6c2hvdyhXS1ZpZXcqIHZpZXcsIENvcnJlY3Rpb25QYW5lbEluZm86
OlBhbmVsVHlwZSB0eXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0
cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRT
dHJpbmdzKQoreworICAgIGRpc21pc3NJbnRlcm5hbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVj
dGlvblBhbmVsSWdub3JlZCwgZmFsc2UpOworICAgIAorICAgIGlmICghdmlldykKKyAgICAgICAg
cmV0dXJuOworCisgICAgTlNTdHJpbmcqIHJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyA9IHJlcGxh
Y2VkU3RyaW5nOworICAgIE5TU3RyaW5nKiByZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgPSBy
ZXBsYWNlbWVudFN0cmluZzsKKyAgICBtX3ZpZXcgPSB2aWV3OworICAgIE5TQ29ycmVjdGlvbkJ1
YmJsZVR5cGUgYnViYmxlVHlwZSA9IGNvcnJlY3Rpb25CdWJibGVUeXBlKHR5cGUpOworICAgIAor
ICAgIE5TTXV0YWJsZUFycmF5KiBhbHRlcm5hdGl2ZVN0cmluZ3MgPSAwOworICAgIGlmICghYWx0
ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MuaXNFbXB0eSgpKSB7CisgICAgICAgIHNpemVfdCBz
aXplID0gYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3Muc2l6ZSgpOworICAgICAgICBhbHRl
cm5hdGl2ZVN0cmluZ3MgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2l6ZV07
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAg
W2FsdGVybmF0aXZlU3RyaW5ncyBhZGRPYmplY3Q6KE5TU3RyaW5nKilhbHRlcm5hdGl2ZVJlcGxh
Y2VtZW50U3RyaW5nc1tpXV07CisgICAgfQorCisgICAgTlNTcGVsbENoZWNrZXIqIHNwZWxsQ2hl
Y2tlciA9IFtOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdOworICAgIFtzcGVsbENo
ZWNrZXIgc2hvd0NvcnJlY3Rpb25CdWJibGVPZlR5cGU6YnViYmxlVHlwZSBwcmltYXJ5U3RyaW5n
OnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRp
dmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcgdmll
dzptX3ZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyogYWNjZXB0ZWRTdHJp
bmcpIHsKKyAgICAgICAgaGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVudChhY2NlcHRlZFN0cmluZywg
cmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcsIGJ1
YmJsZVR5cGUpOworICAgIH1dOworfQorCit2b2lkIENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzcyhS
ZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbikKK3sKKyAgICBkaXNtaXNz
SW50ZXJuYWwocmVhc29uLCB0cnVlKTsKK30KKworU3RyaW5nIENvcnJlY3Rpb25QYW5lbDo6ZGlz
bWlzc1Nvb24oUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24pCit7Cisg
ICAgaWYgKCFpc1Nob3dpbmcoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgZGlz
bWlzc0ludGVybmFsKHJlYXNvbiwgdHJ1ZSk7CisgICAgW21fcmVzdWx0Q29uZGl0aW9uLmdldCgp
IGxvY2tdOworICAgIHdoaWxlICghbV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rpc21pc3NhbCkKKyAg
ICAgICAgW21fcmVzdWx0Q29uZGl0aW9uLmdldCgpIHdhaXRdOworICAgIFttX3Jlc3VsdENvbmRp
dGlvbi5nZXQoKSB1bmxvY2tdOworICAgIHJldHVybiBtX3Jlc3VsdEZvclN5bmNocm9ub3VzRGlz
bWlzc2FsLmdldCgpOworfQorCit2b2lkIENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzc0ludGVybmFs
KFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uLCBib29sIGRpc21pc3Np
bmdFeHRlcm5hbGx5KQoreworICAgIG1fd2FzRGlzbWlzc2VkRXh0ZXJuYWxseSA9IGRpc21pc3Np
bmdFeHRlcm5hbGx5OworICAgIGlmICghaXNTaG93aW5nKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBtX3JlYXNvbkZvckRpc21pc3NpbmcgPSByZWFzb247CisgICAgbV9yZXN1bHRGb3JT
eW5jaHJvbm91c0Rpc21pc3NhbC5jbGVhcigpOworICAgIGlmIChyZWFzb24gPT0gUmVhc29uRm9y
RGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbEFjY2VwdGVkKQorICAgICAgICBbW05TU3BlbGxDaGVj
a2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gZGlzbWlzc0NvcnJlY3Rpb25CdWJibGVGb3JWaWV3Om1f
dmlldy5nZXQoKV07CisgICAgZWxzZQorICAgICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNw
ZWxsQ2hlY2tlcl0gY2FuY2VsQ29ycmVjdGlvbkJ1YmJsZUZvclZpZXc6bV92aWV3LmdldCgpXTsK
KyAgICBtX3ZpZXcuY2xlYXIoKTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoV0tWaWV3KiB2aWV3LCBOU0NvcnJlY3Rpb25SZXNwb25zZSBy
ZXNwb25zZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudFN0cmluZykKK3sKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tl
cl0gcmVjb3JkUmVzcG9uc2U6cmVzcG9uc2UgdG9Db3JyZWN0aW9uOnJlcGxhY2VtZW50U3RyaW5n
IGZvcldvcmQ6cmVwbGFjZWRTdHJpbmcgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhU
YWc6W3ZpZXcgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWddXTsKK30KKwordm9pZCBDb3JyZWN0aW9u
UGFuZWw6OmhhbmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQoTlNTdHJpbmcqIGFjY2VwdGVkUmVwbGFj
ZW1lbnQsIE5TU3RyaW5nKiByZXBsYWNlZCwgTlNTdHJpbmcqIHByb3Bvc2VkUmVwbGFjZW1lbnQs
ICBOU0NvcnJlY3Rpb25CdWJibGVUeXBlIGNvcnJlY3Rpb25CdWJibGVUeXBlKQoreworICAgIE5T
U3BlbGxDaGVja2VyKiBzcGVsbENoZWNrZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxD
aGVja2VyXTsKKyAgICBOU0ludGVnZXIgZG9jdW1lbnRUYWcgPSBbbV92aWV3LmdldCgpIHNwZWxs
Q2hlY2tlckRvY3VtZW50VGFnXTsKKyAgICAKKyAgICBzd2l0Y2ggKGNvcnJlY3Rpb25CdWJibGVU
eXBlKSB7CisgICAgY2FzZSBOU0NvcnJlY3Rpb25CdWJibGVUeXBlQ29ycmVjdGlvbjoKKyAgICAg
ICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQpCisgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJl
Y29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlQWNjZXB0ZWQgdG9Db3JyZWN0aW9uOmFj
Y2VwdGVkUmVwbGFjZW1lbnQgZm9yV29yZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVsbERv
Y3VtZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
aWYgKCFtX3dhc0Rpc21pc3NlZEV4dGVybmFsbHkgfHwgbV9yZWFzb25Gb3JEaXNtaXNzaW5nID09
IFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxDYW5jZWxsZWQpCisgICAgICAgICAg
ICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZVJl
amVjdGVkIHRvQ29ycmVjdGlvbjpwcm9wb3NlZFJlcGxhY2VtZW50IGZvcldvcmQ6cmVwbGFjZWQg
bGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6
TlNDb3JyZWN0aW9uUmVzcG9uc2VJZ25vcmVkIHRvQ29ycmVjdGlvbjpwcm9wb3NlZFJlcGxhY2Vt
ZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6
ZG9jdW1lbnRUYWddOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTlNDb3Jy
ZWN0aW9uQnViYmxlVHlwZVJldmVyc2lvbjoKKyAgICAgICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1l
bnQpCisgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlv
blJlc3BvbnNlUmV2ZXJ0ZWQgdG9Db3JyZWN0aW9uOnJlcGxhY2VkIGZvcldvcmQ6YWNjZXB0ZWRS
ZXBsYWNlbWVudCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVudFRh
Z107CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUd1ZXNz
ZXM6CisgICAgICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQorICAgICAgICAgICAgW3NwZWxs
Q2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkIHRvQ29y
cmVjdGlvbjphY2NlcHRlZFJlcGxhY2VtZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6bmls
IGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgCisgICAgaWYgKCFtX3dhc0Rpc21pc3NlZEV4dGVybmFsbHkpIHsKKyAgICAgICAg
W21fdmlldy5nZXQoKSBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6YWNjZXB0ZWRSZXBsYWNl
bWVudF07CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgW21fcmVzdWx0Q29uZGl0
aW9uLmdldCgpIGxvY2tdOworICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQorICAgICAgICBt
X3Jlc3VsdEZvclN5bmNocm9ub3VzRGlzbWlzc2FsLmFkb3B0TlMoW2FjY2VwdGVkUmVwbGFjZW1l
bnQgY29weV0pOworICAgIFttX3Jlc3VsdENvbmRpdGlvbi5nZXQoKSBzaWduYWxdOworICAgIFtt
X3Jlc3VsdENvbmRpdGlvbi5nZXQoKSB1bmxvY2tdOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MzM4Nzc1YTMxZTdjNDk4Mjk5M2E1OWE4NmM2ZGIwNmY3OTNlOWFkZi4uMTczZjkwMGM2YmM5MTU4
Yjg4OGExZDgyNGFmYmQ2MDgwMWQyNjYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzcwLDYgKzM3MCw4IEBACiAJCTkzRkM2
N0JFMTJEM0NDRjIwMEE2MDYxMCAvKiBEZWNvZGVyQWRhcHRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGQzY3OUUxMkQzQ0M3NDAwQTYwNjEwIC8q
IERlY29kZXJBZGFwdGVyLmggKi87IH07CiAJCTkzRkM2N0JGMTJEM0NDRjIwMEE2MDYxMCAvKiBF
bmNvZGVyQWRhcHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0ZDNjc5RjEyRDNDQzc0MDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuY3BwICov
OyB9OwogCQk5M0ZDNjdDMDEyRDNDQ0YyMDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkM2N0EwMTJEM0ND
NzQwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5oICovOyB9OworCQlCODc4QjYxNTEzMzQyOERD
MDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCODc4QjYxMzEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlv
blBhbmVsLmggKi87IH07CisJCUI4NzhCNjE2MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9u
UGFuZWwubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
ODc4QjYxNDEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1tICovOyB9OwogCQlC
QzAwOTJGNzExNTgzN0EzMDBFMEFFMkEgLyogUnVuTG9vcE1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDA5MkY1MTE1ODM3QTMwMEUwQUUyQSAv
KiBSdW5Mb29wTWFjLm1tICovOyB9OwogCQlCQzAwOTJGODExNTgzN0EzMDBFMEFFMkEgLyogV29y
a1F1ZXVlTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMDA5MkY2MTE1ODM3QTMwMEUwQUUyQSAvKiBXb3JrUXVldWVNYWMuY3BwICovOyB9Owog
CQlCQzAzMkQ3NTEwRjQzNzhEMDA1OEMxNUEgLyogV2ViQ2hyb21lQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAzMkQ2MDEwRjQzNzhEMDA1
OEMxNUEgLyogV2ViQ2hyb21lQ2xpZW50LmggKi87IH07CkBAIC0xMjM4LDYgKzEyNDAsOCBAQAog
CQk5M0ZDNjdBMDEyRDNDQzc0MDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW5jb2RlckFkYXB0ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTcyRDVEN0YxMjM2Q0JBODAwQTg4QjE1IC8qIFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjM5NkVBNTUx
MkUwRUQyRDAwRjRGRUI3IC8qIGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjg3OEI2MTMxMzM0
MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb3JyZWN0aW9uUGFuZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQjg3OEI2MTQxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvcnJlY3Rpb25QYW5lbC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMDkyRjUxMTU4MzdBMzAwRTBBRTJBIC8qIFJ1
bkxvb3BNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSdW5M
b29wTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAwOTJGNjExNTgzN0Ez
MDBFMEFFMkEgLyogV29ya1F1ZXVlTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdvcmtRdWV1ZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDMDMyRDYwMTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJDaHJvbWVDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ2hyb21lQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yOTI2LDIwICsyOTMwLDIyIEBACiAJCUJDQ0YwODVDMTEzRjNCNzUw
MEM2NTBDNSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAotCQkJCUNEQ0E4NURFMTMyQUQwNTMwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5TWFjLm1tICovLAotCQkJCUNEQ0E4NUM2MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyLm1tICovLAotCQkJCUNEQ0E4NUM3MTMyQUJBNEUwMEU5NjFERiAv
KiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggKi8sCiAJCQkJMUE2NDI5MkMxMkRFNUY5
ODAwQ0FBRTJDIC8qIEJhY2tpbmdTdG9yZU1hYy5tbSAqLywKIAkJCQlCQzI2NTFGNTExODI1RUY4
MDAyNDNFMTIgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlNYWMubW0gKi8sCisJCQkJ
Qjg3OEI2MTMxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5oICovLAorCQkJCUI4
NzhCNjE0MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gKi8sCiAJCQkJMUFB
NDE3RUQxMkMwMEQ4NzAwMkJFNjdCIC8qIFRleHRDaGVja2VyTWFjLm1tICovLAogCQkJCTFBMUM2
NDg2MTFGNDE1QjcwMDU1M0MxOSAvKiBXZWJDb250ZXh0TWFjLm1tICovLAogCQkJCTUxQUNCQjlF
MTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLmggKi8sCiAJCQkJNTFB
Q0JCOUYxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0gKi8sCisJ
CQkJQ0RDQTg1REUxMzJBRDA1MzAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlN
YWMubW0gKi8sCiAJCQkJMUNBOEI5MzUxMjdDNzc0RTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclBy
b3h5TWFjLm1tICovLAogCQkJCUJDODU3RTg1MTJCNzFFQkIwMEVERUIyRSAvKiBXZWJQYWdlUHJv
eHlNYWMubW0gKi8sCiAJCQkJQkM1NzUwOTUxMjY4RjNDNjAwNkYwRjEyIC8qIFdlYlBvcHVwTWVu
dVByb3h5TWFjLmggKi8sCiAJCQkJQkM1NzUwOTYxMjY4RjNDNjAwNkYwRjEyIC8qIFdlYlBvcHVw
TWVudVByb3h5TWFjLm1tICovLAogCQkJCUJDODRFQjE3MTJBNzEwMEMwMDgzRjJEQSAvKiBXZWJQ
cmVmZXJlbmNlc01hYy5tbSAqLywKKwkJCQlDRENBODVDNjEzMkFCQTRFMDBFOTYxREYgLyogV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSAqLywKKwkJCQlDRENBODVDNzEzMkFCQTRFMDBF
OTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovLAogCQkJKTsKIAkJCXBh
dGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzUzNyw2ICszNTQzLDcg
QEAKIAkJCQk1MTFCMjRBQjEzMkUwOTcyMDAwNjVBMEMgLyogV2ViSWNvbkRhdGFiYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MUQwMkY2QTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFi
YXNlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRDAyRjZDMTMyRUM3MzcwMEJFQUE5
NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQlC
ODc4QjYxNTEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTQxNDksNiArNDE1Niw3IEBACiAJCQkJNTExQjI0QUExMzJFMDk3MjAwMDY1QTBDIC8q
IFdlYkljb25EYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUQwMkY2NDEzMkVDNUI5
MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxRDAyRjZCMTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCODc4QjYxNjEzMzQyOERD
MDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2MEJG
RTExMzM4MURGOTAwOTE4OTk5IC8qIExvZ2dpbmcubWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAppbmRleCBmYTg0MjZhMzhlOTRmYmUzZjQxNjU5ODlmODE1MmYzYWQ3NGU2MDc4Li4x
MDA3NjRiMTYwNTkxZTMxOTgyZTY0ODEyYzYxMjc3MGFhNzNjMjBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKQEAgLTE0MSwxMCArMTQxLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9k
U3RhdGUoYm9vbCBlbmFibGVkKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZT
dHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpOwot
I2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3Jy
ZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91
bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0
ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MsIFdlYkNvcmU6OkVkaXRvciopOworI2lmIFBMQVRG
T1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgIHZpcnR1
YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkNvcnJlY3Rpb25QYW5lbEluZm86
OlBhbmVsVHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFj
ZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2Vt
ZW50U3RyaW5ncyk7CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2Vi
Q29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7Ci0gICAgdmlydHVhbCBi
b29sIGlzU2hvd2luZ0NvcnJlY3Rpb25QYW5lbCgpOworICAgIHZpcnR1YWwgU3RyaW5nIGRpc21p
c3NDb3JyZWN0aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0
aW9uUGFuZWwpOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNl
KEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRT
dHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CiAjZW5kaWYKICAg
ICBXZWJQYWdlKiBtX3BhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KaW5k
ZXggOGFmMDQzODBjMWZmZTg0ZDk1ZGQxZjA4MWZlYTAyMGFhOTE2NDk5Yy4uNjZkMDRjM2E5MWM2
ZjE5YjlmMWI2Y2E0NjgzYTgzMTMwYzc4MjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNs
aWVudE1hYy5tbQpAQCAtNDYsNyArNDYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV2ViUmVzb3VyY2UuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJOU1VSTEV4
dHJhcy5oPgotI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlM
RElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisj
aWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQogI2ltcG9ydCA8QXBwS2l0L05T
VGV4dENoZWNrZXIuaD4KICNlbmRpZgogCkBAIC0yNDYsMjYgKzI0NiwyNyBAQCB2b2lkIFdlYkVk
aXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBs
ZW5ndGgsIHVpbnQ2NAogICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6Q2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nKHRleHQsIGxlbmd0aCksIGNoZWNraW5nVHlw
ZXMpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBhcmFncmFwaDo6UmVwbHko
cmVzdWx0cykpOwogfQogCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6
OkNvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSB0eXBlLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJl
cGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncywgV2ViQ29yZTo6
RWRpdG9yKikKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCit2b2lkIFdl
YkVkaXRvckNsaWVudDo6c2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFu
ZWxJbmZvOjpQYW5lbFR5cGUgdHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGlu
Z0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlZFN0cmluZywg
Y29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvcnJlY3Rp
b25QYW5lbCh0eXBlLCBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5n
LCByZXBsYWNlbWVudFN0cmluZywgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpKTsKIH0K
IAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6
UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3Jy
ZWN0aW9uUGFuZWwgcmVhc29uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9uUGFuZWwocmVh
c29uKSk7CiB9CiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc1Nob3dpbmdDb3JyZWN0aW9uUGFu
ZWwoKQorU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24o
V2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24pCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgU3RyaW5nIHJlc3Vs
dDsKKyAgICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3ND
b3JyZWN0aW9uUGFuZWxTb29uKHJlYXNvbiksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21p
c3NDb3JyZWN0aW9uUGFuZWxTb29uOjpSZXBseShyZXN1bHQpKTsKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25z
ZShFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwg
Y29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0
cmluZykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpSZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKHJlc3BvbnNlVHlw
ZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKSk7CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGRhNzdi
MGI0OTk4YzY1YWM2ZmFkZjNhOWVkYjY2ZmEwNmU5ODkwODguLjFmYzBjNWY1NmQyMTliZDA2NDEw
MGYxMDZhNmI3MjliMmI4MzA3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIxMzEsNCArMjEzMSwxNCBAQCBib29sIFdlYlBhZ2U6OmNh
bkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQog
ICAgIHJldHVybiBwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCk7CiB9CiAKKyNpZiBQ
TEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKK3ZvaWQg
V2ViUGFnZTo6aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KGNvbnN0IFdURjo6U3RyaW5nJiBy
ZXN1bHQpCit7CisgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KHJlc3VsdCk7
Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhNTczZGUyMzI0MjJiOWFkNDU2YzVmMmFi
YTI1YzY1OWZiMTE4ODBjLi42NjdiNjk5YzhiZDk3YjI2MGNlNzVmMjkxNGJkMzJhMDMwMDA4MDFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTM2
MSw2ICszNjEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RHJhZ1NvdXJjZShOU09iamVjdCAq
KTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9T
Tk9XX0xFT1BBUkQpCisgICAgdm9pZCBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQoY29uc3Qg
V1RGOjpTdHJpbmcmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3Qg
cGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5k
ZXggNjRmN2RhZmQwODYwMjgyZjUzODQxNjIzMDU0MGFhMTg5YjIxMTkyMi4uNDM1ZWQxMTI1NTAy
NmZjMjJjZDE5ZDgxNDYwMjEzM2ZlNjRiY2U2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTE5Miw0ICsxOTIs
OCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICNpZiBQTEFURk9STShRVCkKICAgICBGaW5kWm9v
bWFibGVBcmVhRm9yUG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCiAjZW5kaWYKKworI2lm
IFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAg
IEhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdChXVEY6OlN0cmluZyByZXN1bHQpCisjZW5kaWYK
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86516</attachid>
            <date>2011-03-22 15:13:01 -0700</date>
            <delta_ts>2011-03-23 10:00:20 -0700</delta_ts>
            <desc>Patch (v4)</desc>
            <filename>bug-56055-20110322151300.patch</filename>
            <type>text/plain</type>
            <size>82303</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE2OTIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYWE4MjhkZWU1NDhiMDg4ZDY5YjQ1
ZGExM2MxYzY5ZDQ5ZmQyZDE3Li45MDE0YjdiZDA0YWI4MzliNTcyMWE3OWUyMzE1Mzc0ODE3Njlm
YTgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMjIgIEppYSBQdSAgPGpwdUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SG9vayB1cCBuZXcgQXBwS2l0IGF1dG9jb3JyZWN0aW9uIFVJIHdpdGggV0syLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwNTUKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzg5NDc0NjM+CisKKyAgICAgICAgUGxlYXNlIHNlZSBXZWJDb3JlL0NoYW5n
ZUxvZyBmb3IgZGV0YWlsLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOiBF
bmFibGUgYXV0b2NvcnJlY3Rpb24gdGVzdHMgZm9yIFdLMi4KKwogMjAxMS0wMy0yMiAgSnVzdGlu
IFNjaHVoICA8anNjaHVoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJr
IFNjaHVsemUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBw
ZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKaW5kZXggNzk5MzhjN2Y3
YTYyYmQ4YTRkNGZjZTAxNzEwZmM5M2VmYTZkNzdkMy4uMDY4YWVjMzBkMTlhZGJiNDdiYTVhYTBl
YzYwMGM1YWQxNzNjODVkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZApAQCAt
NTY5LDIzICs1NjksNiBAQCBwbGF0Zm9ybS9tYWMvZWRpdGluZy9kZWxldGluZy9iYWNrd2FyZC1k
ZWxldGUuaHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXIt
c2V0LWRhdGEtZmlsZS11cmwuaHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2Rv
dWJsZWNsaWNrLXNob3VsZC1ub3QtZXhwYW5kLWFjcm9zcy1saW5lcy5odG1sCiBwbGF0Zm9ybS9t
YWMvZWRpdGluZy9zZWxlY3Rpb24vd29yZC10aGFpLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5n
L3NwZWxsaW5nL2F1dG9jb3JyZWN0aW9uLWNvbnRyYWN0aW9uLmh0bWwKLXBsYXRmb3JtL21hYy9l
ZGl0aW5nL3NwZWxsaW5nL2F1dG9jb3JyZWN0aW9uLWRlbGV0ZS5odG1sCi1wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9zcGVsbGluZy9hdXRvY29ycmVjdGlvbi1yZW1vdmluZy11bmRlcmxpbmUtYWZ0ZXIt
cGFzdGUuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvYXV0b2NvcnJlY3Rpb24t
cmVtb3ZpbmctdW5kZXJsaW5lLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2F1
dG9jb3JyZWN0aW9uLXNpbXBsZS5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9j
bGljay1hdXRvY29ycmVjdGVkLXdvcmQuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxp
bmcvZGVsZXRlLWF1dG9jb3JyZWN0ZWQtd29yZC0xLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5n
L3NwZWxsaW5nL2RlbGV0ZS1pbnRvLWF1dG9jb3JyZWN0ZWQtd29yZC5odG1sCi1wbGF0Zm9ybS9t
YWMvZWRpdGluZy9zcGVsbGluZy9kZWxldGUtaW50by1taXNzcGVsbGVkLXdvcmQuaHRtbAotcGxh
dGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy1tdWx0aXBsZS13b3Jkcy13aXRoLW1h
cmtlcnMuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy13b3JkLXdp
dGgtbWFya2VyLTEuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy13
b3JkLXdpdGgtbWFya2VyLTIuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZm9y
d2FyZC1kZWxldGUtaW50by1hdXRvY29ycmVjdGVkLXdvcmQuaHRtbAotcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvc3BlbGxpbmcvbW92ZS1jdXJzb3ItYXJvdW5kLW1pc3NwZWxsZWQtd29yZC5odG1sCi1w
bGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9tb3ZlLWN1cnNvci10by1hdXRvY29ycmVjdGVk
LXdvcmQuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvbW92ZS1jdXJzb3ItdG8t
YmVnaW5uaW5nLW9mLWF1dG9jb3JyZWN0ZWQtd29yZC5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGlu
Zy9zcGVsbGluZy9yZW1vdmluZy11bmRlcmxpbmUtYWZ0ZXItYWNjZXB0aW5nLWF1dG9jb3JyZWN0
aW9uLXVzaW5nLXB1bmN0dWF0aW9uLmh0bWwKIHBsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0
LWFwcGVhcmFuY2Utc3BpbmJ1dHRvbi11cC5odG1sCiBwbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9p
bnB1dC1udW1iZXItY2xpY2suaHRtbAogcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvbGlzdGJveC1z
Y3JvbGxiYXItaGl0LXRlc3QuaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFiMGI1MmFlYjAxMzk4MmQxMjQy
YzgwNzA3NTJjOTAyMWFjNGJhNWMuLjI0MGJjMGYzZWFlODU5NzQyYjQzYjA2NThkMGQ0MTNmOGY4
YWYwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMS0wMy0yMiAgSmlhIFB1ICA8
anB1QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBIb29rIHVwIG5ldyBBcHBLaXQgYXV0b2NvcnJlY3Rpb24gVUkgd2l0aCBXSzIuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA1NQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODk0NzQ2Mz4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIHRv
IGVuYWJsZSBXSzIgdG8gdXRpbGl6ZSBhdXRvY29ycmVjdGlvbiBVSSBvbiBNYWMgT1MgWC4gSXQg
Y29udGFpbnMgZm9sbG93aW5nCisgICAgICAgIG1ham9yIGNoYW5nZXM6CisKKyAgICAgICAgMS4g
QWxsIGJ1dCBvbmUgYXV0b2NvcnJlY3Rpb24gcmVsYXRlZCBtZXNzYWdlIGlzIHN5bmNocm9ub3Vz
LiBTaW5jZSBkaXNtaXNzaW5nIGF1dG9jb3JyZWN0aW9uCisgICAgICAgIHBhbmVsIGNhbiBwb3Rl
bnRpYWxseSBjYXVzZSBlZGl0aW5nIHRvIG9jY3VyLCBhIHN5bmNocm9ub3VzIGRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWxTb29uKCkgZnVuY3Rpb24KKyAgICAgICAgaXMgaW50cm9kdWNlZCB0byBlbnN1
cmUgYWxsIGVkaXRpbmcgY29tbWFuZHMgb2NjdXIgaW4gY29ycmVjdCBvcmRlci4KKworICAgICAg
ICAyLiBBZGRpdGlvbmFsIGNvbmRpdGlvbiB2YXJpYWJsZSBpcyBuZWVkZWQgdG8gaW1wbGVtZW50
IGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKCkuCisgICAgICAgIFRvIGltcHJvdmUgbWFpbnRh
aW5hYmlsaXR5LCBDb3JyZWN0aW9uUGFuZWwgY2xhc3MgaXMgaW50cm9kdWNlZCB0byBtYW5hZ2Ug
dGhlCisgICAgICAgIGludGVybmFsIHN0YXRlIHJlbGF0ZWQgdG8gY29ycmVjdGlvbiBwYW5lbC4g
VGhpcyBjaGFuZ2UgaXMgYXBwbGllZCB0byBib3RoIFdLMSBhbmQgV0syLgorCisgICAgICAgIDMu
IEVkaXRvckNsaWVudDo6aXNTaG93aW5nQ29ycmVjdGlvblBhbmVsKCkgaGFzIGJlZW4gcmVtb3Zl
ZC4gVGhlIG9yaWdpbmFsIHB1cnBvc2UgaXMgdG8gYWxsb3cKKyAgICAgICAgZWRpdG9yIHRvIGtu
b3cgd2hlbiB0byBoYW5kbGUgRVNDIGtleSBldmVudC4gTm93IHRoaXMgaXMgaGFuZGxlZCBpbnRl
cm5hbGx5IGluIEFwcEtpdCwgc28KKyAgICAgICAgRWRpdG9yQ2xpZW50Ojppc1Nob3dpbmdDb3Jy
ZWN0aW9uUGFuZWwoKSBpc24ndCBuZWNlc3NhcnkgYW55bW9yZS4KKworICAgICAgICA0LiBUaGUg
RWRpdG9yKiBhcmd1bWVudCBpbiBFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwoKSBo
YXMgYmVlbiByZW1vdmVkLCBzaW5jZSB3ZSBjYW4KKyAgICAgICAgYWNjZXNzIG9iamVjdCB2aWEg
V2ViVmlldyBvciBXS1ZpZXcuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFt
bWFySW5SYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjb3JyZWN0aW9uUGFuZWxU
aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGlzbWlzc0NvcnJlY3Rpb25Q
YW5lbCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxT
b29uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlBdXRvY29ycmVjdGlvbkJlZm9y
ZVR5cGluZ0lmQXBwcm9wcmlhdGUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUNvbW1hbmRNYXApOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkVtcHR5RWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVtcHR5RWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29v
bik6CisgICAgICAgICogbWFudWFsLXRlc3RzL2F1dG9jb3JyZWN0aW9uL2Nsb3NlLXdpbmRvdy13
aGVuLWNvcnJlY3Rpb24taXMtc2hvd24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGFnZS9FZGl0
b3JDbGllbnQuaDoKKwogMjAxMS0wMy0yMiAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCmluZGV4IDg4MDc5NjUwNjhhNDM5MTBhOWFkOTM2NTFlMTQ2MmVjYzhlOWNmOWEuLmI4
Yzk1Y2NlNThhYzU3YWMxZDk5OTc2ZjRkZjg2YTZjOGNiZTBmMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKQEAgLTIwNzIsNyArMjA3Miw3IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3Bl
bGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZ3b3JkU3RhcnQs
CiAgICAgICAgICAgICBkb0FwcGx5Q29ycmVjdGlvbiA9IGZhbHNlOwogICAgIH0KICAgICBpZiAo
ZG9BcHBseUNvcnJlY3Rpb24pCi0gICAgICAgIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29u
Rm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbEFjY2VwdGVkKTsKKyAgICAgICAgaGFuZGxlQ29y
cmVjdGlvblBhbmVsUmVzdWx0KGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFJlYXNvbkZvckRp
c21pc3NpbmdDb3JyZWN0aW9uUGFuZWxBY2NlcHRlZCkpOwogICAgIGVsc2UKICAgICAgICAgbV9j
b3JyZWN0aW9uUGFuZWxJbmZvLnJhbmdlVG9CZVJlcGxhY2VkLmNsZWFyKCk7CiAjZWxzZQpAQCAt
MjM4Nyw3ICsyMzg3LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2gKICAgICAgICAgICAgICAg
ICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJlcGxhY2VkU3RyaW5nID0gcGxhaW5UZXh0KHJh
bmdlVG9SZXBsYWNlLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgbV9jb3JyZWN0aW9uUGFu
ZWxJbmZvLnJlcGxhY2VtZW50U3RyaW5nID0gcmVzdWx0LT5yZXBsYWNlbWVudDsKICAgICAgICAg
ICAgICAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLmlzQWN0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFuZWwobV9jb3JyZWN0aW9u
UGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3gsIG1fY29ycmVjdGlvblBhbmVsSW5mby5y
ZXBsYWNlZFN0cmluZywgcmVzdWx0LT5yZXBsYWNlbWVudCwgVmVjdG9yPFN0cmluZz4oKSwgdGhp
cyk7CisgICAgICAgICAgICAgICAgICAgIGNsaWVudCgpLT5zaG93Q29ycmVjdGlvblBhbmVsKG1f
Y29ycmVjdGlvblBhbmVsSW5mby5wYW5lbFR5cGUsIGJvdW5kaW5nQm94LCBtX2NvcnJlY3Rpb25Q
YW5lbEluZm8ucmVwbGFjZWRTdHJpbmcsIHJlc3VsdC0+cmVwbGFjZW1lbnQsIFZlY3RvcjxTdHJp
bmc+KCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIHNob3dpbmcg
Y29ycmVjdGlvbiBwYW5lbCwgd2UgaWdub3JlIG90aGVyIGNvcnJlY3Rpb24gb3IgcmVwbGFjZW1l
bnQuCkBAIC0yNTE3LDcgKzI1MTcsNyBAQCB2b2lkIEVkaXRvcjo6Y29ycmVjdGlvblBhbmVsVGlt
ZXJGaXJlZChUaW1lcjxFZGl0b3I+KikKICAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJl
cGxhY2VkU3RyaW5nID0gcGxhaW5UZXh0KG1fY29ycmVjdGlvblBhbmVsSW5mby5yYW5nZVRvQmVS
ZXBsYWNlZC5nZXQoKSk7CiAgICAgICAgIEZsb2F0UmVjdCBib3VuZGluZ0JveCA9IHdpbmRvd1Jl
Y3RGb3JSYW5nZShtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmFuZ2VUb0JlUmVwbGFjZWQuZ2V0KCkp
OwogICAgICAgICBpZiAoIWJvdW5kaW5nQm94LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNsaWVu
dCgpLT5zaG93Q29ycmVjdGlvblBhbmVsKG1fY29ycmVjdGlvblBhbmVsSW5mby5wYW5lbFR5cGUs
IGJvdW5kaW5nQm94LCBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRTdHJpbmcsIG1fY29y
cmVjdGlvblBhbmVsSW5mby5yZXBsYWNlbWVudFN0cmluZywgVmVjdG9yPFN0cmluZz4oKSwgdGhp
cyk7CisgICAgICAgICAgICBjbGllbnQoKS0+c2hvd0NvcnJlY3Rpb25QYW5lbChtX2NvcnJlY3Rp
b25QYW5lbEluZm8ucGFuZWxUeXBlLCBib3VuZGluZ0JveCwgbV9jb3JyZWN0aW9uUGFuZWxJbmZv
LnJlcGxhY2VkU3RyaW5nLCBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZW1lbnRTdHJpbmcs
IFZlY3RvcjxTdHJpbmc+KCkpOwogICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb3Jy
ZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGVTcGVsbGluZ1N1Z2dlc3Rpb25zOiB7CkBAIC0yNTM1
LDcgKzI1MzUsNyBAQCB2b2lkIEVkaXRvcjo6Y29ycmVjdGlvblBhbmVsVGltZXJGaXJlZChUaW1l
cjxFZGl0b3I+KikKICAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLmlzQWN0aXZlID0gdHJ1
ZTsKICAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gd2luZG93UmVjdEZvclJhbmdlKG1f
Y29ycmVjdGlvblBhbmVsSW5mby5yYW5nZVRvQmVSZXBsYWNlZC5nZXQoKSk7CiAgICAgICAgIGlm
ICghYm91bmRpbmdCb3guaXNFbXB0eSgpKQotICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3Jy
ZWN0aW9uUGFuZWwobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3gs
IG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNlZFN0cmluZywgdG9wU3VnZ2VzdGlvbiwgc3Vn
Z2VzdGlvbnMsIHRoaXMpOworICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFu
ZWwobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3gsIG1fY29ycmVj
dGlvblBhbmVsSW5mby5yZXBsYWNlZFN0cmluZywgdG9wU3VnZ2VzdGlvbiwgc3VnZ2VzdGlvbnMp
OwogICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjYwMSwzOSArMjYwMSwzNiBAQCB2
b2lkIEVkaXRvcjo6c3RvcENvcnJlY3Rpb25QYW5lbFRpbWVyKCkKICNlbmRpZgogfQogCi12b2lk
IEVkaXRvcjo6aGFuZGxlQ2FuY2VsT3BlcmF0aW9uKCkKK3ZvaWQgRWRpdG9yOjpkaXNtaXNzQ29y
cmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uRm9y
RGlzbWlzc2luZykKIHsKICNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCiAgICAgaWYg
KCFtX2NvcnJlY3Rpb25QYW5lbEluZm8uaXNBY3RpdmUpCiAgICAgICAgIHJldHVybjsKICAgICBt
X2NvcnJlY3Rpb25QYW5lbEluZm8uaXNBY3RpdmUgPSBmYWxzZTsKKyAgICBtX2NvcnJlY3Rpb25Q
YW5lbElzRGlzbWlzc2VkQnlFZGl0b3IgPSB0cnVlOwogICAgIGlmIChjbGllbnQoKSkKLSAgICAg
ICAgY2xpZW50KCktPmRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0Nv
cnJlY3Rpb25QYW5lbENhbmNlbGxlZCk7Ci0jZW5kaWYKLX0KLQotYm9vbCBFZGl0b3I6OmlzU2hv
d2luZ0NvcnJlY3Rpb25QYW5lbCgpCi17Ci0jaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5F
TAotICAgIGlmIChjbGllbnQoKSkKLSAgICAgICAgcmV0dXJuIGNsaWVudCgpLT5pc1Nob3dpbmdD
b3JyZWN0aW9uUGFuZWwoKTsKKyAgICAgICAgY2xpZW50KCktPmRpc21pc3NDb3JyZWN0aW9uUGFu
ZWwocmVhc29uRm9yRGlzbWlzc2luZyk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWFzb25G
b3JEaXNtaXNzaW5nKTsKICNlbmRpZgotICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBFZGl0
b3I6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25Q
YW5lbCByZWFzb25Gb3JEaXNtaXNzaW5nKQorU3RyaW5nIEVkaXRvcjo6ZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbFNvb24oUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb25Gb3JE
aXNtaXNzaW5nKQogewogI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKICAgICBpZiAo
IW1fY29ycmVjdGlvblBhbmVsSW5mby5pc0FjdGl2ZSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLmlzQWN0aXZlID0g
ZmFsc2U7CiAgICAgbV9jb3JyZWN0aW9uUGFuZWxJc0Rpc21pc3NlZEJ5RWRpdG9yID0gdHJ1ZTsK
LSAgICBpZiAoY2xpZW50KCkpCi0gICAgICAgIGNsaWVudCgpLT5kaXNtaXNzQ29ycmVjdGlvblBh
bmVsKHJlYXNvbkZvckRpc21pc3NpbmcpOworICAgIGlmICghY2xpZW50KCkpCisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gY2xpZW50KCktPmRpc21pc3NDb3JyZWN0aW9uUGFu
ZWxTb29uKHJlYXNvbkZvckRpc21pc3NpbmcpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVh
c29uRm9yRGlzbWlzc2luZyk7CisgICAgcmV0dXJuIFN0cmluZygpOwogI2VuZGlmCiB9CisKIHZv
aWQgRWRpdG9yOjpyZW1vdmVTcGVsbEFuZENvcnJlY3Rpb25NYXJrZXJzRnJvbVdvcmRzVG9CZUVk
aXRlZChib29sIGRvTm90UmVtb3ZlSWZTZWxlY3Rpb25BdFdvcmRCb3VuZGFyeSkKIHsKICAgICAv
LyBXZSB3YW50IHRvIHJlbW92ZSB0aGUgbWFya2VycyBmcm9tIGEgd29yZCBpZiBhbiBlZGl0aW5n
IGNvbW1hbmQgd2lsbCBjaGFuZ2UgdGhlIHdvcmQuIFRoaXMgY2FuIGhhcHBlbiBpbiBvbmUgb2YK
QEAgLTI3NjgsNyArMjc2NSw3IEBAIGJvb2wgRWRpdG9yOjphcHBseUF1dG9jb3JyZWN0aW9uQmVm
b3JlVHlwaW5nSWZBcHByb3ByaWF0ZSgpCiAgICAgUG9zaXRpb24gY2FyZXRQb3NpdGlvbiA9IG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5zdGFydCgpOwogCiAgICAgaWYgKG1fY29y
cmVjdGlvblBhbmVsSW5mby5yYW5nZVRvQmVSZXBsYWNlZC0+ZW5kUG9zaXRpb24oKSA9PSBjYXJl
dFBvc2l0aW9uKSB7Ci0gICAgICAgIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlz
bWlzc2luZ0NvcnJlY3Rpb25QYW5lbEFjY2VwdGVkKTsKKyAgICAgICAgaGFuZGxlQ29ycmVjdGlv
blBhbmVsUmVzdWx0KGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFJlYXNvbkZvckRpc21pc3Np
bmdDb3JyZWN0aW9uUGFuZWxBY2NlcHRlZCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
IAogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggZTFhNzExOTI0NWU4M2JlZDEwZDcz
ZDIwNWVmZTIxNTQwODVjNTY5ZS4uNWZiNDhjNWQwNTZjNTUwOWQ3ZGIyYzUzMzdiOWZkYzM4OGNi
NTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0zMjAsMTEgKzMyMCw5IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgYWRkVG9LaWxsUmluZyhSYW5nZSosIGJvb2wgcHJlcGVuZCk7CiAKLSAg
ICB2b2lkIGhhbmRsZUNhbmNlbE9wZXJhdGlvbigpOwogICAgIHZvaWQgc3RhcnRDb3JyZWN0aW9u
UGFuZWxUaW1lcihDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUpOwogICAgIC8vIElmIHVz
ZXIgY29uZmlybWVkIGEgY29ycmVjdGlvbiBpbiB0aGUgY29ycmVjdGlvbiBwYW5lbCwgY29ycmVj
dGlvbiBoYXMgbm9uLXplcm8gbGVuZ3RoLCBvdGhlcndpc2UgaXQgbWVhbnMgdGhhdCB1c2VyIGhh
cyBkaXNtaXNzZWQgdGhlIHBhbmVsLgogICAgIHZvaWQgaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVz
dWx0KGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbik7Ci0gICAgYm9vbCBpc1Nob3dpbmdDb3JyZWN0
aW9uUGFuZWwoKTsKIAogICAgIHZvaWQgcGFzdGVBc0ZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4sIGJvb2wgc21hcnRSZXBsYWNlLCBib29sIG1hdGNoU3R5bGUpOwogICAgIHZv
aWQgcGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmLCBib29sIHNtYXJ0UmVwbGFjZSk7CkBA
IC00MjUsNiArNDIzLDcgQEAgcHJpdmF0ZToKICAgICBOb2RlKiBmaW5kRXZlbnRUYXJnZXRGcm9t
U2VsZWN0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzdG9wQ29ycmVjdGlvblBhbmVsVGltZXIoKTsK
ICAgICB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJl
Y3Rpb25QYW5lbCk7CisgICAgU3RyaW5nIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFJlYXNv
bkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwogICAgIHZvaWQgYXBwbHlDb3JyZWN0aW9u
UGFuZWxJbmZvKGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4mIG1hcmtl
clR5cGVzVG9BZGQpOwogICAgIC8vIFJldHVybiB0cnVlIGlmIGNvcnJlY3Rpb24gd2FzIGFwcGxp
ZWQsIGZhbHNlIG90aGVyd2lzZS4KICAgICBib29sIGFwcGx5QXV0b2NvcnJlY3Rpb25CZWZvcmVU
eXBpbmdJZkFwcHJvcHJpYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5k
LmNwcAppbmRleCA2ZWE5OTU0ZDk1ZDY0N2RhN2ZjM2JhZWY4NzNiMjFlNmM3YWMwMTc0Li45ZWFm
ZDE4YjUyMmQyYmZjNjNiMTJmMmE4ODUyZmQ4N2IzZTU3YzgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTEwOTEsMTQgKzEwOTEsNiBAQCBzdGF0aWMgYm9v
bCBleGVjdXRlWWFua0FuZFNlbGVjdChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwgY29ucwogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgU1VQUE9SVF9BVVRPQ09S
UkVDVElPTl9QQU5FTAotc3RhdGljIGJvb2wgZXhlY3V0ZUNhbmNlbE9wZXJhdGlvbihGcmFtZSog
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKLXsKLSAg
ICBmcmFtZS0+ZWRpdG9yKCktPmhhbmRsZUNhbmNlbE9wZXJhdGlvbigpOwotICAgIHJldHVybiB0
cnVlOwotfQotI2VuZGlmCi0KIC8vIFN1cHBvcnRlZCBmdW5jdGlvbnMKIAogc3RhdGljIGJvb2wg
c3VwcG9ydGVkKEZyYW1lKikKQEAgLTEyNDksMTMgKzEyNDEsNiBAQCBzdGF0aWMgYm9vbCBlbmFi
bGVkVW5kbyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSkKICAgICBy
ZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5VbmRvKCk7CiB9CiAKLSNpZiBTVVBQT1JUX0FVVE9D
T1JSRUNUSU9OX1BBTkVMCi1zdGF0aWMgYm9vbCBlbmFibGVkRGlzbWlzc0NvcnJlY3Rpb25QYW5l
bChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSkKLXsKLSAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLT5pc1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwoKTsKLX0KLSNlbmRp
ZgotCiAvLyBTdGF0ZSBmdW5jdGlvbnMKIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlTm9uZShGcmFt
ZSosIEV2ZW50KikKQEAgLTE1MzIsMTAgKzE1MTcsNiBAQCBzdGF0aWMgY29uc3QgQ29tbWFuZE1h
cCYgY3JlYXRlQ29tbWFuZE1hcCgpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICB7ICJUYWtl
RmluZFN0cmluZ0Zyb21TZWxlY3Rpb24iLCB7IGV4ZWN1dGVUYWtlRmluZFN0cmluZ0Zyb21TZWxl
Y3Rpb24sIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkVGFrZUZpbmRTdHJp
bmdGcm9tU2VsZWN0aW9uLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwg
ZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAjZW5kaWYKLQotI2lmIFNVUFBP
UlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKLSAgICAgICAgeyAiQ2FuY2VsT3BlcmF0aW9uIiwgeyBl
eGVjdXRlQ2FuY2VsT3BlcmF0aW9uLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5h
YmxlZERpc21pc3NDb3JyZWN0aW9uUGFuZWwsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0
SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKLSNlbmRpZgog
ICAgIH07CiAKICAgICAvLyBUaGVzZSB1bnN1cHBvcnRlZCBjb21tYW5kcyBhcmUgbGlzdGVkIGhl
cmUgc2luY2UgdGhleSBhcHBlYXIgaW4gdGhlIE1pY3Jvc29mdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCmluZGV4IGVkOTJmMTEyY2JhODc3ZmQ1MmMzNDY0MDdmNWI0ZmZlMjYxMjBm
NmMuLjNiMGFkMmU3YWQ2NGI3MDk1OTNjOGQxM2YzMDQxOGRjY2U1MWYwYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTUxMSw5ICs1MTEsOSBAQCBwdWJsaWM6CiAgICAg
VGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gJm1fdGV4dENoZWNrZXJD
bGllbnQ7IH0KIAogI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKLSAgICB2aXJ0dWFs
IHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgRWRpdG9yKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0
aW9uUGFuZWwoQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21p
c3NpbmdDb3JyZWN0aW9uUGFuZWwpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Nob3dpbmdDb3Jy
ZWN0aW9uUGFuZWwoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIGRpc21p
c3NDb3JyZWN0aW9uUGFuZWxTb29uKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwp
IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYpIHsgfQogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5n
VUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFtbWFyRGV0YWlsJikg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvYXV0b2NvcnJlY3Rp
b24vY2xvc2Utd2luZG93LXdoZW4tY29ycmVjdGlvbi1pcy1zaG93bi5odG1sIGIvU291cmNlL1dl
YkNvcmUvbWFudWFsLXRlc3RzL2F1dG9jb3JyZWN0aW9uL2Nsb3NlLXdpbmRvdy13aGVuLWNvcnJl
Y3Rpb24taXMtc2hvd24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzgyYTIwZjU4MTVmN2EzN2M5ZTU5NGNh
NzdmZjYyMDlhMDU0OGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbWFudWFs
LXRlc3RzL2F1dG9jb3JyZWN0aW9uL2Nsb3NlLXdpbmRvdy13aGVuLWNvcnJlY3Rpb24taXMtc2hv
d24uaHRtbApAQCAtMCwwICsxLDQ4IEBACis8aHRtbD4KKzxoZWFkPgorCis8c3R5bGU+CisuZWRp
dGluZyB7CisgICAgYm9yZGVyOiAycHggc29saWQgcmVkOworICAgIHBhZGRpbmc6IDEycHg7Cisg
ICAgZm9udC1zaXplOiAyNHB4OworfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPS4uLy4uLy4uLy4u
L0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGluZy5qcyBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlw
ZT0idGV4dC9KYXZhU2NyaXB0IiA+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiBlZGl0
aW5nVGVzdCgpIHsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgndCcpOworICAgIHR5cGVDaGFy
YWN0ZXJDb21tYW5kKCdoJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2UnKTsKKyAgICB0
eXBlQ2hhcmFjdGVyQ29tbWFuZCgnICcpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdtJyk7
CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2UnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFu
ZCgncycpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdhJyk7CisgICAgdHlwZUNoYXJhY3Rl
ckNvbW1hbmQoJ2UnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnZycpOworICAgIHR5cGVD
aGFyYWN0ZXJDb21tYW5kKCdlJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2UnKTsKKyAg
ICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnICcpOworICAgIGV4ZWNNb3ZlU2VsZWN0aW9uQmFja3dh
cmRCeUNoYXJhY3RlckNvbW1hbmQoKTsKK30KKworPC9zY3JpcHQ+CisKKzx0aXRsZT5UZXN0aW5n
IGNsb3Npbmcgd2luZG93IHdoZW4gY29ycmVjdGlvbiBzdWdnZXN0aW9uIGlzIHNob3duPC90aXRs
ZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj48cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3aGVu
IGNvcnJlY3Rpb24gc3VnZ2VzdGlvbiBpcyB2aXNpYmxlLCBjbG9zaW5nIHdpbmRvdyBkb2Vzbid0
IGhhbmcgb3IgY3Jhc2guPC9wPgorPHA+QWZ0ZXIgc2VlaW5nIHRoZSBwYW5lbCB3aXRoIG11bHRp
cGxlIGNhbmRpZGF0ZXMsIGNsb3NlIHRoZSB3aW5kb3cuPC9wPgorPGRpdiBjb250ZW50ZWRpdGFi
bGUgaWQ9InJvb3QiIGNsYXNzPSJlZGl0aW5nIj4KKzxzcGFuIGlkPSJ0ZXN0Ij48L3NwYW4+Cis8
L2Rpdj4KKworCis8c2NyaXB0PgorcnVuRWRpdGluZ1Rlc3QoKTsKKzwvc2NyaXB0PgorCis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCBkNWRlNmE0MTAy
Y2JkMjc2OGRhYzlkYTNmNWYxYWQ5ZWNmODAzZDUwLi5hZWRhODQ0NTg4Y2E2ZWY1NWYwNjgyMzQy
ODUzNzAzNTljN2FhNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTE1OCwx
NCArMTU4LDE1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRl
eHRDaGVja2VyKCkgPSAwOwogCi0jaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTAogICAg
IGVudW0gQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgewogICAgICAgICBBdXRvY29ycmVjdGlv
bkVkaXRlZCwKICAgICAgICAgQXV0b2NvcnJlY3Rpb25SZXZlcnRlZAogICAgIH07Ci0gICAgdmly
dHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxU
eXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNtZW50U3RyaW5nLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MsIEVkaXRv
ciopID0gMDsKKworI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKKyAgICB2aXJ0dWFs
IHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUs
IGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY21lbnRTdHJpbmcsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdD
b3JyZWN0aW9uUGFuZWwpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTaG93aW5nQ29ycmVjdGlv
blBhbmVsKCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxT
b29uKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNl
VHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudFN0cmluZykgPSAwOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDNlMTgxNjVkODQ2ZTU3Mjc1
MjU4YWI0NDkxMjljOWYyYjY0YWRiNi4uMzA3MjNjNjNmYjdiNjU0MjY5MzQ0NWFlMjc0MTcxNjE3
YzFkY2Y4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMy0yMiAgSmlhIFB1ICA8
anB1QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBIb29rIHVwIG5ldyBBcHBLaXQgYXV0b2NvcnJlY3Rpb24gVUkgd2l0aCBXSzIuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA1NQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODk0NzQ2Mz4KKworICAgICAgICBQbGVhc2Ugc2VlIFdlYkNv
cmUvQ2hhbmdlTG9nIGZvciBkZXRhaWwuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAxMS0wMy0xNyAgSmVmZiBNaWxsZXIgIDxqZWZmbUBhcHBsZS5j
b20+CiAKICAgICAgICAgVXNlIGEgY29uc2lzdGVudCBzZXQgb2YgZmlsZSBwYXR0ZXJucyBpbiB0
aGUgc3ZuOmlnbm9yZSBwcm9wZXJ0eSBmb3IgYWxsIC54Y29kZXByb2ogZGlyZWN0b3JpZXMsIHNw
ZWNpZmljYWxseToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDIwYzE1NmY3OTdkYjk0MDIyODRhMGQyNTU5NWRjZWI5NDZhOGY0ZDMuLjA2
YTU1NjYyNzQ5ODc4OGI0YTVlOTYwMGJmMzA2MWU1NWE0ZjNjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzQ0LDYgKzM0NCw4IEBA
CiAJCUI2Q0U1QzI1MTAwQkM1RjUwMDIxOTkzNiAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjgwNDk3MTBGRkJD
RUMxMDA5RjdGNjIgLyogV2ViQXBwbGljYXRpb25DYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUI4MDQxNzZGMTIxN0E4MzEwMDQ2NkJBRSAv
KiBXZWJJbnNwZWN0b3JGcm9udGVuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjgwNDE3NkQxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZy
b250ZW5kLmggKi87IH07CiAJCUI4MDQxNzcwMTIxN0E4MzEwMDQ2NkJBRSAvKiBXZWJJbnNwZWN0
b3JGcm9udGVuZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEI4MDQxNzZFMTIxN0E4MzEwMDQ2NkJBRSAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZC5tbSAq
LzsgfTsKKwkJQjgyOTU4RDMxMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjgyOTU4RDExMzI3
MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5oICovOyB9OworCQlCODI5NThENDEzMjcw
N0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjgyOTU4RDIxMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJl
Y3Rpb25QYW5lbC5tbSAqLzsgfTsKIAkJQkMyNkM2OUUxMEI3NDNGNDAwQjY4N0VEIC8qIFdlYlNl
cmlhbGl6ZWRKU1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzI2QzY5RDEwQjc0M0Y0MDBCNjg3RUQgLyogV2ViU2VyaWFsaXplZEpTVmFsdWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzI2
QzZBNTEwQjc0NDdBMDBCNjg3RUQgLyogV2ViU2VyaWFsaXplZEpTVmFsdWUubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2QzZBNDEwQjc0NDdBMDBC
Njg3RUQgLyogV2ViU2VyaWFsaXplZEpTVmFsdWUubW0gKi87IH07CiAJCUJDMkU0NjREMEZEOEE5
NjgwMEE5RDlERSAvKiBXZWJWaWV3RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMyRTQ2NEIwRkQ4QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdEYXRh
LmggKi87IH07CkBAIC02NjAsNiArNjYyLDggQEAKIAkJQjY4MDQ5NzIwRkZCQ0VDMTAwOUY3RjYy
IC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJBcHBsaWNhdGlvbkNhY2hlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCODA0MTc2RDEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yRnJvbnRlbmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjgwNDE3NkUxMjE3QTgzMTAwNDY2QkFF
IC8qIFdlYkluc3BlY3RvckZyb250ZW5kLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yRnJvbnRlbmQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUI4Mjk1OEQxMTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29ycmVjdGlvblBhbmVsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI4Mjk1OEQyMTMyNzA3RDAwMDBEMEU3OSAvKiBDb3Jy
ZWN0aW9uUGFuZWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBD
b3JyZWN0aW9uUGFuZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjZDNjlE
MTBCNzQzRjQwMEI2ODdFRCAvKiBXZWJTZXJpYWxpemVkSlNWYWx1ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTZXJpYWxpemVkSlNWYWx1ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzI2QzZBNDEwQjc0NDdBMDBCNjg3RUQgLyogV2ViU2VyaWFsaXpl
ZEpTVmFsdWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJT
ZXJpYWxpemVkSlNWYWx1ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRTQ2
NEIwRkQ4QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlZpZXdEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMjk1LDYgKzEyOTksOCBAQAogCQlGNUIzNkI0MDAyODFERTg3MDE4NjM1Q0IgLyogV2ViQ29y
ZVN1cHBvcnQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CUI4Mjk1OEQxMTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAqLywKKwkJCQlC
ODI5NThEMjEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLm1tICovLAogCQkJCTU5
OEFEOTFEMTIwMUNFQ0YwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbSAq
LywKIAkJCQk1OThBRDkxOTEyMDFDRUM5MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnQuaCAqLywKIAkJCQlCNjgwNDk3MTBGRkJDRUMxMDA5RjdGNjIgLyogV2ViQXBwbGljYXRp
b25DYWNoZS5oICovLApAQCAtMTY0NSw2ICsxNjUxLDcgQEAKIAkJCQkzQUUxNUQ1MDEyREJERUQ0
MDA5MzIzQzggLyogV2ViU3RvcmFnZU1hbmFnZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJM0FCQjNDN0ExMzA5QzNCNTAwRTkzRDk0IC8qIFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzQyRDMyNDEzMUVEMUUwMDA3NUZBNEIgLyogV2ViTG9jYWxp
emFibGVTdHJpbmdzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUI4Mjk1OEQzMTMyNzA3
RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjAxNSw2
ICsyMDIyLDcgQEAKIAkJCQlDREE2MkFFMzEyNUY4N0MyMDA3RkQxMTggLyogV2ViRnVsbFNjcmVl
bkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkzQUJCM0M3QjEzMDlDM0I1MDBFOTNE
OTQgLyogV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzQy
RDM0RDEzMUVEMzg4MDA3NUZBNEIgLyogV2ViTG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwubW0g
aW4gU291cmNlcyAqLywKKwkJCQlCODI5NThENDEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlv
blBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMzhhZmZhZTc5MTJk
MDE2OTFmYWJmZDUwMWY0YjM4YWE4NWIyODU2ZS4uZTQ3M2M2YzY4OWU2Zjc4MWFmNGM2Njc2Njkw
YWQ0ZjIxNjBiZDg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDExLTAz
LTIyICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEhvb2sgdXAgbmV3IEFwcEtpdCBhdXRvY29ycmVjdGlvbiBV
SSB3aXRoIFdLMi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU2MDU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84OTQ3NDYzPgorCisgICAgICAgIFBs
ZWFzZSBzZWUgV2ViQ29yZS9DaGFuZ2VMb2cgZm9yIGRldGFpbC4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5oOiBBZGRlZC4KKyAgICAgICAgKENvcnJlY3Rpb25Q
YW5lbDo6aXNTaG93aW5nKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFu
ZWwubW06IEFkZGVkLgorICAgICAgICAoY29ycmVjdGlvbkJ1YmJsZVR5cGUpOgorICAgICAgICAo
Q29ycmVjdGlvblBhbmVsOjpDb3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoQ29ycmVjdGlvblBh
bmVsOjp+Q29ycmVjdGlvblBhbmVsKToKKyAgICAgICAgKENvcnJlY3Rpb25QYW5lbDo6c2hvdyk6
CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3MpOgorICAgICAgICAoQ29ycmVjdGlv
blBhbmVsOjpkaXNtaXNzU29vbik6CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3NJ
bnRlcm5hbCk6CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9u
UmVzcG9uc2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdl
YkVkaXRvckNsaWVudDo6V2ViRWRpdG9yQ2xpZW50KToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVu
dDo6c2hvd0NvcnJlY3Rpb25QYW5lbCk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmRpc21p
c3NDb3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29y
cmVjdGlvblBhbmVsU29vbik6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnJlY29yZEF1dG9j
b3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViVmlldyBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6XSk6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDExLTAzLTIyICBNYXR0aGV3IERlbGFuZXkg
IDxtZGVsYW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlv
blBhbmVsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFu
ZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mMGY5ZjE1YTdlMThlYzQ1MzVkZTI0YzY1Y2JmMWY2MWYzNTMyNTVl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29y
cmVjdGlvblBhbmVsLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29y
cmVjdGlvblBhbmVsX2gKKyNkZWZpbmUgQ29ycmVjdGlvblBhbmVsX2gKKworI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvUGxhdGZvcm0uaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1JldGFpblB0
ci5oPgorCisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyNp
bXBvcnQgPEFwcEtpdC9OU1RleHRDaGVja2VyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NvcnJlY3Rp
b25QYW5lbEluZm8uaD4KKworQGNsYXNzIFdlYlZpZXc7CisKK2NsYXNzIENvcnJlY3Rpb25QYW5l
bCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29ycmVjdGlvblBhbmVsKTsKK3B1YmxpYzoK
KyAgICBDb3JyZWN0aW9uUGFuZWwoKTsKKyAgICB+Q29ycmVjdGlvblBhbmVsKCk7CisgICAgdm9p
ZCBzaG93KFdlYlZpZXcqLCBXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBj
b25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBs
YWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBs
YWNlbWVudFN0cmluZ3MpOworICAgIHZvaWQgZGlzbWlzcyhXZWJDb3JlOjpSZWFzb25Gb3JEaXNt
aXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKKyAgICBXVEY6OlN0cmluZyBkaXNtaXNzU29vbihXZWJD
b3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKKyAgICBzdGF0aWMgdm9p
ZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYlZpZXcqLCBOU0NvcnJlY3Rpb25SZXNw
b25zZSwgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmlu
ZyYgcmVwbGFjZW1lbnRTdHJpbmcpOworCitwcml2YXRlOgorICAgIGJvb2wgaXNTaG93aW5nKCkg
Y29uc3QgeyByZXR1cm4gbV92aWV3OyB9CisgICAgdm9pZCBkaXNtaXNzSW50ZXJuYWwoV2ViQ29y
ZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCwgYm9vbCBkaXNtaXNzaW5nRXh0
ZXJuYWxseSk7CisgICAgdm9pZCBoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBh
Y2NlcHRlZFJlcGxhY2VtZW50LCBOU1N0cmluZyogcmVwbGFjZWQsIE5TU3RyaW5nKiBwcm9wb3Nl
ZFJlcGxhY2VtZW50LCBOU0NvcnJlY3Rpb25CdWJibGVUeXBlKTsKKworICAgIGJvb2wgbV93YXNE
aXNtaXNzZWRFeHRlcm5hbGx5OworICAgIFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3Jy
ZWN0aW9uUGFuZWwgbV9yZWFzb25Gb3JEaXNtaXNzaW5nOworICAgIFdURjo6UmV0YWluUHRyPFdl
YlZpZXc+IG1fdmlldzsKKyAgICBXVEY6OlJldGFpblB0cjxOU1N0cmluZz4gbV9yZXN1bHRGb3JT
eW5jaHJvbm91c0Rpc21pc3NhbDsKKyAgICBXVEY6OlJldGFpblB0cjxOU0NvbmRpdGlvbj4gbV9y
ZXN1bHRDb25kaXRpb247Cit9OworCisjZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdfT05fVElH
RVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX1NOT1dfTEVPUEFSRCkKKworI2VuZGlmIC8vIENvcnJlY3Rpb25QYW5lbF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDkxOWU0MmJhMTMxNmJlNDJiYTg5YzIyYWQxZjA3ZjAwZWE1YzFkZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25Q
YW5lbC5tbQpAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaW1wb3J0ICJDb3JyZWN0aW9u
UGFuZWwuaCIKKyNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCisKKyNpZiAhZGVmaW5lZChCVUlM
RElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1
c2luZyBuYW1lc3BhY2UgV1RGOworCitzdGF0aWMgaW5saW5lIE5TQ29ycmVjdGlvbkJ1YmJsZVR5
cGUgY29ycmVjdGlvbkJ1YmJsZVR5cGUoQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlIHBh
bmVsVHlwZSkKK3sKKyAgICBzd2l0Y2ggKHBhbmVsVHlwZSkgeworICAgIGNhc2UgQ29ycmVjdGlv
blBhbmVsSW5mbzo6UGFuZWxUeXBlQ29ycmVjdGlvbjoKKyAgICAgICAgcmV0dXJuIE5TQ29ycmVj
dGlvbkJ1YmJsZVR5cGVDb3JyZWN0aW9uOworICAgIGNhc2UgQ29ycmVjdGlvblBhbmVsSW5mbzo6
UGFuZWxUeXBlUmV2ZXJzaW9uOgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uQnViYmxlVHlw
ZVJldmVyc2lvbjsKKyAgICBjYXNlIENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZVNwZWxs
aW5nU3VnZ2VzdGlvbnM6CisgICAgICAgIHJldHVybiBOU0NvcnJlY3Rpb25CdWJibGVUeXBlR3Vl
c3NlczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE5TQ29y
cmVjdGlvbkJ1YmJsZVR5cGVDb3JyZWN0aW9uOworfQorCitDb3JyZWN0aW9uUGFuZWw6OkNvcnJl
Y3Rpb25QYW5lbCgpCisgICAgOiBtX3dhc0Rpc21pc3NlZEV4dGVybmFsbHkoZmFsc2UpCisgICAg
LCBtX3JlYXNvbkZvckRpc21pc3NpbmcoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5l
bElnbm9yZWQpCisgICAgLCBtX3Jlc3VsdENvbmRpdGlvbihBZG9wdE5TLCBbW05TQ29uZGl0aW9u
IGFsbG9jXSBpbml0XSkKK3sKK30KKworQ29ycmVjdGlvblBhbmVsOjp+Q29ycmVjdGlvblBhbmVs
KCkKK3sKKyAgICBkaXNtaXNzSW50ZXJuYWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25Q
YW5lbElnbm9yZWQsIGZhbHNlKTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWw6OnNob3coV2Vi
VmlldyogdmlldywgQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlIHR5cGUsIGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCit7CisgICAgZGlzbWlzc0lu
dGVybmFsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxJZ25vcmVkLCBmYWxzZSk7
CisgICAgCisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBOU1N0cmluZyog
cmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nID0gcmVwbGFjZWRTdHJpbmc7CisgICAgTlNTdHJpbmcq
IHJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyA9IHJlcGxhY2VtZW50U3RyaW5nOworICAgIG1f
dmlldyA9IHZpZXc7CisgICAgTlNDb3JyZWN0aW9uQnViYmxlVHlwZSBidWJibGVUeXBlID0gY29y
cmVjdGlvbkJ1YmJsZVR5cGUodHlwZSk7CisgICAgCisgICAgTlNNdXRhYmxlQXJyYXkqIGFsdGVy
bmF0aXZlU3RyaW5ncyA9IDA7CisgICAgaWYgKCFhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5n
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBhbHRlcm5hdGl2ZVJlcGxhY2Vt
ZW50U3RyaW5ncy5zaXplKCk7CisgICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncyA9IFtOU011dGFi
bGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaXplXTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICBbYWx0ZXJuYXRpdmVTdHJpbmdzIGFkZE9i
amVjdDooTlNTdHJpbmcqKWFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzW2ldXTsKKyAgICB9
CisKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gc2hvd0NvcnJlY3Rp
b25CdWJibGVPZlR5cGU6YnViYmxlVHlwZSBwcmltYXJ5U3RyaW5nOnJlcGxhY2VtZW50U3RyaW5n
QXNOU1N0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmlu
Z0luUmVjdDpib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcgdmlldzptX3ZpZXcuZ2V0KCkgY29t
cGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyogYWNjZXB0ZWRTdHJpbmcpIHsKKyAgICAgICAgaGFu
ZGxlQWNjZXB0ZWRSZXBsYWNlbWVudChhY2NlcHRlZFN0cmluZywgcmVwbGFjZWRTdHJpbmdBc05T
U3RyaW5nLCByZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcsIGJ1YmJsZVR5cGUpOworICAgIH1d
OworfQorCit2b2lkIENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzcyhSZWFzb25Gb3JEaXNtaXNzaW5n
Q29ycmVjdGlvblBhbmVsIHJlYXNvbikKK3sKKyAgICBkaXNtaXNzSW50ZXJuYWwocmVhc29uLCB0
cnVlKTsKK30KKworU3RyaW5nIENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzc1Nvb24oUmVhc29uRm9y
RGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24pCit7CisgICAgaWYgKCFpc1Nob3dpbmco
KSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgZGlzbWlzc0ludGVybmFsKHJlYXNv
biwgdHJ1ZSk7CisgICAgW21fcmVzdWx0Q29uZGl0aW9uLmdldCgpIGxvY2tdOworICAgIHdoaWxl
ICghbV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rpc21pc3NhbCkKKyAgICAgICAgW21fcmVzdWx0Q29u
ZGl0aW9uLmdldCgpIHdhaXRdOworICAgIFttX3Jlc3VsdENvbmRpdGlvbi5nZXQoKSB1bmxvY2td
OworICAgIHJldHVybiBtX3Jlc3VsdEZvclN5bmNocm9ub3VzRGlzbWlzc2FsLmdldCgpOworfQor
Cit2b2lkIENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzc0ludGVybmFsKFJlYXNvbkZvckRpc21pc3Np
bmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uLCBib29sIGRpc21pc3NpbmdFeHRlcm5hbGx5KQorewor
ICAgIG1fd2FzRGlzbWlzc2VkRXh0ZXJuYWxseSA9IGRpc21pc3NpbmdFeHRlcm5hbGx5OworICAg
IGlmICghaXNTaG93aW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3JlYXNvbkZv
ckRpc21pc3NpbmcgPSByZWFzb247CisgICAgbV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rpc21pc3Nh
bC5jbGVhcigpOworICAgIGlmIChyZWFzb24gPT0gUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rp
b25QYW5lbEFjY2VwdGVkKQorICAgICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hl
Y2tlcl0gZGlzbWlzc0NvcnJlY3Rpb25CdWJibGVGb3JWaWV3Om1fdmlldy5nZXQoKV07CisgICAg
ZWxzZQorICAgICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gY2FuY2Vs
Q29ycmVjdGlvbkJ1YmJsZUZvclZpZXc6bV92aWV3LmdldCgpXTsKKyAgICBtX3ZpZXcuY2xlYXIo
KTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9u
c2UoV2ViVmlldyogdmlldywgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2UsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCit7
CisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHJlY29yZFJlc3BvbnNl
OnJlc3BvbnNlIHRvQ29ycmVjdGlvbjpyZXBsYWNlbWVudFN0cmluZyBmb3JXb3JkOnJlcGxhY2Vk
U3RyaW5nIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOlt2aWV3IHNwZWxsQ2hl
Y2tlckRvY3VtZW50VGFnXV07Cit9CisKK3ZvaWQgQ29ycmVjdGlvblBhbmVsOjpoYW5kbGVBY2Nl
cHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJlcGxhY2VtZW50LCBOU1N0cmluZyog
cmVwbGFjZWQsIE5TU3RyaW5nKiBwcm9wb3NlZFJlcGxhY2VtZW50LCAgTlNDb3JyZWN0aW9uQnVi
YmxlVHlwZSBjb3JyZWN0aW9uQnViYmxlVHlwZSkKK3sKKyAgICBOU1NwZWxsQ2hlY2tlciogc3Bl
bGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl07CisgICAgTlNJ
bnRlZ2VyIGRvY3VtZW50VGFnID0gW21fdmlldy5nZXQoKSBzcGVsbENoZWNrZXJEb2N1bWVudFRh
Z107CisKKyAgICBzd2l0Y2ggKGNvcnJlY3Rpb25CdWJibGVUeXBlKSB7CisgICAgY2FzZSBOU0Nv
cnJlY3Rpb25CdWJibGVUeXBlQ29ycmVjdGlvbjoKKyAgICAgICAgaWYgKGFjY2VwdGVkUmVwbGFj
ZW1lbnQpCisgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVj
dGlvblJlc3BvbnNlQWNjZXB0ZWQgdG9Db3JyZWN0aW9uOmFjY2VwdGVkUmVwbGFjZW1lbnQgZm9y
V29yZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVu
dFRhZ107CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKCFtX3dhc0Rpc21pc3NlZEV4
dGVybmFsbHkgfHwgbV9yZWFzb25Gb3JEaXNtaXNzaW5nID09IFJlYXNvbkZvckRpc21pc3NpbmdD
b3JyZWN0aW9uUGFuZWxDYW5jZWxsZWQpCisgICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciBy
ZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZVJlamVjdGVkIHRvQ29ycmVjdGlvbjpw
cm9wb3NlZFJlcGxhY2VtZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxE
b2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VJ
Z25vcmVkIHRvQ29ycmVjdGlvbjpwcm9wb3NlZFJlcGxhY2VtZW50IGZvcldvcmQ6cmVwbGFjZWQg
bGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZVJldmVy
c2lvbjoKKyAgICAgICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQpCisgICAgICAgICAgICBbc3Bl
bGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlUmV2ZXJ0ZWQgdG9D
b3JyZWN0aW9uOnJlcGxhY2VkIGZvcldvcmQ6YWNjZXB0ZWRSZXBsYWNlbWVudCBsYW5ndWFnZTpu
aWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUd1ZXNzZXM6CisgICAgICAgIGlmIChhY2Nl
cHRlZFJlcGxhY2VtZW50KQorICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25z
ZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkIHRvQ29ycmVjdGlvbjphY2NlcHRlZFJlcGxh
Y2VtZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhU
YWc6ZG9jdW1lbnRUYWddOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgaWYgKCFt
X3dhc0Rpc21pc3NlZEV4dGVybmFsbHkpIHsKKyAgICAgICAgW21fdmlldy5nZXQoKSBoYW5kbGVD
b3JyZWN0aW9uUGFuZWxSZXN1bHQ6YWNjZXB0ZWRSZXBsYWNlbWVudF07CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgW21fcmVzdWx0Q29uZGl0aW9uLmdldCgpIGxvY2tdOworICAg
IGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQorICAgICAgICBtX3Jlc3VsdEZvclN5bmNocm9ub3Vz
RGlzbWlzc2FsLmFkb3B0TlMoW2FjY2VwdGVkUmVwbGFjZW1lbnQgY29weV0pOworICAgIFttX3Jl
c3VsdENvbmRpdGlvbi5nZXQoKSBzaWduYWxdOworICAgIFttX3Jlc3VsdENvbmRpdGlvbi5nZXQo
KSB1bmxvY2tdOworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NO
T1dfTEVPUEFSRCkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaAppbmRleCAxZmExMzJhZDZjNWJkNDM3OWZlMGJiODVjOWU2ZmYwZDY2
YjExNzM1Li5mYWNlMTVlZjVkNjc0OTIxOTgzNTBiMzAxNjQ1NjcxMWUyZTdlYzFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApA
QCAtMjcsNyArMjcsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0IDxXZWJDb3JlL0Vk
aXRvci5oPgorI2ltcG9ydCAiQ29ycmVjdGlvblBhbmVsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0Vk
aXRvckNsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTQwLDkgKzE0MCw5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwogICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBp
bnQsIGNvbnN0IFdURjo6U3RyaW5nJik7CiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJD
b3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3Qg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncywg
V2ViQ29yZTo6RWRpdG9yKik7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwo
V2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcm
IHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNv
bnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmlu
Z3MpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJl
YXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwotICAgIHZpcnR1YWwgYm9vbCBpc1No
b3dpbmdDb3JyZWN0aW9uUGFuZWwoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGRpc21pc3ND
b3JyZWN0aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9u
UGFuZWwpOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJp
bmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CiAjZW5kaWYKIHByaXZh
dGU6CkBAIC0xNTQsOCArMTU0LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGF2ZVVuZG9SZWRv
T3BlcmF0aW9uczsKIAogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BB
UkQpCi0gICAgQk9PTCBtX2NvcnJlY3Rpb25QYW5lbElzU2hvd247Ci0gICAgQk9PTCBtX2NvcnJl
Y3Rpb25QYW5lbElzRGlzbWlzc2VkRXh0ZXJuYWxseTsKLSAgICBXZWJDb3JlOjpSZWFzb25Gb3JE
aXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIG1fcmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25Q
YW5lbDsKKyAgICBDb3JyZWN0aW9uUGFuZWwgbV9jb3JyZWN0aW9uUGFuZWw7CiAjZW5kaWYKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0KaW5kZXggNjlkZDU3NDczMWI0NGI0MzBjMjc0NThlNzIzYjQxYzRkZTUxNzRiMC4uY2Iz
ZmI1ODM5MTRmMzA2OTYwYTZkZjVhOTVhNGQ2N2Q1MDI1ZDQ5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtMjAyLDkg
KzIwMiw2IEBAIFdlYkVkaXRvckNsaWVudDo6V2ViRWRpdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZp
ZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICAgICAsIG1fdW5kb1RhcmdldChbW1tXZWJF
ZGl0b3JVbmRvVGFyZ2V0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV0pCiAgICAgLCBtX2hhdmVV
bmRvUmVkb09wZXJhdGlvbnMoZmFsc2UpCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKLSAgICAsIG1fY29ycmVjdGlvblBhbmVsSXNTaG93bihmYWxzZSkKLSNl
bmRpZgogewogfQogCkBAIC04OTEsNzMgKzg4OCwyNSBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6
dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYgYmFkR3JhbW1h
cgogfQogCiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKLXZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkNvcnJlY3Rp
b25QYW5lbEluZm86OlBhbmVsVHlwZSBwYW5lbFR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRp
bmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJu
YXRpdmVSZXBsYWNlbWVudFN0cmluZ3MsIEVkaXRvciogZWRpdG9yKSB7Ci0gICAgZGlzbWlzc0Nv
cnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsSWdub3JlZCk7
Ci0KLSAgICAvLyBOZWVkIHRvIGV4cGxpY2l0bHkgdXNlIHRoZXNlIGxvY2FsIE5TU3RyaW5nIG9i
amVjdHMsIGJlY2F1c2UgdGhlIEMrKyByZWZlcmVuY2VzIG1heSBiZSBpbnZhbGlkYXRlZCBieSB0
aGUgdGltZSB0aGUgYmxvY2sgYmVsb3cgaXMgZXhlY3V0ZWQuCi0gICAgTlNTdHJpbmcgKnJlcGxh
Y2VkU3RyaW5nQXNOU1N0cmluZyA9IHJlcGxhY2VkU3RyaW5nOwotICAgIE5TU3RyaW5nICpyZXBs
YWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgPSByZXBsYWNlbWVudFN0cmluZzsKLQotICAgIG1fY29y
cmVjdGlvblBhbmVsSXNTaG93biA9IFlFUzsKLSAgICBtX2NvcnJlY3Rpb25QYW5lbElzRGlzbWlz
c2VkRXh0ZXJuYWxseSA9IE5POwotICAgIG1fcmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25Q
YW5lbCA9IFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxJZ25vcmVkOwotCi0gICAg
TlNDb3JyZWN0aW9uQnViYmxlVHlwZSBidWJibGVUeXBlID0gY29ycmVjdGlvbkJ1YmJsZVR5cGUo
cGFuZWxUeXBlKTsKLSAgICBOU011dGFibGVBcnJheSAqYWx0ZXJuYXRpdmVTdHJpbmdzID0gbmls
OwotICAgIGlmICghYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIHNpemVfdCBzaXplID0gYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3Muc2l6ZSgp
OwotICAgICAgICBhbHRlcm5hdGl2ZVN0cmluZ3MgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRo
Q2FwYWNpdHk6c2l6ZV07Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KQotICAgICAgICAgICAgW2FsdGVybmF0aXZlU3RyaW5ncyBhZGRPYmplY3Q6KE5TU3RyaW5nKilh
bHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5nc1tpXV07Ci0gICAgfQotICAgIE5TU3BlbGxDaGVj
a2VyICpzcGVsbENoZWNrZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXTsK
LSAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gc2hvd0NvcnJlY3Rpb25C
dWJibGVPZlR5cGU6YnViYmxlVHlwZSBwcmltYXJ5U3RyaW5nOnJlcGxhY2VtZW50U3RyaW5nQXNO
U1N0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0lu
UmVjdDpib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcgdmlldzptX3dlYlZpZXcgY29tcGxldGlv
bkhhbmRsZXI6XihOU1N0cmluZyAqYWNjZXB0ZWRTdHJpbmcpIHsKLSAgICAgICAgc3dpdGNoIChi
dWJibGVUeXBlKSB7Ci0gICAgICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUNvcnJlY3Rp
b246Ci0gICAgICAgICAgICBpZiAoYWNjZXB0ZWRTdHJpbmcpCi0gICAgICAgICAgICAgICAgW3Nw
ZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkIHRv
Q29ycmVjdGlvbjphY2NlcHRlZFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nQXNOU1N0cmlu
ZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVu
dFRhZygpXTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlmICghbV9jb3Jy
ZWN0aW9uUGFuZWxJc0Rpc21pc3NlZEV4dGVybmFsbHkgfHwgbV9yZWFzb25Gb3JEaXNtaXNzaW5n
Q29ycmVjdGlvblBhbmVsID09IFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxDYW5j
ZWxsZWQpCi0gICAgICAgICAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6
TlNDb3JyZWN0aW9uUmVzcG9uc2VSZWplY3RlZCB0b0NvcnJlY3Rpb246cmVwbGFjZW1lbnRTdHJp
bmdBc05TU3RyaW5nIGZvcldvcmQ6cmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nIGxhbmd1YWdlOm5p
bCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCldOwotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNv
cmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUlnbm9yZWQgdG9Db3JyZWN0aW9uOnJlcGxh
Y2VtZW50U3RyaW5nQXNOU1N0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyBs
YW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRh
ZygpXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5T
Q29ycmVjdGlvbkJ1YmJsZVR5cGVSZXZlcnNpb246Ci0gICAgICAgICAgICBpZiAoYWNjZXB0ZWRT
dHJpbmcpCi0gICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0Nv
cnJlY3Rpb25SZXNwb25zZVJldmVydGVkIHRvQ29ycmVjdGlvbjpyZXBsYWNlZFN0cmluZ0FzTlNT
dHJpbmcgZm9yV29yZDphY2NlcHRlZFN0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50
V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpXTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVHdWVzc2VzOgotICAgICAgICAgICAg
aWYgKGFjY2VwdGVkU3RyaW5nKQotICAgICAgICAgICAgICAgIFtbTlNTcGVsbENoZWNrZXIgc2hh
cmVkU3BlbGxDaGVja2VyXSByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2Vw
dGVkIHRvQ29ycmVjdGlvbjphY2NlcHRlZFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nQXNO
U1N0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpbbV93ZWJWaWV3IHNw
ZWxsQ2hlY2tlckRvY3VtZW50VGFnXV07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBlZGl0b3ItPmhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdChTdHJpbmcoYWNjZXB0
ZWRTdHJpbmcpKTsKLSAgICB9XTsKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlv
blBhbmVsKENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSBwYW5lbFR5cGUsIGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCit7CisgICAgbV9jb3JyZWN0
aW9uUGFuZWwuc2hvdyhtX3dlYlZpZXcsIHBhbmVsVHlwZSwgYm91bmRpbmdCb3hPZlJlcGxhY2Vk
U3RyaW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZlUmVw
bGFjZW1lbnRTdHJpbmdzKTsKIH0KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb25Gb3JE
aXNtaXNzaW5nKQogewotICAgIGlmIChpc1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwoKSkgewotICAg
ICAgICBtX2NvcnJlY3Rpb25QYW5lbElzRGlzbWlzc2VkRXh0ZXJuYWxseSA9IFlFUzsKLSAgICAg
ICAgbV9yZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsID0gcmVhc29uRm9yRGlzbWlz
c2luZzsKLSAgICAgICAgaWYgKHJlYXNvbkZvckRpc21pc3NpbmcgPT0gUmVhc29uRm9yRGlzbWlz
c2luZ0NvcnJlY3Rpb25QYW5lbEFjY2VwdGVkKQotICAgICAgICAgICAgW1tOU1NwZWxsQ2hlY2tl
ciBzaGFyZWRTcGVsbENoZWNrZXJdIGRpc21pc3NDb3JyZWN0aW9uQnViYmxlRm9yVmlldzptX3dl
YlZpZXddOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl0gY2FuY2VsQ29ycmVjdGlvbkJ1YmJsZUZvclZpZXc6bV93ZWJWaWV3XTsK
LSAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJc1Nob3duID0gTk87Ci0gICAgfQorICAgIG1fY29y
cmVjdGlvblBhbmVsLmRpc21pc3MocmVhc29uRm9yRGlzbWlzc2luZyk7CiB9CiAKLWJvb2wgV2Vi
RWRpdG9yQ2xpZW50Ojppc1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwoKQorU3RyaW5nIFdlYkVkaXRv
ckNsaWVudDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oUmVhc29uRm9yRGlzbWlzc2luZ0Nv
cnJlY3Rpb25QYW5lbCByZWFzb25Gb3JEaXNtaXNzaW5nKQogewotICAgIHJldHVybiBtX2NvcnJl
Y3Rpb25QYW5lbElzU2hvd247CisgICAgcmV0dXJuIG1fY29ycmVjdGlvblBhbmVsLmRpc21pc3NT
b29uKHJlYXNvbkZvckRpc21pc3NpbmcpOwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVj
b3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVz
cG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKIHsKLSAgICBOU0NvcnJlY3Rpb25SZXNwb25z
ZSBzcGVsbENoZWNrZXJSZXNwb25zZSA9IHJlc3BvbnNlVHlwZSA9PSBFZGl0b3JDbGllbnQ6OkF1
dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQgPyBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkIDogTlND
b3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7Ci0gICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVs
bENoZWNrZXJdIHJlY29yZFJlc3BvbnNlOnNwZWxsQ2hlY2tlclJlc3BvbnNlIHRvQ29ycmVjdGlv
bjpyZXBsYWNlbWVudFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nIGxhbmd1YWdlOm5pbCBp
blNwZWxsRG9jdW1lbnRXaXRoVGFnOlttX3dlYlZpZXcgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWdd
XTsKKyAgICBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSA9IHJlc3BvbnNlVHlwZSA9PSBF
ZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQgPyBOU0NvcnJlY3Rpb25SZXNwb25z
ZVJldmVydGVkIDogTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7CisgICAgQ29ycmVjdGlvblBh
bmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKG1fd2ViVmlldywgcmVzcG9uc2UsIHJl
cGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDg0NzQ4ZTVjY2VlZGNhOGNiYmU1ODVkOTU0NWY2
NmRlMGU4ZmQ4OWUuLjU5ZWI4MGM2MWM4YjMwMTNhMTNkZjM2YzY5OGNiMmM4MWY0NWY5ODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTUzMTEsNiArNTMxMSwxNiBAQCBz
dGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpTVmFsdWUoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIGpzVmFsdQogCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEJVSUxESU5H
X09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCistICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJl
c3VsdDooTlNTdHJpbmcqKXJlc3VsdAoreworICAgIFdlYkZyYW1lICp3ZWJGcmFtZSA9IFtzZWxm
IF9zZWxlY3RlZE9yTWFpbkZyYW1lXTsKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh3ZWJG
cmFtZSk7CisgICAgaWYgKGNvcmVGcmFtZSkKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+
aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KHJlc3VsdCk7Cit9CisjZW5kaWYKKwogQGVuZAog
CiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld1VuZG9hYmxlRWRpdGluZykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCBhNGVhODA5YjAwMWRi
YzZhNjcyMzRmMTcyZjAyMGJjMzRjZjdlODRjLi5jYjk0ODUxMzdkYjA2ZjkxZjY5ZDEzYWEwNzQz
MjUyZGRmYzRlNWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oCkBAIC02NDQsNyArNjQ0LDkgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEku
CiAtICh2b2lkKXNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ6KEJPT0wpZmxh
ZzsKIC0gKHZvaWQpdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uOihpZClzZW5kZXI7
CiAjZW5kaWYKLQorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
CistICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcqKXJlc3VsdDsK
KyNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdFZGl0aW5nSW5NYWls
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDJlNDE2NDAzZDJjY2E5MzQ5MTljMzg4NjJmY2RhODE0ODdhYWRkMzIu
LjlkYTg4Nzg5OWJiYmZlNjAyNDY3NjZjY2EzMzJhNTljMjg3ODkzZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1OSBAQAorMjAxMS0wMy0yMiAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIb29rIHVwIG5ldyBB
cHBLaXQgYXV0b2NvcnJlY3Rpb24gVUkgd2l0aCBXSzIuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA1NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
ODk0NzQ2Mz4KKworICAgICAgICBQbGVhc2Ugc2VlIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBkZXRh
aWwuCisKKyAgICAgICAgVGhlIGNhbGxzIHRvIEFwcEtpdCBhcmUgaW1wbGVtZW50ZWQgaW4gUGFn
ZUNsaWVudEltcGwuIE90aGVyIGNoYW5nZXMgYXJlIG5lY2Vzc2FyeSBmb3IgdGhlCisgICAgICAg
IHBsdW1iaW5nIHdvcmsuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50
SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2hvd0NvcnJlY3Rpb25QYW5lbCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxT
b29uKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlY29yZEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAg
ICAgICAgKC1bV0tWaWV3IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnXSk6CisgICAgICAgICgtW1dL
VmlldyBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzaG93Q29ycmVjdGlvblBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0NvcnJlY3Rp
b25QYW5lbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Q29ycmVjdGlvblBhbmVsOjppc1No
b3dpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tOiBBZGRl
ZC4KKyAgICAgICAgKGNvcnJlY3Rpb25CdWJibGVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6Q29y
cmVjdGlvblBhbmVsOjpDb3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpDb3JyZWN0
aW9uUGFuZWw6On5Db3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpDb3JyZWN0aW9u
UGFuZWw6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3Mp
OgorICAgICAgICAoV2ViS2l0OjpDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3NTb29uKToKKyAgICAg
ICAgKFdlYktpdDo6Q29ycmVjdGlvblBhbmVsOjpkaXNtaXNzSW50ZXJuYWwpOgorICAgICAgICAo
V2ViS2l0OjpDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UpOgor
ICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29v
bik6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTEtMDMtMjIgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0g
V2VpbmlnLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFn
ZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGll
bnRJbXBsLmgKaW5kZXggMzM4Zjc3NjgxZjkxYzczYzI3Y2RkYmViZjY0ZDZkZjA4OTU2MmNjMS4u
OTliZTQzMTBkOGNlYWY1NzI0NTk4MGE4ZDMwZDI5NmJmOTAzZGY4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCkBAIC0yNiw2ICsy
Niw3IEBACiAjaWZuZGVmIFBhZ2VDbGllbnRJbXBsX2gKICNkZWZpbmUgUGFnZUNsaWVudEltcGxf
aAogCisjaW5jbHVkZSAiQ29ycmVjdGlvblBhbmVsLmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5o
IgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtMTA0LDggKzEwNSwxNiBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0
IFN0cmluZyYsIGRvdWJsZSBzY2FsZUZhY3RvciwgY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYp
OwogCisgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVj
dGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5k
aW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VkU3RyaW5n
LCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxXVEY6
OlN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29y
cmVjdGlvblBhbmVsKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQ29ycmVjdGlvblBhbmVs
U29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShXZWJDb3JlOjpFZGl0b3JD
bGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CisKICAg
ICBXS1ZpZXcqIG1fd2tWaWV3OwogICAgIFJldGFpblB0cjxXZWJFZGl0b3JVbmRvVGFyZ2V0T2Jq
Qz4gbV91bmRvVGFyZ2V0OworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkK
KyAgICBDb3JyZWN0aW9uUGFuZWwgbV9jb3JyZWN0aW9uUGFuZWw7CisjZW5kaWYKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QYWdlQ2xpZW50SW1wbC5tbQppbmRleCBlMzUwM2RlNmY4N2Y2OTlmYjc2N2M2MjI2ZTQ5
ZjUzYzFmYzk0NDYwLi5jNjI0NDViZmRjYjJjNzI4MTc3MTFiNmIyN2JhMjdlM2Q4NGQ3MDhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1w
bC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1w
bC5tbQpAQCAtNDI3LDQgKzQyNywzNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRQZXJmb3Jt
RGljdGlvbmFyeUxvb2t1cChjb25zdCBTdHJpbmcmIHRleHQsIGRvdWJsZSBzY2FsZQogICAgIFtt
X3drVmlldyBzaG93RGVmaW5pdGlvbkZvckF0dHJpYnV0ZWRTdHJpbmc6YXR0cmlidXRlZFN0cmlu
Zy5nZXQoKSByYW5nZTpOU01ha2VSYW5nZSgwLCBbYXR0cmlidXRlZFN0cmluZy5nZXQoKSBsZW5n
dGhdKSBvcHRpb25zOm9wdGlvbnMgYmFzZWxpbmVPcmlnaW5Qcm92aWRlcjpeKE5TUmFuZ2UgYWRq
dXN0ZWRSYW5nZSkgeyByZXR1cm4gKE5TUG9pbnQpdGV4dEJhc2VsaW5lT3JpZ2luOyB9XTsKIH0K
IAordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2hvd0NvcnJlY3Rpb25QYW5lbChDb3JyZWN0aW9uUGFu
ZWxJbmZvOjpQYW5lbFR5cGUgdHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxh
Y2VtZW50U3RyaW5ncykKK3sKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
CisgICAgaWYgKCFpc1ZpZXdWaXNpYmxlKCkgfHwgIWlzVmlld0luV2luZG93KCkpCisgICAgICAg
IHJldHVybjsKKyAgICBtX2NvcnJlY3Rpb25QYW5lbC5zaG93KG1fd2tWaWV3LCB0eXBlLCBib3Vu
ZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmlu
ZywgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOworI2VuZGlmCit9CisKK3ZvaWQgUGFn
ZUNsaWVudEltcGw6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0Nv
cnJlY3Rpb25QYW5lbCByZWFzb24pCit7CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19M
RU9QQVJEKQorICAgIG1fY29ycmVjdGlvblBhbmVsLmRpc21pc3MocmVhc29uKTsKKyNlbmRpZgor
fQorCitTdHJpbmcgUGFnZUNsaWVudEltcGw6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFdl
YkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uKQoreworI2lm
ICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICByZXR1cm4gbV9jb3JyZWN0
aW9uUGFuZWwuZGlzbWlzc1Nvb24ocmVhc29uKTsKKyNlbHNlCisgICAgcmV0dXJuIFN0cmluZygp
OworI2VuZGlmCit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnJlY29yZEF1dG9jb3JyZWN0aW9u
UmVzcG9uc2UoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSByZXNwb25z
ZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnRTdHJpbmcpCit7CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQor
ICAgIE5TQ29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlID0gcmVzcG9uc2VUeXBlID09IEVkaXRv
ckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXZlcnRlZCA/IE5TQ29ycmVjdGlvblJlc3BvbnNlUmV2
ZXJ0ZWQgOiBOU0NvcnJlY3Rpb25SZXNwb25zZUVkaXRlZDsKKyAgICBDb3JyZWN0aW9uUGFuZWw6
OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV93a1ZpZXcsIHJlc3BvbnNlLCByZXBsYWNl
ZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4
IGI1MGQ2NGIzMzQ1ODFlOGNjMzAwOGExMDJiMjU5NDg0YjQ3N2M4NzkuLmMyMzJhMDJlNjUyY2Q2
YzI2YzhkODNkYTU0MTY4NzFjZDE3ZDI5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0KQEAgLTE0OSw2ICsxNDksOSBAQCB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBWYWxpZGF0aW9uVmVjdG9yPiBWYWxpZGF0aW9uTWFwOwogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKICAgICBSZXRhaW5QdHI8V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcj4gX2Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyOwogI2VuZGlmCisKKyAgICBCT09MIF9oYXNTcGVsbENo
ZWNrZXJEb2N1bWVudFRhZzsKKyAgICBOU0ludGVnZXIgX3NwZWxsQ2hlY2tlckRvY3VtZW50VGFn
OwogfQogQGVuZAogCkBAIC0yMDYxLDUgKzIwNjQsMTkgQEAgc3RhdGljIHZvaWQgZHJhd1BhZ2VC
YWNrZ3JvdW5kKENHQ29udGV4dFJlZiBjb250ZXh0LCBXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0
IEkKICAgICBfZGF0YS0+X3BhZ2UtPnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihG
bG9hdFBvaW50KHRoZVBvaW50LngsIHRoZVBvaW50LnkpKTsKIH0KIAorLSAoTlNJbnRlZ2VyKXNw
ZWxsQ2hlY2tlckRvY3VtZW50VGFnCit7CisgICAgaWYgKCFfZGF0YS0+X2hhc1NwZWxsQ2hlY2tl
ckRvY3VtZW50VGFnKSB7CisgICAgICAgIF9kYXRhLT5fc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcg
PSBbTlNTcGVsbENoZWNrZXIgdW5pcXVlU3BlbGxEb2N1bWVudFRhZ107CisgICAgICAgIF9kYXRh
LT5faGFzU3BlbGxDaGVja2VyRG9jdW1lbnRUYWcgPSBZRVM7CisgICAgfQorICAgIHJldHVybiBf
ZGF0YS0+X3NwZWxsQ2hlY2tlckRvY3VtZW50VGFnOworfQorCistICh2b2lkKWhhbmRsZUNvcnJl
Y3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcqKXJlc3VsdAoreworICAgIF9kYXRhLT5fcGFnZS0+
aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KHJlc3VsdCk7Cit9CisKIEBlbmQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3UHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3UHJpdmF0ZS5oCmluZGV4IGNl
Y2UxYzc0MGI3NzJjN2VjNjJjNmRiZTk2YmZjMGQ2MzYyNGFlMzcuLjM3YzJkOGRkODFmYjI4NjVh
MjE4YjEyOThmNGMyYjhjYTZiZWM1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXdQcml2YXRlLmgKQEAgLTM1LDQgKzM1LDYgQEAKIAogLSAodm9pZClw
ZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0Q3VycmVudE1vdXNlTG9jYXRpb247CiAKKy0gKE5TSW50
ZWdlcilzcGVsbENoZWNrZXJEb2N1bWVudFRhZzsKKy0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBh
bmVsUmVzdWx0OihOU1N0cmluZyopcmVzdWx0OwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKaW5kZXggMTBiZDA3ODdhNDRiOTUzYmNhMzg4Nzc1NTZjNDliNmIwYmRlYTZm
Yi4uMTVkOGRlMzYwYTQ5MzIxNzI4ZDZiNDJkYjZiMWJhOWJiZDJmMGE4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xMzAsNiArMTMwLDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q29tcGxleFRleHRJbnB1dEVuYWJsZWQodWludDY0X3QgcGx1Z2lu
Q29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIGJvb2wgY29tcGxleFRleHRJbnB1dEVuYWJsZWQp
ID0gMDsKICAgICB2aXJ0dWFsIENHQ29udGV4dFJlZiBjb250YWluaW5nV2luZG93R3JhcGhpY3ND
b250ZXh0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1
cChjb25zdCBTdHJpbmcmLCBkb3VibGUgc2NhbGVGYWN0b3IsIGNvbnN0IERpY3Rpb25hcnlQb3B1
cEluZm8mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29y
ZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZl
Y3RvcjxXVEY6OlN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9y
RGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGRpc21p
c3NDb3JyZWN0aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0
aW9uUGFuZWwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZShXZWJDb3JlOjpFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBj
b25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBs
YWNlbWVudFN0cmluZykgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
U2Nyb2xsYmFyc0Zvck1haW5GcmFtZSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMjllOGU4YTIwZTNiNGUyZTFmNzg0YjI1ZGE0Mzdk
YWIxNzYxMDIzZC4uYmJlMmIzYTQyNGJjYzBhOTE4MDA1Njk1OTNmYTE3Yjk5ZDY2MjAxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEzOTksNiArMTM5
OSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cAogICAgIGlmICghYXJndW1lbnRzLT5kZWNv
ZGUobWVzc2FnZURlY29kZXIpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFURk9STShNQUMp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICBkaXNtaXNzQ29ycmVj
dGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxJZ25vcmVkKTsKKyNl
bmRpZgorCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1lKGZy
YW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCkBAIC0yNzY1LDQgKzI3NjksMzYg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmEKICAgICBtX3VpQ2xpZW50LnNhdmVEYXRhVG9GaWxl
SW5Eb3dubG9hZHNGb2xkZXIodGhpcywgc3VnZ2VzdGVkRmlsZW5hbWUsIG1pbWVUeXBlLCBvcmln
aW5hdGluZ1VSTFN0cmluZywgZGF0YSk7CiB9CiAKKyNpZiBQTEFURk9STShNQUMpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzaG93Q29y
cmVjdGlvblBhbmVsKGludDMyX3QgcGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
IGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3Rv
cjxXVEY6OlN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQoreworICAgIG1f
cGFnZUNsaWVudC0+c2hvd0NvcnJlY3Rpb25QYW5lbCgoV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVs
SW5mbzo6UGFuZWxUeXBlKXBhbmVsVHlwZSwgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBy
ZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRT
dHJpbmdzKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwo
aW50MzJfdCByZWFzb24pCit7CisgICAgbV9wYWdlQ2xpZW50LT5kaXNtaXNzQ29ycmVjdGlvblBh
bmVsKChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKXJlYXNvbik7
Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihpbnQz
Ml90IHJlYXNvbiwgU3RyaW5nJiByZXN1bHQpCit7CisgICAgcmVzdWx0ID0gbV9wYWdlQ2xpZW50
LT5kaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbigoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2lu
Z0NvcnJlY3Rpb25QYW5lbClyZWFzb24pOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZShpbnQzMl90IHJlc3BvbnNlVHlwZSwgY29uc3QgV1RGOjpT
dHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJp
bmcpCit7CisgICAgbV9wYWdlQ2xpZW50LT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKChX
ZWJDb3JlOjpFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlKXJlc3BvbnNl
VHlwZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKTsKK30KKyNlbmRpZgorCisj
aWYgUExBVEZPUk0oTUFDKQordm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUNvcnJlY3Rpb25QYW5l
bFJlc3VsdChjb25zdCBXVEY6OlN0cmluZyYgcmVzdWx0KQoreworI2lmICFkZWZpbmVkKEJVSUxE
SU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICBpZiAoIWlzQ2xvc2VkKCkpCisgICAgICAgIHByb2Nl
c3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0
KHJlc3VsdCksIG1fcGFnZUlELCAwKTsKKyNlbmRpZgorfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDVl
ODJjMmQ5ZTA3MmNiMTg3YzI5NjA3NDA1YjRlNWRkMGI0YzkyZDkuLjNmOWVlMDVjZTk1MmRmOWEy
MzgxZDZmOTliNzYxMWFlOGIzOTBlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTQ1MCw2ICs0NTAsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBmbGFzaEJh
Y2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiB1cGRhdGVS
ZWN0cyk7CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCBoYW5kbGVDb3JyZWN0aW9uUGFu
ZWxSZXN1bHQoY29uc3QgV1RGOjpTdHJpbmcmIHJlc3VsdCk7CisjZW5kaWYKKwogICAgIHN0YXRp
YyB2b2lkIHNldERlYnVnUGFpbnRGbGFncyhXS1BhZ2VEZWJ1Z1BhaW50RmxhZ3MgZmxhZ3MpIHsg
c19kZWJ1Z1BhaW50RmxhZ3MgPSBmbGFnczsgfQogICAgIHN0YXRpYyBXS1BhZ2VEZWJ1Z1BhaW50
RmxhZ3MgZGVidWdQYWludEZsYWdzKCkgeyByZXR1cm4gc19kZWJ1Z1BhaW50RmxhZ3M7IH0KIApA
QCAtNjQzLDYgKzY0NywxMyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbml0aWFsaXplU2FuZGJv
eEV4dGVuc2lvbkhhbmRsZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJik7CiAKKyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NO
T1dfTEVPUEFSRCkKKyAgICB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoaW50MzJfdCBwYW5lbFR5
cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5n
LCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiBy
ZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgYWx0ZXJuYXRpdmVS
ZXBsYWNlbWVudFN0cmluZ3MpOworICAgIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChpbnQz
Ml90IHJlYXNvbik7CisgICAgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihpbnQzMl90
IHJlYXNvbiwgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25S
ZXNwb25zZShpbnQzMl90IHJlc3BvbnNlVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOworI2VuZGlmCisK
ICAgICBQYWdlQ2xpZW50KiBtX3BhZ2VDbGllbnQ7CiAgICAgV2ViTG9hZGVyQ2xpZW50IG1fbG9h
ZGVyQ2xpZW50OwogICAgIFdlYlBvbGljeUNsaWVudCBtX3BvbGljeUNsaWVudDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGM4
MTJhZTE2MjU3YmJiODgyYWI3NWVkODA3MWM2NmNiMWMzMDk2YjIuLjgzZDQzNzBmOTI0MjU1ZjFj
OGJmZjBlZmE0ODM5Yzk2ODMwM2YwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjA4LDQgKzIwOCwxMiBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogI2lmIFBMQVRGT1JNKFdJTikKICAgICBTdGFydERyYWdEcm9w
KFdlYkNvcmU6OkludFBvaW50IGltYWdlUG9pbnQsIFdlYkNvcmU6OkludFBvaW50IGRyYWdQb2lu
dCwgdWludDY0X3Qgb2tFZmZlY3QsIEhhc2hNYXA8VUlOVCxWZWN0b3I8U3RyaW5nPiA+IGRhdGFN
YXAsIFdlYkNvcmU6OkludFNpemUgZHJhZ0ltYWdlU2l6ZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OkhhbmRsZSBkcmFnSW1hZ2UsIGJvb2wgbGlua0RyYWcpCiAjZW5kaWYKKworI2lmIFBMQVRGT1JN
KE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgICMgQXV0b2Nv
cnJlY3Rpb24gbWVzc2FnZXMKKyAgICBTaG93Q29ycmVjdGlvblBhbmVsKGludDMyX3QgcGFuZWxU
eXBlLCBXZWJDb3JlOjpGbG9hdFJlY3QgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBXVEY6
OlN0cmluZyByZXBsYWNlZFN0cmluZywgV1RGOjpTdHJpbmcgcmVwbGFjZW1lbnRTdHJpbmcsIFZl
Y3RvcjxXVEY6OlN0cmluZz4gYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCisgICAgRGlz
bWlzc0NvcnJlY3Rpb25QYW5lbChpbnQzMl90IHJlYXNvbikKKyAgICBEaXNtaXNzQ29ycmVjdGlv
blBhbmVsU29vbihpbnQzMl90IHJlYXNvbikgLT4gKFN0cmluZyByZXN1bHQpCisgICAgUmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZShpbnQzMl90IHJlc3BvbnNlVHlwZSwgV1RGOjpTdHJpbmcg
cmVwbGFjZWRTdHJpbmcsIFdURjo6U3RyaW5nIHJlcGxhY2VtZW50U3RyaW5nKTsKKyNlbmRpZgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFu
ZWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjM1MmU2MWExOGY2Y2VlOTY5YWQzNmU5Y2NiYjczOWExYzAxZjMzMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVs
LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29ycmVjdGlvblBhbmVs
X2gKKyNkZWZpbmUgQ29ycmVjdGlvblBhbmVsX2gKKworI2lmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKKyNpbXBvcnQgPEFwcEtpdC9OU1RleHRDaGVja2VyLmg+CisjaW1wb3J0
IDxKYXZhc2NyaXB0Q29yZS9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ29ycmVjdGlv
blBhbmVsSW5mby5oPgorCitAY2xhc3MgV0tWaWV3OworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgQ29ycmVjdGlvblBhbmVsIHsKK3B1YmxpYzoKKyAgICBDb3JyZWN0aW9uUGFuZWwoKTsK
KyAgICB+Q29ycmVjdGlvblBhbmVsKCk7CisgICAgdm9pZCBzaG93KFdLVmlldyosIFdlYkNvcmU6
OkNvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CisgICAgdm9pZCBkaXNtaXNzKFdlYkNv
cmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOworICAgIFN0cmluZyBkaXNt
aXNzU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKKyAg
ICBzdGF0aWMgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdLVmlldyosIE5TQ29y
cmVjdGlvblJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKKworcHJpdmF0ZToKKyAgICBib29sIGlzU2hvd2luZygp
IGNvbnN0IHsgcmV0dXJuIG1fdmlldzsgfQorICAgIHZvaWQgZGlzbWlzc0ludGVybmFsKFdlYkNv
cmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwsIGJvb2wgZGlzbWlzc2luZ0V4
dGVybmFsbHkpOworICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVudChOU1N0cmluZyog
YWNjZXB0ZWRSZXBsYWNlbWVudCwgTlNTdHJpbmcqIHJlcGxhY2VkLCBOU1N0cmluZyogcHJvcG9z
ZWRSZXBsYWNlbWVudCwgTlNDb3JyZWN0aW9uQnViYmxlVHlwZSk7CisKKyAgICBib29sIG1fd2Fz
RGlzbWlzc2VkRXh0ZXJuYWxseTsKKyAgICBXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29y
cmVjdGlvblBhbmVsIG1fcmVhc29uRm9yRGlzbWlzc2luZzsKKyAgICBSZXRhaW5QdHI8V0tWaWV3
PiBtX3ZpZXc7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX3Jlc3VsdEZvclN5bmNocm9ub3Vz
RGlzbWlzc2FsOworICAgIFJldGFpblB0cjxOU0NvbmRpdGlvbj4gbV9yZXN1bHRDb25kaXRpb247
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vICFkZWZpbmVkKEJVSUxE
SU5HX09OX1NOT1dfTEVPUEFSRCkKKworI2VuZGlmIC8vIENvcnJlY3Rpb25QYW5lbF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY1NjYzZjY0OTU2ZWU5ZDUzMzU4OTA1NTVhZDk3YjlmYTAwMjA2NTIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQpA
QCAtMCwwICsxLDE3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lmICFk
ZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyNpbXBvcnQgIkNvcnJlY3Rpb25QYW5l
bC5oIgorCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIldLVmlldy5oIgorI2lt
cG9ydCAiV0tWaWV3UHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5n
IG5hbWVzcGFjZSBXVEY7CisKK3N0YXRpYyBpbmxpbmUgTlNDb3JyZWN0aW9uQnViYmxlVHlwZSBj
b3JyZWN0aW9uQnViYmxlVHlwZShDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUgcGFuZWxU
eXBlKQoreworICAgIHN3aXRjaCAocGFuZWxUeXBlKSB7CisgICAgY2FzZSBDb3JyZWN0aW9uUGFu
ZWxJbmZvOjpQYW5lbFR5cGVDb3JyZWN0aW9uOgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9u
QnViYmxlVHlwZUNvcnJlY3Rpb247CisgICAgY2FzZSBDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5l
bFR5cGVSZXZlcnNpb246CisgICAgICAgIHJldHVybiBOU0NvcnJlY3Rpb25CdWJibGVUeXBlUmV2
ZXJzaW9uOworICAgIGNhc2UgQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlU3BlbGxpbmdT
dWdnZXN0aW9uczoKKyAgICAgICAgcmV0dXJuIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVHdWVzc2Vz
OworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTlNDb3JyZWN0
aW9uQnViYmxlVHlwZUNvcnJlY3Rpb247Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitDb3Jy
ZWN0aW9uUGFuZWw6OkNvcnJlY3Rpb25QYW5lbCgpCisgICAgOiBtX3dhc0Rpc21pc3NlZEV4dGVy
bmFsbHkoZmFsc2UpCisgICAgLCBtX3JlYXNvbkZvckRpc21pc3NpbmcoUmVhc29uRm9yRGlzbWlz
c2luZ0NvcnJlY3Rpb25QYW5lbElnbm9yZWQpCisgICAgLCBtX3Jlc3VsdENvbmRpdGlvbihBZG9w
dE5TLCBbW05TQ29uZGl0aW9uIGFsbG9jXSBpbml0XSkKK3sKK30KKworQ29ycmVjdGlvblBhbmVs
Ojp+Q29ycmVjdGlvblBhbmVsKCkKK3sKKyAgICBkaXNtaXNzSW50ZXJuYWwoUmVhc29uRm9yRGlz
bWlzc2luZ0NvcnJlY3Rpb25QYW5lbElnbm9yZWQsIGZhbHNlKTsKK30KKwordm9pZCBDb3JyZWN0
aW9uUGFuZWw6OnNob3coV0tWaWV3KiB2aWV3LCBDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5
cGUgdHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJp
bmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykK
K3sKKyAgICBkaXNtaXNzSW50ZXJuYWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5l
bElnbm9yZWQsIGZhbHNlKTsKKyAgICAKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybjsK
KworICAgIE5TU3RyaW5nKiByZXBsYWNlZFN0cmluZ0FzTlNTdHJpbmcgPSByZXBsYWNlZFN0cmlu
ZzsKKyAgICBOU1N0cmluZyogcmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nID0gcmVwbGFjZW1l
bnRTdHJpbmc7CisgICAgbV92aWV3ID0gdmlldzsKKyAgICBOU0NvcnJlY3Rpb25CdWJibGVUeXBl
IGJ1YmJsZVR5cGUgPSBjb3JyZWN0aW9uQnViYmxlVHlwZSh0eXBlKTsKKyAgICAKKyAgICBOU011
dGFibGVBcnJheSogYWx0ZXJuYXRpdmVTdHJpbmdzID0gMDsKKyAgICBpZiAoIWFsdGVybmF0aXZl
UmVwbGFjZW1lbnRTdHJpbmdzLmlzRW1wdHkoKSkgeworICAgICAgICBzaXplX3Qgc2l6ZSA9IGFs
dGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLnNpemUoKTsKKyAgICAgICAgYWx0ZXJuYXRpdmVT
dHJpbmdzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnNpemVdOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIFthbHRlcm5h
dGl2ZVN0cmluZ3MgYWRkT2JqZWN0OihOU1N0cmluZyopYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0
cmluZ3NbaV1dOworICAgIH0KKworICAgIE5TU3BlbGxDaGVja2VyKiBzcGVsbENoZWNrZXIgPSBb
TlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXTsKKyAgICBbc3BlbGxDaGVja2VyIHNo
b3dDb3JyZWN0aW9uQnViYmxlT2ZUeXBlOmJ1YmJsZVR5cGUgcHJpbWFyeVN0cmluZzpyZXBsYWNl
bWVudFN0cmluZ0FzTlNTdHJpbmcgYWx0ZXJuYXRpdmVTdHJpbmdzOmFsdGVybmF0aXZlU3RyaW5n
cyBmb3JTdHJpbmdJblJlY3Q6Ym91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nIHZpZXc6bV92aWV3
LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcqIGFjY2VwdGVkU3RyaW5nKSB7Cisg
ICAgICAgIGhhbmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQoYWNjZXB0ZWRTdHJpbmcsIHJlcGxhY2Vk
U3RyaW5nQXNOU1N0cmluZywgcmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nLCBidWJibGVUeXBl
KTsKKyAgICB9XTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3MoUmVhc29uRm9y
RGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24pCit7CisgICAgZGlzbWlzc0ludGVybmFs
KHJlYXNvbiwgdHJ1ZSk7Cit9CisKK1N0cmluZyBDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3NTb29u
KFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uKQoreworICAgIGlmICgh
aXNTaG93aW5nKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGRpc21pc3NJbnRl
cm5hbChyZWFzb24sIHRydWUpOworICAgIFttX3Jlc3VsdENvbmRpdGlvbi5nZXQoKSBsb2NrXTsK
KyAgICB3aGlsZSAoIW1fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNtaXNzYWwpCisgICAgICAgIFtt
X3Jlc3VsdENvbmRpdGlvbi5nZXQoKSB3YWl0XTsKKyAgICBbbV9yZXN1bHRDb25kaXRpb24uZ2V0
KCkgdW5sb2NrXTsKKyAgICByZXR1cm4gbV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rpc21pc3NhbC5n
ZXQoKTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3NJbnRlcm5hbChSZWFzb25G
b3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbiwgYm9vbCBkaXNtaXNzaW5nRXh0ZXJu
YWxseSkKK3sKKyAgICBtX3dhc0Rpc21pc3NlZEV4dGVybmFsbHkgPSBkaXNtaXNzaW5nRXh0ZXJu
YWxseTsKKyAgICBpZiAoIWlzU2hvd2luZygpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAg
bV9yZWFzb25Gb3JEaXNtaXNzaW5nID0gcmVhc29uOworICAgIG1fcmVzdWx0Rm9yU3luY2hyb25v
dXNEaXNtaXNzYWwuY2xlYXIoKTsKKyAgICBpZiAocmVhc29uID09IFJlYXNvbkZvckRpc21pc3Np
bmdDb3JyZWN0aW9uUGFuZWxBY2NlcHRlZCkKKyAgICAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFy
ZWRTcGVsbENoZWNrZXJdIGRpc21pc3NDb3JyZWN0aW9uQnViYmxlRm9yVmlldzptX3ZpZXcuZ2V0
KCldOworICAgIGVsc2UKKyAgICAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNr
ZXJdIGNhbmNlbENvcnJlY3Rpb25CdWJibGVGb3JWaWV3Om1fdmlldy5nZXQoKV07CisgICAgbV92
aWV3LmNsZWFyKCk7Cit9CisKK3ZvaWQgQ29ycmVjdGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVj
dGlvblJlc3BvbnNlKFdLVmlldyogdmlldywgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2Us
IGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRT
dHJpbmcpCit7CisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHJlY29y
ZFJlc3BvbnNlOnJlc3BvbnNlIHRvQ29ycmVjdGlvbjpyZXBsYWNlbWVudFN0cmluZyBmb3JXb3Jk
OnJlcGxhY2VkU3RyaW5nIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOlt2aWV3
IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnXV07Cit9CisKK3ZvaWQgQ29ycmVjdGlvblBhbmVsOjpo
YW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJlcGxhY2VtZW50LCBO
U1N0cmluZyogcmVwbGFjZWQsIE5TU3RyaW5nKiBwcm9wb3NlZFJlcGxhY2VtZW50LCAgTlNDb3Jy
ZWN0aW9uQnViYmxlVHlwZSBjb3JyZWN0aW9uQnViYmxlVHlwZSkKK3sKKyAgICBOU1NwZWxsQ2hl
Y2tlciogc3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl07
CisgICAgTlNJbnRlZ2VyIGRvY3VtZW50VGFnID0gW21fdmlldy5nZXQoKSBzcGVsbENoZWNrZXJE
b2N1bWVudFRhZ107CisgICAgCisgICAgc3dpdGNoIChjb3JyZWN0aW9uQnViYmxlVHlwZSkgewor
ICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUNvcnJlY3Rpb246CisgICAgICAgIGlmIChh
Y2NlcHRlZFJlcGxhY2VtZW50KQorICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNw
b25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkIHRvQ29ycmVjdGlvbjphY2NlcHRlZFJl
cGxhY2VtZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdp
dGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICghbV93
YXNEaXNtaXNzZWRFeHRlcm5hbGx5IHx8IG1fcmVhc29uRm9yRGlzbWlzc2luZyA9PSBSZWFzb25G
b3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsQ2FuY2VsbGVkKQorICAgICAgICAgICAgICAgIFtz
cGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VSZWplY3RlZCB0
b0NvcnJlY3Rpb246cHJvcG9zZWRSZXBsYWNlbWVudCBmb3JXb3JkOnJlcGxhY2VkIGxhbmd1YWdl
Om5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFnXTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVj
dGlvblJlc3BvbnNlSWdub3JlZCB0b0NvcnJlY3Rpb246cHJvcG9zZWRSZXBsYWNlbWVudCBmb3JX
b3JkOnJlcGxhY2VkIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50
VGFnXTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIE5TQ29ycmVjdGlvbkJ1
YmJsZVR5cGVSZXZlcnNpb246CisgICAgICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQorICAg
ICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25z
ZVJldmVydGVkIHRvQ29ycmVjdGlvbjpyZXBsYWNlZCBmb3JXb3JkOmFjY2VwdGVkUmVwbGFjZW1l
bnQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVHdWVzc2VzOgorICAg
ICAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKKyAgICAgICAgICAgIFtzcGVsbENoZWNrZXIg
cmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZCB0b0NvcnJlY3Rpb246
YWNjZXB0ZWRSZXBsYWNlbWVudCBmb3JXb3JkOnJlcGxhY2VkIGxhbmd1YWdlOm5pbCBpblNwZWxs
RG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFnXTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IAorICAgIGlmICghbV93YXNEaXNtaXNzZWRFeHRlcm5hbGx5KSB7CisgICAgICAgIFttX3ZpZXcu
Z2V0KCkgaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OmFjY2VwdGVkUmVwbGFjZW1lbnRdOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIFttX3Jlc3VsdENvbmRpdGlvbi5nZXQo
KSBsb2NrXTsKKyAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKKyAgICAgICAgbV9yZXN1bHRG
b3JTeW5jaHJvbm91c0Rpc21pc3NhbC5hZG9wdE5TKFthY2NlcHRlZFJlcGxhY2VtZW50IGNvcHld
KTsKKyAgICBbbV9yZXN1bHRDb25kaXRpb24uZ2V0KCkgc2lnbmFsXTsKKyAgICBbbV9yZXN1bHRD
b25kaXRpb24uZ2V0KCkgdW5sb2NrXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMzODc3NWEz
MWU3YzQ5ODI5OTNhNTlhODZjNmRiMDZmNzkzZTlhZGYuLjE3M2Y5MDBjNmJjOTE1OGI4ODhhMWQ4
MjRhZmJkNjA4MDFkMjY2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3MCw2ICszNzAsOCBAQAogCQk5M0ZDNjdCRTEyRDND
Q0YyMDBBNjA2MTAgLyogRGVjb2RlckFkYXB0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkM2NzlFMTJEM0NDNzQwMEE2MDYxMCAvKiBEZWNvZGVy
QWRhcHRlci5oICovOyB9OwogCQk5M0ZDNjdCRjEyRDNDQ0YyMDBBNjA2MTAgLyogRW5jb2RlckFk
YXB0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNGQzY3OUYxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmNwcCAqLzsgfTsKIAkJ
OTNGQzY3QzAxMkQzQ0NGMjAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZDNjdBMDEyRDNDQzc0MDBBNjA2
MTAgLyogRW5jb2RlckFkYXB0ZXIuaCAqLzsgfTsKKwkJQjg3OEI2MTUxMzM0MjhEQzAwNjg4OEU5
IC8qIENvcnJlY3Rpb25QYW5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjg3OEI2MTMxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5o
ICovOyB9OworCQlCODc4QjYxNjEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjg3OEI2MTQx
MzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAqLzsgfTsKIAkJQkMwMDkyRjcx
MTU4MzdBMzAwRTBBRTJBIC8qIFJ1bkxvb3BNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwOTJGNTExNTgzN0EzMDBFMEFFMkEgLyogUnVuTG9v
cE1hYy5tbSAqLzsgfTsKIAkJQkMwMDkyRjgxMTU4MzdBMzAwRTBBRTJBIC8qIFdvcmtRdWV1ZU1h
Yy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAw
OTJGNjExNTgzN0EzMDBFMEFFMkEgLyogV29ya1F1ZXVlTWFjLmNwcCAqLzsgfTsKIAkJQkMwMzJE
NzUxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkNocm9tZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJENjAxMEY0Mzc4RDAwNThDMTVBIC8q
IFdlYkNocm9tZUNsaWVudC5oICovOyB9OwpAQCAtMTIzOCw2ICsxMjQwLDggQEAKIAkJOTNGQzY3
QTAxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEVuY29kZXJBZGFwdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE3MkQ1RDdGMTIzNkNCQTgwMEE4OEIxNSAvKiBXZWJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIzOTZFQTU1MTJFMEVEMkQw
MEY0RkVCNyAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29u
ZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI4NzhCNjEzMTMzNDI4REMwMDY4
ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29ycmVjdGlvblBhbmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI4NzhC
NjE0MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3JyZWN0aW9uUGFuZWwubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMDA5MkY1MTE1ODM3QTMwMEUwQUUyQSAvKiBSdW5Mb29wTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUnVuTG9vcE1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMDkyRjYxMTU4MzdBMzAwRTBBRTJB
IC8qIFdvcmtRdWV1ZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXb3JrUXVldWVNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAzMkQ2
MDEwRjQzNzhEMDA1OEMxNUEgLyogV2ViQ2hyb21lQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkNocm9tZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjkyNiwyMCArMjkzMCwyMiBAQAogCQlCQ0NGMDg1QzExM0YzQjc1MDBDNjUwQzUg
LyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlD
RENBODVERTEzMkFEMDUzMDBFOTYxREYgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1hYy5t
bSAqLywKLQkJCQlDRENBODVDNjEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlci5tbSAqLywKLQkJCQlDRENBODVDNzEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlci5oICovLAogCQkJCTFBNjQyOTJDMTJERTVGOTgwMENBQUUy
QyAvKiBCYWNraW5nU3RvcmVNYWMubW0gKi8sCiAJCQkJQkMyNjUxRjUxMTgyNUVGODAwMjQzRTEy
IC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5TWFjLm1tICovLAorCQkJCUI4NzhCNjEz
MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAqLywKKwkJCQlCODc4QjYxNDEz
MzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1tICovLAogCQkJCTFBQTQxN0VEMTJD
MDBEODcwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlck1hYy5tbSAqLywKIAkJCQkxQTFDNjQ4NjExRjQx
NUI3MDA1NTNDMTkgLyogV2ViQ29udGV4dE1hYy5tbSAqLywKIAkJCQk1MUFDQkI5RTEyN0E4RjJD
MDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oICovLAogCQkJCTUxQUNCQjlGMTI3
QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1tICovLAorCQkJCUNEQ0E4
NURFMTMyQUQwNTMwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tICov
LAogCQkJCTFDQThCOTM1MTI3Qzc3NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5t
bSAqLywKIAkJCQlCQzg1N0U4NTEyQjcxRUJCMDBFREVCMkUgLyogV2ViUGFnZVByb3h5TWFjLm1t
ICovLAogCQkJCUJDNTc1MDk1MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQcm94eU1h
Yy5oICovLAogCQkJCUJDNTc1MDk2MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQcm94
eU1hYy5tbSAqLywKIAkJCQlCQzg0RUIxNzEyQTcxMDBDMDA4M0YyREEgLyogV2ViUHJlZmVyZW5j
ZXNNYWMubW0gKi8sCisJCQkJQ0RDQTg1QzYxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXIubW0gKi8sCisJCQkJQ0RDQTg1QzcxMzJBQkE0RTAwRTk2MURGIC8q
IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFj
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTM1MzcsNiArMzU0Myw3IEBACiAJCQkJ
NTExQjI0QUIxMzJFMDk3MjAwMDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFEMDJGNkExMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUQwMkY2QzEzMkVDNzM3MDBCRUFBOTYgLyogV2Vi
SWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjg3OEI2MTUx
MzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC00
MTQ5LDYgKzQxNTYsNyBAQAogCQkJCTUxMUIyNEFBMTMyRTA5NzIwMDA2NUEwQyAvKiBXZWJJY29u
RGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFEMDJGNjQxMzJFQzVCOTAwQkVBQTk2
IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MUQwMkY2QjEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjg3OEI2MTYxMzM0MjhEQzAwNjg4OEU5
IC8qIENvcnJlY3Rpb25QYW5lbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNjBCRkUxMTMzODFE
RjkwMDkxODk5OSAvKiBMb2dnaW5nLm1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
aW5kZXggZmE4NDI2YTM4ZTk0ZmJlM2Y0MTY1OTg5ZjgxNTJmM2FkNzRlNjA3OC4uMTAwNzY0YjE2
MDU5MWUzMTk4MmU2NDgxMmM2MTI3NzBhYTczYzIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBA
IC0xNDEsMTAgKzE0MSwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5w
dXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJv
b2wgZW5hYmxlZCk7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdl
YkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKTsKLSNpZiBQTEFU
Rk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlM
RElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0g
ICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBh
bmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94
T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZl
UmVwbGFjZW1lbnRTdHJpbmdzLCBXZWJDb3JlOjpFZGl0b3IqKTsKKyNpZiBQTEFURk9STShNQUMp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICB2aXJ0dWFsIHZvaWQg
c2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5
cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmlu
Z3MpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJl
YXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwotICAgIHZpcnR1YWwgYm9vbCBpc1No
b3dpbmdDb3JyZWN0aW9uUGFuZWwoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQ29ycmVj
dGlvblBhbmVsU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVs
KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29y
cmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBj
b25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogI2VuZGlmCiAgICAgV2ViUGFn
ZSogbV9wYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmluZGV4IDhhZjA0
MzgwYzFmZmU4NGQ5NWRkMWYwODFmZWEwMjBhYTkxNjQ5OWMuLjY2ZDA0YzNhOTFjNmYxOWI5ZjFi
NmNhNDY4M2E4MzEzMGM3ODIxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMu
bW0KQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dlYlJlc291cmNlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViTlNVUkxFeHRyYXMuaD4K
LSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
TEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorI2lmICFkZWZp
bmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKICNpbXBvcnQgPEFwcEtpdC9OU1RleHRDaGVj
a2VyLmg+CiAjZW5kaWYKIApAQCAtMjQ2LDI2ICsyNDYsMjcgQEAgdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCB1
aW50NjQKICAgICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNoZWNr
VGV4dE9mUGFyYWdyYXBoKFN0cmluZyh0ZXh0LCBsZW5ndGgpLCBjaGVja2luZ1R5cGVzKSwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6Q2hlY2tUZXh0T2ZQYXJhZ3JhcGg6OlJlcGx5KHJlc3VsdHMp
KTsKIH0KIAotI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlM
RElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi12
b2lkIFdlYkVkaXRvckNsaWVudDo6c2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0
aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUgdHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBi
b3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlZFN0
cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MsIFdlYkNvcmU6OkVkaXRvciop
CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQordm9pZCBXZWJFZGl0b3JD
bGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6
UGFuZWxUeXBlIHR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJl
cGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdU
Rjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVy
bmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb3JyZWN0aW9uUGFuZWwo
dHlwZSwgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFj
ZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSk7CiB9CiAKLXZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZv
ckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlzbWlz
c0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBh
bmVsIHJlYXNvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNtaXNzQ29ycmVjdGlvblBhbmVsKHJlYXNvbikpOwog
fQogCi1ib29sIFdlYkVkaXRvckNsaWVudDo6aXNTaG93aW5nQ29ycmVjdGlvblBhbmVsKCkKK1N0
cmluZyBXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFdlYkNvcmU6
OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIFN0cmluZyByZXN1bHQ7CisgICAg
bV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNtaXNzQ29ycmVjdGlv
blBhbmVsU29vbihyZWFzb24pLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNtaXNzQ29ycmVj
dGlvblBhbmVsU29vbjo6UmVwbHkocmVzdWx0KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoRWRpdG9y
Q2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCiB7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6UmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShyZXNwb25zZVR5cGUsIHJlcGxh
Y2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZykpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkYTc3YjBiNDk5OGM2
NWFjNmZhZGYzYTllZGI2NmZhMDZlOTg5MDg4Li4xZmMwYzVmNTZkMjE5YmQwNjQxMDBmMTA2YTZi
NzI5YjJiODMwN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC0yMTMxLDQgKzIxMzEsMTQgQEAgYm9vbCBXZWJQYWdlOjpjYW5IYW5kbGVS
ZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICByZXR1
cm4gcGxhdGZvcm1DYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpOwogfQogCisjaWYgUExBVEZPUk0o
TUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCit2b2lkIFdlYlBhZ2U6
OmhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdChjb25zdCBXVEY6OlN0cmluZyYgcmVzdWx0KQor
eworICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICBmcmFt
ZS0+ZWRpdG9yKCktPmhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdChyZXN1bHQpOworfQorI2Vu
ZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYTU3M2RlMjMyNDIyYjlhZDQ1NmM1ZjJhYmEyNWM2NTlm
YjExODgwYy4uNjY3YjY5OWM4YmQ5N2IyNjBjZTc1ZjI5MTRiZDMyYTAzMDAwODAxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNjEsNiArMzYx
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERyYWdTb3VyY2UoTlNPYmplY3QgKik7CiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9Q
QVJEKQorICAgIHZvaWQgaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KGNvbnN0IFdURjo6U3Ry
aW5nJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwg
Y29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDY0Zjdk
YWZkMDg2MDI4MmY1Mzg0MTYyMzA1NDBhYTE4OWIyMTE5MjIuLjQzNWVkMTEyNTUwMjZmYzIyY2Qx
OWQ4MTQ2MDIxMzNmZTY0YmNlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xOTIsNCArMTkyLDggQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSB7CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgRmluZFpvb21hYmxlQXJl
YUZvclBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50KQogI2VuZGlmCisKKyNpZiBQTEFURk9S
TShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICBIYW5kbGVD
b3JyZWN0aW9uUGFuZWxSZXN1bHQoV1RGOjpTdHJpbmcgcmVzdWx0KQorI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86635</attachid>
            <date>2011-03-23 10:00:23 -0700</date>
            <delta_ts>2011-03-23 11:56:30 -0700</delta_ts>
            <desc>Patch (v5)</desc>
            <filename>bug-56055-20110323100021.patch</filename>
            <type>text/plain</type>
            <size>82258</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE2OTIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYWE4MjhkZWU1NDhiMDg4ZDY5YjQ1
ZGExM2MxYzY5ZDQ5ZmQyZDE3Li45MDE0YjdiZDA0YWI4MzliNTcyMWE3OWUyMzE1Mzc0ODE3Njlm
YTgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMjIgIEppYSBQdSAgPGpwdUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SG9vayB1cCBuZXcgQXBwS2l0IGF1dG9jb3JyZWN0aW9uIFVJIHdpdGggV0syLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwNTUKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzg5NDc0NjM+CisKKyAgICAgICAgUGxlYXNlIHNlZSBXZWJDb3JlL0NoYW5n
ZUxvZyBmb3IgZGV0YWlsLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOiBF
bmFibGUgYXV0b2NvcnJlY3Rpb24gdGVzdHMgZm9yIFdLMi4KKwogMjAxMS0wMy0yMiAgSnVzdGlu
IFNjaHVoICA8anNjaHVoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJr
IFNjaHVsemUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBw
ZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKaW5kZXggNzk5MzhjN2Y3
YTYyYmQ4YTRkNGZjZTAxNzEwZmM5M2VmYTZkNzdkMy4uMDY4YWVjMzBkMTlhZGJiNDdiYTVhYTBl
YzYwMGM1YWQxNzNjODVkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZApAQCAt
NTY5LDIzICs1NjksNiBAQCBwbGF0Zm9ybS9tYWMvZWRpdGluZy9kZWxldGluZy9iYWNrd2FyZC1k
ZWxldGUuaHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXIt
c2V0LWRhdGEtZmlsZS11cmwuaHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2Rv
dWJsZWNsaWNrLXNob3VsZC1ub3QtZXhwYW5kLWFjcm9zcy1saW5lcy5odG1sCiBwbGF0Zm9ybS9t
YWMvZWRpdGluZy9zZWxlY3Rpb24vd29yZC10aGFpLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5n
L3NwZWxsaW5nL2F1dG9jb3JyZWN0aW9uLWNvbnRyYWN0aW9uLmh0bWwKLXBsYXRmb3JtL21hYy9l
ZGl0aW5nL3NwZWxsaW5nL2F1dG9jb3JyZWN0aW9uLWRlbGV0ZS5odG1sCi1wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9zcGVsbGluZy9hdXRvY29ycmVjdGlvbi1yZW1vdmluZy11bmRlcmxpbmUtYWZ0ZXIt
cGFzdGUuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvYXV0b2NvcnJlY3Rpb24t
cmVtb3ZpbmctdW5kZXJsaW5lLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2F1
dG9jb3JyZWN0aW9uLXNpbXBsZS5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9j
bGljay1hdXRvY29ycmVjdGVkLXdvcmQuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxp
bmcvZGVsZXRlLWF1dG9jb3JyZWN0ZWQtd29yZC0xLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5n
L3NwZWxsaW5nL2RlbGV0ZS1pbnRvLWF1dG9jb3JyZWN0ZWQtd29yZC5odG1sCi1wbGF0Zm9ybS9t
YWMvZWRpdGluZy9zcGVsbGluZy9kZWxldGUtaW50by1taXNzcGVsbGVkLXdvcmQuaHRtbAotcGxh
dGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy1tdWx0aXBsZS13b3Jkcy13aXRoLW1h
cmtlcnMuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy13b3JkLXdp
dGgtbWFya2VyLTEuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy13
b3JkLXdpdGgtbWFya2VyLTIuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZm9y
d2FyZC1kZWxldGUtaW50by1hdXRvY29ycmVjdGVkLXdvcmQuaHRtbAotcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvc3BlbGxpbmcvbW92ZS1jdXJzb3ItYXJvdW5kLW1pc3NwZWxsZWQtd29yZC5odG1sCi1w
bGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9tb3ZlLWN1cnNvci10by1hdXRvY29ycmVjdGVk
LXdvcmQuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvbW92ZS1jdXJzb3ItdG8t
YmVnaW5uaW5nLW9mLWF1dG9jb3JyZWN0ZWQtd29yZC5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGlu
Zy9zcGVsbGluZy9yZW1vdmluZy11bmRlcmxpbmUtYWZ0ZXItYWNjZXB0aW5nLWF1dG9jb3JyZWN0
aW9uLXVzaW5nLXB1bmN0dWF0aW9uLmh0bWwKIHBsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0
LWFwcGVhcmFuY2Utc3BpbmJ1dHRvbi11cC5odG1sCiBwbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9p
bnB1dC1udW1iZXItY2xpY2suaHRtbAogcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvbGlzdGJveC1z
Y3JvbGxiYXItaGl0LXRlc3QuaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFiMGI1MmFlYjAxMzk4MmQxMjQy
YzgwNzA3NTJjOTAyMWFjNGJhNWMuLjI0MGJjMGYzZWFlODU5NzQyYjQzYjA2NThkMGQ0MTNmOGY4
YWYwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMS0wMy0yMiAgSmlhIFB1ICA8
anB1QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBIb29rIHVwIG5ldyBBcHBLaXQgYXV0b2NvcnJlY3Rpb24gVUkgd2l0aCBXSzIuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA1NQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODk0NzQ2Mz4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIHRv
IGVuYWJsZSBXSzIgdG8gdXRpbGl6ZSBhdXRvY29ycmVjdGlvbiBVSSBvbiBNYWMgT1MgWC4gSXQg
Y29udGFpbnMgZm9sbG93aW5nCisgICAgICAgIG1ham9yIGNoYW5nZXM6CisKKyAgICAgICAgMS4g
QWxsIGJ1dCBvbmUgYXV0b2NvcnJlY3Rpb24gcmVsYXRlZCBtZXNzYWdlIGlzIHN5bmNocm9ub3Vz
LiBTaW5jZSBkaXNtaXNzaW5nIGF1dG9jb3JyZWN0aW9uCisgICAgICAgIHBhbmVsIGNhbiBwb3Rl
bnRpYWxseSBjYXVzZSBlZGl0aW5nIHRvIG9jY3VyLCBhIHN5bmNocm9ub3VzIGRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWxTb29uKCkgZnVuY3Rpb24KKyAgICAgICAgaXMgaW50cm9kdWNlZCB0byBlbnN1
cmUgYWxsIGVkaXRpbmcgY29tbWFuZHMgb2NjdXIgaW4gY29ycmVjdCBvcmRlci4KKworICAgICAg
ICAyLiBBZGRpdGlvbmFsIGNvbmRpdGlvbiB2YXJpYWJsZSBpcyBuZWVkZWQgdG8gaW1wbGVtZW50
IGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKCkuCisgICAgICAgIFRvIGltcHJvdmUgbWFpbnRh
aW5hYmlsaXR5LCBDb3JyZWN0aW9uUGFuZWwgY2xhc3MgaXMgaW50cm9kdWNlZCB0byBtYW5hZ2Ug
dGhlCisgICAgICAgIGludGVybmFsIHN0YXRlIHJlbGF0ZWQgdG8gY29ycmVjdGlvbiBwYW5lbC4g
VGhpcyBjaGFuZ2UgaXMgYXBwbGllZCB0byBib3RoIFdLMSBhbmQgV0syLgorCisgICAgICAgIDMu
IEVkaXRvckNsaWVudDo6aXNTaG93aW5nQ29ycmVjdGlvblBhbmVsKCkgaGFzIGJlZW4gcmVtb3Zl
ZC4gVGhlIG9yaWdpbmFsIHB1cnBvc2UgaXMgdG8gYWxsb3cKKyAgICAgICAgZWRpdG9yIHRvIGtu
b3cgd2hlbiB0byBoYW5kbGUgRVNDIGtleSBldmVudC4gTm93IHRoaXMgaXMgaGFuZGxlZCBpbnRl
cm5hbGx5IGluIEFwcEtpdCwgc28KKyAgICAgICAgRWRpdG9yQ2xpZW50Ojppc1Nob3dpbmdDb3Jy
ZWN0aW9uUGFuZWwoKSBpc24ndCBuZWNlc3NhcnkgYW55bW9yZS4KKworICAgICAgICA0LiBUaGUg
RWRpdG9yKiBhcmd1bWVudCBpbiBFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwoKSBo
YXMgYmVlbiByZW1vdmVkLCBzaW5jZSB3ZSBjYW4KKyAgICAgICAgYWNjZXNzIG9iamVjdCB2aWEg
V2ViVmlldyBvciBXS1ZpZXcuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFt
bWFySW5SYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjb3JyZWN0aW9uUGFuZWxU
aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGlzbWlzc0NvcnJlY3Rpb25Q
YW5lbCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxT
b29uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlBdXRvY29ycmVjdGlvbkJlZm9y
ZVR5cGluZ0lmQXBwcm9wcmlhdGUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUNvbW1hbmRNYXApOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkVtcHR5RWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVtcHR5RWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29v
bik6CisgICAgICAgICogbWFudWFsLXRlc3RzL2F1dG9jb3JyZWN0aW9uL2Nsb3NlLXdpbmRvdy13
aGVuLWNvcnJlY3Rpb24taXMtc2hvd24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGFnZS9FZGl0
b3JDbGllbnQuaDoKKwogMjAxMS0wMy0yMiAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCmluZGV4IDg4MDc5NjUwNjhhNDM5MTBhOWFkOTM2NTFlMTQ2MmVjYzhlOWNmOWEuLmI4
Yzk1Y2NlNThhYzU3YWMxZDk5OTc2ZjRkZjg2YTZjOGNiZTBmMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKQEAgLTIwNzIsNyArMjA3Miw3IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3Bl
bGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZ3b3JkU3RhcnQs
CiAgICAgICAgICAgICBkb0FwcGx5Q29ycmVjdGlvbiA9IGZhbHNlOwogICAgIH0KICAgICBpZiAo
ZG9BcHBseUNvcnJlY3Rpb24pCi0gICAgICAgIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29u
Rm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbEFjY2VwdGVkKTsKKyAgICAgICAgaGFuZGxlQ29y
cmVjdGlvblBhbmVsUmVzdWx0KGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFJlYXNvbkZvckRp
c21pc3NpbmdDb3JyZWN0aW9uUGFuZWxBY2NlcHRlZCkpOwogICAgIGVsc2UKICAgICAgICAgbV9j
b3JyZWN0aW9uUGFuZWxJbmZvLnJhbmdlVG9CZVJlcGxhY2VkLmNsZWFyKCk7CiAjZWxzZQpAQCAt
MjM4Nyw3ICsyMzg3LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2gKICAgICAgICAgICAgICAg
ICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJlcGxhY2VkU3RyaW5nID0gcGxhaW5UZXh0KHJh
bmdlVG9SZXBsYWNlLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgbV9jb3JyZWN0aW9uUGFu
ZWxJbmZvLnJlcGxhY2VtZW50U3RyaW5nID0gcmVzdWx0LT5yZXBsYWNlbWVudDsKICAgICAgICAg
ICAgICAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLmlzQWN0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFuZWwobV9jb3JyZWN0aW9u
UGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3gsIG1fY29ycmVjdGlvblBhbmVsSW5mby5y
ZXBsYWNlZFN0cmluZywgcmVzdWx0LT5yZXBsYWNlbWVudCwgVmVjdG9yPFN0cmluZz4oKSwgdGhp
cyk7CisgICAgICAgICAgICAgICAgICAgIGNsaWVudCgpLT5zaG93Q29ycmVjdGlvblBhbmVsKG1f
Y29ycmVjdGlvblBhbmVsSW5mby5wYW5lbFR5cGUsIGJvdW5kaW5nQm94LCBtX2NvcnJlY3Rpb25Q
YW5lbEluZm8ucmVwbGFjZWRTdHJpbmcsIHJlc3VsdC0+cmVwbGFjZW1lbnQsIFZlY3RvcjxTdHJp
bmc+KCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIHNob3dpbmcg
Y29ycmVjdGlvbiBwYW5lbCwgd2UgaWdub3JlIG90aGVyIGNvcnJlY3Rpb24gb3IgcmVwbGFjZW1l
bnQuCkBAIC0yNTE3LDcgKzI1MTcsNyBAQCB2b2lkIEVkaXRvcjo6Y29ycmVjdGlvblBhbmVsVGlt
ZXJGaXJlZChUaW1lcjxFZGl0b3I+KikKICAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJl
cGxhY2VkU3RyaW5nID0gcGxhaW5UZXh0KG1fY29ycmVjdGlvblBhbmVsSW5mby5yYW5nZVRvQmVS
ZXBsYWNlZC5nZXQoKSk7CiAgICAgICAgIEZsb2F0UmVjdCBib3VuZGluZ0JveCA9IHdpbmRvd1Jl
Y3RGb3JSYW5nZShtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmFuZ2VUb0JlUmVwbGFjZWQuZ2V0KCkp
OwogICAgICAgICBpZiAoIWJvdW5kaW5nQm94LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNsaWVu
dCgpLT5zaG93Q29ycmVjdGlvblBhbmVsKG1fY29ycmVjdGlvblBhbmVsSW5mby5wYW5lbFR5cGUs
IGJvdW5kaW5nQm94LCBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRTdHJpbmcsIG1fY29y
cmVjdGlvblBhbmVsSW5mby5yZXBsYWNlbWVudFN0cmluZywgVmVjdG9yPFN0cmluZz4oKSwgdGhp
cyk7CisgICAgICAgICAgICBjbGllbnQoKS0+c2hvd0NvcnJlY3Rpb25QYW5lbChtX2NvcnJlY3Rp
b25QYW5lbEluZm8ucGFuZWxUeXBlLCBib3VuZGluZ0JveCwgbV9jb3JyZWN0aW9uUGFuZWxJbmZv
LnJlcGxhY2VkU3RyaW5nLCBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZW1lbnRTdHJpbmcs
IFZlY3RvcjxTdHJpbmc+KCkpOwogICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb3Jy
ZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGVTcGVsbGluZ1N1Z2dlc3Rpb25zOiB7CkBAIC0yNTM1
LDcgKzI1MzUsNyBAQCB2b2lkIEVkaXRvcjo6Y29ycmVjdGlvblBhbmVsVGltZXJGaXJlZChUaW1l
cjxFZGl0b3I+KikKICAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLmlzQWN0aXZlID0gdHJ1
ZTsKICAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gd2luZG93UmVjdEZvclJhbmdlKG1f
Y29ycmVjdGlvblBhbmVsSW5mby5yYW5nZVRvQmVSZXBsYWNlZC5nZXQoKSk7CiAgICAgICAgIGlm
ICghYm91bmRpbmdCb3guaXNFbXB0eSgpKQotICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3Jy
ZWN0aW9uUGFuZWwobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3gs
IG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNlZFN0cmluZywgdG9wU3VnZ2VzdGlvbiwgc3Vn
Z2VzdGlvbnMsIHRoaXMpOworICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFu
ZWwobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3gsIG1fY29ycmVj
dGlvblBhbmVsSW5mby5yZXBsYWNlZFN0cmluZywgdG9wU3VnZ2VzdGlvbiwgc3VnZ2VzdGlvbnMp
OwogICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjYwMSwzOSArMjYwMSwzNiBAQCB2
b2lkIEVkaXRvcjo6c3RvcENvcnJlY3Rpb25QYW5lbFRpbWVyKCkKICNlbmRpZgogfQogCi12b2lk
IEVkaXRvcjo6aGFuZGxlQ2FuY2VsT3BlcmF0aW9uKCkKK3ZvaWQgRWRpdG9yOjpkaXNtaXNzQ29y
cmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uRm9y
RGlzbWlzc2luZykKIHsKICNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCiAgICAgaWYg
KCFtX2NvcnJlY3Rpb25QYW5lbEluZm8uaXNBY3RpdmUpCiAgICAgICAgIHJldHVybjsKICAgICBt
X2NvcnJlY3Rpb25QYW5lbEluZm8uaXNBY3RpdmUgPSBmYWxzZTsKKyAgICBtX2NvcnJlY3Rpb25Q
YW5lbElzRGlzbWlzc2VkQnlFZGl0b3IgPSB0cnVlOwogICAgIGlmIChjbGllbnQoKSkKLSAgICAg
ICAgY2xpZW50KCktPmRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0Nv
cnJlY3Rpb25QYW5lbENhbmNlbGxlZCk7Ci0jZW5kaWYKLX0KLQotYm9vbCBFZGl0b3I6OmlzU2hv
d2luZ0NvcnJlY3Rpb25QYW5lbCgpCi17Ci0jaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5F
TAotICAgIGlmIChjbGllbnQoKSkKLSAgICAgICAgcmV0dXJuIGNsaWVudCgpLT5pc1Nob3dpbmdD
b3JyZWN0aW9uUGFuZWwoKTsKKyAgICAgICAgY2xpZW50KCktPmRpc21pc3NDb3JyZWN0aW9uUGFu
ZWwocmVhc29uRm9yRGlzbWlzc2luZyk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWFzb25G
b3JEaXNtaXNzaW5nKTsKICNlbmRpZgotICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBFZGl0
b3I6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25Q
YW5lbCByZWFzb25Gb3JEaXNtaXNzaW5nKQorU3RyaW5nIEVkaXRvcjo6ZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbFNvb24oUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb25Gb3JE
aXNtaXNzaW5nKQogewogI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKICAgICBpZiAo
IW1fY29ycmVjdGlvblBhbmVsSW5mby5pc0FjdGl2ZSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLmlzQWN0aXZlID0g
ZmFsc2U7CiAgICAgbV9jb3JyZWN0aW9uUGFuZWxJc0Rpc21pc3NlZEJ5RWRpdG9yID0gdHJ1ZTsK
LSAgICBpZiAoY2xpZW50KCkpCi0gICAgICAgIGNsaWVudCgpLT5kaXNtaXNzQ29ycmVjdGlvblBh
bmVsKHJlYXNvbkZvckRpc21pc3NpbmcpOworICAgIGlmICghY2xpZW50KCkpCisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gY2xpZW50KCktPmRpc21pc3NDb3JyZWN0aW9uUGFu
ZWxTb29uKHJlYXNvbkZvckRpc21pc3NpbmcpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVh
c29uRm9yRGlzbWlzc2luZyk7CisgICAgcmV0dXJuIFN0cmluZygpOwogI2VuZGlmCiB9CisKIHZv
aWQgRWRpdG9yOjpyZW1vdmVTcGVsbEFuZENvcnJlY3Rpb25NYXJrZXJzRnJvbVdvcmRzVG9CZUVk
aXRlZChib29sIGRvTm90UmVtb3ZlSWZTZWxlY3Rpb25BdFdvcmRCb3VuZGFyeSkKIHsKICAgICAv
LyBXZSB3YW50IHRvIHJlbW92ZSB0aGUgbWFya2VycyBmcm9tIGEgd29yZCBpZiBhbiBlZGl0aW5n
IGNvbW1hbmQgd2lsbCBjaGFuZ2UgdGhlIHdvcmQuIFRoaXMgY2FuIGhhcHBlbiBpbiBvbmUgb2YK
QEAgLTI3NjgsNyArMjc2NSw3IEBAIGJvb2wgRWRpdG9yOjphcHBseUF1dG9jb3JyZWN0aW9uQmVm
b3JlVHlwaW5nSWZBcHByb3ByaWF0ZSgpCiAgICAgUG9zaXRpb24gY2FyZXRQb3NpdGlvbiA9IG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5zdGFydCgpOwogCiAgICAgaWYgKG1fY29y
cmVjdGlvblBhbmVsSW5mby5yYW5nZVRvQmVSZXBsYWNlZC0+ZW5kUG9zaXRpb24oKSA9PSBjYXJl
dFBvc2l0aW9uKSB7Ci0gICAgICAgIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlz
bWlzc2luZ0NvcnJlY3Rpb25QYW5lbEFjY2VwdGVkKTsKKyAgICAgICAgaGFuZGxlQ29ycmVjdGlv
blBhbmVsUmVzdWx0KGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFJlYXNvbkZvckRpc21pc3Np
bmdDb3JyZWN0aW9uUGFuZWxBY2NlcHRlZCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
IAogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggZTFhNzExOTI0NWU4M2JlZDEwZDcz
ZDIwNWVmZTIxNTQwODVjNTY5ZS4uNWZiNDhjNWQwNTZjNTUwOWQ3ZGIyYzUzMzdiOWZkYzM4OGNi
NTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0zMjAsMTEgKzMyMCw5IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgYWRkVG9LaWxsUmluZyhSYW5nZSosIGJvb2wgcHJlcGVuZCk7CiAKLSAg
ICB2b2lkIGhhbmRsZUNhbmNlbE9wZXJhdGlvbigpOwogICAgIHZvaWQgc3RhcnRDb3JyZWN0aW9u
UGFuZWxUaW1lcihDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUpOwogICAgIC8vIElmIHVz
ZXIgY29uZmlybWVkIGEgY29ycmVjdGlvbiBpbiB0aGUgY29ycmVjdGlvbiBwYW5lbCwgY29ycmVj
dGlvbiBoYXMgbm9uLXplcm8gbGVuZ3RoLCBvdGhlcndpc2UgaXQgbWVhbnMgdGhhdCB1c2VyIGhh
cyBkaXNtaXNzZWQgdGhlIHBhbmVsLgogICAgIHZvaWQgaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVz
dWx0KGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbik7Ci0gICAgYm9vbCBpc1Nob3dpbmdDb3JyZWN0
aW9uUGFuZWwoKTsKIAogICAgIHZvaWQgcGFzdGVBc0ZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4sIGJvb2wgc21hcnRSZXBsYWNlLCBib29sIG1hdGNoU3R5bGUpOwogICAgIHZv
aWQgcGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmLCBib29sIHNtYXJ0UmVwbGFjZSk7CkBA
IC00MjUsNiArNDIzLDcgQEAgcHJpdmF0ZToKICAgICBOb2RlKiBmaW5kRXZlbnRUYXJnZXRGcm9t
U2VsZWN0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzdG9wQ29ycmVjdGlvblBhbmVsVGltZXIoKTsK
ICAgICB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJl
Y3Rpb25QYW5lbCk7CisgICAgU3RyaW5nIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFJlYXNv
bkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwogICAgIHZvaWQgYXBwbHlDb3JyZWN0aW9u
UGFuZWxJbmZvKGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4mIG1hcmtl
clR5cGVzVG9BZGQpOwogICAgIC8vIFJldHVybiB0cnVlIGlmIGNvcnJlY3Rpb24gd2FzIGFwcGxp
ZWQsIGZhbHNlIG90aGVyd2lzZS4KICAgICBib29sIGFwcGx5QXV0b2NvcnJlY3Rpb25CZWZvcmVU
eXBpbmdJZkFwcHJvcHJpYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5k
LmNwcAppbmRleCA2ZWE5OTU0ZDk1ZDY0N2RhN2ZjM2JhZWY4NzNiMjFlNmM3YWMwMTc0Li45ZWFm
ZDE4YjUyMmQyYmZjNjNiMTJmMmE4ODUyZmQ4N2IzZTU3YzgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTEwOTEsMTQgKzEwOTEsNiBAQCBzdGF0aWMgYm9v
bCBleGVjdXRlWWFua0FuZFNlbGVjdChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwgY29ucwogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgU1VQUE9SVF9BVVRPQ09S
UkVDVElPTl9QQU5FTAotc3RhdGljIGJvb2wgZXhlY3V0ZUNhbmNlbE9wZXJhdGlvbihGcmFtZSog
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKLXsKLSAg
ICBmcmFtZS0+ZWRpdG9yKCktPmhhbmRsZUNhbmNlbE9wZXJhdGlvbigpOwotICAgIHJldHVybiB0
cnVlOwotfQotI2VuZGlmCi0KIC8vIFN1cHBvcnRlZCBmdW5jdGlvbnMKIAogc3RhdGljIGJvb2wg
c3VwcG9ydGVkKEZyYW1lKikKQEAgLTEyNDksMTMgKzEyNDEsNiBAQCBzdGF0aWMgYm9vbCBlbmFi
bGVkVW5kbyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSkKICAgICBy
ZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5VbmRvKCk7CiB9CiAKLSNpZiBTVVBQT1JUX0FVVE9D
T1JSRUNUSU9OX1BBTkVMCi1zdGF0aWMgYm9vbCBlbmFibGVkRGlzbWlzc0NvcnJlY3Rpb25QYW5l
bChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSkKLXsKLSAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLT5pc1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwoKTsKLX0KLSNlbmRp
ZgotCiAvLyBTdGF0ZSBmdW5jdGlvbnMKIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlTm9uZShGcmFt
ZSosIEV2ZW50KikKQEAgLTE1MzIsMTAgKzE1MTcsNiBAQCBzdGF0aWMgY29uc3QgQ29tbWFuZE1h
cCYgY3JlYXRlQ29tbWFuZE1hcCgpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICB7ICJUYWtl
RmluZFN0cmluZ0Zyb21TZWxlY3Rpb24iLCB7IGV4ZWN1dGVUYWtlRmluZFN0cmluZ0Zyb21TZWxl
Y3Rpb24sIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkVGFrZUZpbmRTdHJp
bmdGcm9tU2VsZWN0aW9uLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwg
ZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAjZW5kaWYKLQotI2lmIFNVUFBP
UlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKLSAgICAgICAgeyAiQ2FuY2VsT3BlcmF0aW9uIiwgeyBl
eGVjdXRlQ2FuY2VsT3BlcmF0aW9uLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5h
YmxlZERpc21pc3NDb3JyZWN0aW9uUGFuZWwsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0
SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKLSNlbmRpZgog
ICAgIH07CiAKICAgICAvLyBUaGVzZSB1bnN1cHBvcnRlZCBjb21tYW5kcyBhcmUgbGlzdGVkIGhl
cmUgc2luY2UgdGhleSBhcHBlYXIgaW4gdGhlIE1pY3Jvc29mdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCmluZGV4IGVkOTJmMTEyY2JhODc3ZmQ1MmMzNDY0MDdmNWI0ZmZlMjYxMjBm
NmMuLjNiMGFkMmU3YWQ2NGI3MDk1OTNjOGQxM2YzMDQxOGRjY2U1MWYwYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTUxMSw5ICs1MTEsOSBAQCBwdWJsaWM6CiAgICAg
VGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gJm1fdGV4dENoZWNrZXJD
bGllbnQ7IH0KIAogI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKLSAgICB2aXJ0dWFs
IHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgRWRpdG9yKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0
aW9uUGFuZWwoQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21p
c3NpbmdDb3JyZWN0aW9uUGFuZWwpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Nob3dpbmdDb3Jy
ZWN0aW9uUGFuZWwoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIGRpc21p
c3NDb3JyZWN0aW9uUGFuZWxTb29uKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwp
IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYpIHsgfQogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5n
VUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFtbWFyRGV0YWlsJikg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvYXV0b2NvcnJlY3Rp
b24vY2xvc2Utd2luZG93LXdoZW4tY29ycmVjdGlvbi1pcy1zaG93bi5odG1sIGIvU291cmNlL1dl
YkNvcmUvbWFudWFsLXRlc3RzL2F1dG9jb3JyZWN0aW9uL2Nsb3NlLXdpbmRvdy13aGVuLWNvcnJl
Y3Rpb24taXMtc2hvd24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzgyYTIwZjU4MTVmN2EzN2M5ZTU5NGNh
NzdmZjYyMDlhMDU0OGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbWFudWFs
LXRlc3RzL2F1dG9jb3JyZWN0aW9uL2Nsb3NlLXdpbmRvdy13aGVuLWNvcnJlY3Rpb24taXMtc2hv
d24uaHRtbApAQCAtMCwwICsxLDQ4IEBACis8aHRtbD4KKzxoZWFkPgorCis8c3R5bGU+CisuZWRp
dGluZyB7CisgICAgYm9yZGVyOiAycHggc29saWQgcmVkOworICAgIHBhZGRpbmc6IDEycHg7Cisg
ICAgZm9udC1zaXplOiAyNHB4OworfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPS4uLy4uLy4uLy4u
L0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGluZy5qcyBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlw
ZT0idGV4dC9KYXZhU2NyaXB0IiA+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiBlZGl0
aW5nVGVzdCgpIHsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgndCcpOworICAgIHR5cGVDaGFy
YWN0ZXJDb21tYW5kKCdoJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2UnKTsKKyAgICB0
eXBlQ2hhcmFjdGVyQ29tbWFuZCgnICcpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdtJyk7
CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2UnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFu
ZCgncycpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdhJyk7CisgICAgdHlwZUNoYXJhY3Rl
ckNvbW1hbmQoJ2UnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnZycpOworICAgIHR5cGVD
aGFyYWN0ZXJDb21tYW5kKCdlJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2UnKTsKKyAg
ICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnICcpOworICAgIGV4ZWNNb3ZlU2VsZWN0aW9uQmFja3dh
cmRCeUNoYXJhY3RlckNvbW1hbmQoKTsKK30KKworPC9zY3JpcHQ+CisKKzx0aXRsZT5UZXN0aW5n
IGNsb3Npbmcgd2luZG93IHdoZW4gY29ycmVjdGlvbiBzdWdnZXN0aW9uIGlzIHNob3duPC90aXRs
ZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj48cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3aGVu
IGNvcnJlY3Rpb24gc3VnZ2VzdGlvbiBpcyB2aXNpYmxlLCBjbG9zaW5nIHdpbmRvdyBkb2Vzbid0
IGhhbmcgb3IgY3Jhc2guPC9wPgorPHA+QWZ0ZXIgc2VlaW5nIHRoZSBwYW5lbCB3aXRoIG11bHRp
cGxlIGNhbmRpZGF0ZXMsIGNsb3NlIHRoZSB3aW5kb3cuPC9wPgorPGRpdiBjb250ZW50ZWRpdGFi
bGUgaWQ9InJvb3QiIGNsYXNzPSJlZGl0aW5nIj4KKzxzcGFuIGlkPSJ0ZXN0Ij48L3NwYW4+Cis8
L2Rpdj4KKworCis8c2NyaXB0PgorcnVuRWRpdGluZ1Rlc3QoKTsKKzwvc2NyaXB0PgorCis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCBkNWRlNmE0MTAy
Y2JkMjc2OGRhYzlkYTNmNWYxYWQ5ZWNmODAzZDUwLi5hZWRhODQ0NTg4Y2E2ZWY1NWYwNjgyMzQy
ODUzNzAzNTljN2FhNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTE1OCwx
NCArMTU4LDE1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRl
eHRDaGVja2VyKCkgPSAwOwogCi0jaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTAogICAg
IGVudW0gQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgewogICAgICAgICBBdXRvY29ycmVjdGlv
bkVkaXRlZCwKICAgICAgICAgQXV0b2NvcnJlY3Rpb25SZXZlcnRlZAogICAgIH07Ci0gICAgdmly
dHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxU
eXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNtZW50U3RyaW5nLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MsIEVkaXRv
ciopID0gMDsKKworI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKKyAgICB2aXJ0dWFs
IHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUs
IGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY21lbnRTdHJpbmcsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdD
b3JyZWN0aW9uUGFuZWwpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTaG93aW5nQ29ycmVjdGlv
blBhbmVsKCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxT
b29uKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNl
VHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudFN0cmluZykgPSAwOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDNlMTgxNjVkODQ2ZTU3Mjc1
MjU4YWI0NDkxMjljOWYyYjY0YWRiNi4uMzA3MjNjNjNmYjdiNjU0MjY5MzQ0NWFlMjc0MTcxNjE3
YzFkY2Y4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMy0yMiAgSmlhIFB1ICA8
anB1QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBIb29rIHVwIG5ldyBBcHBLaXQgYXV0b2NvcnJlY3Rpb24gVUkgd2l0aCBXSzIuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA1NQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODk0NzQ2Mz4KKworICAgICAgICBQbGVhc2Ugc2VlIFdlYkNv
cmUvQ2hhbmdlTG9nIGZvciBkZXRhaWwuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAxMS0wMy0xNyAgSmVmZiBNaWxsZXIgIDxqZWZmbUBhcHBsZS5j
b20+CiAKICAgICAgICAgVXNlIGEgY29uc2lzdGVudCBzZXQgb2YgZmlsZSBwYXR0ZXJucyBpbiB0
aGUgc3ZuOmlnbm9yZSBwcm9wZXJ0eSBmb3IgYWxsIC54Y29kZXByb2ogZGlyZWN0b3JpZXMsIHNw
ZWNpZmljYWxseToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDIwYzE1NmY3OTdkYjk0MDIyODRhMGQyNTU5NWRjZWI5NDZhOGY0ZDMuLjA2
YTU1NjYyNzQ5ODc4OGI0YTVlOTYwMGJmMzA2MWU1NWE0ZjNjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzQ0LDYgKzM0NCw4IEBA
CiAJCUI2Q0U1QzI1MTAwQkM1RjUwMDIxOTkzNiAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjgwNDk3MTBGRkJD
RUMxMDA5RjdGNjIgLyogV2ViQXBwbGljYXRpb25DYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUI4MDQxNzZGMTIxN0E4MzEwMDQ2NkJBRSAv
KiBXZWJJbnNwZWN0b3JGcm9udGVuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjgwNDE3NkQxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZy
b250ZW5kLmggKi87IH07CiAJCUI4MDQxNzcwMTIxN0E4MzEwMDQ2NkJBRSAvKiBXZWJJbnNwZWN0
b3JGcm9udGVuZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEI4MDQxNzZFMTIxN0E4MzEwMDQ2NkJBRSAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZC5tbSAq
LzsgfTsKKwkJQjgyOTU4RDMxMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjgyOTU4RDExMzI3
MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5oICovOyB9OworCQlCODI5NThENDEzMjcw
N0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjgyOTU4RDIxMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJl
Y3Rpb25QYW5lbC5tbSAqLzsgfTsKIAkJQkMyNkM2OUUxMEI3NDNGNDAwQjY4N0VEIC8qIFdlYlNl
cmlhbGl6ZWRKU1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzI2QzY5RDEwQjc0M0Y0MDBCNjg3RUQgLyogV2ViU2VyaWFsaXplZEpTVmFsdWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzI2
QzZBNTEwQjc0NDdBMDBCNjg3RUQgLyogV2ViU2VyaWFsaXplZEpTVmFsdWUubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2QzZBNDEwQjc0NDdBMDBC
Njg3RUQgLyogV2ViU2VyaWFsaXplZEpTVmFsdWUubW0gKi87IH07CiAJCUJDMkU0NjREMEZEOEE5
NjgwMEE5RDlERSAvKiBXZWJWaWV3RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMyRTQ2NEIwRkQ4QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdEYXRh
LmggKi87IH07CkBAIC02NjAsNiArNjYyLDggQEAKIAkJQjY4MDQ5NzIwRkZCQ0VDMTAwOUY3RjYy
IC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJBcHBsaWNhdGlvbkNhY2hlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCODA0MTc2RDEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yRnJvbnRlbmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjgwNDE3NkUxMjE3QTgzMTAwNDY2QkFF
IC8qIFdlYkluc3BlY3RvckZyb250ZW5kLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yRnJvbnRlbmQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUI4Mjk1OEQxMTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29ycmVjdGlvblBhbmVsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI4Mjk1OEQyMTMyNzA3RDAwMDBEMEU3OSAvKiBDb3Jy
ZWN0aW9uUGFuZWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBD
b3JyZWN0aW9uUGFuZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjZDNjlE
MTBCNzQzRjQwMEI2ODdFRCAvKiBXZWJTZXJpYWxpemVkSlNWYWx1ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTZXJpYWxpemVkSlNWYWx1ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzI2QzZBNDEwQjc0NDdBMDBCNjg3RUQgLyogV2ViU2VyaWFsaXpl
ZEpTVmFsdWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJT
ZXJpYWxpemVkSlNWYWx1ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRTQ2
NEIwRkQ4QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlZpZXdEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMjk1LDYgKzEyOTksOCBAQAogCQlGNUIzNkI0MDAyODFERTg3MDE4NjM1Q0IgLyogV2ViQ29y
ZVN1cHBvcnQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CUI4Mjk1OEQxMTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAqLywKKwkJCQlC
ODI5NThEMjEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLm1tICovLAogCQkJCTU5
OEFEOTFEMTIwMUNFQ0YwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbSAq
LywKIAkJCQk1OThBRDkxOTEyMDFDRUM5MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnQuaCAqLywKIAkJCQlCNjgwNDk3MTBGRkJDRUMxMDA5RjdGNjIgLyogV2ViQXBwbGljYXRp
b25DYWNoZS5oICovLApAQCAtMTY0NSw2ICsxNjUxLDcgQEAKIAkJCQkzQUUxNUQ1MDEyREJERUQ0
MDA5MzIzQzggLyogV2ViU3RvcmFnZU1hbmFnZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJM0FCQjNDN0ExMzA5QzNCNTAwRTkzRDk0IC8qIFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzQyRDMyNDEzMUVEMUUwMDA3NUZBNEIgLyogV2ViTG9jYWxp
emFibGVTdHJpbmdzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUI4Mjk1OEQzMTMyNzA3
RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjAxNSw2
ICsyMDIyLDcgQEAKIAkJCQlDREE2MkFFMzEyNUY4N0MyMDA3RkQxMTggLyogV2ViRnVsbFNjcmVl
bkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkzQUJCM0M3QjEzMDlDM0I1MDBFOTNE
OTQgLyogV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzQy
RDM0RDEzMUVEMzg4MDA3NUZBNEIgLyogV2ViTG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwubW0g
aW4gU291cmNlcyAqLywKKwkJCQlCODI5NThENDEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlv
blBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMzhhZmZhZTc5MTJk
MDE2OTFmYWJmZDUwMWY0YjM4YWE4NWIyODU2ZS4uZTQ3M2M2YzY4OWU2Zjc4MWFmNGM2Njc2Njkw
YWQ0ZjIxNjBiZDg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDExLTAz
LTIyICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEhvb2sgdXAgbmV3IEFwcEtpdCBhdXRvY29ycmVjdGlvbiBV
SSB3aXRoIFdLMi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU2MDU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84OTQ3NDYzPgorCisgICAgICAgIFBs
ZWFzZSBzZWUgV2ViQ29yZS9DaGFuZ2VMb2cgZm9yIGRldGFpbC4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5oOiBBZGRlZC4KKyAgICAgICAgKENvcnJlY3Rpb25Q
YW5lbDo6aXNTaG93aW5nKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFu
ZWwubW06IEFkZGVkLgorICAgICAgICAoY29ycmVjdGlvbkJ1YmJsZVR5cGUpOgorICAgICAgICAo
Q29ycmVjdGlvblBhbmVsOjpDb3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoQ29ycmVjdGlvblBh
bmVsOjp+Q29ycmVjdGlvblBhbmVsKToKKyAgICAgICAgKENvcnJlY3Rpb25QYW5lbDo6c2hvdyk6
CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3MpOgorICAgICAgICAoQ29ycmVjdGlv
blBhbmVsOjpkaXNtaXNzU29vbik6CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3NJ
bnRlcm5hbCk6CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9u
UmVzcG9uc2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdl
YkVkaXRvckNsaWVudDo6V2ViRWRpdG9yQ2xpZW50KToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVu
dDo6c2hvd0NvcnJlY3Rpb25QYW5lbCk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmRpc21p
c3NDb3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29y
cmVjdGlvblBhbmVsU29vbik6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnJlY29yZEF1dG9j
b3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViVmlldyBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6XSk6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDExLTAzLTIyICBNYXR0aGV3IERlbGFuZXkg
IDxtZGVsYW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlv
blBhbmVsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFu
ZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wYWRjM2EyZjM0YWY1MzA0OGVhNDFkZWExNWM0MGIyODdhZTQyNmJl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29y
cmVjdGlvblBhbmVsLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29y
cmVjdGlvblBhbmVsX2gKKyNkZWZpbmUgQ29ycmVjdGlvblBhbmVsX2gKKworI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvUGxhdGZvcm0uaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1JldGFpblB0
ci5oPgorCisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyNp
bXBvcnQgPEFwcEtpdC9OU1RleHRDaGVja2VyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NvcnJlY3Rp
b25QYW5lbEluZm8uaD4KKworQGNsYXNzIFdlYlZpZXc7CisKK2NsYXNzIENvcnJlY3Rpb25QYW5l
bCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29ycmVjdGlvblBhbmVsKTsKK3B1YmxpYzoK
KyAgICBDb3JyZWN0aW9uUGFuZWwoKTsKKyAgICB+Q29ycmVjdGlvblBhbmVsKCk7CisgICAgdm9p
ZCBzaG93KFdlYlZpZXcqLCBXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3Ry
aW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3Mp
OworICAgIHZvaWQgZGlzbWlzcyhXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlv
blBhbmVsKTsKKyAgICBTdHJpbmcgZGlzbWlzc1Nvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlz
c2luZ0NvcnJlY3Rpb25QYW5lbCk7CisgICAgc3RhdGljIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZShXZWJWaWV3KiwgTlNDb3JyZWN0aW9uUmVzcG9uc2UsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOworCitwcml2
YXRlOgorICAgIGJvb2wgaXNTaG93aW5nKCkgY29uc3QgeyByZXR1cm4gbV92aWV3OyB9CisgICAg
dm9pZCBkaXNtaXNzSW50ZXJuYWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rp
b25QYW5lbCwgYm9vbCBkaXNtaXNzaW5nRXh0ZXJuYWxseSk7CisgICAgdm9pZCBoYW5kbGVBY2Nl
cHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJlcGxhY2VtZW50LCBOU1N0cmluZyog
cmVwbGFjZWQsIE5TU3RyaW5nKiBwcm9wb3NlZFJlcGxhY2VtZW50LCBOU0NvcnJlY3Rpb25CdWJi
bGVUeXBlKTsKKworICAgIGJvb2wgbV93YXNEaXNtaXNzZWRFeHRlcm5hbGx5OworICAgIFdlYkNv
cmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgbV9yZWFzb25Gb3JEaXNtaXNz
aW5nOworICAgIFJldGFpblB0cjxXZWJWaWV3PiBtX3ZpZXc7CisgICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiBtX3Jlc3VsdEZvclN5bmNocm9ub3VzRGlzbWlzc2FsOworICAgIFJldGFpblB0cjxOU0Nv
bmRpdGlvbj4gbV9yZXN1bHRDb25kaXRpb247Cit9OworCisjZW5kaWYgLy8gIWRlZmluZWQoQlVJ
TERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKworI2VuZGlmIC8vIENvcnJlY3Rpb25QYW5l
bF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0
aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9u
UGFuZWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDkxOWU0MmJhMTMxNmJlNDJiYTg5YzIyYWQxZjA3ZjAwZWE1
YzFkZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L0NvcnJlY3Rpb25QYW5lbC5tbQpAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaW1wb3J0
ICJDb3JyZWN0aW9uUGFuZWwuaCIKKyNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCisKKyNpZiAh
ZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFS
RCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV1RGOworCitzdGF0aWMgaW5saW5lIE5TQ29ycmVj
dGlvbkJ1YmJsZVR5cGUgY29ycmVjdGlvbkJ1YmJsZVR5cGUoQ29ycmVjdGlvblBhbmVsSW5mbzo6
UGFuZWxUeXBlIHBhbmVsVHlwZSkKK3sKKyAgICBzd2l0Y2ggKHBhbmVsVHlwZSkgeworICAgIGNh
c2UgQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlQ29ycmVjdGlvbjoKKyAgICAgICAgcmV0
dXJuIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVDb3JyZWN0aW9uOworICAgIGNhc2UgQ29ycmVjdGlv
blBhbmVsSW5mbzo6UGFuZWxUeXBlUmV2ZXJzaW9uOgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0
aW9uQnViYmxlVHlwZVJldmVyc2lvbjsKKyAgICBjYXNlIENvcnJlY3Rpb25QYW5lbEluZm86OlBh
bmVsVHlwZVNwZWxsaW5nU3VnZ2VzdGlvbnM6CisgICAgICAgIHJldHVybiBOU0NvcnJlY3Rpb25C
dWJibGVUeXBlR3Vlc3NlczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVDb3JyZWN0aW9uOworfQorCitDb3JyZWN0aW9u
UGFuZWw6OkNvcnJlY3Rpb25QYW5lbCgpCisgICAgOiBtX3dhc0Rpc21pc3NlZEV4dGVybmFsbHko
ZmFsc2UpCisgICAgLCBtX3JlYXNvbkZvckRpc21pc3NpbmcoUmVhc29uRm9yRGlzbWlzc2luZ0Nv
cnJlY3Rpb25QYW5lbElnbm9yZWQpCisgICAgLCBtX3Jlc3VsdENvbmRpdGlvbihBZG9wdE5TLCBb
W05TQ29uZGl0aW9uIGFsbG9jXSBpbml0XSkKK3sKK30KKworQ29ycmVjdGlvblBhbmVsOjp+Q29y
cmVjdGlvblBhbmVsKCkKK3sKKyAgICBkaXNtaXNzSW50ZXJuYWwoUmVhc29uRm9yRGlzbWlzc2lu
Z0NvcnJlY3Rpb25QYW5lbElnbm9yZWQsIGZhbHNlKTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFu
ZWw6OnNob3coV2ViVmlldyogdmlldywgQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlIHR5
cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCit7Cisg
ICAgZGlzbWlzc0ludGVybmFsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxJZ25v
cmVkLCBmYWxzZSk7CisgICAgCisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm47CisKKyAg
ICBOU1N0cmluZyogcmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nID0gcmVwbGFjZWRTdHJpbmc7Cisg
ICAgTlNTdHJpbmcqIHJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyA9IHJlcGxhY2VtZW50U3Ry
aW5nOworICAgIG1fdmlldyA9IHZpZXc7CisgICAgTlNDb3JyZWN0aW9uQnViYmxlVHlwZSBidWJi
bGVUeXBlID0gY29ycmVjdGlvbkJ1YmJsZVR5cGUodHlwZSk7CisgICAgCisgICAgTlNNdXRhYmxl
QXJyYXkqIGFsdGVybmF0aXZlU3RyaW5ncyA9IDA7CisgICAgaWYgKCFhbHRlcm5hdGl2ZVJlcGxh
Y2VtZW50U3RyaW5ncy5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBhbHRlcm5h
dGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5zaXplKCk7CisgICAgICAgIGFsdGVybmF0aXZlU3RyaW5n
cyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaXplXTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICBbYWx0ZXJuYXRpdmVT
dHJpbmdzIGFkZE9iamVjdDooTlNTdHJpbmcqKWFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdz
W2ldXTsKKyAgICB9CisKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0g
c2hvd0NvcnJlY3Rpb25CdWJibGVPZlR5cGU6YnViYmxlVHlwZSBwcmltYXJ5U3RyaW5nOnJlcGxh
Y2VtZW50U3RyaW5nQXNOU1N0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVTdHJp
bmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcgdmlldzptX3Zp
ZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyogYWNjZXB0ZWRTdHJpbmcpIHsK
KyAgICAgICAgaGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVudChhY2NlcHRlZFN0cmluZywgcmVwbGFj
ZWRTdHJpbmdBc05TU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcsIGJ1YmJsZVR5
cGUpOworICAgIH1dOworfQorCit2b2lkIENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzcyhSZWFzb25G
b3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbikKK3sKKyAgICBkaXNtaXNzSW50ZXJu
YWwocmVhc29uLCB0cnVlKTsKK30KKworU3RyaW5nIENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzc1Nv
b24oUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24pCit7CisgICAgaWYg
KCFpc1Nob3dpbmcoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgZGlzbWlzc0lu
dGVybmFsKHJlYXNvbiwgdHJ1ZSk7CisgICAgW21fcmVzdWx0Q29uZGl0aW9uLmdldCgpIGxvY2td
OworICAgIHdoaWxlICghbV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rpc21pc3NhbCkKKyAgICAgICAg
W21fcmVzdWx0Q29uZGl0aW9uLmdldCgpIHdhaXRdOworICAgIFttX3Jlc3VsdENvbmRpdGlvbi5n
ZXQoKSB1bmxvY2tdOworICAgIHJldHVybiBtX3Jlc3VsdEZvclN5bmNocm9ub3VzRGlzbWlzc2Fs
LmdldCgpOworfQorCit2b2lkIENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzc0ludGVybmFsKFJlYXNv
bkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uLCBib29sIGRpc21pc3NpbmdFeHRl
cm5hbGx5KQoreworICAgIG1fd2FzRGlzbWlzc2VkRXh0ZXJuYWxseSA9IGRpc21pc3NpbmdFeHRl
cm5hbGx5OworICAgIGlmICghaXNTaG93aW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBtX3JlYXNvbkZvckRpc21pc3NpbmcgPSByZWFzb247CisgICAgbV9yZXN1bHRGb3JTeW5jaHJv
bm91c0Rpc21pc3NhbC5jbGVhcigpOworICAgIGlmIChyZWFzb24gPT0gUmVhc29uRm9yRGlzbWlz
c2luZ0NvcnJlY3Rpb25QYW5lbEFjY2VwdGVkKQorICAgICAgICBbW05TU3BlbGxDaGVja2VyIHNo
YXJlZFNwZWxsQ2hlY2tlcl0gZGlzbWlzc0NvcnJlY3Rpb25CdWJibGVGb3JWaWV3Om1fdmlldy5n
ZXQoKV07CisgICAgZWxzZQorICAgICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hl
Y2tlcl0gY2FuY2VsQ29ycmVjdGlvbkJ1YmJsZUZvclZpZXc6bV92aWV3LmdldCgpXTsKKyAgICBt
X3ZpZXcuY2xlYXIoKTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UoV2ViVmlldyogdmlldywgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9u
c2UsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1l
bnRTdHJpbmcpCit7CisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHJl
Y29yZFJlc3BvbnNlOnJlc3BvbnNlIHRvQ29ycmVjdGlvbjpyZXBsYWNlbWVudFN0cmluZyBmb3JX
b3JkOnJlcGxhY2VkU3RyaW5nIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOlt2
aWV3IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnXV07Cit9CisKK3ZvaWQgQ29ycmVjdGlvblBhbmVs
OjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJlcGxhY2VtZW50
LCBOU1N0cmluZyogcmVwbGFjZWQsIE5TU3RyaW5nKiBwcm9wb3NlZFJlcGxhY2VtZW50LCAgTlND
b3JyZWN0aW9uQnViYmxlVHlwZSBjb3JyZWN0aW9uQnViYmxlVHlwZSkKK3sKKyAgICBOU1NwZWxs
Q2hlY2tlciogc3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tl
cl07CisgICAgTlNJbnRlZ2VyIGRvY3VtZW50VGFnID0gW21fdmlldy5nZXQoKSBzcGVsbENoZWNr
ZXJEb2N1bWVudFRhZ107CisKKyAgICBzd2l0Y2ggKGNvcnJlY3Rpb25CdWJibGVUeXBlKSB7Cisg
ICAgY2FzZSBOU0NvcnJlY3Rpb25CdWJibGVUeXBlQ29ycmVjdGlvbjoKKyAgICAgICAgaWYgKGFj
Y2VwdGVkUmVwbGFjZW1lbnQpCisgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3Bv
bnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlQWNjZXB0ZWQgdG9Db3JyZWN0aW9uOmFjY2VwdGVkUmVw
bGFjZW1lbnQgZm9yV29yZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0
aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKCFtX3dh
c0Rpc21pc3NlZEV4dGVybmFsbHkgfHwgbV9yZWFzb25Gb3JEaXNtaXNzaW5nID09IFJlYXNvbkZv
ckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxDYW5jZWxsZWQpCisgICAgICAgICAgICAgICAgW3Nw
ZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZVJlamVjdGVkIHRv
Q29ycmVjdGlvbjpwcm9wb3NlZFJlcGxhY2VtZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6
bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0
aW9uUmVzcG9uc2VJZ25vcmVkIHRvQ29ycmVjdGlvbjpwcm9wb3NlZFJlcGxhY2VtZW50IGZvcldv
cmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRU
YWddOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTlNDb3JyZWN0aW9uQnVi
YmxlVHlwZVJldmVyc2lvbjoKKyAgICAgICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQpCisgICAg
ICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNl
UmV2ZXJ0ZWQgdG9Db3JyZWN0aW9uOnJlcGxhY2VkIGZvcldvcmQ6YWNjZXB0ZWRSZXBsYWNlbWVu
dCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUd1ZXNzZXM6CisgICAg
ICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQorICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciBy
ZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkIHRvQ29ycmVjdGlvbjph
Y2NlcHRlZFJlcGxhY2VtZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxE
b2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
CisgICAgaWYgKCFtX3dhc0Rpc21pc3NlZEV4dGVybmFsbHkpIHsKKyAgICAgICAgW21fdmlldy5n
ZXQoKSBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6YWNjZXB0ZWRSZXBsYWNlbWVudF07Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgW21fcmVzdWx0Q29uZGl0aW9uLmdldCgp
IGxvY2tdOworICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQorICAgICAgICBtX3Jlc3VsdEZv
clN5bmNocm9ub3VzRGlzbWlzc2FsLmFkb3B0TlMoW2FjY2VwdGVkUmVwbGFjZW1lbnQgY29weV0p
OworICAgIFttX3Jlc3VsdENvbmRpdGlvbi5nZXQoKSBzaWduYWxdOworICAgIFttX3Jlc3VsdENv
bmRpdGlvbi5nZXQoKSB1bmxvY2tdOworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdf
T05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAxZmExMzJhZDZjNWJkNDM3OWZlMGJi
ODVjOWU2ZmYwZDY2YjExNzM1Li5mYWNlMTVlZjVkNjc0OTIxOTgzNTBiMzAxNjQ1NjcxMWUyZTdl
YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaApAQCAtMjcsNyArMjcsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0
IDxXZWJDb3JlL0VkaXRvci5oPgorI2ltcG9ydCAiQ29ycmVjdGlvblBhbmVsLmgiCiAjaW1wb3J0
IDxXZWJDb3JlL0VkaXRvckNsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0Q2hlY2tlckNs
aWVudC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTQwLDkgKzE0MCw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQp
OwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVs
bENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJik7CiAjaWYgIWRlZmluZWQoQlVJTERJ
TkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rp
b25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6
OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0
cmluZywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2Vt
ZW50U3RyaW5ncywgV2ViQ29yZTo6RWRpdG9yKik7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb3Jy
ZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3Qg
V1RGOjpTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1l
bnRTdHJpbmcsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBs
YWNlbWVudFN0cmluZ3MpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVs
KFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwotICAgIHZpcnR1
YWwgYm9vbCBpc1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3Ry
aW5nIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3Np
bmdDb3JyZWN0aW9uUGFuZWwpOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlv
blJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CiAj
ZW5kaWYKIHByaXZhdGU6CkBAIC0xNTQsOCArMTU0LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
aGF2ZVVuZG9SZWRvT3BlcmF0aW9uczsKIAogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VS
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9TTk9XX0xFT1BBUkQpCi0gICAgQk9PTCBtX2NvcnJlY3Rpb25QYW5lbElzU2hvd247Ci0gICAg
Qk9PTCBtX2NvcnJlY3Rpb25QYW5lbElzRGlzbWlzc2VkRXh0ZXJuYWxseTsKLSAgICBXZWJDb3Jl
OjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIG1fcmVhc29uRm9yRGlzbWlzc2lu
Z0NvcnJlY3Rpb25QYW5lbDsKKyAgICBDb3JyZWN0aW9uUGFuZWwgbV9jb3JyZWN0aW9uUGFuZWw7
CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW0KaW5kZXggNjlkZDU3NDczMWI0NGI0MzBjMjc0NThlNzIzYjQxYzRk
ZTUxNzRiMC4uY2IzZmI1ODM5MTRmMzA2OTYwYTZkZjVhOTVhNGQ2N2Q1MDI1ZDQ5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bQpAQCAtMjAyLDkgKzIwMiw2IEBAIFdlYkVkaXRvckNsaWVudDo6V2ViRWRpdG9yQ2xpZW50KFdl
YlZpZXcgKndlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICAgICAsIG1fdW5kb1Rh
cmdldChbW1tXZWJFZGl0b3JVbmRvVGFyZ2V0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV0pCiAg
ICAgLCBtX2hhdmVVbmRvUmVkb09wZXJhdGlvbnMoZmFsc2UpCi0jaWYgIWRlZmluZWQoQlVJTERJ
TkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKLSAgICAsIG1fY29ycmVjdGlvblBhbmVsSXNTaG93
bihmYWxzZSkKLSNlbmRpZgogewogfQogCkBAIC04OTEsNzMgKzg4OCwyNSBAQCB2b2lkIFdlYkVk
aXRvckNsaWVudDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgYmFkR3JhbW1hcgogfQogCiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1df
TEVPUEFSRCkKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNv
cmU6OkNvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSBwYW5lbFR5cGUsIGNvbnN0IEZsb2F0
UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MsIEVkaXRvciogZWRpdG9yKSB7Ci0g
ICAgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBh
bmVsSWdub3JlZCk7Ci0KLSAgICAvLyBOZWVkIHRvIGV4cGxpY2l0bHkgdXNlIHRoZXNlIGxvY2Fs
IE5TU3RyaW5nIG9iamVjdHMsIGJlY2F1c2UgdGhlIEMrKyByZWZlcmVuY2VzIG1heSBiZSBpbnZh
bGlkYXRlZCBieSB0aGUgdGltZSB0aGUgYmxvY2sgYmVsb3cgaXMgZXhlY3V0ZWQuCi0gICAgTlNT
dHJpbmcgKnJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyA9IHJlcGxhY2VkU3RyaW5nOwotICAgIE5T
U3RyaW5nICpyZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgPSByZXBsYWNlbWVudFN0cmluZzsK
LQotICAgIG1fY29ycmVjdGlvblBhbmVsSXNTaG93biA9IFlFUzsKLSAgICBtX2NvcnJlY3Rpb25Q
YW5lbElzRGlzbWlzc2VkRXh0ZXJuYWxseSA9IE5POwotICAgIG1fcmVhc29uRm9yRGlzbWlzc2lu
Z0NvcnJlY3Rpb25QYW5lbCA9IFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxJZ25v
cmVkOwotCi0gICAgTlNDb3JyZWN0aW9uQnViYmxlVHlwZSBidWJibGVUeXBlID0gY29ycmVjdGlv
bkJ1YmJsZVR5cGUocGFuZWxUeXBlKTsKLSAgICBOU011dGFibGVBcnJheSAqYWx0ZXJuYXRpdmVT
dHJpbmdzID0gbmlsOwotICAgIGlmICghYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIHNpemVfdCBzaXplID0gYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0
cmluZ3Muc2l6ZSgpOwotICAgICAgICBhbHRlcm5hdGl2ZVN0cmluZ3MgPSBbTlNNdXRhYmxlQXJy
YXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2l6ZV07Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKQotICAgICAgICAgICAgW2FsdGVybmF0aXZlU3RyaW5ncyBhZGRPYmplY3Q6
KE5TU3RyaW5nKilhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5nc1tpXV07Ci0gICAgfQotICAg
IE5TU3BlbGxDaGVja2VyICpzcGVsbENoZWNrZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3Bl
bGxDaGVja2VyXTsKLSAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gc2hv
d0NvcnJlY3Rpb25CdWJibGVPZlR5cGU6YnViYmxlVHlwZSBwcmltYXJ5U3RyaW5nOnJlcGxhY2Vt
ZW50U3RyaW5nQXNOU1N0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVTdHJpbmdz
IGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcgdmlldzptX3dlYlZp
ZXcgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyAqYWNjZXB0ZWRTdHJpbmcpIHsKLSAgICAg
ICAgc3dpdGNoIChidWJibGVUeXBlKSB7Ci0gICAgICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxl
VHlwZUNvcnJlY3Rpb246Ci0gICAgICAgICAgICBpZiAoYWNjZXB0ZWRTdHJpbmcpCi0gICAgICAg
ICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25z
ZUFjY2VwdGVkIHRvQ29ycmVjdGlvbjphY2NlcHRlZFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3Ry
aW5nQXNOU1N0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENo
ZWNrZXJEb2N1bWVudFRhZygpXTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
IGlmICghbV9jb3JyZWN0aW9uUGFuZWxJc0Rpc21pc3NlZEV4dGVybmFsbHkgfHwgbV9yZWFzb25G
b3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsID09IFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0
aW9uUGFuZWxDYW5jZWxsZWQpCi0gICAgICAgICAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVj
b3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VSZWplY3RlZCB0b0NvcnJlY3Rpb246cmVw
bGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nIGZvcldvcmQ6cmVwbGFjZWRTdHJpbmdBc05TU3RyaW5n
IGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50
VGFnKCldOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgW3NwZWxs
Q2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUlnbm9yZWQgdG9Db3Jy
ZWN0aW9uOnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5n
QXNOU1N0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNr
ZXJEb2N1bWVudFRhZygpXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVSZXZlcnNpb246Ci0gICAgICAgICAgICBp
ZiAoYWNjZXB0ZWRTdHJpbmcpCi0gICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRS
ZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkIHRvQ29ycmVjdGlvbjpyZXBsYWNl
ZFN0cmluZ0FzTlNTdHJpbmcgZm9yV29yZDphY2NlcHRlZFN0cmluZyBsYW5ndWFnZTpuaWwgaW5T
cGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpXTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVHdWVzc2VzOgot
ICAgICAgICAgICAgaWYgKGFjY2VwdGVkU3RyaW5nKQotICAgICAgICAgICAgICAgIFtbTlNTcGVs
bENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25S
ZXNwb25zZUFjY2VwdGVkIHRvQ29ycmVjdGlvbjphY2NlcHRlZFN0cmluZyBmb3JXb3JkOnJlcGxh
Y2VkU3RyaW5nQXNOU1N0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpb
bV93ZWJWaWV3IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnXV07Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBlZGl0b3ItPmhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdChT
dHJpbmcoYWNjZXB0ZWRTdHJpbmcpKTsKLSAgICB9XTsKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpz
aG93Q29ycmVjdGlvblBhbmVsKENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSBwYW5lbFR5
cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCit7Cisg
ICAgbV9jb3JyZWN0aW9uUGFuZWwuc2hvdyhtX3dlYlZpZXcsIHBhbmVsVHlwZSwgYm91bmRpbmdC
b3hPZlJlcGxhY2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFs
dGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKIH0KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6
OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5l
bCByZWFzb25Gb3JEaXNtaXNzaW5nKQogewotICAgIGlmIChpc1Nob3dpbmdDb3JyZWN0aW9uUGFu
ZWwoKSkgewotICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbElzRGlzbWlzc2VkRXh0ZXJuYWxseSA9
IFlFUzsKLSAgICAgICAgbV9yZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsID0gcmVh
c29uRm9yRGlzbWlzc2luZzsKLSAgICAgICAgaWYgKHJlYXNvbkZvckRpc21pc3NpbmcgPT0gUmVh
c29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbEFjY2VwdGVkKQotICAgICAgICAgICAgW1tO
U1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGRpc21pc3NDb3JyZWN0aW9uQnViYmxl
Rm9yVmlldzptX3dlYlZpZXddOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBbW05TU3BlbGxD
aGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gY2FuY2VsQ29ycmVjdGlvbkJ1YmJsZUZvclZpZXc6
bV93ZWJWaWV3XTsKLSAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJc1Nob3duID0gTk87Ci0gICAg
fQorICAgIG1fY29ycmVjdGlvblBhbmVsLmRpc21pc3MocmVhc29uRm9yRGlzbWlzc2luZyk7CiB9
CiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwoKQorU3Ry
aW5nIFdlYkVkaXRvckNsaWVudDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oUmVhc29uRm9y
RGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb25Gb3JEaXNtaXNzaW5nKQogewotICAgIHJl
dHVybiBtX2NvcnJlY3Rpb25QYW5lbElzU2hvd247CisgICAgcmV0dXJuIG1fY29ycmVjdGlvblBh
bmVsLmRpc21pc3NTb29uKHJlYXNvbkZvckRpc21pc3NpbmcpOwogfQogCiB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShFZGl0b3JDbGllbnQ6OkF1dG9j
b3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKIHsKLSAgICBOU0NvcnJl
Y3Rpb25SZXNwb25zZSBzcGVsbENoZWNrZXJSZXNwb25zZSA9IHJlc3BvbnNlVHlwZSA9PSBFZGl0
b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQgPyBOU0NvcnJlY3Rpb25SZXNwb25zZVJl
dmVydGVkIDogTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7Ci0gICAgW1tOU1NwZWxsQ2hlY2tl
ciBzaGFyZWRTcGVsbENoZWNrZXJdIHJlY29yZFJlc3BvbnNlOnNwZWxsQ2hlY2tlclJlc3BvbnNl
IHRvQ29ycmVjdGlvbjpyZXBsYWNlbWVudFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nIGxh
bmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOlttX3dlYlZpZXcgc3BlbGxDaGVja2Vy
RG9jdW1lbnRUYWddXTsKKyAgICBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSA9IHJlc3Bv
bnNlVHlwZSA9PSBFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQgPyBOU0NvcnJl
Y3Rpb25SZXNwb25zZVJldmVydGVkIDogTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7CisgICAg
Q29ycmVjdGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKG1fd2ViVmlldywg
cmVzcG9uc2UsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDg0NzQ4ZTVjY2VlZGNhOGNi
YmU1ODVkOTU0NWY2NmRlMGU4ZmQ4OWUuLjU5ZWI4MGM2MWM4YjMwMTNhMTNkZjM2YzY5OGNiMmM4
MWY0NWY5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTUzMTEsNiAr
NTMxMSwxNiBAQCBzdGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpTVmFs
dWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGpzVmFsdQogCiAjZW5kaWYKIAorI2lmICFkZWZp
bmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCistICh2b2lkKWhhbmRsZUNvcnJl
Y3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcqKXJlc3VsdAoreworICAgIFdlYkZyYW1lICp3ZWJG
cmFtZSA9IFtzZWxmIF9zZWxlY3RlZE9yTWFpbkZyYW1lXTsKKyAgICBGcmFtZSogY29yZUZyYW1l
ID0gY29yZSh3ZWJGcmFtZSk7CisgICAgaWYgKGNvcmVGcmFtZSkKKyAgICAgICAgY29yZUZyYW1l
LT5lZGl0b3IoKS0+aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KHJlc3VsdCk7Cit9CisjZW5k
aWYKKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld1VuZG9hYmxlRWRp
dGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCBh
NGVhODA5YjAwMWRiYzZhNjcyMzRmMTcyZjAyMGJjMzRjZjdlODRjLi5jYjk0ODUxMzdkYjA2Zjkx
ZjY5ZDEzYWEwNzQzMjUyZGRmYzRlNWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3UHJpdmF0ZS5oCkBAIC02NDQsNyArNjQ0LDkgQEAgQ291bGQgYmUgd29ydGggYWRkaW5n
IHRvIHRoZSBBUEkuCiAtICh2b2lkKXNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJs
ZWQ6KEJPT0wpZmxhZzsKIC0gKHZvaWQpdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9u
OihpZClzZW5kZXI7CiAjZW5kaWYKLQorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9T
Tk9XX0xFT1BBUkQpCistICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDooTlNTdHJp
bmcqKXJlc3VsdDsKKyNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdF
ZGl0aW5nSW5NYWlsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDJlNDE2NDAzZDJjY2E5MzQ5MTljMzg4NjJmY2Rh
ODE0ODdhYWRkMzIuLjlkYTg4Nzg5OWJiYmZlNjAyNDY3NjZjY2EzMzJhNTljMjg3ODkzZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAorMjAxMS0wMy0yMiAgSmlhIFB1ICA8anB1QGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBI
b29rIHVwIG5ldyBBcHBLaXQgYXV0b2NvcnJlY3Rpb24gVUkgd2l0aCBXSzIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA1NQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vODk0NzQ2Mz4KKworICAgICAgICBQbGVhc2Ugc2VlIFdlYkNvcmUvQ2hhbmdl
TG9nIGZvciBkZXRhaWwuCisKKyAgICAgICAgVGhlIGNhbGxzIHRvIEFwcEtpdCBhcmUgaW1wbGVt
ZW50ZWQgaW4gUGFnZUNsaWVudEltcGwuIE90aGVyIGNoYW5nZXMgYXJlIG5lY2Vzc2FyeSBmb3Ig
dGhlCisgICAgICAgIHBsdW1iaW5nIHdvcmsuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21h
Yy9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGll
bnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2hvd0NvcnJlY3Rp
b25QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaXNtaXNzQ29ycmVj
dGlvblBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWxTb29uKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlY29y
ZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnXSk6Cisg
ICAgICAgICgtW1dLVmlldyBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG93Q29ycmVjdGlvblBhbmVsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlQ29ycmVjdGlvblBhbmVs
UmVzdWx0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL0NvcnJlY3Rpb25QYW5lbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Q29ycmVjdGlv
blBhbmVsOjppc1Nob3dpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBh
bmVsLm1tOiBBZGRlZC4KKyAgICAgICAgKGNvcnJlY3Rpb25CdWJibGVUeXBlKToKKyAgICAgICAg
KFdlYktpdDo6Q29ycmVjdGlvblBhbmVsOjpDb3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoV2Vi
S2l0OjpDb3JyZWN0aW9uUGFuZWw6On5Db3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoV2ViS2l0
OjpDb3JyZWN0aW9uUGFuZWw6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpDb3JyZWN0aW9uUGFu
ZWw6OmRpc21pc3MpOgorICAgICAgICAoV2ViS2l0OjpDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3NT
b29uKToKKyAgICAgICAgKFdlYktpdDo6Q29ycmVjdGlvblBhbmVsOjpkaXNtaXNzSW50ZXJuYWwp
OgorICAgICAgICAoV2ViS2l0OjpDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9u
UmVzcG9uc2UpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBh
bmVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlv
blBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVj
dGlvblBhbmVsU29vbik6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6cmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVDb3JyZWN0aW9uUGFu
ZWxSZXN1bHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTEtMDMt
MjIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggMzM4Zjc3NjgxZjkxYzczYzI3Y2RkYmViZjY0ZDZk
ZjA4OTU2MmNjMS4uOTliZTQzMTBkOGNlYWY1NzI0NTk4MGE4ZDMwZDI5NmJmOTAzZGY4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFBhZ2VDbGllbnRJbXBsX2gKICNkZWZpbmUgUGFn
ZUNsaWVudEltcGxfaAogCisjaW5jbHVkZSAiQ29ycmVjdGlvblBhbmVsLmgiCiAjaW5jbHVkZSAi
UGFnZUNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtMTA0LDggKzEw
NSwxNiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBzY2FsZUZhY3RvciwgY29uc3QgRGljdGlvbmFy
eVBvcHVwSW5mbyYpOwogCisgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2Vi
Q29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJl
cGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0
IFZlY3RvcjxXVEY6OlN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JE
aXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQ29y
cmVjdGlvblBhbmVsU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBh
bmVsKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShXZWJD
b3JlOjpFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBXVEY6
OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0
cmluZyk7CisKICAgICBXS1ZpZXcqIG1fd2tWaWV3OwogICAgIFJldGFpblB0cjxXZWJFZGl0b3JV
bmRvVGFyZ2V0T2JqQz4gbV91bmRvVGFyZ2V0OworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NO
T1dfTEVPUEFSRCkKKyAgICBDb3JyZWN0aW9uUGFuZWwgbV9jb3JyZWN0aW9uUGFuZWw7CisjZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQppbmRleCBlMzUwM2RlNmY4N2Y2OTlm
Yjc2N2M2MjI2ZTQ5ZjUzYzFmYzk0NDYwLi5jNjI0NDViZmRjYjJjNzI4MTc3MTFiNmIyN2JhMjdl
M2Q4NGQ3MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9Q
YWdlQ2xpZW50SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9Q
YWdlQ2xpZW50SW1wbC5tbQpAQCAtNDI3LDQgKzQyNywzNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBs
OjpkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBTdHJpbmcmIHRleHQsIGRvdWJsZSBz
Y2FsZQogICAgIFttX3drVmlldyBzaG93RGVmaW5pdGlvbkZvckF0dHJpYnV0ZWRTdHJpbmc6YXR0
cmlidXRlZFN0cmluZy5nZXQoKSByYW5nZTpOU01ha2VSYW5nZSgwLCBbYXR0cmlidXRlZFN0cmlu
Zy5nZXQoKSBsZW5ndGhdKSBvcHRpb25zOm9wdGlvbnMgYmFzZWxpbmVPcmlnaW5Qcm92aWRlcjpe
KE5TUmFuZ2UgYWRqdXN0ZWRSYW5nZSkgeyByZXR1cm4gKE5TUG9pbnQpdGV4dEJhc2VsaW5lT3Jp
Z2luOyB9XTsKIH0KIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2hvd0NvcnJlY3Rpb25QYW5lbChD
b3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUgdHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3Vu
ZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRl
cm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKK3sKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9T
Tk9XX0xFT1BBUkQpCisgICAgaWYgKCFpc1ZpZXdWaXNpYmxlKCkgfHwgIWlzVmlld0luV2luZG93
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvcnJlY3Rpb25QYW5lbC5zaG93KG1fd2tWaWV3
LCB0eXBlLCBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5nLCByZXBs
YWNlbWVudFN0cmluZywgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOworI2VuZGlmCit9
CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9y
RGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24pCit7CisjaWYgIWRlZmluZWQoQlVJTERJ
TkdfT05fU05PV19MRU9QQVJEKQorICAgIG1fY29ycmVjdGlvblBhbmVsLmRpc21pc3MocmVhc29u
KTsKKyNlbmRpZgorfQorCitTdHJpbmcgUGFnZUNsaWVudEltcGw6OmRpc21pc3NDb3JyZWN0aW9u
UGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVh
c29uKQoreworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICByZXR1
cm4gbV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzc1Nvb24ocmVhc29uKTsKKyNlbHNlCisgICAgcmV0
dXJuIFN0cmluZygpOworI2VuZGlmCit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNl
VHlwZSByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCit7CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05P
V19MRU9QQVJEKQorICAgIE5TQ29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlID0gcmVzcG9uc2VU
eXBlID09IEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXZlcnRlZCA/IE5TQ29ycmVjdGlv
blJlc3BvbnNlUmV2ZXJ0ZWQgOiBOU0NvcnJlY3Rpb25SZXNwb25zZUVkaXRlZDsKKyAgICBDb3Jy
ZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV93a1ZpZXcsIHJlc3Bv
bnNlLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpOworI2VuZGlmCit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3Lm1tCmluZGV4IGI1MGQ2NGIzMzQ1ODFlOGNjMzAwOGExMDJiMjU5NDg0YjQ3N2M4NzkuLmMy
MzJhMDJlNjUyY2Q2YzI2YzhkODNkYTU0MTY4NzFjZDE3ZDI5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTE0OSw2ICsxNDksOSBAQCB0eXBlZGVm
IEhhc2hNYXA8U3RyaW5nLCBWYWxpZGF0aW9uVmVjdG9yPiBWYWxpZGF0aW9uTWFwOwogI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBSZXRhaW5QdHI8V0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlcj4gX2Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyOwogI2VuZGlmCisKKyAgICBCT09M
IF9oYXNTcGVsbENoZWNrZXJEb2N1bWVudFRhZzsKKyAgICBOU0ludGVnZXIgX3NwZWxsQ2hlY2tl
ckRvY3VtZW50VGFnOwogfQogQGVuZAogCkBAIC0yMDYxLDUgKzIwNjQsMTkgQEAgc3RhdGljIHZv
aWQgZHJhd1BhZ2VCYWNrZ3JvdW5kKENHQ29udGV4dFJlZiBjb250ZXh0LCBXZWJQYWdlUHJveHkq
IHBhZ2UsIGNvbnN0IEkKICAgICBfZGF0YS0+X3BhZ2UtPnBlcmZvcm1EaWN0aW9uYXJ5TG9va3Vw
QXRMb2NhdGlvbihGbG9hdFBvaW50KHRoZVBvaW50LngsIHRoZVBvaW50LnkpKTsKIH0KIAorLSAo
TlNJbnRlZ2VyKXNwZWxsQ2hlY2tlckRvY3VtZW50VGFnCit7CisgICAgaWYgKCFfZGF0YS0+X2hh
c1NwZWxsQ2hlY2tlckRvY3VtZW50VGFnKSB7CisgICAgICAgIF9kYXRhLT5fc3BlbGxDaGVja2Vy
RG9jdW1lbnRUYWcgPSBbTlNTcGVsbENoZWNrZXIgdW5pcXVlU3BlbGxEb2N1bWVudFRhZ107Cisg
ICAgICAgIF9kYXRhLT5faGFzU3BlbGxDaGVja2VyRG9jdW1lbnRUYWcgPSBZRVM7CisgICAgfQor
ICAgIHJldHVybiBfZGF0YS0+X3NwZWxsQ2hlY2tlckRvY3VtZW50VGFnOworfQorCistICh2b2lk
KWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcqKXJlc3VsdAoreworICAgIF9k
YXRhLT5fcGFnZS0+aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KHJlc3VsdCk7Cit9CisKIEBl
bmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3UHJpdmF0
ZS5oCmluZGV4IGNlY2UxYzc0MGI3NzJjN2VjNjJjNmRiZTk2YmZjMGQ2MzYyNGFlMzcuLjM3YzJk
OGRkODFmYjI4NjVhMjE4YjEyOThmNGMyYjhjYTZiZWM1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdQcml2YXRlLmgKQEAgLTM1LDQgKzM1LDYgQEAK
IAogLSAodm9pZClwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0Q3VycmVudE1vdXNlTG9jYXRpb247
CiAKKy0gKE5TSW50ZWdlcilzcGVsbENoZWNrZXJEb2N1bWVudFRhZzsKKy0gKHZvaWQpaGFuZGxl
Q29ycmVjdGlvblBhbmVsUmVzdWx0OihOU1N0cmluZyopcmVzdWx0OwogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggMTBiZDA3ODdhNDRiOTUzYmNhMzg4Nzc1NTZj
NDliNmIwYmRlYTZmYi4uMTVkOGRlMzYwYTQ5MzIxNzI4ZDZiNDJkYjZiMWJhOWJiZDJmMGE4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xMzAsNiArMTMwLDEwIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29tcGxleFRleHRJbnB1dEVuYWJsZWQodWlu
dDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIGJvb2wgY29tcGxleFRleHRJ
bnB1dEVuYWJsZWQpID0gMDsKICAgICB2aXJ0dWFsIENHQ29udGV4dFJlZiBjb250YWluaW5nV2lu
ZG93R3JhcGhpY3NDb250ZXh0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtRGlj
dGlvbmFyeUxvb2t1cChjb25zdCBTdHJpbmcmLCBkb3VibGUgc2NhbGVGYWN0b3IsIGNvbnN0IERp
Y3Rpb25hcnlQb3B1cEluZm8mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9u
UGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpT
dHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJp
bmcsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJp
bmdzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29y
ZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCkgPSAwOworICAgIHZpcnR1YWwg
U3RyaW5nIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21p
c3NpbmdDb3JyZWN0aW9uUGFuZWwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2Nv
cnJlY3Rpb25SZXNwb25zZShXZWJDb3JlOjpFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVz
cG9uc2VUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6
U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5GcmFtZSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMjllOGU4YTIwZTNiNGUyZTFm
Nzg0YjI1ZGE0MzdkYWIxNzYxMDIzZC4uYmJlMmIzYTQyNGJjYzBhOTE4MDA1Njk1OTNmYTE3Yjk5
ZDY2MjAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTEzOTksNiArMTM5OSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cAogICAgIGlmICghYXJn
dW1lbnRzLT5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBQ
TEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICBk
aXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxJ
Z25vcmVkKTsKKyNlbmRpZgorCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCkt
PndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCkBAIC0yNzY1
LDQgKzI3NjksMzYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmEKICAgICBtX3VpQ2xpZW50LnNh
dmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIodGhpcywgc3VnZ2VzdGVkRmlsZW5hbWUsIG1p
bWVUeXBlLCBvcmlnaW5hdGluZ1VSTFN0cmluZywgZGF0YSk7CiB9CiAKKyNpZiBQTEFURk9STShN
QUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpzaG93Q29ycmVjdGlvblBhbmVsKGludDMyX3QgcGFuZWxUeXBlLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcs
IGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdz
KQoreworICAgIG1fcGFnZUNsaWVudC0+c2hvd0NvcnJlY3Rpb25QYW5lbCgoV2ViQ29yZTo6Q29y
cmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlKXBhbmVsVHlwZSwgYm91bmRpbmdCb3hPZlJlcGxh
Y2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZl
UmVwbGFjZW1lbnRTdHJpbmdzKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWwoaW50MzJfdCByZWFzb24pCit7CisgICAgbV9wYWdlQ2xpZW50LT5kaXNtaXNz
Q29ycmVjdGlvblBhbmVsKChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBh
bmVsKXJlYXNvbik7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaXNtaXNzQ29ycmVjdGlvblBh
bmVsU29vbihpbnQzMl90IHJlYXNvbiwgU3RyaW5nJiByZXN1bHQpCit7CisgICAgcmVzdWx0ID0g
bV9wYWdlQ2xpZW50LT5kaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbigoV2ViQ29yZTo6UmVhc29u
Rm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbClyZWFzb24pOworfQorCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShpbnQzMl90IHJlc3BvbnNlVHlwZSwg
Y29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVw
bGFjZW1lbnRTdHJpbmcpCit7CisgICAgbV9wYWdlQ2xpZW50LT5yZWNvcmRBdXRvY29ycmVjdGlv
blJlc3BvbnNlKChXZWJDb3JlOjpFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VU
eXBlKXJlc3BvbnNlVHlwZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKTsKK30K
KyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQordm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUNv
cnJlY3Rpb25QYW5lbFJlc3VsdChjb25zdCBXVEY6OlN0cmluZyYgcmVzdWx0KQoreworI2lmICFk
ZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICBpZiAoIWlzQ2xvc2VkKCkpCisg
ICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlQ29ycmVjdGlv
blBhbmVsUmVzdWx0KHJlc3VsdCksIG1fcGFnZUlELCAwKTsKKyNlbmRpZgorfQorI2VuZGlmCisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDVlODJjMmQ5ZTA3MmNiMTg3YzI5NjA3NDA1YjRlNWRkMGI0YzkyZDkuLjNmOWVl
MDVjZTk1MmRmOWEyMzgxZDZmOTliNzYxMWFlOGIzOTBlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTQ1MCw2ICs0NTAsMTAgQEAgcHVibGljOgogCiAgICAg
dm9pZCBmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJl
Y3Q+JiB1cGRhdGVSZWN0cyk7CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCBoYW5kbGVD
b3JyZWN0aW9uUGFuZWxSZXN1bHQoY29uc3QgV1RGOjpTdHJpbmcmIHJlc3VsdCk7CisjZW5kaWYK
KwogICAgIHN0YXRpYyB2b2lkIHNldERlYnVnUGFpbnRGbGFncyhXS1BhZ2VEZWJ1Z1BhaW50Rmxh
Z3MgZmxhZ3MpIHsgc19kZWJ1Z1BhaW50RmxhZ3MgPSBmbGFnczsgfQogICAgIHN0YXRpYyBXS1Bh
Z2VEZWJ1Z1BhaW50RmxhZ3MgZGVidWdQYWludEZsYWdzKCkgeyByZXR1cm4gc19kZWJ1Z1BhaW50
RmxhZ3M7IH0KIApAQCAtNjQzLDYgKzY0NywxMyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbml0
aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJik7CiAKKyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoaW50
MzJfdCBwYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJl
cGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdU
Rjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYg
YWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOworICAgIHZvaWQgZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbChpbnQzMl90IHJlYXNvbik7CisgICAgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVs
U29vbihpbnQzMl90IHJlYXNvbiwgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgcmVjb3JkQXV0
b2NvcnJlY3Rpb25SZXNwb25zZShpbnQzMl90IHJlc3BvbnNlVHlwZSwgY29uc3QgV1RGOjpTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcp
OworI2VuZGlmCisKICAgICBQYWdlQ2xpZW50KiBtX3BhZ2VDbGllbnQ7CiAgICAgV2ViTG9hZGVy
Q2xpZW50IG1fbG9hZGVyQ2xpZW50OwogICAgIFdlYlBvbGljeUNsaWVudCBtX3BvbGljeUNsaWVu
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IGM4MTJhZTE2MjU3YmJiODgyYWI3NWVkODA3MWM2NmNiMWMzMDk2YjIuLjgzZDQz
NzBmOTI0MjU1ZjFjOGJmZjBlZmE0ODM5Yzk2ODMwM2YwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjA4LDQgKzIwOCwx
MiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2lmIFBMQVRGT1JNKFdJTikKICAgICBT
dGFydERyYWdEcm9wKFdlYkNvcmU6OkludFBvaW50IGltYWdlUG9pbnQsIFdlYkNvcmU6OkludFBv
aW50IGRyYWdQb2ludCwgdWludDY0X3Qgb2tFZmZlY3QsIEhhc2hNYXA8VUlOVCxWZWN0b3I8U3Ry
aW5nPiA+IGRhdGFNYXAsIFdlYkNvcmU6OkludFNpemUgZHJhZ0ltYWdlU2l6ZSwgV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OkhhbmRsZSBkcmFnSW1hZ2UsIGJvb2wgbGlua0RyYWcpCiAjZW5kaWYKKwor
I2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQor
ICAgICMgQXV0b2NvcnJlY3Rpb24gbWVzc2FnZXMKKyAgICBTaG93Q29ycmVjdGlvblBhbmVsKGlu
dDMyX3QgcGFuZWxUeXBlLCBXZWJDb3JlOjpGbG9hdFJlY3QgYm91bmRpbmdCb3hPZlJlcGxhY2Vk
U3RyaW5nLCBXVEY6OlN0cmluZyByZXBsYWNlZFN0cmluZywgV1RGOjpTdHJpbmcgcmVwbGFjZW1l
bnRTdHJpbmcsIFZlY3RvcjxXVEY6OlN0cmluZz4gYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmlu
Z3MpCisgICAgRGlzbWlzc0NvcnJlY3Rpb25QYW5lbChpbnQzMl90IHJlYXNvbikKKyAgICBEaXNt
aXNzQ29ycmVjdGlvblBhbmVsU29vbihpbnQzMl90IHJlYXNvbikgLT4gKFN0cmluZyByZXN1bHQp
CisgICAgUmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShpbnQzMl90IHJlc3BvbnNlVHlwZSwg
V1RGOjpTdHJpbmcgcmVwbGFjZWRTdHJpbmcsIFdURjo6U3RyaW5nIHJlcGxhY2VtZW50U3RyaW5n
KTsKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9D
b3JyZWN0aW9uUGFuZWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlv
blBhbmVsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM1MmU2MWExOGY2Y2VlOTY5YWQzNmU5Y2NiYjczOWExYzAx
ZjMzMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29y
cmVjdGlvblBhbmVsLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29y
cmVjdGlvblBhbmVsX2gKKyNkZWZpbmUgQ29ycmVjdGlvblBhbmVsX2gKKworI2lmICFkZWZpbmVk
KEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyNpbXBvcnQgPEFwcEtpdC9OU1RleHRDaGVja2Vy
Lmg+CisjaW1wb3J0IDxKYXZhc2NyaXB0Q29yZS9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvQ29ycmVjdGlvblBhbmVsSW5mby5oPgorCitAY2xhc3MgV0tWaWV3OworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgQ29ycmVjdGlvblBhbmVsIHsKK3B1YmxpYzoKKyAgICBDb3JyZWN0
aW9uUGFuZWwoKTsKKyAgICB+Q29ycmVjdGlvblBhbmVsKCk7CisgICAgdm9pZCBzaG93KFdLVmll
dyosIFdlYkNvcmU6OkNvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CisgICAgdm9pZCBk
aXNtaXNzKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOworICAg
IFN0cmluZyBkaXNtaXNzU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlv
blBhbmVsKTsKKyAgICBzdGF0aWMgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdL
VmlldyosIE5TQ29ycmVjdGlvblJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKKworcHJpdmF0ZToKKyAgICBib29s
IGlzU2hvd2luZygpIGNvbnN0IHsgcmV0dXJuIG1fdmlldzsgfQorICAgIHZvaWQgZGlzbWlzc0lu
dGVybmFsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwsIGJvb2wg
ZGlzbWlzc2luZ0V4dGVybmFsbHkpOworICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVu
dChOU1N0cmluZyogYWNjZXB0ZWRSZXBsYWNlbWVudCwgTlNTdHJpbmcqIHJlcGxhY2VkLCBOU1N0
cmluZyogcHJvcG9zZWRSZXBsYWNlbWVudCwgTlNDb3JyZWN0aW9uQnViYmxlVHlwZSk7CisKKyAg
ICBib29sIG1fd2FzRGlzbWlzc2VkRXh0ZXJuYWxseTsKKyAgICBXZWJDb3JlOjpSZWFzb25Gb3JE
aXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIG1fcmVhc29uRm9yRGlzbWlzc2luZzsKKyAgICBSZXRh
aW5QdHI8V0tWaWV3PiBtX3ZpZXc7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX3Jlc3VsdEZv
clN5bmNocm9ub3VzRGlzbWlzc2FsOworICAgIFJldGFpblB0cjxOU0NvbmRpdGlvbj4gbV9yZXN1
bHRDb25kaXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vICFk
ZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKworI2VuZGlmIC8vIENvcnJlY3Rpb25Q
YW5lbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rp
b25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVs
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY1NjYzZjY0OTU2ZWU5ZDUzMzU4OTA1NTVhZDk3YjlmYTAwMjA2NTIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rp
b25QYW5lbC5tbQpAQCAtMCwwICsxLDE3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyNpbXBvcnQgIkNv
cnJlY3Rpb25QYW5lbC5oIgorCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIldL
Vmlldy5oIgorI2ltcG9ydCAiV0tWaWV3UHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK3N0YXRpYyBpbmxpbmUgTlNDb3JyZWN0aW9u
QnViYmxlVHlwZSBjb3JyZWN0aW9uQnViYmxlVHlwZShDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5l
bFR5cGUgcGFuZWxUeXBlKQoreworICAgIHN3aXRjaCAocGFuZWxUeXBlKSB7CisgICAgY2FzZSBD
b3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGVDb3JyZWN0aW9uOgorICAgICAgICByZXR1cm4g
TlNDb3JyZWN0aW9uQnViYmxlVHlwZUNvcnJlY3Rpb247CisgICAgY2FzZSBDb3JyZWN0aW9uUGFu
ZWxJbmZvOjpQYW5lbFR5cGVSZXZlcnNpb246CisgICAgICAgIHJldHVybiBOU0NvcnJlY3Rpb25C
dWJibGVUeXBlUmV2ZXJzaW9uOworICAgIGNhc2UgQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxU
eXBlU3BlbGxpbmdTdWdnZXN0aW9uczoKKyAgICAgICAgcmV0dXJuIE5TQ29ycmVjdGlvbkJ1YmJs
ZVR5cGVHdWVzc2VzOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gTlNDb3JyZWN0aW9uQnViYmxlVHlwZUNvcnJlY3Rpb247Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitDb3JyZWN0aW9uUGFuZWw6OkNvcnJlY3Rpb25QYW5lbCgpCisgICAgOiBtX3dhc0Rp
c21pc3NlZEV4dGVybmFsbHkoZmFsc2UpCisgICAgLCBtX3JlYXNvbkZvckRpc21pc3NpbmcoUmVh
c29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbElnbm9yZWQpCisgICAgLCBtX3Jlc3VsdENv
bmRpdGlvbihBZG9wdE5TLCBbW05TQ29uZGl0aW9uIGFsbG9jXSBpbml0XSkKK3sKK30KKworQ29y
cmVjdGlvblBhbmVsOjp+Q29ycmVjdGlvblBhbmVsKCkKK3sKKyAgICBkaXNtaXNzSW50ZXJuYWwo
UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbElnbm9yZWQsIGZhbHNlKTsKK30KKwor
dm9pZCBDb3JyZWN0aW9uUGFuZWw6OnNob3coV0tWaWV3KiB2aWV3LCBDb3JyZWN0aW9uUGFuZWxJ
bmZvOjpQYW5lbFR5cGUgdHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFj
ZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2Vt
ZW50U3RyaW5ncykKK3sKKyAgICBkaXNtaXNzSW50ZXJuYWwoUmVhc29uRm9yRGlzbWlzc2luZ0Nv
cnJlY3Rpb25QYW5lbElnbm9yZWQsIGZhbHNlKTsKKyAgICAKKyAgICBpZiAoIXZpZXcpCisgICAg
ICAgIHJldHVybjsKKworICAgIE5TU3RyaW5nKiByZXBsYWNlZFN0cmluZ0FzTlNTdHJpbmcgPSBy
ZXBsYWNlZFN0cmluZzsKKyAgICBOU1N0cmluZyogcmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5n
ID0gcmVwbGFjZW1lbnRTdHJpbmc7CisgICAgbV92aWV3ID0gdmlldzsKKyAgICBOU0NvcnJlY3Rp
b25CdWJibGVUeXBlIGJ1YmJsZVR5cGUgPSBjb3JyZWN0aW9uQnViYmxlVHlwZSh0eXBlKTsKKyAg
ICAKKyAgICBOU011dGFibGVBcnJheSogYWx0ZXJuYXRpdmVTdHJpbmdzID0gMDsKKyAgICBpZiAo
IWFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLmlzRW1wdHkoKSkgeworICAgICAgICBzaXpl
X3Qgc2l6ZSA9IGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLnNpemUoKTsKKyAgICAgICAg
YWx0ZXJuYXRpdmVTdHJpbmdzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnNp
emVdOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAg
ICAgIFthbHRlcm5hdGl2ZVN0cmluZ3MgYWRkT2JqZWN0OihOU1N0cmluZyopYWx0ZXJuYXRpdmVS
ZXBsYWNlbWVudFN0cmluZ3NbaV1dOworICAgIH0KKworICAgIE5TU3BlbGxDaGVja2VyKiBzcGVs
bENoZWNrZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXTsKKyAgICBbc3Bl
bGxDaGVja2VyIHNob3dDb3JyZWN0aW9uQnViYmxlT2ZUeXBlOmJ1YmJsZVR5cGUgcHJpbWFyeVN0
cmluZzpyZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgYWx0ZXJuYXRpdmVTdHJpbmdzOmFsdGVy
bmF0aXZlU3RyaW5ncyBmb3JTdHJpbmdJblJlY3Q6Ym91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5n
IHZpZXc6bV92aWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcqIGFjY2VwdGVk
U3RyaW5nKSB7CisgICAgICAgIGhhbmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQoYWNjZXB0ZWRTdHJp
bmcsIHJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZywgcmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5n
LCBidWJibGVUeXBlKTsKKyAgICB9XTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWw6OmRpc21p
c3MoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24pCit7CisgICAgZGlz
bWlzc0ludGVybmFsKHJlYXNvbiwgdHJ1ZSk7Cit9CisKK1N0cmluZyBDb3JyZWN0aW9uUGFuZWw6
OmRpc21pc3NTb29uKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uKQor
eworICAgIGlmICghaXNTaG93aW5nKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAg
IGRpc21pc3NJbnRlcm5hbChyZWFzb24sIHRydWUpOworICAgIFttX3Jlc3VsdENvbmRpdGlvbi5n
ZXQoKSBsb2NrXTsKKyAgICB3aGlsZSAoIW1fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNtaXNzYWwp
CisgICAgICAgIFttX3Jlc3VsdENvbmRpdGlvbi5nZXQoKSB3YWl0XTsKKyAgICBbbV9yZXN1bHRD
b25kaXRpb24uZ2V0KCkgdW5sb2NrXTsKKyAgICByZXR1cm4gbV9yZXN1bHRGb3JTeW5jaHJvbm91
c0Rpc21pc3NhbC5nZXQoKTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3NJbnRl
cm5hbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbiwgYm9vbCBkaXNt
aXNzaW5nRXh0ZXJuYWxseSkKK3sKKyAgICBtX3dhc0Rpc21pc3NlZEV4dGVybmFsbHkgPSBkaXNt
aXNzaW5nRXh0ZXJuYWxseTsKKyAgICBpZiAoIWlzU2hvd2luZygpKQorICAgICAgICByZXR1cm47
CisgICAgCisgICAgbV9yZWFzb25Gb3JEaXNtaXNzaW5nID0gcmVhc29uOworICAgIG1fcmVzdWx0
Rm9yU3luY2hyb25vdXNEaXNtaXNzYWwuY2xlYXIoKTsKKyAgICBpZiAocmVhc29uID09IFJlYXNv
bkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxBY2NlcHRlZCkKKyAgICAgICAgW1tOU1NwZWxs
Q2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGRpc21pc3NDb3JyZWN0aW9uQnViYmxlRm9yVmll
dzptX3ZpZXcuZ2V0KCldOworICAgIGVsc2UKKyAgICAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFy
ZWRTcGVsbENoZWNrZXJdIGNhbmNlbENvcnJlY3Rpb25CdWJibGVGb3JWaWV3Om1fdmlldy5nZXQo
KV07CisgICAgbV92aWV3LmNsZWFyKCk7Cit9CisKK3ZvaWQgQ29ycmVjdGlvblBhbmVsOjpyZWNv
cmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdLVmlldyogdmlldywgTlNDb3JyZWN0aW9uUmVzcG9u
c2UgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZW1lbnRTdHJpbmcpCit7CisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENo
ZWNrZXJdIHJlY29yZFJlc3BvbnNlOnJlc3BvbnNlIHRvQ29ycmVjdGlvbjpyZXBsYWNlbWVudFN0
cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRX
aXRoVGFnOlt2aWV3IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnXV07Cit9CisKK3ZvaWQgQ29ycmVj
dGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJl
cGxhY2VtZW50LCBOU1N0cmluZyogcmVwbGFjZWQsIE5TU3RyaW5nKiBwcm9wb3NlZFJlcGxhY2Vt
ZW50LCAgTlNDb3JyZWN0aW9uQnViYmxlVHlwZSBjb3JyZWN0aW9uQnViYmxlVHlwZSkKK3sKKyAg
ICBOU1NwZWxsQ2hlY2tlciogc3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNw
ZWxsQ2hlY2tlcl07CisgICAgTlNJbnRlZ2VyIGRvY3VtZW50VGFnID0gW21fdmlldy5nZXQoKSBz
cGVsbENoZWNrZXJEb2N1bWVudFRhZ107CisgICAgCisgICAgc3dpdGNoIChjb3JyZWN0aW9uQnVi
YmxlVHlwZSkgeworICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUNvcnJlY3Rpb246Cisg
ICAgICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQorICAgICAgICAgICAgW3NwZWxsQ2hlY2tl
ciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkIHRvQ29ycmVjdGlv
bjphY2NlcHRlZFJlcGxhY2VtZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6bmlsIGluU3Bl
bGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIGlmICghbV93YXNEaXNtaXNzZWRFeHRlcm5hbGx5IHx8IG1fcmVhc29uRm9yRGlzbWlzc2lu
ZyA9PSBSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsQ2FuY2VsbGVkKQorICAgICAg
ICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9u
c2VSZWplY3RlZCB0b0NvcnJlY3Rpb246cHJvcG9zZWRSZXBsYWNlbWVudCBmb3JXb3JkOnJlcGxh
Y2VkIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFnXTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3Bv
bnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlSWdub3JlZCB0b0NvcnJlY3Rpb246cHJvcG9zZWRSZXBs
YWNlbWVudCBmb3JXb3JkOnJlcGxhY2VkIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRo
VGFnOmRvY3VtZW50VGFnXTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIE5T
Q29ycmVjdGlvbkJ1YmJsZVR5cGVSZXZlcnNpb246CisgICAgICAgIGlmIChhY2NlcHRlZFJlcGxh
Y2VtZW50KQorICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJl
Y3Rpb25SZXNwb25zZVJldmVydGVkIHRvQ29ycmVjdGlvbjpyZXBsYWNlZCBmb3JXb3JkOmFjY2Vw
dGVkUmVwbGFjZW1lbnQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1l
bnRUYWddOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVH
dWVzc2VzOgorICAgICAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKKyAgICAgICAgICAgIFtz
cGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZCB0
b0NvcnJlY3Rpb246YWNjZXB0ZWRSZXBsYWNlbWVudCBmb3JXb3JkOnJlcGxhY2VkIGxhbmd1YWdl
Om5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFnXTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIAorICAgIGlmICghbV93YXNEaXNtaXNzZWRFeHRlcm5hbGx5KSB7CisgICAg
ICAgIFttX3ZpZXcuZ2V0KCkgaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OmFjY2VwdGVkUmVw
bGFjZW1lbnRdOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIFttX3Jlc3VsdENv
bmRpdGlvbi5nZXQoKSBsb2NrXTsKKyAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKKyAgICAg
ICAgbV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rpc21pc3NhbC5hZG9wdE5TKFthY2NlcHRlZFJlcGxh
Y2VtZW50IGNvcHldKTsKKyAgICBbbV9yZXN1bHRDb25kaXRpb24uZ2V0KCkgc2lnbmFsXTsKKyAg
ICBbbV9yZXN1bHRDb25kaXRpb24uZ2V0KCkgdW5sb2NrXTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDMzODc3NWEzMWU3YzQ5ODI5OTNhNTlhODZjNmRiMDZmNzkzZTlhZGYuLjE3M2Y5MDBjNmJj
OTE1OGI4ODhhMWQ4MjRhZmJkNjA4MDFkMjY2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3MCw2ICszNzAsOCBAQAogCQk5
M0ZDNjdCRTEyRDNDQ0YyMDBBNjA2MTAgLyogRGVjb2RlckFkYXB0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkM2NzlFMTJEM0NDNzQwMEE2MDYx
MCAvKiBEZWNvZGVyQWRhcHRlci5oICovOyB9OwogCQk5M0ZDNjdCRjEyRDNDQ0YyMDBBNjA2MTAg
LyogRW5jb2RlckFkYXB0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNGQzY3OUYxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmNw
cCAqLzsgfTsKIAkJOTNGQzY3QzAxMkQzQ0NGMjAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZDNjdBMDEy
RDNDQzc0MDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuaCAqLzsgfTsKKwkJQjg3OEI2MTUxMzM0
MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjg3OEI2MTMxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJl
Y3Rpb25QYW5lbC5oICovOyB9OworCQlCODc4QjYxNjEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVj
dGlvblBhbmVsLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjg3OEI2MTQxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAqLzsgfTsK
IAkJQkMwMDkyRjcxMTU4MzdBMzAwRTBBRTJBIC8qIFJ1bkxvb3BNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwOTJGNTExNTgzN0EzMDBFMEFF
MkEgLyogUnVuTG9vcE1hYy5tbSAqLzsgfTsKIAkJQkMwMDkyRjgxMTU4MzdBMzAwRTBBRTJBIC8q
IFdvcmtRdWV1ZU1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzAwOTJGNjExNTgzN0EzMDBFMEFFMkEgLyogV29ya1F1ZXVlTWFjLmNwcCAqLzsg
fTsKIAkJQkMwMzJENzUxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkNocm9tZUNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJENjAxMEY0Mzc4
RDAwNThDMTVBIC8qIFdlYkNocm9tZUNsaWVudC5oICovOyB9OwpAQCAtMTIzOCw2ICsxMjQwLDgg
QEAKIAkJOTNGQzY3QTAxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVuY29kZXJBZGFwdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3MkQ1RDdGMTIzNkNCQTgwMEE4OEIxNSAvKiBXZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIzOTZF
QTU1MTJFMEVEMkQwMEY0RkVCNyAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI4NzhCNjEz
MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29ycmVjdGlvblBhbmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUI4NzhCNjE0MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3JyZWN0aW9uUGFuZWwubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDA5MkY1MTE1ODM3QTMwMEUwQUUyQSAv
KiBSdW5Mb29wTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UnVuTG9vcE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMDkyRjYxMTU4
MzdBMzAwRTBBRTJBIC8qIFdvcmtRdWV1ZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXb3JrUXVldWVNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzAzMkQ2MDEwRjQzNzhEMDA1OEMxNUEgLyogV2ViQ2hyb21lQ2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNocm9tZUNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjkyNiwyMCArMjkzMCwyMiBAQAogCQlCQ0NGMDg1QzExM0Yz
Qjc1MDBDNjUwQzUgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKLQkJCQlDRENBODVERTEzMkFEMDUzMDBFOTYxREYgLyogV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eU1hYy5tbSAqLywKLQkJCQlDRENBODVDNjEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlci5tbSAqLywKLQkJCQlDRENBODVDNzEzMkFCQTRFMDBFOTYx
REYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovLAogCQkJCTFBNjQyOTJDMTJE
RTVGOTgwMENBQUUyQyAvKiBCYWNraW5nU3RvcmVNYWMubW0gKi8sCiAJCQkJQkMyNjUxRjUxMTgy
NUVGODAwMjQzRTEyIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5TWFjLm1tICovLAor
CQkJCUI4NzhCNjEzMTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAqLywKKwkJ
CQlCODc4QjYxNDEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1tICovLAogCQkJ
CTFBQTQxN0VEMTJDMDBEODcwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlck1hYy5tbSAqLywKIAkJCQkx
QTFDNjQ4NjExRjQxNUI3MDA1NTNDMTkgLyogV2ViQ29udGV4dE1hYy5tbSAqLywKIAkJCQk1MUFD
QkI5RTEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oICovLAogCQkJ
CTUxQUNCQjlGMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1tICov
LAorCQkJCUNEQ0E4NURFMTMyQUQwNTMwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5TWFjLm1tICovLAogCQkJCTFDQThCOTM1MTI3Qzc3NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0
b3JQcm94eU1hYy5tbSAqLywKIAkJCQlCQzg1N0U4NTEyQjcxRUJCMDBFREVCMkUgLyogV2ViUGFn
ZVByb3h5TWFjLm1tICovLAogCQkJCUJDNTc1MDk1MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1
cE1lbnVQcm94eU1hYy5oICovLAogCQkJCUJDNTc1MDk2MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQ
b3B1cE1lbnVQcm94eU1hYy5tbSAqLywKIAkJCQlCQzg0RUIxNzEyQTcxMDBDMDA4M0YyREEgLyog
V2ViUHJlZmVyZW5jZXNNYWMubW0gKi8sCisJCQkJQ0RDQTg1QzYxMzJBQkE0RTAwRTk2MURGIC8q
IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gKi8sCisJCQkJQ0RDQTg1QzcxMzJBQkE0
RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTM1MzcsNiArMzU0
Myw3IEBACiAJCQkJNTExQjI0QUIxMzJFMDk3MjAwMDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFEMDJGNkExMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25E
YXRhYmFzZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUQwMkY2QzEzMkVDNzM3MDBC
RUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQjg3OEI2MTUxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC00MTQ5LDYgKzQxNTYsNyBAQAogCQkJCTUxMUIyNEFBMTMyRTA5NzIwMDA2NUEw
QyAvKiBXZWJJY29uRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFEMDJGNjQxMzJF
QzVCOTAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MUQwMkY2QjEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNl
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjg3OEI2MTYxMzM0
MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUx
NjBCRkUxMTMzODFERjkwMDkxODk5OSAvKiBMb2dnaW5nLm1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKaW5kZXggZmE4NDI2YTM4ZTk0ZmJlM2Y0MTY1OTg5ZjgxNTJmM2FkNzRlNjA3
OC4uMTAwNzY0YjE2MDU5MWUzMTk4MmU2NDgxMmM2MTI3NzBhYTczYzIwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCkBAIC0xNDEsMTAgKzE0MSwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1l
dGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2lu
Z09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcm
KTsKLSNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9X
X0xFT1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6
Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
IGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLCBXZWJDb3JlOjpFZGl0b3IqKTsKKyNpZiBQ
TEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICB2
aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJ
bmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJl
cGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBs
YWNlbWVudFN0cmluZ3MpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVs
KFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwotICAgIHZpcnR1
YWwgYm9vbCBpc1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBk
aXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29y
cmVjdGlvblBhbmVsKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogI2VuZGlm
CiAgICAgV2ViUGFnZSogbV9wYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1t
CmluZGV4IDhhZjA0MzgwYzFmZmU4NGQ5NWRkMWYwODFmZWEwMjBhYTkxNjQ5OWMuLjY2ZDA0YzNh
OTFjNmYxOWI5ZjFiNmNhNDY4M2E4MzEzMGM3ODIxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0
b3JDbGllbnRNYWMubW0KQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5o
PgogI2ltcG9ydCA8V2ViS2l0L1dlYlJlc291cmNlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViTlNV
UkxFeHRyYXMuaD4KLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQo
QlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJE
KQorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKICNpbXBvcnQgPEFwcEtp
dC9OU1RleHRDaGVja2VyLmg+CiAjZW5kaWYKIApAQCAtMjQ2LDI2ICsyNDYsMjcgQEAgdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBp
bnQgbGVuZ3RoLCB1aW50NjQKICAgICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkNoZWNrVGV4dE9mUGFyYWdyYXBoKFN0cmluZyh0ZXh0LCBsZW5ndGgpLCBjaGVja2lu
Z1R5cGVzKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2hlY2tUZXh0T2ZQYXJhZ3JhcGg6OlJl
cGx5KHJlc3VsdHMpKTsKIH0KIAotI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9X
X0xFT1BBUkQpCi12b2lkIFdlYkVkaXRvckNsaWVudDo6c2hvd0NvcnJlY3Rpb25QYW5lbChXZWJD
b3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUgdHlwZSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5n
JiByZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MsIFdlYkNv
cmU6OkVkaXRvciopCisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQordm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlv
blBhbmVsSW5mbzo6UGFuZWxUeXBlIHR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91
bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJp
bmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb3Jy
ZWN0aW9uUGFuZWwodHlwZSwgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCByZXBsYWNlZFN0
cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSk7
CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNv
cmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpCit2b2lkIFdlYkVkaXRvckNs
aWVudDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5n
Q29ycmVjdGlvblBhbmVsIHJlYXNvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNtaXNzQ29ycmVjdGlvblBhbmVs
KHJlYXNvbikpOwogfQogCi1ib29sIFdlYkVkaXRvckNsaWVudDo6aXNTaG93aW5nQ29ycmVjdGlv
blBhbmVsKCkKK1N0cmluZyBXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxT
b29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIFN0cmluZyBy
ZXN1bHQ7CisgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNt
aXNzQ29ycmVjdGlvblBhbmVsU29vbihyZWFzb24pLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbjo6UmVwbHkocmVzdWx0KSk7CisgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2UoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSByZXNwb25zZVR5
cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1l
bnRTdHJpbmcpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6UmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShyZXNwb25z
ZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZykpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBk
YTc3YjBiNDk5OGM2NWFjNmZhZGYzYTllZGI2NmZhMDZlOTg5MDg4Li4xZmMwYzVmNTZkMjE5YmQw
NjQxMDBmMTA2YTZiNzI5YjJiODMwN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMTMxLDQgKzIxMzEsMTQgQEAgYm9vbCBXZWJQYWdl
OjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKICAgICByZXR1cm4gcGxhdGZvcm1DYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpOwogfQogCisj
aWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCit2
b2lkIFdlYlBhZ2U6OmhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdChjb25zdCBXVEY6OlN0cmlu
ZyYgcmVzdWx0KQoreworICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVy
bjsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdChyZXN1
bHQpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYTU3M2RlMjMyNDIyYjlhZDQ1NmM1
ZjJhYmEyNWM2NTlmYjExODgwYy4uNjY3YjY5OWM4YmQ5N2IyNjBjZTc1ZjI5MTRiZDMyYTAzMDAw
ODAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC0zNjEsNiArMzYxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERyYWdTb3VyY2UoTlNPYmpl
Y3QgKik7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdf
T05fU05PV19MRU9QQVJEKQorICAgIHZvaWQgaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KGNv
bnN0IFdURjo6U3RyaW5nJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CmluZGV4IDY0ZjdkYWZkMDg2MDI4MmY1Mzg0MTYyMzA1NDBhYTE4OWIyMTE5MjIuLjQzNWVkMTEy
NTUwMjZmYzIyY2QxOWQ4MTQ2MDIxMzNmZTY0YmNlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xOTIsNCAr
MTkyLDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgRmlu
ZFpvb21hYmxlQXJlYUZvclBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50KQogI2VuZGlmCisK
KyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkK
KyAgICBIYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQoV1RGOjpTdHJpbmcgcmVzdWx0KQorI2Vu
ZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86659</attachid>
            <date>2011-03-23 11:56:32 -0700</date>
            <delta_ts>2011-03-23 14:55:25 -0700</delta_ts>
            <desc>Patch (v6)</desc>
            <filename>bug-56055-20110323115631.patch</filename>
            <type>text/plain</type>
            <size>82554</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE3ODcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2YTI2YTg3Y2M4NGNhNTdmNzc0MmQ5
ZDBkMTU2YmY3ZjNkZjAwNDYzLi4xMTU4MTZhMTU5YjczZTYxOTBiYTgzODVlNTkxYjAwYmUzNzJi
NmEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMjMgIEppYSBQdSAgPGpwdUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SG9vayB1cCBuZXcgQXBwS2l0IGF1dG9jb3JyZWN0aW9uIFVJIHdpdGggV0syLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwNTUKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzg5NDc0NjM+CisKKyAgICAgICAgUGxlYXNlIHNlZSBXZWJDb3JlL0NoYW5n
ZUxvZyBmb3IgZGV0YWlsLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOiBF
bmFibGUgYXV0b2NvcnJlY3Rpb24gdGVzdHMgZm9yIFdLMi4KKwogMjAxMS0wMy0yMyAgQWJoaXNo
ZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
biBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Nr
aXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKaW5kZXggMTBhMTZm
YzQ0YTc3YzVjMWQwOGVjYzE2ZWQ3MmUzY2MxZjliNWE0OC4uNjRmOTM1NTM4NzdhNmE0MGJhYmZl
YzcxMTQ0MTYyZTY2OWEyY2ZkNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZApA
QCAtNTY5LDIzICs1NjksNiBAQCBwbGF0Zm9ybS9tYWMvZWRpdGluZy9kZWxldGluZy9iYWNrd2Fy
ZC1kZWxldGUuaHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNm
ZXItc2V0LWRhdGEtZmlsZS11cmwuaHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9u
L2RvdWJsZWNsaWNrLXNob3VsZC1ub3QtZXhwYW5kLWFjcm9zcy1saW5lcy5odG1sCiBwbGF0Zm9y
bS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vd29yZC10aGFpLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0
aW5nL3NwZWxsaW5nL2F1dG9jb3JyZWN0aW9uLWNvbnRyYWN0aW9uLmh0bWwKLXBsYXRmb3JtL21h
Yy9lZGl0aW5nL3NwZWxsaW5nL2F1dG9jb3JyZWN0aW9uLWRlbGV0ZS5odG1sCi1wbGF0Zm9ybS9t
YWMvZWRpdGluZy9zcGVsbGluZy9hdXRvY29ycmVjdGlvbi1yZW1vdmluZy11bmRlcmxpbmUtYWZ0
ZXItcGFzdGUuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvYXV0b2NvcnJlY3Rp
b24tcmVtb3ZpbmctdW5kZXJsaW5lLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5n
L2F1dG9jb3JyZWN0aW9uLXNpbXBsZS5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGlu
Zy9jbGljay1hdXRvY29ycmVjdGVkLXdvcmQuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3Bl
bGxpbmcvZGVsZXRlLWF1dG9jb3JyZWN0ZWQtd29yZC0xLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0
aW5nL3NwZWxsaW5nL2RlbGV0ZS1pbnRvLWF1dG9jb3JyZWN0ZWQtd29yZC5odG1sCi1wbGF0Zm9y
bS9tYWMvZWRpdGluZy9zcGVsbGluZy9kZWxldGUtaW50by1taXNzcGVsbGVkLXdvcmQuaHRtbAot
cGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy1tdWx0aXBsZS13b3Jkcy13aXRo
LW1hcmtlcnMuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy13b3Jk
LXdpdGgtbWFya2VyLTEuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGlu
Zy13b3JkLXdpdGgtbWFya2VyLTIuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcv
Zm9yd2FyZC1kZWxldGUtaW50by1hdXRvY29ycmVjdGVkLXdvcmQuaHRtbAotcGxhdGZvcm0vbWFj
L2VkaXRpbmcvc3BlbGxpbmcvbW92ZS1jdXJzb3ItYXJvdW5kLW1pc3NwZWxsZWQtd29yZC5odG1s
Ci1wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9tb3ZlLWN1cnNvci10by1hdXRvY29ycmVj
dGVkLXdvcmQuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvbW92ZS1jdXJzb3It
dG8tYmVnaW5uaW5nLW9mLWF1dG9jb3JyZWN0ZWQtd29yZC5odG1sCi1wbGF0Zm9ybS9tYWMvZWRp
dGluZy9zcGVsbGluZy9yZW1vdmluZy11bmRlcmxpbmUtYWZ0ZXItYWNjZXB0aW5nLWF1dG9jb3Jy
ZWN0aW9uLXVzaW5nLXB1bmN0dWF0aW9uLmh0bWwKIHBsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lu
cHV0LWFwcGVhcmFuY2Utc3BpbmJ1dHRvbi11cC5odG1sCiBwbGF0Zm9ybS9tYWMvZmFzdC9mb3Jt
cy9pbnB1dC1udW1iZXItY2xpY2suaHRtbAogcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvbGlzdGJv
eC1zY3JvbGxiYXItaGl0LXRlc3QuaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFkYTQ3NTNmZmNjM2I2NWM5
NDY0Njg1MzVkM2YxYzY3OGFhOWU4ZGQuLjI5NmEwYjBiZGM0NGEzYzYyN2I2Nzg1MTYxY2ZjMWE1
OWQ2ODQ2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMS0wMy0yMyAgSmlhIFB1
ICA8anB1QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBIb29rIHVwIG5ldyBBcHBLaXQgYXV0b2NvcnJlY3Rpb24gVUkgd2l0aCBXSzIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA1NQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vODk0NzQ2Mz4KKworICAgICAgICBUaGlzIHBhdGNoIGlz
IHRvIGVuYWJsZSBXSzIgdG8gdXRpbGl6ZSBhdXRvY29ycmVjdGlvbiBVSSBvbiBNYWMgT1MgWC4g
SXQgY29udGFpbnMgZm9sbG93aW5nCisgICAgICAgIG1ham9yIGNoYW5nZXM6CisKKyAgICAgICAg
MS4gQWxsIGJ1dCBvbmUgYXV0b2NvcnJlY3Rpb24gcmVsYXRlZCBtZXNzYWdlIGlzIHN5bmNocm9u
b3VzLiBTaW5jZSBkaXNtaXNzaW5nIGF1dG9jb3JyZWN0aW9uCisgICAgICAgIHBhbmVsIGNhbiBw
b3RlbnRpYWxseSBjYXVzZSBlZGl0aW5nIHRvIG9jY3VyLCBhIHN5bmNocm9ub3VzIGRpc21pc3ND
b3JyZWN0aW9uUGFuZWxTb29uKCkgZnVuY3Rpb24KKyAgICAgICAgaXMgaW50cm9kdWNlZCB0byBl
bnN1cmUgYWxsIGVkaXRpbmcgY29tbWFuZHMgb2NjdXIgaW4gY29ycmVjdCBvcmRlci4KKworICAg
ICAgICAyLiBBZGRpdGlvbmFsIGNvbmRpdGlvbiB2YXJpYWJsZSBpcyBuZWVkZWQgdG8gaW1wbGVt
ZW50IGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKCkuCisgICAgICAgIFRvIGltcHJvdmUgbWFp
bnRhaW5hYmlsaXR5LCBDb3JyZWN0aW9uUGFuZWwgY2xhc3MgaXMgaW50cm9kdWNlZCB0byBtYW5h
Z2UgdGhlCisgICAgICAgIGludGVybmFsIHN0YXRlIHJlbGF0ZWQgdG8gY29ycmVjdGlvbiBwYW5l
bC4gVGhpcyBjaGFuZ2UgaXMgYXBwbGllZCB0byBib3RoIFdLMSBhbmQgV0syLgorCisgICAgICAg
IDMuIEVkaXRvckNsaWVudDo6aXNTaG93aW5nQ29ycmVjdGlvblBhbmVsKCkgaGFzIGJlZW4gcmVt
b3ZlZC4gVGhlIG9yaWdpbmFsIHB1cnBvc2UgaXMgdG8gYWxsb3cKKyAgICAgICAgZWRpdG9yIHRv
IGtub3cgd2hlbiB0byBoYW5kbGUgRVNDIGtleSBldmVudC4gTm93IHRoaXMgaXMgaGFuZGxlZCBp
bnRlcm5hbGx5IGluIEFwcEtpdCwgc28KKyAgICAgICAgRWRpdG9yQ2xpZW50Ojppc1Nob3dpbmdD
b3JyZWN0aW9uUGFuZWwoKSBpc24ndCBuZWNlc3NhcnkgYW55bW9yZS4KKworICAgICAgICA0LiBU
aGUgRWRpdG9yKiBhcmd1bWVudCBpbiBFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwo
KSBoYXMgYmVlbiByZW1vdmVkLCBzaW5jZSB3ZSBjYW4KKyAgICAgICAgYWNjZXNzIG9iamVjdCB2
aWEgV2ViVmlldyBvciBXS1ZpZXcuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFySW5SYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjb3JyZWN0aW9uUGFu
ZWxUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRpc21pc3NDb3JyZWN0aW9uUGFu
ZWxTb29uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlBdXRvY29ycmVjdGlvbkJl
Zm9yZVR5cGluZ0lmQXBwcm9wcmlhdGUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUNvbW1hbmRNYXApOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVtcHR5RWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVtcHR5RWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVs
U29vbik6CisgICAgICAgICogbWFudWFsLXRlc3RzL2F1dG9jb3JyZWN0aW9uL2Nsb3NlLXdpbmRv
dy13aGVuLWNvcnJlY3Rpb24taXMtc2hvd24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGFnZS9F
ZGl0b3JDbGllbnQuaDoKKwogMjAxMS0wMy0yMyAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAppbmRleCA4ODA3OTY1MDY4YTQzOTEwYTlhZDkzNjUxZTE0NjJlY2M4ZTljZjlh
Li5iOGM5NWNjZTU4YWM1N2FjMWQ5OTk3NmY0ZGY4NmE2YzhjYmUwZjI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCkBAIC0yMDcyLDcgKzIwNzIsNyBAQCB2b2lkIEVkaXRvcjo6bWFya01p
c3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmd29yZFN0
YXJ0LAogICAgICAgICAgICAgZG9BcHBseUNvcnJlY3Rpb24gPSBmYWxzZTsKICAgICB9CiAgICAg
aWYgKGRvQXBwbHlDb3JyZWN0aW9uKQotICAgICAgICBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJl
YXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxBY2NlcHRlZCk7CisgICAgICAgIGhhbmRs
ZUNvcnJlY3Rpb25QYW5lbFJlc3VsdChkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihSZWFzb25G
b3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsQWNjZXB0ZWQpKTsKICAgICBlbHNlCiAgICAgICAg
IG1fY29ycmVjdGlvblBhbmVsSW5mby5yYW5nZVRvQmVSZXBsYWNlZC5jbGVhcigpOwogI2Vsc2UK
QEAgLTIzODcsNyArMjM4Nyw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5k
QmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoCiAgICAgICAgICAg
ICAgICAgICAgIG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNlZFN0cmluZyA9IHBsYWluVGV4
dChyYW5nZVRvUmVwbGFjZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fY29ycmVjdGlv
blBhbmVsSW5mby5yZXBsYWNlbWVudFN0cmluZyA9IHJlc3VsdC0+cmVwbGFjZW1lbnQ7CiAgICAg
ICAgICAgICAgICAgICAgIG1fY29ycmVjdGlvblBhbmVsSW5mby5pc0FjdGl2ZSA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgIGNsaWVudCgpLT5zaG93Q29ycmVjdGlvblBhbmVsKG1fY29ycmVj
dGlvblBhbmVsSW5mby5wYW5lbFR5cGUsIGJvdW5kaW5nQm94LCBtX2NvcnJlY3Rpb25QYW5lbElu
Zm8ucmVwbGFjZWRTdHJpbmcsIHJlc3VsdC0+cmVwbGFjZW1lbnQsIFZlY3RvcjxTdHJpbmc+KCks
IHRoaXMpOworICAgICAgICAgICAgICAgICAgICBjbGllbnQoKS0+c2hvd0NvcnJlY3Rpb25QYW5l
bChtX2NvcnJlY3Rpb25QYW5lbEluZm8ucGFuZWxUeXBlLCBib3VuZGluZ0JveCwgbV9jb3JyZWN0
aW9uUGFuZWxJbmZvLnJlcGxhY2VkU3RyaW5nLCByZXN1bHQtPnJlcGxhY2VtZW50LCBWZWN0b3I8
U3RyaW5nPigpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZvciBzaG93
aW5nIGNvcnJlY3Rpb24gcGFuZWwsIHdlIGlnbm9yZSBvdGhlciBjb3JyZWN0aW9uIG9yIHJlcGxh
Y2VtZW50LgpAQCAtMjUxNyw3ICsyNTE3LDcgQEAgdm9pZCBFZGl0b3I6OmNvcnJlY3Rpb25QYW5l
bFRpbWVyRmlyZWQoVGltZXI8RWRpdG9yPiopCiAgICAgICAgIG1fY29ycmVjdGlvblBhbmVsSW5m
by5yZXBsYWNlZFN0cmluZyA9IHBsYWluVGV4dChtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmFuZ2VU
b0JlUmVwbGFjZWQuZ2V0KCkpOwogICAgICAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3ggPSB3aW5k
b3dSZWN0Rm9yUmFuZ2UobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJhbmdlVG9CZVJlcGxhY2VkLmdl
dCgpKTsKICAgICAgICAgaWYgKCFib3VuZGluZ0JveC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBj
bGllbnQoKS0+c2hvd0NvcnJlY3Rpb25QYW5lbChtX2NvcnJlY3Rpb25QYW5lbEluZm8ucGFuZWxU
eXBlLCBib3VuZGluZ0JveCwgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJlcGxhY2VkU3RyaW5nLCBt
X2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZW1lbnRTdHJpbmcsIFZlY3RvcjxTdHJpbmc+KCks
IHRoaXMpOworICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFuZWwobV9jb3Jy
ZWN0aW9uUGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3gsIG1fY29ycmVjdGlvblBhbmVs
SW5mby5yZXBsYWNlZFN0cmluZywgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJlcGxhY2VtZW50U3Ry
aW5nLCBWZWN0b3I8U3RyaW5nPigpKTsKICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlU3BlbGxpbmdTdWdnZXN0aW9uczogewpAQCAt
MjUzNSw3ICsyNTM1LDcgQEAgdm9pZCBFZGl0b3I6OmNvcnJlY3Rpb25QYW5lbFRpbWVyRmlyZWQo
VGltZXI8RWRpdG9yPiopCiAgICAgICAgIG1fY29ycmVjdGlvblBhbmVsSW5mby5pc0FjdGl2ZSA9
IHRydWU7CiAgICAgICAgIEZsb2F0UmVjdCBib3VuZGluZ0JveCA9IHdpbmRvd1JlY3RGb3JSYW5n
ZShtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmFuZ2VUb0JlUmVwbGFjZWQuZ2V0KCkpOwogICAgICAg
ICBpZiAoIWJvdW5kaW5nQm94LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNsaWVudCgpLT5zaG93
Q29ycmVjdGlvblBhbmVsKG1fY29ycmVjdGlvblBhbmVsSW5mby5wYW5lbFR5cGUsIGJvdW5kaW5n
Qm94LCBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRTdHJpbmcsIHRvcFN1Z2dlc3Rpb24s
IHN1Z2dlc3Rpb25zLCB0aGlzKTsKKyAgICAgICAgICAgIGNsaWVudCgpLT5zaG93Q29ycmVjdGlv
blBhbmVsKG1fY29ycmVjdGlvblBhbmVsSW5mby5wYW5lbFR5cGUsIGJvdW5kaW5nQm94LCBtX2Nv
cnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRTdHJpbmcsIHRvcFN1Z2dlc3Rpb24sIHN1Z2dlc3Rp
b25zKTsKICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTI2MDEsMzkgKzI2MDEsMzYg
QEAgdm9pZCBFZGl0b3I6OnN0b3BDb3JyZWN0aW9uUGFuZWxUaW1lcigpCiAjZW5kaWYKIH0KIAot
dm9pZCBFZGl0b3I6OmhhbmRsZUNhbmNlbE9wZXJhdGlvbigpCit2b2lkIEVkaXRvcjo6ZGlzbWlz
c0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNv
bkZvckRpc21pc3NpbmcpCiB7CiAjaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTAogICAg
IGlmICghbV9jb3JyZWN0aW9uUGFuZWxJbmZvLmlzQWN0aXZlKQogICAgICAgICByZXR1cm47CiAg
ICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLmlzQWN0aXZlID0gZmFsc2U7CisgICAgbV9jb3JyZWN0
aW9uUGFuZWxJc0Rpc21pc3NlZEJ5RWRpdG9yID0gdHJ1ZTsKICAgICBpZiAoY2xpZW50KCkpCi0g
ICAgICAgIGNsaWVudCgpLT5kaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3Np
bmdDb3JyZWN0aW9uUGFuZWxDYW5jZWxsZWQpOwotI2VuZGlmCi19Ci0KLWJvb2wgRWRpdG9yOjpp
c1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwoKQotewotI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05f
UEFORUwKLSAgICBpZiAoY2xpZW50KCkpCi0gICAgICAgIHJldHVybiBjbGllbnQoKS0+aXNTaG93
aW5nQ29ycmVjdGlvblBhbmVsKCk7CisgICAgICAgIGNsaWVudCgpLT5kaXNtaXNzQ29ycmVjdGlv
blBhbmVsKHJlYXNvbkZvckRpc21pc3NpbmcpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVh
c29uRm9yRGlzbWlzc2luZyk7CiAjZW5kaWYKLSAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQg
RWRpdG9yOjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0
aW9uUGFuZWwgcmVhc29uRm9yRGlzbWlzc2luZykKK1N0cmluZyBFZGl0b3I6OmRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWxTb29uKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29u
Rm9yRGlzbWlzc2luZykKIHsKICNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCiAgICAg
aWYgKCFtX2NvcnJlY3Rpb25QYW5lbEluZm8uaXNBY3RpdmUpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIG1fY29ycmVjdGlvblBhbmVsSW5mby5pc0FjdGl2
ZSA9IGZhbHNlOwogICAgIG1fY29ycmVjdGlvblBhbmVsSXNEaXNtaXNzZWRCeUVkaXRvciA9IHRy
dWU7Ci0gICAgaWYgKGNsaWVudCgpKQotICAgICAgICBjbGllbnQoKS0+ZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbChyZWFzb25Gb3JEaXNtaXNzaW5nKTsKKyAgICBpZiAoIWNsaWVudCgpKQorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIGNsaWVudCgpLT5kaXNtaXNzQ29ycmVjdGlv
blBhbmVsU29vbihyZWFzb25Gb3JEaXNtaXNzaW5nKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KHJlYXNvbkZvckRpc21pc3NpbmcpOworICAgIHJldHVybiBTdHJpbmcoKTsKICNlbmRpZgogfQor
CiB2b2lkIEVkaXRvcjo6cmVtb3ZlU3BlbGxBbmRDb3JyZWN0aW9uTWFya2Vyc0Zyb21Xb3Jkc1Rv
QmVFZGl0ZWQoYm9vbCBkb05vdFJlbW92ZUlmU2VsZWN0aW9uQXRXb3JkQm91bmRhcnkpCiB7CiAg
ICAgLy8gV2Ugd2FudCB0byByZW1vdmUgdGhlIG1hcmtlcnMgZnJvbSBhIHdvcmQgaWYgYW4gZWRp
dGluZyBjb21tYW5kIHdpbGwgY2hhbmdlIHRoZSB3b3JkLiBUaGlzIGNhbiBoYXBwZW4gaW4gb25l
IG9mCkBAIC0yNzY4LDcgKzI3NjUsNyBAQCBib29sIEVkaXRvcjo6YXBwbHlBdXRvY29ycmVjdGlv
bkJlZm9yZVR5cGluZ0lmQXBwcm9wcmlhdGUoKQogICAgIFBvc2l0aW9uIGNhcmV0UG9zaXRpb24g
PSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuc3RhcnQoKTsKIAogICAgIGlmICht
X2NvcnJlY3Rpb25QYW5lbEluZm8ucmFuZ2VUb0JlUmVwbGFjZWQtPmVuZFBvc2l0aW9uKCkgPT0g
Y2FyZXRQb3NpdGlvbikgewotICAgICAgICBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZv
ckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxBY2NlcHRlZCk7CisgICAgICAgIGhhbmRsZUNvcnJl
Y3Rpb25QYW5lbFJlc3VsdChkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihSZWFzb25Gb3JEaXNt
aXNzaW5nQ29ycmVjdGlvblBhbmVsQWNjZXB0ZWQpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfSAKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGUxYTcxMTkyNDVlODNiZWQx
MGQ3M2QyMDVlZmUyMTU0MDg1YzU2OWUuLjVmYjQ4YzVkMDU2YzU1MDlkN2RiMmM1MzM3YjlmZGMz
ODhjYjU5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMzIwLDExICszMjAsOSBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGFkZFRvS2lsbFJpbmcoUmFuZ2UqLCBib29sIHByZXBlbmQpOwog
Ci0gICAgdm9pZCBoYW5kbGVDYW5jZWxPcGVyYXRpb24oKTsKICAgICB2b2lkIHN0YXJ0Q29ycmVj
dGlvblBhbmVsVGltZXIoQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlKTsKICAgICAvLyBJ
ZiB1c2VyIGNvbmZpcm1lZCBhIGNvcnJlY3Rpb24gaW4gdGhlIGNvcnJlY3Rpb24gcGFuZWwsIGNv
cnJlY3Rpb24gaGFzIG5vbi16ZXJvIGxlbmd0aCwgb3RoZXJ3aXNlIGl0IG1lYW5zIHRoYXQgdXNl
ciBoYXMgZGlzbWlzc2VkIHRoZSBwYW5lbC4KICAgICB2b2lkIGhhbmRsZUNvcnJlY3Rpb25QYW5l
bFJlc3VsdChjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24pOwotICAgIGJvb2wgaXNTaG93aW5nQ29y
cmVjdGlvblBhbmVsKCk7CiAKICAgICB2b2lkIHBhc3RlQXNGcmFnbWVudChQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+LCBib29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0eWxlKTsKICAg
ICB2b2lkIHBhc3RlQXNQbGFpblRleHQoY29uc3QgU3RyaW5nJiwgYm9vbCBzbWFydFJlcGxhY2Up
OwpAQCAtNDI1LDYgKzQyMyw3IEBAIHByaXZhdGU6CiAgICAgTm9kZSogZmluZEV2ZW50VGFyZ2V0
RnJvbVNlbGVjdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc3RvcENvcnJlY3Rpb25QYW5lbFRpbWVy
KCk7CiAgICAgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdD
b3JyZWN0aW9uUGFuZWwpOworICAgIFN0cmluZyBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihS
ZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKICAgICB2b2lkIGFwcGx5Q29ycmVj
dGlvblBhbmVsSW5mbyhjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBt
YXJrZXJUeXBlc1RvQWRkKTsKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBjb3JyZWN0aW9uIHdhcyBh
cHBsaWVkLCBmYWxzZSBvdGhlcndpc2UuCiAgICAgYm9vbCBhcHBseUF1dG9jb3JyZWN0aW9uQmVm
b3JlVHlwaW5nSWZBcHByb3ByaWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKaW5kZXggNmVhOTk1NGQ5NWQ2NDdkYTdmYzNiYWVmODczYjIxZTZjN2FjMDE3NC4u
OWVhZmQxOGI1MjJkMmJmYzYzYjEyZjJhODg1MmZkODdiM2U1N2M4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0xMDkxLDE0ICsxMDkxLDYgQEAgc3RhdGlj
IGJvb2wgZXhlY3V0ZVlhbmtBbmRTZWxlY3QoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIFNVUFBPUlRfQVVU
T0NPUlJFQ1RJT05fUEFORUwKLXN0YXRpYyBib29sIGV4ZWN1dGVDYW5jZWxPcGVyYXRpb24oRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCi17
Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5oYW5kbGVDYW5jZWxPcGVyYXRpb24oKTsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLSNlbmRpZgotCiAvLyBTdXBwb3J0ZWQgZnVuY3Rpb25zCiAKIHN0YXRpYyBi
b29sIHN1cHBvcnRlZChGcmFtZSopCkBAIC0xMjQ5LDEzICsxMjQxLDYgQEAgc3RhdGljIGJvb2wg
ZW5hYmxlZFVuZG8oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCiAg
ICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuVW5kbygpOwogfQogCi0jaWYgU1VQUE9SVF9B
VVRPQ09SUkVDVElPTl9QQU5FTAotc3RhdGljIGJvb2wgZW5hYmxlZERpc21pc3NDb3JyZWN0aW9u
UGFuZWwoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCi17Ci0gICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+aXNTaG93aW5nQ29ycmVjdGlvblBhbmVsKCk7Ci19Ci0j
ZW5kaWYKLQogLy8gU3RhdGUgZnVuY3Rpb25zCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZU5vbmUo
RnJhbWUqLCBFdmVudCopCkBAIC0xNTMyLDEwICsxNTE3LDYgQEAgc3RhdGljIGNvbnN0IENvbW1h
bmRNYXAmIGNyZWF0ZUNvbW1hbmRNYXAoKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgeyAi
VGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uIiwgeyBleGVjdXRlVGFrZUZpbmRTdHJpbmdGcm9t
U2VsZWN0aW9uLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZFRha2VGaW5k
U3RyaW5nRnJvbVNlbGVjdGlvbiwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRp
b24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAogI2VuZGlmCi0KLSNpZiBT
VVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCi0gICAgICAgIHsgIkNhbmNlbE9wZXJhdGlvbiIs
IHsgZXhlY3V0ZUNhbmNlbE9wZXJhdGlvbiwgc3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcs
IGVuYWJsZWREaXNtaXNzQ29ycmVjdGlvblBhbmVsLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90
VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCi0jZW5k
aWYKICAgICB9OwogCiAgICAgLy8gVGhlc2UgdW5zdXBwb3J0ZWQgY29tbWFuZHMgYXJlIGxpc3Rl
ZCBoZXJlIHNpbmNlIHRoZXkgYXBwZWFyIGluIHRoZSBNaWNyb3NvZnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaAppbmRleCBlZDkyZjExMmNiYTg3N2ZkNTJjMzQ2NDA3ZjViNGZmZTI2
MTIwZjZjLi4zYjBhZDJlN2FkNjRiNzA5NTkzYzhkMTNmMzA0MThkY2NlNTFmMGEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC01MTEsOSArNTExLDkgQEAgcHVibGljOgog
ICAgIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuICZtX3RleHRDaGVj
a2VyQ2xpZW50OyB9CiAKICNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCi0gICAgdmly
dHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxU
eXBlLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIEVkaXRvciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29y
cmVjdGlvblBhbmVsKENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JE
aXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTaG93aW5n
Q29ycmVjdGlvblBhbmVsKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBk
aXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBh
bmVsKSB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29y
cmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmKSB7IH0KICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVs
bGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgR3JhbW1hckRldGFp
bCYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL2F1dG9jb3Jy
ZWN0aW9uL2Nsb3NlLXdpbmRvdy13aGVuLWNvcnJlY3Rpb24taXMtc2hvd24uaHRtbCBiL1NvdXJj
ZS9XZWJDb3JlL21hbnVhbC10ZXN0cy9hdXRvY29ycmVjdGlvbi9jbG9zZS13aW5kb3ctd2hlbi1j
b3JyZWN0aW9uLWlzLXNob3duLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM4MmEyMGY1ODE1ZjdhMzdjOWU1
OTRjYTc3ZmY2MjA5YTA1NDhiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21h
bnVhbC10ZXN0cy9hdXRvY29ycmVjdGlvbi9jbG9zZS13aW5kb3ctd2hlbi1jb3JyZWN0aW9uLWlz
LXNob3duLmh0bWwKQEAgLTAsMCArMSw0OCBAQAorPGh0bWw+Cis8aGVhZD4KKworPHN0eWxlPgor
LmVkaXRpbmcgeworICAgIGJvcmRlcjogMnB4IHNvbGlkIHJlZDsKKyAgICBwYWRkaW5nOiAxMnB4
OworICAgIGZvbnQtc2l6ZTogMjRweDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0uLi8uLi8u
Li8uLi9MYXlvdXRUZXN0cy9lZGl0aW5nL2VkaXRpbmcuanMgbGFuZ3VhZ2U9IkphdmFTY3JpcHQi
IHR5cGU9InRleHQvSmF2YVNjcmlwdCIgPjwvc2NyaXB0PgorCis8c2NyaXB0PgorZnVuY3Rpb24g
ZWRpdGluZ1Rlc3QoKSB7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ3QnKTsKKyAgICB0eXBl
Q2hhcmFjdGVyQ29tbWFuZCgnaCcpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdlJyk7Cisg
ICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJyAnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgn
bScpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdlJyk7CisgICAgdHlwZUNoYXJhY3RlckNv
bW1hbmQoJ3MnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnYScpOworICAgIHR5cGVDaGFy
YWN0ZXJDb21tYW5kKCdlJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2cnKTsKKyAgICB0
eXBlQ2hhcmFjdGVyQ29tbWFuZCgnZScpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdlJyk7
CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJyAnKTsKKyAgICBleGVjTW92ZVNlbGVjdGlvbkJh
Y2t3YXJkQnlDaGFyYWN0ZXJDb21tYW5kKCk7Cit9CisKKzwvc2NyaXB0PgorCis8dGl0bGU+VGVz
dGluZyBjbG9zaW5nIHdpbmRvdyB3aGVuIGNvcnJlY3Rpb24gc3VnZ2VzdGlvbiBpcyBzaG93bjwv
dGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+PHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQg
d2hlbiBjb3JyZWN0aW9uIHN1Z2dlc3Rpb24gaXMgdmlzaWJsZSwgY2xvc2luZyB3aW5kb3cgZG9l
c24ndCBoYW5nIG9yIGNyYXNoLjwvcD4KKzxwPkFmdGVyIHNlZWluZyB0aGUgcGFuZWwgd2l0aCBt
dWx0aXBsZSBjYW5kaWRhdGVzLCBjbG9zZSB0aGUgd2luZG93LjwvcD4KKzxkaXYgY29udGVudGVk
aXRhYmxlIGlkPSJyb290IiBjbGFzcz0iZWRpdGluZyI+Cis8c3BhbiBpZD0idGVzdCI+PC9zcGFu
PgorPC9kaXY+CisKKworPHNjcmlwdD4KK3J1bkVkaXRpbmdUZXN0KCk7Cis8L3NjcmlwdD4KKwor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggZDVkZTZh
NDEwMmNiZDI3NjhkYWM5ZGEzZjVmMWFkOWVjZjgwM2Q1MC4uYWVkYTg0NDU4OGNhNmVmNTVmMDY4
MjM0Mjg1MzcwMzU5YzdhYTUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0x
NTgsMTQgKzE1OCwxNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50
KiB0ZXh0Q2hlY2tlcigpID0gMDsKIAotI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwK
ICAgICBlbnVtIEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHsKICAgICAgICAgQXV0b2NvcnJl
Y3Rpb25FZGl0ZWQsCiAgICAgICAgIEF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQKICAgICB9OwotICAg
IHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKENvcnJlY3Rpb25QYW5lbEluZm86OlBh
bmVsVHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjbWVudFN0cmlu
ZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLCBF
ZGl0b3IqKSA9IDA7CisKKyNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCisgICAgdmly
dHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxU
eXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNtZW50U3RyaW5nLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNz
aW5nQ29ycmVjdGlvblBhbmVsKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzU2hvd2luZ0NvcnJl
Y3Rpb25QYW5lbCgpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQ29ycmVjdGlvblBh
bmVsU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNw
b25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnRTdHJpbmcpID0gMDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAzZTE4MTY1ZDg0NmU1
NzI3NTI1OGFiNDQ5MTI5YzlmMmI2NGFkYjYuLmM3MDRjZTU1MjhjZGU4ZGZhYmJhZTNlNmY0M2Rm
OWEzZDYzNWM1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMjMgIEppYSBQ
dSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSG9vayB1cCBuZXcgQXBwS2l0IGF1dG9jb3JyZWN0aW9uIFVJIHdpdGggV0sy
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwNTUK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg5NDc0NjM+CisKKyAgICAgICAgUGxlYXNlIHNlZSBX
ZWJDb3JlL0NoYW5nZUxvZyBmb3IgZGV0YWlsLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTEtMDMtMTcgIEplZmYgTWlsbGVyICA8amVmZm1AYXBw
bGUuY29tPgogCiAgICAgICAgIFVzZSBhIGNvbnNpc3RlbnQgc2V0IG9mIGZpbGUgcGF0dGVybnMg
aW4gdGhlIHN2bjppZ25vcmUgcHJvcGVydHkgZm9yIGFsbCAueGNvZGVwcm9qIGRpcmVjdG9yaWVz
LCBzcGVjaWZpY2FsbHk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAyMGMxNTZmNzk3ZGI5NDAyMjg0YTBkMjU1OTVkY2ViOTQ2YThmNGQz
Li4wNmE1NTY2Mjc0OTg3ODhiNGE1ZTk2MDBiZjMwNjFlNTVhNGYzYzEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM0NCw2ICszNDQs
OCBAQAogCQlCNkNFNUMyNTEwMEJDNUY1MDAyMTk5MzYgLyogV2ViQXBwbGljYXRpb25DYWNoZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjY4MDQ5NzEw
RkZCQ0VDMTAwOUY3RjYyIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCODA0MTc2RjEyMTdBODMxMDA0NjZC
QUUgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEI4MDQxNzZEMTIxN0E4MzEwMDQ2NkJBRSAvKiBXZWJJbnNwZWN0
b3JGcm9udGVuZC5oICovOyB9OwogCQlCODA0MTc3MDEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5z
cGVjdG9yRnJvbnRlbmQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCODA0MTc2RTEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmQu
bW0gKi87IH07CisJCUI4Mjk1OEQzMTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4Mjk1OEQx
MTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAqLzsgfTsKKwkJQjgyOTU4RDQx
MzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4Mjk1OEQyMTMyNzA3RDAwMDBEMEU3OSAvKiBD
b3JyZWN0aW9uUGFuZWwubW0gKi87IH07CiAJCUJDMjZDNjlFMTBCNzQzRjQwMEI2ODdFRCAvKiBX
ZWJTZXJpYWxpemVkSlNWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMyNkM2OUQxMEI3NDNGNDAwQjY4N0VEIC8qIFdlYlNlcmlhbGl6ZWRKU1Zh
bHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QkMyNkM2QTUxMEI3NDQ3QTAwQjY4N0VEIC8qIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNkM2QTQxMEI3NDQ3
QTAwQjY4N0VEIC8qIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlLm1tICovOyB9OwogCQlCQzJFNDY0RDBG
RDhBOTY4MDBBOUQ5REUgLyogV2ViVmlld0RhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkU0NjRCMEZEOEE5NjgwMEE5RDlERSAvKiBXZWJWaWV3
RGF0YS5oICovOyB9OwpAQCAtNjYwLDYgKzY2Miw4IEBACiAJCUI2ODA0OTcyMEZGQkNFQzEwMDlG
N0Y2MiAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViQXBwbGljYXRpb25DYWNoZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQjgwNDE3NkQxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250
ZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvckZyb250
ZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4MDQxNzZFMTIxN0E4MzEwMDQ2
NkJBRSAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3RvckZyb250ZW5kLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCODI5NThEMTEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcnJlY3Rpb25QYW5lbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCODI5NThEMjEzMjcwN0QwMDAwRDBFNzkgLyog
Q29ycmVjdGlvblBhbmVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQ29ycmVjdGlvblBhbmVsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI2
QzY5RDEwQjc0M0Y0MDBCNjg3RUQgLyogV2ViU2VyaWFsaXplZEpTVmFsdWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2VyaWFsaXplZEpTVmFsdWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyNkM2QTQxMEI3NDQ3QTAwQjY4N0VEIC8qIFdlYlNlcmlh
bGl6ZWRKU1ZhbHVlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViU2VyaWFsaXplZEpTVmFsdWUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
MkU0NjRCMEZEOEE5NjgwMEE5RDlERSAvKiBXZWJWaWV3RGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJWaWV3RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTI5NSw2ICsxMjk5LDggQEAKIAkJRjVCMzZCNDAwMjgxREU4NzAxODYzNUNCIC8qIFdl
YkNvcmVTdXBwb3J0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlCODI5NThEMTEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLmggKi8sCisJ
CQkJQjgyOTU4RDIxMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAqLywKIAkJ
CQk1OThBRDkxRDEyMDFDRUNGMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQu
bW0gKi8sCiAJCQkJNTk4QUQ5MTkxMjAxQ0VDOTAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50LmggKi8sCiAJCQkJQjY4MDQ5NzEwRkZCQ0VDMTAwOUY3RjYyIC8qIFdlYkFwcGxp
Y2F0aW9uQ2FjaGUuaCAqLywKQEAgLTE2NDUsNiArMTY1MSw3IEBACiAJCQkJM0FFMTVENTAxMkRC
REVENDAwOTMyM0M4IC8qIFdlYlN0b3JhZ2VNYW5hZ2VySW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTNBQkIzQzdBMTMwOUMzQjUwMEU5M0Q5NCAvKiBXZWJTdG9yYWdlVHJhY2tlckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MkQzMjQxMzFFRDFFMDAwNzVGQTRCIC8qIFdlYkxv
Y2FsaXphYmxlU3RyaW5nc0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlCODI5NThEMzEz
MjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLmggaW4gSGVhZGVycyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIw
MTUsNiArMjAyMiw3IEBACiAJCQkJQ0RBNjJBRTMxMjVGODdDMjAwN0ZEMTE4IC8qIFdlYkZ1bGxT
Y3JlZW5Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJM0FCQjNDN0IxMzA5QzNCNTAw
RTkzRDk0IC8qIFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM0MkQzNEQxMzFFRDM4ODAwNzVGQTRCIC8qIFdlYkxvY2FsaXphYmxlU3RyaW5nc0ludGVybmFs
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQjgyOTU4RDQxMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJl
Y3Rpb25QYW5lbC5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDMwYjUzZWEx
YjliNzU3MTkzZTMzOTBlYzhiMzQwNzY4OWY1MzQ3ZWQuLmVlZmYyYWEyNWMxZGEwMGIyNzkyZjgw
OTY1NWU2Y2NhMjk2ZTc1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAx
MS0wMy0yMyAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIb29rIHVwIG5ldyBBcHBLaXQgYXV0b2NvcnJlY3Rp
b24gVUkgd2l0aCBXSzIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjA1NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODk0NzQ2Mz4KKworICAgICAg
ICBQbGVhc2Ugc2VlIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBkZXRhaWwuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwuaDogQWRkZWQuCisgICAgICAgIChDb3JyZWN0
aW9uUGFuZWw6OmlzU2hvd2luZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlv
blBhbmVsLm1tOiBBZGRlZC4KKyAgICAgICAgKGNvcnJlY3Rpb25CdWJibGVUeXBlKToKKyAgICAg
ICAgKENvcnJlY3Rpb25QYW5lbDo6Q29ycmVjdGlvblBhbmVsKToKKyAgICAgICAgKENvcnJlY3Rp
b25QYW5lbDo6fkNvcnJlY3Rpb25QYW5lbCk6CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6OnNo
b3cpOgorICAgICAgICAoQ29ycmVjdGlvblBhbmVsOjpkaXNtaXNzKToKKyAgICAgICAgKENvcnJl
Y3Rpb25QYW5lbDo6ZGlzbWlzc1Nvb24pOgorICAgICAgICAoQ29ycmVjdGlvblBhbmVsOjpkaXNt
aXNzSW50ZXJuYWwpOgorICAgICAgICAoQ29ycmVjdGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVj
dGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAg
IChXZWJFZGl0b3JDbGllbnQ6OldlYkVkaXRvckNsaWVudCk6CisgICAgICAgIChXZWJFZGl0b3JD
bGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojpk
aXNtaXNzQ29ycmVjdGlvblBhbmVsKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6ZGlzbWlz
c0NvcnJlY3Rpb25QYW5lbFNvb24pOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpyZWNvcmRB
dXRvY29ycmVjdGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1dlYlZpZXcgaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0Ol0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxMS0wMy0yMiAgQW50b24gRCdBdXJp
YSAgPGFkYXVyaWFAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9z
a3VyeWFrb3YuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9D
b3JyZWN0aW9uUGFuZWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJl
Y3Rpb25QYW5lbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhZGI3OWYyMzZhOGU3YjY4ZjNhZWIyYTM1NDViM2Fj
N2I1ZTZjZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9Db3JyZWN0aW9uUGFuZWwuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBDb3JyZWN0aW9uUGFuZWxfaAorI2RlZmluZSBDb3JyZWN0aW9uUGFuZWxfaAorCisjaWYg
IWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BB
UkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyNpbXBvcnQgPEFwcEtp
dC9OU1RleHRDaGVja2VyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NvcnJlY3Rpb25QYW5lbEluZm8u
aD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworQGNsYXNzIFdlYlZpZXc7CisKK2NsYXNz
IENvcnJlY3Rpb25QYW5lbCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29ycmVjdGlvblBh
bmVsKTsKK3B1YmxpYzoKKyAgICBDb3JyZWN0aW9uUGFuZWwoKTsKKyAgICB+Q29ycmVjdGlvblBh
bmVsKCk7CisgICAgdm9pZCBzaG93KFdlYlZpZXcqLCBXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJ
bmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJl
cGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBs
YWNlbWVudFN0cmluZ3MpOworICAgIHZvaWQgZGlzbWlzcyhXZWJDb3JlOjpSZWFzb25Gb3JEaXNt
aXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKKyAgICBTdHJpbmcgZGlzbWlzc1Nvb24oV2ViQ29yZTo6
UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7CisgICAgc3RhdGljIHZvaWQgcmVj
b3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShXZWJWaWV3KiwgTlNDb3JyZWN0aW9uUmVzcG9uc2Us
IGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRT
dHJpbmcpOworCitwcml2YXRlOgorICAgIGJvb2wgaXNTaG93aW5nKCkgY29uc3QgeyByZXR1cm4g
bV92aWV3OyB9CisgICAgdm9pZCBkaXNtaXNzSW50ZXJuYWwoV2ViQ29yZTo6UmVhc29uRm9yRGlz
bWlzc2luZ0NvcnJlY3Rpb25QYW5lbCwgYm9vbCBkaXNtaXNzaW5nRXh0ZXJuYWxseSk7CisgICAg
dm9pZCBoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJlcGxhY2Vt
ZW50LCBOU1N0cmluZyogcmVwbGFjZWQsIE5TU3RyaW5nKiBwcm9wb3NlZFJlcGxhY2VtZW50LCBO
U0NvcnJlY3Rpb25CdWJibGVUeXBlKTsKKworICAgIGJvb2wgbV93YXNEaXNtaXNzZWRFeHRlcm5h
bGx5OworICAgIFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgbV9y
ZWFzb25Gb3JEaXNtaXNzaW5nOworICAgIFJldGFpblB0cjxXZWJWaWV3PiBtX3ZpZXc7CisgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBtX3Jlc3VsdEZvclN5bmNocm9ub3VzRGlzbWlzc2FsOworICAg
IFJldGFpblB0cjxOU0NvbmRpdGlvbj4gbV9yZXN1bHRDb25kaXRpb247Cit9OworCisjZW5kaWYg
Ly8gIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xF
T1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKworI2VuZGlmIC8v
IENvcnJlY3Rpb25QYW5lbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9Db3JyZWN0aW9uUGFuZWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzgzYjYzNGFkZDVkNGNhMzkwYjIz
OTIxNThjZGFkNGRjYjJmMzU2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbQpAQCAtMCwwICsxLDE2MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisjaW1wb3J0ICJDb3JyZWN0aW9uUGFuZWwuaCIKKworI2ltcG9ydCAiV2ViVmlld1By
aXZhdGUuaCIKKworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RhdGljIGlubGluZSBOU0NvcnJlY3Rpb25C
dWJibGVUeXBlIGNvcnJlY3Rpb25CdWJibGVUeXBlKENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVs
VHlwZSBwYW5lbFR5cGUpCit7CisgICAgc3dpdGNoIChwYW5lbFR5cGUpIHsKKyAgICBjYXNlIENv
cnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZUNvcnJlY3Rpb246CisgICAgICAgIHJldHVybiBO
U0NvcnJlY3Rpb25CdWJibGVUeXBlQ29ycmVjdGlvbjsKKyAgICBjYXNlIENvcnJlY3Rpb25QYW5l
bEluZm86OlBhbmVsVHlwZVJldmVyc2lvbjoKKyAgICAgICAgcmV0dXJuIE5TQ29ycmVjdGlvbkJ1
YmJsZVR5cGVSZXZlcnNpb247CisgICAgY2FzZSBDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5
cGVTcGVsbGluZ1N1Z2dlc3Rpb25zOgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uQnViYmxl
VHlwZUd1ZXNzZXM7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBOU0NvcnJlY3Rpb25CdWJibGVUeXBlQ29ycmVjdGlvbjsKK30KKworQ29ycmVjdGlvblBhbmVs
OjpDb3JyZWN0aW9uUGFuZWwoKQorICAgIDogbV93YXNEaXNtaXNzZWRFeHRlcm5hbGx5KGZhbHNl
KQorICAgICwgbV9yZWFzb25Gb3JEaXNtaXNzaW5nKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0
aW9uUGFuZWxJZ25vcmVkKQorICAgICwgbV9yZXN1bHRDb25kaXRpb24oQWRvcHROUywgW1tOU0Nv
bmRpdGlvbiBhbGxvY10gaW5pdF0pCit7Cit9CisKK0NvcnJlY3Rpb25QYW5lbDo6fkNvcnJlY3Rp
b25QYW5lbCgpCit7CisgICAgZGlzbWlzc0ludGVybmFsKFJlYXNvbkZvckRpc21pc3NpbmdDb3Jy
ZWN0aW9uUGFuZWxJZ25vcmVkLCBmYWxzZSk7Cit9CisKK3ZvaWQgQ29ycmVjdGlvblBhbmVsOjpz
aG93KFdlYlZpZXcqIHZpZXcsIENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSB0eXBlLCBj
b25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5n
JiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQoreworICAgIGRp
c21pc3NJbnRlcm5hbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsSWdub3JlZCwg
ZmFsc2UpOworICAgIAorICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNT
dHJpbmcqIHJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyA9IHJlcGxhY2VkU3RyaW5nOworICAgIE5T
U3RyaW5nKiByZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgPSByZXBsYWNlbWVudFN0cmluZzsK
KyAgICBtX3ZpZXcgPSB2aWV3OworICAgIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGUgYnViYmxlVHlw
ZSA9IGNvcnJlY3Rpb25CdWJibGVUeXBlKHR5cGUpOworICAgIAorICAgIE5TTXV0YWJsZUFycmF5
KiBhbHRlcm5hdGl2ZVN0cmluZ3MgPSAwOworICAgIGlmICghYWx0ZXJuYXRpdmVSZXBsYWNlbWVu
dFN0cmluZ3MuaXNFbXB0eSgpKSB7CisgICAgICAgIHNpemVfdCBzaXplID0gYWx0ZXJuYXRpdmVS
ZXBsYWNlbWVudFN0cmluZ3Muc2l6ZSgpOworICAgICAgICBhbHRlcm5hdGl2ZVN0cmluZ3MgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2l6ZV07CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgW2FsdGVybmF0aXZlU3RyaW5n
cyBhZGRPYmplY3Q6KE5TU3RyaW5nKilhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5nc1tpXV07
CisgICAgfQorCisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHNob3dD
b3JyZWN0aW9uQnViYmxlT2ZUeXBlOmJ1YmJsZVR5cGUgcHJpbWFyeVN0cmluZzpyZXBsYWNlbWVu
dFN0cmluZ0FzTlNTdHJpbmcgYWx0ZXJuYXRpdmVTdHJpbmdzOmFsdGVybmF0aXZlU3RyaW5ncyBm
b3JTdHJpbmdJblJlY3Q6Ym91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nIHZpZXc6bV92aWV3Lmdl
dCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcqIGFjY2VwdGVkU3RyaW5nKSB7CisgICAg
ICAgIGhhbmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQoYWNjZXB0ZWRTdHJpbmcsIHJlcGxhY2VkU3Ry
aW5nQXNOU1N0cmluZywgcmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nLCBidWJibGVUeXBlKTsK
KyAgICB9XTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3MoUmVhc29uRm9yRGlz
bWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24pCit7CisgICAgZGlzbWlzc0ludGVybmFsKHJl
YXNvbiwgdHJ1ZSk7Cit9CisKK1N0cmluZyBDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3NTb29uKFJl
YXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uKQoreworICAgIGlmICghaXNT
aG93aW5nKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGRpc21pc3NJbnRlcm5h
bChyZWFzb24sIHRydWUpOworICAgIFttX3Jlc3VsdENvbmRpdGlvbi5nZXQoKSBsb2NrXTsKKyAg
ICB3aGlsZSAoIW1fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNtaXNzYWwpCisgICAgICAgIFttX3Jl
c3VsdENvbmRpdGlvbi5nZXQoKSB3YWl0XTsKKyAgICBbbV9yZXN1bHRDb25kaXRpb24uZ2V0KCkg
dW5sb2NrXTsKKyAgICByZXR1cm4gbV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rpc21pc3NhbC5nZXQo
KTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3NJbnRlcm5hbChSZWFzb25Gb3JE
aXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbiwgYm9vbCBkaXNtaXNzaW5nRXh0ZXJuYWxs
eSkKK3sKKyAgICBtX3dhc0Rpc21pc3NlZEV4dGVybmFsbHkgPSBkaXNtaXNzaW5nRXh0ZXJuYWxs
eTsKKyAgICBpZiAoIWlzU2hvd2luZygpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9y
ZWFzb25Gb3JEaXNtaXNzaW5nID0gcmVhc29uOworICAgIG1fcmVzdWx0Rm9yU3luY2hyb25vdXNE
aXNtaXNzYWwuY2xlYXIoKTsKKyAgICBpZiAocmVhc29uID09IFJlYXNvbkZvckRpc21pc3NpbmdD
b3JyZWN0aW9uUGFuZWxBY2NlcHRlZCkKKyAgICAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRT
cGVsbENoZWNrZXJdIGRpc21pc3NDb3JyZWN0aW9uQnViYmxlRm9yVmlldzptX3ZpZXcuZ2V0KCld
OworICAgIGVsc2UKKyAgICAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJd
IGNhbmNlbENvcnJlY3Rpb25CdWJibGVGb3JWaWV3Om1fdmlldy5nZXQoKV07CisgICAgbV92aWV3
LmNsZWFyKCk7Cit9CisKK3ZvaWQgQ29ycmVjdGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlv
blJlc3BvbnNlKFdlYlZpZXcqIHZpZXcsIE5TQ29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3Ry
aW5nKQoreworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSByZWNvcmRS
ZXNwb25zZTpyZXNwb25zZSB0b0NvcnJlY3Rpb246cmVwbGFjZW1lbnRTdHJpbmcgZm9yV29yZDpy
ZXBsYWNlZFN0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpbdmlldyBz
cGVsbENoZWNrZXJEb2N1bWVudFRhZ11dOworfQorCit2b2lkIENvcnJlY3Rpb25QYW5lbDo6aGFu
ZGxlQWNjZXB0ZWRSZXBsYWNlbWVudChOU1N0cmluZyogYWNjZXB0ZWRSZXBsYWNlbWVudCwgTlNT
dHJpbmcqIHJlcGxhY2VkLCBOU1N0cmluZyogcHJvcG9zZWRSZXBsYWNlbWVudCwgIE5TQ29ycmVj
dGlvbkJ1YmJsZVR5cGUgY29ycmVjdGlvbkJ1YmJsZVR5cGUpCit7CisgICAgTlNTcGVsbENoZWNr
ZXIqIHNwZWxsQ2hlY2tlciA9IFtOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdOwor
ICAgIE5TSW50ZWdlciBkb2N1bWVudFRhZyA9IFttX3ZpZXcuZ2V0KCkgc3BlbGxDaGVja2VyRG9j
dW1lbnRUYWddOworCisgICAgc3dpdGNoIChjb3JyZWN0aW9uQnViYmxlVHlwZSkgeworICAgIGNh
c2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUNvcnJlY3Rpb246CisgICAgICAgIGlmIChhY2NlcHRl
ZFJlcGxhY2VtZW50KQorICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpO
U0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkIHRvQ29ycmVjdGlvbjphY2NlcHRlZFJlcGxhY2Vt
ZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6
ZG9jdW1lbnRUYWddOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICghbV93YXNEaXNt
aXNzZWRFeHRlcm5hbGx5IHx8IG1fcmVhc29uRm9yRGlzbWlzc2luZyA9PSBSZWFzb25Gb3JEaXNt
aXNzaW5nQ29ycmVjdGlvblBhbmVsQ2FuY2VsbGVkKQorICAgICAgICAgICAgICAgIFtzcGVsbENo
ZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VSZWplY3RlZCB0b0NvcnJl
Y3Rpb246cHJvcG9zZWRSZXBsYWNlbWVudCBmb3JXb3JkOnJlcGxhY2VkIGxhbmd1YWdlOm5pbCBp
blNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFnXTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJl
c3BvbnNlSWdub3JlZCB0b0NvcnJlY3Rpb246cHJvcG9zZWRSZXBsYWNlbWVudCBmb3JXb3JkOnJl
cGxhY2VkIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFnXTsK
KyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIE5TQ29ycmVjdGlvbkJ1YmJsZVR5
cGVSZXZlcnNpb246CisgICAgICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQorICAgICAgICAg
ICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVy
dGVkIHRvQ29ycmVjdGlvbjpyZXBsYWNlZCBmb3JXb3JkOmFjY2VwdGVkUmVwbGFjZW1lbnQgbGFu
Z3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVHdWVzc2VzOgorICAgICAgICBp
ZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKKyAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3Jk
UmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZCB0b0NvcnJlY3Rpb246YWNjZXB0
ZWRSZXBsYWNlbWVudCBmb3JXb3JkOnJlcGxhY2VkIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1l
bnRXaXRoVGFnOmRvY3VtZW50VGFnXTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAg
IGlmICghbV93YXNEaXNtaXNzZWRFeHRlcm5hbGx5KSB7CisgICAgICAgIFttX3ZpZXcuZ2V0KCkg
aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OmFjY2VwdGVkUmVwbGFjZW1lbnRdOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIFttX3Jlc3VsdENvbmRpdGlvbi5nZXQoKSBsb2Nr
XTsKKyAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKKyAgICAgICAgbV9yZXN1bHRGb3JTeW5j
aHJvbm91c0Rpc21pc3NhbC5hZG9wdE5TKFthY2NlcHRlZFJlcGxhY2VtZW50IGNvcHldKTsKKyAg
ICBbbV9yZXN1bHRDb25kaXRpb24uZ2V0KCkgc2lnbmFsXTsKKyAgICBbbV9yZXN1bHRDb25kaXRp
b24uZ2V0KCkgdW5sb2NrXTsKK30KKworI2VuZGlmIC8vICFkZWZpbmVkKEJVSUxESU5HX09OX1RJ
R0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElO
R19PTl9TTk9XX0xFT1BBUkQpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggMWZhMTMyYWQ2YzViZDQzNzlmZTBiYjg1Yzll
NmZmMGQ2NmIxMTczNS4uZTc4MGYzNGNjYjcwN2QwMzFiZGVjZDMwNzVmMDFjZjg0MTNlOTRjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKQEAgLTI3LDEwICsyNyw5IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgPFdl
YkNvcmUvRWRpdG9yLmg+CisjaW1wb3J0ICJDb3JyZWN0aW9uUGFuZWwuaCIKICNpbXBvcnQgPFdl
YkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50
Lmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvRm9yd2FyZC5oPgog
I2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCkBAIC0xNDAsMTAgKzEzOSwxMCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2Vy
KiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpOwogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJ
R0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElO
R19PTl9TTk9XX0xFT1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwo
V2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcm
IHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNv
bnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmlu
Z3MsIFdlYkNvcmU6OkVkaXRvciopOworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBh
bmVsKFdlYkNvcmU6OkNvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CiAgICAgdmlydHVh
bCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2lu
Z0NvcnJlY3Rpb25QYW5lbCk7Ci0gICAgdmlydHVhbCBib29sIGlzU2hvd2luZ0NvcnJlY3Rpb25Q
YW5lbCgpOwotICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJp
bmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CisgICAgdmlydHVhbCBT
dHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlz
c2luZ0NvcnJlY3Rpb25QYW5lbCk7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogI2VuZGlmCiBw
cml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yVW5kb09yUmVkbyhQYXNzUmVmUHRy
PFdlYkNvcmU6OkVkaXRDb21tYW5kPiwgYm9vbCBpc1JlZG8pOwpAQCAtMTU0LDggKzE1Myw2IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2hhdmVVbmRvUmVkb09wZXJhdGlvbnM7CiAKICNpZiAhZGVm
aW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotICAgIEJPT0wgbV9jb3JyZWN0
aW9uUGFuZWxJc1Nob3duOwotICAgIEJPT0wgbV9jb3JyZWN0aW9uUGFuZWxJc0Rpc21pc3NlZEV4
dGVybmFsbHk7Ci0gICAgV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5l
bCBtX3JlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWw7CisgICAgQ29ycmVjdGlvblBh
bmVsIG1fY29ycmVjdGlvblBhbmVsOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IDY5ZGQ1NzQ3MzFi
NDRiNDMwYzI3NDU4ZTcyM2I0MWM0ZGU1MTc0YjAuLmRmOTg1Y2UwMzE0OTRmZGExOWIxMDAyOTNi
MzgwODExMzNiZWU4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTc0LDcgKzc0LDYgQEAKICNlbmRpZgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKQEAgLTIwMiw5ICsyMDEsNiBAQCBXZWJFZGl0b3JDbGllbnQ6Oldl
YkVkaXRvckNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcp
CiAgICAgLCBtX3VuZG9UYXJnZXQoW1tbV2ViRWRpdG9yVW5kb1RhcmdldCBhbGxvY10gaW5pdF0g
YXV0b3JlbGVhc2VdKQogICAgICwgbV9oYXZlVW5kb1JlZG9PcGVyYXRpb25zKGZhbHNlKQotI2lm
ICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9Q
QVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0gICAgLCBtX2NvcnJl
Y3Rpb25QYW5lbElzU2hvd24oZmFsc2UpCi0jZW5kaWYKIHsKIH0KIApAQCAtODkxLDczICs4ODcs
MjUgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0
cmluZyhjb25zdCBTdHJpbmcmIGJhZEdyYW1tYXIKIH0KIAogI2lmICFkZWZpbmVkKEJVSUxESU5H
X09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi12b2lkIFdlYkVkaXRvckNsaWVudDo6c2hvd0NvcnJl
Y3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUgcGFuZWxU
eXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLCBFZGl0
b3IqIGVkaXRvcikgewotICAgIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlz
c2luZ0NvcnJlY3Rpb25QYW5lbElnbm9yZWQpOwotCi0gICAgLy8gTmVlZCB0byBleHBsaWNpdGx5
IHVzZSB0aGVzZSBsb2NhbCBOU1N0cmluZyBvYmplY3RzLCBiZWNhdXNlIHRoZSBDKysgcmVmZXJl
bmNlcyBtYXkgYmUgaW52YWxpZGF0ZWQgYnkgdGhlIHRpbWUgdGhlIGJsb2NrIGJlbG93IGlzIGV4
ZWN1dGVkLgotICAgIE5TU3RyaW5nICpyZXBsYWNlZFN0cmluZ0FzTlNTdHJpbmcgPSByZXBsYWNl
ZFN0cmluZzsKLSAgICBOU1N0cmluZyAqcmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nID0gcmVw
bGFjZW1lbnRTdHJpbmc7Ci0KLSAgICBtX2NvcnJlY3Rpb25QYW5lbElzU2hvd24gPSBZRVM7Ci0g
ICAgbV9jb3JyZWN0aW9uUGFuZWxJc0Rpc21pc3NlZEV4dGVybmFsbHkgPSBOTzsKLSAgICBtX3Jl
YXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgPSBSZWFzb25Gb3JEaXNtaXNzaW5nQ29y
cmVjdGlvblBhbmVsSWdub3JlZDsKLQotICAgIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGUgYnViYmxl
VHlwZSA9IGNvcnJlY3Rpb25CdWJibGVUeXBlKHBhbmVsVHlwZSk7Ci0gICAgTlNNdXRhYmxlQXJy
YXkgKmFsdGVybmF0aXZlU3RyaW5ncyA9IG5pbDsKLSAgICBpZiAoIWFsdGVybmF0aXZlUmVwbGFj
ZW1lbnRTdHJpbmdzLmlzRW1wdHkoKSkgewotICAgICAgICBzaXplX3Qgc2l6ZSA9IGFsdGVybmF0
aXZlUmVwbGFjZW1lbnRTdHJpbmdzLnNpemUoKTsKLSAgICAgICAgYWx0ZXJuYXRpdmVTdHJpbmdz
ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnNpemVdOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgICAgIFthbHRlcm5hdGl2ZVN0
cmluZ3MgYWRkT2JqZWN0OihOU1N0cmluZyopYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3Nb
aV1dOwotICAgIH0KLSAgICBOU1NwZWxsQ2hlY2tlciAqc3BlbGxDaGVja2VyID0gW05TU3BlbGxD
aGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl07Ci0gICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRT
cGVsbENoZWNrZXJdIHNob3dDb3JyZWN0aW9uQnViYmxlT2ZUeXBlOmJ1YmJsZVR5cGUgcHJpbWFy
eVN0cmluZzpyZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgYWx0ZXJuYXRpdmVTdHJpbmdzOmFs
dGVybmF0aXZlU3RyaW5ncyBmb3JTdHJpbmdJblJlY3Q6Ym91bmRpbmdCb3hPZlJlcGxhY2VkU3Ry
aW5nIHZpZXc6bV93ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcgKmFjY2VwdGVk
U3RyaW5nKSB7Ci0gICAgICAgIHN3aXRjaCAoYnViYmxlVHlwZSkgewotICAgICAgICBjYXNlIE5T
Q29ycmVjdGlvbkJ1YmJsZVR5cGVDb3JyZWN0aW9uOgotICAgICAgICAgICAgaWYgKGFjY2VwdGVk
U3RyaW5nKQotICAgICAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlND
b3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZCB0b0NvcnJlY3Rpb246YWNjZXB0ZWRTdHJpbmcgZm9y
V29yZDpyZXBsYWNlZFN0cmluZ0FzTlNTdHJpbmcgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVu
dFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKV07Ci0gICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICBpZiAoIW1fY29ycmVjdGlvblBhbmVsSXNEaXNtaXNzZWRFeHRlcm5h
bGx5IHx8IG1fcmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCA9PSBSZWFzb25Gb3JE
aXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsQ2FuY2VsbGVkKQotICAgICAgICAgICAgICAgICAgICBb
c3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlUmVqZWN0ZWQg
dG9Db3JyZWN0aW9uOnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyBmb3JXb3JkOnJlcGxhY2Vk
U3RyaW5nQXNOU1N0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVs
bENoZWNrZXJEb2N1bWVudFRhZygpXTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9u
c2VJZ25vcmVkIHRvQ29ycmVjdGlvbjpyZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgZm9yV29y
ZDpyZXBsYWNlZFN0cmluZ0FzTlNTdHJpbmcgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdp
dGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKV07Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOU0NvcnJlY3Rpb25CdWJibGVUeXBlUmV2ZXJzaW9u
OgotICAgICAgICAgICAgaWYgKGFjY2VwdGVkU3RyaW5nKQotICAgICAgICAgICAgICAgIFtzcGVs
bENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZCB0b0Nv
cnJlY3Rpb246cmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nIGZvcldvcmQ6YWNjZXB0ZWRTdHJpbmcg
bGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRU
YWcoKV07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOU0NvcnJlY3Rpb25CdWJi
bGVUeXBlR3Vlc3NlczoKLSAgICAgICAgICAgIGlmIChhY2NlcHRlZFN0cmluZykKLSAgICAgICAg
ICAgICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gcmVjb3JkUmVzcG9u
c2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZCB0b0NvcnJlY3Rpb246YWNjZXB0ZWRTdHJp
bmcgZm9yV29yZDpyZXBsYWNlZFN0cmluZ0FzTlNTdHJpbmcgbGFuZ3VhZ2U6bmlsIGluU3BlbGxE
b2N1bWVudFdpdGhUYWc6W21fd2ViVmlldyBzcGVsbENoZWNrZXJEb2N1bWVudFRhZ11dOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZWRpdG9yLT5oYW5kbGVDb3JyZWN0
aW9uUGFuZWxSZXN1bHQoU3RyaW5nKGFjY2VwdGVkU3RyaW5nKSk7Ci0gICAgfV07Cit2b2lkIFdl
YkVkaXRvckNsaWVudDo6c2hvd0NvcnJlY3Rpb25QYW5lbChDb3JyZWN0aW9uUGFuZWxJbmZvOjpQ
YW5lbFR5cGUgcGFuZWxUeXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1l
bnRTdHJpbmdzKQoreworICAgIG1fY29ycmVjdGlvblBhbmVsLnNob3cobV93ZWJWaWV3LCBwYW5l
bFR5cGUsIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgcmVwbGFjZWRTdHJpbmcsIHJlcGxh
Y2VtZW50U3RyaW5nLCBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CiB9CiAKIHZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3Np
bmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uRm9yRGlzbWlzc2luZykKIHsKLSAgICBpZiAoaXNTaG93
aW5nQ29ycmVjdGlvblBhbmVsKCkpIHsKLSAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJc0Rpc21p
c3NlZEV4dGVybmFsbHkgPSBZRVM7Ci0gICAgICAgIG1fcmVhc29uRm9yRGlzbWlzc2luZ0NvcnJl
Y3Rpb25QYW5lbCA9IHJlYXNvbkZvckRpc21pc3Npbmc7Ci0gICAgICAgIGlmIChyZWFzb25Gb3JE
aXNtaXNzaW5nID09IFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxBY2NlcHRlZCkK
LSAgICAgICAgICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBkaXNtaXNz
Q29ycmVjdGlvbkJ1YmJsZUZvclZpZXc6bV93ZWJWaWV3XTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGNhbmNlbENvcnJlY3Rp
b25CdWJibGVGb3JWaWV3Om1fd2ViVmlld107Ci0gICAgICAgIG1fY29ycmVjdGlvblBhbmVsSXNT
aG93biA9IE5POwotICAgIH0KKyAgICBtX2NvcnJlY3Rpb25QYW5lbC5kaXNtaXNzKHJlYXNvbkZv
ckRpc21pc3NpbmcpOwogfQogCi1ib29sIFdlYkVkaXRvckNsaWVudDo6aXNTaG93aW5nQ29ycmVj
dGlvblBhbmVsKCkKK1N0cmluZyBXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3JyZWN0aW9uUGFu
ZWxTb29uKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uRm9yRGlzbWlz
c2luZykKIHsKLSAgICByZXR1cm4gbV9jb3JyZWN0aW9uUGFuZWxJc1Nob3duOworICAgIHJldHVy
biBtX2NvcnJlY3Rpb25QYW5lbC5kaXNtaXNzU29vbihyZWFzb25Gb3JEaXNtaXNzaW5nKTsKIH0K
IAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoRWRp
dG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcp
CiB7Ci0gICAgTlNDb3JyZWN0aW9uUmVzcG9uc2Ugc3BlbGxDaGVja2VyUmVzcG9uc2UgPSByZXNw
b25zZVR5cGUgPT0gRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJldmVydGVkID8gTlNDb3Jy
ZWN0aW9uUmVzcG9uc2VSZXZlcnRlZCA6IE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOwotICAg
IFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSByZWNvcmRSZXNwb25zZTpzcGVs
bENoZWNrZXJSZXNwb25zZSB0b0NvcnJlY3Rpb246cmVwbGFjZW1lbnRTdHJpbmcgZm9yV29yZDpy
ZXBsYWNlZFN0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpbbV93ZWJW
aWV3IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnXV07CisgICAgTlNDb3JyZWN0aW9uUmVzcG9uc2Ug
cmVzcG9uc2UgPSByZXNwb25zZVR5cGUgPT0gRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJl
dmVydGVkID8gTlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZCA6IE5TQ29ycmVjdGlvblJlc3Bv
bnNlRWRpdGVkOworICAgIENvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZShtX3dlYlZpZXcsIHJlc3BvbnNlLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJp
bmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA4
NDc0OGU1Y2NlZWRjYThjYmJlNTg1ZDk1NDVmNjZkZTBlOGZkODllLi41OWViODBjNjFjOGIzMDEz
YTEzZGYzNmM2OThjYjJjODFmNDVmOTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCkBAIC01MzExLDYgKzUzMTEsMTYgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3Iq
IGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBqc1ZhbHUKIAogI2Vu
ZGlmCiAKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorLSAo
dm9pZCloYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6KE5TU3RyaW5nKilyZXN1bHQKK3sKKyAg
ICBXZWJGcmFtZSAqd2ViRnJhbWUgPSBbc2VsZiBfc2VsZWN0ZWRPck1haW5GcmFtZV07CisgICAg
RnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUod2ViRnJhbWUpOworICAgIGlmIChjb3JlRnJhbWUpCisg
ICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdChy
ZXN1bHQpOworfQorI2VuZGlmCisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdl
YlZpZXdVbmRvYWJsZUVkaXRpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQ
cml2YXRlLmgKaW5kZXggYTRlYTgwOWIwMDFkYmM2YTY3MjM0ZjE3MmYwMjBiYzM0Y2Y3ZTg0Yy4u
Y2I5NDg1MTM3ZGIwNmY5MWY2OWQxM2FhMDc0MzI1MmRkZmM0ZTVhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaApAQCAtNjQ0LDcgKzY0NCw5IEBAIENvdWxk
IGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgogLSAodm9pZClzZXRBdXRvbWF0aWNTcGVsbGlu
Z0NvcnJlY3Rpb25FbmFibGVkOihCT09MKWZsYWc7CiAtICh2b2lkKXRvZ2dsZUF1dG9tYXRpY1Nw
ZWxsaW5nQ29ycmVjdGlvbjooaWQpc2VuZGVyOwogI2VuZGlmCi0KKyNpZiAhZGVmaW5lZChCVUlM
RElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorLSAodm9pZCloYW5kbGVDb3JyZWN0aW9uUGFu
ZWxSZXN1bHQ6KE5TU3RyaW5nKilyZXN1bHQ7CisjZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBX
ZWJWaWV3IChXZWJWaWV3RWRpdGluZ0luTWFpbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhNzVmNmJiMDljZTg0
MGRkNDBkMmNlMmE0OWQ5MjM5NjZkMjY0Y2RlLi5mN2EwZjU1OWVkOTVmYTE4MjIyNWVlYWQzNjhl
YzZjZjYwODIyMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTEtMDMtMjMgIEpp
YSBQdSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSG9vayB1cCBuZXcgQXBwS2l0IGF1dG9jb3JyZWN0aW9uIFVJIHdpdGgg
V0syLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYw
NTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg5NDc0NjM+CisKKyAgICAgICAgUGxlYXNlIHNl
ZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3IgZGV0YWlsLgorCisgICAgICAgIFRoZSBjYWxscyB0byBB
cHBLaXQgYXJlIGltcGxlbWVudGVkIGluIFBhZ2VDbGllbnRJbXBsLiBPdGhlciBjaGFuZ2VzIGFy
ZSBuZWNlc3NhcnkgZm9yIHRoZQorICAgICAgICBwbHVtYmluZyB3b3JrLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OnNob3dDb3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBzcGVsbENoZWNrZXJE
b2N1bWVudFRhZ10pOgorICAgICAgICAoLVtXS1ZpZXcgaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVz
dWx0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld1ByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENvbW1pdExv
YWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd0NvcnJlY3Rp
b25QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbFNvb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY29yZEF1dG9j
b3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRs
ZUNvcnJlY3Rpb25QYW5lbFJlc3VsdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6aXNTaG93aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL0NvcnJlY3Rpb25QYW5lbC5tbTogQWRkZWQuCisgICAgICAgIChjb3JyZWN0aW9uQnViYmxl
VHlwZSk6CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6Q29ycmVjdGlvblBhbmVs
KToKKyAgICAgICAgKFdlYktpdDo6Q29ycmVjdGlvblBhbmVsOjp+Q29ycmVjdGlvblBhbmVsKToK
KyAgICAgICAgKFdlYktpdDo6Q29ycmVjdGlvblBhbmVsOjpzaG93KToKKyAgICAgICAgKFdlYktp
dDo6Q29ycmVjdGlvblBhbmVsOjpkaXNtaXNzKToKKyAgICAgICAgKFdlYktpdDo6Q29ycmVjdGlv
blBhbmVsOjpkaXNtaXNzU29vbik6CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6
ZGlzbWlzc0ludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6Q29ycmVjdGlvblBhbmVsOjpyZWNv
cmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJFZGl0b3JDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6
c2hvd0NvcnJlY3Rpb25QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6
ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVu
dDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0
b3JDbGllbnQ6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFu
ZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluOgorCiAyMDExLTAzLTIyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggMzM4Zjc3NjgxZjkxYzczYzI3
Y2RkYmViZjY0ZDZkZjA4OTU2MmNjMS4uNzg0ZTEwNjQ0ZTY5NzUyYjdkNWYxOWRmNWZmOGE3ZWU5
NmMxZGQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFn
ZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdl
Q2xpZW50SW1wbC5oCkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIFBhZ2VDbGllbnRJbXBsX2gK
ICNkZWZpbmUgUGFnZUNsaWVudEltcGxfaAogCisjaW5jbHVkZSAiQ29ycmVjdGlvblBhbmVsLmgi
CiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
QGNsYXNzIFdLVmlldzsKIEBjbGFzcyBXZWJFZGl0b3JVbmRvVGFyZ2V0T2JqQzsKQEAgLTEwNCw4
ICsxMDQsMTYgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtRGljdGlv
bmFyeUxvb2t1cChjb25zdCBTdHJpbmcmLCBkb3VibGUgc2NhbGVGYWN0b3IsIGNvbnN0IERpY3Rp
b25hcnlQb3B1cEluZm8mKTsKIAorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVs
KFdlYkNvcmU6OkNvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CisgICAgdmlydHVhbCB2
b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0Nv
cnJlY3Rpb25QYW5lbCk7CisgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5l
bFNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7CisgICAg
dmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CisKICAgICBXS1ZpZXcq
IG1fd2tWaWV3OwogICAgIFJldGFpblB0cjxXZWJFZGl0b3JVbmRvVGFyZ2V0T2JqQz4gbV91bmRv
VGFyZ2V0OworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICBDb3Jy
ZWN0aW9uUGFuZWwgbV9jb3JyZWN0aW9uUGFuZWw7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
UGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdl
Q2xpZW50SW1wbC5tbQppbmRleCBlMzUwM2RlNmY4N2Y2OTlmYjc2N2M2MjI2ZTQ5ZjUzYzFmYzk0
NDYwLi5jNjI0NDViZmRjYjJjNzI4MTc3MTFiNmIyN2JhMjdlM2Q4NGQ3MDhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQpAQCAt
NDI3LDQgKzQyNywzNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRQZXJmb3JtRGljdGlvbmFy
eUxvb2t1cChjb25zdCBTdHJpbmcmIHRleHQsIGRvdWJsZSBzY2FsZQogICAgIFttX3drVmlldyBz
aG93RGVmaW5pdGlvbkZvckF0dHJpYnV0ZWRTdHJpbmc6YXR0cmlidXRlZFN0cmluZy5nZXQoKSBy
YW5nZTpOU01ha2VSYW5nZSgwLCBbYXR0cmlidXRlZFN0cmluZy5nZXQoKSBsZW5ndGhdKSBvcHRp
b25zOm9wdGlvbnMgYmFzZWxpbmVPcmlnaW5Qcm92aWRlcjpeKE5TUmFuZ2UgYWRqdXN0ZWRSYW5n
ZSkgeyByZXR1cm4gKE5TUG9pbnQpdGV4dEJhc2VsaW5lT3JpZ2luOyB9XTsKIH0KIAordm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2hvd0NvcnJlY3Rpb25QYW5lbChDb3JyZWN0aW9uUGFuZWxJbmZvOjpQ
YW5lbFR5cGUgdHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1l
bnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3Ry
aW5ncykKK3sKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisgICAgaWYg
KCFpc1ZpZXdWaXNpYmxlKCkgfHwgIWlzVmlld0luV2luZG93KCkpCisgICAgICAgIHJldHVybjsK
KyAgICBtX2NvcnJlY3Rpb25QYW5lbC5zaG93KG1fd2tWaWV3LCB0eXBlLCBib3VuZGluZ0JveE9m
UmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZywgYWx0ZXJu
YXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOworI2VuZGlmCit9CisKK3ZvaWQgUGFnZUNsaWVudElt
cGw6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25Q
YW5lbCByZWFzb24pCit7CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQor
ICAgIG1fY29ycmVjdGlvblBhbmVsLmRpc21pc3MocmVhc29uKTsKKyNlbmRpZgorfQorCitTdHJp
bmcgUGFnZUNsaWVudEltcGw6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJl
YXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uKQoreworI2lmICFkZWZpbmVk
KEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICByZXR1cm4gbV9jb3JyZWN0aW9uUGFuZWwu
ZGlzbWlzc1Nvb24ocmVhc29uKTsKKyNlbHNlCisgICAgcmV0dXJuIFN0cmluZygpOworI2VuZGlm
Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2Uo
RWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJp
bmcpCit7CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgIE5TQ29y
cmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlID0gcmVzcG9uc2VUeXBlID09IEVkaXRvckNsaWVudDo6
QXV0b2NvcnJlY3Rpb25SZXZlcnRlZCA/IE5TQ29ycmVjdGlvblJlc3BvbnNlUmV2ZXJ0ZWQgOiBO
U0NvcnJlY3Rpb25SZXNwb25zZUVkaXRlZDsKKyAgICBDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UobV93a1ZpZXcsIHJlc3BvbnNlLCByZXBsYWNlZFN0cmluZywg
cmVwbGFjZW1lbnRTdHJpbmcpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDJhNDIzMTli
NGE5YjQ4OTgxZjU3MDA5MGNjN2JmYmRhNmEwNmYwMDMuLjI3NDdjNWNmMTc1MjVjMWRhODllNDlk
MjkyYmQwZjEwMGI2NjE3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXcubW0KQEAgLTE0OSw2ICsxNDksOSBAQCB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWYWxp
ZGF0aW9uVmVjdG9yPiBWYWxpZGF0aW9uTWFwOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
ICAgICBSZXRhaW5QdHI8V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcj4gX2Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyOwogI2VuZGlmCisKKyAgICBCT09MIF9oYXNTcGVsbENoZWNrZXJEb2N1
bWVudFRhZzsKKyAgICBOU0ludGVnZXIgX3NwZWxsQ2hlY2tlckRvY3VtZW50VGFnOwogfQogQGVu
ZAogCkBAIC0yMDc3LDUgKzIwODAsMTkgQEAgc3RhdGljIHZvaWQgZHJhd1BhZ2VCYWNrZ3JvdW5k
KENHQ29udGV4dFJlZiBjb250ZXh0LCBXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IEkKICAgICBf
ZGF0YS0+X3BhZ2UtPnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihGbG9hdFBvaW50
KHRoZVBvaW50LngsIHRoZVBvaW50LnkpKTsKIH0KIAorLSAoTlNJbnRlZ2VyKXNwZWxsQ2hlY2tl
ckRvY3VtZW50VGFnCit7CisgICAgaWYgKCFfZGF0YS0+X2hhc1NwZWxsQ2hlY2tlckRvY3VtZW50
VGFnKSB7CisgICAgICAgIF9kYXRhLT5fc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcgPSBbTlNTcGVs
bENoZWNrZXIgdW5pcXVlU3BlbGxEb2N1bWVudFRhZ107CisgICAgICAgIF9kYXRhLT5faGFzU3Bl
bGxDaGVja2VyRG9jdW1lbnRUYWcgPSBZRVM7CisgICAgfQorICAgIHJldHVybiBfZGF0YS0+X3Nw
ZWxsQ2hlY2tlckRvY3VtZW50VGFnOworfQorCistICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5l
bFJlc3VsdDooTlNTdHJpbmcqKXJlc3VsdAoreworICAgIF9kYXRhLT5fcGFnZS0+aGFuZGxlQ29y
cmVjdGlvblBhbmVsUmVzdWx0KHJlc3VsdCk7Cit9CisKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3UHJpdmF0ZS5oCmluZGV4IGNlY2UxYzc0MGI3
NzJjN2VjNjJjNmRiZTk2YmZjMGQ2MzYyNGFlMzcuLjM3YzJkOGRkODFmYjI4NjVhMjE4YjEyOThm
NGMyYjhjYTZiZWM1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXdQcml2YXRlLmgKQEAgLTM1LDQgKzM1LDYgQEAKIAogLSAodm9pZClwZXJmb3JtRGlj
dGlvbmFyeUxvb2t1cEF0Q3VycmVudE1vdXNlTG9jYXRpb247CiAKKy0gKE5TSW50ZWdlcilzcGVs
bENoZWNrZXJEb2N1bWVudFRhZzsKKy0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0
OihOU1N0cmluZyopcmVzdWx0OwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKaW5kZXggMTBiZDA3ODdhNDRiOTUzYmNhMzg4Nzc1NTZjNDliNmIwYmRlYTZmYi4uODU1NzZm
OWE3ZjYxMDgwNTFmYWE0ZmViN2RhMzg0ZTY0ZjE4ZGUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCkBAIC0xMzAsNiArMTMwLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29tcGxleFRleHRJbnB1dEVuYWJsZWQodWludDY0X3QgcGx1Z2luQ29tcGxleFRl
eHRJbnB1dElkZW50aWZpZXIsIGJvb2wgY29tcGxleFRleHRJbnB1dEVuYWJsZWQpID0gMDsKICAg
ICB2aXJ0dWFsIENHQ29udGV4dFJlZiBjb250YWluaW5nV2luZG93R3JhcGhpY3NDb250ZXh0KCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBT
dHJpbmcmLCBkb3VibGUgc2NhbGVGYWN0b3IsIGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVj
dGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5k
aW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVy
bmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc21pc3ND
b3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5l
bCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFdl
YkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShXZWJDb3JlOjpFZGl0b3JDbGll
bnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSA9IDA7CiAjZW5kaWYKIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1lKCkgY29uc3QgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAyOWU4ZThh
MjBlM2I0ZTJlMWY3ODRiMjVkYTQzN2RhYjE3NjEwMjNkLi5mMWVlOTRjYTQ3YzhiYzhhNGNiMTQx
MmE2YTQwNDE2MjAxY2E0NDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtMTM5OSw2ICsxMzk5LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21t
aXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwCiAg
ICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShtZXNzYWdlRGVjb2RlcikpCiAgICAgICAgIHJldHVy
bjsKIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9Q
QVJEKQorICAgIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJl
Y3Rpb25QYW5lbElnbm9yZWQpOworI2VuZGlmCisKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9
IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7
CiAKQEAgLTI3NjUsNCArMjc2OSwzNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZURhdGFUb0Zp
bGVJbkRvd25sb2Fkc0ZvbGRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYQogICAgIG1f
dWlDbGllbnQuc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcih0aGlzLCBzdWdnZXN0ZWRG
aWxlbmFtZSwgbWltZVR5cGUsIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBkYXRhKTsKIH0KIAorI2lm
IFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQordm9p
ZCBXZWJQYWdlUHJveHk6OnNob3dDb3JyZWN0aW9uUGFuZWwoaW50MzJfdCBwYW5lbFR5cGUsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5n
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCit7
CisgICAgbV9wYWdlQ2xpZW50LT5zaG93Q29ycmVjdGlvblBhbmVsKChXZWJDb3JlOjpDb3JyZWN0
aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUpcGFuZWxUeXBlLCBib3VuZGluZ0JveE9mUmVwbGFjZWRT
dHJpbmcsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZywgYWx0ZXJuYXRpdmVSZXBs
YWNlbWVudFN0cmluZ3MpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbChpbnQzMl90IHJlYXNvbikKK3sKKyAgICBtX3BhZ2VDbGllbnQtPmRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWwoKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwp
cmVhc29uKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxT
b29uKGludDMyX3QgcmVhc29uLCBTdHJpbmcmIHJlc3VsdCkKK3sKKyAgICByZXN1bHQgPSBtX3Bh
Z2VDbGllbnQtPmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKChXZWJDb3JlOjpSZWFzb25Gb3JE
aXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKXJlYXNvbik7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5
OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9uc2VUeXBlLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5n
KQoreworICAgIG1fcGFnZUNsaWVudC0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSgoV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSlyZXNwb25zZVR5
cGUsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7Cit9CisjZW5kaWYKKworI2lm
IFBMQVRGT1JNKE1BQykKK3ZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVDb3JyZWN0aW9uUGFuZWxS
ZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCit7CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05f
U05PV19MRU9QQVJEKQorICAgIGlmICghaXNDbG9zZWQoKSkKKyAgICAgICAgcHJvY2VzcygpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQocmVzdWx0
KSwgbV9wYWdlSUQsIDApOworI2VuZGlmCit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNWU4MmMyZDll
MDcyY2IxODdjMjk2MDc0MDViNGU1ZGQwYjRjOTJkOS4uNDg4ZTM2M2IyZDkxZWVlOTc1MTM5MzI2
NzM0MDI5NTMzOTBlZjUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtNDUwLDYgKzQ1MCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZsYXNoQmFja2luZ1N0
b3JlVXBkYXRlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHVwZGF0ZVJlY3RzKTsK
IAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lkIGhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3Vs
dChjb25zdCBTdHJpbmcmIHJlc3VsdCk7CisjZW5kaWYKKwogICAgIHN0YXRpYyB2b2lkIHNldERl
YnVnUGFpbnRGbGFncyhXS1BhZ2VEZWJ1Z1BhaW50RmxhZ3MgZmxhZ3MpIHsgc19kZWJ1Z1BhaW50
RmxhZ3MgPSBmbGFnczsgfQogICAgIHN0YXRpYyBXS1BhZ2VEZWJ1Z1BhaW50RmxhZ3MgZGVidWdQ
YWludEZsYWdzKCkgeyByZXR1cm4gc19kZWJ1Z1BhaW50RmxhZ3M7IH0KIApAQCAtNjQzLDYgKzY0
NywxMyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhh
bmRsZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAK
KyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkK
KyAgICB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoaW50MzJfdCBwYW5lbFR5cGUsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOworICAgIHZv
aWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChpbnQzMl90IHJlYXNvbik7CisgICAgdm9pZCBkaXNt
aXNzQ29ycmVjdGlvblBhbmVsU29vbihpbnQzMl90IHJlYXNvbiwgU3RyaW5nJiByZXN1bHQpOwor
ICAgIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShpbnQzMl90IHJlc3BvbnNlVHlw
ZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVu
dFN0cmluZyk7CisjZW5kaWYKKwogICAgIFBhZ2VDbGllbnQqIG1fcGFnZUNsaWVudDsKICAgICBX
ZWJMb2FkZXJDbGllbnQgbV9sb2FkZXJDbGllbnQ7CiAgICAgV2ViUG9saWN5Q2xpZW50IG1fcG9s
aWN5Q2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggYzgxMmFlMTYyNTdiYmI4ODJhYjc1ZWQ4MDcxYzY2Y2IxYzMwOTZi
Mi4uNTVhNmRjMjE2MWQzMDM3YzM3NGUzODRlZDg2ZjcxMDZmMmQzNDU2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMDgs
NCArMjA4LDEyIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYgUExBVEZPUk0oV0lO
KQogICAgIFN0YXJ0RHJhZ0Ryb3AoV2ViQ29yZTo6SW50UG9pbnQgaW1hZ2VQb2ludCwgV2ViQ29y
ZTo6SW50UG9pbnQgZHJhZ1BvaW50LCB1aW50NjRfdCBva0VmZmVjdCwgSGFzaE1hcDxVSU5ULFZl
Y3RvcjxTdHJpbmc+ID4gZGF0YU1hcCwgV2ViQ29yZTo6SW50U2l6ZSBkcmFnSW1hZ2VTaXplLCBX
ZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGRyYWdJbWFnZSwgYm9vbCBsaW5rRHJhZykKICNl
bmRpZgorCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xF
T1BBUkQpCisgICAgIyBBdXRvY29ycmVjdGlvbiBtZXNzYWdlcworICAgIFNob3dDb3JyZWN0aW9u
UGFuZWwoaW50MzJfdCBwYW5lbFR5cGUsIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZGluZ0JveE9m
UmVwbGFjZWRTdHJpbmcsIFN0cmluZyByZXBsYWNlZFN0cmluZywgU3RyaW5nIHJlcGxhY2VtZW50
U3RyaW5nLCBWZWN0b3I8U3RyaW5nPiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKKyAg
ICBEaXNtaXNzQ29ycmVjdGlvblBhbmVsKGludDMyX3QgcmVhc29uKQorICAgIERpc21pc3NDb3Jy
ZWN0aW9uUGFuZWxTb29uKGludDMyX3QgcmVhc29uKSAtPiAoU3RyaW5nIHJlc3VsdCkKKyAgICBS
ZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9uc2VUeXBlLCBTdHJpbmcg
cmVwbGFjZWRTdHJpbmcsIFN0cmluZyByZXBsYWNlbWVudFN0cmluZyk7CisjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ0YmMzNTNkNjliMzYxZDJlODYxMzZiMTkwN2JkOTZmMDJjODk2MTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5oCkBA
IC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENvcnJlY3Rpb25QYW5lbF9oCisj
ZGVmaW5lIENvcnJlY3Rpb25QYW5lbF9oCisKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9X
X0xFT1BBUkQpCisjaW1wb3J0IDxBcHBLaXQvTlNUZXh0Q2hlY2tlci5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9Db3JyZWN0aW9uUGFuZWxJbmZvLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisK
K0BjbGFzcyBXS1ZpZXc7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDb3JyZWN0aW9u
UGFuZWwgeworcHVibGljOgorICAgIENvcnJlY3Rpb25QYW5lbCgpOworICAgIH5Db3JyZWN0aW9u
UGFuZWwoKTsKKyAgICB2b2lkIHNob3coV0tWaWV3KiwgV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVs
SW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZS
ZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5n
JiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVw
bGFjZW1lbnRTdHJpbmdzKTsKKyAgICB2b2lkIGRpc21pc3MoV2ViQ29yZTo6UmVhc29uRm9yRGlz
bWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7CisgICAgU3RyaW5nIGRpc21pc3NTb29uKFdlYkNvcmU6
OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOworICAgIHN0YXRpYyB2b2lkIHJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV0tWaWV3KiwgTlNDb3JyZWN0aW9uUmVzcG9uc2Us
IGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRT
dHJpbmcpOworCitwcml2YXRlOgorICAgIGJvb2wgaXNTaG93aW5nKCkgY29uc3QgeyByZXR1cm4g
bV92aWV3OyB9CisgICAgdm9pZCBkaXNtaXNzSW50ZXJuYWwoV2ViQ29yZTo6UmVhc29uRm9yRGlz
bWlzc2luZ0NvcnJlY3Rpb25QYW5lbCwgYm9vbCBkaXNtaXNzaW5nRXh0ZXJuYWxseSk7CisgICAg
dm9pZCBoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJlcGxhY2Vt
ZW50LCBOU1N0cmluZyogcmVwbGFjZWQsIE5TU3RyaW5nKiBwcm9wb3NlZFJlcGxhY2VtZW50LCBO
U0NvcnJlY3Rpb25CdWJibGVUeXBlKTsKKworICAgIGJvb2wgbV93YXNEaXNtaXNzZWRFeHRlcm5h
bGx5OworICAgIFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgbV9y
ZWFzb25Gb3JEaXNtaXNzaW5nOworICAgIFJldGFpblB0cjxXS1ZpZXc+IG1fdmlldzsKKyAgICBS
ZXRhaW5QdHI8TlNTdHJpbmc+IG1fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNtaXNzYWw7CisgICAg
UmV0YWluUHRyPE5TQ29uZGl0aW9uPiBtX3Jlc3VsdENvbmRpdGlvbjsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9Q
QVJEKQorCisjZW5kaWYgLy8gQ29ycmVjdGlvblBhbmVsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDFmZmNkZjRjNGZk
MzRhMjI1NTQ4MDg3MDAwY2Y0OTg2NjIzYWJiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tCkBAIC0wLDAgKzEsMTY5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaWYgIWRlZmluZWQoQlVJTERJTkdf
T05fU05PV19MRU9QQVJEKQorI2ltcG9ydCAiQ29ycmVjdGlvblBhbmVsLmgiCisKKyNpbXBvcnQg
IldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiV0tWaWV3LmgiCisjaW1wb3J0ICJXS1ZpZXdQcml2
YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgaW5saW5lIE5TQ29y
cmVjdGlvbkJ1YmJsZVR5cGUgY29ycmVjdGlvbkJ1YmJsZVR5cGUoQ29ycmVjdGlvblBhbmVsSW5m
bzo6UGFuZWxUeXBlIHBhbmVsVHlwZSkKK3sKKyAgICBzd2l0Y2ggKHBhbmVsVHlwZSkgeworICAg
IGNhc2UgQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlQ29ycmVjdGlvbjoKKyAgICAgICAg
cmV0dXJuIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVDb3JyZWN0aW9uOworICAgIGNhc2UgQ29ycmVj
dGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlUmV2ZXJzaW9uOgorICAgICAgICByZXR1cm4gTlNDb3Jy
ZWN0aW9uQnViYmxlVHlwZVJldmVyc2lvbjsKKyAgICBjYXNlIENvcnJlY3Rpb25QYW5lbEluZm86
OlBhbmVsVHlwZVNwZWxsaW5nU3VnZ2VzdGlvbnM6CisgICAgICAgIHJldHVybiBOU0NvcnJlY3Rp
b25CdWJibGVUeXBlR3Vlc3NlczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVDb3JyZWN0aW9uOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworQ29ycmVjdGlvblBhbmVsOjpDb3JyZWN0aW9uUGFuZWwoKQorICAgIDog
bV93YXNEaXNtaXNzZWRFeHRlcm5hbGx5KGZhbHNlKQorICAgICwgbV9yZWFzb25Gb3JEaXNtaXNz
aW5nKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxJZ25vcmVkKQorICAgICwgbV9y
ZXN1bHRDb25kaXRpb24oQWRvcHROUywgW1tOU0NvbmRpdGlvbiBhbGxvY10gaW5pdF0pCit7Cit9
CisKK0NvcnJlY3Rpb25QYW5lbDo6fkNvcnJlY3Rpb25QYW5lbCgpCit7CisgICAgZGlzbWlzc0lu
dGVybmFsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxJZ25vcmVkLCBmYWxzZSk7
Cit9CisKK3ZvaWQgQ29ycmVjdGlvblBhbmVsOjpzaG93KFdLVmlldyogdmlldywgQ29ycmVjdGlv
blBhbmVsSW5mbzo6UGFuZWxUeXBlIHR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hP
ZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVS
ZXBsYWNlbWVudFN0cmluZ3MpCit7CisgICAgZGlzbWlzc0ludGVybmFsKFJlYXNvbkZvckRpc21p
c3NpbmdDb3JyZWN0aW9uUGFuZWxJZ25vcmVkLCBmYWxzZSk7CisgICAgCisgICAgaWYgKCF2aWV3
KQorICAgICAgICByZXR1cm47CisKKyAgICBOU1N0cmluZyogcmVwbGFjZWRTdHJpbmdBc05TU3Ry
aW5nID0gcmVwbGFjZWRTdHJpbmc7CisgICAgTlNTdHJpbmcqIHJlcGxhY2VtZW50U3RyaW5nQXNO
U1N0cmluZyA9IHJlcGxhY2VtZW50U3RyaW5nOworICAgIG1fdmlldyA9IHZpZXc7CisgICAgTlND
b3JyZWN0aW9uQnViYmxlVHlwZSBidWJibGVUeXBlID0gY29ycmVjdGlvbkJ1YmJsZVR5cGUodHlw
ZSk7CisgICAgCisgICAgTlNNdXRhYmxlQXJyYXkqIGFsdGVybmF0aXZlU3RyaW5ncyA9IDA7Cisg
ICAgaWYgKCFhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgc2l6ZV90IHNpemUgPSBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5zaXplKCk7Cisg
ICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBh
Y2l0eTpzaXplXTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisg
ICAgICAgICAgICBbYWx0ZXJuYXRpdmVTdHJpbmdzIGFkZE9iamVjdDooTlNTdHJpbmcqKWFsdGVy
bmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzW2ldXTsKKyAgICB9CisKKyAgICBOU1NwZWxsQ2hlY2tl
ciogc3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl07Cisg
ICAgW3NwZWxsQ2hlY2tlciBzaG93Q29ycmVjdGlvbkJ1YmJsZU9mVHlwZTpidWJibGVUeXBlIHBy
aW1hcnlTdHJpbmc6cmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nIGFsdGVybmF0aXZlU3RyaW5n
czphbHRlcm5hdGl2ZVN0cmluZ3MgZm9yU3RyaW5nSW5SZWN0OmJvdW5kaW5nQm94T2ZSZXBsYWNl
ZFN0cmluZyB2aWV3Om1fdmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nKiBh
Y2NlcHRlZFN0cmluZykgeworICAgICAgICBoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KGFjY2Vw
dGVkU3RyaW5nLCByZXBsYWNlZFN0cmluZ0FzTlNTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nQXNO
U1N0cmluZywgYnViYmxlVHlwZSk7CisgICAgfV07Cit9CisKK3ZvaWQgQ29ycmVjdGlvblBhbmVs
OjpkaXNtaXNzKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uKQorewor
ICAgIGRpc21pc3NJbnRlcm5hbChyZWFzb24sIHRydWUpOworfQorCitTdHJpbmcgQ29ycmVjdGlv
blBhbmVsOjpkaXNtaXNzU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJl
YXNvbikKK3sKKyAgICBpZiAoIWlzU2hvd2luZygpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisKKyAgICBkaXNtaXNzSW50ZXJuYWwocmVhc29uLCB0cnVlKTsKKyAgICBbbV9yZXN1bHRDb25k
aXRpb24uZ2V0KCkgbG9ja107CisgICAgd2hpbGUgKCFtX3Jlc3VsdEZvclN5bmNocm9ub3VzRGlz
bWlzc2FsKQorICAgICAgICBbbV9yZXN1bHRDb25kaXRpb24uZ2V0KCkgd2FpdF07CisgICAgW21f
cmVzdWx0Q29uZGl0aW9uLmdldCgpIHVubG9ja107CisgICAgcmV0dXJuIG1fcmVzdWx0Rm9yU3lu
Y2hyb25vdXNEaXNtaXNzYWwuZ2V0KCk7Cit9CisKK3ZvaWQgQ29ycmVjdGlvblBhbmVsOjpkaXNt
aXNzSW50ZXJuYWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24sIGJv
b2wgZGlzbWlzc2luZ0V4dGVybmFsbHkpCit7CisgICAgbV93YXNEaXNtaXNzZWRFeHRlcm5hbGx5
ID0gZGlzbWlzc2luZ0V4dGVybmFsbHk7CisgICAgaWYgKCFpc1Nob3dpbmcoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIG1fcmVhc29uRm9yRGlzbWlzc2luZyA9IHJlYXNvbjsKKyAgICBt
X3Jlc3VsdEZvclN5bmNocm9ub3VzRGlzbWlzc2FsLmNsZWFyKCk7CisgICAgaWYgKHJlYXNvbiA9
PSBSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsQWNjZXB0ZWQpCisgICAgICAgIFtb
TlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBkaXNtaXNzQ29ycmVjdGlvbkJ1YmJs
ZUZvclZpZXc6bV92aWV3LmdldCgpXTsKKyAgICBlbHNlCisgICAgICAgIFtbTlNTcGVsbENoZWNr
ZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBjYW5jZWxDb3JyZWN0aW9uQnViYmxlRm9yVmlldzptX3Zp
ZXcuZ2V0KCldOworICAgIG1fdmlldy5jbGVhcigpOworfQorCit2b2lkIENvcnJlY3Rpb25QYW5l
bDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShXS1ZpZXcqIHZpZXcsIE5TQ29ycmVjdGlv
blJlc3BvbnNlIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKQoreworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVk
U3BlbGxDaGVja2VyXSByZWNvcmRSZXNwb25zZTpyZXNwb25zZSB0b0NvcnJlY3Rpb246cmVwbGFj
ZW1lbnRTdHJpbmcgZm9yV29yZDpyZXBsYWNlZFN0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERv
Y3VtZW50V2l0aFRhZzpbdmlldyBzcGVsbENoZWNrZXJEb2N1bWVudFRhZ11dOworfQorCit2b2lk
IENvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVudChOU1N0cmluZyogYWNj
ZXB0ZWRSZXBsYWNlbWVudCwgTlNTdHJpbmcqIHJlcGxhY2VkLCBOU1N0cmluZyogcHJvcG9zZWRS
ZXBsYWNlbWVudCwgIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGUgY29ycmVjdGlvbkJ1YmJsZVR5cGUp
Cit7CisgICAgTlNTcGVsbENoZWNrZXIqIHNwZWxsQ2hlY2tlciA9IFtOU1NwZWxsQ2hlY2tlciBz
aGFyZWRTcGVsbENoZWNrZXJdOworICAgIE5TSW50ZWdlciBkb2N1bWVudFRhZyA9IFttX3ZpZXcu
Z2V0KCkgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWddOworICAgIAorICAgIHN3aXRjaCAoY29ycmVj
dGlvbkJ1YmJsZVR5cGUpIHsKKyAgICBjYXNlIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVDb3JyZWN0
aW9uOgorICAgICAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKKyAgICAgICAgICAgIFtzcGVs
bENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZCB0b0Nv
cnJlY3Rpb246YWNjZXB0ZWRSZXBsYWNlbWVudCBmb3JXb3JkOnJlcGxhY2VkIGxhbmd1YWdlOm5p
bCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFnXTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBpZiAoIW1fd2FzRGlzbWlzc2VkRXh0ZXJuYWxseSB8fCBtX3JlYXNvbkZvckRp
c21pc3NpbmcgPT0gUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbENhbmNlbGxlZCkK
KyAgICAgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlv
blJlc3BvbnNlUmVqZWN0ZWQgdG9Db3JyZWN0aW9uOnByb3Bvc2VkUmVwbGFjZW1lbnQgZm9yV29y
ZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVudFRh
Z107CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNv
cmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUlnbm9yZWQgdG9Db3JyZWN0aW9uOnByb3Bv
c2VkUmVwbGFjZW1lbnQgZm9yV29yZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3Vt
ZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBOU0NvcnJlY3Rpb25CdWJibGVUeXBlUmV2ZXJzaW9uOgorICAgICAgICBpZiAoYWNjZXB0
ZWRSZXBsYWNlbWVudCkKKyAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6
TlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZCB0b0NvcnJlY3Rpb246cmVwbGFjZWQgZm9yV29y
ZDphY2NlcHRlZFJlcGxhY2VtZW50IGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFn
OmRvY3VtZW50VGFnXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOU0NvcnJlY3Rpb25CdWJi
bGVUeXBlR3Vlc3NlczoKKyAgICAgICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQpCisgICAgICAg
ICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlQWNj
ZXB0ZWQgdG9Db3JyZWN0aW9uOmFjY2VwdGVkUmVwbGFjZW1lbnQgZm9yV29yZDpyZXBsYWNlZCBs
YW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICAKKyAgICBpZiAoIW1fd2FzRGlzbWlzc2VkRXh0ZXJuYWxseSkg
eworICAgICAgICBbbV92aWV3LmdldCgpIGhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDphY2Nl
cHRlZFJlcGxhY2VtZW50XTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBbbV9y
ZXN1bHRDb25kaXRpb24uZ2V0KCkgbG9ja107CisgICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQp
CisgICAgICAgIG1fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNtaXNzYWwuYWRvcHROUyhbYWNjZXB0
ZWRSZXBsYWNlbWVudCBjb3B5XSk7CisgICAgW21fcmVzdWx0Q29uZGl0aW9uLmdldCgpIHNpZ25h
bF07CisgICAgW21fcmVzdWx0Q29uZGl0aW9uLmdldCgpIHVubG9ja107Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8hZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BB
UkQpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAzMzg3NzVhMzFlN2M0OTgyOTkzYTU5YTg2YzZkYjA2Zjc5M2U5YWRmLi4xNzNm
OTAwYzZiYzkxNThiODg4YTFkODI0YWZiZDYwODAxZDI2NjEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzAsNiArMzcwLDgg
QEAKIAkJOTNGQzY3QkUxMkQzQ0NGMjAwQTYwNjEwIC8qIERlY29kZXJBZGFwdGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZDNjc5RTEyRDNDQzc0
MDBBNjA2MTAgLyogRGVjb2RlckFkYXB0ZXIuaCAqLzsgfTsKIAkJOTNGQzY3QkYxMkQzQ0NGMjAw
QTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkM2NzlGMTJEM0NDNzQwMEE2MDYxMCAvKiBFbmNvZGVyQWRh
cHRlci5jcHAgKi87IH07CiAJCTkzRkM2N0MwMTJEM0NDRjIwMEE2MDYxMCAvKiBFbmNvZGVyQWRh
cHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNG
QzY3QTAxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmggKi87IH07CisJCUI4NzhC
NjE1MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4NzhCNjEzMTMzNDI4REMwMDY4ODhFOSAv
KiBDb3JyZWN0aW9uUGFuZWwuaCAqLzsgfTsKKwkJQjg3OEI2MTYxMzM0MjhEQzAwNjg4OEU5IC8q
IENvcnJlY3Rpb25QYW5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEI4NzhCNjE0MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwubW0g
Ki87IH07CiAJCUJDMDA5MkY3MTE1ODM3QTMwMEUwQUUyQSAvKiBSdW5Mb29wTWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMDkyRjUxMTU4MzdB
MzAwRTBBRTJBIC8qIFJ1bkxvb3BNYWMubW0gKi87IH07CiAJCUJDMDA5MkY4MTE1ODM3QTMwMEUw
QUUyQSAvKiBXb3JrUXVldWVNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMwMDkyRjYxMTU4MzdBMzAwRTBBRTJBIC8qIFdvcmtRdWV1ZU1hYy5j
cHAgKi87IH07CiAJCUJDMDMyRDc1MTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJDaHJvbWVDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyRDYw
MTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJDaHJvbWVDbGllbnQuaCAqLzsgfTsKQEAgLTEyMzgsNiAr
MTI0MCw4IEBACiAJCTkzRkM2N0EwMTJEM0NDNzQwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbmNvZGVyQWRhcHRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzJENUQ3RjEyMzZDQkE4MDBBODhCMTUgLyogV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCMzk2RUE1NTEyRTBFRDJEMDBGNEZFQjcgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
ODc4QjYxMzEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcnJlY3Rpb25QYW5lbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCODc4QjYxNDEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVs
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29ycmVjdGlvblBh
bmVsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAwOTJGNTExNTgzN0EzMDBF
MEFFMkEgLyogUnVuTG9vcE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFJ1bkxvb3BNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDA5
MkY2MTE1ODM3QTMwMEUwQUUyQSAvKiBXb3JrUXVldWVNYWMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV29ya1F1ZXVlTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkMwMzJENjAxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkNocm9tZUNsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDaHJvbWVDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MjYsMjAgKzI5MzAsMjIgQEAKIAkJQkNDRjA4
NUMxMTNGM0I3NTAwQzY1MEM1IC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJQ0RDQTg1REUxMzJBRDA1MzAwRTk2MURGIC8qIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHlNYWMubW0gKi8sCi0JCQkJQ0RDQTg1QzYxMzJBQkE0RTAwRTk2MURGIC8q
IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gKi8sCi0JCQkJQ0RDQTg1QzcxMzJBQkE0
RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLywKIAkJCQkxQTY0
MjkyQzEyREU1Rjk4MDBDQUFFMkMgLyogQmFja2luZ1N0b3JlTWFjLm1tICovLAogCQkJCUJDMjY1
MUY1MTE4MjVFRjgwMDI0M0UxMiAvKiBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eU1hYy5t
bSAqLywKKwkJCQlCODc4QjYxMzEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLmgg
Ki8sCisJCQkJQjg3OEI2MTQxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAq
LywKIAkJCQkxQUE0MTdFRDEyQzAwRDg3MDAyQkU2N0IgLyogVGV4dENoZWNrZXJNYWMubW0gKi8s
CiAJCQkJMUExQzY0ODYxMUY0MTVCNzAwNTUzQzE5IC8qIFdlYkNvbnRleHRNYWMubW0gKi8sCiAJ
CQkJNTFBQ0JCOUUxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMuaCAq
LywKIAkJCQk1MUFDQkI5RjEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1h
Yy5tbSAqLywKKwkJCQlDRENBODVERTEzMkFEMDUzMDBFOTYxREYgLyogV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eU1hYy5tbSAqLywKIAkJCQkxQ0E4QjkzNTEyN0M3NzRFMDA1NzZDMkIgLyogV2Vi
SW5zcGVjdG9yUHJveHlNYWMubW0gKi8sCiAJCQkJQkM4NTdFODUxMkI3MUVCQjAwRURFQjJFIC8q
IFdlYlBhZ2VQcm94eU1hYy5tbSAqLywKIAkJCQlCQzU3NTA5NTEyNjhGM0M2MDA2RjBGMTIgLyog
V2ViUG9wdXBNZW51UHJveHlNYWMuaCAqLywKIAkJCQlCQzU3NTA5NjEyNjhGM0M2MDA2RjBGMTIg
LyogV2ViUG9wdXBNZW51UHJveHlNYWMubW0gKi8sCiAJCQkJQkM4NEVCMTcxMkE3MTAwQzAwODNG
MkRBIC8qIFdlYlByZWZlcmVuY2VzTWFjLm1tICovLAorCQkJCUNEQ0E4NUM2MTMyQUJBNEUwMEU5
NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tICovLAorCQkJCUNEQ0E4NUM3
MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zNTM3
LDYgKzM1NDMsNyBAQAogCQkJCTUxMUIyNEFCMTMyRTA5NzIwMDA2NUEwQyAvKiBXZWJJY29uRGF0
YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRDAyRjZBMTMyRUM3MzcwMEJFQUE5NiAvKiBX
ZWJJY29uRGF0YWJhc2VNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFEMDJGNkMxMzJF
QzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUI4NzhCNjE1MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtNDE0OSw2ICs0MTU2LDcgQEAKIAkJCQk1MTFCMjRBQTEzMkUwOTcy
MDAwNjVBMEMgLyogV2ViSWNvbkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRDAy
RjY0MTMyRUM1QjkwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFEMDJGNkIxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25E
YXRhYmFzZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUI4NzhC
NjE2MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MTYwQkZFMTEzMzgxREY5MDA5MTg5OTkgLyogTG9nZ2luZy5tYWMubW0gaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGZhODQyNmEzOGU5NGZiZTNmNDE2NTk4OWY4MTUyZjNh
ZDc0ZTYwNzguLjkyMDBhZjA4MDlkYjVhMDkyYTBhYmRlMGQ4ZWY3ZTA2ZjhiNjMwYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaApAQCAtMTQxLDExICsxNDEsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6
U3RyaW5nJik7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdF
UikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdf
T05fU05PV19MRU9QQVJEKQotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdl
YkNvcmU6OkNvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncywgV2ViQ29yZTo6RWRpdG9yKik7
CisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
CisgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlv
blBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0
aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNTaG93aW5nQ29ycmVjdGlvblBhbmVsKCk7Ci0gICAgdmlydHVhbCB2
b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5
cGUsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcm
IHJlcGxhY2VtZW50U3RyaW5nKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQ29ycmVjdGlv
blBhbmVsU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVj
dGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudFN0cmluZyk7CiAjZW5kaWYKICAgICBXZWJQYWdlKiBtX3BhZ2U7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmluZGV4IDhhZjA0MzgwYzFmZmU4
NGQ5NWRkMWYwODFmZWEwMjBhYTkxNjQ5OWMuLjdhOTVhNzJhNThmNjM5MzkzZjEwNjQwODA4NzVk
MWI0MjIzY2U5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KQEAgLTQ2
LDcgKzQ2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dl
YlJlc291cmNlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViTlNVUkxFeHRyYXMuaD4KLSNpZiAhZGVm
aW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorI2lmICFkZWZpbmVkKEJVSUxE
SU5HX09OX1NOT1dfTEVPUEFSRCkKICNpbXBvcnQgPEFwcEtpdC9OU1RleHRDaGVja2VyLmg+CiAj
ZW5kaWYKIApAQCAtMjQ2LDI2ICsyNDYsMjcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNr
VGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCB1aW50NjQKICAg
ICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNoZWNrVGV4dE9mUGFy
YWdyYXBoKFN0cmluZyh0ZXh0LCBsZW5ndGgpLCBjaGVja2luZ1R5cGVzKSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6Q2hlY2tUZXh0T2ZQYXJhZ3JhcGg6OlJlcGx5KHJlc3VsdHMpKTsKIH0KIAot
I2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9M
RU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi12b2lkIFdlYkVk
aXRvckNsaWVudDo6c2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJ
bmZvOjpQYW5lbFR5cGUgdHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0Jv
eE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29u
c3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MsIFdlYkNvcmU6OkVkaXRvciopCisjaWYgIWRl
ZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNo
b3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBl
IHR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vt
ZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0
cmluZ3MpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvcnJlY3Rpb25QYW5lbCh0eXBlLCBib3VuZGluZ0JveE9m
UmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZywgYWx0ZXJu
YXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRp
c21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rp
b25QYW5lbCkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdl
YkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpc21pc3NDb3JyZWN0aW9uUGFuZWwocmVhc29uKSk7CiB9CiAKLWJvb2wgV2ViRWRpdG9y
Q2xpZW50Ojppc1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwoKQorU3RyaW5nIFdlYkVkaXRvckNsaWVu
dDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2lu
Z0NvcnJlY3Rpb25QYW5lbCByZWFzb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgU3RyaW5nIHJlc3VsdDsKKyAgICBtX3BhZ2UtPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKHJlYXNvbiks
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uOjpSZXBs
eShyZXN1bHQpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVu
dDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0
aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWNvcmRBdXRv
Y29ycmVjdGlvblJlc3BvbnNlKHJlc3BvbnNlVHlwZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2Vt
ZW50U3RyaW5nKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGRhNzdiMGI0OTk4YzY1YWM2ZmFkZjNhOWVkYjY2ZmEw
NmU5ODkwODguLjMwNmJlMzdjZDFmNjM0NTk2MGZmMDJjMzI1YWIxMWQwNTRiZjQ5M2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIxMzEs
NCArMjEzMSwxNCBAQCBib29sIFdlYlBhZ2U6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIHJldHVybiBwbGF0Zm9ybUNhbkhhbmRs
ZVJlcXVlc3QocmVxdWVzdCk7CiB9CiAKKyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX1NOT1dfTEVPUEFSRCkKK3ZvaWQgV2ViUGFnZTo6aGFuZGxlQ29ycmVjdGlvblBh
bmVsUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KQoreworICAgIEZyYW1lKiBmcmFtZSA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICgh
ZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmhhbmRsZUNvcnJl
Y3Rpb25QYW5lbFJlc3VsdChyZXN1bHQpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
YTU3M2RlMjMyNDIyYjlhZDQ1NmM1ZjJhYmEyNWM2NTlmYjExODgwYy4uZjdiOTlkMjU4YjJkZWI4
NzJkZGJlYzU5YzEzN2Y0NWE3YjBmY2VhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNjEsNiArMzYxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldERyYWdTb3VyY2UoTlNPYmplY3QgKik7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQykg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgIHZvaWQgaGFuZGxlQ29y
cmVjdGlvblBhbmVsUmVzdWx0KGNvbnN0IFN0cmluZyYpOworI2VuZGlmCisKIHByaXZhdGU6CiAg
ICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgppbmRleCA2NGY3ZGFmZDA4NjAyODJmNTM4NDE2MjMwNTQwYWExODli
MjExOTIyLi44NjVjZDk4ZDIzMjVlMjdkNDllYzE2ZGY5ZDEyMjIyODNiM2QwZWI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgpAQCAtMTkyLDQgKzE5Miw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogI2lmIFBMQVRG
T1JNKFFUKQogICAgIEZpbmRab29tYWJsZUFyZWFGb3JQb2ludChXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCkKICNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9TTk9XX0xFT1BBUkQpCisgICAgSGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KFN0cmluZyBy
ZXN1bHQpCisjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86694</attachid>
            <date>2011-03-23 14:55:28 -0700</date>
            <delta_ts>2011-03-23 16:58:31 -0700</delta_ts>
            <desc>Patch (v7)</desc>
            <filename>bug-56055-20110323145527.patch</filename>
            <type>text/plain</type>
            <size>82816</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE4MDcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzYzk1NTFhNzVkYjZjYWExNWM5ODU5
NjllNGU3MDdjYmM5Y2YxNjQ5Li4yYTgzNjhmNTgxNWZiNjNkYWFmMzYzNmE5NzQ2YzE0NzgwMGNj
OWJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMjMgIEppYSBQdSAgPGpwdUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SG9vayB1cCBuZXcgQXBwS2l0IGF1dG9jb3JyZWN0aW9uIFVJIHdpdGggV0syLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwNTUKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzg5NDc0NjM+CisKKyAgICAgICAgUGxlYXNlIHNlZSBXZWJDb3JlL0NoYW5n
ZUxvZyBmb3IgZGV0YWlsLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOiBF
bmFibGUgYXV0b2NvcnJlY3Rpb24gdGVzdHMgZm9yIFdLMi4KKwogMjAxMS0wMy0yMyAgWGlhb21l
aSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlh
dHQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKaW5kZXggMWViNGVhZjFkZTU1Mzdm
YWNkYzgwMzAxMjAwMDRjMDIxM2JhZjZlNi4uNjdjODM3OWI3ZDdkMGRiNWVkN2NmMzA3ZTFjOWJm
NTgzODRmZDlhNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lw
cGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZApAQCAtNTY5LDIz
ICs1NjksNiBAQCBwbGF0Zm9ybS9tYWMvZWRpdGluZy9kZWxldGluZy9iYWNrd2FyZC1kZWxldGUu
aHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItc2V0LWRh
dGEtZmlsZS11cmwuaHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNs
aWNrLXNob3VsZC1ub3QtZXhwYW5kLWFjcm9zcy1saW5lcy5odG1sCiBwbGF0Zm9ybS9tYWMvZWRp
dGluZy9zZWxlY3Rpb24vd29yZC10aGFpLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxs
aW5nL2F1dG9jb3JyZWN0aW9uLWNvbnRyYWN0aW9uLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5n
L3NwZWxsaW5nL2F1dG9jb3JyZWN0aW9uLWRlbGV0ZS5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGlu
Zy9zcGVsbGluZy9hdXRvY29ycmVjdGlvbi1yZW1vdmluZy11bmRlcmxpbmUtYWZ0ZXItcGFzdGUu
aHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvYXV0b2NvcnJlY3Rpb24tcmVtb3Zp
bmctdW5kZXJsaW5lLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2F1dG9jb3Jy
ZWN0aW9uLXNpbXBsZS5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9jbGljay1h
dXRvY29ycmVjdGVkLXdvcmQuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZGVs
ZXRlLWF1dG9jb3JyZWN0ZWQtd29yZC0xLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxs
aW5nL2RlbGV0ZS1pbnRvLWF1dG9jb3JyZWN0ZWQtd29yZC5odG1sCi1wbGF0Zm9ybS9tYWMvZWRp
dGluZy9zcGVsbGluZy9kZWxldGUtaW50by1taXNzcGVsbGVkLXdvcmQuaHRtbAotcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy1tdWx0aXBsZS13b3Jkcy13aXRoLW1hcmtlcnMu
aHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy13b3JkLXdpdGgtbWFy
a2VyLTEuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy13b3JkLXdp
dGgtbWFya2VyLTIuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZm9yd2FyZC1k
ZWxldGUtaW50by1hdXRvY29ycmVjdGVkLXdvcmQuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcv
c3BlbGxpbmcvbW92ZS1jdXJzb3ItYXJvdW5kLW1pc3NwZWxsZWQtd29yZC5odG1sCi1wbGF0Zm9y
bS9tYWMvZWRpdGluZy9zcGVsbGluZy9tb3ZlLWN1cnNvci10by1hdXRvY29ycmVjdGVkLXdvcmQu
aHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvbW92ZS1jdXJzb3ItdG8tYmVnaW5u
aW5nLW9mLWF1dG9jb3JyZWN0ZWQtd29yZC5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVs
bGluZy9yZW1vdmluZy11bmRlcmxpbmUtYWZ0ZXItYWNjZXB0aW5nLWF1dG9jb3JyZWN0aW9uLXVz
aW5nLXB1bmN0dWF0aW9uLmh0bWwKIHBsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LWFwcGVh
cmFuY2Utc3BpbmJ1dHRvbi11cC5odG1sCiBwbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC1u
dW1iZXItY2xpY2suaHRtbAogcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvbGlzdGJveC1zY3JvbGxi
YXItaGl0LXRlc3QuaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ1MDM2NWY1YmEyODgzNzgzMDRjZDI0Mzgz
Y2FlNTNjYzc4ODY5MjguLjQ3NDY2ODY4MGM1MTRhYzMwYTdjNjU5ZDNiYWMxZTdhYzE0M2MwMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMS0wMy0yMyAgSmlhIFB1ICA8anB1QGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBIb29rIHVwIG5ldyBBcHBLaXQgYXV0b2NvcnJlY3Rpb24gVUkgd2l0aCBXSzIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA1NQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODk0NzQ2Mz4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIHRvIGVuYWJs
ZSBXSzIgdG8gdXRpbGl6ZSBhdXRvY29ycmVjdGlvbiBVSSBvbiBNYWMgT1MgWC4gSXQgY29udGFp
bnMgZm9sbG93aW5nCisgICAgICAgIG1ham9yIGNoYW5nZXM6CisKKyAgICAgICAgMS4gQWxsIGJ1
dCBvbmUgYXV0b2NvcnJlY3Rpb24gcmVsYXRlZCBtZXNzYWdlIGlzIHN5bmNocm9ub3VzLiBTaW5j
ZSBkaXNtaXNzaW5nIGF1dG9jb3JyZWN0aW9uCisgICAgICAgIHBhbmVsIGNhbiBwb3RlbnRpYWxs
eSBjYXVzZSBlZGl0aW5nIHRvIG9jY3VyLCBhIHN5bmNocm9ub3VzIGRpc21pc3NDb3JyZWN0aW9u
UGFuZWxTb29uKCkgZnVuY3Rpb24KKyAgICAgICAgaXMgaW50cm9kdWNlZCB0byBlbnN1cmUgYWxs
IGVkaXRpbmcgY29tbWFuZHMgb2NjdXIgaW4gY29ycmVjdCBvcmRlci4KKworICAgICAgICAyLiBB
ZGRpdGlvbmFsIGNvbmRpdGlvbiB2YXJpYWJsZSBpcyBuZWVkZWQgdG8gaW1wbGVtZW50IGRpc21p
c3NDb3JyZWN0aW9uUGFuZWxTb29uKCkuCisgICAgICAgIFRvIGltcHJvdmUgbWFpbnRhaW5hYmls
aXR5LCBDb3JyZWN0aW9uUGFuZWwgY2xhc3MgaXMgaW50cm9kdWNlZCB0byBtYW5hZ2UgdGhlCisg
ICAgICAgIGludGVybmFsIHN0YXRlIHJlbGF0ZWQgdG8gY29ycmVjdGlvbiBwYW5lbC4gVGhpcyBj
aGFuZ2UgaXMgYXBwbGllZCB0byBib3RoIFdLMSBhbmQgV0syLgorCisgICAgICAgIDMuIEVkaXRv
ckNsaWVudDo6aXNTaG93aW5nQ29ycmVjdGlvblBhbmVsKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVGhl
IG9yaWdpbmFsIHB1cnBvc2UgaXMgdG8gYWxsb3cKKyAgICAgICAgZWRpdG9yIHRvIGtub3cgd2hl
biB0byBoYW5kbGUgRVNDIGtleSBldmVudC4gTm93IHRoaXMgaXMgaGFuZGxlZCBpbnRlcm5hbGx5
IGluIEFwcEtpdCwgc28KKyAgICAgICAgRWRpdG9yQ2xpZW50Ojppc1Nob3dpbmdDb3JyZWN0aW9u
UGFuZWwoKSBpc24ndCBuZWNlc3NhcnkgYW55bW9yZS4KKworICAgICAgICA0LiBUaGUgRWRpdG9y
KiBhcmd1bWVudCBpbiBFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwoKSBoYXMgYmVl
biByZW1vdmVkLCBzaW5jZSB3ZSBjYW4KKyAgICAgICAgYWNjZXNzIG9iamVjdCB2aWEgV2ViVmll
dyBvciBXS1ZpZXcuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5S
YW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjb3JyZWN0aW9uUGFuZWxUaW1lckZp
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlBdXRvY29ycmVjdGlvbkJlZm9yZVR5cGlu
Z0lmQXBwcm9wcmlhdGUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICog
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbW1h
bmRNYXApOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVtcHR5RWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKToKKyAgICAgICAgKFdl
YkNvcmU6OkVtcHR5RWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbik6Cisg
ICAgICAgICogbWFudWFsLXRlc3RzL2F1dG9jb3JyZWN0aW9uL2Nsb3NlLXdpbmRvdy13aGVuLWNv
cnJlY3Rpb24taXMtc2hvd24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGFnZS9FZGl0b3JDbGll
bnQuaDoKKwogMjAxMS0wMy0yMyAgWGlhb21laSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlhdHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
aW5kZXggODgwNzk2NTA2OGE0MzkxMGE5YWQ5MzY1MWUxNDYyZWNjOGU5Y2Y5YS4uYjhjOTVjY2U1
OGFjNTdhYzFkOTk5NzZmNGRmODZhNmM4Y2JlMGYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcApAQCAtMjA3Miw3ICsyMDcyLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NB
ZnRlclR5cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwKICAgICAg
ICAgICAgIGRvQXBwbHlDb3JyZWN0aW9uID0gZmFsc2U7CiAgICAgfQogICAgIGlmIChkb0FwcGx5
Q29ycmVjdGlvbikKLSAgICAgICAgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNt
aXNzaW5nQ29ycmVjdGlvblBhbmVsQWNjZXB0ZWQpOworICAgICAgICBoYW5kbGVDb3JyZWN0aW9u
UGFuZWxSZXN1bHQoZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oUmVhc29uRm9yRGlzbWlzc2lu
Z0NvcnJlY3Rpb25QYW5lbEFjY2VwdGVkKSk7CiAgICAgZWxzZQogICAgICAgICBtX2NvcnJlY3Rp
b25QYW5lbEluZm8ucmFuZ2VUb0JlUmVwbGFjZWQuY2xlYXIoKTsKICNlbHNlCkBAIC0yMzg3LDcg
KzIzODcsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAgICAgICAgICAgICAgICBt
X2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRTdHJpbmcgPSBwbGFpblRleHQocmFuZ2VUb1Jl
cGxhY2UuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8u
cmVwbGFjZW1lbnRTdHJpbmcgPSByZXN1bHQtPnJlcGxhY2VtZW50OwogICAgICAgICAgICAgICAg
ICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8uaXNBY3RpdmUgPSB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICBjbGllbnQoKS0+c2hvd0NvcnJlY3Rpb25QYW5lbChtX2NvcnJlY3Rpb25QYW5lbElu
Zm8ucGFuZWxUeXBlLCBib3VuZGluZ0JveCwgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJlcGxhY2Vk
U3RyaW5nLCByZXN1bHQtPnJlcGxhY2VtZW50LCBWZWN0b3I8U3RyaW5nPigpLCB0aGlzKTsKKyAg
ICAgICAgICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFuZWwobV9jb3JyZWN0
aW9uUGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3gsIG1fY29ycmVjdGlvblBhbmVsSW5m
by5yZXBsYWNlZFN0cmluZywgcmVzdWx0LT5yZXBsYWNlbWVudCwgVmVjdG9yPFN0cmluZz4oKSk7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAvLyBJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmb3Igc2hvd2luZyBjb3JyZWN0
aW9uIHBhbmVsLCB3ZSBpZ25vcmUgb3RoZXIgY29ycmVjdGlvbiBvciByZXBsYWNlbWVudC4KQEAg
LTI1MTcsNyArMjUxNyw3IEBAIHZvaWQgRWRpdG9yOjpjb3JyZWN0aW9uUGFuZWxUaW1lckZpcmVk
KFRpbWVyPEVkaXRvcj4qKQogICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRT
dHJpbmcgPSBwbGFpblRleHQobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJhbmdlVG9CZVJlcGxhY2Vk
LmdldCgpKTsKICAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gd2luZG93UmVjdEZvclJh
bmdlKG1fY29ycmVjdGlvblBhbmVsSW5mby5yYW5nZVRvQmVSZXBsYWNlZC5nZXQoKSk7CiAgICAg
ICAgIGlmICghYm91bmRpbmdCb3guaXNFbXB0eSgpKQotICAgICAgICAgICAgY2xpZW50KCktPnNo
b3dDb3JyZWN0aW9uUGFuZWwobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRp
bmdCb3gsIG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNlZFN0cmluZywgbV9jb3JyZWN0aW9u
UGFuZWxJbmZvLnJlcGxhY2VtZW50U3RyaW5nLCBWZWN0b3I8U3RyaW5nPigpLCB0aGlzKTsKKyAg
ICAgICAgICAgIGNsaWVudCgpLT5zaG93Q29ycmVjdGlvblBhbmVsKG1fY29ycmVjdGlvblBhbmVs
SW5mby5wYW5lbFR5cGUsIGJvdW5kaW5nQm94LCBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFj
ZWRTdHJpbmcsIG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNlbWVudFN0cmluZywgVmVjdG9y
PFN0cmluZz4oKSk7CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIENvcnJlY3Rpb25Q
YW5lbEluZm86OlBhbmVsVHlwZVNwZWxsaW5nU3VnZ2VzdGlvbnM6IHsKQEAgLTI1MzUsNyArMjUz
NSw3IEBAIHZvaWQgRWRpdG9yOjpjb3JyZWN0aW9uUGFuZWxUaW1lckZpcmVkKFRpbWVyPEVkaXRv
cj4qKQogICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8uaXNBY3RpdmUgPSB0cnVlOwogICAg
ICAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3ggPSB3aW5kb3dSZWN0Rm9yUmFuZ2UobV9jb3JyZWN0
aW9uUGFuZWxJbmZvLnJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKTsKICAgICAgICAgaWYgKCFib3Vu
ZGluZ0JveC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBjbGllbnQoKS0+c2hvd0NvcnJlY3Rpb25Q
YW5lbChtX2NvcnJlY3Rpb25QYW5lbEluZm8ucGFuZWxUeXBlLCBib3VuZGluZ0JveCwgbV9jb3Jy
ZWN0aW9uUGFuZWxJbmZvLnJlcGxhY2VkU3RyaW5nLCB0b3BTdWdnZXN0aW9uLCBzdWdnZXN0aW9u
cywgdGhpcyk7CisgICAgICAgICAgICBjbGllbnQoKS0+c2hvd0NvcnJlY3Rpb25QYW5lbChtX2Nv
cnJlY3Rpb25QYW5lbEluZm8ucGFuZWxUeXBlLCBib3VuZGluZ0JveCwgbV9jb3JyZWN0aW9uUGFu
ZWxJbmZvLnJlcGxhY2VkU3RyaW5nLCB0b3BTdWdnZXN0aW9uLCBzdWdnZXN0aW9ucyk7CiAgICAg
fQogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yNjAxLDM5ICsyNjAxLDM2IEBAIHZvaWQgRWRp
dG9yOjpzdG9wQ29ycmVjdGlvblBhbmVsVGltZXIoKQogI2VuZGlmCiB9CiAKLXZvaWQgRWRpdG9y
OjpoYW5kbGVDYW5jZWxPcGVyYXRpb24oKQordm9pZCBFZGl0b3I6OmRpc21pc3NDb3JyZWN0aW9u
UGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb25Gb3JEaXNtaXNz
aW5nKQogewogI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKICAgICBpZiAoIW1fY29y
cmVjdGlvblBhbmVsSW5mby5pc0FjdGl2ZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29ycmVj
dGlvblBhbmVsSW5mby5pc0FjdGl2ZSA9IGZhbHNlOworICAgIG1fY29ycmVjdGlvblBhbmVsSXNE
aXNtaXNzZWRCeUVkaXRvciA9IHRydWU7CiAgICAgaWYgKGNsaWVudCgpKQotICAgICAgICBjbGll
bnQoKS0+ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlv
blBhbmVsQ2FuY2VsbGVkKTsKLSNlbmRpZgotfQotCi1ib29sIEVkaXRvcjo6aXNTaG93aW5nQ29y
cmVjdGlvblBhbmVsKCkKLXsKLSNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCi0gICAg
aWYgKGNsaWVudCgpKQotICAgICAgICByZXR1cm4gY2xpZW50KCktPmlzU2hvd2luZ0NvcnJlY3Rp
b25QYW5lbCgpOworICAgICAgICBjbGllbnQoKS0+ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChyZWFz
b25Gb3JEaXNtaXNzaW5nKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlYXNvbkZvckRpc21p
c3NpbmcpOwogI2VuZGlmCi0gICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEVkaXRvcjo6ZGlz
bWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJl
YXNvbkZvckRpc21pc3NpbmcpCitTdHJpbmcgRWRpdG9yOjpkaXNtaXNzQ29ycmVjdGlvblBhbmVs
U29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbkZvckRpc21pc3Np
bmcpCiB7CiAjaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTAogICAgIGlmICghbV9jb3Jy
ZWN0aW9uUGFuZWxJbmZvLmlzQWN0aXZlKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8uaXNBY3RpdmUgPSBmYWxzZTsK
ICAgICBtX2NvcnJlY3Rpb25QYW5lbElzRGlzbWlzc2VkQnlFZGl0b3IgPSB0cnVlOwotICAgIGlm
IChjbGllbnQoKSkKLSAgICAgICAgY2xpZW50KCktPmRpc21pc3NDb3JyZWN0aW9uUGFuZWwocmVh
c29uRm9yRGlzbWlzc2luZyk7CisgICAgaWYgKCFjbGllbnQoKSkKKyAgICAgICAgcmV0dXJuIFN0
cmluZygpOworICAgIHJldHVybiBjbGllbnQoKS0+ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24o
cmVhc29uRm9yRGlzbWlzc2luZyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZWFzb25Gb3JE
aXNtaXNzaW5nKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7CiAjZW5kaWYKIH0KKwogdm9pZCBFZGl0
b3I6OnJlbW92ZVNwZWxsQW5kQ29ycmVjdGlvbk1hcmtlcnNGcm9tV29yZHNUb0JlRWRpdGVkKGJv
b2wgZG9Ob3RSZW1vdmVJZlNlbGVjdGlvbkF0V29yZEJvdW5kYXJ5KQogewogICAgIC8vIFdlIHdh
bnQgdG8gcmVtb3ZlIHRoZSBtYXJrZXJzIGZyb20gYSB3b3JkIGlmIGFuIGVkaXRpbmcgY29tbWFu
ZCB3aWxsIGNoYW5nZSB0aGUgd29yZC4gVGhpcyBjYW4gaGFwcGVuIGluIG9uZSBvZgpAQCAtMjc2
OCw3ICsyNzY1LDcgQEAgYm9vbCBFZGl0b3I6OmFwcGx5QXV0b2NvcnJlY3Rpb25CZWZvcmVUeXBp
bmdJZkFwcHJvcHJpYXRlKCkKICAgICBQb3NpdGlvbiBjYXJldFBvc2l0aW9uID0gbV9mcmFtZS0+
c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnN0YXJ0KCk7CiAKICAgICBpZiAobV9jb3JyZWN0aW9u
UGFuZWxJbmZvLnJhbmdlVG9CZVJlcGxhY2VkLT5lbmRQb3NpdGlvbigpID09IGNhcmV0UG9zaXRp
b24pIHsKLSAgICAgICAgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5n
Q29ycmVjdGlvblBhbmVsQWNjZXB0ZWQpOworICAgICAgICBoYW5kbGVDb3JyZWN0aW9uUGFuZWxS
ZXN1bHQoZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJl
Y3Rpb25QYW5lbEFjY2VwdGVkKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gCiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBlMWE3MTE5MjQ1ZTgzYmVkMTBkNzNkMjA1ZWZl
MjE1NDA4NWM1NjllLi41ZmI0OGM1ZDA1NmM1NTA5ZDdkYjJjNTMzN2I5ZmRjMzg4Y2I1OTYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTMyMCwxMSArMzIwLDkgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBhZGRUb0tpbGxSaW5nKFJhbmdlKiwgYm9vbCBwcmVwZW5kKTsKIAotICAgIHZvaWQg
aGFuZGxlQ2FuY2VsT3BlcmF0aW9uKCk7CiAgICAgdm9pZCBzdGFydENvcnJlY3Rpb25QYW5lbFRp
bWVyKENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSk7CiAgICAgLy8gSWYgdXNlciBjb25m
aXJtZWQgYSBjb3JyZWN0aW9uIGluIHRoZSBjb3JyZWN0aW9uIHBhbmVsLCBjb3JyZWN0aW9uIGhh
cyBub24temVybyBsZW5ndGgsIG90aGVyd2lzZSBpdCBtZWFucyB0aGF0IHVzZXIgaGFzIGRpc21p
c3NlZCB0aGUgcGFuZWwuCiAgICAgdm9pZCBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQoY29u
c3QgU3RyaW5nJiBjb3JyZWN0aW9uKTsKLSAgICBib29sIGlzU2hvd2luZ0NvcnJlY3Rpb25QYW5l
bCgpOwogCiAgICAgdm9pZCBwYXN0ZUFzRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSk7CiAgICAgdm9pZCBwYXN0
ZUFzUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYsIGJvb2wgc21hcnRSZXBsYWNlKTsKQEAgLTQyNSw2
ICs0MjMsNyBAQCBwcml2YXRlOgogICAgIE5vZGUqIGZpbmRFdmVudFRhcmdldEZyb21TZWxlY3Rp
b24oKSBjb25zdDsKICAgICB2b2lkIHN0b3BDb3JyZWN0aW9uUGFuZWxUaW1lcigpOwogICAgIHZv
aWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBh
bmVsKTsKKyAgICBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oUmVhc29uRm9yRGlz
bWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7CiAgICAgdm9pZCBhcHBseUNvcnJlY3Rpb25QYW5lbElu
Zm8oY29uc3QgVmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYgbWFya2VyVHlwZXNU
b0FkZCk7CiAgICAgLy8gUmV0dXJuIHRydWUgaWYgY29ycmVjdGlvbiB3YXMgYXBwbGllZCwgZmFs
c2Ugb3RoZXJ3aXNlLgogICAgIGJvb2wgYXBwbHlBdXRvY29ycmVjdGlvbkJlZm9yZVR5cGluZ0lm
QXBwcm9wcmlhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmlu
ZGV4IDZlYTk5NTRkOTVkNjQ3ZGE3ZmMzYmFlZjg3M2IyMWU2YzdhYzAxNzQuLjllYWZkMThiNTIy
ZDJiZmM2M2IxMmYyYTg4NTJmZDg3YjNlNTdjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3JDb21tYW5kLmNwcApAQCAtMTA5MSwxNCArMTA5MSw2IEBAIHN0YXRpYyBib29sIGV4ZWN1
dGVZYW5rQW5kU2VsZWN0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9O
X1BBTkVMCi1zdGF0aWMgYm9vbCBleGVjdXRlQ2FuY2VsT3BlcmF0aW9uKEZyYW1lKiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQotewotICAgIGZyYW1l
LT5lZGl0b3IoKS0+aGFuZGxlQ2FuY2VsT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0jZW5kaWYKLQogLy8gU3VwcG9ydGVkIGZ1bmN0aW9ucwogCiBzdGF0aWMgYm9vbCBzdXBwb3J0
ZWQoRnJhbWUqKQpAQCAtMTI0OSwxMyArMTI0MSw2IEBAIHN0YXRpYyBib29sIGVuYWJsZWRVbmRv
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogICAgIHJldHVybiBm
cmFtZS0+ZWRpdG9yKCktPmNhblVuZG8oKTsKIH0KIAotI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJ
T05fUEFORUwKLXN0YXRpYyBib29sIGVuYWJsZWREaXNtaXNzQ29ycmVjdGlvblBhbmVsKEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQotewotICAgIHJldHVybiBmcmFt
ZS0+ZWRpdG9yKCktPmlzU2hvd2luZ0NvcnJlY3Rpb25QYW5lbCgpOwotfQotI2VuZGlmCi0KIC8v
IFN0YXRlIGZ1bmN0aW9ucwogCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVOb25lKEZyYW1lKiwgRXZl
bnQqKQpAQCAtMTUzMiwxMCArMTUxNyw2IEBAIHN0YXRpYyBjb25zdCBDb21tYW5kTWFwJiBjcmVh
dGVDb21tYW5kTWFwKCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIHsgIlRha2VGaW5kU3Ry
aW5nRnJvbVNlbGVjdGlvbiIsIHsgZXhlY3V0ZVRha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbiwg
c3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRUYWtlRmluZFN0cmluZ0Zyb21T
ZWxlY3Rpb24sIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFs
bG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICNlbmRpZgotCi0jaWYgU1VQUE9SVF9BVVRP
Q09SUkVDVElPTl9QQU5FTAotICAgICAgICB7ICJDYW5jZWxPcGVyYXRpb24iLCB7IGV4ZWN1dGVD
YW5jZWxPcGVyYXRpb24sIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkRGlz
bWlzc0NvcnJlY3Rpb25QYW5lbCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRp
b24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAotI2VuZGlmCiAgICAgfTsK
IAogICAgIC8vIFRoZXNlIHVuc3VwcG9ydGVkIGNvbW1hbmRzIGFyZSBsaXN0ZWQgaGVyZSBzaW5j
ZSB0aGV5IGFwcGVhciBpbiB0aGUgTWljcm9zb2Z0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgKaW5kZXggZWQ5MmYxMTJjYmE4NzdmZDUyYzM0NjQwN2Y1YjRmZmUyNjEyMGY2Yy4uM2Iw
YWQyZTdhZDY0YjcwOTU5M2M4ZDEzZjMwNDE4ZGNjZTUxZjBhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaApAQCAtNTExLDkgKzUxMSw5IEBAIHB1YmxpYzoKICAgICBUZXh0Q2hl
Y2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiAmbV90ZXh0Q2hlY2tlckNsaWVudDsg
fQogCiAjaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTAotICAgIHZpcnR1YWwgdm9pZCBz
aG93Q29ycmVjdGlvblBhbmVsKENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBFZGl0b3IqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5l
bChDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0Nv
cnJlY3Rpb25QYW5lbCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2hvd2luZ0NvcnJlY3Rpb25Q
YW5lbCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJl
Y3Rpb25QYW5lbFNvb24oUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCkgeyByZXR1
cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJikgeyB9CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhH
cmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IEdyYW1tYXJEZXRhaWwmKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0cy9hdXRvY29ycmVjdGlvbi9jbG9z
ZS13aW5kb3ctd2hlbi1jb3JyZWN0aW9uLWlzLXNob3duLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9t
YW51YWwtdGVzdHMvYXV0b2NvcnJlY3Rpb24vY2xvc2Utd2luZG93LXdoZW4tY29ycmVjdGlvbi1p
cy1zaG93bi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjODJhMjBmNTgxNWY3YTM3YzllNTk0Y2E3N2ZmNjIw
OWEwNTQ4YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMv
YXV0b2NvcnJlY3Rpb24vY2xvc2Utd2luZG93LXdoZW4tY29ycmVjdGlvbi1pcy1zaG93bi5odG1s
CkBAIC0wLDAgKzEsNDggQEAKKzxodG1sPgorPGhlYWQ+CisKKzxzdHlsZT4KKy5lZGl0aW5nIHsK
KyAgICBib3JkZXI6IDJweCBzb2xpZCByZWQ7CisgICAgcGFkZGluZzogMTJweDsKKyAgICBmb250
LXNpemU6IDI0cHg7Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Li4vLi4vLi4vLi4vTGF5b3V0
VGVzdHMvZWRpdGluZy9lZGl0aW5nLmpzIGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0
L0phdmFTY3JpcHQiID48L3NjcmlwdD4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIGVkaXRpbmdUZXN0
KCkgeworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCd0Jyk7CisgICAgdHlwZUNoYXJhY3RlckNv
bW1hbmQoJ2gnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnZScpOworICAgIHR5cGVDaGFy
YWN0ZXJDb21tYW5kKCcgJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ20nKTsKKyAgICB0
eXBlQ2hhcmFjdGVyQ29tbWFuZCgnZScpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdzJyk7
CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2EnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFu
ZCgnZScpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdnJyk7CisgICAgdHlwZUNoYXJhY3Rl
ckNvbW1hbmQoJ2UnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnZScpOworICAgIHR5cGVD
aGFyYWN0ZXJDb21tYW5kKCcgJyk7CisgICAgZXhlY01vdmVTZWxlY3Rpb25CYWNrd2FyZEJ5Q2hh
cmFjdGVyQ29tbWFuZCgpOworfQorCis8L3NjcmlwdD4KKworPHRpdGxlPlRlc3RpbmcgY2xvc2lu
ZyB3aW5kb3cgd2hlbiBjb3JyZWN0aW9uIHN1Z2dlc3Rpb24gaXMgc2hvd248L3RpdGxlPgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2PjxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdoZW4gY29ycmVj
dGlvbiBzdWdnZXN0aW9uIGlzIHZpc2libGUsIGNsb3Npbmcgd2luZG93IGRvZXNuJ3QgaGFuZyBv
ciBjcmFzaC48L3A+Cis8cD5BZnRlciBzZWVpbmcgdGhlIHBhbmVsIHdpdGggbXVsdGlwbGUgY2Fu
ZGlkYXRlcywgY2xvc2UgdGhlIHdpbmRvdy48L3A+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZSBpZD0i
cm9vdCIgY2xhc3M9ImVkaXRpbmciPgorPHNwYW4gaWQ9InRlc3QiPjwvc3Bhbj4KKzwvZGl2Pgor
CisKKzxzY3JpcHQ+CitydW5FZGl0aW5nVGVzdCgpOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IGQ1ZGU2YTQxMDJjYmQyNzY4
ZGFjOWRhM2Y1ZjFhZDllY2Y4MDNkNTAuLmFlZGE4NDQ1ODhjYTZlZjU1ZjA2ODIzNDI4NTM3MDM1
OWM3YWE1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMTU4LDE0ICsxNTgs
MTUgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNr
ZXIoKSA9IDA7CiAKLSNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCiAgICAgZW51bSBB
dXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSB7CiAgICAgICAgIEF1dG9jb3JyZWN0aW9uRWRpdGVk
LAogICAgICAgICBBdXRvY29ycmVjdGlvblJldmVydGVkCiAgICAgfTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2hvd0NvcnJlY3Rpb25QYW5lbChDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY21lbnRTdHJpbmcsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncywgRWRpdG9yKikgPSAw
OworCisjaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTAorICAgIHZpcnR1YWwgdm9pZCBz
aG93Q29ycmVjdGlvblBhbmVsKENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3Qg
RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjbWVudFN0cmluZywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rp
b25QYW5lbCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwo
KSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oUmVh
c29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3Ry
aW5nKSA9IDA7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwM2UxODE2NWQ4NDZlNTcyNzUyNThhYjQ0
OTEyOWM5ZjJiNjRhZGI2Li5jNzA0Y2U1NTI4Y2RlOGRmYWJiYWUzZTZmNDNkZjlhM2Q2MzVjNWY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTAzLTIzICBKaWEgUHUgIDxqcHVAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEhvb2sgdXAgbmV3IEFwcEtpdCBhdXRvY29ycmVjdGlvbiBVSSB3aXRoIFdLMi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDU1CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84OTQ3NDYzPgorCisgICAgICAgIFBsZWFzZSBzZWUgV2ViQ29yZS9DaGFu
Z2VMb2cgZm9yIGRldGFpbC4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorCiAyMDExLTAzLTE3ICBKZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVc2UgYSBjb25zaXN0ZW50IHNldCBvZiBmaWxlIHBhdHRlcm5zIGluIHRoZSBzdm46
aWdub3JlIHByb3BlcnR5IGZvciBhbGwgLnhjb2RlcHJvaiBkaXJlY3Rvcmllcywgc3BlY2lmaWNh
bGx5OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMjBjMTU2Zjc5N2RiOTQwMjI4NGEwZDI1NTk1ZGNlYjk0NmE4ZjRkMy4uMDZhNTU2NjI3
NDk4Nzg4YjRhNWU5NjAwYmYzMDYxZTU1YTRmM2MxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNDQsNiArMzQ0LDggQEAKIAkJQjZD
RTVDMjUxMDBCQzVGNTAwMjE5OTM2IC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2ODA0OTcxMEZGQkNFQzEwMDlG
N0Y2MiAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjgwNDE3NkYxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYklu
c3BlY3RvckZyb250ZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCODA0MTc2RDEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmQu
aCAqLzsgfTsKIAkJQjgwNDE3NzAxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250
ZW5kLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjgw
NDE3NkUxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250ZW5kLm1tICovOyB9Owor
CQlCODI5NThEMzEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCODI5NThEMTEzMjcwN0QwMDAw
RDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLmggKi87IH07CisJCUI4Mjk1OEQ0MTMyNzA3RDAwMDBE
MEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCODI5NThEMjEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBh
bmVsLm1tICovOyB9OwogCQlCQzI2QzY5RTEwQjc0M0Y0MDBCNjg3RUQgLyogV2ViU2VyaWFsaXpl
ZEpTVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjZDNjlEMTBCNzQzRjQwMEI2ODdFRCAvKiBXZWJTZXJpYWxpemVkSlNWYWx1ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMjZDNkE1MTBC
NzQ0N0EwMEI2ODdFRCAvKiBXZWJTZXJpYWxpemVkSlNWYWx1ZS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjZDNkE0MTBCNzQ0N0EwMEI2ODdFRCAv
KiBXZWJTZXJpYWxpemVkSlNWYWx1ZS5tbSAqLzsgfTsKIAkJQkMyRTQ2NEQwRkQ4QTk2ODAwQTlE
OURFIC8qIFdlYlZpZXdEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzJFNDY0QjBGRDhBOTY4MDBBOUQ5REUgLyogV2ViVmlld0RhdGEuaCAqLzsg
fTsKQEAgLTY2MCw2ICs2NjIsOCBAQAogCQlCNjgwNDk3MjBGRkJDRUMxMDA5RjdGNjIgLyogV2Vi
QXBwbGljYXRpb25DYWNoZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYkFwcGxpY2F0aW9uQ2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUI4MDQxNzZEMTIxN0E4MzEwMDQ2NkJBRSAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3JGcm9udGVuZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCODA0MTc2RTEyMTdBODMxMDA0NjZCQUUgLyogV2Vi
SW5zcGVjdG9yRnJvbnRlbmQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJJbnNwZWN0b3JGcm9udGVuZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQjgyOTU4RDExMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JyZWN0aW9uUGFuZWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQjgyOTU4RDIxMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25Q
YW5lbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvcnJlY3Rp
b25QYW5lbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyNkM2OUQxMEI3NDNG
NDAwQjY4N0VEIC8qIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDMjZDNkE0MTBCNzQ0N0EwMEI2ODdFRCAvKiBXZWJTZXJpYWxpemVkSlNWYWx1
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNlcmlhbGl6
ZWRKU1ZhbHVlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJFNDY0QjBGRDhB
OTY4MDBBOUQ5REUgLyogV2ViVmlld0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViVmlld0RhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTUs
NiArMTI5OSw4IEBACiAJCUY1QjM2QjQwMDI4MURFODcwMTg2MzVDQiAvKiBXZWJDb3JlU3VwcG9y
dCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQjgyOTU4
RDExMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5oICovLAorCQkJCUI4Mjk1OEQy
MTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gKi8sCiAJCQkJNTk4QUQ5MUQx
MjAxQ0VDRjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50Lm1tICovLAogCQkJ
CTU5OEFEOTE5MTIwMUNFQzkwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5o
ICovLAogCQkJCUI2ODA0OTcxMEZGQkNFQzEwMDlGN0Y2MiAvKiBXZWJBcHBsaWNhdGlvbkNhY2hl
LmggKi8sCkBAIC0xNjQ1LDYgKzE2NTEsNyBAQAogCQkJCTNBRTE1RDUwMTJEQkRFRDQwMDkzMjND
OCAvKiBXZWJTdG9yYWdlTWFuYWdlckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzQUJC
M0M3QTEzMDlDM0I1MDBFOTNEOTQgLyogV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNDJEMzI0MTMxRUQxRTAwMDc1RkE0QiAvKiBXZWJMb2NhbGl6YWJsZVN0
cmluZ3NJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjgyOTU4RDMxMzI3MDdEMDAwMEQw
RTc5IC8qIENvcnJlY3Rpb25QYW5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDE1LDYgKzIwMjIs
NyBAQAogCQkJCUNEQTYyQUUzMTI1Rjg3QzIwMDdGRDExOCAvKiBXZWJGdWxsU2NyZWVuQ29udHJv
bGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTNBQkIzQzdCMTMwOUMzQjUwMEU5M0Q5NCAvKiBX
ZWJTdG9yYWdlVHJhY2tlckNsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNDJEMzREMTMx
RUQzODgwMDc1RkE0QiAvKiBXZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCUI4Mjk1OEQ0MTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwu
bW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAzMGI1M2VhMWI5Yjc1NzE5M2Uz
MzkwZWM4YjM0MDc2ODlmNTM0N2VkLi5lZWZmMmFhMjVjMWRhMDBiMjc5MmY4MDk2NTVlNmNjYTI5
NmU3NThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDMtMjMgIEpp
YSBQdSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSG9vayB1cCBuZXcgQXBwS2l0IGF1dG9jb3JyZWN0aW9uIFVJIHdpdGgg
V0syLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYw
NTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg5NDc0NjM+CisKKyAgICAgICAgUGxlYXNlIHNl
ZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3IgZGV0YWlsLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ29ycmVjdGlvblBhbmVsLmg6IEFkZGVkLgorICAgICAgICAoQ29ycmVjdGlvblBhbmVsOjpp
c1Nob3dpbmcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbTog
QWRkZWQuCisgICAgICAgIChjb3JyZWN0aW9uQnViYmxlVHlwZSk6CisgICAgICAgIChDb3JyZWN0
aW9uUGFuZWw6OkNvcnJlY3Rpb25QYW5lbCk6CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6On5D
b3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoQ29ycmVjdGlvblBhbmVsOjpzaG93KToKKyAgICAg
ICAgKENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzcyk6CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6
OmRpc21pc3NTb29uKToKKyAgICAgICAgKENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzc0ludGVybmFs
KToKKyAgICAgICAgKENvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25z
ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9y
Q2xpZW50OjpXZWJFZGl0b3JDbGllbnQpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpzaG93
Q29ycmVjdGlvblBhbmVsKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6ZGlzbWlzc0NvcnJl
Y3Rpb25QYW5lbCk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3JyZWN0aW9u
UGFuZWxTb29uKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
ZWJWaWV3IGhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDpdKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTEtMDMtMjIgIEFudG9uIEQnQXVyaWEgIDxhZGF1cmlh
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBh
bmVsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44YWRiNzlmMjM2YThlN2I2OGYzYWViMmEzNTQ1YjNhYzdiNWU2Y2YzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVj
dGlvblBhbmVsLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29ycmVj
dGlvblBhbmVsX2gKKyNkZWZpbmUgQ29ycmVjdGlvblBhbmVsX2gKKworI2lmICFkZWZpbmVkKEJV
SUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVm
aW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisjaW1wb3J0IDxBcHBLaXQvTlNUZXh0Q2hl
Y2tlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9Db3JyZWN0aW9uUGFuZWxJbmZvLmg+CisjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CisKK0BjbGFzcyBXZWJWaWV3OworCitjbGFzcyBDb3JyZWN0aW9u
UGFuZWwgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvcnJlY3Rpb25QYW5lbCk7CitwdWJs
aWM6CisgICAgQ29ycmVjdGlvblBhbmVsKCk7CisgICAgfkNvcnJlY3Rpb25QYW5lbCgpOworICAg
IHZvaWQgc2hvdyhXZWJWaWV3KiwgV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxU
eXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVu
dFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJp
bmdzKTsKKyAgICB2b2lkIGRpc21pc3MoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJl
Y3Rpb25QYW5lbCk7CisgICAgU3RyaW5nIGRpc21pc3NTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRp
c21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOworICAgIHN0YXRpYyB2b2lkIHJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UoV2ViVmlldyosIE5TQ29ycmVjdGlvblJlc3BvbnNlLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKKwor
cHJpdmF0ZToKKyAgICBib29sIGlzU2hvd2luZygpIGNvbnN0IHsgcmV0dXJuIG1fdmlldzsgfQor
ICAgIHZvaWQgZGlzbWlzc0ludGVybmFsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3Jy
ZWN0aW9uUGFuZWwsIGJvb2wgZGlzbWlzc2luZ0V4dGVybmFsbHkpOworICAgIHZvaWQgaGFuZGxl
QWNjZXB0ZWRSZXBsYWNlbWVudChOU1N0cmluZyogYWNjZXB0ZWRSZXBsYWNlbWVudCwgTlNTdHJp
bmcqIHJlcGxhY2VkLCBOU1N0cmluZyogcHJvcG9zZWRSZXBsYWNlbWVudCwgTlNDb3JyZWN0aW9u
QnViYmxlVHlwZSk7CisKKyAgICBib29sIG1fd2FzRGlzbWlzc2VkRXh0ZXJuYWxseTsKKyAgICBX
ZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIG1fcmVhc29uRm9yRGlz
bWlzc2luZzsKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gbV92aWV3OworICAgIFJldGFpblB0cjxO
U1N0cmluZz4gbV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rpc21pc3NhbDsKKyAgICBSZXRhaW5QdHI8
TlNDb25kaXRpb24+IG1fcmVzdWx0Q29uZGl0aW9uOworfTsKKworI2VuZGlmIC8vICFkZWZpbmVk
KEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisKKyNlbmRpZiAvLyBDb3JyZWN0aW9u
UGFuZWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29y
cmVjdGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVj
dGlvblBhbmVsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4M2I2MzRhZGQ1ZDRjYTM5MGIyMzkyMTU4Y2RhZDRk
Y2IyZjM1NmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9Db3JyZWN0aW9uUGFuZWwubW0KQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lt
cG9ydCAiQ29ycmVjdGlvblBhbmVsLmgiCisKKyNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCisK
KyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
TEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBpbmxpbmUgTlNDb3JyZWN0aW9uQnViYmxlVHlwZSBj
b3JyZWN0aW9uQnViYmxlVHlwZShDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUgcGFuZWxU
eXBlKQoreworICAgIHN3aXRjaCAocGFuZWxUeXBlKSB7CisgICAgY2FzZSBDb3JyZWN0aW9uUGFu
ZWxJbmZvOjpQYW5lbFR5cGVDb3JyZWN0aW9uOgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9u
QnViYmxlVHlwZUNvcnJlY3Rpb247CisgICAgY2FzZSBDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5l
bFR5cGVSZXZlcnNpb246CisgICAgICAgIHJldHVybiBOU0NvcnJlY3Rpb25CdWJibGVUeXBlUmV2
ZXJzaW9uOworICAgIGNhc2UgQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlU3BlbGxpbmdT
dWdnZXN0aW9uczoKKyAgICAgICAgcmV0dXJuIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVHdWVzc2Vz
OworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTlNDb3JyZWN0
aW9uQnViYmxlVHlwZUNvcnJlY3Rpb247Cit9CisKK0NvcnJlY3Rpb25QYW5lbDo6Q29ycmVjdGlv
blBhbmVsKCkKKyAgICA6IG1fd2FzRGlzbWlzc2VkRXh0ZXJuYWxseShmYWxzZSkKKyAgICAsIG1f
cmVhc29uRm9yRGlzbWlzc2luZyhSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsSWdu
b3JlZCkKKyAgICAsIG1fcmVzdWx0Q29uZGl0aW9uKEFkb3B0TlMsIFtbTlNDb25kaXRpb24gYWxs
b2NdIGluaXRdKQoreworfQorCitDb3JyZWN0aW9uUGFuZWw6On5Db3JyZWN0aW9uUGFuZWwoKQor
eworICAgIGRpc21pc3NJbnRlcm5hbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVs
SWdub3JlZCwgZmFsc2UpOworfQorCit2b2lkIENvcnJlY3Rpb25QYW5lbDo6c2hvdyhXZWJWaWV3
KiB2aWV3LCBDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUgdHlwZSwgY29uc3QgRmxvYXRS
ZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKK3sKKyAgICBkaXNtaXNzSW50ZXJu
YWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbElnbm9yZWQsIGZhbHNlKTsKKyAg
ICAKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIE5TU3RyaW5nKiByZXBs
YWNlZFN0cmluZ0FzTlNTdHJpbmcgPSByZXBsYWNlZFN0cmluZzsKKyAgICBOU1N0cmluZyogcmVw
bGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nID0gcmVwbGFjZW1lbnRTdHJpbmc7CisgICAgbV92aWV3
ID0gdmlldzsKKyAgICBOU0NvcnJlY3Rpb25CdWJibGVUeXBlIGJ1YmJsZVR5cGUgPSBjb3JyZWN0
aW9uQnViYmxlVHlwZSh0eXBlKTsKKyAgICAKKyAgICBOU011dGFibGVBcnJheSogYWx0ZXJuYXRp
dmVTdHJpbmdzID0gMDsKKyAgICBpZiAoIWFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLmlz
RW1wdHkoKSkgeworICAgICAgICBzaXplX3Qgc2l6ZSA9IGFsdGVybmF0aXZlUmVwbGFjZW1lbnRT
dHJpbmdzLnNpemUoKTsKKyAgICAgICAgYWx0ZXJuYXRpdmVTdHJpbmdzID0gW05TTXV0YWJsZUFy
cmF5IGFycmF5V2l0aENhcGFjaXR5OnNpemVdOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIFthbHRlcm5hdGl2ZVN0cmluZ3MgYWRkT2JqZWN0
OihOU1N0cmluZyopYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3NbaV1dOworICAgIH0KKwor
ICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBzaG93Q29ycmVjdGlvbkJ1
YmJsZU9mVHlwZTpidWJibGVUeXBlIHByaW1hcnlTdHJpbmc6cmVwbGFjZW1lbnRTdHJpbmdBc05T
U3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZVN0cmluZ3MgZm9yU3RyaW5nSW5S
ZWN0OmJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZyB2aWV3Om1fdmlldy5nZXQoKSBjb21wbGV0
aW9uSGFuZGxlcjpeKE5TU3RyaW5nKiBhY2NlcHRlZFN0cmluZykgeworICAgICAgICBoYW5kbGVB
Y2NlcHRlZFJlcGxhY2VtZW50KGFjY2VwdGVkU3RyaW5nLCByZXBsYWNlZFN0cmluZ0FzTlNTdHJp
bmcsIHJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZywgYnViYmxlVHlwZSk7CisgICAgfV07Cit9
CisKK3ZvaWQgQ29ycmVjdGlvblBhbmVsOjpkaXNtaXNzKFJlYXNvbkZvckRpc21pc3NpbmdDb3Jy
ZWN0aW9uUGFuZWwgcmVhc29uKQoreworICAgIGRpc21pc3NJbnRlcm5hbChyZWFzb24sIHRydWUp
OworfQorCitTdHJpbmcgQ29ycmVjdGlvblBhbmVsOjpkaXNtaXNzU29vbihSZWFzb25Gb3JEaXNt
aXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbikKK3sKKyAgICBpZiAoIWlzU2hvd2luZygpKQor
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBkaXNtaXNzSW50ZXJuYWwocmVhc29uLCB0
cnVlKTsKKyAgICBbbV9yZXN1bHRDb25kaXRpb24uZ2V0KCkgbG9ja107CisgICAgd2hpbGUgKCFt
X3Jlc3VsdEZvclN5bmNocm9ub3VzRGlzbWlzc2FsKQorICAgICAgICBbbV9yZXN1bHRDb25kaXRp
b24uZ2V0KCkgd2FpdF07CisgICAgW21fcmVzdWx0Q29uZGl0aW9uLmdldCgpIHVubG9ja107Cisg
ICAgcmV0dXJuIG1fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNtaXNzYWwuZ2V0KCk7Cit9CisKK3Zv
aWQgQ29ycmVjdGlvblBhbmVsOjpkaXNtaXNzSW50ZXJuYWwoUmVhc29uRm9yRGlzbWlzc2luZ0Nv
cnJlY3Rpb25QYW5lbCByZWFzb24sIGJvb2wgZGlzbWlzc2luZ0V4dGVybmFsbHkpCit7CisgICAg
bV93YXNEaXNtaXNzZWRFeHRlcm5hbGx5ID0gZGlzbWlzc2luZ0V4dGVybmFsbHk7CisgICAgaWYg
KCFpc1Nob3dpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fcmVhc29uRm9yRGlz
bWlzc2luZyA9IHJlYXNvbjsKKyAgICBtX3Jlc3VsdEZvclN5bmNocm9ub3VzRGlzbWlzc2FsLmNs
ZWFyKCk7CisgICAgaWYgKHJlYXNvbiA9PSBSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBh
bmVsQWNjZXB0ZWQpCisgICAgICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2Vy
XSBkaXNtaXNzQ29ycmVjdGlvbkJ1YmJsZUZvclZpZXc6bV92aWV3LmdldCgpXTsKKyAgICBlbHNl
CisgICAgICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBjYW5jZWxDb3Jy
ZWN0aW9uQnViYmxlRm9yVmlldzptX3ZpZXcuZ2V0KCldOworICAgIG1fdmlldy5jbGVhcigpOwor
fQorCit2b2lkIENvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShX
ZWJWaWV3KiB2aWV3LCBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSwgY29uc3QgU3RyaW5n
JiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKK3sKKyAg
ICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gcmVjb3JkUmVzcG9uc2U6cmVz
cG9uc2UgdG9Db3JyZWN0aW9uOnJlcGxhY2VtZW50U3RyaW5nIGZvcldvcmQ6cmVwbGFjZWRTdHJp
bmcgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6W3ZpZXcgc3BlbGxDaGVja2Vy
RG9jdW1lbnRUYWddXTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWw6OmhhbmRsZUFjY2VwdGVk
UmVwbGFjZW1lbnQoTlNTdHJpbmcqIGFjY2VwdGVkUmVwbGFjZW1lbnQsIE5TU3RyaW5nKiByZXBs
YWNlZCwgTlNTdHJpbmcqIHByb3Bvc2VkUmVwbGFjZW1lbnQsICBOU0NvcnJlY3Rpb25CdWJibGVU
eXBlIGNvcnJlY3Rpb25CdWJibGVUeXBlKQoreworICAgIE5TU3BlbGxDaGVja2VyKiBzcGVsbENo
ZWNrZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXTsKKyAgICBOU0ludGVn
ZXIgZG9jdW1lbnRUYWcgPSBbbV92aWV3LmdldCgpIHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnXTsK
KworICAgIHN3aXRjaCAoY29ycmVjdGlvbkJ1YmJsZVR5cGUpIHsKKyAgICBjYXNlIE5TQ29ycmVj
dGlvbkJ1YmJsZVR5cGVDb3JyZWN0aW9uOgorICAgICAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVu
dCkKKyAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9u
UmVzcG9uc2VBY2NlcHRlZCB0b0NvcnJlY3Rpb246YWNjZXB0ZWRSZXBsYWNlbWVudCBmb3JXb3Jk
OnJlcGxhY2VkIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFn
XTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoIW1fd2FzRGlzbWlzc2VkRXh0ZXJu
YWxseSB8fCBtX3JlYXNvbkZvckRpc21pc3NpbmcgPT0gUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJl
Y3Rpb25QYW5lbENhbmNlbGxlZCkKKyAgICAgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29y
ZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlUmVqZWN0ZWQgdG9Db3JyZWN0aW9uOnByb3Bv
c2VkUmVwbGFjZW1lbnQgZm9yV29yZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3Vt
ZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUlnbm9y
ZWQgdG9Db3JyZWN0aW9uOnByb3Bvc2VkUmVwbGFjZW1lbnQgZm9yV29yZDpyZXBsYWNlZCBsYW5n
dWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgIH0K
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOU0NvcnJlY3Rpb25CdWJibGVUeXBlUmV2ZXJzaW9u
OgorICAgICAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKKyAgICAgICAgICAgIFtzcGVsbENo
ZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZCB0b0NvcnJl
Y3Rpb246cmVwbGFjZWQgZm9yV29yZDphY2NlcHRlZFJlcGxhY2VtZW50IGxhbmd1YWdlOm5pbCBp
blNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFnXTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBOU0NvcnJlY3Rpb25CdWJibGVUeXBlR3Vlc3NlczoKKyAgICAgICAgaWYgKGFjY2VwdGVk
UmVwbGFjZW1lbnQpCisgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5T
Q29ycmVjdGlvblJlc3BvbnNlQWNjZXB0ZWQgdG9Db3JyZWN0aW9uOmFjY2VwdGVkUmVwbGFjZW1l
bnQgZm9yV29yZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpk
b2N1bWVudFRhZ107CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICBpZiAoIW1fd2Fz
RGlzbWlzc2VkRXh0ZXJuYWxseSkgeworICAgICAgICBbbV92aWV3LmdldCgpIGhhbmRsZUNvcnJl
Y3Rpb25QYW5lbFJlc3VsdDphY2NlcHRlZFJlcGxhY2VtZW50XTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICBbbV9yZXN1bHRDb25kaXRpb24uZ2V0KCkgbG9ja107CisgICAgaWYg
KGFjY2VwdGVkUmVwbGFjZW1lbnQpCisgICAgICAgIG1fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNt
aXNzYWwuYWRvcHROUyhbYWNjZXB0ZWRSZXBsYWNlbWVudCBjb3B5XSk7CisgICAgW21fcmVzdWx0
Q29uZGl0aW9uLmdldCgpIHNpZ25hbF07CisgICAgW21fcmVzdWx0Q29uZGl0aW9uLmdldCgpIHVu
bG9ja107Cit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19M
RU9QQVJEKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCmluZGV4IDFmYTEzMmFkNmM1YmQ0Mzc5ZmUwYmI4NWM5ZTZmZjBkNjZiMTE3
MzUuLmU3ODBmMzRjY2I3MDdkMDMxYmRlY2QzMDc1ZjAxY2Y4NDEzZTk0Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0y
NywxMCArMjcsOSBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0IDxXZWJDb3JlL0VkaXRv
ci5oPgorI2ltcG9ydCAiQ29ycmVjdGlvblBhbmVsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRv
ckNsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgotI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL0ZvcndhcmQuaD4KICNpbXBvcnQgPHd0
Zi9WZWN0b3IuaD4KIApAQCAtMTQwLDEwICsxMzksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7CiAgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29u
c3QgV1RGOjpTdHJpbmcmKTsKICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19M
RU9QQVJEKQotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkNv
cnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBi
b3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlZFN0
cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBXVEY6OlZl
Y3RvcjxXVEY6OlN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLCBXZWJDb3Jl
OjpFZGl0b3IqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3Jl
OjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNt
aXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9u
UGFuZWwpOwotICAgIHZpcnR1YWwgYm9vbCBpc1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlv
blJlc3BvbnNlVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBX
VEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOworICAgIHZpcnR1YWwgU3RyaW5nIGRpc21p
c3NDb3JyZWN0aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0
aW9uUGFuZWwpOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNl
KEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKICNlbmRpZgogcHJpdmF0ZToKICAg
ICB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG9PclJlZG8oUGFzc1JlZlB0cjxXZWJDb3JlOjpF
ZGl0Q29tbWFuZD4sIGJvb2wgaXNSZWRvKTsKQEAgLTE1NCw4ICsxNTMsNiBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9oYXZlVW5kb1JlZG9PcGVyYXRpb25zOwogCiAjaWYgIWRlZmluZWQoQlVJTERJ
TkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKLSAgICBCT09MIG1fY29ycmVjdGlvblBhbmVsSXNT
aG93bjsKLSAgICBCT09MIG1fY29ycmVjdGlvblBhbmVsSXNEaXNtaXNzZWRFeHRlcm5hbGx5Owot
ICAgIFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgbV9yZWFzb25G
b3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsOworICAgIENvcnJlY3Rpb25QYW5lbCBtX2NvcnJl
Y3Rpb25QYW5lbDsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCA2OWRkNTc0NzMxYjQ0YjQzMGMyNzQ1
OGU3MjNiNDFjNGRlNTE3NGIwLi5kZjk4NWNlMDMxNDk0ZmRhMTliMTAwMjkzYjM4MDgxMTMzYmVl
ODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lm1tCkBAIC03NCw3ICs3NCw2IEBACiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgV1RGOwogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCkBAIC0yMDIsOSArMjAxLDYgQEAgV2ViRWRpdG9yQ2xpZW50OjpXZWJFZGl0b3JDbGll
bnQoV2ViVmlldyAqd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogICAgICwgbV91
bmRvVGFyZ2V0KFtbW1dlYkVkaXRvclVuZG9UYXJnZXQgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNl
XSkKICAgICAsIG1faGF2ZVVuZG9SZWRvT3BlcmF0aW9ucyhmYWxzZSkKLSNpZiAhZGVmaW5lZChC
VUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotICAgICwgbV9jb3JyZWN0aW9uUGFuZWxJ
c1Nob3duKGZhbHNlKQotI2VuZGlmCiB7CiB9CiAKQEAgLTg5MSw3MyArODg3LDI1IEBAIHZvaWQg
V2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3Qg
U3RyaW5nJiBiYWRHcmFtbWFyCiB9CiAKICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
U05PV19MRU9QQVJEKQotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwo
V2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlIHBhbmVsVHlwZSwgY29uc3Qg
RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncywgRWRpdG9yKiBlZGl0b3Ip
IHsKLSAgICBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0
aW9uUGFuZWxJZ25vcmVkKTsKLQotICAgIC8vIE5lZWQgdG8gZXhwbGljaXRseSB1c2UgdGhlc2Ug
bG9jYWwgTlNTdHJpbmcgb2JqZWN0cywgYmVjYXVzZSB0aGUgQysrIHJlZmVyZW5jZXMgbWF5IGJl
IGludmFsaWRhdGVkIGJ5IHRoZSB0aW1lIHRoZSBibG9jayBiZWxvdyBpcyBleGVjdXRlZC4KLSAg
ICBOU1N0cmluZyAqcmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nID0gcmVwbGFjZWRTdHJpbmc7Ci0g
ICAgTlNTdHJpbmcgKnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyA9IHJlcGxhY2VtZW50U3Ry
aW5nOwotCi0gICAgbV9jb3JyZWN0aW9uUGFuZWxJc1Nob3duID0gWUVTOwotICAgIG1fY29ycmVj
dGlvblBhbmVsSXNEaXNtaXNzZWRFeHRlcm5hbGx5ID0gTk87Ci0gICAgbV9yZWFzb25Gb3JEaXNt
aXNzaW5nQ29ycmVjdGlvblBhbmVsID0gUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5l
bElnbm9yZWQ7Ci0KLSAgICBOU0NvcnJlY3Rpb25CdWJibGVUeXBlIGJ1YmJsZVR5cGUgPSBjb3Jy
ZWN0aW9uQnViYmxlVHlwZShwYW5lbFR5cGUpOwotICAgIE5TTXV0YWJsZUFycmF5ICphbHRlcm5h
dGl2ZVN0cmluZ3MgPSBuaWw7Ci0gICAgaWYgKCFhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5n
cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBhbHRlcm5hdGl2ZVJlcGxhY2Vt
ZW50U3RyaW5ncy5zaXplKCk7Ci0gICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncyA9IFtOU011dGFi
bGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaXplXTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAgICBbYWx0ZXJuYXRpdmVTdHJpbmdzIGFkZE9i
amVjdDooTlNTdHJpbmcqKWFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzW2ldXTsKLSAgICB9
Ci0gICAgTlNTcGVsbENoZWNrZXIgKnNwZWxsQ2hlY2tlciA9IFtOU1NwZWxsQ2hlY2tlciBzaGFy
ZWRTcGVsbENoZWNrZXJdOwotICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2Vy
XSBzaG93Q29ycmVjdGlvbkJ1YmJsZU9mVHlwZTpidWJibGVUeXBlIHByaW1hcnlTdHJpbmc6cmVw
bGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZVN0
cmluZ3MgZm9yU3RyaW5nSW5SZWN0OmJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZyB2aWV3Om1f
d2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nICphY2NlcHRlZFN0cmluZykgewot
ICAgICAgICBzd2l0Y2ggKGJ1YmJsZVR5cGUpIHsKLSAgICAgICAgY2FzZSBOU0NvcnJlY3Rpb25C
dWJibGVUeXBlQ29ycmVjdGlvbjoKLSAgICAgICAgICAgIGlmIChhY2NlcHRlZFN0cmluZykKLSAg
ICAgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJl
c3BvbnNlQWNjZXB0ZWQgdG9Db3JyZWN0aW9uOmFjY2VwdGVkU3RyaW5nIGZvcldvcmQ6cmVwbGFj
ZWRTdHJpbmdBc05TU3RyaW5nIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNw
ZWxsQ2hlY2tlckRvY3VtZW50VGFnKCldOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFtX2NvcnJlY3Rpb25QYW5lbElzRGlzbWlzc2VkRXh0ZXJuYWxseSB8fCBtX3Jl
YXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgPT0gUmVhc29uRm9yRGlzbWlzc2luZ0Nv
cnJlY3Rpb25QYW5lbENhbmNlbGxlZCkKLSAgICAgICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tl
ciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZVJlamVjdGVkIHRvQ29ycmVjdGlv
bjpyZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgZm9yV29yZDpyZXBsYWNlZFN0cmluZ0FzTlNT
dHJpbmcgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9j
dW1lbnRUYWcoKV07Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBb
c3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlSWdub3JlZCB0
b0NvcnJlY3Rpb246cmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nIGZvcldvcmQ6cmVwbGFjZWRT
dHJpbmdBc05TU3RyaW5nIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxs
Q2hlY2tlckRvY3VtZW50VGFnKCldOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZVJldmVyc2lvbjoKLSAgICAgICAg
ICAgIGlmIChhY2NlcHRlZFN0cmluZykKLSAgICAgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJl
Y29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlUmV2ZXJ0ZWQgdG9Db3JyZWN0aW9uOnJl
cGxhY2VkU3RyaW5nQXNOU1N0cmluZyBmb3JXb3JkOmFjY2VwdGVkU3RyaW5nIGxhbmd1YWdlOm5p
bCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCldOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUd1ZXNz
ZXM6Ci0gICAgICAgICAgICBpZiAoYWNjZXB0ZWRTdHJpbmcpCi0gICAgICAgICAgICAgICAgW1tO
U1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVj
dGlvblJlc3BvbnNlQWNjZXB0ZWQgdG9Db3JyZWN0aW9uOmFjY2VwdGVkU3RyaW5nIGZvcldvcmQ6
cmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRo
VGFnOlttX3dlYlZpZXcgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWddXTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGVkaXRvci0+aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVz
dWx0KFN0cmluZyhhY2NlcHRlZFN0cmluZykpOwotICAgIH1dOwordm9pZCBXZWJFZGl0b3JDbGll
bnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwoQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlIHBh
bmVsVHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJp
bmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykK
K3sKKyAgICBtX2NvcnJlY3Rpb25QYW5lbC5zaG93KG1fd2ViVmlldywgcGFuZWxUeXBlLCBib3Vu
ZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmlu
ZywgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOwogfQogCiB2b2lkIFdlYkVkaXRvckNs
aWVudDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlv
blBhbmVsIHJlYXNvbkZvckRpc21pc3NpbmcpCiB7Ci0gICAgaWYgKGlzU2hvd2luZ0NvcnJlY3Rp
b25QYW5lbCgpKSB7Ci0gICAgICAgIG1fY29ycmVjdGlvblBhbmVsSXNEaXNtaXNzZWRFeHRlcm5h
bGx5ID0gWUVTOwotICAgICAgICBtX3JlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwg
PSByZWFzb25Gb3JEaXNtaXNzaW5nOwotICAgICAgICBpZiAocmVhc29uRm9yRGlzbWlzc2luZyA9
PSBSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsQWNjZXB0ZWQpCi0gICAgICAgICAg
ICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gZGlzbWlzc0NvcnJlY3Rpb25C
dWJibGVGb3JWaWV3Om1fd2ViVmlld107Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFtbTlNT
cGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBjYW5jZWxDb3JyZWN0aW9uQnViYmxlRm9y
VmlldzptX3dlYlZpZXddOwotICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbElzU2hvd24gPSBOTzsK
LSAgICB9CisgICAgbV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhyZWFzb25Gb3JEaXNtaXNzaW5n
KTsKIH0KIAotYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmlzU2hvd2luZ0NvcnJlY3Rpb25QYW5lbCgp
CitTdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihSZWFz
b25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbkZvckRpc21pc3NpbmcpCiB7Ci0g
ICAgcmV0dXJuIG1fY29ycmVjdGlvblBhbmVsSXNTaG93bjsKKyAgICByZXR1cm4gbV9jb3JyZWN0
aW9uUGFuZWwuZGlzbWlzc1Nvb24ocmVhc29uRm9yRGlzbWlzc2luZyk7CiB9CiAKIHZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEVkaXRvckNsaWVudDo6
QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKQogewotICAgIE5T
Q29ycmVjdGlvblJlc3BvbnNlIHNwZWxsQ2hlY2tlclJlc3BvbnNlID0gcmVzcG9uc2VUeXBlID09
IEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXZlcnRlZCA/IE5TQ29ycmVjdGlvblJlc3Bv
bnNlUmV2ZXJ0ZWQgOiBOU0NvcnJlY3Rpb25SZXNwb25zZUVkaXRlZDsKLSAgICBbW05TU3BlbGxD
aGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gcmVjb3JkUmVzcG9uc2U6c3BlbGxDaGVja2VyUmVz
cG9uc2UgdG9Db3JyZWN0aW9uOnJlcGxhY2VtZW50U3RyaW5nIGZvcldvcmQ6cmVwbGFjZWRTdHJp
bmcgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6W21fd2ViVmlldyBzcGVsbENo
ZWNrZXJEb2N1bWVudFRhZ11dOworICAgIE5TQ29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlID0g
cmVzcG9uc2VUeXBlID09IEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXZlcnRlZCA/IE5T
Q29ycmVjdGlvblJlc3BvbnNlUmV2ZXJ0ZWQgOiBOU0NvcnJlY3Rpb25SZXNwb25zZUVkaXRlZDsK
KyAgICBDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV93ZWJW
aWV3LCByZXNwb25zZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggODQ3NDhlNWNjZWVk
Y2E4Y2JiZTU4NWQ5NTQ1ZjY2ZGUwZThmZDg5ZS4uNTllYjgwYzYxYzhiMzAxM2ExM2RmMzZjNjk4
Y2IyYzgxZjQ1Zjk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNTMx
MSw2ICs1MzExLDE2IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9t
SlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUganNWYWx1CiAKICNlbmRpZgogCisjaWYg
IWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BB
UkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKy0gKHZvaWQpaGFuZGxl
Q29ycmVjdGlvblBhbmVsUmVzdWx0OihOU1N0cmluZyopcmVzdWx0Cit7CisgICAgV2ViRnJhbWUg
KndlYkZyYW1lID0gW3NlbGYgX3NlbGVjdGVkT3JNYWluRnJhbWVdOworICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBjb3JlKHdlYkZyYW1lKTsKKyAgICBpZiAoY29yZUZyYW1lKQorICAgICAgICBjb3Jl
RnJhbWUtPmVkaXRvcigpLT5oYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQocmVzdWx0KTsKK30K
KyNlbmRpZgorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJWaWV3VW5kb2Fi
bGVFZGl0aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmlu
ZGV4IGE0ZWE4MDliMDAxZGJjNmE2NzIzNGYxNzJmMDIwYmMzNGNmN2U4NGMuLmNiOTQ4NTEzN2Ri
MDZmOTFmNjlkMTNhYTA3NDMyNTJkZGZjNGU1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXdQcml2YXRlLmgKQEAgLTY0NCw3ICs2NDQsOSBAQCBDb3VsZCBiZSB3b3J0aCBh
ZGRpbmcgdG8gdGhlIEFQSS4KIC0gKHZvaWQpc2V0QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9u
RW5hYmxlZDooQk9PTClmbGFnOwogLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJl
Y3Rpb246KGlkKXNlbmRlcjsKICNlbmRpZgotCisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElH
RVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX1NOT1dfTEVPUEFSRCkKKy0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OihO
U1N0cmluZyopcmVzdWx0OworI2VuZGlmCiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViVmlldyAoV2Vi
Vmlld0VkaXRpbmdJbk1haWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmMzNzg0NjQzYTE5YjAxYWJjMzZjYzY0
NzI0MTFiZTM2OGViYjBjNS4uYjcyNDk3YTliYzgwYWNmMWUxODQ1NmY2YWU4NGQ0MTYzNTg0MDM4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDExLTAzLTIzICBKaWEgUHUgIDxqcHVA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEhvb2sgdXAgbmV3IEFwcEtpdCBhdXRvY29ycmVjdGlvbiBVSSB3aXRoIFdLMi4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDU1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS84OTQ3NDYzPgorCisgICAgICAgIFBsZWFzZSBzZWUgV2ViQ29yZS9D
aGFuZ2VMb2cgZm9yIGRldGFpbC4KKworICAgICAgICBUaGUgY2FsbHMgdG8gQXBwS2l0IGFyZSBp
bXBsZW1lbnRlZCBpbiBQYWdlQ2xpZW50SW1wbC4gT3RoZXIgY2hhbmdlcyBhcmUgbmVjZXNzYXJ5
IGZvciB0aGUKKyAgICAgICAgcGx1bWJpbmcgd29yay4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFn
ZUNsaWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzaG93Q29y
cmVjdGlvblBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpc21pc3ND
b3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlzbWlz
c0NvcnJlY3Rpb25QYW5lbFNvb24pOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWdd
KToKKyAgICAgICAgKC1bV0tWaWV3IGhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dDb3JyZWN0aW9uUGFuZWwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNvcmRBdXRvY29ycmVjdGlvblJl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVDb3JyZWN0aW9u
UGFuZWxSZXN1bHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDb3Jy
ZWN0aW9uUGFuZWw6OmlzU2hvd2luZyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9Db3JyZWN0
aW9uUGFuZWwubW06IEFkZGVkLgorICAgICAgICAoY29ycmVjdGlvbkJ1YmJsZVR5cGUpOgorICAg
ICAgICAoV2ViS2l0OjpDb3JyZWN0aW9uUGFuZWw6OkNvcnJlY3Rpb25QYW5lbCk6CisgICAgICAg
IChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6fkNvcnJlY3Rpb25QYW5lbCk6CisgICAgICAgIChX
ZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rp
b25QYW5lbDo6ZGlzbWlzcyk6CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6ZGlz
bWlzc1Nvb24pOgorICAgICAgICAoV2ViS2l0OjpDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3NJbnRl
cm5hbCk6CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJl
Y3Rpb25SZXNwb25zZSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xp
ZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0
aW9uUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3ND
b3JyZWN0aW9uUGFuZWxTb29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50Ojpy
ZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUNvcnJlY3Rp
b25QYW5lbFJlc3VsdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAx
MS0wMy0yMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAppbmRleCAzMzhmNzc2ODFmOTFjNzNjMjdjZGRiZWJm
NjRkNmRmMDg5NTYyY2MxLi43ODRlMTA2NDRlNjk3NTJiN2Q1ZjE5ZGY1ZmY4YTdlZTk2YzFkZDhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJ
bXBsLmgKQEAgLTI2LDggKzI2LDggQEAKICNpZm5kZWYgUGFnZUNsaWVudEltcGxfaAogI2RlZmlu
ZSBQYWdlQ2xpZW50SW1wbF9oCiAKKyNpbmNsdWRlICJDb3JyZWN0aW9uUGFuZWwuaCIKICNpbmNs
dWRlICJQYWdlQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBAY2xhc3Mg
V0tWaWV3OwogQGNsYXNzIFdlYkVkaXRvclVuZG9UYXJnZXRPYmpDOwpAQCAtMTA0LDggKzEwNCwx
NiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9v
a3VwKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBzY2FsZUZhY3RvciwgY29uc3QgRGljdGlvbmFyeVBv
cHVwSW5mbyYpOwogCisgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29y
ZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0
cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlz
bWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlv
blBhbmVsKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihX
ZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShXZWJDb3JlOjpFZGl0b3JDbGllbnQ6
OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKKwogICAgIFdLVmlldyogbV93a1Zp
ZXc7CiAgICAgUmV0YWluUHRyPFdlYkVkaXRvclVuZG9UYXJnZXRPYmpDPiBtX3VuZG9UYXJnZXQ7
CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgIENvcnJlY3Rpb25Q
YW5lbCBtX2NvcnJlY3Rpb25QYW5lbDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xp
ZW50SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJ
bXBsLm1tCmluZGV4IGUzNTAzZGU2Zjg3ZjY5OWZiNzY3YzYyMjZlNDlmNTNjMWZjOTQ0NjAuLmM2
MjQ0NWJmZGNiMmM3MjgxNzcxMWI2YjI3YmEyN2UzZDg0ZDcwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCkBAIC00MjcsNCAr
NDI3LDM3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3Vw
KGNvbnN0IFN0cmluZyYgdGV4dCwgZG91YmxlIHNjYWxlCiAgICAgW21fd2tWaWV3IHNob3dEZWZp
bml0aW9uRm9yQXR0cmlidXRlZFN0cmluZzphdHRyaWJ1dGVkU3RyaW5nLmdldCgpIHJhbmdlOk5T
TWFrZVJhbmdlKDAsIFthdHRyaWJ1dGVkU3RyaW5nLmdldCgpIGxlbmd0aF0pIG9wdGlvbnM6b3B0
aW9ucyBiYXNlbGluZU9yaWdpblByb3ZpZGVyOl4oTlNSYW5nZSBhZGp1c3RlZFJhbmdlKSB7IHJl
dHVybiAoTlNQb2ludCl0ZXh0QmFzZWxpbmVPcmlnaW47IH1dOwogfQogCit2b2lkIFBhZ2VDbGll
bnRJbXBsOjpzaG93Q29ycmVjdGlvblBhbmVsKENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlw
ZSB0eXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmlu
ZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQor
eworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICBpZiAoIWlzVmll
d1Zpc2libGUoKSB8fCAhaXNWaWV3SW5XaW5kb3coKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
Y29ycmVjdGlvblBhbmVsLnNob3cobV93a1ZpZXcsIHR5cGUsIGJvdW5kaW5nQm94T2ZSZXBsYWNl
ZFN0cmluZywgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nLCBhbHRlcm5hdGl2ZVJl
cGxhY2VtZW50U3RyaW5ncyk7CisjZW5kaWYKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlz
bWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJl
YXNvbikKK3sKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisgICAgbV9j
b3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhyZWFzb24pOworI2VuZGlmCit9CisKK1N0cmluZyBQYWdl
Q2xpZW50SW1wbDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oV2ViQ29yZTo6UmVhc29uRm9y
RGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24pCit7CisjaWYgIWRlZmluZWQoQlVJTERJ
TkdfT05fU05PV19MRU9QQVJEKQorICAgIHJldHVybiBtX2NvcnJlY3Rpb25QYW5lbC5kaXNtaXNz
U29vbihyZWFzb24pOworI2Vsc2UKKyAgICByZXR1cm4gU3RyaW5nKCk7CisjZW5kaWYKK30KKwor
dm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShFZGl0b3JD
bGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3Ry
aW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKK3sK
KyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisgICAgTlNDb3JyZWN0aW9u
UmVzcG9uc2UgcmVzcG9uc2UgPSByZXNwb25zZVR5cGUgPT0gRWRpdG9yQ2xpZW50OjpBdXRvY29y
cmVjdGlvblJldmVydGVkID8gTlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZCA6IE5TQ29ycmVj
dGlvblJlc3BvbnNlRWRpdGVkOworICAgIENvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJl
Y3Rpb25SZXNwb25zZShtX3drVmlldywgcmVzcG9uc2UsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNl
bWVudFN0cmluZyk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KaW5kZXggMmE0MjMxOWI0YTliNDg5
ODFmNTcwMDkwY2M3YmZiZGE2YTA2ZjAwMy4uMjc0N2M1Y2YxNzUyNWMxZGE4OWU0OWQyOTJiZDBm
MTAwYjY2MTcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bQpAQCAtMTQ5LDYgKzE0OSw5IEBAIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZhbGlkYXRpb25W
ZWN0b3I+IFZhbGlkYXRpb25NYXA7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIFJl
dGFpblB0cjxXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyPiBfZnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXI7CiAjZW5kaWYKKworICAgIEJPT0wgX2hhc1NwZWxsQ2hlY2tlckRvY3VtZW50VGFn
OworICAgIE5TSW50ZWdlciBfc3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7CiB9CiBAZW5kCiAKQEAg
LTIwNzcsNSArMjA4MCwxOSBAQCBzdGF0aWMgdm9pZCBkcmF3UGFnZUJhY2tncm91bmQoQ0dDb250
ZXh0UmVmIGNvbnRleHQsIFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgSQogICAgIF9kYXRhLT5f
cGFnZS0+cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKEZsb2F0UG9pbnQodGhlUG9p
bnQueCwgdGhlUG9pbnQueSkpOwogfQogCistIChOU0ludGVnZXIpc3BlbGxDaGVja2VyRG9jdW1l
bnRUYWcKK3sKKyAgICBpZiAoIV9kYXRhLT5faGFzU3BlbGxDaGVja2VyRG9jdW1lbnRUYWcpIHsK
KyAgICAgICAgX2RhdGEtPl9zcGVsbENoZWNrZXJEb2N1bWVudFRhZyA9IFtOU1NwZWxsQ2hlY2tl
ciB1bmlxdWVTcGVsbERvY3VtZW50VGFnXTsKKyAgICAgICAgX2RhdGEtPl9oYXNTcGVsbENoZWNr
ZXJEb2N1bWVudFRhZyA9IFlFUzsKKyAgICB9CisgICAgcmV0dXJuIF9kYXRhLT5fc3BlbGxDaGVj
a2VyRG9jdW1lbnRUYWc7Cit9CisKKy0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0
OihOU1N0cmluZyopcmVzdWx0Cit7CisgICAgX2RhdGEtPl9wYWdlLT5oYW5kbGVDb3JyZWN0aW9u
UGFuZWxSZXN1bHQocmVzdWx0KTsKK30KKwogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdQcml2YXRlLmgKaW5kZXggY2VjZTFjNzQwYjc3MmM3ZWM2
MmM2ZGJlOTZiZmMwZDYzNjI0YWUzNy4uMzdjMmQ4ZGQ4MWZiMjg2NWEyMThiMTI5OGY0YzJiOGNh
NmJlYzUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmll
d1ByaXZhdGUuaApAQCAtMzUsNCArMzUsNiBAQAogCiAtICh2b2lkKXBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwQXRDdXJyZW50TW91c2VMb2NhdGlvbjsKIAorLSAoTlNJbnRlZ2VyKXNwZWxsQ2hlY2tl
ckRvY3VtZW50VGFnOworLSAodm9pZCloYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6KE5TU3Ry
aW5nKilyZXN1bHQ7CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRl
eCAxMGJkMDc4N2E0NGI5NTNiY2EzODg3NzU1NmM0OWI2YjBiZGVhNmZiLi44NTU3NmY5YTdmNjEw
ODA1MWZhYTRmZWI3ZGEzODRlNjRmMThkZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKQEAgLTEzMCw2ICsxMzAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb21wbGV4VGV4dElucHV0RW5hYmxlZCh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0
SWRlbnRpZmllciwgYm9vbCBjb21wbGV4VGV4dElucHV0RW5hYmxlZCkgPSAwOwogICAgIHZpcnR1
YWwgQ0dDb250ZXh0UmVmIGNvbnRhaW5pbmdXaW5kb3dHcmFwaGljc0NvbnRleHQoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IFN0cmluZyYs
IGRvdWJsZSBzY2FsZUZhY3RvciwgY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFu
ZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hP
ZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVS
ZXBsYWNlbWVudFN0cmluZ3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKSA9IDA7
CisgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oV2ViQ29yZTo6
UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6OkVkaXRvckNsaWVudDo6QXV0
b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZVNjcm9sbGJhcnNGb3JNYWluRnJhbWUoKSBjb25zdCA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDI5ZThlOGEyMGUzYjRl
MmUxZjc4NGIyNWRhNDM3ZGFiMTc2MTAyM2QuLmYxZWU5NGNhNDdjOGJjOGE0Y2IxNDEyYTZhNDA0
MTYyMDFjYTQ0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0xMzk5LDYgKzEzOTksMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG1pbWVUeXAKICAgICBpZiAo
IWFyZ3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwogCisj
aWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisg
ICAgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBh
bmVsSWdub3JlZCk7CisjZW5kaWYKKwogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2Vz
cygpLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIApAQCAt
Mjc2NSw0ICsyNzY5LDM2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlRGF0YVRvRmlsZUluRG93
bmxvYWRzRm9sZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hCiAgICAgbV91aUNsaWVu
dC5zYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKHRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1l
LCBtaW1lVHlwZSwgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGRhdGEpOwogfQogCisjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCit2b2lkIFdlYlBh
Z2VQcm94eTo6c2hvd0NvcnJlY3Rpb25QYW5lbChpbnQzMl90IHBhbmVsVHlwZSwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKK3sKKyAgICBt
X3BhZ2VDbGllbnQtPnNob3dDb3JyZWN0aW9uUGFuZWwoKFdlYkNvcmU6OkNvcnJlY3Rpb25QYW5l
bEluZm86OlBhbmVsVHlwZSlwYW5lbFR5cGUsIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywg
cmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nLCBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50
U3RyaW5ncyk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVs
KGludDMyX3QgcmVhc29uKQoreworICAgIG1fcGFnZUNsaWVudC0+ZGlzbWlzc0NvcnJlY3Rpb25Q
YW5lbCgoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbClyZWFzb24p
OworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oaW50
MzJfdCByZWFzb24sIFN0cmluZyYgcmVzdWx0KQoreworICAgIHJlc3VsdCA9IG1fcGFnZUNsaWVu
dC0+ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3Np
bmdDb3JyZWN0aW9uUGFuZWwpcmVhc29uKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJlY29y
ZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50MzJfdCByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCit7Cisg
ICAgbV9wYWdlQ2xpZW50LT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKChXZWJDb3JlOjpF
ZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlKXJlc3BvbnNlVHlwZSwgcmVw
bGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKTsKK30KKyNlbmRpZgorCisjaWYgUExBVEZP
Uk0oTUFDKQordm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdChj
b25zdCBTdHJpbmcmIHJlc3VsdCkKK3sKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xF
T1BBUkQpCisgICAgaWYgKCFpc0Nsb3NlZCgpKQorICAgICAgICBwcm9jZXNzKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdChyZXN1bHQpLCBtX3Bh
Z2VJRCwgMCk7CisjZW5kaWYKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1ZTgyYzJkOWUwNzJjYjE4
N2MyOTYwNzQwNWI0ZTVkZDBiNGM5MmQ5Li40ODhlMzYzYjJkOTFlZWU5NzUxMzkzMjY3MzQwMjk1
MzM5MGVmNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00
NTAsNiArNDUwLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmxhc2hCYWNraW5nU3RvcmVVcGRh
dGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgdXBkYXRlUmVjdHMpOwogCisjaWYg
UExBVEZPUk0oTUFDKQorICAgIHZvaWQgaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KGNvbnN0
IFN0cmluZyYgcmVzdWx0KTsKKyNlbmRpZgorCiAgICAgc3RhdGljIHZvaWQgc2V0RGVidWdQYWlu
dEZsYWdzKFdLUGFnZURlYnVnUGFpbnRGbGFncyBmbGFncykgeyBzX2RlYnVnUGFpbnRGbGFncyA9
IGZsYWdzOyB9CiAgICAgc3RhdGljIFdLUGFnZURlYnVnUGFpbnRGbGFncyBkZWJ1Z1BhaW50Rmxh
Z3MoKSB7IHJldHVybiBzX2RlYnVnUGFpbnRGbGFnczsgfQogCkBAIC02NDMsNiArNjQ3LDEzIEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKIAorI2lmIFBM
QVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgIHZv
aWQgc2hvd0NvcnJlY3Rpb25QYW5lbChpbnQzMl90IHBhbmVsVHlwZSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CisgICAgdm9pZCBkaXNt
aXNzQ29ycmVjdGlvblBhbmVsKGludDMyX3QgcmVhc29uKTsKKyAgICB2b2lkIGRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWxTb29uKGludDMyX3QgcmVhc29uLCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9p
ZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9uc2VUeXBlLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5n
KTsKKyNlbmRpZgorCiAgICAgUGFnZUNsaWVudCogbV9wYWdlQ2xpZW50OwogICAgIFdlYkxvYWRl
ckNsaWVudCBtX2xvYWRlckNsaWVudDsKICAgICBXZWJQb2xpY3lDbGllbnQgbV9wb2xpY3lDbGll
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgppbmRleCBjODEyYWUxNjI1N2JiYjg4MmFiNzVlZDgwNzFjNjZjYjFjMzA5NmIyLi41NWE2
ZGMyMTYxZDMwMzdjMzc0ZTM4NGVkODZmNzEwNmYyZDM0NTY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTIwOCw0ICsyMDgs
MTIgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBQTEFURk9STShXSU4pCiAgICAg
U3RhcnREcmFnRHJvcChXZWJDb3JlOjpJbnRQb2ludCBpbWFnZVBvaW50LCBXZWJDb3JlOjpJbnRQ
b2ludCBkcmFnUG9pbnQsIHVpbnQ2NF90IG9rRWZmZWN0LCBIYXNoTWFwPFVJTlQsVmVjdG9yPFN0
cmluZz4gPiBkYXRhTWFwLCBXZWJDb3JlOjpJbnRTaXplIGRyYWdJbWFnZVNpemUsIFdlYktpdDo6
U2hhcmVkTWVtb3J5OjpIYW5kbGUgZHJhZ0ltYWdlLCBib29sIGxpbmtEcmFnKQogI2VuZGlmCisK
KyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkK
KyAgICAjIEF1dG9jb3JyZWN0aW9uIG1lc3NhZ2VzCisgICAgU2hvd0NvcnJlY3Rpb25QYW5lbChp
bnQzMl90IHBhbmVsVHlwZSwgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kaW5nQm94T2ZSZXBsYWNl
ZFN0cmluZywgU3RyaW5nIHJlcGxhY2VkU3RyaW5nLCBTdHJpbmcgcmVwbGFjZW1lbnRTdHJpbmcs
IFZlY3RvcjxTdHJpbmc+IGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQorICAgIERpc21p
c3NDb3JyZWN0aW9uUGFuZWwoaW50MzJfdCByZWFzb24pCisgICAgRGlzbWlzc0NvcnJlY3Rpb25Q
YW5lbFNvb24oaW50MzJfdCByZWFzb24pIC0+IChTdHJpbmcgcmVzdWx0KQorICAgIFJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50MzJfdCByZXNwb25zZVR5cGUsIFN0cmluZyByZXBsYWNl
ZFN0cmluZywgU3RyaW5nIHJlcGxhY2VtZW50U3RyaW5nKTsKKyNlbmRpZgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDRi
YzM1M2Q2OWIzNjFkMmU4NjEzNmIxOTA3YmQ5NmYwMmM4OTYxOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLmgKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29ycmVjdGlvblBhbmVsX2gKKyNkZWZpbmUg
Q29ycmVjdGlvblBhbmVsX2gKKworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFS
RCkKKyNpbXBvcnQgPEFwcEtpdC9OU1RleHRDaGVja2VyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Nv
cnJlY3Rpb25QYW5lbEluZm8uaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworQGNsYXNz
IFdLVmlldzsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENvcnJlY3Rpb25QYW5lbCB7
CitwdWJsaWM6CisgICAgQ29ycmVjdGlvblBhbmVsKCk7CisgICAgfkNvcnJlY3Rpb25QYW5lbCgp
OworICAgIHZvaWQgc2hvdyhXS1ZpZXcqLCBXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQ
YW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVu
dFN0cmluZ3MpOworICAgIHZvaWQgZGlzbWlzcyhXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5n
Q29ycmVjdGlvblBhbmVsKTsKKyAgICBTdHJpbmcgZGlzbWlzc1Nvb24oV2ViQ29yZTo6UmVhc29u
Rm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7CisgICAgc3RhdGljIHZvaWQgcmVjb3JkQXV0
b2NvcnJlY3Rpb25SZXNwb25zZShXS1ZpZXcqLCBOU0NvcnJlY3Rpb25SZXNwb25zZSwgY29uc3Qg
U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7
CisKK3ByaXZhdGU6CisgICAgYm9vbCBpc1Nob3dpbmcoKSBjb25zdCB7IHJldHVybiBtX3ZpZXc7
IH0KKyAgICB2b2lkIGRpc21pc3NJbnRlcm5hbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5n
Q29ycmVjdGlvblBhbmVsLCBib29sIGRpc21pc3NpbmdFeHRlcm5hbGx5KTsKKyAgICB2b2lkIGhh
bmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQoTlNTdHJpbmcqIGFjY2VwdGVkUmVwbGFjZW1lbnQsIE5T
U3RyaW5nKiByZXBsYWNlZCwgTlNTdHJpbmcqIHByb3Bvc2VkUmVwbGFjZW1lbnQsIE5TQ29ycmVj
dGlvbkJ1YmJsZVR5cGUpOworCisgICAgYm9vbCBtX3dhc0Rpc21pc3NlZEV4dGVybmFsbHk7Cisg
ICAgV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCBtX3JlYXNvbkZv
ckRpc21pc3Npbmc7CisgICAgUmV0YWluUHRyPFdLVmlldz4gbV92aWV3OworICAgIFJldGFpblB0
cjxOU1N0cmluZz4gbV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rpc21pc3NhbDsKKyAgICBSZXRhaW5Q
dHI8TlNDb25kaXRpb24+IG1fcmVzdWx0Q29uZGl0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisK
KyNlbmRpZiAvLyBDb3JyZWN0aW9uUGFuZWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMWZmY2RmNGM0ZmQzNGEyMjU1
NDgwODcwMDBjZjQ5ODY2MjNhYmI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0KQEAgLTAsMCArMSwxNjkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9X
X0xFT1BBUkQpCisjaW1wb3J0ICJDb3JyZWN0aW9uUGFuZWwuaCIKKworI2ltcG9ydCAiV2ViUGFn
ZVByb3h5LmgiCisjaW1wb3J0ICJXS1ZpZXcuaCIKKyNpbXBvcnQgIldLVmlld1ByaXZhdGUuaCIK
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBpbmxpbmUgTlNDb3JyZWN0aW9u
QnViYmxlVHlwZSBjb3JyZWN0aW9uQnViYmxlVHlwZShDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5l
bFR5cGUgcGFuZWxUeXBlKQoreworICAgIHN3aXRjaCAocGFuZWxUeXBlKSB7CisgICAgY2FzZSBD
b3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGVDb3JyZWN0aW9uOgorICAgICAgICByZXR1cm4g
TlNDb3JyZWN0aW9uQnViYmxlVHlwZUNvcnJlY3Rpb247CisgICAgY2FzZSBDb3JyZWN0aW9uUGFu
ZWxJbmZvOjpQYW5lbFR5cGVSZXZlcnNpb246CisgICAgICAgIHJldHVybiBOU0NvcnJlY3Rpb25C
dWJibGVUeXBlUmV2ZXJzaW9uOworICAgIGNhc2UgQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxU
eXBlU3BlbGxpbmdTdWdnZXN0aW9uczoKKyAgICAgICAgcmV0dXJuIE5TQ29ycmVjdGlvbkJ1YmJs
ZVR5cGVHdWVzc2VzOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gTlNDb3JyZWN0aW9uQnViYmxlVHlwZUNvcnJlY3Rpb247Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitDb3JyZWN0aW9uUGFuZWw6OkNvcnJlY3Rpb25QYW5lbCgpCisgICAgOiBtX3dhc0Rp
c21pc3NlZEV4dGVybmFsbHkoZmFsc2UpCisgICAgLCBtX3JlYXNvbkZvckRpc21pc3NpbmcoUmVh
c29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbElnbm9yZWQpCisgICAgLCBtX3Jlc3VsdENv
bmRpdGlvbihBZG9wdE5TLCBbW05TQ29uZGl0aW9uIGFsbG9jXSBpbml0XSkKK3sKK30KKworQ29y
cmVjdGlvblBhbmVsOjp+Q29ycmVjdGlvblBhbmVsKCkKK3sKKyAgICBkaXNtaXNzSW50ZXJuYWwo
UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbElnbm9yZWQsIGZhbHNlKTsKK30KKwor
dm9pZCBDb3JyZWN0aW9uUGFuZWw6OnNob3coV0tWaWV3KiB2aWV3LCBDb3JyZWN0aW9uUGFuZWxJ
bmZvOjpQYW5lbFR5cGUgdHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFj
ZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2Vt
ZW50U3RyaW5ncykKK3sKKyAgICBkaXNtaXNzSW50ZXJuYWwoUmVhc29uRm9yRGlzbWlzc2luZ0Nv
cnJlY3Rpb25QYW5lbElnbm9yZWQsIGZhbHNlKTsKKyAgICAKKyAgICBpZiAoIXZpZXcpCisgICAg
ICAgIHJldHVybjsKKworICAgIE5TU3RyaW5nKiByZXBsYWNlZFN0cmluZ0FzTlNTdHJpbmcgPSBy
ZXBsYWNlZFN0cmluZzsKKyAgICBOU1N0cmluZyogcmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5n
ID0gcmVwbGFjZW1lbnRTdHJpbmc7CisgICAgbV92aWV3ID0gdmlldzsKKyAgICBOU0NvcnJlY3Rp
b25CdWJibGVUeXBlIGJ1YmJsZVR5cGUgPSBjb3JyZWN0aW9uQnViYmxlVHlwZSh0eXBlKTsKKyAg
ICAKKyAgICBOU011dGFibGVBcnJheSogYWx0ZXJuYXRpdmVTdHJpbmdzID0gMDsKKyAgICBpZiAo
IWFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLmlzRW1wdHkoKSkgeworICAgICAgICBzaXpl
X3Qgc2l6ZSA9IGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLnNpemUoKTsKKyAgICAgICAg
YWx0ZXJuYXRpdmVTdHJpbmdzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnNp
emVdOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAg
ICAgIFthbHRlcm5hdGl2ZVN0cmluZ3MgYWRkT2JqZWN0OihOU1N0cmluZyopYWx0ZXJuYXRpdmVS
ZXBsYWNlbWVudFN0cmluZ3NbaV1dOworICAgIH0KKworICAgIE5TU3BlbGxDaGVja2VyKiBzcGVs
bENoZWNrZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXTsKKyAgICBbc3Bl
bGxDaGVja2VyIHNob3dDb3JyZWN0aW9uQnViYmxlT2ZUeXBlOmJ1YmJsZVR5cGUgcHJpbWFyeVN0
cmluZzpyZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgYWx0ZXJuYXRpdmVTdHJpbmdzOmFsdGVy
bmF0aXZlU3RyaW5ncyBmb3JTdHJpbmdJblJlY3Q6Ym91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5n
IHZpZXc6bV92aWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcqIGFjY2VwdGVk
U3RyaW5nKSB7CisgICAgICAgIGhhbmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQoYWNjZXB0ZWRTdHJp
bmcsIHJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZywgcmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5n
LCBidWJibGVUeXBlKTsKKyAgICB9XTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWw6OmRpc21p
c3MoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24pCit7CisgICAgZGlz
bWlzc0ludGVybmFsKHJlYXNvbiwgdHJ1ZSk7Cit9CisKK1N0cmluZyBDb3JyZWN0aW9uUGFuZWw6
OmRpc21pc3NTb29uKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uKQor
eworICAgIGlmICghaXNTaG93aW5nKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAg
IGRpc21pc3NJbnRlcm5hbChyZWFzb24sIHRydWUpOworICAgIFttX3Jlc3VsdENvbmRpdGlvbi5n
ZXQoKSBsb2NrXTsKKyAgICB3aGlsZSAoIW1fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNtaXNzYWwp
CisgICAgICAgIFttX3Jlc3VsdENvbmRpdGlvbi5nZXQoKSB3YWl0XTsKKyAgICBbbV9yZXN1bHRD
b25kaXRpb24uZ2V0KCkgdW5sb2NrXTsKKyAgICByZXR1cm4gbV9yZXN1bHRGb3JTeW5jaHJvbm91
c0Rpc21pc3NhbC5nZXQoKTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3NJbnRl
cm5hbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbiwgYm9vbCBkaXNt
aXNzaW5nRXh0ZXJuYWxseSkKK3sKKyAgICBtX3dhc0Rpc21pc3NlZEV4dGVybmFsbHkgPSBkaXNt
aXNzaW5nRXh0ZXJuYWxseTsKKyAgICBpZiAoIWlzU2hvd2luZygpKQorICAgICAgICByZXR1cm47
CisgICAgCisgICAgbV9yZWFzb25Gb3JEaXNtaXNzaW5nID0gcmVhc29uOworICAgIG1fcmVzdWx0
Rm9yU3luY2hyb25vdXNEaXNtaXNzYWwuY2xlYXIoKTsKKyAgICBpZiAocmVhc29uID09IFJlYXNv
bkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxBY2NlcHRlZCkKKyAgICAgICAgW1tOU1NwZWxs
Q2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGRpc21pc3NDb3JyZWN0aW9uQnViYmxlRm9yVmll
dzptX3ZpZXcuZ2V0KCldOworICAgIGVsc2UKKyAgICAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFy
ZWRTcGVsbENoZWNrZXJdIGNhbmNlbENvcnJlY3Rpb25CdWJibGVGb3JWaWV3Om1fdmlldy5nZXQo
KV07CisgICAgbV92aWV3LmNsZWFyKCk7Cit9CisKK3ZvaWQgQ29ycmVjdGlvblBhbmVsOjpyZWNv
cmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdLVmlldyogdmlldywgTlNDb3JyZWN0aW9uUmVzcG9u
c2UgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZW1lbnRTdHJpbmcpCit7CisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENo
ZWNrZXJdIHJlY29yZFJlc3BvbnNlOnJlc3BvbnNlIHRvQ29ycmVjdGlvbjpyZXBsYWNlbWVudFN0
cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRX
aXRoVGFnOlt2aWV3IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnXV07Cit9CisKK3ZvaWQgQ29ycmVj
dGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJl
cGxhY2VtZW50LCBOU1N0cmluZyogcmVwbGFjZWQsIE5TU3RyaW5nKiBwcm9wb3NlZFJlcGxhY2Vt
ZW50LCAgTlNDb3JyZWN0aW9uQnViYmxlVHlwZSBjb3JyZWN0aW9uQnViYmxlVHlwZSkKK3sKKyAg
ICBOU1NwZWxsQ2hlY2tlciogc3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNw
ZWxsQ2hlY2tlcl07CisgICAgTlNJbnRlZ2VyIGRvY3VtZW50VGFnID0gW21fdmlldy5nZXQoKSBz
cGVsbENoZWNrZXJEb2N1bWVudFRhZ107CisgICAgCisgICAgc3dpdGNoIChjb3JyZWN0aW9uQnVi
YmxlVHlwZSkgeworICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUNvcnJlY3Rpb246Cisg
ICAgICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQorICAgICAgICAgICAgW3NwZWxsQ2hlY2tl
ciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkIHRvQ29ycmVjdGlv
bjphY2NlcHRlZFJlcGxhY2VtZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6bmlsIGluU3Bl
bGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIGlmICghbV93YXNEaXNtaXNzZWRFeHRlcm5hbGx5IHx8IG1fcmVhc29uRm9yRGlzbWlzc2lu
ZyA9PSBSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsQ2FuY2VsbGVkKQorICAgICAg
ICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9u
c2VSZWplY3RlZCB0b0NvcnJlY3Rpb246cHJvcG9zZWRSZXBsYWNlbWVudCBmb3JXb3JkOnJlcGxh
Y2VkIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFnXTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3Bv
bnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlSWdub3JlZCB0b0NvcnJlY3Rpb246cHJvcG9zZWRSZXBs
YWNlbWVudCBmb3JXb3JkOnJlcGxhY2VkIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRo
VGFnOmRvY3VtZW50VGFnXTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIE5T
Q29ycmVjdGlvbkJ1YmJsZVR5cGVSZXZlcnNpb246CisgICAgICAgIGlmIChhY2NlcHRlZFJlcGxh
Y2VtZW50KQorICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJl
Y3Rpb25SZXNwb25zZVJldmVydGVkIHRvQ29ycmVjdGlvbjpyZXBsYWNlZCBmb3JXb3JkOmFjY2Vw
dGVkUmVwbGFjZW1lbnQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1l
bnRUYWddOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVH
dWVzc2VzOgorICAgICAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKKyAgICAgICAgICAgIFtz
cGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZCB0
b0NvcnJlY3Rpb246YWNjZXB0ZWRSZXBsYWNlbWVudCBmb3JXb3JkOnJlcGxhY2VkIGxhbmd1YWdl
Om5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFnXTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIAorICAgIGlmICghbV93YXNEaXNtaXNzZWRFeHRlcm5hbGx5KSB7CisgICAg
ICAgIFttX3ZpZXcuZ2V0KCkgaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OmFjY2VwdGVkUmVw
bGFjZW1lbnRdOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIFttX3Jlc3VsdENv
bmRpdGlvbi5nZXQoKSBsb2NrXTsKKyAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKKyAgICAg
ICAgbV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rpc21pc3NhbC5hZG9wdE5TKFthY2NlcHRlZFJlcGxh
Y2VtZW50IGNvcHldKTsKKyAgICBbbV9yZXN1bHRDb25kaXRpb24uZ2V0KCkgc2lnbmFsXTsKKyAg
ICBbbV9yZXN1bHRDb25kaXRpb24uZ2V0KCkgdW5sb2NrXTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDRmMGI5ZjA1NmZkNzkzZjljNzRmMDJmN2M2OGIxNmIxMmE4ZmM4M2EuLmYzZmUxZTUwNDlj
OGFjZTU1NjM1ZjkyMjA1NjlmOGZlMmQ0ZTY1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4MCw2ICszODAsOCBAQAogCQk5
M0ZDNjdCRTEyRDNDQ0YyMDBBNjA2MTAgLyogRGVjb2RlckFkYXB0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkM2NzlFMTJEM0NDNzQwMEE2MDYx
MCAvKiBEZWNvZGVyQWRhcHRlci5oICovOyB9OwogCQk5M0ZDNjdCRjEyRDNDQ0YyMDBBNjA2MTAg
LyogRW5jb2RlckFkYXB0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNGQzY3OUYxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmNw
cCAqLzsgfTsKIAkJOTNGQzY3QzAxMkQzQ0NGMjAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZDNjdBMDEy
RDNDQzc0MDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuaCAqLzsgfTsKKwkJQjg3OEI2MTUxMzM0
MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjg3OEI2MTMxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJl
Y3Rpb25QYW5lbC5oICovOyB9OworCQlCODc4QjYxNjEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVj
dGlvblBhbmVsLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjg3OEI2MTQxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAqLzsgfTsK
IAkJQkMwMDkyRjcxMTU4MzdBMzAwRTBBRTJBIC8qIFJ1bkxvb3BNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwOTJGNTExNTgzN0EzMDBFMEFF
MkEgLyogUnVuTG9vcE1hYy5tbSAqLzsgfTsKIAkJQkMwMDkyRjgxMTU4MzdBMzAwRTBBRTJBIC8q
IFdvcmtRdWV1ZU1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzAwOTJGNjExNTgzN0EzMDBFMEFFMkEgLyogV29ya1F1ZXVlTWFjLmNwcCAqLzsg
fTsKIAkJQkMwMzJENzUxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkNocm9tZUNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJENjAxMEY0Mzc4
RDAwNThDMTVBIC8qIFdlYkNocm9tZUNsaWVudC5oICovOyB9OwpAQCAtMTI2MCw2ICsxMjYyLDgg
QEAKIAkJOTNGQzY3QTAxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVuY29kZXJBZGFwdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3MkQ1RDdGMTIzNkNCQTgwMEE4OEIxNSAvKiBXZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIzOTZF
QTU1MTJFMEVEMkQwMEY0RkVCNyAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI4NzhCNjEz
MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29ycmVjdGlvblBhbmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUI4NzhCNjE0MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3JyZWN0aW9uUGFuZWwubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDA5MkY1MTE1ODM3QTMwMEUwQUUyQSAv
KiBSdW5Mb29wTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UnVuTG9vcE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMDkyRjYxMTU4
MzdBMzAwRTBBRTJBIC8qIFdvcmtRdWV1ZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXb3JrUXVldWVNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzAzMkQ2MDEwRjQzNzhEMDA1OEMxNUEgLyogV2ViQ2hyb21lQ2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNocm9tZUNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjk2NCwyMCArMjk2OCwyMiBAQAogCQlCQ0NGMDg1QzExM0Yz
Qjc1MDBDNjUwQzUgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKLQkJCQlDRENBODVERTEzMkFEMDUzMDBFOTYxREYgLyogV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eU1hYy5tbSAqLywKLQkJCQlDRENBODVDNjEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlci5tbSAqLywKLQkJCQlDRENBODVDNzEzMkFCQTRFMDBFOTYx
REYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovLAogCQkJCTFBNjQyOTJDMTJE
RTVGOTgwMENBQUUyQyAvKiBCYWNraW5nU3RvcmVNYWMubW0gKi8sCiAJCQkJQkMyNjUxRjUxMTgy
NUVGODAwMjQzRTEyIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5TWFjLm1tICovLAor
CQkJCUI4NzhCNjEzMTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAqLywKKwkJ
CQlCODc4QjYxNDEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1tICovLAogCQkJ
CTFBQTQxN0VEMTJDMDBEODcwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlck1hYy5tbSAqLywKIAkJCQkx
QTFDNjQ4NjExRjQxNUI3MDA1NTNDMTkgLyogV2ViQ29udGV4dE1hYy5tbSAqLywKIAkJCQk1MUFD
QkI5RTEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oICovLAogCQkJ
CTUxQUNCQjlGMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1tICov
LAorCQkJCUNEQ0E4NURFMTMyQUQwNTMwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5TWFjLm1tICovLAogCQkJCTFDQThCOTM1MTI3Qzc3NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0
b3JQcm94eU1hYy5tbSAqLywKIAkJCQlCQzg1N0U4NTEyQjcxRUJCMDBFREVCMkUgLyogV2ViUGFn
ZVByb3h5TWFjLm1tICovLAogCQkJCUJDNTc1MDk1MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1
cE1lbnVQcm94eU1hYy5oICovLAogCQkJCUJDNTc1MDk2MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQ
b3B1cE1lbnVQcm94eU1hYy5tbSAqLywKIAkJCQlCQzg0RUIxNzEyQTcxMDBDMDA4M0YyREEgLyog
V2ViUHJlZmVyZW5jZXNNYWMubW0gKi8sCisJCQkJQ0RDQTg1QzYxMzJBQkE0RTAwRTk2MURGIC8q
IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gKi8sCisJCQkJQ0RDQTg1QzcxMzJBQkE0
RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTM1NzksNiArMzU4
NSw3IEBACiAJCQkJNTExQjI0QUIxMzJFMDk3MjAwMDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFEMDJGNkExMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25E
YXRhYmFzZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUQwMkY2QzEzMkVDNzM3MDBC
RUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQjg3OEI2MTUxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzNEM0EzQjYxMzM5NjAwQjAwNzA5QkU0IC8qIFdLTWVkaWFDYWNoZU1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzRDNBM0JCMTMzOTYwNjIwMDcwOUJFNCAvKiBXZWJN
ZWRpYUNhY2hlTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkzM0QzQTNDMjEzMzk2
MEIwMDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
NDE5Niw2ICs0MjAzLDcgQEAKIAkJCQk1MTFCMjRBQTEzMkUwOTcyMDAwNjVBMEMgLyogV2ViSWNv
bkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRDAyRjY0MTMyRUM1QjkwMEJFQUE5
NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTFEMDJGNkIxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUI4NzhCNjE2MTMzNDI4REMwMDY4ODhF
OSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gaW4gU291cmNlcyAqLywKIAkJCQkzM0QzQTNCNTEzMzk2
MDBCMDA3MDlCRTQgLyogV0tNZWRpYUNhY2hlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzM0QzQTNCQTEzMzk2MDYyMDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzM0QzQTNDMTEzMzk2MEIwMDA3MDlCRTQgLyogV2ViTWVk
aWFDYWNoZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRl
eCBmYTg0MjZhMzhlOTRmYmUzZjQxNjU5ODlmODE1MmYzYWQ3NGU2MDc4Li45MjAwYWYwODA5ZGI1
YTA5MmEwYWJkZTBkOGVmN2UwNmY4YjYzMGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTE0
MSwxMSArMTQxLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1l
dGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBl
bmFibGVkKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29y
ZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpOwotI2lmIFBMQVRGT1JN
KE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKLSAgICB2
aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJ
bmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJl
cGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBs
YWNlbWVudFN0cmluZ3MsIFdlYkNvcmU6OkVkaXRvciopOworI2lmIFBMQVRGT1JNKE1BQykgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgIHZpcnR1YWwgdm9pZCBzaG93
Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkNvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJp
bmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7
CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29u
Rm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7Ci0gICAgdmlydHVhbCBib29sIGlzU2hvd2lu
Z0NvcnJlY3Rpb25QYW5lbCgpOwotICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlv
blJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7Cisg
ICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oV2ViQ29yZTo6UmVh
c29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7CisgICAgdmlydHVhbCB2b2lkIHJlY29y
ZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcp
OwogI2VuZGlmCiAgICAgV2ViUGFnZSogbV9wYWdlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRv
ckNsaWVudE1hYy5tbQppbmRleCA4YWYwNDM4MGMxZmZlODRkOTVkZDFmMDgxZmVhMDIwYWE5MTY0
OTljLi43YTk1YTcyYTU4ZjYzOTM5M2YxMDY0MDgwODc1ZDFiNDIyM2NlOWVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JD
bGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCkBAIC00Niw3ICs0Niw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJSZXNvdXJjZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dlYk5TVVJMRXh0cmFzLmg+Ci0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAj
aW1wb3J0IDxBcHBLaXQvTlNUZXh0Q2hlY2tlci5oPgogI2VuZGlmCiAKQEAgLTI0NiwyNiArMjQ2
LDI3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBV
Q2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0CiAgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmcodGV4dCwgbGVu
Z3RoKSwgY2hlY2tpbmdUeXBlcyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNoZWNrVGV4dE9m
UGFyYWdyYXBoOjpSZXBseShyZXN1bHRzKSk7CiB9CiAKLSNpZiAhZGVmaW5lZChCVUlMRElOR19P
Tl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fU05PV19MRU9QQVJEKQotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0
aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlIHR5cGUsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25z
dCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNl
bWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRT
dHJpbmdzLCBXZWJDb3JlOjpFZGl0b3IqKQorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1df
TEVPUEFSRCkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNv
cmU6OkNvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSB0eXBlLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBs
YWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dD
b3JyZWN0aW9uUGFuZWwodHlwZSwgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCByZXBsYWNl
ZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdz
KSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdl
YkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpCit2b2lkIFdlYkVkaXRv
ckNsaWVudDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNz
aW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNtaXNzQ29ycmVjdGlvblBh
bmVsKHJlYXNvbikpOwogfQogCi1ib29sIFdlYkVkaXRvckNsaWVudDo6aXNTaG93aW5nQ29ycmVj
dGlvblBhbmVsKCkKK1N0cmluZyBXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3JyZWN0aW9uUGFu
ZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29u
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIFN0cmlu
ZyByZXN1bHQ7CisgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihyZWFzb24pLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbjo6UmVwbHkocmVzdWx0KSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlY29yZEF1dG9jb3JyZWN0aW9u
UmVzcG9uc2UoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSByZXNwb25z
ZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnRTdHJpbmcpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShyZXNw
b25zZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZykpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCBkYTc3YjBiNDk5OGM2NWFjNmZhZGYzYTllZGI2NmZhMDZlOTg5MDg4Li4zMDZiZTM3Y2QxZjYz
NDU5NjBmZjAyYzMyNWFiMTFkMDU0YmY0OTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMTMxLDQgKzIxMzEsMTQgQEAgYm9vbCBXZWJQ
YWdlOjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKICAgICByZXR1cm4gcGxhdGZvcm1DYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpOwogfQog
CisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
Cit2b2lkIFdlYlBhZ2U6OmhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdChjb25zdCBTdHJpbmcm
IHJlc3VsdCkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47
CisgICAgZnJhbWUtPmVkaXRvcigpLT5oYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQocmVzdWx0
KTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGE1NzNkZTIzMjQyMmI5YWQ0NTZjNWYy
YWJhMjVjNjU5ZmIxMTg4MGMuLmY3Yjk5ZDI1OGIyZGViODcyZGRiZWM1OWMxMzdmNDVhN2IwZmNl
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
MzYxLDYgKzM2MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREcmFnU291cmNlKE5TT2JqZWN0
ICopOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKKyAgICB2b2lkIGhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdChjb25z
dCBTdHJpbmcmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFn
ZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXgg
NjRmN2RhZmQwODYwMjgyZjUzODQxNjIzMDU0MGFhMTg5YjIxMTkyMi4uODY1Y2Q5OGQyMzI1ZTI3
ZDQ5ZWMxNmRmOWQxMjIyMjgzYjNkMGViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTE5Miw0ICsxOTIsOCBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICNpZiBQTEFURk9STShRVCkKICAgICBGaW5kWm9vbWFi
bGVBcmVhRm9yUG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCiAjZW5kaWYKKworI2lmIFBM
QVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgIEhh
bmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdChTdHJpbmcgcmVzdWx0KQorI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86722</attachid>
            <date>2011-03-23 16:58:34 -0700</date>
            <delta_ts>2011-03-23 19:53:20 -0700</delta_ts>
            <desc>Patch (v8)</desc>
            <filename>bug-56055-20110323165833.patch</filename>
            <type>text/plain</type>
            <size>82812</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE4MDcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzYzk1NTFhNzVkYjZjYWExNWM5ODU5
NjllNGU3MDdjYmM5Y2YxNjQ5Li4yYTgzNjhmNTgxNWZiNjNkYWFmMzYzNmE5NzQ2YzE0NzgwMGNj
OWJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMjMgIEppYSBQdSAgPGpwdUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SG9vayB1cCBuZXcgQXBwS2l0IGF1dG9jb3JyZWN0aW9uIFVJIHdpdGggV0syLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwNTUKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzg5NDc0NjM+CisKKyAgICAgICAgUGxlYXNlIHNlZSBXZWJDb3JlL0NoYW5n
ZUxvZyBmb3IgZGV0YWlsLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOiBF
bmFibGUgYXV0b2NvcnJlY3Rpb24gdGVzdHMgZm9yIFdLMi4KKwogMjAxMS0wMy0yMyAgWGlhb21l
aSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlh
dHQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKaW5kZXggMWViNGVhZjFkZTU1Mzdm
YWNkYzgwMzAxMjAwMDRjMDIxM2JhZjZlNi4uNjdjODM3OWI3ZDdkMGRiNWVkN2NmMzA3ZTFjOWJm
NTgzODRmZDlhNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lw
cGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZApAQCAtNTY5LDIz
ICs1NjksNiBAQCBwbGF0Zm9ybS9tYWMvZWRpdGluZy9kZWxldGluZy9iYWNrd2FyZC1kZWxldGUu
aHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItc2V0LWRh
dGEtZmlsZS11cmwuaHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNs
aWNrLXNob3VsZC1ub3QtZXhwYW5kLWFjcm9zcy1saW5lcy5odG1sCiBwbGF0Zm9ybS9tYWMvZWRp
dGluZy9zZWxlY3Rpb24vd29yZC10aGFpLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxs
aW5nL2F1dG9jb3JyZWN0aW9uLWNvbnRyYWN0aW9uLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5n
L3NwZWxsaW5nL2F1dG9jb3JyZWN0aW9uLWRlbGV0ZS5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGlu
Zy9zcGVsbGluZy9hdXRvY29ycmVjdGlvbi1yZW1vdmluZy11bmRlcmxpbmUtYWZ0ZXItcGFzdGUu
aHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvYXV0b2NvcnJlY3Rpb24tcmVtb3Zp
bmctdW5kZXJsaW5lLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2F1dG9jb3Jy
ZWN0aW9uLXNpbXBsZS5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9jbGljay1h
dXRvY29ycmVjdGVkLXdvcmQuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZGVs
ZXRlLWF1dG9jb3JyZWN0ZWQtd29yZC0xLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxs
aW5nL2RlbGV0ZS1pbnRvLWF1dG9jb3JyZWN0ZWQtd29yZC5odG1sCi1wbGF0Zm9ybS9tYWMvZWRp
dGluZy9zcGVsbGluZy9kZWxldGUtaW50by1taXNzcGVsbGVkLXdvcmQuaHRtbAotcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy1tdWx0aXBsZS13b3Jkcy13aXRoLW1hcmtlcnMu
aHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy13b3JkLXdpdGgtbWFy
a2VyLTEuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy13b3JkLXdp
dGgtbWFya2VyLTIuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZm9yd2FyZC1k
ZWxldGUtaW50by1hdXRvY29ycmVjdGVkLXdvcmQuaHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcv
c3BlbGxpbmcvbW92ZS1jdXJzb3ItYXJvdW5kLW1pc3NwZWxsZWQtd29yZC5odG1sCi1wbGF0Zm9y
bS9tYWMvZWRpdGluZy9zcGVsbGluZy9tb3ZlLWN1cnNvci10by1hdXRvY29ycmVjdGVkLXdvcmQu
aHRtbAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvbW92ZS1jdXJzb3ItdG8tYmVnaW5u
aW5nLW9mLWF1dG9jb3JyZWN0ZWQtd29yZC5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVs
bGluZy9yZW1vdmluZy11bmRlcmxpbmUtYWZ0ZXItYWNjZXB0aW5nLWF1dG9jb3JyZWN0aW9uLXVz
aW5nLXB1bmN0dWF0aW9uLmh0bWwKIHBsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LWFwcGVh
cmFuY2Utc3BpbmJ1dHRvbi11cC5odG1sCiBwbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC1u
dW1iZXItY2xpY2suaHRtbAogcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvbGlzdGJveC1zY3JvbGxi
YXItaGl0LXRlc3QuaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ1MDM2NWY1YmEyODgzNzgzMDRjZDI0Mzgz
Y2FlNTNjYzc4ODY5MjguLjQ3NDY2ODY4MGM1MTRhYzMwYTdjNjU5ZDNiYWMxZTdhYzE0M2MwMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMS0wMy0yMyAgSmlhIFB1ICA8anB1QGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBIb29rIHVwIG5ldyBBcHBLaXQgYXV0b2NvcnJlY3Rpb24gVUkgd2l0aCBXSzIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA1NQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODk0NzQ2Mz4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIHRvIGVuYWJs
ZSBXSzIgdG8gdXRpbGl6ZSBhdXRvY29ycmVjdGlvbiBVSSBvbiBNYWMgT1MgWC4gSXQgY29udGFp
bnMgZm9sbG93aW5nCisgICAgICAgIG1ham9yIGNoYW5nZXM6CisKKyAgICAgICAgMS4gQWxsIGJ1
dCBvbmUgYXV0b2NvcnJlY3Rpb24gcmVsYXRlZCBtZXNzYWdlIGlzIHN5bmNocm9ub3VzLiBTaW5j
ZSBkaXNtaXNzaW5nIGF1dG9jb3JyZWN0aW9uCisgICAgICAgIHBhbmVsIGNhbiBwb3RlbnRpYWxs
eSBjYXVzZSBlZGl0aW5nIHRvIG9jY3VyLCBhIHN5bmNocm9ub3VzIGRpc21pc3NDb3JyZWN0aW9u
UGFuZWxTb29uKCkgZnVuY3Rpb24KKyAgICAgICAgaXMgaW50cm9kdWNlZCB0byBlbnN1cmUgYWxs
IGVkaXRpbmcgY29tbWFuZHMgb2NjdXIgaW4gY29ycmVjdCBvcmRlci4KKworICAgICAgICAyLiBB
ZGRpdGlvbmFsIGNvbmRpdGlvbiB2YXJpYWJsZSBpcyBuZWVkZWQgdG8gaW1wbGVtZW50IGRpc21p
c3NDb3JyZWN0aW9uUGFuZWxTb29uKCkuCisgICAgICAgIFRvIGltcHJvdmUgbWFpbnRhaW5hYmls
aXR5LCBDb3JyZWN0aW9uUGFuZWwgY2xhc3MgaXMgaW50cm9kdWNlZCB0byBtYW5hZ2UgdGhlCisg
ICAgICAgIGludGVybmFsIHN0YXRlIHJlbGF0ZWQgdG8gY29ycmVjdGlvbiBwYW5lbC4gVGhpcyBj
aGFuZ2UgaXMgYXBwbGllZCB0byBib3RoIFdLMSBhbmQgV0syLgorCisgICAgICAgIDMuIEVkaXRv
ckNsaWVudDo6aXNTaG93aW5nQ29ycmVjdGlvblBhbmVsKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVGhl
IG9yaWdpbmFsIHB1cnBvc2UgaXMgdG8gYWxsb3cKKyAgICAgICAgZWRpdG9yIHRvIGtub3cgd2hl
biB0byBoYW5kbGUgRVNDIGtleSBldmVudC4gTm93IHRoaXMgaXMgaGFuZGxlZCBpbnRlcm5hbGx5
IGluIEFwcEtpdCwgc28KKyAgICAgICAgRWRpdG9yQ2xpZW50Ojppc1Nob3dpbmdDb3JyZWN0aW9u
UGFuZWwoKSBpc24ndCBuZWNlc3NhcnkgYW55bW9yZS4KKworICAgICAgICA0LiBUaGUgRWRpdG9y
KiBhcmd1bWVudCBpbiBFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwoKSBoYXMgYmVl
biByZW1vdmVkLCBzaW5jZSB3ZSBjYW4KKyAgICAgICAgYWNjZXNzIG9iamVjdCB2aWEgV2ViVmll
dyBvciBXS1ZpZXcuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5S
YW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjb3JyZWN0aW9uUGFuZWxUaW1lckZp
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlBdXRvY29ycmVjdGlvbkJlZm9yZVR5cGlu
Z0lmQXBwcm9wcmlhdGUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICog
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbW1h
bmRNYXApOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVtcHR5RWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKToKKyAgICAgICAgKFdl
YkNvcmU6OkVtcHR5RWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbik6Cisg
ICAgICAgICogbWFudWFsLXRlc3RzL2F1dG9jb3JyZWN0aW9uL2Nsb3NlLXdpbmRvdy13aGVuLWNv
cnJlY3Rpb24taXMtc2hvd24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGFnZS9FZGl0b3JDbGll
bnQuaDoKKwogMjAxMS0wMy0yMyAgWGlhb21laSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlhdHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
aW5kZXggODgwNzk2NTA2OGE0MzkxMGE5YWQ5MzY1MWUxNDYyZWNjOGU5Y2Y5YS4uYjhjOTVjY2U1
OGFjNTdhYzFkOTk5NzZmNGRmODZhNmM4Y2JlMGYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcApAQCAtMjA3Miw3ICsyMDcyLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NB
ZnRlclR5cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwKICAgICAg
ICAgICAgIGRvQXBwbHlDb3JyZWN0aW9uID0gZmFsc2U7CiAgICAgfQogICAgIGlmIChkb0FwcGx5
Q29ycmVjdGlvbikKLSAgICAgICAgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNt
aXNzaW5nQ29ycmVjdGlvblBhbmVsQWNjZXB0ZWQpOworICAgICAgICBoYW5kbGVDb3JyZWN0aW9u
UGFuZWxSZXN1bHQoZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oUmVhc29uRm9yRGlzbWlzc2lu
Z0NvcnJlY3Rpb25QYW5lbEFjY2VwdGVkKSk7CiAgICAgZWxzZQogICAgICAgICBtX2NvcnJlY3Rp
b25QYW5lbEluZm8ucmFuZ2VUb0JlUmVwbGFjZWQuY2xlYXIoKTsKICNlbHNlCkBAIC0yMzg3LDcg
KzIzODcsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAgICAgICAgICAgICAgICBt
X2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRTdHJpbmcgPSBwbGFpblRleHQocmFuZ2VUb1Jl
cGxhY2UuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8u
cmVwbGFjZW1lbnRTdHJpbmcgPSByZXN1bHQtPnJlcGxhY2VtZW50OwogICAgICAgICAgICAgICAg
ICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8uaXNBY3RpdmUgPSB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICBjbGllbnQoKS0+c2hvd0NvcnJlY3Rpb25QYW5lbChtX2NvcnJlY3Rpb25QYW5lbElu
Zm8ucGFuZWxUeXBlLCBib3VuZGluZ0JveCwgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJlcGxhY2Vk
U3RyaW5nLCByZXN1bHQtPnJlcGxhY2VtZW50LCBWZWN0b3I8U3RyaW5nPigpLCB0aGlzKTsKKyAg
ICAgICAgICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFuZWwobV9jb3JyZWN0
aW9uUGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3gsIG1fY29ycmVjdGlvblBhbmVsSW5m
by5yZXBsYWNlZFN0cmluZywgcmVzdWx0LT5yZXBsYWNlbWVudCwgVmVjdG9yPFN0cmluZz4oKSk7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAvLyBJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmb3Igc2hvd2luZyBjb3JyZWN0
aW9uIHBhbmVsLCB3ZSBpZ25vcmUgb3RoZXIgY29ycmVjdGlvbiBvciByZXBsYWNlbWVudC4KQEAg
LTI1MTcsNyArMjUxNyw3IEBAIHZvaWQgRWRpdG9yOjpjb3JyZWN0aW9uUGFuZWxUaW1lckZpcmVk
KFRpbWVyPEVkaXRvcj4qKQogICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRT
dHJpbmcgPSBwbGFpblRleHQobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJhbmdlVG9CZVJlcGxhY2Vk
LmdldCgpKTsKICAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gd2luZG93UmVjdEZvclJh
bmdlKG1fY29ycmVjdGlvblBhbmVsSW5mby5yYW5nZVRvQmVSZXBsYWNlZC5nZXQoKSk7CiAgICAg
ICAgIGlmICghYm91bmRpbmdCb3guaXNFbXB0eSgpKQotICAgICAgICAgICAgY2xpZW50KCktPnNo
b3dDb3JyZWN0aW9uUGFuZWwobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRp
bmdCb3gsIG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNlZFN0cmluZywgbV9jb3JyZWN0aW9u
UGFuZWxJbmZvLnJlcGxhY2VtZW50U3RyaW5nLCBWZWN0b3I8U3RyaW5nPigpLCB0aGlzKTsKKyAg
ICAgICAgICAgIGNsaWVudCgpLT5zaG93Q29ycmVjdGlvblBhbmVsKG1fY29ycmVjdGlvblBhbmVs
SW5mby5wYW5lbFR5cGUsIGJvdW5kaW5nQm94LCBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFj
ZWRTdHJpbmcsIG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNlbWVudFN0cmluZywgVmVjdG9y
PFN0cmluZz4oKSk7CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIENvcnJlY3Rpb25Q
YW5lbEluZm86OlBhbmVsVHlwZVNwZWxsaW5nU3VnZ2VzdGlvbnM6IHsKQEAgLTI1MzUsNyArMjUz
NSw3IEBAIHZvaWQgRWRpdG9yOjpjb3JyZWN0aW9uUGFuZWxUaW1lckZpcmVkKFRpbWVyPEVkaXRv
cj4qKQogICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8uaXNBY3RpdmUgPSB0cnVlOwogICAg
ICAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3ggPSB3aW5kb3dSZWN0Rm9yUmFuZ2UobV9jb3JyZWN0
aW9uUGFuZWxJbmZvLnJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKTsKICAgICAgICAgaWYgKCFib3Vu
ZGluZ0JveC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBjbGllbnQoKS0+c2hvd0NvcnJlY3Rpb25Q
YW5lbChtX2NvcnJlY3Rpb25QYW5lbEluZm8ucGFuZWxUeXBlLCBib3VuZGluZ0JveCwgbV9jb3Jy
ZWN0aW9uUGFuZWxJbmZvLnJlcGxhY2VkU3RyaW5nLCB0b3BTdWdnZXN0aW9uLCBzdWdnZXN0aW9u
cywgdGhpcyk7CisgICAgICAgICAgICBjbGllbnQoKS0+c2hvd0NvcnJlY3Rpb25QYW5lbChtX2Nv
cnJlY3Rpb25QYW5lbEluZm8ucGFuZWxUeXBlLCBib3VuZGluZ0JveCwgbV9jb3JyZWN0aW9uUGFu
ZWxJbmZvLnJlcGxhY2VkU3RyaW5nLCB0b3BTdWdnZXN0aW9uLCBzdWdnZXN0aW9ucyk7CiAgICAg
fQogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yNjAxLDM5ICsyNjAxLDM2IEBAIHZvaWQgRWRp
dG9yOjpzdG9wQ29ycmVjdGlvblBhbmVsVGltZXIoKQogI2VuZGlmCiB9CiAKLXZvaWQgRWRpdG9y
OjpoYW5kbGVDYW5jZWxPcGVyYXRpb24oKQordm9pZCBFZGl0b3I6OmRpc21pc3NDb3JyZWN0aW9u
UGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb25Gb3JEaXNtaXNz
aW5nKQogewogI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKICAgICBpZiAoIW1fY29y
cmVjdGlvblBhbmVsSW5mby5pc0FjdGl2ZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29ycmVj
dGlvblBhbmVsSW5mby5pc0FjdGl2ZSA9IGZhbHNlOworICAgIG1fY29ycmVjdGlvblBhbmVsSXNE
aXNtaXNzZWRCeUVkaXRvciA9IHRydWU7CiAgICAgaWYgKGNsaWVudCgpKQotICAgICAgICBjbGll
bnQoKS0+ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlv
blBhbmVsQ2FuY2VsbGVkKTsKLSNlbmRpZgotfQotCi1ib29sIEVkaXRvcjo6aXNTaG93aW5nQ29y
cmVjdGlvblBhbmVsKCkKLXsKLSNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCi0gICAg
aWYgKGNsaWVudCgpKQotICAgICAgICByZXR1cm4gY2xpZW50KCktPmlzU2hvd2luZ0NvcnJlY3Rp
b25QYW5lbCgpOworICAgICAgICBjbGllbnQoKS0+ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChyZWFz
b25Gb3JEaXNtaXNzaW5nKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlYXNvbkZvckRpc21p
c3NpbmcpOwogI2VuZGlmCi0gICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEVkaXRvcjo6ZGlz
bWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJl
YXNvbkZvckRpc21pc3NpbmcpCitTdHJpbmcgRWRpdG9yOjpkaXNtaXNzQ29ycmVjdGlvblBhbmVs
U29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbkZvckRpc21pc3Np
bmcpCiB7CiAjaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTAogICAgIGlmICghbV9jb3Jy
ZWN0aW9uUGFuZWxJbmZvLmlzQWN0aXZlKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8uaXNBY3RpdmUgPSBmYWxzZTsK
ICAgICBtX2NvcnJlY3Rpb25QYW5lbElzRGlzbWlzc2VkQnlFZGl0b3IgPSB0cnVlOwotICAgIGlm
IChjbGllbnQoKSkKLSAgICAgICAgY2xpZW50KCktPmRpc21pc3NDb3JyZWN0aW9uUGFuZWwocmVh
c29uRm9yRGlzbWlzc2luZyk7CisgICAgaWYgKCFjbGllbnQoKSkKKyAgICAgICAgcmV0dXJuIFN0
cmluZygpOworICAgIHJldHVybiBjbGllbnQoKS0+ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24o
cmVhc29uRm9yRGlzbWlzc2luZyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZWFzb25Gb3JE
aXNtaXNzaW5nKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7CiAjZW5kaWYKIH0KKwogdm9pZCBFZGl0
b3I6OnJlbW92ZVNwZWxsQW5kQ29ycmVjdGlvbk1hcmtlcnNGcm9tV29yZHNUb0JlRWRpdGVkKGJv
b2wgZG9Ob3RSZW1vdmVJZlNlbGVjdGlvbkF0V29yZEJvdW5kYXJ5KQogewogICAgIC8vIFdlIHdh
bnQgdG8gcmVtb3ZlIHRoZSBtYXJrZXJzIGZyb20gYSB3b3JkIGlmIGFuIGVkaXRpbmcgY29tbWFu
ZCB3aWxsIGNoYW5nZSB0aGUgd29yZC4gVGhpcyBjYW4gaGFwcGVuIGluIG9uZSBvZgpAQCAtMjc2
OCw3ICsyNzY1LDcgQEAgYm9vbCBFZGl0b3I6OmFwcGx5QXV0b2NvcnJlY3Rpb25CZWZvcmVUeXBp
bmdJZkFwcHJvcHJpYXRlKCkKICAgICBQb3NpdGlvbiBjYXJldFBvc2l0aW9uID0gbV9mcmFtZS0+
c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnN0YXJ0KCk7CiAKICAgICBpZiAobV9jb3JyZWN0aW9u
UGFuZWxJbmZvLnJhbmdlVG9CZVJlcGxhY2VkLT5lbmRQb3NpdGlvbigpID09IGNhcmV0UG9zaXRp
b24pIHsKLSAgICAgICAgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5n
Q29ycmVjdGlvblBhbmVsQWNjZXB0ZWQpOworICAgICAgICBoYW5kbGVDb3JyZWN0aW9uUGFuZWxS
ZXN1bHQoZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJl
Y3Rpb25QYW5lbEFjY2VwdGVkKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gCiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBlMWE3MTE5MjQ1ZTgzYmVkMTBkNzNkMjA1ZWZl
MjE1NDA4NWM1NjllLi41ZmI0OGM1ZDA1NmM1NTA5ZDdkYjJjNTMzN2I5ZmRjMzg4Y2I1OTYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTMyMCwxMSArMzIwLDkgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBhZGRUb0tpbGxSaW5nKFJhbmdlKiwgYm9vbCBwcmVwZW5kKTsKIAotICAgIHZvaWQg
aGFuZGxlQ2FuY2VsT3BlcmF0aW9uKCk7CiAgICAgdm9pZCBzdGFydENvcnJlY3Rpb25QYW5lbFRp
bWVyKENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSk7CiAgICAgLy8gSWYgdXNlciBjb25m
aXJtZWQgYSBjb3JyZWN0aW9uIGluIHRoZSBjb3JyZWN0aW9uIHBhbmVsLCBjb3JyZWN0aW9uIGhh
cyBub24temVybyBsZW5ndGgsIG90aGVyd2lzZSBpdCBtZWFucyB0aGF0IHVzZXIgaGFzIGRpc21p
c3NlZCB0aGUgcGFuZWwuCiAgICAgdm9pZCBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQoY29u
c3QgU3RyaW5nJiBjb3JyZWN0aW9uKTsKLSAgICBib29sIGlzU2hvd2luZ0NvcnJlY3Rpb25QYW5l
bCgpOwogCiAgICAgdm9pZCBwYXN0ZUFzRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSk7CiAgICAgdm9pZCBwYXN0
ZUFzUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYsIGJvb2wgc21hcnRSZXBsYWNlKTsKQEAgLTQyNSw2
ICs0MjMsNyBAQCBwcml2YXRlOgogICAgIE5vZGUqIGZpbmRFdmVudFRhcmdldEZyb21TZWxlY3Rp
b24oKSBjb25zdDsKICAgICB2b2lkIHN0b3BDb3JyZWN0aW9uUGFuZWxUaW1lcigpOwogICAgIHZv
aWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBh
bmVsKTsKKyAgICBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oUmVhc29uRm9yRGlz
bWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7CiAgICAgdm9pZCBhcHBseUNvcnJlY3Rpb25QYW5lbElu
Zm8oY29uc3QgVmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYgbWFya2VyVHlwZXNU
b0FkZCk7CiAgICAgLy8gUmV0dXJuIHRydWUgaWYgY29ycmVjdGlvbiB3YXMgYXBwbGllZCwgZmFs
c2Ugb3RoZXJ3aXNlLgogICAgIGJvb2wgYXBwbHlBdXRvY29ycmVjdGlvbkJlZm9yZVR5cGluZ0lm
QXBwcm9wcmlhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmlu
ZGV4IDZlYTk5NTRkOTVkNjQ3ZGE3ZmMzYmFlZjg3M2IyMWU2YzdhYzAxNzQuLjllYWZkMThiNTIy
ZDJiZmM2M2IxMmYyYTg4NTJmZDg3YjNlNTdjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3JDb21tYW5kLmNwcApAQCAtMTA5MSwxNCArMTA5MSw2IEBAIHN0YXRpYyBib29sIGV4ZWN1
dGVZYW5rQW5kU2VsZWN0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9O
X1BBTkVMCi1zdGF0aWMgYm9vbCBleGVjdXRlQ2FuY2VsT3BlcmF0aW9uKEZyYW1lKiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQotewotICAgIGZyYW1l
LT5lZGl0b3IoKS0+aGFuZGxlQ2FuY2VsT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0jZW5kaWYKLQogLy8gU3VwcG9ydGVkIGZ1bmN0aW9ucwogCiBzdGF0aWMgYm9vbCBzdXBwb3J0
ZWQoRnJhbWUqKQpAQCAtMTI0OSwxMyArMTI0MSw2IEBAIHN0YXRpYyBib29sIGVuYWJsZWRVbmRv
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogICAgIHJldHVybiBm
cmFtZS0+ZWRpdG9yKCktPmNhblVuZG8oKTsKIH0KIAotI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJ
T05fUEFORUwKLXN0YXRpYyBib29sIGVuYWJsZWREaXNtaXNzQ29ycmVjdGlvblBhbmVsKEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQotewotICAgIHJldHVybiBmcmFt
ZS0+ZWRpdG9yKCktPmlzU2hvd2luZ0NvcnJlY3Rpb25QYW5lbCgpOwotfQotI2VuZGlmCi0KIC8v
IFN0YXRlIGZ1bmN0aW9ucwogCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVOb25lKEZyYW1lKiwgRXZl
bnQqKQpAQCAtMTUzMiwxMCArMTUxNyw2IEBAIHN0YXRpYyBjb25zdCBDb21tYW5kTWFwJiBjcmVh
dGVDb21tYW5kTWFwKCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIHsgIlRha2VGaW5kU3Ry
aW5nRnJvbVNlbGVjdGlvbiIsIHsgZXhlY3V0ZVRha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbiwg
c3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRUYWtlRmluZFN0cmluZ0Zyb21T
ZWxlY3Rpb24sIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFs
bG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICNlbmRpZgotCi0jaWYgU1VQUE9SVF9BVVRP
Q09SUkVDVElPTl9QQU5FTAotICAgICAgICB7ICJDYW5jZWxPcGVyYXRpb24iLCB7IGV4ZWN1dGVD
YW5jZWxPcGVyYXRpb24sIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkRGlz
bWlzc0NvcnJlY3Rpb25QYW5lbCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRp
b24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAotI2VuZGlmCiAgICAgfTsK
IAogICAgIC8vIFRoZXNlIHVuc3VwcG9ydGVkIGNvbW1hbmRzIGFyZSBsaXN0ZWQgaGVyZSBzaW5j
ZSB0aGV5IGFwcGVhciBpbiB0aGUgTWljcm9zb2Z0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgKaW5kZXggZWQ5MmYxMTJjYmE4NzdmZDUyYzM0NjQwN2Y1YjRmZmUyNjEyMGY2Yy4uM2Iw
YWQyZTdhZDY0YjcwOTU5M2M4ZDEzZjMwNDE4ZGNjZTUxZjBhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaApAQCAtNTExLDkgKzUxMSw5IEBAIHB1YmxpYzoKICAgICBUZXh0Q2hl
Y2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiAmbV90ZXh0Q2hlY2tlckNsaWVudDsg
fQogCiAjaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTAotICAgIHZpcnR1YWwgdm9pZCBz
aG93Q29ycmVjdGlvblBhbmVsKENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBFZGl0b3IqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5l
bChDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0Nv
cnJlY3Rpb25QYW5lbCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2hvd2luZ0NvcnJlY3Rpb25Q
YW5lbCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJl
Y3Rpb25QYW5lbFNvb24oUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCkgeyByZXR1
cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJikgeyB9CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhH
cmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IEdyYW1tYXJEZXRhaWwmKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0cy9hdXRvY29ycmVjdGlvbi9jbG9z
ZS13aW5kb3ctd2hlbi1jb3JyZWN0aW9uLWlzLXNob3duLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9t
YW51YWwtdGVzdHMvYXV0b2NvcnJlY3Rpb24vY2xvc2Utd2luZG93LXdoZW4tY29ycmVjdGlvbi1p
cy1zaG93bi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjODJhMjBmNTgxNWY3YTM3YzllNTk0Y2E3N2ZmNjIw
OWEwNTQ4YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMv
YXV0b2NvcnJlY3Rpb24vY2xvc2Utd2luZG93LXdoZW4tY29ycmVjdGlvbi1pcy1zaG93bi5odG1s
CkBAIC0wLDAgKzEsNDggQEAKKzxodG1sPgorPGhlYWQ+CisKKzxzdHlsZT4KKy5lZGl0aW5nIHsK
KyAgICBib3JkZXI6IDJweCBzb2xpZCByZWQ7CisgICAgcGFkZGluZzogMTJweDsKKyAgICBmb250
LXNpemU6IDI0cHg7Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Li4vLi4vLi4vLi4vTGF5b3V0
VGVzdHMvZWRpdGluZy9lZGl0aW5nLmpzIGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0
L0phdmFTY3JpcHQiID48L3NjcmlwdD4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIGVkaXRpbmdUZXN0
KCkgeworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCd0Jyk7CisgICAgdHlwZUNoYXJhY3RlckNv
bW1hbmQoJ2gnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnZScpOworICAgIHR5cGVDaGFy
YWN0ZXJDb21tYW5kKCcgJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ20nKTsKKyAgICB0
eXBlQ2hhcmFjdGVyQ29tbWFuZCgnZScpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdzJyk7
CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2EnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFu
ZCgnZScpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdnJyk7CisgICAgdHlwZUNoYXJhY3Rl
ckNvbW1hbmQoJ2UnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnZScpOworICAgIHR5cGVD
aGFyYWN0ZXJDb21tYW5kKCcgJyk7CisgICAgZXhlY01vdmVTZWxlY3Rpb25CYWNrd2FyZEJ5Q2hh
cmFjdGVyQ29tbWFuZCgpOworfQorCis8L3NjcmlwdD4KKworPHRpdGxlPlRlc3RpbmcgY2xvc2lu
ZyB3aW5kb3cgd2hlbiBjb3JyZWN0aW9uIHN1Z2dlc3Rpb24gaXMgc2hvd248L3RpdGxlPgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2PjxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdoZW4gY29ycmVj
dGlvbiBzdWdnZXN0aW9uIGlzIHZpc2libGUsIGNsb3Npbmcgd2luZG93IGRvZXNuJ3QgaGFuZyBv
ciBjcmFzaC48L3A+Cis8cD5BZnRlciBzZWVpbmcgdGhlIHBhbmVsIHdpdGggbXVsdGlwbGUgY2Fu
ZGlkYXRlcywgY2xvc2UgdGhlIHdpbmRvdy48L3A+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZSBpZD0i
cm9vdCIgY2xhc3M9ImVkaXRpbmciPgorPHNwYW4gaWQ9InRlc3QiPjwvc3Bhbj4KKzwvZGl2Pgor
CisKKzxzY3JpcHQ+CitydW5FZGl0aW5nVGVzdCgpOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IGQ1ZGU2YTQxMDJjYmQyNzY4
ZGFjOWRhM2Y1ZjFhZDllY2Y4MDNkNTAuLmFlZGE4NDQ1ODhjYTZlZjU1ZjA2ODIzNDI4NTM3MDM1
OWM3YWE1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMTU4LDE0ICsxNTgs
MTUgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNr
ZXIoKSA9IDA7CiAKLSNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCiAgICAgZW51bSBB
dXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSB7CiAgICAgICAgIEF1dG9jb3JyZWN0aW9uRWRpdGVk
LAogICAgICAgICBBdXRvY29ycmVjdGlvblJldmVydGVkCiAgICAgfTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2hvd0NvcnJlY3Rpb25QYW5lbChDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY21lbnRTdHJpbmcsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncywgRWRpdG9yKikgPSAw
OworCisjaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTAorICAgIHZpcnR1YWwgdm9pZCBz
aG93Q29ycmVjdGlvblBhbmVsKENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3Qg
RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjbWVudFN0cmluZywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rp
b25QYW5lbCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwo
KSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oUmVh
c29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3Ry
aW5nKSA9IDA7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwM2UxODE2NWQ4NDZlNTcyNzUyNThhYjQ0
OTEyOWM5ZjJiNjRhZGI2Li5jNzA0Y2U1NTI4Y2RlOGRmYWJiYWUzZTZmNDNkZjlhM2Q2MzVjNWY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTAzLTIzICBKaWEgUHUgIDxqcHVAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEhvb2sgdXAgbmV3IEFwcEtpdCBhdXRvY29ycmVjdGlvbiBVSSB3aXRoIFdLMi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDU1CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84OTQ3NDYzPgorCisgICAgICAgIFBsZWFzZSBzZWUgV2ViQ29yZS9DaGFu
Z2VMb2cgZm9yIGRldGFpbC4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorCiAyMDExLTAzLTE3ICBKZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVc2UgYSBjb25zaXN0ZW50IHNldCBvZiBmaWxlIHBhdHRlcm5zIGluIHRoZSBzdm46
aWdub3JlIHByb3BlcnR5IGZvciBhbGwgLnhjb2RlcHJvaiBkaXJlY3Rvcmllcywgc3BlY2lmaWNh
bGx5OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMjBjMTU2Zjc5N2RiOTQwMjI4NGEwZDI1NTk1ZGNlYjk0NmE4ZjRkMy4uMDZhNTU2NjI3
NDk4Nzg4YjRhNWU5NjAwYmYzMDYxZTU1YTRmM2MxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNDQsNiArMzQ0LDggQEAKIAkJQjZD
RTVDMjUxMDBCQzVGNTAwMjE5OTM2IC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2ODA0OTcxMEZGQkNFQzEwMDlG
N0Y2MiAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjgwNDE3NkYxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYklu
c3BlY3RvckZyb250ZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCODA0MTc2RDEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmQu
aCAqLzsgfTsKIAkJQjgwNDE3NzAxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250
ZW5kLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjgw
NDE3NkUxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250ZW5kLm1tICovOyB9Owor
CQlCODI5NThEMzEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCODI5NThEMTEzMjcwN0QwMDAw
RDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLmggKi87IH07CisJCUI4Mjk1OEQ0MTMyNzA3RDAwMDBE
MEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCODI5NThEMjEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBh
bmVsLm1tICovOyB9OwogCQlCQzI2QzY5RTEwQjc0M0Y0MDBCNjg3RUQgLyogV2ViU2VyaWFsaXpl
ZEpTVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjZDNjlEMTBCNzQzRjQwMEI2ODdFRCAvKiBXZWJTZXJpYWxpemVkSlNWYWx1ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMjZDNkE1MTBC
NzQ0N0EwMEI2ODdFRCAvKiBXZWJTZXJpYWxpemVkSlNWYWx1ZS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjZDNkE0MTBCNzQ0N0EwMEI2ODdFRCAv
KiBXZWJTZXJpYWxpemVkSlNWYWx1ZS5tbSAqLzsgfTsKIAkJQkMyRTQ2NEQwRkQ4QTk2ODAwQTlE
OURFIC8qIFdlYlZpZXdEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzJFNDY0QjBGRDhBOTY4MDBBOUQ5REUgLyogV2ViVmlld0RhdGEuaCAqLzsg
fTsKQEAgLTY2MCw2ICs2NjIsOCBAQAogCQlCNjgwNDk3MjBGRkJDRUMxMDA5RjdGNjIgLyogV2Vi
QXBwbGljYXRpb25DYWNoZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYkFwcGxpY2F0aW9uQ2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUI4MDQxNzZEMTIxN0E4MzEwMDQ2NkJBRSAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3JGcm9udGVuZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCODA0MTc2RTEyMTdBODMxMDA0NjZCQUUgLyogV2Vi
SW5zcGVjdG9yRnJvbnRlbmQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJJbnNwZWN0b3JGcm9udGVuZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQjgyOTU4RDExMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JyZWN0aW9uUGFuZWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQjgyOTU4RDIxMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25Q
YW5lbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvcnJlY3Rp
b25QYW5lbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyNkM2OUQxMEI3NDNG
NDAwQjY4N0VEIC8qIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDMjZDNkE0MTBCNzQ0N0EwMEI2ODdFRCAvKiBXZWJTZXJpYWxpemVkSlNWYWx1
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNlcmlhbGl6
ZWRKU1ZhbHVlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJFNDY0QjBGRDhB
OTY4MDBBOUQ5REUgLyogV2ViVmlld0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViVmlld0RhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTUs
NiArMTI5OSw4IEBACiAJCUY1QjM2QjQwMDI4MURFODcwMTg2MzVDQiAvKiBXZWJDb3JlU3VwcG9y
dCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQjgyOTU4
RDExMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5oICovLAorCQkJCUI4Mjk1OEQy
MTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gKi8sCiAJCQkJNTk4QUQ5MUQx
MjAxQ0VDRjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50Lm1tICovLAogCQkJ
CTU5OEFEOTE5MTIwMUNFQzkwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5o
ICovLAogCQkJCUI2ODA0OTcxMEZGQkNFQzEwMDlGN0Y2MiAvKiBXZWJBcHBsaWNhdGlvbkNhY2hl
LmggKi8sCkBAIC0xNjQ1LDYgKzE2NTEsNyBAQAogCQkJCTNBRTE1RDUwMTJEQkRFRDQwMDkzMjND
OCAvKiBXZWJTdG9yYWdlTWFuYWdlckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzQUJC
M0M3QTEzMDlDM0I1MDBFOTNEOTQgLyogV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNDJEMzI0MTMxRUQxRTAwMDc1RkE0QiAvKiBXZWJMb2NhbGl6YWJsZVN0
cmluZ3NJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjgyOTU4RDMxMzI3MDdEMDAwMEQw
RTc5IC8qIENvcnJlY3Rpb25QYW5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDE1LDYgKzIwMjIs
NyBAQAogCQkJCUNEQTYyQUUzMTI1Rjg3QzIwMDdGRDExOCAvKiBXZWJGdWxsU2NyZWVuQ29udHJv
bGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTNBQkIzQzdCMTMwOUMzQjUwMEU5M0Q5NCAvKiBX
ZWJTdG9yYWdlVHJhY2tlckNsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNDJEMzREMTMx
RUQzODgwMDc1RkE0QiAvKiBXZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCUI4Mjk1OEQ0MTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwu
bW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAzMGI1M2VhMWI5Yjc1NzE5M2Uz
MzkwZWM4YjM0MDc2ODlmNTM0N2VkLi5lZWZmMmFhMjVjMWRhMDBiMjc5MmY4MDk2NTVlNmNjYTI5
NmU3NThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDMtMjMgIEpp
YSBQdSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSG9vayB1cCBuZXcgQXBwS2l0IGF1dG9jb3JyZWN0aW9uIFVJIHdpdGgg
V0syLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYw
NTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg5NDc0NjM+CisKKyAgICAgICAgUGxlYXNlIHNl
ZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3IgZGV0YWlsLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ29ycmVjdGlvblBhbmVsLmg6IEFkZGVkLgorICAgICAgICAoQ29ycmVjdGlvblBhbmVsOjpp
c1Nob3dpbmcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbTog
QWRkZWQuCisgICAgICAgIChjb3JyZWN0aW9uQnViYmxlVHlwZSk6CisgICAgICAgIChDb3JyZWN0
aW9uUGFuZWw6OkNvcnJlY3Rpb25QYW5lbCk6CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6On5D
b3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoQ29ycmVjdGlvblBhbmVsOjpzaG93KToKKyAgICAg
ICAgKENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzcyk6CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6
OmRpc21pc3NTb29uKToKKyAgICAgICAgKENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzc0ludGVybmFs
KToKKyAgICAgICAgKENvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25z
ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9y
Q2xpZW50OjpXZWJFZGl0b3JDbGllbnQpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpzaG93
Q29ycmVjdGlvblBhbmVsKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6ZGlzbWlzc0NvcnJl
Y3Rpb25QYW5lbCk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3JyZWN0aW9u
UGFuZWxTb29uKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
ZWJWaWV3IGhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDpdKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTEtMDMtMjIgIEFudG9uIEQnQXVyaWEgIDxhZGF1cmlh
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBh
bmVsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44YWRiNzlmMjM2YThlN2I2OGYzYWViMmEzNTQ1YjNhYzdiNWU2Y2YzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVj
dGlvblBhbmVsLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29ycmVj
dGlvblBhbmVsX2gKKyNkZWZpbmUgQ29ycmVjdGlvblBhbmVsX2gKKworI2lmICFkZWZpbmVkKEJV
SUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVm
aW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisjaW1wb3J0IDxBcHBLaXQvTlNUZXh0Q2hl
Y2tlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9Db3JyZWN0aW9uUGFuZWxJbmZvLmg+CisjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CisKK0BjbGFzcyBXZWJWaWV3OworCitjbGFzcyBDb3JyZWN0aW9u
UGFuZWwgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvcnJlY3Rpb25QYW5lbCk7CitwdWJs
aWM6CisgICAgQ29ycmVjdGlvblBhbmVsKCk7CisgICAgfkNvcnJlY3Rpb25QYW5lbCgpOworICAg
IHZvaWQgc2hvdyhXZWJWaWV3KiwgV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxU
eXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVu
dFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJp
bmdzKTsKKyAgICB2b2lkIGRpc21pc3MoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJl
Y3Rpb25QYW5lbCk7CisgICAgU3RyaW5nIGRpc21pc3NTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRp
c21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOworICAgIHN0YXRpYyB2b2lkIHJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UoV2ViVmlldyosIE5TQ29ycmVjdGlvblJlc3BvbnNlLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKKwor
cHJpdmF0ZToKKyAgICBib29sIGlzU2hvd2luZygpIGNvbnN0IHsgcmV0dXJuIG1fdmlldzsgfQor
ICAgIHZvaWQgZGlzbWlzc0ludGVybmFsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3Jy
ZWN0aW9uUGFuZWwsIGJvb2wgZGlzbWlzc2luZ0V4dGVybmFsbHkpOworICAgIHZvaWQgaGFuZGxl
QWNjZXB0ZWRSZXBsYWNlbWVudChOU1N0cmluZyogYWNjZXB0ZWRSZXBsYWNlbWVudCwgTlNTdHJp
bmcqIHJlcGxhY2VkLCBOU1N0cmluZyogcHJvcG9zZWRSZXBsYWNlbWVudCwgTlNDb3JyZWN0aW9u
QnViYmxlVHlwZSk7CisKKyAgICBib29sIG1fd2FzRGlzbWlzc2VkRXh0ZXJuYWxseTsKKyAgICBX
ZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIG1fcmVhc29uRm9yRGlz
bWlzc2luZzsKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gbV92aWV3OworICAgIFJldGFpblB0cjxO
U1N0cmluZz4gbV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rpc21pc3NhbDsKKyAgICBSZXRhaW5QdHI8
TlNDb25kaXRpb24+IG1fcmVzdWx0Q29uZGl0aW9uOworfTsKKworI2VuZGlmIC8vICFkZWZpbmVk
KEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisKKyNlbmRpZiAvLyBDb3JyZWN0aW9u
UGFuZWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29y
cmVjdGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVj
dGlvblBhbmVsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4M2I2MzRhZGQ1ZDRjYTM5MGIyMzkyMTU4Y2RhZDRk
Y2IyZjM1NmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9Db3JyZWN0aW9uUGFuZWwubW0KQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lt
cG9ydCAiQ29ycmVjdGlvblBhbmVsLmgiCisKKyNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCisK
KyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
TEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBpbmxpbmUgTlNDb3JyZWN0aW9uQnViYmxlVHlwZSBj
b3JyZWN0aW9uQnViYmxlVHlwZShDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUgcGFuZWxU
eXBlKQoreworICAgIHN3aXRjaCAocGFuZWxUeXBlKSB7CisgICAgY2FzZSBDb3JyZWN0aW9uUGFu
ZWxJbmZvOjpQYW5lbFR5cGVDb3JyZWN0aW9uOgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9u
QnViYmxlVHlwZUNvcnJlY3Rpb247CisgICAgY2FzZSBDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5l
bFR5cGVSZXZlcnNpb246CisgICAgICAgIHJldHVybiBOU0NvcnJlY3Rpb25CdWJibGVUeXBlUmV2
ZXJzaW9uOworICAgIGNhc2UgQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlU3BlbGxpbmdT
dWdnZXN0aW9uczoKKyAgICAgICAgcmV0dXJuIE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVHdWVzc2Vz
OworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTlNDb3JyZWN0
aW9uQnViYmxlVHlwZUNvcnJlY3Rpb247Cit9CisKK0NvcnJlY3Rpb25QYW5lbDo6Q29ycmVjdGlv
blBhbmVsKCkKKyAgICA6IG1fd2FzRGlzbWlzc2VkRXh0ZXJuYWxseShmYWxzZSkKKyAgICAsIG1f
cmVhc29uRm9yRGlzbWlzc2luZyhSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsSWdu
b3JlZCkKKyAgICAsIG1fcmVzdWx0Q29uZGl0aW9uKEFkb3B0TlMsIFtbTlNDb25kaXRpb24gYWxs
b2NdIGluaXRdKQoreworfQorCitDb3JyZWN0aW9uUGFuZWw6On5Db3JyZWN0aW9uUGFuZWwoKQor
eworICAgIGRpc21pc3NJbnRlcm5hbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVs
SWdub3JlZCwgZmFsc2UpOworfQorCit2b2lkIENvcnJlY3Rpb25QYW5lbDo6c2hvdyhXZWJWaWV3
KiB2aWV3LCBDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUgdHlwZSwgY29uc3QgRmxvYXRS
ZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKK3sKKyAgICBkaXNtaXNzSW50ZXJu
YWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbElnbm9yZWQsIGZhbHNlKTsKKyAg
ICAKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIE5TU3RyaW5nKiByZXBs
YWNlZFN0cmluZ0FzTlNTdHJpbmcgPSByZXBsYWNlZFN0cmluZzsKKyAgICBOU1N0cmluZyogcmVw
bGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nID0gcmVwbGFjZW1lbnRTdHJpbmc7CisgICAgbV92aWV3
ID0gdmlldzsKKyAgICBOU0NvcnJlY3Rpb25CdWJibGVUeXBlIGJ1YmJsZVR5cGUgPSBjb3JyZWN0
aW9uQnViYmxlVHlwZSh0eXBlKTsKKyAgICAKKyAgICBOU011dGFibGVBcnJheSogYWx0ZXJuYXRp
dmVTdHJpbmdzID0gMDsKKyAgICBpZiAoIWFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLmlz
RW1wdHkoKSkgeworICAgICAgICBzaXplX3Qgc2l6ZSA9IGFsdGVybmF0aXZlUmVwbGFjZW1lbnRT
dHJpbmdzLnNpemUoKTsKKyAgICAgICAgYWx0ZXJuYXRpdmVTdHJpbmdzID0gW05TTXV0YWJsZUFy
cmF5IGFycmF5V2l0aENhcGFjaXR5OnNpemVdOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIFthbHRlcm5hdGl2ZVN0cmluZ3MgYWRkT2JqZWN0
OihOU1N0cmluZyopYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3NbaV1dOworICAgIH0KKwor
ICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBzaG93Q29ycmVjdGlvbkJ1
YmJsZU9mVHlwZTpidWJibGVUeXBlIHByaW1hcnlTdHJpbmc6cmVwbGFjZW1lbnRTdHJpbmdBc05T
U3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZVN0cmluZ3MgZm9yU3RyaW5nSW5S
ZWN0OmJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZyB2aWV3Om1fdmlldy5nZXQoKSBjb21wbGV0
aW9uSGFuZGxlcjpeKE5TU3RyaW5nKiBhY2NlcHRlZFN0cmluZykgeworICAgICAgICBoYW5kbGVB
Y2NlcHRlZFJlcGxhY2VtZW50KGFjY2VwdGVkU3RyaW5nLCByZXBsYWNlZFN0cmluZ0FzTlNTdHJp
bmcsIHJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZywgYnViYmxlVHlwZSk7CisgICAgfV07Cit9
CisKK3ZvaWQgQ29ycmVjdGlvblBhbmVsOjpkaXNtaXNzKFJlYXNvbkZvckRpc21pc3NpbmdDb3Jy
ZWN0aW9uUGFuZWwgcmVhc29uKQoreworICAgIGRpc21pc3NJbnRlcm5hbChyZWFzb24sIHRydWUp
OworfQorCitTdHJpbmcgQ29ycmVjdGlvblBhbmVsOjpkaXNtaXNzU29vbihSZWFzb25Gb3JEaXNt
aXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbikKK3sKKyAgICBpZiAoIWlzU2hvd2luZygpKQor
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBkaXNtaXNzSW50ZXJuYWwocmVhc29uLCB0
cnVlKTsKKyAgICBbbV9yZXN1bHRDb25kaXRpb24uZ2V0KCkgbG9ja107CisgICAgd2hpbGUgKCFt
X3Jlc3VsdEZvclN5bmNocm9ub3VzRGlzbWlzc2FsKQorICAgICAgICBbbV9yZXN1bHRDb25kaXRp
b24uZ2V0KCkgd2FpdF07CisgICAgW21fcmVzdWx0Q29uZGl0aW9uLmdldCgpIHVubG9ja107Cisg
ICAgcmV0dXJuIG1fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNtaXNzYWwuZ2V0KCk7Cit9CisKK3Zv
aWQgQ29ycmVjdGlvblBhbmVsOjpkaXNtaXNzSW50ZXJuYWwoUmVhc29uRm9yRGlzbWlzc2luZ0Nv
cnJlY3Rpb25QYW5lbCByZWFzb24sIGJvb2wgZGlzbWlzc2luZ0V4dGVybmFsbHkpCit7CisgICAg
bV93YXNEaXNtaXNzZWRFeHRlcm5hbGx5ID0gZGlzbWlzc2luZ0V4dGVybmFsbHk7CisgICAgaWYg
KCFpc1Nob3dpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fcmVhc29uRm9yRGlz
bWlzc2luZyA9IHJlYXNvbjsKKyAgICBtX3Jlc3VsdEZvclN5bmNocm9ub3VzRGlzbWlzc2FsLmNs
ZWFyKCk7CisgICAgaWYgKHJlYXNvbiA9PSBSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBh
bmVsQWNjZXB0ZWQpCisgICAgICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2Vy
XSBkaXNtaXNzQ29ycmVjdGlvbkJ1YmJsZUZvclZpZXc6bV92aWV3LmdldCgpXTsKKyAgICBlbHNl
CisgICAgICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBjYW5jZWxDb3Jy
ZWN0aW9uQnViYmxlRm9yVmlldzptX3ZpZXcuZ2V0KCldOworICAgIG1fdmlldy5jbGVhcigpOwor
fQorCit2b2lkIENvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShX
ZWJWaWV3KiB2aWV3LCBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSwgY29uc3QgU3RyaW5n
JiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKK3sKKyAg
ICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gcmVjb3JkUmVzcG9uc2U6cmVz
cG9uc2UgdG9Db3JyZWN0aW9uOnJlcGxhY2VtZW50U3RyaW5nIGZvcldvcmQ6cmVwbGFjZWRTdHJp
bmcgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6W3ZpZXcgc3BlbGxDaGVja2Vy
RG9jdW1lbnRUYWddXTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWw6OmhhbmRsZUFjY2VwdGVk
UmVwbGFjZW1lbnQoTlNTdHJpbmcqIGFjY2VwdGVkUmVwbGFjZW1lbnQsIE5TU3RyaW5nKiByZXBs
YWNlZCwgTlNTdHJpbmcqIHByb3Bvc2VkUmVwbGFjZW1lbnQsICBOU0NvcnJlY3Rpb25CdWJibGVU
eXBlIGNvcnJlY3Rpb25CdWJibGVUeXBlKQoreworICAgIE5TU3BlbGxDaGVja2VyKiBzcGVsbENo
ZWNrZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXTsKKyAgICBOU0ludGVn
ZXIgZG9jdW1lbnRUYWcgPSBbbV92aWV3LmdldCgpIHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnXTsK
KworICAgIHN3aXRjaCAoY29ycmVjdGlvbkJ1YmJsZVR5cGUpIHsKKyAgICBjYXNlIE5TQ29ycmVj
dGlvbkJ1YmJsZVR5cGVDb3JyZWN0aW9uOgorICAgICAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVu
dCkKKyAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9u
UmVzcG9uc2VBY2NlcHRlZCB0b0NvcnJlY3Rpb246YWNjZXB0ZWRSZXBsYWNlbWVudCBmb3JXb3Jk
OnJlcGxhY2VkIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFn
XTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoIW1fd2FzRGlzbWlzc2VkRXh0ZXJu
YWxseSB8fCBtX3JlYXNvbkZvckRpc21pc3NpbmcgPT0gUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJl
Y3Rpb25QYW5lbENhbmNlbGxlZCkKKyAgICAgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29y
ZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlUmVqZWN0ZWQgdG9Db3JyZWN0aW9uOnByb3Bv
c2VkUmVwbGFjZW1lbnQgZm9yV29yZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3Vt
ZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUlnbm9y
ZWQgdG9Db3JyZWN0aW9uOnByb3Bvc2VkUmVwbGFjZW1lbnQgZm9yV29yZDpyZXBsYWNlZCBsYW5n
dWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgIH0K
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOU0NvcnJlY3Rpb25CdWJibGVUeXBlUmV2ZXJzaW9u
OgorICAgICAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKKyAgICAgICAgICAgIFtzcGVsbENo
ZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZCB0b0NvcnJl
Y3Rpb246cmVwbGFjZWQgZm9yV29yZDphY2NlcHRlZFJlcGxhY2VtZW50IGxhbmd1YWdlOm5pbCBp
blNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFnXTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBOU0NvcnJlY3Rpb25CdWJibGVUeXBlR3Vlc3NlczoKKyAgICAgICAgaWYgKGFjY2VwdGVk
UmVwbGFjZW1lbnQpCisgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5T
Q29ycmVjdGlvblJlc3BvbnNlQWNjZXB0ZWQgdG9Db3JyZWN0aW9uOmFjY2VwdGVkUmVwbGFjZW1l
bnQgZm9yV29yZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpk
b2N1bWVudFRhZ107CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICBpZiAoIW1fd2Fz
RGlzbWlzc2VkRXh0ZXJuYWxseSkgeworICAgICAgICBbbV92aWV3LmdldCgpIGhhbmRsZUNvcnJl
Y3Rpb25QYW5lbFJlc3VsdDphY2NlcHRlZFJlcGxhY2VtZW50XTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICBbbV9yZXN1bHRDb25kaXRpb24uZ2V0KCkgbG9ja107CisgICAgaWYg
KGFjY2VwdGVkUmVwbGFjZW1lbnQpCisgICAgICAgIG1fcmVzdWx0Rm9yU3luY2hyb25vdXNEaXNt
aXNzYWwuYWRvcHROUyhbYWNjZXB0ZWRSZXBsYWNlbWVudCBjb3B5XSk7CisgICAgW21fcmVzdWx0
Q29uZGl0aW9uLmdldCgpIHNpZ25hbF07CisgICAgW21fcmVzdWx0Q29uZGl0aW9uLmdldCgpIHVu
bG9ja107Cit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19M
RU9QQVJEKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCmluZGV4IDFmYTEzMmFkNmM1YmQ0Mzc5ZmUwYmI4NWM5ZTZmZjBkNjZiMTE3
MzUuLjQxMmNiNDU5YjE3ODkzZTdkYTVjMjhhZGY4MTQ4ZDQ1NTgwNmRmMDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0y
NywxMSArMjcsMTEgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2ltcG9ydCA8V2ViQ29yZS9FZGl0
b3IuaD4KKyNpbXBvcnQgIkNvcnJlY3Rpb25QYW5lbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0
b3JDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dENoZWNrZXJDbGllbnQuaD4KLSNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CisjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKIEBjbGFzcyBXZWJWaWV3
OwpAQCAtMTQwLDEwICsxNDAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1
dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpTdHJp
bmcmKTsKICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotICAg
IHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkNvcnJlY3Rpb25QYW5l
bEluZm86OlBhbmVsVHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9m
UmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3Qg
V1RGOjpTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0
cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLCBXZWJDb3JlOjpFZGl0b3IqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9u
UGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdC
b3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRp
dmVSZXBsYWNlbWVudFN0cmluZ3MpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlv
blBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwotICAg
IHZpcnR1YWwgYm9vbCBpc1Nob3dpbmdDb3JyZWN0aW9uUGFuZWwoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlw
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYg
cmVwbGFjZW1lbnRTdHJpbmcpOworICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NDb3JyZWN0aW9u
UGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwor
ICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKICNlbmRpZgogcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lz
dGVyQ29tbWFuZEZvclVuZG9PclJlZG8oUGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4s
IGJvb2wgaXNSZWRvKTsKQEAgLTE1NCw4ICsxNTQsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9o
YXZlVW5kb1JlZG9PcGVyYXRpb25zOwogCiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKLSAgICBCT09MIG1fY29ycmVjdGlvblBhbmVsSXNTaG93bjsKLSAgICBC
T09MIG1fY29ycmVjdGlvblBhbmVsSXNEaXNtaXNzZWRFeHRlcm5hbGx5OwotICAgIFdlYkNvcmU6
OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgbV9yZWFzb25Gb3JEaXNtaXNzaW5n
Q29ycmVjdGlvblBhbmVsOworICAgIENvcnJlY3Rpb25QYW5lbCBtX2NvcnJlY3Rpb25QYW5lbDsK
ICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbQppbmRleCA2OWRkNTc0NzMxYjQ0YjQzMGMyNzQ1OGU3MjNiNDFjNGRl
NTE3NGIwLi5kZjk4NWNlMDMxNDk0ZmRhMTliMTAwMjkzYjM4MDgxMTMzYmVlODc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
CkBAIC03NCw3ICs3NCw2IEBACiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11
c2luZyBuYW1lc3BhY2UgV1RGOwogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCkBAIC0y
MDIsOSArMjAxLDYgQEAgV2ViRWRpdG9yQ2xpZW50OjpXZWJFZGl0b3JDbGllbnQoV2ViVmlldyAq
d2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogICAgICwgbV91bmRvVGFyZ2V0KFtb
W1dlYkVkaXRvclVuZG9UYXJnZXQgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXSkKICAgICAsIG1f
aGF2ZVVuZG9SZWRvT3BlcmF0aW9ucyhmYWxzZSkKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9U
SUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fU05PV19MRU9QQVJEKQotICAgICwgbV9jb3JyZWN0aW9uUGFuZWxJc1Nob3duKGZhbHNl
KQotI2VuZGlmCiB7CiB9CiAKQEAgLTg5MSw3MyArODg3LDI1IEBAIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiBiYWRH
cmFtbWFyCiB9CiAKICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQo
QlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJE
KQotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29y
cmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlIHBhbmVsVHlwZSwgY29uc3QgRmxvYXRSZWN0JiBi
b3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBh
bHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncywgRWRpdG9yKiBlZGl0b3IpIHsKLSAgICBkaXNt
aXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxJZ25v
cmVkKTsKLQotICAgIC8vIE5lZWQgdG8gZXhwbGljaXRseSB1c2UgdGhlc2UgbG9jYWwgTlNTdHJp
bmcgb2JqZWN0cywgYmVjYXVzZSB0aGUgQysrIHJlZmVyZW5jZXMgbWF5IGJlIGludmFsaWRhdGVk
IGJ5IHRoZSB0aW1lIHRoZSBibG9jayBiZWxvdyBpcyBleGVjdXRlZC4KLSAgICBOU1N0cmluZyAq
cmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nID0gcmVwbGFjZWRTdHJpbmc7Ci0gICAgTlNTdHJpbmcg
KnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyA9IHJlcGxhY2VtZW50U3RyaW5nOwotCi0gICAg
bV9jb3JyZWN0aW9uUGFuZWxJc1Nob3duID0gWUVTOwotICAgIG1fY29ycmVjdGlvblBhbmVsSXNE
aXNtaXNzZWRFeHRlcm5hbGx5ID0gTk87Ci0gICAgbV9yZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVj
dGlvblBhbmVsID0gUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbElnbm9yZWQ7Ci0K
LSAgICBOU0NvcnJlY3Rpb25CdWJibGVUeXBlIGJ1YmJsZVR5cGUgPSBjb3JyZWN0aW9uQnViYmxl
VHlwZShwYW5lbFR5cGUpOwotICAgIE5TTXV0YWJsZUFycmF5ICphbHRlcm5hdGl2ZVN0cmluZ3Mg
PSBuaWw7Ci0gICAgaWYgKCFhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncy5z
aXplKCk7Ci0gICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncyA9IFtOU011dGFibGVBcnJheSBhcnJh
eVdpdGhDYXBhY2l0eTpzaXplXTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCi0gICAgICAgICAgICBbYWx0ZXJuYXRpdmVTdHJpbmdzIGFkZE9iamVjdDooTlNTdHJp
bmcqKWFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzW2ldXTsKLSAgICB9Ci0gICAgTlNTcGVs
bENoZWNrZXIgKnNwZWxsQ2hlY2tlciA9IFtOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNr
ZXJdOwotICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBzaG93Q29ycmVj
dGlvbkJ1YmJsZU9mVHlwZTpidWJibGVUeXBlIHByaW1hcnlTdHJpbmc6cmVwbGFjZW1lbnRTdHJp
bmdBc05TU3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZVN0cmluZ3MgZm9yU3Ry
aW5nSW5SZWN0OmJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZyB2aWV3Om1fd2ViVmlldyBjb21w
bGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nICphY2NlcHRlZFN0cmluZykgewotICAgICAgICBzd2l0
Y2ggKGJ1YmJsZVR5cGUpIHsKLSAgICAgICAgY2FzZSBOU0NvcnJlY3Rpb25CdWJibGVUeXBlQ29y
cmVjdGlvbjoKLSAgICAgICAgICAgIGlmIChhY2NlcHRlZFN0cmluZykKLSAgICAgICAgICAgICAg
ICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlQWNjZXB0
ZWQgdG9Db3JyZWN0aW9uOmFjY2VwdGVkU3RyaW5nIGZvcldvcmQ6cmVwbGFjZWRTdHJpbmdBc05T
U3RyaW5nIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRv
Y3VtZW50VGFnKCldOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFt
X2NvcnJlY3Rpb25QYW5lbElzRGlzbWlzc2VkRXh0ZXJuYWxseSB8fCBtX3JlYXNvbkZvckRpc21p
c3NpbmdDb3JyZWN0aW9uUGFuZWwgPT0gUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5l
bENhbmNlbGxlZCkKLSAgICAgICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNw
b25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZVJlamVjdGVkIHRvQ29ycmVjdGlvbjpyZXBsYWNlbWVu
dFN0cmluZ0FzTlNTdHJpbmcgZm9yV29yZDpyZXBsYWNlZFN0cmluZ0FzTlNTdHJpbmcgbGFuZ3Vh
Z2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKV07
Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBbc3BlbGxDaGVja2Vy
IHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlSWdub3JlZCB0b0NvcnJlY3Rpb246
cmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nIGZvcldvcmQ6cmVwbGFjZWRTdHJpbmdBc05TU3Ry
aW5nIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3Vt
ZW50VGFnKCldOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZVJldmVyc2lvbjoKLSAgICAgICAgICAgIGlmIChhY2Nl
cHRlZFN0cmluZykKLSAgICAgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNl
Ok5TQ29ycmVjdGlvblJlc3BvbnNlUmV2ZXJ0ZWQgdG9Db3JyZWN0aW9uOnJlcGxhY2VkU3RyaW5n
QXNOU1N0cmluZyBmb3JXb3JkOmFjY2VwdGVkU3RyaW5nIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9j
dW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCldOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUd1ZXNzZXM6Ci0gICAgICAg
ICAgICBpZiAoYWNjZXB0ZWRTdHJpbmcpCi0gICAgICAgICAgICAgICAgW1tOU1NwZWxsQ2hlY2tl
ciBzaGFyZWRTcGVsbENoZWNrZXJdIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNl
QWNjZXB0ZWQgdG9Db3JyZWN0aW9uOmFjY2VwdGVkU3RyaW5nIGZvcldvcmQ6cmVwbGFjZWRTdHJp
bmdBc05TU3RyaW5nIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOlttX3dlYlZp
ZXcgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWddXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGVkaXRvci0+aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KFN0cmluZyhh
Y2NlcHRlZFN0cmluZykpOwotICAgIH1dOwordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNob3dDb3Jy
ZWN0aW9uUGFuZWwoQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlIHBhbmVsVHlwZSwgY29u
c3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKK3sKKyAgICBtX2Nv
cnJlY3Rpb25QYW5lbC5zaG93KG1fd2ViVmlldywgcGFuZWxUeXBlLCBib3VuZGluZ0JveE9mUmVw
bGFjZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZywgYWx0ZXJuYXRp
dmVSZXBsYWNlbWVudFN0cmluZ3MpOwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlzbWlz
c0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNv
bkZvckRpc21pc3NpbmcpCiB7Ci0gICAgaWYgKGlzU2hvd2luZ0NvcnJlY3Rpb25QYW5lbCgpKSB7
Ci0gICAgICAgIG1fY29ycmVjdGlvblBhbmVsSXNEaXNtaXNzZWRFeHRlcm5hbGx5ID0gWUVTOwot
ICAgICAgICBtX3JlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgPSByZWFzb25Gb3JE
aXNtaXNzaW5nOwotICAgICAgICBpZiAocmVhc29uRm9yRGlzbWlzc2luZyA9PSBSZWFzb25Gb3JE
aXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsQWNjZXB0ZWQpCi0gICAgICAgICAgICBbW05TU3BlbGxD
aGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gZGlzbWlzc0NvcnJlY3Rpb25CdWJibGVGb3JWaWV3
Om1fd2ViVmlld107Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFtbTlNTcGVsbENoZWNrZXIg
c2hhcmVkU3BlbGxDaGVja2VyXSBjYW5jZWxDb3JyZWN0aW9uQnViYmxlRm9yVmlldzptX3dlYlZp
ZXddOwotICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbElzU2hvd24gPSBOTzsKLSAgICB9CisgICAg
bV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhyZWFzb25Gb3JEaXNtaXNzaW5nKTsKIH0KIAotYm9v
bCBXZWJFZGl0b3JDbGllbnQ6OmlzU2hvd2luZ0NvcnJlY3Rpb25QYW5lbCgpCitTdHJpbmcgV2Vi
RWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihSZWFzb25Gb3JEaXNtaXNz
aW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbkZvckRpc21pc3NpbmcpCiB7Ci0gICAgcmV0dXJuIG1f
Y29ycmVjdGlvblBhbmVsSXNTaG93bjsKKyAgICByZXR1cm4gbV9jb3JyZWN0aW9uUGFuZWwuZGlz
bWlzc1Nvb24ocmVhc29uRm9yRGlzbWlzc2luZyk7CiB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rp
b25SZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKQogewotICAgIE5TQ29ycmVjdGlvblJl
c3BvbnNlIHNwZWxsQ2hlY2tlclJlc3BvbnNlID0gcmVzcG9uc2VUeXBlID09IEVkaXRvckNsaWVu
dDo6QXV0b2NvcnJlY3Rpb25SZXZlcnRlZCA/IE5TQ29ycmVjdGlvblJlc3BvbnNlUmV2ZXJ0ZWQg
OiBOU0NvcnJlY3Rpb25SZXNwb25zZUVkaXRlZDsKLSAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl0gcmVjb3JkUmVzcG9uc2U6c3BlbGxDaGVja2VyUmVzcG9uc2UgdG9Db3Jy
ZWN0aW9uOnJlcGxhY2VtZW50U3RyaW5nIGZvcldvcmQ6cmVwbGFjZWRTdHJpbmcgbGFuZ3VhZ2U6
bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6W21fd2ViVmlldyBzcGVsbENoZWNrZXJEb2N1bWVu
dFRhZ11dOworICAgIE5TQ29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlID0gcmVzcG9uc2VUeXBl
ID09IEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXZlcnRlZCA/IE5TQ29ycmVjdGlvblJl
c3BvbnNlUmV2ZXJ0ZWQgOiBOU0NvcnJlY3Rpb25SZXNwb25zZUVkaXRlZDsKKyAgICBDb3JyZWN0
aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV93ZWJWaWV3LCByZXNwb25z
ZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKTsKIH0KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggODQ3NDhlNWNjZWVkY2E4Y2JiZTU4NWQ5
NTQ1ZjY2ZGUwZThmZDg5ZS4uNTllYjgwYzYxYzhiMzAxM2ExM2RmMzZjNjk4Y2IyYzgxZjQ1Zjk4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNTMxMSw2ICs1MzExLDE2
IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9tSlNWYWx1ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUganNWYWx1CiAKICNlbmRpZgogCisjaWYgIWRlZmluZWQoQlVJ
TERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKy0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBh
bmVsUmVzdWx0OihOU1N0cmluZyopcmVzdWx0Cit7CisgICAgV2ViRnJhbWUgKndlYkZyYW1lID0g
W3NlbGYgX3NlbGVjdGVkT3JNYWluRnJhbWVdOworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3Jl
KHdlYkZyYW1lKTsKKyAgICBpZiAoY29yZUZyYW1lKQorICAgICAgICBjb3JlRnJhbWUtPmVkaXRv
cigpLT5oYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQocmVzdWx0KTsKK30KKyNlbmRpZgorCiBA
ZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJWaWV3VW5kb2FibGVFZGl0aW5nKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGE0ZWE4MDli
MDAxZGJjNmE2NzIzNGYxNzJmMDIwYmMzNGNmN2U4NGMuLmNiOTQ4NTEzN2RiMDZmOTFmNjlkMTNh
YTA3NDMyNTJkZGZjNGU1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQ
cml2YXRlLmgKQEAgLTY0NCw3ICs2NDQsOSBAQCBDb3VsZCBiZSB3b3J0aCBhZGRpbmcgdG8gdGhl
IEFQSS4KIC0gKHZvaWQpc2V0QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZDooQk9P
TClmbGFnOwogLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb246KGlkKXNl
bmRlcjsKICNlbmRpZgotCisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkKKy0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OihOU1N0cmluZyopcmVz
dWx0OworI2VuZGlmCiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld0VkaXRpbmdJ
bk1haWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmMzNzg0NjQzYTE5YjAxYWJjMzZjYzY0NzI0MTFiZTM2OGVi
YjBjNS4uYjcyNDk3YTliYzgwYWNmMWUxODQ1NmY2YWU4NGQ0MTYzNTg0MDM4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU5IEBACisyMDExLTAzLTIzICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhvb2sgdXAg
bmV3IEFwcEtpdCBhdXRvY29ycmVjdGlvbiBVSSB3aXRoIFdLMi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDU1CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84OTQ3NDYzPgorCisgICAgICAgIFBsZWFzZSBzZWUgV2ViQ29yZS9DaGFuZ2VMb2cgZm9y
IGRldGFpbC4KKworICAgICAgICBUaGUgY2FsbHMgdG8gQXBwS2l0IGFyZSBpbXBsZW1lbnRlZCBp
biBQYWdlQ2xpZW50SW1wbC4gT3RoZXIgY2hhbmdlcyBhcmUgbmVjZXNzYXJ5IGZvciB0aGUKKyAg
ICAgICAgcGx1bWJpbmcgd29yay4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VD
bGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzaG93Q29ycmVjdGlvblBhbmVs
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpc21pc3NDb3JyZWN0aW9uUGFu
ZWwpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlzbWlzc0NvcnJlY3Rpb25Q
YW5lbFNvb24pOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cmVjb3JkQXV0b2Nv
cnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
OgorICAgICAgICAoLVtXS1ZpZXcgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWddKToKKyAgICAgICAg
KC1bV0tWaWV3IGhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL21hYy9XS1ZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dDb3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvQ29y
cmVjdGlvblBhbmVsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDb3JyZWN0aW9uUGFuZWw6
OmlzU2hvd2luZyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW06
IEFkZGVkLgorICAgICAgICAoY29ycmVjdGlvbkJ1YmJsZVR5cGUpOgorICAgICAgICAoV2ViS2l0
OjpDb3JyZWN0aW9uUGFuZWw6OkNvcnJlY3Rpb25QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OkNv
cnJlY3Rpb25QYW5lbDo6fkNvcnJlY3Rpb25QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OkNvcnJl
Y3Rpb25QYW5lbDo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6ZGlz
bWlzcyk6CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzc1Nvb24pOgor
ICAgICAgICAoV2ViS2l0OjpDb3JyZWN0aW9uUGFuZWw6OmRpc21pc3NJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25z
ZSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3JyZWN0aW9uUGFu
ZWxTb29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpyZWNvcmRBdXRvY29y
cmVjdGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3Vs
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxMS0wMy0yMyAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFn
ZUNsaWVudEltcGwuaAppbmRleCAzMzhmNzc2ODFmOTFjNzNjMjdjZGRiZWJmNjRkNmRmMDg5NTYy
Y2MxLi5lMmFkMTdmOTFmMzE0MDJmNzZkMjdlOWQ0MTYyYWE5YTIwYzNmYWRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNpZm5kZWYgUGFnZUNsaWVudEltcGxfaAogI2RlZmluZSBQYWdlQ2xpZW50
SW1wbF9oCiAKKyNpbmNsdWRlICJDb3JyZWN0aW9uUGFuZWwuaCIKICNpbmNsdWRlICJQYWdlQ2xp
ZW50LmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC0xMDQsOCArMTA1LDE2IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAo
Y29uc3QgU3RyaW5nJiwgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBEaWN0aW9uYXJ5UG9wdXBJ
bmZvJik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpD
b3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
Ym91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOworICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNz
Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFu
ZWwpOworICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFdlYkNv
cmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOworICAgIHZpcnR1YWwgdm9p
ZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6OkVkaXRvckNsaWVudDo6QXV0
b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOworCiAgICAgV0tWaWV3KiBtX3drVmlldzsK
ICAgICBSZXRhaW5QdHI8V2ViRWRpdG9yVW5kb1RhcmdldE9iakM+IG1fdW5kb1RhcmdldDsKKyNp
ZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisgICAgQ29ycmVjdGlvblBhbmVs
IG1fY29ycmVjdGlvblBhbmVsOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJ
bXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
bW0KaW5kZXggZTM1MDNkZTZmODdmNjk5ZmI3NjdjNjIyNmU0OWY1M2MxZmM5NDQ2MC4uYzYyNDQ1
YmZkY2IyYzcyODE3NzExYjZiMjdiYTI3ZTNkODRkNzA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTQyNyw0ICs0Mjcs
MzcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29u
c3QgU3RyaW5nJiB0ZXh0LCBkb3VibGUgc2NhbGUKICAgICBbbV93a1ZpZXcgc2hvd0RlZmluaXRp
b25Gb3JBdHRyaWJ1dGVkU3RyaW5nOmF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkgcmFuZ2U6TlNNYWtl
UmFuZ2UoMCwgW2F0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkgbGVuZ3RoXSkgb3B0aW9uczpvcHRpb25z
IGJhc2VsaW5lT3JpZ2luUHJvdmlkZXI6XihOU1JhbmdlIGFkanVzdGVkUmFuZ2UpIHsgcmV0dXJu
IChOU1BvaW50KXRleHRCYXNlbGluZU9yaWdpbjsgfV07CiB9CiAKK3ZvaWQgUGFnZUNsaWVudElt
cGw6OnNob3dDb3JyZWN0aW9uUGFuZWwoQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlIHR5
cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCit7Cisj
aWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgIGlmICghaXNWaWV3Vmlz
aWJsZSgpIHx8ICFpc1ZpZXdJbldpbmRvdygpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb3Jy
ZWN0aW9uUGFuZWwuc2hvdyhtX3drVmlldywgdHlwZSwgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3Ry
aW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZlUmVwbGFj
ZW1lbnRTdHJpbmdzKTsKKyNlbmRpZgorfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaXNtaXNz
Q29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29u
KQoreworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICBtX2NvcnJl
Y3Rpb25QYW5lbC5kaXNtaXNzKHJlYXNvbik7CisjZW5kaWYKK30KKworU3RyaW5nIFBhZ2VDbGll
bnRJbXBsOjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNt
aXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbikKK3sKKyNpZiAhZGVmaW5lZChCVUlMRElOR19P
Tl9TTk9XX0xFT1BBUkQpCisgICAgcmV0dXJuIG1fY29ycmVjdGlvblBhbmVsLmRpc21pc3NTb29u
KHJlYXNvbik7CisjZWxzZQorICAgIHJldHVybiBTdHJpbmcoKTsKKyNlbmRpZgorfQorCit2b2lk
IFBhZ2VDbGllbnRJbXBsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEVkaXRvckNsaWVu
dDo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKQoreworI2lm
ICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICBOU0NvcnJlY3Rpb25SZXNw
b25zZSByZXNwb25zZSA9IHJlc3BvbnNlVHlwZSA9PSBFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0
aW9uUmV2ZXJ0ZWQgPyBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkIDogTlNDb3JyZWN0aW9u
UmVzcG9uc2VFZGl0ZWQ7CisgICAgQ29ycmVjdGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlv
blJlc3BvbnNlKG1fd2tWaWV3LCByZXNwb25zZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50
U3RyaW5nKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCAyYTQyMzE5YjRhOWI0ODk4MWY1
NzAwOTBjYzdiZmJkYTZhMDZmMDAzLi4yNzQ3YzVjZjE3NTI1YzFkYTg5ZTQ5ZDI5MmJkMGYxMDBi
NjYxNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBA
IC0xNDksNiArMTQ5LDkgQEAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmFsaWRhdGlvblZlY3Rv
cj4gVmFsaWRhdGlvbk1hcDsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgUmV0YWlu
UHRyPFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI+IF9mdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlcjsKICNlbmRpZgorCisgICAgQk9PTCBfaGFzU3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7Cisg
ICAgTlNJbnRlZ2VyIF9zcGVsbENoZWNrZXJEb2N1bWVudFRhZzsKIH0KIEBlbmQKIApAQCAtMjA3
Nyw1ICsyMDgwLDE5IEBAIHN0YXRpYyB2b2lkIGRyYXdQYWdlQmFja2dyb3VuZChDR0NvbnRleHRS
ZWYgY29udGV4dCwgV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBJCiAgICAgX2RhdGEtPl9wYWdl
LT5wZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oRmxvYXRQb2ludCh0aGVQb2ludC54
LCB0aGVQb2ludC55KSk7CiB9CiAKKy0gKE5TSW50ZWdlcilzcGVsbENoZWNrZXJEb2N1bWVudFRh
ZworeworICAgIGlmICghX2RhdGEtPl9oYXNTcGVsbENoZWNrZXJEb2N1bWVudFRhZykgeworICAg
ICAgICBfZGF0YS0+X3NwZWxsQ2hlY2tlckRvY3VtZW50VGFnID0gW05TU3BlbGxDaGVja2VyIHVu
aXF1ZVNwZWxsRG9jdW1lbnRUYWddOworICAgICAgICBfZGF0YS0+X2hhc1NwZWxsQ2hlY2tlckRv
Y3VtZW50VGFnID0gWUVTOworICAgIH0KKyAgICByZXR1cm4gX2RhdGEtPl9zcGVsbENoZWNrZXJE
b2N1bWVudFRhZzsKK30KKworLSAodm9pZCloYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6KE5T
U3RyaW5nKilyZXN1bHQKK3sKKyAgICBfZGF0YS0+X3BhZ2UtPmhhbmRsZUNvcnJlY3Rpb25QYW5l
bFJlc3VsdChyZXN1bHQpOworfQorCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlld1ByaXZhdGUuaAppbmRleCBjZWNlMWM3NDBiNzcyYzdlYzYyYzZk
YmU5NmJmYzBkNjM2MjRhZTM3Li4zN2MyZDhkZDgxZmIyODY1YTIxOGIxMjk4ZjRjMmI4Y2E2YmVj
NTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3UHJp
dmF0ZS5oCkBAIC0zNSw0ICszNSw2IEBACiAKIC0gKHZvaWQpcGVyZm9ybURpY3Rpb25hcnlMb29r
dXBBdEN1cnJlbnRNb3VzZUxvY2F0aW9uOwogCistIChOU0ludGVnZXIpc3BlbGxDaGVja2VyRG9j
dW1lbnRUYWc7CistICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcq
KXJlc3VsdDsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDEw
YmQwNzg3YTQ0Yjk1M2JjYTM4ODc3NTU2YzQ5YjZiMGJkZWE2ZmIuLjg1NTc2ZjlhN2Y2MTA4MDUx
ZmFhNGZlYjdkYTM4NGU2NGYxOGRlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaApAQCAtMTMwLDYgKzEzMCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENv
bXBsZXhUZXh0SW5wdXRFbmFibGVkKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVu
dGlmaWVyLCBib29sIGNvbXBsZXhUZXh0SW5wdXRFbmFibGVkKSA9IDA7CiAgICAgdmlydHVhbCBD
R0NvbnRleHRSZWYgY29udGFpbmluZ1dpbmRvd0dyYXBoaWNzQ29udGV4dCgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgU3RyaW5nJiwgZG91
YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkNvcnJlY3Rpb25QYW5lbElu
Zm86OlBhbmVsVHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxh
Y2VtZW50U3RyaW5ncykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBh
bmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpID0gMDsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihXZWJDb3JlOjpSZWFz
b25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpBdXRvY29y
cmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5GcmFtZSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMjllOGU4YTIwZTNiNGUyZTFm
Nzg0YjI1ZGE0MzdkYWIxNzYxMDIzZC4uZjFlZTk0Y2E0N2M4YmM4YTRjYjE0MTJhNmE0MDQxNjIw
MWNhNDQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTEzOTksNiArMTM5OSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cAogICAgIGlmICghYXJn
dW1lbnRzLT5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBQ
TEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICBk
aXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxJ
Z25vcmVkKTsKKyNlbmRpZgorCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCkt
PndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCkBAIC0yNzY1
LDQgKzI3NjksMzYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmEKICAgICBtX3VpQ2xpZW50LnNh
dmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIodGhpcywgc3VnZ2VzdGVkRmlsZW5hbWUsIG1p
bWVUeXBlLCBvcmlnaW5hdGluZ1VSTFN0cmluZywgZGF0YSk7CiB9CiAKKyNpZiBQTEFURk9STShN
QUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpzaG93Q29ycmVjdGlvblBhbmVsKGludDMyX3QgcGFuZWxUeXBlLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQoreworICAgIG1fcGFn
ZUNsaWVudC0+c2hvd0NvcnJlY3Rpb25QYW5lbCgoV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5m
bzo6UGFuZWxUeXBlKXBhbmVsVHlwZSwgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCByZXBs
YWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJp
bmdzKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwoaW50
MzJfdCByZWFzb24pCit7CisgICAgbV9wYWdlQ2xpZW50LT5kaXNtaXNzQ29ycmVjdGlvblBhbmVs
KChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKXJlYXNvbik7Cit9
CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihpbnQzMl90
IHJlYXNvbiwgU3RyaW5nJiByZXN1bHQpCit7CisgICAgcmVzdWx0ID0gbV9wYWdlQ2xpZW50LT5k
aXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbigoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0Nv
cnJlY3Rpb25QYW5lbClyZWFzb24pOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVjb3JkQXV0
b2NvcnJlY3Rpb25SZXNwb25zZShpbnQzMl90IHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKK3sKKyAgICBt
X3BhZ2VDbGllbnQtPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoKFdlYkNvcmU6OkVkaXRv
ckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUpcmVzcG9uc2VUeXBlLCByZXBsYWNl
ZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpOworfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShN
QUMpCit2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KGNvbnN0
IFN0cmluZyYgcmVzdWx0KQoreworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFS
RCkKKyAgICBpZiAoIWlzQ2xvc2VkKCkpCisgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6SGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KHJlc3VsdCksIG1fcGFnZUlE
LCAwKTsKKyNlbmRpZgorfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDVlODJjMmQ5ZTA3MmNiMTg3YzI5
NjA3NDA1YjRlNWRkMGI0YzkyZDkuLjQ4OGUzNjNiMmQ5MWVlZTk3NTEzOTMyNjczNDAyOTUzMzkw
ZWY1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTQ1MCw2
ICs0NTAsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiB1cGRhdGVSZWN0cyk7CiAKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgdm9pZCBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQoY29uc3QgU3Ry
aW5nJiByZXN1bHQpOworI2VuZGlmCisKICAgICBzdGF0aWMgdm9pZCBzZXREZWJ1Z1BhaW50Rmxh
Z3MoV0tQYWdlRGVidWdQYWludEZsYWdzIGZsYWdzKSB7IHNfZGVidWdQYWludEZsYWdzID0gZmxh
Z3M7IH0KICAgICBzdGF0aWMgV0tQYWdlRGVidWdQYWludEZsYWdzIGRlYnVnUGFpbnRGbGFncygp
IHsgcmV0dXJuIHNfZGVidWdQYWludEZsYWdzOyB9CiAKQEAgLTY0Myw2ICs2NDcsMTMgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3Qg
V2ViQ29yZTo6S1VSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogCisjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisgICAgdm9pZCBz
aG93Q29ycmVjdGlvblBhbmVsKGludDMyX3QgcGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKKyAgICB2b2lkIGRpc21pc3ND
b3JyZWN0aW9uUGFuZWwoaW50MzJfdCByZWFzb24pOworICAgIHZvaWQgZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbFNvb24oaW50MzJfdCByZWFzb24sIFN0cmluZyYgcmVzdWx0KTsKKyAgICB2b2lkIHJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50MzJfdCByZXNwb25zZVR5cGUsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwor
I2VuZGlmCisKICAgICBQYWdlQ2xpZW50KiBtX3BhZ2VDbGllbnQ7CiAgICAgV2ViTG9hZGVyQ2xp
ZW50IG1fbG9hZGVyQ2xpZW50OwogICAgIFdlYlBvbGljeUNsaWVudCBtX3BvbGljeUNsaWVudDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IGM4MTJhZTE2MjU3YmJiODgyYWI3NWVkODA3MWM2NmNiMWMzMDk2YjIuLjU1YTZkYzIx
NjFkMzAzN2MzNzRlMzg0ZWQ4NmY3MTA2ZjJkMzQ1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjA4LDQgKzIwOCwxMiBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2lmIFBMQVRGT1JNKFdJTikKICAgICBTdGFy
dERyYWdEcm9wKFdlYkNvcmU6OkludFBvaW50IGltYWdlUG9pbnQsIFdlYkNvcmU6OkludFBvaW50
IGRyYWdQb2ludCwgdWludDY0X3Qgb2tFZmZlY3QsIEhhc2hNYXA8VUlOVCxWZWN0b3I8U3RyaW5n
PiA+IGRhdGFNYXAsIFdlYkNvcmU6OkludFNpemUgZHJhZ0ltYWdlU2l6ZSwgV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OkhhbmRsZSBkcmFnSW1hZ2UsIGJvb2wgbGlua0RyYWcpCiAjZW5kaWYKKworI2lm
IFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAg
ICMgQXV0b2NvcnJlY3Rpb24gbWVzc2FnZXMKKyAgICBTaG93Q29ycmVjdGlvblBhbmVsKGludDMy
X3QgcGFuZWxUeXBlLCBXZWJDb3JlOjpGbG9hdFJlY3QgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3Ry
aW5nLCBTdHJpbmcgcmVwbGFjZWRTdHJpbmcsIFN0cmluZyByZXBsYWNlbWVudFN0cmluZywgVmVj
dG9yPFN0cmluZz4gYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCisgICAgRGlzbWlzc0Nv
cnJlY3Rpb25QYW5lbChpbnQzMl90IHJlYXNvbikKKyAgICBEaXNtaXNzQ29ycmVjdGlvblBhbmVs
U29vbihpbnQzMl90IHJlYXNvbikgLT4gKFN0cmluZyByZXN1bHQpCisgICAgUmVjb3JkQXV0b2Nv
cnJlY3Rpb25SZXNwb25zZShpbnQzMl90IHJlc3BvbnNlVHlwZSwgU3RyaW5nIHJlcGxhY2VkU3Ry
aW5nLCBTdHJpbmcgcmVwbGFjZW1lbnRTdHJpbmcpOworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGJjMzUz
ZDY5YjM2MWQyZTg2MTM2YjE5MDdiZDk2ZjAyYzg5NjE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwuaApAQCAtMCwwICsxLDYz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb3JyZWN0aW9uUGFuZWxfaAorI2RlZmluZSBDb3Jy
ZWN0aW9uUGFuZWxfaAorCisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQor
I2ltcG9ydCA8QXBwS2l0L05TVGV4dENoZWNrZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ29ycmVj
dGlvblBhbmVsSW5mby5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitAY2xhc3MgV0tW
aWV3OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ29ycmVjdGlvblBhbmVsIHsKK3B1
YmxpYzoKKyAgICBDb3JyZWN0aW9uUGFuZWwoKTsKKyAgICB+Q29ycmVjdGlvblBhbmVsKCk7Cisg
ICAgdm9pZCBzaG93KFdLVmlldyosIFdlYkNvcmU6OkNvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVs
VHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1l
bnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3Ry
aW5ncyk7CisgICAgdm9pZCBkaXNtaXNzKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3Jy
ZWN0aW9uUGFuZWwpOworICAgIFN0cmluZyBkaXNtaXNzU29vbihXZWJDb3JlOjpSZWFzb25Gb3JE
aXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKKyAgICBzdGF0aWMgdm9pZCByZWNvcmRBdXRvY29y
cmVjdGlvblJlc3BvbnNlKFdLVmlldyosIE5TQ29ycmVjdGlvblJlc3BvbnNlLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKKwor
cHJpdmF0ZToKKyAgICBib29sIGlzU2hvd2luZygpIGNvbnN0IHsgcmV0dXJuIG1fdmlldzsgfQor
ICAgIHZvaWQgZGlzbWlzc0ludGVybmFsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3Jy
ZWN0aW9uUGFuZWwsIGJvb2wgZGlzbWlzc2luZ0V4dGVybmFsbHkpOworICAgIHZvaWQgaGFuZGxl
QWNjZXB0ZWRSZXBsYWNlbWVudChOU1N0cmluZyogYWNjZXB0ZWRSZXBsYWNlbWVudCwgTlNTdHJp
bmcqIHJlcGxhY2VkLCBOU1N0cmluZyogcHJvcG9zZWRSZXBsYWNlbWVudCwgTlNDb3JyZWN0aW9u
QnViYmxlVHlwZSk7CisKKyAgICBib29sIG1fd2FzRGlzbWlzc2VkRXh0ZXJuYWxseTsKKyAgICBX
ZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIG1fcmVhc29uRm9yRGlz
bWlzc2luZzsKKyAgICBSZXRhaW5QdHI8V0tWaWV3PiBtX3ZpZXc7CisgICAgUmV0YWluUHRyPE5T
U3RyaW5nPiBtX3Jlc3VsdEZvclN5bmNocm9ub3VzRGlzbWlzc2FsOworICAgIFJldGFpblB0cjxO
U0NvbmRpdGlvbj4gbV9yZXN1bHRDb25kaXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKworI2Vu
ZGlmIC8vIENvcnJlY3Rpb25QYW5lbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvQ29ycmVjdGlvblBhbmVsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxZmZjZGY0YzRmZDM0YTIyNTU0ODA4
NzAwMGNmNDk4NjYyM2FiYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQpAQCAtMCwwICsxLDE2OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkKKyNpbXBvcnQgIkNvcnJlY3Rpb25QYW5lbC5oIgorCisjaW1wb3J0ICJXZWJQYWdlUHJv
eHkuaCIKKyNpbXBvcnQgIldLVmlldy5oIgorI2ltcG9ydCAiV0tWaWV3UHJpdmF0ZS5oIgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RhdGljIGlubGluZSBOU0NvcnJlY3Rpb25CdWJi
bGVUeXBlIGNvcnJlY3Rpb25CdWJibGVUeXBlKENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlw
ZSBwYW5lbFR5cGUpCit7CisgICAgc3dpdGNoIChwYW5lbFR5cGUpIHsKKyAgICBjYXNlIENvcnJl
Y3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZUNvcnJlY3Rpb246CisgICAgICAgIHJldHVybiBOU0Nv
cnJlY3Rpb25CdWJibGVUeXBlQ29ycmVjdGlvbjsKKyAgICBjYXNlIENvcnJlY3Rpb25QYW5lbElu
Zm86OlBhbmVsVHlwZVJldmVyc2lvbjoKKyAgICAgICAgcmV0dXJuIE5TQ29ycmVjdGlvbkJ1YmJs
ZVR5cGVSZXZlcnNpb247CisgICAgY2FzZSBDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGVT
cGVsbGluZ1N1Z2dlc3Rpb25zOgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uQnViYmxlVHlw
ZUd1ZXNzZXM7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBO
U0NvcnJlY3Rpb25CdWJibGVUeXBlQ29ycmVjdGlvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK0NvcnJlY3Rpb25QYW5lbDo6Q29ycmVjdGlvblBhbmVsKCkKKyAgICA6IG1fd2FzRGlzbWlz
c2VkRXh0ZXJuYWxseShmYWxzZSkKKyAgICAsIG1fcmVhc29uRm9yRGlzbWlzc2luZyhSZWFzb25G
b3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsSWdub3JlZCkKKyAgICAsIG1fcmVzdWx0Q29uZGl0
aW9uKEFkb3B0TlMsIFtbTlNDb25kaXRpb24gYWxsb2NdIGluaXRdKQoreworfQorCitDb3JyZWN0
aW9uUGFuZWw6On5Db3JyZWN0aW9uUGFuZWwoKQoreworICAgIGRpc21pc3NJbnRlcm5hbChSZWFz
b25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsSWdub3JlZCwgZmFsc2UpOworfQorCit2b2lk
IENvcnJlY3Rpb25QYW5lbDo6c2hvdyhXS1ZpZXcqIHZpZXcsIENvcnJlY3Rpb25QYW5lbEluZm86
OlBhbmVsVHlwZSB0eXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0
cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRT
dHJpbmdzKQoreworICAgIGRpc21pc3NJbnRlcm5hbChSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVj
dGlvblBhbmVsSWdub3JlZCwgZmFsc2UpOworICAgIAorICAgIGlmICghdmlldykKKyAgICAgICAg
cmV0dXJuOworCisgICAgTlNTdHJpbmcqIHJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyA9IHJlcGxh
Y2VkU3RyaW5nOworICAgIE5TU3RyaW5nKiByZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgPSBy
ZXBsYWNlbWVudFN0cmluZzsKKyAgICBtX3ZpZXcgPSB2aWV3OworICAgIE5TQ29ycmVjdGlvbkJ1
YmJsZVR5cGUgYnViYmxlVHlwZSA9IGNvcnJlY3Rpb25CdWJibGVUeXBlKHR5cGUpOworICAgIAor
ICAgIE5TTXV0YWJsZUFycmF5KiBhbHRlcm5hdGl2ZVN0cmluZ3MgPSAwOworICAgIGlmICghYWx0
ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MuaXNFbXB0eSgpKSB7CisgICAgICAgIHNpemVfdCBz
aXplID0gYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3Muc2l6ZSgpOworICAgICAgICBhbHRl
cm5hdGl2ZVN0cmluZ3MgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2l6ZV07
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAg
W2FsdGVybmF0aXZlU3RyaW5ncyBhZGRPYmplY3Q6KE5TU3RyaW5nKilhbHRlcm5hdGl2ZVJlcGxh
Y2VtZW50U3RyaW5nc1tpXV07CisgICAgfQorCisgICAgTlNTcGVsbENoZWNrZXIqIHNwZWxsQ2hl
Y2tlciA9IFtOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdOworICAgIFtzcGVsbENo
ZWNrZXIgc2hvd0NvcnJlY3Rpb25CdWJibGVPZlR5cGU6YnViYmxlVHlwZSBwcmltYXJ5U3RyaW5n
OnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRp
dmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcgdmll
dzptX3ZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyogYWNjZXB0ZWRTdHJp
bmcpIHsKKyAgICAgICAgaGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVudChhY2NlcHRlZFN0cmluZywg
cmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcsIGJ1
YmJsZVR5cGUpOworICAgIH1dOworfQorCit2b2lkIENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzcyhS
ZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsIHJlYXNvbikKK3sKKyAgICBkaXNtaXNz
SW50ZXJuYWwocmVhc29uLCB0cnVlKTsKK30KKworU3RyaW5nIENvcnJlY3Rpb25QYW5lbDo6ZGlz
bWlzc1Nvb24oUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24pCit7Cisg
ICAgaWYgKCFpc1Nob3dpbmcoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgZGlz
bWlzc0ludGVybmFsKHJlYXNvbiwgdHJ1ZSk7CisgICAgW21fcmVzdWx0Q29uZGl0aW9uLmdldCgp
IGxvY2tdOworICAgIHdoaWxlICghbV9yZXN1bHRGb3JTeW5jaHJvbm91c0Rpc21pc3NhbCkKKyAg
ICAgICAgW21fcmVzdWx0Q29uZGl0aW9uLmdldCgpIHdhaXRdOworICAgIFttX3Jlc3VsdENvbmRp
dGlvbi5nZXQoKSB1bmxvY2tdOworICAgIHJldHVybiBtX3Jlc3VsdEZvclN5bmNocm9ub3VzRGlz
bWlzc2FsLmdldCgpOworfQorCit2b2lkIENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzc0ludGVybmFs
KFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwgcmVhc29uLCBib29sIGRpc21pc3Np
bmdFeHRlcm5hbGx5KQoreworICAgIG1fd2FzRGlzbWlzc2VkRXh0ZXJuYWxseSA9IGRpc21pc3Np
bmdFeHRlcm5hbGx5OworICAgIGlmICghaXNTaG93aW5nKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBtX3JlYXNvbkZvckRpc21pc3NpbmcgPSByZWFzb247CisgICAgbV9yZXN1bHRGb3JT
eW5jaHJvbm91c0Rpc21pc3NhbC5jbGVhcigpOworICAgIGlmIChyZWFzb24gPT0gUmVhc29uRm9y
RGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbEFjY2VwdGVkKQorICAgICAgICBbW05TU3BlbGxDaGVj
a2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gZGlzbWlzc0NvcnJlY3Rpb25CdWJibGVGb3JWaWV3Om1f
dmlldy5nZXQoKV07CisgICAgZWxzZQorICAgICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNw
ZWxsQ2hlY2tlcl0gY2FuY2VsQ29ycmVjdGlvbkJ1YmJsZUZvclZpZXc6bV92aWV3LmdldCgpXTsK
KyAgICBtX3ZpZXcuY2xlYXIoKTsKK30KKwordm9pZCBDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoV0tWaWV3KiB2aWV3LCBOU0NvcnJlY3Rpb25SZXNwb25zZSBy
ZXNwb25zZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudFN0cmluZykKK3sKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tl
cl0gcmVjb3JkUmVzcG9uc2U6cmVzcG9uc2UgdG9Db3JyZWN0aW9uOnJlcGxhY2VtZW50U3RyaW5n
IGZvcldvcmQ6cmVwbGFjZWRTdHJpbmcgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhU
YWc6W3ZpZXcgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWddXTsKK30KKwordm9pZCBDb3JyZWN0aW9u
UGFuZWw6OmhhbmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQoTlNTdHJpbmcqIGFjY2VwdGVkUmVwbGFj
ZW1lbnQsIE5TU3RyaW5nKiByZXBsYWNlZCwgTlNTdHJpbmcqIHByb3Bvc2VkUmVwbGFjZW1lbnQs
ICBOU0NvcnJlY3Rpb25CdWJibGVUeXBlIGNvcnJlY3Rpb25CdWJibGVUeXBlKQoreworICAgIE5T
U3BlbGxDaGVja2VyKiBzcGVsbENoZWNrZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxD
aGVja2VyXTsKKyAgICBOU0ludGVnZXIgZG9jdW1lbnRUYWcgPSBbbV92aWV3LmdldCgpIHNwZWxs
Q2hlY2tlckRvY3VtZW50VGFnXTsKKyAgICAKKyAgICBzd2l0Y2ggKGNvcnJlY3Rpb25CdWJibGVU
eXBlKSB7CisgICAgY2FzZSBOU0NvcnJlY3Rpb25CdWJibGVUeXBlQ29ycmVjdGlvbjoKKyAgICAg
ICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQpCisgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJl
Y29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlQWNjZXB0ZWQgdG9Db3JyZWN0aW9uOmFj
Y2VwdGVkUmVwbGFjZW1lbnQgZm9yV29yZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVsbERv
Y3VtZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
aWYgKCFtX3dhc0Rpc21pc3NlZEV4dGVybmFsbHkgfHwgbV9yZWFzb25Gb3JEaXNtaXNzaW5nID09
IFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxDYW5jZWxsZWQpCisgICAgICAgICAg
ICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZVJl
amVjdGVkIHRvQ29ycmVjdGlvbjpwcm9wb3NlZFJlcGxhY2VtZW50IGZvcldvcmQ6cmVwbGFjZWQg
bGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6
TlNDb3JyZWN0aW9uUmVzcG9uc2VJZ25vcmVkIHRvQ29ycmVjdGlvbjpwcm9wb3NlZFJlcGxhY2Vt
ZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6
ZG9jdW1lbnRUYWddOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTlNDb3Jy
ZWN0aW9uQnViYmxlVHlwZVJldmVyc2lvbjoKKyAgICAgICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1l
bnQpCisgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlv
blJlc3BvbnNlUmV2ZXJ0ZWQgdG9Db3JyZWN0aW9uOnJlcGxhY2VkIGZvcldvcmQ6YWNjZXB0ZWRS
ZXBsYWNlbWVudCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVudFRh
Z107CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxlVHlwZUd1ZXNz
ZXM6CisgICAgICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQorICAgICAgICAgICAgW3NwZWxs
Q2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkIHRvQ29y
cmVjdGlvbjphY2NlcHRlZFJlcGxhY2VtZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6bmls
IGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgCisgICAgaWYgKCFtX3dhc0Rpc21pc3NlZEV4dGVybmFsbHkpIHsKKyAgICAgICAg
W21fdmlldy5nZXQoKSBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6YWNjZXB0ZWRSZXBsYWNl
bWVudF07CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgW21fcmVzdWx0Q29uZGl0
aW9uLmdldCgpIGxvY2tdOworICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQorICAgICAgICBt
X3Jlc3VsdEZvclN5bmNocm9ub3VzRGlzbWlzc2FsLmFkb3B0TlMoW2FjY2VwdGVkUmVwbGFjZW1l
bnQgY29weV0pOworICAgIFttX3Jlc3VsdENvbmRpdGlvbi5nZXQoKSBzaWduYWxdOworICAgIFtt
X3Jlc3VsdENvbmRpdGlvbi5nZXQoKSB1bmxvY2tdOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NGYwYjlmMDU2ZmQ3OTNmOWM3NGYwMmY3YzY4YjE2YjEyYThmYzgzYS4uZjNmZTFlNTA0OWM4YWNl
NTU2MzVmOTIyMDU2OWY4ZmUyZDRlNjVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzgwLDYgKzM4MCw4IEBACiAJCTkzRkM2
N0JFMTJEM0NDRjIwMEE2MDYxMCAvKiBEZWNvZGVyQWRhcHRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGQzY3OUUxMkQzQ0M3NDAwQTYwNjEwIC8q
IERlY29kZXJBZGFwdGVyLmggKi87IH07CiAJCTkzRkM2N0JGMTJEM0NDRjIwMEE2MDYxMCAvKiBF
bmNvZGVyQWRhcHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0ZDNjc5RjEyRDNDQzc0MDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuY3BwICov
OyB9OwogCQk5M0ZDNjdDMDEyRDNDQ0YyMDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkM2N0EwMTJEM0ND
NzQwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5oICovOyB9OworCQlCODc4QjYxNTEzMzQyOERD
MDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCODc4QjYxMzEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlv
blBhbmVsLmggKi87IH07CisJCUI4NzhCNjE2MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9u
UGFuZWwubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
ODc4QjYxNDEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1tICovOyB9OwogCQlC
QzAwOTJGNzExNTgzN0EzMDBFMEFFMkEgLyogUnVuTG9vcE1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDA5MkY1MTE1ODM3QTMwMEUwQUUyQSAv
KiBSdW5Mb29wTWFjLm1tICovOyB9OwogCQlCQzAwOTJGODExNTgzN0EzMDBFMEFFMkEgLyogV29y
a1F1ZXVlTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMDA5MkY2MTE1ODM3QTMwMEUwQUUyQSAvKiBXb3JrUXVldWVNYWMuY3BwICovOyB9Owog
CQlCQzAzMkQ3NTEwRjQzNzhEMDA1OEMxNUEgLyogV2ViQ2hyb21lQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAzMkQ2MDEwRjQzNzhEMDA1
OEMxNUEgLyogV2ViQ2hyb21lQ2xpZW50LmggKi87IH07CkBAIC0xMjYwLDYgKzEyNjIsOCBAQAog
CQk5M0ZDNjdBMDEyRDNDQzc0MDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW5jb2RlckFkYXB0ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTcyRDVEN0YxMjM2Q0JBODAwQTg4QjE1IC8qIFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjM5NkVBNTUx
MkUwRUQyRDAwRjRGRUI3IC8qIGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjg3OEI2MTMxMzM0
MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb3JyZWN0aW9uUGFuZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQjg3OEI2MTQxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvcnJlY3Rpb25QYW5lbC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMDkyRjUxMTU4MzdBMzAwRTBBRTJBIC8qIFJ1
bkxvb3BNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSdW5M
b29wTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAwOTJGNjExNTgzN0Ez
MDBFMEFFMkEgLyogV29ya1F1ZXVlTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdvcmtRdWV1ZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDMDMyRDYwMTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJDaHJvbWVDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ2hyb21lQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yOTY0LDIwICsyOTY4LDIyIEBACiAJCUJDQ0YwODVDMTEzRjNCNzUw
MEM2NTBDNSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAotCQkJCUNEQ0E4NURFMTMyQUQwNTMwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5TWFjLm1tICovLAotCQkJCUNEQ0E4NUM2MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyLm1tICovLAotCQkJCUNEQ0E4NUM3MTMyQUJBNEUwMEU5NjFERiAv
KiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggKi8sCiAJCQkJMUE2NDI5MkMxMkRFNUY5
ODAwQ0FBRTJDIC8qIEJhY2tpbmdTdG9yZU1hYy5tbSAqLywKIAkJCQlCQzI2NTFGNTExODI1RUY4
MDAyNDNFMTIgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlNYWMubW0gKi8sCisJCQkJ
Qjg3OEI2MTMxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5oICovLAorCQkJCUI4
NzhCNjE0MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gKi8sCiAJCQkJMUFB
NDE3RUQxMkMwMEQ4NzAwMkJFNjdCIC8qIFRleHRDaGVja2VyTWFjLm1tICovLAogCQkJCTFBMUM2
NDg2MTFGNDE1QjcwMDU1M0MxOSAvKiBXZWJDb250ZXh0TWFjLm1tICovLAogCQkJCTUxQUNCQjlF
MTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLmggKi8sCiAJCQkJNTFB
Q0JCOUYxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0gKi8sCisJ
CQkJQ0RDQTg1REUxMzJBRDA1MzAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlN
YWMubW0gKi8sCiAJCQkJMUNBOEI5MzUxMjdDNzc0RTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclBy
b3h5TWFjLm1tICovLAogCQkJCUJDODU3RTg1MTJCNzFFQkIwMEVERUIyRSAvKiBXZWJQYWdlUHJv
eHlNYWMubW0gKi8sCiAJCQkJQkM1NzUwOTUxMjY4RjNDNjAwNkYwRjEyIC8qIFdlYlBvcHVwTWVu
dVByb3h5TWFjLmggKi8sCiAJCQkJQkM1NzUwOTYxMjY4RjNDNjAwNkYwRjEyIC8qIFdlYlBvcHVw
TWVudVByb3h5TWFjLm1tICovLAogCQkJCUJDODRFQjE3MTJBNzEwMEMwMDgzRjJEQSAvKiBXZWJQ
cmVmZXJlbmNlc01hYy5tbSAqLywKKwkJCQlDRENBODVDNjEzMkFCQTRFMDBFOTYxREYgLyogV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSAqLywKKwkJCQlDRENBODVDNzEzMkFCQTRFMDBF
OTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovLAogCQkJKTsKIAkJCXBh
dGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzU3OSw2ICszNTg1LDcg
QEAKIAkJCQk1MTFCMjRBQjEzMkUwOTcyMDAwNjVBMEMgLyogV2ViSWNvbkRhdGFiYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MUQwMkY2QTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFi
YXNlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRDAyRjZDMTMyRUM3MzcwMEJFQUE5
NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQlC
ODc4QjYxNTEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzM0QzQTNCNjEzMzk2MDBCMDA3MDlCRTQgLyogV0tNZWRpYUNhY2hlTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzNEM0EzQkIxMzM5NjA2MjAwNzA5QkU0IC8qIFdlYk1lZGlh
Q2FjaGVNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzRDNBM0MyMTMzOTYwQjAw
MDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCkBAIC00MTk2
LDYgKzQyMDMsNyBAQAogCQkJCTUxMUIyNEFBMTMyRTA5NzIwMDA2NUEwQyAvKiBXZWJJY29uRGF0
YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFEMDJGNjQxMzJFQzVCOTAwQkVBQTk2IC8q
IFdlYkljb25EYXRhYmFzZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MUQwMkY2QjEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjg3OEI2MTYxMzM0MjhEQzAwNjg4OEU5IC8q
IENvcnJlY3Rpb25QYW5lbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMzRDNBM0I1MTMzOTYwMEIw
MDcwOUJFNCAvKiBXS01lZGlhQ2FjaGVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMz
RDNBM0JBMTMzOTYwNjIwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTMzRDNBM0MxMTMzOTYwQjAwMDcwOUJFNCAvKiBXZWJNZWRpYUNh
Y2hlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGZh
ODQyNmEzOGU5NGZiZTNmNDE2NTk4OWY4MTUyZjNhZDc0ZTYwNzguLjkyMDBhZjA4MDlkYjVhMDky
YTBhYmRlMGQ4ZWY3ZTA2ZjhiNjMwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMTQxLDEx
ICsxNDEsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9k
U3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJs
ZWQpOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpT
cGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJik7Ci0jaWYgUExBVEZPUk0oTUFD
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
TEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotICAgIHZpcnR1
YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkNvcnJlY3Rpb25QYW5lbEluZm86
OlBhbmVsVHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFj
ZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2Vt
ZW50U3RyaW5ncywgV2ViQ29yZTo6RWRpdG9yKik7CisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVm
aW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisgICAgdmlydHVhbCB2b2lkIHNob3dDb3Jy
ZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JE
aXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTaG93aW5nQ29y
cmVjdGlvblBhbmVsKCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBs
YWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKKyAgICB2
aXJ0dWFsIFN0cmluZyBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihXZWJDb3JlOjpSZWFzb25G
b3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0
b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3Ry
aW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CiAj
ZW5kaWYKICAgICBXZWJQYWdlKiBtX3BhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xp
ZW50TWFjLm1tCmluZGV4IDhhZjA0MzgwYzFmZmU4NGQ5NWRkMWYwODFmZWEwMjBhYTkxNjQ5OWMu
LjdhOTVhNzJhNThmNjM5MzkzZjEwNjQwODA4NzVkMWI0MjIzY2U5ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVu
dE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJFZGl0b3JDbGllbnRNYWMubW0KQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbXBvcnQgPFdlYkNv
cmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlJlc291cmNlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV2ViTlNVUkxFeHRyYXMuaD4KLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05P
V19MRU9QQVJEKQorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKICNpbXBv
cnQgPEFwcEtpdC9OU1RleHRDaGVja2VyLmg+CiAjZW5kaWYKIApAQCAtMjQ2LDI2ICsyNDYsMjcg
QEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFy
KiB0ZXh0LCBpbnQgbGVuZ3RoLCB1aW50NjQKICAgICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkNoZWNrVGV4dE9mUGFyYWdyYXBoKFN0cmluZyh0ZXh0LCBsZW5ndGgp
LCBjaGVja2luZ1R5cGVzKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2hlY2tUZXh0T2ZQYXJh
Z3JhcGg6OlJlcGx5KHJlc3VsdHMpKTsKIH0KIAotI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJ
R0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElO
R19PTl9TTk9XX0xFT1BBUkQpCi12b2lkIFdlYkVkaXRvckNsaWVudDo6c2hvd0NvcnJlY3Rpb25Q
YW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUgdHlwZSwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdU
Rjo6U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VtZW50
U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmlu
Z3MsIFdlYkNvcmU6OkVkaXRvciopCisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9Q
QVJEKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6
Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlIHR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvcnJl
Y3Rpb25QYW5lbCh0eXBlLCBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VkU3Ry
aW5nLCByZXBsYWNlbWVudFN0cmluZywgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpKTsK
IH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29y
ZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCkKK3ZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdD
b3JyZWN0aW9uUGFuZWwgcmVhc29uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9uUGFuZWwo
cmVhc29uKSk7CiB9CiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc1Nob3dpbmdDb3JyZWN0aW9u
UGFuZWwoKQorU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNv
b24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCByZWFzb24pCiB7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgU3RyaW5nIHJl
c3VsdDsKKyAgICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21p
c3NDb3JyZWN0aW9uUGFuZWxTb29uKHJlYXNvbiksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
c21pc3NDb3JyZWN0aW9uUGFuZWxTb29uOjpSZXBseShyZXN1bHQpKTsKKyAgICByZXR1cm4gcmVz
dWx0OwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZShFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlw
ZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVu
dFN0cmluZykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpSZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKHJlc3BvbnNl
VHlwZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKSk7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGRh
NzdiMGI0OTk4YzY1YWM2ZmFkZjNhOWVkYjY2ZmEwNmU5ODkwODguLjMwNmJlMzdjZDFmNjM0NTk2
MGZmMDJjMzI1YWIxMWQwNTRiZjQ5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIxMzEsNCArMjEzMSwxNCBAQCBib29sIFdlYlBhZ2U6
OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQogICAgIHJldHVybiBwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCk7CiB9CiAKKyNp
ZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKK3Zv
aWQgV2ViUGFnZTo6aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVz
dWx0KQoreworICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAg
ICBmcmFtZS0+ZWRpdG9yKCktPmhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdChyZXN1bHQpOwor
fQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYTU3M2RlMjMyNDIyYjlhZDQ1NmM1ZjJhYmEy
NWM2NTlmYjExODgwYy4uZjdiOTlkMjU4YjJkZWI4NzJkZGJlYzU5YzEzN2Y0NWE3YjBmY2VhMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNjEs
NiArMzYxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERyYWdTb3VyY2UoTlNPYmplY3QgKik7
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05P
V19MRU9QQVJEKQorICAgIHZvaWQgaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0KGNvbnN0IFN0
cmluZyYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQs
IGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA2NGY3
ZGFmZDA4NjAyODJmNTM4NDE2MjMwNTQwYWExODliMjExOTIyLi44NjVjZDk4ZDIzMjVlMjdkNDll
YzE2ZGY5ZDEyMjIyODNiM2QwZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMTkyLDQgKzE5Miw4IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2UgewogI2lmIFBMQVRGT1JNKFFUKQogICAgIEZpbmRab29tYWJsZUFy
ZWFGb3JQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICNlbmRpZgorCisjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisgICAgSGFuZGxl
Q29ycmVjdGlvblBhbmVsUmVzdWx0KFN0cmluZyByZXN1bHQpCisjZW5kaWYKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>