<?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>194977</bug_id>
          
          <creation_ts>2019-02-23 08:26:50 -0800</creation_ts>
          <short_desc>Introduce ContentChangeObserver class</short_desc>
          <delta_ts>2019-02-25 07:53:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fred.wang</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1509370</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-02-23 08:26:50 -0800</bug_when>
    <thetext>This class will eventually take care of all hover related content change observation logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509371</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-23 08:41:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/48338115&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509380</commentid>
    <comment_count>2</comment_count>
      <attachid>362829</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-02-23 11:40:27 -0800</bug_when>
    <thetext>Created attachment 362829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509433</commentid>
    <comment_count>3</comment_count>
      <attachid>362829</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-02-23 19:35:44 -0800</bug_when>
    <thetext>Comment on attachment 362829
Patch

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

&gt; Source/WebCore/page/DOMTimer.cpp:242
&gt; +        LOG_WITH_STREAM(ContentObservation, stream &lt;&lt; &quot;DOMTimer::install: registed this timer: (&quot; &lt;&lt; timer &lt;&lt; &quot;) and observe when it fires.&quot;);

registed. Maybe log the timer ID?

&gt; Source/WebCore/page/DOMTimer.cpp:360
&gt; +    if (is&lt;Document&gt;(context) &amp;&amp; downcast&lt;Document&gt;(context).page()) {
&gt; +        page = downcast&lt;Document&gt;(context).page();
&gt; +        auto&amp; contentChangeObserver = page-&gt;contentChangeObserver();
&gt; +        isObservingLastTimer = contentChangeObserver.countOfObservedDOMTimers() == 1;
&gt; +        shouldBeginObservingChanges = contentChangeObserver.containsObservedDOMTimer(*this);
&gt;      }

If this were a lambda the code would read more nicely.

&gt; Source/WebCore/page/DOMTimer.cpp:391
&gt;              LOG(ContentObservation, &quot;DOMTimer::fired: in determined state.&quot;);

Log the timer ID?

&gt; Source/WebCore/page/DOMTimer.cpp:395
&gt;              LOG(ContentObservation, &quot;DOMTimer::fired: wait until next style recalc fires.&quot;);

Ditto.

&gt; Source/WebCore/page/DOMWindow.cpp:1698
&gt; +        LOG_WITH_STREAM(ContentObservation, stream &lt;&lt; &quot;DOMWindow::clearTimeout: remove registered timer (&quot; &lt;&lt; timer &lt;&lt; &quot;)&quot;);

Log the ID

&gt; Source/WebCore/page/DOMWindow.cpp:1704
&gt; +    handleObservedTimerCancelIfNeeded();

The lambda doesn&apos;t really add anything here.

&gt; Source/WebCore/page/ios/EventHandlerIOS.mm:495
&gt; +    document.updateStyleIfNeeded();

Would be nice to add a comment to say why we have do this here and again just below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509536</commentid>
    <comment_count>4</comment_count>
      <attachid>362882</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-02-24 21:02:33 -0800</bug_when>
    <thetext>Created attachment 362882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509538</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-02-24 21:13:42 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; &gt; Source/WebCore/page/DOMWindow.cpp:1704
&gt; &gt; +    handleObservedTimerCancelIfNeeded();
&gt; 
&gt; The lambda doesn&apos;t really add anything here.
I think it does. It enables a nicer looking control flow.

if () {
    if () {
        if () {
            if () {
                do();
            }
        }
    }
}
vs.
if (!)
    return;
if (!)
    return;
if (!)
    return;
if (!)
    return;
do()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509549</commentid>
    <comment_count>6</comment_count>
      <attachid>362882</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-24 22:04:26 -0800</bug_when>
    <thetext>Comment on attachment 362882
Patch

Clearing flags on attachment: 362882

Committed r242032: &lt;https://trac.webkit.org/changeset/242032&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509550</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-24 22:04:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509598</commentid>
    <comment_count>8</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2019-02-25 04:51:04 -0800</bug_when>
    <thetext>@Zalan: This is making iOS debug build fails: https://build.webkit.org/builders/Apple%20iOS%2012%20Simulator%20Debug%20%28Build%29

n file included from /Users/fred/WebKit/WebKitBuild/Debug-iphonesimulator/DerivedSources/WebCore/unified-sources/UnifiedSource315.cpp:5:
./page/DOMTimer.cpp:242:102: error: invalid use of member &apos;m_timeoutId&apos; in
      static member function
  ...&lt;&lt; &quot;DOMTimer::install: register this timer: (&quot; &lt;&lt; m_timeoutId &lt;&lt; &quot;) and ...
                                                       ^~~~~~~~~~~
In file included from /Users/fred/WebKit/WebKitBuild/Debug-iphonesimulator/DerivedSources/WebCore/unified-sources/UnifiedSource315.cpp:5:
In file included from ./page/DOMTimer.cpp:32:
In file included from /Users/fred/WebKit/Source/WebCore/platform/Logging.h:28:
PAL/pal/LogMacros.h:36:9: note: expanded from macro &apos;LOG_WITH_STREAM&apos;
        commands; \
        ^~~~~~~~
In file included from /Users/fred/WebKit/WebKitBuild/Debug-iphonesimulator/DerivedSources/WebCore/unified-sources/UnifiedSource315.cpp:5:
./page/DOMTimer.cpp:391:68: error: invalid operands to binary expression
      (&apos;const char *&apos; and &apos;int&apos;)
  ...LOG_WITH_STREAM(ContentObservation, &quot;DOMTimer::fired(&quot; &lt;&lt; m_timeoutId &lt;...
                                         ~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~
In file included from /Users/fred/WebKit/WebKitBuild/Debug-iphonesimulator/DerivedSources/WebCore/unified-sources/UnifiedSource315.cpp:5:
In file included from ./page/DOMTimer.cpp:32:
In file included from /Users/fred/WebKit/Source/WebCore/platform/Logging.h:28:
PAL/pal/LogMacros.h:36:9: note: expanded from macro &apos;LOG_WITH_STREAM&apos;
        commands; \
        ^~~~~~~~
In file included from /Users/fred/WebKit/WebKitBuild/Debug-iphonesimulator/DerivedSources/WebCore/unified-sources/UnifiedSource315.cpp:5:
./page/DOMTimer.cpp:395:68: error: invalid operands to binary expression
      (&apos;const char *&apos; and &apos;int&apos;)
  ...LOG_WITH_STREAM(ContentObservation, &quot;DOMTimer::fired(&quot; &lt;&lt; m_timeoutId &lt;...
                                         ~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~
In file included from /Users/fred/WebKit/WebKitBuild/Debug-iphonesimulator/DerivedSources/WebCore/unified-sources/UnifiedSource315.cpp:5:
In file included from ./page/DOMTimer.cpp:32:
In file included from /Users/fred/WebKit/Source/WebCore/platform/Logging.h:28:
PAL/pal/LogMacros.h:36:9: note: expanded from macro &apos;LOG_WITH_STREAM&apos;
        commands; \
        ^~~~~~~~
3 errors generated.

** BUILD FAILED **</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509623</commentid>
    <comment_count>9</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-02-25 07:18:27 -0800</bug_when>
    <thetext>(In reply to Frédéric Wang (:fredw) from comment #8)
&gt; @Zalan: This is making iOS debug build fails:
&gt; https://build.webkit.org/builders/
&gt; Apple%20iOS%2012%20Simulator%20Debug%20%28Build%29
&gt; 
&gt; n file included from
&gt; /Users/fred/WebKit/WebKitBuild/Debug-iphonesimulator/DerivedSources/WebCore/
&gt; unified-sources/UnifiedSource315.cpp:5:
&gt; ./page/DOMTimer.cpp:242:102: error: invalid use of member &apos;m_timeoutId&apos; in
&gt;       static member function
&gt;   ...&lt;&lt; &quot;DOMTimer::install: register this timer: (&quot; &lt;&lt; m_timeoutId &lt;&lt; &quot;) and
&gt; ...
&gt;                                                        ^~~~~~~~~~~
&gt; In file included from
&gt; /Users/fred/WebKit/WebKitBuild/Debug-iphonesimulator/DerivedSources/WebCore/
&gt; unified-sources/UnifiedSource315.cpp:5:
&gt; In file included from ./page/DOMTimer.cpp:32:
&gt; In file included from
&gt; /Users/fred/WebKit/Source/WebCore/platform/Logging.h:28:
&gt; PAL/pal/LogMacros.h:36:9: note: expanded from macro &apos;LOG_WITH_STREAM&apos;
&gt;         commands; \
&gt;         ^~~~~~~~
&gt; In file included from
&gt; /Users/fred/WebKit/WebKitBuild/Debug-iphonesimulator/DerivedSources/WebCore/
&gt; unified-sources/UnifiedSource315.cpp:5:
&gt; ./page/DOMTimer.cpp:391:68: error: invalid operands to binary expression
&gt;       (&apos;const char *&apos; and &apos;int&apos;)
&gt;   ...LOG_WITH_STREAM(ContentObservation, &quot;DOMTimer::fired(&quot; &lt;&lt; m_timeoutId
&gt; &lt;...
&gt;                                          ~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~
&gt; In file included from
&gt; /Users/fred/WebKit/WebKitBuild/Debug-iphonesimulator/DerivedSources/WebCore/
&gt; unified-sources/UnifiedSource315.cpp:5:
&gt; In file included from ./page/DOMTimer.cpp:32:
&gt; In file included from
&gt; /Users/fred/WebKit/Source/WebCore/platform/Logging.h:28:
&gt; PAL/pal/LogMacros.h:36:9: note: expanded from macro &apos;LOG_WITH_STREAM&apos;
&gt;         commands; \
&gt;         ^~~~~~~~
&gt; In file included from
&gt; /Users/fred/WebKit/WebKitBuild/Debug-iphonesimulator/DerivedSources/WebCore/
&gt; unified-sources/UnifiedSource315.cpp:5:
&gt; ./page/DOMTimer.cpp:395:68: error: invalid operands to binary expression
&gt;       (&apos;const char *&apos; and &apos;int&apos;)
&gt;   ...LOG_WITH_STREAM(ContentObservation, &quot;DOMTimer::fired(&quot; &lt;&lt; m_timeoutId
&gt; &lt;...
&gt;                                          ~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~
&gt; In file included from
&gt; /Users/fred/WebKit/WebKitBuild/Debug-iphonesimulator/DerivedSources/WebCore/
&gt; unified-sources/UnifiedSource315.cpp:5:
&gt; In file included from ./page/DOMTimer.cpp:32:
&gt; In file included from
&gt; /Users/fred/WebKit/Source/WebCore/platform/Logging.h:28:
&gt; PAL/pal/LogMacros.h:36:9: note: expanded from macro &apos;LOG_WITH_STREAM&apos;
&gt;         commands; \
&gt;         ^~~~~~~~
&gt; 3 errors generated.
&gt; 
&gt; ** BUILD FAILED **

:( Thanks! Fixed in r242039</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509634</commentid>
    <comment_count>10</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2019-02-25 07:51:23 -0800</bug_when>
    <thetext>(In reply to zalan from comment #9)
&gt; :( Thanks! Fixed in r242039

Sorry, I was not very explicit but there are 3 places to fix... buildbot still complains about the 2 remaining places: https://build.webkit.org/builders/Apple%20iOS%2012%20Simulator%20Debug%20%28Build%29/builds/3761/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509635</commentid>
    <comment_count>11</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2019-02-25 07:52:52 -0800</bug_when>
    <thetext>(In reply to Frédéric Wang (:fredw) from comment #10)
&gt; (In reply to zalan from comment #9)
&gt; &gt; :( Thanks! Fixed in r242039
&gt; 
&gt; Sorry, I was not very explicit but there are 3 places to fix... buildbot
&gt; still complains about the 2 remaining places:
&gt; https://build.webkit.org/builders/
&gt; Apple%20iOS%2012%20Simulator%20Debug%20%28Build%29/builds/3761/steps/compile-
&gt; webkit/logs/stdio

Nevermind, I saw you just landed one more commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509636</commentid>
    <comment_count>12</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-02-25 07:53:02 -0800</bug_when>
    <thetext>(In reply to Frédéric Wang (:fredw) from comment #10)
&gt; (In reply to zalan from comment #9)
&gt; &gt; :( Thanks! Fixed in r242039
&gt; 
&gt; Sorry, I was not very explicit but there are 3 places to fix... buildbot
&gt; still complains about the 2 remaining places:
&gt; https://build.webkit.org/builders/
&gt; Apple%20iOS%2012%20Simulator%20Debug%20%28Build%29/builds/3761/steps/compile-
&gt; webkit/logs/stdio
Yeah, I noticed that too. https://trac.webkit.org/changeset/242041/webkit should take care of them all.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362829</attachid>
            <date>2019-02-23 11:40:27 -0800</date>
            <delta_ts>2019-02-24 21:02:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194977-20190223114017.patch</filename>
            <type>text/plain</type>
            <size>42075</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxOTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzdiODFjZTA1ZjYwNjc4
NzJjNDNkNTE2MTI0ZWFjNjlmZjZiZjM5OC4uZDhjOTlhMGYyNmNkMDcyMTQ5ODRiYWVhZDY5ODAz
ZTM2NjA5Y2RjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE5LTAyLTIzICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIENvbnRlbnRD
aGFuZ2VPYnNlcnZlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk0OTc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODMzODExNT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpcyBhYm91dCBwaXBpbmcgdGhyb3VnaCBhbGwgdGhlIHJlbGF0ZWQg
V0sqIGNhbGxzLiAKKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2NoZWR1bGVTdHlsZVJlY2FsYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlU3R5bGVJZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6cGxhdGZvcm1TdXNwZW5kT3JTdG9wQWN0aXZlRE9NT2JqZWN0
cyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKiBwYWdlL0RP
TVRpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjppbnN0YWxsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpmaXJlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpjbGVhclRpbWVvdXQpOgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OndpbGxEZXRhY2hQ
YWdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmNv
bnRlbnRDaGFuZ2VPYnNlcnZlcik6CisgICAgICAgICogcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDaGVja0ZvclZpc2liaWxpdHlDaGFuZ2U6OkNoZWNrRm9yVmlzaWJpbGl0
eUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGVja0ZvclZpc2liaWxpdHlDaGFuZ2U6On5D
aGVja0ZvclZpc2liaWxpdHlDaGFuZ2UpOgorCiAyMDE5LTAyLTIyICBFcmljIENhcmxzb24gIDxl
cmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBzb21lIG1lZGlhIGxvZ2dp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggMjg2ZDA1NWMzOWQ4ZWRhNmIzNDI3MDAzNjI2Zjk1ZDkwMjFiYTMyZC4u
ODkwM2MyNzM2NDMwOTZmNzgyNjJkOGY2YWE2NmE5N2JiODFjNzU3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxOS0wMi0yMyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgor
CisgICAgICAgIEludHJvZHVjZSBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIgY2xhc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDk3NworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNDgzMzgxMTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZVN5bnRoZXRpY0NsaWNrKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcGxldGVQZW5kaW5nU3ludGhldGljQ2xpY2tGb3JDb250
ZW50Q2hhbmdlT2JzZXJ2ZXIpOgorCiAyMDE5LTAyLTIxICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJv
ICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSBObyBBUEkgZG9jdW1l
bnRhdGlvbiBnZW5lcmF0ZWQgZm9yIFdlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCAwNTRlNzExNmY0MWI0MGExYWQ0ODFkZDA4MjUwZmMw
ZTZhMjE3MzgwLi42OTgwZGYyYTFlODY4NzZhZjgyNzM5ODM2MDA0MTNlZTMyN2ZhNjIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDItMjMgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgQ29udGVu
dENoYW5nZU9ic2VydmVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTQ5NzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4MzM4MTE1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50
SU9TOjpvYnNlcnZlZENvbnRlbnRDaGFuZ2UpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50SU9T
OjpjbGVhckNvbnRlbnRDaGFuZ2VPYnNlcnZlcnMpOgorCiAyMDE5LTAyLTE3ICBEYXZpZCBLaWx6
ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjI0MTYyMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDJhYTIzNjdmMWFkZjQ4MjEy
OGVhNjlmZmJmMWZjZmRmYjU5MmI0YTUuLmZlOTk3ZDFiZjMzZDk2NTA4NjI4MzU3ZDAwMWU2ZDhl
ODM2M2I4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMTMxLDYgKzEzMSw3IEBAIHBh
Z2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQogcGFnZS9jb2NvYS9SZXNvdXJj
ZVVzYWdlVGhyZWFkQ29jb2EubW0KIHBhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KIAor
cGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLm1tCiBwYWdlL2lvcy9FdmVudEhhbmRsZXJJ
T1MubW0KIHBhZ2UvaW9zL0ZyYW1lSU9TLm1tCiBwYWdlL2lvcy9XZWJFdmVudFJlZ2lvbi5tbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDQ2YTJkOGNlNzA4NGU3NzRiM2YyODI3NzJjNmNlZTBiNTAxN2U2ZjMuLmVkMjViOGY2ZWJi
YTI0ZDUyNDkzOGM0MWJiYzUzNTM0ZTFhMGQ5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNjgsNiArMjA2OCw3IEBACiAJ
CTZGOTk1QTNBMUE3MDgzMzcwMEE3MzVGNCAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGOTk1QTMwMUE3
MDgzMzcwMEE3MzVGNCAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCAqLzsgfTsKIAkJNkZB
NDQ1NEU4OThGMkZDMTY4QkMzOEMxIC8qIEpTQmVmb3JlVW5sb2FkRXZlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5RTA0QTI3QkVEMkY4MUY5OEU5
MDIyQiAvKiBKU0JlZm9yZVVubG9hZEV2ZW50LmggKi87IH07CiAJCTZGQjExQjVDMjE3ODNGRDAw
MEUyQTU3NCAvKiBUZXh0VXRpbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkZCMTFCNTkyMTc4M0ZDRjAwRTJBNTc0IC8qIFRleHRVdGlsLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNkZCNUUyMTQyMjFG
MjQ1MzAwMzk4OUNGIC8qIENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCNUUyMTIyMjFGMjQ0NzAwMzk4OUNGIC8q
IENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTZGRTE5ODE3MjE3ODM5N0MwMDQ0NkYwOCAvKiBJbmxpbmVMaW5l
QnJlYWtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkZFMTk4MTUyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUxpbmVCcmVha2VyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkZFN0NGQTIyMTc3RUVG
MjAwNUIxNTczIC8qIElubGluZUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZGRTdDRkEwMjE3N0VFRjEwMDVCMTU3MyAvKiBJbmxpbmVJdGVtLmgg
Ki87IH07CiAJCTZGRTdDRkE0MjE3N0VGMTAwMDVCMTU3MyAvKiBMYXlvdXRMaW5lQnJlYWtCb3gu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGRTdDRkEz
MjE3N0VGMTAwMDVCMTU3MyAvKiBMYXlvdXRMaW5lQnJlYWtCb3guaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTI0Miw2ICs5MjQzLDcgQEAKIAkJ
NkY5OTVBMzAxQTcwODMzNzAwQTczNUY0IC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZCMTFCNTkyMTc4M0ZDRjAwRTJBNTc0
IC8qIFRleHRVdGlsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRVdGls
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQjExQjVCMjE3ODNGQ0YwMEUyQTU3
NCAvKiBUZXh0VXRpbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
ZXh0VXRpbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZGQjVFMjEyMjIxRjI0
NDcwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29u
dGVudENoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQkI4
NjA1MjBCNDY0QjYwMERBRDkzOCAvKiBGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2RkUxOTgxMzIxNzgzOTdCMDA0NDZGMDggLyogSW5saW5lTGlu
ZUJyZWFrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5l
TGluZUJyZWFrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkUxOTgxNTIx
NzgzOTdDMDA0NDZGMDggLyogSW5saW5lTGluZUJyZWFrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5saW5lTGluZUJyZWFrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTkyNDksNiArOTI1MSw3IEBACiAJCTZGRTdDRkEwMjE3N0VFRjEwMDVCMTU3MyAv
KiBJbmxpbmVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUl0
ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZFN0NGQTMyMTc3RUYxMDAwNUIx
NTczIC8qIExheW91dExpbmVCcmVha0JveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBMYXlvdXRMaW5lQnJlYWtCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NkZFN0NGQTUyMTc3RjA2OTAwNUIxNTczIC8qIExheW91dExpbmVCcmVha0JveC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRMaW5lQnJlYWtCb3guY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RkU5RjA5MjIyMjExMDM1MDA0QzUwODIgLyog
Q29udGVudENoYW5nZU9ic2VydmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQ29udGVudENoYW5nZU9ic2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2RkZEQzQzRTIxMkVGRjE2MDBBOUNBOTEgLyogRmxvYXRBdm9pZGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0QXZvaWRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGRkRDNDQwMjEyRUZGMTYwMEE5Q0E5MSAvKiBGbG9h
dEF2b2lkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRBdm9pZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwOUEwMUZEMUUzRDBCQ0MwMDZCMEQ0
QyAvKiBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1vZHVsZUZldGNoRmFpbHVyZUtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE2NjA3LDYgKzE2NjEwLDggQEAKIAkJMThBNkNENkYwRDhGMjAyNTAwMURDM0NFIC8q
IGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNkZC
NUUyMTIyMjFGMjQ0NzAwMzk4OUNGIC8qIENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oICovLAorCQkJ
CTZGRTlGMDkyMjIyMTEwMzUwMDRDNTA4MiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIubW0gKi8s
CiAJCQkJRkU2OTM4QjUxMDQ1RDY3RTAwOEVBQkI2IC8qIEV2ZW50SGFuZGxlcklPUy5tbSAqLywK
IAkJCQlGRUQxM0QzQjBDRUE5MzZBMDBEODk0NjYgLyogRnJhbWVJT1MubW0gKi8sCiAJCQkJMjI1
QTE2QjMwRDVDMTFFOTAwMDkwMjk1IC8qIFdlYkV2ZW50UmVnaW9uLmggKi8sCkBAIC0yODcxMSw2
ICsyODcxNiw3IEBACiAJCQkJMkRBRjM0M0QxRUE3RTBGMTAwMzgyQ0QzIC8qIENvbnN0YW50UHJv
cGVydHlNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjFDMDk3N0QzQzAwMDU4MjZEOSAv
KiBDb250YWluZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUExNDcwODExMTAyQjE1MDBF
RUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTZG
QjVFMjE0MjIxRjI0NTMwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNUVCOTgxMEU4MjA3MjUwMEIyNTk2NSAvKiBDb250ZW50RGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTFCNDVEMjExQUI4RDFFMjAwMTE3Q0QyIC8qIENvbnRlbnRFeHRl
bnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREZBNkM4MUFBNEYyREEwMEVBODc0NiAvKiBD
b250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCAyYmE5NjJlNTg2MGFhZjhhMGEyM2MxOTc0OTYwOGEwNzM2OWE4NWNmLi4yNzU1
Zjc2ZGZhYjYwYmU0MGVlOGE2NTZjMTA5OTEzOGIzODZhNWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTI1OCw2ICsyNTgsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorI2luY2x1ZGUgIkNvbnRlbnRDaGFuZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIkNTU0Zv
bnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkRldmljZU1vdGlvbkNsaWVudElPUy5oIgogI2luY2x1
ZGUgIkRldmljZU1vdGlvbkNvbnRyb2xsZXIuaCIKQEAgLTI2Niw4ICsyNjcsNiBAQAogI2luY2x1
ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiTmF2
aWdhdG9yR2VvbG9jYXRpb24uaCIKLSNpbmNsdWRlICJXS0NvbnRlbnRPYnNlcnZhdGlvbi5oIgot
I2luY2x1ZGUgIldLQ29udGVudE9ic2VydmF0aW9uSW50ZXJuYWwuaCIKICNlbmRpZgogCiAjaWYg
RU5BQkxFKElPU19HRVNUVVJFX0VWRU5UUykKQEAgLTE4MTIsOSArMTgxMSwxMiBAQCB2b2lkIERv
Y3VtZW50OjpzY2hlZHVsZVN0eWxlUmVjYWxjKCkKICAgICBBU1NFUlQoY2hpbGROZWVkc1N0eWxl
UmVjYWxjKCkgfHwgbV9uZWVkc0Z1bGxTdHlsZVJlYnVpbGQpOwogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBpZiAoV0tJc09ic2VydmluZ1N0eWxlUmVjYWxjU2NoZWR1bGluZygpKSB7
Ci0gICAgICAgIExPR19XSVRIX1NUUkVBTShDb250ZW50T2JzZXJ2YXRpb24sIHN0cmVhbSA8PCAi
RG9jdW1lbnQoIiA8PCB0aGlzIDw8ICIpOjpzY2hlZHVsZVN0eWxlUmVjYWxjOiByZWdpc3RlciB0
aGlzIHN0eWxlIHJlY2FsYyBzY2hlZHVsZSBhbmQgb2JzZXJ2ZSB3aGVuIGl0IGZpcmVzLiIpOwot
ICAgICAgICBXS1NldE9ic2VydmVkQ29udGVudENoYW5nZShXS0NvbnRlbnRJbmRldGVybWluYXRl
Q2hhbmdlKTsKKyAgICBpZiAoYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKSkgeworICAgICAgICBh
dXRvJiBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBwYWdlLT5jb250ZW50Q2hhbmdlT2JzZXJ2ZXIo
KTsKKyAgICAgICAgaWYgKGNvbnRlbnRDaGFuZ2VPYnNlcnZlci5pc09ic2VydmluZ1N0eWxlUmVj
YWxjU2NoZWR1bGluZygpKSB7CisgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oQ29udGVudE9i
c2VydmF0aW9uLCBzdHJlYW0gPDwgIkRvY3VtZW50KCIgPDwgdGhpcyA8PCAiKTo6c2NoZWR1bGVT
dHlsZVJlY2FsYzogcmVnaXN0ZXIgdGhpcyBzdHlsZSByZWNhbGMgc2NoZWR1bGUgYW5kIG9ic2Vy
dmUgd2hlbiBpdCBmaXJlcy4iKTsKKyAgICAgICAgICAgIGNvbnRlbnRDaGFuZ2VPYnNlcnZlci5z
ZXRPYnNlcnZlZENvbnRlbnRDaGFuZ2UoV0tDb250ZW50SW5kZXRlcm1pbmF0ZUNoYW5nZSk7Cisg
ICAgICAgIH0KICAgICB9CiAjZW5kaWYKIApAQCAtMjA0OCwxMSArMjA1MCwxNSBAQCBib29sIERv
Y3VtZW50Ojp1cGRhdGVTdHlsZUlmTmVlZGVkKCkKICAgICB9CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotICAgIGF1dG8gb2JzZXJ2aW5nQ29udGVudENoYW5nZSA9IFdLU2hvdWxkT2JzZXJ2
ZU5leHRTdHlsZVJlY2FsYygpOwotICAgIGlmIChvYnNlcnZpbmdDb250ZW50Q2hhbmdlKSB7Ci0g
ICAgICAgIExPR19XSVRIX1NUUkVBTShDb250ZW50T2JzZXJ2YXRpb24sIHN0cmVhbSA8PCAiRG9j
dW1lbnQoIiA8PCB0aGlzIDw8ICIpOjpzY2hlZHVsZVN0eWxlUmVjYWxjOiBzdGFydCBvYnNlcnZp
bmcgY29udGVudCBjaGFuZ2UuIik7Ci0gICAgICAgIFdLU2V0U2hvdWxkT2JzZXJ2ZU5leHRTdHls
ZVJlY2FsYyhmYWxzZSk7Ci0gICAgICAgIFdLU3RhcnRPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygp
OworICAgIGF1dG8gb2JzZXJ2aW5nQ29udGVudENoYW5nZSA9IGZhbHNlOworICAgIGlmIChhdXRv
KiBwYWdlID0gdGhpcy0+cGFnZSgpKSB7CisgICAgICAgIGF1dG8mIGNvbnRlbnRDaGFuZ2VPYnNl
cnZlciA9IHBhZ2UtPmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpOworICAgICAgICBvYnNlcnZpbmdD
b250ZW50Q2hhbmdlID0gY29udGVudENoYW5nZU9ic2VydmVyLnNob3VsZE9ic2VydmVOZXh0U3R5
bGVSZWNhbGMoKTsKKyAgICAgICAgaWYgKG9ic2VydmluZ0NvbnRlbnRDaGFuZ2UpIHsKKyAgICAg
ICAgICAgIExPR19XSVRIX1NUUkVBTShDb250ZW50T2JzZXJ2YXRpb24sIHN0cmVhbSA8PCAiRG9j
dW1lbnQoIiA8PCB0aGlzIDw8ICIpOjpzY2hlZHVsZVN0eWxlUmVjYWxjOiBzdGFydCBvYnNlcnZp
bmcgY29udGVudCBjaGFuZ2UuIik7CisgICAgICAgICAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIu
c2V0U2hvdWxkT2JzZXJ2ZU5leHRTdHlsZVJlY2FsYyhmYWxzZSk7CisgICAgICAgICAgICBjb250
ZW50Q2hhbmdlT2JzZXJ2ZXIuc3RhcnRPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygpOworICAgICAg
ICB9CiAgICAgfQogI2VuZGlmCiAgICAgLy8gVGhlIGVhcmx5IGV4aXQgYWJvdmUgZm9yICFuZWVk
c1N0eWxlUmVjYWxjKCkgaXMgbmVlZGVkIHdoZW4gdXBkYXRlV2lkZ2V0UG9zaXRpb25zKCkgaXMg
Y2FsbGVkIGluIHJ1bk9yU2NoZWR1bGVBc3luY2hyb25vdXNUYXNrcygpLgpAQCAtMjA2MSwxNSAr
MjA2NywxNSBAQCBib29sIERvY3VtZW50Ojp1cGRhdGVTdHlsZUlmTmVlZGVkKCkKICAgICByZXNv
bHZlU3R5bGUoKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKG9ic2Vydmlu
Z0NvbnRlbnRDaGFuZ2UpIHsKKyAgICBpZiAob2JzZXJ2aW5nQ29udGVudENoYW5nZSAmJiBwYWdl
KCkpIHsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKENvbnRlbnRPYnNlcnZhdGlvbiwgc3RyZWFt
IDw8ICJEb2N1bWVudCgiIDw8IHRoaXMgPDwgIik6OnNjaGVkdWxlU3R5bGVSZWNhbGM6IHN0b3Ag
b2JzZXJ2aW5nIGNvbnRlbnQgY2hhbmdlLiIpOwotICAgICAgICBXS1N0b3BPYnNlcnZpbmdDb250
ZW50Q2hhbmdlcygpOworICAgICAgICBhdXRvJiBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBwYWdl
KCktPmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpOworICAgICAgICBjb250ZW50Q2hhbmdlT2JzZXJ2
ZXIuc3RvcE9ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKCk7CiAKLSAgICAgICAgYXV0byBpbkRldGVy
bWluZWRTdGF0ZSA9IFdLT2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCkgPT0gV0tDb250ZW50VmlzaWJp
bGl0eUNoYW5nZSB8fCAhV2ViVGhyZWFkQ291bnRPZk9ic2VydmVkRE9NVGltZXJzKCk7ICAKKyAg
ICAgICAgYXV0byBpbkRldGVybWluZWRTdGF0ZSA9IGNvbnRlbnRDaGFuZ2VPYnNlcnZlci5vYnNl
cnZlZENvbnRlbnRDaGFuZ2UoKSA9PSBXS0NvbnRlbnRWaXNpYmlsaXR5Q2hhbmdlIHx8ICFjb250
ZW50Q2hhbmdlT2JzZXJ2ZXIuY291bnRPZk9ic2VydmVkRE9NVGltZXJzKCk7ICAKICAgICAgICAg
aWYgKGluRGV0ZXJtaW5lZFN0YXRlKSB7CiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oQ29u
dGVudE9ic2VydmF0aW9uLCBzdHJlYW0gPDwgIkRvY3VtZW50KCIgPDwgdGhpcyA8PCAiKTo6c2No
ZWR1bGVTdHlsZVJlY2FsYzogbm90aWZ5IHRoZSBwZW5kaW5nIHN5bnRoZXRpYyBjbGljayBoYW5k
bGVyLiIpOwotICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCi0gICAg
ICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkub2JzZXJ2ZWRDb250ZW50Q2hhbmdl
KCpmcmFtZSgpKTsKKyAgICAgICAgICAgIHBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkub2JzZXJ2
ZWRDb250ZW50Q2hhbmdlKCpmcmFtZSgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IExPR19XSVRIX1NUUkVBTShDb250ZW50T2JzZXJ2YXRpb24sIHN0cmVhbSA8PCAiRG9jdW1lbnQo
IiA8PCB0aGlzIDw8ICIpOjpzY2hlZHVsZVN0eWxlUmVjYWxjOiBjYW4ndCBkZWNpZGVkIGl0IHll
dC4iKTsKICAgICAgICAgfQpAQCAtMjY1MSwxMyArMjY1NywxMyBAQCBib29sIERvY3VtZW50Ojpz
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdAogdm9pZCBE
b2N1bWVudDo6cGxhdGZvcm1TdXNwZW5kT3JTdG9wQWN0aXZlRE9NT2JqZWN0cygpCiB7CiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoV2ViVGhyZWFkQ291bnRPZk9ic2VydmVkRE9N
VGltZXJzKCkgPiAwKSB7Ci0gICAgICAgIExPR19XSVRIX1NUUkVBTShDb250ZW50T2JzZXJ2YXRp
b24sIHN0cmVhbSA8PCAiRG9jdW1lbnQ6OnBsYXRmb3JtU3VzcGVuZE9yU3RvcEFjdGl2ZURPTU9i
amVjdHM6IHJlbW92ZSByZWdpc3RlcmVkIHRpbWVycy4iKTsKLSAgICAgICAgaWYgKGF1dG8qIGZy
YW1lID0gdGhpcy0+ZnJhbWUoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFt
ZS0+cGFnZSgpKQotICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmNsZWFy
Q29udGVudENoYW5nZU9ic2VydmVycygqZnJhbWUpOwotICAgICAgICB9Ci0gICAgfQorICAgIGlm
ICghcGFnZSgpIHx8ICFmcmFtZSgpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byYgcGFnZSA9
ICp0aGlzLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlLmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpLmNv
dW50T2ZPYnNlcnZlZERPTVRpbWVycygpKQorICAgICAgICByZXR1cm47CisgICAgTE9HX1dJVEhf
U1RSRUFNKENvbnRlbnRPYnNlcnZhdGlvbiwgc3RyZWFtIDw8ICJEb2N1bWVudDo6cGxhdGZvcm1T
dXNwZW5kT3JTdG9wQWN0aXZlRE9NT2JqZWN0czogcmVtb3ZlIHJlZ2lzdGVyZWQgdGltZXJzLiIp
OworICAgIHBhZ2UuY2hyb21lKCkuY2xpZW50KCkuY2xlYXJDb250ZW50Q2hhbmdlT2JzZXJ2ZXJz
KCpmcmFtZSgpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAppbmRleCA3NjZiN2UxZWIyNTFjNjM0NDhmZmYwYzUyZjU5ZmQxZGQ5MTkyZmVkLi4yYzQzYTE5
ZDc4NDY3YjhlZTQ4YjVkYzhlOGZmYTRjYzUxZThmMjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKQEAgLTE0NSw3ICsxNDUsNiBAQAogI2luY2x1ZGUgIkRvY3VtZW50VHlw
ZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLmgiCi0jaW5jbHVkZSAiV0tDb250ZW50T2JzZXJ2YXRpb24uaCIKICNlbmRp
ZgogCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9H
X0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBGcmFtZUxvYWRl
cjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCmlu
ZGV4IGU5OGY1ZjI1ZmJiNTNhNDA5NjM0MjM4M2M0NzJhOWEyZmI3OGUxN2IuLjM0NDM3OWExOWEx
M2I2OTQ5Njc4NjkxMDdlNjlhZjA4NjhmZjcyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3Bw
CkBAIC00NCw5ICs0NCw4IEBACiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJD
aHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJDb250ZW50Q2hh
bmdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIldLQ29udGVudE9i
c2VydmF0aW9uLmgiCi0jaW5jbHVkZSAiV0tDb250ZW50T2JzZXJ2YXRpb25JbnRlcm5hbC5oIgog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTIxOSwxNyArMjE4LDYgQEAgaW50IERP
TVRpbWVyOjppbnN0YWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHN0ZDo6dW5p
cXVlX3B0cjxTY2hlZHVsZWQKICAgICAvLyBUaGlzIHJlZmVyZW5jZSB3aWxsIGJlIHJlbGVhc2Vk
IGF1dG9tYXRpY2FsbHkgd2hlbiBhIG9uZS1zaG90IHRpbWVyIGZpcmVzLCB3aGVuIHRoZSBjb250
ZXh0CiAgICAgLy8gaXMgZGVzdHJveWVkLCBvciBpZiBleHBsaWNpdGx5IGNhbmNlbGxlZCBieSBy
ZW1vdmVCeUlkLiAKICAgICBET01UaW1lciogdGltZXIgPSBuZXcgRE9NVGltZXIoY29udGV4dCwg
V1RGTW92ZShhY3Rpb24pLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKLSNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotICAgIGlmIChXS0lzT2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5nKCkgJiYgaXM8
RG9jdW1lbnQ+KGNvbnRleHQpKSB7Ci0gICAgICAgIGJvb2wgZGlkRGVmZXJUaW1lb3V0ID0gY29u
dGV4dC5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCk7Ci0gICAgICAgIGlmICghZGlkRGVm
ZXJUaW1lb3V0ICYmIHRpbWVvdXQgPD0gMjUwX21zICYmIHNpbmdsZVNob3QpIHsKLSAgICAgICAg
ICAgIFdLU2V0T2JzZXJ2ZWRDb250ZW50Q2hhbmdlKFdLQ29udGVudEluZGV0ZXJtaW5hdGVDaGFu
Z2UpOwotICAgICAgICAgICAgV2ViVGhyZWFkQWRkT2JzZXJ2ZWRET01UaW1lcih0aW1lcik7Ci0g
ICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oQ29udGVudE9ic2VydmF0aW9uLCBzdHJlYW0gPDwg
IkRPTVRpbWVyOjppbnN0YWxsOiByZWdpc3RlZCB0aGlzIHRpbWVyOiAoIiA8PCB0aW1lciA8PCAi
KSBhbmQgb2JzZXJ2ZSB3aGVuIGl0IGZpcmVzLiIpOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlm
Ci0KICAgICB0aW1lci0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRJbnN0YWxsVGltZXIoY29udGV4dCwgdGltZXItPm1fdGltZW91dElkLCB0aW1l
b3V0LCBzaW5nbGVTaG90KTsKIApAQCAtMjM3LDYgKzIyNSwyNSBAQCBpbnQgRE9NVGltZXI6Omlu
c3RhbGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPFNj
aGVkdWxlZAogICAgIGlmIChOZXN0ZWRUaW1lcnNNYXAqIG5lc3RlZFRpbWVycyA9IE5lc3RlZFRp
bWVyc01hcDo6aW5zdGFuY2VGb3JDb250ZXh0KGNvbnRleHQpKQogICAgICAgICBuZXN0ZWRUaW1l
cnMtPmFkZCh0aW1lci0+bV90aW1lb3V0SWQsICp0aW1lcik7CiAKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgIGF1dG8gc3RhcnRPYnNlcnZpbmdUaGlzVGltZXJJZk5lZWRlZCA9IFsmXSB7
CisgICAgICAgIGlmICghaXM8RG9jdW1lbnQ+KGNvbnRleHQpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBpZiAoY29udGV4dC5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICh0aW1lb3V0ID4gMjUwX21zIHx8ICFzaW5n
bGVTaG90KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBhdXRvJiBjb250ZW50Q2hhbmdl
T2JzZXJ2ZXIgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkucGFnZSgpLT5jb250ZW50Q2hh
bmdlT2JzZXJ2ZXIoKTsKKyAgICAgICAgaWYgKCFjb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaXNPYnNl
cnZpbmdET01UaW1lclNjaGVkdWxpbmcoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIuc2V0T2JzZXJ2ZWRDb250ZW50Q2hhbmdlKFdLQ29udGVu
dEluZGV0ZXJtaW5hdGVDaGFuZ2UpOworICAgICAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIuYWRk
T2JzZXJ2ZWRET01UaW1lcigqdGltZXIpOworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oQ29udGVu
dE9ic2VydmF0aW9uLCBzdHJlYW0gPDwgIkRPTVRpbWVyOjppbnN0YWxsOiByZWdpc3RlZCB0aGlz
IHRpbWVyOiAoIiA8PCB0aW1lciA8PCAiKSBhbmQgb2JzZXJ2ZSB3aGVuIGl0IGZpcmVzLiIpOwor
ICAgIH07CisgICAgCisgICAgc3RhcnRPYnNlcnZpbmdUaGlzVGltZXJJZk5lZWRlZCgpOworI2Vu
ZGlmCiAgICAgcmV0dXJuIHRpbWVyLT5tX3RpbWVvdXRJZDsKIH0KIApAQCAtMzQyLDE4ICszNDks
MjMgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogICAgIGNvbnRleHQucmVtb3ZlVGltZW91dCht
X3RpbWVvdXRJZCk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGF1dG8gaXNPYnZl
cnNpbmdMYXN0VGltZXIgPSBmYWxzZTsKKyAgICBhdXRvIGlzT2JzZXJ2aW5nTGFzdFRpbWVyID0g
ZmFsc2U7CiAgICAgYXV0byBzaG91bGRCZWdpbk9ic2VydmluZ0NoYW5nZXMgPSBmYWxzZTsKLSAg
ICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKSB7Ci0gICAgICAgIGlzT2J2ZXJzaW5nTGFzdFRp
bWVyID0gV2ViVGhyZWFkQ291bnRPZk9ic2VydmVkRE9NVGltZXJzKCkgPT0gMTsKLSAgICAgICAg
c2hvdWxkQmVnaW5PYnNlcnZpbmdDaGFuZ2VzID0gV2ViVGhyZWFkQ29udGFpbnNPYnNlcnZlZERP
TVRpbWVyKHRoaXMpOworICAgIFBhZ2UqIHBhZ2UgPSBudWxscHRyOworICAgIGlmIChpczxEb2N1
bWVudD4oY29udGV4dCkgJiYgZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnBhZ2UoKSkgewor
ICAgICAgICBwYWdlID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnBhZ2UoKTsKKyAgICAg
ICAgYXV0byYgY29udGVudENoYW5nZU9ic2VydmVyID0gcGFnZS0+Y29udGVudENoYW5nZU9ic2Vy
dmVyKCk7CisgICAgICAgIGlzT2JzZXJ2aW5nTGFzdFRpbWVyID0gY29udGVudENoYW5nZU9ic2Vy
dmVyLmNvdW50T2ZPYnNlcnZlZERPTVRpbWVycygpID09IDE7CisgICAgICAgIHNob3VsZEJlZ2lu
T2JzZXJ2aW5nQ2hhbmdlcyA9IGNvbnRlbnRDaGFuZ2VPYnNlcnZlci5jb250YWluc09ic2VydmVk
RE9NVGltZXIoKnRoaXMpOwogICAgIH0KIAogICAgIGlmIChzaG91bGRCZWdpbk9ic2VydmluZ0No
YW5nZXMpIHsKKyAgICAgICAgQVNTRVJUKHBhZ2UpOwogICAgICAgICBMT0dfV0lUSF9TVFJFQU0o
Q29udGVudE9ic2VydmF0aW9uLCBzdHJlYW0gPDwgIkRPTVRpbWVyOjpmaXJlZDogc3RhcnQgb2Jz
ZXJ2aW5nICgiIDw8IHRoaXMgPDwgIikgdGltZXIgY2FsbGJhY2suIik7Ci0gICAgICAgIFdLU3Rh
cnRPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygpOwotICAgICAgICBXS1N0YXJ0T2JzZXJ2aW5nU3R5
bGVSZWNhbGNTY2hlZHVsaW5nKCk7Ci0gICAgICAgIFdlYlRocmVhZFJlbW92ZU9ic2VydmVkRE9N
VGltZXIodGhpcyk7CisgICAgICAgIGF1dG8mIGNvbnRlbnRDaGFuZ2VPYnNlcnZlciA9IHBhZ2Ut
PmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpOworICAgICAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIu
c3RhcnRPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygpOworICAgICAgICBjb250ZW50Q2hhbmdlT2Jz
ZXJ2ZXIuc3RhcnRPYnNlcnZpbmdTdHlsZVJlY2FsY1NjaGVkdWxpbmcoKTsKKyAgICAgICAgY29u
dGVudENoYW5nZU9ic2VydmVyLnJlbW92ZU9ic2VydmVkRE9NVGltZXIoKnRoaXMpOwogICAgIH0K
ICNlbmRpZgogCkBAIC0zNjYsMjIgKzM3OCwyMiBAQCB2b2lkIERPTVRpbWVyOjpmaXJlZCgpCiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChzaG91bGRCZWdpbk9ic2VydmluZ0No
YW5nZXMpIHsKKyAgICAgICAgQVNTRVJUKHBhZ2UpOwogICAgICAgICBMT0dfV0lUSF9TVFJFQU0o
Q29udGVudE9ic2VydmF0aW9uLCBzdHJlYW0gPDwgIkRPTVRpbWVyOjpmaXJlZDogc3RvcCBvYnNl
cnZpbmcgKCIgPDwgdGhpcyA8PCAiKSB0aW1lciBjYWxsYmFjay4iKTsKLSAgICAgICAgV0tTdG9w
T2JzZXJ2aW5nU3R5bGVSZWNhbGNTY2hlZHVsaW5nKCk7Ci0gICAgICAgIFdLU3RvcE9ic2Vydmlu
Z0NvbnRlbnRDaGFuZ2VzKCk7CisgICAgICAgIGF1dG8mIGNvbnRlbnRDaGFuZ2VPYnNlcnZlciA9
IHBhZ2UtPmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpOworICAgICAgICBjb250ZW50Q2hhbmdlT2Jz
ZXJ2ZXIuc3RvcE9ic2VydmluZ1N0eWxlUmVjYWxjU2NoZWR1bGluZygpOworICAgICAgICBjb250
ZW50Q2hhbmdlT2JzZXJ2ZXIuc3RvcE9ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKCk7CiAKLSAgICAg
ICAgYXV0byBvYnNlcnZlZENvbnRlbnRDaGFuZ2UgPSBXS09ic2VydmVkQ29udGVudENoYW5nZSgp
OworICAgICAgICBhdXRvIG9ic2VydmVkQ29udGVudENoYW5nZSA9IGNvbnRlbnRDaGFuZ2VPYnNl
cnZlci5vYnNlcnZlZENvbnRlbnRDaGFuZ2UoKTsKICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHRp
bWVyIGNhbGxiYWNrIHRyaWdnZXJlZCBlaXRoZXIgYSBzeW5jIG9yIGFzeW5jIHN0eWxlIHVwZGF0
ZS4KLSAgICAgICAgYXV0byBpbkRldGVybWluZWRTdGF0ZSA9IG9ic2VydmVkQ29udGVudENoYW5n
ZSA9PSBXS0NvbnRlbnRWaXNpYmlsaXR5Q2hhbmdlIHx8IChpc09idmVyc2luZ0xhc3RUaW1lciAm
JiBvYnNlcnZlZENvbnRlbnRDaGFuZ2UgPT0gV0tDb250ZW50Tm9DaGFuZ2UpOyAgCisgICAgICAg
IGF1dG8gaW5EZXRlcm1pbmVkU3RhdGUgPSBvYnNlcnZlZENvbnRlbnRDaGFuZ2UgPT0gV0tDb250
ZW50VmlzaWJpbGl0eUNoYW5nZSB8fCAoaXNPYnNlcnZpbmdMYXN0VGltZXIgJiYgb2JzZXJ2ZWRD
b250ZW50Q2hhbmdlID09IFdLQ29udGVudE5vQ2hhbmdlKTsgIAogICAgICAgICBpZiAoaW5EZXRl
cm1pbmVkU3RhdGUpIHsKICAgICAgICAgICAgIExPRyhDb250ZW50T2JzZXJ2YXRpb24sICJET01U
aW1lcjo6ZmlyZWQ6IGluIGRldGVybWluZWQgc3RhdGUuIik7Ci0gICAgICAgICAgICBhdXRvJiBk
b2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KTsKLSAgICAgICAgICAgIGlmIChh
dXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpKQotICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9t
ZSgpLmNsaWVudCgpLm9ic2VydmVkQ29udGVudENoYW5nZSgqZG9jdW1lbnQuZnJhbWUoKSk7Cisg
ICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5vYnNlcnZlZENvbnRlbnRDaGFuZ2Uo
KmRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5mcmFtZSgpKTsKICAgICAgICAgfSBlbHNlIGlm
IChvYnNlcnZlZENvbnRlbnRDaGFuZ2UgPT0gV0tDb250ZW50SW5kZXRlcm1pbmF0ZUNoYW5nZSkg
ewogICAgICAgICAgICAgLy8gQW4gYXN5bmMgc3R5bGUgcmVjYWxjIGhhcyBiZWVuIHNjaGVkdWxl
ZC4gTGV0J3Mgb2JzZXJ2ZSBpdC4KICAgICAgICAgICAgIExPRyhDb250ZW50T2JzZXJ2YXRpb24s
ICJET01UaW1lcjo6ZmlyZWQ6IHdhaXQgdW50aWwgbmV4dCBzdHlsZSByZWNhbGMgZmlyZXMuIik7
Ci0gICAgICAgICAgICBXS1NldFNob3VsZE9ic2VydmVOZXh0U3R5bGVSZWNhbGModHJ1ZSk7Cisg
ICAgICAgICAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIuc2V0U2hvdWxkT2JzZXJ2ZU5leHRTdHls
ZVJlY2FsYyh0cnVlKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCmluZGV4IDhmZDQxMTkxNTE2NGVlMzc2MDRhYTRlMzQ5MmNiOWZmMjg5Y2I1NTAu
LjY3ZGI2ZjZlOTEwODIxNGRmNDliYTE2NTAxZmI2OGIzYTZiNDkzY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKQEAgLTEzOSwxMSArMTM5LDkgQEAKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRlICJXS0NvbnRlbnRPYnNlcnZhdGlvbi5oIgotI2luY2x1
ZGUgIldLQ29udGVudE9ic2VydmF0aW9uSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJDb250ZW50Q2hh
bmdlT2JzZXJ2ZXIuaCIKICNlbmRpZgogCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKQEAgLTE2ODQsMjEgKzE2ODIsMjYgQEAgRXhjZXB0aW9uT3I8
aW50PiBET01XaW5kb3c6OnNldFRpbWVvdXQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBzdGQ6OnVu
aXF1ZV9wdHI8U2MKIHZvaWQgRE9NV2luZG93OjpjbGVhclRpbWVvdXQoaW50IHRpbWVvdXRJZCkK
IHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmIChhdXRvKiBmcmFtZSA9IHRoaXMt
PmZyYW1lKCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50
KCk7Ci0gICAgICAgIGlmICh0aW1lb3V0SWQgPiAwICYmIGRvY3VtZW50KSB7Ci0gICAgICAgICAg
ICBET01UaW1lciogdGltZXIgPSBkb2N1bWVudC0+ZmluZFRpbWVvdXQodGltZW91dElkKTsKLSAg
ICAgICAgICAgIGlmICh0aW1lciAmJiBXZWJUaHJlYWRDb250YWluc09ic2VydmVkRE9NVGltZXIo
dGltZXIpKSB7Ci0gICAgICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKENvbnRlbnRPYnNlcnZh
dGlvbiwgc3RyZWFtIDw8ICJET01XaW5kb3c6OmNsZWFyVGltZW91dDogcmVtb3ZlIHJlZ2lzdGVy
ZWQgdGltZXIgKCIgPDwgdGltZXIgPDwgIikiKTsKLSAgICAgICAgICAgICAgICBXZWJUaHJlYWRS
ZW1vdmVPYnNlcnZlZERPTVRpbWVyKHRpbWVyKTsKLQotICAgICAgICAgICAgICAgIGlmICghV2Vi
VGhyZWFkQ291bnRPZk9ic2VydmVkRE9NVGltZXJzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
cGFnZS0+Y2hyb21lKCkuY2xpZW50KCkub2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCpmcmFtZSk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQorICAgIGF1
dG8gaGFuZGxlT2JzZXJ2ZWRUaW1lckNhbmNlbElmTmVlZGVkID0gWyZdIHsKKyAgICAgICAgaWYg
KCFmcmFtZSgpIHx8ICFmcmFtZSgpLT5kb2N1bWVudCgpIHx8ICFmcmFtZSgpLT5kb2N1bWVudCgp
LT5wYWdlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICh0aW1lb3V0SWQgPD0g
MCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUo
KS0+ZG9jdW1lbnQoKTsgCisgICAgICAgIGF1dG8qIHRpbWVyID0gZG9jdW1lbnQuZmluZFRpbWVv
dXQodGltZW91dElkKTsKKyAgICAgICAgaWYgKCF0aW1lcikKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgYXV0byYgcGFnZSA9ICpkb2N1bWVudC5wYWdlKCk7CisgICAgICAgIGF1dG8mIGNv
bnRlbnRDaGFuZ2VPYnNlcnZlciA9IHBhZ2UuY29udGVudENoYW5nZU9ic2VydmVyKCk7CisgICAg
ICAgIGlmICghY29udGVudENoYW5nZU9ic2VydmVyLmNvbnRhaW5zT2JzZXJ2ZWRET01UaW1lcigq
dGltZXIpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oQ29u
dGVudE9ic2VydmF0aW9uLCBzdHJlYW0gPDwgIkRPTVdpbmRvdzo6Y2xlYXJUaW1lb3V0OiByZW1v
dmUgcmVnaXN0ZXJlZCB0aW1lciAoIiA8PCB0aW1lciA8PCAiKSIpOworICAgICAgICBjb250ZW50
Q2hhbmdlT2JzZXJ2ZXIucmVtb3ZlT2JzZXJ2ZWRET01UaW1lcigqdGltZXIpOworICAgICAgICBp
ZiAoY29udGVudENoYW5nZU9ic2VydmVyLmNvdW50T2ZPYnNlcnZlZERPTVRpbWVycygpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBwYWdlLmNocm9tZSgpLmNsaWVudCgpLm9ic2VydmVk
Q29udGVudENoYW5nZSgqZnJhbWUoKSk7CisgICAgfTsKKyAgICBoYW5kbGVPYnNlcnZlZFRpbWVy
Q2FuY2VsSWZOZWVkZWQoKTsKICNlbmRpZgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcAppbmRleCBmNjg5ZGI3MWQwYzZiYjZmOTg2NDkxN2UwYjZmODFhY2YwNjIz
ZTVlLi5kOGFlYjJmOTg3NTdmODMwYTdkMjZkMzAyNGUyNWQyZTBmODQ2MTk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRlICJXS0NvbnRl
bnRPYnNlcnZhdGlvbi5oIgorI2luY2x1ZGUgIkNvbnRlbnRDaGFuZ2VPYnNlcnZlci5oIgogI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgzOCw3ICs4MzgsNyBAQCB2b2lkIEZyYW1l
Ojp3aWxsRGV0YWNoUGFnZSgpCiAgICAgICAgIHBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3Io
KS0+d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSgqbV92aWV3KTsKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgaWYgKFdlYlRocmVhZENvdW50T2ZPYnNlcnZlZERPTVRpbWVycygpID4g
MCAmJiBtX3BhZ2UpIHsKKyAgICBpZiAocGFnZSgpICYmIHBhZ2UoKS0+Y29udGVudENoYW5nZU9i
c2VydmVyKCkuY291bnRPZk9ic2VydmVkRE9NVGltZXJzKCkpIHsKICAgICAgICAgTE9HKENvbnRl
bnRPYnNlcnZhdGlvbiwgIkZyYW1lOjp3aWxsRGV0YWNoUGFnZTogcmVtb3ZlIHJlZ2lzdGVyZWQg
dGltZXJzLiIpOwogICAgICAgICBtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmNsZWFyQ29udGVu
dENoYW5nZU9ic2VydmVycygqdGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA5NDY0YThk
ZGFmMDdhNTQzZjBiODY4YWIwODM2NDljYWZmNzIwNGI3Li40YjNkOWY5NjFlZmZkOTNiNjNkMmUz
MTg3YWRhZTA0N2Y0Y2NlZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNjYsNiArNjYsMTAgQEAKICNp
bmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIgogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorI2luY2x1ZGUgIkNvbnRlbnRDaGFuZ2VPYnNlcnZlci5oIgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRGVidWdnZXI7CiB9CkBAIC0yNTAsNiArMjU0
LDkgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBQb2lu
dGVyTG9ja0NvbnRyb2xsZXImIHBvaW50ZXJMb2NrQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJu
ICptX3BvaW50ZXJMb2NrQ29udHJvbGxlcjsgfQorI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyAgICBDb250ZW50Q2hhbmdlT2JzZXJ2ZXImIGNvbnRlbnRDaGFuZ2VPYnNlcnZlcigp
IHsgcmV0dXJuIG1fY29udGVudENoYW5nZU9ic2VydmVyOyB9CiAjZW5kaWYKICAgICBMaWJXZWJS
VENQcm92aWRlciYgbGliV2ViUlRDUHJvdmlkZXIoKSB7IHJldHVybiBtX2xpYldlYlJUQ1Byb3Zp
ZGVyLmdldCgpOyB9CiAgICAgUlRDQ29udHJvbGxlciYgcnRjQ29udHJvbGxlcigpIHsgcmV0dXJu
IG1fcnRjQ29udHJvbGxlcjsgfQpAQCAtODEwLDYgKzgxNyw3IEBAIHByaXZhdGU6CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9lbmNsb3NlZEluU2Nyb2xsYWJsZUFuY2Vz
dG9yVmlldyB7IGZhbHNlIH07CisgICAgQ29udGVudENoYW5nZU9ic2VydmVyIG1fY29udGVudENo
YW5nZU9ic2VydmVyOwogI2VuZGlmCiAgICAgCiAgICAgYm9vbCBtX3VzZVN5c3RlbUFwcGVhcmFu
Y2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVu
dENoYW5nZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdl
T2JzZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTg5ZTk2ODkyY2Y0YjUzZmU2Y2ZiNjgzOWEyNjc3NDk0
ZTM2ZmNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVu
dENoYW5nZU9ic2VydmVyLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2luY2x1ZGUgIldLQ29udGVudE9i
c2VydmF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NVGltZXI7CisK
K2NsYXNzIENvbnRlbnRDaGFuZ2VPYnNlcnZlciB7CitwdWJsaWM6CisgICAgQ29udGVudENoYW5n
ZU9ic2VydmVyKCkgPSBkZWZhdWx0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydE9i
c2VydmluZ0NvbnRlbnRDaGFuZ2VzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wT2Jz
ZXJ2aW5nQ29udGVudENoYW5nZXMoKTsKKyAgICBib29sIGlzT2JzZXJ2aW5nQ29udGVudENoYW5n
ZXMoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRPYnNlcnZpbmdET01UaW1lclNj
aGVkdWxpbmcoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BPYnNlcnZpbmdET01UaW1l
clNjaGVkdWxpbmcoKTsKKyAgICBib29sIGlzT2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5nKCk7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0T2JzZXJ2aW5nU3R5bGVSZWNhbGNTY2hl
ZHVsaW5nKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wT2JzZXJ2aW5nU3R5bGVSZWNh
bGNTY2hlZHVsaW5nKCk7CisgICAgYm9vbCBpc09ic2VydmluZ1N0eWxlUmVjYWxjU2NoZWR1bGlu
ZygpOworCisgICAgdm9pZCBzZXRTaG91bGRPYnNlcnZlTmV4dFN0eWxlUmVjYWxjKGJvb2wpOwor
ICAgIGJvb2wgc2hvdWxkT2JzZXJ2ZU5leHRTdHlsZVJlY2FsYygpOworCisgICAgdm9pZCBzZXRP
YnNlcnZlZENvbnRlbnRDaGFuZ2UoV0tDb250ZW50Q2hhbmdlKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBXS0NvbnRlbnRDaGFuZ2Ugb2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCk7CisKKyAgICB2b2lkIGFk
ZE9ic2VydmVkRE9NVGltZXIoRE9NVGltZXImKTsKKyAgICB2b2lkIHJlbW92ZU9ic2VydmVkRE9N
VGltZXIoRE9NVGltZXImKTsKKyAgICBib29sIGNvbnRhaW5zT2JzZXJ2ZWRET01UaW1lcihET01U
aW1lciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGNvdW50T2ZPYnNlcnZlZERPTVRp
bWVycygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJPYnNlcnZlZERPTVRpbWVycygp
OworfTsKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9D
b250ZW50Q2hhbmdlT2JzZXJ2ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50
Q2hhbmdlT2JzZXJ2ZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDliYjM0Y2M3ZjcxNjc5YzY3NTI0YmFjZTU1
ZmQ4MzA3N2Q0MzlmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9z
L0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5tbQpAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkNvbnRlbnRDaGFuZ2VPYnNlcnZlci5oIgor
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgIkRPTVRpbWVyLmgiCisjaW1wb3J0
ICJXS0NvbnRlbnRPYnNlcnZhdGlvbkludGVybmFsLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kwordm9pZCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5nQ29udGVudENoYW5n
ZXMoKQoreworICAgIFdLU3RhcnRPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygpOworfQorCit2b2lk
IENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6c3RvcE9ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKCkKK3sK
KyAgICBXS1N0b3BPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygpOyAgIAorfQorCitib29sIENvbnRl
bnRDaGFuZ2VPYnNlcnZlcjo6aXNPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygpCit7CisgICAgcmV0
dXJuIFdLT2JzZXJ2aW5nQ29udGVudENoYW5nZXMoKTsgICAKK30KKwordm9pZCBDb250ZW50Q2hh
bmdlT2JzZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5nKCkKK3sKKyAgICBX
S1N0YXJ0T2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5nKCk7Cit9CisKK3ZvaWQgQ29udGVudENo
YW5nZU9ic2VydmVyOjpzdG9wT2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5nKCkKK3sKKyAgICBX
S1N0b3BPYnNlcnZpbmdET01UaW1lclNjaGVkdWxpbmcoKTsKK30KKworYm9vbCBDb250ZW50Q2hh
bmdlT2JzZXJ2ZXI6OmlzT2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5nKCkKK3sKKyAgICByZXR1
cm4gV0tJc09ic2VydmluZ0RPTVRpbWVyU2NoZWR1bGluZygpOworfQorCit2b2lkIENvbnRlbnRD
aGFuZ2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZpbmdTdHlsZVJlY2FsY1NjaGVkdWxpbmcoKQorewor
ICAgIFdLU3RhcnRPYnNlcnZpbmdTdHlsZVJlY2FsY1NjaGVkdWxpbmcoKTsKK30KKwordm9pZCBD
b250ZW50Q2hhbmdlT2JzZXJ2ZXI6OnN0b3BPYnNlcnZpbmdTdHlsZVJlY2FsY1NjaGVkdWxpbmco
KQoreworICAgIFdLU3RvcE9ic2VydmluZ1N0eWxlUmVjYWxjU2NoZWR1bGluZygpOworfQorCiti
b29sIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6aXNPYnNlcnZpbmdTdHlsZVJlY2FsY1NjaGVkdWxp
bmcoKQoreworICAgIHJldHVybiBXS0lzT2JzZXJ2aW5nU3R5bGVSZWNhbGNTY2hlZHVsaW5nKCk7
Cit9CisKK3ZvaWQgQ29udGVudENoYW5nZU9ic2VydmVyOjpzZXRTaG91bGRPYnNlcnZlTmV4dFN0
eWxlUmVjYWxjKGJvb2wgb2JzZXJ2ZSkKK3sKKyAgICBXS1NldFNob3VsZE9ic2VydmVOZXh0U3R5
bGVSZWNhbGMob2JzZXJ2ZSk7Cit9CisKK2Jvb2wgQ29udGVudENoYW5nZU9ic2VydmVyOjpzaG91
bGRPYnNlcnZlTmV4dFN0eWxlUmVjYWxjKCkKK3sKKyAgICByZXR1cm4gV0tTaG91bGRPYnNlcnZl
TmV4dFN0eWxlUmVjYWxjKCk7Cit9CisKK1dLQ29udGVudENoYW5nZSBDb250ZW50Q2hhbmdlT2Jz
ZXJ2ZXI6Om9ic2VydmVkQ29udGVudENoYW5nZSgpCit7CisgICAgcmV0dXJuIFdLT2JzZXJ2ZWRD
b250ZW50Q2hhbmdlKCk7Cit9CisKK3Vuc2lnbmVkIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6Y291
bnRPZk9ic2VydmVkRE9NVGltZXJzKCkKK3sKKyAgICByZXR1cm4gV2ViVGhyZWFkQ291bnRPZk9i
c2VydmVkRE9NVGltZXJzKCk7Cit9CisKK3ZvaWQgQ29udGVudENoYW5nZU9ic2VydmVyOjpjbGVh
ck9ic2VydmVkRE9NVGltZXJzKCkKK3sKKyAgICBXZWJUaHJlYWRDbGVhck9ic2VydmVkRE9NVGlt
ZXJzKCk7Cit9CisKK3ZvaWQgQ29udGVudENoYW5nZU9ic2VydmVyOjpzZXRPYnNlcnZlZENvbnRl
bnRDaGFuZ2UoV0tDb250ZW50Q2hhbmdlIGNoYW5nZSkKK3sKKyAgICBXS1NldE9ic2VydmVkQ29u
dGVudENoYW5nZShjaGFuZ2UpOworfQorCitib29sIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6Y29u
dGFpbnNPYnNlcnZlZERPTVRpbWVyKERPTVRpbWVyJiB0aW1lcikKK3sKKyAgICByZXR1cm4gV2Vi
VGhyZWFkQ29udGFpbnNPYnNlcnZlZERPTVRpbWVyKCZ0aW1lcik7Cit9CisKK3ZvaWQgQ29udGVu
dENoYW5nZU9ic2VydmVyOjphZGRPYnNlcnZlZERPTVRpbWVyKERPTVRpbWVyJiB0aW1lcikKK3sK
KyAgICBXZWJUaHJlYWRBZGRPYnNlcnZlZERPTVRpbWVyKCZ0aW1lcik7Cit9CisKK3ZvaWQgQ29u
dGVudENoYW5nZU9ic2VydmVyOjpyZW1vdmVPYnNlcnZlZERPTVRpbWVyKERPTVRpbWVyJiB0aW1l
cikKK3sKKyAgICBXZWJUaHJlYWRSZW1vdmVPYnNlcnZlZERPTVRpbWVyKCZ0aW1lcik7Cit9CisK
K30KKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2lvcy9FdmVudEhhbmRsZXJJT1MubW0KaW5kZXggZWNjZmE2M2Q5ZjFhMTcwZDIwOTMwNzFhMjZh
NmM4YzJmZTRjNDU1OC4uMDhlZDY0NzcxNjM0MzRhMWRjYjRkMGExMWVjNTY4ZjM5MWQ3NzBlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQpAQCAtMzIsNiAr
MzIsNyBAQAogI2ltcG9ydCAiQXV0b3Njcm9sbENvbnRyb2xsZXIuaCIKICNpbXBvcnQgIkNocm9t
ZS5oIgogI2ltcG9ydCAiQ2hyb21lQ2xpZW50LmgiCisjaW1wb3J0ICJDb250ZW50Q2hhbmdlT2Jz
ZXJ2ZXIuaCIKICNpbXBvcnQgIkRhdGFUcmFuc2Zlci5oIgogI2ltcG9ydCAiRHJhZ1N0YXRlLmgi
CiAjaW1wb3J0ICJGb2N1c0NvbnRyb2xsZXIuaCIKQEAgLTQ5MCwxOCArNDkxLDIwIEBAIHZvaWQg
RXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKFdlYkV2ZW50ICpldmVudCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIGF1dG8mIGRvY3VtZW50
ID0gKm1fZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBkb2N1bWVudC51cGRhdGVTdHlsZUlmTmVlZGVk
KCk7CiAKLSAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAg
ICBhdXRvJiBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBkb2N1bWVudC5wYWdlKCktPmNvbnRlbnRD
aGFuZ2VPYnNlcnZlcigpOworICAgIGNvbnRlbnRDaGFuZ2VPYnNlcnZlci5zdGFydE9ic2Vydmlu
Z0NvbnRlbnRDaGFuZ2VzKCk7CisgICAgY29udGVudENoYW5nZU9ic2VydmVyLnN0YXJ0T2JzZXJ2
aW5nRE9NVGltZXJTY2hlZHVsaW5nKCk7CiAKLSAgICBXS1N0YXJ0T2JzZXJ2aW5nQ29udGVudENo
YW5nZXMoKTsKLSAgICBXS1N0YXJ0T2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5nKCk7CiAgICAg
Q3VycmVudEV2ZW50U2NvcGUgc2NvcGUoZXZlbnQpOwogICAgIGV2ZW50Lndhc0hhbmRsZWQgPSBt
b3VzZU1vdmVkKGN1cnJlbnRQbGF0Zm9ybU1vdXNlRXZlbnQoKSk7Ci0gICAgCi0gICAgLy8gRklY
TUU6IFdoeSBpcyB0aGlzIGhlcmU/Ci0gICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVTdHls
ZUlmTmVlZGVkKCk7Ci0gICAgV0tTdG9wT2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5nKCk7Ci0g
ICAgV0tTdG9wT2JzZXJ2aW5nQ29udGVudENoYW5nZXMoKTsKKworICAgIC8vIFJ1biBzdHlsZSBy
ZWNhbGMgdG8gYmUgYWJsZSB0byBjYXB0dXJlIGNvbnRlbnQgY2hhbmdlcyBhcyB0aGUgcmVzdWx0
IG9mIHRoZSBtb3VzZSBtb3ZlIGV2ZW50LgorICAgIGRvY3VtZW50LnVwZGF0ZVN0eWxlSWZOZWVk
ZWQoKTsKKyAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIuc3RvcE9ic2VydmluZ0RPTVRpbWVyU2No
ZWR1bGluZygpOworICAgIGNvbnRlbnRDaGFuZ2VPYnNlcnZlci5zdG9wT2JzZXJ2aW5nQ29udGVu
dENoYW5nZXMoKTsKIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVy
LmNwcAppbmRleCA2YWM4OGY4ODEzMWU1YjA5OTZkOTgzYWIzNWY0OTZmNTNhZGEzYWM2Li44NTA1
ZjVkNjFjNjVlMzJhYWZhODA4NzQ4NGQzZGZkZjA1MzU2NjM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKQEAg
LTUwLDggKzUwLDcgQEAKICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRlICJXS0NvbnRlbnRPYnNlcnZhdGlvbi5oIgotI2lu
Y2x1ZGUgIldLQ29udGVudE9ic2VydmF0aW9uSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJDb250ZW50
Q2hhbmdlT2JzZXJ2ZXIuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OSwx
MSArNTgsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiBjbGFzcyBDaGVja0ZvclZpc2liaWxpdHlDaGFuZ2UgewogcHVibGljOgotICAgIENoZWNrRm9y
VmlzaWJpbGl0eUNoYW5nZShjb25zdCBFbGVtZW50Jik7CisgICAgQ2hlY2tGb3JWaXNpYmlsaXR5
Q2hhbmdlKGNvbnN0IEVsZW1lbnQmLCBQYWdlKik7CiAgICAgfkNoZWNrRm9yVmlzaWJpbGl0eUNo
YW5nZSgpOwogCiBwcml2YXRlOgogICAgIGNvbnN0IEVsZW1lbnQmIG1fZWxlbWVudDsKKyAgICBQ
YWdlKiBtX3BhZ2UgeyBudWxscHRyIH07CiAgICAgRGlzcGxheVR5cGUgbV9wcmV2aW91c0Rpc3Bs
YXk7CiAgICAgVmlzaWJpbGl0eSBtX3ByZXZpb3VzVmlzaWJpbGl0eTsKICAgICBWaXNpYmlsaXR5
IG1fcHJldmlvdXNJbXBsaWNpdFZpc2liaWxpdHk7CkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBS
ZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlUmVuZGVyZXJTdHlsZShSZW5kZXJFbGVtZW50JiByZW5k
ZXJlciwgUmVuZGVyU3R5bGUKIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUVsZW1lbnRS
ZW5kZXJlcihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZSYgdXBk
YXRlKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgQ2hlY2tGb3JWaXNpYmlsaXR5
Q2hhbmdlIGNoZWNrRm9yVmlzaWJpbGl0eUNoYW5nZShlbGVtZW50KTsKKyAgICBDaGVja0ZvclZp
c2liaWxpdHlDaGFuZ2UgY2hlY2tGb3JWaXNpYmlsaXR5Q2hhbmdlKGVsZW1lbnQsIG1fZG9jdW1l
bnQucGFnZSgpKTsKICNlbmRpZgogCiAgICAgYm9vbCBzaG91bGRUZWFyRG93blJlbmRlcmVycyA9
IHVwZGF0ZS5jaGFuZ2UgPT0gU3R5bGU6OkRldGFjaCAmJiAoZWxlbWVudC5yZW5kZXJlcigpIHx8
IGVsZW1lbnQuaGFzRGlzcGxheUNvbnRlbnRzKCkpOwpAQCAtNjY3LDE3ICs2NjcsMjIgQEAgc3Rh
dGljIFZpc2liaWxpdHkgZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0eShjb25zdCBFbGVtZW50JiBl
bGVtZW50KQogICAgIHJldHVybiBWaXNpYmlsaXR5OjpWaXNpYmxlOwogfQogCi1DaGVja0ZvclZp
c2liaWxpdHlDaGFuZ2U6OkNoZWNrRm9yVmlzaWJpbGl0eUNoYW5nZShjb25zdCBFbGVtZW50JiBl
bGVtZW50KQorQ2hlY2tGb3JWaXNpYmlsaXR5Q2hhbmdlOjpDaGVja0ZvclZpc2liaWxpdHlDaGFu
Z2UoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgUGFnZSogcGFnZSkKICAgICA6IG1fZWxlbWVudChl
bGVtZW50KQorICAgICwgbV9wYWdlKHBhZ2UpCiAgICAgLCBtX3ByZXZpb3VzRGlzcGxheShlbGVt
ZW50LnJlbmRlclN0eWxlKCkgPyBlbGVtZW50LnJlbmRlclN0eWxlKCktPmRpc3BsYXkoKSA6IERp
c3BsYXlUeXBlOjpOb25lKQogICAgICwgbV9wcmV2aW91c1Zpc2liaWxpdHkoZWxlbWVudC5yZW5k
ZXJTdHlsZSgpID8gZWxlbWVudC5yZW5kZXJTdHlsZSgpLT52aXNpYmlsaXR5KCkgOiBWaXNpYmls
aXR5OjpIaWRkZW4pCi0gICAgLCBtX3ByZXZpb3VzSW1wbGljaXRWaXNpYmlsaXR5KFdLT2JzZXJ2
aW5nQ29udGVudENoYW5nZXMoKSAmJiBXS09ic2VydmVkQ29udGVudENoYW5nZSgpICE9IFdLQ29u
dGVudFZpc2liaWxpdHlDaGFuZ2UgPyBlbGVtZW50SW1wbGljaXRWaXNpYmlsaXR5KGVsZW1lbnQp
IDogVmlzaWJpbGl0eTo6VmlzaWJsZSkKKyAgICAsIG1fcHJldmlvdXNJbXBsaWNpdFZpc2liaWxp
dHkocGFnZSAmJiBwYWdlLT5jb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKS5pc09ic2VydmluZ0NvbnRl
bnRDaGFuZ2VzKCkgJiYgcGFnZS0+Y29udGVudENoYW5nZU9ic2VydmVyKCkub2JzZXJ2ZWRDb250
ZW50Q2hhbmdlKCkgIT0gV0tDb250ZW50VmlzaWJpbGl0eUNoYW5nZSA/IGVsZW1lbnRJbXBsaWNp
dFZpc2liaWxpdHkoZWxlbWVudCkgOiBWaXNpYmlsaXR5OjpWaXNpYmxlKQogewogfQogCiBDaGVj
a0ZvclZpc2liaWxpdHlDaGFuZ2U6On5DaGVja0ZvclZpc2liaWxpdHlDaGFuZ2UoKQogewotICAg
IGlmICghV0tPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygpKQorICAgIGlmICghbV9wYWdlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvJiBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBtX3BhZ2Ut
PmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpOworICAgIGlmICghY29udGVudENoYW5nZU9ic2VydmVy
LmlzT2JzZXJ2aW5nQ29udGVudENoYW5nZXMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byogc3R5bGUgPSBtX2VsZW1lbnQucmVuZGVyU3R5bGUoKTsKQEAgLTY5Niw3ICs3MDEsNyBAQCBD
aGVja0ZvclZpc2liaWxpdHlDaGFuZ2U6On5DaGVja0ZvclZpc2liaWxpdHlDaGFuZ2UoKQogICAg
ICAgICByZXR1cm47CiAgICAgaWYgKChtX3ByZXZpb3VzRGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6
Tm9uZSAmJiBzdHlsZS0+ZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpOb25lKSB8fCAobV9wcmV2
aW91c1Zpc2liaWxpdHkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuICYmIHN0eWxlLT52aXNpYmlsaXR5
KCkgIT0gVmlzaWJpbGl0eTo6SGlkZGVuKQogICAgICAgICB8fCAobV9wcmV2aW91c0ltcGxpY2l0
VmlzaWJpbGl0eSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gJiYgZWxlbWVudEltcGxpY2l0VmlzaWJp
bGl0eShtX2VsZW1lbnQpID09IFZpc2liaWxpdHk6OlZpc2libGUpKQotICAgICAgICBXS1NldE9i
c2VydmVkQ29udGVudENoYW5nZShXS0NvbnRlbnRWaXNpYmlsaXR5Q2hhbmdlKTsKKyAgICAgICAg
Y29udGVudENoYW5nZU9ic2VydmVyLnNldE9ic2VydmVkQ29udGVudENoYW5nZShXS0NvbnRlbnRW
aXNpYmlsaXR5Q2hhbmdlKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDUwZjg1YzFhZGZiMWEzMGM1
YzNjYjM5MWU3MDZmMjEzYWFlMGE4YmMuLjYyZjdhNWEzZjM2MDI4YzNmYWJlYWI1MTcxNDAzNmE3
NjIyNjg3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0F1dG9m
aWxsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0F1dG9maWxsRWxlbWVudHMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvQ2hyb21lLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Rp
YWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RpYWdub3N0aWNMb2dn
aW5nS2V5cy5oPgpAQCAtMTEzLDcgKzExNCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRp
Y2F0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1Zpc2libGVVbml0cy5oPgotI2ltcG9ydCA8V2ViQ29yZS9XS0NvbnRlbnRPYnNlcnZhdGlv
bi5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJFdmVudC5oPgogI2ltcG9ydCA8d3RmL01hdGhFeHRy
YXMuaD4KICNpbXBvcnQgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KQEAgLTUzOCwxMSAr
NTM4LDEyIEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uQXBwZWFyYW5jZSgpCiB2b2lk
IFdlYlBhZ2U6OmhhbmRsZVN5bnRoZXRpY0NsaWNrKE5vZGUqIG5vZGVSZXNwb25kaW5nVG9DbGlj
aywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbG9jYXRpb24sIE9wdGlvblNldDxXZWJFdmVu
dDo6TW9kaWZpZXI+IG1vZGlmaWVycykKIHsKICAgICBJbnRQb2ludCByb3VuZGVkQWRqdXN0ZWRQ
b2ludCA9IHJvdW5kZWRJbnRQb2ludChsb2NhdGlvbik7Ci0gICAgRnJhbWUmIG1haW5mcmFtZSA9
IG1fcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgYXV0byYgbWFpbmZyYW1lID0gbV9wYWdlLT5tYWlu
RnJhbWUoKTsKKyAgICBhdXRvJiBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBtX3BhZ2UtPmNvbnRl
bnRDaGFuZ2VPYnNlcnZlcigpOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKENvbnRlbnRPYnNlcnZh
dGlvbiwgc3RyZWFtIDw8ICJoYW5kbGVTeW50aGV0aWNDbGljazogbm9kZSgiIDw8IG5vZGVSZXNw
b25kaW5nVG9DbGljayA8PCAiKSAiIDw8IGxvY2F0aW9uKTsKLSAgICBXS1N0YXJ0T2JzZXJ2aW5n
Q29udGVudENoYW5nZXMoKTsKLSAgICBXS1N0YXJ0T2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5n
KCk7CisgICAgY29udGVudENoYW5nZU9ic2VydmVyLnN0YXJ0T2JzZXJ2aW5nQ29udGVudENoYW5n
ZXMoKTsKKyAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIuc3RhcnRPYnNlcnZpbmdET01UaW1lclNj
aGVkdWxpbmcoKTsKIAogICAgIC8vIEZJWE1FOiBQYXNzIGNhcHMgbG9jayBzdGF0ZS4KICAgICBi
b29sIHNoaWZ0S2V5ID0gbW9kaWZpZXJzLmNvbnRhaW5zKFdlYkV2ZW50OjpNb2RpZmllcjo6U2hp
ZnRLZXkpOwpAQCAtNTUyLDggKzU1Myw4IEBAIHZvaWQgV2ViUGFnZTo6aGFuZGxlU3ludGhldGlj
Q2xpY2soTm9kZSogbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBjb25zdCBXZWJDb3JlOjpGCiAgICAg
bWFpbmZyYW1lLmV2ZW50SGFuZGxlcigpLm1vdXNlTW92ZWQoUGxhdGZvcm1Nb3VzZUV2ZW50KHJv
dW5kZWRBZGp1c3RlZFBvaW50LCByb3VuZGVkQWRqdXN0ZWRQb2ludCwgTm9CdXR0b24sIFBsYXRm
b3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFL
ZXksIFdhbGxUaW1lOjpub3coKSwgV2ViQ29yZTo6Rm9yY2VBdENsaWNrLCBXZWJDb3JlOjpOb1Rh
cCkpOwogICAgIG1haW5mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAK
LSAgICBXS1N0b3BPYnNlcnZpbmdET01UaW1lclNjaGVkdWxpbmcoKTsKLSAgICBXS1N0b3BPYnNl
cnZpbmdDb250ZW50Q2hhbmdlcygpOworICAgIGNvbnRlbnRDaGFuZ2VPYnNlcnZlci5zdG9wT2Jz
ZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5nKCk7CisgICAgY29udGVudENoYW5nZU9ic2VydmVyLnN0
b3BPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygpOwogCiAgICAgbV9wZW5kaW5nU3ludGhldGljQ2xp
Y2tOb2RlID0gbnVsbHB0cjsKICAgICBtX3BlbmRpbmdTeW50aGV0aWNDbGlja0xvY2F0aW9uID0g
RmxvYXRQb2ludCgpOwpAQCAtNTYyLDcgKzU2Myw3IEBAIHZvaWQgV2ViUGFnZTo6aGFuZGxlU3lu
dGhldGljQ2xpY2soTm9kZSogbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBjb25zdCBXZWJDb3JlOjpG
CiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN3aXRjaCAoV0tP
YnNlcnZlZENvbnRlbnRDaGFuZ2UoKSkgeworICAgIHN3aXRjaCAoY29udGVudENoYW5nZU9ic2Vy
dmVyLm9ic2VydmVkQ29udGVudENoYW5nZSgpKSB7CiAgICAgY2FzZSBXS0NvbnRlbnRWaXNpYmls
aXR5Q2hhbmdlOgogICAgICAgICAvLyBUaGUgbW92ZSBldmVudCBjYXVzZWQgbmV3IGNvbnRlbnRz
IHRvIGFwcGVhci4gRG9uJ3Qgc2VuZCB0aGUgY2xpY2sgZXZlbnQuCiAgICAgICAgIExPRyhDb250
ZW50T2JzZXJ2YXRpb24sICJoYW5kbGVTeW50aGV0aWNDbGljazogT2JzZXJ2ZWQgbWVhbmluZ2Z1
bCB2aXNpYmxlIGNoYW5nZSAtPiBob3Zlci4iKTsKQEAgLTU4OCw3ICs1ODksNyBAQCB2b2lkIFdl
YlBhZ2U6OmNvbXBsZXRlUGVuZGluZ1N5bnRoZXRpY0NsaWNrRm9yQ29udGVudENoYW5nZU9ic2Vy
dmVyKCkKICAgICBpZiAoIW1fcGVuZGluZ1N5bnRoZXRpY0NsaWNrTm9kZSkKICAgICAgICAgcmV0
dXJuOwogICAgIC8vIE9ubHkgZGlzcGF0Y2ggdGhlIGNsaWNrIGlmIHRoZSBkb2N1bWVudCBkaWRu
J3QgZ2V0IGNoYW5nZWQgYnkgYW55IHRpbWVycyBzdGFydGVkIGJ5IHRoZSBtb3ZlIGV2ZW50Lgot
ICAgIGlmIChXS09ic2VydmVkQ29udGVudENoYW5nZSgpID09IFdLQ29udGVudE5vQ2hhbmdlKSB7
CisgICAgaWYgKG1fcGFnZS0+Y29udGVudENoYW5nZU9ic2VydmVyKCkub2JzZXJ2ZWRDb250ZW50
Q2hhbmdlKCkgPT0gV0tDb250ZW50Tm9DaGFuZ2UpIHsKICAgICAgICAgTE9HKENvbnRlbnRPYnNl
cnZhdGlvbiwgIk5vIGNoYWdlIHdhcyBvYnNlcnZlZCAtPiBjbGljay4iKTsKICAgICAgICAgY29t
cGxldGVTeW50aGV0aWNDbGljayhtX3BlbmRpbmdTeW50aGV0aWNDbGlja05vZGUuZ2V0KCksIG1f
cGVuZGluZ1N5bnRoZXRpY0NsaWNrTG9jYXRpb24sIG1fcGVuZGluZ1N5bnRoZXRpY0NsaWNrTW9k
aWZpZXJzLCBXZWJDb3JlOjpPbmVGaW5nZXJUYXApOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9T
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50SU9TLm1tCmluZGV4IDgyNTAxZWIyNTRmMjc4YzI3MmI4NGMyNWFmNWFhNGViNjdkYTViYmEu
LjllNTJlYjY0ZWMyOTEzMjg4NTQ3MjAwMmRiY2VjNmNkOTQ2MzgxNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnRJT1MubW0KQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbXBvcnQgIldlYlZpZXcuaCIKICNpbXBv
cnQgIldlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViVmlld1ByaXZhdGUuaCIKKyNpbXBv
cnQgPFdlYkNvcmUvQ29udGVudENoYW5nZU9ic2VydmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Rp
c2FibGVkQWRhcHRhdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CkBAIC0xODMsMTYgKzE4NCwyMSBAQCB2b2lkIFdl
YkNocm9tZUNsaWVudElPUzo6c2V0TmVlZHNTY3JvbGxOb3RpZmljYXRpb25zKFdlYkNvcmU6OkZy
YW1lJiBmcmFtZSwgYm9vbAogCiB2b2lkIFdlYkNocm9tZUNsaWVudElPUzo6b2JzZXJ2ZWRDb250
ZW50Q2hhbmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSkKIHsKLSAgICBbW3dlYlZpZXcoKSBfVUlL
aXREZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3KCkgZGlkT2JzZXJ2ZURlZmVycmVk
Q29udGVudENoYW5nZTpXS09ic2VydmVkQ29udGVudENoYW5nZSgpIGZvckZyYW1lOmtpdCgmZnJh
bWUpXTsKKyAgICBpZiAoIWZyYW1lLnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFtbd2Vi
VmlldygpIF9VSUtpdERlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OndlYlZpZXcoKSBkaWRPYnNl
cnZlRGVmZXJyZWRDb250ZW50Q2hhbmdlOmZyYW1lLnBhZ2UoKS0+Y29udGVudENoYW5nZU9ic2Vy
dmVyKCkub2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCkgZm9yRnJhbWU6a2l0KCZmcmFtZSldOwogfQog
CiB2b2lkIFdlYkNocm9tZUNsaWVudElPUzo6Y2xlYXJDb250ZW50Q2hhbmdlT2JzZXJ2ZXJzKFdl
YkNvcmU6OkZyYW1lJiBmcmFtZSkKIHsKLSAgICBBU1NFUlQoV2ViVGhyZWFkQ291bnRPZk9ic2Vy
dmVkRE9NVGltZXJzKCkgPiAwKTsKLSAgICBpZiAoV2ViVGhyZWFkQ291bnRPZk9ic2VydmVkRE9N
VGltZXJzKCkgPiAwKSB7Ci0gICAgICAgIFdlYlRocmVhZENsZWFyT2JzZXJ2ZWRET01UaW1lcnMo
KTsKLSAgICAgICAgb2JzZXJ2ZWRDb250ZW50Q2hhbmdlKGZyYW1lKTsKLSAgICB9CisgICAgaWYg
KCFmcmFtZS5wYWdlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvJiBjb250ZW50Q2hhbmdl
T2JzZXJ2ZXIgPSBmcmFtZS5wYWdlKCktPmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpOworICAgIEFT
U0VSVChjb250ZW50Q2hhbmdlT2JzZXJ2ZXIuY291bnRPZk9ic2VydmVkRE9NVGltZXJzKCkpOwor
ICAgIGlmICghY29udGVudENoYW5nZU9ic2VydmVyLmNvdW50T2ZPYnNlcnZlZERPTVRpbWVycygp
KQorICAgICAgICByZXR1cm47CisgICAgY29udGVudENoYW5nZU9ic2VydmVyLmNsZWFyT2JzZXJ2
ZWRET01UaW1lcnMoKTsKKyAgICBvYnNlcnZlZENvbnRlbnRDaGFuZ2UoZnJhbWUpOwogfQogCiBz
dGF0aWMgaW5saW5lIE5TU3RyaW5nICpuYW1lRm9yVmlld3BvcnRGaXRWYWx1ZShWaWV3cG9ydEZp
dCB2YWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362882</attachid>
            <date>2019-02-24 21:02:33 -0800</date>
            <delta_ts>2019-02-24 22:04:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194977-20190224210233.patch</filename>
            <type>text/plain</type>
            <size>42604</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I0M2Y4ZTI1ZTBhNTZl
ODYyMWExZTlmODdmNzcxOGFhY2JkODdkOC4uYWIwYzRiNWVmZjg3Y2I4NzEyNjIwZDBlYjA1NmY2
M2RmZTEwM2E2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTAyLTI0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIENvbnRlbnRD
aGFuZ2VPYnNlcnZlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk0OTc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODMzODExNT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCBp
cyBhYm91dCBwaXBpbmcgdGhyb3VnaCBhbGwgdGhlIHJlbGF0ZWQgV0sqIGNhbGxzLiAKKworICAg
ICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c2NoZWR1bGVTdHlsZVJlY2FsYyk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6dXBkYXRlU3R5bGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6cGxhdGZvcm1TdXNwZW5kT3JTdG9wQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVRpbWVyOjppbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRp
bWVyOjpmaXJlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93OjpjbGVhclRpbWVvdXQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OndpbGxEZXRhY2hQYWdlKToKKyAgICAgICAgKiBw
YWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmNvbnRlbnRDaGFuZ2VPYnNlcnZl
cik6CisgICAgICAgICogcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJl
ZVVwZGF0ZXI6OnVwZGF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpDaGVj
a0ZvclZpc2liaWxpdHlDaGFuZ2U6OkNoZWNrRm9yVmlzaWJpbGl0eUNoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpDaGVja0ZvclZpc2liaWxpdHlDaGFuZ2U6On5DaGVja0ZvclZpc2liaWxpdHlD
aGFuZ2UpOgorCiAyMDE5LTAyLTIzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbW92ZSByZW1uYW50cyBvZiBpT1MgV0sxIHNjcm9sbGluZyB0cmVl
IGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggODkxYjA5YzY1YTdlODRhOTJhYWUyZGI4M2Y5YzVjYThmMDc0MmJk
MS4uNGVhY2UyZDE3MGQzYTczMzczY2E1OWY0OTJlMWM3YjgxYmU3YjUzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxOS0wMi0yNCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgorCisgICAgICAgIEludHJvZHVjZSBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIgY2xhc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDk3NworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNDgzMzgxMTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24g
RnJhc2VyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVTeW50aGV0aWNDbGljayk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNvbXBsZXRlUGVuZGluZ1N5bnRoZXRpY0NsaWNrRm9yQ29u
dGVudENoYW5nZU9ic2VydmVyKToKKwogMjAxOS0wMi0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIEdpdmUgRHJhd2luZ0FyZWFzIHRoZWlyIG93biBpZGVudGlm
aWVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IDA1NGU3MTE2ZjQxYjQwYTFhZDQ4
MWRkMDgyNTBmYzBlNmEyMTczODAuLjE1NDM2MTE0YWNjMTI3ZmQwZjA0ODEyYmY0OWEwYTBmODA2
YjhkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
OS0wMi0yNCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIEludHJv
ZHVjZSBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDk3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDgzMzgxMTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOgorICAgICAgICAoV2ViQ2hy
b21lQ2xpZW50SU9TOjpvYnNlcnZlZENvbnRlbnRDaGFuZ2UpOgorICAgICAgICAoV2ViQ2hyb21l
Q2xpZW50SU9TOjpjbGVhckNvbnRlbnRDaGFuZ2VPYnNlcnZlcnMpOgorCiAyMDE5LTAyLTE3ICBE
YXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjI0MTYyMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDc5ZDUzZWUy
MWM3OTU5ZGNhZmQzMGY0MDFkMTU1NTkzMTliNWRkZTAuLjc4YTlmN2FjZDA4YzRhMjBlNjM2OTAy
YzY4Mjc5ZTIxNTE3YzQ2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMTMxLDYgKzEz
MSw3IEBAIHBhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQogcGFnZS9jb2Nv
YS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29jb2EubW0KIHBhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29j
b2EubW0KIAorcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLm1tCiBwYWdlL2lvcy9FdmVu
dEhhbmRsZXJJT1MubW0KIHBhZ2UvaW9zL0ZyYW1lSU9TLm1tCiBwYWdlL2lvcy9XZWJFdmVudFJl
Z2lvbi5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGVmMGVjZmRhZjdiZDc1ZDNlOWFhMWUyNTJiOTM4NjhlNDc4ODNmZGYuLjc1
ZGNiMTg2OGExM2U3MTA1NjM5ZGUxYjAyMWQ0ZDczZWVhNzJkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNjUsNiArMjA2
NSw3IEBACiAJCTZGOTk1QTNBMUE3MDgzMzcwMEE3MzVGNCAvKiBKU1dlYkdMVmVydGV4QXJyYXlP
YmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZG
OTk1QTMwMUE3MDgzMzcwMEE3MzVGNCAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCAqLzsg
fTsKIAkJNkZBNDQ1NEU4OThGMkZDMTY4QkMzOEMxIC8qIEpTQmVmb3JlVW5sb2FkRXZlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5RTA0QTI3QkVE
MkY4MUY5OEU5MDIyQiAvKiBKU0JlZm9yZVVubG9hZEV2ZW50LmggKi87IH07CiAJCTZGQjExQjVD
MjE3ODNGRDAwMEUyQTU3NCAvKiBUZXh0VXRpbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCMTFCNTkyMTc4M0ZDRjAwRTJBNTc0IC8qIFRleHRVdGls
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNkZC
NUUyMTQyMjFGMjQ1MzAwMzk4OUNGIC8qIENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCNUUyMTIyMjFGMjQ0NzAw
Mzk4OUNGIC8qIENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGRTE5ODE3MjE3ODM5N0MwMDQ0NkYwOCAvKiBJ
bmxpbmVMaW5lQnJlYWtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkZFMTk4MTUyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUxpbmVCcmVha2VyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkZFN0NG
QTIyMTc3RUVGMjAwNUIxNTczIC8qIElubGluZUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGRTdDRkEwMjE3N0VFRjEwMDVCMTU3MyAvKiBJbmxp
bmVJdGVtLmggKi87IH07CiAJCTZGRTdDRkE0MjE3N0VGMTAwMDVCMTU3MyAvKiBMYXlvdXRMaW5l
QnJlYWtCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZGRTdDRkEzMjE3N0VGMTAwMDVCMTU3MyAvKiBMYXlvdXRMaW5lQnJlYWtCb3guaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTIzNCw2ICs5MjM1
LDcgQEAKIAkJNkY5OTVBMzAxQTcwODMzNzAwQTczNUY0IC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMVmVydGV4QXJy
YXlPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZCMTFCNTkyMTc4M0ZD
RjAwRTJBNTc0IC8qIFRleHRVdGlsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRleHRVdGlsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQjExQjVCMjE3ODNG
Q0YwMEUyQTU3NCAvKiBUZXh0VXRpbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUZXh0VXRpbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZGQjVF
MjEyMjIxRjI0NDcwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29udGVudENoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZGQkI4NjA1MjBCNDY0QjYwMERBRDkzOCAvKiBGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkUxOTgxMzIxNzgzOTdCMDA0NDZGMDggLyog
SW5saW5lTGluZUJyZWFrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5saW5lTGluZUJyZWFrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
RkUxOTgxNTIxNzgzOTdDMDA0NDZGMDggLyogSW5saW5lTGluZUJyZWFrZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lTGluZUJyZWFrZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTkyNDEsNiArOTI0Myw3IEBACiAJCTZGRTdDRkEwMjE3N0VFRjEw
MDVCMTU3MyAvKiBJbmxpbmVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IElubGluZUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZFN0NGQTMyMTc3
RUYxMDAwNUIxNTczIC8qIExheW91dExpbmVCcmVha0JveC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMYXlvdXRMaW5lQnJlYWtCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNkZFN0NGQTUyMTc3RjA2OTAwNUIxNTczIC8qIExheW91dExpbmVCcmVha0JveC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRMaW5lQnJlYWtC
b3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RkU5RjA5MjIyMjExMDM1MDA0
QzUwODIgLyogQ29udGVudENoYW5nZU9ic2VydmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gQ29udGVudENoYW5nZU9ic2VydmVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2RkZEQzQzRTIxMkVGRjE2MDBBOUNBOTEgLyogRmxvYXRBdm9pZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0QXZvaWRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGRkRDNDQwMjEyRUZGMTYwMEE5Q0E5
MSAvKiBGbG9hdEF2b2lkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxv
YXRBdm9pZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwOUEwMUZEMUUzRDBC
Q0MwMDZCMEQ0QyAvKiBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZldGNoRmFpbHVyZUtpbmQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE2NTg4LDYgKzE2NTkxLDggQEAKIAkJMThBNkNENkYwRDhGMjAyNTAw
MURDM0NFIC8qIGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJNkZCNUUyMTIyMjFGMjQ0NzAwMzk4OUNGIC8qIENvbnRlbnRDaGFuZ2VPYnNlcnZlci5o
ICovLAorCQkJCTZGRTlGMDkyMjIyMTEwMzUwMDRDNTA4MiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2
ZXIubW0gKi8sCiAJCQkJRkU2OTM4QjUxMDQ1RDY3RTAwOEVBQkI2IC8qIEV2ZW50SGFuZGxlcklP
Uy5tbSAqLywKIAkJCQlGRUQxM0QzQjBDRUE5MzZBMDBEODk0NjYgLyogRnJhbWVJT1MubW0gKi8s
CiAJCQkJMjI1QTE2QjMwRDVDMTFFOTAwMDkwMjk1IC8qIFdlYkV2ZW50UmVnaW9uLmggKi8sCkBA
IC0yODY5Myw2ICsyODY5OCw3IEBACiAJCQkJMkRBRjM0M0QxRUE3RTBGMTAwMzgyQ0QzIC8qIENv
bnN0YW50UHJvcGVydHlNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjFDMDk3N0QzQzAw
MDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUExNDcwODEx
MTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTZGQjVFMjE0MjIxRjI0NTMwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOTgxMEU4MjA3MjUwMEIyNTk2NSAvKiBDb250ZW50
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCNDVEMjExQUI4RDFFMjAwMTE3Q0QyIC8qIENv
bnRlbnRFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREZBNkM4MUFBNEYyREEwMEVB
ODc0NiAvKiBDb250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAppbmRleCAyYmE5NjJlNTg2MGFhZjhhMGEyM2MxOTc0OTYwOGEwNzM2OWE4
NWNmLi4yNzU1Zjc2ZGZhYjYwYmU0MGVlOGE2NTZjMTA5OTEzOGIzODZhNWQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKQEAgLTI1OCw2ICsyNTgsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorI2luY2x1ZGUgIkNvbnRlbnRDaGFuZ2VPYnNlcnZlci5oIgogI2luY2x1
ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkRldmljZU1vdGlvbkNsaWVudElPUy5o
IgogI2luY2x1ZGUgIkRldmljZU1vdGlvbkNvbnRyb2xsZXIuaCIKQEAgLTI2Niw4ICsyNjcsNiBA
QAogI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAjaW5j
bHVkZSAiTmF2aWdhdG9yR2VvbG9jYXRpb24uaCIKLSNpbmNsdWRlICJXS0NvbnRlbnRPYnNlcnZh
dGlvbi5oIgotI2luY2x1ZGUgIldLQ29udGVudE9ic2VydmF0aW9uSW50ZXJuYWwuaCIKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKElPU19HRVNUVVJFX0VWRU5UUykKQEAgLTE4MTIsOSArMTgxMSwxMiBA
QCB2b2lkIERvY3VtZW50OjpzY2hlZHVsZVN0eWxlUmVjYWxjKCkKICAgICBBU1NFUlQoY2hpbGRO
ZWVkc1N0eWxlUmVjYWxjKCkgfHwgbV9uZWVkc0Z1bGxTdHlsZVJlYnVpbGQpOwogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoV0tJc09ic2VydmluZ1N0eWxlUmVjYWxjU2NoZWR1
bGluZygpKSB7Ci0gICAgICAgIExPR19XSVRIX1NUUkVBTShDb250ZW50T2JzZXJ2YXRpb24sIHN0
cmVhbSA8PCAiRG9jdW1lbnQoIiA8PCB0aGlzIDw8ICIpOjpzY2hlZHVsZVN0eWxlUmVjYWxjOiBy
ZWdpc3RlciB0aGlzIHN0eWxlIHJlY2FsYyBzY2hlZHVsZSBhbmQgb2JzZXJ2ZSB3aGVuIGl0IGZp
cmVzLiIpOwotICAgICAgICBXS1NldE9ic2VydmVkQ29udGVudENoYW5nZShXS0NvbnRlbnRJbmRl
dGVybWluYXRlQ2hhbmdlKTsKKyAgICBpZiAoYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKSkgewor
ICAgICAgICBhdXRvJiBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBwYWdlLT5jb250ZW50Q2hhbmdl
T2JzZXJ2ZXIoKTsKKyAgICAgICAgaWYgKGNvbnRlbnRDaGFuZ2VPYnNlcnZlci5pc09ic2Vydmlu
Z1N0eWxlUmVjYWxjU2NoZWR1bGluZygpKSB7CisgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0o
Q29udGVudE9ic2VydmF0aW9uLCBzdHJlYW0gPDwgIkRvY3VtZW50KCIgPDwgdGhpcyA8PCAiKTo6
c2NoZWR1bGVTdHlsZVJlY2FsYzogcmVnaXN0ZXIgdGhpcyBzdHlsZSByZWNhbGMgc2NoZWR1bGUg
YW5kIG9ic2VydmUgd2hlbiBpdCBmaXJlcy4iKTsKKyAgICAgICAgICAgIGNvbnRlbnRDaGFuZ2VP
YnNlcnZlci5zZXRPYnNlcnZlZENvbnRlbnRDaGFuZ2UoV0tDb250ZW50SW5kZXRlcm1pbmF0ZUNo
YW5nZSk7CisgICAgICAgIH0KICAgICB9CiAjZW5kaWYKIApAQCAtMjA0OCwxMSArMjA1MCwxNSBA
QCBib29sIERvY3VtZW50Ojp1cGRhdGVTdHlsZUlmTmVlZGVkKCkKICAgICB9CiAKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgIGF1dG8gb2JzZXJ2aW5nQ29udGVudENoYW5nZSA9IFdLU2hv
dWxkT2JzZXJ2ZU5leHRTdHlsZVJlY2FsYygpOwotICAgIGlmIChvYnNlcnZpbmdDb250ZW50Q2hh
bmdlKSB7Ci0gICAgICAgIExPR19XSVRIX1NUUkVBTShDb250ZW50T2JzZXJ2YXRpb24sIHN0cmVh
bSA8PCAiRG9jdW1lbnQoIiA8PCB0aGlzIDw8ICIpOjpzY2hlZHVsZVN0eWxlUmVjYWxjOiBzdGFy
dCBvYnNlcnZpbmcgY29udGVudCBjaGFuZ2UuIik7Ci0gICAgICAgIFdLU2V0U2hvdWxkT2JzZXJ2
ZU5leHRTdHlsZVJlY2FsYyhmYWxzZSk7Ci0gICAgICAgIFdLU3RhcnRPYnNlcnZpbmdDb250ZW50
Q2hhbmdlcygpOworICAgIGF1dG8gb2JzZXJ2aW5nQ29udGVudENoYW5nZSA9IGZhbHNlOworICAg
IGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKSB7CisgICAgICAgIGF1dG8mIGNvbnRlbnRD
aGFuZ2VPYnNlcnZlciA9IHBhZ2UtPmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpOworICAgICAgICBv
YnNlcnZpbmdDb250ZW50Q2hhbmdlID0gY29udGVudENoYW5nZU9ic2VydmVyLnNob3VsZE9ic2Vy
dmVOZXh0U3R5bGVSZWNhbGMoKTsKKyAgICAgICAgaWYgKG9ic2VydmluZ0NvbnRlbnRDaGFuZ2Up
IHsKKyAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShDb250ZW50T2JzZXJ2YXRpb24sIHN0cmVh
bSA8PCAiRG9jdW1lbnQoIiA8PCB0aGlzIDw8ICIpOjpzY2hlZHVsZVN0eWxlUmVjYWxjOiBzdGFy
dCBvYnNlcnZpbmcgY29udGVudCBjaGFuZ2UuIik7CisgICAgICAgICAgICBjb250ZW50Q2hhbmdl
T2JzZXJ2ZXIuc2V0U2hvdWxkT2JzZXJ2ZU5leHRTdHlsZVJlY2FsYyhmYWxzZSk7CisgICAgICAg
ICAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIuc3RhcnRPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygp
OworICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAgICAgLy8gVGhlIGVhcmx5IGV4aXQgYWJvdmUg
Zm9yICFuZWVkc1N0eWxlUmVjYWxjKCkgaXMgbmVlZGVkIHdoZW4gdXBkYXRlV2lkZ2V0UG9zaXRp
b25zKCkgaXMgY2FsbGVkIGluIHJ1bk9yU2NoZWR1bGVBc3luY2hyb25vdXNUYXNrcygpLgpAQCAt
MjA2MSwxNSArMjA2NywxNSBAQCBib29sIERvY3VtZW50Ojp1cGRhdGVTdHlsZUlmTmVlZGVkKCkK
ICAgICByZXNvbHZlU3R5bGUoKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYg
KG9ic2VydmluZ0NvbnRlbnRDaGFuZ2UpIHsKKyAgICBpZiAob2JzZXJ2aW5nQ29udGVudENoYW5n
ZSAmJiBwYWdlKCkpIHsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKENvbnRlbnRPYnNlcnZhdGlv
biwgc3RyZWFtIDw8ICJEb2N1bWVudCgiIDw8IHRoaXMgPDwgIik6OnNjaGVkdWxlU3R5bGVSZWNh
bGM6IHN0b3Agb2JzZXJ2aW5nIGNvbnRlbnQgY2hhbmdlLiIpOwotICAgICAgICBXS1N0b3BPYnNl
cnZpbmdDb250ZW50Q2hhbmdlcygpOworICAgICAgICBhdXRvJiBjb250ZW50Q2hhbmdlT2JzZXJ2
ZXIgPSBwYWdlKCktPmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpOworICAgICAgICBjb250ZW50Q2hh
bmdlT2JzZXJ2ZXIuc3RvcE9ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKCk7CiAKLSAgICAgICAgYXV0
byBpbkRldGVybWluZWRTdGF0ZSA9IFdLT2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCkgPT0gV0tDb250
ZW50VmlzaWJpbGl0eUNoYW5nZSB8fCAhV2ViVGhyZWFkQ291bnRPZk9ic2VydmVkRE9NVGltZXJz
KCk7ICAKKyAgICAgICAgYXV0byBpbkRldGVybWluZWRTdGF0ZSA9IGNvbnRlbnRDaGFuZ2VPYnNl
cnZlci5vYnNlcnZlZENvbnRlbnRDaGFuZ2UoKSA9PSBXS0NvbnRlbnRWaXNpYmlsaXR5Q2hhbmdl
IHx8ICFjb250ZW50Q2hhbmdlT2JzZXJ2ZXIuY291bnRPZk9ic2VydmVkRE9NVGltZXJzKCk7ICAK
ICAgICAgICAgaWYgKGluRGV0ZXJtaW5lZFN0YXRlKSB7CiAgICAgICAgICAgICBMT0dfV0lUSF9T
VFJFQU0oQ29udGVudE9ic2VydmF0aW9uLCBzdHJlYW0gPDwgIkRvY3VtZW50KCIgPDwgdGhpcyA8
PCAiKTo6c2NoZWR1bGVTdHlsZVJlY2FsYzogbm90aWZ5IHRoZSBwZW5kaW5nIHN5bnRoZXRpYyBj
bGljayBoYW5kbGVyLiIpOwotICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdl
KCkpCi0gICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkub2JzZXJ2ZWRDb250
ZW50Q2hhbmdlKCpmcmFtZSgpKTsKKyAgICAgICAgICAgIHBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50
KCkub2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCpmcmFtZSgpKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIExPR19XSVRIX1NUUkVBTShDb250ZW50T2JzZXJ2YXRpb24sIHN0cmVhbSA8PCAi
RG9jdW1lbnQoIiA8PCB0aGlzIDw8ICIpOjpzY2hlZHVsZVN0eWxlUmVjYWxjOiBjYW4ndCBkZWNp
ZGVkIGl0IHlldC4iKTsKICAgICAgICAgfQpAQCAtMjY1MSwxMyArMjY1NywxMyBAQCBib29sIERv
Y3VtZW50OjpzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25z
dAogdm9pZCBEb2N1bWVudDo6cGxhdGZvcm1TdXNwZW5kT3JTdG9wQWN0aXZlRE9NT2JqZWN0cygp
CiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoV2ViVGhyZWFkQ291bnRPZk9i
c2VydmVkRE9NVGltZXJzKCkgPiAwKSB7Ci0gICAgICAgIExPR19XSVRIX1NUUkVBTShDb250ZW50
T2JzZXJ2YXRpb24sIHN0cmVhbSA8PCAiRG9jdW1lbnQ6OnBsYXRmb3JtU3VzcGVuZE9yU3RvcEFj
dGl2ZURPTU9iamVjdHM6IHJlbW92ZSByZWdpc3RlcmVkIHRpbWVycy4iKTsKLSAgICAgICAgaWYg
KGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIHBh
Z2UgPSBmcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVu
dCgpLmNsZWFyQ29udGVudENoYW5nZU9ic2VydmVycygqZnJhbWUpOwotICAgICAgICB9Ci0gICAg
fQorICAgIGlmICghcGFnZSgpIHx8ICFmcmFtZSgpKQorICAgICAgICByZXR1cm47CisgICAgYXV0
byYgcGFnZSA9ICp0aGlzLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlLmNvbnRlbnRDaGFuZ2VPYnNl
cnZlcigpLmNvdW50T2ZPYnNlcnZlZERPTVRpbWVycygpKQorICAgICAgICByZXR1cm47CisgICAg
TE9HX1dJVEhfU1RSRUFNKENvbnRlbnRPYnNlcnZhdGlvbiwgc3RyZWFtIDw8ICJEb2N1bWVudDo6
cGxhdGZvcm1TdXNwZW5kT3JTdG9wQWN0aXZlRE9NT2JqZWN0czogcmVtb3ZlIHJlZ2lzdGVyZWQg
dGltZXJzLiIpOworICAgIHBhZ2UuY2hyb21lKCkuY2xpZW50KCkuY2xlYXJDb250ZW50Q2hhbmdl
T2JzZXJ2ZXJzKCpmcmFtZSgpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAppbmRleCA3NjZiN2UxZWIyNTFjNjM0NDhmZmYwYzUyZjU5ZmQxZGQ5MTkyZmVk
Li4yYzQzYTE5ZDc4NDY3YjhlZTQ4YjVkYzhlOGZmYTRjYzUxZThmMjIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTE0NSw3ICsxNDUsNiBAQAogI2luY2x1ZGUgIkRv
Y3VtZW50VHlwZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCi0jaW5jbHVkZSAiV0tDb250ZW50T2JzZXJ2YXRpb24u
aCIKICNlbmRpZgogCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJF
TEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBG
cmFtZUxvYWRlcjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGlt
ZXIuY3BwCmluZGV4IGU5OGY1ZjI1ZmJiNTNhNDA5NjM0MjM4M2M0NzJhOWEyZmI3OGUxN2IuLjcy
OWU2ZDQ0YjI0NGU0NzhkYzUwY2VjMjk0MDIzYTg2ZTNiZDg4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
VGltZXIuY3BwCkBAIC00NCw5ICs0NCw4IEBACiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
bmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJD
b250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIldL
Q29udGVudE9ic2VydmF0aW9uLmgiCi0jaW5jbHVkZSAiV0tDb250ZW50T2JzZXJ2YXRpb25JbnRl
cm5hbC5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTIxOSwxNyArMjE4LDYg
QEAgaW50IERPTVRpbWVyOjppbnN0YWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWQKICAgICAvLyBUaGlzIHJlZmVyZW5jZSB3aWxsIGJl
IHJlbGVhc2VkIGF1dG9tYXRpY2FsbHkgd2hlbiBhIG9uZS1zaG90IHRpbWVyIGZpcmVzLCB3aGVu
IHRoZSBjb250ZXh0CiAgICAgLy8gaXMgZGVzdHJveWVkLCBvciBpZiBleHBsaWNpdGx5IGNhbmNl
bGxlZCBieSByZW1vdmVCeUlkLiAKICAgICBET01UaW1lciogdGltZXIgPSBuZXcgRE9NVGltZXIo
Y29udGV4dCwgV1RGTW92ZShhY3Rpb24pLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKLSNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgIGlmIChXS0lzT2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5n
KCkgJiYgaXM8RG9jdW1lbnQ+KGNvbnRleHQpKSB7Ci0gICAgICAgIGJvb2wgZGlkRGVmZXJUaW1l
b3V0ID0gY29udGV4dC5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCk7Ci0gICAgICAgIGlm
ICghZGlkRGVmZXJUaW1lb3V0ICYmIHRpbWVvdXQgPD0gMjUwX21zICYmIHNpbmdsZVNob3QpIHsK
LSAgICAgICAgICAgIFdLU2V0T2JzZXJ2ZWRDb250ZW50Q2hhbmdlKFdLQ29udGVudEluZGV0ZXJt
aW5hdGVDaGFuZ2UpOwotICAgICAgICAgICAgV2ViVGhyZWFkQWRkT2JzZXJ2ZWRET01UaW1lcih0
aW1lcik7Ci0gICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oQ29udGVudE9ic2VydmF0aW9uLCBz
dHJlYW0gPDwgIkRPTVRpbWVyOjppbnN0YWxsOiByZWdpc3RlZCB0aGlzIHRpbWVyOiAoIiA8PCB0
aW1lciA8PCAiKSBhbmQgb2JzZXJ2ZSB3aGVuIGl0IGZpcmVzLiIpOwotICAgICAgICB9Ci0gICAg
fQotI2VuZGlmCi0KICAgICB0aW1lci0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRJbnN0YWxsVGltZXIoY29udGV4dCwgdGltZXItPm1fdGltZW91
dElkLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKIApAQCAtMjM3LDYgKzIyNSwyNSBAQCBpbnQgRE9N
VGltZXI6Omluc3RhbGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgc3RkOjp1bmlx
dWVfcHRyPFNjaGVkdWxlZAogICAgIGlmIChOZXN0ZWRUaW1lcnNNYXAqIG5lc3RlZFRpbWVycyA9
IE5lc3RlZFRpbWVyc01hcDo6aW5zdGFuY2VGb3JDb250ZXh0KGNvbnRleHQpKQogICAgICAgICBu
ZXN0ZWRUaW1lcnMtPmFkZCh0aW1lci0+bV90aW1lb3V0SWQsICp0aW1lcik7CiAKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorICAgIGF1dG8gc3RhcnRPYnNlcnZpbmdUaGlzVGltZXJJZk5lZWRl
ZCA9IFsmXSB7CisgICAgICAgIGlmICghaXM8RG9jdW1lbnQ+KGNvbnRleHQpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBpZiAoY29udGV4dC5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVu
ZGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICh0aW1lb3V0ID4gMjUwX21z
IHx8ICFzaW5nbGVTaG90KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBhdXRvJiBjb250
ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkucGFnZSgpLT5j
b250ZW50Q2hhbmdlT2JzZXJ2ZXIoKTsKKyAgICAgICAgaWYgKCFjb250ZW50Q2hhbmdlT2JzZXJ2
ZXIuaXNPYnNlcnZpbmdET01UaW1lclNjaGVkdWxpbmcoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIuc2V0T2JzZXJ2ZWRDb250ZW50Q2hhbmdl
KFdLQ29udGVudEluZGV0ZXJtaW5hdGVDaGFuZ2UpOworICAgICAgICBjb250ZW50Q2hhbmdlT2Jz
ZXJ2ZXIuYWRkT2JzZXJ2ZWRET01UaW1lcigqdGltZXIpOworICAgICAgICBMT0dfV0lUSF9TVFJF
QU0oQ29udGVudE9ic2VydmF0aW9uLCBzdHJlYW0gPDwgIkRPTVRpbWVyOjppbnN0YWxsOiByZWdp
c3RlciB0aGlzIHRpbWVyOiAoIiA8PCBtX3RpbWVvdXRJZCA8PCAiKSBhbmQgb2JzZXJ2ZSB3aGVu
IGl0IGZpcmVzLiIpOworICAgIH07CisKKyAgICBzdGFydE9ic2VydmluZ1RoaXNUaW1lcklmTmVl
ZGVkKCk7CisjZW5kaWYKICAgICByZXR1cm4gdGltZXItPm1fdGltZW91dElkOwogfQogCkBAIC0z
NDIsMTggKzM0OSwyMyBAQCB2b2lkIERPTVRpbWVyOjpmaXJlZCgpCiAgICAgY29udGV4dC5yZW1v
dmVUaW1lb3V0KG1fdGltZW91dElkKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
YXV0byBpc09idmVyc2luZ0xhc3RUaW1lciA9IGZhbHNlOworICAgIGF1dG8gaXNPYnNlcnZpbmdM
YXN0VGltZXIgPSBmYWxzZTsKICAgICBhdXRvIHNob3VsZEJlZ2luT2JzZXJ2aW5nQ2hhbmdlcyA9
IGZhbHNlOwotICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpIHsKLSAgICAgICAgaXNPYnZl
cnNpbmdMYXN0VGltZXIgPSBXZWJUaHJlYWRDb3VudE9mT2JzZXJ2ZWRET01UaW1lcnMoKSA9PSAx
OwotICAgICAgICBzaG91bGRCZWdpbk9ic2VydmluZ0NoYW5nZXMgPSBXZWJUaHJlYWRDb250YWlu
c09ic2VydmVkRE9NVGltZXIodGhpcyk7CisgICAgUGFnZSogcGFnZSA9IG51bGxwdHI7CisgICAg
aWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSAmJiBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCku
cGFnZSgpKSB7CisgICAgICAgIHBhZ2UgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkucGFn
ZSgpOworICAgICAgICBhdXRvJiBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBwYWdlLT5jb250ZW50
Q2hhbmdlT2JzZXJ2ZXIoKTsKKyAgICAgICAgaXNPYnNlcnZpbmdMYXN0VGltZXIgPSBjb250ZW50
Q2hhbmdlT2JzZXJ2ZXIuY291bnRPZk9ic2VydmVkRE9NVGltZXJzKCkgPT0gMTsKKyAgICAgICAg
c2hvdWxkQmVnaW5PYnNlcnZpbmdDaGFuZ2VzID0gY29udGVudENoYW5nZU9ic2VydmVyLmNvbnRh
aW5zT2JzZXJ2ZWRET01UaW1lcigqdGhpcyk7CiAgICAgfQogCiAgICAgaWYgKHNob3VsZEJlZ2lu
T2JzZXJ2aW5nQ2hhbmdlcykgewotICAgICAgICBMT0dfV0lUSF9TVFJFQU0oQ29udGVudE9ic2Vy
dmF0aW9uLCBzdHJlYW0gPDwgIkRPTVRpbWVyOjpmaXJlZDogc3RhcnQgb2JzZXJ2aW5nICgiIDw8
IHRoaXMgPDwgIikgdGltZXIgY2FsbGJhY2suIik7Ci0gICAgICAgIFdLU3RhcnRPYnNlcnZpbmdD
b250ZW50Q2hhbmdlcygpOwotICAgICAgICBXS1N0YXJ0T2JzZXJ2aW5nU3R5bGVSZWNhbGNTY2hl
ZHVsaW5nKCk7Ci0gICAgICAgIFdlYlRocmVhZFJlbW92ZU9ic2VydmVkRE9NVGltZXIodGhpcyk7
CisgICAgICAgIEFTU0VSVChwYWdlKTsKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFNKENvbnRlbnRP
YnNlcnZhdGlvbiwgc3RyZWFtIDw8ICJET01UaW1lcjo6ZmlyZWQ6IHN0YXJ0IG9ic2VydmluZyAo
IiA8PCBtX3RpbWVvdXRJZCA8PCAiKSB0aW1lciBjYWxsYmFjay4iKTsKKyAgICAgICAgYXV0byYg
Y29udGVudENoYW5nZU9ic2VydmVyID0gcGFnZS0+Y29udGVudENoYW5nZU9ic2VydmVyKCk7Cisg
ICAgICAgIGNvbnRlbnRDaGFuZ2VPYnNlcnZlci5zdGFydE9ic2VydmluZ0NvbnRlbnRDaGFuZ2Vz
KCk7CisgICAgICAgIGNvbnRlbnRDaGFuZ2VPYnNlcnZlci5zdGFydE9ic2VydmluZ1N0eWxlUmVj
YWxjU2NoZWR1bGluZygpOworICAgICAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIucmVtb3ZlT2Jz
ZXJ2ZWRET01UaW1lcigqdGhpcyk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTM2NiwyMiArMzc4LDIy
IEBAIHZvaWQgRE9NVGltZXI6OmZpcmVkKCkKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgaWYgKHNob3VsZEJlZ2luT2JzZXJ2aW5nQ2hhbmdlcykgewotICAgICAgICBMT0dfV0lUSF9T
VFJFQU0oQ29udGVudE9ic2VydmF0aW9uLCBzdHJlYW0gPDwgIkRPTVRpbWVyOjpmaXJlZDogc3Rv
cCBvYnNlcnZpbmcgKCIgPDwgdGhpcyA8PCAiKSB0aW1lciBjYWxsYmFjay4iKTsKLSAgICAgICAg
V0tTdG9wT2JzZXJ2aW5nU3R5bGVSZWNhbGNTY2hlZHVsaW5nKCk7Ci0gICAgICAgIFdLU3RvcE9i
c2VydmluZ0NvbnRlbnRDaGFuZ2VzKCk7CisgICAgICAgIEFTU0VSVChwYWdlKTsKKyAgICAgICAg
TE9HX1dJVEhfU1RSRUFNKENvbnRlbnRPYnNlcnZhdGlvbiwgc3RyZWFtIDw8ICJET01UaW1lcjo6
ZmlyZWQ6IHN0b3Agb2JzZXJ2aW5nICgiIDw8IG1fdGltZW91dElkIDw8ICIpIHRpbWVyIGNhbGxi
YWNrLiIpOworICAgICAgICBhdXRvJiBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBwYWdlLT5jb250
ZW50Q2hhbmdlT2JzZXJ2ZXIoKTsKKyAgICAgICAgY29udGVudENoYW5nZU9ic2VydmVyLnN0b3BP
YnNlcnZpbmdTdHlsZVJlY2FsY1NjaGVkdWxpbmcoKTsKKyAgICAgICAgY29udGVudENoYW5nZU9i
c2VydmVyLnN0b3BPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygpOwogCi0gICAgICAgIGF1dG8gb2Jz
ZXJ2ZWRDb250ZW50Q2hhbmdlID0gV0tPYnNlcnZlZENvbnRlbnRDaGFuZ2UoKTsKKyAgICAgICAg
YXV0byBvYnNlcnZlZENvbnRlbnRDaGFuZ2UgPSBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIub2JzZXJ2
ZWRDb250ZW50Q2hhbmdlKCk7CiAgICAgICAgIC8vIENoZWNrIGlmIHRoZSB0aW1lciBjYWxsYmFj
ayB0cmlnZ2VyZWQgZWl0aGVyIGEgc3luYyBvciBhc3luYyBzdHlsZSB1cGRhdGUuCi0gICAgICAg
IGF1dG8gaW5EZXRlcm1pbmVkU3RhdGUgPSBvYnNlcnZlZENvbnRlbnRDaGFuZ2UgPT0gV0tDb250
ZW50VmlzaWJpbGl0eUNoYW5nZSB8fCAoaXNPYnZlcnNpbmdMYXN0VGltZXIgJiYgb2JzZXJ2ZWRD
b250ZW50Q2hhbmdlID09IFdLQ29udGVudE5vQ2hhbmdlKTsgIAorICAgICAgICBhdXRvIGluRGV0
ZXJtaW5lZFN0YXRlID0gb2JzZXJ2ZWRDb250ZW50Q2hhbmdlID09IFdLQ29udGVudFZpc2liaWxp
dHlDaGFuZ2UgfHwgKGlzT2JzZXJ2aW5nTGFzdFRpbWVyICYmIG9ic2VydmVkQ29udGVudENoYW5n
ZSA9PSBXS0NvbnRlbnROb0NoYW5nZSk7ICAKICAgICAgICAgaWYgKGluRGV0ZXJtaW5lZFN0YXRl
KSB7Ci0gICAgICAgICAgICBMT0coQ29udGVudE9ic2VydmF0aW9uLCAiRE9NVGltZXI6OmZpcmVk
OiBpbiBkZXRlcm1pbmVkIHN0YXRlLiIpOwotICAgICAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBk
b3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7Ci0gICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9
IGRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQo
KS5vYnNlcnZlZENvbnRlbnRDaGFuZ2UoKmRvY3VtZW50LmZyYW1lKCkpOworICAgICAgICAgICAg
TE9HX1dJVEhfU1RSRUFNKENvbnRlbnRPYnNlcnZhdGlvbiwgIkRPTVRpbWVyOjpmaXJlZCgiIDw8
IG1fdGltZW91dElkIDw8ICIpOiBpbiBkZXRlcm1pbmVkIHN0YXRlLiIpOworICAgICAgICAgICAg
cGFnZS0+Y2hyb21lKCkuY2xpZW50KCkub2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCpkb3duY2FzdDxE
b2N1bWVudD4oY29udGV4dCkuZnJhbWUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAob2JzZXJ2ZWRD
b250ZW50Q2hhbmdlID09IFdLQ29udGVudEluZGV0ZXJtaW5hdGVDaGFuZ2UpIHsKICAgICAgICAg
ICAgIC8vIEFuIGFzeW5jIHN0eWxlIHJlY2FsYyBoYXMgYmVlbiBzY2hlZHVsZWQuIExldCdzIG9i
c2VydmUgaXQuCi0gICAgICAgICAgICBMT0coQ29udGVudE9ic2VydmF0aW9uLCAiRE9NVGltZXI6
OmZpcmVkOiB3YWl0IHVudGlsIG5leHQgc3R5bGUgcmVjYWxjIGZpcmVzLiIpOwotICAgICAgICAg
ICAgV0tTZXRTaG91bGRPYnNlcnZlTmV4dFN0eWxlUmVjYWxjKHRydWUpOworICAgICAgICAgICAg
TE9HX1dJVEhfU1RSRUFNKENvbnRlbnRPYnNlcnZhdGlvbiwgIkRPTVRpbWVyOjpmaXJlZCgiIDw8
IG1fdGltZW91dElkIDw8ICIpOiB3YWl0IHVudGlsIG5leHQgc3R5bGUgcmVjYWxjIGZpcmVzLiIp
OworICAgICAgICAgICAgY29udGVudENoYW5nZU9ic2VydmVyLnNldFNob3VsZE9ic2VydmVOZXh0
U3R5bGVSZWNhbGModHJ1ZSk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcAppbmRleCA4ZmQ0MTE5MTUxNjRlZTM3NjA0YWE0ZTM0OTJjYjlmZjI4OWNi
NTUwLi41YTY2Mjc4NzVhOWViZGY1NTY5MTZhZDAxYmRkZGQ2ZDk3NjJkYjNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xMzksMTEgKzEzOSw5IEBACiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0jaW5jbHVkZSAiV0tDb250ZW50T2JzZXJ2YXRpb24uaCIKLSNp
bmNsdWRlICJXS0NvbnRlbnRPYnNlcnZhdGlvbkludGVybmFsLmgiCisjaW5jbHVkZSAiQ29udGVu
dENoYW5nZU9ic2VydmVyLmgiCiAjZW5kaWYKIAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCkBAIC0xNjg0LDIxICsxNjgyLDI2IEBAIEV4Y2VwdGlv
bk9yPGludD4gRE9NV2luZG93OjpzZXRUaW1lb3V0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgc3Rk
Ojp1bmlxdWVfcHRyPFNjCiB2b2lkIERPTVdpbmRvdzo6Y2xlYXJUaW1lb3V0KGludCB0aW1lb3V0
SWQpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoYXV0byogZnJhbWUgPSB0
aGlzLT5mcmFtZSgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1
bWVudCgpOwotICAgICAgICBpZiAodGltZW91dElkID4gMCAmJiBkb2N1bWVudCkgewotICAgICAg
ICAgICAgRE9NVGltZXIqIHRpbWVyID0gZG9jdW1lbnQtPmZpbmRUaW1lb3V0KHRpbWVvdXRJZCk7
Ci0gICAgICAgICAgICBpZiAodGltZXIgJiYgV2ViVGhyZWFkQ29udGFpbnNPYnNlcnZlZERPTVRp
bWVyKHRpbWVyKSkgewotICAgICAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShDb250ZW50T2Jz
ZXJ2YXRpb24sIHN0cmVhbSA8PCAiRE9NV2luZG93OjpjbGVhclRpbWVvdXQ6IHJlbW92ZSByZWdp
c3RlcmVkIHRpbWVyICgiIDw8IHRpbWVyIDw8ICIpIik7Ci0gICAgICAgICAgICAgICAgV2ViVGhy
ZWFkUmVtb3ZlT2JzZXJ2ZWRET01UaW1lcih0aW1lcik7Ci0KLSAgICAgICAgICAgICAgICBpZiAo
IVdlYlRocmVhZENvdW50T2ZPYnNlcnZlZERPTVRpbWVycygpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLm9ic2VydmVkQ29udGVudENoYW5nZSgqZnJhbWUp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKyAg
ICBhdXRvIGhhbmRsZU9ic2VydmVkVGltZXJDYW5jZWxJZk5lZWRlZCA9IFsmXSB7CisgICAgICAg
IGlmICghZnJhbWUoKSB8fCAhZnJhbWUoKS0+ZG9jdW1lbnQoKSB8fCAhZnJhbWUoKS0+ZG9jdW1l
bnQoKS0+cGFnZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodGltZW91dElk
IDw9IDApCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8mIGRvY3VtZW50ID0gKmZy
YW1lKCktPmRvY3VtZW50KCk7CisgICAgICAgIGF1dG8qIHRpbWVyID0gZG9jdW1lbnQuZmluZFRp
bWVvdXQodGltZW91dElkKTsKKyAgICAgICAgaWYgKCF0aW1lcikKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgYXV0byYgcGFnZSA9ICpkb2N1bWVudC5wYWdlKCk7CisgICAgICAgIGF1dG8m
IGNvbnRlbnRDaGFuZ2VPYnNlcnZlciA9IHBhZ2UuY29udGVudENoYW5nZU9ic2VydmVyKCk7Cisg
ICAgICAgIGlmICghY29udGVudENoYW5nZU9ic2VydmVyLmNvbnRhaW5zT2JzZXJ2ZWRET01UaW1l
cigqdGltZXIpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBMT0dfV0lUSF9TVFJFQU0o
Q29udGVudE9ic2VydmF0aW9uLCBzdHJlYW0gPDwgIkRPTVdpbmRvdzo6Y2xlYXJUaW1lb3V0OiBy
ZW1vdmUgcmVnaXN0ZXJlZCB0aW1lciAoIiA8PCB0aW1lciA8PCAiKSIpOworICAgICAgICBjb250
ZW50Q2hhbmdlT2JzZXJ2ZXIucmVtb3ZlT2JzZXJ2ZWRET01UaW1lcigqdGltZXIpOworICAgICAg
ICBpZiAoY29udGVudENoYW5nZU9ic2VydmVyLmNvdW50T2ZPYnNlcnZlZERPTVRpbWVycygpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBwYWdlLmNocm9tZSgpLmNsaWVudCgpLm9ic2Vy
dmVkQ29udGVudENoYW5nZSgqZnJhbWUoKSk7CisgICAgfTsKKyAgICBoYW5kbGVPYnNlcnZlZFRp
bWVyQ2FuY2VsSWZOZWVkZWQoKTsKICNlbmRpZgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBmNjg5ZGI3MWQwYzZiYjZmOTg2NDkxN2UwYjZmODFhY2Yw
NjIzZTVlLi5kOGFlYjJmOTg3NTdmODMwYTdkMjZkMzAyNGUyNWQyZTBmODQ2MTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRlICJXS0Nv
bnRlbnRPYnNlcnZhdGlvbi5oIgorI2luY2x1ZGUgIkNvbnRlbnRDaGFuZ2VPYnNlcnZlci5oIgog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgzOCw3ICs4MzgsNyBAQCB2b2lkIEZy
YW1lOjp3aWxsRGV0YWNoUGFnZSgpCiAgICAgICAgIHBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRpbmF0
b3IoKS0+d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSgqbV92aWV3KTsKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgaWYgKFdlYlRocmVhZENvdW50T2ZPYnNlcnZlZERPTVRpbWVycygp
ID4gMCAmJiBtX3BhZ2UpIHsKKyAgICBpZiAocGFnZSgpICYmIHBhZ2UoKS0+Y29udGVudENoYW5n
ZU9ic2VydmVyKCkuY291bnRPZk9ic2VydmVkRE9NVGltZXJzKCkpIHsKICAgICAgICAgTE9HKENv
bnRlbnRPYnNlcnZhdGlvbiwgIkZyYW1lOjp3aWxsRGV0YWNoUGFnZTogcmVtb3ZlIHJlZ2lzdGVy
ZWQgdGltZXJzLiIpOwogICAgICAgICBtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmNsZWFyQ29u
dGVudENoYW5nZU9ic2VydmVycygqdGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAyOWQy
OGM4ZjJjMGIzYjM4NzMxZjUzOTUxZTAyYzZhOGJlM2QxZjIyLi4yM2QyY2FmNDVlZjE0MDA3MDQy
NzkwMDlhYzhkNjIwMTViZGViMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNjYsNiArNjYsMTAgQEAK
ICNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIgogI2VuZGlmCiAKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorI2luY2x1ZGUgIkNvbnRlbnRDaGFuZ2VPYnNlcnZlci5oIgor
I2VuZGlmCisKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRGVidWdnZXI7CiB9CkBAIC0yNTAsNiAr
MjU0LDkgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBQ
b2ludGVyTG9ja0NvbnRyb2xsZXImIHBvaW50ZXJMb2NrQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0
dXJuICptX3BvaW50ZXJMb2NrQ29udHJvbGxlcjsgfQorI2VuZGlmCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICBDb250ZW50Q2hhbmdlT2JzZXJ2ZXImIGNvbnRlbnRDaGFuZ2VPYnNlcnZl
cigpIHsgcmV0dXJuIG1fY29udGVudENoYW5nZU9ic2VydmVyOyB9CiAjZW5kaWYKICAgICBMaWJX
ZWJSVENQcm92aWRlciYgbGliV2ViUlRDUHJvdmlkZXIoKSB7IHJldHVybiBtX2xpYldlYlJUQ1By
b3ZpZGVyLmdldCgpOyB9CiAgICAgUlRDQ29udHJvbGxlciYgcnRjQ29udHJvbGxlcigpIHsgcmV0
dXJuIG1fcnRjQ29udHJvbGxlcjsgfQpAQCAtODA4LDYgKzgxNSw3IEBAIHByaXZhdGU6CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9lbmNsb3NlZEluU2Nyb2xsYWJsZUFu
Y2VzdG9yVmlldyB7IGZhbHNlIH07CisgICAgQ29udGVudENoYW5nZU9ic2VydmVyIG1fY29udGVu
dENoYW5nZU9ic2VydmVyOwogI2VuZGlmCiAgICAgCiAgICAgYm9vbCBtX3VzZVN5c3RlbUFwcGVh
cmFuY2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29u
dGVudENoYW5nZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hh
bmdlT2JzZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTg5ZTk2ODkyY2Y0YjUzZmU2Y2ZiNjgzOWEyNjc3
NDk0ZTM2ZmNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29u
dGVudENoYW5nZU9ic2VydmVyLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2luY2x1ZGUgIldLQ29udGVu
dE9ic2VydmF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NVGltZXI7
CisKK2NsYXNzIENvbnRlbnRDaGFuZ2VPYnNlcnZlciB7CitwdWJsaWM6CisgICAgQ29udGVudENo
YW5nZU9ic2VydmVyKCkgPSBkZWZhdWx0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFy
dE9ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9w
T2JzZXJ2aW5nQ29udGVudENoYW5nZXMoKTsKKyAgICBib29sIGlzT2JzZXJ2aW5nQ29udGVudENo
YW5nZXMoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRPYnNlcnZpbmdET01UaW1l
clNjaGVkdWxpbmcoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BPYnNlcnZpbmdET01U
aW1lclNjaGVkdWxpbmcoKTsKKyAgICBib29sIGlzT2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5n
KCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0T2JzZXJ2aW5nU3R5bGVSZWNhbGNT
Y2hlZHVsaW5nKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wT2JzZXJ2aW5nU3R5bGVS
ZWNhbGNTY2hlZHVsaW5nKCk7CisgICAgYm9vbCBpc09ic2VydmluZ1N0eWxlUmVjYWxjU2NoZWR1
bGluZygpOworCisgICAgdm9pZCBzZXRTaG91bGRPYnNlcnZlTmV4dFN0eWxlUmVjYWxjKGJvb2wp
OworICAgIGJvb2wgc2hvdWxkT2JzZXJ2ZU5leHRTdHlsZVJlY2FsYygpOworCisgICAgdm9pZCBz
ZXRPYnNlcnZlZENvbnRlbnRDaGFuZ2UoV0tDb250ZW50Q2hhbmdlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBXS0NvbnRlbnRDaGFuZ2Ugb2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCk7CisKKyAgICB2b2lk
IGFkZE9ic2VydmVkRE9NVGltZXIoRE9NVGltZXImKTsKKyAgICB2b2lkIHJlbW92ZU9ic2VydmVk
RE9NVGltZXIoRE9NVGltZXImKTsKKyAgICBib29sIGNvbnRhaW5zT2JzZXJ2ZWRET01UaW1lcihE
T01UaW1lciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGNvdW50T2ZPYnNlcnZlZERP
TVRpbWVycygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJPYnNlcnZlZERPTVRpbWVy
cygpOworfTsKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lv
cy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250
ZW50Q2hhbmdlT2JzZXJ2ZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDliYjM0Y2M3ZjcxNjc5YzY3NTI0YmFj
ZTU1ZmQ4MzA3N2Q0MzlmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
aW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5tbQpAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkNvbnRlbnRDaGFuZ2VPYnNlcnZlci5o
IgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgIkRPTVRpbWVyLmgiCisjaW1w
b3J0ICJXS0NvbnRlbnRPYnNlcnZhdGlvbkludGVybmFsLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordm9pZCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5nQ29udGVudENo
YW5nZXMoKQoreworICAgIFdLU3RhcnRPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygpOworfQorCit2
b2lkIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6c3RvcE9ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKCkK
K3sKKyAgICBXS1N0b3BPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygpOyAgIAorfQorCitib29sIENv
bnRlbnRDaGFuZ2VPYnNlcnZlcjo6aXNPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygpCit7CisgICAg
cmV0dXJuIFdLT2JzZXJ2aW5nQ29udGVudENoYW5nZXMoKTsgICAKK30KKwordm9pZCBDb250ZW50
Q2hhbmdlT2JzZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5nKCkKK3sKKyAg
ICBXS1N0YXJ0T2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5nKCk7Cit9CisKK3ZvaWQgQ29udGVu
dENoYW5nZU9ic2VydmVyOjpzdG9wT2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5nKCkKK3sKKyAg
ICBXS1N0b3BPYnNlcnZpbmdET01UaW1lclNjaGVkdWxpbmcoKTsKK30KKworYm9vbCBDb250ZW50
Q2hhbmdlT2JzZXJ2ZXI6OmlzT2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5nKCkKK3sKKyAgICBy
ZXR1cm4gV0tJc09ic2VydmluZ0RPTVRpbWVyU2NoZWR1bGluZygpOworfQorCit2b2lkIENvbnRl
bnRDaGFuZ2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZpbmdTdHlsZVJlY2FsY1NjaGVkdWxpbmcoKQor
eworICAgIFdLU3RhcnRPYnNlcnZpbmdTdHlsZVJlY2FsY1NjaGVkdWxpbmcoKTsKK30KKwordm9p
ZCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OnN0b3BPYnNlcnZpbmdTdHlsZVJlY2FsY1NjaGVkdWxp
bmcoKQoreworICAgIFdLU3RvcE9ic2VydmluZ1N0eWxlUmVjYWxjU2NoZWR1bGluZygpOworfQor
Citib29sIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6aXNPYnNlcnZpbmdTdHlsZVJlY2FsY1NjaGVk
dWxpbmcoKQoreworICAgIHJldHVybiBXS0lzT2JzZXJ2aW5nU3R5bGVSZWNhbGNTY2hlZHVsaW5n
KCk7Cit9CisKK3ZvaWQgQ29udGVudENoYW5nZU9ic2VydmVyOjpzZXRTaG91bGRPYnNlcnZlTmV4
dFN0eWxlUmVjYWxjKGJvb2wgb2JzZXJ2ZSkKK3sKKyAgICBXS1NldFNob3VsZE9ic2VydmVOZXh0
U3R5bGVSZWNhbGMob2JzZXJ2ZSk7Cit9CisKK2Jvb2wgQ29udGVudENoYW5nZU9ic2VydmVyOjpz
aG91bGRPYnNlcnZlTmV4dFN0eWxlUmVjYWxjKCkKK3sKKyAgICByZXR1cm4gV0tTaG91bGRPYnNl
cnZlTmV4dFN0eWxlUmVjYWxjKCk7Cit9CisKK1dLQ29udGVudENoYW5nZSBDb250ZW50Q2hhbmdl
T2JzZXJ2ZXI6Om9ic2VydmVkQ29udGVudENoYW5nZSgpCit7CisgICAgcmV0dXJuIFdLT2JzZXJ2
ZWRDb250ZW50Q2hhbmdlKCk7Cit9CisKK3Vuc2lnbmVkIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6
Y291bnRPZk9ic2VydmVkRE9NVGltZXJzKCkKK3sKKyAgICByZXR1cm4gV2ViVGhyZWFkQ291bnRP
Zk9ic2VydmVkRE9NVGltZXJzKCk7Cit9CisKK3ZvaWQgQ29udGVudENoYW5nZU9ic2VydmVyOjpj
bGVhck9ic2VydmVkRE9NVGltZXJzKCkKK3sKKyAgICBXZWJUaHJlYWRDbGVhck9ic2VydmVkRE9N
VGltZXJzKCk7Cit9CisKK3ZvaWQgQ29udGVudENoYW5nZU9ic2VydmVyOjpzZXRPYnNlcnZlZENv
bnRlbnRDaGFuZ2UoV0tDb250ZW50Q2hhbmdlIGNoYW5nZSkKK3sKKyAgICBXS1NldE9ic2VydmVk
Q29udGVudENoYW5nZShjaGFuZ2UpOworfQorCitib29sIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6
Y29udGFpbnNPYnNlcnZlZERPTVRpbWVyKERPTVRpbWVyJiB0aW1lcikKK3sKKyAgICByZXR1cm4g
V2ViVGhyZWFkQ29udGFpbnNPYnNlcnZlZERPTVRpbWVyKCZ0aW1lcik7Cit9CisKK3ZvaWQgQ29u
dGVudENoYW5nZU9ic2VydmVyOjphZGRPYnNlcnZlZERPTVRpbWVyKERPTVRpbWVyJiB0aW1lcikK
K3sKKyAgICBXZWJUaHJlYWRBZGRPYnNlcnZlZERPTVRpbWVyKCZ0aW1lcik7Cit9CisKK3ZvaWQg
Q29udGVudENoYW5nZU9ic2VydmVyOjpyZW1vdmVPYnNlcnZlZERPTVRpbWVyKERPTVRpbWVyJiB0
aW1lcikKK3sKKyAgICBXZWJUaHJlYWRSZW1vdmVPYnNlcnZlZERPTVRpbWVyKCZ0aW1lcik7Cit9
CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KaW5kZXggZWNjZmE2M2Q5ZjFhMTcwZDIwOTMwNzFh
MjZhNmM4YzJmZTRjNDU1OC4uYjhjOGNlZmUzMzg4ZjU2ZjVkMjg2NDRhMGJhYzdjODEzNGZkYjkw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQpAQCAtMzIs
NiArMzIsNyBAQAogI2ltcG9ydCAiQXV0b3Njcm9sbENvbnRyb2xsZXIuaCIKICNpbXBvcnQgIkNo
cm9tZS5oIgogI2ltcG9ydCAiQ2hyb21lQ2xpZW50LmgiCisjaW1wb3J0ICJDb250ZW50Q2hhbmdl
T2JzZXJ2ZXIuaCIKICNpbXBvcnQgIkRhdGFUcmFuc2Zlci5oIgogI2ltcG9ydCAiRHJhZ1N0YXRl
LmgiCiAjaW1wb3J0ICJGb2N1c0NvbnRyb2xsZXIuaCIKQEAgLTQ5MCwxOCArNDkxLDIxIEBAIHZv
aWQgRXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKFdlYkV2ZW50ICpldmVudCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIGF1dG8mIGRvY3Vt
ZW50ID0gKm1fZnJhbWUuZG9jdW1lbnQoKTsKKyAgICAvLyBFbnN1cmUgd2Ugc3RhcnQgbW91c2Ug
bW92ZSBldmVudCBkaXNwYXRjaGluZyBvbiBhIGNsZWFyIHRyZWUuCisgICAgZG9jdW1lbnQudXBk
YXRlU3R5bGVJZk5lZWRlZCgpOwogCi0gICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVTdHls
ZUlmTmVlZGVkKCk7CisgICAgYXV0byYgY29udGVudENoYW5nZU9ic2VydmVyID0gZG9jdW1lbnQu
cGFnZSgpLT5jb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKTsKKyAgICBjb250ZW50Q2hhbmdlT2JzZXJ2
ZXIuc3RhcnRPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygpOworICAgIGNvbnRlbnRDaGFuZ2VPYnNl
cnZlci5zdGFydE9ic2VydmluZ0RPTVRpbWVyU2NoZWR1bGluZygpOwogCi0gICAgV0tTdGFydE9i
c2VydmluZ0NvbnRlbnRDaGFuZ2VzKCk7Ci0gICAgV0tTdGFydE9ic2VydmluZ0RPTVRpbWVyU2No
ZWR1bGluZygpOwogICAgIEN1cnJlbnRFdmVudFNjb3BlIHNjb3BlKGV2ZW50KTsKICAgICBldmVu
dC53YXNIYW5kbGVkID0gbW91c2VNb3ZlZChjdXJyZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCkpOwot
ICAgIAotICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBoZXJlPwotICAgIG1fZnJhbWUuZG9jdW1l
bnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwotICAgIFdLU3RvcE9ic2VydmluZ0RPTVRpbWVy
U2NoZWR1bGluZygpOwotICAgIFdLU3RvcE9ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKCk7CisKKyAg
ICAvLyBSdW4gc3R5bGUgcmVjYWxjIHRvIGJlIGFibGUgdG8gY2FwdHVyZSBjb250ZW50IGNoYW5n
ZXMgYXMgdGhlIHJlc3VsdCBvZiB0aGUgbW91c2UgbW92ZSBldmVudC4KKyAgICBkb2N1bWVudC51
cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgY29udGVudENoYW5nZU9ic2VydmVyLnN0b3BPYnNl
cnZpbmdET01UaW1lclNjaGVkdWxpbmcoKTsKKyAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIuc3Rv
cE9ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKCk7CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1Jl
bmRlclRyZWVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9S
ZW5kZXJUcmVlVXBkYXRlci5jcHAKaW5kZXggNmFjODhmODgxMzFlNWIwOTk2ZDk4M2FiMzVmNDk2
ZjUzYWRhM2FjNi4uODUwNWY1ZDYxYzY1ZTMyYWFmYTgwODc0ODRkM2RmZGYwNTM1NjYzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRh
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJl
ZVVwZGF0ZXIuY3BwCkBAIC01MCw4ICs1MCw3IEBACiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNp
bmcuaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0jaW5jbHVkZSAiV0tDb250ZW50T2Jz
ZXJ2YXRpb24uaCIKLSNpbmNsdWRlICJXS0NvbnRlbnRPYnNlcnZhdGlvbkludGVybmFsLmgiCisj
aW5jbHVkZSAiQ29udGVudENoYW5nZU9ic2VydmVyLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNTksMTEgKzU4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogY2xhc3MgQ2hlY2tGb3JWaXNpYmlsaXR5Q2hhbmdlIHsKIHB1Ymxp
YzoKLSAgICBDaGVja0ZvclZpc2liaWxpdHlDaGFuZ2UoY29uc3QgRWxlbWVudCYpOworICAgIENo
ZWNrRm9yVmlzaWJpbGl0eUNoYW5nZShjb25zdCBFbGVtZW50JiwgUGFnZSopOwogICAgIH5DaGVj
a0ZvclZpc2liaWxpdHlDaGFuZ2UoKTsKIAogcHJpdmF0ZToKICAgICBjb25zdCBFbGVtZW50JiBt
X2VsZW1lbnQ7CisgICAgUGFnZSogbV9wYWdlIHsgbnVsbHB0ciB9OwogICAgIERpc3BsYXlUeXBl
IG1fcHJldmlvdXNEaXNwbGF5OwogICAgIFZpc2liaWxpdHkgbV9wcmV2aW91c1Zpc2liaWxpdHk7
CiAgICAgVmlzaWJpbGl0eSBtX3ByZXZpb3VzSW1wbGljaXRWaXNpYmlsaXR5OwpAQCAtMzA4LDcg
KzMwOCw3IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZVJlbmRlcmVyU3R5bGUoUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsIFJlbmRlclN0eWxlCiB2b2lkIFJlbmRlclRyZWVVcGRhdGVy
Ojp1cGRhdGVFbGVtZW50UmVuZGVyZXIoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVs
ZW1lbnRVcGRhdGUmIHVwZGF0ZSkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIENo
ZWNrRm9yVmlzaWJpbGl0eUNoYW5nZSBjaGVja0ZvclZpc2liaWxpdHlDaGFuZ2UoZWxlbWVudCk7
CisgICAgQ2hlY2tGb3JWaXNpYmlsaXR5Q2hhbmdlIGNoZWNrRm9yVmlzaWJpbGl0eUNoYW5nZShl
bGVtZW50LCBtX2RvY3VtZW50LnBhZ2UoKSk7CiAjZW5kaWYKIAogICAgIGJvb2wgc2hvdWxkVGVh
ckRvd25SZW5kZXJlcnMgPSB1cGRhdGUuY2hhbmdlID09IFN0eWxlOjpEZXRhY2ggJiYgKGVsZW1l
bnQucmVuZGVyZXIoKSB8fCBlbGVtZW50Lmhhc0Rpc3BsYXlDb250ZW50cygpKTsKQEAgLTY2Nywx
NyArNjY3LDIyIEBAIHN0YXRpYyBWaXNpYmlsaXR5IGVsZW1lbnRJbXBsaWNpdFZpc2liaWxpdHko
Y29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gVmlzaWJpbGl0eTo6VmlzaWJsZTsK
IH0KIAotQ2hlY2tGb3JWaXNpYmlsaXR5Q2hhbmdlOjpDaGVja0ZvclZpc2liaWxpdHlDaGFuZ2Uo
Y29uc3QgRWxlbWVudCYgZWxlbWVudCkKK0NoZWNrRm9yVmlzaWJpbGl0eUNoYW5nZTo6Q2hlY2tG
b3JWaXNpYmlsaXR5Q2hhbmdlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIFBhZ2UqIHBhZ2UpCiAg
ICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKKyAgICAsIG1fcGFnZShwYWdlKQogICAgICwgbV9wcmV2
aW91c0Rpc3BsYXkoZWxlbWVudC5yZW5kZXJTdHlsZSgpID8gZWxlbWVudC5yZW5kZXJTdHlsZSgp
LT5kaXNwbGF5KCkgOiBEaXNwbGF5VHlwZTo6Tm9uZSkKICAgICAsIG1fcHJldmlvdXNWaXNpYmls
aXR5KGVsZW1lbnQucmVuZGVyU3R5bGUoKSA/IGVsZW1lbnQucmVuZGVyU3R5bGUoKS0+dmlzaWJp
bGl0eSgpIDogVmlzaWJpbGl0eTo6SGlkZGVuKQotICAgICwgbV9wcmV2aW91c0ltcGxpY2l0Vmlz
aWJpbGl0eShXS09ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKCkgJiYgV0tPYnNlcnZlZENvbnRlbnRD
aGFuZ2UoKSAhPSBXS0NvbnRlbnRWaXNpYmlsaXR5Q2hhbmdlID8gZWxlbWVudEltcGxpY2l0Vmlz
aWJpbGl0eShlbGVtZW50KSA6IFZpc2liaWxpdHk6OlZpc2libGUpCisgICAgLCBtX3ByZXZpb3Vz
SW1wbGljaXRWaXNpYmlsaXR5KHBhZ2UgJiYgcGFnZS0+Y29udGVudENoYW5nZU9ic2VydmVyKCku
aXNPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygpICYmIHBhZ2UtPmNvbnRlbnRDaGFuZ2VPYnNlcnZl
cigpLm9ic2VydmVkQ29udGVudENoYW5nZSgpICE9IFdLQ29udGVudFZpc2liaWxpdHlDaGFuZ2Ug
PyBlbGVtZW50SW1wbGljaXRWaXNpYmlsaXR5KGVsZW1lbnQpIDogVmlzaWJpbGl0eTo6VmlzaWJs
ZSkKIHsKIH0KIAogQ2hlY2tGb3JWaXNpYmlsaXR5Q2hhbmdlOjp+Q2hlY2tGb3JWaXNpYmlsaXR5
Q2hhbmdlKCkKIHsKLSAgICBpZiAoIVdLT2JzZXJ2aW5nQ29udGVudENoYW5nZXMoKSkKKyAgICBp
ZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgY29udGVudENoYW5nZU9i
c2VydmVyID0gbV9wYWdlLT5jb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKTsKKyAgICBpZiAoIWNvbnRl
bnRDaGFuZ2VPYnNlcnZlci5pc09ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGF1dG8qIHN0eWxlID0gbV9lbGVtZW50LnJlbmRlclN0eWxlKCk7CkBAIC02
OTYsNyArNzAxLDcgQEAgQ2hlY2tGb3JWaXNpYmlsaXR5Q2hhbmdlOjp+Q2hlY2tGb3JWaXNpYmls
aXR5Q2hhbmdlKCkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICgobV9wcmV2aW91c0Rpc3BsYXkg
PT0gRGlzcGxheVR5cGU6Ok5vbmUgJiYgc3R5bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6
Tm9uZSkgfHwgKG1fcHJldmlvdXNWaXNpYmlsaXR5ID09IFZpc2liaWxpdHk6OkhpZGRlbiAmJiBz
dHlsZS0+dmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OkhpZGRlbikKICAgICAgICAgfHwgKG1f
cHJldmlvdXNJbXBsaWNpdFZpc2liaWxpdHkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuICYmIGVsZW1l
bnRJbXBsaWNpdFZpc2liaWxpdHkobV9lbGVtZW50KSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKSkK
LSAgICAgICAgV0tTZXRPYnNlcnZlZENvbnRlbnRDaGFuZ2UoV0tDb250ZW50VmlzaWJpbGl0eUNo
YW5nZSk7CisgICAgICAgIGNvbnRlbnRDaGFuZ2VPYnNlcnZlci5zZXRPYnNlcnZlZENvbnRlbnRD
aGFuZ2UoV0tDb250ZW50VmlzaWJpbGl0eUNoYW5nZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBh
MjdkMTJmZGMyMjlhMDQ0NTg3ZDQ2YjkxYWIwNDM1YzA1NWZkMTJiLi40NWJlMDEyMWM2M2U5MWM1
Zjg4ZmYxZTgyYmVhYmE0OTRlZGNmNjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNTcsNiArNTcsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9BdXRvZmlsbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9BdXRvZmlsbEVsZW1lbnRz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Nocm9tZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9Db250ZW50
Q2hhbmdlT2JzZXJ2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdGlvbi5oPgogI2lt
cG9ydCA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaD4KQEAgLTExMyw3ICsxMTQsNiBAQAogI2ltcG9ydCA8
V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJdGVyYXRvci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlVW5pdHMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvV0tD
b250ZW50T2JzZXJ2YXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQuaD4KICNpbXBv
cnQgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Lmg+CkBAIC01MzgsMTEgKzUzOCwxMiBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbkFw
cGVhcmFuY2UoKQogdm9pZCBXZWJQYWdlOjpoYW5kbGVTeW50aGV0aWNDbGljayhOb2RlKiBub2Rl
UmVzcG9uZGluZ1RvQ2xpY2ssIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2F0aW9uLCBP
cHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZmllcnMpCiB7CiAgICAgSW50UG9pbnQg
cm91bmRlZEFkanVzdGVkUG9pbnQgPSByb3VuZGVkSW50UG9pbnQobG9jYXRpb24pOwotICAgIEZy
YW1lJiBtYWluZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOworICAgIGF1dG8mIG1haW5mcmFt
ZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgYXV0byYgY29udGVudENoYW5nZU9ic2VydmVy
ID0gbV9wYWdlLT5jb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKTsKIAogICAgIExPR19XSVRIX1NUUkVB
TShDb250ZW50T2JzZXJ2YXRpb24sIHN0cmVhbSA8PCAiaGFuZGxlU3ludGhldGljQ2xpY2s6IG5v
ZGUoIiA8PCBub2RlUmVzcG9uZGluZ1RvQ2xpY2sgPDwgIikgIiA8PCBsb2NhdGlvbik7Ci0gICAg
V0tTdGFydE9ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKCk7Ci0gICAgV0tTdGFydE9ic2VydmluZ0RP
TVRpbWVyU2NoZWR1bGluZygpOworICAgIGNvbnRlbnRDaGFuZ2VPYnNlcnZlci5zdGFydE9ic2Vy
dmluZ0NvbnRlbnRDaGFuZ2VzKCk7CisgICAgY29udGVudENoYW5nZU9ic2VydmVyLnN0YXJ0T2Jz
ZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5nKCk7CiAKICAgICAvLyBGSVhNRTogUGFzcyBjYXBzIGxv
Y2sgc3RhdGUuCiAgICAgYm9vbCBzaGlmdEtleSA9IG1vZGlmaWVycy5jb250YWlucyhXZWJFdmVu
dDo6TW9kaWZpZXI6OlNoaWZ0S2V5KTsKQEAgLTU1Miw4ICs1NTMsOCBAQCB2b2lkIFdlYlBhZ2U6
OmhhbmRsZVN5bnRoZXRpY0NsaWNrKE5vZGUqIG5vZGVSZXNwb25kaW5nVG9DbGljaywgY29uc3Qg
V2ViQ29yZTo6RgogICAgIG1haW5mcmFtZS5ldmVudEhhbmRsZXIoKS5tb3VzZU1vdmVkKFBsYXRm
b3JtTW91c2VFdmVudChyb3VuZGVkQWRqdXN0ZWRQb2ludCwgcm91bmRlZEFkanVzdGVkUG9pbnQs
IE5vQnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBzaGlmdEtleSwgY3RybEtl
eSwgYWx0S2V5LCBtZXRhS2V5LCBXYWxsVGltZTo6bm93KCksIFdlYkNvcmU6OkZvcmNlQXRDbGlj
aywgV2ViQ29yZTo6Tm9UYXApKTsKICAgICBtYWluZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlU3R5
bGVJZk5lZWRlZCgpOwogCi0gICAgV0tTdG9wT2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5nKCk7
Ci0gICAgV0tTdG9wT2JzZXJ2aW5nQ29udGVudENoYW5nZXMoKTsKKyAgICBjb250ZW50Q2hhbmdl
T2JzZXJ2ZXIuc3RvcE9ic2VydmluZ0RPTVRpbWVyU2NoZWR1bGluZygpOworICAgIGNvbnRlbnRD
aGFuZ2VPYnNlcnZlci5zdG9wT2JzZXJ2aW5nQ29udGVudENoYW5nZXMoKTsKIAogICAgIG1fcGVu
ZGluZ1N5bnRoZXRpY0NsaWNrTm9kZSA9IG51bGxwdHI7CiAgICAgbV9wZW5kaW5nU3ludGhldGlj
Q2xpY2tMb2NhdGlvbiA9IEZsb2F0UG9pbnQoKTsKQEAgLTU2Miw3ICs1NjMsNyBAQCB2b2lkIFdl
YlBhZ2U6OmhhbmRsZVN5bnRoZXRpY0NsaWNrKE5vZGUqIG5vZGVSZXNwb25kaW5nVG9DbGljaywg
Y29uc3QgV2ViQ29yZTo6RgogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBzd2l0Y2ggKFdLT2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCkpIHsKKyAgICBzd2l0Y2ggKGNv
bnRlbnRDaGFuZ2VPYnNlcnZlci5vYnNlcnZlZENvbnRlbnRDaGFuZ2UoKSkgewogICAgIGNhc2Ug
V0tDb250ZW50VmlzaWJpbGl0eUNoYW5nZToKICAgICAgICAgLy8gVGhlIG1vdmUgZXZlbnQgY2F1
c2VkIG5ldyBjb250ZW50cyB0byBhcHBlYXIuIERvbid0IHNlbmQgdGhlIGNsaWNrIGV2ZW50Lgog
ICAgICAgICBMT0coQ29udGVudE9ic2VydmF0aW9uLCAiaGFuZGxlU3ludGhldGljQ2xpY2s6IE9i
c2VydmVkIG1lYW5pbmdmdWwgdmlzaWJsZSBjaGFuZ2UgLT4gaG92ZXIuIik7CkBAIC01ODgsNyAr
NTg5LDcgQEAgdm9pZCBXZWJQYWdlOjpjb21wbGV0ZVBlbmRpbmdTeW50aGV0aWNDbGlja0ZvckNv
bnRlbnRDaGFuZ2VPYnNlcnZlcigpCiAgICAgaWYgKCFtX3BlbmRpbmdTeW50aGV0aWNDbGlja05v
ZGUpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBPbmx5IGRpc3BhdGNoIHRoZSBjbGljayBpZiB0
aGUgZG9jdW1lbnQgZGlkbid0IGdldCBjaGFuZ2VkIGJ5IGFueSB0aW1lcnMgc3RhcnRlZCBieSB0
aGUgbW92ZSBldmVudC4KLSAgICBpZiAoV0tPYnNlcnZlZENvbnRlbnRDaGFuZ2UoKSA9PSBXS0Nv
bnRlbnROb0NoYW5nZSkgeworICAgIGlmIChtX3BhZ2UtPmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigp
Lm9ic2VydmVkQ29udGVudENoYW5nZSgpID09IFdLQ29udGVudE5vQ2hhbmdlKSB7CiAgICAgICAg
IExPRyhDb250ZW50T2JzZXJ2YXRpb24sICJObyBjaGFnZSB3YXMgb2JzZXJ2ZWQgLT4gY2xpY2su
Iik7CiAgICAgICAgIGNvbXBsZXRlU3ludGhldGljQ2xpY2sobV9wZW5kaW5nU3ludGhldGljQ2xp
Y2tOb2RlLmdldCgpLCBtX3BlbmRpbmdTeW50aGV0aWNDbGlja0xvY2F0aW9uLCBtX3BlbmRpbmdT
eW50aGV0aWNDbGlja01vZGlmaWVycywgV2ViQ29yZTo6T25lRmluZ2VyVGFwKTsKICAgICB9IGVs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQppbmRleCA4MjUwMWViMjU0ZjI3OGMyNzJiODRjMjVh
ZjVhYTRlYjY3ZGE1YmJhLi45ZTUyZWI2NGVjMjkxMzI4ODU0NzIwMDJkYmNlYzZjZDk0NjM4MTQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnRJT1MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCkBAIC00NCw2ICs0NCw3IEBACiAjaW1wb3J0ICJX
ZWJWaWV3LmgiCiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlZpZXdQ
cml2YXRlLmgiCisjaW1wb3J0IDxXZWJDb3JlL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9EaXNhYmxlZEFkYXB0YXRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zp
bGVDaG9vc2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgpAQCAtMTgzLDE2ICsx
ODQsMjEgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnRJT1M6OnNldE5lZWRzU2Nyb2xsTm90aWZpY2F0
aW9ucyhXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGJvb2wKIAogdm9pZCBXZWJDaHJvbWVDbGllbnRJ
T1M6Om9ic2VydmVkQ29udGVudENoYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUpCiB7Ci0gICAg
W1t3ZWJWaWV3KCkgX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldygpIGRp
ZE9ic2VydmVEZWZlcnJlZENvbnRlbnRDaGFuZ2U6V0tPYnNlcnZlZENvbnRlbnRDaGFuZ2UoKSBm
b3JGcmFtZTpraXQoJmZyYW1lKV07CisgICAgaWYgKCFmcmFtZS5wYWdlKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBbW3dlYlZpZXcoKSBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3
ZWJWaWV3KCkgZGlkT2JzZXJ2ZURlZmVycmVkQ29udGVudENoYW5nZTpmcmFtZS5wYWdlKCktPmNv
bnRlbnRDaGFuZ2VPYnNlcnZlcigpLm9ic2VydmVkQ29udGVudENoYW5nZSgpIGZvckZyYW1lOmtp
dCgmZnJhbWUpXTsKIH0KIAogdm9pZCBXZWJDaHJvbWVDbGllbnRJT1M6OmNsZWFyQ29udGVudENo
YW5nZU9ic2VydmVycyhXZWJDb3JlOjpGcmFtZSYgZnJhbWUpCiB7Ci0gICAgQVNTRVJUKFdlYlRo
cmVhZENvdW50T2ZPYnNlcnZlZERPTVRpbWVycygpID4gMCk7Ci0gICAgaWYgKFdlYlRocmVhZENv
dW50T2ZPYnNlcnZlZERPTVRpbWVycygpID4gMCkgewotICAgICAgICBXZWJUaHJlYWRDbGVhck9i
c2VydmVkRE9NVGltZXJzKCk7Ci0gICAgICAgIG9ic2VydmVkQ29udGVudENoYW5nZShmcmFtZSk7
Ci0gICAgfQorICAgIGlmICghZnJhbWUucGFnZSgpKQorICAgICAgICByZXR1cm47CisgICAgYXV0
byYgY29udGVudENoYW5nZU9ic2VydmVyID0gZnJhbWUucGFnZSgpLT5jb250ZW50Q2hhbmdlT2Jz
ZXJ2ZXIoKTsKKyAgICBBU1NFUlQoY29udGVudENoYW5nZU9ic2VydmVyLmNvdW50T2ZPYnNlcnZl
ZERPTVRpbWVycygpKTsKKyAgICBpZiAoIWNvbnRlbnRDaGFuZ2VPYnNlcnZlci5jb3VudE9mT2Jz
ZXJ2ZWRET01UaW1lcnMoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGNvbnRlbnRDaGFuZ2VPYnNl
cnZlci5jbGVhck9ic2VydmVkRE9NVGltZXJzKCk7CisgICAgb2JzZXJ2ZWRDb250ZW50Q2hhbmdl
KGZyYW1lKTsKIH0KIAogc3RhdGljIGlubGluZSBOU1N0cmluZyAqbmFtZUZvclZpZXdwb3J0Rml0
VmFsdWUoVmlld3BvcnRGaXQgdmFsdWUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>