<?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>71408</bug_id>
          
          <creation_ts>2011-11-02 15:04:01 -0700</creation_ts>
          <short_desc>Implement MediaController.</short_desc>
          <delta_ts>2011-11-15 16:07:38 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.w3.org/TR/html5/video.html#mediacontroller</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>71341</dependson>
    
    <dependson>71702</dependson>
          <blocked>71410</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>abarth</cc>
    
    <cc>arun.patole</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>494949</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-02 15:04:01 -0700</bug_when>
    <thetext>Implement MediaController.  &lt;http://www.w3.org/TR/html5/video.html#mediacontroller&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495051</commentid>
    <comment_count>1</comment_count>
      <attachid>113402</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-02 16:44:14 -0700</bug_when>
    <thetext>Created attachment 113402
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495059</commentid>
    <comment_count>2</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-02 16:49:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/10327011&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495063</commentid>
    <comment_count>3</comment_count>
      <attachid>113402</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-02 16:56:12 -0700</bug_when>
    <thetext>Comment on attachment 113402
Patch

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

Thanks.  It might be nice to add a link to the spec:

http://www.whatwg.org/specs/web-apps/current-work/#mediacontroller

I&apos;m glad the EventTargetFactory.in file worked for you.

&gt; Source/WebCore/bindings/js/JSHTMLMediaElementCustom.cpp:31
&gt; +#if ENABLE(VIDEO)

Usually we put this between config.h and the first header file.

&gt; Source/WebCore/dom/EventTargetFactory.in:16
&gt; +MediaController

No conditional=VIDEO?

&gt; Source/WebCore/html/MediaController.cpp:41
&gt; +    static HashMap&lt;String, MediaController*&gt;* map = new HashMap&lt;String, MediaController*&gt;();

DEFINE_STATIC_LOCAL ?

&gt; Source/WebCore/html/MediaControllerInterface.h:39
&gt; +class MediaControllerInterface {

So many virtual functions!  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495065</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-02 16:56:46 -0700</bug_when>
    <thetext>(I&apos;ll let someone who actually understands media do a real review.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495080</commentid>
    <comment_count>5</comment_count>
      <attachid>113402</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-02 17:16:44 -0700</bug_when>
    <thetext>Comment on attachment 113402
Patch

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

&gt;&gt; Source/WebCore/bindings/js/JSHTMLMediaElementCustom.cpp:31
&gt;&gt; +#if ENABLE(VIDEO)
&gt; 
&gt; Usually we put this between config.h and the first header file.

I&apos;ll move it.

&gt;&gt; Source/WebCore/dom/EventTargetFactory.in:16
&gt;&gt; +MediaController
&gt; 
&gt; No conditional=VIDEO?

Whoops!  Yes, I&apos;ll add that.  This is the first I&apos;ve seen of EventTargetFactory.

&gt;&gt; Source/WebCore/html/MediaController.cpp:41
&gt;&gt; +    static HashMap&lt;String, MediaController*&gt;* map = new HashMap&lt;String, MediaController*&gt;();
&gt; 
&gt; DEFINE_STATIC_LOCAL ?

Sure thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495084</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-02 17:20:46 -0700</bug_when>
    <thetext>&gt; Whoops!  Yes, I&apos;ll add that.  This is the first I&apos;ve seen of EventTargetFactory.

Yeah, that&apos;s why I got interested in your patch.  I added it recently to generate all the boilerplate code for event targets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495525</commentid>
    <comment_count>7</comment_count>
      <attachid>113402</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-11-03 09:21:57 -0700</bug_when>
    <thetext>Comment on attachment 113402
Patch

r-ing due to Adam&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495610</commentid>
    <comment_count>8</comment_count>
      <attachid>113402</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-03 10:31:14 -0700</bug_when>
    <thetext>Comment on attachment 113402
Patch

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

&gt; Source/WebCore/bindings/js/JSHTMLMediaElementCustom.cpp:3
&gt; + * Copyright (C) 2008 Apple Inc. All Rights Reserved.
&gt; + *

How long have you been working on this patch? ;-)

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2488
&gt;      // of playback is forwards and the media element does not have a loop attribute specified,
&gt;      float now = currentTime();
&gt;      if (m_playbackRate &gt; 0)
&gt; -        return dur &gt; 0 &amp;&amp; now &gt;= dur &amp;&amp; !loop();
&gt; +        return dur &gt; 0 &amp;&amp; now &gt;= dur &amp;&amp; (!loop() || m_mediaController);
&gt;  
&gt;      // or the current playback position is the earliest possible position and the direction 
&gt;      // of playback is backwards

The comments in the function are quoted directly from the spec. Please update the comments to match current spec text.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3211
&gt; +    float currentTime = m_mediaController-&gt;currentTime();
&gt; +    if (currentTime &lt; startTime() || currentTime &gt; startTime() + duration())
&gt; +        return true;

It might be worth renaming &quot;currentTime&quot; to make it clear that it is the &quot;media controller position&quot;.

&gt; Source/WebCore/html/HTMLMediaElement.h:426
&gt; +    bool isLoading() const { return !m_currentSrc.isEmpty(); }

&quot;isLoading&quot; implies (to me) that the is networkState is NETWORK_LOADING, not that it has a url. I don&apos;t have another suggestion because I am not sure how this will be used.

&gt; Source/WebCore/html/MediaController.cpp:163
&gt; +void MediaController::setCurrentTime(float time, ExceptionCode&amp; code)
&gt; +{
&gt; +    m_clock-&gt;setCurrentTime(time);
&gt; +    for (size_t index = 0; index &lt; m_mediaElements.size(); ++index)
&gt; +        m_mediaElements[index]-&gt;seek(time, code);
&gt; +}

Do we need to call updateReadyState here?

&gt; Source/WebCore/html/MediaController.cpp:170
&gt; +    if (m_playbackState == ENDED) {
&gt; +        ExceptionCode code = 0;
&gt; +        setCurrentTime(0, code);
&gt; +    }

I don&apos;t see this step in the spec, although I might have overlooked. Please include spec sections and quote the spec text for this and other controller logic as we do in HTMLMediaElement.

&gt; Source/WebCore/html/MediaController.cpp:174
&gt; +    m_paused = false;
&gt; +    updateMediaElements();
&gt; +}

You need to fire a &apos;play&apos; event here. Also, don&apos;t you need to call updatePlaybackState here to &quot;report the controller state of the MediaController.&quot;?

&gt; Source/WebCore/html/MediaController.cpp:181
&gt; +void MediaController::pause()
&gt; +{
&gt; +    m_paused = true;
&gt; +    for (size_t index = 0; index &lt; m_mediaElements.size(); ++index)
&gt; +        m_mediaElements[index]-&gt;pause();
&gt; +}

This should return early if m_paused is already true. It should fire a &apos;pause&apos; event and &quot;report the controller state of the MediaController.&quot;

&gt; Source/WebCore/html/MediaController.cpp:186
&gt; +void MediaController::setDefaultPlaybackRate(float rate)
&gt; +{
&gt; +    m_defaultPlaybackRate = rate;
&gt; +}

This needs to fire a &apos;ratechange&apos; event.

&gt; Source/WebCore/html/MediaController.cpp:195
&gt; +void MediaController::setPlaybackRate(float rate)
&gt; +{
&gt; +    m_playbackRate = rate;
&gt; +    m_clock-&gt;setPlayRate(rate);
&gt; +
&gt; +    for (size_t index = 0; index &lt; m_mediaElements.size(); ++index)
&gt; +        m_mediaElements[index]-&gt;setPlaybackRate(rate);
&gt; +}

This needs to fire a &apos;ratechange&apos; event.

&gt; Source/WebCore/html/MediaController.cpp:202
&gt; +void MediaController::setVolume(float level, ExceptionCode&amp;)
&gt; +{
&gt; +    m_volume = level;
&gt; +    for (size_t index = 0; index &lt; m_mediaElements.size(); ++index)
&gt; +        m_mediaElements[index]-&gt;updateVolume();
&gt; +}

This should throw an IndexSizeError exception if the value is greater than 1 or less than 0. If it does change, it needs to fire a &apos;volumechange&apos; event.

&gt; Source/WebCore/html/MediaController.cpp:209
&gt; +void MediaController::setMuted(bool flag)
&gt; +{
&gt; +    m_muted = flag;
&gt; +    for (size_t index = 0; index &lt; m_mediaElements.size(); ++index)
&gt; +        m_mediaElements[index]-&gt;updateVolume();
&gt; +}

This needs to fire a &apos;volumechange&apos; event.

&gt; Source/WebCore/html/MediaController.cpp:427
&gt; +        allPaused &amp;= element-&gt;paused();

This is clever, but I had to scratch my head for a minute to figure out if it was correct so a simple if statement would probably be better so simpletons like me don&apos;t get confused.

&gt; Source/WebCore/html/MediaController.cpp:443
&gt; +        allHaveEnded &amp;= m_mediaElements[index]-&gt;ended();

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495668</commentid>
    <comment_count>9</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-03 11:25:26 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 113402 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113402&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSHTMLMediaElementCustom.cpp:3
&gt; &gt; + * Copyright (C) 2008 Apple Inc. All Rights Reserved.
&gt; &gt; + *
&gt; 
&gt; How long have you been working on this patch? ;-)

Not that long. ;)

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:2488
&gt; &gt;      // of playback is forwards and the media element does not have a loop attribute specified,
&gt; &gt;      float now = currentTime();
&gt; &gt;      if (m_playbackRate &gt; 0)
&gt; &gt; -        return dur &gt; 0 &amp;&amp; now &gt;= dur &amp;&amp; !loop();
&gt; &gt; +        return dur &gt; 0 &amp;&amp; now &gt;= dur &amp;&amp; (!loop() || m_mediaController);
&gt; &gt;  
&gt; &gt;      // or the current playback position is the earliest possible position and the direction 
&gt; &gt;      // of playback is backwards
&gt; 
&gt; The comments in the function are quoted directly from the spec. Please update the comments to match current spec text.

Will do.

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:3211
&gt; &gt; +    float currentTime = m_mediaController-&gt;currentTime();
&gt; &gt; +    if (currentTime &lt; startTime() || currentTime &gt; startTime() + duration())
&gt; &gt; +        return true;
&gt; 
&gt; It might be worth renaming &quot;currentTime&quot; to make it clear that it is the &quot;media controller position&quot;.

Sure thing.

&gt; &gt; Source/WebCore/html/HTMLMediaElement.h:426
&gt; &gt; +    bool isLoading() const { return !m_currentSrc.isEmpty(); }
&gt; 
&gt; &quot;isLoading&quot; implies (to me) that the is networkState is NETWORK_LOADING, not that it has a url. I don&apos;t have another suggestion because I am not sure how this will be used.

Well crud, I should have thought of that.  Should the MediaController have an accessor for networkState which is the minimum networkState of its slaved elements?

&gt; &gt; Source/WebCore/html/MediaController.cpp:163
&gt; &gt; +void MediaController::setCurrentTime(float time, ExceptionCode&amp; code)
&gt; &gt; +{
&gt; &gt; +    m_clock-&gt;setCurrentTime(time);
&gt; &gt; +    for (size_t index = 0; index &lt; m_mediaElements.size(); ++index)
&gt; &gt; +        m_mediaElements[index]-&gt;seek(time, code);
&gt; &gt; +}
&gt; 
&gt; Do we need to call updateReadyState here?

Amazingly enough, the spec says no.  Though if the /element&apos;s/ readyState changes as the result of a seek, the media controller&apos;s readyState will be updated anyway.

&gt; &gt; Source/WebCore/html/MediaController.cpp:170
&gt; &gt; +    if (m_playbackState == ENDED) {
&gt; &gt; +        ExceptionCode code = 0;
&gt; &gt; +        setCurrentTime(0, code);
&gt; &gt; +    }
&gt; 
&gt; I don&apos;t see this step in the spec, although I might have overlooked. Please include spec sections and quote the spec text for this and other controller logic as we do in HTMLMediaElement.

No, you&apos;re right. The spec doesn&apos;t say to do this.  I&apos;ll remove it.

&gt; &gt; Source/WebCore/html/MediaController.cpp:174
&gt; &gt; +    m_paused = false;
&gt; &gt; +    updateMediaElements();
&gt; &gt; +}
&gt; 
&gt; You need to fire a &apos;play&apos; event here. Also, don&apos;t you need to call updatePlaybackState here to &quot;report the controller state of the MediaController.&quot;?

Yes on both counts.  And come to think of it, this class really needs a &quot;reportControllerState()&quot; function for readability&apos;s sake.

&gt; &gt; Source/WebCore/html/MediaController.cpp:181
&gt; &gt; +void MediaController::pause()
&gt; &gt; +{
&gt; &gt; +    m_paused = true;
&gt; &gt; +    for (size_t index = 0; index &lt; m_mediaElements.size(); ++index)
&gt; &gt; +        m_mediaElements[index]-&gt;pause();
&gt; &gt; +}
&gt; 
&gt; This should return early if m_paused is already true. It should fire a &apos;pause&apos; event and &quot;report the controller state of the MediaController.&quot;

Ditto. In fact, I&apos;ll fill in the spec text for all of these functions.

&gt; &gt; Source/WebCore/html/MediaController.cpp:186
&gt; &gt; +void MediaController::setDefaultPlaybackRate(float rate)
&gt; &gt; +{
&gt; &gt; +    m_defaultPlaybackRate = rate;
&gt; &gt; +}
&gt; 
&gt; This needs to fire a &apos;ratechange&apos; event.

Will change.

&gt; &gt; Source/WebCore/html/MediaController.cpp:195
&gt; &gt; +void MediaController::setPlaybackRate(float rate)
&gt; &gt; +{
&gt; &gt; +    m_playbackRate = rate;
&gt; &gt; +    m_clock-&gt;setPlayRate(rate);
&gt; &gt; +
&gt; &gt; +    for (size_t index = 0; index &lt; m_mediaElements.size(); ++index)
&gt; &gt; +        m_mediaElements[index]-&gt;setPlaybackRate(rate);
&gt; &gt; +}
&gt; 
&gt; This needs to fire a &apos;ratechange&apos; event.

Ditto.

&gt; &gt; Source/WebCore/html/MediaController.cpp:202
&gt; &gt; +void MediaController::setVolume(float level, ExceptionCode&amp;)
&gt; &gt; +{
&gt; &gt; +    m_volume = level;
&gt; &gt; +    for (size_t index = 0; index &lt; m_mediaElements.size(); ++index)
&gt; &gt; +        m_mediaElements[index]-&gt;updateVolume();
&gt; &gt; +}
&gt; 
&gt; This should throw an IndexSizeError exception if the value is greater than 1 or less than 0. If it does change, it needs to fire a &apos;volumechange&apos; event.

Ok.

&gt; &gt; Source/WebCore/html/MediaController.cpp:209
&gt; &gt; +void MediaController::setMuted(bool flag)
&gt; &gt; +{
&gt; &gt; +    m_muted = flag;
&gt; &gt; +    for (size_t index = 0; index &lt; m_mediaElements.size(); ++index)
&gt; &gt; +        m_mediaElements[index]-&gt;updateVolume();
&gt; &gt; +}
&gt; 
&gt; This needs to fire a &apos;volumechange&apos; event.

Ok.

&gt; &gt; Source/WebCore/html/MediaController.cpp:427
&gt; &gt; +        allPaused &amp;= element-&gt;paused();
&gt; 
&gt; This is clever, but I had to scratch my head for a minute to figure out if it was correct so a simple if statement would probably be better so simpletons like me don&apos;t get confused.

Ok.

&gt; &gt; Source/WebCore/html/MediaController.cpp:443
&gt; &gt; +        allHaveEnded &amp;= m_mediaElements[index]-&gt;ended();
&gt; 
&gt; Ditto.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495795</commentid>
    <comment_count>10</comment_count>
      <attachid>113559</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-03 14:25:59 -0700</bug_when>
    <thetext>Created attachment 113559
Patch

Addressed all of Eric&apos;s and Adam&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495798</commentid>
    <comment_count>11</comment_count>
      <attachid>113559</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-03 14:45:14 -0700</bug_when>
    <thetext>Comment on attachment 113559
Patch

Attachment 113559 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10290110</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495799</commentid>
    <comment_count>12</comment_count>
      <attachid>113559</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-03 14:47:04 -0700</bug_when>
    <thetext>Comment on attachment 113559
Patch

Attachment 113559 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10292002</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495812</commentid>
    <comment_count>13</comment_count>
      <attachid>113563</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-03 15:13:04 -0700</bug_when>
    <thetext>Created attachment 113563
Patch

Added MediaController to various build files, hopefully solving the qt and chromium build errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495823</commentid>
    <comment_count>14</comment_count>
      <attachid>113563</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-03 15:31:20 -0700</bug_when>
    <thetext>Comment on attachment 113563
Patch

Attachment 113563 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10288130</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495829</commentid>
    <comment_count>15</comment_count>
      <attachid>113563</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-03 15:39:50 -0700</bug_when>
    <thetext>Comment on attachment 113563
Patch

Attachment 113563 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10289116</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495895</commentid>
    <comment_count>16</comment_count>
      <attachid>113563</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-11-03 17:06:05 -0700</bug_when>
    <thetext>Comment on attachment 113563
Patch

Attachment 113563 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10289145</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496464</commentid>
    <comment_count>17</comment_count>
      <attachid>113712</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-04 14:18:52 -0700</bug_when>
    <thetext>Created attachment 113712
Patch

Added fixes for chromium, qt, and windows ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496475</commentid>
    <comment_count>18</comment_count>
      <attachid>113712</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-04 14:29:12 -0700</bug_when>
    <thetext>Comment on attachment 113712
Patch

Attachment 113712 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10336081</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496488</commentid>
    <comment_count>19</comment_count>
      <attachid>113712</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-04 15:00:01 -0700</bug_when>
    <thetext>Comment on attachment 113712
Patch

Attachment 113712 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10337119</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496492</commentid>
    <comment_count>20</comment_count>
      <attachid>113712</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-11-04 15:08:56 -0700</bug_when>
    <thetext>Comment on attachment 113712
Patch

Attachment 113712 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10338100</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497838</commentid>
    <comment_count>21</comment_count>
    <who name="Arun Patole">arun.patole</who>
    <bug_when>2011-11-08 01:20:00 -0800</bug_when>
    <thetext>Hi Jer,

Just had a look at your patch. Below are some comments, may be useful.

&gt; void HTMLMediaElement::setPlaybackRate(float rate)
&gt; {
&gt;-    LOG(Media, &quot;HTMLMediaElement::setPlaybackRate(%f)&quot;, rate);
&gt;+    if (m_mediaController)
&gt;+        return;
&gt;+
&gt;+    setPlaybackRateInternal(rate);
&gt;+}
As per the spec:
on setting the attribute must be set to the new value, and the playback will change speed (if the element is potentially playing and there is no current media controller).

So, I think m_mediaController check should only be on below line and not the early return:
if (m_player &amp;&amp; potentiallyPlaying() &amp;&amp; m_player-&gt;rate() != rate)

I mean, playback rate should be set to new value even with mediacontroller but playback speed should be changed only when the condition mentioned in above line is met and there is no mediacontroller.

&gt;@@ -2229,19 +2253,35 @@ void HTMLMediaElement::mediaPlayerTimeChanged(MediaPlayer*)
&gt;+            // Queue a task to fire a simple event named ended at the media element.
&gt;             if (!m_sentEndEvent) {
&gt;                 m_sentEndEvent = true;
&gt;                 scheduleEvent(eventNames().endedEvent);
&gt;+                updateMediaController();
&gt;+            }
&gt;+            // If the media element has a current media controller, 
&gt;+            if (m_mediaController) {
&gt;+                // then report the controller state for the media element&apos;s current media controller.
&gt;+                m_mediaController-&gt;reportControllerState();
             }

I think reportControllerState() is getting called twice incase of !m_sentEndEvent (as updateMediaController() just calls reportControllerState), may not be what you want.


&gt;+float MediaController::duration() const
&gt;+{
&gt;+    float maxDuration = 0;
&gt;+    for (size_t index = 0; index &lt; m_mediaElements.size(); ++index)
&gt;+        maxDuration = max(maxDuration, m_mediaElements[index]-&gt;duration());
&gt;+    return maxDuration;
&gt;+}

should we have !isnan() check for m_mediaElements[index]-&gt;duration() here? One more thing, I think we can also cache the duration in MediaController and change it only if any of the slave media element&apos;s duration changes.

&gt;+void MediaController::setDefaultPlaybackRate(float rate)
&gt;+{
&gt;+    // The defaultPlaybackRate attribute, on setting, must set the MediaController&apos;s media controller
&gt;+    // default playback rate to the new value,
&gt;+    m_defaultPlaybackRate = rate;
&gt;+
&gt;+    // then queue a task to fire a simple event named ratechange at the MediaController.
&gt;+    scheduleEvent(eventNames().ratechangeEvent);
&gt;+}

I think we need to check for (m_defaultPlaybackRate != rate) before actually changing rate and sending event.

&gt;+void MediaController::setPlaybackRate(float rate)
&gt;+{
&gt;+    // The playbackRate attribute, on setting, must set the MediaController&apos;s media controller 
&gt;+    // playback rate to the new value,
&gt;+    m_clock-&gt;setPlayRate(rate);
&gt;+
&gt;+    // then queue a task to fire a simple event named ratechange at the MediaController.
&gt;+    scheduleEvent(eventNames().ratechangeEvent);
&gt;+}

Ditto, I think we need to check for ( rate  != m_clock-&gt;playRate()) before actually changing rate and sending event.

&gt;+void MediaController::setVolume(float level, ExceptionCode&amp; code)
&gt;+{
&gt;+   
Ditto, I think we need to check for ( m_volume != level) before actually changing volume and sending event.

&gt;+void MediaController::setMuted(bool flag)
&gt;+{
&gt;+    // The muted attribute, on setting, must set the MediaController&apos;s media controller mute override
&gt;+    // to the new value
&gt;+    m_muted = flag;

Ditto, I think we need (m_muted != flag) before changing it and sending event.


&gt;+void MediaController::updateReadyState()
&gt;+{
&gt;+  
&gt;+    case HAVE_FUTURE_DATA:
&gt;+        eventName = eventNames().canplayEvent;
&gt;+        break;
&gt;+    case HAVE_ENOUGH_DATA:
&gt;+        eventName = eventNames().canplaythroughEvent;
&gt;+        break;

I am not sure but I think, like HTMLMediaElement, you may also have to check for old ready states as well before deciding any event to send. For example, HTMLMediaElement checks for (oldState &lt;= HAVE_CURRENT_DATA) before scheduling canplayEvent. similarily (oldState &lt; HAVE_METADATA) for loadedMetaDataEvent, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498115</commentid>
    <comment_count>22</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-08 08:55:31 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; As per the spec:
&gt; on setting the attribute must be set to the new value, and the playback will change speed (if the element is potentially playing and there is no current media controller).
&gt; 
&gt; So, I think m_mediaController check should only be on below line and not the early return:
&gt; if (m_player &amp;&amp; potentiallyPlaying() &amp;&amp; m_player-&gt;rate() != rate)
&gt; 
&gt; I mean, playback rate should be set to new value even with mediacontroller but playback speed should be changed only when the condition mentioned in above line is met and there is no mediacontroller.

That comma splice is ambiguous, but I see what you&apos;re saying.  I&apos;ll change this.

&gt; I think reportControllerState() is getting called twice incase of !m_sentEndEvent (as updateMediaController() just calls reportControllerState), may not be what you want.

Indeed it is!  I&apos;ll remove the extra one.

&gt; &gt;+float MediaController::duration() const
&gt; &gt;+{
&gt; &gt;+    float maxDuration = 0;
&gt; &gt;+    for (size_t index = 0; index &lt; m_mediaElements.size(); ++index)
&gt; &gt;+        maxDuration = max(maxDuration, m_mediaElements[index]-&gt;duration());
&gt; &gt;+    return maxDuration;
&gt; &gt;+}
&gt; 
&gt; should we have !isnan() check for m_mediaElements[index]-&gt;duration() here? One more thing, I think we can also cache the duration in MediaController and change it only if any of the slave media element&apos;s duration changes.

Okay, I&apos;ll add a NaN check.  I don&apos;t think I&apos;ll cache the max duration, though, because it&apos;s not cached at the HTMLMediaElement level, and it would add a little too much complexity to track when individual slaved elements&apos; durations change.  This could definitely be an optimization in the future, though.  I&apos;ll add a FIXME.

&gt; I think we need to check for (m_defaultPlaybackRate != rate) before actually changing rate and sending event.

Will do.

&gt; Ditto, I think we need to check for ( rate  != m_clock-&gt;playRate()) before actually changing rate and sending event.

Will do.

&gt; Ditto, I think we need to check for ( m_volume != level) before actually changing volume and sending event.

Will do.

&gt; Ditto, I think we need (m_muted != flag) before changing it and sending event.

Will do.

&gt; I am not sure but I think, like HTMLMediaElement, you may also have to check for old ready states as well before deciding any event to send. For example, HTMLMediaElement checks for (oldState &lt;= HAVE_CURRENT_DATA) before scheduling canplayEvent. similarily (oldState &lt; HAVE_METADATA) for loadedMetaDataEvent, etc.

I think that MediaController is different from the HTMLMediaElement, though.  It&apos;s much more likely for the readyState to bounce around as slaved media elements are added and removed.  I could be wrong about this, but it seems to me that the spec is pretty cut and dried on this point.  For example, for the &quot;loadeddata&quot; event:

HTMLMediaElement: &quot;readyState newly increased to HAVE_CURRENT_DATA or greater for the first time.&quot;
MediaController: &quot;All the slaved media elements newly have readyState set to HAVE_CURRENT_DATA or greater.&quot;

So, I think I&apos;ll leave this the way it is, for now.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498120</commentid>
    <comment_count>23</comment_count>
      <attachid>114086</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-08 08:59:54 -0800</bug_when>
    <thetext>Created attachment 114086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498125</commentid>
    <comment_count>24</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-08 09:07:57 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; I am not sure but I think, like HTMLMediaElement, you may also have to check for old ready states as well before deciding any event to send. For example, HTMLMediaElement checks for (oldState &lt;= HAVE_CURRENT_DATA) before scheduling canplayEvent. similarily (oldState &lt; HAVE_METADATA) for loadedMetaDataEvent, etc.
&gt; 
&gt; I think that MediaController is different from the HTMLMediaElement, though.  It&apos;s much more likely for the readyState to bounce around as slaved media elements are added and removed.  I could be wrong about this, but it seems to me that the spec is pretty cut and dried on this point.  For example, for the &quot;loadeddata&quot; event:
&gt; 
&gt; HTMLMediaElement: &quot;readyState newly increased to HAVE_CURRENT_DATA or greater for the first time.&quot;
&gt; MediaController: &quot;All the slaved media elements newly have readyState set to HAVE_CURRENT_DATA or greater.&quot;
&gt; 
&gt; So, I think I&apos;ll leave this the way it is, for now.

Oh wow, I just realized that there&apos;s a glaring inconsistency in the spec.  In 4.8.10.11.2, the table in step 2 of &quot;report the controller state&quot; doesn&apos;t match the table in 4.8.10.17 for Media Controllers.  The former talks about the &quot;readyState newly being X&quot; and the latter talks about the &quot;readyState newly being X or greater&quot;.  I was treating the first table as normative and not the second.  Depending on which one is correct, you may indeed be right about checking the oldState. I&apos;ll ask Hixie.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498131</commentid>
    <comment_count>25</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-08 09:16:09 -0800</bug_when>
    <thetext>I filed http://www.w3.org/Bugs/Public/show_bug.cgi?id=14731 to track the inconsistency in readyState events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498141</commentid>
    <comment_count>26</comment_count>
      <attachid>114093</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-08 09:31:47 -0800</bug_when>
    <thetext>Created attachment 114093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498159</commentid>
    <comment_count>27</comment_count>
      <attachid>114093</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-08 09:48:28 -0800</bug_when>
    <thetext>Comment on attachment 114093
Patch

Attachment 114093 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10374135</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498167</commentid>
    <comment_count>28</comment_count>
      <attachid>114099</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-08 09:52:35 -0800</bug_when>
    <thetext>Created attachment 114099
Patch

Fixed an accidental bitwise-and -&gt; logical-and mistake which (in addition to being wrong) caused a build error on the qt-ews bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498198</commentid>
    <comment_count>29</comment_count>
      <attachid>114107</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-08 10:12:40 -0800</bug_when>
    <thetext>Created attachment 114107
Patch

Fixed another build error in MediaController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498258</commentid>
    <comment_count>30</comment_count>
      <attachid>114107</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-08 10:57:38 -0800</bug_when>
    <thetext>Comment on attachment 114107
Patch

Attachment 114107 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10375153</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498301</commentid>
    <comment_count>31</comment_count>
      <attachid>114107</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-08 11:52:50 -0800</bug_when>
    <thetext>Comment on attachment 114107
Patch

Attachment 114107 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10365163</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498630</commentid>
    <comment_count>32</comment_count>
      <attachid>114107</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-11-08 21:10:24 -0800</bug_when>
    <thetext>Comment on attachment 114107
Patch

Attachment 114107 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10369295</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498694</commentid>
    <comment_count>33</comment_count>
      <attachid>114217</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-09 00:13:24 -0800</bug_when>
    <thetext>Created attachment 114217
Patch

Build fixes for win, qt, and chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498954</commentid>
    <comment_count>34</comment_count>
      <attachid>114277</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-09 07:45:45 -0800</bug_when>
    <thetext>Created attachment 114277
Patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499019</commentid>
    <comment_count>35</comment_count>
      <attachid>114277</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-09 08:55:42 -0800</bug_when>
    <thetext>Comment on attachment 114277
Patch

Attachment 114277 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10365467

New failing tests:
media/media-controller-playback.html
media/media-controller.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499714</commentid>
    <comment_count>36</comment_count>
      <attachid>114451</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-10 00:51:45 -0800</bug_when>
    <thetext>Created attachment 114451
Patch

Fixed the Chromium layout test failures.  They were due to a horrible misdesign on my part.  The MediaController mediaGroup-&gt;controller map was a global one, so media elements in separate documents with the same mediaGroup would get the same mediaController.  This has been fixed, as has a infinite-recursion bug in ClockGeneric.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499727</commentid>
    <comment_count>37</comment_count>
      <attachid>114451</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-10 01:47:33 -0800</bug_when>
    <thetext>Comment on attachment 114451
Patch

Attachment 114451 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10395273

New failing tests:
media/media-controller.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499746</commentid>
    <comment_count>38</comment_count>
      <attachid>114451</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-11-10 02:34:22 -0800</bug_when>
    <thetext>Comment on attachment 114451
Patch

Attachment 114451 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10399295</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499754</commentid>
    <comment_count>39</comment_count>
      <attachid>114451</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-11-10 02:45:31 -0800</bug_when>
    <thetext>Comment on attachment 114451
Patch

Attachment 114451 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10404268</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499785</commentid>
    <comment_count>40</comment_count>
    <who name="Arun Patole">arun.patole</who>
    <bug_when>2011-11-10 04:08:41 -0800</bug_when>
    <thetext>Couple of more things Jer,
&gt;+++ b/Source/WebCore/html/HTMLMediaElement.idl
&gt;+    attribute [CustomSetter] MediaController mediaController;

HTMLMediaElement&apos;s media controller attribute name should be &quot;controller&quot; instead of &quot;mediaController&quot;
http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#dom-media-controller

Also, durationchange event needs to be fired whenever media controller&apos;s duration (The duration attribute : http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#dom-mediacontroller-duration) has just been updated
http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#event-mediacontroller-durationchange
But I think this can be handled later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500494</commentid>
    <comment_count>41</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-10 21:04:41 -0800</bug_when>
    <thetext>In response to &lt;http://www.w3.org/Bugs/Public/show_bug.cgi?id=14731&gt; Ian Hickson modified &lt;http://html5.org/tools/web-apps-tracker?from=6823&amp;to=6824&gt; the HTML5 specification to make explicit that events should be fired when moving through intermediate ready states.  I&apos;ve updated the patch to match the new spec.

(In reply to comment #40)
&gt; Couple of more things Jer,
&gt; &gt;+++ b/Source/WebCore/html/HTMLMediaElement.idl
&gt; &gt;+    attribute [CustomSetter] MediaController mediaController;
&gt; 
&gt; HTMLMediaElement&apos;s media controller attribute name should be &quot;controller&quot; instead of &quot;mediaController&quot;
&gt; http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#dom-media-controller

Changed.  I&apos;ll get a new patch posted shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500495</commentid>
    <comment_count>42</comment_count>
      <attachid>114620</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-10 21:07:24 -0800</bug_when>
    <thetext>Created attachment 114620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500499</commentid>
    <comment_count>43</comment_count>
      <attachid>114621</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-10 21:13:22 -0800</bug_when>
    <thetext>Created attachment 114621
Patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500506</commentid>
    <comment_count>44</comment_count>
      <attachid>114621</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-10 21:31:02 -0800</bug_when>
    <thetext>Comment on attachment 114621
Patch

Attachment 114621 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10424528</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500527</commentid>
    <comment_count>45</comment_count>
      <attachid>114621</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-11-10 22:20:38 -0800</bug_when>
    <thetext>Comment on attachment 114621
Patch

Attachment 114621 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10423463</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500535</commentid>
    <comment_count>46</comment_count>
      <attachid>114629</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-10 22:44:42 -0800</bug_when>
    <thetext>Created attachment 114629
Patch

Fixed an enum-related compile error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500556</commentid>
    <comment_count>47</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-11 00:03:36 -0800</bug_when>
    <thetext>For posterity&apos;s sake, I&apos;d like to note the latest patch is passing all the EWS bots. (Save the chromium bot, which is having problems with all patches.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501147</commentid>
    <comment_count>48</comment_count>
      <attachid>114629</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-11 15:12:51 -0800</bug_when>
    <thetext>Comment on attachment 114629
Patch

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

&gt; Source/JavaScriptCore/wtf/Platform.h:1110
&gt; -#if PLATFORM(MAC) || (PLATFORM(WIN) &amp;&amp; !OS(WINCE) &amp;&amp; !PLATFORM(WIN_CAIRO))
&gt; +#if PLATFORM(MAC)

This didn&apos;t make it into a change log.


&gt; Source/WebCore/bindings/js/JSHTMLMediaElementCustom.cpp:43
&gt; +    // On setting, it must first remove the element&apos;s mediagroup attribute, if any, 
&gt; +    imp-&gt;setMediaGroup(String());
&gt; +    // and then set the current media controller to the given value.
&gt; +    imp-&gt;setController(toMediaController(value));

Nit: it would be helpful to have the spec section noted here.


&gt; Source/WebCore/bindings/v8/custom/V8HTMLMediaElementCustom.cpp:50
&gt; +    if (!controller) {
&gt; +        throwError(&quot;Value is not of type MediaController&quot;);
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    imp-&gt;setController(controller);

Doesn&apos;t this also need to clear the &apos;mediagroup&apos; attribute as you do in JSC?


&gt; Source/WebCore/html/HTMLMediaElement.cpp:142
&gt; +typedef HashMap&lt;Document*, HashSet&lt;HTMLMediaElement*&gt; &gt; DocElementSetMap;

Might as well spell it out: Doc -&gt; Document


&gt; Source/WebCore/html/HTMLMediaElement.cpp:143
&gt; +static DocElementSetMap&amp; documentToElementSetMap()

None of these static functions made it into the ChangeLog.


&gt; Source/WebCore/html/HTMLMediaElement.cpp:2288
&gt; +            //  then seek to the earliest possible position of the media resource and abort these steps.
&gt;              seek(0, ignoredException);

m_player-&gt;startTime() is the &quot;earliest possible position&quot; (although in practice I think it return 0 for all ports currently).


&gt; Source/WebCore/html/HTMLMediaElement.cpp:3219
&gt; +    // 2. Let m have no current media controller, if it currently has one.
&gt; +    setController(0);
&gt; +    // 3. If m&apos;s mediagroup attribute is being removed, then abort these steps.

Nit: I think a blank line between code and the next comment make it easier to read.


&gt; Source/WebCore/html/HTMLMediaElement.h:427
&gt; +    bool hasSource() const { return m_networkState != NETWORK_EMPTY || m_networkState != NETWORK_NO_SOURCE; }

I am not wild about &quot;haveSource&quot;, I assumed it meant &quot;have a &apos;src&apos; attribute&quot;.


&gt; Source/WebCore/html/MediaController.cpp:224
&gt; +    m_clock-&gt;setPlayRate(rate);
&gt; +
&gt; +    // then queue a task to fire a simple event named ratechange at the MediaController.
&gt; +    scheduleEvent(eventNames().ratechangeEvent);
&gt; +}

Don&apos;t you also need to set the rates of all attached elements?


&gt; Source/WebCore/html/MediaController.cpp:376
&gt; +        // then queue a task that, if the MediaController object is a playing media controller, and 
&gt; +        // all of the MediaController&apos;s slaved media elements have still ended playback, and the 
&gt; +        // media controller playback rate is still positive or zero, 
&gt; +        if (!m_paused &amp;&amp; hasEnded()) {
&gt; +            // changes the MediaController object to a paused media controller
&gt; +            m_paused = true;
&gt; +            m_clock-&gt;stop();
&gt; +
&gt; +            // and then fires a simple event named pause at the MediaController object.
&gt; +            scheduleEvent(eventNames().pauseEvent);
&gt; +        }

&quot;then queue a task ...&quot; means the logic is supposed to happen after the current run loop cycle ends. I think it would be fine to file a bug for this and fix it in a follow up patch.


&gt; Source/WebCore/html/MediaController.cpp:443
&gt; +        // or if any of its slaved media elements whose autoplaying flag is true still have their 
&gt; +        // paused attribute set to true,
&gt; +        if (element-&gt;autoplay() &amp;&amp; element-&gt;paused())
&gt; +            return true;

The &quot;autoplaying flag&quot; is not the same as the &apos;autoplay&apos; attribute, t is a private state kept in m_autoplaying.


&gt; Source/WebCore/html/MediaController.cpp:456
&gt; +    if (m_clock-&gt;playRate() &lt;= 0)
&gt; +        return false;

This confused me when I read it, can you please include the spec text as you have done above?


&gt; Source/WebCore/html/MediaController.cpp:491
&gt; +ScriptExecutionContext* MediaController::scriptExecutionContext() const
&gt; +{
&gt; +    if (m_mediaElements.isEmpty())
&gt; +        return 0;
&gt; +    return m_mediaElements.first()-&gt;document();

This assumes that all elements are in the same document. Is this always true?


&gt; LayoutTests/ChangeLog:1
&gt; +2011-11-03  Jer Noble  &lt;jer.noble@apple.com&gt;

One...

&gt; LayoutTests/ChangeLog:13
&gt; +2011-11-03  Jer Noble  &lt;jer.noble@apple.com&gt;

Two...

&gt; LayoutTests/ChangeLog:25
&gt; +2011-11-02  Jer Noble  &lt;jer.noble@apple.com&gt;

Three times the fun!


&gt; LayoutTests/ChangeLog:35
&gt; +        * media/media-controller-expected.txt: Added.
&gt; +        * media/media-controller-playback-expected.txt: Added.
&gt; +        * media/media-controller-playback.html: Added.
&gt; +        * media/media-controller.html: Added.

We definitely need more tests for this feature! Please file a master bug and we can block others on it.


&gt; LayoutTests/ChangeLog:36
&gt; +

I think you also need to update fast/dom/Window/window-properties-expected.txt and fast/js/global-constructors-expected.txt because of the changes to DOMWindow.idl


&gt; LayoutTests/media/media-controller-playback.html:16
&gt; +            video = document.getElementsByTagName(&apos;video&apos;)[0];
&gt; +            video2 = document.getElementsByTagName(&apos;video&apos;)[1];
&gt; +            run(&apos;controller = video.mediaController&apos;);
&gt; +            controller.addEventListener(&apos;canplaythrough&apos;, canplaythrough, true);
&gt; +            setSrcByTagName(&apos;video&apos;, findMediaFile(&apos;video&apos;, &apos;content/test&apos;));

Three calls to &quot;document.getElementsByTagName(&apos;video&apos;)&quot; in one function?


&gt; LayoutTests/platform/mac-lion/fast/regions/render-region-custom-style-mark-expected.txt:1
&gt; +layer at (0,0) size 800x600

Did you mean to change this result?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501229</commentid>
    <comment_count>49</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-11 16:55:53 -0800</bug_when>
    <thetext>(In reply to comment #48)
&gt; (From update of attachment 114629 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114629&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/wtf/Platform.h:1110
&gt; &gt; -#if PLATFORM(MAC) || (PLATFORM(WIN) &amp;&amp; !OS(WINCE) &amp;&amp; !PLATFORM(WIN_CAIRO))
&gt; &gt; +#if PLATFORM(MAC)
&gt; 
&gt; This didn&apos;t make it into a change log.

Whoops.  Added.

&gt; &gt; Source/WebCore/bindings/js/JSHTMLMediaElementCustom.cpp:43
&gt; &gt; +    // On setting, it must first remove the element&apos;s mediagroup attribute, if any, 
&gt; &gt; +    imp-&gt;setMediaGroup(String());
&gt; &gt; +    // and then set the current media controller to the given value.
&gt; &gt; +    imp-&gt;setController(toMediaController(value));
&gt; 
&gt; Nit: it would be helpful to have the spec section noted here.

Okay, I added it here and to the V8 version.

&gt; &gt; Source/WebCore/bindings/v8/custom/V8HTMLMediaElementCustom.cpp:50
&gt; &gt; +    if (!controller) {
&gt; &gt; +        throwError(&quot;Value is not of type MediaController&quot;);
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    imp-&gt;setController(controller);
&gt; 
&gt; Doesn&apos;t this also need to clear the &apos;mediagroup&apos; attribute as you do in JSC?

Yes it does.

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:142
&gt; &gt; +typedef HashMap&lt;Document*, HashSet&lt;HTMLMediaElement*&gt; &gt; DocElementSetMap;
&gt; 
&gt; Might as well spell it out: Doc -&gt; Document

Done.

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:143
&gt; &gt; +static DocElementSetMap&amp; documentToElementSetMap()
&gt; 
&gt; None of these static functions made it into the ChangeLog.

Added.

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:2288
&gt; &gt; +            //  then seek to the earliest possible position of the media resource and abort these steps.
&gt; &gt;              seek(0, ignoredException);
&gt; 
&gt; m_player-&gt;startTime() is the &quot;earliest possible position&quot; (although in practice I think it return 0 for all ports currently).

Indeed.  Changed it anyway.

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:3219
&gt; &gt; +    // 2. Let m have no current media controller, if it currently has one.
&gt; &gt; +    setController(0);
&gt; &gt; +    // 3. If m&apos;s mediagroup attribute is being removed, then abort these steps.
&gt; 
&gt; Nit: I think a blank line between code and the next comment make it easier to read.

Inserted.

&gt; &gt; Source/WebCore/html/HTMLMediaElement.h:427
&gt; &gt; +    bool hasSource() const { return m_networkState != NETWORK_EMPTY || m_networkState != NETWORK_NO_SOURCE; }
&gt; 
&gt; I am not wild about &quot;haveSource&quot;, I assumed it meant &quot;have a &apos;src&apos; attribute&quot;.

Changed this to &quot;isLoading()&quot;.  It&apos;s here to avoid having to pull the NetworkState enum into MediaControllerInterface.

&gt; &gt; Source/WebCore/html/MediaController.cpp:224
&gt; &gt; +    m_clock-&gt;setPlayRate(rate);
&gt; &gt; +
&gt; &gt; +    // then queue a task to fire a simple event named ratechange at the MediaController.
&gt; &gt; +    scheduleEvent(eventNames().ratechangeEvent);
&gt; &gt; +}
&gt; 
&gt; Don&apos;t you also need to set the rates of all attached elements?

I do.  Added a function called &quot;updatePlaybackRate()&quot; to HTMLMediaElement which does this.

&gt; &gt; Source/WebCore/html/MediaController.cpp:376
&gt; &gt; +        // then queue a task that, if the MediaController object is a playing media controller, and 
&gt; &gt; +        // all of the MediaController&apos;s slaved media elements have still ended playback, and the 
&gt; &gt; +        // media controller playback rate is still positive or zero, 
&gt; &gt; +        if (!m_paused &amp;&amp; hasEnded()) {
&gt; &gt; +            // changes the MediaController object to a paused media controller
&gt; &gt; +            m_paused = true;
&gt; &gt; +            m_clock-&gt;stop();
&gt; &gt; +
&gt; &gt; +            // and then fires a simple event named pause at the MediaController object.
&gt; &gt; +            scheduleEvent(eventNames().pauseEvent);
&gt; &gt; +        }
&gt; 
&gt; &quot;then queue a task ...&quot; means the logic is supposed to happen after the current run loop cycle ends. I think it would be fine to file a bug for this and fix it in a follow up patch.

Okay.

&gt; &gt; Source/WebCore/html/MediaController.cpp:443
&gt; &gt; +        // or if any of its slaved media elements whose autoplaying flag is true still have their 
&gt; &gt; +        // paused attribute set to true,
&gt; &gt; +        if (element-&gt;autoplay() &amp;&amp; element-&gt;paused())
&gt; &gt; +            return true;
&gt; 
&gt; The &quot;autoplaying flag&quot; is not the same as the &apos;autoplay&apos; attribute, t is a private state kept in m_autoplaying.

Okay.  I added a private, const accessor which returns the value of this variable, for use in MediaController.

&gt; &gt; Source/WebCore/html/MediaController.cpp:456
&gt; &gt; +    if (m_clock-&gt;playRate() &lt;= 0)
&gt; &gt; +        return false;
&gt; 
&gt; This confused me when I read it, can you please include the spec text as you have done above?

Done.

&gt; &gt; Source/WebCore/html/MediaController.cpp:491
&gt; &gt; +ScriptExecutionContext* MediaController::scriptExecutionContext() const
&gt; &gt; +{
&gt; &gt; +    if (m_mediaElements.isEmpty())
&gt; &gt; +        return 0;
&gt; &gt; +    return m_mediaElements.first()-&gt;document();
&gt; 
&gt; This assumes that all elements are in the same document. Is this always true?

Nope.  It may not be in a document at all.  Changed the IDL to generate a constructor that takes a ScriptExecutionContext and changed the MediaController constructor to match.

&gt; &gt; LayoutTests/ChangeLog:1
&gt; &gt; +2011-11-03  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; 
&gt; One...
&gt; 
&gt; &gt; LayoutTests/ChangeLog:13
&gt; &gt; +2011-11-03  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; 
&gt; Two...
&gt; 
&gt; &gt; LayoutTests/ChangeLog:25
&gt; &gt; +2011-11-02  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; 
&gt; Three times the fun!

Un-triplicated.

&gt; &gt; LayoutTests/ChangeLog:35
&gt; &gt; +        * media/media-controller-expected.txt: Added.
&gt; &gt; +        * media/media-controller-playback-expected.txt: Added.
&gt; &gt; +        * media/media-controller-playback.html: Added.
&gt; &gt; +        * media/media-controller.html: Added.
&gt; 
&gt; We definitely need more tests for this feature! Please file a master bug and we can block others on it.

Sure thing!

&gt; &gt; LayoutTests/ChangeLog:36
&gt; &gt; +
&gt; 
&gt; I think you also need to update fast/dom/Window/window-properties-expected.txt and fast/js/global-constructors-expected.txt because of the changes to DOMWindow.idl

Done.

&gt; &gt; LayoutTests/media/media-controller-playback.html:16
&gt; &gt; +            video = document.getElementsByTagName(&apos;video&apos;)[0];
&gt; &gt; +            video2 = document.getElementsByTagName(&apos;video&apos;)[1];
&gt; &gt; +            run(&apos;controller = video.mediaController&apos;);
&gt; &gt; +            controller.addEventListener(&apos;canplaythrough&apos;, canplaythrough, true);
&gt; &gt; +            setSrcByTagName(&apos;video&apos;, findMediaFile(&apos;video&apos;, &apos;content/test&apos;));
&gt; 
&gt; Three calls to &quot;document.getElementsByTagName(&apos;video&apos;)&quot; in one function?

Okay, made this one call.

&gt; &gt; LayoutTests/platform/mac-lion/fast/regions/render-region-custom-style-mark-expected.txt:1
&gt; &gt; +layer at (0,0) size 800x600
&gt; 
&gt; Did you mean to change this result?

Nope, reverted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502028</commentid>
    <comment_count>50</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-14 09:55:31 -0800</bug_when>
    <thetext>Committed r100159: &lt;http://trac.webkit.org/changeset/100159&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503397</commentid>
    <comment_count>51</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-11-15 16:07:38 -0800</bug_when>
    <thetext>This broke some tests:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r100159%20(34689)/fast/dom/constructed-objects-prototypes-pretty-diff.html
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r100159%20(34689)/fast/dom/Window/window-property-descriptors-pretty-diff.html
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r100159%20(34689)/fast/dom/prototype-inheritance-2-pretty-diff.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113402</attachid>
            <date>2011-11-02 16:44:14 -0700</date>
            <delta_ts>2011-11-03 14:25:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71408-20111102164413.patch</filename>
            <type>text/plain</type>
            <size>71789</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxMTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYjkwZWY2NDI5OWI5ZjZi
NjI4Y2RmM2IzMzMwNDFmMjIzNDFhMzVhLi4zM2I1ZTRjNzM5NTVkODJmZjM2NWYzMjI5ZTU2YmMx
Y2Y5OWU3MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTU1IEBACiAyMDExLTExLTAyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNv
bnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbAorCisgICAgICAgIEFkZHMgc3VwcG9ydCBm
b3IgdGhlIE1lZGlhQ29udHJvbGxlciBET00gb2JqZWN0LCBhbmQgdGhlIG1lZGlhZ3JvdXAgYW5k
IG1lZGlhY29udHJvbGxlcgorICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGF0dHJpYnV0ZXMuCisK
KyAgICAgICAgTWVkaWFDb250cm9sbGVyIGlzIGFuIERPTSBvYmplY3Qgd2hpY2ggc3luY2hyb25p
emVzIHBsYXliYWNrIG9mIG11bHRpcGxlIEhUTUxNZWRpYUVsZW1lbnRzLiBJdCBjYW4KKyAgICAg
ICAgZWl0aGVyIGJlIGNyZWF0ZWQgYnkgYSBwYWdlIHNjcmlwdCBhbmQgYXNzaWduZWQgdG8gYSBI
VE1MTWVkaWFFbGVtZW50IHVzaW5nIHRoZSBtZWRpYUNvbnRyb2xsZXIgcHJvcGVydHksCisgICAg
ICAgIG9yIGFsbCBIVE1MTWVkaWFFbGVtZW50cyB3aXRoIGlkZW50aWNhbCBtZWRpYWdyb3VwIGF0
dHJpYnV0ZXMgd2lsbCBoYXZlIGEgTWVkaWFDb250cm9sbGVyIGFzc2lnbmVkIAorICAgICAgICBh
dXRvbWF0aWNhbGx5LgorCisgICAgICAgIEFkZCBhbiBhYnN0cmFjdCBpbnRlcmZhY2UgaW1wbGVt
ZW50ZWQgYnkgYm90aCBNZWRpYUNvbnRyb2xsZXIgYW5kIEhUTUxNZWRpYUVsZW1lbnQuCisgICAg
ICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U6On5NZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UpOgorCisgICAgICAgIEFkZCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCBhbmQgSURMLgor
ICAgICAgICAqIGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChtZWRp
YUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXApOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpt
ZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
Y3JlYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6TWVkaWFDb250cm9sbGVyKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6fk1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChNZWRp
YUNvbnRyb2xsZXI6OmFkZE1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnJlbW92ZU1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmNvbnRhaW5z
TWVkaWFFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6YnVmZmVyZWQpOgorICAg
ICAgICAoTWVkaWFDb250cm9sbGVyOjpzZWVrYWJsZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnBsYXllZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKToKKyAgICAg
ICAgKE1lZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnBsYXkpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpwYXVzZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnNldERlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpz
ZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZCk6CisgICAgICAgIChNZWRpYUNvbnRy
b2xsZXI6OnVwZGF0ZVJlYWR5U3RhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjp1cGRh
dGVQbGF5YmFja1N0YXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlTWVkaWFF
bGVtZW50cyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnNjaGVkdWxlRXZlbnQpOgorICAg
ICAgICAoTWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgIChN
ZWRpYUNvbnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoTWVkaWFD
b250cm9sbGVyOjpoYXNBdWRpbyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Omhhc1ZpZGVv
KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzQ2xvc2VkQ2FwdGlvbnMpOgorICAgICAg
ICAoTWVkaWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUpOgorICAgICAgICAo
TWVkaWFDb250cm9sbGVyOjpzdXBwb3J0c1NjYW5uaW5nKToKKyAgICAgICAgKE1lZGlhQ29udHJv
bGxlcjo6YmVnaW5TY3J1YmJpbmcpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjplbmRTY3J1
YmJpbmcpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjYW5QbGF5KToKKyAgICAgICAgKE1l
ZGlhQ29udHJvbGxlcjo6aXNMaXZlU3RyZWFtKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
aXNMb2FkaW5nKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6cmV0dXJuVG9SZWFsdGltZSk6
CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmlzQmxvY2tlZCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xsZXI6Omhhc0VuZGVkKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6bWVkaWFHcm91cCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnBhdXNlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xsZXI6OmRlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjp2b2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
bGVyOjptdXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnJlYWR5U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6c3VwcG9ydHNGdWxsc2NyZWVuKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6aXNGdWxsc2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6dG9NZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sbGVyOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sbGVyOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0
bWwvTWVkaWFDb250cm9sbGVyLmlkbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGNvbnZlbmllbmNl
IGZ1bmN0aW9ucyB0byBUaW1lUmFuZ2VzIHdoaWNoIGNhbiBjYWxjdWxhdGUgaW50ZXJzZWN0aW9u
cyBhbmQKKyAgICAgICAgdW5pb25zIGJldHdlZW4gVGltZVJhbmdlcyBvYmplY3RzLgorICAgICAg
ICAqIGh0bWwvVGltZVJhbmdlcy5jcHA6CisgICAgICAgIChUaW1lUmFuZ2VzOjpjb3B5KToKKyAg
ICAgICAgKFRpbWVSYW5nZXM6OmludmVydCk6CisgICAgICAgIChUaW1lUmFuZ2VzOjppbnRlcnNl
Y3RXaXRoKToKKyAgICAgICAgKFRpbWVSYW5nZXM6OnVuaW9uV2l0aCk6CisgICAgICAgICogaHRt
bC9UaW1lUmFuZ2VzLmg6CisKKyAgICAgICAgQWRkIE1lZGlhQ29udHJvbGxlckNvbnN0cnVjdG9y
IHRvIHRoZSBXaW5kb3cgb2JqZWN0LgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKwor
ICAgICAgICBBZGQgdGhlIHR3byBuZXcgYXR0cmlidXRlIG5hbWVzLCBtZWRpYWdyb3VwIGFuZCBt
ZWRpYWNvbnRyb2xsZXIuCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYXR0cmlidXRlcywgYW5kIGFkZCBvdmVy
cmlkZGVuIGJlaGF2aW9yIHdoZW4gYSBtZWRpYSBlbGVtZW50CisgICAgICAgIGhhcyBhIGN1cnJl
bnQgbWVkaWEgY29udHJvbGxlcjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50VGltZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlSW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbmRlZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpzZXRNZWRpYUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpzZXRNZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6dXBkYXRlTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmlzQmxvY2tlZE9uTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0xpdmVTdHJlYW0p
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcik6CisKKyAgICAgICAg
QWRkIGEgZnVuY3Rpb24gInNlZWthYmxlIiB3aGljaCByZXR1cm5zIGEgVGltZVJhbmdlcyBjb250
YWluaW5nIHRoZSBzZWVrYWJsZSB0aW1lIHJhbmdlcworICAgICAgICBpbiBhIG1lZGlhIGVsZW1l
bnQuICBCeSBkZWZhdWx0IHRoaXMgaXMgYSBzaW5nbGUgcmFuZ2Ugb2YgWzAsIG1heFRpbWVTZWVr
YWJsZV0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNlZWthYmxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlOjpzZWVrYWJsZSk6CisKKyAgICAgICAgU3VwcG9ydCBmdW5jdGlvbnMgdG8gY2Fz
dCBiZXR3ZWVuIE1lZGlhQ29udHJvbGxlciBhbmQgRXZlbnRUYXJnZXQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAg
ICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJn
ZXQ6OnRvTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKwor
ICAgICAgICBCb2lsZXJwbGF0ZSB0byBzdXBwb3J0IGNyZWF0aW5nIHRoZSBkZXJpdmVkIHNvdXJj
ZXMgZm9yIE1lZGlhQ29udHJvbGxlciBhbmQgYWRkaW5nIG5ldyBzb3VyY2VzCisgICAgICAgIHRv
IHRoZSBwcm9qZWN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisyMDExLTExLTAyICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCiAgICAgICAgIEFkZCBDbG9jayBjbGFzcyBhbmQg
cGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLgogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEzNDEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggYjRjMjA2NjIwZTZkMTU0Y2I0ZWMzZTJjZmU1YzgwMWU1ZDAzZDU0Yy4uNWQy
NjhiYThiODg4ZWMxNWU5ODliZWY2YjNiNmY4NjM3ZmI1YjRhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC0yNzYsNiArMjc2LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgS2V5
Ym9hcmRFdmVudCBcCiAgICAgTG9jYXRpb24gXAogICAgIExvd1Bhc3MyRmlsdGVyTm9kZSBcCisg
ICAgTWVkaWFDb250cm9sbGVyIFwKICAgICBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgXAog
ICAgIE1lZGlhRXJyb3IgXAogICAgIE1lZGlhTGlzdCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjE4ZDljMmZhZGQ3NzRjZGVl
ODlmOGIzOTFjZGI1YWI2MTJiYzVmYy4uNjYzMmQ4ZTc0M2E4OTEzNDY4ODEwNzllMzg1ZmE5YmNh
YTZmMTc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNTY5NSw2ICs1Njk1LDggQEAKIAkJQ0QwREJGRUUxNDIyNzY4NTAwMjgw
MjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUud2F2IGluIENvcHkgQXVkaW8g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMERCRTBEMTQy
Mjc1OTUwMDI4MDI2MyAvKiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1LndhdiAqLzsg
fTsKIAkJQ0QwREJGRUYxNDIyNzY4NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9U
MzQ1X1AzMzAud2F2IGluIENvcHkgQXVkaW8gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEMERCRTBFMTQyMjc1OTUwMDI4MDI2MyAvKiBJUkNfQ29tcG9zaXRl
X0NfUjAxOTVfVDM0NV9QMzMwLndhdiAqLzsgfTsKIAkJQ0QwREJGRjAxNDIyNzY4NTAwMjgwMjYz
IC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzNDUud2F2IGluIENvcHkgQXVkaW8gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMERCRTBGMTQyMjc1
OTUwMDI4MDI2MyAvKiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzQ1LndhdiAqLzsgfTsK
KwkJQ0QyN0Y2RTUxNDU3Njg1QTAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkUyMTQ1NzY3
NTgwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAgKi87IH07CisJCUNEMjdGNkU3MTQ1
NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTYxNDU3NzBEMzAwNzgyMDdEIC8qIE1l
ZGlhQ29udHJvbGxlci5jcHAgKi87IH07CiAJCUNEODIwMzBBMTM5NUFCNkEwMEY5NTZDNiAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUNEODIwMzBCMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0Q4MjAzMDcxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIubW0gKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8tdW5kZWYi
OyB9OyB9OwogCQlDRDgyMDMwQzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVu
SFVEV2luZG93Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q4MjAzMDgxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVl
bkhVRFdpbmRvd0NvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNTcwMiwxMCArNTcwNCwxMyBAQAogCQlDRDgyMDMxMDEzOTVBQ0U3
MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwRTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2lu
ZG93QW5pbWF0aW9uLmggKi87IH07CiAJCUNEODIwMzExMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJX
aW5kb3dBbmltYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDgyMDMwRjEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLm1t
ICovOyB9OwogCQlDREVBNzYzMDE0NjA4QTUzMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjJF
MTQ2MDg0REUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovOyB9OworCQlDREQ1MjVE
NzE0NUI2REQwMDA4RDIwNEQgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjY1Q0NDMTQ1QjZBRkUw
MEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlDREVBNzYz
NDE0NjBCNTZGMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja1BPU0lYLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjMyMTQ2MEFFMjkwMDhCMzFG
MSAvKiBQbGF0Zm9ybUNsb2NrUE9TSVguY3BwICovOyB9OwogCQlDREVBNzYzNTE0NjBCNzFBMDA4
QjMxRjEgLyogQ2xvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFQTc2MzMxNDYwQjQ2MjAwOEIzMUYxIC8qIENsb2NrLmNwcCAqLzsgfTsKIAkJ
Q0RFQTdDODQxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3QzgyMTI3NjIzMDQwMEI4
NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmggKi87IH07CiAJCUNERUE3Qzg1MTI3NjIzMDQwMEI4
NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3QzgzMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxs
U2NyZWVuLmNwcCAqLzsgfTsKKwkJQ0RGNjVDQzgxNDVCMUU3NTAwQzRDN0FBIC8qIE1lZGlhQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0QyN0Y2RTQxNDU3Njc4NzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERjY1Q0NBMTQ1QjQ0ODgw
MEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjY1Q0M5MTQ1QjQzQTcwMEM0QzdBQSAvKiBN
ZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlDRTAyRjBDNDExRTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29u
dHJvbGxlckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMDU3RkE1
MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTMxMjIwNzMxMTAw
QTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgKi87IH07CiAJCUNFMDU3RkE2
MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDU3RkE0MTIyMDczMTEwMEE0
NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI5NzgsNiArMTI5ODMsMTEgQEAKIAkJQ0Qw
REJFMEQxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUu
d2F2ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXVk
aW8ud2F2OyBuYW1lID0gSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXY7IHBhdGgg
PSBwbGF0Zm9ybS9hdWRpby9yZXNvdXJjZXMvSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMx
NS53YXY7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJQ0QwREJFMEUxNDIyNzU5NTAw
MjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMzAud2F2ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXVkaW8ud2F2OyBuYW1lID0g
SVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXY7IHBhdGggPSBwbGF0Zm9ybS9hdWRp
by9yZXNvdXJjZXMvSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXY7IHNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJQ0QwREJFMEYxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19D
b21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzNDUud2F2ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXVkaW8ud2F2OyBuYW1lID0gSVJDX0NvbXBvc2l0ZV9D
X1IwMTk1X1QzNDVfUDM0NS53YXY7IHBhdGggPSBwbGF0Zm9ybS9hdWRpby9yZXNvdXJjZXMvSVJD
X0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXY7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9P
VDsgfTsKKwkJQ0QyN0Y2RTAxNDU3NUMxQjAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gTWVkaWFDb250cm9sbGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFDb250cm9sbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyN0Y2RTMxNDU3Njc1ODAwNzgyMDdEIC8qIEpT
TWVkaWFDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVk
aWFDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjdGNkU0MTQ1
NzY3ODcwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVkaWFDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEMjdGNkU2MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9sbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8qIGZ1
bGxzY3JlZW4uY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuLmNzczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4MjAzMDYxMzk1QUI2QTAwRjk1NkM2IC8q
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDgyMDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMjk5NCw2ICsxMzAwNCw4IEBACiAJCUNERUE3NjMzMTQ2MEI0NjIwMDhCMzFGMSAv
KiBDbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbG9jay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3QzgyMTI3NjIzMDQwMEI4NDZE
RCAvKiBSZW5kZXJGdWxsU2NyZWVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlckZ1bGxTY3JlZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTdD
ODMxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRnVsbFNjcmVlbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNERjY1Q0M5MTQ1QjQzQTcwMEM0QzdBQSAvKiBNZWRpYUNvbnRy
b2xsZXJJbnRlcmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjY1
Q0NDMTQ1QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UwMkYwQzMxMUU4M0FERDAwQzY2
ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNjcmlwdENvbnRyb2xsZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFMDU3RkEzMTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UwNTdGQTQxMjIw
NzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MzMyLDYgKzE3MzQ0LDEwIEBACiAJCQkJRTQ0NjEzQTAw
Q0Q2MzMxMDAwRkFEQTc1IC8qIFZvaWRDYWxsYmFjay5pZGwgKi8sCiAJCQkJRjU1QjNEQUIxMjUx
RjEyRDAwM0VGMjY5IC8qIFdlZWtJbnB1dFR5cGUuY3BwICovLAogCQkJCUY1NUIzREFDMTI1MUYx
MkQwMDNFRjI2OSAvKiBXZWVrSW5wdXRUeXBlLmggKi8sCisJCQkJQ0QyN0Y2RTAxNDU3NUMxQjAw
NzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5pZGwgKi8sCisJCQkJQ0QyN0Y2RTQxNDU3Njc4NzAw
NzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5oICovLAorCQkJCUNEMjdGNkU2MTQ1NzcwRDMwMDc4
MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwICovLAorCQkJCUNERjY1Q0M5MTQ1QjQzQTcwMEM0
QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
aHRtbDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNzU2NSw2ICsxNzU4MSw4IEBA
CiAJCUE4M0I3OTA4MENDQUZGMkIwMDBCMDgyNSAvKiBIVE1MICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDRDI3RjZFMjE0NTc2NzU4MDA3ODIwN0QgLyog
SlNNZWRpYUNvbnRyb2xsZXIuY3BwICovLAorCQkJCUNEMjdGNkUzMTQ1NzY3NTgwMDc4MjA3RCAv
KiBKU01lZGlhQ29udHJvbGxlci5oICovLAogCQkJCTQ5RUVDRUYyMTA1MDcwQzQwMDA5OUZBQiAv
KiBKU0FycmF5QnVmZmVyLmNwcCAqLywKIAkJCQk0OUVFQ0VGMzEwNTA3MEM0MDAwOTlGQUIgLyog
SlNBcnJheUJ1ZmZlci5oICovLAogCQkJCTQ5RUVDRjE5MTA1MDcyRjMwMDA5OUZBQiAvKiBKU0Fy
cmF5QnVmZmVyVmlldy5jcHAgKi8sCkBAIC0xOTU3Niw2ICsxOTU5NCw3IEBACiAJCQkJQkNDNDM4
NzcwRTg4NkNDNzAwNTMzREQ1IC8qIEpTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJ
CQkJRTFBRDE0MjIxMjk1RUE3RjAwQUNBOTg5IC8qIEpTSFRNTElucHV0RWxlbWVudEN1c3RvbS5o
ICovLAogCQkJCUUxQUQxMzlBMTI5NUQ5MjYwMEFDQTk4OSAvKiBKU0hUTUxMaW5rRWxlbWVudEN1
c3RvbS5jcHAgKi8sCisJCQkJQ0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpTSFRNTE1lZGlh
RWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkMzMDVDQTMwQzA3ODFCQjAwQ0QyMEYwIC8qIEpT
SFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUUxQUQxNDI0MTI5NUVBOTUwMEFD
QTk4OSAvKiBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmggKi8sCiAJCQkJNDQ4QUQyN0EwQTQ4
MTM3OTAwMjNEMTc5IC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLywKQEAg
LTI0NTYwLDYgKzI0NTc5LDggQEAKIAkJCQlGRDYyRjUyRTE0NTg5OEQ4MDA5NEIwRUQgLyogQXVk
aW9Tb3VyY2VQcm92aWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ4RkVCREQxNDNF
M0VGNzAwNzI1MDJCIC8qIENTU0Nyb3NzZmFkZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
MTY5Mzc5QzE0NjA5QzZDMDBDMDEzNjIgLyogRHJhZ1Nlc3Npb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCUNERjY1Q0M4MTQ1QjFFNzUwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNERjY1Q0NBMTQ1QjQ0ODgwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjc0MDcsNiArMjc0MjgsOSBAQAogCQkJCUEz
QkI1OUYzMTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkQ4RkVCREMxNDNFM0VGNzAwNzI1MDJCIC8qIENTU0Nyb3NzZmFkZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQbGF0
Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QyN0Y2RTUxNDU3Njg1QTAwNzgy
MDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEMjdGNkU3
MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0RENTI1RDcxNDVCNkREMDAwOEQyMDREIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDREVBNzYzNDE0NjBCNTZGMDA4QjMxRjEgLyogUGxhdGZv
cm1DbG9ja1BPU0lYLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERUE3NjM1MTQ2MEI3MUEwMDhC
MzFGMSAvKiBDbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yM2NhYTRkOTExNGZiMGJkNmU3OTNlYWUyZjliYTBjMzc0N2YyMmY5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTWVkaWFFbGVtZW50
Q3VzdG9tLmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTSFRNTE1l
ZGlhRWxlbWVudC5oIgorCisjaW5jbHVkZSAiSlNNZWRpYUNvbnRyb2xsZXIuaCIKKworI2lmIEVO
QUJMRShWSURFTykKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
Kwordm9pZCBKU0hUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcihFeGVjU3RhdGUq
LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEhUTUxNZWRpYUVsZW1lbnQqIGltcCA9IHN0YXRpY19j
YXN0PEhUTUxNZWRpYUVsZW1lbnQqPihpbXBsKCkpOworICAgIGltcC0+c2V0TWVkaWFDb250cm9s
bGVyKHRvTWVkaWFDb250cm9sbGVyKHZhbHVlKSk7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaAppbmRleCBjNmYxZjNkNDQzYjg1YjZmNjQyMGNlZWM5NGJlZmIyMjc4NjJk
NDQ2Li5iYWYwZWZjODlkNGFkZWFhYjMxYzcyMzMwZjhkMTVkZTE5ZDk4OGUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuaApAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q7CiAgICAgY2xhc3MgSmF2YVNjcmlwdEF1
ZGlvTm9kZTsKICAgICBjbGFzcyBMb2NhbE1lZGlhU3RyZWFtOworICAgIGNsYXNzIE1lZGlhQ29u
dHJvbGxlcjsKICAgICBjbGFzcyBNZWRpYVN0cmVhbTsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsK
ICAgICBjbGFzcyBOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4K
aW5kZXggNmJkYjJlMjFjYTk2YjNlMTBkM2JlMWM3MWVmNzMwZDI3ZjAwZDkxZC4uOTJmZTZiMjM2
M2FjY2I3YTNmNjNiYWUyMDFlYmRiZjBiYTc1MDU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXRGYWN0b3J5LmluCkBAIC0xMyw2ICsxMyw3IEBAIElEQlRyYW5zYWN0aW9uIGNvbmRp
dGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IGNvbmRpdGlv
bmFsPUlOREVYRURfREFUQUJBU0UKIEphdmFTY3JpcHRBdWRpb05vZGUgY29uZGl0aW9uYWw9V0VC
X0FVRElPCiBMb2NhbE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorTWVkaWFD
b250cm9sbGVyCiBNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1lc3NhZ2VQ
b3J0CiBOb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVO
YW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4
IGYxZTM1NGI2MzFmNDliYTNhYzEwMWU1NTEzZDI3NWFjNWQyZDA5ODIuLmFlNWZiNzFjZWVlODY0
MDk4MzZmZTJkNTAxZWMzZmE5OTBiYTM3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dHJpYnV0ZU5hbWVzLmluCkBAIC0xNDgsNiArMTQ4LDcgQEAgbWF4CiBtYXhsZW5ndGgKIG1heXNj
cmlwdAogbWVkaWEKK21lZGlhZ3JvdXAKIG1ldGhvZAogbWluCiBtdWx0aXBsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYzkwNjVmNjkxYTljMGNhZTllNmVm
NjQzMmI4MTdjZmMyYmQ3OTcwZi4uNWMyOWM2YjkxNDBhOGFkMjZhZDZmOWU5ZjJlYTg1ZmJhZmVl
MTRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01Miw2
ICs1Miw3IEBACiAjaW5jbHVkZSAiSFRNTFNvdXJjZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
VmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKICNpbmNsdWRlICJNZWRpYURv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFFcnJvci5oIgpAQCAtMjI4LDYgKzIyOSw5IEBAIEhU
TUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV90ZXh0VHJhY2tzLnNpemUoKTsgKytpKQogICAgICAgICBtX3RleHRUcmFja3Nb
aV0tPnNldENsaWVudCgwKTsKICNlbmRpZgorCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQor
ICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+cmVtb3ZlTWVkaWFFbGVtZW50KHRoaXMpOwogfQog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKQEAg
LTI5NCw3ICsyOTgsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgaWYgKCFhdXRvcGxheSgpICYmIG1fcGxheWVy
KQogICAgICAgICAgICAgbV9wbGF5ZXItPnNldFByZWxvYWQobV9wcmVsb2FkKTsKIAotICAgIH0g
ZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25hYm9ydEF0dHIpCisgICAgfSBlbHNlIGlmIChhdHRyTmFt
ZSA9PSBtZWRpYWdyb3VwQXR0cikKKyAgICAgICAgc2V0TWVkaWFHcm91cChhdHRyLT52YWx1ZSgp
KTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmFib3J0QXR0cikKICAgICAgICAgc2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgY3JlYXRlQXR0cmli
dXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0g
b25iZWZvcmVsb2FkQXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRo
aXMsIGF0dHIpKTsKQEAgLTU4NCwxMCArNTkwLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cHJlcGFyZUZvckxvYWQoKQogICAgICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKICAgICAgICAgaW52
YWxpZGF0ZUNhY2hlZFRpbWUoKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCku
ZW1wdGllZEV2ZW50KTsKKyAgICAgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiAgICAgfQog
CiAgICAgLy8gNSAtIFNldCB0aGUgcGxheWJhY2tSYXRlIGF0dHJpYnV0ZSB0byB0aGUgdmFsdWUg
b2YgdGhlIGRlZmF1bHRQbGF5YmFja1JhdGUgYXR0cmlidXRlLgotICAgIHNldFBsYXliYWNrUmF0
ZShkZWZhdWx0UGxheWJhY2tSYXRlKCkpOworICAgIHNldFBsYXliYWNrUmF0ZShtX21lZGlhQ29u
dHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5kZWZhdWx0UGxheWJhY2tSYXRlKCkgOiBkZWZh
dWx0UGxheWJhY2tSYXRlKCkpOwogCiAgICAgLy8gNiAtIFNldCB0aGUgZXJyb3IgYXR0cmlidXRl
IHRvIG51bGwgYW5kIHRoZSBhdXRvcGxheWluZyBmbGFnIHRvIHRydWUuCiAgICAgbV9lcnJvciA9
IDA7CkBAIC0xMjI0LDYgKzEyMzEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5
U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCiAgICAgfQogCiAgICAgdXBkYXRl
UGxheVN0YXRlKCk7CisgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiB9CiAKICNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQpAQCAtMTUyMyw2ICsxNTMxLDEwIEBAIGZsb2F0IEhUTUxNZWRpYUVs
ZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRD
dXJyZW50VGltZShmbG9hdCB0aW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAobV9t
ZWRpYUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KICAgICBzZWVrKHRpbWUsIGVjKTsKIH0KIApAQCAtMTU3Myw4ICsx
NTg1LDE2IEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0CiAK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUpCiB7Ci0g
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKCVmKSIsIHJh
dGUpOworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
c2V0UGxheWJhY2tSYXRlSW50ZXJuYWwocmF0ZSk7Cit9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0UGxheWJhY2tSYXRlSW50ZXJuYWwoZmxvYXQgcmF0ZSkKK3sKKyAgICBMT0coTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGVJbnRlcm5hbCglZikiLCByYXRlKTsK
KyAgICAKICAgICBpZiAobV9wbGF5YmFja1JhdGUgIT0gcmF0ZSkgewogICAgICAgICBtX3BsYXli
YWNrUmF0ZSA9IHJhdGU7CiAgICAgICAgIGludmFsaWRhdGVDYWNoZWRUaW1lKCk7CkBAIC0xNjkw
LDYgKzE3MTAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCgpCiAgICAg
bV9hdXRvcGxheWluZyA9IGZhbHNlOwogCiAgICAgdXBkYXRlUGxheVN0YXRlKCk7CisgICAgdXBk
YXRlTWVkaWFDb250cm9sbGVyKCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2Uo
KQpAQCAtMTg4MSw3ICsxOTAyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0b2dnbGVQbGF5
U3RhdGUoKQogICAgIC8vIFdlIGNhbiBzYWZlbHkgY2FsbCB0aGUgaW50ZXJuYWwgcGxheS9wYXVz
ZSBtZXRob2RzLCB3aGljaCBkb24ndCBjaGVjayByZXN0cmljdGlvbnMsIGJlY2F1c2UKICAgICAv
LyB0aGlzIG1ldGhvZCBpcyBvbmx5IGNhbGxlZCBmcm9tIHRoZSBidWlsdC1pbiBtZWRpYSBjb250
cm9sbGVyCiAgICAgaWYgKGNhblBsYXkoKSkgewotICAgICAgICBzZXRQbGF5YmFja1JhdGUoZGVm
YXVsdFBsYXliYWNrUmF0ZSgpKTsKKyAgICAgICAgc2V0UGxheWJhY2tSYXRlKG1fbWVkaWFDb250
cm9sbGVyID8gbV9tZWRpYUNvbnRyb2xsZXItPmRlZmF1bHRQbGF5YmFja1JhdGUoKSA6IGRlZmF1
bHRQbGF5YmFja1JhdGUoKSk7CiAgICAgICAgIHBsYXlJbnRlcm5hbCgpOwogICAgIH0gZWxzZSAK
ICAgICAgICAgcGF1c2VJbnRlcm5hbCgpOwpAQCAtMjIzMCw3ICsyMjUxLDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICBm
bG9hdCBub3cgPSBjdXJyZW50VGltZSgpOwogICAgIGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7CiAg
ICAgaWYgKCFpc25hbihkdXIpICYmIGR1ciAmJiBub3cgPj0gZHVyKSB7Ci0gICAgICAgIGlmIChs
b29wKCkpIHsKKyAgICAgICAgaWYgKGxvb3AoKSAmJiAhbV9tZWRpYUNvbnRyb2xsZXIpIHsKICAg
ICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbjsKICAgICAgICAgICAgIG1f
c2VudEVuZEV2ZW50ID0gZmFsc2U7CiAgICAgICAgICAgICBzZWVrKDAsIGlnbm9yZWRFeGNlcHRp
b24pOwpAQCAtMjI0Miw2ICsyMjYzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllclRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICAgICAgICAgIGlmICghbV9zZW50RW5k
RXZlbnQpIHsKICAgICAgICAgICAgICAgICBtX3NlbnRFbmRFdmVudCA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW5kZWRFdmVudCk7CisgICAgICAg
ICAgICAgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CkBAIC0yNDI2LDEwICsyNDQ4LDcgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBI
VE1MTWVkaWFFbGVtZW50OjpwbGF5ZWQoKQogCiBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IEhUTUxN
ZWRpYUVsZW1lbnQ6OnNlZWthYmxlKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRSByZWFsIHJhbmdl
cyBzdXBwb3J0Ci0gICAgaWYgKCFtYXhUaW1lU2Vla2FibGUoKSkKLSAgICAgICAgcmV0dXJuIFRp
bWVSYW5nZXM6OmNyZWF0ZSgpOwotICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUobWluVGlt
ZVNlZWthYmxlKCksIG1heFRpbWVTZWVrYWJsZSgpKTsKKyAgICByZXR1cm4gbV9wbGF5ZXIgPyBt
X3BsYXllci0+c2Vla2FibGUoKSA6IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwogfQogCiBib29sIEhU
TUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZygpIGNvbnN0CkBAIC0yNDM4LDcgKzI0
NTcsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZygpIGNvbnN0
CiAgICAgLy8gd2hlbiBpdCByYW4gb3V0IG9mIGJ1ZmZlcmVkIGRhdGEuIEEgbW92aWUgaXMgdGhp
cyBzdGF0ZSBpcyAicG90ZW50aWFsbHkgcGxheWluZyIsIG1vZHVsbyB0aGUKICAgICAvLyBjaGVj
a3MgaW4gY291bGRQbGF5SWZFbm91Z2hEYXRhKCkuCiAgICAgYm9vbCBwYXVzZWRUb0J1ZmZlciA9
IG1fcmVhZHlTdGF0ZU1heGltdW0gPj0gSEFWRV9GVVRVUkVfREFUQSAmJiBtX3JlYWR5U3RhdGUg
PCBIQVZFX0ZVVFVSRV9EQVRBOwotICAgIHJldHVybiAocGF1c2VkVG9CdWZmZXIgfHwgbV9yZWFk
eVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpICYmIGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpOwor
ICAgIHJldHVybiAocGF1c2VkVG9CdWZmZXIgfHwgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJF
X0RBVEEpICYmIGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpICYmICFpc0Jsb2NrZWRPbk1lZGlhQ29u
dHJvbGxlcigpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNvdWxkUGxheUlmRW5vdWdo
RGF0YSgpIGNvbnN0CkBAIC0yNDYzLDcgKzI0ODIsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OmVuZGVkUGxheWJhY2soKSBjb25zdAogICAgIC8vIG9mIHBsYXliYWNrIGlzIGZvcndhcmRzIGFu
ZCB0aGUgbWVkaWEgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgbG9vcCBhdHRyaWJ1dGUgc3BlY2lm
aWVkLAogICAgIGZsb2F0IG5vdyA9IGN1cnJlbnRUaW1lKCk7CiAgICAgaWYgKG1fcGxheWJhY2tS
YXRlID4gMCkKLSAgICAgICAgcmV0dXJuIGR1ciA+IDAgJiYgbm93ID49IGR1ciAmJiAhbG9vcCgp
OworICAgICAgICByZXR1cm4gZHVyID4gMCAmJiBub3cgPj0gZHVyICYmICghbG9vcCgpIHx8IG1f
bWVkaWFDb250cm9sbGVyKTsKIAogICAgIC8vIG9yIHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0
aW9uIGlzIHRoZSBlYXJsaWVzdCBwb3NzaWJsZSBwb3NpdGlvbiBhbmQgdGhlIGRpcmVjdGlvbiAK
ICAgICAvLyBvZiBwbGF5YmFjayBpcyBiYWNrd2FyZHMKQEAgLTI1MDksOCArMjUyOCwxNCBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSgpCiAgICAgaWYgKCFwcm9jZXNzaW5n
TWVkaWFQbGF5ZXJDYWxsYmFjaygpKSB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgp
LT5wYWdlKCk7CiAgICAgICAgIGZsb2F0IHZvbHVtZU11bHRpcGxpZXIgPSBwYWdlID8gcGFnZS0+
bWVkaWFWb2x1bWUoKSA6IDE7Ci0gICAgCi0gICAgICAgIG1fcGxheWVyLT5zZXRNdXRlZChtX211
dGVkKTsKKyAgICAgICAgYm9vbCBzaG91bGRNdXRlID0gbV9tdXRlZDsKKworICAgICAgICBpZiAo
bV9tZWRpYUNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIHZvbHVtZU11bHRpcGxpZXIgKj0gbV9t
ZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgpOworICAgICAgICAgICAgc2hvdWxkTXV0ZSA9IG1fbWVk
aWFDb250cm9sbGVyLT5tdXRlZCgpOworICAgICAgICB9CisKKyAgICAgICAgbV9wbGF5ZXItPnNl
dE11dGVkKHNob3VsZE11dGUpOwogICAgICAgICBtX3BsYXllci0+c2V0Vm9sdW1lKG1fdm9sdW1l
ICogdm9sdW1lTXVsdGlwbGllcik7CiAgICAgfQogCkBAIC0yNTc3LDExICsyNjAyLDEzIEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0YXRlKCkKICAgICAgICAgaWYgKGhhc01l
ZGlhQ29udHJvbHMoKSkKICAgICAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+cGxheWJhY2tTdG9w
cGVkKCk7CiAgICAgfQotICAgIAorCisgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CisKICAg
ICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQo
KTsKIH0KLSAgICAKKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQYXVzZWRJbnRlcm5hbChi
b29sIGIpCiB7CiAgICAgbV9wYXVzZWRJbnRlcm5hbCA9IGI7CkBAIC0yNjQxLDYgKzI2NjgsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKCkKIAogICAgIC8vIFJl
c2V0IG1fcmVhZHlTdGF0ZSBzaW5jZSBtX3BsYXllciBpcyBnb25lLgogICAgIG1fcmVhZHlTdGF0
ZSA9IEhBVkVfTk9USElORzsKKyAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKIH0KIAogYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjpjYW5TdXNwZW5kKCkgY29uc3QKQEAgLTMxMzMsNiArMzE2MSw1
OCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEl0ZW1WYWx1ZVRleHQoY29uc3QgU3RyaW5n
JiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB9CiAjZW5kaWYKIAorY29uc3QgU3RyaW5nJiBI
VE1MTWVkaWFFbGVtZW50OjptZWRpYUdyb3VwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRp
YUNvbnRyb2xsZXIgPyBtX21lZGlhQ29udHJvbGxlci0+bWVkaWFHcm91cCgpIDogZW1wdHlTdHJp
bmcoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUdyb3VwKGNvbnN0IFN0
cmluZyYgZ3JvdXApCit7CisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyICYmIG1fbWVkaWFDb250
cm9sbGVyLT5tZWRpYUdyb3VwKCkgPT0gZ3JvdXApCisgICAgICAgIHJldHVybjsKKworICAgIHNl
dE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXI6Om1lZGlhQ29udHJvbGxlckZvck1lZGlh
R3JvdXAoZ3JvdXApKTsKK30KKworTWVkaWFDb250cm9sbGVyKiBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYUNvbnRyb2xsZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlhQ29udHJvbGxlci5n
ZXQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNvbnRyb2xsZXIoUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IGNvbnRyb2xsZXIpCit7CisgICAgaWYgKG1fbWVkaWFD
b250cm9sbGVyKQorICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+cmVtb3ZlTWVkaWFFbGVtZW50
KHRoaXMpOworCisgICAgbV9tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyOworCisgICAgaWYg
KG1fbWVkaWFDb250cm9sbGVyKQorICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+YWRkTWVkaWFF
bGVtZW50KHRoaXMpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZU1lZGlhQ29u
dHJvbGxlcigpCit7CisgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJu
OworICAgIG1fbWVkaWFDb250cm9sbGVyLT51cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgbV9tZWRp
YUNvbnRyb2xsZXItPnVwZGF0ZVBsYXliYWNrU3RhdGUoKTsKK30KKworYm9vbCBIVE1MTWVkaWFF
bGVtZW50Ojppc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigpIGNvbnN0Cit7CisgICAgaWYgKCFt
X21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fbWVk
aWFDb250cm9sbGVyLT5pc0Jsb2NrZWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBm
bG9hdCBjdXJyZW50VGltZSA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAg
IGlmIChjdXJyZW50VGltZSA8IHN0YXJ0VGltZSgpIHx8IGN1cnJlbnRUaW1lID4gc3RhcnRUaW1l
KCkgKyBkdXJhdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxz
ZTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
aW5kZXggMGQyZjlmYzQ5ZTEwMGNiNTE3YmVmMGQxNTBhYzRmNzdhNTc1ZTllYy4uYWRjNzk4N2Zi
N2FiMGUzYmJhNmM2MzQwYTEwZDQ2NmM4YjY3Y2ZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5o
IgogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRM
aXN0ZW5lci5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIgogI2luY2x1
ZGUgIk1lZGlhUGxheWVyLmgiCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykK
QEAgLTUwLDYgKzUxLDcgQEAgY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOwogY2xh
c3MgRXZlbnQ7CiBjbGFzcyBIVE1MU291cmNlRWxlbWVudDsKIGNsYXNzIEhUTUxUcmFja0VsZW1l
bnQ7CitjbGFzcyBNZWRpYUNvbnRyb2xsZXI7CiBjbGFzcyBNZWRpYUNvbnRyb2xzOwogY2xhc3Mg
TWVkaWFFcnJvcjsKIGNsYXNzIEtVUkw7CkBAIC02Myw3ICs2NSw3IEBAIGNsYXNzIFdpZGdldDsK
IC8vIEJ1dCBpdCBjYW4ndCBiZSB1bnRpbCB0aGUgQ2hyb21pdW0gV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsIGNsYXNzIGlzIGZpeGVkIHNvIGl0CiAvLyBubyBsb25nZXIgZGVwZW5kcyBvbiB0eXBl
Y2FzdGluZyBhIE1lZGlhUGxheWVyQ2xpZW50IHRvIGFuIEhUTUxNZWRpYUVsZW1lbnQuCiAKLWNs
YXNzIEhUTUxNZWRpYUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBNZWRpYVBs
YXllckNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVE
T01PYmplY3QKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1
YmxpYyBNZWRpYVBsYXllckNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1
YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLCBwcml2YXRlIFRleHRUcmFja0NsaWVudAogI2Vu
ZGlmCkBAIC0xMTQsNyArMTE2LDYgQEAgcHVibGljOgogICAgIFN0cmluZyBjYW5QbGF5VHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKIAogLy8gcmVhZHkgc3RhdGUKLSAgICBlbnVt
IFJlYWR5U3RhdGUgeyBIQVZFX05PVEhJTkcsIEhBVkVfTUVUQURBVEEsIEhBVkVfQ1VSUkVOVF9E
QVRBLCBIQVZFX0ZVVFVSRV9EQVRBLCBIQVZFX0VOT1VHSF9EQVRBIH07CiAgICAgUmVhZHlTdGF0
ZSByZWFkeVN0YXRlKCkgY29uc3Q7CiAgICAgYm9vbCBzZWVraW5nKCkgY29uc3Q7CiAKQEAgLTIz
MCw2ICsyMzEsMTIgQEAgcHVibGljOgogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291
cmNlUHJvdmlkZXIoKTsKICNlbmRpZgogCisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYpOworCisgICAgTWVk
aWFDb250cm9sbGVyKiBtZWRpYUNvbnRyb2xsZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldE1lZGlh
Q29udHJvbGxlcihQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4pOworCiBwcm90ZWN0ZWQ6CiAg
ICAgSFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAg
ICB2aXJ0dWFsIH5IVE1MTWVkaWFFbGVtZW50KCk7CkBAIC0zOTQsNiArNDAxLDggQEAgcHJpdmF0
ZToKICAgICAvLyBQYXVzZXMgcGxheWJhY2sgd2l0aG91dCBjaGFuZ2luZyBhbnkgc3RhdGVzIG9y
IGdlbmVyYXRpbmcgZXZlbnRzCiAgICAgdm9pZCBzZXRQYXVzZWRJbnRlcm5hbChib29sKTsKIAor
ICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlSW50ZXJuYWwoZmxvYXQpOworCiAgICAgdmlydHVhbCB2
b2lkIG1lZGlhQ2FuU3RhcnQoKTsKIAogICAgIHZvaWQgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQo
Ym9vbCk7CkBAIC00MTIsNiArNDIxLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNl
dEl0ZW1WYWx1ZVRleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCiAK
KyAgICB2b2lkIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOworICAgIGJvb2wgaXNCbG9ja2VkT25N
ZWRpYUNvbnRyb2xsZXIoKSBjb25zdDsKKyAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0
dXJuICFtX2N1cnJlbnRTcmMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBpc0xpdmVTdHJlYW0oKSBj
b25zdCB7IHJldHVybiBtb3ZpZUxvYWRUeXBlKCkgPT0gTWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW07
IH0KKwogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fbG9hZFRpbWVyOwogICAgIFRpbWVy
PEhUTUxNZWRpYUVsZW1lbnQ+IG1fYXN5bmNFdmVudFRpbWVyOwogICAgIFRpbWVyPEhUTUxNZWRp
YUVsZW1lbnQ+IG1fcHJvZ3Jlc3NFdmVudFRpbWVyOwpAQCAtNTE2LDYgKzUzMCw5IEBAIHByaXZh
dGU6CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNr
PiA+IG1fdGV4dFRyYWNrczsKICNlbmRpZgorCisgICAgZnJpZW5kIGNsYXNzIE1lZGlhQ29udHJv
bGxlcjsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBtX21lZGlhQ29udHJvbGxlcjsKIH07
CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRs
CmluZGV4IDMzMGFkYmFhZGU3MTAyNjljMmYyZGU1ZWVjNWNjMWUxNjJiMGM5YjUuLjQ5MjEwYjYy
MDI3MjM3MWU0NWFhYjlmYWIxOTFiZjYxMDA0M2NlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmlkbApAQCAtMTE0LDUgKzExNCw4IEBAIG1vZHVsZSBodG1sIHsKICNp
ZiBkZWZpbmVkKEVOQUJMRV9WSURFT19UUkFDSykgJiYgRU5BQkxFX1ZJREVPX1RSQUNLCiAgICAg
W0VuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10gVGV4dFRyYWNrIGFkZFRyYWNrKGlu
IERPTVN0cmluZyBraW5kLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBsYWJlbCwgaW4gW09wdGlv
bmFsXSBET01TdHJpbmcgbGFuZ3VhZ2UpOwogI2VuZGlmCisKKyAgICBhdHRyaWJ1dGUgW1JlZmxl
Y3QsIENvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBDb252ZXJ0TnVsbFN0cmluZ1RvTnVsbF0gRE9N
U3RyaW5nIG1lZGlhR3JvdXA7CisgICAgYXR0cmlidXRlIFtDdXN0b21TZXR0ZXJdIE1lZGlhQ29u
dHJvbGxlciBtZWRpYUNvbnRyb2xsZXI7CiB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNv
bnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzOWI4NGFmMjU3N2Q5ZTgyYjE1ZTA0NjVmYmYxMTIz
MjQxMDIyODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29u
dHJvbGxlci5jcHAKQEAgLTAsMCArMSw0NTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVyLmgiCisK
KyNpbmNsdWRlICJDbG9jay5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNs
dWRlICJUaW1lUmFuZ2VzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworc3RhdGlj
IEhhc2hNYXA8U3RyaW5nLCBNZWRpYUNvbnRyb2xsZXIqPiYgbWVkaWFHcm91cFRvTWVkaWFDb250
cm9sbGVyTWFwKCkKK3sKKyAgICBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIE1lZGlhQ29udHJvbGxl
cio+KiBtYXAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIE1lZGlhQ29udHJvbGxlcio+KCk7CisgICAg
cmV0dXJuICptYXA7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBNZWRpYUNvbnRy
b2xsZXI6Om1lZGlhQ29udHJvbGxlckZvck1lZGlhR3JvdXAoY29uc3QgU3RyaW5nJiBncm91cCkK
K3sKKyAgICBpZiAoZ3JvdXAuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYg
KGdyb3VwLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoTWVkaWFDb250
cm9sbGVyKiBjb250cm9sbGVyID0gbWVkaWFHcm91cFRvTWVkaWFDb250cm9sbGVyTWFwKCkuZ2V0
KGdyb3VwKSkKKyAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXI7CisKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sbGVyPiBjb250cm9sbGVyID0gY3JlYXRlKCk7CisgICAgY29udHJvbGxlci0+bV9tZWRp
YUdyb3VwID0gZ3JvdXA7CisgICAgbWVkaWFHcm91cFRvTWVkaWFDb250cm9sbGVyTWFwKCkuc2V0
KGdyb3VwLCBjb250cm9sbGVyLmdldCgpKTsKKyAgICByZXR1cm4gY29udHJvbGxlci5yZWxlYXNl
KCk7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBNZWRpYUNvbnRyb2xsZXI6OmNy
ZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xsZXIoKSk7Cit9
CisKK01lZGlhQ29udHJvbGxlcjo6TWVkaWFDb250cm9sbGVyKCkKKyAgICA6IG1fcGF1c2VkKGZh
bHNlKQorICAgICwgbV9kZWZhdWx0UGxheWJhY2tSYXRlKDEpCisgICAgLCBtX3BsYXliYWNrUmF0
ZSgxKQorICAgICwgbV92b2x1bWUoMSkKKyAgICAsIG1fbXV0ZWQoZmFsc2UpCisgICAgLCBtX3Jl
YWR5U3RhdGUoSEFWRV9OT1RISU5HKQorICAgICwgbV9wbGF5YmFja1N0YXRlKFdBSVRJTkcpCisg
ICAgLCBtX2FzeW5jRXZlbnRUaW1lcih0aGlzLCAmTWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50
VGltZXJGaXJlZCkKKyAgICAsIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGZhbHNlKQorICAgICwg
bV9jbG9jayhDbG9jazo6Y3JlYXRlKCkpCit7Cit9CisKK01lZGlhQ29udHJvbGxlcjo6fk1lZGlh
Q29udHJvbGxlcigpCit7CisgICAgaWYgKCFtX21lZGlhR3JvdXAuaXNFbXB0eSgpKQorICAgICAg
ICBtZWRpYUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXAoKS5yZW1vdmUobV9tZWRpYUdyb3VwKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmFkZE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVt
ZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICBBU1NFUlQoIW1fbWVk
aWFFbGVtZW50cy5jb250YWlucyhlbGVtZW50KSk7CisgICAgbV9tZWRpYUVsZW1lbnRzLmFwcGVu
ZChlbGVtZW50KTsKKyAgICB1cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgdXBkYXRlUGxheWJhY2tT
dGF0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6cmVtb3ZlTWVkaWFFbGVtZW50KEhU
TUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIEFT
U0VSVChtX21lZGlhRWxlbWVudHMuY29udGFpbnMoZWxlbWVudCkpOworICAgIG1fbWVkaWFFbGVt
ZW50cy5yZW1vdmUobV9tZWRpYUVsZW1lbnRzLmZpbmQoZWxlbWVudCkpOworfQorCitib29sIE1l
ZGlhQ29udHJvbGxlcjo6Y29udGFpbnNNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxl
bWVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKGVsZW1l
bnQpOworfQorCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhQ29udHJvbGxlcjo6YnVmZmVy
ZWQoKSBjb25zdAoreworICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4g
YnVmZmVyZWRSYW5nZXMgPSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+YnVmZmVyZWQoKTsKKyAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsg
KytpbmRleCkKKyAgICAgICAgYnVmZmVyZWRSYW5nZXMtPmludGVyc2VjdFdpdGgobV9tZWRpYUVs
ZW1lbnRzW2luZGV4XS0+YnVmZmVyZWQoKS5nZXQoKSk7CisgICAgcmV0dXJuIGJ1ZmZlcmVkUmFu
Z2VzOworfQorCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhQ29udHJvbGxlcjo6c2Vla2Fi
bGUoKSBjb25zdAoreworICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisgICAgCisgICAgUmVmUHRyPFRpbWVSYW5n
ZXM+IHNlZWthYmxlUmFuZ2VzID0gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPnNlZWthYmxlKCk7
CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAxOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXpl
KCk7ICsraW5kZXgpCisgICAgICAgIHNlZWthYmxlUmFuZ2VzLT5pbnRlcnNlY3RXaXRoKG1fbWVk
aWFFbGVtZW50c1tpbmRleF0tPnNlZWthYmxlKCkuZ2V0KCkpOworICAgIHJldHVybiBzZWVrYWJs
ZVJhbmdlczsKK30KKworUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYUNvbnRyb2xsZXI6OnBs
YXllZCgpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKyAgICAKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4g
cGxheWVkUmFuZ2VzID0gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPnBsYXllZCgpOworICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2lu
ZGV4KQorICAgICAgICBwbGF5ZWRSYW5nZXMtPnVuaW9uV2l0aChtX21lZGlhRWxlbWVudHNbaW5k
ZXhdLT5wbGF5ZWQoKS5nZXQoKSk7CisgICAgcmV0dXJuIHBsYXllZFJhbmdlczsKK30KKworZmxv
YXQgTWVkaWFDb250cm9sbGVyOjpkdXJhdGlvbigpIGNvbnN0Cit7CisgICAgZmxvYXQgbWF4RHVy
YXRpb24gPSAwOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxl
bWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtYXhEdXJhdGlvbiA9IG1heChtYXhEdXJh
dGlvbiwgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+ZHVyYXRpb24oKSk7CisgICAgcmV0dXJuIG1h
eER1cmF0aW9uOworfQorCitmbG9hdCBNZWRpYUNvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKCkgY29u
c3QKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgCisgICAgcmV0dXJuIG1fY2xvY2stPmN1cnJlbnRUaW1lKCk7CisgICAgCit9CisK
K3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRDdXJyZW50VGltZShmbG9hdCB0aW1lLCBFeGNlcHRp
b25Db2RlJiBjb2RlKQoreworICAgIG1fY2xvY2stPnNldEN1cnJlbnRUaW1lKHRpbWUpOworICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyAr
K2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5zZWVrKHRpbWUsIGNvZGUp
OworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6cGxheSgpCit7CisgICAgaWYgKG1fcGxheWJh
Y2tTdGF0ZSA9PSBFTkRFRCkgeworICAgICAgICBFeGNlcHRpb25Db2RlIGNvZGUgPSAwOworICAg
ICAgICBzZXRDdXJyZW50VGltZSgwLCBjb2RlKTsKKyAgICB9CisKKyAgICBtX3BhdXNlZCA9IGZh
bHNlOworICAgIHVwZGF0ZU1lZGlhRWxlbWVudHMoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xs
ZXI6OnBhdXNlKCkKK3sKKyAgICBtX3BhdXNlZCA9IHRydWU7CisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAg
IG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnBhdXNlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9s
bGVyOjpzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUpCit7CisgICAgbV9kZWZhdWx0
UGxheWJhY2tSYXRlID0gcmF0ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldFBsYXli
YWNrUmF0ZShmbG9hdCByYXRlKQoreworICAgIG1fcGxheWJhY2tSYXRlID0gcmF0ZTsKKyAgICBt
X2Nsb2NrLT5zZXRQbGF5UmF0ZShyYXRlKTsKKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsg
aW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21lZGlh
RWxlbWVudHNbaW5kZXhdLT5zZXRQbGF5YmFja1JhdGUocmF0ZSk7Cit9CisKK3ZvaWQgTWVkaWFD
b250cm9sbGVyOjpzZXRWb2x1bWUoZmxvYXQgbGV2ZWwsIEV4Y2VwdGlvbkNvZGUmKQoreworICAg
IG1fdm9sdW1lID0gbGV2ZWw7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1f
bWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tp
bmRleF0tPnVwZGF0ZVZvbHVtZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0TXV0
ZWQoYm9vbCBmbGFnKQoreworICAgIG1fbXV0ZWQgPSBmbGFnOworICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAg
ICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT51cGRhdGVWb2x1bWUoKTsKK30KKwordm9pZCBNZWRp
YUNvbnRyb2xsZXI6OnVwZGF0ZVJlYWR5U3RhdGUoKQoreworICAgIFJlYWR5U3RhdGUgb2xkUmVh
ZHlTdGF0ZSA9IG1fcmVhZHlTdGF0ZTsKKyAgICBSZWFkeVN0YXRlIG5ld1JlYWR5U3RhdGU7CisK
KyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgbmV3UmVhZHlTdGF0
ZSA9IEhBVkVfTk9USElORzsKKyAgICBlbHNlIHsKKyAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IG1f
bWVkaWFFbGVtZW50cy5maXJzdCgpLT5yZWFkeVN0YXRlKCk7CisgICAgICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAg
ICAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IG1pbihuZXdSZWFkeVN0YXRlLCBtX21lZGlhRWxlbWVu
dHNbaW5kZXhdLT5yZWFkeVN0YXRlKCkpOworICAgIH0KKworICAgIGlmIChuZXdSZWFkeVN0YXRl
ID09IG9sZFJlYWR5U3RhdGUpIAorICAgICAgICByZXR1cm47CisKKyAgICBBdG9taWNTdHJpbmcg
ZXZlbnROYW1lOworICAgIHN3aXRjaCAobmV3UmVhZHlTdGF0ZSkgeworICAgIGNhc2UgSEFWRV9O
T1RISU5HOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkuZW1wdGllZEV2ZW50Owor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEhBVkVfTUVUQURBVEE6CisgICAgICAgIGV2ZW50TmFt
ZSA9IGV2ZW50TmFtZXMoKS5sb2FkZWRtZXRhZGF0YUV2ZW50OworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEhBVkVfQ1VSUkVOVF9EQVRBOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVz
KCkubG9hZGVkZGF0YUV2ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhBVkVfRlVUVVJF
X0RBVEE6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5jYW5wbGF5RXZlbnQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSEFWRV9FTk9VR0hfREFUQToKKyAgICAgICAgZXZlbnRO
YW1lID0gZXZlbnROYW1lcygpLmNhbnBsYXl0aHJvdWdoRXZlbnQ7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBz
Y2hlZHVsZUV2ZW50KGV2ZW50TmFtZSk7CisgICAgbV9yZWFkeVN0YXRlID0gbmV3UmVhZHlTdGF0
ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVwZGF0ZVBsYXliYWNrU3RhdGUoKQorewor
ICAgIFBsYXliYWNrU3RhdGUgb2xkUGxheWJhY2tTdGF0ZSA9IG1fcGxheWJhY2tTdGF0ZTsKKyAg
ICBQbGF5YmFja1N0YXRlIG5ld1BsYXliYWNrU3RhdGU7CisKKyAgICBpZiAobV9tZWRpYUVsZW1l
bnRzLmlzRW1wdHkoKSkKKyAgICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IFdBSVRJTkc7CisgICAg
ZWxzZSBpZiAoaGFzRW5kZWQoKSkKKyAgICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IEVOREVEOwor
ICAgIGVsc2UgaWYgKGlzQmxvY2tlZCgpKSAKKyAgICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IFdB
SVRJTkc7CisgICAgZWxzZQorICAgICAgICBuZXdQbGF5YmFja1N0YXRlID0gUExBWUlORzsKKwor
ICAgIGlmIChuZXdQbGF5YmFja1N0YXRlID09IG9sZFBsYXliYWNrU3RhdGUpCisgICAgICAgIHJl
dHVybjsKKworICAgIEF0b21pY1N0cmluZyBldmVudE5hbWU7CisgICAgc3dpdGNoIChuZXdQbGF5
YmFja1N0YXRlKSB7CisgICAgY2FzZSBXQUlUSU5HOgorICAgICAgICBldmVudE5hbWUgPSBldmVu
dE5hbWVzKCkud2FpdGluZ0V2ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVOREVEOgor
ICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkuZW5kZWRFdmVudDsKKyAgICAgICAgbV9w
YXVzZWQgPSB0cnVlOworICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wYXVzZUV2
ZW50KTsKKyAgICAgICAgbV9jbG9jay0+c3RvcCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBMQVlJTkc6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5wbGF5aW5nRXZlbnQ7
CisgICAgICAgIG1fY2xvY2stPnN0YXJ0KCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBzY2hlZHVsZUV2ZW50
KGV2ZW50TmFtZSk7CisgICAgbV9wbGF5YmFja1N0YXRlID0gbmV3UGxheWJhY2tTdGF0ZTsKKyAg
ICB1cGRhdGVNZWRpYUVsZW1lbnRzKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjp1cGRh
dGVNZWRpYUVsZW1lbnRzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
bV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRz
W2luZGV4XS0+dXBkYXRlUGxheVN0YXRlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpz
Y2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQoreworICAgIG1fcGVu
ZGluZ0V2ZW50cy5hcHBlbmQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCB0cnVlKSk7
CisgICAgaWYgKCFtX2FzeW5jRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2FzeW5j
RXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjph
c3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xsZXI+KikKK3sKKyAgICBWZWN0
b3I8UmVmUHRyPEV2ZW50PiA+IHBlbmRpbmdFdmVudHM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgCisgICAgbV9wZW5kaW5nRXZlbnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7CisgICAg
c2l6ZV90IGNvdW50ID0gcGVuZGluZ0V2ZW50cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KQorICAgICAgICBkaXNwYXRjaEV2ZW50KHBl
bmRpbmdFdmVudHNbaW5kZXhdLnJlbGVhc2UoKSwgZWMpOworfQorCitTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBNZWRpYUNvbnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAor
eworICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPmRvY3VtZW50KCk7Cit9CisKK2Jv
b2wgTWVkaWFDb250cm9sbGVyOjpoYXNBdWRpbygpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAg
ICAgICAgaWYgKG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmhhc0F1ZGlvKCkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlh
Q29udHJvbGxlcjo6aGFzVmlkZW8oKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0g
MDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlm
IChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5oYXNWaWRlbygpKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xs
ZXI6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBp
ZiAobV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCB2aXNpYmxlKQorewor
ICAgIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlID0gdmlzaWJsZTsKKyAgICBmb3IgKHNpemVfdCBp
bmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAg
ICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKHZpc2li
bGUpOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6c3VwcG9ydHNTY2FubmluZygpIGNvbnN0
Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5z
aXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5z
dXBwb3J0c1NjYW5uaW5nKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6YmVnaW5TY3J1YmJpbmco
KQoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMu
c2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5iZWdpblNj
cnViYmluZygpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6ZW5kU2NydWJiaW5nKCkKK3sK
KyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUo
KTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+ZW5kU2NydWJiaW5n
KCk7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpjYW5QbGF5KCkgY29uc3QKK3sKKyAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytp
bmRleCkgeworICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmNhblBsYXkoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgTWVkaWFDb250cm9sbGVyOjppc0xpdmVTdHJlYW0oKSBjb25zdAoreworICAgIGZvciAo
c2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4
KSB7CisgICAgICAgIGlmICghbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+aXNMaXZlU3RyZWFtKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
Citib29sIE1lZGlhQ29udHJvbGxlcjo6aXNMb2FkaW5nKCkgY29uc3QKK3sKKyAgICBmb3IgKHNp
emVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkg
eworICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmlzTG9hZGluZygpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBNZWRpYUNvbnRyb2xsZXI6OnJldHVyblRvUmVhbHRpbWUoKQoreworICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAg
ICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5yZXR1cm5Ub1JlYWx0aW1lKCk7Cit9CisKK2Jv
b2wgTWVkaWFDb250cm9sbGVyOjppc0Jsb2NrZWQoKSBjb25zdAoreworICAgIGlmIChtX3BhdXNl
ZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBhbGxQYXVzZWQgPSB0cnVl
OworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6
ZSgpOyArK2luZGV4KSB7CisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQgPSBtX21l
ZGlhRWxlbWVudHNbaW5kZXhdOworICAgICAgICBpZiAoZWxlbWVudC0+cmVhZHlTdGF0ZSgpIDw9
IEhBVkVfQ1VSUkVOVF9EQVRBKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIAor
ICAgICAgICBpZiAoZWxlbWVudC0+YXV0b3BsYXkoKSAmJiBlbGVtZW50LT5wYXVzZWQoKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGFsbFBhdXNlZCAmPSBlbGVtZW50LT5w
YXVzZWQoKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGFsbFBhdXNlZDsKK30KKworYm9vbCBN
ZWRpYUNvbnRyb2xsZXI6Omhhc0VuZGVkKCkgY29uc3QKK3sKKyAgICBpZiAobV9wbGF5YmFja1Jh
dGUgPD0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fbWVkaWFFbGVtZW50
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgYWxsSGF2ZUVu
ZGVkID0gdHJ1ZTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVs
ZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgYWxsSGF2ZUVuZGVkICY9IG1fbWVkaWFF
bGVtZW50c1tpbmRleF0tPmVuZGVkKCk7CisgICAgcmV0dXJuIGFsbEhhdmVFbmRlZDsKK30KKwor
Citjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbGxlcjo6aW50ZXJmYWNlTmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZWRpYUNvbnRyb2xs
ZXI7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTIzOTE5Yzc5NDJmYzI1YWEzNTRjYTcyNGMyYzFmMTc0MzAyODhlOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKQEAgLTAsMCAr
MSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYUNvbnRyb2xsZXJfaAorI2RlZmluZSBN
ZWRpYUNvbnRyb2xsZXJfaAorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExpc3RlbmVy
LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2UuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2xvY2s7CitjbGFzcyBIVE1MTWVkaWFF
bGVtZW50OworY2xhc3MgRXZlbnQ7CisKK2NsYXNzIE1lZGlhQ29udHJvbGxlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhQ29udHJvbGxlcj4sIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UsIHB1YmxpYyBFdmVudFRhcmdldCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
TWVkaWFDb250cm9sbGVyPiBtZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKGNvbnN0IFN0cmlu
ZyYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gY3JlYXRlKCk7Cisg
ICAgdmlydHVhbCB+TWVkaWFDb250cm9sbGVyKCk7CisKKyAgICB2b2lkIGFkZE1lZGlhRWxlbWVu
dChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVNZWRpYUVsZW1lbnQoSFRNTE1l
ZGlhRWxlbWVudCopOworICAgIGJvb2wgY29udGFpbnNNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxl
bWVudCopIGNvbnN0OworCisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZWRpYUdyb3VwOyB9CisgICAgCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVS
YW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IHNlZWthYmxlKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+
IHBsYXllZCgpOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNl
dEN1cnJlbnRUaW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAgCisgICAgdmlydHVhbCBi
b29sIHBhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF1c2VkOyB9CisgICAgdmlydHVhbCB2b2lk
IHBsYXkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGZs
b2F0IGRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRQbGF5YmFj
a1JhdGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCk7
CisgICAgCisgICAgdmlydHVhbCBmbG9hdCBwbGF5YmFja1JhdGUoKSBjb25zdCB7IHJldHVybiBt
X3BsYXliYWNrUmF0ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQp
OworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92b2x1
bWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7
CisgICAgCisgICAgdmlydHVhbCBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29sKTsKKyAgICAKKyAgICB2aXJ0dWFsIFJl
YWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQorCisg
ICAgZW51bSBQbGF5YmFja1N0YXRlIHsgV0FJVElORywgUExBWUlORywgRU5ERUQgfTsKKyAgICB2
aXJ0dWFsIFBsYXliYWNrU3RhdGUgcGxheWJhY2tTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
eWJhY2tTdGF0ZTsgfQorCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRnVsbHNjcmVlbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigp
IHsgfQorCisgICAgdmlydHVhbCBib29sIGhhc0F1ZGlvKCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGhhc1ZpZGVvKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc0Nsb3NlZENhcHRpb25z
KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29s
KTsKKyAgICB2aXJ0dWFsIGJvb2wgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9jbG9zZWRDYXB0aW9uc1Zpc2libGU7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNTY2FubmluZygpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjcnVi
YmluZygpOworICAgIHZpcnR1YWwgdm9pZCBlbmRTY3J1YmJpbmcoKTsKKyAgICAKKyAgICB2aXJ0
dWFsIGJvb2wgY2FuUGxheSgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVT
dHJlYW0oKSBjb25zdDsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29uc3Q7
CisgICAgCisgICAgdmlydHVhbCB2b2lkIHJldHVyblRvUmVhbHRpbWUoKTsKKworICAgIGJvb2wg
aXNCbG9ja2VkKCkgY29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHVzaW5nIFJlZkNv
dW50ZWQ8TWVkaWFDb250cm9sbGVyPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFD
b250cm9sbGVyPjo6ZGVyZWY7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sbGVyKCk7Cisg
ICAgdm9pZCB1cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgdm9pZCB1cGRhdGVQbGF5YmFja1N0YXRl
KCk7CisgICAgdm9pZCB1cGRhdGVNZWRpYUVsZW1lbnRzKCk7CisgICAgdm9pZCBzY2hlZHVsZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKKyAgICB2b2lkIGFzeW5jRXZlbnRU
aW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbGxlcj4qKTsKKyAgICBib29sIGhhc0VuZGVkKCkg
Y29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRh
cmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsg
ZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1l
KCkgY29uc3Q7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50
VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIHZpcnR1YWwg
RXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVu
dFRhcmdldERhdGE7IH0KKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CisK
KyAgICBmcmllbmQgY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKKyAgICBmcmllbmQgY2xhc3MgTWVk
aWFDb250cm9sbGVyRXZlbnRMaXN0ZW5lcjsKKyAgICBWZWN0b3I8SFRNTE1lZGlhRWxlbWVudCo+
IG1fbWVkaWFFbGVtZW50czsKKyAgICBib29sIG1fcGF1c2VkOworICAgIGZsb2F0IG1fZGVmYXVs
dFBsYXliYWNrUmF0ZTsKKyAgICBmbG9hdCBtX3BsYXliYWNrUmF0ZTsKKyAgICBmbG9hdCBtX3Zv
bHVtZTsKKyAgICBib29sIG1fbXV0ZWQ7CisgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7Cisg
ICAgUGxheWJhY2tTdGF0ZSBtX3BsYXliYWNrU3RhdGU7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVu
dD4gPiBtX3BlbmRpbmdFdmVudHM7CisgICAgVGltZXI8TWVkaWFDb250cm9sbGVyPiBtX2FzeW5j
RXZlbnRUaW1lcjsKKyAgICBTdHJpbmcgbV9tZWRpYUdyb3VwOworICAgIGJvb2wgbV9jbG9zZWRD
YXB0aW9uc1Zpc2libGU7CisgICAgUGFzc1JlZlB0cjxDbG9jaz4gbV9jbG9jazsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFDb250cm9sbGVyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGIyYTFmZDhjYjk0NDA4YTM4ZGFiYjk1
NjNlYmZhNWY3MzhmYzUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUNvbnRyb2xsZXIuaWRsCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUgaHRt
bCB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9VklERU8sCisgICAgICAg
IENhbkJlQ29uc3RydWN0ZWQsCisgICAgICAgIEdlbmVyYXRlVG9KUywKKyAgICAgICAgRXZlbnRU
YXJnZXQKKyAgICBdIE1lZGlhQ29udHJvbGxlciB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBUaW1lUmFuZ2VzIGJ1ZmZlcmVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJh
bmdlcyBzZWVrYWJsZTsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGR1cmF0
aW9uOworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIGN1cnJlbnRUaW1lCisgICAgICAgICAgICBz
ZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIHBhdXNlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRpbWVSYW5nZXMg
cGxheWVkOworICAgICAgICB2b2lkIHBsYXkoKTsKKyAgICAgICAgdm9pZCBwYXVzZSgpOworCisg
ICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgZGVmYXVsdFBsYXliYWNrUmF0ZTsKKyAgICAgICAgYXR0
cmlidXRlIGRvdWJsZSBwbGF5YmFja1JhdGU7CisKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSB2
b2x1bWUKKyAgICAgICAgICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAg
IGF0dHJpYnV0ZSBib29sZWFuIG11dGVkOworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVy
ZmFjZQorICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNl
Q2FwdHVyZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcg
dHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVy
IGxpc3RlbmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25h
bF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGlu
IEV2ZW50IGV2dCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisgICAgfTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVySW50ZXJm
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlckludGVyZmFjZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ3ODQ3YjU1YzRhZTYzMmExNDg2Zjk5YTk2NjJjODZjMmE0ODc2ZjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlckludGVyZmFj
ZS5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2VfaAorI2RlZmluZSBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2VfaAorCisjaWYgRU5B
QkxFKFZJREVPKQorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBUaW1lUmFuZ2VzOworCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2Rl
OworCitjbGFzcyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UgeworcHVibGljOgorICAgIHZpcnR1
YWwgfk1lZGlhQ29udHJvbGxlckludGVyZmFjZSgpIHsgfTsKKyAgICAKKyAgICAvLyBNZWRpYUNv
bnRyb2xsZXIgSURMOgorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJl
ZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc2Vla2Fi
bGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHBsYXll
ZCgpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IGR1cmF0aW9uKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldEN1cnJlbnRUaW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIAorICAg
IHZpcnR1YWwgYm9vbCBwYXVzZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXko
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgPSAwOworICAgIAorICAgIHZpcnR1YWwg
ZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCkgPSAwOworICAgIAorICAgIHZpcnR1YWwgZmxv
YXQgcGxheWJhY2tSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFj
a1JhdGUoZmxvYXQpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IHZvbHVtZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJikg
PSAwOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBtdXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0TXV0ZWQoYm9vbCkgPSAwOworICAgIAorICAgIGVudW0gUmVhZHlTdGF0ZSB7
IEhBVkVfTk9USElORywgSEFWRV9NRVRBREFUQSwgSEFWRV9DVVJSRU5UX0RBVEEsIEhBVkVfRlVU
VVJFX0RBVEEsIEhBVkVfRU5PVUdIX0RBVEEgfTsKKyAgICB2aXJ0dWFsIFJlYWR5U3RhdGUgcmVh
ZHlTdGF0ZSgpIGNvbnN0ID0gMDsKKworICAgIC8vIE1lZGlhQ29udHJvbEVsZW1lbnRzOgorICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJG
dWxsc2NyZWVuKCkgPSAwOworCisgICAgdmlydHVhbCBib29sIGhhc0F1ZGlvKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldENs
b3NlZENhcHRpb25zVmlzaWJsZShib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNsb3NlZENh
cHRpb25zVmlzaWJsZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nj
YW5uaW5nKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGJlZ2luU2NydWJiaW5nKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRTY3J1YmJpbmcoKSA9IDA7CisKKyAgICB2aXJ0dWFs
IGJvb2wgY2FuUGxheSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVTdHJl
YW0oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgPSAw
OworCisgICAgdmlydHVhbCB2b2lkIHJldHVyblRvUmVhbHRpbWUoKSA9IDA7Cit9OworCit9CisK
KyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5n
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcAppbmRleCAxZTE4MzA2
OTg3NzE0YjBlOTliMmQ1MzViYzRiNDdjZTNjY2M4NzgyLi43YjdkNTk0YTQ2YjliYzA1NGRjMmRh
OGQ2YTdjMjUwYjkxZDlkMTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVS
YW5nZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAKQEAgLTM2
LDcgKzM2LDcgQEAgVGltZVJhbmdlczo6VGltZVJhbmdlcyhmbG9hdCBzdGFydCwgZmxvYXQgZW5k
KQogICAgIGFkZChzdGFydCwgZW5kKTsKIH0KIAotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1l
UmFuZ2VzOjpjb3B5KCkKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gVGltZVJhbmdlczo6Y29weSgp
IGNvbnN0CiB7CiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IG5ld1Nlc3Npb24gPSBUaW1lUmFuZ2Vz
OjpjcmVhdGUoKTsKICAgICAKQEAgLTQ3LDYgKzQ3LDQ5IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdl
cz4gVGltZVJhbmdlczo6Y29weSgpCiAgICAgcmV0dXJuIG5ld1Nlc3Npb24ucmVsZWFzZSgpOwog
fQogCit2b2lkIFRpbWVSYW5nZXM6OmludmVydCgpCit7CisgICAgUmVmUHRyPFRpbWVSYW5nZXM+
IGludmVydGVkID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisKKyAgICBpZiAoIW1fcmFuZ2VzLnNp
emUoKSkKKyAgICAgICAgaW52ZXJ0ZWQtPmFkZCgtSU5GSU5JVFksIElORklOSVRZKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgaWYgKGZsb2F0IHN0YXJ0ID0gbV9yYW5nZXMuZmlyc3QoKS5tX3N0YXJ0
ICE9IC1JTkZJTklUWSkKKyAgICAgICAgICAgIGludmVydGVkLT5hZGQoLUlORklOSVRZLCBzdGFy
dCk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCArIDEgPCBtX3Jhbmdl
cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBpbnZlcnRlZC0+YWRkKG1fcmFuZ2VzW2lu
ZGV4XS5tX2VuZCwgbV9yYW5nZXNbaW5kZXggKyAxXS5tX3N0YXJ0KTsKKworICAgICAgICBpZiAo
ZmxvYXQgZW5kID0gbV9yYW5nZXMubGFzdCgpLm1fZW5kICE9IElORklOSVRZKQorICAgICAgICAg
ICAgaW52ZXJ0ZWQtPmFkZChlbmQsIElORklOSVRZKTsKKyAgICB9CisKKyAgICBtX3Jhbmdlcy5z
d2FwKGludmVydGVkLT5tX3Jhbmdlcyk7Cit9CisKK3ZvaWQgVGltZVJhbmdlczo6aW50ZXJzZWN0
V2l0aChjb25zdCBUaW1lUmFuZ2VzKiBvdGhlcikKK3sKKyAgICBBU1NFUlQob3RoZXIpOworICAg
IFJlZlB0cjxUaW1lUmFuZ2VzPiBpbnZlcnRlZCA9IGNvcHkoKTsKKyAgICBSZWZQdHI8VGltZVJh
bmdlcz4gaW52ZXJ0ZWRPdGhlciA9IG90aGVyLT5jb3B5KCk7CisgICAgaW52ZXJ0ZWQtPnVuaW9u
V2l0aChpbnZlcnRlZE90aGVyLmdldCgpKTsKKyAgICBpbnZlcnRlZC0+aW52ZXJ0KCk7CisKKyAg
ICBtX3Jhbmdlcy5zd2FwKGludmVydGVkLT5tX3Jhbmdlcyk7Cit9CisKK3ZvaWQgVGltZVJhbmdl
czo6dW5pb25XaXRoKGNvbnN0IFRpbWVSYW5nZXMqIG90aGVyKQoreworICAgIEFTU0VSVChvdGhl
cik7CisgICAgUmVmUHRyPFRpbWVSYW5nZXM+IHVuaW9uZWQgPSBjb3B5KCk7CisgICAgZm9yIChz
aXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG90aGVyLT5tX3Jhbmdlcy5zaXplKCk7ICsraW5kZXgp
IHsKKyAgICAgICAgY29uc3QgUmFuZ2UmIHJhbmdlID0gb3RoZXItPm1fcmFuZ2VzW2luZGV4XTsK
KyAgICAgICAgdW5pb25lZC0+YWRkKHJhbmdlLm1fc3RhcnQsIHJhbmdlLm1fZW5kKTsKKyAgICB9
CisKKyAgICBtX3Jhbmdlcy5zd2FwKHVuaW9uZWQtPm1fcmFuZ2VzKTsKK30KKwogZmxvYXQgVGlt
ZVJhbmdlczo6c3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAK
IHsgCiAgICAgaWYgKGluZGV4ID49IGxlbmd0aCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RpbWVSYW5nZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5o
CmluZGV4IDJkN2FmMjVhODA5MTM3MzBmODBkMjM5MzBiZTI3NGUwZmYxMjE3ZmQuLmNjY2NlMDVj
MTljNGFjOWU2MjlkZDJhMmExZmI2NjUyMTk3ODEwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGltZVJhbmdlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdl
cy5oCkBAIC00Niw3ICs0NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgVGltZVJhbmdlcyhzdGFydCwgZW5kKSk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxUaW1l
UmFuZ2VzPiBjb3B5KCk7CisgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBjb3B5KCkgY29uc3Q7
CisgICAgdm9pZCBpbnZlcnQoKTsKKyAgICB2b2lkIGludGVyc2VjdFdpdGgoY29uc3QgVGltZVJh
bmdlcyopOworICAgIHZvaWQgdW5pb25XaXRoKGNvbnN0IFRpbWVSYW5nZXMqKTsKIAogICAgIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VzLnNpemUoKTsgfQogICAgIGZs
b2F0IHN0YXJ0KHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggNmNjZDRhNDdkMzEyM2ZhZmM4NjdhMzFjZmE2NzlkNDc2
ZjRhZWE2Mi4uMmQwZmFjYzc2YTUxZTk5ZTkwYmZmODZmN2I3ZDkyZmE1NTNjMWY4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtNjMzLDYgKzYzMyw3IEBAIG1vZHVsZSB3aW5kb3cg
ewogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVZJREVPLCBFbmFibGVkQXRSdW50aW1l
XSBNZWRpYUVycm9yQ29uc3RydWN0b3IgTWVkaWFFcnJvcjsKICAgICAgICAgYXR0cmlidXRlIFtD
b25kaXRpb25hbD1WSURFTywgRW5hYmxlZEF0UnVudGltZV0gVGltZVJhbmdlc0NvbnN0cnVjdG9y
IFRpbWVSYW5nZXM7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU8sIEVuYWJs
ZWRBdFJ1bnRpbWVdIEhUTUxTb3VyY2VFbGVtZW50Q29uc3RydWN0b3IgSFRNTFNvdXJjZUVsZW1l
bnQ7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU8sIEVuYWJsZWRBdFJ1bnRp
bWVdIE1lZGlhQ29udHJvbGxlckNvbnN0cnVjdG9yIE1lZGlhQ29udHJvbGxlcjsKIAogI2lmIGRl
ZmluZWQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICYmIEVOQUJMRV9BTklNQVRJT05fQVBJCiAgICAg
ICAgIGF0dHJpYnV0ZSBXZWJLaXRBbmltYXRpb25Db25zdHJ1Y3RvciBXZWJLaXRBbmltYXRpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
aW5kZXggMDE4YzdkZDMzZTM4YzFiOGY3NzM0NWE4YzNlNGY4MzVmZWM2MGE3My4uZmM3N2ZmMjg4
MzhiN2MwOTRhYTUzYTRmYmRmMDcxNjgwY2EyMjEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtNjA5LDYgKzYwOSwxMSBAQCBQ
YXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxheWVyOjpidWZmZXJlZCgpCiAgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+YnVmZmVyZWQoKTsKIH0KIAorUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRp
YVBsYXllcjo6c2Vla2FibGUoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnNlZWthYmxlKCk7
Cit9CisKIGZsb2F0IE1lZGlhUGxheWVyOjptYXhUaW1lU2Vla2FibGUoKQogewogICAgIHJldHVy
biBtX3ByaXZhdGUtPm1heFRpbWVTZWVrYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggYzk2YjAyNWQ4MmQwMDcwOTE2OWVlYTUx
YzA3ODI2Yjc0NTA2YzQ3MS4uNDc3MzlhMDhiMGUzZDljYzczYzk5YTEzMTQzNGE3OGFlMDM3NDU1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
CkBAIC0yNDEsNiArMjQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJlc2VydmVzUGl0Y2go
Ym9vbCk7CiAKICAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCk7CisgICAgUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpOwogICAgIGZsb2F0IG1heFRpbWVTZWVrYWJs
ZSgpOwogCiAgICAgdW5zaWduZWQgYnl0ZXNMb2FkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggZjhjNzBh
YmUyOGE3ZWQwMWRmYjhhMmNiN2YxYzYzNjYzN2QzODQ0MS4uMDVhNzdkZThmMjU2NTFmODQyMmI2
NDRiMWNhZGMyN2U4MTU1MjgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBF
TkFCTEUoVklERU8pCiAKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIlRpbWVS
YW5nZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC05MSw2ICs5Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpOZXR3
b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIFRpbWVSYW5nZXM6
OmNyZWF0ZSgwLCBtYXhUaW1lU2Vla2FibGUoKSk7IH0KICAgICB2aXJ0dWFsIGZsb2F0IG1heFRp
bWVTZWVrYWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdl
cz4gYnVmZmVyZWQoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiNjJlN2Q5N2I2OTg0ZTI4MjAxNmJl
MGUzNzI2MmRiNDAzNjJmMzgzLi42MjZkMGY5MGZlMzFhZDQ0NGQ5NTgyY2VhODVmZmVjMThmZjg1
MDNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTEtMDIgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IE1lZGlhQ29udHJvbGxlci4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS9tZWRp
YS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEt
Y29udHJvbGxlci1wbGF5YmFjay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlh
L21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEv
bWVkaWEtY29udHJvbGxlci5odG1sOiBBZGRlZC4KKwogMjAxMS0xMS0wMiAgRXJpayBBcnZpZHNz
b24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSByZWZlcmVuY2VzIHRvIG5v
biBleGlzdGluZyBmaWxlOyBqcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM2ZDRk
MDdmZmNjZmNiMzBlNzU1YWNjMjY4ZTY3NGY3NGFjY2MwZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjUgQEAKKyAKK1Rlc3QgcHJlc2VuY2Ugb2YgTWVkaWFDb250cm9sbGVyIGNvbnN0cnVjdG9yLCBt
ZWRpYUNvbnRyb2xsZXIsIGFuZCBtZWRpYUdyb3VwIGF0dHJpYnV0ZXM6CitFWFBFQ1RFRCAodHlw
ZW9mKE1lZGlhQ29udHJvbGxlcikgPT0gJ29iamVjdCcpIE9LCitFWFBFQ1RFRCAodmlkZW8ubWVk
aWFDb250cm9sbGVyID09ICdudWxsJykgT0sKK0VYUEVDVEVEICh2aWRlby5tZWRpYUdyb3VwID09
ICcnKSBPSworCitUZXN0IHRoYXQgdGhlIHByZXNlbmNlIG9mIGEgbWVkaWFHcm91cCBhdHRyaWJ1
dGUgY3JlYXRlcyBhIG1lZGlhQ29udHJvbGxlcjoKK0VYUEVDVEVEICh2aWRlbzIubWVkaWFHcm91
cCA9PSAnZ3JvdXAnKSBPSworRVhQRUNURUQgKHZpZGVvMi5tZWRpYUNvbnRyb2xsZXIgIT0gJ251
bGwnKSBPSworCitUZXN0IHRoYXQgc2V0dGluZyBtZWRpYUdyb3VwIHRvIGFuIGVtcHR5IHN0cmlu
ZyByZW1vdmVzIHRoZSBtZWRpYUNvbnRyb2xsZXI6CitSVU4odmlkZW8ubWVkaWFHcm91cCA9ICcn
KQorRVhQRUNURUQgKHZpZGVvLm1lZGlhQ29udHJvbGxlciA9PSAnbnVsbCcpIE9LCisKK1Rlc3Qg
bWFudWFsbHkgY3JlYXRpbmcgYW5kIGFzc2lnbmluZyBhIG1lZGlhQ29udHJvbGxlciB0byBhIG1l
ZGlhIGVsZW1lbnQ6CitSVU4oY29udHJvbGxlciA9IG5ldyBNZWRpYUNvbnRyb2xsZXIoKSkKK1JV
Tih2aWRlby5tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyKQorRVhQRUNURUQgKHZpZGVvLm1l
ZGlhQ29udHJvbGxlciA9PSAnW29iamVjdCBNZWRpYUNvbnRyb2xsZXJdJykgT0sKKworVGVzdCB0
aGF0IHR3byBtZWRpYSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIG1lZGlhR3JvdXAgaGF2ZSB0aGUg
c2FtZSBtZWRpYUNvbnRyb2xsZXI6CitSVU4odmlkZW8ubWVkaWFHcm91cCA9ICdncm91cCcpCitS
VU4odmlkZW8yLm1lZGlhR3JvdXAgPSAnZ3JvdXAnKQorRVhQRUNURUQgKHZpZGVvLm1lZGlhQ29u
dHJvbGxlciA9PT0gdmlkZW8yLm1lZGlhQ29udHJvbGxlciA9PSAndHJ1ZScpIE9LCitFTkQgT0Yg
VEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLXBs
YXliYWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXIt
cGxheWJhY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4YThlMDkyMTNlZTFhNzEwN2I4MTFh
YjlmODgzYWQ0MDEyYTNmYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9t
ZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACisg
CitSVU4oY29udHJvbGxlciA9IHZpZGVvLm1lZGlhQ29udHJvbGxlcikKK0VWRU5UKGNhbnBsYXl0
aHJvdWdoKQorUlVOKGNvbnRyb2xsZXIuY3VycmVudFRpbWUgPSA1KQorRVhQRUNURUQgKHZpZGVv
LmN1cnJlbnRUaW1lID09ICc1JykgT0sKK0VYUEVDVEVEICh2aWRlbzIuY3VycmVudFRpbWUgPT0g
JzUnKSBPSworUlVOKHZpZGVvLnBsYXkoKSkKK1JVTih2aWRlbzIucGxheSgpKQorUlVOKGNvbnRy
b2xsZXIucGxheSgpKQorRVZFTlQocGxheWluZykKK0VYUEVDVEVEIChjb250cm9sbGVyLnBhdXNl
ZCA9PSAnZmFsc2UnKSBPSworRVZFTlQoZW5kZWQpCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwgYi9MYXlv
dXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2MyYjgzZWYxYWE4ODk2ZDdjMjIwN2Y3YTk0NjQ5MGYzY2NmNWYyZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbApAQCAt
MCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8c2NyaXB0IHNyYz1tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNy
Yz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorCisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHZh
ciBjb250cm9sbGVyOworICAgICAgICB2YXIgdmlkZW8yOworCisgICAgICAgIGZ1bmN0aW9uIHN0
YXJ0KCkgeworICAgICAgICAgICAgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgndmlkZW8nKVswXTsKKyAgICAgICAgICAgIHZpZGVvMiA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCd2aWRlbycpWzFdOworICAgICAgICAgICAgcnVuKCdjb250cm9sbGVyID0gdmlk
ZW8ubWVkaWFDb250cm9sbGVyJyk7CisgICAgICAgICAgICBjb250cm9sbGVyLmFkZEV2ZW50TGlz
dGVuZXIoJ2NhbnBsYXl0aHJvdWdoJywgY2FucGxheXRocm91Z2gsIHRydWUpOworICAgICAgICAg
ICAgc2V0U3JjQnlUYWdOYW1lKCd2aWRlbycsIGZpbmRNZWRpYUZpbGUoJ3ZpZGVvJywgJ2NvbnRl
bnQvdGVzdCcpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gY2FucGxh
eXRocm91Z2goKSB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGNhbnBsYXl0aHJv
dWdoKSIpOworICAgICAgICAgICAgY29udHJvbGxlci5yZW1vdmVFdmVudExpc3RlbmVyKCdjYW5w
bGF5dGhyb3VnaCcsIGNhbnBsYXl0aHJvdWdoLCB0cnVlKTsKKyAgICAgICAgICAgIHJ1bignY29u
dHJvbGxlci5jdXJyZW50VGltZSA9IDUnKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlk
ZW8uY3VycmVudFRpbWUnLCA1KTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8yLmN1
cnJlbnRUaW1lJywgNSk7CisgICAgICAgICAgICBydW4oJ3ZpZGVvLnBsYXkoKScpOworICAgICAg
ICAgICAgcnVuKCd2aWRlbzIucGxheSgpJyk7CisgICAgICAgICAgICBjb250cm9sbGVyLmFkZEV2
ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBwbGF5aW5nLCB0cnVlKTsKKyAgICAgICAgICAgIHJ1bign
Y29udHJvbGxlci5wbGF5KCknKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rp
b24gcGxheWluZygpIHsgCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKHBsYXlpbmcp
Iik7CisgICAgICAgICAgICBjb250cm9sbGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcn
LCBwbGF5aW5nLCB0cnVlKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnY29udHJvbGxlci5w
YXVzZWQnLCBmYWxzZSk7CisgICAgICAgICAgICBjb250cm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIo
J2VuZGVkJywgZW5kZWQsIHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZW5k
ZWQoKSB7IAorICAgICAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVChlbmRlZCkiKTsKKyAgICAg
ICAgICAgIGNvbnRyb2xsZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignZW5kZWQnLCBlbmRlZCwgdHJ1
ZSk7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICAgIDx2aWRl
byBtZWRpYUdyb3VwPSJncm91cCIgY29udHJvbHM+PC92aWRlbz4KKyAgICAgICAgPHZpZGVvIG1l
ZGlhR3JvdXA9Imdyb3VwIiBjb250cm9scz48L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRp
YS9tZWRpYS1jb250cm9sbGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9s
bGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBlNTk2NzU0ZDVhYmIxYzNlN2VkZjE0MjljNjkzYThiODc4
NGZhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xs
ZXIuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz1tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorCisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgIHZhciBjb250cm9sbGVyOworICAgICAgICB2YXIgdmlkZW8yOworCisgICAgICAg
IGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICAgICAgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgndmlkZW8nKVswXTsKKyAgICAgICAgICAgIHZpZGVvMiA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzFdOworCisgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIlRlc3QgcHJlc2VuY2Ugb2YgTWVkaWFDb250cm9sbGVyIGNvbnN0cnVjdG9yLCBtZWRp
YUNvbnRyb2xsZXIsIGFuZCBtZWRpYUdyb3VwIGF0dHJpYnV0ZXM6Iik7CisgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInR5cGVvZihNZWRpYUNvbnRyb2xsZXIpIiwgIm9iamVjdCIpOworICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRpYUNvbnRyb2xsZXIiLCBudWxsKTsKKyAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubWVkaWFHcm91cCIsICIiKTsKKyAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgdGhhdCB0
aGUgcHJlc2VuY2Ugb2YgYSBtZWRpYUdyb3VwIGF0dHJpYnV0ZSBjcmVhdGVzIGEgbWVkaWFDb250
cm9sbGVyOiIpCisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvMi5tZWRpYUdyb3VwIiwg
J2dyb3VwJyk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvMi5tZWRpYUNvbnRyb2xs
ZXIiLCBudWxsLCAiIT0iKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIlRlc3QgdGhhdCBzZXR0aW5nIG1lZGlhR3JvdXAgdG8gYW4gZW1w
dHkgc3RyaW5nIHJlbW92ZXMgdGhlIG1lZGlhQ29udHJvbGxlcjoiKQorICAgICAgICAgICAgcnVu
KCJ2aWRlby5tZWRpYUdyb3VwID0gJyciKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlk
ZW8ubWVkaWFDb250cm9sbGVyIiwgbnVsbCk7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIp
OworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IG1hbnVhbGx5IGNyZWF0aW5nIGFuZCBh
c3NpZ25pbmcgYSBtZWRpYUNvbnRyb2xsZXIgdG8gYSBtZWRpYSBlbGVtZW50OiIpCisgICAgICAg
ICAgICBydW4oImNvbnRyb2xsZXIgPSBuZXcgTWVkaWFDb250cm9sbGVyKCkiKTsKKyAgICAgICAg
ICAgIHJ1bigidmlkZW8ubWVkaWFDb250cm9sbGVyID0gY29udHJvbGxlciIpOworICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRpYUNvbnRyb2xsZXIiLCBjb250cm9sbGVyKTsKKyAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRl
c3QgdGhhdCB0d28gbWVkaWEgZWxlbWVudHMgd2l0aCB0aGUgc2FtZSBtZWRpYUdyb3VwIGhhdmUg
dGhlIHNhbWUgbWVkaWFDb250cm9sbGVyOiIpCisgICAgICAgICAgICBydW4oInZpZGVvLm1lZGlh
R3JvdXAgPSAnZ3JvdXAnIik7CisgICAgICAgICAgICBydW4oInZpZGVvMi5tZWRpYUdyb3VwID0g
J2dyb3VwJyIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRpYUNvbnRyb2xs
ZXIgPT09IHZpZGVvMi5tZWRpYUNvbnRyb2xsZXIiLCB0cnVlKTsKKyAgICAgICAgICAgIGVuZFRl
c3QoKTsKKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJv
ZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHZpZGVvPjwvdmlkZW8+CisgICAgICAgIDx2
aWRlbyBtZWRpYWdyb3VwPSJncm91cCI+PC92aWRlbz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113559</attachid>
            <date>2011-11-03 14:25:59 -0700</date>
            <delta_ts>2011-11-03 15:13:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71408-20111103142557.patch</filename>
            <type>text/plain</type>
            <size>84062</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkyMjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxOTNiNDE0YjYyMTJiNzM5
YTE3ODE2ZjFiMjdmYjUwYTExMzRlOWEyLi44MDZjNzVjNjcyNzExOGU1MjE4ZjllMDM5NDQwNGE3
NTc4YzE1ODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTU2IEBACiAyMDExLTExLTAyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNv
bnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbAorCisgICAgICAgIEFkZHMgc3VwcG9ydCBm
b3IgdGhlIE1lZGlhQ29udHJvbGxlciBET00gb2JqZWN0LCBhbmQgdGhlIG1lZGlhZ3JvdXAgYW5k
IG1lZGlhY29udHJvbGxlcgorICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGF0dHJpYnV0ZXMuCisK
KyAgICAgICAgTWVkaWFDb250cm9sbGVyIGlzIGFuIERPTSBvYmplY3Qgd2hpY2ggc3luY2hyb25p
emVzIHBsYXliYWNrIG9mIG11bHRpcGxlIEhUTUxNZWRpYUVsZW1lbnRzLiBJdCBjYW4KKyAgICAg
ICAgZWl0aGVyIGJlIGNyZWF0ZWQgYnkgYSBwYWdlIHNjcmlwdCBhbmQgYXNzaWduZWQgdG8gYSBI
VE1MTWVkaWFFbGVtZW50IHVzaW5nIHRoZSBtZWRpYUNvbnRyb2xsZXIgcHJvcGVydHksCisgICAg
ICAgIG9yIGFsbCBIVE1MTWVkaWFFbGVtZW50cyB3aXRoIGlkZW50aWNhbCBtZWRpYWdyb3VwIGF0
dHJpYnV0ZXMgd2lsbCBoYXZlIGEgTWVkaWFDb250cm9sbGVyIGFzc2lnbmVkIAorICAgICAgICBh
dXRvbWF0aWNhbGx5LgorCisgICAgICAgIEFkZCBhbiBhYnN0cmFjdCBpbnRlcmZhY2UgaW1wbGVt
ZW50ZWQgYnkgYm90aCBNZWRpYUNvbnRyb2xsZXIgYW5kIEhUTUxNZWRpYUVsZW1lbnQuCisgICAg
ICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U6On5NZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UpOgorCisgICAgICAgIEFkZCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCBhbmQgSURMLgor
ICAgICAgICAqIGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChtZWRp
YUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXApOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpt
ZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
Y3JlYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6TWVkaWFDb250cm9sbGVyKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6fk1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChNZWRp
YUNvbnRyb2xsZXI6OmFkZE1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnJlbW92ZU1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmNvbnRhaW5z
TWVkaWFFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6YnVmZmVyZWQpOgorICAg
ICAgICAoTWVkaWFDb250cm9sbGVyOjpzZWVrYWJsZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnBsYXllZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKToKKyAgICAg
ICAgKE1lZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnBsYXkpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpwYXVzZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnNldERlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpz
ZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZCk6CisgICAgICAgIChNZWRpYUNvbnRy
b2xsZXI6OnJlcG9ydENvbnRyb2xsZXJTdGF0ZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnVwZGF0ZVJlYWR5U3RhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjp1cGRhdGVQbGF5
YmFja1N0YXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlTWVkaWFFbGVtZW50
cyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnNjaGVkdWxlRXZlbnQpOgorICAgICAgICAo
TWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpoYXNBdWRpbyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Omhhc1ZpZGVvKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzQ2xvc2VkQ2FwdGlvbnMpOgorICAgICAgICAoTWVk
aWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUpOgorICAgICAgICAoTWVkaWFD
b250cm9sbGVyOjpzdXBwb3J0c1NjYW5uaW5nKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
YmVnaW5TY3J1YmJpbmcpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjplbmRTY3J1YmJpbmcp
OgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjYW5QbGF5KToKKyAgICAgICAgKE1lZGlhQ29u
dHJvbGxlcjo6aXNMaXZlU3RyZWFtKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzU291
cmNlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6cmV0dXJuVG9SZWFsdGltZSk6CisgICAg
ICAgIChNZWRpYUNvbnRyb2xsZXI6OmlzQmxvY2tlZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6Omhhc0VuZGVkKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6bWVkaWFHcm91cCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xsZXI6OmRlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sbGVyOjp2b2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpt
dXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnJlYWR5U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1N0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6c3VwcG9ydHNGdWxsc2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6aXNGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbGxlcjo6Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sbGVyOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbGxlcjo6dG9NZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sbGVyOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvTWVk
aWFDb250cm9sbGVyLmlkbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGNvbnZlbmllbmNlIGZ1bmN0
aW9ucyB0byBUaW1lUmFuZ2VzIHdoaWNoIGNhbiBjYWxjdWxhdGUgaW50ZXJzZWN0aW9ucyBhbmQK
KyAgICAgICAgdW5pb25zIGJldHdlZW4gVGltZVJhbmdlcyBvYmplY3RzLgorICAgICAgICAqIGh0
bWwvVGltZVJhbmdlcy5jcHA6CisgICAgICAgIChUaW1lUmFuZ2VzOjpjb3B5KToKKyAgICAgICAg
KFRpbWVSYW5nZXM6OmludmVydCk6CisgICAgICAgIChUaW1lUmFuZ2VzOjppbnRlcnNlY3RXaXRo
KToKKyAgICAgICAgKFRpbWVSYW5nZXM6OnVuaW9uV2l0aCk6CisgICAgICAgICogaHRtbC9UaW1l
UmFuZ2VzLmg6CisKKyAgICAgICAgQWRkIE1lZGlhQ29udHJvbGxlckNvbnN0cnVjdG9yIHRvIHRo
ZSBXaW5kb3cgb2JqZWN0LgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKworICAgICAg
ICBBZGQgdGhlIHR3byBuZXcgYXR0cmlidXRlIG5hbWVzLCBtZWRpYWdyb3VwIGFuZCBtZWRpYWNv
bnRyb2xsZXIuCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYXR0cmlidXRlcywgYW5kIGFkZCBvdmVycmlkZGVu
IGJlaGF2aW9yIHdoZW4gYSBtZWRpYSBlbGVtZW50CisgICAgICAgIGhhcyBhIGN1cnJlbnQgbWVk
aWEgY29udHJvbGxlcjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlSW50ZXJuYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjplbmRlZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpzZXRNZWRpYUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRN
ZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmlzQmxvY2tlZE9uTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc1NvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0xpdmVTdHJlYW0pOgorICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpK
U0hUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcik6CisKKyAgICAgICAgQWRkIGEg
ZnVuY3Rpb24gInNlZWthYmxlIiB3aGljaCByZXR1cm5zIGEgVGltZVJhbmdlcyBjb250YWluaW5n
IHRoZSBzZWVrYWJsZSB0aW1lIHJhbmdlcworICAgICAgICBpbiBhIG1lZGlhIGVsZW1lbnQuICBC
eSBkZWZhdWx0IHRoaXMgaXMgYSBzaW5nbGUgcmFuZ2Ugb2YgWzAsIG1heFRpbWVTZWVrYWJsZV0u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNlZWthYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlOjpzZWVrYWJsZSk6CisKKyAgICAgICAgU3VwcG9ydCBmdW5jdGlvbnMgdG8gY2FzdCBiZXR3
ZWVuIE1lZGlhQ29udHJvbGxlciBhbmQgRXZlbnRUYXJnZXQuCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAg
KiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OnRv
TWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKworICAgICAg
ICBCb2lsZXJwbGF0ZSB0byBzdXBwb3J0IGNyZWF0aW5nIHRoZSBkZXJpdmVkIHNvdXJjZXMgZm9y
IE1lZGlhQ29udHJvbGxlciBhbmQgYWRkaW5nIG5ldyBzb3VyY2VzCisgICAgICAgIHRvIHRoZSBw
cm9qZWN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisyMDExLTExLTAyICBKZXIgTm9ibGUgIDxq
ZXIubm9ibGVAYXBwbGUuY29tPgorCiAgICAgICAgIEFkZCBDbG9jayBjbGFzcyBhbmQgcGxhdGZv
cm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEzNDEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggYjRjMjA2NjIwZTZkMTU0Y2I0ZWMzZTJjZmU1YzgwMWU1ZDAzZDU0Yy4uNWQyNjhiYThi
ODg4ZWMxNWU5ODliZWY2YjNiNmY4NjM3ZmI1YjRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCkBAIC0yNzYsNiArMjc2LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgS2V5Ym9hcmRF
dmVudCBcCiAgICAgTG9jYXRpb24gXAogICAgIExvd1Bhc3MyRmlsdGVyTm9kZSBcCisgICAgTWVk
aWFDb250cm9sbGVyIFwKICAgICBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgXAogICAgIE1l
ZGlhRXJyb3IgXAogICAgIE1lZGlhTGlzdCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjE4ZDljMmZhZGQ3NzRjZGVlODlmOGIz
OTFjZGI1YWI2MTJiYzVmYy4uYzM0YzA2ZTkwMDE5MjQ1NGUzNzY5YzZmYmI5MzQ3ZGU5ZjJmODdi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNTY5NSwxNyArNTY5NSwyMiBAQAogCQlDRDBEQkZFRTE0MjI3Njg1MDAyODAyNjMg
LyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXYgaW4gQ29weSBBdWRpbyBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwREJFMEQxNDIyNzU5
NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUud2F2ICovOyB9Owog
CQlDRDBEQkZFRjE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVf
UDMzMC53YXYgaW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QwREJFMEUxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19S
MDE5NV9UMzQ1X1AzMzAud2F2ICovOyB9OwogCQlDRDBEQkZGMDE0MjI3Njg1MDAyODAyNjMgLyog
SVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXYgaW4gQ29weSBBdWRpbyBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwREJFMEYxNDIyNzU5NTAw
MjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzNDUud2F2ICovOyB9OworCQlD
RDI3RjZFNTE0NTc2ODVBMDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTIxNDU3Njc1ODAw
NzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJQ0QyN0Y2RTcxNDU3NzBE
MzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFD
b250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0Q4MjAzMEExMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEODIwMzA2MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQ0Q4MjAzMEIxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDgyMDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlci5tbSAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby11bmRlZiI7IH07
IH07CiAJCUNEODIwMzBDMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURX
aW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDgyMDMwODEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVE
V2luZG93Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNEODIwMzBEMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0Q4MjAzMDkxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gKi87IH07CiAJCUNEODIwMzEwMTM5NUFDRTcwMEY5
NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dB
bmltYXRpb24uaCAqLzsgfTsKIAkJQ0Q4MjAzMTExMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRv
d0FuaW1hdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEODIwMzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi87
IH07CisJCUNERDUyNUQ3MTQ1QjZERDAwMDhEMjA0RCAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RG
NjVDQ0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgKi87
IH07CiAJCUNERUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MkUxNDYw
ODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi87IH07CiAJCUNERUE3NjM0MTQ2
MEI1NkYwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrUE9TSVguY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MzIxNDYwQUUyOTAwOEIzMUYxIC8q
IFBsYXRmb3JtQ2xvY2tQT1NJWC5jcHAgKi87IH07CiAJCUNERUE3NjM1MTQ2MEI3MUEwMDhCMzFG
MSAvKiBDbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREVBNzYzMzE0NjBCNDYyMDA4QjMxRjEgLyogQ2xvY2suY3BwICovOyB9OwogCQlDREVB
N0M4NDEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTdDODIxMjc2MjMwNDAwQjg0NkRE
IC8qIFJlbmRlckZ1bGxTY3JlZW4uaCAqLzsgfTsKIAkJQ0RFQTdDODUxMjc2MjMwNDAwQjg0NkRE
IC8qIFJlbmRlckZ1bGxTY3JlZW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RFQTdDODMxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3Jl
ZW4uY3BwICovOyB9OworCQlDREY2NUNDODE0NUIxRTc1MDBDNEM3QUEgLyogTWVkaWFDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3
RjZFNDE0NTc2Nzg3MDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RGNjVDQ0ExNDVCNDQ4ODAwQzRD
N0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQzkxNDVCNDNBNzAwQzRDN0FBIC8qIE1lZGlh
Q29udHJvbGxlckludGVyZmFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUNFMDJGMEM0MTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9s
bGVyQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0UwMkYwQzMxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UwNTdGQTUxMjIw
NzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBMzEyMjA3MzExMDBBNDc2
RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0UwNTdGQTYxMjIw
NzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1
IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjk3OCw2ICsxMjk4MywxMSBAQAogCQlDRDBEQkUw
RDE0MjI3NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXYg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53
YXY7IG5hbWUgPSBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1LndhdjsgcGF0aCA9IHBs
YXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9JUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1Lndh
djsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlDRDBEQkUwRTE0MjI3NTk1MDAyODAy
NjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXYgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBJUkNf
Q29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzMwLndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jl
c291cmNlcy9JUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzMwLndhdjsgc291cmNlVHJlZSA9
IFNPVVJDRV9ST09UOyB9OwogCQlDRDBEQkUwRjE0MjI3NTk1MDAyODAyNjMgLyogSVJDX0NvbXBv
c2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBJUkNfQ29tcG9zaXRlX0NfUjAx
OTVfVDM0NV9QMzQ1LndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9JUkNfQ29t
cG9zaXRlX0NfUjAxOTVfVDM0NV9QMzQ1Lndhdjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OworCQlDRDI3RjZFMDE0NTc1QzFCMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBNZWRpYUNvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDI3
RjZFMjE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDRDI3RjZFMzE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRp
YUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUNv
bnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyN0Y2RTQxNDU3Njc4
NzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0QyN0Y2RTYxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEgLyogZnVsbHNj
cmVlbi5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW4uY3NzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNEODIwMzA3MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEyOTg2LDYgKzEyOTk2LDggQEAKIAkJQ0Q4MjAzMEUxMzk1QUNFNzAwRjk1NkM2IC8qIFdl
YldpbmRvd0FuaW1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJX
aW5kb3dBbmltYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4MjAzMEYx
Mzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYldpbmRvd0FuaW1hdGlvbi5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCRDkzQkExMzMzQkQ0QjAwMjU3MEUzIC8qIGZ1bGxzY3Jl
ZW5RdWlja1RpbWUuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuUXVp
Y2tUaW1lLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDRTVDQ0YxNDYzM0JD
OTAwRDQ3Q0NBIC8qIEV2ZW50RmFjdG9yeS5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFdmVu
dEZhY3RvcnkuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQ0U1Q0QwMTQ2MzNC
QzkwMEQ0N0NDQSAvKiBFdmVudFRhcmdldEZhY3RvcnkuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gRXZlbnRUYXJnZXRGYWN0b3J5LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
REVBNzYyQzE0NjA4MjI0MDA4QjMxRjEgLyogQ2xvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2xvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTc2
MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ0EuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREVBNzYyRjE0NjA4NEVFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9j
a0NBLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ2xvY2tDQS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI5OTQsNiArMTMwMDYsOCBAQAogCQlD
REVBNzYzMzE0NjBCNDYyMDA4QjMxRjEgLyogQ2xvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ2xvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDREVBN0M4MjEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJGdWxsU2NyZWVuLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNERUE3QzgzMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxs
U2NyZWVuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZ1
bGxTY3JlZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY2NUNDOTE0NUI0
M0E3MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREY2NUNDQzE0NUI2QUZFMDBDNEM3QUEgLyogSlNIVE1MTWVk
aWFFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRDb250cm9sbGVyQmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyog
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNFMDU3RkE0MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzMzMiw2ICsx
NzM0NiwxMCBAQAogCQkJCUU0NDYxM0EwMENENjMzMTAwMEZBREE3NSAvKiBWb2lkQ2FsbGJhY2su
aWRsICovLAogCQkJCUY1NUIzREFCMTI1MUYxMkQwMDNFRjI2OSAvKiBXZWVrSW5wdXRUeXBlLmNw
cCAqLywKIAkJCQlGNTVCM0RBQzEyNTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0VHlwZS5oICov
LAorCQkJCUNEMjdGNkUwMTQ1NzVDMUIwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaWRsICov
LAorCQkJCUNEMjdGNkU0MTQ1NzY3ODcwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaCAqLywK
KwkJCQlDRDI3RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCAqLywK
KwkJCQlDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNl
LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGh0bWw7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpAQCAtMTc1NjUsNiArMTc1ODMsOCBAQAogCQlBODNCNzkwODBDQ0FGRjJCMDAwQjA4MjUgLyog
SFRNTCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0Qy
N0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLywKKwkJCQlD
RDI3RjZFMzE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuaCAqLywKIAkJCQk0
OUVFQ0VGMjEwNTA3MEM0MDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlci5jcHAgKi8sCiAJCQkJNDlF
RUNFRjMxMDUwNzBDNDAwMDk5RkFCIC8qIEpTQXJyYXlCdWZmZXIuaCAqLywKIAkJCQk0OUVFQ0Yx
OTEwNTA3MkYzMDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlclZpZXcuY3BwICovLApAQCAtMTk1NzYs
NiArMTk1OTYsNyBAQAogCQkJCUJDQzQzODc3MEU4ODZDQzcwMDUzM0RENSAvKiBKU0hUTUxJbnB1
dEVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUUxQUQxNDIyMTI5NUVBN0YwMEFDQTk4OSAvKiBK
U0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uaCAqLywKIAkJCQlFMUFEMTM5QTEyOTVEOTI2MDBBQ0E5
ODkgLyogSlNIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwICovLAorCQkJCUNERjY1Q0NDMTQ1QjZB
RkUwMEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDMzA1
Q0EzMEMwNzgxQkIwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcCAqLywK
IAkJCQlFMUFEMTQyNDEyOTVFQTk1MDBBQ0E5ODkgLyogSlNIVE1MT2JqZWN0RWxlbWVudEN1c3Rv
bS5oICovLAogCQkJCTQ0OEFEMjdBMEE0ODEzNzkwMDIzRDE3OSAvKiBKU0hUTUxPcHRpb25zQ29s
bGVjdGlvbkN1c3RvbS5jcHAgKi8sCkBAIC0yMDg4Myw2ICsyMDkwNCw4IEBACiAJCUY1MjNEMzI0
MDJERTQ0NzgwMTg2MzVDQSAvKiBkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCUNEQ0U1Q0NGMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudEZhY3Rvcnku
aW4gKi8sCisJCQkJQ0RDRTVDRDAxNDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50VGFyZ2V0RmFjdG9y
eS5pbiAqLywKIAkJCQlFMUM0REU2RDBFQTc1QzY1MDAyM0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0
LmNwcCAqLywKIAkJCQlFMUM0REU2ODBFQTc1QzFFMDAyM0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0
LmggKi8sCiAJCQkJQThDNEE3RkMwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuY3BwICovLApAQCAt
MjQ1NjAsNiArMjQ1ODMsOCBAQAogCQkJCUZENjJGNTJFMTQ1ODk4RDgwMDk0QjBFRCAvKiBBdWRp
b1NvdXJjZVByb3ZpZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDhGRUJERDE0M0Uz
RUY3MDA3MjUwMkIgLyogQ1NTQ3Jvc3NmYWRlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMx
NjkzNzlDMTQ2MDlDNkMwMEMwMTM2MiAvKiBEcmFnU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0RGNjVDQzgxNDVCMUU3NTAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQ0RGNjVDQ0ExNDVCNDQ4ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlcklu
dGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNzQwNyw2ICsyNzQzMiw5IEBACiAJCQkJQTNC
QjU5RjMxNDU3QTQwRDAwQUM1NkZFIC8qIERvY3VtZW50RXZlbnRRdWV1ZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyRDhGRUJEQzE0M0UzRUY3MDA3MjUwMkIgLyogQ1NTQ3Jvc3NmYWRlVmFsdWUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2MzAxNDYwOEE1MzAwOEIzMUYxIC8qIFBsYXRm
b3JtQ2xvY2tDQS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDI3RjZFNTE0NTc2ODVBMDA3ODIw
N0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QyN0Y2RTcx
NDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlDREQ1MjVENzE0NUI2REQwMDA4RDIwNEQgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNERUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBQbGF0Zm9y
bUNsb2NrUE9TSVguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2MzUxNDYwQjcxQTAwOEIz
MUYxIC8qIENsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU5ZWU2ZWZiMmY3MmExNjRkMTgwNjcxYjVlODk1Y2ZlZjZjZmEyZTUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRD
dXN0b20uY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgRU5BQkxFKFZJREVPKQor
CisjaW5jbHVkZSAiSlNIVE1MTWVkaWFFbGVtZW50LmgiCisKKyNpbmNsdWRlICJKU01lZGlhQ29u
dHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CisKK3ZvaWQgSlNIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNvbnRyb2xsZXIoRXhlY1N0YXRl
KiwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBpbXAgPSBzdGF0aWNf
Y2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4oaW1wbCgpKTsKKyAgICAvLyBPbiBzZXR0aW5nLCBpdCBt
dXN0IGZpcnN0IHJlbW92ZSB0aGUgZWxlbWVudCdzIG1lZGlhZ3JvdXAgYXR0cmlidXRlLCBpZiBh
bnksIAorICAgIGltcC0+c2V0TWVkaWFHcm91cChTdHJpbmcoKSk7CisgICAgLy8gYW5kIHRoZW4g
c2V0IHRoZSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIgdG8gdGhlIGdpdmVuIHZhbHVlLgorICAg
IGltcC0+c2V0TWVkaWFDb250cm9sbGVyKHRvTWVkaWFDb250cm9sbGVyKHZhbHVlKSk7Cit9CisK
K30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCBjNmYxZjNkNDQzYjg1YjZm
NjQyMGNlZWM5NGJlZmIyMjc4NjJkNDQ2Li5iYWYwZWZjODlkNGFkZWFhYjMxYzcyMzMwZjhkMTVk
ZTE5ZDk4OGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtNTUsNiArNTUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q7CiAg
ICAgY2xhc3MgSmF2YVNjcmlwdEF1ZGlvTm9kZTsKICAgICBjbGFzcyBMb2NhbE1lZGlhU3RyZWFt
OworICAgIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsKICAgICBjbGFzcyBNZWRpYVN0cmVhbTsKICAg
ICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggNmJkYjJlMjFjYTk2YjNlMTBkM2JlMWM3MWVmNzMw
ZDI3ZjAwZDkxZC4uMmEzODkwMzU3YmFmOWU5NjZhN2YxMzcxNGQ2MTBlZjdkZTEwODRhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC0xMyw2ICsxMyw3IEBA
IElEQlRyYW5zYWN0aW9uIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQlZlcnNpb25D
aGFuZ2VSZXF1ZXN0IGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIEphdmFTY3JpcHRBdWRp
b05vZGUgY29uZGl0aW9uYWw9V0VCX0FVRElPCiBMb2NhbE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFs
PU1FRElBX1NUUkVBTQorTWVkaWFDb250cm9sbGVyIGNvbmRpdGlvbmFsPVZJREVPCiBNZWRpYVN0
cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1lc3NhZ2VQb3J0CiBOb2RlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IGYxZTM1NGI2MzFmNDliYTNh
YzEwMWU1NTEzZDI3NWFjNWQyZDA5ODIuLmFlNWZiNzFjZWVlODY0MDk4MzZmZTJkNTAxZWMzZmE5
OTBiYTM3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5h
bWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBA
IC0xNDgsNiArMTQ4LDcgQEAgbWF4CiBtYXhsZW5ndGgKIG1heXNjcmlwdAogbWVkaWEKK21lZGlh
Z3JvdXAKIG1ldGhvZAogbWluCiBtdWx0aXBsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggYzkwNjVmNjkxYTljMGNhZTllNmVmNjQzMmI4MTdjZmMyYmQ3OTcw
Zi4uMTg0NDA1NGE2NDkwMTdiYjFkZjU5YjMwZmExNDU5Nzk4NWIyNGFlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVk
ZSAiSFRNTFNvdXJjZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIk1lZGlhQ29udHJvbHMuaCIKICNpbmNsdWRlICJNZWRpYURvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiTWVkaWFFcnJvci5oIgpAQCAtMjI4LDYgKzIyOSw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5I
VE1MTWVkaWFFbGVtZW50KCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJh
Y2tzLnNpemUoKTsgKytpKQogICAgICAgICBtX3RleHRUcmFja3NbaV0tPnNldENsaWVudCgwKTsK
ICNlbmRpZgorCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQorICAgICAgICBtX21lZGlhQ29u
dHJvbGxlci0+cmVtb3ZlTWVkaWFFbGVtZW50KHRoaXMpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKQEAgLTI5NCw3ICsyOTgsOSBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0
cikKICAgICAgICAgaWYgKCFhdXRvcGxheSgpICYmIG1fcGxheWVyKQogICAgICAgICAgICAgbV9w
bGF5ZXItPnNldFByZWxvYWQobV9wcmVsb2FkKTsKIAotICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUg
PT0gb25hYm9ydEF0dHIpCisgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBtZWRpYWdyb3VwQXR0
cikKKyAgICAgICAgc2V0TWVkaWFHcm91cChhdHRyLT52YWx1ZSgpKTsKKyAgICBlbHNlIGlmIChh
dHRyTmFtZSA9PSBvbmFib3J0QXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0
aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25iZWZvcmVsb2FkQXR0cikK
ICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmVmb3JlbG9h
ZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKQEAgLTU4
NCwxMCArNTkwLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQoKQog
ICAgICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKICAgICAgICAgaW52YWxpZGF0ZUNhY2hlZFRpbWUo
KTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW1wdGllZEV2ZW50KTsKKyAg
ICAgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiAgICAgfQogCiAgICAgLy8gNSAtIFNldCB0
aGUgcGxheWJhY2tSYXRlIGF0dHJpYnV0ZSB0byB0aGUgdmFsdWUgb2YgdGhlIGRlZmF1bHRQbGF5
YmFja1JhdGUgYXR0cmlidXRlLgotICAgIHNldFBsYXliYWNrUmF0ZShkZWZhdWx0UGxheWJhY2tS
YXRlKCkpOworICAgIHNldFBsYXliYWNrUmF0ZShtX21lZGlhQ29udHJvbGxlciA/IG1fbWVkaWFD
b250cm9sbGVyLT5kZWZhdWx0UGxheWJhY2tSYXRlKCkgOiBkZWZhdWx0UGxheWJhY2tSYXRlKCkp
OwogCiAgICAgLy8gNiAtIFNldCB0aGUgZXJyb3IgYXR0cmlidXRlIHRvIG51bGwgYW5kIHRoZSBh
dXRvcGxheWluZyBmbGFnIHRvIHRydWUuCiAgICAgbV9lcnJvciA9IDA7CkBAIC0xMjI0LDYgKzEy
MzEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUgc3RhdGUpCiAgICAgfQogCiAgICAgdXBkYXRlUGxheVN0YXRlKCk7CisgICAg
dXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQpA
QCAtMTUyMyw2ICsxNTMxLDEwIEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1l
KCkgY29uc3QKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50VGltZShmbG9hdCB0
aW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpIHsK
KyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
ICAgICBzZWVrKHRpbWUsIGVjKTsKIH0KIApAQCAtMTU3Myw4ICsxNTg1LDE2IEBAIGZsb2F0IEhU
TUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0CiAKIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKCVmKSIsIHJhdGUpOworICAgIGlmIChtX21l
ZGlhQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2V0UGxheWJhY2tSYXRlSW50
ZXJuYWwocmF0ZSk7Cit9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRl
SW50ZXJuYWwoZmxvYXQgcmF0ZSkKK3sKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
OjpzZXRQbGF5YmFja1JhdGVJbnRlcm5hbCglZikiLCByYXRlKTsKKyAgICAKICAgICBpZiAobV9w
bGF5YmFja1JhdGUgIT0gcmF0ZSkgewogICAgICAgICBtX3BsYXliYWNrUmF0ZSA9IHJhdGU7CiAg
ICAgICAgIGludmFsaWRhdGVDYWNoZWRUaW1lKCk7CkBAIC0xNjc2LDcgKzE2OTYsMTAgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwoKQogICAgICAgICBFeGNlcHRpb25Db2Rl
IHVudXNlZDsKICAgICAgICAgc2VlaygwLCB1bnVzZWQpOwogICAgIH0KLSAgICAKKworICAgIGlm
IChtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgbV9tZWRpYUNvbnRyb2xsZXItPmJyaW5nRWxl
bWVudFVwVG9TcGVlZCh0aGlzKTsKKwogICAgIGlmIChtX3BhdXNlZCkgewogICAgICAgICBtX3Bh
dXNlZCA9IGZhbHNlOwogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVkVGltZSgpOwpAQCAtMTY5MCw2
ICsxNzEzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwoKQogICAgIG1f
YXV0b3BsYXlpbmcgPSBmYWxzZTsKIAogICAgIHVwZGF0ZVBsYXlTdGF0ZSgpOworICAgIHVwZGF0
ZU1lZGlhQ29udHJvbGxlcigpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlKCkK
QEAgLTE4ODEsNyArMTkwNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dG9nZ2xlUGxheVN0
YXRlKCkKICAgICAvLyBXZSBjYW4gc2FmZWx5IGNhbGwgdGhlIGludGVybmFsIHBsYXkvcGF1c2Ug
bWV0aG9kcywgd2hpY2ggZG9uJ3QgY2hlY2sgcmVzdHJpY3Rpb25zLCBiZWNhdXNlCiAgICAgLy8g
dGhpcyBtZXRob2QgaXMgb25seSBjYWxsZWQgZnJvbSB0aGUgYnVpbHQtaW4gbWVkaWEgY29udHJv
bGxlcgogICAgIGlmIChjYW5QbGF5KCkpIHsKLSAgICAgICAgc2V0UGxheWJhY2tSYXRlKGRlZmF1
bHRQbGF5YmFja1JhdGUoKSk7CisgICAgICAgIHNldFBsYXliYWNrUmF0ZShtX21lZGlhQ29udHJv
bGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5kZWZhdWx0UGxheWJhY2tSYXRlKCkgOiBkZWZhdWx0
UGxheWJhY2tSYXRlKCkpOwogICAgICAgICBwbGF5SW50ZXJuYWwoKTsKICAgICB9IGVsc2UgCiAg
ICAgICAgIHBhdXNlSW50ZXJuYWwoKTsKQEAgLTIyMjksMTkgKzIyNTMsMzUgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKIAogICAg
IGZsb2F0IG5vdyA9IGN1cnJlbnRUaW1lKCk7CiAgICAgZmxvYXQgZHVyID0gZHVyYXRpb24oKTsK
LSAgICBpZiAoIWlzbmFuKGR1cikgJiYgZHVyICYmIG5vdyA+PSBkdXIpIHsKLSAgICAgICAgaWYg
KGxvb3AoKSkgeworICAgIAorICAgIC8vIFdoZW4gdGhlIGN1cnJlbnQgcGxheWJhY2sgcG9zaXRp
b24gcmVhY2hlcyB0aGUgZW5kIG9mIHRoZSBtZWRpYSByZXNvdXJjZSB3aGVuIHRoZSBkaXJlY3Rp
b24gb2YKKyAgICAvLyBwbGF5YmFjayBpcyBmb3J3YXJkcywgdGhlbiB0aGUgdXNlciBhZ2VudCBt
dXN0IGZvbGxvdyB0aGVzZSBzdGVwczoKKyAgICBpZiAoIWlzbmFuKGR1cikgJiYgZHVyICYmIG5v
dyA+PSBkdXIgJiYgbV9wbGF5YmFja1JhdGUgPiAwKSB7CisgICAgICAgIC8vIElmIHRoZSBtZWRp
YSBlbGVtZW50IGhhcyBhIGxvb3AgYXR0cmlidXRlIHNwZWNpZmllZCBhbmQgZG9lcyBub3QgaGF2
ZSBhIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlciwKKyAgICAgICAgaWYgKGxvb3AoKSAmJiAhbV9t
ZWRpYUNvbnRyb2xsZXIpIHsKICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2Vw
dGlvbjsKICAgICAgICAgICAgIG1fc2VudEVuZEV2ZW50ID0gZmFsc2U7CisgICAgICAgICAgICAv
LyAgdGhlbiBzZWVrIHRvIHRoZSBlYXJsaWVzdCBwb3NzaWJsZSBwb3NpdGlvbiBvZiB0aGUgbWVk
aWEgcmVzb3VyY2UgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICAgICAgc2VlaygwLCBp
Z25vcmVkRXhjZXB0aW9uKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICghbV9w
YXVzZWQpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBtZWRpYSBlbGVtZW50IGRvZXMgbm90IGhh
dmUgYSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIsIGFuZCB0aGUgbWVkaWEgZWxlbWVudAorICAg
ICAgICAgICAgLy8gaGFzIHN0aWxsIGVuZGVkIHBsYXliYWNrLCBhbmQgdGhlIGRpcmVjdGlvbiBv
ZiBwbGF5YmFjayBpcyBzdGlsbCBmb3J3YXJkcywgYW5kIHBhdXNlZAorICAgICAgICAgICAgLy8g
aXMgZmFsc2UsCisgICAgICAgICAgICBpZiAoIW1fbWVkaWFDb250cm9sbGVyICYmICFtX3BhdXNl
ZCkgeworICAgICAgICAgICAgICAgIC8vIGNoYW5nZXMgcGF1c2VkIHRvIHRydWUgYW5kIGZpcmVz
IGEgc2ltcGxlIGV2ZW50IG5hbWVkIHBhdXNlIGF0IHRoZSBtZWRpYSBlbGVtZW50LgogICAgICAg
ICAgICAgICAgIG1fcGF1c2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBzY2hlZHVsZUV2ZW50
KGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8v
IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGVuZGVkIGF0IHRoZSBt
ZWRpYSBlbGVtZW50LgogICAgICAgICAgICAgaWYgKCFtX3NlbnRFbmRFdmVudCkgewogICAgICAg
ICAgICAgICAgIG1fc2VudEVuZEV2ZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBzY2hlZHVs
ZUV2ZW50KGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KTsKKyAgICAgICAgICAgICAgICB1cGRhdGVN
ZWRpYUNvbnRyb2xsZXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIElmIHRoZSBt
ZWRpYSBlbGVtZW50IGhhcyBhIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlciwgCisgICAgICAgICAg
ICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICAvLyB0aGVuIHJlcG9y
dCB0aGUgY29udHJvbGxlciBzdGF0ZSBmb3IgdGhlIG1lZGlhIGVsZW1lbnQncyBjdXJyZW50IG1l
ZGlhIGNvbnRyb2xsZXIuCisgICAgICAgICAgICAgICAgbV9tZWRpYUNvbnRyb2xsZXItPnJlcG9y
dENvbnRyb2xsZXJTdGF0ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAt
MjQyNiwxMCArMjQ2Niw3IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gSFRNTE1lZGlhRWxlbWVu
dDo6cGxheWVkKCkKIAogUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBIVE1MTWVkaWFFbGVtZW50Ojpz
ZWVrYWJsZSgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUUgcmVhbCByYW5nZXMgc3VwcG9ydAotICAg
IGlmICghbWF4VGltZVNlZWthYmxlKCkpCi0gICAgICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVh
dGUoKTsKLSAgICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKG1pblRpbWVTZWVrYWJsZSgpLCBt
YXhUaW1lU2Vla2FibGUoKSk7CisgICAgcmV0dXJuIG1fcGxheWVyID8gbV9wbGF5ZXItPnNlZWth
YmxlKCkgOiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50
Ojpwb3RlbnRpYWxseVBsYXlpbmcoKSBjb25zdApAQCAtMjQzOCw3ICsyNDc1LDcgQEAgYm9vbCBI
VE1MTWVkaWFFbGVtZW50Ojpwb3RlbnRpYWxseVBsYXlpbmcoKSBjb25zdAogICAgIC8vIHdoZW4g
aXQgcmFuIG91dCBvZiBidWZmZXJlZCBkYXRhLiBBIG1vdmllIGlzIHRoaXMgc3RhdGUgaXMgInBv
dGVudGlhbGx5IHBsYXlpbmciLCBtb2R1bG8gdGhlCiAgICAgLy8gY2hlY2tzIGluIGNvdWxkUGxh
eUlmRW5vdWdoRGF0YSgpLgogICAgIGJvb2wgcGF1c2VkVG9CdWZmZXIgPSBtX3JlYWR5U3RhdGVN
YXhpbXVtID49IEhBVkVfRlVUVVJFX0RBVEEgJiYgbV9yZWFkeVN0YXRlIDwgSEFWRV9GVVRVUkVf
REFUQTsKLSAgICByZXR1cm4gKHBhdXNlZFRvQnVmZmVyIHx8IG1fcmVhZHlTdGF0ZSA+PSBIQVZF
X0ZVVFVSRV9EQVRBKSAmJiBjb3VsZFBsYXlJZkVub3VnaERhdGEoKTsKKyAgICByZXR1cm4gKHBh
dXNlZFRvQnVmZmVyIHx8IG1fcmVhZHlTdGF0ZSA+PSBIQVZFX0ZVVFVSRV9EQVRBKSAmJiBjb3Vs
ZFBsYXlJZkVub3VnaERhdGEoKSAmJiAhaXNCbG9ja2VkT25NZWRpYUNvbnRyb2xsZXIoKTsKIH0K
IAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpjb3VsZFBsYXlJZkVub3VnaERhdGEoKSBjb25zdApA
QCAtMjQ2MCwxMCArMjQ5NywxMSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmVuZGVkUGxheWJh
Y2soKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBhbmQgdGhlIGN1cnJl
bnQgcGxheWJhY2sgcG9zaXRpb24gaXMgdGhlIGVuZCBvZiB0aGUgbWVkaWEgcmVzb3VyY2UgYW5k
IHRoZSBkaXJlY3Rpb24KLSAgICAvLyBvZiBwbGF5YmFjayBpcyBmb3J3YXJkcyBhbmQgdGhlIG1l
ZGlhIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhIGxvb3AgYXR0cmlidXRlIHNwZWNpZmllZCwKKyAg
ICAvLyBvZiBwbGF5YmFjayBpcyBmb3J3YXJkcywgRWl0aGVyIHRoZSBtZWRpYSBlbGVtZW50IGRv
ZXMgbm90IGhhdmUgYSBsb29wIGF0dHJpYnV0ZSBzcGVjaWZpZWQsCisgICAgLy8gb3IgdGhlIG1l
ZGlhIGVsZW1lbnQgaGFzIGEgY3VycmVudCBtZWRpYSBjb250cm9sbGVyLgogICAgIGZsb2F0IG5v
dyA9IGN1cnJlbnRUaW1lKCk7CiAgICAgaWYgKG1fcGxheWJhY2tSYXRlID4gMCkKLSAgICAgICAg
cmV0dXJuIGR1ciA+IDAgJiYgbm93ID49IGR1ciAmJiAhbG9vcCgpOworICAgICAgICByZXR1cm4g
ZHVyID4gMCAmJiBub3cgPj0gZHVyICYmICghbG9vcCgpIHx8IG1fbWVkaWFDb250cm9sbGVyKTsK
IAogICAgIC8vIG9yIHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIGlzIHRoZSBlYXJsaWVz
dCBwb3NzaWJsZSBwb3NpdGlvbiBhbmQgdGhlIGRpcmVjdGlvbiAKICAgICAvLyBvZiBwbGF5YmFj
ayBpcyBiYWNrd2FyZHMKQEAgLTI1MDksOCArMjU0NywxNCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnVwZGF0ZVZvbHVtZSgpCiAgICAgaWYgKCFwcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFj
aygpKSB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7CiAgICAgICAg
IGZsb2F0IHZvbHVtZU11bHRpcGxpZXIgPSBwYWdlID8gcGFnZS0+bWVkaWFWb2x1bWUoKSA6IDE7
Ci0gICAgCi0gICAgICAgIG1fcGxheWVyLT5zZXRNdXRlZChtX211dGVkKTsKKyAgICAgICAgYm9v
bCBzaG91bGRNdXRlID0gbV9tdXRlZDsKKworICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIp
IHsKKyAgICAgICAgICAgIHZvbHVtZU11bHRpcGxpZXIgKj0gbV9tZWRpYUNvbnRyb2xsZXItPnZv
bHVtZSgpOworICAgICAgICAgICAgc2hvdWxkTXV0ZSA9IG1fbWVkaWFDb250cm9sbGVyLT5tdXRl
ZCgpOworICAgICAgICB9CisKKyAgICAgICAgbV9wbGF5ZXItPnNldE11dGVkKHNob3VsZE11dGUp
OwogICAgICAgICBtX3BsYXllci0+c2V0Vm9sdW1lKG1fdm9sdW1lICogdm9sdW1lTXVsdGlwbGll
cik7CiAgICAgfQogCkBAIC0yNTc3LDExICsyNjIxLDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6dXBkYXRlUGxheVN0YXRlKCkKICAgICAgICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKICAg
ICAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+cGxheWJhY2tTdG9wcGVkKCk7CiAgICAgfQotICAg
IAorCisgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CisKICAgICBpZiAocmVuZGVyZXIoKSkK
ICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKIH0KLSAgICAKKwogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQYXVzZWRJbnRlcm5hbChib29sIGIpCiB7CiAgICAgbV9w
YXVzZWRJbnRlcm5hbCA9IGI7CkBAIC0yNjQxLDYgKzI2ODcsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKCkKIAogICAgIC8vIFJlc2V0IG1fcmVhZHlTdGF0ZSBz
aW5jZSBtX3BsYXllciBpcyBnb25lLgogICAgIG1fcmVhZHlTdGF0ZSA9IEhBVkVfTk9USElORzsK
KyAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50
OjpjYW5TdXNwZW5kKCkgY29uc3QKQEAgLTMxMzMsNiArMzE4MCw3MiBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNldEl0ZW1WYWx1ZVRleHQoY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB9CiAjZW5kaWYKIAorY29uc3QgU3RyaW5nJiBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYUdyb3VwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUNvbnRyb2xsZXIgPyBtX21l
ZGlhQ29udHJvbGxlci0+bWVkaWFHcm91cCgpIDogZW1wdHlTdHJpbmcoKTsKK30KKwordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYgZ3JvdXApCit7Cisg
ICAgaWYgKG1fbWVkaWFDb250cm9sbGVyICYmIG1fbWVkaWFDb250cm9sbGVyLT5tZWRpYUdyb3Vw
KCkgPT0gZ3JvdXApCisgICAgICAgIHJldHVybjsKKworICAgIHNldE1lZGlhQ29udHJvbGxlcihN
ZWRpYUNvbnRyb2xsZXI6Om1lZGlhQ29udHJvbGxlckZvck1lZGlhR3JvdXAoZ3JvdXApKTsKK30K
KworTWVkaWFDb250cm9sbGVyKiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUNvbnRyb2xsZXIoKSBj
b25zdAoreworICAgIHJldHVybiBtX21lZGlhQ29udHJvbGxlci5nZXQoKTsKK30KKwordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNvbnRyb2xsZXIoUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xsZXI+IGNvbnRyb2xsZXIpCit7CisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQorICAgICAg
ICBtX21lZGlhQ29udHJvbGxlci0+cmVtb3ZlTWVkaWFFbGVtZW50KHRoaXMpOworCisgICAgbV9t
ZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyOworCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVy
KQorICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+YWRkTWVkaWFFbGVtZW50KHRoaXMpOworfQor
Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZU1lZGlhQ29udHJvbGxlcigpCit7CisgICAg
aWYgKG1fbWVkaWFDb250cm9sbGVyKQorICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+cmVwb3J0
Q29udHJvbGxlclN0YXRlKCk7Cit9CisKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNCbG9ja2Vk
KCkgY29uc3QKK3sKKyAgICAvLyBBIG1lZGlhIGVsZW1lbnQgaXMgYSBibG9ja2VkIG1lZGlhIGVs
ZW1lbnQgaWYgaXRzIHJlYWR5U3RhdGUgYXR0cmlidXRlIGlzIGluIHRoZQorICAgIC8vIEhBVkVf
Tk9USElORyBzdGF0ZSwgdGhlIEhBVkVfTUVUQURBVEEgc3RhdGUsIG9yIHRoZSBIQVZFX0NVUlJF
TlRfREFUQSBzdGF0ZSwKKyAgICBpZiAobV9yZWFkeVN0YXRlIDw9IEhBVkVfQ1VSUkVOVF9EQVRB
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIG9yIGlmIHRoZSBlbGVtZW50IGhhcyBw
YXVzZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uCisgICAgcmV0dXJuIHBhdXNlZEZvclVzZXJJbnRl
cmFjdGlvbigpOworfQorCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzQmxvY2tlZE9uTWVkaWFD
b250cm9sbGVyKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWVkaWFDb250cm9sbGVyKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBBIG1lZGlhIGVsZW1lbnQgaXMgYmxvY2tlZCBvbiBp
dHMgbWVkaWEgY29udHJvbGxlciBpZiB0aGUgTWVkaWFDb250cm9sbGVyIGlzIGEgYmxvY2tlZCAK
KyAgICAvLyBtZWRpYSBjb250cm9sbGVyLAorICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aXNC
bG9ja2VkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gb3IgaWYgaXRzIG1lZGlh
IGNvbnRyb2xsZXIgcG9zaXRpb24gaXMgZWl0aGVyIGJlZm9yZSB0aGUgbWVkaWEgcmVzb3VyY2Un
cyBlYXJsaWVzdCBwb3NzaWJsZSAKKyAgICAvLyBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgTWVk
aWFDb250cm9sbGVyJ3MgdGltZWxpbmUgb3IgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgbWVkaWEgcmVz
b3VyY2UgCisgICAgLy8gcmVsYXRpdmUgdG8gdGhlIE1lZGlhQ29udHJvbGxlcidzIHRpbWVsaW5l
LgorICAgIGZsb2F0IG1lZGlhQ29udHJvbGxlclBvc2l0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXIt
PmN1cnJlbnRUaW1lKCk7CisgICAgaWYgKG1lZGlhQ29udHJvbGxlclBvc2l0aW9uIDwgc3RhcnRU
aW1lKCkgfHwgbWVkaWFDb250cm9sbGVyUG9zaXRpb24gPiBzdGFydFRpbWUoKSArIGR1cmF0aW9u
KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCAwZDJmOWZj
NDllMTAwY2I1MTdiZWYwZDE1MGFjNGY3N2E1NzVlOWVjLi5mODA5ZTZlZTdmOTkwNzViYjIxMDcz
Y2Y3ZGU2Y2E0YmJkOWY0NTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCisj
aW5jbHVkZSAiTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5
ZXIuaCIKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQpAQCAtNTAsNiArNTEs
NyBAQCBjbGFzcyBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU7CiBjbGFzcyBFdmVudDsKIGNs
YXNzIEhUTUxTb3VyY2VFbGVtZW50OwogY2xhc3MgSFRNTFRyYWNrRWxlbWVudDsKK2NsYXNzIE1l
ZGlhQ29udHJvbGxlcjsKIGNsYXNzIE1lZGlhQ29udHJvbHM7CiBjbGFzcyBNZWRpYUVycm9yOwog
Y2xhc3MgS1VSTDsKQEAgLTYzLDcgKzY1LDcgQEAgY2xhc3MgV2lkZ2V0OwogLy8gQnV0IGl0IGNh
bid0IGJlIHVudGlsIHRoZSBDaHJvbWl1bSBXZWJNZWRpYVBsYXllckNsaWVudEltcGwgY2xhc3Mg
aXMgZml4ZWQgc28gaXQKIC8vIG5vIGxvbmdlciBkZXBlbmRzIG9uIHR5cGVjYXN0aW5nIGEgTWVk
aWFQbGF5ZXJDbGllbnQgdG8gYW4gSFRNTE1lZGlhRWxlbWVudC4KIAotY2xhc3MgSFRNTE1lZGlh
RWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIE1lZGlhUGxheWVyQ2xpZW50LCBw
cml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEFjdGl2ZURPTU9iamVjdAorY2xh
c3MgSFRNTE1lZGlhRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIE1lZGlhUGxh
eWVyQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEFjdGl2ZURP
TU9iamVjdCwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZQogI2lmIEVOQUJMRShWSURF
T19UUkFDSykKICAgICAsIHByaXZhdGUgVGV4dFRyYWNrQ2xpZW50CiAjZW5kaWYKQEAgLTEwNSw3
ICsxMDcsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIE5ldHdvcmtTdGF0ZSB7IE5FVFdPUktfRU1Q
VFksIE5FVFdPUktfSURMRSwgTkVUV09SS19MT0FESU5HLCBORVRXT1JLX05PX1NPVVJDRSB9Owog
ICAgIE5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdDsKLSAgICAKKwogICAgIFN0cmlu
ZyBwcmVsb2FkKCkgY29uc3Q7ICAgIAogICAgIHZvaWQgc2V0UHJlbG9hZChjb25zdCBTdHJpbmcm
KTsKIApAQCAtMTE0LDcgKzExNiw2IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgY2FuUGxheVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7CiAKIC8vIHJlYWR5IHN0YXRlCi0gICAgZW51
bSBSZWFkeVN0YXRlIHsgSEFWRV9OT1RISU5HLCBIQVZFX01FVEFEQVRBLCBIQVZFX0NVUlJFTlRf
REFUQSwgSEFWRV9GVVRVUkVfREFUQSwgSEFWRV9FTk9VR0hfREFUQSB9OwogICAgIFJlYWR5U3Rh
dGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwogICAgIGJvb2wgc2Vla2luZygpIGNvbnN0OwogCkBAIC0y
MzAsNiArMjMxLDEyIEBAIHB1YmxpYzoKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1Nv
dXJjZVByb3ZpZGVyKCk7CiAjZW5kaWYKIAorICAgIGNvbnN0IFN0cmluZyYgbWVkaWFHcm91cCgp
IGNvbnN0OworICAgIHZvaWQgc2V0TWVkaWFHcm91cChjb25zdCBTdHJpbmcmKTsKKworICAgIE1l
ZGlhQ29udHJvbGxlciogbWVkaWFDb250cm9sbGVyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNZWRp
YUNvbnRyb2xsZXIoUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+KTsKKwogcHJvdGVjdGVkOgog
ICAgIEhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAg
ICAgdmlydHVhbCB+SFRNTE1lZGlhRWxlbWVudCgpOwpAQCAtMzk0LDYgKzQwMSw4IEBAIHByaXZh
dGU6CiAgICAgLy8gUGF1c2VzIHBsYXliYWNrIHdpdGhvdXQgY2hhbmdpbmcgYW55IHN0YXRlcyBv
ciBnZW5lcmF0aW5nIGV2ZW50cwogICAgIHZvaWQgc2V0UGF1c2VkSW50ZXJuYWwoYm9vbCk7CiAK
KyAgICB2b2lkIHNldFBsYXliYWNrUmF0ZUludGVybmFsKGZsb2F0KTsKKwogICAgIHZpcnR1YWwg
dm9pZCBtZWRpYUNhblN0YXJ0KCk7CiAKICAgICB2b2lkIHNldFNob3VsZERlbGF5TG9hZEV2ZW50
KGJvb2wpOwpAQCAtNDEyLDYgKzQyMSwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRJdGVtVmFsdWVUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgog
CisgICAgdm9pZCB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKKyAgICBib29sIGlzQmxvY2tlZCgp
IGNvbnN0OworICAgIGJvb2wgaXNCbG9ja2VkT25NZWRpYUNvbnRyb2xsZXIoKSBjb25zdDsKKyAg
ICBib29sIGhhc1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya1N0YXRlICE9IE5FVFdP
UktfRU1QVFkgfHwgbV9uZXR3b3JrU3RhdGUgIT0gTkVUV09SS19OT19TT1VSQ0U7IH0KKyAgICBi
b29sIGlzTGl2ZVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1vdmllTG9hZFR5cGUoKSA9PSBNZWRp
YVBsYXllcjo6TGl2ZVN0cmVhbTsgfQorCiAgICAgVGltZXI8SFRNTE1lZGlhRWxlbWVudD4gbV9s
b2FkVGltZXI7CiAgICAgVGltZXI8SFRNTE1lZGlhRWxlbWVudD4gbV9hc3luY0V2ZW50VGltZXI7
CiAgICAgVGltZXI8SFRNTE1lZGlhRWxlbWVudD4gbV9wcm9ncmVzc0V2ZW50VGltZXI7CkBAIC01
MTYsNiArNTMxLDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgVmVj
dG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gbV90ZXh0VHJhY2tzOwogI2VuZGlmCisKKyAgICBmcmll
bmQgY2xhc3MgTWVkaWFDb250cm9sbGVyOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IG1f
bWVkaWFDb250cm9sbGVyOwogfTsKIAogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5pZGwKaW5kZXggMzMwYWRiYWFkZTcxMDI2OWMyZjJkZTVlZWM1Y2Mx
ZTE2MmIwYzliNS4uNDkyMTBiNjIwMjcyMzcxZTQ1YWFiOWZhYjE5MWJmNjEwMDQzY2U2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCkBAIC0xMTQsNSArMTE0LDgg
QEAgbW9kdWxlIGh0bWwgewogI2lmIGRlZmluZWQoRU5BQkxFX1ZJREVPX1RSQUNLKSAmJiBFTkFC
TEVfVklERU9fVFJBQ0sKICAgICBbRW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBU
ZXh0VHJhY2sgYWRkVHJhY2soaW4gRE9NU3RyaW5nIGtpbmQsIGluIFtPcHRpb25hbF0gRE9NU3Ry
aW5nIGxhYmVsLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBsYW5ndWFnZSk7CiAjZW5kaWYKKwor
ICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCwgQ29udmVydE51bGxUb051bGxTdHJpbmcsIENvbnZlcnRO
dWxsU3RyaW5nVG9OdWxsXSBET01TdHJpbmcgbWVkaWFHcm91cDsKKyAgICBhdHRyaWJ1dGUgW0N1
c3RvbVNldHRlcl0gTWVkaWFDb250cm9sbGVyIG1lZGlhQ29udHJvbGxlcjsKIH07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzljZjQ5N2MwZGRi
ZTc0YzA4ZTRlMDYzYjdhZmEyMzhjZmViNTNhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDU4MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJN
ZWRpYUNvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIkNsb2NrLmgiCisjaW5jbHVkZSAiSFRNTE1l
ZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKKyNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKwordHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgTWVkaWFDb250cm9sbGVyKj4gR3JvdXBDb250cm9sbGVyTWFwOworc3RhdGlj
IEdyb3VwQ29udHJvbGxlck1hcCYgbWVkaWFHcm91cFRvTWVkaWFDb250cm9sbGVyTWFwKCkKK3sK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEdyb3VwQ29udHJvbGxlck1hcCwgbWFwLCAoKSk7Cisg
ICAgcmV0dXJuIG1hcDsKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IE1lZGlhQ29u
dHJvbGxlcjo6bWVkaWFDb250cm9sbGVyRm9yTWVkaWFHcm91cChjb25zdCBTdHJpbmcmIGdyb3Vw
KQoreworICAgIGlmIChncm91cC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBp
ZiAoZ3JvdXAuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChNZWRpYUNv
bnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBtZWRpYUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXAoKS5n
ZXQoZ3JvdXApKQorICAgICAgICByZXR1cm4gY29udHJvbGxlcjsKKworICAgIFJlZlB0cjxNZWRp
YUNvbnRyb2xsZXI+IGNvbnRyb2xsZXIgPSBjcmVhdGUoKTsKKyAgICBjb250cm9sbGVyLT5tX21l
ZGlhR3JvdXAgPSBncm91cDsKKyAgICBtZWRpYUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXAoKS5z
ZXQoZ3JvdXAsIGNvbnRyb2xsZXIuZ2V0KCkpOworICAgIHJldHVybiBjb250cm9sbGVyLnJlbGVh
c2UoKTsKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IE1lZGlhQ29udHJvbGxlcjo6
Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbGxlcigpKTsK
K30KKworTWVkaWFDb250cm9sbGVyOjpNZWRpYUNvbnRyb2xsZXIoKQorICAgIDogbV9wYXVzZWQo
ZmFsc2UpCisgICAgLCBtX2RlZmF1bHRQbGF5YmFja1JhdGUoMSkKKyAgICAsIG1fdm9sdW1lKDEp
CisgICAgLCBtX211dGVkKGZhbHNlKQorICAgICwgbV9yZWFkeVN0YXRlKEhBVkVfTk9USElORykK
KyAgICAsIG1fcGxheWJhY2tTdGF0ZShXQUlUSU5HKQorICAgICwgbV9hc3luY0V2ZW50VGltZXIo
dGhpcywgJk1lZGlhQ29udHJvbGxlcjo6YXN5bmNFdmVudFRpbWVyRmlyZWQpCisgICAgLCBtX2Ns
b3NlZENhcHRpb25zVmlzaWJsZShmYWxzZSkKKyAgICAsIG1fY2xvY2soQ2xvY2s6OmNyZWF0ZSgp
KQoreworfQorCitNZWRpYUNvbnRyb2xsZXI6On5NZWRpYUNvbnRyb2xsZXIoKQoreworICAgIGlm
ICghbV9tZWRpYUdyb3VwLmlzRW1wdHkoKSkKKyAgICAgICAgbWVkaWFHcm91cFRvTWVkaWFDb250
cm9sbGVyTWFwKCkucmVtb3ZlKG1fbWVkaWFHcm91cCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9s
bGVyOjphZGRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBB
U1NFUlQoZWxlbWVudCk7CisgICAgQVNTRVJUKCFtX21lZGlhRWxlbWVudHMuY29udGFpbnMoZWxl
bWVudCkpOworCisgICAgbV9tZWRpYUVsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKKyAgICBicmlu
Z0VsZW1lbnRVcFRvU3BlZWQoZWxlbWVudCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpy
ZW1vdmVNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NF
UlQoZWxlbWVudCk7CisgICAgQVNTRVJUKG1fbWVkaWFFbGVtZW50cy5jb250YWlucyhlbGVtZW50
KSk7CisgICAgbV9tZWRpYUVsZW1lbnRzLnJlbW92ZShtX21lZGlhRWxlbWVudHMuZmluZChlbGVt
ZW50KSk7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpjb250YWluc01lZGlhRWxlbWVudChI
VE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlhRWxl
bWVudHMuY29udGFpbnMoZWxlbWVudCk7Cit9CisKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVk
aWFDb250cm9sbGVyOjpidWZmZXJlZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKworICAg
IC8vIFRoZSBidWZmZXJlZCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gYSBuZXcgc3RhdGljIG5vcm1h
bGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgdGhhdCByZXByZXNlbnRzIAorICAgIC8vIHRoZSBpbnRl
cnNlY3Rpb24gb2YgdGhlIHJhbmdlcyBvZiB0aGUgbWVkaWEgcmVzb3VyY2VzIG9mIHRoZSBzbGF2
ZWQgbWVkaWEgZWxlbWVudHMgdGhhdCB0aGUgCisgICAgLy8gdXNlciBhZ2VudCBoYXMgYnVmZmVy
ZWQsIGF0IHRoZSB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgZXZhbHVhdGVkLgorICAgIFJlZlB0cjxU
aW1lUmFuZ2VzPiBidWZmZXJlZFJhbmdlcyA9IG1fbWVkaWFFbGVtZW50cy5maXJzdCgpLT5idWZm
ZXJlZCgpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVu
dHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBidWZmZXJlZFJhbmdlcy0+aW50ZXJzZWN0V2l0
aChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5idWZmZXJlZCgpLmdldCgpKTsKKyAgICByZXR1cm4g
YnVmZmVyZWRSYW5nZXM7Cit9CisKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFDb250cm9s
bGVyOjpzZWVrYWJsZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKworICAgIC8vIFRoZSBz
ZWVrYWJsZSBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gYSBuZXcgc3RhdGljIG5vcm1hbGl6ZWQgVGlt
ZVJhbmdlcyBvYmplY3QgdGhhdCByZXByZXNlbnRzCisgICAgLy8gdGhlIGludGVyc2VjdGlvbiBv
ZiB0aGUgcmFuZ2VzIG9mIHRoZSBtZWRpYSByZXNvdXJjZXMgb2YgdGhlIHNsYXZlZCBtZWRpYSBl
bGVtZW50cyB0aGF0IHRoZQorICAgIC8vIHVzZXIgYWdlbnQgaXMgYWJsZSB0byBzZWVrIHRvLCBh
dCB0aGUgdGltZSB0aGUgYXR0cmlidXRlIGlzIGV2YWx1YXRlZC4KKyAgICBSZWZQdHI8VGltZVJh
bmdlcz4gc2Vla2FibGVSYW5nZXMgPSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+c2Vla2FibGUo
KTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNp
emUoKTsgKytpbmRleCkKKyAgICAgICAgc2Vla2FibGVSYW5nZXMtPmludGVyc2VjdFdpdGgobV9t
ZWRpYUVsZW1lbnRzW2luZGV4XS0+c2Vla2FibGUoKS5nZXQoKSk7CisgICAgcmV0dXJuIHNlZWth
YmxlUmFuZ2VzOworfQorCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhQ29udHJvbGxlcjo6
cGxheWVkKCkKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOworCisgICAgLy8gVGhlIHBsYXllZCBhdHRyaWJ1
dGUgbXVzdCByZXR1cm4gYSBuZXcgc3RhdGljIG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3Qg
dGhhdCByZXByZXNlbnRzIAorICAgIC8vIHRoZSB1bmlvbiBvZiB0aGUgcmFuZ2VzIG9mIHRoZSBt
ZWRpYSByZXNvdXJjZXMgb2YgdGhlIHNsYXZlZCBtZWRpYSBlbGVtZW50cyB0aGF0IHRoZSAKKyAg
ICAvLyB1c2VyIGFnZW50IGhhcyBzbyBmYXIgcmVuZGVyZWQsIGF0IHRoZSB0aW1lIHRoZSBhdHRy
aWJ1dGUgaXMgZXZhbHVhdGVkLgorICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBwbGF5ZWRSYW5nZXMg
PSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+cGxheWVkKCk7CisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAxOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAg
IHBsYXllZFJhbmdlcy0+dW5pb25XaXRoKG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnBsYXllZCgp
LmdldCgpKTsKKyAgICByZXR1cm4gcGxheWVkUmFuZ2VzOworfQorCitmbG9hdCBNZWRpYUNvbnRy
b2xsZXI6OmR1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBmbG9hdCBtYXhEdXJhdGlvbiA9IDA7Cisg
ICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7
ICsraW5kZXgpCisgICAgICAgIG1heER1cmF0aW9uID0gbWF4KG1heER1cmF0aW9uLCBtX21lZGlh
RWxlbWVudHNbaW5kZXhdLT5kdXJhdGlvbigpKTsKKyAgICByZXR1cm4gbWF4RHVyYXRpb247Cit9
CisKK2Zsb2F0IE1lZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUoKSBjb25zdAoreworICAgIGlm
IChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAg
ICByZXR1cm4gbV9jbG9jay0+Y3VycmVudFRpbWUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xs
ZXI6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRpbWUsIEV4Y2VwdGlvbkNvZGUmIGNvZGUpCit7Cisg
ICAgLy8gV2hlbiB0aGUgdXNlciBhZ2VudCBpcyB0byBzZWVrIHRoZSBtZWRpYSBjb250cm9sbGVy
IHRvIGEgcGFydGljdWxhciBuZXcgcGxheWJhY2sgcG9zaXRpb24sIAorICAgIC8vIGl0IG11c3Qg
Zm9sbG93IHRoZXNlIHN0ZXBzOgorICAgIC8vIElmIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24g
aXMgbGVzcyB0aGFuIHplcm8sIHRoZW4gc2V0IGl0IHRvIHplcm8uCisgICAgdGltZSA9IG1heCgw
LjBmLCB0aW1lKTsKKyAgICAKKyAgICAvLyBJZiB0aGUgbmV3IHBsYXliYWNrIHBvc2l0aW9uIGlz
IGdyZWF0ZXIgdGhhbiB0aGUgbWVkaWEgY29udHJvbGxlciBkdXJhdGlvbiwgdGhlbiBzZXQgaXQg
CisgICAgLy8gdG8gdGhlIG1lZGlhIGNvbnRyb2xsZXIgZHVyYXRpb24uCisgICAgdGltZSA9IG1p
bih0aW1lLCBkdXJhdGlvbigpKTsKKyAgICAKKyAgICAvLyBTZXQgdGhlIG1lZGlhIGNvbnRyb2xs
ZXIgcG9zaXRpb24gdG8gdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbi4KKyAgICBtX2Nsb2NrLT5z
ZXRDdXJyZW50VGltZSh0aW1lKTsKKyAgICAKKyAgICAvLyBTZWVrIGVhY2ggc2xhdmVkIG1lZGlh
IGVsZW1lbnQgdG8gdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgbWVk
aWEgZWxlbWVudCB0aW1lbGluZS4KKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
bV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRz
W2luZGV4XS0+c2Vlayh0aW1lLCBjb2RlKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnBs
YXkoKQoreworICAgIC8vIFdoZW4gdGhlIHBsYXkoKSBtZXRob2QgaXMgaW52b2tlZCwgaWYgdGhl
IE1lZGlhQ29udHJvbGxlciBpcyBhIHBhdXNlZCBtZWRpYSBjb250cm9sbGVyLAorICAgIGlmICgh
bV9wYXVzZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIHRoZSB1c2VyIGFnZW50IG11c3Qg
Y2hhbmdlIHRoZSBNZWRpYUNvbnRyb2xsZXIgaW50byBhIHBsYXlpbmcgbWVkaWEgY29udHJvbGxl
ciwKKyAgICBtX3BhdXNlZCA9IGZhbHNlOworICAgIC8vIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEg
c2ltcGxlIGV2ZW50IG5hbWVkIHBsYXkgYXQgdGhlIE1lZGlhQ29udHJvbGxlciwKKyAgICBzY2hl
ZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQpOworICAgIC8vIGFuZCB0aGVuIHJlcG9y
dCB0aGUgY29udHJvbGxlciBzdGF0ZSBvZiB0aGUgTWVkaWFDb250cm9sbGVyLgorICAgIHJlcG9y
dENvbnRyb2xsZXJTdGF0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6cGF1c2UoKQor
eworICAgIC8vIFdoZW4gdGhlIHBhdXNlKCkgbWV0aG9kIGlzIGludm9rZWQsIGlmIHRoZSBNZWRp
YUNvbnRyb2xsZXIgaXMgYSBwbGF5aW5nIG1lZGlhIGNvbnRyb2xsZXIsCisgICAgaWYgKG1fcGF1
c2VkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyB0aGVuIHRoZSB1c2VyIGFnZW50IG11c3Qg
Y2hhbmdlIHRoZSBNZWRpYUNvbnRyb2xsZXIgaW50byBhIHBhdXNlZCBtZWRpYSBjb250cm9sbGVy
LAorICAgIG1fcGF1c2VkID0gdHJ1ZTsKKyAgICAvLyBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNp
bXBsZSBldmVudCBuYW1lZCBwYXVzZSBhdCB0aGUgTWVkaWFDb250cm9sbGVyLAorICAgIHNjaGVk
dWxlRXZlbnQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQpOworICAgIC8vIGFuZCB0aGVuIHJlcG9y
dCB0aGUgY29udHJvbGxlciBzdGF0ZSBvZiB0aGUgTWVkaWFDb250cm9sbGVyLgorICAgIHJlcG9y
dENvbnRyb2xsZXJTdGF0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0RGVmYXVs
dFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQoreworICAgIC8vIFRoZSBkZWZhdWx0UGxheWJhY2tS
YXRlIGF0dHJpYnV0ZSwgb24gc2V0dGluZywgbXVzdCBzZXQgdGhlIE1lZGlhQ29udHJvbGxlcidz
IG1lZGlhIGNvbnRyb2xsZXIKKyAgICAvLyBkZWZhdWx0IHBsYXliYWNrIHJhdGUgdG8gdGhlIG5l
dyB2YWx1ZSwKKyAgICBtX2RlZmF1bHRQbGF5YmFja1JhdGUgPSByYXRlOworCisgICAgLy8gdGhl
biBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCByYXRlY2hhbmdlIGF0
IHRoZSBNZWRpYUNvbnRyb2xsZXIuCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucmF0
ZWNoYW5nZUV2ZW50KTsKK30KKworZmxvYXQgTWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUo
KSBjb25zdAoreworICAgIHJldHVybiBtX2Nsb2NrLT5wbGF5UmF0ZSgpOworfQorCit2b2lkIE1l
ZGlhQ29udHJvbGxlcjo6c2V0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUpCit7CisgICAgLy8gVGhl
IHBsYXliYWNrUmF0ZSBhdHRyaWJ1dGUsIG9uIHNldHRpbmcsIG11c3Qgc2V0IHRoZSBNZWRpYUNv
bnRyb2xsZXIncyBtZWRpYSBjb250cm9sbGVyIAorICAgIC8vIHBsYXliYWNrIHJhdGUgdG8gdGhl
IG5ldyB2YWx1ZSwKKyAgICBtX2Nsb2NrLT5zZXRQbGF5UmF0ZShyYXRlKTsKKworICAgIC8vIHRo
ZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcmF0ZWNoYW5nZSBh
dCB0aGUgTWVkaWFDb250cm9sbGVyLgorICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnJh
dGVjaGFuZ2VFdmVudCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUoZmxv
YXQgbGV2ZWwsIEV4Y2VwdGlvbkNvZGUmIGNvZGUpCit7CisgICAgLy8gSWYgdGhlIG5ldyB2YWx1
ZSBpcyBvdXRzaWRlIHRoZSByYW5nZSAwLjAgdG8gMS4wIGluY2x1c2l2ZSwgdGhlbiwgb24gc2V0
dGluZywgYW4gCisgICAgLy8gSW5kZXhTaXplRXJyb3IgZXhjZXB0aW9uIG11c3QgYmUgcmFpc2Vk
IGluc3RlYWQuCisgICAgaWYgKGxldmVsIDwgMCB8fCBsZXZlbCA+IDEpIHsKKyAgICAgICAgY29k
ZSA9IElOREVYX1NJWkVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAg
ICAvLyBUaGUgdm9sdW1lIGF0dHJpYnV0ZSwgb24gc2V0dGluZywgaWYgdGhlIG5ldyB2YWx1ZSBp
cyBpbiB0aGUgcmFuZ2UgMC4wIHRvIDEuMCBpbmNsdXNpdmUsCisgICAgLy8gbXVzdCBzZXQgdGhl
IE1lZGlhQ29udHJvbGxlcidzIG1lZGlhIGNvbnRyb2xsZXIgdm9sdW1lIG11bHRpcGxpZXIgdG8g
dGhlIG5ldyB2YWx1ZQorICAgIG1fdm9sdW1lID0gbGV2ZWw7CisKKyAgICAvLyBhbmQgcXVldWUg
YSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgdm9sdW1lY2hhbmdlIGF0IHRoZSBN
ZWRpYUNvbnRyb2xsZXIuCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkudm9sdW1lY2hh
bmdlRXZlbnQpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFF
bGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0t
PnVwZGF0ZVZvbHVtZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0TXV0ZWQoYm9v
bCBmbGFnKQoreworICAgIC8vIFRoZSBtdXRlZCBhdHRyaWJ1dGUsIG9uIHNldHRpbmcsIG11c3Qg
c2V0IHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtZWRpYSBjb250cm9sbGVyIG11dGUgb3ZlcnJpZGUK
KyAgICAvLyB0byB0aGUgbmV3IHZhbHVlCisgICAgbV9tdXRlZCA9IGZsYWc7CisKKyAgICAvLyBh
bmQgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgdm9sdW1lY2hhbmdl
IGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIuCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCku
dm9sdW1lY2hhbmdlRXZlbnQpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8
IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50
c1tpbmRleF0tPnVwZGF0ZVZvbHVtZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6cmVw
b3J0Q29udHJvbGxlclN0YXRlKCkKK3sKKyAgICB1cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgdXBk
YXRlUGxheWJhY2tTdGF0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlUmVh
ZHlTdGF0ZSgpCit7CisgICAgUmVhZHlTdGF0ZSBvbGRSZWFkeVN0YXRlID0gbV9yZWFkeVN0YXRl
OworICAgIFJlYWR5U3RhdGUgbmV3UmVhZHlTdGF0ZTsKKworICAgIAorICAgIGlmIChtX21lZGlh
RWxlbWVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIg
aGFzIG5vIHNsYXZlZCBtZWRpYSBlbGVtZW50cywgbGV0IG5ldyByZWFkaW5lc3Mgc3RhdGUgYmUg
MC4KKyAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IEhBVkVfTk9USElORzsKKyAgICB9IGVsc2Ugewor
ICAgICAgICAvLyBPdGhlcndpc2UsIGxldCBpdCBoYXZlIHRoZSBsb3dlc3QgdmFsdWUgb2YgdGhl
IHJlYWR5U3RhdGUgSURMIGF0dHJpYnV0ZXMgb2YgYWxsIG9mIGl0cworICAgICAgICAvLyBzbGF2
ZWQgbWVkaWEgZWxlbWVudHMuCisgICAgICAgIG5ld1JlYWR5U3RhdGUgPSBtX21lZGlhRWxlbWVu
dHMuZmlyc3QoKS0+cmVhZHlTdGF0ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7
IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgICAgIG5l
d1JlYWR5U3RhdGUgPSBtaW4obmV3UmVhZHlTdGF0ZSwgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+
cmVhZHlTdGF0ZSgpKTsKKyAgICB9CisKKyAgICAvLyBJZiB0aGUgTWVkaWFDb250cm9sbGVyJ3Mg
bW9zdCByZWNlbnRseSByZXBvcnRlZCByZWFkaW5lc3Mgc3RhdGUgaXMgbm90IGVxdWFsIHRvIG5l
dyByZWFkaW5lc3Mgc3RhdGUKKyAgICBpZiAobmV3UmVhZHlTdGF0ZSA9PSBvbGRSZWFkeVN0YXRl
KSAKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBh
IHNpbXBsZSBldmVudCBhdCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCwgd2hvc2UgbmFtZSBp
cyB0aGUKKyAgICAvLyBldmVudCBuYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHZhbHVlIG9mIG5l
dyByZWFkaW5lc3Mgc3RhdGUgZ2l2ZW4gaW4gdGhlIHRhYmxlIGJlbG93IChvbW1pdHRlZCkKKyAg
ICBBdG9taWNTdHJpbmcgZXZlbnROYW1lOworICAgIHN3aXRjaCAobmV3UmVhZHlTdGF0ZSkgewor
ICAgIGNhc2UgSEFWRV9OT1RISU5HOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCku
ZW1wdGllZEV2ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhBVkVfTUVUQURBVEE6Cisg
ICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5sb2FkZWRtZXRhZGF0YUV2ZW50OworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEhBVkVfQ1VSUkVOVF9EQVRBOgorICAgICAgICBldmVudE5h
bWUgPSBldmVudE5hbWVzKCkubG9hZGVkZGF0YUV2ZW50OworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEhBVkVfRlVUVVJFX0RBVEE6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5j
YW5wbGF5RXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSEFWRV9FTk9VR0hfREFUQToK
KyAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLmNhbnBsYXl0aHJvdWdoRXZlbnQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KKyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZSk7CisKKyAgICAvLyBMZXQgdGhl
IE1lZGlhQ29udHJvbGxlcidzIG1vc3QgcmVjZW50bHkgcmVwb3J0ZWQgcmVhZGluZXNzIHN0YXRl
IGJlIG5ldyByZWFkaW5lc3Mgc3RhdGUuCisgICAgbV9yZWFkeVN0YXRlID0gbmV3UmVhZHlTdGF0
ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVwZGF0ZVBsYXliYWNrU3RhdGUoKQorewor
ICAgIFBsYXliYWNrU3RhdGUgb2xkUGxheWJhY2tTdGF0ZSA9IG1fcGxheWJhY2tTdGF0ZTsKKyAg
ICBQbGF5YmFja1N0YXRlIG5ld1BsYXliYWNrU3RhdGU7CisKKyAgICAvLyBJbml0aWFsaXplIG5l
dyBwbGF5YmFjayBzdGF0ZSBieSBzZXR0aW5nIGl0IHRvIHRoZSBzdGF0ZSBnaXZlbiBmb3IgdGhl
IGZpcnN0IG1hdGNoaW5nIAorICAgIC8vIGNvbmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dpbmcgbGlz
dDoKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBJZiB0
aGUgTWVkaWFDb250cm9sbGVyIGhhcyBubyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMKKyAgICAgICAg
Ly8gTGV0IG5ldyBwbGF5YmFjayBzdGF0ZSBiZSB3YWl0aW5nLgorICAgICAgICBuZXdQbGF5YmFj
a1N0YXRlID0gV0FJVElORzsKKyAgICB9IGVsc2UgaWYgKGhhc0VuZGVkKCkpIHsKKyAgICAgICAg
Ly8gSWYgYWxsIG9mIHRoZSBNZWRpYUNvbnRyb2xsZXIncyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMg
aGF2ZSBlbmRlZCBwbGF5YmFjayBhbmQgdGhlIG1lZGlhCisgICAgICAgIC8vIGNvbnRyb2xsZXIg
cGxheWJhY2sgcmF0ZSBpcyBwb3NpdGl2ZSBvciB6ZXJvCisgICAgICAgIC8vIExldCBuZXcgcGxh
eWJhY2sgc3RhdGUgYmUgZW5kZWQuCisgICAgICAgIG5ld1BsYXliYWNrU3RhdGUgPSBFTkRFRDsK
KyAgICB9IGVsc2UgaWYgKGlzQmxvY2tlZCgpKSB7CisgICAgICAgIC8vIElmIHRoZSBNZWRpYUNv
bnRyb2xsZXIgaXMgYSBibG9ja2VkIG1lZGlhIGNvbnRyb2xsZXIKKyAgICAgICAgLy8gTGV0IG5l
dyBwbGF5YmFjayBzdGF0ZSBiZSB3YWl0aW5nLgorICAgICAgICBuZXdQbGF5YmFja1N0YXRlID0g
V0FJVElORzsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBPdGhlcndpc2UKKyAgICAgICAgLy8g
TGV0IG5ldyBwbGF5YmFjayBzdGF0ZSBiZSBwbGF5aW5nLgorICAgICAgICBuZXdQbGF5YmFja1N0
YXRlID0gUExBWUlORzsKKyAgICB9CisKKyAgICAvLyBJZiB0aGUgTWVkaWFDb250cm9sbGVyJ3Mg
bW9zdCByZWNlbnRseSByZXBvcnRlZCBwbGF5YmFjayBzdGF0ZSBpcyBub3QgZXF1YWwgdG8gbmV3
IHBsYXliYWNrIHN0YXRlCisgICAgaWYgKG5ld1BsYXliYWNrU3RhdGUgPT0gb2xkUGxheWJhY2tT
dGF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gYW5kIHRoZSBuZXcgcGxheWJhY2sgc3Rh
dGUgaXMgZW5kZWQsCisgICAgaWYgKG5ld1BsYXliYWNrU3RhdGUgPT0gRU5ERUQpIHsKKyAgICAg
ICAgLy8gdGhlbiBxdWV1ZSBhIHRhc2sgdGhhdCwgaWYgdGhlIE1lZGlhQ29udHJvbGxlciBvYmpl
Y3QgaXMgYSBwbGF5aW5nIG1lZGlhIGNvbnRyb2xsZXIsIGFuZCAKKyAgICAgICAgLy8gYWxsIG9m
IHRoZSBNZWRpYUNvbnRyb2xsZXIncyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgaGF2ZSBzdGlsbCBl
bmRlZCBwbGF5YmFjaywgYW5kIHRoZSAKKyAgICAgICAgLy8gbWVkaWEgY29udHJvbGxlciBwbGF5
YmFjayByYXRlIGlzIHN0aWxsIHBvc2l0aXZlIG9yIHplcm8sIAorICAgICAgICBpZiAoIW1fcGF1
c2VkICYmIGhhc0VuZGVkKCkpIHsKKyAgICAgICAgICAgIC8vIGNoYW5nZXMgdGhlIE1lZGlhQ29u
dHJvbGxlciBvYmplY3QgdG8gYSBwYXVzZWQgbWVkaWEgY29udHJvbGxlcgorICAgICAgICAgICAg
bV9wYXVzZWQgPSB0cnVlOworICAgICAgICAgICAgbV9jbG9jay0+c3RvcCgpOworCisgICAgICAg
ICAgICAvLyBhbmQgdGhlbiBmaXJlcyBhIHNpbXBsZSBldmVudCBuYW1lZCBwYXVzZSBhdCB0aGUg
TWVkaWFDb250cm9sbGVyIG9iamVjdC4KKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnRO
YW1lcygpLnBhdXNlRXZlbnQpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gSWYgdGhlIE1l
ZGlhQ29udHJvbGxlcidzIG1vc3QgcmVjZW50bHkgcmVwb3J0ZWQgcGxheWJhY2sgc3RhdGUgaXMg
bm90IGVxdWFsIHRvIG5ldyBwbGF5YmFjayBzdGF0ZQorICAgIC8vIHRoZW4gcXVldWUgYSB0YXNr
IHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgYXQgdGhlIE1lZGlhQ29udHJvbGxlciBvYmplY3QsIHdo
b3NlIG5hbWUgaXMgcGxheWluZyAKKyAgICAvLyBpZiBuZXcgcGxheWJhY2sgc3RhdGUgaXMgcGxh
eWluZywgZW5kZWQgaWYgbmV3IHBsYXliYWNrIHN0YXRlIGlzIGVuZGVkLCBhbmQgd2FpdGluZyBv
dGhlcndpc2UuCisgICAgQXRvbWljU3RyaW5nIGV2ZW50TmFtZTsKKyAgICBzd2l0Y2ggKG5ld1Bs
YXliYWNrU3RhdGUpIHsKKyAgICBjYXNlIFdBSVRJTkc6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2
ZW50TmFtZXMoKS53YWl0aW5nRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRU5ERUQ6
CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50OworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBMQVlJTkc6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMo
KS5wbGF5aW5nRXZlbnQ7CisgICAgICAgIG1fY2xvY2stPnN0YXJ0KCk7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAg
ICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZSk7CisKKyAgICAvLyBMZXQgdGhlIE1lZGlhQ29udHJv
bGxlcidzIG1vc3QgcmVjZW50bHkgcmVwb3J0ZWQgcGxheWJhY2sgc3RhdGUgYmUgbmV3IHBsYXli
YWNrIHN0YXRlLgorICAgIG1fcGxheWJhY2tTdGF0ZSA9IG5ld1BsYXliYWNrU3RhdGU7CisKKyAg
ICB1cGRhdGVNZWRpYUVsZW1lbnRzKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjp1cGRh
dGVNZWRpYUVsZW1lbnRzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
bV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRz
W2luZGV4XS0+dXBkYXRlUGxheVN0YXRlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpi
cmluZ0VsZW1lbnRVcFRvU3BlZWQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBB
U1NFUlQoZWxlbWVudCk7CisgICAgQVNTRVJUKG1fbWVkaWFFbGVtZW50cy5jb250YWlucyhlbGVt
ZW50KSk7CisKKyAgICAvLyBXaGVuIHRoZSB1c2VyIGFnZW50IGlzIHRvIGJyaW5nIGEgbWVkaWEg
ZWxlbWVudCB1cCB0byBzcGVlZCB3aXRoIGl0cyBuZXcgbWVkaWEgY29udHJvbGxlciwKKyAgICAv
LyBpdCBtdXN0IHNlZWsgdGhhdCBtZWRpYSBlbGVtZW50IHRvIHRoZSBNZWRpYUNvbnRyb2xsZXIn
cyBtZWRpYSBjb250cm9sbGVyIHBvc2l0aW9uIHJlbGF0aXZlCisgICAgLy8gdG8gdGhlIG1lZGlh
IGVsZW1lbnQncyB0aW1lbGluZS4KKyAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRDb2RlID0gMDsK
KyAgICBlbGVtZW50LT5zZWVrKGN1cnJlbnRUaW1lKCksIGlnbm9yZWRDb2RlKTsKK30KKworYm9v
bCBNZWRpYUNvbnRyb2xsZXI6OmlzQmxvY2tlZCgpIGNvbnN0Cit7CisgICAgLy8gQSBNZWRpYUNv
bnRyb2xsZXIgaXMgYSBibG9ja2VkIG1lZGlhIGNvbnRyb2xsZXIgaWYgdGhlIE1lZGlhQ29udHJv
bGxlciBpcyBhIHBhdXNlZCBtZWRpYSAKKyAgICAvLyBjb250cm9sbGVyLAorICAgIGlmIChtX3Bh
dXNlZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgaWYgKG1fbWVkaWFFbGVtZW50
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBib29sIGFsbFBh
dXNlZCA9IHRydWU7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFF
bGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgSFRNTE1lZGlhRWxlbWVudCogZWxl
bWVudCA9IG1fbWVkaWFFbGVtZW50c1tpbmRleF07CisgICAgICAgIC8vICBvciBpZiBhbnkgb2Yg
aXRzIHNsYXZlZCBtZWRpYSBlbGVtZW50cyBhcmUgYmxvY2tlZCBtZWRpYSBlbGVtZW50cywKKyAg
ICAgICAgaWYgKGVsZW1lbnQtPmlzQmxvY2tlZCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIAorICAgICAgICAvLyBvciBpZiBhbnkgb2YgaXRzIHNsYXZlZCBtZWRpYSBlbGVt
ZW50cyB3aG9zZSBhdXRvcGxheWluZyBmbGFnIGlzIHRydWUgc3RpbGwgaGF2ZSB0aGVpciAKKyAg
ICAgICAgLy8gcGF1c2VkIGF0dHJpYnV0ZSBzZXQgdG8gdHJ1ZSwKKyAgICAgICAgaWYgKGVsZW1l
bnQtPmF1dG9wbGF5KCkgJiYgZWxlbWVudC0+cGF1c2VkKCkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgCisgICAgICAgIGlmICghZWxlbWVudC0+cGF1c2VkKCkpCisgICAgICAg
ICAgICBhbGxQYXVzZWQgPSBmYWxzZTsKKyAgICB9CisgICAgCisgICAgLy8gb3IgaWYgYWxsIG9m
IGl0cyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgaGF2ZSB0aGVpciBwYXVzZWQgYXR0cmlidXRlIHNl
dCB0byB0cnVlLgorICAgIHJldHVybiBhbGxQYXVzZWQ7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9s
bGVyOjpoYXNFbmRlZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fY2xvY2stPnBsYXlSYXRlKCkgPD0g
MCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmIChtX21lZGlhRWxlbWVudHMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgYm9vbCBhbGxIYXZl
RW5kZWQgPSB0cnVlOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlh
RWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmICghbV9tZWRpYUVsZW1lbnRz
W2luZGV4XS0+ZW5kZWQoKSkKKyAgICAgICAgICAgIGFsbEhhdmVFbmRlZCA9IGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gYWxsSGF2ZUVuZGVkOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6
c2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKK3sKKyAgICBtX3Bl
bmRpbmdFdmVudHMuYXBwZW5kKEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgdHJ1ZSkp
OworICAgIGlmICghbV9hc3luY0V2ZW50VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9hc3lu
Y0V2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6
YXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sbGVyPiopCit7CisgICAgVmVj
dG9yPFJlZlB0cjxFdmVudD4gPiBwZW5kaW5nRXZlbnRzOworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIAorICAgIG1fcGVuZGluZ0V2ZW50cy5zd2FwKHBlbmRpbmdFdmVudHMpOworICAg
IHNpemVfdCBjb3VudCA9IHBlbmRpbmdFdmVudHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkKKyAgICAgICAgZGlzcGF0Y2hFdmVudChw
ZW5kaW5nRXZlbnRzW2luZGV4XS5yZWxlYXNlKCksIGVjKTsKK30KKworU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogTWVkaWFDb250cm9sbGVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QK
K3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50cy5maXJzdCgpLT5kb2N1bWVudCgpOworfQorCiti
b29sIE1lZGlhQ29udHJvbGxlcjo6aGFzQXVkaW8oKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7Cisg
ICAgICAgIGlmIChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5oYXNBdWRpbygpKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRp
YUNvbnRyb2xsZXI6Omhhc1ZpZGVvKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBp
ZiAobV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+aGFzVmlkZW8oKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9s
bGVyOjpoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXgg
PSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAg
aWYgKG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmhhc0Nsb3NlZENhcHRpb25zKCkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1l
ZGlhQ29udHJvbGxlcjo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wgdmlzaWJsZSkKK3sK
KyAgICBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZSA9IHZpc2libGU7CisgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAg
ICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnNldENsb3NlZENhcHRpb25zVmlzaWJsZSh2aXNp
YmxlKTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6OnN1cHBvcnRzU2Nhbm5pbmcoKSBjb25z
dAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMu
c2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmICghbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+
c3VwcG9ydHNTY2FubmluZygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmJlZ2luU2NydWJiaW5n
KCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRz
LnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+YmVnaW5T
Y3J1YmJpbmcoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmVuZFNjcnViYmluZygpCit7
CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXpl
KCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmVuZFNjcnViYmlu
ZygpOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6Y2FuUGxheSgpIGNvbnN0Cit7CisgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsr
aW5kZXgpIHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5jYW5QbGF5KCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
Citib29sIE1lZGlhQ29udHJvbGxlcjo6aXNMaXZlU3RyZWFtKCkgY29uc3QKK3sKKyAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRl
eCkgeworICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmlzTGl2ZVN0cmVhbSgp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBNZWRpYUNvbnRyb2xsZXI6Omhhc1NvdXJjZSgpIGNvbnN0Cit7CisgICAgZm9yIChz
aXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgp
IHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5oYXNTb3VyY2UoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgTWVkaWFDb250cm9sbGVyOjpyZXR1cm5Ub1JlYWx0aW1lKCkKK3sKKyAgICBmb3IgKHNpemVf
dCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAg
ICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+cmV0dXJuVG9SZWFsdGltZSgpOworfQorCitj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbGxlcjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZWRpYUNvbnRyb2xsZXI7
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTg1ZWYyOWEyM2RiOTlkNmZlNGM4NjA0MjI4ZjkxOTM3NzA5NmZlNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKQEAgLTAsMCArMSwx
NTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYUNvbnRyb2xsZXJfaAorI2RlZmluZSBNZWRp
YUNvbnRyb2xsZXJfaAorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgi
CisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJbnRl
cmZhY2UuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2xvY2s7CitjbGFzcyBIVE1MTWVkaWFFbGVt
ZW50OworY2xhc3MgRXZlbnQ7CisKK2NsYXNzIE1lZGlhQ29udHJvbGxlciA6IHB1YmxpYyBSZWZD
b3VudGVkPE1lZGlhQ29udHJvbGxlcj4sIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2Us
IHB1YmxpYyBFdmVudFRhcmdldCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sbGVyPiBtZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gY3JlYXRlKCk7CisgICAg
dmlydHVhbCB+TWVkaWFDb250cm9sbGVyKCk7CisKKyAgICB2b2lkIGFkZE1lZGlhRWxlbWVudChI
VE1MTWVkaWFFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVNZWRpYUVsZW1lbnQoSFRNTE1lZGlh
RWxlbWVudCopOworICAgIGJvb2wgY29udGFpbnNNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVu
dCopIGNvbnN0OworCisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3QgeyByZXR1
cm4gbV9tZWRpYUdyb3VwOyB9CisgICAgCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IGJ1ZmZlcmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+
IHNlZWthYmxlKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHBs
YXllZCgpOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEN1
cnJlbnRUaW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAgCisgICAgdmlydHVhbCBib29s
IHBhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF1c2VkOyB9CisgICAgdmlydHVhbCB2b2lkIHBs
YXkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0
IGRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRQbGF5YmFja1Jh
dGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCk7Cisg
ICAgCisgICAgdmlydHVhbCBmbG9hdCBwbGF5YmFja1JhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UGxheWJhY2tSYXRlKGZsb2F0KTsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IHZv
bHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFZv
bHVtZShmbG9hdCwgRXhjZXB0aW9uQ29kZSYpOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBtdXRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TXV0ZWQo
Ym9vbCk7CisgICAgCisgICAgdmlydHVhbCBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3JlYWR5U3RhdGU7IH0KKworICAgIGVudW0gUGxheWJhY2tTdGF0ZSB7IFdBSVRJ
TkcsIFBMQVlJTkcsIEVOREVEIH07CisgICAgdmlydHVhbCBQbGF5YmFja1N0YXRlIHBsYXliYWNr
U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3BsYXliYWNrU3RhdGU7IH0KKworICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc0Z1bGxzY3JlZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBoYXNB
dWRpbygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBz
ZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCk7CisgICAgdmlydHVhbCBib29sIGNsb3NlZENh
cHRpb25zVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlOyB9
CisgICAgCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Nhbm5pbmcoKSBjb25zdDsKKyAgICAK
KyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5k
U2NydWJiaW5nKCk7CisgICAgCisgICAgdmlydHVhbCBib29sIGNhblBsYXkoKSBjb25zdDsKKyAg
ICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3Q7CisgICAgCisgICAgdmly
dHVhbCBib29sIGhhc1NvdXJjZSgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgdm9pZCByZXR1
cm5Ub1JlYWx0aW1lKCk7CisKKyAgICBib29sIGlzQmxvY2tlZCgpIGNvbnN0OworCisgICAgLy8g
RXZlbnRUYXJnZXQKKyAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhQ29udHJvbGxlcj46OnJlZjsK
KyAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhQ29udHJvbGxlcj46OmRlcmVmOworCitwcml2YXRl
OgorICAgIE1lZGlhQ29udHJvbGxlcigpOworICAgIHZvaWQgcmVwb3J0Q29udHJvbGxlclN0YXRl
KCk7CisgICAgdm9pZCB1cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgdm9pZCB1cGRhdGVQbGF5YmFj
a1N0YXRlKCk7CisgICAgdm9pZCB1cGRhdGVNZWRpYUVsZW1lbnRzKCk7CisgICAgdm9pZCBicmlu
Z0VsZW1lbnRVcFRvU3BlZWQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIHZvaWQgc2NoZWR1bGVF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7CisgICAgdm9pZCBhc3luY0V2ZW50
VGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xsZXI+Kik7CisgICAgYm9vbCBoYXNFbmRlZCgp
IGNvbnN0OworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRU
YXJnZXQoKSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7
IGRlcmVmKCk7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFt
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVu
dFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKyAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZl
bnRUYXJnZXREYXRhOyB9CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwor
CisgICAgZnJpZW5kIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CisgICAgZnJpZW5kIGNsYXNzIE1l
ZGlhQ29udHJvbGxlckV2ZW50TGlzdGVuZXI7CisgICAgVmVjdG9yPEhUTUxNZWRpYUVsZW1lbnQq
PiBtX21lZGlhRWxlbWVudHM7CisgICAgYm9vbCBtX3BhdXNlZDsKKyAgICBmbG9hdCBtX2RlZmF1
bHRQbGF5YmFja1JhdGU7CisgICAgZmxvYXQgbV92b2x1bWU7CisgICAgYm9vbCBtX211dGVkOwor
ICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOworICAgIFBsYXliYWNrU3RhdGUgbV9wbGF5YmFj
a1N0YXRlOworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9wZW5kaW5nRXZlbnRzOworICAg
IFRpbWVyPE1lZGlhQ29udHJvbGxlcj4gbV9hc3luY0V2ZW50VGltZXI7CisgICAgU3RyaW5nIG1f
bWVkaWFHcm91cDsKKyAgICBib29sIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlOworICAgIFBhc3NS
ZWZQdHI8Q2xvY2s+IG1fY2xvY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJv
bGxlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDRiMmExZmQ4Y2I5NDQwOGEzOGRhYmI5NTYzZWJmYTVmNzM4ZmM1MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbApAQCAtMCww
ICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGh0bWwgeworICAgIGludGVyZmFjZSBbCisgICAg
ICAgIENvbmRpdGlvbmFsPVZJREVPLAorICAgICAgICBDYW5CZUNvbnN0cnVjdGVkLAorICAgICAg
ICBHZW5lcmF0ZVRvSlMsCisgICAgICAgIEV2ZW50VGFyZ2V0CisgICAgXSBNZWRpYUNvbnRyb2xs
ZXIgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJhbmdlcyBidWZmZXJlZDsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRpbWVSYW5nZXMgc2Vla2FibGU7CisKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBkdXJhdGlvbjsKKyAgICAgICAgYXR0cmlidXRlIGRv
dWJsZSBjdXJyZW50VGltZQorICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9u
KTsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBwYXVzZWQ7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBUaW1lUmFuZ2VzIHBsYXllZDsKKyAgICAgICAgdm9pZCBwbGF5
KCk7CisgICAgICAgIHZvaWQgcGF1c2UoKTsKKworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIGRl
ZmF1bHRQbGF5YmFja1JhdGU7CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgcGxheWJhY2tSYXRl
OworCisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgdm9sdW1lCisgICAgICAgICAgICBzZXR0ZXIg
cmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBtdXRlZDsK
KworICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAgICAgdm9pZCBhZGRFdmVu
dExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICB2b2lkIHJl
bW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Cisg
ICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAgICAgICAgICBy
YWlzZXMoRXZlbnRFeGNlcHRpb24pOworICAgIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MmNkNGRhNDFhZjQyZjVk
YTJhZTVkZjk3NzhjNGI4NmI3YzM1NDAwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaApAQCAtMCwwICsxLDk5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlX2gKKyNkZWZpbmUgTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlX2gKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGltZVJhbmdl
czsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKworY2xhc3MgTWVkaWFDb250cm9sbGVy
SW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UoKSB7IH07CisgICAgCisgICAgLy8gTWVkaWFDb250cm9sbGVyIElETDoKKyAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBwbGF5ZWQoKSA9IDA7CisgICAgCisgICAgdmlydHVh
bCBmbG9hdCBkdXJhdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRU
aW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCwg
RXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgcGF1c2VkKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBw
YXVzZSgpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IGRlZmF1bHRQbGF5YmFja1JhdGUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERlZmF1bHRQbGF5YmFja1JhdGUoZmxv
YXQpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IHBsYXliYWNrUmF0ZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheWJhY2tSYXRlKGZsb2F0KSA9IDA7CisgICAgCisg
ICAgdmlydHVhbCBmbG9hdCB2b2x1bWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dFZvbHVtZShmbG9hdCwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGJv
b2wgbXV0ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpID0g
MDsKKyAgICAKKyAgICBlbnVtIFJlYWR5U3RhdGUgeyBIQVZFX05PVEhJTkcsIEhBVkVfTUVUQURB
VEEsIEhBVkVfQ1VSUkVOVF9EQVRBLCBIQVZFX0ZVVFVSRV9EQVRBLCBIQVZFX0VOT1VHSF9EQVRB
IH07CisgICAgdmlydHVhbCBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCA9IDA7CisKKyAg
ICAvLyBNZWRpYUNvbnRyb2xFbGVtZW50czoKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxs
c2NyZWVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0Z1bGxzY3JlZW4oKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigpID0gMDsKKworICAgIHZp
cnR1YWwgYm9vbCBoYXNBdWRpbygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVmlk
ZW8oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc0Nsb3NlZENhcHRpb25zKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCkg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBjbG9zZWRDYXB0aW9uc1Zpc2libGUoKSBjb25zdCA9IDA7
CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTY2FubmluZygpIGNvbnN0ID0gMDsKKworICAg
IHZpcnR1YWwgdm9pZCBiZWdpblNjcnViYmluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5k
U2NydWJiaW5nKCkgPSAwOworCisgICAgdmlydHVhbCBib29sIGNhblBsYXkoKSBjb25zdCA9IDA7
CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3QgPSAwOworCisgICAgdmly
dHVhbCBib29sIGhhc1NvdXJjZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCByZXR1
cm5Ub1JlYWx0aW1lKCkgPSAwOworfTsKKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGltZVJhbmdlcy5jcHAKaW5kZXggMWUxODMwNjk4NzcxNGIwZTk5YjJkNTM1YmM0YjQ3Y2Uz
Y2NjODc4Mi4uN2I3ZDU5NGE0NmI5YmMwNTRkYzJkYThkNmE3YzI1MGI5MWQ5ZDE3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RpbWVSYW5nZXMuY3BwCkBAIC0zNiw3ICszNiw3IEBAIFRpbWVSYW5nZXM6OlRp
bWVSYW5nZXMoZmxvYXQgc3RhcnQsIGZsb2F0IGVuZCkKICAgICBhZGQoc3RhcnQsIGVuZCk7CiB9
CiAKLVBhc3NSZWZQdHI8VGltZVJhbmdlcz4gVGltZVJhbmdlczo6Y29weSgpCitQYXNzUmVmUHRy
PFRpbWVSYW5nZXM+IFRpbWVSYW5nZXM6OmNvcHkoKSBjb25zdAogewogICAgIFJlZlB0cjxUaW1l
UmFuZ2VzPiBuZXdTZXNzaW9uID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7CiAgICAgCkBAIC00Nyw2
ICs0Nyw0OSBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IFRpbWVSYW5nZXM6OmNvcHkoKQogICAg
IHJldHVybiBuZXdTZXNzaW9uLnJlbGVhc2UoKTsKIH0KIAordm9pZCBUaW1lUmFuZ2VzOjppbnZl
cnQoKQoreworICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBpbnZlcnRlZCA9IFRpbWVSYW5nZXM6OmNy
ZWF0ZSgpOworCisgICAgaWYgKCFtX3Jhbmdlcy5zaXplKCkpCisgICAgICAgIGludmVydGVkLT5h
ZGQoLUlORklOSVRZLCBJTkZJTklUWSk7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChmbG9hdCBz
dGFydCA9IG1fcmFuZ2VzLmZpcnN0KCkubV9zdGFydCAhPSAtSU5GSU5JVFkpCisgICAgICAgICAg
ICBpbnZlcnRlZC0+YWRkKC1JTkZJTklUWSwgc3RhcnQpOworCisgICAgICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggKyAxIDwgbV9yYW5nZXMuc2l6ZSgpOyArK2luZGV4KQorICAgICAg
ICAgICAgaW52ZXJ0ZWQtPmFkZChtX3Jhbmdlc1tpbmRleF0ubV9lbmQsIG1fcmFuZ2VzW2luZGV4
ICsgMV0ubV9zdGFydCk7CisKKyAgICAgICAgaWYgKGZsb2F0IGVuZCA9IG1fcmFuZ2VzLmxhc3Qo
KS5tX2VuZCAhPSBJTkZJTklUWSkKKyAgICAgICAgICAgIGludmVydGVkLT5hZGQoZW5kLCBJTkZJ
TklUWSk7CisgICAgfQorCisgICAgbV9yYW5nZXMuc3dhcChpbnZlcnRlZC0+bV9yYW5nZXMpOwor
fQorCit2b2lkIFRpbWVSYW5nZXM6OmludGVyc2VjdFdpdGgoY29uc3QgVGltZVJhbmdlcyogb3Ro
ZXIpCit7CisgICAgQVNTRVJUKG90aGVyKTsKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gaW52ZXJ0
ZWQgPSBjb3B5KCk7CisgICAgUmVmUHRyPFRpbWVSYW5nZXM+IGludmVydGVkT3RoZXIgPSBvdGhl
ci0+Y29weSgpOworICAgIGludmVydGVkLT51bmlvbldpdGgoaW52ZXJ0ZWRPdGhlci5nZXQoKSk7
CisgICAgaW52ZXJ0ZWQtPmludmVydCgpOworCisgICAgbV9yYW5nZXMuc3dhcChpbnZlcnRlZC0+
bV9yYW5nZXMpOworfQorCit2b2lkIFRpbWVSYW5nZXM6OnVuaW9uV2l0aChjb25zdCBUaW1lUmFu
Z2VzKiBvdGhlcikKK3sKKyAgICBBU1NFUlQob3RoZXIpOworICAgIFJlZlB0cjxUaW1lUmFuZ2Vz
PiB1bmlvbmVkID0gY29weSgpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBv
dGhlci0+bV9yYW5nZXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGNvbnN0IFJhbmdlJiBy
YW5nZSA9IG90aGVyLT5tX3Jhbmdlc1tpbmRleF07CisgICAgICAgIHVuaW9uZWQtPmFkZChyYW5n
ZS5tX3N0YXJ0LCByYW5nZS5tX2VuZCk7CisgICAgfQorCisgICAgbV9yYW5nZXMuc3dhcCh1bmlv
bmVkLT5tX3Jhbmdlcyk7Cit9CisKIGZsb2F0IFRpbWVSYW5nZXM6OnN0YXJ0KHVuc2lnbmVkIGlu
ZGV4LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QgCiB7IAogICAgIGlmIChpbmRleCA+PSBsZW5n
dGgoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaAppbmRleCAyZDdhZjI1YTgwOTEzNzMwZjgw
ZDIzOTMwYmUyNzRlMGZmMTIxN2ZkLi5jY2NjZTA1YzE5YzRhYzllNjI5ZGQyYTJhMWZiNjY1MjE5
NzgxMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaApAQCAtNDYsNyArNDYsMTAgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRpbWVSYW5nZXMoc3RhcnQsIGVuZCkp
OwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gY29weSgpOworICAgIFBhc3NS
ZWZQdHI8VGltZVJhbmdlcz4gY29weSgpIGNvbnN0OworICAgIHZvaWQgaW52ZXJ0KCk7CisgICAg
dm9pZCBpbnRlcnNlY3RXaXRoKGNvbnN0IFRpbWVSYW5nZXMqKTsKKyAgICB2b2lkIHVuaW9uV2l0
aChjb25zdCBUaW1lUmFuZ2VzKik7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX3Jhbmdlcy5zaXplKCk7IH0KICAgICBmbG9hdCBzdGFydCh1bnNpZ25lZCBpbmRleCwg
RXhjZXB0aW9uQ29kZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDZj
Y2Q0YTQ3ZDMxMjNmYWZjODY3YTMxY2ZhNjc5ZDQ3NmY0YWVhNjIuLjJkMGZhY2M3NmE1MWU5OWU5
MGJmZjg2ZjdiN2Q5MmZhNTUzYzFmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAg
LTYzMyw2ICs2MzMsNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmlidXRlIFtDb25k
aXRpb25hbD1WSURFTywgRW5hYmxlZEF0UnVudGltZV0gTWVkaWFFcnJvckNvbnN0cnVjdG9yIE1l
ZGlhRXJyb3I7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU8sIEVuYWJsZWRB
dFJ1bnRpbWVdIFRpbWVSYW5nZXNDb25zdHJ1Y3RvciBUaW1lUmFuZ2VzOwogICAgICAgICBhdHRy
aWJ1dGUgW0NvbmRpdGlvbmFsPVZJREVPLCBFbmFibGVkQXRSdW50aW1lXSBIVE1MU291cmNlRWxl
bWVudENvbnN0cnVjdG9yIEhUTUxTb3VyY2VFbGVtZW50OworICAgICAgICBhdHRyaWJ1dGUgW0Nv
bmRpdGlvbmFsPVZJREVPLCBFbmFibGVkQXRSdW50aW1lXSBNZWRpYUNvbnRyb2xsZXJDb25zdHJ1
Y3RvciBNZWRpYUNvbnRyb2xsZXI7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9BTklNQVRJT05fQVBJ
KSAmJiBFTkFCTEVfQU5JTUFUSU9OX0FQSQogICAgICAgICBhdHRyaWJ1dGUgV2ViS2l0QW5pbWF0
aW9uQ29uc3RydWN0b3IgV2ViS2l0QW5pbWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDAxOGM3ZGQzM2UzOGMxYjhmNzcz
NDVhOGMzZTRmODM1ZmVjNjBhNzMuLmZjNzdmZjI4ODM4YjdjMDk0YWE1M2E0ZmJkZjA3MTY4MGNh
MjIxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKQEAgLTYwOSw2ICs2MDksMTEgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRp
YVBsYXllcjo6YnVmZmVyZWQoKQogICAgIHJldHVybiBtX3ByaXZhdGUtPmJ1ZmZlcmVkKCk7CiB9
CiAKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXI6OnNlZWthYmxlKCkKK3sKKyAg
ICByZXR1cm4gbV9wcml2YXRlLT5zZWVrYWJsZSgpOworfQorCiBmbG9hdCBNZWRpYVBsYXllcjo6
bWF4VGltZVNlZWthYmxlKCkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5tYXhUaW1lU2Vla2Fi
bGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
CmluZGV4IGM5NmIwMjVkODJkMDA3MDkxNjllZWE1MWMwNzgyNmI3NDUwNmM0NzEuLjQ3NzM5YTA4
YjBlM2Q5Y2M3M2M5OWExMzE0MzRhNzhhZTAzNzQ1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjQxLDYgKzI0MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFByZXNlcnZlc1BpdGNoKGJvb2wpOwogCiAgICAgUGFzc1JlZlB0cjxU
aW1lUmFuZ2VzPiBidWZmZXJlZCgpOworICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc2Vla2Fi
bGUoKTsKICAgICBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKTsKIAogICAgIHVuc2lnbmVkIGJ5dGVz
TG9hZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IGY4YzcwYWJlMjhhN2VkMDFkZmI4YTJjYjdmMWM2MzY2
MzdkMzg0NDEuLjZjNTI3ZDdlNWNkMzg5OTkxNmI0NjVlZjcyZDU3MTQ0MDU2ZWQ3ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFZJREVPKQogCiAjaW5jbHVkZSAi
TWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTEsNiArOTIsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUo
KSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc2Vla2Fi
bGUoKSBjb25zdCB7IHJldHVybiBtYXhUaW1lU2Vla2FibGUoKSA/IFRpbWVSYW5nZXM6OmNyZWF0
ZSgwLCBtYXhUaW1lU2Vla2FibGUoKSkgOiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsgfQogICAgIHZp
cnR1YWwgZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDliMGVi
YmViYjhjOTJlMzQzYTJmMDFkY2M1MjYwNTAzNDQ3OGU0YmEuLjUzNWE4MGVhYjg0NGVhZDgxZThl
NDFmNDkxNWE2ZjdiMTVjMDhhYzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMS0wMiAg
SmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgTWVk
aWFDb250cm9sbGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzE0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLmh0bWw6IEFkZGVkLgorCiAyMDExLTEx
LTAzICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZC4gQnJvdWdodCBiYWNrIFRJTUVPVVQgZm9yIHNob3ctaGlkZS10YWJsZS1yb3dzLmh0
bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGM2ZDRkMDdmZmNjZmNiMzBlNzU1YWNjMjY4ZTY3NGY3NGFjY2MwZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAKKyAKK1Rlc3QgcHJlc2VuY2Ugb2YgTWVkaWFDb250cm9s
bGVyIGNvbnN0cnVjdG9yLCBtZWRpYUNvbnRyb2xsZXIsIGFuZCBtZWRpYUdyb3VwIGF0dHJpYnV0
ZXM6CitFWFBFQ1RFRCAodHlwZW9mKE1lZGlhQ29udHJvbGxlcikgPT0gJ29iamVjdCcpIE9LCitF
WFBFQ1RFRCAodmlkZW8ubWVkaWFDb250cm9sbGVyID09ICdudWxsJykgT0sKK0VYUEVDVEVEICh2
aWRlby5tZWRpYUdyb3VwID09ICcnKSBPSworCitUZXN0IHRoYXQgdGhlIHByZXNlbmNlIG9mIGEg
bWVkaWFHcm91cCBhdHRyaWJ1dGUgY3JlYXRlcyBhIG1lZGlhQ29udHJvbGxlcjoKK0VYUEVDVEVE
ICh2aWRlbzIubWVkaWFHcm91cCA9PSAnZ3JvdXAnKSBPSworRVhQRUNURUQgKHZpZGVvMi5tZWRp
YUNvbnRyb2xsZXIgIT0gJ251bGwnKSBPSworCitUZXN0IHRoYXQgc2V0dGluZyBtZWRpYUdyb3Vw
IHRvIGFuIGVtcHR5IHN0cmluZyByZW1vdmVzIHRoZSBtZWRpYUNvbnRyb2xsZXI6CitSVU4odmlk
ZW8ubWVkaWFHcm91cCA9ICcnKQorRVhQRUNURUQgKHZpZGVvLm1lZGlhQ29udHJvbGxlciA9PSAn
bnVsbCcpIE9LCisKK1Rlc3QgbWFudWFsbHkgY3JlYXRpbmcgYW5kIGFzc2lnbmluZyBhIG1lZGlh
Q29udHJvbGxlciB0byBhIG1lZGlhIGVsZW1lbnQ6CitSVU4oY29udHJvbGxlciA9IG5ldyBNZWRp
YUNvbnRyb2xsZXIoKSkKK1JVTih2aWRlby5tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyKQor
RVhQRUNURUQgKHZpZGVvLm1lZGlhQ29udHJvbGxlciA9PSAnW29iamVjdCBNZWRpYUNvbnRyb2xs
ZXJdJykgT0sKKworVGVzdCB0aGF0IHR3byBtZWRpYSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIG1l
ZGlhR3JvdXAgaGF2ZSB0aGUgc2FtZSBtZWRpYUNvbnRyb2xsZXI6CitSVU4odmlkZW8ubWVkaWFH
cm91cCA9ICdncm91cCcpCitSVU4odmlkZW8yLm1lZGlhR3JvdXAgPSAnZ3JvdXAnKQorRVhQRUNU
RUQgKHZpZGVvLm1lZGlhQ29udHJvbGxlciA9PT0gdmlkZW8yLm1lZGlhQ29udHJvbGxlciA9PSAn
dHJ1ZScpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9t
ZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlh
L21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4YThl
MDkyMTNlZTFhNzEwN2I4MTFhYjlmODgzYWQ0MDEyYTNmYTYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACisgCitSVU4oY29udHJvbGxlciA9IHZpZGVvLm1lZGlhQ29udHJvbGxl
cikKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorUlVOKGNvbnRyb2xsZXIuY3VycmVudFRpbWUgPSA1
KQorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID09ICc1JykgT0sKK0VYUEVDVEVEICh2aWRl
bzIuY3VycmVudFRpbWUgPT0gJzUnKSBPSworUlVOKHZpZGVvLnBsYXkoKSkKK1JVTih2aWRlbzIu
cGxheSgpKQorUlVOKGNvbnRyb2xsZXIucGxheSgpKQorRVZFTlQocGxheWluZykKK0VYUEVDVEVE
IChjb250cm9sbGVyLnBhdXNlZCA9PSAnZmFsc2UnKSBPSworRVZFTlQoZW5kZWQpCitFTkQgT0Yg
VEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLXBs
YXliYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNr
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2MyYjgzZWYxYWE4ODk2ZDdjMjIwN2Y3YTk0NjQ5MGYzY2NmNWYy
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXIt
cGxheWJhY2suaHRtbApAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz1tZWRpYS1maWxlLmpzPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorCisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgIHZhciBjb250cm9sbGVyOworICAgICAgICB2YXIgdmlkZW8yOworCisg
ICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICAgICAgdmlkZW8gPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8nKVswXTsKKyAgICAgICAgICAgIHZpZGVvMiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzFdOworICAgICAgICAgICAgcnVu
KCdjb250cm9sbGVyID0gdmlkZW8ubWVkaWFDb250cm9sbGVyJyk7CisgICAgICAgICAgICBjb250
cm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2NhbnBsYXl0aHJvdWdoJywgY2FucGxheXRocm91Z2gs
IHRydWUpOworICAgICAgICAgICAgc2V0U3JjQnlUYWdOYW1lKCd2aWRlbycsIGZpbmRNZWRpYUZp
bGUoJ3ZpZGVvJywgJ2NvbnRlbnQvdGVzdCcpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgZnVuY3Rpb24gY2FucGxheXRocm91Z2goKSB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUo
IkVWRU5UKGNhbnBsYXl0aHJvdWdoKSIpOworICAgICAgICAgICAgY29udHJvbGxlci5yZW1vdmVF
dmVudExpc3RlbmVyKCdjYW5wbGF5dGhyb3VnaCcsIGNhbnBsYXl0aHJvdWdoLCB0cnVlKTsKKyAg
ICAgICAgICAgIHJ1bignY29udHJvbGxlci5jdXJyZW50VGltZSA9IDUnKTsKKyAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgndmlkZW8uY3VycmVudFRpbWUnLCA1KTsKKyAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgndmlkZW8yLmN1cnJlbnRUaW1lJywgNSk7CisgICAgICAgICAgICBydW4oJ3ZpZGVv
LnBsYXkoKScpOworICAgICAgICAgICAgcnVuKCd2aWRlbzIucGxheSgpJyk7CisgICAgICAgICAg
ICBjb250cm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBwbGF5aW5nLCB0cnVlKTsK
KyAgICAgICAgICAgIHJ1bignY29udHJvbGxlci5wbGF5KCknKTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgZnVuY3Rpb24gcGxheWluZygpIHsgCisgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIkVWRU5UKHBsYXlpbmcpIik7CisgICAgICAgICAgICBjb250cm9sbGVyLnJlbW92ZUV2ZW50
TGlzdGVuZXIoJ3BsYXlpbmcnLCBwbGF5aW5nLCB0cnVlKTsKKyAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgnY29udHJvbGxlci5wYXVzZWQnLCBmYWxzZSk7CisgICAgICAgICAgICBjb250cm9sbGVy
LmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgZW5kZWQsIHRydWUpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gZW5kZWQoKSB7IAorICAgICAgICAgICAgY29uc29sZVdyaXRlKCJFVkVO
VChlbmRlZCkiKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcign
ZW5kZWQnLCBlbmRlZCwgdHJ1ZSk7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0K
KyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ic3RhcnQo
KSI+CisgICAgICAgIDx2aWRlbyBtZWRpYUdyb3VwPSJncm91cCIgY29udHJvbHM+PC92aWRlbz4K
KyAgICAgICAgPHZpZGVvIG1lZGlhR3JvdXA9Imdyb3VwIiBjb250cm9scz48L3ZpZGVvPgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9t
ZWRpYS9tZWRpYS1jb250cm9sbGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBlNTk2NzU0ZDVhYmIxYzNl
N2VkZjE0MjljNjkzYThiODc4NGZhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21l
ZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz1tZWRpYS1maWxlLmpz
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0Pgor
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBjb250cm9sbGVyOworICAgICAgICB2YXIg
dmlkZW8yOworCisgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICAgICAgdmlkZW8g
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8nKVswXTsKKyAgICAgICAgICAg
IHZpZGVvMiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzFdOworCisg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgcHJlc2VuY2Ugb2YgTWVkaWFDb250cm9sbGVy
IGNvbnN0cnVjdG9yLCBtZWRpYUNvbnRyb2xsZXIsIGFuZCBtZWRpYUdyb3VwIGF0dHJpYnV0ZXM6
Iik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInR5cGVvZihNZWRpYUNvbnRyb2xsZXIpIiwg
Im9iamVjdCIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRpYUNvbnRyb2xs
ZXIiLCBudWxsKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubWVkaWFHcm91cCIs
ICIiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIlRlc3QgdGhhdCB0aGUgcHJlc2VuY2Ugb2YgYSBtZWRpYUdyb3VwIGF0dHJpYnV0ZSBj
cmVhdGVzIGEgbWVkaWFDb250cm9sbGVyOiIpCisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZp
ZGVvMi5tZWRpYUdyb3VwIiwgJ2dyb3VwJyk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZp
ZGVvMi5tZWRpYUNvbnRyb2xsZXIiLCBudWxsLCAiIT0iKTsKKyAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiIik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgdGhhdCBzZXR0aW5nIG1l
ZGlhR3JvdXAgdG8gYW4gZW1wdHkgc3RyaW5nIHJlbW92ZXMgdGhlIG1lZGlhQ29udHJvbGxlcjoi
KQorICAgICAgICAgICAgcnVuKCJ2aWRlby5tZWRpYUdyb3VwID0gJyciKTsKKyAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidmlkZW8ubWVkaWFDb250cm9sbGVyIiwgbnVsbCk7CisgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IG1hbnVh
bGx5IGNyZWF0aW5nIGFuZCBhc3NpZ25pbmcgYSBtZWRpYUNvbnRyb2xsZXIgdG8gYSBtZWRpYSBl
bGVtZW50OiIpCisgICAgICAgICAgICBydW4oImNvbnRyb2xsZXIgPSBuZXcgTWVkaWFDb250cm9s
bGVyKCkiKTsKKyAgICAgICAgICAgIHJ1bigidmlkZW8ubWVkaWFDb250cm9sbGVyID0gY29udHJv
bGxlciIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRpYUNvbnRyb2xsZXIi
LCBjb250cm9sbGVyKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIlRlc3QgdGhhdCB0d28gbWVkaWEgZWxlbWVudHMgd2l0aCB0aGUgc2Ft
ZSBtZWRpYUdyb3VwIGhhdmUgdGhlIHNhbWUgbWVkaWFDb250cm9sbGVyOiIpCisgICAgICAgICAg
ICBydW4oInZpZGVvLm1lZGlhR3JvdXAgPSAnZ3JvdXAnIik7CisgICAgICAgICAgICBydW4oInZp
ZGVvMi5tZWRpYUdyb3VwID0gJ2dyb3VwJyIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2
aWRlby5tZWRpYUNvbnRyb2xsZXIgPT09IHZpZGVvMi5tZWRpYUNvbnRyb2xsZXIiLCB0cnVlKTsK
KyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHZpZGVvPjwv
dmlkZW8+CisgICAgICAgIDx2aWRlbyBtZWRpYWdyb3VwPSJncm91cCI+PC92aWRlbz4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113563</attachid>
            <date>2011-11-03 15:13:04 -0700</date>
            <delta_ts>2011-11-04 14:18:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71408-20111103151303.patch</filename>
            <type>text/plain</type>
            <size>87569</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkyMjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxOTNiNDE0YjYyMTJiNzM5
YTE3ODE2ZjFiMjdmYjUwYTExMzRlOWEyLi40Zjk0ZDA0ZGU3ZTA1Y2RiMGEyYjE0M2NlMThhZWEx
NTY4MTIxNjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTYwIEBACiAyMDExLTExLTAyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNv
bnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbAorCisgICAgICAgIEFkZHMgc3VwcG9ydCBm
b3IgdGhlIE1lZGlhQ29udHJvbGxlciBET00gb2JqZWN0LCBhbmQgdGhlIG1lZGlhZ3JvdXAgYW5k
IG1lZGlhY29udHJvbGxlcgorICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGF0dHJpYnV0ZXMuCisK
KyAgICAgICAgTWVkaWFDb250cm9sbGVyIGlzIGFuIERPTSBvYmplY3Qgd2hpY2ggc3luY2hyb25p
emVzIHBsYXliYWNrIG9mIG11bHRpcGxlIEhUTUxNZWRpYUVsZW1lbnRzLiBJdCBjYW4KKyAgICAg
ICAgZWl0aGVyIGJlIGNyZWF0ZWQgYnkgYSBwYWdlIHNjcmlwdCBhbmQgYXNzaWduZWQgdG8gYSBI
VE1MTWVkaWFFbGVtZW50IHVzaW5nIHRoZSBtZWRpYUNvbnRyb2xsZXIgcHJvcGVydHksCisgICAg
ICAgIG9yIGFsbCBIVE1MTWVkaWFFbGVtZW50cyB3aXRoIGlkZW50aWNhbCBtZWRpYWdyb3VwIGF0
dHJpYnV0ZXMgd2lsbCBoYXZlIGEgTWVkaWFDb250cm9sbGVyIGFzc2lnbmVkIAorICAgICAgICBh
dXRvbWF0aWNhbGx5LgorCisgICAgICAgIEFkZCBhbiBhYnN0cmFjdCBpbnRlcmZhY2UgaW1wbGVt
ZW50ZWQgYnkgYm90aCBNZWRpYUNvbnRyb2xsZXIgYW5kIEhUTUxNZWRpYUVsZW1lbnQuCisgICAg
ICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U6On5NZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UpOgorCisgICAgICAgIEFkZCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCBhbmQgSURMLgor
ICAgICAgICAqIGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChtZWRp
YUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXApOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpt
ZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
Y3JlYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6TWVkaWFDb250cm9sbGVyKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6fk1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChNZWRp
YUNvbnRyb2xsZXI6OmFkZE1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnJlbW92ZU1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmNvbnRhaW5z
TWVkaWFFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6YnVmZmVyZWQpOgorICAg
ICAgICAoTWVkaWFDb250cm9sbGVyOjpzZWVrYWJsZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnBsYXllZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKToKKyAgICAg
ICAgKE1lZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnBsYXkpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpwYXVzZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnNldERlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpz
ZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZCk6CisgICAgICAgIChNZWRpYUNvbnRy
b2xsZXI6OnJlcG9ydENvbnRyb2xsZXJTdGF0ZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnVwZGF0ZVJlYWR5U3RhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjp1cGRhdGVQbGF5
YmFja1N0YXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlTWVkaWFFbGVtZW50
cyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnNjaGVkdWxlRXZlbnQpOgorICAgICAgICAo
TWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpoYXNBdWRpbyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Omhhc1ZpZGVvKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzQ2xvc2VkQ2FwdGlvbnMpOgorICAgICAgICAoTWVk
aWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUpOgorICAgICAgICAoTWVkaWFD
b250cm9sbGVyOjpzdXBwb3J0c1NjYW5uaW5nKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
YmVnaW5TY3J1YmJpbmcpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjplbmRTY3J1YmJpbmcp
OgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjYW5QbGF5KToKKyAgICAgICAgKE1lZGlhQ29u
dHJvbGxlcjo6aXNMaXZlU3RyZWFtKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzU291
cmNlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6cmV0dXJuVG9SZWFsdGltZSk6CisgICAg
ICAgIChNZWRpYUNvbnRyb2xsZXI6OmlzQmxvY2tlZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6Omhhc0VuZGVkKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6bWVkaWFHcm91cCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xsZXI6OmRlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sbGVyOjp2b2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpt
dXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnJlYWR5U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1N0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6c3VwcG9ydHNGdWxsc2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6aXNGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbGxlcjo6Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sbGVyOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbGxlcjo6dG9NZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sbGVyOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvTWVk
aWFDb250cm9sbGVyLmlkbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGNvbnZlbmllbmNlIGZ1bmN0
aW9ucyB0byBUaW1lUmFuZ2VzIHdoaWNoIGNhbiBjYWxjdWxhdGUgaW50ZXJzZWN0aW9ucyBhbmQK
KyAgICAgICAgdW5pb25zIGJldHdlZW4gVGltZVJhbmdlcyBvYmplY3RzLgorICAgICAgICAqIGh0
bWwvVGltZVJhbmdlcy5jcHA6CisgICAgICAgIChUaW1lUmFuZ2VzOjpjb3B5KToKKyAgICAgICAg
KFRpbWVSYW5nZXM6OmludmVydCk6CisgICAgICAgIChUaW1lUmFuZ2VzOjppbnRlcnNlY3RXaXRo
KToKKyAgICAgICAgKFRpbWVSYW5nZXM6OnVuaW9uV2l0aCk6CisgICAgICAgICogaHRtbC9UaW1l
UmFuZ2VzLmg6CisKKyAgICAgICAgQWRkIE1lZGlhQ29udHJvbGxlckNvbnN0cnVjdG9yIHRvIHRo
ZSBXaW5kb3cgb2JqZWN0LgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKworICAgICAg
ICBBZGQgdGhlIHR3byBuZXcgYXR0cmlidXRlIG5hbWVzLCBtZWRpYWdyb3VwIGFuZCBtZWRpYWNv
bnRyb2xsZXIuCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYXR0cmlidXRlcywgYW5kIGFkZCBvdmVycmlkZGVu
IGJlaGF2aW9yIHdoZW4gYSBtZWRpYSBlbGVtZW50CisgICAgICAgIGhhcyBhIGN1cnJlbnQgbWVk
aWEgY29udHJvbGxlcjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlSW50ZXJuYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjplbmRlZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpzZXRNZWRpYUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRN
ZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmlzQmxvY2tlZE9uTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc1NvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0xpdmVTdHJlYW0pOgorICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpK
U0hUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcik6CisKKyAgICAgICAgQWRkIGEg
ZnVuY3Rpb24gInNlZWthYmxlIiB3aGljaCByZXR1cm5zIGEgVGltZVJhbmdlcyBjb250YWluaW5n
IHRoZSBzZWVrYWJsZSB0aW1lIHJhbmdlcworICAgICAgICBpbiBhIG1lZGlhIGVsZW1lbnQuICBC
eSBkZWZhdWx0IHRoaXMgaXMgYSBzaW5nbGUgcmFuZ2Ugb2YgWzAsIG1heFRpbWVTZWVrYWJsZV0u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNlZWthYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlOjpzZWVrYWJsZSk6CisKKyAgICAgICAgU3VwcG9ydCBmdW5jdGlvbnMgdG8gY2FzdCBiZXR3
ZWVuIE1lZGlhQ29udHJvbGxlciBhbmQgRXZlbnRUYXJnZXQuCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAg
KiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OnRv
TWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKworICAgICAg
ICBCb2lsZXJwbGF0ZSB0byBzdXBwb3J0IGNyZWF0aW5nIHRoZSBkZXJpdmVkIHNvdXJjZXMgZm9y
IE1lZGlhQ29udHJvbGxlciBhbmQgYWRkaW5nIG5ldyBzb3VyY2VzCisgICAgICAgIHRvIHRoZSBw
cm9qZWN0OgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLmNwcDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworMjAxMS0xMS0wMiAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KKwogICAgICAgICBBZGQgQ2xvY2sgY2xhc3MgYW5kIHBsYXRm
b3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMzQxCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjky
MDM5MDIzNTc5YmRiZjk5OTlmZjNjY2I4ZDQ2ODMwNTA1NmYzYS4uMDM4NGRiNTdiOTI2YWYyZDY5
OWVjNTc5MzVlZWI1M2NhZTQzNjZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTI3Niw2ICsy
NzYsNyBAQCBTRVQoV2ViQ29yZV9JRExfRklMRVMKICAgICBodG1sL0hUTUxVbmtub3duRWxlbWVu
dC5pZGwKICAgICBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCiAgICAgaHRtbC9JbWFnZURhdGEu
aWRsCisgICAgaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsCiAgICAgaHRtbC9NZWRpYUVycm9yLmlk
bAogICAgIGh0bWwvVGV4dE1ldHJpY3MuaWRsCiAgICAgaHRtbC9UZXh0VHJhY2suaWRsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db2RlR2VuZXJhdG9ycy5wcmkgYi9Tb3VyY2UvV2ViQ29y
ZS9Db2RlR2VuZXJhdG9ycy5wcmkKaW5kZXggMGYwYTM5Y2VmM2JjNGEwNTE1YzZmMGExODNmMmY2
NjcxN2IxMzY1Yi4uNjFlMzUwY2Y5Zjk5NGNkYTc5YTMzOGVhNTg4ZWM4ODMxODYxZjRlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29kZUdlbmVyYXRvcnMucHJpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NvZGVHZW5lcmF0b3JzLnByaQpAQCAtMzA4LDYgKzMwOCw3IEBAIElETF9CSU5ESU5H
UyArPSBcCiAgICAgaHRtbC9IVE1MVW5rbm93bkVsZW1lbnQuaWRsIFwKICAgICBodG1sL0hUTUxW
aWRlb0VsZW1lbnQuaWRsIFwKICAgICBodG1sL0ltYWdlRGF0YS5pZGwgXAorICAgIGh0bWwvTWVk
aWFDb250cm9sbGVyLmlkbCBcCiAgICAgaHRtbC9NZWRpYUVycm9yLmlkbCBcCiAgICAgaHRtbC9U
ZXh0TWV0cmljcy5pZGwgXAogICAgIGh0bWwvVGltZVJhbmdlcy5pZGwgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMuY3BwCmluZGV4IGM4NWFiMWVkY2ZlYTNiM2ZiNDQ1OTNiODI3NzJiNmQyZTk2NjVh
ZjguLmRlYTU4NjhmZTY0NWExNTk2YTY4MjQyYmRjODRmYTA2YTk0YWY4NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5jcHAKQEAgLTIyOCw2ICsyMjgsNyBAQAogI2luY2x1ZGUgIkpTSmF2YVNj
cmlwdENhbGxGcmFtZS5jcHAiCiAjaW5jbHVkZSAiSlNLZXlib2FyZEV2ZW50LmNwcCIKICNpbmNs
dWRlICJKU0xvY2F0aW9uLmNwcCIKKyNpbmNsdWRlICJKU01lZGlhQ29udHJvbGxlci5jcHAiCiAj
aW5jbHVkZSAiSlNNZWRpYUVycm9yLmNwcCIKICNpbmNsdWRlICJKU01lZGlhTGlzdC5jcHAiCiAj
aW5jbHVkZSAiSlNNZWRpYVF1ZXJ5TGlzdC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQppbmRleCBiNGMyMDY2MjBlNmQxNTRjYjRlYzNlMmNmZTVjODAxZTVkMDNkNTRjLi41ZDI2OGJh
OGI4ODhlYzE1ZTk4OWJlZjZiM2I2Zjg2MzdmYjViNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKQEAgLTI3Niw2ICsyNzYsNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBLZXlib2Fy
ZEV2ZW50IFwKICAgICBMb2NhdGlvbiBcCiAgICAgTG93UGFzczJGaWx0ZXJOb2RlIFwKKyAgICBN
ZWRpYUNvbnRyb2xsZXIgXAogICAgIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBcCiAgICAg
TWVkaWFFcnJvciBcCiAgICAgTWVkaWFMaXN0IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CmluZGV4IDE4NDgyNWNjY2VkYjliZTA4YjMxN2NlMDE5ZWUwZThhNWZkYTRhY2MuLmI3MDZiYmZl
NGIzMmM4YTAxM2QxNjRiNjY4MzRlNDZhZjUzOTQ3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQpAQCAtMzU5LDYgKzM1OSw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0xvY2FsTWVkaWFTdHJlYW0uaCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0xvY2F0aW9uLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0xvY2F0aW9uLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUNvbnRyb2xsZXIu
Y3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFDb250cm9sbGVyLmggXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUVycm9yLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU01lZGlhRXJyb3IuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlh
TGlzdC5jcHAgXApAQCAtMTg2Myw2ICsxODY1LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL0xpbmtSZWxBdHRyaWJ1dGUuaCBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFi
bGVUZXh0VHJhY2suaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RG9jdW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDA1ZjIxM2U2MmZmYmFhOTczZjY3MTlhMmIwZTJkMTZlMjA2YmUyYzEuLjdk
NGNkYWJmNGEwMTllNzBmMGM3MTE2NDcyOWI1MjNlNWU1NjY5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTEzMjksNiArMTMyOSw3IEBACiAgICAgICAgICAgICAnaHRtbC9IVE1MVW5rbm93bkVsZW1l
bnQuaWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsJywKICAgICAg
ICAgICAgICdodG1sL0ltYWdlRGF0YS5pZGwnLAorICAgICAgICAgICAgJ2h0bWwvTWVkaWFDb250
cm9sbGVyLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9NZWRpYUVycm9yLmlkbCcsCiAgICAgICAg
ICAgICAnaHRtbC9UZXh0TWV0cmljcy5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvVGV4dFRyYWNr
LmlkbCcsCkBAIC01NTc4LDYgKzU1NzksOCBAQAogICAgICAgICAgICAgJ2h0bWwvTGlua1JlbEF0
dHJpYnV0ZS5oJywKICAgICAgICAgICAgICdodG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCcsCiAg
ICAgICAgICAgICAnaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oJywKKyAgICAgICAgICAgICdodG1s
L01lZGlhQ29udHJvbGxlci5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvTWVkaWFDb250cm9sbGVy
LmgnLAogICAgICAgICAgICAgJ2h0bWwvTWVkaWFEb2N1bWVudC5jcHAnLAogICAgICAgICAgICAg
J2h0bWwvTWVkaWFEb2N1bWVudC5oJywKICAgICAgICAgICAgICdodG1sL01lZGlhRXJyb3IuaCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZjE4ZDljMmZhZGQ3NzRjZGVlODlmOGIzOTFjZGI1YWI2MTJiYzVmYy4uYzM0YzA2ZTkw
MDE5MjQ1NGUzNzY5YzZmYmI5MzQ3ZGU5ZjJmODdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTY5NSwxNyArNTY5NSwyMiBA
QAogCQlDRDBEQkZFRTE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1Qz
NDVfUDMxNS53YXYgaW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0QwREJFMEQxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVf
Q19SMDE5NV9UMzQ1X1AzMTUud2F2ICovOyB9OwogCQlDRDBEQkZFRjE0MjI3Njg1MDAyODAyNjMg
LyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXYgaW4gQ29weSBBdWRpbyBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwREJFMEUxNDIyNzU5
NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMzAud2F2ICovOyB9Owog
CQlDRDBEQkZGMDE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVf
UDM0NS53YXYgaW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QwREJFMEYxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19S
MDE5NV9UMzQ1X1AzNDUud2F2ICovOyB9OworCQlDRDI3RjZFNTE0NTc2ODVBMDA3ODIwN0QgLyog
SlNNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVy
LmNwcCAqLzsgfTsKKwkJQ0QyN0Y2RTcxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3
RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0Q4
MjAzMEExMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzA2MTM5
NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q4MjAzMEIxMzk1QUI2
QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwNzEzOTVBQjZBMDBGOTU2
QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSAqLzsgc2V0dGluZ3MgPSB7Q09N
UElMRVJfRkxBR1MgPSAiLVduby11bmRlZiI7IH07IH07CiAJCUNEODIwMzBDMTM5NUFCNkEwMEY5
NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwODEzOTVBQjZBMDBG
OTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEODIwMzBEMTM5NUFC
NkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAzMDkxMzk1
QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0g
Ki87IH07CiAJCUNEODIwMzEwMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBF
MTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAqLzsgfTsKIAkJQ0Q4MjAz
MTExMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBGMTM5NUFDRTcwMEY5NTZD
NiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi87IH07CisJCUNERDUyNUQ3MTQ1QjZERDAwMDhE
MjA0RCAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpT
SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCUNERUE3NjMwMTQ2MDhBNTMwMDhC
MzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xv
Y2tDQS5jcHAgKi87IH07CiAJCUNERUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBQbGF0Zm9ybUNs
b2NrUE9TSVguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RFQTc2MzIxNDYwQUUyOTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tQT1NJWC5jcHAgKi87
IH07CiAJCUNERUE3NjM1MTQ2MEI3MUEwMDhCMzFGMSAvKiBDbG9jay5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBNzYzMzE0NjBCNDYyMDA4QjMx
RjEgLyogQ2xvY2suY3BwICovOyB9OwogCQlDREVBN0M4NDEyNzYyMzA0MDBCODQ2REQgLyogUmVu
ZGVyRnVsbFNjcmVlbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFQTdDODIxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uaCAqLzsg
fTsKIAkJQ0RFQTdDODUxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTdDODMxMjc2
MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3BwICovOyB9OworCQlDREY2NUNDODE0
NUIxRTc1MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFNDE0NTc2Nzg3MDA3ODIwN0QgLyogTWVk
aWFDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQ0RGNjVDQ0ExNDVCNDQ4ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVy
ZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RG
NjVDQzkxNDVCNDNBNzAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMDJGMEM0MTFF
ODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwMkYwQzMxMUU4M0FERDAwQzY2ODRBIC8q
IFNjcmlwdENvbnRyb2xsZXJCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQ0UwNTdGQTUxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyLmNwcCAqLzsgfTsKIAkJQ0UwNTdGQTYxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
Mjk3OCw2ICsxMjk4MywxMSBAQAogCQlDRDBEQkUwRDE0MjI3NTk1MDAyODAyNjMgLyogSVJDX0Nv
bXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBJUkNfQ29tcG9zaXRlX0Nf
UjAxOTVfVDM0NV9QMzE1LndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9JUkNf
Q29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1Lndhdjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OwogCQlDRDBEQkUwRTE0MjI3NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1
X1QzNDVfUDMzMC53YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzMw
LndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9JUkNfQ29tcG9zaXRlX0NfUjAx
OTVfVDM0NV9QMzMwLndhdjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlDRDBEQkUw
RjE0MjI3NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXYg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53
YXY7IG5hbWUgPSBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzQ1LndhdjsgcGF0aCA9IHBs
YXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9JUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzQ1Lndh
djsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlDRDI3RjZFMDE0NTc1QzFCMDA3ODIw
N0QgLyogTWVkaWFDb250cm9sbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYUNvbnRyb2xsZXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDI3RjZFMjE0NTc2NzU4MDA3ODIwN0QgLyogSlNN
ZWRpYUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNNZWRpYUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDI3
RjZFMzE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0QyN0Y2RTQxNDU3Njc4NzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyN0Y2RTYxNDU3NzBEMzAwNzgyMDdEIC8q
IE1lZGlhQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNZWRpYUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDRF
MEFGQTExRjdCQzI3MDA5RDM4MTEgLyogZnVsbHNjcmVlbi5jc3MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNz
czsgcGF0aCA9IGZ1bGxzY3JlZW4uY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzA3MTM5NUFCNkEw
MEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTg2LDYgKzEyOTk2LDggQEAKIAkJ
Q0Q4MjAzMEUxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJXaW5kb3dBbmltYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4MjAzMEYxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRv
d0FuaW1hdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
YldpbmRvd0FuaW1hdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCRDkz
QkExMzMzQkQ0QjAwMjU3MEUzIC8qIGZ1bGxzY3JlZW5RdWlja1RpbWUuY3NzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzczsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RDRTVDQ0YxNDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50RmFjdG9yeS5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFdmVudEZhY3RvcnkuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQ0U1Q0QwMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudFRhcmdldEZh
Y3RvcnkuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXZlbnRUYXJnZXRGYWN0b3J5LmluOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBNzYyQzE0NjA4MjI0MDA4QjMxRjEgLyog
Q2xvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xvY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRm
b3JtQ2xvY2tDQS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0
Zm9ybUNsb2NrQ0EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBNzYyRjE0
NjA4NEVFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBsYXRmb3JtQ2xvY2tDQS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTI5OTQsNiArMTMwMDYsOCBAQAogCQlDREVBNzYzMzE0NjBCNDYyMDA4QjMxRjEgLyog
Q2xvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xvY2suY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBN0M4MjEyNzYyMzA0MDBCODQ2REQg
LyogUmVuZGVyRnVsbFNjcmVlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW5kZXJGdWxsU2NyZWVuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3Qzgz
MTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZ1bGxTY3JlZW4uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEgLyogTWVkaWFDb250cm9s
bGVySW50ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29u
dHJvbGxlckludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY2NUND
QzE0NUI2QUZFMDBDNEM3QUEgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDJGMEMzMTFFODNBREQwMEM2Njg0
QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JpcHRDb250cm9sbGVyQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDU3RkE0MTIyMDcz
MTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNzMzMiw2ICsxNzM0NiwxMCBAQAogCQkJCUU0NDYxM0EwMENE
NjMzMTAwMEZBREE3NSAvKiBWb2lkQ2FsbGJhY2suaWRsICovLAogCQkJCUY1NUIzREFCMTI1MUYx
MkQwMDNFRjI2OSAvKiBXZWVrSW5wdXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0RBQzEyNTFGMTJE
MDAzRUYyNjkgLyogV2Vla0lucHV0VHlwZS5oICovLAorCQkJCUNEMjdGNkUwMTQ1NzVDMUIwMDc4
MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaWRsICovLAorCQkJCUNEMjdGNkU0MTQ1NzY3ODcwMDc4
MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaCAqLywKKwkJCQlDRDI3RjZFNjE0NTc3MEQzMDA3ODIw
N0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCAqLywKKwkJCQlDREY2NUNDOTE0NUI0M0E3MDBDNEM3
QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGh0
bWw7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTc1NjUsNiArMTc1ODMsOCBAQAog
CQlBODNCNzkwODBDQ0FGRjJCMDAwQjA4MjUgLyogSFRNTCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8qIEpT
TWVkaWFDb250cm9sbGVyLmNwcCAqLywKKwkJCQlDRDI3RjZFMzE0NTc2NzU4MDA3ODIwN0QgLyog
SlNNZWRpYUNvbnRyb2xsZXIuaCAqLywKIAkJCQk0OUVFQ0VGMjEwNTA3MEM0MDAwOTlGQUIgLyog
SlNBcnJheUJ1ZmZlci5jcHAgKi8sCiAJCQkJNDlFRUNFRjMxMDUwNzBDNDAwMDk5RkFCIC8qIEpT
QXJyYXlCdWZmZXIuaCAqLywKIAkJCQk0OUVFQ0YxOTEwNTA3MkYzMDAwOTlGQUIgLyogSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwICovLApAQCAtMTk1NzYsNiArMTk1OTYsNyBAQAogCQkJCUJDQzQzODc3
MEU4ODZDQzcwMDUzM0RENSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJ
CUUxQUQxNDIyMTI5NUVBN0YwMEFDQTk4OSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uaCAq
LywKIAkJCQlFMUFEMTM5QTEyOTVEOTI2MDBBQ0E5ODkgLyogSlNIVE1MTGlua0VsZW1lbnRDdXN0
b20uY3BwICovLAorCQkJCUNERjY1Q0NDMTQ1QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVs
ZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDMzA1Q0EzMEMwNzgxQkIwMENEMjBGMCAvKiBKU0hU
TUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlFMUFEMTQyNDEyOTVFQTk1MDBBQ0E5
ODkgLyogSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5oICovLAogCQkJCTQ0OEFEMjdBMEE0ODEz
NzkwMDIzRDE3OSAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgKi8sCkBAIC0y
MDg4Myw2ICsyMDkwNCw4IEBACiAJCUY1MjNEMzI0MDJERTQ0NzgwMTg2MzVDQSAvKiBkb20gKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNEQ0U1Q0NGMTQ2
MzNCQzkwMEQ0N0NDQSAvKiBFdmVudEZhY3RvcnkuaW4gKi8sCisJCQkJQ0RDRTVDRDAxNDYzM0JD
OTAwRDQ3Q0NBIC8qIEV2ZW50VGFyZ2V0RmFjdG9yeS5pbiAqLywKIAkJCQlFMUM0REU2RDBFQTc1
QzY1MDAyM0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0LmNwcCAqLywKIAkJCQlFMUM0REU2ODBFQTc1
QzFFMDAyM0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0LmggKi8sCiAJCQkJQThDNEE3RkMwOUQ1NjMy
NzAwMDNBQzhEIC8qIEF0dHIuY3BwICovLApAQCAtMjQ1NjAsNiArMjQ1ODMsOCBAQAogCQkJCUZE
NjJGNTJFMTQ1ODk4RDgwMDk0QjBFRCAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDhGRUJERDE0M0UzRUY3MDA3MjUwMkIgLyogQ1NTQ3Jvc3NmYWRl
VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNjkzNzlDMTQ2MDlDNkMwMEMwMTM2MiAvKiBE
cmFnU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RGNjVDQzgxNDVCMUU3NTAwQzRDN0FB
IC8qIE1lZGlhQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RGNjVDQ0ExNDVCNDQ4
ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0yNzQwNyw2ICsyNzQzMiw5IEBACiAJCQkJQTNCQjU5RjMxNDU3QTQwRDAwQUM1NkZFIC8qIERv
Y3VtZW50RXZlbnRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDhGRUJEQzE0M0UzRUY3
MDA3MjUwMkIgLyogQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RF
QTc2MzAxNDYwOEE1MzAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlDRDI3RjZFNTE0NTc2ODVBMDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQ0QyN0Y2RTcxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29u
dHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREQ1MjVENzE0NUI2REQwMDA4RDIwNEQg
LyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERUE3
NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrUE9TSVguY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0RFQTc2MzUxNDYwQjcxQTAwOEIzMUYxIC8qIENsb2NrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5ZWU2ZWZiMmY3MmExNjRkMTgw
NjcxYjVlODk1Y2ZlZjZjZmEyZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwCkBAIC0wLDAgKzEsNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiSlNIVE1MTWVkaWFFbGVt
ZW50LmgiCisKKyNpbmNsdWRlICJKU01lZGlhQ29udHJvbGxlci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK3ZvaWQgSlNIVE1MTWVkaWFFbGVtZW50
OjpzZXRNZWRpYUNvbnRyb2xsZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBI
VE1MTWVkaWFFbGVtZW50KiBpbXAgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4oaW1w
bCgpKTsKKyAgICAvLyBPbiBzZXR0aW5nLCBpdCBtdXN0IGZpcnN0IHJlbW92ZSB0aGUgZWxlbWVu
dCdzIG1lZGlhZ3JvdXAgYXR0cmlidXRlLCBpZiBhbnksIAorICAgIGltcC0+c2V0TWVkaWFHcm91
cChTdHJpbmcoKSk7CisgICAgLy8gYW5kIHRoZW4gc2V0IHRoZSBjdXJyZW50IG1lZGlhIGNvbnRy
b2xsZXIgdG8gdGhlIGdpdmVuIHZhbHVlLgorICAgIGltcC0+c2V0TWVkaWFDb250cm9sbGVyKHRv
TWVkaWFDb250cm9sbGVyKHZhbHVlKSk7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuaAppbmRleCBjNmYxZjNkNDQzYjg1YjZmNjQyMGNlZWM5NGJlZmIyMjc4NjJkNDQ2Li5i
YWYwZWZjODlkNGFkZWFhYjMxYzcyMzMwZjhkMTVkZTE5ZDk4OGUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuaApAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q7CiAgICAgY2xhc3MgSmF2YVNjcmlwdEF1ZGlvTm9k
ZTsKICAgICBjbGFzcyBMb2NhbE1lZGlhU3RyZWFtOworICAgIGNsYXNzIE1lZGlhQ29udHJvbGxl
cjsKICAgICBjbGFzcyBNZWRpYVN0cmVhbTsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBj
bGFzcyBOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFj
dG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXgg
NmJkYjJlMjFjYTk2YjNlMTBkM2JlMWM3MWVmNzMwZDI3ZjAwZDkxZC4uMmEzODkwMzU3YmFmOWU5
NjZhN2YxMzcxNGQ2MTBlZjdkZTEwODRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXRGYWN0b3J5LmluCkBAIC0xMyw2ICsxMyw3IEBAIElEQlRyYW5zYWN0aW9uIGNvbmRpdGlvbmFs
PUlOREVYRURfREFUQUJBU0UKIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IGNvbmRpdGlvbmFsPUlO
REVYRURfREFUQUJBU0UKIEphdmFTY3JpcHRBdWRpb05vZGUgY29uZGl0aW9uYWw9V0VCX0FVRElP
CiBMb2NhbE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorTWVkaWFDb250cm9s
bGVyIGNvbmRpdGlvbmFsPVZJREVPCiBNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJF
QU0KIE1lc3NhZ2VQb3J0CiBOb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5h
bWVzLmluCmluZGV4IGYxZTM1NGI2MzFmNDliYTNhYzEwMWU1NTEzZDI3NWFjNWQyZDA5ODIuLmFl
NWZiNzFjZWVlODY0MDk4MzZmZTJkNTAxZWMzZmE5OTBiYTM3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBAIC0xNDgsNiArMTQ4LDcgQEAgbWF4CiBtYXhs
ZW5ndGgKIG1heXNjcmlwdAogbWVkaWEKK21lZGlhZ3JvdXAKIG1ldGhvZAogbWluCiBtdWx0aXBs
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYzkwNjVmNjkx
YTljMGNhZTllNmVmNjQzMmI4MTdjZmMyYmQ3OTcwZi4uMTg0NDA1NGE2NDkwMTdiYjFkZjU5YjMw
ZmExNDU5Nzk4NWIyNGFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiSFRNTFNvdXJjZUVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgIk1lZGlhQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKICNpbmNs
dWRlICJNZWRpYURvY3VtZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFFcnJvci5oIgpAQCAtMjI4LDYg
KzIyOSw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLnNpemUoKTsgKytpKQogICAgICAgICBt
X3RleHRUcmFja3NbaV0tPnNldENsaWVudCgwKTsKICNlbmRpZgorCisgICAgaWYgKG1fbWVkaWFD
b250cm9sbGVyKQorICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+cmVtb3ZlTWVkaWFFbGVtZW50
KHRoaXMpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KCkKQEAgLTI5NCw3ICsyOTgsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgaWYgKCFhdXRvcGxheSgp
ICYmIG1fcGxheWVyKQogICAgICAgICAgICAgbV9wbGF5ZXItPnNldFByZWxvYWQobV9wcmVsb2Fk
KTsKIAotICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25hYm9ydEF0dHIpCisgICAgfSBlbHNl
IGlmIChhdHRyTmFtZSA9PSBtZWRpYWdyb3VwQXR0cikKKyAgICAgICAgc2V0TWVkaWFHcm91cChh
dHRyLT52YWx1ZSgpKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmFib3J0QXR0cikKICAg
ICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYWJvcnRFdmVudCwg
Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAo
YXR0ck5hbWUgPT0gb25iZWZvcmVsb2FkQXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKQEAgLTU4NCwxMCArNTkwLDExIEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQoKQogICAgICAgICBtX3NlZWtpbmcgPSBmYWxzZTsK
ICAgICAgICAgaW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChl
dmVudE5hbWVzKCkuZW1wdGllZEV2ZW50KTsKKyAgICAgICAgdXBkYXRlTWVkaWFDb250cm9sbGVy
KCk7CiAgICAgfQogCiAgICAgLy8gNSAtIFNldCB0aGUgcGxheWJhY2tSYXRlIGF0dHJpYnV0ZSB0
byB0aGUgdmFsdWUgb2YgdGhlIGRlZmF1bHRQbGF5YmFja1JhdGUgYXR0cmlidXRlLgotICAgIHNl
dFBsYXliYWNrUmF0ZShkZWZhdWx0UGxheWJhY2tSYXRlKCkpOworICAgIHNldFBsYXliYWNrUmF0
ZShtX21lZGlhQ29udHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5kZWZhdWx0UGxheWJhY2tS
YXRlKCkgOiBkZWZhdWx0UGxheWJhY2tSYXRlKCkpOwogCiAgICAgLy8gNiAtIFNldCB0aGUgZXJy
b3IgYXR0cmlidXRlIHRvIG51bGwgYW5kIHRoZSBhdXRvcGxheWluZyBmbGFnIHRvIHRydWUuCiAg
ICAgbV9lcnJvciA9IDA7CkBAIC0xMjI0LDYgKzEyMzEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCiAgICAgfQog
CiAgICAgdXBkYXRlUGxheVN0YXRlKCk7CisgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiB9
CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQpAQCAtMTUyMyw2ICsxNTMxLDEwIEBAIGZsb2F0
IEhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzZXRDdXJyZW50VGltZShmbG9hdCB0aW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
KyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBzZWVrKHRpbWUsIGVjKTsKIH0KIApA
QCAtMTU3Myw4ICsxNTg1LDE2IEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrUmF0
ZSgpIGNvbnN0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKGZsb2F0
IHJhdGUpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tS
YXRlKCVmKSIsIHJhdGUpOworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgc2V0UGxheWJhY2tSYXRlSW50ZXJuYWwocmF0ZSk7Cit9CiAKK3ZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlSW50ZXJuYWwoZmxvYXQgcmF0ZSkKK3sKKyAg
ICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGVJbnRlcm5hbCgl
ZikiLCByYXRlKTsKKyAgICAKICAgICBpZiAobV9wbGF5YmFja1JhdGUgIT0gcmF0ZSkgewogICAg
ICAgICBtX3BsYXliYWNrUmF0ZSA9IHJhdGU7CiAgICAgICAgIGludmFsaWRhdGVDYWNoZWRUaW1l
KCk7CkBAIC0xNjc2LDcgKzE2OTYsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50
ZXJuYWwoKQogICAgICAgICBFeGNlcHRpb25Db2RlIHVudXNlZDsKICAgICAgICAgc2VlaygwLCB1
bnVzZWQpOwogICAgIH0KLSAgICAKKworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKKyAgICAg
ICAgbV9tZWRpYUNvbnRyb2xsZXItPmJyaW5nRWxlbWVudFVwVG9TcGVlZCh0aGlzKTsKKwogICAg
IGlmIChtX3BhdXNlZCkgewogICAgICAgICBtX3BhdXNlZCA9IGZhbHNlOwogICAgICAgICBpbnZh
bGlkYXRlQ2FjaGVkVGltZSgpOwpAQCAtMTY5MCw2ICsxNzEzLDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpwbGF5SW50ZXJuYWwoKQogICAgIG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKIAogICAg
IHVwZGF0ZVBsYXlTdGF0ZSgpOworICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOwogfQogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlKCkKQEAgLTE4ODEsNyArMTkwNSw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6dG9nZ2xlUGxheVN0YXRlKCkKICAgICAvLyBXZSBjYW4gc2FmZWx5
IGNhbGwgdGhlIGludGVybmFsIHBsYXkvcGF1c2UgbWV0aG9kcywgd2hpY2ggZG9uJ3QgY2hlY2sg
cmVzdHJpY3Rpb25zLCBiZWNhdXNlCiAgICAgLy8gdGhpcyBtZXRob2QgaXMgb25seSBjYWxsZWQg
ZnJvbSB0aGUgYnVpbHQtaW4gbWVkaWEgY29udHJvbGxlcgogICAgIGlmIChjYW5QbGF5KCkpIHsK
LSAgICAgICAgc2V0UGxheWJhY2tSYXRlKGRlZmF1bHRQbGF5YmFja1JhdGUoKSk7CisgICAgICAg
IHNldFBsYXliYWNrUmF0ZShtX21lZGlhQ29udHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5k
ZWZhdWx0UGxheWJhY2tSYXRlKCkgOiBkZWZhdWx0UGxheWJhY2tSYXRlKCkpOwogICAgICAgICBw
bGF5SW50ZXJuYWwoKTsKICAgICB9IGVsc2UgCiAgICAgICAgIHBhdXNlSW50ZXJuYWwoKTsKQEAg
LTIyMjksMTkgKzIyNTMsMzUgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRp
bWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKIAogICAgIGZsb2F0IG5vdyA9IGN1cnJlbnRUaW1lKCk7
CiAgICAgZmxvYXQgZHVyID0gZHVyYXRpb24oKTsKLSAgICBpZiAoIWlzbmFuKGR1cikgJiYgZHVy
ICYmIG5vdyA+PSBkdXIpIHsKLSAgICAgICAgaWYgKGxvb3AoKSkgeworICAgIAorICAgIC8vIFdo
ZW4gdGhlIGN1cnJlbnQgcGxheWJhY2sgcG9zaXRpb24gcmVhY2hlcyB0aGUgZW5kIG9mIHRoZSBt
ZWRpYSByZXNvdXJjZSB3aGVuIHRoZSBkaXJlY3Rpb24gb2YKKyAgICAvLyBwbGF5YmFjayBpcyBm
b3J3YXJkcywgdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0IGZvbGxvdyB0aGVzZSBzdGVwczoKKyAg
ICBpZiAoIWlzbmFuKGR1cikgJiYgZHVyICYmIG5vdyA+PSBkdXIgJiYgbV9wbGF5YmFja1JhdGUg
PiAwKSB7CisgICAgICAgIC8vIElmIHRoZSBtZWRpYSBlbGVtZW50IGhhcyBhIGxvb3AgYXR0cmli
dXRlIHNwZWNpZmllZCBhbmQgZG9lcyBub3QgaGF2ZSBhIGN1cnJlbnQgbWVkaWEgY29udHJvbGxl
ciwKKyAgICAgICAgaWYgKGxvb3AoKSAmJiAhbV9tZWRpYUNvbnRyb2xsZXIpIHsKICAgICAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbjsKICAgICAgICAgICAgIG1fc2VudEVu
ZEV2ZW50ID0gZmFsc2U7CisgICAgICAgICAgICAvLyAgdGhlbiBzZWVrIHRvIHRoZSBlYXJsaWVz
dCBwb3NzaWJsZSBwb3NpdGlvbiBvZiB0aGUgbWVkaWEgcmVzb3VyY2UgYW5kIGFib3J0IHRoZXNl
IHN0ZXBzLgogICAgICAgICAgICAgc2VlaygwLCBpZ25vcmVkRXhjZXB0aW9uKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIGlmICghbV9wYXVzZWQpIHsKKyAgICAgICAgICAgIC8vIElm
IHRoZSBtZWRpYSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBjdXJyZW50IG1lZGlhIGNvbnRyb2xs
ZXIsIGFuZCB0aGUgbWVkaWEgZWxlbWVudAorICAgICAgICAgICAgLy8gaGFzIHN0aWxsIGVuZGVk
IHBsYXliYWNrLCBhbmQgdGhlIGRpcmVjdGlvbiBvZiBwbGF5YmFjayBpcyBzdGlsbCBmb3J3YXJk
cywgYW5kIHBhdXNlZAorICAgICAgICAgICAgLy8gaXMgZmFsc2UsCisgICAgICAgICAgICBpZiAo
IW1fbWVkaWFDb250cm9sbGVyICYmICFtX3BhdXNlZCkgeworICAgICAgICAgICAgICAgIC8vIGNo
YW5nZXMgcGF1c2VkIHRvIHRydWUgYW5kIGZpcmVzIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHBhdXNl
IGF0IHRoZSBtZWRpYSBlbGVtZW50LgogICAgICAgICAgICAgICAgIG1fcGF1c2VkID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsK
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2lt
cGxlIGV2ZW50IG5hbWVkIGVuZGVkIGF0IHRoZSBtZWRpYSBlbGVtZW50LgogICAgICAgICAgICAg
aWYgKCFtX3NlbnRFbmRFdmVudCkgewogICAgICAgICAgICAgICAgIG1fc2VudEVuZEV2ZW50ID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5lbmRlZEV2
ZW50KTsKKyAgICAgICAgICAgICAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC8vIElmIHRoZSBtZWRpYSBlbGVtZW50IGhhcyBhIGN1cnJlbnQg
bWVkaWEgY29udHJvbGxlciwgCisgICAgICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpIHsK
KyAgICAgICAgICAgICAgICAvLyB0aGVuIHJlcG9ydCB0aGUgY29udHJvbGxlciBzdGF0ZSBmb3Ig
dGhlIG1lZGlhIGVsZW1lbnQncyBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIuCisgICAgICAgICAg
ICAgICAgbV9tZWRpYUNvbnRyb2xsZXItPnJlcG9ydENvbnRyb2xsZXJTdGF0ZSgpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjQyNiwxMCArMjQ2Niw3IEBAIFBhc3NSZWZQ
dHI8VGltZVJhbmdlcz4gSFRNTE1lZGlhRWxlbWVudDo6cGxheWVkKCkKIAogUGFzc1JlZlB0cjxU
aW1lUmFuZ2VzPiBIVE1MTWVkaWFFbGVtZW50OjpzZWVrYWJsZSgpIGNvbnN0CiB7Ci0gICAgLy8g
RklYTUUgcmVhbCByYW5nZXMgc3VwcG9ydAotICAgIGlmICghbWF4VGltZVNlZWthYmxlKCkpCi0g
ICAgICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gVGltZVJhbmdl
czo6Y3JlYXRlKG1pblRpbWVTZWVrYWJsZSgpLCBtYXhUaW1lU2Vla2FibGUoKSk7CisgICAgcmV0
dXJuIG1fcGxheWVyID8gbV9wbGF5ZXItPnNlZWthYmxlKCkgOiBUaW1lUmFuZ2VzOjpjcmVhdGUo
KTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpwb3RlbnRpYWxseVBsYXlpbmcoKSBjb25z
dApAQCAtMjQzOCw3ICsyNDc1LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpwb3RlbnRpYWxs
eVBsYXlpbmcoKSBjb25zdAogICAgIC8vIHdoZW4gaXQgcmFuIG91dCBvZiBidWZmZXJlZCBkYXRh
LiBBIG1vdmllIGlzIHRoaXMgc3RhdGUgaXMgInBvdGVudGlhbGx5IHBsYXlpbmciLCBtb2R1bG8g
dGhlCiAgICAgLy8gY2hlY2tzIGluIGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpLgogICAgIGJvb2wg
cGF1c2VkVG9CdWZmZXIgPSBtX3JlYWR5U3RhdGVNYXhpbXVtID49IEhBVkVfRlVUVVJFX0RBVEEg
JiYgbV9yZWFkeVN0YXRlIDwgSEFWRV9GVVRVUkVfREFUQTsKLSAgICByZXR1cm4gKHBhdXNlZFRv
QnVmZmVyIHx8IG1fcmVhZHlTdGF0ZSA+PSBIQVZFX0ZVVFVSRV9EQVRBKSAmJiBjb3VsZFBsYXlJ
ZkVub3VnaERhdGEoKTsKKyAgICByZXR1cm4gKHBhdXNlZFRvQnVmZmVyIHx8IG1fcmVhZHlTdGF0
ZSA+PSBIQVZFX0ZVVFVSRV9EQVRBKSAmJiBjb3VsZFBsYXlJZkVub3VnaERhdGEoKSAmJiAhaXNC
bG9ja2VkT25NZWRpYUNvbnRyb2xsZXIoKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpj
b3VsZFBsYXlJZkVub3VnaERhdGEoKSBjb25zdApAQCAtMjQ2MCwxMCArMjQ5NywxMSBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OmVuZGVkUGxheWJhY2soKSBjb25zdAogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAvLyBhbmQgdGhlIGN1cnJlbnQgcGxheWJhY2sgcG9zaXRpb24gaXMgdGhl
IGVuZCBvZiB0aGUgbWVkaWEgcmVzb3VyY2UgYW5kIHRoZSBkaXJlY3Rpb24KLSAgICAvLyBvZiBw
bGF5YmFjayBpcyBmb3J3YXJkcyBhbmQgdGhlIG1lZGlhIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBh
IGxvb3AgYXR0cmlidXRlIHNwZWNpZmllZCwKKyAgICAvLyBvZiBwbGF5YmFjayBpcyBmb3J3YXJk
cywgRWl0aGVyIHRoZSBtZWRpYSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBsb29wIGF0dHJpYnV0
ZSBzcGVjaWZpZWQsCisgICAgLy8gb3IgdGhlIG1lZGlhIGVsZW1lbnQgaGFzIGEgY3VycmVudCBt
ZWRpYSBjb250cm9sbGVyLgogICAgIGZsb2F0IG5vdyA9IGN1cnJlbnRUaW1lKCk7CiAgICAgaWYg
KG1fcGxheWJhY2tSYXRlID4gMCkKLSAgICAgICAgcmV0dXJuIGR1ciA+IDAgJiYgbm93ID49IGR1
ciAmJiAhbG9vcCgpOworICAgICAgICByZXR1cm4gZHVyID4gMCAmJiBub3cgPj0gZHVyICYmICgh
bG9vcCgpIHx8IG1fbWVkaWFDb250cm9sbGVyKTsKIAogICAgIC8vIG9yIHRoZSBjdXJyZW50IHBs
YXliYWNrIHBvc2l0aW9uIGlzIHRoZSBlYXJsaWVzdCBwb3NzaWJsZSBwb3NpdGlvbiBhbmQgdGhl
IGRpcmVjdGlvbiAKICAgICAvLyBvZiBwbGF5YmFjayBpcyBiYWNrd2FyZHMKQEAgLTI1MDksOCAr
MjU0NywxNCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSgpCiAgICAgaWYg
KCFwcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpKSB7CiAgICAgICAgIFBhZ2UqIHBhZ2Ug
PSBkb2N1bWVudCgpLT5wYWdlKCk7CiAgICAgICAgIGZsb2F0IHZvbHVtZU11bHRpcGxpZXIgPSBw
YWdlID8gcGFnZS0+bWVkaWFWb2x1bWUoKSA6IDE7Ci0gICAgCi0gICAgICAgIG1fcGxheWVyLT5z
ZXRNdXRlZChtX211dGVkKTsKKyAgICAgICAgYm9vbCBzaG91bGRNdXRlID0gbV9tdXRlZDsKKwor
ICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIHZvbHVtZU11bHRp
cGxpZXIgKj0gbV9tZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgpOworICAgICAgICAgICAgc2hvdWxk
TXV0ZSA9IG1fbWVkaWFDb250cm9sbGVyLT5tdXRlZCgpOworICAgICAgICB9CisKKyAgICAgICAg
bV9wbGF5ZXItPnNldE11dGVkKHNob3VsZE11dGUpOwogICAgICAgICBtX3BsYXllci0+c2V0Vm9s
dW1lKG1fdm9sdW1lICogdm9sdW1lTXVsdGlwbGllcik7CiAgICAgfQogCkBAIC0yNTc3LDExICsy
NjIxLDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0YXRlKCkKICAgICAg
ICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKICAgICAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+
cGxheWJhY2tTdG9wcGVkKCk7CiAgICAgfQotICAgIAorCisgICAgdXBkYXRlTWVkaWFDb250cm9s
bGVyKCk7CisKICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRl
RnJvbUVsZW1lbnQoKTsKIH0KLSAgICAKKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQYXVz
ZWRJbnRlcm5hbChib29sIGIpCiB7CiAgICAgbV9wYXVzZWRJbnRlcm5hbCA9IGI7CkBAIC0yNjQx
LDYgKzI2ODcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKCkK
IAogICAgIC8vIFJlc2V0IG1fcmVhZHlTdGF0ZSBzaW5jZSBtX3BsYXllciBpcyBnb25lLgogICAg
IG1fcmVhZHlTdGF0ZSA9IEhBVkVfTk9USElORzsKKyAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIo
KTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpjYW5TdXNwZW5kKCkgY29uc3QKQEAgLTMx
MzMsNiArMzE4MCw3MiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEl0ZW1WYWx1ZVRleHQo
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB9CiAjZW5kaWYKIAorY29u
c3QgU3RyaW5nJiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUdyb3VwKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9tZWRpYUNvbnRyb2xsZXIgPyBtX21lZGlhQ29udHJvbGxlci0+bWVkaWFHcm91cCgp
IDogZW1wdHlTdHJpbmcoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUdy
b3VwKGNvbnN0IFN0cmluZyYgZ3JvdXApCit7CisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyICYm
IG1fbWVkaWFDb250cm9sbGVyLT5tZWRpYUdyb3VwKCkgPT0gZ3JvdXApCisgICAgICAgIHJldHVy
bjsKKworICAgIHNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXI6Om1lZGlhQ29udHJv
bGxlckZvck1lZGlhR3JvdXAoZ3JvdXApKTsKK30KKworTWVkaWFDb250cm9sbGVyKiBIVE1MTWVk
aWFFbGVtZW50OjptZWRpYUNvbnRyb2xsZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlh
Q29udHJvbGxlci5nZXQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNv
bnRyb2xsZXIoUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IGNvbnRyb2xsZXIpCit7CisgICAg
aWYgKG1fbWVkaWFDb250cm9sbGVyKQorICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+cmVtb3Zl
TWVkaWFFbGVtZW50KHRoaXMpOworCisgICAgbV9tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVy
OworCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQorICAgICAgICBtX21lZGlhQ29udHJvbGxl
ci0+YWRkTWVkaWFFbGVtZW50KHRoaXMpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVw
ZGF0ZU1lZGlhQ29udHJvbGxlcigpCit7CisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQorICAg
ICAgICBtX21lZGlhQ29udHJvbGxlci0+cmVwb3J0Q29udHJvbGxlclN0YXRlKCk7Cit9CisKK2Jv
b2wgSFRNTE1lZGlhRWxlbWVudDo6aXNCbG9ja2VkKCkgY29uc3QKK3sKKyAgICAvLyBBIG1lZGlh
IGVsZW1lbnQgaXMgYSBibG9ja2VkIG1lZGlhIGVsZW1lbnQgaWYgaXRzIHJlYWR5U3RhdGUgYXR0
cmlidXRlIGlzIGluIHRoZQorICAgIC8vIEhBVkVfTk9USElORyBzdGF0ZSwgdGhlIEhBVkVfTUVU
QURBVEEgc3RhdGUsIG9yIHRoZSBIQVZFX0NVUlJFTlRfREFUQSBzdGF0ZSwKKyAgICBpZiAobV9y
ZWFkeVN0YXRlIDw9IEhBVkVfQ1VSUkVOVF9EQVRBKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIC8vIG9yIGlmIHRoZSBlbGVtZW50IGhhcyBwYXVzZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24u
CisgICAgcmV0dXJuIHBhdXNlZEZvclVzZXJJbnRlcmFjdGlvbigpOworfQorCitib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6OmlzQmxvY2tlZE9uTWVkaWFDb250cm9sbGVyKCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fbWVkaWFDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBB
IG1lZGlhIGVsZW1lbnQgaXMgYmxvY2tlZCBvbiBpdHMgbWVkaWEgY29udHJvbGxlciBpZiB0aGUg
TWVkaWFDb250cm9sbGVyIGlzIGEgYmxvY2tlZCAKKyAgICAvLyBtZWRpYSBjb250cm9sbGVyLAor
ICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aXNCbG9ja2VkKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgLy8gb3IgaWYgaXRzIG1lZGlhIGNvbnRyb2xsZXIgcG9zaXRpb24gaXMgZWl0
aGVyIGJlZm9yZSB0aGUgbWVkaWEgcmVzb3VyY2UncyBlYXJsaWVzdCBwb3NzaWJsZSAKKyAgICAv
LyBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgTWVkaWFDb250cm9sbGVyJ3MgdGltZWxpbmUgb3Ig
YWZ0ZXIgdGhlIGVuZCBvZiB0aGUgbWVkaWEgcmVzb3VyY2UgCisgICAgLy8gcmVsYXRpdmUgdG8g
dGhlIE1lZGlhQ29udHJvbGxlcidzIHRpbWVsaW5lLgorICAgIGZsb2F0IG1lZGlhQ29udHJvbGxl
clBvc2l0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CisgICAgaWYgKG1l
ZGlhQ29udHJvbGxlclBvc2l0aW9uIDwgc3RhcnRUaW1lKCkgfHwgbWVkaWFDb250cm9sbGVyUG9z
aXRpb24gPiBzdGFydFRpbWUoKSArIGR1cmF0aW9uKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAppbmRleCAwZDJmOWZjNDllMTAwY2I1MTdiZWYwZDE1MGFjNGY3N2E1
NzVlOWVjLi5mODA5ZTZlZTdmOTkwNzViYjIxMDczY2Y3ZGU2Y2E0YmJkOWY0NTlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVySW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKIAogI2lmIEVOQUJMRShQTFVHSU5f
UFJPWFlfRk9SX1ZJREVPKQpAQCAtNTAsNiArNTEsNyBAQCBjbGFzcyBNZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGU7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEhUTUxTb3VyY2VFbGVtZW50OwogY2xh
c3MgSFRNTFRyYWNrRWxlbWVudDsKK2NsYXNzIE1lZGlhQ29udHJvbGxlcjsKIGNsYXNzIE1lZGlh
Q29udHJvbHM7CiBjbGFzcyBNZWRpYUVycm9yOwogY2xhc3MgS1VSTDsKQEAgLTYzLDcgKzY1LDcg
QEAgY2xhc3MgV2lkZ2V0OwogLy8gQnV0IGl0IGNhbid0IGJlIHVudGlsIHRoZSBDaHJvbWl1bSBX
ZWJNZWRpYVBsYXllckNsaWVudEltcGwgY2xhc3MgaXMgZml4ZWQgc28gaXQKIC8vIG5vIGxvbmdl
ciBkZXBlbmRzIG9uIHR5cGVjYXN0aW5nIGEgTWVkaWFQbGF5ZXJDbGllbnQgdG8gYW4gSFRNTE1l
ZGlhRWxlbWVudC4KIAotY2xhc3MgSFRNTE1lZGlhRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVu
dCwgcHVibGljIE1lZGlhUGxheWVyQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ciwgcHVibGljIEFjdGl2ZURPTU9iamVjdAorY2xhc3MgSFRNTE1lZGlhRWxlbWVudCA6IHB1Ymxp
YyBIVE1MRWxlbWVudCwgcHVibGljIE1lZGlhUGxheWVyQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIE1lZGlhQ29udHJv
bGxlckludGVyZmFjZQogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICAsIHByaXZhdGUgVGV4
dFRyYWNrQ2xpZW50CiAjZW5kaWYKQEAgLTEwNSw3ICsxMDcsNyBAQCBwdWJsaWM6CiAKICAgICBl
bnVtIE5ldHdvcmtTdGF0ZSB7IE5FVFdPUktfRU1QVFksIE5FVFdPUktfSURMRSwgTkVUV09SS19M
T0FESU5HLCBORVRXT1JLX05PX1NPVVJDRSB9OwogICAgIE5ldHdvcmtTdGF0ZSBuZXR3b3JrU3Rh
dGUoKSBjb25zdDsKLSAgICAKKwogICAgIFN0cmluZyBwcmVsb2FkKCkgY29uc3Q7ICAgIAogICAg
IHZvaWQgc2V0UHJlbG9hZChjb25zdCBTdHJpbmcmKTsKIApAQCAtMTE0LDcgKzExNiw2IEBAIHB1
YmxpYzoKICAgICBTdHJpbmcgY2FuUGxheVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29u
c3Q7CiAKIC8vIHJlYWR5IHN0YXRlCi0gICAgZW51bSBSZWFkeVN0YXRlIHsgSEFWRV9OT1RISU5H
LCBIQVZFX01FVEFEQVRBLCBIQVZFX0NVUlJFTlRfREFUQSwgSEFWRV9GVVRVUkVfREFUQSwgSEFW
RV9FTk9VR0hfREFUQSB9OwogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwogICAg
IGJvb2wgc2Vla2luZygpIGNvbnN0OwogCkBAIC0yMzAsNiArMjMxLDEyIEBAIHB1YmxpYzoKICAg
ICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCk7CiAjZW5kaWYKIAor
ICAgIGNvbnN0IFN0cmluZyYgbWVkaWFHcm91cCgpIGNvbnN0OworICAgIHZvaWQgc2V0TWVkaWFH
cm91cChjb25zdCBTdHJpbmcmKTsKKworICAgIE1lZGlhQ29udHJvbGxlciogbWVkaWFDb250cm9s
bGVyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNZWRpYUNvbnRyb2xsZXIoUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xsZXI+KTsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxNZWRpYUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+SFRNTE1lZGlhRWxlbWVu
dCgpOwpAQCAtMzk0LDYgKzQwMSw4IEBAIHByaXZhdGU6CiAgICAgLy8gUGF1c2VzIHBsYXliYWNr
IHdpdGhvdXQgY2hhbmdpbmcgYW55IHN0YXRlcyBvciBnZW5lcmF0aW5nIGV2ZW50cwogICAgIHZv
aWQgc2V0UGF1c2VkSW50ZXJuYWwoYm9vbCk7CiAKKyAgICB2b2lkIHNldFBsYXliYWNrUmF0ZUlu
dGVybmFsKGZsb2F0KTsKKwogICAgIHZpcnR1YWwgdm9pZCBtZWRpYUNhblN0YXJ0KCk7CiAKICAg
ICB2b2lkIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KGJvb2wpOwpAQCAtNDEyLDYgKzQyMSwxMiBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRJdGVtVmFsdWVUZXh0KGNvbnN0IFN0cmlu
ZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgogCisgICAgdm9pZCB1cGRhdGVNZWRpYUNvbnRy
b2xsZXIoKTsKKyAgICBib29sIGlzQmxvY2tlZCgpIGNvbnN0OworICAgIGJvb2wgaXNCbG9ja2Vk
T25NZWRpYUNvbnRyb2xsZXIoKSBjb25zdDsKKyAgICBib29sIGhhc1NvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmV0d29ya1N0YXRlICE9IE5FVFdPUktfRU1QVFkgfHwgbV9uZXR3b3JrU3RhdGUg
IT0gTkVUV09SS19OT19TT1VSQ0U7IH0KKyAgICBib29sIGlzTGl2ZVN0cmVhbSgpIGNvbnN0IHsg
cmV0dXJuIG1vdmllTG9hZFR5cGUoKSA9PSBNZWRpYVBsYXllcjo6TGl2ZVN0cmVhbTsgfQorCiAg
ICAgVGltZXI8SFRNTE1lZGlhRWxlbWVudD4gbV9sb2FkVGltZXI7CiAgICAgVGltZXI8SFRNTE1l
ZGlhRWxlbWVudD4gbV9hc3luY0V2ZW50VGltZXI7CiAgICAgVGltZXI8SFRNTE1lZGlhRWxlbWVu
dD4gbV9wcm9ncmVzc0V2ZW50VGltZXI7CkBAIC01MTYsNiArNTMxLDkgQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gbV90
ZXh0VHJhY2tzOwogI2VuZGlmCisKKyAgICBmcmllbmQgY2xhc3MgTWVkaWFDb250cm9sbGVyOwor
ICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IG1fbWVkaWFDb250cm9sbGVyOwogfTsKIAogfSAv
L25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKaW5kZXgg
MzMwYWRiYWFkZTcxMDI2OWMyZjJkZTVlZWM1Y2MxZTE2MmIwYzliNS4uNDkyMTBiNjIwMjcyMzcx
ZTQ1YWFiOWZhYjE5MWJmNjEwMDQzY2U2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaWRsCkBAIC0xMTQsNSArMTE0LDggQEAgbW9kdWxlIGh0bWwgewogI2lmIGRlZmlu
ZWQoRU5BQkxFX1ZJREVPX1RSQUNLKSAmJiBFTkFCTEVfVklERU9fVFJBQ0sKICAgICBbRW5hYmxl
ZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBUZXh0VHJhY2sgYWRkVHJhY2soaW4gRE9NU3Ry
aW5nIGtpbmQsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIGxhYmVsLCBpbiBbT3B0aW9uYWxdIERP
TVN0cmluZyBsYW5ndWFnZSk7CiAjZW5kaWYKKworICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCwgQ29u
dmVydE51bGxUb051bGxTdHJpbmcsIENvbnZlcnROdWxsU3RyaW5nVG9OdWxsXSBET01TdHJpbmcg
bWVkaWFHcm91cDsKKyAgICBhdHRyaWJ1dGUgW0N1c3RvbVNldHRlcl0gTWVkaWFDb250cm9sbGVy
IG1lZGlhQ29udHJvbGxlcjsKIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzljZjQ5N2MwZGRiZTc0YzA4ZTRlMDYzYjdhZmEyMzhjZmViNTNh
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVy
LmNwcApAQCAtMCwwICsxLDU4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXIuaCIKKworI2luY2x1
ZGUgIkNsb2NrLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIlRp
bWVSYW5nZXMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbWljU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcg
bmFtZXNwYWNlIHN0ZDsKKwordHlwZWRlZiBIYXNoTWFwPFN0cmluZywgTWVkaWFDb250cm9sbGVy
Kj4gR3JvdXBDb250cm9sbGVyTWFwOworc3RhdGljIEdyb3VwQ29udHJvbGxlck1hcCYgbWVkaWFH
cm91cFRvTWVkaWFDb250cm9sbGVyTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEdy
b3VwQ29udHJvbGxlck1hcCwgbWFwLCAoKSk7CisgICAgcmV0dXJuIG1hcDsKK30KKworUGFzc1Jl
ZlB0cjxNZWRpYUNvbnRyb2xsZXI+IE1lZGlhQ29udHJvbGxlcjo6bWVkaWFDb250cm9sbGVyRm9y
TWVkaWFHcm91cChjb25zdCBTdHJpbmcmIGdyb3VwKQoreworICAgIGlmIChncm91cC5pc051bGwo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoZ3JvdXAuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIGlmIChNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBtZWRp
YUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXAoKS5nZXQoZ3JvdXApKQorICAgICAgICByZXR1cm4g
Y29udHJvbGxlcjsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IGNvbnRyb2xsZXIgPSBj
cmVhdGUoKTsKKyAgICBjb250cm9sbGVyLT5tX21lZGlhR3JvdXAgPSBncm91cDsKKyAgICBtZWRp
YUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXAoKS5zZXQoZ3JvdXAsIGNvbnRyb2xsZXIuZ2V0KCkp
OworICAgIHJldHVybiBjb250cm9sbGVyLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xsZXI+IE1lZGlhQ29udHJvbGxlcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE1lZGlhQ29udHJvbGxlcigpKTsKK30KKworTWVkaWFDb250cm9sbGVyOjpNZWRp
YUNvbnRyb2xsZXIoKQorICAgIDogbV9wYXVzZWQoZmFsc2UpCisgICAgLCBtX2RlZmF1bHRQbGF5
YmFja1JhdGUoMSkKKyAgICAsIG1fdm9sdW1lKDEpCisgICAgLCBtX211dGVkKGZhbHNlKQorICAg
ICwgbV9yZWFkeVN0YXRlKEhBVkVfTk9USElORykKKyAgICAsIG1fcGxheWJhY2tTdGF0ZShXQUlU
SU5HKQorICAgICwgbV9hc3luY0V2ZW50VGltZXIodGhpcywgJk1lZGlhQ29udHJvbGxlcjo6YXN5
bmNFdmVudFRpbWVyRmlyZWQpCisgICAgLCBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZShmYWxzZSkK
KyAgICAsIG1fY2xvY2soQ2xvY2s6OmNyZWF0ZSgpKQoreworfQorCitNZWRpYUNvbnRyb2xsZXI6
On5NZWRpYUNvbnRyb2xsZXIoKQoreworICAgIGlmICghbV9tZWRpYUdyb3VwLmlzRW1wdHkoKSkK
KyAgICAgICAgbWVkaWFHcm91cFRvTWVkaWFDb250cm9sbGVyTWFwKCkucmVtb3ZlKG1fbWVkaWFH
cm91cCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjphZGRNZWRpYUVsZW1lbnQoSFRNTE1l
ZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudCk7CisgICAgQVNTRVJU
KCFtX21lZGlhRWxlbWVudHMuY29udGFpbnMoZWxlbWVudCkpOworCisgICAgbV9tZWRpYUVsZW1l
bnRzLmFwcGVuZChlbGVtZW50KTsKKyAgICBicmluZ0VsZW1lbnRVcFRvU3BlZWQoZWxlbWVudCk7
Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpyZW1vdmVNZWRpYUVsZW1lbnQoSFRNTE1lZGlh
RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudCk7CisgICAgQVNTRVJUKG1f
bWVkaWFFbGVtZW50cy5jb250YWlucyhlbGVtZW50KSk7CisgICAgbV9tZWRpYUVsZW1lbnRzLnJl
bW92ZShtX21lZGlhRWxlbWVudHMuZmluZChlbGVtZW50KSk7Cit9CisKK2Jvb2wgTWVkaWFDb250
cm9sbGVyOjpjb250YWluc01lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSBj
b25zdAoreworICAgIHJldHVybiBtX21lZGlhRWxlbWVudHMuY29udGFpbnMoZWxlbWVudCk7Cit9
CisKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFDb250cm9sbGVyOjpidWZmZXJlZCgpIGNv
bnN0Cit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKworICAgIC8vIFRoZSBidWZmZXJlZCBhdHRyaWJ1dGUg
bXVzdCByZXR1cm4gYSBuZXcgc3RhdGljIG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgdGhh
dCByZXByZXNlbnRzIAorICAgIC8vIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIHJhbmdlcyBvZiB0
aGUgbWVkaWEgcmVzb3VyY2VzIG9mIHRoZSBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgdGhhdCB0aGUg
CisgICAgLy8gdXNlciBhZ2VudCBoYXMgYnVmZmVyZWQsIGF0IHRoZSB0aW1lIHRoZSBhdHRyaWJ1
dGUgaXMgZXZhbHVhdGVkLgorICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZFJhbmdlcyA9
IG1fbWVkaWFFbGVtZW50cy5maXJzdCgpLT5idWZmZXJlZCgpOworICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAg
ICBidWZmZXJlZFJhbmdlcy0+aW50ZXJzZWN0V2l0aChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5i
dWZmZXJlZCgpLmdldCgpKTsKKyAgICByZXR1cm4gYnVmZmVyZWRSYW5nZXM7Cit9CisKK1Bhc3NS
ZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFDb250cm9sbGVyOjpzZWVrYWJsZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBUaW1lUmFu
Z2VzOjpjcmVhdGUoKTsKKworICAgIC8vIFRoZSBzZWVrYWJsZSBhdHRyaWJ1dGUgbXVzdCByZXR1
cm4gYSBuZXcgc3RhdGljIG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgdGhhdCByZXByZXNl
bnRzCisgICAgLy8gdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgcmFuZ2VzIG9mIHRoZSBtZWRpYSBy
ZXNvdXJjZXMgb2YgdGhlIHNsYXZlZCBtZWRpYSBlbGVtZW50cyB0aGF0IHRoZQorICAgIC8vIHVz
ZXIgYWdlbnQgaXMgYWJsZSB0byBzZWVrIHRvLCBhdCB0aGUgdGltZSB0aGUgYXR0cmlidXRlIGlz
IGV2YWx1YXRlZC4KKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gc2Vla2FibGVSYW5nZXMgPSBtX21l
ZGlhRWxlbWVudHMuZmlyc3QoKS0+c2Vla2FibGUoKTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgc2Vl
a2FibGVSYW5nZXMtPmludGVyc2VjdFdpdGgobV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+c2Vla2Fi
bGUoKS5nZXQoKSk7CisgICAgcmV0dXJuIHNlZWthYmxlUmFuZ2VzOworfQorCitQYXNzUmVmUHRy
PFRpbWVSYW5nZXM+IE1lZGlhQ29udHJvbGxlcjo6cGxheWVkKCkKK3sKKyAgICBpZiAobV9tZWRp
YUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgp
OworCisgICAgLy8gVGhlIHBsYXllZCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gYSBuZXcgc3RhdGlj
IG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgdGhhdCByZXByZXNlbnRzIAorICAgIC8vIHRo
ZSB1bmlvbiBvZiB0aGUgcmFuZ2VzIG9mIHRoZSBtZWRpYSByZXNvdXJjZXMgb2YgdGhlIHNsYXZl
ZCBtZWRpYSBlbGVtZW50cyB0aGF0IHRoZSAKKyAgICAvLyB1c2VyIGFnZW50IGhhcyBzbyBmYXIg
cmVuZGVyZWQsIGF0IHRoZSB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgZXZhbHVhdGVkLgorICAgIFJl
ZlB0cjxUaW1lUmFuZ2VzPiBwbGF5ZWRSYW5nZXMgPSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+
cGxheWVkKCk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAxOyBpbmRleCA8IG1fbWVkaWFFbGVt
ZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIHBsYXllZFJhbmdlcy0+dW5pb25XaXRoKG1f
bWVkaWFFbGVtZW50c1tpbmRleF0tPnBsYXllZCgpLmdldCgpKTsKKyAgICByZXR1cm4gcGxheWVk
UmFuZ2VzOworfQorCitmbG9hdCBNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKCkgY29uc3QKK3sK
KyAgICBmbG9hdCBtYXhEdXJhdGlvbiA9IDA7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBp
bmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1heER1cmF0
aW9uID0gbWF4KG1heER1cmF0aW9uLCBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5kdXJhdGlvbigp
KTsKKyAgICByZXR1cm4gbWF4RHVyYXRpb247Cit9CisKK2Zsb2F0IE1lZGlhQ29udHJvbGxlcjo6
Y3VycmVudFRpbWUoKSBjb25zdAoreworICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4gbV9jbG9jay0+Y3VycmVudFRp
bWUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRp
bWUsIEV4Y2VwdGlvbkNvZGUmIGNvZGUpCit7CisgICAgLy8gV2hlbiB0aGUgdXNlciBhZ2VudCBp
cyB0byBzZWVrIHRoZSBtZWRpYSBjb250cm9sbGVyIHRvIGEgcGFydGljdWxhciBuZXcgcGxheWJh
Y2sgcG9zaXRpb24sIAorICAgIC8vIGl0IG11c3QgZm9sbG93IHRoZXNlIHN0ZXBzOgorICAgIC8v
IElmIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gaXMgbGVzcyB0aGFuIHplcm8sIHRoZW4gc2V0
IGl0IHRvIHplcm8uCisgICAgdGltZSA9IG1heCgwLjBmLCB0aW1lKTsKKyAgICAKKyAgICAvLyBJ
ZiB0aGUgbmV3IHBsYXliYWNrIHBvc2l0aW9uIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWVkaWEgY29u
dHJvbGxlciBkdXJhdGlvbiwgdGhlbiBzZXQgaXQgCisgICAgLy8gdG8gdGhlIG1lZGlhIGNvbnRy
b2xsZXIgZHVyYXRpb24uCisgICAgdGltZSA9IG1pbih0aW1lLCBkdXJhdGlvbigpKTsKKyAgICAK
KyAgICAvLyBTZXQgdGhlIG1lZGlhIGNvbnRyb2xsZXIgcG9zaXRpb24gdG8gdGhlIG5ldyBwbGF5
YmFjayBwb3NpdGlvbi4KKyAgICBtX2Nsb2NrLT5zZXRDdXJyZW50VGltZSh0aW1lKTsKKyAgICAK
KyAgICAvLyBTZWVrIGVhY2ggc2xhdmVkIG1lZGlhIGVsZW1lbnQgdG8gdGhlIG5ldyBwbGF5YmFj
ayBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgbWVkaWEgZWxlbWVudCB0aW1lbGluZS4KKyAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytp
bmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+c2Vlayh0aW1lLCBjb2RlKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnBsYXkoKQoreworICAgIC8vIFdoZW4gdGhlIHBs
YXkoKSBtZXRob2QgaXMgaW52b2tlZCwgaWYgdGhlIE1lZGlhQ29udHJvbGxlciBpcyBhIHBhdXNl
ZCBtZWRpYSBjb250cm9sbGVyLAorICAgIGlmICghbV9wYXVzZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIHRoZSB1c2VyIGFnZW50IG11c3QgY2hhbmdlIHRoZSBNZWRpYUNvbnRyb2xsZXIg
aW50byBhIHBsYXlpbmcgbWVkaWEgY29udHJvbGxlciwKKyAgICBtX3BhdXNlZCA9IGZhbHNlOwor
ICAgIC8vIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHBsYXkgYXQg
dGhlIE1lZGlhQ29udHJvbGxlciwKKyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wbGF5
RXZlbnQpOworICAgIC8vIGFuZCB0aGVuIHJlcG9ydCB0aGUgY29udHJvbGxlciBzdGF0ZSBvZiB0
aGUgTWVkaWFDb250cm9sbGVyLgorICAgIHJlcG9ydENvbnRyb2xsZXJTdGF0ZSgpOworfQorCit2
b2lkIE1lZGlhQ29udHJvbGxlcjo6cGF1c2UoKQoreworICAgIC8vIFdoZW4gdGhlIHBhdXNlKCkg
bWV0aG9kIGlzIGludm9rZWQsIGlmIHRoZSBNZWRpYUNvbnRyb2xsZXIgaXMgYSBwbGF5aW5nIG1l
ZGlhIGNvbnRyb2xsZXIsCisgICAgaWYgKG1fcGF1c2VkKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyB0aGVuIHRoZSB1c2VyIGFnZW50IG11c3QgY2hhbmdlIHRoZSBNZWRpYUNvbnRyb2xsZXIg
aW50byBhIHBhdXNlZCBtZWRpYSBjb250cm9sbGVyLAorICAgIG1fcGF1c2VkID0gdHJ1ZTsKKyAg
ICAvLyBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBwYXVzZSBhdCB0
aGUgTWVkaWFDb250cm9sbGVyLAorICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBhdXNl
RXZlbnQpOworICAgIC8vIGFuZCB0aGVuIHJlcG9ydCB0aGUgY29udHJvbGxlciBzdGF0ZSBvZiB0
aGUgTWVkaWFDb250cm9sbGVyLgorICAgIHJlcG9ydENvbnRyb2xsZXJTdGF0ZSgpOworfQorCit2
b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQor
eworICAgIC8vIFRoZSBkZWZhdWx0UGxheWJhY2tSYXRlIGF0dHJpYnV0ZSwgb24gc2V0dGluZywg
bXVzdCBzZXQgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1lZGlhIGNvbnRyb2xsZXIKKyAgICAvLyBk
ZWZhdWx0IHBsYXliYWNrIHJhdGUgdG8gdGhlIG5ldyB2YWx1ZSwKKyAgICBtX2RlZmF1bHRQbGF5
YmFja1JhdGUgPSByYXRlOworCisgICAgLy8gdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNp
bXBsZSBldmVudCBuYW1lZCByYXRlY2hhbmdlIGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIuCisgICAg
c2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50KTsKK30KKworZmxvYXQg
TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2Ns
b2NrLT5wbGF5UmF0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0UGxheWJhY2tS
YXRlKGZsb2F0IHJhdGUpCit7CisgICAgLy8gVGhlIHBsYXliYWNrUmF0ZSBhdHRyaWJ1dGUsIG9u
IHNldHRpbmcsIG11c3Qgc2V0IHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtZWRpYSBjb250cm9sbGVy
IAorICAgIC8vIHBsYXliYWNrIHJhdGUgdG8gdGhlIG5ldyB2YWx1ZSwKKyAgICBtX2Nsb2NrLT5z
ZXRQbGF5UmF0ZShyYXRlKTsKKworICAgIC8vIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBz
aW1wbGUgZXZlbnQgbmFtZWQgcmF0ZWNoYW5nZSBhdCB0aGUgTWVkaWFDb250cm9sbGVyLgorICAg
IHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCk7Cit9CisKK3ZvaWQg
TWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUoZmxvYXQgbGV2ZWwsIEV4Y2VwdGlvbkNvZGUmIGNv
ZGUpCit7CisgICAgLy8gSWYgdGhlIG5ldyB2YWx1ZSBpcyBvdXRzaWRlIHRoZSByYW5nZSAwLjAg
dG8gMS4wIGluY2x1c2l2ZSwgdGhlbiwgb24gc2V0dGluZywgYW4gCisgICAgLy8gSW5kZXhTaXpl
RXJyb3IgZXhjZXB0aW9uIG11c3QgYmUgcmFpc2VkIGluc3RlYWQuCisgICAgaWYgKGxldmVsIDwg
MCB8fCBsZXZlbCA+IDEpIHsKKyAgICAgICAgY29kZSA9IElOREVYX1NJWkVfRVJSOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICAvLyBUaGUgdm9sdW1lIGF0dHJpYnV0ZSwg
b24gc2V0dGluZywgaWYgdGhlIG5ldyB2YWx1ZSBpcyBpbiB0aGUgcmFuZ2UgMC4wIHRvIDEuMCBp
bmNsdXNpdmUsCisgICAgLy8gbXVzdCBzZXQgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1lZGlhIGNv
bnRyb2xsZXIgdm9sdW1lIG11bHRpcGxpZXIgdG8gdGhlIG5ldyB2YWx1ZQorICAgIG1fdm9sdW1l
ID0gbGV2ZWw7CisKKyAgICAvLyBhbmQgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZl
bnQgbmFtZWQgdm9sdW1lY2hhbmdlIGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIuCisgICAgc2NoZWR1
bGVFdmVudChldmVudE5hbWVzKCkudm9sdW1lY2hhbmdlRXZlbnQpOworCisgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisg
ICAgICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnVwZGF0ZVZvbHVtZSgpOworfQorCit2b2lk
IE1lZGlhQ29udHJvbGxlcjo6c2V0TXV0ZWQoYm9vbCBmbGFnKQoreworICAgIC8vIFRoZSBtdXRl
ZCBhdHRyaWJ1dGUsIG9uIHNldHRpbmcsIG11c3Qgc2V0IHRoZSBNZWRpYUNvbnRyb2xsZXIncyBt
ZWRpYSBjb250cm9sbGVyIG11dGUgb3ZlcnJpZGUKKyAgICAvLyB0byB0aGUgbmV3IHZhbHVlCisg
ICAgbV9tdXRlZCA9IGZsYWc7CisKKyAgICAvLyBhbmQgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBz
aW1wbGUgZXZlbnQgbmFtZWQgdm9sdW1lY2hhbmdlIGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIuCisg
ICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkudm9sdW1lY2hhbmdlRXZlbnQpOworCisgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsr
aW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnVwZGF0ZVZvbHVtZSgpOwor
fQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6cmVwb3J0Q29udHJvbGxlclN0YXRlKCkKK3sKKyAg
ICB1cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgdXBkYXRlUGxheWJhY2tTdGF0ZSgpOworfQorCit2
b2lkIE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlUmVhZHlTdGF0ZSgpCit7CisgICAgUmVhZHlTdGF0
ZSBvbGRSZWFkeVN0YXRlID0gbV9yZWFkeVN0YXRlOworICAgIFJlYWR5U3RhdGUgbmV3UmVhZHlT
dGF0ZTsKKworICAgIAorICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKSB7CisgICAg
ICAgIC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIgaGFzIG5vIHNsYXZlZCBtZWRpYSBlbGVtZW50
cywgbGV0IG5ldyByZWFkaW5lc3Mgc3RhdGUgYmUgMC4KKyAgICAgICAgbmV3UmVhZHlTdGF0ZSA9
IEhBVkVfTk9USElORzsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBPdGhlcndpc2UsIGxldCBp
dCBoYXZlIHRoZSBsb3dlc3QgdmFsdWUgb2YgdGhlIHJlYWR5U3RhdGUgSURMIGF0dHJpYnV0ZXMg
b2YgYWxsIG9mIGl0cworICAgICAgICAvLyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMuCisgICAgICAg
IG5ld1JlYWR5U3RhdGUgPSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+cmVhZHlTdGF0ZSgpOwor
ICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNp
emUoKTsgKytpbmRleCkKKyAgICAgICAgICAgIG5ld1JlYWR5U3RhdGUgPSBtaW4obmV3UmVhZHlT
dGF0ZSwgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+cmVhZHlTdGF0ZSgpKTsKKyAgICB9CisKKyAg
ICAvLyBJZiB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbW9zdCByZWNlbnRseSByZXBvcnRlZCByZWFk
aW5lc3Mgc3RhdGUgaXMgbm90IGVxdWFsIHRvIG5ldyByZWFkaW5lc3Mgc3RhdGUKKyAgICBpZiAo
bmV3UmVhZHlTdGF0ZSA9PSBvbGRSZWFkeVN0YXRlKSAKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBhdCB0aGUgTWVkaWFD
b250cm9sbGVyIG9iamVjdCwgd2hvc2UgbmFtZSBpcyB0aGUKKyAgICAvLyBldmVudCBuYW1lIGNv
cnJlc3BvbmRpbmcgdG8gdGhlIHZhbHVlIG9mIG5ldyByZWFkaW5lc3Mgc3RhdGUgZ2l2ZW4gaW4g
dGhlIHRhYmxlIGJlbG93IChvbW1pdHRlZCkKKyAgICBBdG9taWNTdHJpbmcgZXZlbnROYW1lOwor
ICAgIHN3aXRjaCAobmV3UmVhZHlTdGF0ZSkgeworICAgIGNhc2UgSEFWRV9OT1RISU5HOgorICAg
ICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkuZW1wdGllZEV2ZW50OworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEhBVkVfTUVUQURBVEE6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFt
ZXMoKS5sb2FkZWRtZXRhZGF0YUV2ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhBVkVf
Q1VSUkVOVF9EQVRBOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkubG9hZGVkZGF0
YUV2ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhBVkVfRlVUVVJFX0RBVEE6CisgICAg
ICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5jYW5wbGF5RXZlbnQ7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSEFWRV9FTk9VR0hfREFUQToKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnRO
YW1lcygpLmNhbnBsYXl0aHJvdWdoRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBzY2hlZHVsZUV2ZW50
KGV2ZW50TmFtZSk7CisKKyAgICAvLyBMZXQgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1vc3QgcmVj
ZW50bHkgcmVwb3J0ZWQgcmVhZGluZXNzIHN0YXRlIGJlIG5ldyByZWFkaW5lc3Mgc3RhdGUuCisg
ICAgbV9yZWFkeVN0YXRlID0gbmV3UmVhZHlTdGF0ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xs
ZXI6OnVwZGF0ZVBsYXliYWNrU3RhdGUoKQoreworICAgIFBsYXliYWNrU3RhdGUgb2xkUGxheWJh
Y2tTdGF0ZSA9IG1fcGxheWJhY2tTdGF0ZTsKKyAgICBQbGF5YmFja1N0YXRlIG5ld1BsYXliYWNr
U3RhdGU7CisKKyAgICAvLyBJbml0aWFsaXplIG5ldyBwbGF5YmFjayBzdGF0ZSBieSBzZXR0aW5n
IGl0IHRvIHRoZSBzdGF0ZSBnaXZlbiBmb3IgdGhlIGZpcnN0IG1hdGNoaW5nIAorICAgIC8vIGNv
bmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDoKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRz
LmlzRW1wdHkoKSkgeworICAgICAgICAvLyBJZiB0aGUgTWVkaWFDb250cm9sbGVyIGhhcyBubyBz
bGF2ZWQgbWVkaWEgZWxlbWVudHMKKyAgICAgICAgLy8gTGV0IG5ldyBwbGF5YmFjayBzdGF0ZSBi
ZSB3YWl0aW5nLgorICAgICAgICBuZXdQbGF5YmFja1N0YXRlID0gV0FJVElORzsKKyAgICB9IGVs
c2UgaWYgKGhhc0VuZGVkKCkpIHsKKyAgICAgICAgLy8gSWYgYWxsIG9mIHRoZSBNZWRpYUNvbnRy
b2xsZXIncyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgaGF2ZSBlbmRlZCBwbGF5YmFjayBhbmQgdGhl
IG1lZGlhCisgICAgICAgIC8vIGNvbnRyb2xsZXIgcGxheWJhY2sgcmF0ZSBpcyBwb3NpdGl2ZSBv
ciB6ZXJvCisgICAgICAgIC8vIExldCBuZXcgcGxheWJhY2sgc3RhdGUgYmUgZW5kZWQuCisgICAg
ICAgIG5ld1BsYXliYWNrU3RhdGUgPSBFTkRFRDsKKyAgICB9IGVsc2UgaWYgKGlzQmxvY2tlZCgp
KSB7CisgICAgICAgIC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIgaXMgYSBibG9ja2VkIG1lZGlh
IGNvbnRyb2xsZXIKKyAgICAgICAgLy8gTGV0IG5ldyBwbGF5YmFjayBzdGF0ZSBiZSB3YWl0aW5n
LgorICAgICAgICBuZXdQbGF5YmFja1N0YXRlID0gV0FJVElORzsKKyAgICB9IGVsc2UgeworICAg
ICAgICAvLyBPdGhlcndpc2UKKyAgICAgICAgLy8gTGV0IG5ldyBwbGF5YmFjayBzdGF0ZSBiZSBw
bGF5aW5nLgorICAgICAgICBuZXdQbGF5YmFja1N0YXRlID0gUExBWUlORzsKKyAgICB9CisKKyAg
ICAvLyBJZiB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbW9zdCByZWNlbnRseSByZXBvcnRlZCBwbGF5
YmFjayBzdGF0ZSBpcyBub3QgZXF1YWwgdG8gbmV3IHBsYXliYWNrIHN0YXRlCisgICAgaWYgKG5l
d1BsYXliYWNrU3RhdGUgPT0gb2xkUGxheWJhY2tTdGF0ZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gYW5kIHRoZSBuZXcgcGxheWJhY2sgc3RhdGUgaXMgZW5kZWQsCisgICAgaWYgKG5ld1Bs
YXliYWNrU3RhdGUgPT0gRU5ERUQpIHsKKyAgICAgICAgLy8gdGhlbiBxdWV1ZSBhIHRhc2sgdGhh
dCwgaWYgdGhlIE1lZGlhQ29udHJvbGxlciBvYmplY3QgaXMgYSBwbGF5aW5nIG1lZGlhIGNvbnRy
b2xsZXIsIGFuZCAKKyAgICAgICAgLy8gYWxsIG9mIHRoZSBNZWRpYUNvbnRyb2xsZXIncyBzbGF2
ZWQgbWVkaWEgZWxlbWVudHMgaGF2ZSBzdGlsbCBlbmRlZCBwbGF5YmFjaywgYW5kIHRoZSAKKyAg
ICAgICAgLy8gbWVkaWEgY29udHJvbGxlciBwbGF5YmFjayByYXRlIGlzIHN0aWxsIHBvc2l0aXZl
IG9yIHplcm8sIAorICAgICAgICBpZiAoIW1fcGF1c2VkICYmIGhhc0VuZGVkKCkpIHsKKyAgICAg
ICAgICAgIC8vIGNoYW5nZXMgdGhlIE1lZGlhQ29udHJvbGxlciBvYmplY3QgdG8gYSBwYXVzZWQg
bWVkaWEgY29udHJvbGxlcgorICAgICAgICAgICAgbV9wYXVzZWQgPSB0cnVlOworICAgICAgICAg
ICAgbV9jbG9jay0+c3RvcCgpOworCisgICAgICAgICAgICAvLyBhbmQgdGhlbiBmaXJlcyBhIHNp
bXBsZSBldmVudCBuYW1lZCBwYXVzZSBhdCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdC4KKyAg
ICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQpOworICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gSWYgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1vc3QgcmVjZW50
bHkgcmVwb3J0ZWQgcGxheWJhY2sgc3RhdGUgaXMgbm90IGVxdWFsIHRvIG5ldyBwbGF5YmFjayBz
dGF0ZQorICAgIC8vIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgYXQg
dGhlIE1lZGlhQ29udHJvbGxlciBvYmplY3QsIHdob3NlIG5hbWUgaXMgcGxheWluZyAKKyAgICAv
LyBpZiBuZXcgcGxheWJhY2sgc3RhdGUgaXMgcGxheWluZywgZW5kZWQgaWYgbmV3IHBsYXliYWNr
IHN0YXRlIGlzIGVuZGVkLCBhbmQgd2FpdGluZyBvdGhlcndpc2UuCisgICAgQXRvbWljU3RyaW5n
IGV2ZW50TmFtZTsKKyAgICBzd2l0Y2ggKG5ld1BsYXliYWNrU3RhdGUpIHsKKyAgICBjYXNlIFdB
SVRJTkc6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS53YWl0aW5nRXZlbnQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRU5ERUQ6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50
TmFtZXMoKS5lbmRlZEV2ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBMQVlJTkc6Cisg
ICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5wbGF5aW5nRXZlbnQ7CisgICAgICAgIG1f
Y2xvY2stPnN0YXJ0KCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZSk7
CisKKyAgICAvLyBMZXQgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1vc3QgcmVjZW50bHkgcmVwb3J0
ZWQgcGxheWJhY2sgc3RhdGUgYmUgbmV3IHBsYXliYWNrIHN0YXRlLgorICAgIG1fcGxheWJhY2tT
dGF0ZSA9IG5ld1BsYXliYWNrU3RhdGU7CisKKyAgICB1cGRhdGVNZWRpYUVsZW1lbnRzKCk7Cit9
CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjp1cGRhdGVNZWRpYUVsZW1lbnRzKCkKK3sKKyAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytp
bmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+dXBkYXRlUGxheVN0YXRlKCk7
Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpicmluZ0VsZW1lbnRVcFRvU3BlZWQoSFRNTE1l
ZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudCk7CisgICAgQVNTRVJU
KG1fbWVkaWFFbGVtZW50cy5jb250YWlucyhlbGVtZW50KSk7CisKKyAgICAvLyBXaGVuIHRoZSB1
c2VyIGFnZW50IGlzIHRvIGJyaW5nIGEgbWVkaWEgZWxlbWVudCB1cCB0byBzcGVlZCB3aXRoIGl0
cyBuZXcgbWVkaWEgY29udHJvbGxlciwKKyAgICAvLyBpdCBtdXN0IHNlZWsgdGhhdCBtZWRpYSBl
bGVtZW50IHRvIHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtZWRpYSBjb250cm9sbGVyIHBvc2l0aW9u
IHJlbGF0aXZlCisgICAgLy8gdG8gdGhlIG1lZGlhIGVsZW1lbnQncyB0aW1lbGluZS4KKyAgICBF
eGNlcHRpb25Db2RlIGlnbm9yZWRDb2RlID0gMDsKKyAgICBlbGVtZW50LT5zZWVrKGN1cnJlbnRU
aW1lKCksIGlnbm9yZWRDb2RlKTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6OmlzQmxvY2tl
ZCgpIGNvbnN0Cit7CisgICAgLy8gQSBNZWRpYUNvbnRyb2xsZXIgaXMgYSBibG9ja2VkIG1lZGlh
IGNvbnRyb2xsZXIgaWYgdGhlIE1lZGlhQ29udHJvbGxlciBpcyBhIHBhdXNlZCBtZWRpYSAKKyAg
ICAvLyBjb250cm9sbGVyLAorICAgIGlmIChtX3BhdXNlZCkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgCisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICBib29sIGFsbFBhdXNlZCA9IHRydWU7CisgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsK
KyAgICAgICAgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCA9IG1fbWVkaWFFbGVtZW50c1tpbmRl
eF07CisgICAgICAgIC8vICBvciBpZiBhbnkgb2YgaXRzIHNsYXZlZCBtZWRpYSBlbGVtZW50cyBh
cmUgYmxvY2tlZCBtZWRpYSBlbGVtZW50cywKKyAgICAgICAgaWYgKGVsZW1lbnQtPmlzQmxvY2tl
ZCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIAorICAgICAgICAvLyBvciBp
ZiBhbnkgb2YgaXRzIHNsYXZlZCBtZWRpYSBlbGVtZW50cyB3aG9zZSBhdXRvcGxheWluZyBmbGFn
IGlzIHRydWUgc3RpbGwgaGF2ZSB0aGVpciAKKyAgICAgICAgLy8gcGF1c2VkIGF0dHJpYnV0ZSBz
ZXQgdG8gdHJ1ZSwKKyAgICAgICAgaWYgKGVsZW1lbnQtPmF1dG9wbGF5KCkgJiYgZWxlbWVudC0+
cGF1c2VkKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIGlm
ICghZWxlbWVudC0+cGF1c2VkKCkpCisgICAgICAgICAgICBhbGxQYXVzZWQgPSBmYWxzZTsKKyAg
ICB9CisgICAgCisgICAgLy8gb3IgaWYgYWxsIG9mIGl0cyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMg
aGF2ZSB0aGVpciBwYXVzZWQgYXR0cmlidXRlIHNldCB0byB0cnVlLgorICAgIHJldHVybiBhbGxQ
YXVzZWQ7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpoYXNFbmRlZCgpIGNvbnN0Cit7Cisg
ICAgaWYgKG1fY2xvY2stPnBsYXlSYXRlKCkgPD0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIAorICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCisgICAgYm9vbCBhbGxIYXZlRW5kZWQgPSB0cnVlOworICAgIGZvciAoc2l6
ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7
CisgICAgICAgIGlmICghbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+ZW5kZWQoKSkKKyAgICAgICAg
ICAgIGFsbEhhdmVFbmRlZCA9IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gYWxsSGF2ZUVuZGVk
OworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50TmFtZSkKK3sKKyAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5kKEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgdHJ1ZSkpOworICAgIGlmICghbV9hc3luY0V2ZW50VGlt
ZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9hc3luY0V2ZW50VGltZXIuc3RhcnRPbmVTaG90KDAp
OworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6YXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8
TWVkaWFDb250cm9sbGVyPiopCit7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBwZW5kaW5n
RXZlbnRzOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIAorICAgIG1fcGVuZGluZ0V2
ZW50cy5zd2FwKHBlbmRpbmdFdmVudHMpOworICAgIHNpemVfdCBjb3VudCA9IHBlbmRpbmdFdmVu
dHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytp
bmRleCkKKyAgICAgICAgZGlzcGF0Y2hFdmVudChwZW5kaW5nRXZlbnRzW2luZGV4XS5yZWxlYXNl
KCksIGVjKTsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFDb250cm9sbGVyOjpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRz
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50
cy5maXJzdCgpLT5kb2N1bWVudCgpOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6aGFzQXVk
aW8oKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlh
RWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChtX21lZGlhRWxlbWVudHNb
aW5kZXhdLT5oYXNBdWRpbygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6Omhhc1ZpZGVvKCkgY29u
c3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRz
LnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+
aGFzVmlkZW8oKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpoYXNDbG9zZWRDYXB0aW9ucygpIGNv
bnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50
cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKG1fbWVkaWFFbGVtZW50c1tpbmRleF0t
Pmhhc0Nsb3NlZENhcHRpb25zKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0Q2xvc2VkQ2Fw
dGlvbnNWaXNpYmxlKGJvb2wgdmlzaWJsZSkKK3sKKyAgICBtX2Nsb3NlZENhcHRpb25zVmlzaWJs
ZSA9IHZpc2libGU7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFF
bGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0t
PnNldENsb3NlZENhcHRpb25zVmlzaWJsZSh2aXNpYmxlKTsKK30KKworYm9vbCBNZWRpYUNvbnRy
b2xsZXI6OnN1cHBvcnRzU2Nhbm5pbmcoKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGluZGV4
ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAg
IGlmICghbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+c3VwcG9ydHNTY2FubmluZygpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBN
ZWRpYUNvbnRyb2xsZXI6OmJlZ2luU2NydWJiaW5nKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRl
eCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAg
bV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+YmVnaW5TY3J1YmJpbmcoKTsKK30KKwordm9pZCBNZWRp
YUNvbnRyb2xsZXI6OmVuZFNjcnViYmluZygpCit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAw
OyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVk
aWFFbGVtZW50c1tpbmRleF0tPmVuZFNjcnViYmluZygpOworfQorCitib29sIE1lZGlhQ29udHJv
bGxlcjo6Y2FuUGxheSgpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRl
eCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKCFtX21l
ZGlhRWxlbWVudHNbaW5kZXhdLT5jYW5QbGF5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6aXNM
aXZlU3RyZWFtKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
bV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAoIW1fbWVkaWFF
bGVtZW50c1tpbmRleF0tPmlzTGl2ZVN0cmVhbSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6Omhh
c1NvdXJjZSgpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1f
bWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxl
bWVudHNbaW5kZXhdLT5oYXNTb3VyY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpyZXR1cm5U
b1JlYWx0aW1lKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRp
YUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4
XS0+cmV0dXJuVG9SZWFsdGltZSgpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29u
dHJvbGxlcjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMo
KS5pbnRlcmZhY2VGb3JNZWRpYUNvbnRyb2xsZXI7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg1ZWYyOWEyM2RiOTlkNmZlNGM4NjA0
MjI4ZjkxOTM3NzA5NmZlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFDb250cm9sbGVyLmgKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBN
ZWRpYUNvbnRyb2xsZXJfaAorI2RlZmluZSBNZWRpYUNvbnRyb2xsZXJfaAorCisjaWYgRU5BQkxF
KFZJREVPKQorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnQu
aCIKKyNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIK
KyNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJUaW1lci5o
IgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQ2xvY2s7CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3MgRXZlbnQ7CisKK2NsYXNz
IE1lZGlhQ29udHJvbGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29udHJvbGxlcj4sIHB1
YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UsIHB1YmxpYyBFdmVudFRhcmdldCB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBtZWRpYUNvbnRyb2xs
ZXJGb3JNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbGxlcj4gY3JlYXRlKCk7CisgICAgdmlydHVhbCB+TWVkaWFDb250cm9sbGVyKCk7
CisKKyAgICB2b2lkIGFkZE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgdm9p
ZCByZW1vdmVNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIGJvb2wgY29udGFp
bnNNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopIGNvbnN0OworCisgICAgY29uc3QgU3Ry
aW5nJiBtZWRpYUdyb3VwKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUdyb3VwOyB9CisgICAgCisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Q7CisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3Q7CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHBsYXllZCgpOworICAgIAorICAgIHZpcnR1YWwg
ZmxvYXQgZHVyYXRpb24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRUaW1lKCkg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGZsb2F0LCBFeGNlcHRpb25D
b2RlJik7CisgICAgCisgICAgdmlydHVhbCBib29sIHBhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGF1c2VkOyB9CisgICAgdmlydHVhbCB2b2lkIHBsYXkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1
c2UoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IGRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25z
dCB7IHJldHVybiBtX2RlZmF1bHRQbGF5YmFja1JhdGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCk7CisgICAgCisgICAgdmlydHVhbCBmbG9hdCBwbGF5
YmFja1JhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheWJhY2tSYXRlKGZsb2F0
KTsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9s
dW1lOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCwgRXhjZXB0aW9uQ29kZSYp
OworICAgIAorICAgIHZpcnR1YWwgYm9vbCBtdXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWQ7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TXV0ZWQoYm9vbCk7CisgICAgCisgICAgdmlydHVhbCBS
ZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5U3RhdGU7IH0KKwor
ICAgIGVudW0gUGxheWJhY2tTdGF0ZSB7IFdBSVRJTkcsIFBMQVlJTkcsIEVOREVEIH07CisgICAg
dmlydHVhbCBQbGF5YmFja1N0YXRlIHBsYXliYWNrU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3Bs
YXliYWNrU3RhdGU7IH0KKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0Z1bGxzY3JlZW4oKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW4o
KSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBoYXNBdWRpbygpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBoYXNWaWRlbygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNDbG9zZWRDYXB0aW9u
cygpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9v
bCk7CisgICAgdmlydHVhbCBib29sIGNsb3NlZENhcHRpb25zVmlzaWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlOyB9CisgICAgCisgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzU2Nhbm5pbmcoKSBjb25zdDsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1
YmJpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kU2NydWJiaW5nKCk7CisgICAgCisgICAgdmly
dHVhbCBib29sIGNhblBsYXkoKSBjb25zdDsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXZl
U3RyZWFtKCkgY29uc3Q7CisgICAgCisgICAgdmlydHVhbCBib29sIGhhc1NvdXJjZSgpIGNvbnN0
OworICAgIAorICAgIHZpcnR1YWwgdm9pZCByZXR1cm5Ub1JlYWx0aW1lKCk7CisKKyAgICBib29s
IGlzQmxvY2tlZCgpIGNvbnN0OworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB1c2luZyBSZWZD
b3VudGVkPE1lZGlhQ29udHJvbGxlcj46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlh
Q29udHJvbGxlcj46OmRlcmVmOworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJvbGxlcigpOwor
ICAgIHZvaWQgcmVwb3J0Q29udHJvbGxlclN0YXRlKCk7CisgICAgdm9pZCB1cGRhdGVSZWFkeVN0
YXRlKCk7CisgICAgdm9pZCB1cGRhdGVQbGF5YmFja1N0YXRlKCk7CisgICAgdm9pZCB1cGRhdGVN
ZWRpYUVsZW1lbnRzKCk7CisgICAgdm9pZCBicmluZ0VsZW1lbnRVcFRvU3BlZWQoSFRNTE1lZGlh
RWxlbWVudCopOworICAgIHZvaWQgc2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50TmFtZSk7CisgICAgdm9pZCBhc3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRy
b2xsZXI+Kik7CisgICAgYm9vbCBoYXNFbmRlZCgpIGNvbnN0OworCisgICAgLy8gRXZlbnRUYXJn
ZXQKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAgdmly
dHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KKyAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAg
IHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9l
dmVudFRhcmdldERhdGE7IH0KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZl
bnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAgRXZlbnRU
YXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworCisgICAgZnJpZW5kIGNsYXNzIEhUTUxNZWRp
YUVsZW1lbnQ7CisgICAgZnJpZW5kIGNsYXNzIE1lZGlhQ29udHJvbGxlckV2ZW50TGlzdGVuZXI7
CisgICAgVmVjdG9yPEhUTUxNZWRpYUVsZW1lbnQqPiBtX21lZGlhRWxlbWVudHM7CisgICAgYm9v
bCBtX3BhdXNlZDsKKyAgICBmbG9hdCBtX2RlZmF1bHRQbGF5YmFja1JhdGU7CisgICAgZmxvYXQg
bV92b2x1bWU7CisgICAgYm9vbCBtX211dGVkOworICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRl
OworICAgIFBsYXliYWNrU3RhdGUgbV9wbGF5YmFja1N0YXRlOworICAgIFZlY3RvcjxSZWZQdHI8
RXZlbnQ+ID4gbV9wZW5kaW5nRXZlbnRzOworICAgIFRpbWVyPE1lZGlhQ29udHJvbGxlcj4gbV9h
c3luY0V2ZW50VGltZXI7CisgICAgU3RyaW5nIG1fbWVkaWFHcm91cDsKKyAgICBib29sIG1fY2xv
c2VkQ2FwdGlvbnNWaXNpYmxlOworICAgIFBhc3NSZWZQdHI8Q2xvY2s+IG1fY2xvY2s7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhQ29udHJvbGxlci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDRiMmExZmQ4Y2I5NDQwOGEzOGRh
YmI5NTYzZWJmYTVmNzM4ZmM1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFDb250cm9sbGVyLmlkbApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxl
IGh0bWwgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVZJREVPLAorICAg
ICAgICBDYW5CZUNvbnN0cnVjdGVkLAorICAgICAgICBHZW5lcmF0ZVRvSlMsCisgICAgICAgIEV2
ZW50VGFyZ2V0CisgICAgXSBNZWRpYUNvbnRyb2xsZXIgeworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgVGltZVJhbmdlcyBidWZmZXJlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRp
bWVSYW5nZXMgc2Vla2FibGU7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBk
dXJhdGlvbjsKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBjdXJyZW50VGltZQorICAgICAgICAg
ICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgYm9vbGVhbiBwYXVzZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUaW1lUmFu
Z2VzIHBsYXllZDsKKyAgICAgICAgdm9pZCBwbGF5KCk7CisgICAgICAgIHZvaWQgcGF1c2UoKTsK
KworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIGRlZmF1bHRQbGF5YmFja1JhdGU7CisgICAgICAg
IGF0dHJpYnV0ZSBkb3VibGUgcGxheWJhY2tSYXRlOworCisgICAgICAgIGF0dHJpYnV0ZSBkb3Vi
bGUgdm9sdW1lCisgICAgICAgICAgICBzZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOworICAg
ICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBtdXRlZDsKKworICAgICAgICAvLyBFdmVudFRhcmdldCBp
bnRlcmZhY2UKKyAgICAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBl
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVu
ZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFu
IHVzZUNhcHR1cmUpOworICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3Ry
aW5nIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0
ZW5lciBsaXN0ZW5lciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0
aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVu
dChpbiBFdmVudCBldnQpCisgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOworICAg
IH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlcklu
dGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43MmNkNGRhNDFhZjQyZjVkYTJhZTVkZjk3NzhjNGI4NmI3YzM1NDAwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRl
cmZhY2UuaApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTWVkaWFDb250cm9s
bGVySW50ZXJmYWNlX2gKKyNkZWZpbmUgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlX2gKKworI2lm
IEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgVGltZVJhbmdlczsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9u
Q29kZTsKKworY2xhc3MgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UoKSB7IH07CisgICAgCisgICAgLy8gTWVk
aWFDb250cm9sbGVyIElETDoKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVm
ZmVyZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNl
ZWthYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBw
bGF5ZWQoKSA9IDA7CisgICAgCisgICAgdmlydHVhbCBmbG9hdCBkdXJhdGlvbigpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICAK
KyAgICB2aXJ0dWFsIGJvb2wgcGF1c2VkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBw
bGF5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKKyAgICAKKyAgICB2aXJ0
dWFsIGZsb2F0IGRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldERlZmF1bHRQbGF5YmFja1JhdGUoZmxvYXQpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFs
IGZsb2F0IHBsYXliYWNrUmF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGxh
eWJhY2tSYXRlKGZsb2F0KSA9IDA7CisgICAgCisgICAgdmlydHVhbCBmbG9hdCB2b2x1bWUoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCwgRXhjZXB0aW9uQ29k
ZSYpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgbXV0ZWQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpID0gMDsKKyAgICAKKyAgICBlbnVtIFJlYWR5U3Rh
dGUgeyBIQVZFX05PVEhJTkcsIEhBVkVfTUVUQURBVEEsIEhBVkVfQ1VSUkVOVF9EQVRBLCBIQVZF
X0ZVVFVSRV9EQVRBLCBIQVZFX0VOT1VHSF9EQVRBIH07CisgICAgdmlydHVhbCBSZWFkeVN0YXRl
IHJlYWR5U3RhdGUoKSBjb25zdCA9IDA7CisKKyAgICAvLyBNZWRpYUNvbnRyb2xFbGVtZW50czoK
KyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc0Z1bGxzY3JlZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVu
dGVyRnVsbHNjcmVlbigpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNBdWRpbygpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVmlkZW8oKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjbG9z
ZWRDYXB0aW9uc1Zpc2libGUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNTY2FubmluZygpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjcnViYmlu
ZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kU2NydWJiaW5nKCkgPSAwOworCisgICAgdmly
dHVhbCBib29sIGNhblBsYXkoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXZl
U3RyZWFtKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGhhc1NvdXJjZSgpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCByZXR1cm5Ub1JlYWx0aW1lKCkgPSAwOworfTsKKwor
fQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1l
UmFuZ2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAKaW5kZXggMWUx
ODMwNjk4NzcxNGIwZTk5YjJkNTM1YmM0YjQ3Y2UzY2NjODc4Mi4uN2I3ZDU5NGE0NmI5YmMwNTRk
YzJkYThkNmE3YzI1MGI5MWQ5ZDE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9U
aW1lUmFuZ2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwCkBA
IC0zNiw3ICszNiw3IEBAIFRpbWVSYW5nZXM6OlRpbWVSYW5nZXMoZmxvYXQgc3RhcnQsIGZsb2F0
IGVuZCkKICAgICBhZGQoc3RhcnQsIGVuZCk7CiB9CiAKLVBhc3NSZWZQdHI8VGltZVJhbmdlcz4g
VGltZVJhbmdlczo6Y29weSgpCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IFRpbWVSYW5nZXM6OmNv
cHkoKSBjb25zdAogewogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBuZXdTZXNzaW9uID0gVGltZVJh
bmdlczo6Y3JlYXRlKCk7CiAgICAgCkBAIC00Nyw2ICs0Nyw0OSBAQCBQYXNzUmVmUHRyPFRpbWVS
YW5nZXM+IFRpbWVSYW5nZXM6OmNvcHkoKQogICAgIHJldHVybiBuZXdTZXNzaW9uLnJlbGVhc2Uo
KTsKIH0KIAordm9pZCBUaW1lUmFuZ2VzOjppbnZlcnQoKQoreworICAgIFJlZlB0cjxUaW1lUmFu
Z2VzPiBpbnZlcnRlZCA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOworCisgICAgaWYgKCFtX3Jhbmdl
cy5zaXplKCkpCisgICAgICAgIGludmVydGVkLT5hZGQoLUlORklOSVRZLCBJTkZJTklUWSk7Cisg
ICAgZWxzZSB7CisgICAgICAgIGlmIChmbG9hdCBzdGFydCA9IG1fcmFuZ2VzLmZpcnN0KCkubV9z
dGFydCAhPSAtSU5GSU5JVFkpCisgICAgICAgICAgICBpbnZlcnRlZC0+YWRkKC1JTkZJTklUWSwg
c3RhcnQpOworCisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggKyAxIDwgbV9y
YW5nZXMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgaW52ZXJ0ZWQtPmFkZChtX3Jhbmdl
c1tpbmRleF0ubV9lbmQsIG1fcmFuZ2VzW2luZGV4ICsgMV0ubV9zdGFydCk7CisKKyAgICAgICAg
aWYgKGZsb2F0IGVuZCA9IG1fcmFuZ2VzLmxhc3QoKS5tX2VuZCAhPSBJTkZJTklUWSkKKyAgICAg
ICAgICAgIGludmVydGVkLT5hZGQoZW5kLCBJTkZJTklUWSk7CisgICAgfQorCisgICAgbV9yYW5n
ZXMuc3dhcChpbnZlcnRlZC0+bV9yYW5nZXMpOworfQorCit2b2lkIFRpbWVSYW5nZXM6OmludGVy
c2VjdFdpdGgoY29uc3QgVGltZVJhbmdlcyogb3RoZXIpCit7CisgICAgQVNTRVJUKG90aGVyKTsK
KyAgICBSZWZQdHI8VGltZVJhbmdlcz4gaW52ZXJ0ZWQgPSBjb3B5KCk7CisgICAgUmVmUHRyPFRp
bWVSYW5nZXM+IGludmVydGVkT3RoZXIgPSBvdGhlci0+Y29weSgpOworICAgIGludmVydGVkLT51
bmlvbldpdGgoaW52ZXJ0ZWRPdGhlci5nZXQoKSk7CisgICAgaW52ZXJ0ZWQtPmludmVydCgpOwor
CisgICAgbV9yYW5nZXMuc3dhcChpbnZlcnRlZC0+bV9yYW5nZXMpOworfQorCit2b2lkIFRpbWVS
YW5nZXM6OnVuaW9uV2l0aChjb25zdCBUaW1lUmFuZ2VzKiBvdGhlcikKK3sKKyAgICBBU1NFUlQo
b3RoZXIpOworICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiB1bmlvbmVkID0gY29weSgpOworICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvdGhlci0+bV9yYW5nZXMuc2l6ZSgpOyArK2lu
ZGV4KSB7CisgICAgICAgIGNvbnN0IFJhbmdlJiByYW5nZSA9IG90aGVyLT5tX3Jhbmdlc1tpbmRl
eF07CisgICAgICAgIHVuaW9uZWQtPmFkZChyYW5nZS5tX3N0YXJ0LCByYW5nZS5tX2VuZCk7Cisg
ICAgfQorCisgICAgbV9yYW5nZXMuc3dhcCh1bmlvbmVkLT5tX3Jhbmdlcyk7Cit9CisKIGZsb2F0
IFRpbWVSYW5nZXM6OnN0YXJ0KHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykgY29u
c3QgCiB7IAogICAgIGlmIChpbmRleCA+PSBsZW5ndGgoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5n
ZXMuaAppbmRleCAyZDdhZjI1YTgwOTEzNzMwZjgwZDIzOTMwYmUyNzRlMGZmMTIxN2ZkLi5jY2Nj
ZTA1YzE5YzRhYzllNjI5ZGQyYTJhMWZiNjY1MjE5NzgxMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVS
YW5nZXMuaApAQCAtNDYsNyArNDYsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFRpbWVSYW5nZXMoc3RhcnQsIGVuZCkpOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8
VGltZVJhbmdlcz4gY29weSgpOworICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gY29weSgpIGNv
bnN0OworICAgIHZvaWQgaW52ZXJ0KCk7CisgICAgdm9pZCBpbnRlcnNlY3RXaXRoKGNvbnN0IFRp
bWVSYW5nZXMqKTsKKyAgICB2b2lkIHVuaW9uV2l0aChjb25zdCBUaW1lUmFuZ2VzKik7CiAKICAg
ICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3Jhbmdlcy5zaXplKCk7IH0KICAg
ICBmbG9hdCBzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDZjY2Q0YTQ3ZDMxMjNmYWZjODY3YTMxY2ZhNjc5
ZDQ3NmY0YWVhNjIuLjJkMGZhY2M3NmE1MWU5OWU5MGJmZjg2ZjdiN2Q5MmZhNTUzYzFmOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTYzMyw2ICs2MzMsNyBAQCBtb2R1bGUgd2lu
ZG93IHsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1WSURFTywgRW5hYmxlZEF0UnVu
dGltZV0gTWVkaWFFcnJvckNvbnN0cnVjdG9yIE1lZGlhRXJyb3I7CiAgICAgICAgIGF0dHJpYnV0
ZSBbQ29uZGl0aW9uYWw9VklERU8sIEVuYWJsZWRBdFJ1bnRpbWVdIFRpbWVSYW5nZXNDb25zdHJ1
Y3RvciBUaW1lUmFuZ2VzOwogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVZJREVPLCBF
bmFibGVkQXRSdW50aW1lXSBIVE1MU291cmNlRWxlbWVudENvbnN0cnVjdG9yIEhUTUxTb3VyY2VF
bGVtZW50OworICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVZJREVPLCBFbmFibGVkQXRS
dW50aW1lXSBNZWRpYUNvbnRyb2xsZXJDb25zdHJ1Y3RvciBNZWRpYUNvbnRyb2xsZXI7CiAKICNp
ZiBkZWZpbmVkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAmJiBFTkFCTEVfQU5JTUFUSU9OX0FQSQog
ICAgICAgICBhdHRyaWJ1dGUgV2ViS2l0QW5pbWF0aW9uQ29uc3RydWN0b3IgV2ViS2l0QW5pbWF0
aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCmluZGV4IDAxOGM3ZGQzM2UzOGMxYjhmNzczNDVhOGMzZTRmODM1ZmVjNjBhNzMuLmZjNzdm
ZjI4ODM4YjdjMDk0YWE1M2E0ZmJkZjA3MTY4MGNhMjIxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTYwOSw2ICs2MDksMTEg
QEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXllcjo6YnVmZmVyZWQoKQogICAgIHJl
dHVybiBtX3ByaXZhdGUtPmJ1ZmZlcmVkKCk7CiB9CiAKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4g
TWVkaWFQbGF5ZXI6OnNlZWthYmxlKCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5zZWVrYWJs
ZSgpOworfQorCiBmbG9hdCBNZWRpYVBsYXllcjo6bWF4VGltZVNlZWthYmxlKCkKIHsKICAgICBy
ZXR1cm4gbV9wcml2YXRlLT5tYXhUaW1lU2Vla2FibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGM5NmIwMjVkODJkMDA3MDkxNjll
ZWE1MWMwNzgyNmI3NDUwNmM0NzEuLjQ3NzM5YTA4YjBlM2Q5Y2M3M2M5OWExMzE0MzRhNzhhZTAz
NzQ1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaApAQCAtMjQxLDYgKzI0MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZXNlcnZlc1Bp
dGNoKGJvb2wpOwogCiAgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpOworICAg
IFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc2Vla2FibGUoKTsKICAgICBmbG9hdCBtYXhUaW1lU2Vl
a2FibGUoKTsKIAogICAgIHVuc2lnbmVkIGJ5dGVzTG9hZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IGY4
YzcwYWJlMjhhN2VkMDFkZmI4YTJjYjdmMWM2MzY2MzdkMzg0NDEuLjZjNTI3ZDdlNWNkMzg5OTkx
NmI0NjVlZjcyZDU3MTQ0MDU2ZWQ3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aWYgRU5BQkxFKFZJREVPKQogCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJU
aW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtOTEsNiArOTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6
TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBtYXhUaW1l
U2Vla2FibGUoKSA/IFRpbWVSYW5nZXM6OmNyZWF0ZSgwLCBtYXhUaW1lU2Vla2FibGUoKSkgOiBU
aW1lUmFuZ2VzOjpjcmVhdGUoKTsgfQogICAgIHZpcnR1YWwgZmxvYXQgbWF4VGltZVNlZWthYmxl
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJl
ZCgpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDliMGViYmViYjhjOTJlMzQzYTJmMDFkY2M1MjYwNTAz
NDQ3OGU0YmEuLjUzNWE4MGVhYjg0NGVhZDgxZThlNDFmNDkxNWE2ZjdiMTVjMDhhYzYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMS0wMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgTWVkaWFDb250cm9sbGVyLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE0MDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xs
ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVy
LXBsYXliYWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtY29u
dHJvbGxlci1wbGF5YmFjay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250
cm9sbGVyLmh0bWw6IEFkZGVkLgorCiAyMDExLTExLTAzICBBbmRyZXkgS29zeWFrb3YgIDxjYXNl
cUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQnJvdWdodCBiYWNrIFRJTUVP
VVQgZm9yIHNob3ctaGlkZS10YWJsZS1yb3dzLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEv
bWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM2ZDRkMDdmZmNjZmNi
MzBlNzU1YWNjMjY4ZTY3NGY3NGFjY2MwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L21lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAKKyAK
K1Rlc3QgcHJlc2VuY2Ugb2YgTWVkaWFDb250cm9sbGVyIGNvbnN0cnVjdG9yLCBtZWRpYUNvbnRy
b2xsZXIsIGFuZCBtZWRpYUdyb3VwIGF0dHJpYnV0ZXM6CitFWFBFQ1RFRCAodHlwZW9mKE1lZGlh
Q29udHJvbGxlcikgPT0gJ29iamVjdCcpIE9LCitFWFBFQ1RFRCAodmlkZW8ubWVkaWFDb250cm9s
bGVyID09ICdudWxsJykgT0sKK0VYUEVDVEVEICh2aWRlby5tZWRpYUdyb3VwID09ICcnKSBPSwor
CitUZXN0IHRoYXQgdGhlIHByZXNlbmNlIG9mIGEgbWVkaWFHcm91cCBhdHRyaWJ1dGUgY3JlYXRl
cyBhIG1lZGlhQ29udHJvbGxlcjoKK0VYUEVDVEVEICh2aWRlbzIubWVkaWFHcm91cCA9PSAnZ3Jv
dXAnKSBPSworRVhQRUNURUQgKHZpZGVvMi5tZWRpYUNvbnRyb2xsZXIgIT0gJ251bGwnKSBPSwor
CitUZXN0IHRoYXQgc2V0dGluZyBtZWRpYUdyb3VwIHRvIGFuIGVtcHR5IHN0cmluZyByZW1vdmVz
IHRoZSBtZWRpYUNvbnRyb2xsZXI6CitSVU4odmlkZW8ubWVkaWFHcm91cCA9ICcnKQorRVhQRUNU
RUQgKHZpZGVvLm1lZGlhQ29udHJvbGxlciA9PSAnbnVsbCcpIE9LCisKK1Rlc3QgbWFudWFsbHkg
Y3JlYXRpbmcgYW5kIGFzc2lnbmluZyBhIG1lZGlhQ29udHJvbGxlciB0byBhIG1lZGlhIGVsZW1l
bnQ6CitSVU4oY29udHJvbGxlciA9IG5ldyBNZWRpYUNvbnRyb2xsZXIoKSkKK1JVTih2aWRlby5t
ZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyKQorRVhQRUNURUQgKHZpZGVvLm1lZGlhQ29udHJv
bGxlciA9PSAnW29iamVjdCBNZWRpYUNvbnRyb2xsZXJdJykgT0sKKworVGVzdCB0aGF0IHR3byBt
ZWRpYSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIG1lZGlhR3JvdXAgaGF2ZSB0aGUgc2FtZSBtZWRp
YUNvbnRyb2xsZXI6CitSVU4odmlkZW8ubWVkaWFHcm91cCA9ICdncm91cCcpCitSVU4odmlkZW8y
Lm1lZGlhR3JvdXAgPSAnZ3JvdXAnKQorRVhQRUNURUQgKHZpZGVvLm1lZGlhQ29udHJvbGxlciA9
PT0gdmlkZW8yLm1lZGlhQ29udHJvbGxlciA9PSAndHJ1ZScpIE9LCitFTkQgT0YgVEVTVAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2st
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4YThlMDkyMTNlZTFhNzEwN2I4MTFhYjlmODgzYWQ0
MDEyYTNmYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250
cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACisgCitSVU4oY29u
dHJvbGxlciA9IHZpZGVvLm1lZGlhQ29udHJvbGxlcikKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQor
UlVOKGNvbnRyb2xsZXIuY3VycmVudFRpbWUgPSA1KQorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRU
aW1lID09ICc1JykgT0sKK0VYUEVDVEVEICh2aWRlbzIuY3VycmVudFRpbWUgPT0gJzUnKSBPSwor
UlVOKHZpZGVvLnBsYXkoKSkKK1JVTih2aWRlbzIucGxheSgpKQorUlVOKGNvbnRyb2xsZXIucGxh
eSgpKQorRVZFTlQocGxheWluZykKK0VYUEVDVEVEIChjb250cm9sbGVyLnBhdXNlZCA9PSAnZmFs
c2UnKSBPSworRVZFTlQoZW5kZWQpCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9t
ZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2MyYjgzZWYx
YWE4ODk2ZDdjMjIwN2Y3YTk0NjQ5MGYzY2NmNWYyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbApAQCAtMCwwICsxLDQ5
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0
IHNyYz1tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz12aWRlby10
ZXN0LmpzPjwvc2NyaXB0PgorCisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBjb250cm9s
bGVyOworICAgICAgICB2YXIgdmlkZW8yOworCisgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewor
ICAgICAgICAgICAgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8n
KVswXTsKKyAgICAgICAgICAgIHZpZGVvMiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCd2aWRlbycpWzFdOworICAgICAgICAgICAgcnVuKCdjb250cm9sbGVyID0gdmlkZW8ubWVkaWFD
b250cm9sbGVyJyk7CisgICAgICAgICAgICBjb250cm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2Nh
bnBsYXl0aHJvdWdoJywgY2FucGxheXRocm91Z2gsIHRydWUpOworICAgICAgICAgICAgc2V0U3Jj
QnlUYWdOYW1lKCd2aWRlbycsIGZpbmRNZWRpYUZpbGUoJ3ZpZGVvJywgJ2NvbnRlbnQvdGVzdCcp
KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gY2FucGxheXRocm91Z2go
KSB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGNhbnBsYXl0aHJvdWdoKSIpOwor
ICAgICAgICAgICAgY29udHJvbGxlci5yZW1vdmVFdmVudExpc3RlbmVyKCdjYW5wbGF5dGhyb3Vn
aCcsIGNhbnBsYXl0aHJvdWdoLCB0cnVlKTsKKyAgICAgICAgICAgIHJ1bignY29udHJvbGxlci5j
dXJyZW50VGltZSA9IDUnKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8uY3VycmVu
dFRpbWUnLCA1KTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8yLmN1cnJlbnRUaW1l
JywgNSk7CisgICAgICAgICAgICBydW4oJ3ZpZGVvLnBsYXkoKScpOworICAgICAgICAgICAgcnVu
KCd2aWRlbzIucGxheSgpJyk7CisgICAgICAgICAgICBjb250cm9sbGVyLmFkZEV2ZW50TGlzdGVu
ZXIoJ3BsYXlpbmcnLCBwbGF5aW5nLCB0cnVlKTsKKyAgICAgICAgICAgIHJ1bignY29udHJvbGxl
ci5wbGF5KCknKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gcGxheWlu
ZygpIHsgCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKHBsYXlpbmcpIik7CisgICAg
ICAgICAgICBjb250cm9sbGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBwbGF5aW5n
LCB0cnVlKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnY29udHJvbGxlci5wYXVzZWQnLCBm
YWxzZSk7CisgICAgICAgICAgICBjb250cm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywg
ZW5kZWQsIHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZW5kZWQoKSB7IAor
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVChlbmRlZCkiKTsKKyAgICAgICAgICAgIGNv
bnRyb2xsZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignZW5kZWQnLCBlbmRlZCwgdHJ1ZSk7CisgICAg
ICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICAgIDx2aWRlbyBtZWRpYUdy
b3VwPSJncm91cCIgY29udHJvbHM+PC92aWRlbz4KKyAgICAgICAgPHZpZGVvIG1lZGlhR3JvdXA9
Imdyb3VwIiBjb250cm9scz48L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1j
b250cm9sbGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzBlNTk2NzU0ZDVhYmIxYzNlN2VkZjE0MjljNjkzYThiODc4NGZhMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbApA
QCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c2NyaXB0IHNyYz1tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorCisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IHZhciBjb250cm9sbGVyOworICAgICAgICB2YXIgdmlkZW8yOworCisgICAgICAgIGZ1bmN0aW9u
IHN0YXJ0KCkgeworICAgICAgICAgICAgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgndmlkZW8nKVswXTsKKyAgICAgICAgICAgIHZpZGVvMiA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCd2aWRlbycpWzFdOworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRl
c3QgcHJlc2VuY2Ugb2YgTWVkaWFDb250cm9sbGVyIGNvbnN0cnVjdG9yLCBtZWRpYUNvbnRyb2xs
ZXIsIGFuZCBtZWRpYUdyb3VwIGF0dHJpYnV0ZXM6Iik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInR5cGVvZihNZWRpYUNvbnRyb2xsZXIpIiwgIm9iamVjdCIpOworICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJ2aWRlby5tZWRpYUNvbnRyb2xsZXIiLCBudWxsKTsKKyAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8ubWVkaWFHcm91cCIsICIiKTsKKyAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiIik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgdGhhdCB0aGUgcHJlc2Vu
Y2Ugb2YgYSBtZWRpYUdyb3VwIGF0dHJpYnV0ZSBjcmVhdGVzIGEgbWVkaWFDb250cm9sbGVyOiIp
CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvMi5tZWRpYUdyb3VwIiwgJ2dyb3VwJyk7
CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvMi5tZWRpYUNvbnRyb2xsZXIiLCBudWxs
LCAiIT0iKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICBjb25z
b2xlV3JpdGUoIlRlc3QgdGhhdCBzZXR0aW5nIG1lZGlhR3JvdXAgdG8gYW4gZW1wdHkgc3RyaW5n
IHJlbW92ZXMgdGhlIG1lZGlhQ29udHJvbGxlcjoiKQorICAgICAgICAgICAgcnVuKCJ2aWRlby5t
ZWRpYUdyb3VwID0gJyciKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubWVkaWFD
b250cm9sbGVyIiwgbnVsbCk7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCJUZXN0IG1hbnVhbGx5IGNyZWF0aW5nIGFuZCBhc3NpZ25pbmcg
YSBtZWRpYUNvbnRyb2xsZXIgdG8gYSBtZWRpYSBlbGVtZW50OiIpCisgICAgICAgICAgICBydW4o
ImNvbnRyb2xsZXIgPSBuZXcgTWVkaWFDb250cm9sbGVyKCkiKTsKKyAgICAgICAgICAgIHJ1bigi
dmlkZW8ubWVkaWFDb250cm9sbGVyID0gY29udHJvbGxlciIpOworICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJ2aWRlby5tZWRpYUNvbnRyb2xsZXIiLCBjb250cm9sbGVyKTsKKyAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgdGhhdCB0
d28gbWVkaWEgZWxlbWVudHMgd2l0aCB0aGUgc2FtZSBtZWRpYUdyb3VwIGhhdmUgdGhlIHNhbWUg
bWVkaWFDb250cm9sbGVyOiIpCisgICAgICAgICAgICBydW4oInZpZGVvLm1lZGlhR3JvdXAgPSAn
Z3JvdXAnIik7CisgICAgICAgICAgICBydW4oInZpZGVvMi5tZWRpYUdyb3VwID0gJ2dyb3VwJyIp
OworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRpYUNvbnRyb2xsZXIgPT09IHZp
ZGVvMi5tZWRpYUNvbnRyb2xsZXIiLCB0cnVlKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJzdGFydCgpIj4KKyAgICAgICAgPHZpZGVvPjwvdmlkZW8+CisgICAgICAgIDx2aWRlbyBtZWRp
YWdyb3VwPSJncm91cCI+PC92aWRlbz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113712</attachid>
            <date>2011-11-04 14:18:52 -0700</date>
            <delta_ts>2011-11-08 08:59:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71408-20111104141850.patch</filename>
            <type>text/plain</type>
            <size>95225</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkzMTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0OTkyY2ZhN2UzZGRiMDE3
MTc4NTExYzAxNmZmYTM3ZjU2MjNhYTVmLi5lYTBkMjhmNDkzMTUwYjRmZGZjZmQwMjhjNTBjNjNh
NGZlMzdmZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTYwIEBACiAyMDExLTExLTA0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNv
bnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbAorCisgICAgICAgIEFkZHMgc3VwcG9ydCBm
b3IgdGhlIE1lZGlhQ29udHJvbGxlciBET00gb2JqZWN0LCBhbmQgdGhlIG1lZGlhZ3JvdXAgYW5k
IG1lZGlhY29udHJvbGxlcgorICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGF0dHJpYnV0ZXMuCisK
KyAgICAgICAgTWVkaWFDb250cm9sbGVyIGlzIGFuIERPTSBvYmplY3Qgd2hpY2ggc3luY2hyb25p
emVzIHBsYXliYWNrIG9mIG11bHRpcGxlIEhUTUxNZWRpYUVsZW1lbnRzLiBJdCBjYW4KKyAgICAg
ICAgZWl0aGVyIGJlIGNyZWF0ZWQgYnkgYSBwYWdlIHNjcmlwdCBhbmQgYXNzaWduZWQgdG8gYSBI
VE1MTWVkaWFFbGVtZW50IHVzaW5nIHRoZSBtZWRpYUNvbnRyb2xsZXIgcHJvcGVydHksCisgICAg
ICAgIG9yIGFsbCBIVE1MTWVkaWFFbGVtZW50cyB3aXRoIGlkZW50aWNhbCBtZWRpYWdyb3VwIGF0
dHJpYnV0ZXMgd2lsbCBoYXZlIGEgTWVkaWFDb250cm9sbGVyIGFzc2lnbmVkIAorICAgICAgICBh
dXRvbWF0aWNhbGx5LgorCisgICAgICAgIEFkZCBhbiBhYnN0cmFjdCBpbnRlcmZhY2UgaW1wbGVt
ZW50ZWQgYnkgYm90aCBNZWRpYUNvbnRyb2xsZXIgYW5kIEhUTUxNZWRpYUVsZW1lbnQuCisgICAg
ICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U6On5NZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UpOgorCisgICAgICAgIEFkZCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCBhbmQgSURMLgor
ICAgICAgICAqIGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChtZWRp
YUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXApOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpt
ZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
Y3JlYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6TWVkaWFDb250cm9sbGVyKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6fk1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChNZWRp
YUNvbnRyb2xsZXI6OmFkZE1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnJlbW92ZU1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmNvbnRhaW5z
TWVkaWFFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6YnVmZmVyZWQpOgorICAg
ICAgICAoTWVkaWFDb250cm9sbGVyOjpzZWVrYWJsZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnBsYXllZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKToKKyAgICAg
ICAgKE1lZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnBsYXkpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpwYXVzZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnNldERlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpz
ZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZCk6CisgICAgICAgIChNZWRpYUNvbnRy
b2xsZXI6OnJlcG9ydENvbnRyb2xsZXJTdGF0ZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnVwZGF0ZVJlYWR5U3RhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjp1cGRhdGVQbGF5
YmFja1N0YXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlTWVkaWFFbGVtZW50
cyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnNjaGVkdWxlRXZlbnQpOgorICAgICAgICAo
TWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpoYXNBdWRpbyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Omhhc1ZpZGVvKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzQ2xvc2VkQ2FwdGlvbnMpOgorICAgICAgICAoTWVk
aWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUpOgorICAgICAgICAoTWVkaWFD
b250cm9sbGVyOjpzdXBwb3J0c1NjYW5uaW5nKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
YmVnaW5TY3J1YmJpbmcpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjplbmRTY3J1YmJpbmcp
OgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjYW5QbGF5KToKKyAgICAgICAgKE1lZGlhQ29u
dHJvbGxlcjo6aXNMaXZlU3RyZWFtKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzU291
cmNlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6cmV0dXJuVG9SZWFsdGltZSk6CisgICAg
ICAgIChNZWRpYUNvbnRyb2xsZXI6OmlzQmxvY2tlZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6Omhhc0VuZGVkKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6bWVkaWFHcm91cCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xsZXI6OmRlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sbGVyOjp2b2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpt
dXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnJlYWR5U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1N0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6c3VwcG9ydHNGdWxsc2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6aXNGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbGxlcjo6Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sbGVyOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbGxlcjo6dG9NZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sbGVyOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvTWVk
aWFDb250cm9sbGVyLmlkbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGNvbnZlbmllbmNlIGZ1bmN0
aW9ucyB0byBUaW1lUmFuZ2VzIHdoaWNoIGNhbiBjYWxjdWxhdGUgaW50ZXJzZWN0aW9ucyBhbmQK
KyAgICAgICAgdW5pb25zIGJldHdlZW4gVGltZVJhbmdlcyBvYmplY3RzLgorICAgICAgICAqIGh0
bWwvVGltZVJhbmdlcy5jcHA6CisgICAgICAgIChUaW1lUmFuZ2VzOjpjb3B5KToKKyAgICAgICAg
KFRpbWVSYW5nZXM6OmludmVydCk6CisgICAgICAgIChUaW1lUmFuZ2VzOjppbnRlcnNlY3RXaXRo
KToKKyAgICAgICAgKFRpbWVSYW5nZXM6OnVuaW9uV2l0aCk6CisgICAgICAgICogaHRtbC9UaW1l
UmFuZ2VzLmg6CisKKyAgICAgICAgQWRkIE1lZGlhQ29udHJvbGxlckNvbnN0cnVjdG9yIHRvIHRo
ZSBXaW5kb3cgb2JqZWN0LgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKworICAgICAg
ICBBZGQgdGhlIHR3byBuZXcgYXR0cmlidXRlIG5hbWVzLCBtZWRpYWdyb3VwIGFuZCBtZWRpYWNv
bnRyb2xsZXIuCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYXR0cmlidXRlcywgYW5kIGFkZCBvdmVycmlkZGVu
IGJlaGF2aW9yIHdoZW4gYSBtZWRpYSBlbGVtZW50CisgICAgICAgIGhhcyBhIGN1cnJlbnQgbWVk
aWEgY29udHJvbGxlcjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlSW50ZXJuYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjplbmRlZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpzZXRNZWRpYUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRN
ZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmlzQmxvY2tlZE9uTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc1NvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0xpdmVTdHJlYW0pOgorICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpK
U0hUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcik6CisKKyAgICAgICAgQWRkIGEg
ZnVuY3Rpb24gInNlZWthYmxlIiB3aGljaCByZXR1cm5zIGEgVGltZVJhbmdlcyBjb250YWluaW5n
IHRoZSBzZWVrYWJsZSB0aW1lIHJhbmdlcworICAgICAgICBpbiBhIG1lZGlhIGVsZW1lbnQuICBC
eSBkZWZhdWx0IHRoaXMgaXMgYSBzaW5nbGUgcmFuZ2Ugb2YgWzAsIG1heFRpbWVTZWVrYWJsZV0u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNlZWthYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlOjpzZWVrYWJsZSk6CisKKyAgICAgICAgU3VwcG9ydCBmdW5jdGlvbnMgdG8gY2FzdCBiZXR3
ZWVuIE1lZGlhQ29udHJvbGxlciBhbmQgRXZlbnRUYXJnZXQuCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAg
KiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OnRv
TWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKworICAgICAg
ICBCb2lsZXJwbGF0ZSB0byBzdXBwb3J0IGNyZWF0aW5nIHRoZSBkZXJpdmVkIHNvdXJjZXMgZm9y
IE1lZGlhQ29udHJvbGxlciBhbmQgYWRkaW5nIG5ldyBzb3VyY2VzCisgICAgICAgIHRvIHRoZSBw
cm9qZWN0OgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLmNwcDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworMjAxMS0xMS0wNCAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KKwogICAgICAgICBBZGQgUGxhdGZvcm1DbG9ja1dpbi4KICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNTY2CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggMjFlYTM4YzYyNTMyZGNlZDNlZWVhMjVlYmY2YjVlZTBiZjE4
MGE5OC4uOGE1YTVhYzc1M2YwZmMwOTk0ZGZiMmIzNTRmOGY0ZGM2NjcyZjRmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTI3Niw2ICsyNzYsNyBAQCBTRVQoV2ViQ29yZV9JRExfRklMRVMKICAg
ICBodG1sL0hUTUxVbmtub3duRWxlbWVudC5pZGwKICAgICBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
aWRsCiAgICAgaHRtbC9JbWFnZURhdGEuaWRsCisgICAgaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRs
CiAgICAgaHRtbC9NZWRpYUVycm9yLmlkbAogICAgIGh0bWwvVGV4dE1ldHJpY3MuaWRsCiAgICAg
aHRtbC9UZXh0VHJhY2suaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggYjNmMWUz
ZmI5OTZlNzkwMzkzZDlmZGM4NmY2OTFiOGE2MTUzZDNkNi4uNTU4NzYwOTA2NjlkMjllNzM2YzFh
ODZkNjIwMmI3NDJiMDJjMmYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtMjI4
LDYgKzIyOCw3IEBACiAjaW5jbHVkZSAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCIKICNpbmNs
dWRlICJKU0tleWJvYXJkRXZlbnQuY3BwIgogI2luY2x1ZGUgIkpTTG9jYXRpb24uY3BwIgorI2lu
Y2x1ZGUgIkpTTWVkaWFDb250cm9sbGVyLmNwcCIKICNpbmNsdWRlICJKU01lZGlhRXJyb3IuY3Bw
IgogI2luY2x1ZGUgIkpTTWVkaWFMaXN0LmNwcCIKICNpbmNsdWRlICJKU01lZGlhUXVlcnlMaXN0
LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGU2MDc0YzFlZDc3MTM0ZTVi
Y2JlYTZhOThiNWUxOGRjOTk4YWE3MGYuLjQ4NDk1NjI3MzVmM2I2MDFmNGRkOTUwNWUxMGFiMjFi
N2EyOGIwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjc3LDYgKzI3Nyw3
IEBAIERPTV9DTEFTU0VTID0gXAogICAgIEtleWJvYXJkRXZlbnQgXAogICAgIExvY2F0aW9uIFwK
ICAgICBMb3dQYXNzMkZpbHRlck5vZGUgXAorICAgIE1lZGlhQ29udHJvbGxlciBcCiAgICAgTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlIFwKICAgICBNZWRpYUVycm9yIFwKICAgICBNZWRpYUxp
c3QgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCmluZGV4IGNhZWI3OTllNjc2ZDEyMGE0ZTg5
Y2U4NDA0Mzc0NzU3MmM0ZjdlOTYuLmM2ZjUyZTgzN2E3ZTJmZmYzMTUzMzE1YTUxY2U0ODY4MDUx
NjdmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKQEAgLTMxNCw2ICszMTQsNyBAQCBJ
RExfQklORElOR1MgKz0gXAogICAgIGh0bWwvSFRNTFVua25vd25FbGVtZW50LmlkbCBcCiAgICAg
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbCBcCiAgICAgaHRtbC9JbWFnZURhdGEuaWRsIFwKKyAg
ICBodG1sL01lZGlhQ29udHJvbGxlci5pZGwgXAogICAgIGh0bWwvTWVkaWFFcnJvci5pZGwgXAog
ICAgIGh0bWwvVGV4dE1ldHJpY3MuaWRsIFwKICAgICBodG1sL1RpbWVSYW5nZXMuaWRsIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDcyODFhZjU3NGRmYmQ2MDQ0MDI4NjBkMWNl
ZDRiOWRmYzBhMGRmYzYuLmE5ODAwZDY0ZGM5ZGNhZWFiNTc1ZjMwYzUyODg3MDA0ZGM3MjI0YWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzU5LDYgKzM1OSw4IEBAIHdlYmNv
cmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0xvY2FsTWVk
aWFTdHJlYW0uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0xvY2F0aW9uLmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0xvY2F0aW9uLmggXAorCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNNZWRpYUNvbnRyb2xsZXIuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TWVkaWFDb250cm9sbGVyLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUVycm9y
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhRXJyb3IuaCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhTGlzdC5jcHAgXApAQCAtMTg2OCw2ICsxODcwLDggQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtSZWxBdHRyaWJ1
dGUuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaCBcCisJU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29u
dHJvbGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUVycm9yLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMjhhNzUwZTAzOTJmYjZkZGMxNDJlZjEy
NmE5MzU5MmI1ZjllNTdkMy4uMGFiYjg1NGY4MmI5ODc0ODkwZTY5ODg3MDVkZmVkZWE1OWFmNGY3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCkBAIC0xMDE4LDYgKzEwMTgsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBw
bGF0Zm9ybS90ZXh0L0xvY2FsaXplZERhdGVOb25lLmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9M
b2NhbGl6ZWROdW1iZXJOb25lLmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFi
bGUuY3BwIFwKKyAgICBwbGF0Zm9ybS9DbG9jay5jcHAgXAogICAgIHBsYXRmb3JtL0NvbnRlbnRU
eXBlLmNwcCBcCiAgICAgcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIFwKICAgICBwbGF0
Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAgXApAQCAtMTExMCw2ICsxMTExLDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAgXAogICAgIHBs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIFwKKyAgICBwbGF0Zm9ybS9wb3NpeC9QbGF0Zm9ybUNs
b2NrUG9zaXguY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAgXAogICAgIHBs
YXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAgXApAQCAtMTg0OCw2ICsxODUwLDcg
QEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5oIFwKICAgICBodG1sL0xp
bmtSZWxBdHRyaWJ1dGUuaCBcCiAgICAgaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oIFwKKyAgICBo
dG1sL01lZGlhQ29udHJvbGxlci5oIFwKICAgICBodG1sL01lZGlhRG9jdW1lbnQuaCBcCiAgICAg
aHRtbC9NaWNyb0RhdGFJdGVtVmFsdWUuaCBcCiAgICAgaHRtbC9QbHVnaW5Eb2N1bWVudC5oIFwK
QEAgLTIwMzUsNiArMjAzOCw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL2FuaW1hdGlv
bi9BbmltYXRpb25MaXN0LmggXAogICAgIHBsYXRmb3JtL0FyZW5hLmggXAogICAgIHBsYXRmb3Jt
L0FzeW5jRmlsZVN0cmVhbS5oIFwKKyAgICBwbGF0Zm9ybS9QbGF0Zm9ybUNsb2NrLmggXAogICAg
IHBsYXRmb3JtL0NvbnRlbnRUeXBlLmggXAogICAgIHBsYXRmb3JtL0NvbnRleHRNZW51LmggXAog
ICAgIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmggXApAQCAtMjE4Miw2ICsyMTg2LDcgQEAg
SEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5o
IFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3F0L0Ruc1ByZWZldGNoSGVscGVyLmggXAogICAgIHBs
YXRmb3JtL25ldHdvcmsvcXQvTmV0d29ya1N0YXRlTm90aWZpZXJQcml2YXRlLmggXAorICAgIHBs
YXRmb3JtL3Bvc2l4L1BsYXRmb3JtQ2xvY2tQT1NJWC5oIFwKICAgICBwbGF0Zm9ybS9QbGF0Zm9y
bVRvdWNoRXZlbnQuaCBcCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmggXAogICAg
IHBsYXRmb3JtL1BvcHVwTWVudS5oIFwKQEAgLTMwODYsNiArMzA5MSw3IEBAIGNvbnRhaW5zKERF
RklORVMsIEVOQUJMRV9WSURFTz0xKSB7CiAgICAgICAgIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgXAogICAgICAgICBodG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcCBcCiAgICAgICAgIGh0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAgXAorICAgICAgICBodG1sL01lZGlhQ29udHJvbGxlci5jcHAg
XAogICAgICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgXAogICAgICAg
ICBodG1sL1RpbWVSYW5nZXMuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjODA5NjhkZDA3Y2VkMWNlNDU5NTA3ZjJl
ODRjYTExNmI0NzgxNzk3Li4xNDQwYTdhNWNhOWQwODQ3YjU2NjdhNzg5NmYyNDg1ZjAwMDRhZmQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMzI5LDYgKzEzMjksNyBAQAogICAgICAgICAgICAgJ2h0
bWwvSFRNTFVua25vd25FbGVtZW50LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9JbWFnZURhdGEuaWRsJywKKyAgICAgICAg
ICAgICdodG1sL01lZGlhQ29udHJvbGxlci5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvTWVkaWFF
cnJvci5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvVGV4dE1ldHJpY3MuaWRsJywKICAgICAgICAg
ICAgICdodG1sL1RleHRUcmFjay5pZGwnLApAQCAtNTU4Myw2ICs1NTg0LDggQEAKICAgICAgICAg
ICAgICdodG1sL0xpbmtSZWxBdHRyaWJ1dGUuaCcsCiAgICAgICAgICAgICAnaHRtbC9Mb2FkYWJs
ZVRleHRUcmFjay5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaCcs
CisgICAgICAgICAgICAnaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAgICdo
dG1sL01lZGlhQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdodG1sL01lZGlhRG9jdW1lbnQu
Y3BwJywKICAgICAgICAgICAgICdodG1sL01lZGlhRG9jdW1lbnQuaCcsCiAgICAgICAgICAgICAn
aHRtbC9NZWRpYUVycm9yLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagppbmRleCA5MGQ4MmNjN2M2MjQ1OTA3YWMzMzZlN2I2MzFjZTA0ZjkwZmQxN2Q0
Li5lZjg2NGNlMjNkNjFjMzlkNzQ3NWYwZDVkOWIwYmM2NGE1OTFjNjEyIDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTc1NjYsNiArNTc1NjYs
MTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aHRtbFxNZWRpYUNvbnRyb2xsZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXE1lZGlhQ29udHJvbGxlci5oIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXE1lZGlhRG9jdW1lbnQu
Y3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMWJjZDVlMTdiZjBmYjM5YTYzYzE5YjUwN2Nj
ZWU5N2JhMzY5ZDk1Li4wOWRkMWM3YTFmOTk1YmNkMzUzNzU1NWMwYTAxNmRkMGYzOGY4YTgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC01NzAzLDE3ICs1NzAzLDIyIEBACiAJCUNEMERCRkVFMTQyMjc2ODUwMDI4MDI2MyAvKiBJ
UkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1LndhdiBpbiBDb3B5IEF1ZGlvIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDBEQkUwRDE0MjI3NTk1MDAy
ODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXYgKi87IH07CiAJCUNE
MERCRkVGMTQyMjc2ODUwMDI4MDI2MyAvKiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzMw
LndhdiBpbiBDb3B5IEF1ZGlvIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDBEQkUwRTE0MjI3NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1
X1QzNDVfUDMzMC53YXYgKi87IH07CiAJCUNEMERCRkYwMTQyMjc2ODUwMDI4MDI2MyAvKiBJUkNf
Q29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzQ1LndhdiBpbiBDb3B5IEF1ZGlvIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDBEQkUwRjE0MjI3NTk1MDAyODAy
NjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXYgKi87IH07CisJCUNEMjdG
NkU1MTQ1NzY4NUEwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFMjE0NTc2NzU4MDA3ODIw
N0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICovOyB9OworCQlDRDI3RjZFNzE0NTc3MEQzMDA3
ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkU2MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRy
b2xsZXIuY3BwICovOyB9OwogCQlDRDgyMDMwQTEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q4MjAzMDYxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRDgyMDMwQjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEODIwMzA3MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Lm1tICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLXVuZGVmIjsgfTsgfTsK
IAkJQ0Q4MjAzMEMxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRv
d0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEODIwMzA4MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0Q4MjAzMEQxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhV
RFdpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDgyMDMwOTEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVu
SFVEV2luZG93Q29udHJvbGxlci5tbSAqLzsgfTsKIAkJQ0Q4MjAzMTAxMzk1QUNFNzAwRjk1NkM2
IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0Q4MjAzMEUxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1h
dGlvbi5oICovOyB9OwogCQlDRDgyMDMxMTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5p
bWF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0Q4MjAzMEYxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSAqLzsgfTsK
KwkJQ0RENTI1RDcxNDVCNkREMDAwOEQyMDREIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY2NUND
QzE0NUI2QUZFMDBDNEM3QUEgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCAqLzsgfTsK
IAkJQ0RFQTc2MzAxNDYwOEE1MzAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBNzYyRTE0NjA4NERF
MDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCAqLzsgfTsKIAkJQ0RFQTc2MzQxNDYwQjU2
RjAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tQT1NJWC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBNzYzMjE0NjBBRTI5MDA4QjMxRjEgLyogUGxh
dGZvcm1DbG9ja1BPU0lYLmNwcCAqLzsgfTsKIAkJQ0RFQTc2MzUxNDYwQjcxQTAwOEIzMUYxIC8q
IENsb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERUE3NjMzMTQ2MEI0NjIwMDhCMzFGMSAvKiBDbG9jay5jcHAgKi87IH07CiAJCUNERUE3Qzg0
MTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBN0M4MjEyNzYyMzA0MDBCODQ2REQgLyog
UmVuZGVyRnVsbFNjcmVlbi5oICovOyB9OwogCQlDREVBN0M4NTEyNzYyMzA0MDBCODQ2REQgLyog
UmVuZGVyRnVsbFNjcmVlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREVBN0M4MzEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5j
cHAgKi87IH07CisJCUNERjY1Q0M4MTQ1QjFFNzUwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkU0
MTQ1NzY3ODcwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREY2NUNDQTE0NUI0NDg4MDBDNEM3QUEg
LyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEgLyogTWVkaWFDb250
cm9sbGVySW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQ0UwMkYwQzQxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJC
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTAy
RjBDMzExRTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTA1N0ZBNTEyMjA3MzEx
MDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDU3RkEzMTIyMDczMTEwMEE0NzZENSAv
KiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlDRTA1N0ZBNjEyMjA3MzEx
MDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBNDEyMjA3MzExMDBBNDc2RDUgLyog
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyOTk2LDYgKzEzMDAxLDExIEBACiAJCUNEMERCRTBEMTQy
Mjc1OTUwMDI4MDI2MyAvKiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1LndhdiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGF1ZGlvLndhdjsg
bmFtZSA9IElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUud2F2OyBwYXRoID0gcGxhdGZv
cm0vYXVkaW8vcmVzb3VyY2VzL0lSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUud2F2OyBz
b3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCUNEMERCRTBFMTQyMjc1OTUwMDI4MDI2MyAv
KiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzMwLndhdiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGF1ZGlvLndhdjsgbmFtZSA9IElSQ19Db21w
b3NpdGVfQ19SMDE5NV9UMzQ1X1AzMzAud2F2OyBwYXRoID0gcGxhdGZvcm0vYXVkaW8vcmVzb3Vy
Y2VzL0lSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMzAud2F2OyBzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7IH07CiAJCUNEMERCRTBGMTQyMjc1OTUwMDI4MDI2MyAvKiBJUkNfQ29tcG9zaXRl
X0NfUjAxOTVfVDM0NV9QMzQ1LndhdiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IGF1ZGlvLndhdjsgbmFtZSA9IElSQ19Db21wb3NpdGVfQ19SMDE5NV9U
MzQ1X1AzNDUud2F2OyBwYXRoID0gcGxhdGZvcm0vYXVkaW8vcmVzb3VyY2VzL0lSQ19Db21wb3Np
dGVfQ19SMDE5NV9UMzQ1X1AzNDUud2F2OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJ
CUNEMjdGNkUwMTQ1NzVDMUIwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1l
ZGlhQ29udHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjdGNkUy
MTQ1NzY3NTgwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEMjdGNkUzMTQ1NzY3NTgwMDc4MjA3RCAvKiBKU01lZGlhQ29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhQ29udHJv
bGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDI3RjZFNDE0NTc2Nzg3MDA3
ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDI3
RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxsc2NyZWVu
LmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlbi5jc3M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzA2MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0Q4MjAzMDcxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTMwMDQsNiArMTMwMTQsOCBAQAogCQlDRDgyMDMwRTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2lu
ZG93QW5pbWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYldpbmRv
d0FuaW1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDgyMDMwRjEzOTVB
Q0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViV2luZG93QW5pbWF0aW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREJEOTNCQTEzMzNCRDRCMDAyNTcwRTMgLyogZnVsbHNjcmVlblF1
aWNrVGltZS5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW5RdWlja1Rp
bWUuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRENFNUNDRjE0NjMzQkM5MDBE
NDdDQ0EgLyogRXZlbnRGYWN0b3J5LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEV2ZW50RmFj
dG9yeS5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDRTVDRDAxNDYzM0JDOTAw
RDQ3Q0NBIC8qIEV2ZW50VGFyZ2V0RmFjdG9yeS5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBF
dmVudFRhcmdldEZhY3RvcnkuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3
NjJDMTQ2MDgyMjQwMDhCMzFGMSAvKiBDbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBNzYyRTE0
NjA4NERFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtQ2xvY2tDQS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNERUE3NjJGMTQ2MDg0RUUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0Eu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NBLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzAxMiw2ICsxMzAyNCw4IEBACiAJCUNERUE3
NjMzMTQ2MEI0NjIwMDhCMzFGMSAvKiBDbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
RUE3QzgyMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckZ1bGxTY3JlZW4uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0RFQTdDODMxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3Jl
ZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRnVsbFNj
cmVlbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjY1Q0M5MTQ1QjQzQTcw
MEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNERjY1Q0NDMTQ1QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVs
ZW1lbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNI
VE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0UwMkYwQzMxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENvbnRyb2xsZXJCYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDU3RkEzMTIyMDczMTEwMEE0NzZENSAvKiBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJv
bGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MzUwLDYgKzE3MzY0
LDEwIEBACiAJCQkJRTQ0NjEzQTAwQ0Q2MzMxMDAwRkFEQTc1IC8qIFZvaWRDYWxsYmFjay5pZGwg
Ki8sCiAJCQkJRjU1QjNEQUIxMjUxRjEyRDAwM0VGMjY5IC8qIFdlZWtJbnB1dFR5cGUuY3BwICov
LAogCQkJCUY1NUIzREFDMTI1MUYxMkQwMDNFRjI2OSAvKiBXZWVrSW5wdXRUeXBlLmggKi8sCisJ
CQkJQ0QyN0Y2RTAxNDU3NUMxQjAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5pZGwgKi8sCisJ
CQkJQ0QyN0Y2RTQxNDU3Njc4NzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5oICovLAorCQkJ
CUNEMjdGNkU2MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwICovLAorCQkJ
CUNERjY1Q0M5MTQ1QjQzQTcwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCAq
LywKIAkJCSk7CiAJCQlwYXRoID0gaHRtbDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC0xNzU4Myw2ICsxNzYwMSw4IEBACiAJCUE4M0I3OTA4MENDQUZGMkIwMDBCMDgyNSAvKiBIVE1M
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDRDI3RjZF
MjE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICovLAorCQkJCUNEMjdG
NkUzMTQ1NzY3NTgwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5oICovLAogCQkJCTQ5RUVD
RUYyMTA1MDcwQzQwMDA5OUZBQiAvKiBKU0FycmF5QnVmZmVyLmNwcCAqLywKIAkJCQk0OUVFQ0VG
MzEwNTA3MEM0MDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlci5oICovLAogCQkJCTQ5RUVDRjE5MTA1
MDcyRjMwMDA5OUZBQiAvKiBKU0FycmF5QnVmZmVyVmlldy5jcHAgKi8sCkBAIC0xOTYwMSw2ICsx
OTYyMSw3IEBACiAJCQkJQkNDNDM4NzcwRTg4NkNDNzAwNTMzREQ1IC8qIEpTSFRNTElucHV0RWxl
bWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJRTFBRDE0MjIxMjk1RUE3RjAwQUNBOTg5IC8qIEpTSFRN
TElucHV0RWxlbWVudEN1c3RvbS5oICovLAogCQkJCUUxQUQxMzlBMTI5NUQ5MjYwMEFDQTk4OSAv
KiBKU0hUTUxMaW5rRWxlbWVudEN1c3RvbS5jcHAgKi8sCisJCQkJQ0RGNjVDQ0MxNDVCNkFGRTAw
QzRDN0FBIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkMzMDVDQTMw
QzA3ODFCQjAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJ
CUUxQUQxNDI0MTI5NUVBOTUwMEFDQTk4OSAvKiBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmgg
Ki8sCiAJCQkJNDQ4QUQyN0EwQTQ4MTM3OTAwMjNEMTc5IC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0
aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTIwOTExLDYgKzIwOTMyLDggQEAKIAkJRjUyM0QzMjQwMkRF
NDQ3ODAxODYzNUNBIC8qIGRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQ0RDRTVDQ0YxNDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50RmFjdG9yeS5pbiAq
LywKKwkJCQlDRENFNUNEMDE0NjMzQkM5MDBENDdDQ0EgLyogRXZlbnRUYXJnZXRGYWN0b3J5Lmlu
ICovLAogCQkJCUUxQzRERTZEMEVBNzVDNjUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuY3Bw
ICovLAogCQkJCUUxQzRERTY4MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuaCAq
LywKIAkJCQlBOEM0QTdGQzA5RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5jcHAgKi8sCkBAIC0yNDU5
MSw2ICsyNDYxNCw4IEBACiAJCQkJMDc4NDYzODUxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJhY2tD
dXN0b20uaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOEZFQkREMTQzRTNFRjcwMDcyNTAyQiAvKiBD
U1NDcm9zc2ZhZGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2OTM3OUMxNDYwOUM2QzAw
QzAxMzYyIC8qIERyYWdTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREY2NUNDODE0NUIx
RTc1MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREY2
NUNDQTE0NUI0NDg4MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTI3NDQzLDYgKzI3NDY4LDkgQEAKIAkJCQkwNzY4OUQ2RTE0NUI1MkNDMDAx
Q0QxMzIgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOEZF
QkRDMTQzRTNFRjcwMDcyNTAyQiAvKiBDU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDREVBNzYzMDE0NjA4QTUzMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUNEMjdGNkU1MTQ1NzY4NUEwMDc4MjA3RCAvKiBKU01lZGlhQ29u
dHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDI3RjZFNzE0NTc3MEQzMDA3ODIwN0Qg
LyogTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNERDUyNUQ3MTQ1QjZE
RDAwMDhEMjA0RCAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0RFQTc2MzQxNDYwQjU2RjAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tQT1NJWC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDREVBNzYzNTE0NjBCNzFBMDA4QjMxRjEgLyogQ2xvY2suY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKaW5kZXggNGFiZWEwNWU4
YjFiZDJmZjYzNjc1MTA4NTFiYzhiMDczZTE0ZWQ3Yi4uYzk0Y2Y3N2ViNzVhMTkxZTI3YmMzYTg4
OGMwYjM2ZDg5YTc5NmZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCkBAIC0xMDksNiArMTA5LDEx
IEBAIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbFNvdXJjZUVsZW1lbnRFbmFibGVk
KCkKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7CiB9CiAKK2Jvb2wgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFDb250cm9sbGVyRW5hYmxlZCgpCit7CisgICAgcmV0
dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOworfQorCiBib29sIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6Om1lZGlhRXJyb3JFbmFibGVkKCkKIHsKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6
OmlzQXZhaWxhYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dl
bmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDY2MjRjN2FjMDIzOGVmNGQ2YjVm
YzM0YTRlYzU2YTljYzFiYWY1ZWEuLjczMTkwNGQ1ZmM4ZmM1YWJiMzNhNGFkMTc2NTAzYjk4NTA5
YzM2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMv
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC05NCw2ICs5NCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBodG1sQXVkaW9FbGVtZW50RW5hYmxlZCgpOwogICAgIHN0YXRpYyBib29sIGh0
bWxWaWRlb0VsZW1lbnRFbmFibGVkKCk7CiAgICAgc3RhdGljIGJvb2wgaHRtbFNvdXJjZUVsZW1l
bnRFbmFibGVkKCk7CisgICAgc3RhdGljIGJvb2wgbWVkaWFDb250cm9sbGVyRW5hYmxlZCgpOwog
ICAgIHN0YXRpYyBib29sIG1lZGlhRXJyb3JFbmFibGVkKCk7CiAgICAgc3RhdGljIGJvb2wgdGlt
ZVJhbmdlc0VuYWJsZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggMDAwYzViZmE3ZjQzNDk3MWZiN2Y0MTFj
MDVkMzFiZjZjZDNhYzUxYy4uY2ZkZDYyYjU5NzgwYzAxMmI1NjBiZDEwNjc2YzRkN2YyN2E4OWIz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5P
bmUuY3BwCkBAIC05Miw2ICs5Miw3IEBACiAjaW5jbHVkZSAiSlNIVE1MRnJhbWVTZXRFbGVtZW50
Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwIgogI2lu
Y2x1ZGUgIkpTSFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU0hUTUxNZWRp
YUVsZW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCIKICNpbmNs
dWRlICJKU0hUTUxPdXRwdXRFbGVtZW50Q3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU5ZWU2ZWZiMmY3MmExNjRkMTgwNjcxYjVlODk1Y2ZlZjZjZmEyZTUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0
b20uY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgRU5BQkxFKFZJREVPKQorCisj
aW5jbHVkZSAiSlNIVE1MTWVkaWFFbGVtZW50LmgiCisKKyNpbmNsdWRlICJKU01lZGlhQ29udHJv
bGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisK
K3ZvaWQgSlNIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNvbnRyb2xsZXIoRXhlY1N0YXRlKiwg
SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBpbXAgPSBzdGF0aWNfY2Fz
dDxIVE1MTWVkaWFFbGVtZW50Kj4oaW1wbCgpKTsKKyAgICAvLyBPbiBzZXR0aW5nLCBpdCBtdXN0
IGZpcnN0IHJlbW92ZSB0aGUgZWxlbWVudCdzIG1lZGlhZ3JvdXAgYXR0cmlidXRlLCBpZiBhbnks
IAorICAgIGltcC0+c2V0TWVkaWFHcm91cChTdHJpbmcoKSk7CisgICAgLy8gYW5kIHRoZW4gc2V0
IHRoZSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIgdG8gdGhlIGdpdmVuIHZhbHVlLgorICAgIGlt
cC0+c2V0TWVkaWFDb250cm9sbGVyKHRvTWVkaWFDb250cm9sbGVyKHZhbHVlKSk7Cit9CisKK30K
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCBjNmYxZjNkNDQzYjg1YjZmNjQy
MGNlZWM5NGJlZmIyMjc4NjJkNDQ2Li5iYWYwZWZjODlkNGFkZWFhYjMxYzcyMzMwZjhkMTVkZTE5
ZDk4OGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtNTUsNiArNTUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q7CiAgICAg
Y2xhc3MgSmF2YVNjcmlwdEF1ZGlvTm9kZTsKICAgICBjbGFzcyBMb2NhbE1lZGlhU3RyZWFtOwor
ICAgIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsKICAgICBjbGFzcyBNZWRpYVN0cmVhbTsKICAgICBj
bGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldEZhY3RvcnkuaW4KaW5kZXggNmJkYjJlMjFjYTk2YjNlMTBkM2JlMWM3MWVmNzMwZDI3
ZjAwZDkxZC4uMmEzODkwMzU3YmFmOWU5NjZhN2YxMzcxNGQ2MTBlZjdkZTEwODRhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC0xMyw2ICsxMyw3IEBAIElE
QlRyYW5zYWN0aW9uIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQlZlcnNpb25DaGFu
Z2VSZXF1ZXN0IGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIEphdmFTY3JpcHRBdWRpb05v
ZGUgY29uZGl0aW9uYWw9V0VCX0FVRElPCiBMb2NhbE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1F
RElBX1NUUkVBTQorTWVkaWFDb250cm9sbGVyIGNvbmRpdGlvbmFsPVZJREVPCiBNZWRpYVN0cmVh
bSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1lc3NhZ2VQb3J0CiBOb2RlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IGYxZTM1NGI2MzFmNDliYTNhYzEw
MWU1NTEzZDI3NWFjNWQyZDA5ODIuLmFlNWZiNzFjZWVlODY0MDk4MzZmZTJkNTAxZWMzZmE5OTBi
YTM3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVz
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBAIC0x
NDgsNiArMTQ4LDcgQEAgbWF4CiBtYXhsZW5ndGgKIG1heXNjcmlwdAogbWVkaWEKK21lZGlhZ3Jv
dXAKIG1ldGhvZAogbWluCiBtdWx0aXBsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKaW5kZXggYzkwNjVmNjkxYTljMGNhZTllNmVmNjQzMmI4MTdjZmMyYmQ3OTcwZi4u
MTg0NDA1NGE2NDkwMTdiYjFkZjU5YjMwZmExNDU5Nzk4NWIyNGFlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAi
SFRNTFNvdXJjZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
Ik1lZGlhQ29udHJvbHMuaCIKICNpbmNsdWRlICJNZWRpYURvY3VtZW50LmgiCiAjaW5jbHVkZSAi
TWVkaWFFcnJvci5oIgpAQCAtMjI4LDYgKzIyOSw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1M
TWVkaWFFbGVtZW50KCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tz
LnNpemUoKTsgKytpKQogICAgICAgICBtX3RleHRUcmFja3NbaV0tPnNldENsaWVudCgwKTsKICNl
bmRpZgorCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQorICAgICAgICBtX21lZGlhQ29udHJv
bGxlci0+cmVtb3ZlTWVkaWFFbGVtZW50KHRoaXMpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKQEAgLTI5NCw3ICsyOTgsOSBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikK
ICAgICAgICAgaWYgKCFhdXRvcGxheSgpICYmIG1fcGxheWVyKQogICAgICAgICAgICAgbV9wbGF5
ZXItPnNldFByZWxvYWQobV9wcmVsb2FkKTsKIAotICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0g
b25hYm9ydEF0dHIpCisgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBtZWRpYWdyb3VwQXR0cikK
KyAgICAgICAgc2V0TWVkaWFHcm91cChhdHRyLT52YWx1ZSgpKTsKKyAgICBlbHNlIGlmIChhdHRy
TmFtZSA9PSBvbmFib3J0QXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuYWJvcnRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlz
LCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25iZWZvcmVsb2FkQXR0cikKICAg
ICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2
ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKQEAgLTU4NCwx
MCArNTkwLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQoKQogICAg
ICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKICAgICAgICAgaW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsK
ICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW1wdGllZEV2ZW50KTsKKyAgICAg
ICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiAgICAgfQogCiAgICAgLy8gNSAtIFNldCB0aGUg
cGxheWJhY2tSYXRlIGF0dHJpYnV0ZSB0byB0aGUgdmFsdWUgb2YgdGhlIGRlZmF1bHRQbGF5YmFj
a1JhdGUgYXR0cmlidXRlLgotICAgIHNldFBsYXliYWNrUmF0ZShkZWZhdWx0UGxheWJhY2tSYXRl
KCkpOworICAgIHNldFBsYXliYWNrUmF0ZShtX21lZGlhQ29udHJvbGxlciA/IG1fbWVkaWFDb250
cm9sbGVyLT5kZWZhdWx0UGxheWJhY2tSYXRlKCkgOiBkZWZhdWx0UGxheWJhY2tSYXRlKCkpOwog
CiAgICAgLy8gNiAtIFNldCB0aGUgZXJyb3IgYXR0cmlidXRlIHRvIG51bGwgYW5kIHRoZSBhdXRv
cGxheWluZyBmbGFnIHRvIHRydWUuCiAgICAgbV9lcnJvciA9IDA7CkBAIC0xMjI0LDYgKzEyMzEs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJl
YWR5U3RhdGUgc3RhdGUpCiAgICAgfQogCiAgICAgdXBkYXRlUGxheVN0YXRlKCk7CisgICAgdXBk
YXRlTWVkaWFDb250cm9sbGVyKCk7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQpAQCAt
MTUyMyw2ICsxNTMxLDEwIEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lKCkg
Y29uc3QKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50VGltZShmbG9hdCB0aW1l
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpIHsKKyAg
ICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAg
ICBzZWVrKHRpbWUsIGVjKTsKIH0KIApAQCAtMTU3Myw4ICsxNTg1LDE2IEBAIGZsb2F0IEhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1l
ZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKCVmKSIsIHJhdGUpOworICAgIGlmIChtX21lZGlh
Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2V0UGxheWJhY2tSYXRlSW50ZXJu
YWwocmF0ZSk7Cit9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlSW50
ZXJuYWwoZmxvYXQgcmF0ZSkKK3sKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRQbGF5YmFja1JhdGVJbnRlcm5hbCglZikiLCByYXRlKTsKKyAgICAKICAgICBpZiAobV9wbGF5
YmFja1JhdGUgIT0gcmF0ZSkgewogICAgICAgICBtX3BsYXliYWNrUmF0ZSA9IHJhdGU7CiAgICAg
ICAgIGludmFsaWRhdGVDYWNoZWRUaW1lKCk7CkBAIC0xNjc2LDcgKzE2OTYsMTAgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwoKQogICAgICAgICBFeGNlcHRpb25Db2RlIHVu
dXNlZDsKICAgICAgICAgc2VlaygwLCB1bnVzZWQpOwogICAgIH0KLSAgICAKKworICAgIGlmICht
X21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgbV9tZWRpYUNvbnRyb2xsZXItPmJyaW5nRWxlbWVu
dFVwVG9TcGVlZCh0aGlzKTsKKwogICAgIGlmIChtX3BhdXNlZCkgewogICAgICAgICBtX3BhdXNl
ZCA9IGZhbHNlOwogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVkVGltZSgpOwpAQCAtMTY5MCw2ICsx
NzEzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwoKQogICAgIG1fYXV0
b3BsYXlpbmcgPSBmYWxzZTsKIAogICAgIHVwZGF0ZVBsYXlTdGF0ZSgpOworICAgIHVwZGF0ZU1l
ZGlhQ29udHJvbGxlcigpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlKCkKQEAg
LTE4ODEsNyArMTkwNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dG9nZ2xlUGxheVN0YXRl
KCkKICAgICAvLyBXZSBjYW4gc2FmZWx5IGNhbGwgdGhlIGludGVybmFsIHBsYXkvcGF1c2UgbWV0
aG9kcywgd2hpY2ggZG9uJ3QgY2hlY2sgcmVzdHJpY3Rpb25zLCBiZWNhdXNlCiAgICAgLy8gdGhp
cyBtZXRob2QgaXMgb25seSBjYWxsZWQgZnJvbSB0aGUgYnVpbHQtaW4gbWVkaWEgY29udHJvbGxl
cgogICAgIGlmIChjYW5QbGF5KCkpIHsKLSAgICAgICAgc2V0UGxheWJhY2tSYXRlKGRlZmF1bHRQ
bGF5YmFja1JhdGUoKSk7CisgICAgICAgIHNldFBsYXliYWNrUmF0ZShtX21lZGlhQ29udHJvbGxl
ciA/IG1fbWVkaWFDb250cm9sbGVyLT5kZWZhdWx0UGxheWJhY2tSYXRlKCkgOiBkZWZhdWx0UGxh
eWJhY2tSYXRlKCkpOwogICAgICAgICBwbGF5SW50ZXJuYWwoKTsKICAgICB9IGVsc2UgCiAgICAg
ICAgIHBhdXNlSW50ZXJuYWwoKTsKQEAgLTIyMjksMTkgKzIyNTMsMzUgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKIAogICAgIGZs
b2F0IG5vdyA9IGN1cnJlbnRUaW1lKCk7CiAgICAgZmxvYXQgZHVyID0gZHVyYXRpb24oKTsKLSAg
ICBpZiAoIWlzbmFuKGR1cikgJiYgZHVyICYmIG5vdyA+PSBkdXIpIHsKLSAgICAgICAgaWYgKGxv
b3AoKSkgeworICAgIAorICAgIC8vIFdoZW4gdGhlIGN1cnJlbnQgcGxheWJhY2sgcG9zaXRpb24g
cmVhY2hlcyB0aGUgZW5kIG9mIHRoZSBtZWRpYSByZXNvdXJjZSB3aGVuIHRoZSBkaXJlY3Rpb24g
b2YKKyAgICAvLyBwbGF5YmFjayBpcyBmb3J3YXJkcywgdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0
IGZvbGxvdyB0aGVzZSBzdGVwczoKKyAgICBpZiAoIWlzbmFuKGR1cikgJiYgZHVyICYmIG5vdyA+
PSBkdXIgJiYgbV9wbGF5YmFja1JhdGUgPiAwKSB7CisgICAgICAgIC8vIElmIHRoZSBtZWRpYSBl
bGVtZW50IGhhcyBhIGxvb3AgYXR0cmlidXRlIHNwZWNpZmllZCBhbmQgZG9lcyBub3QgaGF2ZSBh
IGN1cnJlbnQgbWVkaWEgY29udHJvbGxlciwKKyAgICAgICAgaWYgKGxvb3AoKSAmJiAhbV9tZWRp
YUNvbnRyb2xsZXIpIHsKICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlv
bjsKICAgICAgICAgICAgIG1fc2VudEVuZEV2ZW50ID0gZmFsc2U7CisgICAgICAgICAgICAvLyAg
dGhlbiBzZWVrIHRvIHRoZSBlYXJsaWVzdCBwb3NzaWJsZSBwb3NpdGlvbiBvZiB0aGUgbWVkaWEg
cmVzb3VyY2UgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICAgICAgc2VlaygwLCBpZ25v
cmVkRXhjZXB0aW9uKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICghbV9wYXVz
ZWQpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBtZWRpYSBlbGVtZW50IGRvZXMgbm90IGhhdmUg
YSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIsIGFuZCB0aGUgbWVkaWEgZWxlbWVudAorICAgICAg
ICAgICAgLy8gaGFzIHN0aWxsIGVuZGVkIHBsYXliYWNrLCBhbmQgdGhlIGRpcmVjdGlvbiBvZiBw
bGF5YmFjayBpcyBzdGlsbCBmb3J3YXJkcywgYW5kIHBhdXNlZAorICAgICAgICAgICAgLy8gaXMg
ZmFsc2UsCisgICAgICAgICAgICBpZiAoIW1fbWVkaWFDb250cm9sbGVyICYmICFtX3BhdXNlZCkg
eworICAgICAgICAgICAgICAgIC8vIGNoYW5nZXMgcGF1c2VkIHRvIHRydWUgYW5kIGZpcmVzIGEg
c2ltcGxlIGV2ZW50IG5hbWVkIHBhdXNlIGF0IHRoZSBtZWRpYSBlbGVtZW50LgogICAgICAgICAg
ICAgICAgIG1fcGF1c2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2
ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIFF1
ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGVuZGVkIGF0IHRoZSBtZWRp
YSBlbGVtZW50LgogICAgICAgICAgICAgaWYgKCFtX3NlbnRFbmRFdmVudCkgewogICAgICAgICAg
ICAgICAgIG1fc2VudEVuZEV2ZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBzY2hlZHVsZUV2
ZW50KGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KTsKKyAgICAgICAgICAgICAgICB1cGRhdGVNZWRp
YUNvbnRyb2xsZXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIElmIHRoZSBtZWRp
YSBlbGVtZW50IGhhcyBhIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlciwgCisgICAgICAgICAgICBp
ZiAobV9tZWRpYUNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICAvLyB0aGVuIHJlcG9ydCB0
aGUgY29udHJvbGxlciBzdGF0ZSBmb3IgdGhlIG1lZGlhIGVsZW1lbnQncyBjdXJyZW50IG1lZGlh
IGNvbnRyb2xsZXIuCisgICAgICAgICAgICAgICAgbV9tZWRpYUNvbnRyb2xsZXItPnJlcG9ydENv
bnRyb2xsZXJTdGF0ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjQy
NiwxMCArMjQ2Niw3IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gSFRNTE1lZGlhRWxlbWVudDo6
cGxheWVkKCkKIAogUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBIVE1MTWVkaWFFbGVtZW50OjpzZWVr
YWJsZSgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUUgcmVhbCByYW5nZXMgc3VwcG9ydAotICAgIGlm
ICghbWF4VGltZVNlZWthYmxlKCkpCi0gICAgICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUo
KTsKLSAgICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKG1pblRpbWVTZWVrYWJsZSgpLCBtYXhU
aW1lU2Vla2FibGUoKSk7CisgICAgcmV0dXJuIG1fcGxheWVyID8gbV9wbGF5ZXItPnNlZWthYmxl
KCkgOiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpw
b3RlbnRpYWxseVBsYXlpbmcoKSBjb25zdApAQCAtMjQzOCw3ICsyNDc1LDcgQEAgYm9vbCBIVE1M
TWVkaWFFbGVtZW50Ojpwb3RlbnRpYWxseVBsYXlpbmcoKSBjb25zdAogICAgIC8vIHdoZW4gaXQg
cmFuIG91dCBvZiBidWZmZXJlZCBkYXRhLiBBIG1vdmllIGlzIHRoaXMgc3RhdGUgaXMgInBvdGVu
dGlhbGx5IHBsYXlpbmciLCBtb2R1bG8gdGhlCiAgICAgLy8gY2hlY2tzIGluIGNvdWxkUGxheUlm
RW5vdWdoRGF0YSgpLgogICAgIGJvb2wgcGF1c2VkVG9CdWZmZXIgPSBtX3JlYWR5U3RhdGVNYXhp
bXVtID49IEhBVkVfRlVUVVJFX0RBVEEgJiYgbV9yZWFkeVN0YXRlIDwgSEFWRV9GVVRVUkVfREFU
QTsKLSAgICByZXR1cm4gKHBhdXNlZFRvQnVmZmVyIHx8IG1fcmVhZHlTdGF0ZSA+PSBIQVZFX0ZV
VFVSRV9EQVRBKSAmJiBjb3VsZFBsYXlJZkVub3VnaERhdGEoKTsKKyAgICByZXR1cm4gKHBhdXNl
ZFRvQnVmZmVyIHx8IG1fcmVhZHlTdGF0ZSA+PSBIQVZFX0ZVVFVSRV9EQVRBKSAmJiBjb3VsZFBs
YXlJZkVub3VnaERhdGEoKSAmJiAhaXNCbG9ja2VkT25NZWRpYUNvbnRyb2xsZXIoKTsKIH0KIAog
Ym9vbCBIVE1MTWVkaWFFbGVtZW50Ojpjb3VsZFBsYXlJZkVub3VnaERhdGEoKSBjb25zdApAQCAt
MjQ2MCwxMCArMjQ5NywxMSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmVuZGVkUGxheWJhY2so
KSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBhbmQgdGhlIGN1cnJlbnQg
cGxheWJhY2sgcG9zaXRpb24gaXMgdGhlIGVuZCBvZiB0aGUgbWVkaWEgcmVzb3VyY2UgYW5kIHRo
ZSBkaXJlY3Rpb24KLSAgICAvLyBvZiBwbGF5YmFjayBpcyBmb3J3YXJkcyBhbmQgdGhlIG1lZGlh
IGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhIGxvb3AgYXR0cmlidXRlIHNwZWNpZmllZCwKKyAgICAv
LyBvZiBwbGF5YmFjayBpcyBmb3J3YXJkcywgRWl0aGVyIHRoZSBtZWRpYSBlbGVtZW50IGRvZXMg
bm90IGhhdmUgYSBsb29wIGF0dHJpYnV0ZSBzcGVjaWZpZWQsCisgICAgLy8gb3IgdGhlIG1lZGlh
IGVsZW1lbnQgaGFzIGEgY3VycmVudCBtZWRpYSBjb250cm9sbGVyLgogICAgIGZsb2F0IG5vdyA9
IGN1cnJlbnRUaW1lKCk7CiAgICAgaWYgKG1fcGxheWJhY2tSYXRlID4gMCkKLSAgICAgICAgcmV0
dXJuIGR1ciA+IDAgJiYgbm93ID49IGR1ciAmJiAhbG9vcCgpOworICAgICAgICByZXR1cm4gZHVy
ID4gMCAmJiBub3cgPj0gZHVyICYmICghbG9vcCgpIHx8IG1fbWVkaWFDb250cm9sbGVyKTsKIAog
ICAgIC8vIG9yIHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIGlzIHRoZSBlYXJsaWVzdCBw
b3NzaWJsZSBwb3NpdGlvbiBhbmQgdGhlIGRpcmVjdGlvbiAKICAgICAvLyBvZiBwbGF5YmFjayBp
cyBiYWNrd2FyZHMKQEAgLTI1MDksOCArMjU0NywxNCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnVwZGF0ZVZvbHVtZSgpCiAgICAgaWYgKCFwcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygp
KSB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7CiAgICAgICAgIGZs
b2F0IHZvbHVtZU11bHRpcGxpZXIgPSBwYWdlID8gcGFnZS0+bWVkaWFWb2x1bWUoKSA6IDE7Ci0g
ICAgCi0gICAgICAgIG1fcGxheWVyLT5zZXRNdXRlZChtX211dGVkKTsKKyAgICAgICAgYm9vbCBz
aG91bGRNdXRlID0gbV9tdXRlZDsKKworICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpIHsK
KyAgICAgICAgICAgIHZvbHVtZU11bHRpcGxpZXIgKj0gbV9tZWRpYUNvbnRyb2xsZXItPnZvbHVt
ZSgpOworICAgICAgICAgICAgc2hvdWxkTXV0ZSA9IG1fbWVkaWFDb250cm9sbGVyLT5tdXRlZCgp
OworICAgICAgICB9CisKKyAgICAgICAgbV9wbGF5ZXItPnNldE11dGVkKHNob3VsZE11dGUpOwog
ICAgICAgICBtX3BsYXllci0+c2V0Vm9sdW1lKG1fdm9sdW1lICogdm9sdW1lTXVsdGlwbGllcik7
CiAgICAgfQogCkBAIC0yNTc3LDExICsyNjIxLDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dXBkYXRlUGxheVN0YXRlKCkKICAgICAgICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKICAgICAg
ICAgICAgIG1lZGlhQ29udHJvbHMoKS0+cGxheWJhY2tTdG9wcGVkKCk7CiAgICAgfQotICAgIAor
CisgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CisKICAgICBpZiAocmVuZGVyZXIoKSkKICAg
ICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKIH0KLSAgICAKKwogdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzZXRQYXVzZWRJbnRlcm5hbChib29sIGIpCiB7CiAgICAgbV9wYXVz
ZWRJbnRlcm5hbCA9IGI7CkBAIC0yNjQxLDYgKzI2ODcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnVzZXJDYW5jZWxsZWRMb2FkKCkKIAogICAgIC8vIFJlc2V0IG1fcmVhZHlTdGF0ZSBzaW5j
ZSBtX3BsYXllciBpcyBnb25lLgogICAgIG1fcmVhZHlTdGF0ZSA9IEhBVkVfTk9USElORzsKKyAg
ICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpj
YW5TdXNwZW5kKCkgY29uc3QKQEAgLTMxMzMsNiArMzE4MCw3MiBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldEl0ZW1WYWx1ZVRleHQoY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB9CiAjZW5kaWYKIAorY29uc3QgU3RyaW5nJiBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YUdyb3VwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUNvbnRyb2xsZXIgPyBtX21lZGlh
Q29udHJvbGxlci0+bWVkaWFHcm91cCgpIDogZW1wdHlTdHJpbmcoKTsKK30KKwordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzZXRNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYgZ3JvdXApCit7CisgICAg
aWYgKG1fbWVkaWFDb250cm9sbGVyICYmIG1fbWVkaWFDb250cm9sbGVyLT5tZWRpYUdyb3VwKCkg
PT0gZ3JvdXApCisgICAgICAgIHJldHVybjsKKworICAgIHNldE1lZGlhQ29udHJvbGxlcihNZWRp
YUNvbnRyb2xsZXI6Om1lZGlhQ29udHJvbGxlckZvck1lZGlhR3JvdXAoZ3JvdXApKTsKK30KKwor
TWVkaWFDb250cm9sbGVyKiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUNvbnRyb2xsZXIoKSBjb25z
dAoreworICAgIHJldHVybiBtX21lZGlhQ29udHJvbGxlci5nZXQoKTsKK30KKwordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzZXRNZWRpYUNvbnRyb2xsZXIoUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xs
ZXI+IGNvbnRyb2xsZXIpCit7CisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQorICAgICAgICBt
X21lZGlhQ29udHJvbGxlci0+cmVtb3ZlTWVkaWFFbGVtZW50KHRoaXMpOworCisgICAgbV9tZWRp
YUNvbnRyb2xsZXIgPSBjb250cm9sbGVyOworCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQor
ICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+YWRkTWVkaWFFbGVtZW50KHRoaXMpOworfQorCit2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZU1lZGlhQ29udHJvbGxlcigpCit7CisgICAgaWYg
KG1fbWVkaWFDb250cm9sbGVyKQorICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+cmVwb3J0Q29u
dHJvbGxlclN0YXRlKCk7Cit9CisKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNCbG9ja2VkKCkg
Y29uc3QKK3sKKyAgICAvLyBBIG1lZGlhIGVsZW1lbnQgaXMgYSBibG9ja2VkIG1lZGlhIGVsZW1l
bnQgaWYgaXRzIHJlYWR5U3RhdGUgYXR0cmlidXRlIGlzIGluIHRoZQorICAgIC8vIEhBVkVfTk9U
SElORyBzdGF0ZSwgdGhlIEhBVkVfTUVUQURBVEEgc3RhdGUsIG9yIHRoZSBIQVZFX0NVUlJFTlRf
REFUQSBzdGF0ZSwKKyAgICBpZiAobV9yZWFkeVN0YXRlIDw9IEhBVkVfQ1VSUkVOVF9EQVRBKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIG9yIGlmIHRoZSBlbGVtZW50IGhhcyBwYXVz
ZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uCisgICAgcmV0dXJuIHBhdXNlZEZvclVzZXJJbnRlcmFj
dGlvbigpOworfQorCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzQmxvY2tlZE9uTWVkaWFDb250
cm9sbGVyKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWVkaWFDb250cm9sbGVyKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBBIG1lZGlhIGVsZW1lbnQgaXMgYmxvY2tlZCBvbiBpdHMg
bWVkaWEgY29udHJvbGxlciBpZiB0aGUgTWVkaWFDb250cm9sbGVyIGlzIGEgYmxvY2tlZCAKKyAg
ICAvLyBtZWRpYSBjb250cm9sbGVyLAorICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aXNCbG9j
a2VkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gb3IgaWYgaXRzIG1lZGlhIGNv
bnRyb2xsZXIgcG9zaXRpb24gaXMgZWl0aGVyIGJlZm9yZSB0aGUgbWVkaWEgcmVzb3VyY2UncyBl
YXJsaWVzdCBwb3NzaWJsZSAKKyAgICAvLyBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgTWVkaWFD
b250cm9sbGVyJ3MgdGltZWxpbmUgb3IgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgbWVkaWEgcmVzb3Vy
Y2UgCisgICAgLy8gcmVsYXRpdmUgdG8gdGhlIE1lZGlhQ29udHJvbGxlcidzIHRpbWVsaW5lLgor
ICAgIGZsb2F0IG1lZGlhQ29udHJvbGxlclBvc2l0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1
cnJlbnRUaW1lKCk7CisgICAgaWYgKG1lZGlhQ29udHJvbGxlclBvc2l0aW9uIDwgc3RhcnRUaW1l
KCkgfHwgbWVkaWFDb250cm9sbGVyUG9zaXRpb24gPiBzdGFydFRpbWUoKSArIGR1cmF0aW9uKCkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCAwZDJmOWZjNDll
MTAwY2I1MTdiZWYwZDE1MGFjNGY3N2E1NzVlOWVjLi5mODA5ZTZlZTdmOTkwNzViYjIxMDczY2Y3
ZGU2Y2E0YmJkOWY0NTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCisjaW5j
bHVkZSAiTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIu
aCIKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQpAQCAtNTAsNiArNTEsNyBA
QCBjbGFzcyBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU7CiBjbGFzcyBFdmVudDsKIGNsYXNz
IEhUTUxTb3VyY2VFbGVtZW50OwogY2xhc3MgSFRNTFRyYWNrRWxlbWVudDsKK2NsYXNzIE1lZGlh
Q29udHJvbGxlcjsKIGNsYXNzIE1lZGlhQ29udHJvbHM7CiBjbGFzcyBNZWRpYUVycm9yOwogY2xh
c3MgS1VSTDsKQEAgLTYzLDcgKzY1LDcgQEAgY2xhc3MgV2lkZ2V0OwogLy8gQnV0IGl0IGNhbid0
IGJlIHVudGlsIHRoZSBDaHJvbWl1bSBXZWJNZWRpYVBsYXllckNsaWVudEltcGwgY2xhc3MgaXMg
Zml4ZWQgc28gaXQKIC8vIG5vIGxvbmdlciBkZXBlbmRzIG9uIHR5cGVjYXN0aW5nIGEgTWVkaWFQ
bGF5ZXJDbGllbnQgdG8gYW4gSFRNTE1lZGlhRWxlbWVudC4KIAotY2xhc3MgSFRNTE1lZGlhRWxl
bWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIE1lZGlhUGxheWVyQ2xpZW50LCBwcml2
YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEFjdGl2ZURPTU9iamVjdAorY2xhc3Mg
SFRNTE1lZGlhRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIE1lZGlhUGxheWVy
Q2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEFjdGl2ZURPTU9i
amVjdCwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZQogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKICAgICAsIHByaXZhdGUgVGV4dFRyYWNrQ2xpZW50CiAjZW5kaWYKQEAgLTEwNSw3ICsx
MDcsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIE5ldHdvcmtTdGF0ZSB7IE5FVFdPUktfRU1QVFks
IE5FVFdPUktfSURMRSwgTkVUV09SS19MT0FESU5HLCBORVRXT1JLX05PX1NPVVJDRSB9OwogICAg
IE5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdDsKLSAgICAKKwogICAgIFN0cmluZyBw
cmVsb2FkKCkgY29uc3Q7ICAgIAogICAgIHZvaWQgc2V0UHJlbG9hZChjb25zdCBTdHJpbmcmKTsK
IApAQCAtMTE0LDcgKzExNiw2IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgY2FuUGxheVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7CiAKIC8vIHJlYWR5IHN0YXRlCi0gICAgZW51bSBS
ZWFkeVN0YXRlIHsgSEFWRV9OT1RISU5HLCBIQVZFX01FVEFEQVRBLCBIQVZFX0NVUlJFTlRfREFU
QSwgSEFWRV9GVVRVUkVfREFUQSwgSEFWRV9FTk9VR0hfREFUQSB9OwogICAgIFJlYWR5U3RhdGUg
cmVhZHlTdGF0ZSgpIGNvbnN0OwogICAgIGJvb2wgc2Vla2luZygpIGNvbnN0OwogCkBAIC0yMzAs
NiArMjMxLDEyIEBAIHB1YmxpYzoKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJj
ZVByb3ZpZGVyKCk7CiAjZW5kaWYKIAorICAgIGNvbnN0IFN0cmluZyYgbWVkaWFHcm91cCgpIGNv
bnN0OworICAgIHZvaWQgc2V0TWVkaWFHcm91cChjb25zdCBTdHJpbmcmKTsKKworICAgIE1lZGlh
Q29udHJvbGxlciogbWVkaWFDb250cm9sbGVyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNZWRpYUNv
bnRyb2xsZXIoUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+KTsKKwogcHJvdGVjdGVkOgogICAg
IEhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAg
dmlydHVhbCB+SFRNTE1lZGlhRWxlbWVudCgpOwpAQCAtMzk0LDYgKzQwMSw4IEBAIHByaXZhdGU6
CiAgICAgLy8gUGF1c2VzIHBsYXliYWNrIHdpdGhvdXQgY2hhbmdpbmcgYW55IHN0YXRlcyBvciBn
ZW5lcmF0aW5nIGV2ZW50cwogICAgIHZvaWQgc2V0UGF1c2VkSW50ZXJuYWwoYm9vbCk7CiAKKyAg
ICB2b2lkIHNldFBsYXliYWNrUmF0ZUludGVybmFsKGZsb2F0KTsKKwogICAgIHZpcnR1YWwgdm9p
ZCBtZWRpYUNhblN0YXJ0KCk7CiAKICAgICB2b2lkIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KGJv
b2wpOwpAQCAtNDEyLDYgKzQyMSwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRJ
dGVtVmFsdWVUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgogCisg
ICAgdm9pZCB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKKyAgICBib29sIGlzQmxvY2tlZCgpIGNv
bnN0OworICAgIGJvb2wgaXNCbG9ja2VkT25NZWRpYUNvbnRyb2xsZXIoKSBjb25zdDsKKyAgICBi
b29sIGhhc1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya1N0YXRlICE9IE5FVFdPUktf
RU1QVFkgfHwgbV9uZXR3b3JrU3RhdGUgIT0gTkVUV09SS19OT19TT1VSQ0U7IH0KKyAgICBib29s
IGlzTGl2ZVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1vdmllTG9hZFR5cGUoKSA9PSBNZWRpYVBs
YXllcjo6TGl2ZVN0cmVhbTsgfQorCiAgICAgVGltZXI8SFRNTE1lZGlhRWxlbWVudD4gbV9sb2Fk
VGltZXI7CiAgICAgVGltZXI8SFRNTE1lZGlhRWxlbWVudD4gbV9hc3luY0V2ZW50VGltZXI7CiAg
ICAgVGltZXI8SFRNTE1lZGlhRWxlbWVudD4gbV9wcm9ncmVzc0V2ZW50VGltZXI7CkBAIC01MTYs
NiArNTMxLDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgVmVjdG9y
PFJlZlB0cjxUZXh0VHJhY2s+ID4gbV90ZXh0VHJhY2tzOwogI2VuZGlmCisKKyAgICBmcmllbmQg
Y2xhc3MgTWVkaWFDb250cm9sbGVyOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IG1fbWVk
aWFDb250cm9sbGVyOwogfTsKIAogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5pZGwKaW5kZXggMzMwYWRiYWFkZTcxMDI2OWMyZjJkZTVlZWM1Y2MxZTE2
MmIwYzliNS4uNDkyMTBiNjIwMjcyMzcxZTQ1YWFiOWZhYjE5MWJmNjEwMDQzY2U2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCkBAIC0xMTQsNSArMTE0LDggQEAg
bW9kdWxlIGh0bWwgewogI2lmIGRlZmluZWQoRU5BQkxFX1ZJREVPX1RSQUNLKSAmJiBFTkFCTEVf
VklERU9fVFJBQ0sKICAgICBbRW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBUZXh0
VHJhY2sgYWRkVHJhY2soaW4gRE9NU3RyaW5nIGtpbmQsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5n
IGxhYmVsLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBsYW5ndWFnZSk7CiAjZW5kaWYKKworICAg
IGF0dHJpYnV0ZSBbUmVmbGVjdCwgQ29udmVydE51bGxUb051bGxTdHJpbmcsIENvbnZlcnROdWxs
U3RyaW5nVG9OdWxsXSBET01TdHJpbmcgbWVkaWFHcm91cDsKKyAgICBhdHRyaWJ1dGUgW0N1c3Rv
bVNldHRlcl0gTWVkaWFDb250cm9sbGVyIG1lZGlhQ29udHJvbGxlcjsKIH07CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzljZjQ5N2MwZGRiZTc0
YzA4ZTRlMDYzYjdhZmEyMzhjZmViNTNhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDU4MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJNZWRp
YUNvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIkNsb2NrLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlh
RWxlbWVudC5oIgorI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKwordHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgTWVkaWFDb250cm9sbGVyKj4gR3JvdXBDb250cm9sbGVyTWFwOworc3RhdGljIEdy
b3VwQ29udHJvbGxlck1hcCYgbWVkaWFHcm91cFRvTWVkaWFDb250cm9sbGVyTWFwKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEdyb3VwQ29udHJvbGxlck1hcCwgbWFwLCAoKSk7CisgICAg
cmV0dXJuIG1hcDsKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IE1lZGlhQ29udHJv
bGxlcjo6bWVkaWFDb250cm9sbGVyRm9yTWVkaWFHcm91cChjb25zdCBTdHJpbmcmIGdyb3VwKQor
eworICAgIGlmIChncm91cC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAo
Z3JvdXAuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChNZWRpYUNvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBtZWRpYUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXAoKS5nZXQo
Z3JvdXApKQorICAgICAgICByZXR1cm4gY29udHJvbGxlcjsKKworICAgIFJlZlB0cjxNZWRpYUNv
bnRyb2xsZXI+IGNvbnRyb2xsZXIgPSBjcmVhdGUoKTsKKyAgICBjb250cm9sbGVyLT5tX21lZGlh
R3JvdXAgPSBncm91cDsKKyAgICBtZWRpYUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXAoKS5zZXQo
Z3JvdXAsIGNvbnRyb2xsZXIuZ2V0KCkpOworICAgIHJldHVybiBjb250cm9sbGVyLnJlbGVhc2Uo
KTsKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IE1lZGlhQ29udHJvbGxlcjo6Y3Jl
YXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbGxlcigpKTsKK30K
KworTWVkaWFDb250cm9sbGVyOjpNZWRpYUNvbnRyb2xsZXIoKQorICAgIDogbV9wYXVzZWQoZmFs
c2UpCisgICAgLCBtX2RlZmF1bHRQbGF5YmFja1JhdGUoMSkKKyAgICAsIG1fdm9sdW1lKDEpCisg
ICAgLCBtX211dGVkKGZhbHNlKQorICAgICwgbV9yZWFkeVN0YXRlKEhBVkVfTk9USElORykKKyAg
ICAsIG1fcGxheWJhY2tTdGF0ZShXQUlUSU5HKQorICAgICwgbV9hc3luY0V2ZW50VGltZXIodGhp
cywgJk1lZGlhQ29udHJvbGxlcjo6YXN5bmNFdmVudFRpbWVyRmlyZWQpCisgICAgLCBtX2Nsb3Nl
ZENhcHRpb25zVmlzaWJsZShmYWxzZSkKKyAgICAsIG1fY2xvY2soQ2xvY2s6OmNyZWF0ZSgpKQor
eworfQorCitNZWRpYUNvbnRyb2xsZXI6On5NZWRpYUNvbnRyb2xsZXIoKQoreworICAgIGlmICgh
bV9tZWRpYUdyb3VwLmlzRW1wdHkoKSkKKyAgICAgICAgbWVkaWFHcm91cFRvTWVkaWFDb250cm9s
bGVyTWFwKCkucmVtb3ZlKG1fbWVkaWFHcm91cCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVy
OjphZGRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NF
UlQoZWxlbWVudCk7CisgICAgQVNTRVJUKCFtX21lZGlhRWxlbWVudHMuY29udGFpbnMoZWxlbWVu
dCkpOworCisgICAgbV9tZWRpYUVsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKKyAgICBicmluZ0Vs
ZW1lbnRVcFRvU3BlZWQoZWxlbWVudCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpyZW1v
dmVNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQo
ZWxlbWVudCk7CisgICAgQVNTRVJUKG1fbWVkaWFFbGVtZW50cy5jb250YWlucyhlbGVtZW50KSk7
CisgICAgbV9tZWRpYUVsZW1lbnRzLnJlbW92ZShtX21lZGlhRWxlbWVudHMuZmluZChlbGVtZW50
KSk7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpjb250YWluc01lZGlhRWxlbWVudChIVE1M
TWVkaWFFbGVtZW50KiBlbGVtZW50KSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlhRWxlbWVu
dHMuY29udGFpbnMoZWxlbWVudCk7Cit9CisKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFD
b250cm9sbGVyOjpidWZmZXJlZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKworICAgIC8v
IFRoZSBidWZmZXJlZCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gYSBuZXcgc3RhdGljIG5vcm1hbGl6
ZWQgVGltZVJhbmdlcyBvYmplY3QgdGhhdCByZXByZXNlbnRzIAorICAgIC8vIHRoZSBpbnRlcnNl
Y3Rpb24gb2YgdGhlIHJhbmdlcyBvZiB0aGUgbWVkaWEgcmVzb3VyY2VzIG9mIHRoZSBzbGF2ZWQg
bWVkaWEgZWxlbWVudHMgdGhhdCB0aGUgCisgICAgLy8gdXNlciBhZ2VudCBoYXMgYnVmZmVyZWQs
IGF0IHRoZSB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgZXZhbHVhdGVkLgorICAgIFJlZlB0cjxUaW1l
UmFuZ2VzPiBidWZmZXJlZFJhbmdlcyA9IG1fbWVkaWFFbGVtZW50cy5maXJzdCgpLT5idWZmZXJl
ZCgpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMu
c2l6ZSgpOyArK2luZGV4KQorICAgICAgICBidWZmZXJlZFJhbmdlcy0+aW50ZXJzZWN0V2l0aCht
X21lZGlhRWxlbWVudHNbaW5kZXhdLT5idWZmZXJlZCgpLmdldCgpKTsKKyAgICByZXR1cm4gYnVm
ZmVyZWRSYW5nZXM7Cit9CisKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFDb250cm9sbGVy
OjpzZWVrYWJsZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKworICAgIC8vIFRoZSBzZWVr
YWJsZSBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gYSBuZXcgc3RhdGljIG5vcm1hbGl6ZWQgVGltZVJh
bmdlcyBvYmplY3QgdGhhdCByZXByZXNlbnRzCisgICAgLy8gdGhlIGludGVyc2VjdGlvbiBvZiB0
aGUgcmFuZ2VzIG9mIHRoZSBtZWRpYSByZXNvdXJjZXMgb2YgdGhlIHNsYXZlZCBtZWRpYSBlbGVt
ZW50cyB0aGF0IHRoZQorICAgIC8vIHVzZXIgYWdlbnQgaXMgYWJsZSB0byBzZWVrIHRvLCBhdCB0
aGUgdGltZSB0aGUgYXR0cmlidXRlIGlzIGV2YWx1YXRlZC4KKyAgICBSZWZQdHI8VGltZVJhbmdl
cz4gc2Vla2FibGVSYW5nZXMgPSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+c2Vla2FibGUoKTsK
KyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUo
KTsgKytpbmRleCkKKyAgICAgICAgc2Vla2FibGVSYW5nZXMtPmludGVyc2VjdFdpdGgobV9tZWRp
YUVsZW1lbnRzW2luZGV4XS0+c2Vla2FibGUoKS5nZXQoKSk7CisgICAgcmV0dXJuIHNlZWthYmxl
UmFuZ2VzOworfQorCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhQ29udHJvbGxlcjo6cGxh
eWVkKCkKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOworCisgICAgLy8gVGhlIHBsYXllZCBhdHRyaWJ1dGUg
bXVzdCByZXR1cm4gYSBuZXcgc3RhdGljIG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgdGhh
dCByZXByZXNlbnRzIAorICAgIC8vIHRoZSB1bmlvbiBvZiB0aGUgcmFuZ2VzIG9mIHRoZSBtZWRp
YSByZXNvdXJjZXMgb2YgdGhlIHNsYXZlZCBtZWRpYSBlbGVtZW50cyB0aGF0IHRoZSAKKyAgICAv
LyB1c2VyIGFnZW50IGhhcyBzbyBmYXIgcmVuZGVyZWQsIGF0IHRoZSB0aW1lIHRoZSBhdHRyaWJ1
dGUgaXMgZXZhbHVhdGVkLgorICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBwbGF5ZWRSYW5nZXMgPSBt
X21lZGlhRWxlbWVudHMuZmlyc3QoKS0+cGxheWVkKCk7CisgICAgZm9yIChzaXplX3QgaW5kZXgg
PSAxOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIHBs
YXllZFJhbmdlcy0+dW5pb25XaXRoKG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnBsYXllZCgpLmdl
dCgpKTsKKyAgICByZXR1cm4gcGxheWVkUmFuZ2VzOworfQorCitmbG9hdCBNZWRpYUNvbnRyb2xs
ZXI6OmR1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBmbG9hdCBtYXhEdXJhdGlvbiA9IDA7CisgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsr
aW5kZXgpCisgICAgICAgIG1heER1cmF0aW9uID0gbWF4KG1heER1cmF0aW9uLCBtX21lZGlhRWxl
bWVudHNbaW5kZXhdLT5kdXJhdGlvbigpKTsKKyAgICByZXR1cm4gbWF4RHVyYXRpb247Cit9CisK
K2Zsb2F0IE1lZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUoKSBjb25zdAoreworICAgIGlmICht
X21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBy
ZXR1cm4gbV9jbG9jay0+Y3VycmVudFRpbWUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6
OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRpbWUsIEV4Y2VwdGlvbkNvZGUmIGNvZGUpCit7CisgICAg
Ly8gV2hlbiB0aGUgdXNlciBhZ2VudCBpcyB0byBzZWVrIHRoZSBtZWRpYSBjb250cm9sbGVyIHRv
IGEgcGFydGljdWxhciBuZXcgcGxheWJhY2sgcG9zaXRpb24sIAorICAgIC8vIGl0IG11c3QgZm9s
bG93IHRoZXNlIHN0ZXBzOgorICAgIC8vIElmIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gaXMg
bGVzcyB0aGFuIHplcm8sIHRoZW4gc2V0IGl0IHRvIHplcm8uCisgICAgdGltZSA9IG1heCgwLjBm
LCB0aW1lKTsKKyAgICAKKyAgICAvLyBJZiB0aGUgbmV3IHBsYXliYWNrIHBvc2l0aW9uIGlzIGdy
ZWF0ZXIgdGhhbiB0aGUgbWVkaWEgY29udHJvbGxlciBkdXJhdGlvbiwgdGhlbiBzZXQgaXQgCisg
ICAgLy8gdG8gdGhlIG1lZGlhIGNvbnRyb2xsZXIgZHVyYXRpb24uCisgICAgdGltZSA9IG1pbih0
aW1lLCBkdXJhdGlvbigpKTsKKyAgICAKKyAgICAvLyBTZXQgdGhlIG1lZGlhIGNvbnRyb2xsZXIg
cG9zaXRpb24gdG8gdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbi4KKyAgICBtX2Nsb2NrLT5zZXRD
dXJyZW50VGltZSh0aW1lKTsKKyAgICAKKyAgICAvLyBTZWVrIGVhY2ggc2xhdmVkIG1lZGlhIGVs
ZW1lbnQgdG8gdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgbWVkaWEg
ZWxlbWVudCB0aW1lbGluZS4KKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9t
ZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2lu
ZGV4XS0+c2Vlayh0aW1lLCBjb2RlKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnBsYXko
KQoreworICAgIC8vIFdoZW4gdGhlIHBsYXkoKSBtZXRob2QgaXMgaW52b2tlZCwgaWYgdGhlIE1l
ZGlhQ29udHJvbGxlciBpcyBhIHBhdXNlZCBtZWRpYSBjb250cm9sbGVyLAorICAgIGlmICghbV9w
YXVzZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIHRoZSB1c2VyIGFnZW50IG11c3QgY2hh
bmdlIHRoZSBNZWRpYUNvbnRyb2xsZXIgaW50byBhIHBsYXlpbmcgbWVkaWEgY29udHJvbGxlciwK
KyAgICBtX3BhdXNlZCA9IGZhbHNlOworICAgIC8vIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2lt
cGxlIGV2ZW50IG5hbWVkIHBsYXkgYXQgdGhlIE1lZGlhQ29udHJvbGxlciwKKyAgICBzY2hlZHVs
ZUV2ZW50KGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQpOworICAgIC8vIGFuZCB0aGVuIHJlcG9ydCB0
aGUgY29udHJvbGxlciBzdGF0ZSBvZiB0aGUgTWVkaWFDb250cm9sbGVyLgorICAgIHJlcG9ydENv
bnRyb2xsZXJTdGF0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6cGF1c2UoKQorewor
ICAgIC8vIFdoZW4gdGhlIHBhdXNlKCkgbWV0aG9kIGlzIGludm9rZWQsIGlmIHRoZSBNZWRpYUNv
bnRyb2xsZXIgaXMgYSBwbGF5aW5nIG1lZGlhIGNvbnRyb2xsZXIsCisgICAgaWYgKG1fcGF1c2Vk
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyB0aGVuIHRoZSB1c2VyIGFnZW50IG11c3QgY2hh
bmdlIHRoZSBNZWRpYUNvbnRyb2xsZXIgaW50byBhIHBhdXNlZCBtZWRpYSBjb250cm9sbGVyLAor
ICAgIG1fcGF1c2VkID0gdHJ1ZTsKKyAgICAvLyBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBs
ZSBldmVudCBuYW1lZCBwYXVzZSBhdCB0aGUgTWVkaWFDb250cm9sbGVyLAorICAgIHNjaGVkdWxl
RXZlbnQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQpOworICAgIC8vIGFuZCB0aGVuIHJlcG9ydCB0
aGUgY29udHJvbGxlciBzdGF0ZSBvZiB0aGUgTWVkaWFDb250cm9sbGVyLgorICAgIHJlcG9ydENv
bnRyb2xsZXJTdGF0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0RGVmYXVsdFBs
YXliYWNrUmF0ZShmbG9hdCByYXRlKQoreworICAgIC8vIFRoZSBkZWZhdWx0UGxheWJhY2tSYXRl
IGF0dHJpYnV0ZSwgb24gc2V0dGluZywgbXVzdCBzZXQgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1l
ZGlhIGNvbnRyb2xsZXIKKyAgICAvLyBkZWZhdWx0IHBsYXliYWNrIHJhdGUgdG8gdGhlIG5ldyB2
YWx1ZSwKKyAgICBtX2RlZmF1bHRQbGF5YmFja1JhdGUgPSByYXRlOworCisgICAgLy8gdGhlbiBx
dWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCByYXRlY2hhbmdlIGF0IHRo
ZSBNZWRpYUNvbnRyb2xsZXIuCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucmF0ZWNo
YW5nZUV2ZW50KTsKK30KKworZmxvYXQgTWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUoKSBj
b25zdAoreworICAgIHJldHVybiBtX2Nsb2NrLT5wbGF5UmF0ZSgpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbGxlcjo6c2V0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUpCit7CisgICAgLy8gVGhlIHBs
YXliYWNrUmF0ZSBhdHRyaWJ1dGUsIG9uIHNldHRpbmcsIG11c3Qgc2V0IHRoZSBNZWRpYUNvbnRy
b2xsZXIncyBtZWRpYSBjb250cm9sbGVyIAorICAgIC8vIHBsYXliYWNrIHJhdGUgdG8gdGhlIG5l
dyB2YWx1ZSwKKyAgICBtX2Nsb2NrLT5zZXRQbGF5UmF0ZShyYXRlKTsKKworICAgIC8vIHRoZW4g
cXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcmF0ZWNoYW5nZSBhdCB0
aGUgTWVkaWFDb250cm9sbGVyLgorICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnJhdGVj
aGFuZ2VFdmVudCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUoZmxvYXQg
bGV2ZWwsIEV4Y2VwdGlvbkNvZGUmIGNvZGUpCit7CisgICAgLy8gSWYgdGhlIG5ldyB2YWx1ZSBp
cyBvdXRzaWRlIHRoZSByYW5nZSAwLjAgdG8gMS4wIGluY2x1c2l2ZSwgdGhlbiwgb24gc2V0dGlu
ZywgYW4gCisgICAgLy8gSW5kZXhTaXplRXJyb3IgZXhjZXB0aW9uIG11c3QgYmUgcmFpc2VkIGlu
c3RlYWQuCisgICAgaWYgKGxldmVsIDwgMCB8fCBsZXZlbCA+IDEpIHsKKyAgICAgICAgY29kZSA9
IElOREVYX1NJWkVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICAv
LyBUaGUgdm9sdW1lIGF0dHJpYnV0ZSwgb24gc2V0dGluZywgaWYgdGhlIG5ldyB2YWx1ZSBpcyBp
biB0aGUgcmFuZ2UgMC4wIHRvIDEuMCBpbmNsdXNpdmUsCisgICAgLy8gbXVzdCBzZXQgdGhlIE1l
ZGlhQ29udHJvbGxlcidzIG1lZGlhIGNvbnRyb2xsZXIgdm9sdW1lIG11bHRpcGxpZXIgdG8gdGhl
IG5ldyB2YWx1ZQorICAgIG1fdm9sdW1lID0gbGV2ZWw7CisKKyAgICAvLyBhbmQgcXVldWUgYSB0
YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgdm9sdW1lY2hhbmdlIGF0IHRoZSBNZWRp
YUNvbnRyb2xsZXIuCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkudm9sdW1lY2hhbmdl
RXZlbnQpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVt
ZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnVw
ZGF0ZVZvbHVtZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0TXV0ZWQoYm9vbCBm
bGFnKQoreworICAgIC8vIFRoZSBtdXRlZCBhdHRyaWJ1dGUsIG9uIHNldHRpbmcsIG11c3Qgc2V0
IHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtZWRpYSBjb250cm9sbGVyIG11dGUgb3ZlcnJpZGUKKyAg
ICAvLyB0byB0aGUgbmV3IHZhbHVlCisgICAgbV9tdXRlZCA9IGZsYWc7CisKKyAgICAvLyBhbmQg
cXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgdm9sdW1lY2hhbmdlIGF0
IHRoZSBNZWRpYUNvbnRyb2xsZXIuCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkudm9s
dW1lY2hhbmdlRXZlbnQpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1f
bWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tp
bmRleF0tPnVwZGF0ZVZvbHVtZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6cmVwb3J0
Q29udHJvbGxlclN0YXRlKCkKK3sKKyAgICB1cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgdXBkYXRl
UGxheWJhY2tTdGF0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlUmVhZHlT
dGF0ZSgpCit7CisgICAgUmVhZHlTdGF0ZSBvbGRSZWFkeVN0YXRlID0gbV9yZWFkeVN0YXRlOwor
ICAgIFJlYWR5U3RhdGUgbmV3UmVhZHlTdGF0ZTsKKworICAgIAorICAgIGlmIChtX21lZGlhRWxl
bWVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIgaGFz
IG5vIHNsYXZlZCBtZWRpYSBlbGVtZW50cywgbGV0IG5ldyByZWFkaW5lc3Mgc3RhdGUgYmUgMC4K
KyAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IEhBVkVfTk9USElORzsKKyAgICB9IGVsc2UgeworICAg
ICAgICAvLyBPdGhlcndpc2UsIGxldCBpdCBoYXZlIHRoZSBsb3dlc3QgdmFsdWUgb2YgdGhlIHJl
YWR5U3RhdGUgSURMIGF0dHJpYnV0ZXMgb2YgYWxsIG9mIGl0cworICAgICAgICAvLyBzbGF2ZWQg
bWVkaWEgZWxlbWVudHMuCisgICAgICAgIG5ld1JlYWR5U3RhdGUgPSBtX21lZGlhRWxlbWVudHMu
Zmlyc3QoKS0+cmVhZHlTdGF0ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGlu
ZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgICAgIG5ld1Jl
YWR5U3RhdGUgPSBtaW4obmV3UmVhZHlTdGF0ZSwgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+cmVh
ZHlTdGF0ZSgpKTsKKyAgICB9CisKKyAgICAvLyBJZiB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbW9z
dCByZWNlbnRseSByZXBvcnRlZCByZWFkaW5lc3Mgc3RhdGUgaXMgbm90IGVxdWFsIHRvIG5ldyBy
ZWFkaW5lc3Mgc3RhdGUKKyAgICBpZiAobmV3UmVhZHlTdGF0ZSA9PSBvbGRSZWFkeVN0YXRlKSAK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNp
bXBsZSBldmVudCBhdCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCwgd2hvc2UgbmFtZSBpcyB0
aGUKKyAgICAvLyBldmVudCBuYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHZhbHVlIG9mIG5ldyBy
ZWFkaW5lc3Mgc3RhdGUgZ2l2ZW4gaW4gdGhlIHRhYmxlIGJlbG93IChvbW1pdHRlZCkKKyAgICBB
dG9taWNTdHJpbmcgZXZlbnROYW1lOworICAgIHN3aXRjaCAobmV3UmVhZHlTdGF0ZSkgeworICAg
IGNhc2UgSEFWRV9OT1RISU5HOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkuZW1w
dGllZEV2ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhBVkVfTUVUQURBVEE6CisgICAg
ICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5sb2FkZWRtZXRhZGF0YUV2ZW50OworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEhBVkVfQ1VSUkVOVF9EQVRBOgorICAgICAgICBldmVudE5hbWUg
PSBldmVudE5hbWVzKCkubG9hZGVkZGF0YUV2ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEhBVkVfRlVUVVJFX0RBVEE6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5jYW5w
bGF5RXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSEFWRV9FTk9VR0hfREFUQToKKyAg
ICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLmNhbnBsYXl0aHJvdWdoRXZlbnQ7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KKyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZSk7CisKKyAgICAvLyBMZXQgdGhlIE1l
ZGlhQ29udHJvbGxlcidzIG1vc3QgcmVjZW50bHkgcmVwb3J0ZWQgcmVhZGluZXNzIHN0YXRlIGJl
IG5ldyByZWFkaW5lc3Mgc3RhdGUuCisgICAgbV9yZWFkeVN0YXRlID0gbmV3UmVhZHlTdGF0ZTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVwZGF0ZVBsYXliYWNrU3RhdGUoKQoreworICAg
IFBsYXliYWNrU3RhdGUgb2xkUGxheWJhY2tTdGF0ZSA9IG1fcGxheWJhY2tTdGF0ZTsKKyAgICBQ
bGF5YmFja1N0YXRlIG5ld1BsYXliYWNrU3RhdGU7CisKKyAgICAvLyBJbml0aWFsaXplIG5ldyBw
bGF5YmFjayBzdGF0ZSBieSBzZXR0aW5nIGl0IHRvIHRoZSBzdGF0ZSBnaXZlbiBmb3IgdGhlIGZp
cnN0IG1hdGNoaW5nIAorICAgIC8vIGNvbmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDoK
KyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBJZiB0aGUg
TWVkaWFDb250cm9sbGVyIGhhcyBubyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMKKyAgICAgICAgLy8g
TGV0IG5ldyBwbGF5YmFjayBzdGF0ZSBiZSB3YWl0aW5nLgorICAgICAgICBuZXdQbGF5YmFja1N0
YXRlID0gV0FJVElORzsKKyAgICB9IGVsc2UgaWYgKGhhc0VuZGVkKCkpIHsKKyAgICAgICAgLy8g
SWYgYWxsIG9mIHRoZSBNZWRpYUNvbnRyb2xsZXIncyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgaGF2
ZSBlbmRlZCBwbGF5YmFjayBhbmQgdGhlIG1lZGlhCisgICAgICAgIC8vIGNvbnRyb2xsZXIgcGxh
eWJhY2sgcmF0ZSBpcyBwb3NpdGl2ZSBvciB6ZXJvCisgICAgICAgIC8vIExldCBuZXcgcGxheWJh
Y2sgc3RhdGUgYmUgZW5kZWQuCisgICAgICAgIG5ld1BsYXliYWNrU3RhdGUgPSBFTkRFRDsKKyAg
ICB9IGVsc2UgaWYgKGlzQmxvY2tlZCgpKSB7CisgICAgICAgIC8vIElmIHRoZSBNZWRpYUNvbnRy
b2xsZXIgaXMgYSBibG9ja2VkIG1lZGlhIGNvbnRyb2xsZXIKKyAgICAgICAgLy8gTGV0IG5ldyBw
bGF5YmFjayBzdGF0ZSBiZSB3YWl0aW5nLgorICAgICAgICBuZXdQbGF5YmFja1N0YXRlID0gV0FJ
VElORzsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBPdGhlcndpc2UKKyAgICAgICAgLy8gTGV0
IG5ldyBwbGF5YmFjayBzdGF0ZSBiZSBwbGF5aW5nLgorICAgICAgICBuZXdQbGF5YmFja1N0YXRl
ID0gUExBWUlORzsKKyAgICB9CisKKyAgICAvLyBJZiB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbW9z
dCByZWNlbnRseSByZXBvcnRlZCBwbGF5YmFjayBzdGF0ZSBpcyBub3QgZXF1YWwgdG8gbmV3IHBs
YXliYWNrIHN0YXRlCisgICAgaWYgKG5ld1BsYXliYWNrU3RhdGUgPT0gb2xkUGxheWJhY2tTdGF0
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gYW5kIHRoZSBuZXcgcGxheWJhY2sgc3RhdGUg
aXMgZW5kZWQsCisgICAgaWYgKG5ld1BsYXliYWNrU3RhdGUgPT0gRU5ERUQpIHsKKyAgICAgICAg
Ly8gdGhlbiBxdWV1ZSBhIHRhc2sgdGhhdCwgaWYgdGhlIE1lZGlhQ29udHJvbGxlciBvYmplY3Qg
aXMgYSBwbGF5aW5nIG1lZGlhIGNvbnRyb2xsZXIsIGFuZCAKKyAgICAgICAgLy8gYWxsIG9mIHRo
ZSBNZWRpYUNvbnRyb2xsZXIncyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgaGF2ZSBzdGlsbCBlbmRl
ZCBwbGF5YmFjaywgYW5kIHRoZSAKKyAgICAgICAgLy8gbWVkaWEgY29udHJvbGxlciBwbGF5YmFj
ayByYXRlIGlzIHN0aWxsIHBvc2l0aXZlIG9yIHplcm8sIAorICAgICAgICBpZiAoIW1fcGF1c2Vk
ICYmIGhhc0VuZGVkKCkpIHsKKyAgICAgICAgICAgIC8vIGNoYW5nZXMgdGhlIE1lZGlhQ29udHJv
bGxlciBvYmplY3QgdG8gYSBwYXVzZWQgbWVkaWEgY29udHJvbGxlcgorICAgICAgICAgICAgbV9w
YXVzZWQgPSB0cnVlOworICAgICAgICAgICAgbV9jbG9jay0+c3RvcCgpOworCisgICAgICAgICAg
ICAvLyBhbmQgdGhlbiBmaXJlcyBhIHNpbXBsZSBldmVudCBuYW1lZCBwYXVzZSBhdCB0aGUgTWVk
aWFDb250cm9sbGVyIG9iamVjdC4KKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1l
cygpLnBhdXNlRXZlbnQpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gSWYgdGhlIE1lZGlh
Q29udHJvbGxlcidzIG1vc3QgcmVjZW50bHkgcmVwb3J0ZWQgcGxheWJhY2sgc3RhdGUgaXMgbm90
IGVxdWFsIHRvIG5ldyBwbGF5YmFjayBzdGF0ZQorICAgIC8vIHRoZW4gcXVldWUgYSB0YXNrIHRv
IGZpcmUgYSBzaW1wbGUgZXZlbnQgYXQgdGhlIE1lZGlhQ29udHJvbGxlciBvYmplY3QsIHdob3Nl
IG5hbWUgaXMgcGxheWluZyAKKyAgICAvLyBpZiBuZXcgcGxheWJhY2sgc3RhdGUgaXMgcGxheWlu
ZywgZW5kZWQgaWYgbmV3IHBsYXliYWNrIHN0YXRlIGlzIGVuZGVkLCBhbmQgd2FpdGluZyBvdGhl
cndpc2UuCisgICAgQXRvbWljU3RyaW5nIGV2ZW50TmFtZTsKKyAgICBzd2l0Y2ggKG5ld1BsYXli
YWNrU3RhdGUpIHsKKyAgICBjYXNlIFdBSVRJTkc6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50
TmFtZXMoKS53YWl0aW5nRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRU5ERUQ6Cisg
ICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50OworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBMQVlJTkc6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5w
bGF5aW5nRXZlbnQ7CisgICAgICAgIG1fY2xvY2stPnN0YXJ0KCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBz
Y2hlZHVsZUV2ZW50KGV2ZW50TmFtZSk7CisKKyAgICAvLyBMZXQgdGhlIE1lZGlhQ29udHJvbGxl
cidzIG1vc3QgcmVjZW50bHkgcmVwb3J0ZWQgcGxheWJhY2sgc3RhdGUgYmUgbmV3IHBsYXliYWNr
IHN0YXRlLgorICAgIG1fcGxheWJhY2tTdGF0ZSA9IG5ld1BsYXliYWNrU3RhdGU7CisKKyAgICB1
cGRhdGVNZWRpYUVsZW1lbnRzKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjp1cGRhdGVN
ZWRpYUVsZW1lbnRzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9t
ZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2lu
ZGV4XS0+dXBkYXRlUGxheVN0YXRlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpicmlu
Z0VsZW1lbnRVcFRvU3BlZWQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NF
UlQoZWxlbWVudCk7CisgICAgQVNTRVJUKG1fbWVkaWFFbGVtZW50cy5jb250YWlucyhlbGVtZW50
KSk7CisKKyAgICAvLyBXaGVuIHRoZSB1c2VyIGFnZW50IGlzIHRvIGJyaW5nIGEgbWVkaWEgZWxl
bWVudCB1cCB0byBzcGVlZCB3aXRoIGl0cyBuZXcgbWVkaWEgY29udHJvbGxlciwKKyAgICAvLyBp
dCBtdXN0IHNlZWsgdGhhdCBtZWRpYSBlbGVtZW50IHRvIHRoZSBNZWRpYUNvbnRyb2xsZXIncyBt
ZWRpYSBjb250cm9sbGVyIHBvc2l0aW9uIHJlbGF0aXZlCisgICAgLy8gdG8gdGhlIG1lZGlhIGVs
ZW1lbnQncyB0aW1lbGluZS4KKyAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRDb2RlID0gMDsKKyAg
ICBlbGVtZW50LT5zZWVrKGN1cnJlbnRUaW1lKCksIGlnbm9yZWRDb2RlKTsKK30KKworYm9vbCBN
ZWRpYUNvbnRyb2xsZXI6OmlzQmxvY2tlZCgpIGNvbnN0Cit7CisgICAgLy8gQSBNZWRpYUNvbnRy
b2xsZXIgaXMgYSBibG9ja2VkIG1lZGlhIGNvbnRyb2xsZXIgaWYgdGhlIE1lZGlhQ29udHJvbGxl
ciBpcyBhIHBhdXNlZCBtZWRpYSAKKyAgICAvLyBjb250cm9sbGVyLAorICAgIGlmIChtX3BhdXNl
ZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBib29sIGFsbFBhdXNl
ZCA9IHRydWU7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVt
ZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVu
dCA9IG1fbWVkaWFFbGVtZW50c1tpbmRleF07CisgICAgICAgIC8vICBvciBpZiBhbnkgb2YgaXRz
IHNsYXZlZCBtZWRpYSBlbGVtZW50cyBhcmUgYmxvY2tlZCBtZWRpYSBlbGVtZW50cywKKyAgICAg
ICAgaWYgKGVsZW1lbnQtPmlzQmxvY2tlZCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIAorICAgICAgICAvLyBvciBpZiBhbnkgb2YgaXRzIHNsYXZlZCBtZWRpYSBlbGVtZW50
cyB3aG9zZSBhdXRvcGxheWluZyBmbGFnIGlzIHRydWUgc3RpbGwgaGF2ZSB0aGVpciAKKyAgICAg
ICAgLy8gcGF1c2VkIGF0dHJpYnV0ZSBzZXQgdG8gdHJ1ZSwKKyAgICAgICAgaWYgKGVsZW1lbnQt
PmF1dG9wbGF5KCkgJiYgZWxlbWVudC0+cGF1c2VkKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgCisgICAgICAgIGlmICghZWxlbWVudC0+cGF1c2VkKCkpCisgICAgICAgICAg
ICBhbGxQYXVzZWQgPSBmYWxzZTsKKyAgICB9CisgICAgCisgICAgLy8gb3IgaWYgYWxsIG9mIGl0
cyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgaGF2ZSB0aGVpciBwYXVzZWQgYXR0cmlidXRlIHNldCB0
byB0cnVlLgorICAgIHJldHVybiBhbGxQYXVzZWQ7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVy
OjpoYXNFbmRlZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fY2xvY2stPnBsYXlSYXRlKCkgPD0gMCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgYm9vbCBhbGxIYXZlRW5k
ZWQgPSB0cnVlOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxl
bWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmICghbV9tZWRpYUVsZW1lbnRzW2lu
ZGV4XS0+ZW5kZWQoKSkKKyAgICAgICAgICAgIGFsbEhhdmVFbmRlZCA9IGZhbHNlOworICAgIH0K
KyAgICByZXR1cm4gYWxsSGF2ZUVuZGVkOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2No
ZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKK3sKKyAgICBtX3BlbmRp
bmdFdmVudHMuYXBwZW5kKEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgdHJ1ZSkpOwor
ICAgIGlmICghbV9hc3luY0V2ZW50VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9hc3luY0V2
ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6YXN5
bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sbGVyPiopCit7CisgICAgVmVjdG9y
PFJlZlB0cjxFdmVudD4gPiBwZW5kaW5nRXZlbnRzOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIAorICAgIG1fcGVuZGluZ0V2ZW50cy5zd2FwKHBlbmRpbmdFdmVudHMpOworICAgIHNp
emVfdCBjb3VudCA9IHBlbmRpbmdFdmVudHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGluZGV4
ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkKKyAgICAgICAgZGlzcGF0Y2hFdmVudChwZW5k
aW5nRXZlbnRzW2luZGV4XS5yZWxlYXNlKCksIGVjKTsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogTWVkaWFDb250cm9sbGVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sK
KyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50cy5maXJzdCgpLT5kb2N1bWVudCgpOworfQorCitib29s
IE1lZGlhQ29udHJvbGxlcjo6aGFzQXVkaW8oKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAg
ICAgIGlmIChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5oYXNBdWRpbygpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNv
bnRyb2xsZXI6Omhhc1ZpZGVvKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAo
bV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+aGFzVmlkZW8oKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVy
OjpoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAw
OyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYg
KG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmhhc0Nsb3NlZENhcHRpb25zKCkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlh
Q29udHJvbGxlcjo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wgdmlzaWJsZSkKK3sKKyAg
ICBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZSA9IHZpc2libGU7CisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAg
IG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnNldENsb3NlZENhcHRpb25zVmlzaWJsZSh2aXNpYmxl
KTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6OnN1cHBvcnRzU2Nhbm5pbmcoKSBjb25zdAor
eworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6
ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmICghbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+c3Vw
cG9ydHNTY2FubmluZygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmJlZ2luU2NydWJiaW5nKCkK
K3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNp
emUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+YmVnaW5TY3J1
YmJpbmcoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmVuZFNjcnViYmluZygpCit7Cisg
ICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7
ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmVuZFNjcnViYmluZygp
OworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6Y2FuUGxheSgpIGNvbnN0Cit7CisgICAgZm9y
IChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5k
ZXgpIHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5jYW5QbGF5KCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIE1lZGlhQ29udHJvbGxlcjo6aXNMaXZlU3RyZWFtKCkgY29uc3QKK3sKKyAgICBmb3IgKHNp
emVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkg
eworICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmlzTGl2ZVN0cmVhbSgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBNZWRpYUNvbnRyb2xsZXI6Omhhc1NvdXJjZSgpIGNvbnN0Cit7CisgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsK
KyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5oYXNTb3VyY2UoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
TWVkaWFDb250cm9sbGVyOjpyZXR1cm5Ub1JlYWx0aW1lKCkKK3sKKyAgICBmb3IgKHNpemVfdCBp
bmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAg
ICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+cmV0dXJuVG9SZWFsdGltZSgpOworfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbGxlcjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZWRpYUNvbnRyb2xsZXI7Cit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTg1ZWYyOWEyM2RiOTlkNmZlNGM4NjA0MjI4ZjkxOTM3NzA5NmZlNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKQEAgLTAsMCArMSwxNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYUNvbnRyb2xsZXJfaAorI2RlZmluZSBNZWRpYUNv
bnRyb2xsZXJfaAorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisj
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2xvY2s7CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50
OworY2xhc3MgRXZlbnQ7CisKK2NsYXNzIE1lZGlhQ29udHJvbGxlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPE1lZGlhQ29udHJvbGxlcj4sIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UsIHB1
YmxpYyBFdmVudFRhcmdldCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFD
b250cm9sbGVyPiBtZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYpOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gY3JlYXRlKCk7CisgICAgdmly
dHVhbCB+TWVkaWFDb250cm9sbGVyKCk7CisKKyAgICB2b2lkIGFkZE1lZGlhRWxlbWVudChIVE1M
TWVkaWFFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxl
bWVudCopOworICAgIGJvb2wgY29udGFpbnNNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCop
IGNvbnN0OworCisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3QgeyByZXR1cm4g
bV9tZWRpYUdyb3VwOyB9CisgICAgCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+
IGJ1ZmZlcmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNl
ZWthYmxlKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHBsYXll
ZCgpOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnJl
bnRUaW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAgCisgICAgdmlydHVhbCBib29sIHBh
dXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF1c2VkOyB9CisgICAgdmlydHVhbCB2b2lkIHBsYXko
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IGRl
ZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRQbGF5YmFja1JhdGU7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCk7CisgICAg
CisgICAgdmlydHVhbCBmbG9hdCBwbGF5YmFja1JhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0UGxheWJhY2tSYXRlKGZsb2F0KTsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IHZvbHVt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFZvbHVt
ZShmbG9hdCwgRXhjZXB0aW9uQ29kZSYpOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBtdXRlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TXV0ZWQoYm9v
bCk7CisgICAgCisgICAgdmlydHVhbCBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3JlYWR5U3RhdGU7IH0KKworICAgIGVudW0gUGxheWJhY2tTdGF0ZSB7IFdBSVRJTkcs
IFBMQVlJTkcsIEVOREVEIH07CisgICAgdmlydHVhbCBQbGF5YmFja1N0YXRlIHBsYXliYWNrU3Rh
dGUoKSBjb25zdCB7IHJldHVybiBtX3BsYXliYWNrU3RhdGU7IH0KKworICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc0Z1bGxzY3JlZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBoYXNBdWRp
bygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRD
bG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCk7CisgICAgdmlydHVhbCBib29sIGNsb3NlZENhcHRp
b25zVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlOyB9Cisg
ICAgCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Nhbm5pbmcoKSBjb25zdDsKKyAgICAKKyAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kU2Ny
dWJiaW5nKCk7CisgICAgCisgICAgdmlydHVhbCBib29sIGNhblBsYXkoKSBjb25zdDsKKyAgICAK
KyAgICB2aXJ0dWFsIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3Q7CisgICAgCisgICAgdmlydHVh
bCBib29sIGhhc1NvdXJjZSgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgdm9pZCByZXR1cm5U
b1JlYWx0aW1lKCk7CisKKyAgICBib29sIGlzQmxvY2tlZCgpIGNvbnN0OworCisgICAgLy8gRXZl
bnRUYXJnZXQKKyAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhQ29udHJvbGxlcj46OnJlZjsKKyAg
ICB1c2luZyBSZWZDb3VudGVkPE1lZGlhQ29udHJvbGxlcj46OmRlcmVmOworCitwcml2YXRlOgor
ICAgIE1lZGlhQ29udHJvbGxlcigpOworICAgIHZvaWQgcmVwb3J0Q29udHJvbGxlclN0YXRlKCk7
CisgICAgdm9pZCB1cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgdm9pZCB1cGRhdGVQbGF5YmFja1N0
YXRlKCk7CisgICAgdm9pZCB1cGRhdGVNZWRpYUVsZW1lbnRzKCk7CisgICAgdm9pZCBicmluZ0Vs
ZW1lbnRVcFRvU3BlZWQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIHZvaWQgc2NoZWR1bGVFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7CisgICAgdm9pZCBhc3luY0V2ZW50VGlt
ZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xsZXI+Kik7CisgICAgYm9vbCBoYXNFbmRlZCgpIGNv
bnN0OworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJn
ZXQoKSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRl
cmVmKCk7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRh
cmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKyAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRU
YXJnZXREYXRhOyB9CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworCisg
ICAgZnJpZW5kIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CisgICAgZnJpZW5kIGNsYXNzIE1lZGlh
Q29udHJvbGxlckV2ZW50TGlzdGVuZXI7CisgICAgVmVjdG9yPEhUTUxNZWRpYUVsZW1lbnQqPiBt
X21lZGlhRWxlbWVudHM7CisgICAgYm9vbCBtX3BhdXNlZDsKKyAgICBmbG9hdCBtX2RlZmF1bHRQ
bGF5YmFja1JhdGU7CisgICAgZmxvYXQgbV92b2x1bWU7CisgICAgYm9vbCBtX211dGVkOworICAg
IFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOworICAgIFBsYXliYWNrU3RhdGUgbV9wbGF5YmFja1N0
YXRlOworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9wZW5kaW5nRXZlbnRzOworICAgIFRp
bWVyPE1lZGlhQ29udHJvbGxlcj4gbV9hc3luY0V2ZW50VGltZXI7CisgICAgU3RyaW5nIG1fbWVk
aWFHcm91cDsKKyAgICBib29sIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlOworICAgIFBhc3NSZWZQ
dHI8Q2xvY2s+IG1fY2xvY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxl
ci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5pZGwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDRiMmExZmQ4Y2I5NDQwOGEzOGRhYmI5NTYzZWJmYTVmNzM4ZmM1MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbApAQCAtMCwwICsx
LDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworbW9kdWxlIGh0bWwgeworICAgIGludGVyZmFjZSBbCisgICAgICAg
IENvbmRpdGlvbmFsPVZJREVPLAorICAgICAgICBDYW5CZUNvbnN0cnVjdGVkLAorICAgICAgICBH
ZW5lcmF0ZVRvSlMsCisgICAgICAgIEV2ZW50VGFyZ2V0CisgICAgXSBNZWRpYUNvbnRyb2xsZXIg
eworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJhbmdlcyBidWZmZXJlZDsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFRpbWVSYW5nZXMgc2Vla2FibGU7CisKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBkdXJhdGlvbjsKKyAgICAgICAgYXR0cmlidXRlIGRvdWJs
ZSBjdXJyZW50VGltZQorICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsK
KworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBwYXVzZWQ7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBUaW1lUmFuZ2VzIHBsYXllZDsKKyAgICAgICAgdm9pZCBwbGF5KCk7
CisgICAgICAgIHZvaWQgcGF1c2UoKTsKKworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIGRlZmF1
bHRQbGF5YmFja1JhdGU7CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgcGxheWJhY2tSYXRlOwor
CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgdm9sdW1lCisgICAgICAgICAgICBzZXR0ZXIgcmFp
c2VzIChET01FeGNlcHRpb24pOworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBtdXRlZDsKKwor
ICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAgICAgdm9pZCBhZGRFdmVudExp
c3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICB2b2lkIHJlbW92
ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAg
ICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAgICAgICAgICByYWlz
ZXMoRXZlbnRFeGNlcHRpb24pOworICAgIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MmNkNGRhNDFhZjQyZjVkYTJh
ZTVkZjk3NzhjNGI4NmI3YzM1NDAwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaApAQCAtMCwwICsxLDk5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlX2gKKyNkZWZpbmUgTWVkaWFDb250
cm9sbGVySW50ZXJmYWNlX2gKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGltZVJhbmdlczsK
KwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKworY2xhc3MgTWVkaWFDb250cm9sbGVySW50
ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2Uo
KSB7IH07CisgICAgCisgICAgLy8gTWVkaWFDb250cm9sbGVyIElETDoKKyAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBwbGF5ZWQoKSA9IDA7CisgICAgCisgICAgdmlydHVhbCBm
bG9hdCBkdXJhdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRUaW1l
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCwgRXhj
ZXB0aW9uQ29kZSYpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgcGF1c2VkKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYXVz
ZSgpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IGRlZmF1bHRQbGF5YmFja1JhdGUoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERlZmF1bHRQbGF5YmFja1JhdGUoZmxvYXQp
ID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IHBsYXliYWNrUmF0ZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheWJhY2tSYXRlKGZsb2F0KSA9IDA7CisgICAgCisgICAg
dmlydHVhbCBmbG9hdCB2b2x1bWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFZv
bHVtZShmbG9hdCwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wg
bXV0ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpID0gMDsK
KyAgICAKKyAgICBlbnVtIFJlYWR5U3RhdGUgeyBIQVZFX05PVEhJTkcsIEhBVkVfTUVUQURBVEEs
IEhBVkVfQ1VSUkVOVF9EQVRBLCBIQVZFX0ZVVFVSRV9EQVRBLCBIQVZFX0VOT1VHSF9EQVRBIH07
CisgICAgdmlydHVhbCBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCA9IDA7CisKKyAgICAv
LyBNZWRpYUNvbnRyb2xFbGVtZW50czoKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2Ny
ZWVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0Z1bGxzY3JlZW4oKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigpID0gMDsKKworICAgIHZpcnR1
YWwgYm9vbCBoYXNBdWRpbygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVmlkZW8o
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBjbG9zZWRDYXB0aW9uc1Zpc2libGUoKSBjb25zdCA9IDA7CisK
KyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTY2FubmluZygpIGNvbnN0ID0gMDsKKworICAgIHZp
cnR1YWwgdm9pZCBiZWdpblNjcnViYmluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kU2Ny
dWJiaW5nKCkgPSAwOworCisgICAgdmlydHVhbCBib29sIGNhblBsYXkoKSBjb25zdCA9IDA7CisK
KyAgICB2aXJ0dWFsIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3QgPSAwOworCisgICAgdmlydHVh
bCBib29sIGhhc1NvdXJjZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCByZXR1cm5U
b1JlYWx0aW1lKCkgPSAwOworfTsKKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGltZVJhbmdlcy5jcHAKaW5kZXggMWUxODMwNjk4NzcxNGIwZTk5YjJkNTM1YmM0YjQ3Y2UzY2Nj
ODc4Mi4uYmIxYjBmZDU4NzEyNDdiMWY4Y2E1MmU4ZWY3ZTAzNjdiMGU4NGZkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RpbWVSYW5nZXMuY3BwCkBAIC0zMCwxMyArMzAsMTQgQEAKICNpbmNsdWRlIDxtYXRo
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAog
VGltZVJhbmdlczo6VGltZVJhbmdlcyhmbG9hdCBzdGFydCwgZmxvYXQgZW5kKQogewogICAgIGFk
ZChzdGFydCwgZW5kKTsKIH0KIAotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1lUmFuZ2VzOjpj
b3B5KCkKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gVGltZVJhbmdlczo6Y29weSgpIGNvbnN0CiB7
CiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IG5ld1Nlc3Npb24gPSBUaW1lUmFuZ2VzOjpjcmVhdGUo
KTsKICAgICAKQEAgLTQ3LDYgKzQ4LDUxIEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gVGltZVJh
bmdlczo6Y29weSgpCiAgICAgcmV0dXJuIG5ld1Nlc3Npb24ucmVsZWFzZSgpOwogfQogCit2b2lk
IFRpbWVSYW5nZXM6OmludmVydCgpCit7CisgICAgUmVmUHRyPFRpbWVSYW5nZXM+IGludmVydGVk
ID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisgICAgZmxvYXQgcG9zSW5mID0gc3RkOjpudW1lcmlj
X2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CisgICAgZmxvYXQgbmVnSW5mID0gLXN0ZDo6bnVt
ZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOworCisgICAgaWYgKCFtX3Jhbmdlcy5zaXpl
KCkpCisgICAgICAgIGludmVydGVkLT5hZGQobmVnSW5mLCBwb3NJbmYpOworICAgIGVsc2Ugewor
ICAgICAgICBpZiAoZmxvYXQgc3RhcnQgPSBtX3Jhbmdlcy5maXJzdCgpLm1fc3RhcnQgIT0gbmVn
SW5mKQorICAgICAgICAgICAgaW52ZXJ0ZWQtPmFkZChuZWdJbmYsIHN0YXJ0KTsKKworICAgICAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4ICsgMSA8IG1fcmFuZ2VzLnNpemUoKTsgKytp
bmRleCkKKyAgICAgICAgICAgIGludmVydGVkLT5hZGQobV9yYW5nZXNbaW5kZXhdLm1fZW5kLCBt
X3Jhbmdlc1tpbmRleCArIDFdLm1fc3RhcnQpOworCisgICAgICAgIGlmIChmbG9hdCBlbmQgPSBt
X3Jhbmdlcy5sYXN0KCkubV9lbmQgIT0gcG9zSW5mKQorICAgICAgICAgICAgaW52ZXJ0ZWQtPmFk
ZChlbmQsIHBvc0luZik7CisgICAgfQorCisgICAgbV9yYW5nZXMuc3dhcChpbnZlcnRlZC0+bV9y
YW5nZXMpOworfQorCit2b2lkIFRpbWVSYW5nZXM6OmludGVyc2VjdFdpdGgoY29uc3QgVGltZVJh
bmdlcyogb3RoZXIpCit7CisgICAgQVNTRVJUKG90aGVyKTsKKyAgICBSZWZQdHI8VGltZVJhbmdl
cz4gaW52ZXJ0ZWQgPSBjb3B5KCk7CisgICAgUmVmUHRyPFRpbWVSYW5nZXM+IGludmVydGVkT3Ro
ZXIgPSBvdGhlci0+Y29weSgpOworICAgIGludmVydGVkLT51bmlvbldpdGgoaW52ZXJ0ZWRPdGhl
ci5nZXQoKSk7CisgICAgaW52ZXJ0ZWQtPmludmVydCgpOworCisgICAgbV9yYW5nZXMuc3dhcChp
bnZlcnRlZC0+bV9yYW5nZXMpOworfQorCit2b2lkIFRpbWVSYW5nZXM6OnVuaW9uV2l0aChjb25z
dCBUaW1lUmFuZ2VzKiBvdGhlcikKK3sKKyAgICBBU1NFUlQob3RoZXIpOworICAgIFJlZlB0cjxU
aW1lUmFuZ2VzPiB1bmlvbmVkID0gY29weSgpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsg
aW5kZXggPCBvdGhlci0+bV9yYW5nZXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGNvbnN0
IFJhbmdlJiByYW5nZSA9IG90aGVyLT5tX3Jhbmdlc1tpbmRleF07CisgICAgICAgIHVuaW9uZWQt
PmFkZChyYW5nZS5tX3N0YXJ0LCByYW5nZS5tX2VuZCk7CisgICAgfQorCisgICAgbV9yYW5nZXMu
c3dhcCh1bmlvbmVkLT5tX3Jhbmdlcyk7Cit9CisKIGZsb2F0IFRpbWVSYW5nZXM6OnN0YXJ0KHVu
c2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QgCiB7IAogICAgIGlmIChpbmRl
eCA+PSBsZW5ndGgoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFu
Z2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaAppbmRleCAyZDdhZjI1YTgw
OTEzNzMwZjgwZDIzOTMwYmUyNzRlMGZmMTIxN2ZkLi5jY2NjZTA1YzE5YzRhYzllNjI5ZGQyYTJh
MWZiNjY1MjE5NzgxMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5n
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaApAQCAtNDYsNyArNDYs
MTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRpbWVSYW5nZXMoc3Rh
cnQsIGVuZCkpOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gY29weSgpOwor
ICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gY29weSgpIGNvbnN0OworICAgIHZvaWQgaW52ZXJ0
KCk7CisgICAgdm9pZCBpbnRlcnNlY3RXaXRoKGNvbnN0IFRpbWVSYW5nZXMqKTsKKyAgICB2b2lk
IHVuaW9uV2l0aChjb25zdCBUaW1lUmFuZ2VzKik7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX3Jhbmdlcy5zaXplKCk7IH0KICAgICBmbG9hdCBzdGFydCh1bnNpZ25l
ZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
CmluZGV4IDkxMjcwMjdjOWQzOWQ2OGMxZDJmNzk3MGY0ZmY5ZjkwNGE2YTg0M2UuLjA1MTllZTM2
ZWUzZWEzMzI0OWY0ODVlYjYzOWZiMWEyMDI4MGJkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5pZGwKQEAgLTYzNCw2ICs2MzQsNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmli
dXRlIFtDb25kaXRpb25hbD1WSURFTywgRW5hYmxlZEF0UnVudGltZV0gTWVkaWFFcnJvckNvbnN0
cnVjdG9yIE1lZGlhRXJyb3I7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU8s
IEVuYWJsZWRBdFJ1bnRpbWVdIFRpbWVSYW5nZXNDb25zdHJ1Y3RvciBUaW1lUmFuZ2VzOwogICAg
ICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVZJREVPLCBFbmFibGVkQXRSdW50aW1lXSBIVE1M
U291cmNlRWxlbWVudENvbnN0cnVjdG9yIEhUTUxTb3VyY2VFbGVtZW50OworICAgICAgICBhdHRy
aWJ1dGUgW0NvbmRpdGlvbmFsPVZJREVPLCBFbmFibGVkQXRSdW50aW1lXSBNZWRpYUNvbnRyb2xs
ZXJDb25zdHJ1Y3RvciBNZWRpYUNvbnRyb2xsZXI7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9BTklN
QVRJT05fQVBJKSAmJiBFTkFCTEVfQU5JTUFUSU9OX0FQSQogICAgICAgICBhdHRyaWJ1dGUgV2Vi
S2l0QW5pbWF0aW9uQ29uc3RydWN0b3IgV2ViS2l0QW5pbWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDAxOGM3ZGQzM2Uz
OGMxYjhmNzczNDVhOGMzZTRmODM1ZmVjNjBhNzMuLmZjNzdmZjI4ODM4YjdjMDk0YWE1M2E0ZmJk
ZjA3MTY4MGNhMjIxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHAKQEAgLTYwOSw2ICs2MDksMTEgQEAgUGFzc1JlZlB0cjxUaW1lUmFu
Z2VzPiBNZWRpYVBsYXllcjo6YnVmZmVyZWQoKQogICAgIHJldHVybiBtX3ByaXZhdGUtPmJ1ZmZl
cmVkKCk7CiB9CiAKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXI6OnNlZWthYmxl
KCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5zZWVrYWJsZSgpOworfQorCiBmbG9hdCBNZWRp
YVBsYXllcjo6bWF4VGltZVNlZWthYmxlKCkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5tYXhU
aW1lU2Vla2FibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oCmluZGV4IGM5NmIwMjVkODJkMDA3MDkxNjllZWE1MWMwNzgyNmI3NDUwNmM0NzEu
LjQ3NzM5YTA4YjBlM2Q5Y2M3M2M5OWExMzE0MzRhNzhhZTAzNzQ1NWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjQxLDYgKzI0MSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZXNlcnZlc1BpdGNoKGJvb2wpOwogCiAgICAgUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpOworICAgIFBhc3NSZWZQdHI8VGltZVJhbmdl
cz4gc2Vla2FibGUoKTsKICAgICBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKTsKIAogICAgIHVuc2ln
bmVkIGJ5dGVzTG9hZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IGY4YzcwYWJlMjhhN2VkMDFkZmI4YTJj
YjdmMWM2MzY2MzdkMzg0NDEuLjZjNTI3ZDdlNWNkMzg5OTkxNmI0NjVlZjcyZDU3MTQ0MDU2ZWQ3
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyUHJpdmF0ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFZJREVPKQogCiAj
aW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTEsNiArOTIsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtT
dGF0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJl
YWR5U3RhdGUoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdl
cz4gc2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBtYXhUaW1lU2Vla2FibGUoKSA/IFRpbWVSYW5n
ZXM6OmNyZWF0ZSgwLCBtYXhUaW1lU2Vla2FibGUoKSkgOiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsg
fQogICAgIHZpcnR1YWwgZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0ID0gMDsKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDI1NzllZGZkZjJkMjMzNjE1MTEwNTUwZjU5NWM2ZmQwOGZjYjkyZmQuLmE4NWI0YmVmMTEw
OTk2YjkwYTkwNTJjNjgzYTdmNDlhZGQzZDJjNjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAx
MS0xMS0wMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgTWVkaWFDb250cm9sbGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzE0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLmh0bWw6IEFkZGVkLgor
CisyMDExLTExLTAzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBNZWRpYUNvbnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2stZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNr
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbDogQWRk
ZWQuCisKKzIwMTEtMTEtMDIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IE1lZGlhQ29udHJvbGxlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxh
eWJhY2suaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci5odG1s
OiBBZGRlZC4KKwogMjAxMS0xMS0wNCAgVmluZWV0IENoYXVkaGFyeSAgPHZpbmVldC5jaGF1ZGhh
cnlAbW90b3JvbGEuY29tPgogCiAgICAgICAgIFNlbmQgdGhlIHN1Ym1pc3Npb25zIGNoYXJhY3Rl
ciBlbmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9t
ZWRpYS9tZWRpYS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzZkNGQwN2Zm
Y2NmY2IzMGU3NTVhY2MyNjhlNjc0Zjc0YWNjYzBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNSBA
QAorIAorVGVzdCBwcmVzZW5jZSBvZiBNZWRpYUNvbnRyb2xsZXIgY29uc3RydWN0b3IsIG1lZGlh
Q29udHJvbGxlciwgYW5kIG1lZGlhR3JvdXAgYXR0cmlidXRlczoKK0VYUEVDVEVEICh0eXBlb2Yo
TWVkaWFDb250cm9sbGVyKSA9PSAnb2JqZWN0JykgT0sKK0VYUEVDVEVEICh2aWRlby5tZWRpYUNv
bnRyb2xsZXIgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKHZpZGVvLm1lZGlhR3JvdXAgPT0gJycp
IE9LCisKK1Rlc3QgdGhhdCB0aGUgcHJlc2VuY2Ugb2YgYSBtZWRpYUdyb3VwIGF0dHJpYnV0ZSBj
cmVhdGVzIGEgbWVkaWFDb250cm9sbGVyOgorRVhQRUNURUQgKHZpZGVvMi5tZWRpYUdyb3VwID09
ICdncm91cCcpIE9LCitFWFBFQ1RFRCAodmlkZW8yLm1lZGlhQ29udHJvbGxlciAhPSAnbnVsbCcp
IE9LCisKK1Rlc3QgdGhhdCBzZXR0aW5nIG1lZGlhR3JvdXAgdG8gYW4gZW1wdHkgc3RyaW5nIHJl
bW92ZXMgdGhlIG1lZGlhQ29udHJvbGxlcjoKK1JVTih2aWRlby5tZWRpYUdyb3VwID0gJycpCitF
WFBFQ1RFRCAodmlkZW8ubWVkaWFDb250cm9sbGVyID09ICdudWxsJykgT0sKKworVGVzdCBtYW51
YWxseSBjcmVhdGluZyBhbmQgYXNzaWduaW5nIGEgbWVkaWFDb250cm9sbGVyIHRvIGEgbWVkaWEg
ZWxlbWVudDoKK1JVTihjb250cm9sbGVyID0gbmV3IE1lZGlhQ29udHJvbGxlcigpKQorUlVOKHZp
ZGVvLm1lZGlhQ29udHJvbGxlciA9IGNvbnRyb2xsZXIpCitFWFBFQ1RFRCAodmlkZW8ubWVkaWFD
b250cm9sbGVyID09ICdbb2JqZWN0IE1lZGlhQ29udHJvbGxlcl0nKSBPSworCitUZXN0IHRoYXQg
dHdvIG1lZGlhIGVsZW1lbnRzIHdpdGggdGhlIHNhbWUgbWVkaWFHcm91cCBoYXZlIHRoZSBzYW1l
IG1lZGlhQ29udHJvbGxlcjoKK1JVTih2aWRlby5tZWRpYUdyb3VwID0gJ2dyb3VwJykKK1JVTih2
aWRlbzIubWVkaWFHcm91cCA9ICdncm91cCcpCitFWFBFQ1RFRCAodmlkZW8ubWVkaWFDb250cm9s
bGVyID09PSB2aWRlbzIubWVkaWFDb250cm9sbGVyID09ICd0cnVlJykgT0sKK0VORCBPRiBURVNU
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJh
Y2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5
YmFjay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhhOGUwOTIxM2VlMWE3MTA3YjgxMWFiOWY4
ODNhZDQwMTJhM2ZhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlh
LWNvbnRyb2xsZXItcGxheWJhY2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKKyAKK1JV
Tihjb250cm9sbGVyID0gdmlkZW8ubWVkaWFDb250cm9sbGVyKQorRVZFTlQoY2FucGxheXRocm91
Z2gpCitSVU4oY29udHJvbGxlci5jdXJyZW50VGltZSA9IDUpCitFWFBFQ1RFRCAodmlkZW8uY3Vy
cmVudFRpbWUgPT0gJzUnKSBPSworRVhQRUNURUQgKHZpZGVvMi5jdXJyZW50VGltZSA9PSAnNScp
IE9LCitSVU4odmlkZW8ucGxheSgpKQorUlVOKHZpZGVvMi5wbGF5KCkpCitSVU4oY29udHJvbGxl
ci5wbGF5KCkpCitFVkVOVChwbGF5aW5nKQorRVhQRUNURUQgKGNvbnRyb2xsZXIucGF1c2VkID09
ICdmYWxzZScpIE9LCitFVkVOVChlbmRlZCkKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbCBiL0xheW91dFRl
c3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzJi
ODNlZjFhYTg4OTZkN2MyMjA3ZjdhOTQ2NDkwZjNjY2Y1ZjJmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay5odG1sCkBAIC0wLDAg
KzEsNDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxz
Y3JpcHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPXZp
ZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgdmFyIGNv
bnRyb2xsZXI7CisgICAgICAgIHZhciB2aWRlbzI7CisKKyAgICAgICAgZnVuY3Rpb24gc3RhcnQo
KSB7CisgICAgICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2
aWRlbycpWzBdOworICAgICAgICAgICAgdmlkZW8yID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoJ3ZpZGVvJylbMV07CisgICAgICAgICAgICBydW4oJ2NvbnRyb2xsZXIgPSB2aWRlby5t
ZWRpYUNvbnRyb2xsZXInKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuYWRkRXZlbnRMaXN0ZW5l
cignY2FucGxheXRocm91Z2gnLCBjYW5wbGF5dGhyb3VnaCwgdHJ1ZSk7CisgICAgICAgICAgICBz
ZXRTcmNCeVRhZ05hbWUoJ3ZpZGVvJywgZmluZE1lZGlhRmlsZSgndmlkZW8nLCAnY29udGVudC90
ZXN0JykpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBjYW5wbGF5dGhy
b3VnaCgpIHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQoY2FucGxheXRocm91Z2gp
Iik7CisgICAgICAgICAgICBjb250cm9sbGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NhbnBsYXl0
aHJvdWdoJywgY2FucGxheXRocm91Z2gsIHRydWUpOworICAgICAgICAgICAgcnVuKCdjb250cm9s
bGVyLmN1cnJlbnRUaW1lID0gNScpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5j
dXJyZW50VGltZScsIDUpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlbzIuY3VycmVu
dFRpbWUnLCA1KTsKKyAgICAgICAgICAgIHJ1bigndmlkZW8ucGxheSgpJyk7CisgICAgICAgICAg
ICBydW4oJ3ZpZGVvMi5wbGF5KCknKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuYWRkRXZlbnRM
aXN0ZW5lcigncGxheWluZycsIHBsYXlpbmcsIHRydWUpOworICAgICAgICAgICAgcnVuKCdjb250
cm9sbGVyLnBsYXkoKScpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBw
bGF5aW5nKCkgeyAKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQocGxheWluZykiKTsK
KyAgICAgICAgICAgIGNvbnRyb2xsZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHBs
YXlpbmcsIHRydWUpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdjb250cm9sbGVyLnBhdXNl
ZCcsIGZhbHNlKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcignZW5k
ZWQnLCBlbmRlZCwgdHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBlbmRlZCgp
IHsgCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGVuZGVkKSIpOworICAgICAgICAg
ICAgY29udHJvbGxlci5yZW1vdmVFdmVudExpc3RlbmVyKCdlbmRlZCcsIGVuZGVkLCB0cnVlKTsK
KyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHZpZGVvIG1l
ZGlhR3JvdXA9Imdyb3VwIiBjb250cm9scz48L3ZpZGVvPgorICAgICAgICA8dmlkZW8gbWVkaWFH
cm91cD0iZ3JvdXAiIGNvbnRyb2xzPjwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21l
ZGlhLWNvbnRyb2xsZXIuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jMGU1OTY3NTRkNWFiYjFjM2U3ZWRmMTQyOWM2OTNhOGI4Nzg0ZmEw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci5o
dG1sCkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzY3JpcHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisKKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgdmFyIGNvbnRyb2xsZXI7CisgICAgICAgIHZhciB2aWRlbzI7CisKKyAgICAgICAgZnVu
Y3Rpb24gc3RhcnQoKSB7CisgICAgICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCd2aWRlbycpWzBdOworICAgICAgICAgICAgdmlkZW8yID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMV07CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiVGVzdCBwcmVzZW5jZSBvZiBNZWRpYUNvbnRyb2xsZXIgY29uc3RydWN0b3IsIG1lZGlhQ29u
dHJvbGxlciwgYW5kIG1lZGlhR3JvdXAgYXR0cmlidXRlczoiKTsKKyAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgidHlwZW9mKE1lZGlhQ29udHJvbGxlcikiLCAib2JqZWN0Iik7CisgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciIsIG51bGwpOworICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRpYUdyb3VwIiwgIiIpOworICAgICAgICAgICAgY29u
c29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCB0aGF0IHRoZSBw
cmVzZW5jZSBvZiBhIG1lZGlhR3JvdXAgYXR0cmlidXRlIGNyZWF0ZXMgYSBtZWRpYUNvbnRyb2xs
ZXI6IikKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8yLm1lZGlhR3JvdXAiLCAnZ3Jv
dXAnKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8yLm1lZGlhQ29udHJvbGxlciIs
IG51bGwsICIhPSIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiVGVzdCB0aGF0IHNldHRpbmcgbWVkaWFHcm91cCB0byBhbiBlbXB0eSBz
dHJpbmcgcmVtb3ZlcyB0aGUgbWVkaWFDb250cm9sbGVyOiIpCisgICAgICAgICAgICBydW4oInZp
ZGVvLm1lZGlhR3JvdXAgPSAnJyIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5t
ZWRpYUNvbnRyb2xsZXIiLCBudWxsKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7Cisg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgbWFudWFsbHkgY3JlYXRpbmcgYW5kIGFzc2ln
bmluZyBhIG1lZGlhQ29udHJvbGxlciB0byBhIG1lZGlhIGVsZW1lbnQ6IikKKyAgICAgICAgICAg
IHJ1bigiY29udHJvbGxlciA9IG5ldyBNZWRpYUNvbnRyb2xsZXIoKSIpOworICAgICAgICAgICAg
cnVuKCJ2aWRlby5tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyIik7CisgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciIsIGNvbnRyb2xsZXIpOworICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCB0
aGF0IHR3byBtZWRpYSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIG1lZGlhR3JvdXAgaGF2ZSB0aGUg
c2FtZSBtZWRpYUNvbnRyb2xsZXI6IikKKyAgICAgICAgICAgIHJ1bigidmlkZW8ubWVkaWFHcm91
cCA9ICdncm91cCciKTsKKyAgICAgICAgICAgIHJ1bigidmlkZW8yLm1lZGlhR3JvdXAgPSAnZ3Jv
dXAnIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciA9
PT0gdmlkZW8yLm1lZGlhQ29udHJvbGxlciIsIHRydWUpOworICAgICAgICAgICAgZW5kVGVzdCgp
OworICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBv
bmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8dmlkZW8+PC92aWRlbz4KKyAgICAgICAgPHZpZGVv
IG1lZGlhZ3JvdXA9Imdyb3VwIj48L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtbGlvbi9mYXN0L3JlZ2lvbnMvcmVuZGVyLXJlZ2lvbi1jdXN0b20tc3R5bGUtbWFyay1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbi9mYXN0L3JlZ2lvbnMvcmVu
ZGVyLXJlZ2lvbi1jdXN0b20tc3R5bGUtbWFyay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY3
NGVhOWU0ZmE4NTBhOTM4NDNlM2NmOGRiYmE2NTRkYjM5MzA0NwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1saW9uL2Zhc3QvcmVnaW9ucy9yZW5kZXItcmVnaW9u
LWN1c3RvbS1zdHlsZS1tYXJrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM0IEBACitsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDE2NgorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAs
MCkgc2l6ZSA4MDB4MTY2CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4
MTUwCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAyMDB4NTAKKyAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDUwKSBzaXplIDIwMHg1MAorICAgICAgUmVuZGVyUmVn
aW9uIHtESVZ9IGF0ICgwLDEwMCkgc2l6ZSAyMDB4NTAKK0Zsb3cgVGhyZWFkcworICBUaHJlYWQg
d2l0aCBmbG93LW5hbWUgJ2Zsb3cxJworICAgIGxheWVyIGF0ICgwLDApIHNpemUgMjAweDEwMAor
ICAgICAgUmVuZGVyRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDIwMHgxMDAKKyAgICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDAsMTYpIHNpemUgMjAweDE4OAorICAgICAgICAgIFJlbmRlckJs
b2NrIHtQfSBhdCAoMCwwKSBzaXplIDIwMHgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgMTY4eDE4CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDE2ODogIkZpcnN0IHBhcmEgZ29lcyBpbnRvIHJlZ2lvbi4iCisgICAgICAgICAgUmVu
ZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMzQpIHNpemUgMjAweDE4CisgICAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMzR4MTgKKyAgICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggMTM0OiAiVGV4dCBnb2VzIGludG8gcmVnaW9uIgorICAgICAg
ICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw2OCkgc2l6ZSAyMDB4MTgKKyAgICAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE4N3gxOAorICAgICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCAxODc6ICJTZWNvbmQgcGFyYSBnb2VzIGludG8gcmVnaW9uLiIK
KyAgICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMTAyKSBzaXplIDIwMHgxOAorICAgICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTc1eDE4CisgICAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE3NTogIlRoaXJkIHBhcmEgZ29lcyBpbnRvIHJl
Z2lvbi4iCisgICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMTM2KSBzaXpl
IDIwMHgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTM0
eDE4CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEzNDogIlRleHQgZ29l
cyBpbnRvIHJlZ2lvbiIKKyAgICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMTcwKSBzaXpl
IDIwMHgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTgy
eDE4CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE4MjogIkZvdXJ0aCBw
YXJhIGdvZXMgaW50byByZWdpb24uIgorICBSZWdpb25zIGZvciBmbG93ICdmbG93MScKKyAgICBS
ZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjEgcmVnaW9uIHN0eWxlOiAxCisgICAgUmVuZGVyUmVn
aW9uIHtESVZ9ICNyZWdpb24zIHJlZ2lvbiBzdHlsZTogMQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114086</attachid>
            <date>2011-11-08 08:59:54 -0800</date>
            <delta_ts>2011-11-08 09:31:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71408-20111108085953.patch</filename>
            <type>text/plain</type>
            <size>95450</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk0OTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxOWRjYjFkNzEwZGQ3MjRl
N2Q5MGM0NjBhMDI0ZjViZDc4MDhlMmQxLi5iMTY1ODc3MmRjNDBiZWRlYTNkMDllMzM2Zjg2MThj
NTg1OTczNmY4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU3IEBACisyMDExLTExLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNv
bnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbAorCisgICAgICAgIEFkZHMgc3VwcG9ydCBm
b3IgdGhlIE1lZGlhQ29udHJvbGxlciBET00gb2JqZWN0LCBhbmQgdGhlIG1lZGlhZ3JvdXAgYW5k
IG1lZGlhY29udHJvbGxlcgorICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGF0dHJpYnV0ZXMuCisK
KyAgICAgICAgTWVkaWFDb250cm9sbGVyIGlzIGFuIERPTSBvYmplY3Qgd2hpY2ggc3luY2hyb25p
emVzIHBsYXliYWNrIG9mIG11bHRpcGxlIEhUTUxNZWRpYUVsZW1lbnRzLiBJdCBjYW4KKyAgICAg
ICAgZWl0aGVyIGJlIGNyZWF0ZWQgYnkgYSBwYWdlIHNjcmlwdCBhbmQgYXNzaWduZWQgdG8gYSBI
VE1MTWVkaWFFbGVtZW50IHVzaW5nIHRoZSBtZWRpYUNvbnRyb2xsZXIgcHJvcGVydHksCisgICAg
ICAgIG9yIGFsbCBIVE1MTWVkaWFFbGVtZW50cyB3aXRoIGlkZW50aWNhbCBtZWRpYWdyb3VwIGF0
dHJpYnV0ZXMgd2lsbCBoYXZlIGEgTWVkaWFDb250cm9sbGVyIGFzc2lnbmVkIAorICAgICAgICBh
dXRvbWF0aWNhbGx5LgorCisgICAgICAgIEFkZCBhbiBhYnN0cmFjdCBpbnRlcmZhY2UgaW1wbGVt
ZW50ZWQgYnkgYm90aCBNZWRpYUNvbnRyb2xsZXIgYW5kIEhUTUxNZWRpYUVsZW1lbnQuCisgICAg
ICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U6On5NZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UpOgorCisgICAgICAgIEFkZCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCBhbmQgSURMLgor
ICAgICAgICAqIGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChtZWRp
YUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXApOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpt
ZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
Y3JlYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6TWVkaWFDb250cm9sbGVyKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6fk1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChNZWRp
YUNvbnRyb2xsZXI6OmFkZE1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnJlbW92ZU1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmNvbnRhaW5z
TWVkaWFFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6YnVmZmVyZWQpOgorICAg
ICAgICAoTWVkaWFDb250cm9sbGVyOjpzZWVrYWJsZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnBsYXllZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKToKKyAgICAg
ICAgKE1lZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnBsYXkpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpwYXVzZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnNldERlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpz
ZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZCk6CisgICAgICAgIChNZWRpYUNvbnRy
b2xsZXI6OnJlcG9ydENvbnRyb2xsZXJTdGF0ZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnVwZGF0ZVJlYWR5U3RhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjp1cGRhdGVQbGF5
YmFja1N0YXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlTWVkaWFFbGVtZW50
cyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnNjaGVkdWxlRXZlbnQpOgorICAgICAgICAo
TWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpoYXNBdWRpbyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Omhhc1ZpZGVvKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzQ2xvc2VkQ2FwdGlvbnMpOgorICAgICAgICAoTWVk
aWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUpOgorICAgICAgICAoTWVkaWFD
b250cm9sbGVyOjpzdXBwb3J0c1NjYW5uaW5nKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
YmVnaW5TY3J1YmJpbmcpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjplbmRTY3J1YmJpbmcp
OgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjYW5QbGF5KToKKyAgICAgICAgKE1lZGlhQ29u
dHJvbGxlcjo6aXNMaXZlU3RyZWFtKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzU291
cmNlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6cmV0dXJuVG9SZWFsdGltZSk6CisgICAg
ICAgIChNZWRpYUNvbnRyb2xsZXI6OmlzQmxvY2tlZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6Omhhc0VuZGVkKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6bWVkaWFHcm91cCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xsZXI6OmRlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sbGVyOjp2b2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpt
dXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnJlYWR5U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1N0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6c3VwcG9ydHNGdWxsc2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6aXNGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbGxlcjo6Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sbGVyOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbGxlcjo6dG9NZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sbGVyOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvTWVk
aWFDb250cm9sbGVyLmlkbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGNvbnZlbmllbmNlIGZ1bmN0
aW9ucyB0byBUaW1lUmFuZ2VzIHdoaWNoIGNhbiBjYWxjdWxhdGUgaW50ZXJzZWN0aW9ucyBhbmQK
KyAgICAgICAgdW5pb25zIGJldHdlZW4gVGltZVJhbmdlcyBvYmplY3RzLgorICAgICAgICAqIGh0
bWwvVGltZVJhbmdlcy5jcHA6CisgICAgICAgIChUaW1lUmFuZ2VzOjpjb3B5KToKKyAgICAgICAg
KFRpbWVSYW5nZXM6OmludmVydCk6CisgICAgICAgIChUaW1lUmFuZ2VzOjppbnRlcnNlY3RXaXRo
KToKKyAgICAgICAgKFRpbWVSYW5nZXM6OnVuaW9uV2l0aCk6CisgICAgICAgICogaHRtbC9UaW1l
UmFuZ2VzLmg6CisKKyAgICAgICAgQWRkIE1lZGlhQ29udHJvbGxlckNvbnN0cnVjdG9yIHRvIHRo
ZSBXaW5kb3cgb2JqZWN0LgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKworICAgICAg
ICBBZGQgdGhlIHR3byBuZXcgYXR0cmlidXRlIG5hbWVzLCBtZWRpYWdyb3VwIGFuZCBtZWRpYWNv
bnRyb2xsZXIuCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYXR0cmlidXRlcywgYW5kIGFkZCBvdmVycmlkZGVu
IGJlaGF2aW9yIHdoZW4gYSBtZWRpYSBlbGVtZW50CisgICAgICAgIGhhcyBhIGN1cnJlbnQgbWVk
aWEgY29udHJvbGxlcjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjplbmRlZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6dXNlckNhbmNlbGxlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRN
ZWRpYUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNv
bnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlTWVk
aWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzQmxv
Y2tlZE9uTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc1NvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0xpdmVTdHJlYW0pOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1M
TWVkaWFFbGVtZW50Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxN
ZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcik6CisKKyAgICAgICAgQWRkIGEgZnVuY3Rp
b24gInNlZWthYmxlIiB3aGljaCByZXR1cm5zIGEgVGltZVJhbmdlcyBjb250YWluaW5nIHRoZSBz
ZWVrYWJsZSB0aW1lIHJhbmdlcworICAgICAgICBpbiBhIG1lZGlhIGVsZW1lbnQuICBCeSBkZWZh
dWx0IHRoaXMgaXMgYSBzaW5nbGUgcmFuZ2Ugb2YgWzAsIG1heFRpbWVTZWVrYWJsZV0uCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OnNlZWthYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpz
ZWVrYWJsZSk6CisKKyAgICAgICAgU3VwcG9ydCBmdW5jdGlvbnMgdG8gY2FzdCBiZXR3ZWVuIE1l
ZGlhQ29udHJvbGxlciBhbmQgRXZlbnRUYXJnZXQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNF
dmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBkb20v
RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OnRvTWVkaWFD
b250cm9sbGVyKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKworICAgICAgICBCb2ls
ZXJwbGF0ZSB0byBzdXBwb3J0IGNyZWF0aW5nIHRoZSBkZXJpdmVkIHNvdXJjZXMgZm9yIE1lZGlh
Q29udHJvbGxlciBhbmQgYWRkaW5nIG5ldyBzb3VyY2VzCisgICAgICAgIHRvIHRoZSBwcm9qZWN0
OgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNw
cDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMS0xMS0wNyAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXggZHVlIHRvIGEgZXJyb25lb3VzIHNl
YXJjaC1hbmQtcmVwbGFjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOGFiOGZjMGQxNzM0MDU0
YzU2ZjVmYmIxZTUwYzZlNmY0OTMxZGJkNS4uMWU0MzdmOWE4YzAyZGE2MDQzZGI1OTQ5Mjc2NzQy
ZDhmZWIyNTFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTI3Niw2ICsyNzYsNyBAQCBTRVQo
V2ViQ29yZV9JRExfRklMRVMKICAgICBodG1sL0hUTUxVbmtub3duRWxlbWVudC5pZGwKICAgICBo
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCiAgICAgaHRtbC9JbWFnZURhdGEuaWRsCisgICAgaHRt
bC9NZWRpYUNvbnRyb2xsZXIuaWRsCiAgICAgaHRtbC9NZWRpYUVycm9yLmlkbAogICAgIGh0bWwv
VGV4dE1ldHJpY3MuaWRsCiAgICAgaHRtbC9UZXh0VHJhY2suaWRsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5jcHAKaW5kZXggYjNmMWUzZmI5OTZlNzkwMzkzZDlmZGM4NmY2OTFiOGE2MTUzZDNkNi4u
NTU4NzYwOTA2NjlkMjllNzM2YzFhODZkNjIwMmI3NDJiMDJjMmYxZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLmNwcApAQCAtMjI4LDYgKzIyOCw3IEBACiAjaW5jbHVkZSAiSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lLmNwcCIKICNpbmNsdWRlICJKU0tleWJvYXJkRXZlbnQuY3BwIgogI2luY2x1ZGUg
IkpTTG9jYXRpb24uY3BwIgorI2luY2x1ZGUgIkpTTWVkaWFDb250cm9sbGVyLmNwcCIKICNpbmNs
dWRlICJKU01lZGlhRXJyb3IuY3BwIgogI2luY2x1ZGUgIkpTTWVkaWFMaXN0LmNwcCIKICNpbmNs
dWRlICJKU01lZGlhUXVlcnlMaXN0LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmlu
ZGV4IGU2MDc0YzFlZDc3MTM0ZTViY2JlYTZhOThiNWUxOGRjOTk4YWE3MGYuLjQ4NDk1NjI3MzVm
M2I2MDFmNGRkOTUwNWUxMGFiMjFiN2EyOGIwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMjc3LDYgKzI3Nyw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIEtleWJvYXJkRXZl
bnQgXAogICAgIExvY2F0aW9uIFwKICAgICBMb3dQYXNzMkZpbHRlck5vZGUgXAorICAgIE1lZGlh
Q29udHJvbGxlciBcCiAgICAgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlIFwKICAgICBNZWRp
YUVycm9yIFwKICAgICBNZWRpYUxpc3QgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMucHJpIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCmluZGV4
IGNhZWI3OTllNjc2ZDEyMGE0ZTg5Y2U4NDA0Mzc0NzU3MmM0ZjdlOTYuLmM2ZjUyZTgzN2E3ZTJm
ZmYzMTUzMzE1YTUxY2U0ODY4MDUxNjdmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkK
QEAgLTMxNCw2ICszMTQsNyBAQCBJRExfQklORElOR1MgKz0gXAogICAgIGh0bWwvSFRNTFVua25v
d25FbGVtZW50LmlkbCBcCiAgICAgaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbCBcCiAgICAgaHRt
bC9JbWFnZURhdGEuaWRsIFwKKyAgICBodG1sL01lZGlhQ29udHJvbGxlci5pZGwgXAogICAgIGh0
bWwvTWVkaWFFcnJvci5pZGwgXAogICAgIGh0bWwvVGV4dE1ldHJpY3MuaWRsIFwKICAgICBodG1s
L1RpbWVSYW5nZXMuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGNhNTI1
MjExODNiZWRkYzcyYTJlYTVkYWIzMjQ4YThhODU3MGUxNzkuLjk1ZTI5YTg5ZWY2ZGRkNDRlODc4
YzYwYzg4MDk3M2Q1YWI4NWQ4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAt
MzU5LDYgKzM1OSw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0xvY2FsTWVkaWFTdHJlYW0uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0xvY2F0aW9uLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0xvY2F0aW9uLmgg
XAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUNvbnRyb2xsZXIuY3BwIFwKKwlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFDb250cm9sbGVyLmggXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNNZWRpYUVycm9yLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01l
ZGlhRXJyb3IuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhTGlzdC5jcHAgXApA
QCAtMTg3NSw2ICsxODc3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9odG1sL0xpbmtSZWxBdHRyaWJ1dGUuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJs
ZVRleHRUcmFjay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2su
aCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRG9jdW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuaCBc
CiAJU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmggXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggZjBm
MTFjODQ1M2M0NzZlYjI2NjdkMjFiNTg4YzFjMmVjMDNjOWFhOC4uNWRiNTRhOWU4NTMzMzhmMTVh
NTY3ZjJmZmJiY2NkYThmMDNiZjk5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0xMDIyLDYgKzEwMjIsOCBA
QCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L0xvY2FsaXplZERhdGVOb25lLmNwcCBc
CiAgICAgcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWROdW1iZXJOb25lLmNwcCBcCiAgICAgcGxhdGZv
cm0vdGV4dC9RdW90ZWRQcmludGFibGUuY3BwIFwKKyAgICBwbGF0Zm9ybS9DbG9jay5jcHAgXAor
ICAgIHBsYXRmb3JtL0Nsb2NrR2VuZXJpYy5jcHAgXAogICAgIHBsYXRmb3JtL0NvbnRlbnRUeXBl
LmNwcCBcCiAgICAgcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIFwKICAgICBwbGF0Zm9y
bS9EYXRlQ29tcG9uZW50cy5jcHAgXApAQCAtMTAzMiw3ICsxMDM0LDYgQEAgU09VUkNFUyArPSBc
CiAgICAgcGxhdGZvcm0vRmlsZUljb25Mb2FkZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9GaWxlU3Ry
ZWFtLmNwcCBcCiAgICAgcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAgXAotICAgIHBsYXRmb3JtL0Ns
b2NrR2VuZXJpYy5jcHAgXAogICAgIHBsYXRmb3JtL0dlb2xvY2F0aW9uU2VydmljZS5jcHAgXAog
ICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3F0L0ltYWdlRnJhbWVRdC5jcHAgXAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHAgXApAQCAtMTg2Niw2ICsxODY3LDcg
QEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5oIFwKICAgICBodG1sL0xp
bmtSZWxBdHRyaWJ1dGUuaCBcCiAgICAgaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oIFwKKyAgICBo
dG1sL01lZGlhQ29udHJvbGxlci5oIFwKICAgICBodG1sL01lZGlhRG9jdW1lbnQuaCBcCiAgICAg
aHRtbC9NaWNyb0RhdGFJdGVtVmFsdWUuaCBcCiAgICAgaHRtbC9QbHVnaW5Eb2N1bWVudC5oIFwK
QEAgLTIwNTMsNiArMjA1NSw4IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL2FuaW1hdGlv
bi9BbmltYXRpb25MaXN0LmggXAogICAgIHBsYXRmb3JtL0FyZW5hLmggXAogICAgIHBsYXRmb3Jt
L0FzeW5jRmlsZVN0cmVhbS5oIFwKKyAgICBwbGF0Zm9ybS9DbG9jay5oIFwKKyAgICBwbGF0Zm9y
bS9DbG9ja0dlbmVyaWMuaCBcCiAgICAgcGxhdGZvcm0vQ29udGVudFR5cGUuaCBcCiAgICAgcGxh
dGZvcm0vQ29udGV4dE1lbnUuaCBcCiAgICAgcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaCBc
CkBAIC0yMDcxLDcgKzIwNzUsNiBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uU2VydmljZU1vY2suaCBcCiAgICAgcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENs
aWVudE1vY2suaCBcCiAgICAgcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suaCBcCi0g
ICAgcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmggXAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oIFwKQEAgLTMwODQsNiArMzA4Nyw3IEBAIGNvbnRh
aW5zKERFRklORVMsIEVOQUJMRV9WSURFTz0xKSB7CiAgICAgICAgIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAgXAogICAgICAgICBodG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcCBcCiAgICAgICAg
IGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgXAorICAgICAgICBodG1sL01lZGlhQ29udHJvbGxl
ci5jcHAgXAogICAgICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgXAog
ICAgICAgICBodG1sL1RpbWVSYW5nZXMuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhOWIxNjBjMDBjY2FiMjNlN2Jk
NTdjNDcyZjcwZGNhYWQwODM0ZmNhLi5hMTZlNjVmZTZjNTc2MGQ0NGU0YmFkYzk3ZTlkNzU1MjQy
ZWQ5ZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMzMwLDYgKzEzMzAsNyBAQAogICAgICAgICAg
ICAgJ2h0bWwvSFRNTFVua25vd25FbGVtZW50LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9JbWFnZURhdGEuaWRsJywKKyAg
ICAgICAgICAgICdodG1sL01lZGlhQ29udHJvbGxlci5pZGwnLAogICAgICAgICAgICAgJ2h0bWwv
TWVkaWFFcnJvci5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvVGV4dE1ldHJpY3MuaWRsJywKICAg
ICAgICAgICAgICdodG1sL1RleHRUcmFjay5pZGwnLApAQCAtNTU5NSw2ICs1NTk2LDggQEAKICAg
ICAgICAgICAgICdodG1sL0xpbmtSZWxBdHRyaWJ1dGUuaCcsCiAgICAgICAgICAgICAnaHRtbC9M
b2FkYWJsZVRleHRUcmFjay5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvTG9hZGFibGVUZXh0VHJh
Y2suaCcsCisgICAgICAgICAgICAnaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwJywKKyAgICAgICAg
ICAgICdodG1sL01lZGlhQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdodG1sL01lZGlhRG9j
dW1lbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL01lZGlhRG9jdW1lbnQuaCcsCiAgICAgICAg
ICAgICAnaHRtbC9NZWRpYUVycm9yLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagppbmRleCAxYjc1ZTUwYjZlZmQ0ZWEwODNiNWRkYjhjMDg5OTFjNzFj
NjYyZmIwLi43MWE3YzlkZTgwYmI4ZDA3ZDJmZWVlNDAxZjgyMDY2MDRmM2ZlZDQ1IDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTc2MDIsNiAr
NTc2MDIsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5caHRtbFxNZWRpYUNvbnRyb2xsZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXE1lZGlhQ29udHJvbGxlci5oIgorCQkJCT4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXE1lZGlhRG9j
dW1lbnQuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNmE1YjMwY2I2OGFjYjJlMjczNmE2
NWI1ZDZmN2EwOGZjYzdjODliLi4wODdmYWU1ZDRkZjc2Yzk0M2YyYTFiZDg3Y2NjMTU5MWZiNTVl
YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC01NzA4LDE3ICs1NzA4LDIyIEBACiAJCUNEMERCRkVFMTQyMjc2ODUwMDI4MDI2
MyAvKiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1LndhdiBpbiBDb3B5IEF1ZGlvIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDBEQkUwRDE0MjI3
NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXYgKi87IH07
CiAJCUNEMERCRkVGMTQyMjc2ODUwMDI4MDI2MyAvKiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0
NV9QMzMwLndhdiBpbiBDb3B5IEF1ZGlvIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDBEQkUwRTE0MjI3NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9D
X1IwMTk1X1QzNDVfUDMzMC53YXYgKi87IH07CiAJCUNEMERCRkYwMTQyMjc2ODUwMDI4MDI2MyAv
KiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzQ1LndhdiBpbiBDb3B5IEF1ZGlvIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDBEQkUwRjE0MjI3NTk1
MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXYgKi87IH07CisJ
CUNEMjdGNkU1MTQ1NzY4NUEwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFMjE0NTc2NzU4
MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICovOyB9OworCQlDRDI3RjZFNzE0NTc3
MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkU2MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRp
YUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlDRDgyMDMwQTEzOTVBQjZBMDBGOTU2QzYgLyogV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAzMDYxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDRDgyMDMwQjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEODIwMzA3MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyLm1tICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLXVuZGVmIjsg
fTsgfTsKIAkJQ0Q4MjAzMEMxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhV
RFdpbmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEODIwMzA4MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5I
VURXaW5kb3dDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQ0Q4MjAzMEQxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwOTEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxs
c2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSAqLzsgfTsKIAkJQ0Q4MjAzMTAxMzk1QUNFNzAw
Rjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAzMEUxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRv
d0FuaW1hdGlvbi5oICovOyB9OwogCQlDRDgyMDMxMTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2lu
ZG93QW5pbWF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0Q4MjAzMEYxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSAq
LzsgfTsKKwkJQ0RENTI1RDcxNDVCNkREMDAwOEQyMDREIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REY2NUNDQzE0NUI2QUZFMDBDNEM3QUEgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCAq
LzsgfTsKIAkJQ0RFQTc2MzAxNDYwOEE1MzAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBNzYyRTE0
NjA4NERFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCAqLzsgfTsKIAkJQ0RFQTc2MzQx
NDYwQjU2RjAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBNzYzMjE0NjBBRTI5MDA4QjMxRjEgLyogQ2xv
Y2tHZW5lcmljLmNwcCAqLzsgfTsKIAkJQ0RFQTc2MzUxNDYwQjcxQTAwOEIzMUYxIC8qIENsb2Nr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3
NjMzMTQ2MEI0NjIwMDhCMzFGMSAvKiBDbG9jay5jcHAgKi87IH07CiAJCUNERUE3Qzg0MTI3NjIz
MDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBN0M4MjEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVy
RnVsbFNjcmVlbi5oICovOyB9OwogCQlDREVBN0M4NTEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVy
RnVsbFNjcmVlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREVBN0M4MzEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5jcHAgKi87
IH07CisJCUNERjY1Q0M4MTQ1QjFFNzUwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkU0MTQ1NzY3
ODcwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREY2NUNDQTE0NUI0NDg4MDBDNEM3QUEgLyogTWVk
aWFDb250cm9sbGVySW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVy
SW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0UwMkYwQzQxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTAyRjBDMzEx
RTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTA1N0ZBNTEyMjA3MzExMDBBNDc2
RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDU3RkEzMTIyMDczMTEwMEE0NzZENSAvKiBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlDRTA1N0ZBNjEyMjA3MzExMDBBNDc2
RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBNDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEzMDE0LDYgKzEzMDE5LDExIEBACiAJCUNEMERCRTBEMTQyMjc1OTUw
MDI4MDI2MyAvKiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1LndhdiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGF1ZGlvLndhdjsgbmFtZSA9
IElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUud2F2OyBwYXRoID0gcGxhdGZvcm0vYXVk
aW8vcmVzb3VyY2VzL0lSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUud2F2OyBzb3VyY2VU
cmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCUNEMERCRTBFMTQyMjc1OTUwMDI4MDI2MyAvKiBJUkNf
Q29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzMwLndhdiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGF1ZGlvLndhdjsgbmFtZSA9IElSQ19Db21wb3NpdGVf
Q19SMDE5NV9UMzQ1X1AzMzAud2F2OyBwYXRoID0gcGxhdGZvcm0vYXVkaW8vcmVzb3VyY2VzL0lS
Q19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMzAud2F2OyBzb3VyY2VUcmVlID0gU09VUkNFX1JP
T1Q7IH07CiAJCUNEMERCRTBGMTQyMjc1OTUwMDI4MDI2MyAvKiBJUkNfQ29tcG9zaXRlX0NfUjAx
OTVfVDM0NV9QMzQ1LndhdiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGF1ZGlvLndhdjsgbmFtZSA9IElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1Az
NDUud2F2OyBwYXRoID0gcGxhdGZvcm0vYXVkaW8vcmVzb3VyY2VzL0lSQ19Db21wb3NpdGVfQ19S
MDE5NV9UMzQ1X1AzNDUud2F2OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUNEMjdG
NkUwMTQ1NzVDMUIwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhQ29u
dHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjdGNkUyMTQ1NzY3
NTgwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU01lZGlhQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEMjdGNkUzMTQ1NzY3NTgwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhQ29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDI3RjZFNDE0NTc2Nzg3MDA3ODIwN0Qg
LyogTWVkaWFDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDI3RjZFNjE0
NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxsc2NyZWVuLmNzcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlbi5jc3M7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEODIwMzA2MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0Q4MjAzMDcxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMwMjIs
NiArMTMwMzIsOCBAQAogCQlDRDgyMDMwRTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5p
bWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYldpbmRvd0FuaW1h
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDgyMDMwRjEzOTVBQ0U3MDBG
OTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViV2luZG93QW5pbWF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDREJEOTNCQTEzMzNCRDRCMDAyNTcwRTMgLyogZnVsbHNjcmVlblF1aWNrVGlt
ZS5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW5RdWlja1RpbWUuY3Nz
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRENFNUNDRjE0NjMzQkM5MDBENDdDQ0Eg
LyogRXZlbnRGYWN0b3J5LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEV2ZW50RmFjdG9yeS5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDRTVDRDAxNDYzM0JDOTAwRDQ3Q0NB
IC8qIEV2ZW50VGFyZ2V0RmFjdG9yeS5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFdmVudFRh
cmdldEZhY3RvcnkuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3NjJDMTQ2
MDgyMjQwMDhCMzFGMSAvKiBDbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBNzYyRTE0NjA4NERF
MDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFBsYXRmb3JtQ2xvY2tDQS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNERUE3NjJGMTQ2MDg0RUUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NBLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzAzMCw2ICsxMzA0Miw4IEBACiAJCUNERUE3NjMzMTQ2
MEI0NjIwMDhCMzFGMSAvKiBDbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3Qzgy
MTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlckZ1bGxTY3JlZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RFQTdDODMxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRnVsbFNjcmVlbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjY1Q0M5MTQ1QjQzQTcwMEM0QzdB
QSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNERjY1Q0NDMTQ1QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVsZW1lbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MTWVk
aWFFbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UwMkYw
QzMxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENvbnRyb2xsZXJCYXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNFMDU3RkEzMTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MzY4LDYgKzE3MzgyLDEwIEBA
CiAJCQkJRTQ0NjEzQTAwQ0Q2MzMxMDAwRkFEQTc1IC8qIFZvaWRDYWxsYmFjay5pZGwgKi8sCiAJ
CQkJRjU1QjNEQUIxMjUxRjEyRDAwM0VGMjY5IC8qIFdlZWtJbnB1dFR5cGUuY3BwICovLAogCQkJ
CUY1NUIzREFDMTI1MUYxMkQwMDNFRjI2OSAvKiBXZWVrSW5wdXRUeXBlLmggKi8sCisJCQkJQ0Qy
N0Y2RTAxNDU3NUMxQjAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5pZGwgKi8sCisJCQkJQ0Qy
N0Y2RTQxNDU3Njc4NzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5oICovLAorCQkJCUNEMjdG
NkU2MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwICovLAorCQkJCUNERjY1
Q0M5MTQ1QjQzQTcwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gaHRtbDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNzYw
MSw2ICsxNzYxOSw4IEBACiAJCUE4M0I3OTA4MENDQUZGMkIwMDBCMDgyNSAvKiBIVE1MICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDRDI3RjZFMjE0NTc2
NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICovLAorCQkJCUNEMjdGNkUzMTQ1
NzY3NTgwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5oICovLAogCQkJCTQ5RUVDRUYyMTA1
MDcwQzQwMDA5OUZBQiAvKiBKU0FycmF5QnVmZmVyLmNwcCAqLywKIAkJCQk0OUVFQ0VGMzEwNTA3
MEM0MDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlci5oICovLAogCQkJCTQ5RUVDRjE5MTA1MDcyRjMw
MDA5OUZBQiAvKiBKU0FycmF5QnVmZmVyVmlldy5jcHAgKi8sCkBAIC0xOTYxOSw2ICsxOTYzOSw3
IEBACiAJCQkJQkNDNDM4NzcwRTg4NkNDNzAwNTMzREQ1IC8qIEpTSFRNTElucHV0RWxlbWVudEN1
c3RvbS5jcHAgKi8sCiAJCQkJRTFBRDE0MjIxMjk1RUE3RjAwQUNBOTg5IC8qIEpTSFRNTElucHV0
RWxlbWVudEN1c3RvbS5oICovLAogCQkJCUUxQUQxMzlBMTI5NUQ5MjYwMEFDQTk4OSAvKiBKU0hU
TUxMaW5rRWxlbWVudEN1c3RvbS5jcHAgKi8sCisJCQkJQ0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FB
IC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkMzMDVDQTMwQzA3ODFC
QjAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUUxQUQx
NDI0MTI5NUVBOTUwMEFDQTk4OSAvKiBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmggKi8sCiAJ
CQkJNDQ4QUQyN0EwQTQ4MTM3OTAwMjNEMTc5IC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3Vz
dG9tLmNwcCAqLywKQEAgLTIwOTM0LDYgKzIwOTU1LDggQEAKIAkJRjUyM0QzMjQwMkRFNDQ3ODAx
ODYzNUNBIC8qIGRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJQ0RDRTVDQ0YxNDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50RmFjdG9yeS5pbiAqLywKKwkJ
CQlDRENFNUNEMDE0NjMzQkM5MDBENDdDQ0EgLyogRXZlbnRUYXJnZXRGYWN0b3J5LmluICovLAog
CQkJCUUxQzRERTZEMEVBNzVDNjUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuY3BwICovLAog
CQkJCUUxQzRERTY4MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuaCAqLywKIAkJ
CQlBOEM0QTdGQzA5RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5jcHAgKi8sCkBAIC0yNDYyNyw2ICsy
NDY1MCw4IEBACiAJCQkJMzE2OTM3OUMxNDYwOUM2QzAwQzAxMzYyIC8qIERyYWdTZXNzaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDQUU5RjkxMDE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0
UmF0aW9WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RjM2RUIxNDY4NjIyNTAwNUU5M0I0
IC8qIFNlY3VyaXR5Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RGNjVDQzgxNDVCMUU3
NTAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RGNjVD
Q0ExNDVCNDQ4ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yNzQ4Myw2ICsyNzUwOCw5IEBACiAJCQkJQ0FFOUY5MEYxNDY0NDFGMDAwQzI0
NUIwIC8qIENTU0FzcGVjdFJhdGlvVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2
MzAxNDYwOEE1MzAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDREVBNzYzNDE0NjBCNTZGMDA4QjMxRjEgLyogQ2xvY2tHZW5lcmljLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUNEMjdGNkU1MTQ1NzY4NUEwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDI3RjZFNzE0NTc3MEQzMDA3ODIwN0QgLyogTWVk
aWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNERDUyNUQ3MTQ1QjZERDAwMDhE
MjA0RCAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RFQTc2MzUxNDYwQjcxQTAwOEIzMUYxIC8qIENsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTk3NkYzNkVBMTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJp
Yy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dl
bmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKaW5kZXggNGFiZWEwNWU4YjFiZDJmZjYz
Njc1MTA4NTFiYzhiMDczZTE0ZWQ3Yi4uYzk0Y2Y3N2ViNzVhMTkxZTI3YmMzYTg4OGMwYjM2ZDg5
YTc5NmZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCkBAIC0xMDksNiArMTA5LDExIEBAIGJvb2wg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbFNvdXJjZUVsZW1lbnRFbmFibGVkKCkKICAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7CiB9CiAKK2Jvb2wgUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6bWVkaWFDb250cm9sbGVyRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIE1lZGlh
UGxheWVyOjppc0F2YWlsYWJsZSgpOworfQorCiBib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
Om1lZGlhRXJyb3JFbmFibGVkKCkKIHsKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxh
YmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDY2MjRjN2FjMDIzOGVmNGQ2YjVmYzM0YTRlYzU2
YTljYzFiYWY1ZWEuLjczMTkwNGQ1ZmM4ZmM1YWJiMzNhNGFkMTc2NTAzYjk4NTA5YzM2OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oCkBAIC05NCw2ICs5NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBodG1sQXVkaW9FbGVtZW50RW5hYmxlZCgpOwogICAgIHN0YXRpYyBib29sIGh0bWxWaWRlb0Vs
ZW1lbnRFbmFibGVkKCk7CiAgICAgc3RhdGljIGJvb2wgaHRtbFNvdXJjZUVsZW1lbnRFbmFibGVk
KCk7CisgICAgc3RhdGljIGJvb2wgbWVkaWFDb250cm9sbGVyRW5hYmxlZCgpOwogICAgIHN0YXRp
YyBib29sIG1lZGlhRXJyb3JFbmFibGVkKCk7CiAgICAgc3RhdGljIGJvb2wgdGltZVJhbmdlc0Vu
YWJsZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggMDAwYzViZmE3ZjQzNDk3MWZiN2Y0MTFjMDVkMzFiZjZj
ZDNhYzUxYy4uY2ZkZDYyYjU5NzgwYzAxMmI1NjBiZDEwNjc2YzRkN2YyN2E4OWIzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBA
IC05Miw2ICs5Miw3IEBACiAjaW5jbHVkZSAiSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNw
cCIKICNpbmNsdWRlICJKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpT
SFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU0hUTUxNZWRpYUVsZW1lbnRD
dXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwIgogI2lu
Y2x1ZGUgIkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hU
TUxPdXRwdXRFbGVtZW50Q3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5ZWU2
ZWZiMmY3MmExNjRkMTgwNjcxYjVlODk1Y2ZlZjZjZmEyZTUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwCkBA
IC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAi
SlNIVE1MTWVkaWFFbGVtZW50LmgiCisKKyNpbmNsdWRlICJKU01lZGlhQ29udHJvbGxlci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK3ZvaWQgSlNI
VE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNvbnRyb2xsZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSB2
YWx1ZSkKK3sKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBpbXAgPSBzdGF0aWNfY2FzdDxIVE1MTWVk
aWFFbGVtZW50Kj4oaW1wbCgpKTsKKyAgICAvLyBPbiBzZXR0aW5nLCBpdCBtdXN0IGZpcnN0IHJl
bW92ZSB0aGUgZWxlbWVudCdzIG1lZGlhZ3JvdXAgYXR0cmlidXRlLCBpZiBhbnksIAorICAgIGlt
cC0+c2V0TWVkaWFHcm91cChTdHJpbmcoKSk7CisgICAgLy8gYW5kIHRoZW4gc2V0IHRoZSBjdXJy
ZW50IG1lZGlhIGNvbnRyb2xsZXIgdG8gdGhlIGdpdmVuIHZhbHVlLgorICAgIGltcC0+c2V0TWVk
aWFDb250cm9sbGVyKHRvTWVkaWFDb250cm9sbGVyKHZhbHVlKSk7Cit9CisKK30KKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCBjNmYxZjNkNDQzYjg1YjZmNjQyMGNlZWM5NGJl
ZmIyMjc4NjJkNDQ2Li5iYWYwZWZjODlkNGFkZWFhYjMxYzcyMzMwZjhkMTVkZTE5ZDk4OGUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q7CiAgICAgY2xhc3MgSmF2
YVNjcmlwdEF1ZGlvTm9kZTsKICAgICBjbGFzcyBMb2NhbE1lZGlhU3RyZWFtOworICAgIGNsYXNz
IE1lZGlhQ29udHJvbGxlcjsKICAgICBjbGFzcyBNZWRpYVN0cmVhbTsKICAgICBjbGFzcyBNZXNz
YWdlUG9ydDsKICAgICBjbGFzcyBOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZh
Y3RvcnkuaW4KaW5kZXggNmJkYjJlMjFjYTk2YjNlMTBkM2JlMWM3MWVmNzMwZDI3ZjAwZDkxZC4u
MmEzODkwMzU3YmFmOWU5NjZhN2YxMzcxNGQ2MTBlZjdkZTEwODRhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC0xMyw2ICsxMyw3IEBAIElEQlRyYW5zYWN0
aW9uIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0
IGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIEphdmFTY3JpcHRBdWRpb05vZGUgY29uZGl0
aW9uYWw9V0VCX0FVRElPCiBMb2NhbE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVB
TQorTWVkaWFDb250cm9sbGVyIGNvbmRpdGlvbmFsPVZJREVPCiBNZWRpYVN0cmVhbSBjb25kaXRp
b25hbD1NRURJQV9TVFJFQU0KIE1lc3NhZ2VQb3J0CiBOb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IGYxZTM1NGI2MzFmNDliYTNhYzEwMWU1NTEzZDI3
NWFjNWQyZDA5ODIuLmFlNWZiNzFjZWVlODY0MDk4MzZmZTJkNTAxZWMzZmE5OTBiYTM3NWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBAIC0xNDgsNiArMTQ4
LDcgQEAgbWF4CiBtYXhsZW5ndGgKIG1heXNjcmlwdAogbWVkaWEKK21lZGlhZ3JvdXAKIG1ldGhv
ZAogbWluCiBtdWx0aXBsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggYzkwNjVmNjkxYTljMGNhZTllNmVmNjQzMmI4MTdjZmMyYmQ3OTcwZi4uNzMxMzM4N2Y4
NzYyYTEyNGE1ZjdhODBhNGFlMzhlYWE0N2MzMjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiSFRNTFNvdXJj
ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIk1lZGlhQ29u
dHJvbHMuaCIKICNpbmNsdWRlICJNZWRpYURvY3VtZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFFcnJv
ci5oIgpAQCAtMjI4LDYgKzIyOSw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVt
ZW50KCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLnNpemUoKTsg
KytpKQogICAgICAgICBtX3RleHRUcmFja3NbaV0tPnNldENsaWVudCgwKTsKICNlbmRpZgorCisg
ICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQorICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+cmVt
b3ZlTWVkaWFFbGVtZW50KHRoaXMpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxN
b3ZlVG9OZXdPd25lckRvY3VtZW50KCkKQEAgLTI5NCw3ICsyOTgsOSBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAg
aWYgKCFhdXRvcGxheSgpICYmIG1fcGxheWVyKQogICAgICAgICAgICAgbV9wbGF5ZXItPnNldFBy
ZWxvYWQobV9wcmVsb2FkKTsKIAotICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25hYm9ydEF0
dHIpCisgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBtZWRpYWdyb3VwQXR0cikKKyAgICAgICAg
c2V0TWVkaWFHcm91cChhdHRyLT52YWx1ZSgpKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBv
bmFib3J0QXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkuYWJvcnRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7
CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25iZWZvcmVsb2FkQXR0cikKICAgICAgICAgc2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBjcmVh
dGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKQEAgLTU4NCwxMCArNTkwLDEx
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQoKQogICAgICAgICBtX3Nl
ZWtpbmcgPSBmYWxzZTsKICAgICAgICAgaW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKICAgICAgICAg
c2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW1wdGllZEV2ZW50KTsKKyAgICAgICAgdXBkYXRl
TWVkaWFDb250cm9sbGVyKCk7CiAgICAgfQogCiAgICAgLy8gNSAtIFNldCB0aGUgcGxheWJhY2tS
YXRlIGF0dHJpYnV0ZSB0byB0aGUgdmFsdWUgb2YgdGhlIGRlZmF1bHRQbGF5YmFja1JhdGUgYXR0
cmlidXRlLgotICAgIHNldFBsYXliYWNrUmF0ZShkZWZhdWx0UGxheWJhY2tSYXRlKCkpOworICAg
IHNldFBsYXliYWNrUmF0ZShtX21lZGlhQ29udHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5k
ZWZhdWx0UGxheWJhY2tSYXRlKCkgOiBkZWZhdWx0UGxheWJhY2tSYXRlKCkpOwogCiAgICAgLy8g
NiAtIFNldCB0aGUgZXJyb3IgYXR0cmlidXRlIHRvIG51bGwgYW5kIHRoZSBhdXRvcGxheWluZyBm
bGFnIHRvIHRydWUuCiAgICAgbV9lcnJvciA9IDA7CkBAIC0xMjI0LDYgKzEyMzEsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUg
c3RhdGUpCiAgICAgfQogCiAgICAgdXBkYXRlUGxheVN0YXRlKCk7CisgICAgdXBkYXRlTWVkaWFD
b250cm9sbGVyKCk7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQpAQCAtMTUyMyw2ICsx
NTMxLDEwIEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50VGltZShmbG9hdCB0aW1lLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBzZWVrKHRp
bWUsIGVjKTsKIH0KIApAQCAtMTU3NCwxMyArMTU4NiwxNCBAQCBmbG9hdCBIVE1MTWVkaWFFbGVt
ZW50OjpwbGF5YmFja1JhdGUoKSBjb25zdAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5
YmFja1JhdGUoZmxvYXQgcmF0ZSkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
OjpzZXRQbGF5YmFja1JhdGUoJWYpIiwgcmF0ZSk7Ci0KKyAgICAKICAgICBpZiAobV9wbGF5YmFj
a1JhdGUgIT0gcmF0ZSkgewogICAgICAgICBtX3BsYXliYWNrUmF0ZSA9IHJhdGU7CiAgICAgICAg
IGludmFsaWRhdGVDYWNoZWRUaW1lKCk7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1l
cygpLnJhdGVjaGFuZ2VFdmVudCk7CiAgICAgfQotICAgIGlmIChtX3BsYXllciAmJiBwb3RlbnRp
YWxseVBsYXlpbmcoKSAmJiBtX3BsYXllci0+cmF0ZSgpICE9IHJhdGUpCisKKyAgICBpZiAobV9w
bGF5ZXIgJiYgcG90ZW50aWFsbHlQbGF5aW5nKCkgJiYgbV9wbGF5ZXItPnJhdGUoKSAhPSByYXRl
ICYgIW1fbWVkaWFDb250cm9sbGVyKQogICAgICAgICBtX3BsYXllci0+c2V0UmF0ZShyYXRlKTsK
IH0KIApAQCAtMTY3Niw3ICsxNjg5LDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheUlu
dGVybmFsKCkKICAgICAgICAgRXhjZXB0aW9uQ29kZSB1bnVzZWQ7CiAgICAgICAgIHNlZWsoMCwg
dW51c2VkKTsKICAgICB9Ci0gICAgCisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAg
ICAgIG1fbWVkaWFDb250cm9sbGVyLT5icmluZ0VsZW1lbnRVcFRvU3BlZWQodGhpcyk7CisKICAg
ICBpZiAobV9wYXVzZWQpIHsKICAgICAgICAgbV9wYXVzZWQgPSBmYWxzZTsKICAgICAgICAgaW52
YWxpZGF0ZUNhY2hlZFRpbWUoKTsKQEAgLTE2OTAsNiArMTcwNiw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cGxheUludGVybmFsKCkKICAgICBtX2F1dG9wbGF5aW5nID0gZmFsc2U7CiAKICAg
ICB1cGRhdGVQbGF5U3RhdGUoKTsKKyAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKIH0KIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZSgpCkBAIC0xODgxLDcgKzE4OTgsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSgpCiAgICAgLy8gV2UgY2FuIHNhZmVs
eSBjYWxsIHRoZSBpbnRlcm5hbCBwbGF5L3BhdXNlIG1ldGhvZHMsIHdoaWNoIGRvbid0IGNoZWNr
IHJlc3RyaWN0aW9ucywgYmVjYXVzZQogICAgIC8vIHRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVk
IGZyb20gdGhlIGJ1aWx0LWluIG1lZGlhIGNvbnRyb2xsZXIKICAgICBpZiAoY2FuUGxheSgpKSB7
Ci0gICAgICAgIHNldFBsYXliYWNrUmF0ZShkZWZhdWx0UGxheWJhY2tSYXRlKCkpOworICAgICAg
ICBzZXRQbGF5YmFja1JhdGUobV9tZWRpYUNvbnRyb2xsZXIgPyBtX21lZGlhQ29udHJvbGxlci0+
ZGVmYXVsdFBsYXliYWNrUmF0ZSgpIDogZGVmYXVsdFBsYXliYWNrUmF0ZSgpKTsKICAgICAgICAg
cGxheUludGVybmFsKCk7CiAgICAgfSBlbHNlIAogICAgICAgICBwYXVzZUludGVybmFsKCk7CkBA
IC0yMjI5LDIwICsyMjQ2LDMzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJU
aW1lQ2hhbmdlZChNZWRpYVBsYXllciopCiAKICAgICBmbG9hdCBub3cgPSBjdXJyZW50VGltZSgp
OwogICAgIGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7Ci0gICAgaWYgKCFpc25hbihkdXIpICYmIGR1
ciAmJiBub3cgPj0gZHVyKSB7Ci0gICAgICAgIGlmIChsb29wKCkpIHsKKyAgICAKKyAgICAvLyBX
aGVuIHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIHJlYWNoZXMgdGhlIGVuZCBvZiB0aGUg
bWVkaWEgcmVzb3VyY2Ugd2hlbiB0aGUgZGlyZWN0aW9uIG9mCisgICAgLy8gcGxheWJhY2sgaXMg
Zm9yd2FyZHMsIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCBmb2xsb3cgdGhlc2Ugc3RlcHM6Cisg
ICAgaWYgKCFpc25hbihkdXIpICYmIGR1ciAmJiBub3cgPj0gZHVyICYmIG1fcGxheWJhY2tSYXRl
ID4gMCkgeworICAgICAgICAvLyBJZiB0aGUgbWVkaWEgZWxlbWVudCBoYXMgYSBsb29wIGF0dHJp
YnV0ZSBzcGVjaWZpZWQgYW5kIGRvZXMgbm90IGhhdmUgYSBjdXJyZW50IG1lZGlhIGNvbnRyb2xs
ZXIsCisgICAgICAgIGlmIChsb29wKCkgJiYgIW1fbWVkaWFDb250cm9sbGVyKSB7CiAgICAgICAg
ICAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRFeGNlcHRpb247CiAgICAgICAgICAgICBtX3NlbnRF
bmRFdmVudCA9IGZhbHNlOworICAgICAgICAgICAgLy8gIHRoZW4gc2VlayB0byB0aGUgZWFybGll
c3QgcG9zc2libGUgcG9zaXRpb24gb2YgdGhlIG1lZGlhIHJlc291cmNlIGFuZCBhYm9ydCB0aGVz
ZSBzdGVwcy4KICAgICAgICAgICAgIHNlZWsoMCwgaWdub3JlZEV4Y2VwdGlvbik7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIW1fcGF1c2VkKSB7CisgICAgICAgICAgICAvLyBJ
ZiB0aGUgbWVkaWEgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgY3VycmVudCBtZWRpYSBjb250cm9s
bGVyLCBhbmQgdGhlIG1lZGlhIGVsZW1lbnQKKyAgICAgICAgICAgIC8vIGhhcyBzdGlsbCBlbmRl
ZCBwbGF5YmFjaywgYW5kIHRoZSBkaXJlY3Rpb24gb2YgcGxheWJhY2sgaXMgc3RpbGwgZm9yd2Fy
ZHMsIGFuZCBwYXVzZWQKKyAgICAgICAgICAgIC8vIGlzIGZhbHNlLAorICAgICAgICAgICAgaWYg
KCFtX21lZGlhQ29udHJvbGxlciAmJiAhbV9wYXVzZWQpIHsKKyAgICAgICAgICAgICAgICAvLyBj
aGFuZ2VzIHBhdXNlZCB0byB0cnVlIGFuZCBmaXJlcyBhIHNpbXBsZSBldmVudCBuYW1lZCBwYXVz
ZSBhdCB0aGUgbWVkaWEgZWxlbWVudC4KICAgICAgICAgICAgICAgICBtX3BhdXNlZCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGF1c2VFdmVudCk7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNp
bXBsZSBldmVudCBuYW1lZCBlbmRlZCBhdCB0aGUgbWVkaWEgZWxlbWVudC4KICAgICAgICAgICAg
IGlmICghbV9zZW50RW5kRXZlbnQpIHsKICAgICAgICAgICAgICAgICBtX3NlbnRFbmRFdmVudCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW5kZWRF
dmVudCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBJZiB0aGUgbWVkaWEgZWxlbWVu
dCBoYXMgYSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIsIHRoZW4gcmVwb3J0IHRoZSBjb250cm9s
bGVyIHN0YXRlCisgICAgICAgICAgICAvLyBmb3IgdGhlIG1lZGlhIGVsZW1lbnQncyBjdXJyZW50
IG1lZGlhIGNvbnRyb2xsZXIuCisgICAgICAgICAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsK
ICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCkBAIC0yNDI2LDEwICsyNDU2LDcgQEAgUGFzc1Jl
ZlB0cjxUaW1lUmFuZ2VzPiBIVE1MTWVkaWFFbGVtZW50OjpwbGF5ZWQoKQogCiBQYXNzUmVmUHRy
PFRpbWVSYW5nZXM+IEhUTUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKCkgY29uc3QKIHsKLSAgICAv
LyBGSVhNRSByZWFsIHJhbmdlcyBzdXBwb3J0Ci0gICAgaWYgKCFtYXhUaW1lU2Vla2FibGUoKSkK
LSAgICAgICAgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwotICAgIHJldHVybiBUaW1lUmFu
Z2VzOjpjcmVhdGUobWluVGltZVNlZWthYmxlKCksIG1heFRpbWVTZWVrYWJsZSgpKTsKKyAgICBy
ZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+c2Vla2FibGUoKSA6IFRpbWVSYW5nZXM6OmNyZWF0
ZSgpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZygpIGNv
bnN0CkBAIC0yNDM4LDcgKzI0NjUsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlh
bGx5UGxheWluZygpIGNvbnN0CiAgICAgLy8gd2hlbiBpdCByYW4gb3V0IG9mIGJ1ZmZlcmVkIGRh
dGEuIEEgbW92aWUgaXMgdGhpcyBzdGF0ZSBpcyAicG90ZW50aWFsbHkgcGxheWluZyIsIG1vZHVs
byB0aGUKICAgICAvLyBjaGVja3MgaW4gY291bGRQbGF5SWZFbm91Z2hEYXRhKCkuCiAgICAgYm9v
bCBwYXVzZWRUb0J1ZmZlciA9IG1fcmVhZHlTdGF0ZU1heGltdW0gPj0gSEFWRV9GVVRVUkVfREFU
QSAmJiBtX3JlYWR5U3RhdGUgPCBIQVZFX0ZVVFVSRV9EQVRBOwotICAgIHJldHVybiAocGF1c2Vk
VG9CdWZmZXIgfHwgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpICYmIGNvdWxkUGxh
eUlmRW5vdWdoRGF0YSgpOworICAgIHJldHVybiAocGF1c2VkVG9CdWZmZXIgfHwgbV9yZWFkeVN0
YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpICYmIGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpICYmICFp
c0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OmNvdWxkUGxheUlmRW5vdWdoRGF0YSgpIGNvbnN0CkBAIC0yNDYwLDEwICsyNDg3LDExIEBAIGJv
b2wgSFRNTE1lZGlhRWxlbWVudDo6ZW5kZWRQbGF5YmFjaygpIGNvbnN0CiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIGFuZCB0aGUgY3VycmVudCBwbGF5YmFjayBwb3NpdGlvbiBpcyB0
aGUgZW5kIG9mIHRoZSBtZWRpYSByZXNvdXJjZSBhbmQgdGhlIGRpcmVjdGlvbgotICAgIC8vIG9m
IHBsYXliYWNrIGlzIGZvcndhcmRzIGFuZCB0aGUgbWVkaWEgZWxlbWVudCBkb2VzIG5vdCBoYXZl
IGEgbG9vcCBhdHRyaWJ1dGUgc3BlY2lmaWVkLAorICAgIC8vIG9mIHBsYXliYWNrIGlzIGZvcndh
cmRzLCBFaXRoZXIgdGhlIG1lZGlhIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhIGxvb3AgYXR0cmli
dXRlIHNwZWNpZmllZCwKKyAgICAvLyBvciB0aGUgbWVkaWEgZWxlbWVudCBoYXMgYSBjdXJyZW50
IG1lZGlhIGNvbnRyb2xsZXIuCiAgICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUoKTsKICAgICBp
ZiAobV9wbGF5YmFja1JhdGUgPiAwKQotICAgICAgICByZXR1cm4gZHVyID4gMCAmJiBub3cgPj0g
ZHVyICYmICFsb29wKCk7CisgICAgICAgIHJldHVybiBkdXIgPiAwICYmIG5vdyA+PSBkdXIgJiYg
KCFsb29wKCkgfHwgbV9tZWRpYUNvbnRyb2xsZXIpOwogCiAgICAgLy8gb3IgdGhlIGN1cnJlbnQg
cGxheWJhY2sgcG9zaXRpb24gaXMgdGhlIGVhcmxpZXN0IHBvc3NpYmxlIHBvc2l0aW9uIGFuZCB0
aGUgZGlyZWN0aW9uIAogICAgIC8vIG9mIHBsYXliYWNrIGlzIGJhY2t3YXJkcwpAQCAtMjUwOSw4
ICsyNTM3LDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlVm9sdW1lKCkKICAgICBp
ZiAoIXByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCkpIHsKICAgICAgICAgUGFnZSogcGFn
ZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAgICAgICAgZmxvYXQgdm9sdW1lTXVsdGlwbGllciA9
IHBhZ2UgPyBwYWdlLT5tZWRpYVZvbHVtZSgpIDogMTsKLSAgICAKLSAgICAgICAgbV9wbGF5ZXIt
PnNldE11dGVkKG1fbXV0ZWQpOworICAgICAgICBib29sIHNob3VsZE11dGUgPSBtX211dGVkOwor
CisgICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikgeworICAgICAgICAgICAgdm9sdW1lTXVs
dGlwbGllciAqPSBtX21lZGlhQ29udHJvbGxlci0+dm9sdW1lKCk7CisgICAgICAgICAgICBzaG91
bGRNdXRlID0gbV9tZWRpYUNvbnRyb2xsZXItPm11dGVkKCk7CisgICAgICAgIH0KKworICAgICAg
ICBtX3BsYXllci0+c2V0TXV0ZWQoc2hvdWxkTXV0ZSk7CiAgICAgICAgIG1fcGxheWVyLT5zZXRW
b2x1bWUobV92b2x1bWUgKiB2b2x1bWVNdWx0aXBsaWVyKTsKICAgICB9CiAKQEAgLTI1NzcsMTEg
KzI2MTEsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUoKQogICAg
ICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICAgICAgbWVkaWFDb250cm9scygp
LT5wbGF5YmFja1N0b3BwZWQoKTsKICAgICB9Ci0gICAgCisKKyAgICB1cGRhdGVNZWRpYUNvbnRy
b2xsZXIoKTsKKwogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT51cGRh
dGVGcm9tRWxlbWVudCgpOwogfQotICAgIAorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBh
dXNlZEludGVybmFsKGJvb2wgYikKIHsKICAgICBtX3BhdXNlZEludGVybmFsID0gYjsKQEAgLTI2
NDEsNiArMjY3Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQo
KQogCiAgICAgLy8gUmVzZXQgbV9yZWFkeVN0YXRlIHNpbmNlIG1fcGxheWVyIGlzIGdvbmUuCiAg
ICAgbV9yZWFkeVN0YXRlID0gSEFWRV9OT1RISU5HOworICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxl
cigpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblN1c3BlbmQoKSBjb25zdApAQCAt
MzEzMyw2ICszMTcwLDcyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0SXRlbVZhbHVlVGV4
dChjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIH0KICNlbmRpZgogCitj
b25zdCBTdHJpbmcmIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhR3JvdXAoKSBjb25zdAoreworICAg
IHJldHVybiBtX21lZGlhQ29udHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5tZWRpYUdyb3Vw
KCkgOiBlbXB0eVN0cmluZygpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlh
R3JvdXAoY29uc3QgU3RyaW5nJiBncm91cCkKK3sKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIg
JiYgbV9tZWRpYUNvbnRyb2xsZXItPm1lZGlhR3JvdXAoKSA9PSBncm91cCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgc2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxlcjo6bWVkaWFDb250
cm9sbGVyRm9yTWVkaWFHcm91cChncm91cCkpOworfQorCitNZWRpYUNvbnRyb2xsZXIqIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhQ29udHJvbGxlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVk
aWFDb250cm9sbGVyLmdldCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlh
Q29udHJvbGxlcihQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gY29udHJvbGxlcikKK3sKKyAg
ICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVkaWFDb250cm9sbGVyLT5yZW1v
dmVNZWRpYUVsZW1lbnQodGhpcyk7CisKKyAgICBtX21lZGlhQ29udHJvbGxlciA9IGNvbnRyb2xs
ZXI7CisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVkaWFDb250cm9s
bGVyLT5hZGRNZWRpYUVsZW1lbnQodGhpcyk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dXBkYXRlTWVkaWFDb250cm9sbGVyKCkKK3sKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisg
ICAgICAgIG1fbWVkaWFDb250cm9sbGVyLT5yZXBvcnRDb250cm9sbGVyU3RhdGUoKTsKK30KKwor
Ym9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc0Jsb2NrZWQoKSBjb25zdAoreworICAgIC8vIEEgbWVk
aWEgZWxlbWVudCBpcyBhIGJsb2NrZWQgbWVkaWEgZWxlbWVudCBpZiBpdHMgcmVhZHlTdGF0ZSBh
dHRyaWJ1dGUgaXMgaW4gdGhlCisgICAgLy8gSEFWRV9OT1RISU5HIHN0YXRlLCB0aGUgSEFWRV9N
RVRBREFUQSBzdGF0ZSwgb3IgdGhlIEhBVkVfQ1VSUkVOVF9EQVRBIHN0YXRlLAorICAgIGlmICht
X3JlYWR5U3RhdGUgPD0gSEFWRV9DVVJSRU5UX0RBVEEpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgLy8gb3IgaWYgdGhlIGVsZW1lbnQgaGFzIHBhdXNlZCBmb3IgdXNlciBpbnRlcmFjdGlv
bi4KKyAgICByZXR1cm4gcGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCk7Cit9CisKK2Jvb2wgSFRN
TE1lZGlhRWxlbWVudDo6aXNCbG9ja2VkT25NZWRpYUNvbnRyb2xsZXIoKSBjb25zdAoreworICAg
IGlmICghbV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IEEgbWVkaWEgZWxlbWVudCBpcyBibG9ja2VkIG9uIGl0cyBtZWRpYSBjb250cm9sbGVyIGlmIHRo
ZSBNZWRpYUNvbnRyb2xsZXIgaXMgYSBibG9ja2VkIAorICAgIC8vIG1lZGlhIGNvbnRyb2xsZXIs
CisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5pc0Jsb2NrZWQoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAvLyBvciBpZiBpdHMgbWVkaWEgY29udHJvbGxlciBwb3NpdGlvbiBpcyBl
aXRoZXIgYmVmb3JlIHRoZSBtZWRpYSByZXNvdXJjZSdzIGVhcmxpZXN0IHBvc3NpYmxlIAorICAg
IC8vIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBNZWRpYUNvbnRyb2xsZXIncyB0aW1lbGluZSBv
ciBhZnRlciB0aGUgZW5kIG9mIHRoZSBtZWRpYSByZXNvdXJjZSAKKyAgICAvLyByZWxhdGl2ZSB0
byB0aGUgTWVkaWFDb250cm9sbGVyJ3MgdGltZWxpbmUuCisgICAgZmxvYXQgbWVkaWFDb250cm9s
bGVyUG9zaXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBpZiAo
bWVkaWFDb250cm9sbGVyUG9zaXRpb24gPCBzdGFydFRpbWUoKSB8fCBtZWRpYUNvbnRyb2xsZXJQ
b3NpdGlvbiA+IHN0YXJ0VGltZSgpICsgZHVyYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDBkMmY5ZmM0OWUxMDBjYjUxN2JlZjBkMTUwYWM0Zjc3
YTU3NWU5ZWMuLmY4MDllNmVlN2Y5OTA3NWJiMjEwNzNjZjdkZTZjYTRiYmQ5ZjQ1OWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNs
dWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2UuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogCiAjaWYgRU5BQkxFKFBMVUdJ
Tl9QUk9YWV9GT1JfVklERU8pCkBAIC01MCw2ICs1MSw3IEBAIGNsYXNzIE1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTsKIGNsYXNzIEV2ZW50OwogY2xhc3MgSFRNTFNvdXJjZUVsZW1lbnQ7CiBj
bGFzcyBIVE1MVHJhY2tFbGVtZW50OworY2xhc3MgTWVkaWFDb250cm9sbGVyOwogY2xhc3MgTWVk
aWFDb250cm9sczsKIGNsYXNzIE1lZGlhRXJyb3I7CiBjbGFzcyBLVVJMOwpAQCAtNjMsNyArNjUs
NyBAQCBjbGFzcyBXaWRnZXQ7CiAvLyBCdXQgaXQgY2FuJ3QgYmUgdW50aWwgdGhlIENocm9taXVt
IFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCBjbGFzcyBpcyBmaXhlZCBzbyBpdAogLy8gbm8gbG9u
Z2VyIGRlcGVuZHMgb24gdHlwZWNhc3RpbmcgYSBNZWRpYVBsYXllckNsaWVudCB0byBhbiBIVE1M
TWVkaWFFbGVtZW50LgogCi1jbGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVt
ZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHByaXZhdGUgTWVkaWFDYW5TdGFydExpc3Rl
bmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVi
bGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHByaXZhdGUgTWVkaWFD
YW5TdGFydExpc3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgTWVkaWFDb250
cm9sbGVySW50ZXJmYWNlCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgcHJpdmF0ZSBU
ZXh0VHJhY2tDbGllbnQKICNlbmRpZgpAQCAtMTA1LDcgKzEwNyw3IEBAIHB1YmxpYzoKIAogICAg
IGVudW0gTmV0d29ya1N0YXRlIHsgTkVUV09SS19FTVBUWSwgTkVUV09SS19JRExFLCBORVRXT1JL
X0xPQURJTkcsIE5FVFdPUktfTk9fU09VUkNFIH07CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtT
dGF0ZSgpIGNvbnN0OwotICAgIAorCiAgICAgU3RyaW5nIHByZWxvYWQoKSBjb25zdDsgICAgCiAg
ICAgdm9pZCBzZXRQcmVsb2FkKGNvbnN0IFN0cmluZyYpOwogCkBAIC0xMTQsNyArMTE2LDYgQEAg
cHVibGljOgogICAgIFN0cmluZyBjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBj
b25zdDsKIAogLy8gcmVhZHkgc3RhdGUKLSAgICBlbnVtIFJlYWR5U3RhdGUgeyBIQVZFX05PVEhJ
TkcsIEhBVkVfTUVUQURBVEEsIEhBVkVfQ1VSUkVOVF9EQVRBLCBIQVZFX0ZVVFVSRV9EQVRBLCBI
QVZFX0VOT1VHSF9EQVRBIH07CiAgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CiAg
ICAgYm9vbCBzZWVraW5nKCkgY29uc3Q7CiAKQEAgLTIzMCw2ICsyMzEsMTIgQEAgcHVibGljOgog
ICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKTsKICNlbmRpZgog
CisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNZWRp
YUdyb3VwKGNvbnN0IFN0cmluZyYpOworCisgICAgTWVkaWFDb250cm9sbGVyKiBtZWRpYUNvbnRy
b2xsZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldE1lZGlhQ29udHJvbGxlcihQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbGxlcj4pOworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5IVE1MTWVkaWFFbGVt
ZW50KCk7CkBAIC0zOTQsNiArNDAxLDggQEAgcHJpdmF0ZToKICAgICAvLyBQYXVzZXMgcGxheWJh
Y2sgd2l0aG91dCBjaGFuZ2luZyBhbnkgc3RhdGVzIG9yIGdlbmVyYXRpbmcgZXZlbnRzCiAgICAg
dm9pZCBzZXRQYXVzZWRJbnRlcm5hbChib29sKTsKIAorICAgIHZvaWQgc2V0UGxheWJhY2tSYXRl
SW50ZXJuYWwoZmxvYXQpOworCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhQ2FuU3RhcnQoKTsKIAog
ICAgIHZvaWQgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoYm9vbCk7CkBAIC00MTIsNiArNDIxLDEy
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEl0ZW1WYWx1ZVRleHQoY29uc3QgU3Ry
aW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCiAKKyAgICB2b2lkIHVwZGF0ZU1lZGlhQ29u
dHJvbGxlcigpOworICAgIGJvb2wgaXNCbG9ja2VkKCkgY29uc3Q7CisgICAgYm9vbCBpc0Jsb2Nr
ZWRPbk1lZGlhQ29udHJvbGxlcigpIGNvbnN0OworICAgIGJvb2wgaGFzU291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9uZXR3b3JrU3RhdGUgIT0gTkVUV09SS19FTVBUWSB8fCBtX25ldHdvcmtTdGF0
ZSAhPSBORVRXT1JLX05PX1NPVVJDRTsgfQorICAgIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3Qg
eyByZXR1cm4gbW92aWVMb2FkVHlwZSgpID09IE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtOyB9CisK
ICAgICBUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiBtX2xvYWRUaW1lcjsKICAgICBUaW1lcjxIVE1M
TWVkaWFFbGVtZW50PiBtX2FzeW5jRXZlbnRUaW1lcjsKICAgICBUaW1lcjxIVE1MTWVkaWFFbGVt
ZW50PiBtX3Byb2dyZXNzRXZlbnRUaW1lcjsKQEAgLTUxNiw2ICs1MzEsOSBAQCBwcml2YXRlOgog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBt
X3RleHRUcmFja3M7CiAjZW5kaWYKKworICAgIGZyaWVuZCBjbGFzcyBNZWRpYUNvbnRyb2xsZXI7
CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gbV9tZWRpYUNvbnRyb2xsZXI7CiB9OwogCiB9
IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAppbmRl
eCAzMzBhZGJhYWRlNzEwMjY5YzJmMmRlNWVlYzVjYzFlMTYyYjBjOWI1Li40OTIxMGI2MjAyNzIz
NzFlNDVhYWI5ZmFiMTkxYmY2MTAwNDNjZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5pZGwKQEAgLTExNCw1ICsxMTQsOCBAQCBtb2R1bGUgaHRtbCB7CiAjaWYgZGVm
aW5lZChFTkFCTEVfVklERU9fVFJBQ0spICYmIEVOQUJMRV9WSURFT19UUkFDSwogICAgIFtFbmFi
bGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2tdIFRleHRUcmFjayBhZGRUcmFjayhpbiBET01T
dHJpbmcga2luZCwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgbGFiZWwsIGluIFtPcHRpb25hbF0g
RE9NU3RyaW5nIGxhbmd1YWdlKTsKICNlbmRpZgorCisgICAgYXR0cmlidXRlIFtSZWZsZWN0LCBD
b252ZXJ0TnVsbFRvTnVsbFN0cmluZywgQ29udmVydE51bGxTdHJpbmdUb051bGxdIERPTVN0cmlu
ZyBtZWRpYUdyb3VwOworICAgIGF0dHJpYnV0ZSBbQ3VzdG9tU2V0dGVyXSBNZWRpYUNvbnRyb2xs
ZXIgbWVkaWFDb250cm9sbGVyOwogfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9s
bGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jYWJiMzJkZjU5NTE4YTVlODM0MzhlMDc0ODhkOGUxYmMzMjJh
NzA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xs
ZXIuY3BwCkBAIC0wLDAgKzEsNTk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlci5oIgorCisjaW5j
bHVkZSAiQ2xvY2suaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAi
VGltZVJhbmdlcy5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2lu
ZyBuYW1lc3BhY2Ugc3RkOworCit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBNZWRpYUNvbnRyb2xs
ZXIqPiBHcm91cENvbnRyb2xsZXJNYXA7CitzdGF0aWMgR3JvdXBDb250cm9sbGVyTWFwJiBtZWRp
YUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
R3JvdXBDb250cm9sbGVyTWFwLCBtYXAsICgpKTsKKyAgICByZXR1cm4gbWFwOworfQorCitQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gTWVkaWFDb250cm9sbGVyOjptZWRpYUNvbnRyb2xsZXJG
b3JNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYgZ3JvdXApCit7CisgICAgaWYgKGdyb3VwLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChncm91cC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgaWYgKE1lZGlhQ29udHJvbGxlciogY29udHJvbGxlciA9IG1l
ZGlhR3JvdXBUb01lZGlhQ29udHJvbGxlck1hcCgpLmdldChncm91cCkpCisgICAgICAgIHJldHVy
biBjb250cm9sbGVyOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gY29udHJvbGxlciA9
IGNyZWF0ZSgpOworICAgIGNvbnRyb2xsZXItPm1fbWVkaWFHcm91cCA9IGdyb3VwOworICAgIG1l
ZGlhR3JvdXBUb01lZGlhQ29udHJvbGxlck1hcCgpLnNldChncm91cCwgY29udHJvbGxlci5nZXQo
KSk7CisgICAgcmV0dXJuIGNvbnRyb2xsZXIucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbGxlcj4gTWVkaWFDb250cm9sbGVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTWVkaWFDb250cm9sbGVyKCkpOworfQorCitNZWRpYUNvbnRyb2xsZXI6Ok1l
ZGlhQ29udHJvbGxlcigpCisgICAgOiBtX3BhdXNlZChmYWxzZSkKKyAgICAsIG1fZGVmYXVsdFBs
YXliYWNrUmF0ZSgxKQorICAgICwgbV92b2x1bWUoMSkKKyAgICAsIG1fbXV0ZWQoZmFsc2UpCisg
ICAgLCBtX3JlYWR5U3RhdGUoSEFWRV9OT1RISU5HKQorICAgICwgbV9wbGF5YmFja1N0YXRlKFdB
SVRJTkcpCisgICAgLCBtX2FzeW5jRXZlbnRUaW1lcih0aGlzLCAmTWVkaWFDb250cm9sbGVyOjph
c3luY0V2ZW50VGltZXJGaXJlZCkKKyAgICAsIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGZhbHNl
KQorICAgICwgbV9jbG9jayhDbG9jazo6Y3JlYXRlKCkpCit7Cit9CisKK01lZGlhQ29udHJvbGxl
cjo6fk1lZGlhQ29udHJvbGxlcigpCit7CisgICAgaWYgKCFtX21lZGlhR3JvdXAuaXNFbXB0eSgp
KQorICAgICAgICBtZWRpYUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXAoKS5yZW1vdmUobV9tZWRp
YUdyb3VwKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmFkZE1lZGlhRWxlbWVudChIVE1M
TWVkaWFFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICBBU1NF
UlQoIW1fbWVkaWFFbGVtZW50cy5jb250YWlucyhlbGVtZW50KSk7CisKKyAgICBtX21lZGlhRWxl
bWVudHMuYXBwZW5kKGVsZW1lbnQpOworICAgIGJyaW5nRWxlbWVudFVwVG9TcGVlZChlbGVtZW50
KTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnJlbW92ZU1lZGlhRWxlbWVudChIVE1MTWVk
aWFFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICBBU1NFUlQo
bV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKGVsZW1lbnQpKTsKKyAgICBtX21lZGlhRWxlbWVudHMu
cmVtb3ZlKG1fbWVkaWFFbGVtZW50cy5maW5kKGVsZW1lbnQpKTsKK30KKworYm9vbCBNZWRpYUNv
bnRyb2xsZXI6OmNvbnRhaW5zTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50cy5jb250YWlucyhlbGVtZW50KTsK
K30KKworUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYUNvbnRyb2xsZXI6OmJ1ZmZlcmVkKCkg
Y29uc3QKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOworCisgICAgLy8gVGhlIGJ1ZmZlcmVkIGF0dHJpYnV0
ZSBtdXN0IHJldHVybiBhIG5ldyBzdGF0aWMgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCB0
aGF0IHJlcHJlc2VudHMgCisgICAgLy8gdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgcmFuZ2VzIG9m
IHRoZSBtZWRpYSByZXNvdXJjZXMgb2YgdGhlIHNsYXZlZCBtZWRpYSBlbGVtZW50cyB0aGF0IHRo
ZSAKKyAgICAvLyB1c2VyIGFnZW50IGhhcyBidWZmZXJlZCwgYXQgdGhlIHRpbWUgdGhlIGF0dHJp
YnV0ZSBpcyBldmFsdWF0ZWQuCisgICAgUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkUmFuZ2Vz
ID0gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPmJ1ZmZlcmVkKCk7CisgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAxOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAg
ICAgIGJ1ZmZlcmVkUmFuZ2VzLT5pbnRlcnNlY3RXaXRoKG1fbWVkaWFFbGVtZW50c1tpbmRleF0t
PmJ1ZmZlcmVkKCkuZ2V0KCkpOworICAgIHJldHVybiBidWZmZXJlZFJhbmdlczsKK30KKworUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYUNvbnRyb2xsZXI6OnNlZWthYmxlKCkgY29uc3QKK3sK
KyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFRpbWVS
YW5nZXM6OmNyZWF0ZSgpOworCisgICAgLy8gVGhlIHNlZWthYmxlIGF0dHJpYnV0ZSBtdXN0IHJl
dHVybiBhIG5ldyBzdGF0aWMgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCB0aGF0IHJlcHJl
c2VudHMKKyAgICAvLyB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSByYW5nZXMgb2YgdGhlIG1lZGlh
IHJlc291cmNlcyBvZiB0aGUgc2xhdmVkIG1lZGlhIGVsZW1lbnRzIHRoYXQgdGhlCisgICAgLy8g
dXNlciBhZ2VudCBpcyBhYmxlIHRvIHNlZWsgdG8sIGF0IHRoZSB0aW1lIHRoZSBhdHRyaWJ1dGUg
aXMgZXZhbHVhdGVkLgorICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZVJhbmdlcyA9IG1f
bWVkaWFFbGVtZW50cy5maXJzdCgpLT5zZWVrYWJsZSgpOworICAgIGZvciAoc2l6ZV90IGluZGV4
ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBz
ZWVrYWJsZVJhbmdlcy0+aW50ZXJzZWN0V2l0aChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5zZWVr
YWJsZSgpLmdldCgpKTsKKyAgICByZXR1cm4gc2Vla2FibGVSYW5nZXM7Cit9CisKK1Bhc3NSZWZQ
dHI8VGltZVJhbmdlcz4gTWVkaWFDb250cm9sbGVyOjpwbGF5ZWQoKQoreworICAgIGlmIChtX21l
ZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRl
KCk7CisKKyAgICAvLyBUaGUgcGxheWVkIGF0dHJpYnV0ZSBtdXN0IHJldHVybiBhIG5ldyBzdGF0
aWMgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgCisgICAgLy8g
dGhlIHVuaW9uIG9mIHRoZSByYW5nZXMgb2YgdGhlIG1lZGlhIHJlc291cmNlcyBvZiB0aGUgc2xh
dmVkIG1lZGlhIGVsZW1lbnRzIHRoYXQgdGhlIAorICAgIC8vIHVzZXIgYWdlbnQgaGFzIHNvIGZh
ciByZW5kZXJlZCwgYXQgdGhlIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyBldmFsdWF0ZWQuCisgICAg
UmVmUHRyPFRpbWVSYW5nZXM+IHBsYXllZFJhbmdlcyA9IG1fbWVkaWFFbGVtZW50cy5maXJzdCgp
LT5wbGF5ZWQoKTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVs
ZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgcGxheWVkUmFuZ2VzLT51bmlvbldpdGgo
bV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+cGxheWVkKCkuZ2V0KCkpOworICAgIHJldHVybiBwbGF5
ZWRSYW5nZXM7Cit9CisKK2Zsb2F0IE1lZGlhQ29udHJvbGxlcjo6ZHVyYXRpb24oKSBjb25zdAor
eworICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBjYWNoaW5nIHRoZSBtYXhpbXVtIGR1cmF0aW9u
IGFuZCBvbmx5IHVwZGF0aW5nIHRoZSBjYWNoZWQgdmFsdWUKKyAgICAvLyB3aGVuIHRoZSBzbGF2
ZWQgbWVkaWEgZWxlbWVudHMnIGR1cmF0aW9ucyBjaGFuZ2UuCisgICAgZmxvYXQgbWF4RHVyYXRp
b24gPSAwOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVu
dHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUVs
ZW1lbnRzW2luZGV4XS0+ZHVyYXRpb247CisgICAgICAgIGlmIChpc25hbihkdXJhdGlvbikpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbWF4RHVyYXRpb24gPSBtYXgobWF4RHVyYXRp
b24sIGR1cmF0aW9uKTsKKyAgICB9CisgICAgcmV0dXJuIG1heER1cmF0aW9uOworfQorCitmbG9h
dCBNZWRpYUNvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKCkgY29uc3QKK3sKKyAgICBpZiAobV9tZWRp
YUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJu
IG1fY2xvY2stPmN1cnJlbnRUaW1lKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRD
dXJyZW50VGltZShmbG9hdCB0aW1lLCBFeGNlcHRpb25Db2RlJiBjb2RlKQoreworICAgIC8vIFdo
ZW4gdGhlIHVzZXIgYWdlbnQgaXMgdG8gc2VlayB0aGUgbWVkaWEgY29udHJvbGxlciB0byBhIHBh
cnRpY3VsYXIgbmV3IHBsYXliYWNrIHBvc2l0aW9uLCAKKyAgICAvLyBpdCBtdXN0IGZvbGxvdyB0
aGVzZSBzdGVwczoKKyAgICAvLyBJZiB0aGUgbmV3IHBsYXliYWNrIHBvc2l0aW9uIGlzIGxlc3Mg
dGhhbiB6ZXJvLCB0aGVuIHNldCBpdCB0byB6ZXJvLgorICAgIHRpbWUgPSBtYXgoMC4wZiwgdGlt
ZSk7CisgICAgCisgICAgLy8gSWYgdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbiBpcyBncmVhdGVy
IHRoYW4gdGhlIG1lZGlhIGNvbnRyb2xsZXIgZHVyYXRpb24sIHRoZW4gc2V0IGl0IAorICAgIC8v
IHRvIHRoZSBtZWRpYSBjb250cm9sbGVyIGR1cmF0aW9uLgorICAgIHRpbWUgPSBtaW4odGltZSwg
ZHVyYXRpb24oKSk7CisgICAgCisgICAgLy8gU2V0IHRoZSBtZWRpYSBjb250cm9sbGVyIHBvc2l0
aW9uIHRvIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24uCisgICAgbV9jbG9jay0+c2V0Q3VycmVu
dFRpbWUodGltZSk7CisgICAgCisgICAgLy8gU2VlayBlYWNoIHNsYXZlZCBtZWRpYSBlbGVtZW50
IHRvIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIG1lZGlhIGVsZW1l
bnQgdGltZWxpbmUuCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFF
bGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0t
PnNlZWsodGltZSwgY29kZSk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpwbGF5KCkKK3sK
KyAgICAvLyBXaGVuIHRoZSBwbGF5KCkgbWV0aG9kIGlzIGludm9rZWQsIGlmIHRoZSBNZWRpYUNv
bnRyb2xsZXIgaXMgYSBwYXVzZWQgbWVkaWEgY29udHJvbGxlciwKKyAgICBpZiAoIW1fcGF1c2Vk
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyB0aGUgdXNlciBhZ2VudCBtdXN0IGNoYW5nZSB0
aGUgTWVkaWFDb250cm9sbGVyIGludG8gYSBwbGF5aW5nIG1lZGlhIGNvbnRyb2xsZXIsCisgICAg
bV9wYXVzZWQgPSBmYWxzZTsKKyAgICAvLyBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBl
dmVudCBuYW1lZCBwbGF5IGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIsCisgICAgc2NoZWR1bGVFdmVu
dChldmVudE5hbWVzKCkucGxheUV2ZW50KTsKKyAgICAvLyBhbmQgdGhlbiByZXBvcnQgdGhlIGNv
bnRyb2xsZXIgc3RhdGUgb2YgdGhlIE1lZGlhQ29udHJvbGxlci4KKyAgICByZXBvcnRDb250cm9s
bGVyU3RhdGUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnBhdXNlKCkKK3sKKyAgICAv
LyBXaGVuIHRoZSBwYXVzZSgpIG1ldGhvZCBpcyBpbnZva2VkLCBpZiB0aGUgTWVkaWFDb250cm9s
bGVyIGlzIGEgcGxheWluZyBtZWRpYSBjb250cm9sbGVyLAorICAgIGlmIChtX3BhdXNlZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0IGNoYW5nZSB0
aGUgTWVkaWFDb250cm9sbGVyIGludG8gYSBwYXVzZWQgbWVkaWEgY29udHJvbGxlciwKKyAgICBt
X3BhdXNlZCA9IHRydWU7CisgICAgLy8gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZl
bnQgbmFtZWQgcGF1c2UgYXQgdGhlIE1lZGlhQ29udHJvbGxlciwKKyAgICBzY2hlZHVsZUV2ZW50
KGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsKKyAgICAvLyBhbmQgdGhlbiByZXBvcnQgdGhlIGNv
bnRyb2xsZXIgc3RhdGUgb2YgdGhlIE1lZGlhQ29udHJvbGxlci4KKyAgICByZXBvcnRDb250cm9s
bGVyU3RhdGUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldERlZmF1bHRQbGF5YmFj
a1JhdGUoZmxvYXQgcmF0ZSkKK3sKKyAgICBpZiAobV9kZWZhdWx0UGxheWJhY2tSYXRlID09IHJh
dGUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBkZWZhdWx0UGxheWJhY2tSYXRlIGF0
dHJpYnV0ZSwgb24gc2V0dGluZywgbXVzdCBzZXQgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1lZGlh
IGNvbnRyb2xsZXIKKyAgICAvLyBkZWZhdWx0IHBsYXliYWNrIHJhdGUgdG8gdGhlIG5ldyB2YWx1
ZSwKKyAgICBtX2RlZmF1bHRQbGF5YmFja1JhdGUgPSByYXRlOworCisgICAgLy8gdGhlbiBxdWV1
ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCByYXRlY2hhbmdlIGF0IHRoZSBN
ZWRpYUNvbnRyb2xsZXIuCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucmF0ZWNoYW5n
ZUV2ZW50KTsKK30KKworZmxvYXQgTWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUoKSBjb25z
dAoreworICAgIHJldHVybiBtX2Nsb2NrLT5wbGF5UmF0ZSgpOworfQorCit2b2lkIE1lZGlhQ29u
dHJvbGxlcjo6c2V0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUpCit7CisgICAgaWYgKG1fY2xvY2st
PnBsYXlSYXRlKCkgPT0gcmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhlIHBsYXli
YWNrUmF0ZSBhdHRyaWJ1dGUsIG9uIHNldHRpbmcsIG11c3Qgc2V0IHRoZSBNZWRpYUNvbnRyb2xs
ZXIncyBtZWRpYSBjb250cm9sbGVyIAorICAgIC8vIHBsYXliYWNrIHJhdGUgdG8gdGhlIG5ldyB2
YWx1ZSwKKyAgICBtX2Nsb2NrLT5zZXRQbGF5UmF0ZShyYXRlKTsKKworICAgIC8vIHRoZW4gcXVl
dWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcmF0ZWNoYW5nZSBhdCB0aGUg
TWVkaWFDb250cm9sbGVyLgorICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnJhdGVjaGFu
Z2VFdmVudCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUoZmxvYXQgbGV2
ZWwsIEV4Y2VwdGlvbkNvZGUmIGNvZGUpCit7CisgICAgaWYgKG1fdm9sdW1lID09IGxldmVsKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBJZiB0aGUgbmV3IHZhbHVlIGlzIG91dHNpZGUgdGhl
IHJhbmdlIDAuMCB0byAxLjAgaW5jbHVzaXZlLCB0aGVuLCBvbiBzZXR0aW5nLCBhbiAKKyAgICAv
LyBJbmRleFNpemVFcnJvciBleGNlcHRpb24gbXVzdCBiZSByYWlzZWQgaW5zdGVhZC4KKyAgICBp
ZiAobGV2ZWwgPCAwIHx8IGxldmVsID4gMSkgeworICAgICAgICBjb2RlID0gSU5ERVhfU0laRV9F
UlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIC8vIFRoZSB2b2x1bWUg
YXR0cmlidXRlLCBvbiBzZXR0aW5nLCBpZiB0aGUgbmV3IHZhbHVlIGlzIGluIHRoZSByYW5nZSAw
LjAgdG8gMS4wIGluY2x1c2l2ZSwKKyAgICAvLyBtdXN0IHNldCB0aGUgTWVkaWFDb250cm9sbGVy
J3MgbWVkaWEgY29udHJvbGxlciB2b2x1bWUgbXVsdGlwbGllciB0byB0aGUgbmV3IHZhbHVlCisg
ICAgbV92b2x1bWUgPSBsZXZlbDsKKworICAgIC8vIGFuZCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBh
IHNpbXBsZSBldmVudCBuYW1lZCB2b2x1bWVjaGFuZ2UgYXQgdGhlIE1lZGlhQ29udHJvbGxlci4K
KyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS52b2x1bWVjaGFuZ2VFdmVudCk7CisKKyAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsg
KytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+dXBkYXRlVm9sdW1lKCk7
Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZChib29sIGZsYWcpCit7CisgICAg
aWYgKG1fbXV0ZWQgPT0gZmxhZykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhlIG11dGVk
IGF0dHJpYnV0ZSwgb24gc2V0dGluZywgbXVzdCBzZXQgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1l
ZGlhIGNvbnRyb2xsZXIgbXV0ZSBvdmVycmlkZQorICAgIC8vIHRvIHRoZSBuZXcgdmFsdWUKKyAg
ICBtX211dGVkID0gZmxhZzsKKworICAgIC8vIGFuZCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNp
bXBsZSBldmVudCBuYW1lZCB2b2x1bWVjaGFuZ2UgYXQgdGhlIE1lZGlhQ29udHJvbGxlci4KKyAg
ICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS52b2x1bWVjaGFuZ2VFdmVudCk7CisKKyAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytp
bmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+dXBkYXRlVm9sdW1lKCk7Cit9
CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpyZXBvcnRDb250cm9sbGVyU3RhdGUoKQoreworICAg
IHVwZGF0ZVJlYWR5U3RhdGUoKTsKKyAgICB1cGRhdGVQbGF5YmFja1N0YXRlKCk7Cit9CisKK3Zv
aWQgTWVkaWFDb250cm9sbGVyOjp1cGRhdGVSZWFkeVN0YXRlKCkKK3sKKyAgICBSZWFkeVN0YXRl
IG9sZFJlYWR5U3RhdGUgPSBtX3JlYWR5U3RhdGU7CisgICAgUmVhZHlTdGF0ZSBuZXdSZWFkeVN0
YXRlOworCisgICAgCisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgLy8gSWYgdGhlIE1lZGlhQ29udHJvbGxlciBoYXMgbm8gc2xhdmVkIG1lZGlhIGVsZW1lbnRz
LCBsZXQgbmV3IHJlYWRpbmVzcyBzdGF0ZSBiZSAwLgorICAgICAgICBuZXdSZWFkeVN0YXRlID0g
SEFWRV9OT1RISU5HOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE90aGVyd2lzZSwgbGV0IGl0
IGhhdmUgdGhlIGxvd2VzdCB2YWx1ZSBvZiB0aGUgcmVhZHlTdGF0ZSBJREwgYXR0cmlidXRlcyBv
ZiBhbGwgb2YgaXRzCisgICAgICAgIC8vIHNsYXZlZCBtZWRpYSBlbGVtZW50cy4KKyAgICAgICAg
bmV3UmVhZHlTdGF0ZSA9IG1fbWVkaWFFbGVtZW50cy5maXJzdCgpLT5yZWFkeVN0YXRlKCk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6
ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IG1pbihuZXdSZWFkeVN0
YXRlLCBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5yZWFkeVN0YXRlKCkpOworICAgIH0KKworICAg
IC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtb3N0IHJlY2VudGx5IHJlcG9ydGVkIHJlYWRp
bmVzcyBzdGF0ZSBpcyBub3QgZXF1YWwgdG8gbmV3IHJlYWRpbmVzcyBzdGF0ZQorICAgIGlmIChu
ZXdSZWFkeVN0YXRlID09IG9sZFJlYWR5U3RhdGUpIAorICAgICAgICByZXR1cm47CisKKyAgICAv
LyB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IGF0IHRoZSBNZWRpYUNv
bnRyb2xsZXIgb2JqZWN0LCB3aG9zZSBuYW1lIGlzIHRoZQorICAgIC8vIGV2ZW50IG5hbWUgY29y
cmVzcG9uZGluZyB0byB0aGUgdmFsdWUgb2YgbmV3IHJlYWRpbmVzcyBzdGF0ZSBnaXZlbiBpbiB0
aGUgdGFibGUgYmVsb3cgKG9tbWl0dGVkKQorICAgIEF0b21pY1N0cmluZyBldmVudE5hbWU7Cisg
ICAgc3dpdGNoIChuZXdSZWFkeVN0YXRlKSB7CisgICAgY2FzZSBIQVZFX05PVEhJTkc6CisgICAg
ICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5lbXB0aWVkRXZlbnQ7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSEFWRV9NRVRBREFUQToKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1l
cygpLmxvYWRlZG1ldGFkYXRhRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSEFWRV9D
VVJSRU5UX0RBVEE6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5sb2FkZWRkYXRh
RXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSEFWRV9GVVRVUkVfREFUQToKKyAgICAg
ICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLmNhbnBsYXlFdmVudDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBIQVZFX0VOT1VHSF9EQVRBOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5h
bWVzKCkuY2FucGxheXRocm91Z2hFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHNjaGVkdWxlRXZlbnQo
ZXZlbnROYW1lKTsKKworICAgIC8vIExldCB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbW9zdCByZWNl
bnRseSByZXBvcnRlZCByZWFkaW5lc3Mgc3RhdGUgYmUgbmV3IHJlYWRpbmVzcyBzdGF0ZS4KKyAg
ICBtX3JlYWR5U3RhdGUgPSBuZXdSZWFkeVN0YXRlOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxl
cjo6dXBkYXRlUGxheWJhY2tTdGF0ZSgpCit7CisgICAgUGxheWJhY2tTdGF0ZSBvbGRQbGF5YmFj
a1N0YXRlID0gbV9wbGF5YmFja1N0YXRlOworICAgIFBsYXliYWNrU3RhdGUgbmV3UGxheWJhY2tT
dGF0ZTsKKworICAgIC8vIEluaXRpYWxpemUgbmV3IHBsYXliYWNrIHN0YXRlIGJ5IHNldHRpbmcg
aXQgdG8gdGhlIHN0YXRlIGdpdmVuIGZvciB0aGUgZmlyc3QgbWF0Y2hpbmcgCisgICAgLy8gY29u
ZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgorICAgIGlmIChtX21lZGlhRWxlbWVudHMu
aXNFbXB0eSgpKSB7CisgICAgICAgIC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIgaGFzIG5vIHNs
YXZlZCBtZWRpYSBlbGVtZW50cworICAgICAgICAvLyBMZXQgbmV3IHBsYXliYWNrIHN0YXRlIGJl
IHdhaXRpbmcuCisgICAgICAgIG5ld1BsYXliYWNrU3RhdGUgPSBXQUlUSU5HOworICAgIH0gZWxz
ZSBpZiAoaGFzRW5kZWQoKSkgeworICAgICAgICAvLyBJZiBhbGwgb2YgdGhlIE1lZGlhQ29udHJv
bGxlcidzIHNsYXZlZCBtZWRpYSBlbGVtZW50cyBoYXZlIGVuZGVkIHBsYXliYWNrIGFuZCB0aGUg
bWVkaWEKKyAgICAgICAgLy8gY29udHJvbGxlciBwbGF5YmFjayByYXRlIGlzIHBvc2l0aXZlIG9y
IHplcm8KKyAgICAgICAgLy8gTGV0IG5ldyBwbGF5YmFjayBzdGF0ZSBiZSBlbmRlZC4KKyAgICAg
ICAgbmV3UGxheWJhY2tTdGF0ZSA9IEVOREVEOworICAgIH0gZWxzZSBpZiAoaXNCbG9ja2VkKCkp
IHsKKyAgICAgICAgLy8gSWYgdGhlIE1lZGlhQ29udHJvbGxlciBpcyBhIGJsb2NrZWQgbWVkaWEg
Y29udHJvbGxlcgorICAgICAgICAvLyBMZXQgbmV3IHBsYXliYWNrIHN0YXRlIGJlIHdhaXRpbmcu
CisgICAgICAgIG5ld1BsYXliYWNrU3RhdGUgPSBXQUlUSU5HOworICAgIH0gZWxzZSB7CisgICAg
ICAgIC8vIE90aGVyd2lzZQorICAgICAgICAvLyBMZXQgbmV3IHBsYXliYWNrIHN0YXRlIGJlIHBs
YXlpbmcuCisgICAgICAgIG5ld1BsYXliYWNrU3RhdGUgPSBQTEFZSU5HOworICAgIH0KKworICAg
IC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtb3N0IHJlY2VudGx5IHJlcG9ydGVkIHBsYXli
YWNrIHN0YXRlIGlzIG5vdCBlcXVhbCB0byBuZXcgcGxheWJhY2sgc3RhdGUKKyAgICBpZiAobmV3
UGxheWJhY2tTdGF0ZSA9PSBvbGRQbGF5YmFja1N0YXRlKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBhbmQgdGhlIG5ldyBwbGF5YmFjayBzdGF0ZSBpcyBlbmRlZCwKKyAgICBpZiAobmV3UGxh
eWJhY2tTdGF0ZSA9PSBFTkRFRCkgeworICAgICAgICAvLyB0aGVuIHF1ZXVlIGEgdGFzayB0aGF0
LCBpZiB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCBpcyBhIHBsYXlpbmcgbWVkaWEgY29udHJv
bGxlciwgYW5kIAorICAgICAgICAvLyBhbGwgb2YgdGhlIE1lZGlhQ29udHJvbGxlcidzIHNsYXZl
ZCBtZWRpYSBlbGVtZW50cyBoYXZlIHN0aWxsIGVuZGVkIHBsYXliYWNrLCBhbmQgdGhlIAorICAg
ICAgICAvLyBtZWRpYSBjb250cm9sbGVyIHBsYXliYWNrIHJhdGUgaXMgc3RpbGwgcG9zaXRpdmUg
b3IgemVybywgCisgICAgICAgIGlmICghbV9wYXVzZWQgJiYgaGFzRW5kZWQoKSkgeworICAgICAg
ICAgICAgLy8gY2hhbmdlcyB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCB0byBhIHBhdXNlZCBt
ZWRpYSBjb250cm9sbGVyCisgICAgICAgICAgICBtX3BhdXNlZCA9IHRydWU7CisgICAgICAgICAg
ICBtX2Nsb2NrLT5zdG9wKCk7CisKKyAgICAgICAgICAgIC8vIGFuZCB0aGVuIGZpcmVzIGEgc2lt
cGxlIGV2ZW50IG5hbWVkIHBhdXNlIGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIgb2JqZWN0LgorICAg
ICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGF1c2VFdmVudCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBJZiB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbW9zdCByZWNlbnRs
eSByZXBvcnRlZCBwbGF5YmFjayBzdGF0ZSBpcyBub3QgZXF1YWwgdG8gbmV3IHBsYXliYWNrIHN0
YXRlCisgICAgLy8gdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBhdCB0
aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCwgd2hvc2UgbmFtZSBpcyBwbGF5aW5nIAorICAgIC8v
IGlmIG5ldyBwbGF5YmFjayBzdGF0ZSBpcyBwbGF5aW5nLCBlbmRlZCBpZiBuZXcgcGxheWJhY2sg
c3RhdGUgaXMgZW5kZWQsIGFuZCB3YWl0aW5nIG90aGVyd2lzZS4KKyAgICBBdG9taWNTdHJpbmcg
ZXZlbnROYW1lOworICAgIHN3aXRjaCAobmV3UGxheWJhY2tTdGF0ZSkgeworICAgIGNhc2UgV0FJ
VElORzoKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLndhaXRpbmdFdmVudDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBFTkRFRDoKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnRO
YW1lcygpLmVuZGVkRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUExBWUlORzoKKyAg
ICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLnBsYXlpbmdFdmVudDsKKyAgICAgICAgbV9j
bG9jay0+c3RhcnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lKTsK
KworICAgIC8vIExldCB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbW9zdCByZWNlbnRseSByZXBvcnRl
ZCBwbGF5YmFjayBzdGF0ZSBiZSBuZXcgcGxheWJhY2sgc3RhdGUuCisgICAgbV9wbGF5YmFja1N0
YXRlID0gbmV3UGxheWJhY2tTdGF0ZTsKKworICAgIHVwZGF0ZU1lZGlhRWxlbWVudHMoKTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVwZGF0ZU1lZGlhRWxlbWVudHMoKQoreworICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2lu
ZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT51cGRhdGVQbGF5U3RhdGUoKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmJyaW5nRWxlbWVudFVwVG9TcGVlZChIVE1MTWVk
aWFFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICBBU1NFUlQo
bV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKGVsZW1lbnQpKTsKKworICAgIC8vIFdoZW4gdGhlIHVz
ZXIgYWdlbnQgaXMgdG8gYnJpbmcgYSBtZWRpYSBlbGVtZW50IHVwIHRvIHNwZWVkIHdpdGggaXRz
IG5ldyBtZWRpYSBjb250cm9sbGVyLAorICAgIC8vIGl0IG11c3Qgc2VlayB0aGF0IG1lZGlhIGVs
ZW1lbnQgdG8gdGhlIE1lZGlhQ29udHJvbGxlcidzIG1lZGlhIGNvbnRyb2xsZXIgcG9zaXRpb24g
cmVsYXRpdmUKKyAgICAvLyB0byB0aGUgbWVkaWEgZWxlbWVudCdzIHRpbWVsaW5lLgorICAgIEV4
Y2VwdGlvbkNvZGUgaWdub3JlZENvZGUgPSAwOworICAgIGVsZW1lbnQtPnNlZWsoY3VycmVudFRp
bWUoKSwgaWdub3JlZENvZGUpOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6aXNCbG9ja2Vk
KCkgY29uc3QKK3sKKyAgICAvLyBBIE1lZGlhQ29udHJvbGxlciBpcyBhIGJsb2NrZWQgbWVkaWEg
Y29udHJvbGxlciBpZiB0aGUgTWVkaWFDb250cm9sbGVyIGlzIGEgcGF1c2VkIG1lZGlhIAorICAg
IC8vIGNvbnRyb2xsZXIsCisgICAgaWYgKG1fcGF1c2VkKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIGJvb2wgYWxsUGF1c2VkID0gdHJ1ZTsKKyAgICBmb3IgKHNpemVf
dCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgewor
ICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0gbV9tZWRpYUVsZW1lbnRzW2luZGV4
XTsKKyAgICAgICAgLy8gIG9yIGlmIGFueSBvZiBpdHMgc2xhdmVkIG1lZGlhIGVsZW1lbnRzIGFy
ZSBibG9ja2VkIG1lZGlhIGVsZW1lbnRzLAorICAgICAgICBpZiAoZWxlbWVudC0+aXNCbG9ja2Vk
KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIC8vIG9yIGlm
IGFueSBvZiBpdHMgc2xhdmVkIG1lZGlhIGVsZW1lbnRzIHdob3NlIGF1dG9wbGF5aW5nIGZsYWcg
aXMgdHJ1ZSBzdGlsbCBoYXZlIHRoZWlyIAorICAgICAgICAvLyBwYXVzZWQgYXR0cmlidXRlIHNl
dCB0byB0cnVlLAorICAgICAgICBpZiAoZWxlbWVudC0+YXV0b3BsYXkoKSAmJiBlbGVtZW50LT5w
YXVzZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAKKyAgICAgICAgaWYg
KCFlbGVtZW50LT5wYXVzZWQoKSkKKyAgICAgICAgICAgIGFsbFBhdXNlZCA9IGZhbHNlOworICAg
IH0KKyAgICAKKyAgICAvLyBvciBpZiBhbGwgb2YgaXRzIHNsYXZlZCBtZWRpYSBlbGVtZW50cyBo
YXZlIHRoZWlyIHBhdXNlZCBhdHRyaWJ1dGUgc2V0IHRvIHRydWUuCisgICAgcmV0dXJuIGFsbFBh
dXNlZDsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6Omhhc0VuZGVkKCkgY29uc3QKK3sKKyAg
ICBpZiAobV9jbG9jay0+cGxheVJhdGUoKSA8PSAwKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICBib29sIGFsbEhhdmVFbmRlZCA9IHRydWU7CisgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsK
KyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5lbmRlZCgpKQorICAgICAgICAg
ICAgYWxsSGF2ZUVuZGVkID0gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBhbGxIYXZlRW5kZWQ7
Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnROYW1lKQoreworICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWUsIGZhbHNlLCB0cnVlKSk7CisgICAgaWYgKCFtX2FzeW5jRXZlbnRUaW1l
ci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2FzeW5jRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7
Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxN
ZWRpYUNvbnRyb2xsZXI+KikKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IHBlbmRpbmdF
dmVudHM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgCisgICAgbV9wZW5kaW5nRXZl
bnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7CisgICAgc2l6ZV90IGNvdW50ID0gcGVuZGluZ0V2ZW50
cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2lu
ZGV4KQorICAgICAgICBkaXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVudHNbaW5kZXhdLnJlbGVhc2Uo
KSwgZWMpOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBNZWRpYUNvbnRyb2xsZXI6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIGlmIChtX21lZGlhRWxlbWVudHMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnRz
LmZpcnN0KCktPmRvY3VtZW50KCk7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpoYXNBdWRp
bygpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFF
bGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKG1fbWVkaWFFbGVtZW50c1tp
bmRleF0tPmhhc0F1ZGlvKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6aGFzVmlkZW8oKSBjb25z
dAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMu
c2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5o
YXNWaWRlbygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29u
c3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRz
LnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+
aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0
aW9uc1Zpc2libGUoYm9vbCB2aXNpYmxlKQoreworICAgIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxl
ID0gdmlzaWJsZTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVs
ZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+
c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKHZpc2libGUpOworfQorCitib29sIE1lZGlhQ29udHJv
bGxlcjo6c3VwcG9ydHNTY2FubmluZygpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXgg
PSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAg
aWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5zdXBwb3J0c1NjYW5uaW5nKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1l
ZGlhQ29udHJvbGxlcjo6YmVnaW5TY3J1YmJpbmcoKQoreworICAgIGZvciAoc2l6ZV90IGluZGV4
ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBt
X21lZGlhRWxlbWVudHNbaW5kZXhdLT5iZWdpblNjcnViYmluZygpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbGxlcjo6ZW5kU2NydWJiaW5nKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRp
YUVsZW1lbnRzW2luZGV4XS0+ZW5kU2NydWJiaW5nKCk7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9s
bGVyOjpjYW5QbGF5KCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4
IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAoIW1fbWVk
aWFFbGVtZW50c1tpbmRleF0tPmNhblBsYXkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjppc0xp
dmVTdHJlYW0oKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBt
X21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmICghbV9tZWRpYUVs
ZW1lbnRzW2luZGV4XS0+aXNMaXZlU3RyZWFtKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6aGFz
U291cmNlKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9t
ZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAoIW1fbWVkaWFFbGVt
ZW50c1tpbmRleF0tPmhhc1NvdXJjZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnJldHVyblRv
UmVhbHRpbWUoKQoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlh
RWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhd
LT5yZXR1cm5Ub1JlYWx0aW1lKCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250
cm9sbGVyOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygp
LmludGVyZmFjZUZvck1lZGlhQ29udHJvbGxlcjsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODVlZjI5YTIzZGI5OWQ2ZmU0Yzg2MDQy
MjhmOTE5Mzc3MDk2ZmU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDE1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1l
ZGlhQ29udHJvbGxlcl9oCisjZGVmaW5lIE1lZGlhQ29udHJvbGxlcl9oCisKKyNpZiBFTkFCTEUo
VklERU8pCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFdmVudC5o
IgorI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgor
I2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIgorI2luY2x1ZGUgIlRpbWVyLmgi
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBDbG9jazsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBFdmVudDsKKworY2xhc3Mg
TWVkaWFDb250cm9sbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFDb250cm9sbGVyPiwgcHVi
bGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSwgcHVibGljIEV2ZW50VGFyZ2V0IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IG1lZGlhQ29udHJvbGxl
ckZvck1lZGlhR3JvdXAoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sbGVyPiBjcmVhdGUoKTsKKyAgICB2aXJ0dWFsIH5NZWRpYUNvbnRyb2xsZXIoKTsK
KworICAgIHZvaWQgYWRkTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICB2b2lk
IHJlbW92ZU1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgYm9vbCBjb250YWlu
c01lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KikgY29uc3Q7CisKKyAgICBjb25zdCBTdHJp
bmcmIG1lZGlhR3JvdXAoKSBjb25zdCB7IHJldHVybiBtX21lZGlhR3JvdXA7IH0KKyAgICAKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gcGxheWVkKCk7CisgICAgCisgICAgdmlydHVhbCBm
bG9hdCBkdXJhdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFRpbWUoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgcGF1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9w
YXVzZWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGxheSgpOworICAgIHZpcnR1YWwgdm9pZCBwYXVz
ZSgpOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRE
ZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0KTsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IHBsYXli
YWNrUmF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQp
OworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92b2x1
bWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7
CisgICAgCisgICAgdmlydHVhbCBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29sKTsKKyAgICAKKyAgICB2aXJ0dWFsIFJl
YWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQorCisg
ICAgZW51bSBQbGF5YmFja1N0YXRlIHsgV0FJVElORywgUExBWUlORywgRU5ERUQgfTsKKyAgICB2
aXJ0dWFsIFBsYXliYWNrU3RhdGUgcGxheWJhY2tTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
eWJhY2tTdGF0ZTsgfQorCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRnVsbHNjcmVlbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigp
IHsgfQorCisgICAgdmlydHVhbCBib29sIGhhc0F1ZGlvKCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGhhc1ZpZGVvKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc0Nsb3NlZENhcHRpb25z
KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29s
KTsKKyAgICB2aXJ0dWFsIGJvb2wgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9jbG9zZWRDYXB0aW9uc1Zpc2libGU7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNTY2FubmluZygpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjcnVi
YmluZygpOworICAgIHZpcnR1YWwgdm9pZCBlbmRTY3J1YmJpbmcoKTsKKyAgICAKKyAgICB2aXJ0
dWFsIGJvb2wgY2FuUGxheSgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVT
dHJlYW0oKSBjb25zdDsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaGFzU291cmNlKCkgY29uc3Q7
CisgICAgCisgICAgdmlydHVhbCB2b2lkIHJldHVyblRvUmVhbHRpbWUoKTsKKworICAgIGJvb2wg
aXNCbG9ja2VkKCkgY29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHVzaW5nIFJlZkNv
dW50ZWQ8TWVkaWFDb250cm9sbGVyPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFD
b250cm9sbGVyPjo6ZGVyZWY7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sbGVyKCk7Cisg
ICAgdm9pZCByZXBvcnRDb250cm9sbGVyU3RhdGUoKTsKKyAgICB2b2lkIHVwZGF0ZVJlYWR5U3Rh
dGUoKTsKKyAgICB2b2lkIHVwZGF0ZVBsYXliYWNrU3RhdGUoKTsKKyAgICB2b2lkIHVwZGF0ZU1l
ZGlhRWxlbWVudHMoKTsKKyAgICB2b2lkIGJyaW5nRWxlbWVudFVwVG9TcGVlZChIVE1MTWVkaWFF
bGVtZW50Kik7CisgICAgdm9pZCBzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnROYW1lKTsKKyAgICB2b2lkIGFzeW5jRXZlbnRUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJv
bGxlcj4qKTsKKyAgICBib29sIGhhc0VuZGVkKCkgY29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdl
dAorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisgICAg
dmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2
ZW50VGFyZ2V0RGF0YTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVu
dFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKyAgICBFdmVudFRh
cmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CisKKyAgICBmcmllbmQgY2xhc3MgSFRNTE1lZGlh
RWxlbWVudDsKKyAgICBmcmllbmQgY2xhc3MgTWVkaWFDb250cm9sbGVyRXZlbnRMaXN0ZW5lcjsK
KyAgICBWZWN0b3I8SFRNTE1lZGlhRWxlbWVudCo+IG1fbWVkaWFFbGVtZW50czsKKyAgICBib29s
IG1fcGF1c2VkOworICAgIGZsb2F0IG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsKKyAgICBmbG9hdCBt
X3ZvbHVtZTsKKyAgICBib29sIG1fbXV0ZWQ7CisgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7
CisgICAgUGxheWJhY2tTdGF0ZSBtX3BsYXliYWNrU3RhdGU7CisgICAgVmVjdG9yPFJlZlB0cjxF
dmVudD4gPiBtX3BlbmRpbmdFdmVudHM7CisgICAgVGltZXI8TWVkaWFDb250cm9sbGVyPiBtX2Fz
eW5jRXZlbnRUaW1lcjsKKyAgICBTdHJpbmcgbV9tZWRpYUdyb3VwOworICAgIGJvb2wgbV9jbG9z
ZWRDYXB0aW9uc1Zpc2libGU7CisgICAgUGFzc1JlZlB0cjxDbG9jaz4gbV9jbG9jazsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFDb250cm9sbGVyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGIyYTFmZDhjYjk0NDA4YTM4ZGFi
Yjk1NjNlYmZhNWY3MzhmYzUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUNvbnRyb2xsZXIuaWRsCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUg
aHRtbCB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9VklERU8sCisgICAg
ICAgIENhbkJlQ29uc3RydWN0ZWQsCisgICAgICAgIEdlbmVyYXRlVG9KUywKKyAgICAgICAgRXZl
bnRUYXJnZXQKKyAgICBdIE1lZGlhQ29udHJvbGxlciB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBUaW1lUmFuZ2VzIGJ1ZmZlcmVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGlt
ZVJhbmdlcyBzZWVrYWJsZTsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGR1
cmF0aW9uOworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIGN1cnJlbnRUaW1lCisgICAgICAgICAg
ICBzZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIHBhdXNlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRpbWVSYW5n
ZXMgcGxheWVkOworICAgICAgICB2b2lkIHBsYXkoKTsKKyAgICAgICAgdm9pZCBwYXVzZSgpOwor
CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgZGVmYXVsdFBsYXliYWNrUmF0ZTsKKyAgICAgICAg
YXR0cmlidXRlIGRvdWJsZSBwbGF5YmFja1JhdGU7CisKKyAgICAgICAgYXR0cmlidXRlIGRvdWJs
ZSB2b2x1bWUKKyAgICAgICAgICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAg
ICAgIGF0dHJpYnV0ZSBib29sZWFuIG11dGVkOworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGlu
dGVyZmFjZQorICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUs
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5l
ciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4g
dXNlQ2FwdHVyZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJp
bmcgdHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3Rl
bmVyIGxpc3RlbmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRp
b25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50
KGluIEV2ZW50IGV2dCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisgICAg
fTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVySW50
ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlckludGVyZmFjZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjcyY2Q0ZGE0MWFmNDJmNWRhMmFlNWRmOTc3OGM0Yjg2YjdjMzU0MDAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlckludGVy
ZmFjZS5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYUNvbnRyb2xs
ZXJJbnRlcmZhY2VfaAorI2RlZmluZSBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2VfaAorCisjaWYg
RU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBUaW1lUmFuZ2VzOworCit0eXBlZGVmIGludCBFeGNlcHRpb25D
b2RlOworCitjbGFzcyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UgeworcHVibGljOgorICAgIHZp
cnR1YWwgfk1lZGlhQ29udHJvbGxlckludGVyZmFjZSgpIHsgfTsKKyAgICAKKyAgICAvLyBNZWRp
YUNvbnRyb2xsZXIgSURMOgorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZm
ZXJlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc2Vl
a2FibGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHBs
YXllZCgpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IGR1cmF0aW9uKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldEN1cnJlbnRUaW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIAor
ICAgIHZpcnR1YWwgYm9vbCBwYXVzZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBs
YXkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgPSAwOworICAgIAorICAgIHZpcnR1
YWwgZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCkgPSAwOworICAgIAorICAgIHZpcnR1YWwg
ZmxvYXQgcGxheWJhY2tSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5
YmFja1JhdGUoZmxvYXQpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IHZvbHVtZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0LCBFeGNlcHRpb25Db2Rl
JikgPSAwOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBtdXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0TXV0ZWQoYm9vbCkgPSAwOworICAgIAorICAgIGVudW0gUmVhZHlTdGF0
ZSB7IEhBVkVfTk9USElORywgSEFWRV9NRVRBREFUQSwgSEFWRV9DVVJSRU5UX0RBVEEsIEhBVkVf
RlVUVVJFX0RBVEEsIEhBVkVfRU5PVUdIX0RBVEEgfTsKKyAgICB2aXJ0dWFsIFJlYWR5U3RhdGUg
cmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKKworICAgIC8vIE1lZGlhQ29udHJvbEVsZW1lbnRzOgor
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW50
ZXJGdWxsc2NyZWVuKCkgPSAwOworCisgICAgdmlydHVhbCBib29sIGhhc0F1ZGlvKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dENsb3NlZENhcHRpb25zVmlzaWJsZShib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNsb3Nl
ZENhcHRpb25zVmlzaWJsZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c1NjYW5uaW5nKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGJlZ2luU2NydWJiaW5n
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRTY3J1YmJpbmcoKSA9IDA7CisKKyAgICB2aXJ0
dWFsIGJvb2wgY2FuUGxheSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVT
dHJlYW0oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzU291cmNlKCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIHJldHVyblRvUmVhbHRpbWUoKSA9IDA7Cit9OworCit9
CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVS
YW5nZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcAppbmRleCAxZTE4
MzA2OTg3NzE0YjBlOTliMmQ1MzViYzRiNDdjZTNjY2M4NzgyLi5iYjFiMGZkNTg3MTI0N2IxZjhj
YTUyZThlZjdlMDM2N2IwZTg0ZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rp
bWVSYW5nZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAKQEAg
LTMwLDEzICszMCwxNCBAQAogI2luY2x1ZGUgPG1hdGguaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBUaW1lUmFuZ2VzOjpUaW1lUmFuZ2VzKGZs
b2F0IHN0YXJ0LCBmbG9hdCBlbmQpCiB7CiAgICAgYWRkKHN0YXJ0LCBlbmQpOwogfQogCi1QYXNz
UmVmUHRyPFRpbWVSYW5nZXM+IFRpbWVSYW5nZXM6OmNvcHkoKQorUGFzc1JlZlB0cjxUaW1lUmFu
Z2VzPiBUaW1lUmFuZ2VzOjpjb3B5KCkgY29uc3QKIHsKICAgICBSZWZQdHI8VGltZVJhbmdlcz4g
bmV3U2Vzc2lvbiA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwogICAgIApAQCAtNDcsNiArNDgsNTEg
QEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1lUmFuZ2VzOjpjb3B5KCkKICAgICByZXR1cm4g
bmV3U2Vzc2lvbi5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgVGltZVJhbmdlczo6aW52ZXJ0KCkKK3sK
KyAgICBSZWZQdHI8VGltZVJhbmdlcz4gaW52ZXJ0ZWQgPSBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsK
KyAgICBmbG9hdCBwb3NJbmYgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHko
KTsKKyAgICBmbG9hdCBuZWdJbmYgPSAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmlu
aXR5KCk7CisKKyAgICBpZiAoIW1fcmFuZ2VzLnNpemUoKSkKKyAgICAgICAgaW52ZXJ0ZWQtPmFk
ZChuZWdJbmYsIHBvc0luZik7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChmbG9hdCBzdGFydCA9
IG1fcmFuZ2VzLmZpcnN0KCkubV9zdGFydCAhPSBuZWdJbmYpCisgICAgICAgICAgICBpbnZlcnRl
ZC0+YWRkKG5lZ0luZiwgc3RhcnQpOworCisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsg
aW5kZXggKyAxIDwgbV9yYW5nZXMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgaW52ZXJ0
ZWQtPmFkZChtX3Jhbmdlc1tpbmRleF0ubV9lbmQsIG1fcmFuZ2VzW2luZGV4ICsgMV0ubV9zdGFy
dCk7CisKKyAgICAgICAgaWYgKGZsb2F0IGVuZCA9IG1fcmFuZ2VzLmxhc3QoKS5tX2VuZCAhPSBw
b3NJbmYpCisgICAgICAgICAgICBpbnZlcnRlZC0+YWRkKGVuZCwgcG9zSW5mKTsKKyAgICB9CisK
KyAgICBtX3Jhbmdlcy5zd2FwKGludmVydGVkLT5tX3Jhbmdlcyk7Cit9CisKK3ZvaWQgVGltZVJh
bmdlczo6aW50ZXJzZWN0V2l0aChjb25zdCBUaW1lUmFuZ2VzKiBvdGhlcikKK3sKKyAgICBBU1NF
UlQob3RoZXIpOworICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBpbnZlcnRlZCA9IGNvcHkoKTsKKyAg
ICBSZWZQdHI8VGltZVJhbmdlcz4gaW52ZXJ0ZWRPdGhlciA9IG90aGVyLT5jb3B5KCk7CisgICAg
aW52ZXJ0ZWQtPnVuaW9uV2l0aChpbnZlcnRlZE90aGVyLmdldCgpKTsKKyAgICBpbnZlcnRlZC0+
aW52ZXJ0KCk7CisKKyAgICBtX3Jhbmdlcy5zd2FwKGludmVydGVkLT5tX3Jhbmdlcyk7Cit9CisK
K3ZvaWQgVGltZVJhbmdlczo6dW5pb25XaXRoKGNvbnN0IFRpbWVSYW5nZXMqIG90aGVyKQorewor
ICAgIEFTU0VSVChvdGhlcik7CisgICAgUmVmUHRyPFRpbWVSYW5nZXM+IHVuaW9uZWQgPSBjb3B5
KCk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG90aGVyLT5tX3Jhbmdlcy5z
aXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgY29uc3QgUmFuZ2UmIHJhbmdlID0gb3RoZXItPm1f
cmFuZ2VzW2luZGV4XTsKKyAgICAgICAgdW5pb25lZC0+YWRkKHJhbmdlLm1fc3RhcnQsIHJhbmdl
Lm1fZW5kKTsKKyAgICB9CisKKyAgICBtX3Jhbmdlcy5zd2FwKHVuaW9uZWQtPm1fcmFuZ2VzKTsK
K30KKwogZmxvYXQgVGltZVJhbmdlczo6c3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdCAKIHsgCiAgICAgaWYgKGluZGV4ID49IGxlbmd0aCgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGltZVJhbmdlcy5oCmluZGV4IDJkN2FmMjVhODA5MTM3MzBmODBkMjM5MzBiZTI3NGUwZmYx
MjE3ZmQuLmNjY2NlMDVjMTljNGFjOWU2MjlkZDJhMmExZmI2NjUyMTk3ODEwZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGltZVJhbmdlcy5oCkBAIC00Niw3ICs0NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVGltZVJhbmdlcyhzdGFydCwgZW5kKSk7CiAgICAgfQogCi0gICAg
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBjb3B5KCk7CisgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2Vz
PiBjb3B5KCkgY29uc3Q7CisgICAgdm9pZCBpbnZlcnQoKTsKKyAgICB2b2lkIGludGVyc2VjdFdp
dGgoY29uc3QgVGltZVJhbmdlcyopOworICAgIHZvaWQgdW5pb25XaXRoKGNvbnN0IFRpbWVSYW5n
ZXMqKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VzLnNp
emUoKTsgfQogICAgIGZsb2F0IHN0YXJ0KHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJikg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggZTg4NDdkZmQ4NzM3N2MxZGE3
MGUwYTZiNzkyZDE1MmQ1OWU3NzczOS4uOWNjMmJjMjgzZmJmODZlYjQ4MTIzNzY0Zjg3NmNlYmVi
MzBkZGFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtNjM0LDYgKzYzNCw3IEBA
IG1vZHVsZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVZJREVPLCBF
bmFibGVkQXRSdW50aW1lXSBNZWRpYUVycm9yQ29uc3RydWN0b3IgTWVkaWFFcnJvcjsKICAgICAg
ICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1WSURFTywgRW5hYmxlZEF0UnVudGltZV0gVGltZVJh
bmdlc0NvbnN0cnVjdG9yIFRpbWVSYW5nZXM7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9u
YWw9VklERU8sIEVuYWJsZWRBdFJ1bnRpbWVdIEhUTUxTb3VyY2VFbGVtZW50Q29uc3RydWN0b3Ig
SFRNTFNvdXJjZUVsZW1lbnQ7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU8s
IEVuYWJsZWRBdFJ1bnRpbWVdIE1lZGlhQ29udHJvbGxlckNvbnN0cnVjdG9yIE1lZGlhQ29udHJv
bGxlcjsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICYmIEVOQUJMRV9BTklN
QVRJT05fQVBJCiAgICAgICAgIGF0dHJpYnV0ZSBXZWJLaXRBbmltYXRpb25Db25zdHJ1Y3RvciBX
ZWJLaXRBbmltYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKaW5kZXggMDE4YzdkZDMzZTM4YzFiOGY3NzM0NWE4YzNlNGY4MzVmZWM2
MGE3My4uZmM3N2ZmMjg4MzhiN2MwOTRhYTUzYTRmYmRmMDcxNjgwY2EyMjEzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtNjA5
LDYgKzYwOSwxMSBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxheWVyOjpidWZmZXJl
ZCgpCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YnVmZmVyZWQoKTsKIH0KIAorUGFzc1JlZlB0cjxU
aW1lUmFuZ2VzPiBNZWRpYVBsYXllcjo6c2Vla2FibGUoKQoreworICAgIHJldHVybiBtX3ByaXZh
dGUtPnNlZWthYmxlKCk7Cit9CisKIGZsb2F0IE1lZGlhUGxheWVyOjptYXhUaW1lU2Vla2FibGUo
KQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPm1heFRpbWVTZWVrYWJsZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggYzk2YjAyNWQ4
MmQwMDcwOTE2OWVlYTUxYzA3ODI2Yjc0NTA2YzQ3MS4uNDc3MzlhMDhiMGUzZDljYzczYzk5YTEz
MTQzNGE3OGFlMDM3NDU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCkBAIC0yNDEsNiArMjQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
UHJlc2VydmVzUGl0Y2goYm9vbCk7CiAKICAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZl
cmVkKCk7CisgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpOwogICAgIGZsb2F0
IG1heFRpbWVTZWVrYWJsZSgpOwogCiAgICAgdW5zaWduZWQgYnl0ZXNMb2FkZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmgKaW5kZXggZjhjNzBhYmUyOGE3ZWQwMWRmYjhhMmNiN2YxYzYzNjYzN2QzODQ0MS4uNmM1Mjdk
N2U1Y2QzODk5OTE2YjQ2NWVmNzJkNTcxNDQwNTZlZDdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTI5LDYg
KzI5LDcgQEAKICNpZiBFTkFCTEUoVklERU8pCiAKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgor
I2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC05MSw2ICs5Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKIAor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1heFRpbWVTZWVrYWJsZSgpID8gVGltZVJhbmdlczo6Y3JlYXRlKDAsIG1heFRpbWVTZWVr
YWJsZSgpKSA6IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOyB9CiAgICAgdmlydHVhbCBmbG9hdCBtYXhU
aW1lU2Vla2FibGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IGJ1ZmZlcmVkKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjEzMDI3MTM1NWZlNThmNTFiMDgw
Y2UxY2FjMGRkNmFhMTlmNjE5Yi4uOWIxNjZhYWFhNGYzYWE2MjhkZDdjNzY5Yjk4M2E0NjBkYTU4
YmJhOCAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDExLTExLTAzICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNvbnRyb2xsZXIuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTQwOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvbWVk
aWEtY29udHJvbGxlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlh
LWNvbnRyb2xsZXItcGxheWJhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRp
YS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlh
L21lZGlhLWNvbnRyb2xsZXIuaHRtbDogQWRkZWQuCisKKzIwMTEtMTEtMDMgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IE1lZGlhQ29udHJvbGxl
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDA4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRp
YS9tZWRpYS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEv
bWVkaWEtY29udHJvbGxlci1wbGF5YmFjay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IG1lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbDogQWRkZWQuCisgICAgICAgICog
bWVkaWEvbWVkaWEtY29udHJvbGxlci5odG1sOiBBZGRlZC4KKworMjAxMS0xMS0wMiAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgTWVkaWFDb250
cm9sbGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzE0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IG1lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBt
ZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLmh0bWw6IEFkZGVkLgorCiAyMDExLTExLTA3ICBU
b255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBkaXNh
YmxlIDIgdGVzdHMgdGhhdCBhcmUgc2xvdyBpbiBkZWJ1ZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRp
YS9tZWRpYS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzZkNGQwN2ZmY2Nm
Y2IzMGU3NTVhY2MyNjhlNjc0Zjc0YWNjYzBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNSBAQAor
IAorVGVzdCBwcmVzZW5jZSBvZiBNZWRpYUNvbnRyb2xsZXIgY29uc3RydWN0b3IsIG1lZGlhQ29u
dHJvbGxlciwgYW5kIG1lZGlhR3JvdXAgYXR0cmlidXRlczoKK0VYUEVDVEVEICh0eXBlb2YoTWVk
aWFDb250cm9sbGVyKSA9PSAnb2JqZWN0JykgT0sKK0VYUEVDVEVEICh2aWRlby5tZWRpYUNvbnRy
b2xsZXIgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKHZpZGVvLm1lZGlhR3JvdXAgPT0gJycpIE9L
CisKK1Rlc3QgdGhhdCB0aGUgcHJlc2VuY2Ugb2YgYSBtZWRpYUdyb3VwIGF0dHJpYnV0ZSBjcmVh
dGVzIGEgbWVkaWFDb250cm9sbGVyOgorRVhQRUNURUQgKHZpZGVvMi5tZWRpYUdyb3VwID09ICdn
cm91cCcpIE9LCitFWFBFQ1RFRCAodmlkZW8yLm1lZGlhQ29udHJvbGxlciAhPSAnbnVsbCcpIE9L
CisKK1Rlc3QgdGhhdCBzZXR0aW5nIG1lZGlhR3JvdXAgdG8gYW4gZW1wdHkgc3RyaW5nIHJlbW92
ZXMgdGhlIG1lZGlhQ29udHJvbGxlcjoKK1JVTih2aWRlby5tZWRpYUdyb3VwID0gJycpCitFWFBF
Q1RFRCAodmlkZW8ubWVkaWFDb250cm9sbGVyID09ICdudWxsJykgT0sKKworVGVzdCBtYW51YWxs
eSBjcmVhdGluZyBhbmQgYXNzaWduaW5nIGEgbWVkaWFDb250cm9sbGVyIHRvIGEgbWVkaWEgZWxl
bWVudDoKK1JVTihjb250cm9sbGVyID0gbmV3IE1lZGlhQ29udHJvbGxlcigpKQorUlVOKHZpZGVv
Lm1lZGlhQ29udHJvbGxlciA9IGNvbnRyb2xsZXIpCitFWFBFQ1RFRCAodmlkZW8ubWVkaWFDb250
cm9sbGVyID09ICdbb2JqZWN0IE1lZGlhQ29udHJvbGxlcl0nKSBPSworCitUZXN0IHRoYXQgdHdv
IG1lZGlhIGVsZW1lbnRzIHdpdGggdGhlIHNhbWUgbWVkaWFHcm91cCBoYXZlIHRoZSBzYW1lIG1l
ZGlhQ29udHJvbGxlcjoKK1JVTih2aWRlby5tZWRpYUdyb3VwID0gJ2dyb3VwJykKK1JVTih2aWRl
bzIubWVkaWFHcm91cCA9ICdncm91cCcpCitFWFBFQ1RFRCAodmlkZW8ubWVkaWFDb250cm9sbGVy
ID09PSB2aWRlbzIubWVkaWFDb250cm9sbGVyID09ICd0cnVlJykgT0sKK0VORCBPRiBURVNUCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2st
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFj
ay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhhOGUwOTIxM2VlMWE3MTA3YjgxMWFiOWY4ODNh
ZDQwMTJhM2ZhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNv
bnRyb2xsZXItcGxheWJhY2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKKyAKK1JVTihj
b250cm9sbGVyID0gdmlkZW8ubWVkaWFDb250cm9sbGVyKQorRVZFTlQoY2FucGxheXRocm91Z2gp
CitSVU4oY29udHJvbGxlci5jdXJyZW50VGltZSA9IDUpCitFWFBFQ1RFRCAodmlkZW8uY3VycmVu
dFRpbWUgPT0gJzUnKSBPSworRVhQRUNURUQgKHZpZGVvMi5jdXJyZW50VGltZSA9PSAnNScpIE9L
CitSVU4odmlkZW8ucGxheSgpKQorUlVOKHZpZGVvMi5wbGF5KCkpCitSVU4oY29udHJvbGxlci5w
bGF5KCkpCitFVkVOVChwbGF5aW5nKQorRVhQRUNURUQgKGNvbnRyb2xsZXIucGF1c2VkID09ICdm
YWxzZScpIE9LCitFVkVOVChlbmRlZCkKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbCBiL0xheW91dFRlc3Rz
L21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzJiODNl
ZjFhYTg4OTZkN2MyMjA3ZjdhOTQ2NDkwZjNjY2Y1ZjJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay5odG1sCkBAIC0wLDAgKzEs
NDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPXZpZGVv
LXRlc3QuanM+PC9zY3JpcHQ+CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgdmFyIGNvbnRy
b2xsZXI7CisgICAgICAgIHZhciB2aWRlbzI7CisKKyAgICAgICAgZnVuY3Rpb24gc3RhcnQoKSB7
CisgICAgICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRl
bycpWzBdOworICAgICAgICAgICAgdmlkZW8yID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ3ZpZGVvJylbMV07CisgICAgICAgICAgICBydW4oJ2NvbnRyb2xsZXIgPSB2aWRlby5tZWRp
YUNvbnRyb2xsZXInKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcign
Y2FucGxheXRocm91Z2gnLCBjYW5wbGF5dGhyb3VnaCwgdHJ1ZSk7CisgICAgICAgICAgICBzZXRT
cmNCeVRhZ05hbWUoJ3ZpZGVvJywgZmluZE1lZGlhRmlsZSgndmlkZW8nLCAnY29udGVudC90ZXN0
JykpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBjYW5wbGF5dGhyb3Vn
aCgpIHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQoY2FucGxheXRocm91Z2gpIik7
CisgICAgICAgICAgICBjb250cm9sbGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NhbnBsYXl0aHJv
dWdoJywgY2FucGxheXRocm91Z2gsIHRydWUpOworICAgICAgICAgICAgcnVuKCdjb250cm9sbGVy
LmN1cnJlbnRUaW1lID0gNScpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5jdXJy
ZW50VGltZScsIDUpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlbzIuY3VycmVudFRp
bWUnLCA1KTsKKyAgICAgICAgICAgIHJ1bigndmlkZW8ucGxheSgpJyk7CisgICAgICAgICAgICBy
dW4oJ3ZpZGVvMi5wbGF5KCknKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuYWRkRXZlbnRMaXN0
ZW5lcigncGxheWluZycsIHBsYXlpbmcsIHRydWUpOworICAgICAgICAgICAgcnVuKCdjb250cm9s
bGVyLnBsYXkoKScpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBwbGF5
aW5nKCkgeyAKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQocGxheWluZykiKTsKKyAg
ICAgICAgICAgIGNvbnRyb2xsZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHBsYXlp
bmcsIHRydWUpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdjb250cm9sbGVyLnBhdXNlZCcs
IGZhbHNlKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcignZW5kZWQn
LCBlbmRlZCwgdHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBlbmRlZCgpIHsg
CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGVuZGVkKSIpOworICAgICAgICAgICAg
Y29udHJvbGxlci5yZW1vdmVFdmVudExpc3RlbmVyKCdlbmRlZCcsIGVuZGVkLCB0cnVlKTsKKyAg
ICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHZpZGVvIG1lZGlh
R3JvdXA9Imdyb3VwIiBjb250cm9scz48L3ZpZGVvPgorICAgICAgICA8dmlkZW8gbWVkaWFHcm91
cD0iZ3JvdXAiIGNvbnRyb2xzPjwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlh
LWNvbnRyb2xsZXIuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jMGU1OTY3NTRkNWFiYjFjM2U3ZWRmMTQyOWM2OTNhOGI4Nzg0ZmEwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci5odG1s
CkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAg
ICAgdmFyIGNvbnRyb2xsZXI7CisgICAgICAgIHZhciB2aWRlbzI7CisKKyAgICAgICAgZnVuY3Rp
b24gc3RhcnQoKSB7CisgICAgICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCd2aWRlbycpWzBdOworICAgICAgICAgICAgdmlkZW8yID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMV07CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
VGVzdCBwcmVzZW5jZSBvZiBNZWRpYUNvbnRyb2xsZXIgY29uc3RydWN0b3IsIG1lZGlhQ29udHJv
bGxlciwgYW5kIG1lZGlhR3JvdXAgYXR0cmlidXRlczoiKTsKKyAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgidHlwZW9mKE1lZGlhQ29udHJvbGxlcikiLCAib2JqZWN0Iik7CisgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciIsIG51bGwpOworICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRpYUdyb3VwIiwgIiIpOworICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCB0aGF0IHRoZSBwcmVz
ZW5jZSBvZiBhIG1lZGlhR3JvdXAgYXR0cmlidXRlIGNyZWF0ZXMgYSBtZWRpYUNvbnRyb2xsZXI6
IikKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8yLm1lZGlhR3JvdXAiLCAnZ3JvdXAn
KTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8yLm1lZGlhQ29udHJvbGxlciIsIG51
bGwsICIhPSIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiVGVzdCB0aGF0IHNldHRpbmcgbWVkaWFHcm91cCB0byBhbiBlbXB0eSBzdHJp
bmcgcmVtb3ZlcyB0aGUgbWVkaWFDb250cm9sbGVyOiIpCisgICAgICAgICAgICBydW4oInZpZGVv
Lm1lZGlhR3JvdXAgPSAnJyIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRp
YUNvbnRyb2xsZXIiLCBudWxsKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgbWFudWFsbHkgY3JlYXRpbmcgYW5kIGFzc2lnbmlu
ZyBhIG1lZGlhQ29udHJvbGxlciB0byBhIG1lZGlhIGVsZW1lbnQ6IikKKyAgICAgICAgICAgIHJ1
bigiY29udHJvbGxlciA9IG5ldyBNZWRpYUNvbnRyb2xsZXIoKSIpOworICAgICAgICAgICAgcnVu
KCJ2aWRlby5tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyIik7CisgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciIsIGNvbnRyb2xsZXIpOworICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCB0aGF0
IHR3byBtZWRpYSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIG1lZGlhR3JvdXAgaGF2ZSB0aGUgc2Ft
ZSBtZWRpYUNvbnRyb2xsZXI6IikKKyAgICAgICAgICAgIHJ1bigidmlkZW8ubWVkaWFHcm91cCA9
ICdncm91cCciKTsKKyAgICAgICAgICAgIHJ1bigidmlkZW8yLm1lZGlhR3JvdXAgPSAnZ3JvdXAn
Iik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciA9PT0g
dmlkZW8yLm1lZGlhQ29udHJvbGxlciIsIHRydWUpOworICAgICAgICAgICAgZW5kVGVzdCgpOwor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9InN0YXJ0KCkiPgorICAgICAgICA8dmlkZW8+PC92aWRlbz4KKyAgICAgICAgPHZpZGVvIG1l
ZGlhZ3JvdXA9Imdyb3VwIj48L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
bGlvbi9mYXN0L3JlZ2lvbnMvcmVuZGVyLXJlZ2lvbi1jdXN0b20tc3R5bGUtbWFyay1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbi9mYXN0L3JlZ2lvbnMvcmVuZGVy
LXJlZ2lvbi1jdXN0b20tc3R5bGUtbWFyay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY3NGVh
OWU0ZmE4NTBhOTM4NDNlM2NmOGRiYmE2NTRkYjM5MzA0NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy1saW9uL2Zhc3QvcmVnaW9ucy9yZW5kZXItcmVnaW9uLWN1
c3RvbS1zdHlsZS1tYXJrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM0IEBACitsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xh
eWVyIGF0ICgwLDApIHNpemUgODAweDE2NgorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkg
c2l6ZSA4MDB4MTY2CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4MTUw
CisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAyMDB4NTAKKyAgICAgIFJl
bmRlckJsb2NrIHtESVZ9IGF0ICgwLDUwKSBzaXplIDIwMHg1MAorICAgICAgUmVuZGVyUmVnaW9u
IHtESVZ9IGF0ICgwLDEwMCkgc2l6ZSAyMDB4NTAKK0Zsb3cgVGhyZWFkcworICBUaHJlYWQgd2l0
aCBmbG93LW5hbWUgJ2Zsb3cxJworICAgIGxheWVyIGF0ICgwLDApIHNpemUgMjAweDEwMAorICAg
ICAgUmVuZGVyRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDIwMHgxMDAKKyAgICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDAsMTYpIHNpemUgMjAweDE4OAorICAgICAgICAgIFJlbmRlckJsb2Nr
IHtQfSBhdCAoMCwwKSBzaXplIDIwMHgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgMTY4eDE4CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDE2ODogIkZpcnN0IHBhcmEgZ29lcyBpbnRvIHJlZ2lvbi4iCisgICAgICAgICAgUmVuZGVy
QmxvY2sgKGFub255bW91cykgYXQgKDAsMzQpIHNpemUgMjAweDE4CisgICAgICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMzR4MTgKKyAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMTM0OiAiVGV4dCBnb2VzIGludG8gcmVnaW9uIgorICAgICAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCw2OCkgc2l6ZSAyMDB4MTgKKyAgICAgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE4N3gxOAorICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCAxODc6ICJTZWNvbmQgcGFyYSBnb2VzIGludG8gcmVnaW9uLiIKKyAg
ICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMTAyKSBzaXplIDIwMHgxOAorICAgICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTc1eDE4CisgICAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE3NTogIlRoaXJkIHBhcmEgZ29lcyBpbnRvIHJlZ2lv
bi4iCisgICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMTM2KSBzaXplIDIw
MHgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTM0eDE4
CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEzNDogIlRleHQgZ29lcyBp
bnRvIHJlZ2lvbiIKKyAgICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMTcwKSBzaXplIDIw
MHgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTgyeDE4
CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE4MjogIkZvdXJ0aCBwYXJh
IGdvZXMgaW50byByZWdpb24uIgorICBSZWdpb25zIGZvciBmbG93ICdmbG93MScKKyAgICBSZW5k
ZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjEgcmVnaW9uIHN0eWxlOiAxCisgICAgUmVuZGVyUmVnaW9u
IHtESVZ9ICNyZWdpb24zIHJlZ2lvbiBzdHlsZTogMQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114093</attachid>
            <date>2011-11-08 09:31:47 -0800</date>
            <delta_ts>2011-11-08 09:52:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71408-20111108093146.patch</filename>
            <type>text/plain</type>
            <size>95618</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk1NzYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMmZmYzIwYjIxOWIyYjU1
NDczZWYzMmVhNWQyYWUxNzk0ZTIxN2MzLi43MTJhMWUxZTg4NmY1M2E0ZTA3ZjU5NTIzZDgyYmM1
ZGMxZDcwMWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU3IEBACisyMDExLTExLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNv
bnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbAorCisgICAgICAgIEFkZHMgc3VwcG9ydCBm
b3IgdGhlIE1lZGlhQ29udHJvbGxlciBET00gb2JqZWN0LCBhbmQgdGhlIG1lZGlhZ3JvdXAgYW5k
IG1lZGlhY29udHJvbGxlcgorICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGF0dHJpYnV0ZXMuCisK
KyAgICAgICAgTWVkaWFDb250cm9sbGVyIGlzIGFuIERPTSBvYmplY3Qgd2hpY2ggc3luY2hyb25p
emVzIHBsYXliYWNrIG9mIG11bHRpcGxlIEhUTUxNZWRpYUVsZW1lbnRzLiBJdCBjYW4KKyAgICAg
ICAgZWl0aGVyIGJlIGNyZWF0ZWQgYnkgYSBwYWdlIHNjcmlwdCBhbmQgYXNzaWduZWQgdG8gYSBI
VE1MTWVkaWFFbGVtZW50IHVzaW5nIHRoZSBtZWRpYUNvbnRyb2xsZXIgcHJvcGVydHksCisgICAg
ICAgIG9yIGFsbCBIVE1MTWVkaWFFbGVtZW50cyB3aXRoIGlkZW50aWNhbCBtZWRpYWdyb3VwIGF0
dHJpYnV0ZXMgd2lsbCBoYXZlIGEgTWVkaWFDb250cm9sbGVyIGFzc2lnbmVkIAorICAgICAgICBh
dXRvbWF0aWNhbGx5LgorCisgICAgICAgIEFkZCBhbiBhYnN0cmFjdCBpbnRlcmZhY2UgaW1wbGVt
ZW50ZWQgYnkgYm90aCBNZWRpYUNvbnRyb2xsZXIgYW5kIEhUTUxNZWRpYUVsZW1lbnQuCisgICAg
ICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U6On5NZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UpOgorCisgICAgICAgIEFkZCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCBhbmQgSURMLgor
ICAgICAgICAqIGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChtZWRp
YUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXApOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpt
ZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
Y3JlYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6TWVkaWFDb250cm9sbGVyKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6fk1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChNZWRp
YUNvbnRyb2xsZXI6OmFkZE1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnJlbW92ZU1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmNvbnRhaW5z
TWVkaWFFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6YnVmZmVyZWQpOgorICAg
ICAgICAoTWVkaWFDb250cm9sbGVyOjpzZWVrYWJsZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnBsYXllZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKToKKyAgICAg
ICAgKE1lZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnBsYXkpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpwYXVzZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnNldERlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpz
ZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZCk6CisgICAgICAgIChNZWRpYUNvbnRy
b2xsZXI6OnJlcG9ydENvbnRyb2xsZXJTdGF0ZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnVwZGF0ZVJlYWR5U3RhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjp1cGRhdGVQbGF5
YmFja1N0YXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlTWVkaWFFbGVtZW50
cyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnNjaGVkdWxlRXZlbnQpOgorICAgICAgICAo
TWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpoYXNBdWRpbyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Omhhc1ZpZGVvKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzQ2xvc2VkQ2FwdGlvbnMpOgorICAgICAgICAoTWVk
aWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUpOgorICAgICAgICAoTWVkaWFD
b250cm9sbGVyOjpzdXBwb3J0c1NjYW5uaW5nKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
YmVnaW5TY3J1YmJpbmcpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjplbmRTY3J1YmJpbmcp
OgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjYW5QbGF5KToKKyAgICAgICAgKE1lZGlhQ29u
dHJvbGxlcjo6aXNMaXZlU3RyZWFtKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzU291
cmNlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6cmV0dXJuVG9SZWFsdGltZSk6CisgICAg
ICAgIChNZWRpYUNvbnRyb2xsZXI6OmlzQmxvY2tlZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6Omhhc0VuZGVkKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6bWVkaWFHcm91cCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xsZXI6OmRlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sbGVyOjp2b2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpt
dXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnJlYWR5U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1N0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6c3VwcG9ydHNGdWxsc2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6aXNGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbGxlcjo6Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sbGVyOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbGxlcjo6dG9NZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sbGVyOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvTWVk
aWFDb250cm9sbGVyLmlkbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGNvbnZlbmllbmNlIGZ1bmN0
aW9ucyB0byBUaW1lUmFuZ2VzIHdoaWNoIGNhbiBjYWxjdWxhdGUgaW50ZXJzZWN0aW9ucyBhbmQK
KyAgICAgICAgdW5pb25zIGJldHdlZW4gVGltZVJhbmdlcyBvYmplY3RzLgorICAgICAgICAqIGh0
bWwvVGltZVJhbmdlcy5jcHA6CisgICAgICAgIChUaW1lUmFuZ2VzOjpjb3B5KToKKyAgICAgICAg
KFRpbWVSYW5nZXM6OmludmVydCk6CisgICAgICAgIChUaW1lUmFuZ2VzOjppbnRlcnNlY3RXaXRo
KToKKyAgICAgICAgKFRpbWVSYW5nZXM6OnVuaW9uV2l0aCk6CisgICAgICAgICogaHRtbC9UaW1l
UmFuZ2VzLmg6CisKKyAgICAgICAgQWRkIE1lZGlhQ29udHJvbGxlckNvbnN0cnVjdG9yIHRvIHRo
ZSBXaW5kb3cgb2JqZWN0LgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKworICAgICAg
ICBBZGQgdGhlIHR3byBuZXcgYXR0cmlidXRlIG5hbWVzLCBtZWRpYWdyb3VwIGFuZCBtZWRpYWNv
bnRyb2xsZXIuCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYXR0cmlidXRlcywgYW5kIGFkZCBvdmVycmlkZGVu
IGJlaGF2aW9yIHdoZW4gYSBtZWRpYSBlbGVtZW50CisgICAgICAgIGhhcyBhIGN1cnJlbnQgbWVk
aWEgY29udHJvbGxlcjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjplbmRlZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6dXNlckNhbmNlbGxlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRN
ZWRpYUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNv
bnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlTWVk
aWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzQmxv
Y2tlZE9uTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc1NvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0xpdmVTdHJlYW0pOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1M
TWVkaWFFbGVtZW50Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxN
ZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcik6CisKKyAgICAgICAgQWRkIGEgZnVuY3Rp
b24gInNlZWthYmxlIiB3aGljaCByZXR1cm5zIGEgVGltZVJhbmdlcyBjb250YWluaW5nIHRoZSBz
ZWVrYWJsZSB0aW1lIHJhbmdlcworICAgICAgICBpbiBhIG1lZGlhIGVsZW1lbnQuICBCeSBkZWZh
dWx0IHRoaXMgaXMgYSBzaW5nbGUgcmFuZ2Ugb2YgWzAsIG1heFRpbWVTZWVrYWJsZV0uCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OnNlZWthYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpz
ZWVrYWJsZSk6CisKKyAgICAgICAgU3VwcG9ydCBmdW5jdGlvbnMgdG8gY2FzdCBiZXR3ZWVuIE1l
ZGlhQ29udHJvbGxlciBhbmQgRXZlbnRUYXJnZXQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNF
dmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBkb20v
RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OnRvTWVkaWFD
b250cm9sbGVyKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKworICAgICAgICBCb2ls
ZXJwbGF0ZSB0byBzdXBwb3J0IGNyZWF0aW5nIHRoZSBkZXJpdmVkIHNvdXJjZXMgZm9yIE1lZGlh
Q29udHJvbGxlciBhbmQgYWRkaW5nIG5ldyBzb3VyY2VzCisgICAgICAgIHRvIHRoZSBwcm9qZWN0
OgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNw
cDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMS0xMS0wOCAgQW5kcmV5IEtvc3lha292ICA8
Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtFeHRlbnNpb24g
QVBJXVtDaHJvbWl1bV0gaW5qZWN0ZWQgZXh0ZW5zaW9uIEFQSSBuZWVkcyB0byByZXR1cm4gYW4g
b2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDdlMTUyOTc5YmJlMTg4MmQxOWRhZjBiNWZm
OWZjYjg5ODdiMmE1MmIuLmRiMjZkNzA0ODQ1NjQwZDZmMGExM2U4OWM1YmJkZDE3NDA2MzllMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yNzYsNiArMjc2LDcgQEAgU0VUKFdlYkNvcmVfSURM
X0ZJTEVTCiAgICAgaHRtbC9IVE1MVW5rbm93bkVsZW1lbnQuaWRsCiAgICAgaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmlkbAogICAgIGh0bWwvSW1hZ2VEYXRhLmlkbAorICAgIGh0bWwvTWVkaWFDb250
cm9sbGVyLmlkbAogICAgIGh0bWwvTWVkaWFFcnJvci5pZGwKICAgICBodG1sL1RleHRNZXRyaWNz
LmlkbAogICAgIGh0bWwvVGV4dFRyYWNrLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCmlu
ZGV4IGIzZjFlM2ZiOTk2ZTc5MDM5M2Q5ZmRjODZmNjkxYjhhNjE1M2QzZDYuLjU1ODc2MDkwNjY5
ZDI5ZTczNmMxYTg2ZDYyMDJiNzQyYjAyYzJmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5j
cHAKQEAgLTIyOCw2ICsyMjgsNyBAQAogI2luY2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHAiCiAjaW5jbHVkZSAiSlNLZXlib2FyZEV2ZW50LmNwcCIKICNpbmNsdWRlICJKU0xvY2F0aW9u
LmNwcCIKKyNpbmNsdWRlICJKU01lZGlhQ29udHJvbGxlci5jcHAiCiAjaW5jbHVkZSAiSlNNZWRp
YUVycm9yLmNwcCIKICNpbmNsdWRlICJKU01lZGlhTGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNNZWRp
YVF1ZXJ5TGlzdC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBlNjA3NGMx
ZWQ3NzEzNGU1YmNiZWE2YTk4YjVlMThkYzk5OGFhNzBmLi40ODQ5NTYyNzM1ZjNiNjAxZjRkZDk1
MDVlMTBhYjIxYjdhMjhiMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI3
Nyw2ICsyNzcsNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBLZXlib2FyZEV2ZW50IFwKICAgICBM
b2NhdGlvbiBcCiAgICAgTG93UGFzczJGaWx0ZXJOb2RlIFwKKyAgICBNZWRpYUNvbnRyb2xsZXIg
XAogICAgIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBcCiAgICAgTWVkaWFFcnJvciBcCiAg
ICAgTWVkaWFMaXN0IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LnByaSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCBjYWViNzk5ZTY3
NmQxMjBhNGU4OWNlODQwNDM3NDc1NzJjNGY3ZTk2Li5jNmY1MmU4MzdhN2UyZmZmMzE1MzMxNWE1
MWNlNDg2ODA1MTY3ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCkBAIC0zMTQsNiAr
MzE0LDcgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBodG1sL0hUTUxVbmtub3duRWxlbWVudC5p
ZGwgXAogICAgIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwgXAogICAgIGh0bWwvSW1hZ2VEYXRh
LmlkbCBcCisgICAgaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsIFwKICAgICBodG1sL01lZGlhRXJy
b3IuaWRsIFwKICAgICBodG1sL1RleHRNZXRyaWNzLmlkbCBcCiAgICAgaHRtbC9UaW1lUmFuZ2Vz
LmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxNTUzNDQyZTRiNDgyNWFm
YzE4Yzc5NTJlZWM0N2NlMGE2Yjk5ZWQ2Li44NjgxM2Y5MWFhM2JkZWFjYTZhMmE0OTlmZDcwNDE2
ZjljNWNmOGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM1OSw2ICszNTks
OCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNMb2NhbE1lZGlhU3RyZWFtLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNMb2NhdGlv
bi5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNMb2NhdGlvbi5oIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTTWVkaWFDb250cm9sbGVyLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU01lZGlhQ29udHJvbGxlci5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TWVkaWFFcnJvci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUVycm9yLmgg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUxpc3QuY3BwIFwKQEAgLTE4NzUsNiAr
MTg3Nyw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9MaW5r
UmVsQXR0cmlidXRlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2su
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmggXAorCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUNvbnRyb2xsZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmggXAogCVNvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGYwMjAxYjY1ZmY0MmYy
NTJhZTg1OWE5NWEyNDIzOTUxZmNmMGNiN2EuLjA1Y2M2N2U2OWI1YzllODViYjE2N2FmYWU1NWVj
MWMwNTdmYzQ1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTAyMiw2ICsxMDIyLDggQEAgU09VUkNFUyAr
PSBcCiAgICAgcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWREYXRlTm9uZS5jcHAgXAogICAgIHBsYXRm
b3JtL3RleHQvTG9jYWxpemVkTnVtYmVyTm9uZS5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvUXVv
dGVkUHJpbnRhYmxlLmNwcCBcCisgICAgcGxhdGZvcm0vQ2xvY2suY3BwIFwKKyAgICBwbGF0Zm9y
bS9DbG9ja0dlbmVyaWMuY3BwIFwKICAgICBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAgXAogICAg
IHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBcCiAgICAgcGxhdGZvcm0vRGF0ZUNvbXBv
bmVudHMuY3BwIFwKQEAgLTEwMzIsNyArMTAzNCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRm
b3JtL0ZpbGVJY29uTG9hZGVyLmNwcCBcCiAgICAgcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAgXAog
ICAgIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwIFwKLSAgICBwbGF0Zm9ybS9DbG9ja0dlbmVyaWMu
Y3BwIFwKICAgICBwbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuY3BwIFwKICAgICBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9xdC9JbWFnZUZyYW1lUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250RGVzY3JpcHRpb24uY3BwIFwKQEAgLTE4NjUsNiArMTg2Niw3IEBAIEhFQURFUlMg
Kz0gXAogICAgIGh0bWwvTGFiZWxzTm9kZUxpc3QuaCBcCiAgICAgaHRtbC9MaW5rUmVsQXR0cmli
dXRlLmggXAogICAgIGh0bWwvTG9hZGFibGVUZXh0VHJhY2suaCBcCisgICAgaHRtbC9NZWRpYUNv
bnRyb2xsZXIuaCBcCiAgICAgaHRtbC9NZWRpYURvY3VtZW50LmggXAogICAgIGh0bWwvTWljcm9E
YXRhSXRlbVZhbHVlLmggXAogICAgIGh0bWwvUGx1Z2luRG9jdW1lbnQuaCBcCkBAIC0yMDUyLDYg
KzIwNTQsOCBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9u
TGlzdC5oIFwKICAgICBwbGF0Zm9ybS9BcmVuYS5oIFwKICAgICBwbGF0Zm9ybS9Bc3luY0ZpbGVT
dHJlYW0uaCBcCisgICAgcGxhdGZvcm0vQ2xvY2suaCBcCisgICAgcGxhdGZvcm0vQ2xvY2tHZW5l
cmljLmggXAogICAgIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmggXAogICAgIHBsYXRmb3JtL0NvbnRl
eHRNZW51LmggXAogICAgIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmggXApAQCAtMjA3MCw3
ICsyMDc0LDYgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvblNl
cnZpY2VNb2NrLmggXAogICAgIHBsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgg
XAogICAgIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmggXAotICAgIHBsYXRmb3Jt
L0Nsb2NrR2VuZXJpYy5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQmxlbmQuaCBcCkBAIC0zMDg0LDYgKzMwODcsNyBAQCBjb250YWlucyhERUZJTkVT
LCBFTkFCTEVfVklERU89MSkgewogICAgICAgICBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIFwK
ICAgICAgICAgaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAgXAogICAgICAgICBodG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwIFwKKyAgICAgICAgaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwIFwKICAg
ICAgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIFwKICAgICAgICAgaHRt
bC9UaW1lUmFuZ2VzLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNTkzZWQ1OWFiMjI1OTFmODg4MGQ2NzFlMWI3YWE4
YmJhYTk4NzE2Mi4uNWZkMDQyODViOWJmYTI2Mzk2NmMxYmY2MTE2NWFhNjY2ZTU4OGJhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtMTMzMCw2ICsxMzMwLDcgQEAKICAgICAgICAgICAgICdodG1sL0hU
TUxVbmtub3duRWxlbWVudC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvSW1hZ2VEYXRhLmlkbCcsCisgICAgICAgICAgICAn
aHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsJywKICAgICAgICAgICAgICdodG1sL01lZGlhRXJyb3Iu
aWRsJywKICAgICAgICAgICAgICdodG1sL1RleHRNZXRyaWNzLmlkbCcsCiAgICAgICAgICAgICAn
aHRtbC9UZXh0VHJhY2suaWRsJywKQEAgLTU1OTQsNiArNTU5NSw4IEBACiAgICAgICAgICAgICAn
aHRtbC9MaW5rUmVsQXR0cmlidXRlLmgnLAogICAgICAgICAgICAgJ2h0bWwvTG9hZGFibGVUZXh0
VHJhY2suY3BwJywKICAgICAgICAgICAgICdodG1sL0xvYWRhYmxlVGV4dFRyYWNrLmgnLAorICAg
ICAgICAgICAgJ2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9N
ZWRpYUNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9NZWRpYURvY3VtZW50LmNwcCcs
CiAgICAgICAgICAgICAnaHRtbC9NZWRpYURvY3VtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwv
TWVkaWFFcnJvci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKaW5kZXggODlmNDU4MDY3NDliZmU2NzIwOTdmOTdmMzYzZTNlZTAxODQyNzJhZi4uZjc1
NWQ0OWZlNDkwNjU4NzNhYTM5M2FlNjY2MGJiMjdlNzExODU1MiAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTU3NTk0LDYgKzU3NTk0LDE0IEBA
CiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
TWVkaWFDb250cm9sbGVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5caHRtbFxNZWRpYUNvbnRyb2xsZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+
CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxNZWRpYURvY3VtZW50LmNwcCIK
IAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGJhOTQ0MTUwMjQ1YWM0YjI2NDcwNjNjZjcxZjA4MjM2
OTI1ZDdjYi4uMjlmNDBiZTIxYzkxN2QzNjRhYTE3NTU0N2ZlOTAxYTk0NGJkZGI5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NTcxMCwxNyArNTcxMCwyMiBAQAogCQlDRDBEQkZFRTE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0Nv
bXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXYgaW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwREJFMEQxNDIyNzU5NTAwMjgwMjYz
IC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUud2F2ICovOyB9OwogCQlDRDBEQkZF
RjE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXYg
aW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0QwREJFMEUxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1
X1AzMzAud2F2ICovOyB9OwogCQlDRDBEQkZGMDE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0NvbXBv
c2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXYgaW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwREJFMEYxNDIyNzU5NTAwMjgwMjYzIC8q
IElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzNDUud2F2ICovOyB9OworCQlDRDI3RjZFNTE0
NTc2ODVBMDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8q
IEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJQ0QyN0Y2RTcxNDU3NzBEMzAwNzgyMDdE
IC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDI3RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVy
LmNwcCAqLzsgfTsKIAkJQ0Q4MjAzMEExMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEODIwMzA2MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0Q4MjAzMEIxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgy
MDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSAq
Lzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby11bmRlZiI7IH07IH07CiAJCUNE
ODIwMzBDMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDgyMDMwODEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29u
dHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUNEODIwMzBEMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0Q4MjAzMDkxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdp
bmRvd0NvbnRyb2xsZXIubW0gKi87IH07CiAJCUNEODIwMzEwMTM5NUFDRTcwMEY5NTZDNiAvKiBX
ZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24u
aCAqLzsgfTsKIAkJQ0Q4MjAzMTExMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlv
bi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIw
MzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi87IH07CisJCUNE
RDUyNUQ3MTQ1QjZERDAwMDhEMjA0RCAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQ0MxNDVC
NkFGRTAwQzRDN0FBIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCUNE
RUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MkUxNDYwODRERTAwOEIz
MUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi87IH07CiAJCUNERUE3NjM0MTQ2MEI1NkYwMDhC
MzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RFQTc2MzIxNDYwQUUyOTAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5j
cHAgKi87IH07CiAJCUNERUE3NjM1MTQ2MEI3MUEwMDhCMzFGMSAvKiBDbG9jay5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBNzYzMzE0NjBCNDYy
MDA4QjMxRjEgLyogQ2xvY2suY3BwICovOyB9OwogCQlDREVBN0M4NDEyNzYyMzA0MDBCODQ2REQg
LyogUmVuZGVyRnVsbFNjcmVlbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RFQTdDODIxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4u
aCAqLzsgfTsKIAkJQ0RFQTdDODUxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTdD
ODMxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3BwICovOyB9OworCQlDREY2
NUNDODE0NUIxRTc1MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFNDE0NTc2Nzg3MDA3ODIwN0Qg
LyogTWVkaWFDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQ0RGNjVDQ0ExNDVCNDQ4ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxl
ckludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RGNjVDQzkxNDVCNDNBNzAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMDJG
MEM0MTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwMkYwQzMxMUU4M0FERDAwQzY2
ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UwNTdGQTUxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0UwNTdGQTYxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xMzAxOCw2ICsxMzAyMywxMSBAQAogCQlDRDBEQkUwRDE0MjI3NTk1MDAyODAyNjMgLyog
SVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBJUkNfQ29tcG9z
aXRlX0NfUjAxOTVfVDM0NV9QMzE1LndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNl
cy9JUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1Lndhdjsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OwogCQlDRDBEQkUwRTE0MjI3NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9D
X1IwMTk1X1QzNDVfUDMzMC53YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0
NV9QMzMwLndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9JUkNfQ29tcG9zaXRl
X0NfUjAxOTVfVDM0NV9QMzMwLndhdjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlD
RDBEQkUwRjE0MjI3NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0
NS53YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBh
dWRpby53YXY7IG5hbWUgPSBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzQ1LndhdjsgcGF0
aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9JUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9Q
MzQ1Lndhdjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlDRDI3RjZFMDE0NTc1QzFC
MDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYUNvbnRyb2xsZXIuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDI3RjZFMjE0NTc2NzU4MDA3ODIwN0Qg
LyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNNZWRpYUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRDI3RjZFMzE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUNvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyN0Y2RTQxNDU3Njc4NzAwNzgyMDdEIC8qIE1lZGlhQ29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyN0Y2RTYxNDU3NzBEMzAwNzgy
MDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEgLyogZnVsbHNjcmVlbi5jc3MgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW4uY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzA3MTM5
NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMDI2LDYgKzEzMDM2LDgg
QEAKIAkJQ0Q4MjAzMEUxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJXaW5kb3dBbmltYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4MjAzMEYxMzk1QUNFNzAwRjk1NkM2IC8qIFdl
YldpbmRvd0FuaW1hdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYldpbmRvd0FuaW1hdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0RCRDkzQkExMzMzQkQ0QjAwMjU3MEUzIC8qIGZ1bGxzY3JlZW5RdWlja1RpbWUuY3NzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzczsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDRTVDQ0YxNDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50RmFj
dG9yeS5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFdmVudEZhY3RvcnkuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQ0U1Q0QwMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudFRh
cmdldEZhY3RvcnkuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXZlbnRUYXJnZXRGYWN0b3J5
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBNzYyQzE0NjA4MjI0MDA4QjMx
RjEgLyogQ2xvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xvY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8q
IFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQbGF0Zm9ybUNsb2NrQ0EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVB
NzYyRjE0NjA4NEVFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ2xvY2tDQS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTMwMzQsNiArMTMwNDYsOCBAQAogCQlDREVBNzYzMzE0NjBCNDYyMDA4QjMx
RjEgLyogQ2xvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xv
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBN0M4MjEyNzYyMzA0MDBC
ODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJGdWxsU2NyZWVuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
RUE3QzgzMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZ1bGxTY3JlZW4uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEgLyogTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhQ29udHJvbGxlckludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REY2NUNDQzE0NUI2QUZFMDBDNEM3QUEgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE1lZGlhRWxlbWVudEN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDJGMEMzMTFFODNBREQw
MEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRDb250cm9sbGVyQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDU3RkE0
MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzM3Miw2ICsxNzM4NiwxMCBAQAogCQkJCUU0NDYx
M0EwMENENjMzMTAwMEZBREE3NSAvKiBWb2lkQ2FsbGJhY2suaWRsICovLAogCQkJCUY1NUIzREFC
MTI1MUYxMkQwMDNFRjI2OSAvKiBXZWVrSW5wdXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0RBQzEy
NTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0VHlwZS5oICovLAorCQkJCUNEMjdGNkUwMTQ1NzVD
MUIwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaWRsICovLAorCQkJCUNEMjdGNkU0MTQ1NzY3
ODcwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaCAqLywKKwkJCQlDRDI3RjZFNjE0NTc3MEQz
MDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCAqLywKKwkJCQlDREY2NUNDOTE0NUI0M0E3
MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggKi8sCiAJCQkpOwogCQkJcGF0
aCA9IGh0bWw7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTc2MDUsNiArMTc2MjMs
OCBAQAogCQlBODNCNzkwODBDQ0FGRjJCMDAwQjA4MjUgLyogSFRNTCAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdE
IC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLywKKwkJCQlDRDI3RjZFMzE0NTc2NzU4MDA3ODIw
N0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuaCAqLywKIAkJCQk0OUVFQ0VGMjEwNTA3MEM0MDAwOTlG
QUIgLyogSlNBcnJheUJ1ZmZlci5jcHAgKi8sCiAJCQkJNDlFRUNFRjMxMDUwNzBDNDAwMDk5RkFC
IC8qIEpTQXJyYXlCdWZmZXIuaCAqLywKIAkJCQk0OUVFQ0YxOTEwNTA3MkYzMDAwOTlGQUIgLyog
SlNBcnJheUJ1ZmZlclZpZXcuY3BwICovLApAQCAtMTk2MjcsNiArMTk2NDcsNyBAQAogCQkJCUJD
QzQzODc3MEU4ODZDQzcwMDUzM0RENSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwICov
LAogCQkJCUUxQUQxNDIyMTI5NUVBN0YwMEFDQTk4OSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0
b20uaCAqLywKIAkJCQlFMUFEMTM5QTEyOTVEOTI2MDBBQ0E5ODkgLyogSlNIVE1MTGlua0VsZW1l
bnRDdXN0b20uY3BwICovLAorCQkJCUNERjY1Q0NDMTQ1QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxN
ZWRpYUVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDMzA1Q0EzMEMwNzgxQkIwMENEMjBGMCAv
KiBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlFMUFEMTQyNDEyOTVFQTk1
MDBBQ0E5ODkgLyogSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5oICovLAogCQkJCTQ0OEFEMjdB
MEE0ODEzNzkwMDIzRDE3OSAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgKi8s
CkBAIC0yMDk0MCw2ICsyMDk2MSw4IEBACiAJCUY1MjNEMzI0MDJERTQ0NzgwMTg2MzVDQSAvKiBk
b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNEQ0U1
Q0NGMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudEZhY3RvcnkuaW4gKi8sCisJCQkJQ0RDRTVDRDAx
NDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50VGFyZ2V0RmFjdG9yeS5pbiAqLywKIAkJCQlFMUM0REU2
RDBFQTc1QzY1MDAyM0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0LmNwcCAqLywKIAkJCQlFMUM0REU2
ODBFQTc1QzFFMDAyM0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0LmggKi8sCiAJCQkJQThDNEE3RkMw
OUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuY3BwICovLApAQCAtMjQ2MzQsNiArMjQ2NTcsOCBAQAog
CQkJCUNBRTlGOTEwMTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NzZGMzZFQjE0Njg2MjI1MDA1RTkzQjQgLyogU2VjdXJpdHlDb250
ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTM0NDk2RTE0Njk0MUIzMDA3MjAzMTIgLyogU1ZH
TGVuZ3RoQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RGNjVDQzgxNDVCMUU3NTAwQzRD
N0FBIC8qIE1lZGlhQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RGNjVDQ0ExNDVC
NDQ4ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0yNzQ5MCw2ICsyNzUxNSw5IEBACiAJCQkJQ0FFOUY5MEYxNDY0NDFGMDAwQzI0NUIwIC8q
IENTU0FzcGVjdFJhdGlvVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2MzAxNDYw
OEE1MzAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
REVBNzYzNDE0NjBCNTZGMDA4QjMxRjEgLyogQ2xvY2tHZW5lcmljLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUNEMjdGNkU1MTQ1NzY4NUEwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDRDI3RjZFNzE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250
cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNERDUyNUQ3MTQ1QjZERDAwMDhEMjA0RCAv
KiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2
MzUxNDYwQjcxQTAwOEIzMUYxIC8qIENsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NkYz
NkVBMTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNzEzNDQ5NkQxNDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAppbmRleCAxYTM1MzdkMTM4YjY2MzEwNjVi
YTg3MGYyYmQxZjQ2NjdkYjFlNGJlLi4wMjM1OTQ5MmQ2NzVlMWZiMWEwOWUzNDFiM2RkODRiOTVk
MjExOTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRp
bWVFbmFibGVkRmVhdHVyZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVy
aWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKQEAgLTExMyw2ICsxMTMsMTEgQEAgYm9vbCBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sU291cmNlRWxlbWVudEVuYWJsZWQoKQogICAgIHJl
dHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKIH0KIAorYm9vbCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjptZWRpYUNvbnRyb2xsZXJFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OmlzQXZhaWxhYmxlKCk7Cit9CisKIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
bWVkaWFFcnJvckVuYWJsZWQoKQogewogICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFi
bGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggODAwMWI3YTcwZjM5MWE1NTVmZWNjNjA2MzRmMGRk
N2EwZjc2YTNkNi4uYzNhOWM2MDJlZDA3ZmVkOTU4MjM2YTBmMmNjNGYzMTU0OTYxMDVkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgKQEAgLTk0LDYgKzk0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29s
IGh0bWxBdWRpb0VsZW1lbnRFbmFibGVkKCk7CiAgICAgc3RhdGljIGJvb2wgaHRtbFZpZGVvRWxl
bWVudEVuYWJsZWQoKTsKICAgICBzdGF0aWMgYm9vbCBodG1sU291cmNlRWxlbWVudEVuYWJsZWQo
KTsKKyAgICBzdGF0aWMgYm9vbCBtZWRpYUNvbnRyb2xsZXJFbmFibGVkKCk7CiAgICAgc3RhdGlj
IGJvb2wgbWVkaWFFcnJvckVuYWJsZWQoKTsKICAgICBzdGF0aWMgYm9vbCB0aW1lUmFuZ2VzRW5h
YmxlZCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcAppbmRleCAwMDBjNWJmYTdmNDM0OTcxZmI3ZjQxMWMwNWQzMWJmNmNk
M2FjNTFjLi5jZmRkNjJiNTk3ODBjMDEyYjU2MGJkMTA2NzZjNGQ3ZjI3YTg5YjM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAg
LTkyLDYgKzkyLDcgQEAKICNpbmNsdWRlICJKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNI
VE1MTGlua0VsZW1lbnRDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTSFRNTE1lZGlhRWxlbWVudEN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAiCiAjaW5j
bHVkZSAiSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRN
TE91dHB1dEVsZW1lbnRDdXN0b20uY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTllZTZl
ZmIyZjcyYTE2NGQxODA2NzFiNWU4OTVjZmVmNmNmYTJlNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKQEAg
LTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlICJK
U0hUTUxNZWRpYUVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkpTTWVkaWFDb250cm9sbGVyLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBKU0hU
TUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIHZh
bHVlKQoreworICAgIEhUTUxNZWRpYUVsZW1lbnQqIGltcCA9IHN0YXRpY19jYXN0PEhUTUxNZWRp
YUVsZW1lbnQqPihpbXBsKCkpOworICAgIC8vIE9uIHNldHRpbmcsIGl0IG11c3QgZmlyc3QgcmVt
b3ZlIHRoZSBlbGVtZW50J3MgbWVkaWFncm91cCBhdHRyaWJ1dGUsIGlmIGFueSwgCisgICAgaW1w
LT5zZXRNZWRpYUdyb3VwKFN0cmluZygpKTsKKyAgICAvLyBhbmQgdGhlbiBzZXQgdGhlIGN1cnJl
bnQgbWVkaWEgY29udHJvbGxlciB0byB0aGUgZ2l2ZW4gdmFsdWUuCisgICAgaW1wLT5zZXRNZWRp
YUNvbnRyb2xsZXIodG9NZWRpYUNvbnRyb2xsZXIodmFsdWUpKTsKK30KKworfQorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IGM2ZjFmM2Q0NDNiODViNmY2NDIwY2VlYzk0YmVm
YjIyNzg2MmQ0NDYuLmJhZjBlZmM4OWQ0YWRlYWFiMzFjNzIzMzBmOGQxNWRlMTlkOTg4ZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC01NSw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDsKICAgICBjbGFzcyBKYXZh
U2NyaXB0QXVkaW9Ob2RlOwogICAgIGNsYXNzIExvY2FsTWVkaWFTdHJlYW07CisgICAgY2xhc3Mg
TWVkaWFDb250cm9sbGVyOwogICAgIGNsYXNzIE1lZGlhU3RyZWFtOwogICAgIGNsYXNzIE1lc3Nh
Z2VQb3J0OwogICAgIGNsYXNzIE5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFj
dG9yeS5pbgppbmRleCA2YmRiMmUyMWNhOTZiM2UxMGQzYmUxYzcxZWY3MzBkMjdmMDBkOTFkLi4y
YTM4OTAzNTdiYWY5ZTk2NmE3ZjEzNzE0ZDYxMGVmN2RlMTA4NGE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTEzLDYgKzEzLDcgQEAgSURCVHJhbnNhY3Rp
b24gY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qg
Y29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSmF2YVNjcmlwdEF1ZGlvTm9kZSBjb25kaXRp
b25hbD1XRUJfQVVESU8KIExvY2FsTWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
CitNZWRpYUNvbnRyb2xsZXIgY29uZGl0aW9uYWw9VklERU8KIE1lZGlhU3RyZWFtIGNvbmRpdGlv
bmFsPU1FRElBX1NUUkVBTQogTWVzc2FnZVBvcnQKIE5vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggZjFlMzU0YjYzMWY0OWJhM2FjMTAxZTU1MTNkMjc1
YWM1ZDJkMDk4Mi4uYWU1ZmI3MWNlZWU4NjQwOTgzNmZlMmQ1MDFlYzNmYTk5MGJhMzc1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTE0OCw2ICsxNDgs
NyBAQCBtYXgKIG1heGxlbmd0aAogbWF5c2NyaXB0CiBtZWRpYQorbWVkaWFncm91cAogbWV0aG9k
CiBtaW4KIG11bHRpcGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCBjOTA2NWY2OTFhOWMwY2FlOWU2ZWY2NDMyYjgxN2NmYzJiZDc5NzBmLi43MzEzMzg3Zjg3
NjJhMTI0YTVmN2E4MGE0YWUzOGVhYTQ3YzMyNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJIVE1MU291cmNl
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250
cm9scy5oIgogI2luY2x1ZGUgIk1lZGlhRG9jdW1lbnQuaCIKICNpbmNsdWRlICJNZWRpYUVycm9y
LmgiCkBAIC0yMjgsNiArMjI5LDkgQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1l
bnQoKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3Muc2l6ZSgpOyAr
K2kpCiAgICAgICAgIG1fdGV4dFRyYWNrc1tpXS0+c2V0Q2xpZW50KDApOwogI2VuZGlmCisKKyAg
ICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVkaWFDb250cm9sbGVyLT5yZW1v
dmVNZWRpYUVsZW1lbnQodGhpcyk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbE1v
dmVUb05ld093bmVyRG9jdW1lbnQoKQpAQCAtMjk0LDcgKzI5OCw5IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICBp
ZiAoIWF1dG9wbGF5KCkgJiYgbV9wbGF5ZXIpCiAgICAgICAgICAgICBtX3BsYXllci0+c2V0UHJl
bG9hZChtX3ByZWxvYWQpOwogCi0gICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmFib3J0QXR0
cikKKyAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IG1lZGlhZ3JvdXBBdHRyKQorICAgICAgICBz
ZXRNZWRpYUdyb3VwKGF0dHItPnZhbHVlKCkpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IG9u
YWJvcnRBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5hYm9ydEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsK
ICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmJlZm9yZWxvYWRBdHRyKQogICAgICAgICBzZXRB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVsb2FkRXZlbnQsIGNyZWF0
ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwpAQCAtNTg0LDEwICs1OTAsMTEg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCgpCiAgICAgICAgIG1fc2Vl
a2luZyA9IGZhbHNlOwogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVkVGltZSgpOwogICAgICAgICBz
Y2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5lbXB0aWVkRXZlbnQpOworICAgICAgICB1cGRhdGVN
ZWRpYUNvbnRyb2xsZXIoKTsKICAgICB9CiAKICAgICAvLyA1IC0gU2V0IHRoZSBwbGF5YmFja1Jh
dGUgYXR0cmlidXRlIHRvIHRoZSB2YWx1ZSBvZiB0aGUgZGVmYXVsdFBsYXliYWNrUmF0ZSBhdHRy
aWJ1dGUuCi0gICAgc2V0UGxheWJhY2tSYXRlKGRlZmF1bHRQbGF5YmFja1JhdGUoKSk7CisgICAg
c2V0UGxheWJhY2tSYXRlKG1fbWVkaWFDb250cm9sbGVyID8gbV9tZWRpYUNvbnRyb2xsZXItPmRl
ZmF1bHRQbGF5YmFja1JhdGUoKSA6IGRlZmF1bHRQbGF5YmFja1JhdGUoKSk7CiAKICAgICAvLyA2
IC0gU2V0IHRoZSBlcnJvciBhdHRyaWJ1dGUgdG8gbnVsbCBhbmQgdGhlIGF1dG9wbGF5aW5nIGZs
YWcgdG8gdHJ1ZS4KICAgICBtX2Vycm9yID0gMDsKQEAgLTEyMjQsNiArMTIzMSw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBz
dGF0ZSkKICAgICB9CiAKICAgICB1cGRhdGVQbGF5U3RhdGUoKTsKKyAgICB1cGRhdGVNZWRpYUNv
bnRyb2xsZXIoKTsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCkBAIC0xNTIzLDYgKzE1
MzEsMTAgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudFRpbWUoKSBjb25zdAogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRpbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogeworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikgeworICAgICAgICBlYyA9
IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIHNlZWsodGlt
ZSwgZWMpOwogfQogCkBAIC0xNTc0LDEzICsxNTg2LDE0IEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1l
bnQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBsYXli
YWNrUmF0ZShmbG9hdCByYXRlKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6
OnNldFBsYXliYWNrUmF0ZSglZikiLCByYXRlKTsKLQorICAgIAogICAgIGlmIChtX3BsYXliYWNr
UmF0ZSAhPSByYXRlKSB7CiAgICAgICAgIG1fcGxheWJhY2tSYXRlID0gcmF0ZTsKICAgICAgICAg
aW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVz
KCkucmF0ZWNoYW5nZUV2ZW50KTsKICAgICB9Ci0gICAgaWYgKG1fcGxheWVyICYmIHBvdGVudGlh
bGx5UGxheWluZygpICYmIG1fcGxheWVyLT5yYXRlKCkgIT0gcmF0ZSkKKworICAgIGlmIChtX3Bs
YXllciAmJiBwb3RlbnRpYWxseVBsYXlpbmcoKSAmJiBtX3BsYXllci0+cmF0ZSgpICE9IHJhdGUg
JiAhbV9tZWRpYUNvbnRyb2xsZXIpCiAgICAgICAgIG1fcGxheWVyLT5zZXRSYXRlKHJhdGUpOwog
fQogCkBAIC0xNjc2LDcgKzE2ODksMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50
ZXJuYWwoKQogICAgICAgICBFeGNlcHRpb25Db2RlIHVudXNlZDsKICAgICAgICAgc2VlaygwLCB1
bnVzZWQpOwogICAgIH0KLSAgICAKKworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKKyAgICAg
ICAgbV9tZWRpYUNvbnRyb2xsZXItPmJyaW5nRWxlbWVudFVwVG9TcGVlZCh0aGlzKTsKKwogICAg
IGlmIChtX3BhdXNlZCkgewogICAgICAgICBtX3BhdXNlZCA9IGZhbHNlOwogICAgICAgICBpbnZh
bGlkYXRlQ2FjaGVkVGltZSgpOwpAQCAtMTY5MCw2ICsxNzA2LDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpwbGF5SW50ZXJuYWwoKQogICAgIG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKIAogICAg
IHVwZGF0ZVBsYXlTdGF0ZSgpOworICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOwogfQogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlKCkKQEAgLTE4ODEsNyArMTg5OCw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6dG9nZ2xlUGxheVN0YXRlKCkKICAgICAvLyBXZSBjYW4gc2FmZWx5
IGNhbGwgdGhlIGludGVybmFsIHBsYXkvcGF1c2UgbWV0aG9kcywgd2hpY2ggZG9uJ3QgY2hlY2sg
cmVzdHJpY3Rpb25zLCBiZWNhdXNlCiAgICAgLy8gdGhpcyBtZXRob2QgaXMgb25seSBjYWxsZWQg
ZnJvbSB0aGUgYnVpbHQtaW4gbWVkaWEgY29udHJvbGxlcgogICAgIGlmIChjYW5QbGF5KCkpIHsK
LSAgICAgICAgc2V0UGxheWJhY2tSYXRlKGRlZmF1bHRQbGF5YmFja1JhdGUoKSk7CisgICAgICAg
IHNldFBsYXliYWNrUmF0ZShtX21lZGlhQ29udHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5k
ZWZhdWx0UGxheWJhY2tSYXRlKCkgOiBkZWZhdWx0UGxheWJhY2tSYXRlKCkpOwogICAgICAgICBw
bGF5SW50ZXJuYWwoKTsKICAgICB9IGVsc2UgCiAgICAgICAgIHBhdXNlSW50ZXJuYWwoKTsKQEAg
LTIyMjksMjAgKzIyNDYsMzMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRp
bWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKIAogICAgIGZsb2F0IG5vdyA9IGN1cnJlbnRUaW1lKCk7
CiAgICAgZmxvYXQgZHVyID0gZHVyYXRpb24oKTsKLSAgICBpZiAoIWlzbmFuKGR1cikgJiYgZHVy
ICYmIG5vdyA+PSBkdXIpIHsKLSAgICAgICAgaWYgKGxvb3AoKSkgeworICAgIAorICAgIC8vIFdo
ZW4gdGhlIGN1cnJlbnQgcGxheWJhY2sgcG9zaXRpb24gcmVhY2hlcyB0aGUgZW5kIG9mIHRoZSBt
ZWRpYSByZXNvdXJjZSB3aGVuIHRoZSBkaXJlY3Rpb24gb2YKKyAgICAvLyBwbGF5YmFjayBpcyBm
b3J3YXJkcywgdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0IGZvbGxvdyB0aGVzZSBzdGVwczoKKyAg
ICBpZiAoIWlzbmFuKGR1cikgJiYgZHVyICYmIG5vdyA+PSBkdXIgJiYgbV9wbGF5YmFja1JhdGUg
PiAwKSB7CisgICAgICAgIC8vIElmIHRoZSBtZWRpYSBlbGVtZW50IGhhcyBhIGxvb3AgYXR0cmli
dXRlIHNwZWNpZmllZCBhbmQgZG9lcyBub3QgaGF2ZSBhIGN1cnJlbnQgbWVkaWEgY29udHJvbGxl
ciwKKyAgICAgICAgaWYgKGxvb3AoKSAmJiAhbV9tZWRpYUNvbnRyb2xsZXIpIHsKICAgICAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbjsKICAgICAgICAgICAgIG1fc2VudEVu
ZEV2ZW50ID0gZmFsc2U7CisgICAgICAgICAgICAvLyAgdGhlbiBzZWVrIHRvIHRoZSBlYXJsaWVz
dCBwb3NzaWJsZSBwb3NpdGlvbiBvZiB0aGUgbWVkaWEgcmVzb3VyY2UgYW5kIGFib3J0IHRoZXNl
IHN0ZXBzLgogICAgICAgICAgICAgc2VlaygwLCBpZ25vcmVkRXhjZXB0aW9uKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIGlmICghbV9wYXVzZWQpIHsKKyAgICAgICAgICAgIC8vIElm
IHRoZSBtZWRpYSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBjdXJyZW50IG1lZGlhIGNvbnRyb2xs
ZXIsIGFuZCB0aGUgbWVkaWEgZWxlbWVudAorICAgICAgICAgICAgLy8gaGFzIHN0aWxsIGVuZGVk
IHBsYXliYWNrLCBhbmQgdGhlIGRpcmVjdGlvbiBvZiBwbGF5YmFjayBpcyBzdGlsbCBmb3J3YXJk
cywgYW5kIHBhdXNlZAorICAgICAgICAgICAgLy8gaXMgZmFsc2UsCisgICAgICAgICAgICBpZiAo
IW1fbWVkaWFDb250cm9sbGVyICYmICFtX3BhdXNlZCkgeworICAgICAgICAgICAgICAgIC8vIGNo
YW5nZXMgcGF1c2VkIHRvIHRydWUgYW5kIGZpcmVzIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHBhdXNl
IGF0IHRoZSBtZWRpYSBlbGVtZW50LgogICAgICAgICAgICAgICAgIG1fcGF1c2VkID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsK
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2lt
cGxlIGV2ZW50IG5hbWVkIGVuZGVkIGF0IHRoZSBtZWRpYSBlbGVtZW50LgogICAgICAgICAgICAg
aWYgKCFtX3NlbnRFbmRFdmVudCkgewogICAgICAgICAgICAgICAgIG1fc2VudEVuZEV2ZW50ID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5lbmRlZEV2
ZW50KTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIElmIHRoZSBtZWRpYSBlbGVtZW50
IGhhcyBhIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlciwgdGhlbiByZXBvcnQgdGhlIGNvbnRyb2xs
ZXIgc3RhdGUKKyAgICAgICAgICAgIC8vIGZvciB0aGUgbWVkaWEgZWxlbWVudCdzIGN1cnJlbnQg
bWVkaWEgY29udHJvbGxlci4KKyAgICAgICAgICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOwog
ICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKQEAgLTI0MjYsMTAgKzI0NTYsNyBAQCBQYXNzUmVm
UHRyPFRpbWVSYW5nZXM+IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXllZCgpCiAKIFBhc3NSZWZQdHI8
VGltZVJhbmdlcz4gSFRNTE1lZGlhRWxlbWVudDo6c2Vla2FibGUoKSBjb25zdAogewotICAgIC8v
IEZJWE1FIHJlYWwgcmFuZ2VzIHN1cHBvcnQKLSAgICBpZiAoIW1heFRpbWVTZWVrYWJsZSgpKQot
ICAgICAgICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIFRpbWVSYW5n
ZXM6OmNyZWF0ZShtaW5UaW1lU2Vla2FibGUoKSwgbWF4VGltZVNlZWthYmxlKCkpOworICAgIHJl
dHVybiBtX3BsYXllciA/IG1fcGxheWVyLT5zZWVrYWJsZSgpIDogVGltZVJhbmdlczo6Y3JlYXRl
KCk7CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cG90ZW50aWFsbHlQbGF5aW5nKCkgY29u
c3QKQEAgLTI0MzgsNyArMjQ2NSw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cG90ZW50aWFs
bHlQbGF5aW5nKCkgY29uc3QKICAgICAvLyB3aGVuIGl0IHJhbiBvdXQgb2YgYnVmZmVyZWQgZGF0
YS4gQSBtb3ZpZSBpcyB0aGlzIHN0YXRlIGlzICJwb3RlbnRpYWxseSBwbGF5aW5nIiwgbW9kdWxv
IHRoZQogICAgIC8vIGNoZWNrcyBpbiBjb3VsZFBsYXlJZkVub3VnaERhdGEoKS4KICAgICBib29s
IHBhdXNlZFRvQnVmZmVyID0gbV9yZWFkeVN0YXRlTWF4aW11bSA+PSBIQVZFX0ZVVFVSRV9EQVRB
ICYmIG1fcmVhZHlTdGF0ZSA8IEhBVkVfRlVUVVJFX0RBVEE7Ci0gICAgcmV0dXJuIChwYXVzZWRU
b0J1ZmZlciB8fCBtX3JlYWR5U3RhdGUgPj0gSEFWRV9GVVRVUkVfREFUQSkgJiYgY291bGRQbGF5
SWZFbm91Z2hEYXRhKCk7CisgICAgcmV0dXJuIChwYXVzZWRUb0J1ZmZlciB8fCBtX3JlYWR5U3Rh
dGUgPj0gSEFWRV9GVVRVUkVfREFUQSkgJiYgY291bGRQbGF5SWZFbm91Z2hEYXRhKCkgJiYgIWlz
QmxvY2tlZE9uTWVkaWFDb250cm9sbGVyKCk7CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6
Y291bGRQbGF5SWZFbm91Z2hEYXRhKCkgY29uc3QKQEAgLTI0NjAsMTAgKzI0ODcsMTEgQEAgYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjplbmRlZFBsYXliYWNrKCkgY29uc3QKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgLy8gYW5kIHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIGlzIHRo
ZSBlbmQgb2YgdGhlIG1lZGlhIHJlc291cmNlIGFuZCB0aGUgZGlyZWN0aW9uCi0gICAgLy8gb2Yg
cGxheWJhY2sgaXMgZm9yd2FyZHMgYW5kIHRoZSBtZWRpYSBlbGVtZW50IGRvZXMgbm90IGhhdmUg
YSBsb29wIGF0dHJpYnV0ZSBzcGVjaWZpZWQsCisgICAgLy8gb2YgcGxheWJhY2sgaXMgZm9yd2Fy
ZHMsIEVpdGhlciB0aGUgbWVkaWEgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgbG9vcCBhdHRyaWJ1
dGUgc3BlY2lmaWVkLAorICAgIC8vIG9yIHRoZSBtZWRpYSBlbGVtZW50IGhhcyBhIGN1cnJlbnQg
bWVkaWEgY29udHJvbGxlci4KICAgICBmbG9hdCBub3cgPSBjdXJyZW50VGltZSgpOwogICAgIGlm
IChtX3BsYXliYWNrUmF0ZSA+IDApCi0gICAgICAgIHJldHVybiBkdXIgPiAwICYmIG5vdyA+PSBk
dXIgJiYgIWxvb3AoKTsKKyAgICAgICAgcmV0dXJuIGR1ciA+IDAgJiYgbm93ID49IGR1ciAmJiAo
IWxvb3AoKSB8fCBtX21lZGlhQ29udHJvbGxlcik7CiAKICAgICAvLyBvciB0aGUgY3VycmVudCBw
bGF5YmFjayBwb3NpdGlvbiBpcyB0aGUgZWFybGllc3QgcG9zc2libGUgcG9zaXRpb24gYW5kIHRo
ZSBkaXJlY3Rpb24gCiAgICAgLy8gb2YgcGxheWJhY2sgaXMgYmFja3dhcmRzCkBAIC0yNTA5LDgg
KzI1MzcsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVWb2x1bWUoKQogICAgIGlm
ICghcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKSkgewogICAgICAgICBQYWdlKiBwYWdl
ID0gZG9jdW1lbnQoKS0+cGFnZSgpOwogICAgICAgICBmbG9hdCB2b2x1bWVNdWx0aXBsaWVyID0g
cGFnZSA/IHBhZ2UtPm1lZGlhVm9sdW1lKCkgOiAxOwotICAgIAotICAgICAgICBtX3BsYXllci0+
c2V0TXV0ZWQobV9tdXRlZCk7CisgICAgICAgIGJvb2wgc2hvdWxkTXV0ZSA9IG1fbXV0ZWQ7CisK
KyAgICAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKSB7CisgICAgICAgICAgICB2b2x1bWVNdWx0
aXBsaWVyICo9IG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKTsKKyAgICAgICAgICAgIHNob3Vs
ZE11dGUgPSBtX21lZGlhQ29udHJvbGxlci0+bXV0ZWQoKTsKKyAgICAgICAgfQorCisgICAgICAg
IG1fcGxheWVyLT5zZXRNdXRlZChzaG91bGRNdXRlKTsKICAgICAgICAgbV9wbGF5ZXItPnNldFZv
bHVtZShtX3ZvbHVtZSAqIHZvbHVtZU11bHRpcGxpZXIpOwogICAgIH0KIApAQCAtMjU3NywxMSAr
MjYxMSwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSgpCiAgICAg
ICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgICAgICBtZWRpYUNvbnRyb2xzKCkt
PnBsYXliYWNrU3RvcHBlZCgpOwogICAgIH0KLSAgICAKKworICAgIHVwZGF0ZU1lZGlhQ29udHJv
bGxlcigpOworCiAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0
ZUZyb21FbGVtZW50KCk7CiB9Ci0gICAgCisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGF1
c2VkSW50ZXJuYWwoYm9vbCBiKQogewogICAgIG1fcGF1c2VkSW50ZXJuYWwgPSBiOwpAQCAtMjY0
MSw2ICsyNjc3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9hZCgp
CiAKICAgICAvLyBSZXNldCBtX3JlYWR5U3RhdGUgc2luY2UgbV9wbGF5ZXIgaXMgZ29uZS4KICAg
ICBtX3JlYWR5U3RhdGUgPSBIQVZFX05PVEhJTkc7CisgICAgdXBkYXRlTWVkaWFDb250cm9sbGVy
KCk7CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y2FuU3VzcGVuZCgpIGNvbnN0CkBAIC0z
MTMzLDYgKzMxNzAsNzIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRJdGVtVmFsdWVUZXh0
KGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogfQogI2VuZGlmCiAKK2Nv
bnN0IFN0cmluZyYgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFHcm91cCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fbWVkaWFDb250cm9sbGVyID8gbV9tZWRpYUNvbnRyb2xsZXItPm1lZGlhR3JvdXAo
KSA6IGVtcHR5U3RyaW5nKCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFH
cm91cChjb25zdCBTdHJpbmcmIGdyb3VwKQoreworICAgIGlmIChtX21lZGlhQ29udHJvbGxlciAm
JiBtX21lZGlhQ29udHJvbGxlci0+bWVkaWFHcm91cCgpID09IGdyb3VwKQorICAgICAgICByZXR1
cm47CisKKyAgICBzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVyOjptZWRpYUNvbnRy
b2xsZXJGb3JNZWRpYUdyb3VwKGdyb3VwKSk7Cit9CisKK01lZGlhQ29udHJvbGxlciogSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFDb250cm9sbGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRp
YUNvbnRyb2xsZXIuZ2V0KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFD
b250cm9sbGVyKFBhc3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBjb250cm9sbGVyKQoreworICAg
IGlmIChtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgbV9tZWRpYUNvbnRyb2xsZXItPnJlbW92
ZU1lZGlhRWxlbWVudCh0aGlzKTsKKworICAgIG1fbWVkaWFDb250cm9sbGVyID0gY29udHJvbGxl
cjsKKworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgbV9tZWRpYUNvbnRyb2xs
ZXItPmFkZE1lZGlhRWxlbWVudCh0aGlzKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1
cGRhdGVNZWRpYUNvbnRyb2xsZXIoKQoreworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKKyAg
ICAgICAgbV9tZWRpYUNvbnRyb2xsZXItPnJlcG9ydENvbnRyb2xsZXJTdGF0ZSgpOworfQorCiti
b29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzQmxvY2tlZCgpIGNvbnN0Cit7CisgICAgLy8gQSBtZWRp
YSBlbGVtZW50IGlzIGEgYmxvY2tlZCBtZWRpYSBlbGVtZW50IGlmIGl0cyByZWFkeVN0YXRlIGF0
dHJpYnV0ZSBpcyBpbiB0aGUKKyAgICAvLyBIQVZFX05PVEhJTkcgc3RhdGUsIHRoZSBIQVZFX01F
VEFEQVRBIHN0YXRlLCBvciB0aGUgSEFWRV9DVVJSRU5UX0RBVEEgc3RhdGUsCisgICAgaWYgKG1f
cmVhZHlTdGF0ZSA8PSBIQVZFX0NVUlJFTlRfREFUQSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAvLyBvciBpZiB0aGUgZWxlbWVudCBoYXMgcGF1c2VkIGZvciB1c2VyIGludGVyYWN0aW9u
LgorICAgIHJldHVybiBwYXVzZWRGb3JVc2VySW50ZXJhY3Rpb24oKTsKK30KKworYm9vbCBIVE1M
TWVkaWFFbGVtZW50Ojppc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigpIGNvbnN0Cit7CisgICAg
aWYgKCFtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
QSBtZWRpYSBlbGVtZW50IGlzIGJsb2NrZWQgb24gaXRzIG1lZGlhIGNvbnRyb2xsZXIgaWYgdGhl
IE1lZGlhQ29udHJvbGxlciBpcyBhIGJsb2NrZWQgCisgICAgLy8gbWVkaWEgY29udHJvbGxlciwK
KyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPmlzQmxvY2tlZCgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIC8vIG9yIGlmIGl0cyBtZWRpYSBjb250cm9sbGVyIHBvc2l0aW9uIGlzIGVp
dGhlciBiZWZvcmUgdGhlIG1lZGlhIHJlc291cmNlJ3MgZWFybGllc3QgcG9zc2libGUgCisgICAg
Ly8gcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIE1lZGlhQ29udHJvbGxlcidzIHRpbWVsaW5lIG9y
IGFmdGVyIHRoZSBlbmQgb2YgdGhlIG1lZGlhIHJlc291cmNlIAorICAgIC8vIHJlbGF0aXZlIHRv
IHRoZSBNZWRpYUNvbnRyb2xsZXIncyB0aW1lbGluZS4KKyAgICBmbG9hdCBtZWRpYUNvbnRyb2xs
ZXJQb3NpdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgIGlmICht
ZWRpYUNvbnRyb2xsZXJQb3NpdGlvbiA8IHN0YXJ0VGltZSgpIHx8IG1lZGlhQ29udHJvbGxlclBv
c2l0aW9uID4gc3RhcnRUaW1lKCkgKyBkdXJhdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIHJldHVybiBmYWxzZTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMGQyZjlmYzQ5ZTEwMGNiNTE3YmVmMGQxNTBhYzRmNzdh
NTc1ZTllYy4uZjgwOWU2ZWU3Zjk5MDc1YmIyMTA3M2NmN2RlNmNhNGJiZDlmNDU5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1
ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlcklu
dGVyZmFjZS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAKICNpZiBFTkFCTEUoUExVR0lO
X1BST1hZX0ZPUl9WSURFTykKQEAgLTUwLDYgKzUxLDcgQEAgY2xhc3MgTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBIVE1MU291cmNlRWxlbWVudDsKIGNs
YXNzIEhUTUxUcmFja0VsZW1lbnQ7CitjbGFzcyBNZWRpYUNvbnRyb2xsZXI7CiBjbGFzcyBNZWRp
YUNvbnRyb2xzOwogY2xhc3MgTWVkaWFFcnJvcjsKIGNsYXNzIEtVUkw7CkBAIC02Myw3ICs2NSw3
IEBAIGNsYXNzIFdpZGdldDsKIC8vIEJ1dCBpdCBjYW4ndCBiZSB1bnRpbCB0aGUgQ2hyb21pdW0g
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsIGNsYXNzIGlzIGZpeGVkIHNvIGl0CiAvLyBubyBsb25n
ZXIgZGVwZW5kcyBvbiB0eXBlY2FzdGluZyBhIE1lZGlhUGxheWVyQ2xpZW50IHRvIGFuIEhUTUxN
ZWRpYUVsZW1lbnQuCiAKLWNsYXNzIEhUTUxNZWRpYUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1l
bnQsIHB1YmxpYyBNZWRpYVBsYXllckNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQgOiBwdWJs
aWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBNZWRpYVBsYXllckNsaWVudCwgcHJpdmF0ZSBNZWRpYUNh
blN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBNZWRpYUNvbnRy
b2xsZXJJbnRlcmZhY2UKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLCBwcml2YXRlIFRl
eHRUcmFja0NsaWVudAogI2VuZGlmCkBAIC0xMDUsNyArMTA3LDcgQEAgcHVibGljOgogCiAgICAg
ZW51bSBOZXR3b3JrU3RhdGUgeyBORVRXT1JLX0VNUFRZLCBORVRXT1JLX0lETEUsIE5FVFdPUktf
TE9BRElORywgTkVUV09SS19OT19TT1VSQ0UgfTsKICAgICBOZXR3b3JrU3RhdGUgbmV0d29ya1N0
YXRlKCkgY29uc3Q7Ci0gICAgCisKICAgICBTdHJpbmcgcHJlbG9hZCgpIGNvbnN0OyAgICAKICAg
ICB2b2lkIHNldFByZWxvYWQoY29uc3QgU3RyaW5nJik7CiAKQEAgLTExNCw3ICsxMTYsNiBAQCBw
dWJsaWM6CiAgICAgU3RyaW5nIGNhblBsYXlUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNv
bnN0OwogCiAvLyByZWFkeSBzdGF0ZQotICAgIGVudW0gUmVhZHlTdGF0ZSB7IEhBVkVfTk9USElO
RywgSEFWRV9NRVRBREFUQSwgSEFWRV9DVVJSRU5UX0RBVEEsIEhBVkVfRlVUVVJFX0RBVEEsIEhB
VkVfRU5PVUdIX0RBVEEgfTsKICAgICBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKICAg
ICBib29sIHNlZWtpbmcoKSBjb25zdDsKIApAQCAtMjMwLDYgKzIzMSwxMiBAQCBwdWJsaWM6CiAg
ICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpOwogI2VuZGlmCiAK
KyAgICBjb25zdCBTdHJpbmcmIG1lZGlhR3JvdXAoKSBjb25zdDsKKyAgICB2b2lkIHNldE1lZGlh
R3JvdXAoY29uc3QgU3RyaW5nJik7CisKKyAgICBNZWRpYUNvbnRyb2xsZXIqIG1lZGlhQ29udHJv
bGxlcigpIGNvbnN0OworICAgIHZvaWQgc2V0TWVkaWFDb250cm9sbGVyKFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sbGVyPik7CisKIHByb3RlY3RlZDoKICAgICBIVE1MTWVkaWFFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkhUTUxNZWRpYUVsZW1l
bnQoKTsKQEAgLTM5NCw2ICs0MDEsOCBAQCBwcml2YXRlOgogICAgIC8vIFBhdXNlcyBwbGF5YmFj
ayB3aXRob3V0IGNoYW5naW5nIGFueSBzdGF0ZXMgb3IgZ2VuZXJhdGluZyBldmVudHMKICAgICB2
b2lkIHNldFBhdXNlZEludGVybmFsKGJvb2wpOwogCisgICAgdm9pZCBzZXRQbGF5YmFja1JhdGVJ
bnRlcm5hbChmbG9hdCk7CisKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFDYW5TdGFydCgpOwogCiAg
ICAgdm9pZCBzZXRTaG91bGREZWxheUxvYWRFdmVudChib29sKTsKQEAgLTQxMiw2ICs0MjEsMTIg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXRlbVZhbHVlVGV4dChjb25zdCBTdHJp
bmcmLCBFeGNlcHRpb25Db2RlJik7CiAjZW5kaWYKIAorICAgIHZvaWQgdXBkYXRlTWVkaWFDb250
cm9sbGVyKCk7CisgICAgYm9vbCBpc0Jsb2NrZWQoKSBjb25zdDsKKyAgICBib29sIGlzQmxvY2tl
ZE9uTWVkaWFDb250cm9sbGVyKCkgY29uc3Q7CisgICAgYm9vbCBoYXNTb3VyY2UoKSBjb25zdCB7
IHJldHVybiBtX25ldHdvcmtTdGF0ZSAhPSBORVRXT1JLX0VNUFRZIHx8IG1fbmV0d29ya1N0YXRl
ICE9IE5FVFdPUktfTk9fU09VUkNFOyB9CisgICAgYm9vbCBpc0xpdmVTdHJlYW0oKSBjb25zdCB7
IHJldHVybiBtb3ZpZUxvYWRUeXBlKCkgPT0gTWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW07IH0KKwog
ICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fbG9hZFRpbWVyOwogICAgIFRpbWVyPEhUTUxN
ZWRpYUVsZW1lbnQ+IG1fYXN5bmNFdmVudFRpbWVyOwogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1l
bnQ+IG1fcHJvZ3Jlc3NFdmVudFRpbWVyOwpAQCAtNTE2LDYgKzUzMSw5IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1f
dGV4dFRyYWNrczsKICNlbmRpZgorCisgICAgZnJpZW5kIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsK
KyAgICBSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBtX21lZGlhQ29udHJvbGxlcjsKIH07CiAKIH0g
Ly9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCmluZGV4
IDMzMGFkYmFhZGU3MTAyNjljMmYyZGU1ZWVjNWNjMWUxNjJiMGM5YjUuLjQ5MjEwYjYyMDI3MjM3
MWU0NWFhYjlmYWIxOTFiZjYxMDA0M2NlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmlkbApAQCAtMTE0LDUgKzExNCw4IEBAIG1vZHVsZSBodG1sIHsKICNpZiBkZWZp
bmVkKEVOQUJMRV9WSURFT19UUkFDSykgJiYgRU5BQkxFX1ZJREVPX1RSQUNLCiAgICAgW0VuYWJs
ZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10gVGV4dFRyYWNrIGFkZFRyYWNrKGluIERPTVN0
cmluZyBraW5kLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBsYWJlbCwgaW4gW09wdGlvbmFsXSBE
T01TdHJpbmcgbGFuZ3VhZ2UpOwogI2VuZGlmCisKKyAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsIENv
bnZlcnROdWxsVG9OdWxsU3RyaW5nLCBDb252ZXJ0TnVsbFN0cmluZ1RvTnVsbF0gRE9NU3RyaW5n
IG1lZGlhR3JvdXA7CisgICAgYXR0cmlidXRlIFtDdXN0b21TZXR0ZXJdIE1lZGlhQ29udHJvbGxl
ciBtZWRpYUNvbnRyb2xsZXI7CiB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xs
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNhYmIzMmRmNTk1MThhNWU4MzQzOGUwNzQ4OGQ4ZTFiYzMyMmE3
MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxl
ci5jcHAKQEAgLTAsMCArMSw1OTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVyLmgiCisKKyNpbmNs
dWRlICJDbG9jay5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJU
aW1lUmFuZ2VzLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5n
IG5hbWVzcGFjZSBzdGQ7CisKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIE1lZGlhQ29udHJvbGxl
cio+IEdyb3VwQ29udHJvbGxlck1hcDsKK3N0YXRpYyBHcm91cENvbnRyb2xsZXJNYXAmIG1lZGlh
R3JvdXBUb01lZGlhQ29udHJvbGxlck1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChH
cm91cENvbnRyb2xsZXJNYXAsIG1hcCwgKCkpOworICAgIHJldHVybiBtYXA7Cit9CisKK1Bhc3NS
ZWZQdHI8TWVkaWFDb250cm9sbGVyPiBNZWRpYUNvbnRyb2xsZXI6Om1lZGlhQ29udHJvbGxlckZv
ck1lZGlhR3JvdXAoY29uc3QgU3RyaW5nJiBncm91cCkKK3sKKyAgICBpZiAoZ3JvdXAuaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGdyb3VwLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBpZiAoTWVkaWFDb250cm9sbGVyKiBjb250cm9sbGVyID0gbWVk
aWFHcm91cFRvTWVkaWFDb250cm9sbGVyTWFwKCkuZ2V0KGdyb3VwKSkKKyAgICAgICAgcmV0dXJu
IGNvbnRyb2xsZXI7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBjb250cm9sbGVyID0g
Y3JlYXRlKCk7CisgICAgY29udHJvbGxlci0+bV9tZWRpYUdyb3VwID0gZ3JvdXA7CisgICAgbWVk
aWFHcm91cFRvTWVkaWFDb250cm9sbGVyTWFwKCkuc2V0KGdyb3VwLCBjb250cm9sbGVyLmdldCgp
KTsKKyAgICByZXR1cm4gY29udHJvbGxlci5yZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8TWVk
aWFDb250cm9sbGVyPiBNZWRpYUNvbnRyb2xsZXI6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xsZXIoKSk7Cit9CisKK01lZGlhQ29udHJvbGxlcjo6TWVk
aWFDb250cm9sbGVyKCkKKyAgICA6IG1fcGF1c2VkKGZhbHNlKQorICAgICwgbV9kZWZhdWx0UGxh
eWJhY2tSYXRlKDEpCisgICAgLCBtX3ZvbHVtZSgxKQorICAgICwgbV9tdXRlZChmYWxzZSkKKyAg
ICAsIG1fcmVhZHlTdGF0ZShIQVZFX05PVEhJTkcpCisgICAgLCBtX3BsYXliYWNrU3RhdGUoV0FJ
VElORykKKyAgICAsIG1fYXN5bmNFdmVudFRpbWVyKHRoaXMsICZNZWRpYUNvbnRyb2xsZXI6OmFz
eW5jRXZlbnRUaW1lckZpcmVkKQorICAgICwgbV9jbG9zZWRDYXB0aW9uc1Zpc2libGUoZmFsc2Up
CisgICAgLCBtX2Nsb2NrKENsb2NrOjpjcmVhdGUoKSkKK3sKK30KKworTWVkaWFDb250cm9sbGVy
Ojp+TWVkaWFDb250cm9sbGVyKCkKK3sKKyAgICBpZiAoIW1fbWVkaWFHcm91cC5pc0VtcHR5KCkp
CisgICAgICAgIG1lZGlhR3JvdXBUb01lZGlhQ29udHJvbGxlck1hcCgpLnJlbW92ZShtX21lZGlh
R3JvdXApOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6YWRkTWVkaWFFbGVtZW50KEhUTUxN
ZWRpYUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIEFTU0VS
VCghbV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKGVsZW1lbnQpKTsKKworICAgIG1fbWVkaWFFbGVt
ZW50cy5hcHBlbmQoZWxlbWVudCk7CisgICAgYnJpbmdFbGVtZW50VXBUb1NwZWVkKGVsZW1lbnQp
OworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6cmVtb3ZlTWVkaWFFbGVtZW50KEhUTUxNZWRp
YUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIEFTU0VSVCht
X21lZGlhRWxlbWVudHMuY29udGFpbnMoZWxlbWVudCkpOworICAgIG1fbWVkaWFFbGVtZW50cy5y
ZW1vdmUobV9tZWRpYUVsZW1lbnRzLmZpbmQoZWxlbWVudCkpOworfQorCitib29sIE1lZGlhQ29u
dHJvbGxlcjo6Y29udGFpbnNNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKGVsZW1lbnQpOwor
fQorCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhQ29udHJvbGxlcjo6YnVmZmVyZWQoKSBj
b25zdAoreworICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisKKyAgICAvLyBUaGUgYnVmZmVyZWQgYXR0cmlidXRl
IG11c3QgcmV0dXJuIGEgbmV3IHN0YXRpYyBub3JtYWxpemVkIFRpbWVSYW5nZXMgb2JqZWN0IHRo
YXQgcmVwcmVzZW50cyAKKyAgICAvLyB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSByYW5nZXMgb2Yg
dGhlIG1lZGlhIHJlc291cmNlcyBvZiB0aGUgc2xhdmVkIG1lZGlhIGVsZW1lbnRzIHRoYXQgdGhl
IAorICAgIC8vIHVzZXIgYWdlbnQgaGFzIGJ1ZmZlcmVkLCBhdCB0aGUgdGltZSB0aGUgYXR0cmli
dXRlIGlzIGV2YWx1YXRlZC4KKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWRSYW5nZXMg
PSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+YnVmZmVyZWQoKTsKKyAgICBmb3IgKHNpemVfdCBp
bmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAg
ICAgYnVmZmVyZWRSYW5nZXMtPmludGVyc2VjdFdpdGgobV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+
YnVmZmVyZWQoKS5nZXQoKSk7CisgICAgcmV0dXJuIGJ1ZmZlcmVkUmFuZ2VzOworfQorCitQYXNz
UmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhQ29udHJvbGxlcjo6c2Vla2FibGUoKSBjb25zdAorewor
ICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gVGltZVJh
bmdlczo6Y3JlYXRlKCk7CisKKyAgICAvLyBUaGUgc2Vla2FibGUgYXR0cmlidXRlIG11c3QgcmV0
dXJuIGEgbmV3IHN0YXRpYyBub3JtYWxpemVkIFRpbWVSYW5nZXMgb2JqZWN0IHRoYXQgcmVwcmVz
ZW50cworICAgIC8vIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIHJhbmdlcyBvZiB0aGUgbWVkaWEg
cmVzb3VyY2VzIG9mIHRoZSBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgdGhhdCB0aGUKKyAgICAvLyB1
c2VyIGFnZW50IGlzIGFibGUgdG8gc2VlayB0bywgYXQgdGhlIHRpbWUgdGhlIGF0dHJpYnV0ZSBp
cyBldmFsdWF0ZWQuCisgICAgUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlUmFuZ2VzID0gbV9t
ZWRpYUVsZW1lbnRzLmZpcnN0KCktPnNlZWthYmxlKCk7CisgICAgZm9yIChzaXplX3QgaW5kZXgg
PSAxOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIHNl
ZWthYmxlUmFuZ2VzLT5pbnRlcnNlY3RXaXRoKG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnNlZWth
YmxlKCkuZ2V0KCkpOworICAgIHJldHVybiBzZWVrYWJsZVJhbmdlczsKK30KKworUGFzc1JlZlB0
cjxUaW1lUmFuZ2VzPiBNZWRpYUNvbnRyb2xsZXI6OnBsYXllZCgpCit7CisgICAgaWYgKG1fbWVk
aWFFbGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUo
KTsKKworICAgIC8vIFRoZSBwbGF5ZWQgYXR0cmlidXRlIG11c3QgcmV0dXJuIGEgbmV3IHN0YXRp
YyBub3JtYWxpemVkIFRpbWVSYW5nZXMgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyAKKyAgICAvLyB0
aGUgdW5pb24gb2YgdGhlIHJhbmdlcyBvZiB0aGUgbWVkaWEgcmVzb3VyY2VzIG9mIHRoZSBzbGF2
ZWQgbWVkaWEgZWxlbWVudHMgdGhhdCB0aGUgCisgICAgLy8gdXNlciBhZ2VudCBoYXMgc28gZmFy
IHJlbmRlcmVkLCBhdCB0aGUgdGltZSB0aGUgYXR0cmlidXRlIGlzIGV2YWx1YXRlZC4KKyAgICBS
ZWZQdHI8VGltZVJhbmdlcz4gcGxheWVkUmFuZ2VzID0gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCkt
PnBsYXllZCgpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxl
bWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBwbGF5ZWRSYW5nZXMtPnVuaW9uV2l0aCht
X21lZGlhRWxlbWVudHNbaW5kZXhdLT5wbGF5ZWQoKS5nZXQoKSk7CisgICAgcmV0dXJuIHBsYXll
ZFJhbmdlczsKK30KKworZmxvYXQgTWVkaWFDb250cm9sbGVyOjpkdXJhdGlvbigpIGNvbnN0Cit7
CisgICAgLy8gRklYTUU6IEludmVzdGlnYXRlIGNhY2hpbmcgdGhlIG1heGltdW0gZHVyYXRpb24g
YW5kIG9ubHkgdXBkYXRpbmcgdGhlIGNhY2hlZCB2YWx1ZQorICAgIC8vIHdoZW4gdGhlIHNsYXZl
ZCBtZWRpYSBlbGVtZW50cycgZHVyYXRpb25zIGNoYW5nZS4KKyAgICBmbG9hdCBtYXhEdXJhdGlv
biA9IDA7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50
cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhRWxl
bWVudHNbaW5kZXhdLT5kdXJhdGlvbjsKKyAgICAgICAgaWYgKGlzbmFuKGR1cmF0aW9uKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBtYXhEdXJhdGlvbiA9IG1heChtYXhEdXJhdGlv
biwgZHVyYXRpb24pOworICAgIH0KKyAgICByZXR1cm4gbWF4RHVyYXRpb247Cit9CisKK2Zsb2F0
IE1lZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUoKSBjb25zdAoreworICAgIGlmIChtX21lZGlh
RWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4g
bV9jbG9jay0+Y3VycmVudFRpbWUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldEN1
cnJlbnRUaW1lKGZsb2F0IHRpbWUsIEV4Y2VwdGlvbkNvZGUmIGNvZGUpCit7CisgICAgLy8gV2hl
biB0aGUgdXNlciBhZ2VudCBpcyB0byBzZWVrIHRoZSBtZWRpYSBjb250cm9sbGVyIHRvIGEgcGFy
dGljdWxhciBuZXcgcGxheWJhY2sgcG9zaXRpb24sIAorICAgIC8vIGl0IG11c3QgZm9sbG93IHRo
ZXNlIHN0ZXBzOgorICAgIC8vIElmIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gaXMgbGVzcyB0
aGFuIHplcm8sIHRoZW4gc2V0IGl0IHRvIHplcm8uCisgICAgdGltZSA9IG1heCgwLjBmLCB0aW1l
KTsKKyAgICAKKyAgICAvLyBJZiB0aGUgbmV3IHBsYXliYWNrIHBvc2l0aW9uIGlzIGdyZWF0ZXIg
dGhhbiB0aGUgbWVkaWEgY29udHJvbGxlciBkdXJhdGlvbiwgdGhlbiBzZXQgaXQgCisgICAgLy8g
dG8gdGhlIG1lZGlhIGNvbnRyb2xsZXIgZHVyYXRpb24uCisgICAgdGltZSA9IG1pbih0aW1lLCBk
dXJhdGlvbigpKTsKKyAgICAKKyAgICAvLyBTZXQgdGhlIG1lZGlhIGNvbnRyb2xsZXIgcG9zaXRp
b24gdG8gdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbi4KKyAgICBtX2Nsb2NrLT5zZXRDdXJyZW50
VGltZSh0aW1lKTsKKyAgICAKKyAgICAvLyBTZWVrIGVhY2ggc2xhdmVkIG1lZGlhIGVsZW1lbnQg
dG8gdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgbWVkaWEgZWxlbWVu
dCB0aW1lbGluZS4KKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVs
ZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+
c2Vlayh0aW1lLCBjb2RlKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnBsYXkoKQorewor
ICAgIC8vIFdoZW4gdGhlIHBsYXkoKSBtZXRob2QgaXMgaW52b2tlZCwgaWYgdGhlIE1lZGlhQ29u
dHJvbGxlciBpcyBhIHBhdXNlZCBtZWRpYSBjb250cm9sbGVyLAorICAgIGlmICghbV9wYXVzZWQp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIHRoZSB1c2VyIGFnZW50IG11c3QgY2hhbmdlIHRo
ZSBNZWRpYUNvbnRyb2xsZXIgaW50byBhIHBsYXlpbmcgbWVkaWEgY29udHJvbGxlciwKKyAgICBt
X3BhdXNlZCA9IGZhbHNlOworICAgIC8vIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2
ZW50IG5hbWVkIHBsYXkgYXQgdGhlIE1lZGlhQ29udHJvbGxlciwKKyAgICBzY2hlZHVsZUV2ZW50
KGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQpOworICAgIC8vIGFuZCB0aGVuIHJlcG9ydCB0aGUgY29u
dHJvbGxlciBzdGF0ZSBvZiB0aGUgTWVkaWFDb250cm9sbGVyLgorICAgIHJlcG9ydENvbnRyb2xs
ZXJTdGF0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6cGF1c2UoKQoreworICAgIC8v
IFdoZW4gdGhlIHBhdXNlKCkgbWV0aG9kIGlzIGludm9rZWQsIGlmIHRoZSBNZWRpYUNvbnRyb2xs
ZXIgaXMgYSBwbGF5aW5nIG1lZGlhIGNvbnRyb2xsZXIsCisgICAgaWYgKG1fcGF1c2VkKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyB0aGVuIHRoZSB1c2VyIGFnZW50IG11c3QgY2hhbmdlIHRo
ZSBNZWRpYUNvbnRyb2xsZXIgaW50byBhIHBhdXNlZCBtZWRpYSBjb250cm9sbGVyLAorICAgIG1f
cGF1c2VkID0gdHJ1ZTsKKyAgICAvLyBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVu
dCBuYW1lZCBwYXVzZSBhdCB0aGUgTWVkaWFDb250cm9sbGVyLAorICAgIHNjaGVkdWxlRXZlbnQo
ZXZlbnROYW1lcygpLnBhdXNlRXZlbnQpOworICAgIC8vIGFuZCB0aGVuIHJlcG9ydCB0aGUgY29u
dHJvbGxlciBzdGF0ZSBvZiB0aGUgTWVkaWFDb250cm9sbGVyLgorICAgIHJlcG9ydENvbnRyb2xs
ZXJTdGF0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0RGVmYXVsdFBsYXliYWNr
UmF0ZShmbG9hdCByYXRlKQoreworICAgIGlmIChtX2RlZmF1bHRQbGF5YmFja1JhdGUgPT0gcmF0
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhlIGRlZmF1bHRQbGF5YmFja1JhdGUgYXR0
cmlidXRlLCBvbiBzZXR0aW5nLCBtdXN0IHNldCB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbWVkaWEg
Y29udHJvbGxlcgorICAgIC8vIGRlZmF1bHQgcGxheWJhY2sgcmF0ZSB0byB0aGUgbmV3IHZhbHVl
LAorICAgIG1fZGVmYXVsdFBsYXliYWNrUmF0ZSA9IHJhdGU7CisKKyAgICAvLyB0aGVuIHF1ZXVl
IGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHJhdGVjaGFuZ2UgYXQgdGhlIE1l
ZGlhQ29udHJvbGxlci4KKyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdl
RXZlbnQpOworfQorCitmbG9hdCBNZWRpYUNvbnRyb2xsZXI6OnBsYXliYWNrUmF0ZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fY2xvY2stPnBsYXlSYXRlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250
cm9sbGVyOjpzZXRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKK3sKKyAgICBpZiAobV9jbG9jay0+
cGxheVJhdGUoKSA9PSByYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGUgcGxheWJh
Y2tSYXRlIGF0dHJpYnV0ZSwgb24gc2V0dGluZywgbXVzdCBzZXQgdGhlIE1lZGlhQ29udHJvbGxl
cidzIG1lZGlhIGNvbnRyb2xsZXIgCisgICAgLy8gcGxheWJhY2sgcmF0ZSB0byB0aGUgbmV3IHZh
bHVlLAorICAgIG1fY2xvY2stPnNldFBsYXlSYXRlKHJhdGUpOworCisgICAgLy8gdGhlbiBxdWV1
ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCByYXRlY2hhbmdlIGF0IHRoZSBN
ZWRpYUNvbnRyb2xsZXIuCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucmF0ZWNoYW5n
ZUV2ZW50KTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldFZvbHVtZShmbG9hdCBsZXZl
bCwgRXhjZXB0aW9uQ29kZSYgY29kZSkKK3sKKyAgICBpZiAobV92b2x1bWUgPT0gbGV2ZWwpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIElmIHRoZSBuZXcgdmFsdWUgaXMgb3V0c2lkZSB0aGUg
cmFuZ2UgMC4wIHRvIDEuMCBpbmNsdXNpdmUsIHRoZW4sIG9uIHNldHRpbmcsIGFuIAorICAgIC8v
IEluZGV4U2l6ZUVycm9yIGV4Y2VwdGlvbiBtdXN0IGJlIHJhaXNlZCBpbnN0ZWFkLgorICAgIGlm
IChsZXZlbCA8IDAgfHwgbGV2ZWwgPiAxKSB7CisgICAgICAgIGNvZGUgPSBJTkRFWF9TSVpFX0VS
UjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgLy8gVGhlIHZvbHVtZSBh
dHRyaWJ1dGUsIG9uIHNldHRpbmcsIGlmIHRoZSBuZXcgdmFsdWUgaXMgaW4gdGhlIHJhbmdlIDAu
MCB0byAxLjAgaW5jbHVzaXZlLAorICAgIC8vIG11c3Qgc2V0IHRoZSBNZWRpYUNvbnRyb2xsZXIn
cyBtZWRpYSBjb250cm9sbGVyIHZvbHVtZSBtdWx0aXBsaWVyIHRvIHRoZSBuZXcgdmFsdWUKKyAg
ICBtX3ZvbHVtZSA9IGxldmVsOworCisgICAgLy8gYW5kIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEg
c2ltcGxlIGV2ZW50IG5hbWVkIHZvbHVtZWNoYW5nZSBhdCB0aGUgTWVkaWFDb250cm9sbGVyLgor
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnZvbHVtZWNoYW5nZUV2ZW50KTsKKworICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyAr
K2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT51cGRhdGVWb2x1bWUoKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldE11dGVkKGJvb2wgZmxhZykKK3sKKyAgICBp
ZiAobV9tdXRlZCA9PSBmbGFnKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGUgbXV0ZWQg
YXR0cmlidXRlLCBvbiBzZXR0aW5nLCBtdXN0IHNldCB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbWVk
aWEgY29udHJvbGxlciBtdXRlIG92ZXJyaWRlCisgICAgLy8gdG8gdGhlIG5ldyB2YWx1ZQorICAg
IG1fbXV0ZWQgPSBmbGFnOworCisgICAgLy8gYW5kIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2lt
cGxlIGV2ZW50IG5hbWVkIHZvbHVtZWNoYW5nZSBhdCB0aGUgTWVkaWFDb250cm9sbGVyLgorICAg
IHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnZvbHVtZWNoYW5nZUV2ZW50KTsKKworICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2lu
ZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT51cGRhdGVWb2x1bWUoKTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnJlcG9ydENvbnRyb2xsZXJTdGF0ZSgpCit7CisgICAg
dXBkYXRlUmVhZHlTdGF0ZSgpOworICAgIHVwZGF0ZVBsYXliYWNrU3RhdGUoKTsKK30KKwordm9p
ZCBNZWRpYUNvbnRyb2xsZXI6OnVwZGF0ZVJlYWR5U3RhdGUoKQoreworICAgIFJlYWR5U3RhdGUg
b2xkUmVhZHlTdGF0ZSA9IG1fcmVhZHlTdGF0ZTsKKyAgICBSZWFkeVN0YXRlIG5ld1JlYWR5U3Rh
dGU7CisKKyAgICAKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkgeworICAgICAg
ICAvLyBJZiB0aGUgTWVkaWFDb250cm9sbGVyIGhhcyBubyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMs
IGxldCBuZXcgcmVhZGluZXNzIHN0YXRlIGJlIDAuCisgICAgICAgIG5ld1JlYWR5U3RhdGUgPSBI
QVZFX05PVEhJTkc7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gT3RoZXJ3aXNlLCBsZXQgaXQg
aGF2ZSB0aGUgbG93ZXN0IHZhbHVlIG9mIHRoZSByZWFkeVN0YXRlIElETCBhdHRyaWJ1dGVzIG9m
IGFsbCBvZiBpdHMKKyAgICAgICAgLy8gc2xhdmVkIG1lZGlhIGVsZW1lbnRzLgorICAgICAgICBu
ZXdSZWFkeVN0YXRlID0gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPnJlYWR5U3RhdGUoKTsKKyAg
ICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAxOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXpl
KCk7ICsraW5kZXgpCisgICAgICAgICAgICBuZXdSZWFkeVN0YXRlID0gbWluKG5ld1JlYWR5U3Rh
dGUsIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnJlYWR5U3RhdGUoKSk7CisgICAgfQorCisgICAg
Ly8gSWYgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1vc3QgcmVjZW50bHkgcmVwb3J0ZWQgcmVhZGlu
ZXNzIHN0YXRlIGlzIG5vdCBlcXVhbCB0byBuZXcgcmVhZGluZXNzIHN0YXRlCisgICAgaWYgKG5l
d1JlYWR5U3RhdGUgPT0gb2xkUmVhZHlTdGF0ZSkgCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgYXQgdGhlIE1lZGlhQ29u
dHJvbGxlciBvYmplY3QsIHdob3NlIG5hbWUgaXMgdGhlCisgICAgLy8gZXZlbnQgbmFtZSBjb3Jy
ZXNwb25kaW5nIHRvIHRoZSB2YWx1ZSBvZiBuZXcgcmVhZGluZXNzIHN0YXRlIGdpdmVuIGluIHRo
ZSB0YWJsZSBiZWxvdyAob21taXR0ZWQpCisgICAgQXRvbWljU3RyaW5nIGV2ZW50TmFtZTsKKyAg
ICBzd2l0Y2ggKG5ld1JlYWR5U3RhdGUpIHsKKyAgICBjYXNlIEhBVkVfTk9USElORzoKKyAgICAg
ICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLmVtcHRpZWRFdmVudDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBIQVZFX01FVEFEQVRBOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVz
KCkubG9hZGVkbWV0YWRhdGFFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIQVZFX0NV
UlJFTlRfREFUQToKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLmxvYWRlZGRhdGFF
dmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIQVZFX0ZVVFVSRV9EQVRBOgorICAgICAg
ICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkuY2FucGxheUV2ZW50OworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEhBVkVfRU5PVUdIX0RBVEE6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFt
ZXMoKS5jYW5wbGF5dGhyb3VnaEV2ZW50OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgc2NoZWR1bGVFdmVudChl
dmVudE5hbWUpOworCisgICAgLy8gTGV0IHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtb3N0IHJlY2Vu
dGx5IHJlcG9ydGVkIHJlYWRpbmVzcyBzdGF0ZSBiZSBuZXcgcmVhZGluZXNzIHN0YXRlLgorICAg
IG1fcmVhZHlTdGF0ZSA9IG5ld1JlYWR5U3RhdGU7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVy
Ojp1cGRhdGVQbGF5YmFja1N0YXRlKCkKK3sKKyAgICBQbGF5YmFja1N0YXRlIG9sZFBsYXliYWNr
U3RhdGUgPSBtX3BsYXliYWNrU3RhdGU7CisgICAgUGxheWJhY2tTdGF0ZSBuZXdQbGF5YmFja1N0
YXRlOworCisgICAgLy8gSW5pdGlhbGl6ZSBuZXcgcGxheWJhY2sgc3RhdGUgYnkgc2V0dGluZyBp
dCB0byB0aGUgc3RhdGUgZ2l2ZW4gZm9yIHRoZSBmaXJzdCBtYXRjaGluZyAKKyAgICAvLyBjb25k
aXRpb24gZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIE1lZGlhQ29udHJvbGxlciBoYXMgbm8gc2xh
dmVkIG1lZGlhIGVsZW1lbnRzCisgICAgICAgIC8vIExldCBuZXcgcGxheWJhY2sgc3RhdGUgYmUg
d2FpdGluZy4KKyAgICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IFdBSVRJTkc7CisgICAgfSBlbHNl
IGlmIChoYXNFbmRlZCgpKSB7CisgICAgICAgIC8vIElmIGFsbCBvZiB0aGUgTWVkaWFDb250cm9s
bGVyJ3Mgc2xhdmVkIG1lZGlhIGVsZW1lbnRzIGhhdmUgZW5kZWQgcGxheWJhY2sgYW5kIHRoZSBt
ZWRpYQorICAgICAgICAvLyBjb250cm9sbGVyIHBsYXliYWNrIHJhdGUgaXMgcG9zaXRpdmUgb3Ig
emVybworICAgICAgICAvLyBMZXQgbmV3IHBsYXliYWNrIHN0YXRlIGJlIGVuZGVkLgorICAgICAg
ICBuZXdQbGF5YmFja1N0YXRlID0gRU5ERUQ7CisgICAgfSBlbHNlIGlmIChpc0Jsb2NrZWQoKSkg
eworICAgICAgICAvLyBJZiB0aGUgTWVkaWFDb250cm9sbGVyIGlzIGEgYmxvY2tlZCBtZWRpYSBj
b250cm9sbGVyCisgICAgICAgIC8vIExldCBuZXcgcGxheWJhY2sgc3RhdGUgYmUgd2FpdGluZy4K
KyAgICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IFdBSVRJTkc7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgLy8gT3RoZXJ3aXNlCisgICAgICAgIC8vIExldCBuZXcgcGxheWJhY2sgc3RhdGUgYmUgcGxh
eWluZy4KKyAgICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IFBMQVlJTkc7CisgICAgfQorCisgICAg
Ly8gSWYgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1vc3QgcmVjZW50bHkgcmVwb3J0ZWQgcGxheWJh
Y2sgc3RhdGUgaXMgbm90IGVxdWFsIHRvIG5ldyBwbGF5YmFjayBzdGF0ZQorICAgIGlmIChuZXdQ
bGF5YmFja1N0YXRlID09IG9sZFBsYXliYWNrU3RhdGUpCisgICAgICAgIHJldHVybjsKKworICAg
IC8vIGFuZCB0aGUgbmV3IHBsYXliYWNrIHN0YXRlIGlzIGVuZGVkLAorICAgIGlmIChuZXdQbGF5
YmFja1N0YXRlID09IEVOREVEKSB7CisgICAgICAgIC8vIHRoZW4gcXVldWUgYSB0YXNrIHRoYXQs
IGlmIHRoZSBNZWRpYUNvbnRyb2xsZXIgb2JqZWN0IGlzIGEgcGxheWluZyBtZWRpYSBjb250cm9s
bGVyLCBhbmQgCisgICAgICAgIC8vIGFsbCBvZiB0aGUgTWVkaWFDb250cm9sbGVyJ3Mgc2xhdmVk
IG1lZGlhIGVsZW1lbnRzIGhhdmUgc3RpbGwgZW5kZWQgcGxheWJhY2ssIGFuZCB0aGUgCisgICAg
ICAgIC8vIG1lZGlhIGNvbnRyb2xsZXIgcGxheWJhY2sgcmF0ZSBpcyBzdGlsbCBwb3NpdGl2ZSBv
ciB6ZXJvLCAKKyAgICAgICAgaWYgKCFtX3BhdXNlZCAmJiBoYXNFbmRlZCgpKSB7CisgICAgICAg
ICAgICAvLyBjaGFuZ2VzIHRoZSBNZWRpYUNvbnRyb2xsZXIgb2JqZWN0IHRvIGEgcGF1c2VkIG1l
ZGlhIGNvbnRyb2xsZXIKKyAgICAgICAgICAgIG1fcGF1c2VkID0gdHJ1ZTsKKyAgICAgICAgICAg
IG1fY2xvY2stPnN0b3AoKTsKKworICAgICAgICAgICAgLy8gYW5kIHRoZW4gZmlyZXMgYSBzaW1w
bGUgZXZlbnQgbmFtZWQgcGF1c2UgYXQgdGhlIE1lZGlhQ29udHJvbGxlciBvYmplY3QuCisgICAg
ICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtb3N0IHJlY2VudGx5
IHJlcG9ydGVkIHBsYXliYWNrIHN0YXRlIGlzIG5vdCBlcXVhbCB0byBuZXcgcGxheWJhY2sgc3Rh
dGUKKyAgICAvLyB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IGF0IHRo
ZSBNZWRpYUNvbnRyb2xsZXIgb2JqZWN0LCB3aG9zZSBuYW1lIGlzIHBsYXlpbmcgCisgICAgLy8g
aWYgbmV3IHBsYXliYWNrIHN0YXRlIGlzIHBsYXlpbmcsIGVuZGVkIGlmIG5ldyBwbGF5YmFjayBz
dGF0ZSBpcyBlbmRlZCwgYW5kIHdhaXRpbmcgb3RoZXJ3aXNlLgorICAgIEF0b21pY1N0cmluZyBl
dmVudE5hbWU7CisgICAgc3dpdGNoIChuZXdQbGF5YmFja1N0YXRlKSB7CisgICAgY2FzZSBXQUlU
SU5HOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkud2FpdGluZ0V2ZW50OworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEVOREVEOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5h
bWVzKCkuZW5kZWRFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQTEFZSU5HOgorICAg
ICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkucGxheWluZ0V2ZW50OworICAgICAgICBtX2Ns
b2NrLT5zdGFydCgpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWUpOwor
CisgICAgLy8gTGV0IHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtb3N0IHJlY2VudGx5IHJlcG9ydGVk
IHBsYXliYWNrIHN0YXRlIGJlIG5ldyBwbGF5YmFjayBzdGF0ZS4KKyAgICBtX3BsYXliYWNrU3Rh
dGUgPSBuZXdQbGF5YmFja1N0YXRlOworCisgICAgdXBkYXRlTWVkaWFFbGVtZW50cygpOworfQor
Cit2b2lkIE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlTWVkaWFFbGVtZW50cygpCit7CisgICAgZm9y
IChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5k
ZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnVwZGF0ZVBsYXlTdGF0ZSgpOwor
fQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6YnJpbmdFbGVtZW50VXBUb1NwZWVkKEhUTUxNZWRp
YUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIEFTU0VSVCht
X21lZGlhRWxlbWVudHMuY29udGFpbnMoZWxlbWVudCkpOworCisgICAgLy8gV2hlbiB0aGUgdXNl
ciBhZ2VudCBpcyB0byBicmluZyBhIG1lZGlhIGVsZW1lbnQgdXAgdG8gc3BlZWQgd2l0aCBpdHMg
bmV3IG1lZGlhIGNvbnRyb2xsZXIsCisgICAgLy8gaXQgbXVzdCBzZWVrIHRoYXQgbWVkaWEgZWxl
bWVudCB0byB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbWVkaWEgY29udHJvbGxlciBwb3NpdGlvbiBy
ZWxhdGl2ZQorICAgIC8vIHRvIHRoZSBtZWRpYSBlbGVtZW50J3MgdGltZWxpbmUuCisgICAgRXhj
ZXB0aW9uQ29kZSBpZ25vcmVkQ29kZSA9IDA7CisgICAgZWxlbWVudC0+c2VlayhjdXJyZW50VGlt
ZSgpLCBpZ25vcmVkQ29kZSk7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjppc0Jsb2NrZWQo
KSBjb25zdAoreworICAgIC8vIEEgTWVkaWFDb250cm9sbGVyIGlzIGEgYmxvY2tlZCBtZWRpYSBj
b250cm9sbGVyIGlmIHRoZSBNZWRpYUNvbnRyb2xsZXIgaXMgYSBwYXVzZWQgbWVkaWEgCisgICAg
Ly8gY29udHJvbGxlciwKKyAgICBpZiAobV9wYXVzZWQpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIAorICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCisgICAgYm9vbCBhbGxQYXVzZWQgPSB0cnVlOworICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7Cisg
ICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQgPSBtX21lZGlhRWxlbWVudHNbaW5kZXhd
OworICAgICAgICAvLyAgb3IgaWYgYW55IG9mIGl0cyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgYXJl
IGJsb2NrZWQgbWVkaWEgZWxlbWVudHMsCisgICAgICAgIGlmIChlbGVtZW50LT5pc0Jsb2NrZWQo
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAKKyAgICAgICAgLy8gb3IgaWYg
YW55IG9mIGl0cyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgd2hvc2UgYXV0b3BsYXlpbmcgZmxhZyBp
cyB0cnVlIHN0aWxsIGhhdmUgdGhlaXIgCisgICAgICAgIC8vIHBhdXNlZCBhdHRyaWJ1dGUgc2V0
IHRvIHRydWUsCisgICAgICAgIGlmIChlbGVtZW50LT5hdXRvcGxheSgpICYmIGVsZW1lbnQtPnBh
dXNlZCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIAorICAgICAgICBpZiAo
IWVsZW1lbnQtPnBhdXNlZCgpKQorICAgICAgICAgICAgYWxsUGF1c2VkID0gZmFsc2U7CisgICAg
fQorICAgIAorICAgIC8vIG9yIGlmIGFsbCBvZiBpdHMgc2xhdmVkIG1lZGlhIGVsZW1lbnRzIGhh
dmUgdGhlaXIgcGF1c2VkIGF0dHJpYnV0ZSBzZXQgdG8gdHJ1ZS4KKyAgICByZXR1cm4gYWxsUGF1
c2VkOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6aGFzRW5kZWQoKSBjb25zdAoreworICAg
IGlmIChtX2Nsb2NrLT5wbGF5UmF0ZSgpIDw9IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIGJvb2wgYWxsSGF2ZUVuZGVkID0gdHJ1ZTsKKyAgICBmb3IgKHNpemVf
dCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgewor
ICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmVuZGVkKCkpCisgICAgICAgICAg
ICBhbGxIYXZlRW5kZWQgPSBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGFsbEhhdmVFbmRlZDsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudE5hbWUpCit7CisgICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZSwgZmFsc2UsIHRydWUpKTsKKyAgICBpZiAoIW1fYXN5bmNFdmVudFRpbWVy
LmlzQWN0aXZlKCkpCisgICAgICAgIG1fYXN5bmNFdmVudFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmFzeW5jRXZlbnRUaW1lckZpcmVkKFRpbWVyPE1l
ZGlhQ29udHJvbGxlcj4qKQoreworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gcGVuZGluZ0V2
ZW50czsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAKKyAgICBtX3BlbmRpbmdFdmVu
dHMuc3dhcChwZW5kaW5nRXZlbnRzKTsKKyAgICBzaXplX3QgY291bnQgPSBwZW5kaW5nRXZlbnRz
LnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5k
ZXgpCisgICAgICAgIGRpc3BhdGNoRXZlbnQocGVuZGluZ0V2ZW50c1tpbmRleF0ucmVsZWFzZSgp
LCBlYyk7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1lZGlhQ29udHJvbGxlcjo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX21lZGlhRWxlbWVudHMu
Zmlyc3QoKS0+ZG9jdW1lbnQoKTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6Omhhc0F1ZGlv
KCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVs
ZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnRzW2lu
ZGV4XS0+aGFzQXVkaW8oKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpoYXNWaWRlbygpIGNvbnN0
Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5z
aXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmhh
c1ZpZGVvKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6aGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25z
dAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMu
c2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5o
YXNDbG9zZWRDYXB0aW9ucygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldENsb3NlZENhcHRp
b25zVmlzaWJsZShib29sIHZpc2libGUpCit7CisgICAgbV9jbG9zZWRDYXB0aW9uc1Zpc2libGUg
PSB2aXNpYmxlOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxl
bWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5z
ZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUodmlzaWJsZSk7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9s
bGVyOjpzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBp
ZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnN1cHBvcnRzU2Nhbm5pbmcoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sbGVyOjpiZWdpblNjcnViYmluZygpCit7CisgICAgZm9yIChzaXplX3QgaW5kZXgg
PSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1f
bWVkaWFFbGVtZW50c1tpbmRleF0tPmJlZ2luU2NydWJiaW5nKCk7Cit9CisKK3ZvaWQgTWVkaWFD
b250cm9sbGVyOjplbmRTY3J1YmJpbmcoKQoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsg
aW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21lZGlh
RWxlbWVudHNbaW5kZXhdLT5lbmRTY3J1YmJpbmcoKTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xs
ZXI6OmNhblBsYXkoKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXgg
PCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmICghbV9tZWRp
YUVsZW1lbnRzW2luZGV4XS0+Y2FuUGxheSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6OmlzTGl2
ZVN0cmVhbSgpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1f
bWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxl
bWVudHNbaW5kZXhdLT5pc0xpdmVTdHJlYW0oKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpoYXNT
b3VyY2UoKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21l
ZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmICghbV9tZWRpYUVsZW1l
bnRzW2luZGV4XS0+aGFzU291cmNlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6cmV0dXJuVG9S
ZWFsdGltZSgpCit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFF
bGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0t
PnJldHVyblRvUmVhbHRpbWUoKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRy
b2xsZXI6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCku
aW50ZXJmYWNlRm9yTWVkaWFDb250cm9sbGVyOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NWVmMjlhMjNkYjk5ZDZmZTRjODYwNDIy
OGY5MTkzNzcwOTZmZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTWVk
aWFDb250cm9sbGVyX2gKKyNkZWZpbmUgTWVkaWFDb250cm9sbGVyX2gKKworI2lmIEVOQUJMRShW
SURFTykKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV2ZW50Lmgi
CisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisj
aW5jbHVkZSAiTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiVGltZXIuaCIK
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IENsb2NrOworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIEV2ZW50OworCitjbGFzcyBN
ZWRpYUNvbnRyb2xsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUNvbnRyb2xsZXI+LCBwdWJs
aWMgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLCBwdWJsaWMgRXZlbnRUYXJnZXQgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gbWVkaWFDb250cm9sbGVy
Rm9yTWVkaWFHcm91cChjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xsZXI+IGNyZWF0ZSgpOworICAgIHZpcnR1YWwgfk1lZGlhQ29udHJvbGxlcigpOwor
CisgICAgdm9pZCBhZGRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIHZvaWQg
cmVtb3ZlTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBib29sIGNvbnRhaW5z
TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKSBjb25zdDsKKworICAgIGNvbnN0IFN0cmlu
ZyYgbWVkaWFHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFHcm91cDsgfQorICAgIAorICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0OworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0OworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBwbGF5ZWQoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGZs
b2F0IGR1cmF0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBwYXVzZWQoKSBjb25zdCB7IHJldHVybiBtX3Bh
dXNlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBwbGF5KCk7CisgICAgdmlydHVhbCB2b2lkIHBhdXNl
KCk7CisgICAgCisgICAgdmlydHVhbCBmbG9hdCBkZWZhdWx0UGxheWJhY2tSYXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWZhdWx0UGxheWJhY2tSYXRlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldERl
ZmF1bHRQbGF5YmFja1JhdGUoZmxvYXQpOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgcGxheWJh
Y2tSYXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFBsYXliYWNrUmF0ZShmbG9hdCk7
CisgICAgCisgICAgdmlydHVhbCBmbG9hdCB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3ZvbHVt
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9
CisgICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpOworICAgIAorICAgIHZpcnR1YWwgUmVh
ZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9CisKKyAg
ICBlbnVtIFBsYXliYWNrU3RhdGUgeyBXQUlUSU5HLCBQTEFZSU5HLCBFTkRFRCB9OworICAgIHZp
cnR1YWwgUGxheWJhY2tTdGF0ZSBwbGF5YmFja1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5
YmFja1N0YXRlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNGdWxsc2NyZWVuKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkg
eyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQXVkaW8oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzVmlkZW8oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ2xvc2VkQ2FwdGlvbnMo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wp
OworICAgIHZpcnR1YWwgYm9vbCBjbG9zZWRDYXB0aW9uc1Zpc2libGUoKSBjb25zdCB7IHJldHVy
biBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZTsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c1NjYW5uaW5nKCkgY29uc3Q7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGJlZ2luU2NydWJi
aW5nKCk7CisgICAgdmlydHVhbCB2b2lkIGVuZFNjcnViYmluZygpOworICAgIAorICAgIHZpcnR1
YWwgYm9vbCBjYW5QbGF5KCkgY29uc3Q7CisgICAgCisgICAgdmlydHVhbCBib29sIGlzTGl2ZVN0
cmVhbSgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgYm9vbCBoYXNTb3VyY2UoKSBjb25zdDsK
KyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuVG9SZWFsdGltZSgpOworCisgICAgYm9vbCBp
c0Jsb2NrZWQoKSBjb25zdDsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdXNpbmcgUmVmQ291
bnRlZDxNZWRpYUNvbnRyb2xsZXI+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYUNv
bnRyb2xsZXI+OjpkZXJlZjsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xsZXIoKTsKKyAg
ICB2b2lkIHJlcG9ydENvbnRyb2xsZXJTdGF0ZSgpOworICAgIHZvaWQgdXBkYXRlUmVhZHlTdGF0
ZSgpOworICAgIHZvaWQgdXBkYXRlUGxheWJhY2tTdGF0ZSgpOworICAgIHZvaWQgdXBkYXRlTWVk
aWFFbGVtZW50cygpOworICAgIHZvaWQgYnJpbmdFbGVtZW50VXBUb1NwZWVkKEhUTUxNZWRpYUVs
ZW1lbnQqKTsKKyAgICB2b2lkIHNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dE5hbWUpOworICAgIHZvaWQgYXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9s
bGVyPiopOworICAgIGJvb2wgaGFzRW5kZWQoKSBjb25zdDsKKworICAgIC8vIEV2ZW50VGFyZ2V0
CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZl
bnRUYXJnZXREYXRhOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIEV2ZW50VGFy
Z2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKworICAgIGZyaWVuZCBjbGFzcyBIVE1MTWVkaWFF
bGVtZW50OworICAgIGZyaWVuZCBjbGFzcyBNZWRpYUNvbnRyb2xsZXJFdmVudExpc3RlbmVyOwor
ICAgIFZlY3RvcjxIVE1MTWVkaWFFbGVtZW50Kj4gbV9tZWRpYUVsZW1lbnRzOworICAgIGJvb2wg
bV9wYXVzZWQ7CisgICAgZmxvYXQgbV9kZWZhdWx0UGxheWJhY2tSYXRlOworICAgIGZsb2F0IG1f
dm9sdW1lOworICAgIGJvb2wgbV9tdXRlZDsKKyAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsK
KyAgICBQbGF5YmFja1N0YXRlIG1fcGxheWJhY2tTdGF0ZTsKKyAgICBWZWN0b3I8UmVmUHRyPEV2
ZW50PiA+IG1fcGVuZGluZ0V2ZW50czsKKyAgICBUaW1lcjxNZWRpYUNvbnRyb2xsZXI+IG1fYXN5
bmNFdmVudFRpbWVyOworICAgIFN0cmluZyBtX21lZGlhR3JvdXA7CisgICAgYm9vbCBtX2Nsb3Nl
ZENhcHRpb25zVmlzaWJsZTsKKyAgICBQYXNzUmVmUHRyPENsb2NrPiBtX2Nsb2NrOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUNvbnRyb2xsZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0YjJhMWZkOGNiOTQ0MDhhMzhkYWJi
OTU2M2ViZmE1ZjczOGZjNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhQ29udHJvbGxlci5pZGwKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVsZSBo
dG1sIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1WSURFTywKKyAgICAg
ICAgQ2FuQmVDb25zdHJ1Y3RlZCwKKyAgICAgICAgR2VuZXJhdGVUb0pTLAorICAgICAgICBFdmVu
dFRhcmdldAorICAgIF0gTWVkaWFDb250cm9sbGVyIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFRpbWVSYW5nZXMgYnVmZmVyZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUaW1l
UmFuZ2VzIHNlZWthYmxlOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgZHVy
YXRpb247CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgY3VycmVudFRpbWUKKyAgICAgICAgICAg
IHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGJvb2xlYW4gcGF1c2VkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJhbmdl
cyBwbGF5ZWQ7CisgICAgICAgIHZvaWQgcGxheSgpOworICAgICAgICB2b2lkIHBhdXNlKCk7CisK
KyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBkZWZhdWx0UGxheWJhY2tSYXRlOworICAgICAgICBh
dHRyaWJ1dGUgZG91YmxlIHBsYXliYWNrUmF0ZTsKKworICAgICAgICBhdHRyaWJ1dGUgZG91Ymxl
IHZvbHVtZQorICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICAg
ICAgYXR0cmlidXRlIGJvb2xlYW4gbXV0ZWQ7CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50
ZXJmYWNlCisgICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVy
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1
c2VDYXB0dXJlKTsKKyAgICAgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmlu
ZyB0eXBlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVu
ZXIgbGlzdGVuZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlv
bmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQo
aW4gRXZlbnQgZXZ0KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAgICB9
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRl
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzJjZDRkYTQxYWY0MmY1ZGEyYWU1ZGY5Nzc4YzRiODZiN2MzNTQwMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVySW50ZXJm
YWNlLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhQ29udHJvbGxl
ckludGVyZmFjZV9oCisjZGVmaW5lIE1lZGlhQ29udHJvbGxlckludGVyZmFjZV9oCisKKyNpZiBF
TkFCTEUoVklERU8pCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFRpbWVSYW5nZXM7CisKK3R5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CisKK2NsYXNzIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+TWVkaWFDb250cm9sbGVySW50ZXJmYWNlKCkgeyB9OworICAgIAorICAgIC8vIE1lZGlh
Q29udHJvbGxlciBJREw6CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZl
cmVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVr
YWJsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gcGxh
eWVkKCkgPSAwOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgCisg
ICAgdmlydHVhbCBib29sIHBhdXNlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxh
eSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKSA9IDA7CisgICAgCisgICAgdmlydHVh
bCBmbG9hdCBkZWZhdWx0UGxheWJhY2tSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0KSA9IDA7CisgICAgCisgICAgdmlydHVhbCBm
bG9hdCBwbGF5YmFja1JhdGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFBsYXli
YWNrUmF0ZShmbG9hdCkgPSAwOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgdm9sdW1lKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUm
KSA9IDA7CisgICAgCisgICAgdmlydHVhbCBib29sIG11dGVkKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRNdXRlZChib29sKSA9IDA7CisgICAgCisgICAgZW51bSBSZWFkeVN0YXRl
IHsgSEFWRV9OT1RISU5HLCBIQVZFX01FVEFEQVRBLCBIQVZFX0NVUlJFTlRfREFUQSwgSEFWRV9G
VVRVUkVfREFUQSwgSEFWRV9FTk9VR0hfREFUQSB9OworICAgIHZpcnR1YWwgUmVhZHlTdGF0ZSBy
ZWFkeVN0YXRlKCkgY29uc3QgPSAwOworCisgICAgLy8gTWVkaWFDb250cm9sRWxlbWVudHM6Cisg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNGdWxsc2NyZWVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbnRl
ckZ1bGxzY3JlZW4oKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQXVkaW8oKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGhhc1ZpZGVvKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2xvc2Vk
Q2FwdGlvbnNWaXNpYmxlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
U2Nhbm5pbmcoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJpbmco
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZFNjcnViYmluZygpID0gMDsKKworICAgIHZpcnR1
YWwgYm9vbCBjYW5QbGF5KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGlzTGl2ZVN0
cmVhbSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNTb3VyY2UoKSBjb25zdCA9
IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuVG9SZWFsdGltZSgpID0gMDsKK307CisKK30K
KworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJh
bmdlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwCmluZGV4IDFlMTgz
MDY5ODc3MTRiMGU5OWIyZDUzNWJjNGI0N2NlM2NjYzg3ODIuLmJiMWIwZmQ1ODcxMjQ3YjFmOGNh
NTJlOGVmN2UwMzY3YjBlODRmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGlt
ZVJhbmdlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcApAQCAt
MzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSA8bWF0aC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIFRpbWVSYW5nZXM6OlRpbWVSYW5nZXMoZmxv
YXQgc3RhcnQsIGZsb2F0IGVuZCkKIHsKICAgICBhZGQoc3RhcnQsIGVuZCk7CiB9CiAKLVBhc3NS
ZWZQdHI8VGltZVJhbmdlcz4gVGltZVJhbmdlczo6Y29weSgpCitQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IFRpbWVSYW5nZXM6OmNvcHkoKSBjb25zdAogewogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBu
ZXdTZXNzaW9uID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7CiAgICAgCkBAIC00Nyw2ICs0OCw1MSBA
QCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IFRpbWVSYW5nZXM6OmNvcHkoKQogICAgIHJldHVybiBu
ZXdTZXNzaW9uLnJlbGVhc2UoKTsKIH0KIAordm9pZCBUaW1lUmFuZ2VzOjppbnZlcnQoKQorewor
ICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBpbnZlcnRlZCA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwor
ICAgIGZsb2F0IHBvc0luZiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgp
OworICAgIGZsb2F0IG5lZ0luZiA9IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5p
dHkoKTsKKworICAgIGlmICghbV9yYW5nZXMuc2l6ZSgpKQorICAgICAgICBpbnZlcnRlZC0+YWRk
KG5lZ0luZiwgcG9zSW5mKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGZsb2F0IHN0YXJ0ID0g
bV9yYW5nZXMuZmlyc3QoKS5tX3N0YXJ0ICE9IG5lZ0luZikKKyAgICAgICAgICAgIGludmVydGVk
LT5hZGQobmVnSW5mLCBzdGFydCk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBp
bmRleCArIDEgPCBtX3Jhbmdlcy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBpbnZlcnRl
ZC0+YWRkKG1fcmFuZ2VzW2luZGV4XS5tX2VuZCwgbV9yYW5nZXNbaW5kZXggKyAxXS5tX3N0YXJ0
KTsKKworICAgICAgICBpZiAoZmxvYXQgZW5kID0gbV9yYW5nZXMubGFzdCgpLm1fZW5kICE9IHBv
c0luZikKKyAgICAgICAgICAgIGludmVydGVkLT5hZGQoZW5kLCBwb3NJbmYpOworICAgIH0KKwor
ICAgIG1fcmFuZ2VzLnN3YXAoaW52ZXJ0ZWQtPm1fcmFuZ2VzKTsKK30KKwordm9pZCBUaW1lUmFu
Z2VzOjppbnRlcnNlY3RXaXRoKGNvbnN0IFRpbWVSYW5nZXMqIG90aGVyKQoreworICAgIEFTU0VS
VChvdGhlcik7CisgICAgUmVmUHRyPFRpbWVSYW5nZXM+IGludmVydGVkID0gY29weSgpOworICAg
IFJlZlB0cjxUaW1lUmFuZ2VzPiBpbnZlcnRlZE90aGVyID0gb3RoZXItPmNvcHkoKTsKKyAgICBp
bnZlcnRlZC0+dW5pb25XaXRoKGludmVydGVkT3RoZXIuZ2V0KCkpOworICAgIGludmVydGVkLT5p
bnZlcnQoKTsKKworICAgIG1fcmFuZ2VzLnN3YXAoaW52ZXJ0ZWQtPm1fcmFuZ2VzKTsKK30KKwor
dm9pZCBUaW1lUmFuZ2VzOjp1bmlvbldpdGgoY29uc3QgVGltZVJhbmdlcyogb3RoZXIpCit7Cisg
ICAgQVNTRVJUKG90aGVyKTsKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gdW5pb25lZCA9IGNvcHko
KTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3RoZXItPm1fcmFuZ2VzLnNp
emUoKTsgKytpbmRleCkgeworICAgICAgICBjb25zdCBSYW5nZSYgcmFuZ2UgPSBvdGhlci0+bV9y
YW5nZXNbaW5kZXhdOworICAgICAgICB1bmlvbmVkLT5hZGQocmFuZ2UubV9zdGFydCwgcmFuZ2Uu
bV9lbmQpOworICAgIH0KKworICAgIG1fcmFuZ2VzLnN3YXAodW5pb25lZC0+bV9yYW5nZXMpOwor
fQorCiBmbG9hdCBUaW1lUmFuZ2VzOjpzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29k
ZSYgZWMpIGNvbnN0IAogeyAKICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UaW1lUmFuZ2VzLmgKaW5kZXggMmQ3YWYyNWE4MDkxMzczMGY4MGQyMzkzMGJlMjc0ZTBmZjEy
MTdmZC4uY2NjY2UwNWMxOWM0YWM5ZTYyOWRkMmEyYTFmYjY2NTIxOTc4MTBkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9UaW1lUmFuZ2VzLmgKQEAgLTQ2LDcgKzQ2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBUaW1lUmFuZ2VzKHN0YXJ0LCBlbmQpKTsKICAgICB9CiAKLSAgICBQ
YXNzUmVmUHRyPFRpbWVSYW5nZXM+IGNvcHkoKTsKKyAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+
IGNvcHkoKSBjb25zdDsKKyAgICB2b2lkIGludmVydCgpOworICAgIHZvaWQgaW50ZXJzZWN0V2l0
aChjb25zdCBUaW1lUmFuZ2VzKik7CisgICAgdm9pZCB1bmlvbldpdGgoY29uc3QgVGltZVJhbmdl
cyopOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZXMuc2l6
ZSgpOyB9CiAgICAgZmxvYXQgc3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCA0ZThmMDY3MGY5ZjI3NmEwYzY0
M2UyYjIxYzBlYzJhZmM1YzQzMzg2Li5kMmY1ZGJjMWQxYjIyMWY5ODJiZTkzYmE4YjBmODkyMDA1
MzE4NWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC02MzQsNiArNjM0LDcgQEAg
bW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU8sIEVu
YWJsZWRBdFJ1bnRpbWVdIE1lZGlhRXJyb3JDb25zdHJ1Y3RvciBNZWRpYUVycm9yOwogICAgICAg
ICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVZJREVPLCBFbmFibGVkQXRSdW50aW1lXSBUaW1lUmFu
Z2VzQ29uc3RydWN0b3IgVGltZVJhbmdlczsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25h
bD1WSURFTywgRW5hYmxlZEF0UnVudGltZV0gSFRNTFNvdXJjZUVsZW1lbnRDb25zdHJ1Y3RvciBI
VE1MU291cmNlRWxlbWVudDsKKyAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1WSURFTywg
RW5hYmxlZEF0UnVudGltZV0gTWVkaWFDb250cm9sbGVyQ29uc3RydWN0b3IgTWVkaWFDb250cm9s
bGVyOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJiYgRU5BQkxFX0FOSU1B
VElPTl9BUEkKICAgICAgICAgYXR0cmlidXRlIFdlYktpdEFuaW1hdGlvbkNvbnN0cnVjdG9yIFdl
YktpdEFuaW1hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcAppbmRleCAwMThjN2RkMzNlMzhjMWI4Zjc3MzQ1YThjM2U0ZjgzNWZlYzYw
YTczLi5mYzc3ZmYyODgzOGI3YzA5NGFhNTNhNGZiZGYwNzE2ODBjYTIyMTMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC02MDks
NiArNjA5LDExIEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXI6OmJ1ZmZlcmVk
KCkKICAgICByZXR1cm4gbV9wcml2YXRlLT5idWZmZXJlZCgpOwogfQogCitQYXNzUmVmUHRyPFRp
bWVSYW5nZXM+IE1lZGlhUGxheWVyOjpzZWVrYWJsZSgpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+c2Vla2FibGUoKTsKK30KKwogZmxvYXQgTWVkaWFQbGF5ZXI6Om1heFRpbWVTZWVrYWJsZSgp
CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWF4VGltZVNlZWthYmxlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBjOTZiMDI1ZDgy
ZDAwNzA5MTY5ZWVhNTFjMDc4MjZiNzQ1MDZjNDcxLi40NzczOWEwOGIwZTNkOWNjNzNjOTlhMTMx
NDM0YTc4YWUwMzc0NTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKQEAgLTI0MSw2ICsyNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQ
cmVzZXJ2ZXNQaXRjaChib29sKTsKIAogICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVy
ZWQoKTsKKyAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCk7CiAgICAgZmxvYXQg
bWF4VGltZVNlZWthYmxlKCk7CiAKICAgICB1bnNpZ25lZCBieXRlc0xvYWRlZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aAppbmRleCBmOGM3MGFiZTI4YTdlZDAxZGZiOGEyY2I3ZjFjNjM2NjM3ZDM4NDQxLi42YzUyN2Q3
ZTVjZDM4OTk5MTZiNDY1ZWY3MmQ1NzE0NDA1NmVkN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMjksNiAr
MjksNyBAQAogI2lmIEVOQUJMRShWSURFTykKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisj
aW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTkxLDYgKzkyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTWVk
aWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgPSAwOwogCisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3QgeyByZXR1
cm4gbWF4VGltZVNlZWthYmxlKCkgPyBUaW1lUmFuZ2VzOjpjcmVhdGUoMCwgbWF4VGltZVNlZWth
YmxlKCkpIDogVGltZVJhbmdlczo6Y3JlYXRlKCk7IH0KICAgICB2aXJ0dWFsIGZsb2F0IG1heFRp
bWVTZWVrYWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdl
cz4gYnVmZmVyZWQoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmZTI1ZWMzMWM3OWNmNDI1ZWZiNmQ1
NjZhZGFmZDQ4ZDM5OTNjMzMzLi4xOWEwNDg1NTk2MDZkOWZmODM1NDkxZjdjM2QzNTNjZDdhZWMx
ZDRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMTEtMDMgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IE1lZGlhQ29udHJvbGxlci4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS9tZWRp
YS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEt
Y29udHJvbGxlci1wbGF5YmFjay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlh
L21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEv
bWVkaWEtY29udHJvbGxlci5odG1sOiBBZGRlZC4KKworMjAxMS0xMS0wMyAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgTWVkaWFDb250cm9sbGVy
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE0MDgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlh
L21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9t
ZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
bWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBt
ZWRpYS9tZWRpYS1jb250cm9sbGVyLmh0bWw6IEFkZGVkLgorCisyMDExLTExLTAyICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNvbnRy
b2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
bWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbDogQWRkZWQuCisKIDIwMTEtMTEtMDggIFBo
aWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIGZh
c3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctZml4ZWQtd2lkdGgtYW5kLWhl
aWdodC1uby1zY3JvbGxpbmcuaHRtbCBpcyBmbGFreQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
bWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9t
ZWRpYS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzZkNGQwN2ZmY2NmY2Iz
MGU3NTVhY2MyNjhlNjc0Zjc0YWNjYzBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
bWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNSBAQAorIAor
VGVzdCBwcmVzZW5jZSBvZiBNZWRpYUNvbnRyb2xsZXIgY29uc3RydWN0b3IsIG1lZGlhQ29udHJv
bGxlciwgYW5kIG1lZGlhR3JvdXAgYXR0cmlidXRlczoKK0VYUEVDVEVEICh0eXBlb2YoTWVkaWFD
b250cm9sbGVyKSA9PSAnb2JqZWN0JykgT0sKK0VYUEVDVEVEICh2aWRlby5tZWRpYUNvbnRyb2xs
ZXIgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKHZpZGVvLm1lZGlhR3JvdXAgPT0gJycpIE9LCisK
K1Rlc3QgdGhhdCB0aGUgcHJlc2VuY2Ugb2YgYSBtZWRpYUdyb3VwIGF0dHJpYnV0ZSBjcmVhdGVz
IGEgbWVkaWFDb250cm9sbGVyOgorRVhQRUNURUQgKHZpZGVvMi5tZWRpYUdyb3VwID09ICdncm91
cCcpIE9LCitFWFBFQ1RFRCAodmlkZW8yLm1lZGlhQ29udHJvbGxlciAhPSAnbnVsbCcpIE9LCisK
K1Rlc3QgdGhhdCBzZXR0aW5nIG1lZGlhR3JvdXAgdG8gYW4gZW1wdHkgc3RyaW5nIHJlbW92ZXMg
dGhlIG1lZGlhQ29udHJvbGxlcjoKK1JVTih2aWRlby5tZWRpYUdyb3VwID0gJycpCitFWFBFQ1RF
RCAodmlkZW8ubWVkaWFDb250cm9sbGVyID09ICdudWxsJykgT0sKKworVGVzdCBtYW51YWxseSBj
cmVhdGluZyBhbmQgYXNzaWduaW5nIGEgbWVkaWFDb250cm9sbGVyIHRvIGEgbWVkaWEgZWxlbWVu
dDoKK1JVTihjb250cm9sbGVyID0gbmV3IE1lZGlhQ29udHJvbGxlcigpKQorUlVOKHZpZGVvLm1l
ZGlhQ29udHJvbGxlciA9IGNvbnRyb2xsZXIpCitFWFBFQ1RFRCAodmlkZW8ubWVkaWFDb250cm9s
bGVyID09ICdbb2JqZWN0IE1lZGlhQ29udHJvbGxlcl0nKSBPSworCitUZXN0IHRoYXQgdHdvIG1l
ZGlhIGVsZW1lbnRzIHdpdGggdGhlIHNhbWUgbWVkaWFHcm91cCBoYXZlIHRoZSBzYW1lIG1lZGlh
Q29udHJvbGxlcjoKK1JVTih2aWRlby5tZWRpYUdyb3VwID0gJ2dyb3VwJykKK1JVTih2aWRlbzIu
bWVkaWFHcm91cCA9ICdncm91cCcpCitFWFBFQ1RFRCAodmlkZW8ubWVkaWFDb250cm9sbGVyID09
PSB2aWRlbzIubWVkaWFDb250cm9sbGVyID09ICd0cnVlJykgT0sKK0VORCBPRiBURVNUCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2stZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhhOGUwOTIxM2VlMWE3MTA3YjgxMWFiOWY4ODNhZDQw
MTJhM2ZhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRy
b2xsZXItcGxheWJhY2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKKyAKK1JVTihjb250
cm9sbGVyID0gdmlkZW8ubWVkaWFDb250cm9sbGVyKQorRVZFTlQoY2FucGxheXRocm91Z2gpCitS
VU4oY29udHJvbGxlci5jdXJyZW50VGltZSA9IDUpCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRp
bWUgPT0gJzUnKSBPSworRVhQRUNURUQgKHZpZGVvMi5jdXJyZW50VGltZSA9PSAnNScpIE9LCitS
VU4odmlkZW8ucGxheSgpKQorUlVOKHZpZGVvMi5wbGF5KCkpCitSVU4oY29udHJvbGxlci5wbGF5
KCkpCitFVkVOVChwbGF5aW5nKQorRVhQRUNURUQgKGNvbnRyb2xsZXIucGF1c2VkID09ICdmYWxz
ZScpIE9LCitFVkVOVChlbmRlZCkKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbCBiL0xheW91dFRlc3RzL21l
ZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzJiODNlZjFh
YTg4OTZkN2MyMjA3ZjdhOTQ2NDkwZjNjY2Y1ZjJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay5odG1sCkBAIC0wLDAgKzEsNDkg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQg
c3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRl
c3QuanM+PC9zY3JpcHQ+CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgdmFyIGNvbnRyb2xs
ZXI7CisgICAgICAgIHZhciB2aWRlbzI7CisKKyAgICAgICAgZnVuY3Rpb24gc3RhcnQoKSB7Cisg
ICAgICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycp
WzBdOworICAgICAgICAgICAgdmlkZW8yID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
J3ZpZGVvJylbMV07CisgICAgICAgICAgICBydW4oJ2NvbnRyb2xsZXIgPSB2aWRlby5tZWRpYUNv
bnRyb2xsZXInKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcignY2Fu
cGxheXRocm91Z2gnLCBjYW5wbGF5dGhyb3VnaCwgdHJ1ZSk7CisgICAgICAgICAgICBzZXRTcmNC
eVRhZ05hbWUoJ3ZpZGVvJywgZmluZE1lZGlhRmlsZSgndmlkZW8nLCAnY29udGVudC90ZXN0Jykp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBjYW5wbGF5dGhyb3VnaCgp
IHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQoY2FucGxheXRocm91Z2gpIik7Cisg
ICAgICAgICAgICBjb250cm9sbGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NhbnBsYXl0aHJvdWdo
JywgY2FucGxheXRocm91Z2gsIHRydWUpOworICAgICAgICAgICAgcnVuKCdjb250cm9sbGVyLmN1
cnJlbnRUaW1lID0gNScpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5jdXJyZW50
VGltZScsIDUpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlbzIuY3VycmVudFRpbWUn
LCA1KTsKKyAgICAgICAgICAgIHJ1bigndmlkZW8ucGxheSgpJyk7CisgICAgICAgICAgICBydW4o
J3ZpZGVvMi5wbGF5KCknKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuYWRkRXZlbnRMaXN0ZW5l
cigncGxheWluZycsIHBsYXlpbmcsIHRydWUpOworICAgICAgICAgICAgcnVuKCdjb250cm9sbGVy
LnBsYXkoKScpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBwbGF5aW5n
KCkgeyAKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQocGxheWluZykiKTsKKyAgICAg
ICAgICAgIGNvbnRyb2xsZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHBsYXlpbmcs
IHRydWUpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdjb250cm9sbGVyLnBhdXNlZCcsIGZh
bHNlKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcignZW5kZWQnLCBl
bmRlZCwgdHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBlbmRlZCgpIHsgCisg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGVuZGVkKSIpOworICAgICAgICAgICAgY29u
dHJvbGxlci5yZW1vdmVFdmVudExpc3RlbmVyKCdlbmRlZCcsIGVuZGVkLCB0cnVlKTsKKyAgICAg
ICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHZpZGVvIG1lZGlhR3Jv
dXA9Imdyb3VwIiBjb250cm9scz48L3ZpZGVvPgorICAgICAgICA8dmlkZW8gbWVkaWFHcm91cD0i
Z3JvdXAiIGNvbnRyb2xzPjwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNv
bnRyb2xsZXIuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMGU1OTY3NTRkNWFiYjFjM2U3ZWRmMTQyOWM2OTNhOGI4Nzg0ZmEwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci5odG1sCkBA
IC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxzY3JpcHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQg
c3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
dmFyIGNvbnRyb2xsZXI7CisgICAgICAgIHZhciB2aWRlbzI7CisKKyAgICAgICAgZnVuY3Rpb24g
c3RhcnQoKSB7CisgICAgICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCd2aWRlbycpWzBdOworICAgICAgICAgICAgdmlkZW8yID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ3ZpZGVvJylbMV07CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVz
dCBwcmVzZW5jZSBvZiBNZWRpYUNvbnRyb2xsZXIgY29uc3RydWN0b3IsIG1lZGlhQ29udHJvbGxl
ciwgYW5kIG1lZGlhR3JvdXAgYXR0cmlidXRlczoiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidHlwZW9mKE1lZGlhQ29udHJvbGxlcikiLCAib2JqZWN0Iik7CisgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciIsIG51bGwpOworICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJ2aWRlby5tZWRpYUdyb3VwIiwgIiIpOworICAgICAgICAgICAgY29uc29sZVdy
aXRlKCIiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCB0aGF0IHRoZSBwcmVzZW5j
ZSBvZiBhIG1lZGlhR3JvdXAgYXR0cmlidXRlIGNyZWF0ZXMgYSBtZWRpYUNvbnRyb2xsZXI6IikK
KyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8yLm1lZGlhR3JvdXAiLCAnZ3JvdXAnKTsK
KyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8yLm1lZGlhQ29udHJvbGxlciIsIG51bGws
ICIhPSIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiVGVzdCB0aGF0IHNldHRpbmcgbWVkaWFHcm91cCB0byBhbiBlbXB0eSBzdHJpbmcg
cmVtb3ZlcyB0aGUgbWVkaWFDb250cm9sbGVyOiIpCisgICAgICAgICAgICBydW4oInZpZGVvLm1l
ZGlhR3JvdXAgPSAnJyIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRpYUNv
bnRyb2xsZXIiLCBudWxsKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIlRlc3QgbWFudWFsbHkgY3JlYXRpbmcgYW5kIGFzc2lnbmluZyBh
IG1lZGlhQ29udHJvbGxlciB0byBhIG1lZGlhIGVsZW1lbnQ6IikKKyAgICAgICAgICAgIHJ1bigi
Y29udHJvbGxlciA9IG5ldyBNZWRpYUNvbnRyb2xsZXIoKSIpOworICAgICAgICAgICAgcnVuKCJ2
aWRlby5tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyIik7CisgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciIsIGNvbnRyb2xsZXIpOworICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCB0aGF0IHR3
byBtZWRpYSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIG1lZGlhR3JvdXAgaGF2ZSB0aGUgc2FtZSBt
ZWRpYUNvbnRyb2xsZXI6IikKKyAgICAgICAgICAgIHJ1bigidmlkZW8ubWVkaWFHcm91cCA9ICdn
cm91cCciKTsKKyAgICAgICAgICAgIHJ1bigidmlkZW8yLm1lZGlhR3JvdXAgPSAnZ3JvdXAnIik7
CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciA9PT0gdmlk
ZW8yLm1lZGlhQ29udHJvbGxlciIsIHRydWUpOworICAgICAgICAgICAgZW5kVGVzdCgpOworICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
InN0YXJ0KCkiPgorICAgICAgICA8dmlkZW8+PC92aWRlbz4KKyAgICAgICAgPHZpZGVvIG1lZGlh
Z3JvdXA9Imdyb3VwIj48L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlv
bi9mYXN0L3JlZ2lvbnMvcmVuZGVyLXJlZ2lvbi1jdXN0b20tc3R5bGUtbWFyay1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbi9mYXN0L3JlZ2lvbnMvcmVuZGVyLXJl
Z2lvbi1jdXN0b20tc3R5bGUtbWFyay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY3NGVhOWU0
ZmE4NTBhOTM4NDNlM2NmOGRiYmE2NTRkYjM5MzA0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy1saW9uL2Zhc3QvcmVnaW9ucy9yZW5kZXItcmVnaW9uLWN1c3Rv
bS1zdHlsZS1tYXJrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM0IEBACitsYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVy
IGF0ICgwLDApIHNpemUgODAweDE2NgorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6
ZSA4MDB4MTY2CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4MTUwCisg
ICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAyMDB4NTAKKyAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDUwKSBzaXplIDIwMHg1MAorICAgICAgUmVuZGVyUmVnaW9uIHtE
SVZ9IGF0ICgwLDEwMCkgc2l6ZSAyMDB4NTAKK0Zsb3cgVGhyZWFkcworICBUaHJlYWQgd2l0aCBm
bG93LW5hbWUgJ2Zsb3cxJworICAgIGxheWVyIGF0ICgwLDApIHNpemUgMjAweDEwMAorICAgICAg
UmVuZGVyRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDIwMHgxMDAKKyAgICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDAsMTYpIHNpemUgMjAweDE4OAorICAgICAgICAgIFJlbmRlckJsb2NrIHtQ
fSBhdCAoMCwwKSBzaXplIDIwMHgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgMTY4eDE4CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRo
IDE2ODogIkZpcnN0IHBhcmEgZ29lcyBpbnRvIHJlZ2lvbi4iCisgICAgICAgICAgUmVuZGVyQmxv
Y2sgKGFub255bW91cykgYXQgKDAsMzQpIHNpemUgMjAweDE4CisgICAgICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMzR4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggMTM0OiAiVGV4dCBnb2VzIGludG8gcmVnaW9uIgorICAgICAgICAgIFJl
bmRlckJsb2NrIHtQfSBhdCAoMCw2OCkgc2l6ZSAyMDB4MTgKKyAgICAgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE4N3gxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCAxODc6ICJTZWNvbmQgcGFyYSBnb2VzIGludG8gcmVnaW9uLiIKKyAgICAg
ICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMTAyKSBzaXplIDIwMHgxOAorICAgICAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTc1eDE4CisgICAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDE3NTogIlRoaXJkIHBhcmEgZ29lcyBpbnRvIHJlZ2lvbi4i
CisgICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMTM2KSBzaXplIDIwMHgx
OAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTM0eDE4Cisg
ICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEzNDogIlRleHQgZ29lcyBpbnRv
IHJlZ2lvbiIKKyAgICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMTcwKSBzaXplIDIwMHgx
OAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTgyeDE4Cisg
ICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE4MjogIkZvdXJ0aCBwYXJhIGdv
ZXMgaW50byByZWdpb24uIgorICBSZWdpb25zIGZvciBmbG93ICdmbG93MScKKyAgICBSZW5kZXJS
ZWdpb24ge0RJVn0gI3JlZ2lvbjEgcmVnaW9uIHN0eWxlOiAxCisgICAgUmVuZGVyUmVnaW9uIHtE
SVZ9ICNyZWdpb24zIHJlZ2lvbiBzdHlsZTogMQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114099</attachid>
            <date>2011-11-08 09:52:35 -0800</date>
            <delta_ts>2011-11-08 10:05:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71408-20111108095234.patch</filename>
            <type>text/plain</type>
            <size>95619</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk1NzYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMmZmYzIwYjIxOWIyYjU1
NDczZWYzMmVhNWQyYWUxNzk0ZTIxN2MzLi43MTJhMWUxZTg4NmY1M2E0ZTA3ZjU5NTIzZDgyYmM1
ZGMxZDcwMWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU3IEBACisyMDExLTExLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNv
bnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbAorCisgICAgICAgIEFkZHMgc3VwcG9ydCBm
b3IgdGhlIE1lZGlhQ29udHJvbGxlciBET00gb2JqZWN0LCBhbmQgdGhlIG1lZGlhZ3JvdXAgYW5k
IG1lZGlhY29udHJvbGxlcgorICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGF0dHJpYnV0ZXMuCisK
KyAgICAgICAgTWVkaWFDb250cm9sbGVyIGlzIGFuIERPTSBvYmplY3Qgd2hpY2ggc3luY2hyb25p
emVzIHBsYXliYWNrIG9mIG11bHRpcGxlIEhUTUxNZWRpYUVsZW1lbnRzLiBJdCBjYW4KKyAgICAg
ICAgZWl0aGVyIGJlIGNyZWF0ZWQgYnkgYSBwYWdlIHNjcmlwdCBhbmQgYXNzaWduZWQgdG8gYSBI
VE1MTWVkaWFFbGVtZW50IHVzaW5nIHRoZSBtZWRpYUNvbnRyb2xsZXIgcHJvcGVydHksCisgICAg
ICAgIG9yIGFsbCBIVE1MTWVkaWFFbGVtZW50cyB3aXRoIGlkZW50aWNhbCBtZWRpYWdyb3VwIGF0
dHJpYnV0ZXMgd2lsbCBoYXZlIGEgTWVkaWFDb250cm9sbGVyIGFzc2lnbmVkIAorICAgICAgICBh
dXRvbWF0aWNhbGx5LgorCisgICAgICAgIEFkZCBhbiBhYnN0cmFjdCBpbnRlcmZhY2UgaW1wbGVt
ZW50ZWQgYnkgYm90aCBNZWRpYUNvbnRyb2xsZXIgYW5kIEhUTUxNZWRpYUVsZW1lbnQuCisgICAg
ICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U6On5NZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UpOgorCisgICAgICAgIEFkZCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCBhbmQgSURMLgor
ICAgICAgICAqIGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChtZWRp
YUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXApOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpt
ZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
Y3JlYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6TWVkaWFDb250cm9sbGVyKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6fk1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChNZWRp
YUNvbnRyb2xsZXI6OmFkZE1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnJlbW92ZU1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmNvbnRhaW5z
TWVkaWFFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6YnVmZmVyZWQpOgorICAg
ICAgICAoTWVkaWFDb250cm9sbGVyOjpzZWVrYWJsZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnBsYXllZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKToKKyAgICAg
ICAgKE1lZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnBsYXkpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpwYXVzZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnNldERlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpz
ZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZCk6CisgICAgICAgIChNZWRpYUNvbnRy
b2xsZXI6OnJlcG9ydENvbnRyb2xsZXJTdGF0ZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnVwZGF0ZVJlYWR5U3RhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjp1cGRhdGVQbGF5
YmFja1N0YXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlTWVkaWFFbGVtZW50
cyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnNjaGVkdWxlRXZlbnQpOgorICAgICAgICAo
TWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpoYXNBdWRpbyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Omhhc1ZpZGVvKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzQ2xvc2VkQ2FwdGlvbnMpOgorICAgICAgICAoTWVk
aWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUpOgorICAgICAgICAoTWVkaWFD
b250cm9sbGVyOjpzdXBwb3J0c1NjYW5uaW5nKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
YmVnaW5TY3J1YmJpbmcpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjplbmRTY3J1YmJpbmcp
OgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjYW5QbGF5KToKKyAgICAgICAgKE1lZGlhQ29u
dHJvbGxlcjo6aXNMaXZlU3RyZWFtKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzU291
cmNlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6cmV0dXJuVG9SZWFsdGltZSk6CisgICAg
ICAgIChNZWRpYUNvbnRyb2xsZXI6OmlzQmxvY2tlZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6Omhhc0VuZGVkKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6bWVkaWFHcm91cCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xsZXI6OmRlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sbGVyOjp2b2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpt
dXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnJlYWR5U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1N0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6c3VwcG9ydHNGdWxsc2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6aXNGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbGxlcjo6Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sbGVyOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbGxlcjo6dG9NZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sbGVyOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvTWVk
aWFDb250cm9sbGVyLmlkbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGNvbnZlbmllbmNlIGZ1bmN0
aW9ucyB0byBUaW1lUmFuZ2VzIHdoaWNoIGNhbiBjYWxjdWxhdGUgaW50ZXJzZWN0aW9ucyBhbmQK
KyAgICAgICAgdW5pb25zIGJldHdlZW4gVGltZVJhbmdlcyBvYmplY3RzLgorICAgICAgICAqIGh0
bWwvVGltZVJhbmdlcy5jcHA6CisgICAgICAgIChUaW1lUmFuZ2VzOjpjb3B5KToKKyAgICAgICAg
KFRpbWVSYW5nZXM6OmludmVydCk6CisgICAgICAgIChUaW1lUmFuZ2VzOjppbnRlcnNlY3RXaXRo
KToKKyAgICAgICAgKFRpbWVSYW5nZXM6OnVuaW9uV2l0aCk6CisgICAgICAgICogaHRtbC9UaW1l
UmFuZ2VzLmg6CisKKyAgICAgICAgQWRkIE1lZGlhQ29udHJvbGxlckNvbnN0cnVjdG9yIHRvIHRo
ZSBXaW5kb3cgb2JqZWN0LgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKworICAgICAg
ICBBZGQgdGhlIHR3byBuZXcgYXR0cmlidXRlIG5hbWVzLCBtZWRpYWdyb3VwIGFuZCBtZWRpYWNv
bnRyb2xsZXIuCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYXR0cmlidXRlcywgYW5kIGFkZCBvdmVycmlkZGVu
IGJlaGF2aW9yIHdoZW4gYSBtZWRpYSBlbGVtZW50CisgICAgICAgIGhhcyBhIGN1cnJlbnQgbWVk
aWEgY29udHJvbGxlcjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjplbmRlZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6dXNlckNhbmNlbGxlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRN
ZWRpYUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNv
bnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlTWVk
aWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzQmxv
Y2tlZE9uTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc1NvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0xpdmVTdHJlYW0pOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1M
TWVkaWFFbGVtZW50Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxN
ZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcik6CisKKyAgICAgICAgQWRkIGEgZnVuY3Rp
b24gInNlZWthYmxlIiB3aGljaCByZXR1cm5zIGEgVGltZVJhbmdlcyBjb250YWluaW5nIHRoZSBz
ZWVrYWJsZSB0aW1lIHJhbmdlcworICAgICAgICBpbiBhIG1lZGlhIGVsZW1lbnQuICBCeSBkZWZh
dWx0IHRoaXMgaXMgYSBzaW5nbGUgcmFuZ2Ugb2YgWzAsIG1heFRpbWVTZWVrYWJsZV0uCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OnNlZWthYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpz
ZWVrYWJsZSk6CisKKyAgICAgICAgU3VwcG9ydCBmdW5jdGlvbnMgdG8gY2FzdCBiZXR3ZWVuIE1l
ZGlhQ29udHJvbGxlciBhbmQgRXZlbnRUYXJnZXQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNF
dmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBkb20v
RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OnRvTWVkaWFD
b250cm9sbGVyKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKworICAgICAgICBCb2ls
ZXJwbGF0ZSB0byBzdXBwb3J0IGNyZWF0aW5nIHRoZSBkZXJpdmVkIHNvdXJjZXMgZm9yIE1lZGlh
Q29udHJvbGxlciBhbmQgYWRkaW5nIG5ldyBzb3VyY2VzCisgICAgICAgIHRvIHRoZSBwcm9qZWN0
OgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNw
cDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMS0xMS0wOCAgQW5kcmV5IEtvc3lha292ICA8
Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtFeHRlbnNpb24g
QVBJXVtDaHJvbWl1bV0gaW5qZWN0ZWQgZXh0ZW5zaW9uIEFQSSBuZWVkcyB0byByZXR1cm4gYW4g
b2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDdlMTUyOTc5YmJlMTg4MmQxOWRhZjBiNWZm
OWZjYjg5ODdiMmE1MmIuLmRiMjZkNzA0ODQ1NjQwZDZmMGExM2U4OWM1YmJkZDE3NDA2MzllMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yNzYsNiArMjc2LDcgQEAgU0VUKFdlYkNvcmVfSURM
X0ZJTEVTCiAgICAgaHRtbC9IVE1MVW5rbm93bkVsZW1lbnQuaWRsCiAgICAgaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmlkbAogICAgIGh0bWwvSW1hZ2VEYXRhLmlkbAorICAgIGh0bWwvTWVkaWFDb250
cm9sbGVyLmlkbAogICAgIGh0bWwvTWVkaWFFcnJvci5pZGwKICAgICBodG1sL1RleHRNZXRyaWNz
LmlkbAogICAgIGh0bWwvVGV4dFRyYWNrLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCmlu
ZGV4IGIzZjFlM2ZiOTk2ZTc5MDM5M2Q5ZmRjODZmNjkxYjhhNjE1M2QzZDYuLjU1ODc2MDkwNjY5
ZDI5ZTczNmMxYTg2ZDYyMDJiNzQyYjAyYzJmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5j
cHAKQEAgLTIyOCw2ICsyMjgsNyBAQAogI2luY2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHAiCiAjaW5jbHVkZSAiSlNLZXlib2FyZEV2ZW50LmNwcCIKICNpbmNsdWRlICJKU0xvY2F0aW9u
LmNwcCIKKyNpbmNsdWRlICJKU01lZGlhQ29udHJvbGxlci5jcHAiCiAjaW5jbHVkZSAiSlNNZWRp
YUVycm9yLmNwcCIKICNpbmNsdWRlICJKU01lZGlhTGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNNZWRp
YVF1ZXJ5TGlzdC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBlNjA3NGMx
ZWQ3NzEzNGU1YmNiZWE2YTk4YjVlMThkYzk5OGFhNzBmLi40ODQ5NTYyNzM1ZjNiNjAxZjRkZDk1
MDVlMTBhYjIxYjdhMjhiMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI3
Nyw2ICsyNzcsNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBLZXlib2FyZEV2ZW50IFwKICAgICBM
b2NhdGlvbiBcCiAgICAgTG93UGFzczJGaWx0ZXJOb2RlIFwKKyAgICBNZWRpYUNvbnRyb2xsZXIg
XAogICAgIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBcCiAgICAgTWVkaWFFcnJvciBcCiAg
ICAgTWVkaWFMaXN0IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LnByaSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCBjYWViNzk5ZTY3
NmQxMjBhNGU4OWNlODQwNDM3NDc1NzJjNGY3ZTk2Li5jNmY1MmU4MzdhN2UyZmZmMzE1MzMxNWE1
MWNlNDg2ODA1MTY3ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCkBAIC0zMTQsNiAr
MzE0LDcgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBodG1sL0hUTUxVbmtub3duRWxlbWVudC5p
ZGwgXAogICAgIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwgXAogICAgIGh0bWwvSW1hZ2VEYXRh
LmlkbCBcCisgICAgaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsIFwKICAgICBodG1sL01lZGlhRXJy
b3IuaWRsIFwKICAgICBodG1sL1RleHRNZXRyaWNzLmlkbCBcCiAgICAgaHRtbC9UaW1lUmFuZ2Vz
LmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxNTUzNDQyZTRiNDgyNWFm
YzE4Yzc5NTJlZWM0N2NlMGE2Yjk5ZWQ2Li44NjgxM2Y5MWFhM2JkZWFjYTZhMmE0OTlmZDcwNDE2
ZjljNWNmOGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM1OSw2ICszNTks
OCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNMb2NhbE1lZGlhU3RyZWFtLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNMb2NhdGlv
bi5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNMb2NhdGlvbi5oIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTTWVkaWFDb250cm9sbGVyLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU01lZGlhQ29udHJvbGxlci5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TWVkaWFFcnJvci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUVycm9yLmgg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUxpc3QuY3BwIFwKQEAgLTE4NzUsNiAr
MTg3Nyw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9MaW5r
UmVsQXR0cmlidXRlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2su
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmggXAorCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUNvbnRyb2xsZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmggXAogCVNvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGYwMjAxYjY1ZmY0MmYy
NTJhZTg1OWE5NWEyNDIzOTUxZmNmMGNiN2EuLjA1Y2M2N2U2OWI1YzllODViYjE2N2FmYWU1NWVj
MWMwNTdmYzQ1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTAyMiw2ICsxMDIyLDggQEAgU09VUkNFUyAr
PSBcCiAgICAgcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWREYXRlTm9uZS5jcHAgXAogICAgIHBsYXRm
b3JtL3RleHQvTG9jYWxpemVkTnVtYmVyTm9uZS5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvUXVv
dGVkUHJpbnRhYmxlLmNwcCBcCisgICAgcGxhdGZvcm0vQ2xvY2suY3BwIFwKKyAgICBwbGF0Zm9y
bS9DbG9ja0dlbmVyaWMuY3BwIFwKICAgICBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAgXAogICAg
IHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBcCiAgICAgcGxhdGZvcm0vRGF0ZUNvbXBv
bmVudHMuY3BwIFwKQEAgLTEwMzIsNyArMTAzNCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRm
b3JtL0ZpbGVJY29uTG9hZGVyLmNwcCBcCiAgICAgcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAgXAog
ICAgIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwIFwKLSAgICBwbGF0Zm9ybS9DbG9ja0dlbmVyaWMu
Y3BwIFwKICAgICBwbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuY3BwIFwKICAgICBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9xdC9JbWFnZUZyYW1lUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250RGVzY3JpcHRpb24uY3BwIFwKQEAgLTE4NjUsNiArMTg2Niw3IEBAIEhFQURFUlMg
Kz0gXAogICAgIGh0bWwvTGFiZWxzTm9kZUxpc3QuaCBcCiAgICAgaHRtbC9MaW5rUmVsQXR0cmli
dXRlLmggXAogICAgIGh0bWwvTG9hZGFibGVUZXh0VHJhY2suaCBcCisgICAgaHRtbC9NZWRpYUNv
bnRyb2xsZXIuaCBcCiAgICAgaHRtbC9NZWRpYURvY3VtZW50LmggXAogICAgIGh0bWwvTWljcm9E
YXRhSXRlbVZhbHVlLmggXAogICAgIGh0bWwvUGx1Z2luRG9jdW1lbnQuaCBcCkBAIC0yMDUyLDYg
KzIwNTQsOCBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9u
TGlzdC5oIFwKICAgICBwbGF0Zm9ybS9BcmVuYS5oIFwKICAgICBwbGF0Zm9ybS9Bc3luY0ZpbGVT
dHJlYW0uaCBcCisgICAgcGxhdGZvcm0vQ2xvY2suaCBcCisgICAgcGxhdGZvcm0vQ2xvY2tHZW5l
cmljLmggXAogICAgIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmggXAogICAgIHBsYXRmb3JtL0NvbnRl
eHRNZW51LmggXAogICAgIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmggXApAQCAtMjA3MCw3
ICsyMDc0LDYgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvblNl
cnZpY2VNb2NrLmggXAogICAgIHBsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgg
XAogICAgIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmggXAotICAgIHBsYXRmb3Jt
L0Nsb2NrR2VuZXJpYy5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQmxlbmQuaCBcCkBAIC0zMDg0LDYgKzMwODcsNyBAQCBjb250YWlucyhERUZJTkVT
LCBFTkFCTEVfVklERU89MSkgewogICAgICAgICBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIFwK
ICAgICAgICAgaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAgXAogICAgICAgICBodG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwIFwKKyAgICAgICAgaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwIFwKICAg
ICAgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIFwKICAgICAgICAgaHRt
bC9UaW1lUmFuZ2VzLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNTkzZWQ1OWFiMjI1OTFmODg4MGQ2NzFlMWI3YWE4
YmJhYTk4NzE2Mi4uNWZkMDQyODViOWJmYTI2Mzk2NmMxYmY2MTE2NWFhNjY2ZTU4OGJhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtMTMzMCw2ICsxMzMwLDcgQEAKICAgICAgICAgICAgICdodG1sL0hU
TUxVbmtub3duRWxlbWVudC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvSW1hZ2VEYXRhLmlkbCcsCisgICAgICAgICAgICAn
aHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsJywKICAgICAgICAgICAgICdodG1sL01lZGlhRXJyb3Iu
aWRsJywKICAgICAgICAgICAgICdodG1sL1RleHRNZXRyaWNzLmlkbCcsCiAgICAgICAgICAgICAn
aHRtbC9UZXh0VHJhY2suaWRsJywKQEAgLTU1OTQsNiArNTU5NSw4IEBACiAgICAgICAgICAgICAn
aHRtbC9MaW5rUmVsQXR0cmlidXRlLmgnLAogICAgICAgICAgICAgJ2h0bWwvTG9hZGFibGVUZXh0
VHJhY2suY3BwJywKICAgICAgICAgICAgICdodG1sL0xvYWRhYmxlVGV4dFRyYWNrLmgnLAorICAg
ICAgICAgICAgJ2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9N
ZWRpYUNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9NZWRpYURvY3VtZW50LmNwcCcs
CiAgICAgICAgICAgICAnaHRtbC9NZWRpYURvY3VtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwv
TWVkaWFFcnJvci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKaW5kZXggODlmNDU4MDY3NDliZmU2NzIwOTdmOTdmMzYzZTNlZTAxODQyNzJhZi4uZjc1
NWQ0OWZlNDkwNjU4NzNhYTM5M2FlNjY2MGJiMjdlNzExODU1MiAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTU3NTk0LDYgKzU3NTk0LDE0IEBA
CiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
TWVkaWFDb250cm9sbGVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5caHRtbFxNZWRpYUNvbnRyb2xsZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+
CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxNZWRpYURvY3VtZW50LmNwcCIK
IAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGJhOTQ0MTUwMjQ1YWM0YjI2NDcwNjNjZjcxZjA4MjM2
OTI1ZDdjYi4uMjlmNDBiZTIxYzkxN2QzNjRhYTE3NTU0N2ZlOTAxYTk0NGJkZGI5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NTcxMCwxNyArNTcxMCwyMiBAQAogCQlDRDBEQkZFRTE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0Nv
bXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXYgaW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwREJFMEQxNDIyNzU5NTAwMjgwMjYz
IC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUud2F2ICovOyB9OwogCQlDRDBEQkZF
RjE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXYg
aW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0QwREJFMEUxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1
X1AzMzAud2F2ICovOyB9OwogCQlDRDBEQkZGMDE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0NvbXBv
c2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXYgaW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwREJFMEYxNDIyNzU5NTAwMjgwMjYzIC8q
IElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzNDUud2F2ICovOyB9OworCQlDRDI3RjZFNTE0
NTc2ODVBMDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8q
IEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJQ0QyN0Y2RTcxNDU3NzBEMzAwNzgyMDdE
IC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDI3RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVy
LmNwcCAqLzsgfTsKIAkJQ0Q4MjAzMEExMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEODIwMzA2MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0Q4MjAzMEIxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgy
MDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSAq
Lzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby11bmRlZiI7IH07IH07CiAJCUNE
ODIwMzBDMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDgyMDMwODEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29u
dHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUNEODIwMzBEMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0Q4MjAzMDkxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdp
bmRvd0NvbnRyb2xsZXIubW0gKi87IH07CiAJCUNEODIwMzEwMTM5NUFDRTcwMEY5NTZDNiAvKiBX
ZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24u
aCAqLzsgfTsKIAkJQ0Q4MjAzMTExMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlv
bi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIw
MzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi87IH07CisJCUNE
RDUyNUQ3MTQ1QjZERDAwMDhEMjA0RCAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQ0MxNDVC
NkFGRTAwQzRDN0FBIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCUNE
RUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MkUxNDYwODRERTAwOEIz
MUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi87IH07CiAJCUNERUE3NjM0MTQ2MEI1NkYwMDhC
MzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RFQTc2MzIxNDYwQUUyOTAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5j
cHAgKi87IH07CiAJCUNERUE3NjM1MTQ2MEI3MUEwMDhCMzFGMSAvKiBDbG9jay5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBNzYzMzE0NjBCNDYy
MDA4QjMxRjEgLyogQ2xvY2suY3BwICovOyB9OwogCQlDREVBN0M4NDEyNzYyMzA0MDBCODQ2REQg
LyogUmVuZGVyRnVsbFNjcmVlbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RFQTdDODIxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4u
aCAqLzsgfTsKIAkJQ0RFQTdDODUxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTdD
ODMxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3BwICovOyB9OworCQlDREY2
NUNDODE0NUIxRTc1MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFNDE0NTc2Nzg3MDA3ODIwN0Qg
LyogTWVkaWFDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQ0RGNjVDQ0ExNDVCNDQ4ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxl
ckludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RGNjVDQzkxNDVCNDNBNzAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMDJG
MEM0MTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwMkYwQzMxMUU4M0FERDAwQzY2
ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UwNTdGQTUxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0UwNTdGQTYxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xMzAxOCw2ICsxMzAyMywxMSBAQAogCQlDRDBEQkUwRDE0MjI3NTk1MDAyODAyNjMgLyog
SVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBJUkNfQ29tcG9z
aXRlX0NfUjAxOTVfVDM0NV9QMzE1LndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNl
cy9JUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1Lndhdjsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OwogCQlDRDBEQkUwRTE0MjI3NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9D
X1IwMTk1X1QzNDVfUDMzMC53YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0
NV9QMzMwLndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9JUkNfQ29tcG9zaXRl
X0NfUjAxOTVfVDM0NV9QMzMwLndhdjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlD
RDBEQkUwRjE0MjI3NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0
NS53YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBh
dWRpby53YXY7IG5hbWUgPSBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzQ1LndhdjsgcGF0
aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9JUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9Q
MzQ1Lndhdjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlDRDI3RjZFMDE0NTc1QzFC
MDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYUNvbnRyb2xsZXIuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDI3RjZFMjE0NTc2NzU4MDA3ODIwN0Qg
LyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNNZWRpYUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRDI3RjZFMzE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUNvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyN0Y2RTQxNDU3Njc4NzAwNzgyMDdEIC8qIE1lZGlhQ29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyN0Y2RTYxNDU3NzBEMzAwNzgy
MDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEgLyogZnVsbHNjcmVlbi5jc3MgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW4uY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzA3MTM5
NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMDI2LDYgKzEzMDM2LDgg
QEAKIAkJQ0Q4MjAzMEUxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJXaW5kb3dBbmltYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4MjAzMEYxMzk1QUNFNzAwRjk1NkM2IC8qIFdl
YldpbmRvd0FuaW1hdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYldpbmRvd0FuaW1hdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0RCRDkzQkExMzMzQkQ0QjAwMjU3MEUzIC8qIGZ1bGxzY3JlZW5RdWlja1RpbWUuY3NzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzczsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDRTVDQ0YxNDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50RmFj
dG9yeS5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFdmVudEZhY3RvcnkuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQ0U1Q0QwMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudFRh
cmdldEZhY3RvcnkuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXZlbnRUYXJnZXRGYWN0b3J5
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBNzYyQzE0NjA4MjI0MDA4QjMx
RjEgLyogQ2xvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xvY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8q
IFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQbGF0Zm9ybUNsb2NrQ0EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVB
NzYyRjE0NjA4NEVFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ2xvY2tDQS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTMwMzQsNiArMTMwNDYsOCBAQAogCQlDREVBNzYzMzE0NjBCNDYyMDA4QjMx
RjEgLyogQ2xvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xv
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBN0M4MjEyNzYyMzA0MDBC
ODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJGdWxsU2NyZWVuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
RUE3QzgzMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZ1bGxTY3JlZW4uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEgLyogTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhQ29udHJvbGxlckludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REY2NUNDQzE0NUI2QUZFMDBDNEM3QUEgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE1lZGlhRWxlbWVudEN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDJGMEMzMTFFODNBREQw
MEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRDb250cm9sbGVyQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDU3RkE0
MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzM3Miw2ICsxNzM4NiwxMCBAQAogCQkJCUU0NDYx
M0EwMENENjMzMTAwMEZBREE3NSAvKiBWb2lkQ2FsbGJhY2suaWRsICovLAogCQkJCUY1NUIzREFC
MTI1MUYxMkQwMDNFRjI2OSAvKiBXZWVrSW5wdXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0RBQzEy
NTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0VHlwZS5oICovLAorCQkJCUNEMjdGNkUwMTQ1NzVD
MUIwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaWRsICovLAorCQkJCUNEMjdGNkU0MTQ1NzY3
ODcwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaCAqLywKKwkJCQlDRDI3RjZFNjE0NTc3MEQz
MDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCAqLywKKwkJCQlDREY2NUNDOTE0NUI0M0E3
MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggKi8sCiAJCQkpOwogCQkJcGF0
aCA9IGh0bWw7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTc2MDUsNiArMTc2MjMs
OCBAQAogCQlBODNCNzkwODBDQ0FGRjJCMDAwQjA4MjUgLyogSFRNTCAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdE
IC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLywKKwkJCQlDRDI3RjZFMzE0NTc2NzU4MDA3ODIw
N0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuaCAqLywKIAkJCQk0OUVFQ0VGMjEwNTA3MEM0MDAwOTlG
QUIgLyogSlNBcnJheUJ1ZmZlci5jcHAgKi8sCiAJCQkJNDlFRUNFRjMxMDUwNzBDNDAwMDk5RkFC
IC8qIEpTQXJyYXlCdWZmZXIuaCAqLywKIAkJCQk0OUVFQ0YxOTEwNTA3MkYzMDAwOTlGQUIgLyog
SlNBcnJheUJ1ZmZlclZpZXcuY3BwICovLApAQCAtMTk2MjcsNiArMTk2NDcsNyBAQAogCQkJCUJD
QzQzODc3MEU4ODZDQzcwMDUzM0RENSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwICov
LAogCQkJCUUxQUQxNDIyMTI5NUVBN0YwMEFDQTk4OSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0
b20uaCAqLywKIAkJCQlFMUFEMTM5QTEyOTVEOTI2MDBBQ0E5ODkgLyogSlNIVE1MTGlua0VsZW1l
bnRDdXN0b20uY3BwICovLAorCQkJCUNERjY1Q0NDMTQ1QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxN
ZWRpYUVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDMzA1Q0EzMEMwNzgxQkIwMENEMjBGMCAv
KiBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlFMUFEMTQyNDEyOTVFQTk1
MDBBQ0E5ODkgLyogSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5oICovLAogCQkJCTQ0OEFEMjdB
MEE0ODEzNzkwMDIzRDE3OSAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgKi8s
CkBAIC0yMDk0MCw2ICsyMDk2MSw4IEBACiAJCUY1MjNEMzI0MDJERTQ0NzgwMTg2MzVDQSAvKiBk
b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNEQ0U1
Q0NGMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudEZhY3RvcnkuaW4gKi8sCisJCQkJQ0RDRTVDRDAx
NDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50VGFyZ2V0RmFjdG9yeS5pbiAqLywKIAkJCQlFMUM0REU2
RDBFQTc1QzY1MDAyM0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0LmNwcCAqLywKIAkJCQlFMUM0REU2
ODBFQTc1QzFFMDAyM0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0LmggKi8sCiAJCQkJQThDNEE3RkMw
OUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuY3BwICovLApAQCAtMjQ2MzQsNiArMjQ2NTcsOCBAQAog
CQkJCUNBRTlGOTEwMTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NzZGMzZFQjE0Njg2MjI1MDA1RTkzQjQgLyogU2VjdXJpdHlDb250
ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTM0NDk2RTE0Njk0MUIzMDA3MjAzMTIgLyogU1ZH
TGVuZ3RoQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RGNjVDQzgxNDVCMUU3NTAwQzRD
N0FBIC8qIE1lZGlhQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RGNjVDQ0ExNDVC
NDQ4ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0yNzQ5MCw2ICsyNzUxNSw5IEBACiAJCQkJQ0FFOUY5MEYxNDY0NDFGMDAwQzI0NUIwIC8q
IENTU0FzcGVjdFJhdGlvVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2MzAxNDYw
OEE1MzAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
REVBNzYzNDE0NjBCNTZGMDA4QjMxRjEgLyogQ2xvY2tHZW5lcmljLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUNEMjdGNkU1MTQ1NzY4NUEwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDRDI3RjZFNzE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250
cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNERDUyNUQ3MTQ1QjZERDAwMDhEMjA0RCAv
KiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2
MzUxNDYwQjcxQTAwOEIzMUYxIC8qIENsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NkYz
NkVBMTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNzEzNDQ5NkQxNDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAppbmRleCAxYTM1MzdkMTM4YjY2MzEwNjVi
YTg3MGYyYmQxZjQ2NjdkYjFlNGJlLi4wMjM1OTQ5MmQ2NzVlMWZiMWEwOWUzNDFiM2RkODRiOTVk
MjExOTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRp
bWVFbmFibGVkRmVhdHVyZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVy
aWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKQEAgLTExMyw2ICsxMTMsMTEgQEAgYm9vbCBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sU291cmNlRWxlbWVudEVuYWJsZWQoKQogICAgIHJl
dHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKIH0KIAorYm9vbCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjptZWRpYUNvbnRyb2xsZXJFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OmlzQXZhaWxhYmxlKCk7Cit9CisKIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
bWVkaWFFcnJvckVuYWJsZWQoKQogewogICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFi
bGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggODAwMWI3YTcwZjM5MWE1NTVmZWNjNjA2MzRmMGRk
N2EwZjc2YTNkNi4uYzNhOWM2MDJlZDA3ZmVkOTU4MjM2YTBmMmNjNGYzMTU0OTYxMDVkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgKQEAgLTk0LDYgKzk0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29s
IGh0bWxBdWRpb0VsZW1lbnRFbmFibGVkKCk7CiAgICAgc3RhdGljIGJvb2wgaHRtbFZpZGVvRWxl
bWVudEVuYWJsZWQoKTsKICAgICBzdGF0aWMgYm9vbCBodG1sU291cmNlRWxlbWVudEVuYWJsZWQo
KTsKKyAgICBzdGF0aWMgYm9vbCBtZWRpYUNvbnRyb2xsZXJFbmFibGVkKCk7CiAgICAgc3RhdGlj
IGJvb2wgbWVkaWFFcnJvckVuYWJsZWQoKTsKICAgICBzdGF0aWMgYm9vbCB0aW1lUmFuZ2VzRW5h
YmxlZCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcAppbmRleCAwMDBjNWJmYTdmNDM0OTcxZmI3ZjQxMWMwNWQzMWJmNmNk
M2FjNTFjLi5jZmRkNjJiNTk3ODBjMDEyYjU2MGJkMTA2NzZjNGQ3ZjI3YTg5YjM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAg
LTkyLDYgKzkyLDcgQEAKICNpbmNsdWRlICJKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNI
VE1MTGlua0VsZW1lbnRDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTSFRNTE1lZGlhRWxlbWVudEN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAiCiAjaW5j
bHVkZSAiSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRN
TE91dHB1dEVsZW1lbnRDdXN0b20uY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTllZTZl
ZmIyZjcyYTE2NGQxODA2NzFiNWU4OTVjZmVmNmNmYTJlNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKQEAg
LTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlICJK
U0hUTUxNZWRpYUVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkpTTWVkaWFDb250cm9sbGVyLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBKU0hU
TUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIHZh
bHVlKQoreworICAgIEhUTUxNZWRpYUVsZW1lbnQqIGltcCA9IHN0YXRpY19jYXN0PEhUTUxNZWRp
YUVsZW1lbnQqPihpbXBsKCkpOworICAgIC8vIE9uIHNldHRpbmcsIGl0IG11c3QgZmlyc3QgcmVt
b3ZlIHRoZSBlbGVtZW50J3MgbWVkaWFncm91cCBhdHRyaWJ1dGUsIGlmIGFueSwgCisgICAgaW1w
LT5zZXRNZWRpYUdyb3VwKFN0cmluZygpKTsKKyAgICAvLyBhbmQgdGhlbiBzZXQgdGhlIGN1cnJl
bnQgbWVkaWEgY29udHJvbGxlciB0byB0aGUgZ2l2ZW4gdmFsdWUuCisgICAgaW1wLT5zZXRNZWRp
YUNvbnRyb2xsZXIodG9NZWRpYUNvbnRyb2xsZXIodmFsdWUpKTsKK30KKworfQorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IGM2ZjFmM2Q0NDNiODViNmY2NDIwY2VlYzk0YmVm
YjIyNzg2MmQ0NDYuLmJhZjBlZmM4OWQ0YWRlYWFiMzFjNzIzMzBmOGQxNWRlMTlkOTg4ZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC01NSw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDsKICAgICBjbGFzcyBKYXZh
U2NyaXB0QXVkaW9Ob2RlOwogICAgIGNsYXNzIExvY2FsTWVkaWFTdHJlYW07CisgICAgY2xhc3Mg
TWVkaWFDb250cm9sbGVyOwogICAgIGNsYXNzIE1lZGlhU3RyZWFtOwogICAgIGNsYXNzIE1lc3Nh
Z2VQb3J0OwogICAgIGNsYXNzIE5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFj
dG9yeS5pbgppbmRleCA2YmRiMmUyMWNhOTZiM2UxMGQzYmUxYzcxZWY3MzBkMjdmMDBkOTFkLi4y
YTM4OTAzNTdiYWY5ZTk2NmE3ZjEzNzE0ZDYxMGVmN2RlMTA4NGE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTEzLDYgKzEzLDcgQEAgSURCVHJhbnNhY3Rp
b24gY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qg
Y29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSmF2YVNjcmlwdEF1ZGlvTm9kZSBjb25kaXRp
b25hbD1XRUJfQVVESU8KIExvY2FsTWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
CitNZWRpYUNvbnRyb2xsZXIgY29uZGl0aW9uYWw9VklERU8KIE1lZGlhU3RyZWFtIGNvbmRpdGlv
bmFsPU1FRElBX1NUUkVBTQogTWVzc2FnZVBvcnQKIE5vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggZjFlMzU0YjYzMWY0OWJhM2FjMTAxZTU1MTNkMjc1
YWM1ZDJkMDk4Mi4uYWU1ZmI3MWNlZWU4NjQwOTgzNmZlMmQ1MDFlYzNmYTk5MGJhMzc1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTE0OCw2ICsxNDgs
NyBAQCBtYXgKIG1heGxlbmd0aAogbWF5c2NyaXB0CiBtZWRpYQorbWVkaWFncm91cAogbWV0aG9k
CiBtaW4KIG11bHRpcGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCBjOTA2NWY2OTFhOWMwY2FlOWU2ZWY2NDMyYjgxN2NmYzJiZDc5NzBmLi40ZTNjZjEyMzI3
ODE0ZTY3YmE5YTIzNTYzNGYzMmJkMjczYmIyMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJIVE1MU291cmNl
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250
cm9scy5oIgogI2luY2x1ZGUgIk1lZGlhRG9jdW1lbnQuaCIKICNpbmNsdWRlICJNZWRpYUVycm9y
LmgiCkBAIC0yMjgsNiArMjI5LDkgQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1l
bnQoKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3Muc2l6ZSgpOyAr
K2kpCiAgICAgICAgIG1fdGV4dFRyYWNrc1tpXS0+c2V0Q2xpZW50KDApOwogI2VuZGlmCisKKyAg
ICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVkaWFDb250cm9sbGVyLT5yZW1v
dmVNZWRpYUVsZW1lbnQodGhpcyk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbE1v
dmVUb05ld093bmVyRG9jdW1lbnQoKQpAQCAtMjk0LDcgKzI5OCw5IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICBp
ZiAoIWF1dG9wbGF5KCkgJiYgbV9wbGF5ZXIpCiAgICAgICAgICAgICBtX3BsYXllci0+c2V0UHJl
bG9hZChtX3ByZWxvYWQpOwogCi0gICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmFib3J0QXR0
cikKKyAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IG1lZGlhZ3JvdXBBdHRyKQorICAgICAgICBz
ZXRNZWRpYUdyb3VwKGF0dHItPnZhbHVlKCkpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IG9u
YWJvcnRBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5hYm9ydEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsK
ICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmJlZm9yZWxvYWRBdHRyKQogICAgICAgICBzZXRB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVsb2FkRXZlbnQsIGNyZWF0
ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwpAQCAtNTg0LDEwICs1OTAsMTEg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCgpCiAgICAgICAgIG1fc2Vl
a2luZyA9IGZhbHNlOwogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVkVGltZSgpOwogICAgICAgICBz
Y2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5lbXB0aWVkRXZlbnQpOworICAgICAgICB1cGRhdGVN
ZWRpYUNvbnRyb2xsZXIoKTsKICAgICB9CiAKICAgICAvLyA1IC0gU2V0IHRoZSBwbGF5YmFja1Jh
dGUgYXR0cmlidXRlIHRvIHRoZSB2YWx1ZSBvZiB0aGUgZGVmYXVsdFBsYXliYWNrUmF0ZSBhdHRy
aWJ1dGUuCi0gICAgc2V0UGxheWJhY2tSYXRlKGRlZmF1bHRQbGF5YmFja1JhdGUoKSk7CisgICAg
c2V0UGxheWJhY2tSYXRlKG1fbWVkaWFDb250cm9sbGVyID8gbV9tZWRpYUNvbnRyb2xsZXItPmRl
ZmF1bHRQbGF5YmFja1JhdGUoKSA6IGRlZmF1bHRQbGF5YmFja1JhdGUoKSk7CiAKICAgICAvLyA2
IC0gU2V0IHRoZSBlcnJvciBhdHRyaWJ1dGUgdG8gbnVsbCBhbmQgdGhlIGF1dG9wbGF5aW5nIGZs
YWcgdG8gdHJ1ZS4KICAgICBtX2Vycm9yID0gMDsKQEAgLTEyMjQsNiArMTIzMSw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBz
dGF0ZSkKICAgICB9CiAKICAgICB1cGRhdGVQbGF5U3RhdGUoKTsKKyAgICB1cGRhdGVNZWRpYUNv
bnRyb2xsZXIoKTsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCkBAIC0xNTIzLDYgKzE1
MzEsMTAgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudFRpbWUoKSBjb25zdAogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRpbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogeworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikgeworICAgICAgICBlYyA9
IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIHNlZWsodGlt
ZSwgZWMpOwogfQogCkBAIC0xNTc0LDEzICsxNTg2LDE0IEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1l
bnQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBsYXli
YWNrUmF0ZShmbG9hdCByYXRlKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6
OnNldFBsYXliYWNrUmF0ZSglZikiLCByYXRlKTsKLQorICAgIAogICAgIGlmIChtX3BsYXliYWNr
UmF0ZSAhPSByYXRlKSB7CiAgICAgICAgIG1fcGxheWJhY2tSYXRlID0gcmF0ZTsKICAgICAgICAg
aW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVz
KCkucmF0ZWNoYW5nZUV2ZW50KTsKICAgICB9Ci0gICAgaWYgKG1fcGxheWVyICYmIHBvdGVudGlh
bGx5UGxheWluZygpICYmIG1fcGxheWVyLT5yYXRlKCkgIT0gcmF0ZSkKKworICAgIGlmIChtX3Bs
YXllciAmJiBwb3RlbnRpYWxseVBsYXlpbmcoKSAmJiBtX3BsYXllci0+cmF0ZSgpICE9IHJhdGUg
JiYgIW1fbWVkaWFDb250cm9sbGVyKQogICAgICAgICBtX3BsYXllci0+c2V0UmF0ZShyYXRlKTsK
IH0KIApAQCAtMTY3Niw3ICsxNjg5LDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheUlu
dGVybmFsKCkKICAgICAgICAgRXhjZXB0aW9uQ29kZSB1bnVzZWQ7CiAgICAgICAgIHNlZWsoMCwg
dW51c2VkKTsKICAgICB9Ci0gICAgCisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAg
ICAgIG1fbWVkaWFDb250cm9sbGVyLT5icmluZ0VsZW1lbnRVcFRvU3BlZWQodGhpcyk7CisKICAg
ICBpZiAobV9wYXVzZWQpIHsKICAgICAgICAgbV9wYXVzZWQgPSBmYWxzZTsKICAgICAgICAgaW52
YWxpZGF0ZUNhY2hlZFRpbWUoKTsKQEAgLTE2OTAsNiArMTcwNiw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cGxheUludGVybmFsKCkKICAgICBtX2F1dG9wbGF5aW5nID0gZmFsc2U7CiAKICAg
ICB1cGRhdGVQbGF5U3RhdGUoKTsKKyAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKIH0KIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZSgpCkBAIC0xODgxLDcgKzE4OTgsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSgpCiAgICAgLy8gV2UgY2FuIHNhZmVs
eSBjYWxsIHRoZSBpbnRlcm5hbCBwbGF5L3BhdXNlIG1ldGhvZHMsIHdoaWNoIGRvbid0IGNoZWNr
IHJlc3RyaWN0aW9ucywgYmVjYXVzZQogICAgIC8vIHRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVk
IGZyb20gdGhlIGJ1aWx0LWluIG1lZGlhIGNvbnRyb2xsZXIKICAgICBpZiAoY2FuUGxheSgpKSB7
Ci0gICAgICAgIHNldFBsYXliYWNrUmF0ZShkZWZhdWx0UGxheWJhY2tSYXRlKCkpOworICAgICAg
ICBzZXRQbGF5YmFja1JhdGUobV9tZWRpYUNvbnRyb2xsZXIgPyBtX21lZGlhQ29udHJvbGxlci0+
ZGVmYXVsdFBsYXliYWNrUmF0ZSgpIDogZGVmYXVsdFBsYXliYWNrUmF0ZSgpKTsKICAgICAgICAg
cGxheUludGVybmFsKCk7CiAgICAgfSBlbHNlIAogICAgICAgICBwYXVzZUludGVybmFsKCk7CkBA
IC0yMjI5LDIwICsyMjQ2LDMzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJU
aW1lQ2hhbmdlZChNZWRpYVBsYXllciopCiAKICAgICBmbG9hdCBub3cgPSBjdXJyZW50VGltZSgp
OwogICAgIGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7Ci0gICAgaWYgKCFpc25hbihkdXIpICYmIGR1
ciAmJiBub3cgPj0gZHVyKSB7Ci0gICAgICAgIGlmIChsb29wKCkpIHsKKyAgICAKKyAgICAvLyBX
aGVuIHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIHJlYWNoZXMgdGhlIGVuZCBvZiB0aGUg
bWVkaWEgcmVzb3VyY2Ugd2hlbiB0aGUgZGlyZWN0aW9uIG9mCisgICAgLy8gcGxheWJhY2sgaXMg
Zm9yd2FyZHMsIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCBmb2xsb3cgdGhlc2Ugc3RlcHM6Cisg
ICAgaWYgKCFpc25hbihkdXIpICYmIGR1ciAmJiBub3cgPj0gZHVyICYmIG1fcGxheWJhY2tSYXRl
ID4gMCkgeworICAgICAgICAvLyBJZiB0aGUgbWVkaWEgZWxlbWVudCBoYXMgYSBsb29wIGF0dHJp
YnV0ZSBzcGVjaWZpZWQgYW5kIGRvZXMgbm90IGhhdmUgYSBjdXJyZW50IG1lZGlhIGNvbnRyb2xs
ZXIsCisgICAgICAgIGlmIChsb29wKCkgJiYgIW1fbWVkaWFDb250cm9sbGVyKSB7CiAgICAgICAg
ICAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRFeGNlcHRpb247CiAgICAgICAgICAgICBtX3NlbnRF
bmRFdmVudCA9IGZhbHNlOworICAgICAgICAgICAgLy8gIHRoZW4gc2VlayB0byB0aGUgZWFybGll
c3QgcG9zc2libGUgcG9zaXRpb24gb2YgdGhlIG1lZGlhIHJlc291cmNlIGFuZCBhYm9ydCB0aGVz
ZSBzdGVwcy4KICAgICAgICAgICAgIHNlZWsoMCwgaWdub3JlZEV4Y2VwdGlvbik7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIW1fcGF1c2VkKSB7CisgICAgICAgICAgICAvLyBJ
ZiB0aGUgbWVkaWEgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgY3VycmVudCBtZWRpYSBjb250cm9s
bGVyLCBhbmQgdGhlIG1lZGlhIGVsZW1lbnQKKyAgICAgICAgICAgIC8vIGhhcyBzdGlsbCBlbmRl
ZCBwbGF5YmFjaywgYW5kIHRoZSBkaXJlY3Rpb24gb2YgcGxheWJhY2sgaXMgc3RpbGwgZm9yd2Fy
ZHMsIGFuZCBwYXVzZWQKKyAgICAgICAgICAgIC8vIGlzIGZhbHNlLAorICAgICAgICAgICAgaWYg
KCFtX21lZGlhQ29udHJvbGxlciAmJiAhbV9wYXVzZWQpIHsKKyAgICAgICAgICAgICAgICAvLyBj
aGFuZ2VzIHBhdXNlZCB0byB0cnVlIGFuZCBmaXJlcyBhIHNpbXBsZSBldmVudCBuYW1lZCBwYXVz
ZSBhdCB0aGUgbWVkaWEgZWxlbWVudC4KICAgICAgICAgICAgICAgICBtX3BhdXNlZCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGF1c2VFdmVudCk7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNp
bXBsZSBldmVudCBuYW1lZCBlbmRlZCBhdCB0aGUgbWVkaWEgZWxlbWVudC4KICAgICAgICAgICAg
IGlmICghbV9zZW50RW5kRXZlbnQpIHsKICAgICAgICAgICAgICAgICBtX3NlbnRFbmRFdmVudCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW5kZWRF
dmVudCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBJZiB0aGUgbWVkaWEgZWxlbWVu
dCBoYXMgYSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIsIHRoZW4gcmVwb3J0IHRoZSBjb250cm9s
bGVyIHN0YXRlCisgICAgICAgICAgICAvLyBmb3IgdGhlIG1lZGlhIGVsZW1lbnQncyBjdXJyZW50
IG1lZGlhIGNvbnRyb2xsZXIuCisgICAgICAgICAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsK
ICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCkBAIC0yNDI2LDEwICsyNDU2LDcgQEAgUGFzc1Jl
ZlB0cjxUaW1lUmFuZ2VzPiBIVE1MTWVkaWFFbGVtZW50OjpwbGF5ZWQoKQogCiBQYXNzUmVmUHRy
PFRpbWVSYW5nZXM+IEhUTUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKCkgY29uc3QKIHsKLSAgICAv
LyBGSVhNRSByZWFsIHJhbmdlcyBzdXBwb3J0Ci0gICAgaWYgKCFtYXhUaW1lU2Vla2FibGUoKSkK
LSAgICAgICAgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwotICAgIHJldHVybiBUaW1lUmFu
Z2VzOjpjcmVhdGUobWluVGltZVNlZWthYmxlKCksIG1heFRpbWVTZWVrYWJsZSgpKTsKKyAgICBy
ZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+c2Vla2FibGUoKSA6IFRpbWVSYW5nZXM6OmNyZWF0
ZSgpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZygpIGNv
bnN0CkBAIC0yNDM4LDcgKzI0NjUsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlh
bGx5UGxheWluZygpIGNvbnN0CiAgICAgLy8gd2hlbiBpdCByYW4gb3V0IG9mIGJ1ZmZlcmVkIGRh
dGEuIEEgbW92aWUgaXMgdGhpcyBzdGF0ZSBpcyAicG90ZW50aWFsbHkgcGxheWluZyIsIG1vZHVs
byB0aGUKICAgICAvLyBjaGVja3MgaW4gY291bGRQbGF5SWZFbm91Z2hEYXRhKCkuCiAgICAgYm9v
bCBwYXVzZWRUb0J1ZmZlciA9IG1fcmVhZHlTdGF0ZU1heGltdW0gPj0gSEFWRV9GVVRVUkVfREFU
QSAmJiBtX3JlYWR5U3RhdGUgPCBIQVZFX0ZVVFVSRV9EQVRBOwotICAgIHJldHVybiAocGF1c2Vk
VG9CdWZmZXIgfHwgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpICYmIGNvdWxkUGxh
eUlmRW5vdWdoRGF0YSgpOworICAgIHJldHVybiAocGF1c2VkVG9CdWZmZXIgfHwgbV9yZWFkeVN0
YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpICYmIGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpICYmICFp
c0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OmNvdWxkUGxheUlmRW5vdWdoRGF0YSgpIGNvbnN0CkBAIC0yNDYwLDEwICsyNDg3LDExIEBAIGJv
b2wgSFRNTE1lZGlhRWxlbWVudDo6ZW5kZWRQbGF5YmFjaygpIGNvbnN0CiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIGFuZCB0aGUgY3VycmVudCBwbGF5YmFjayBwb3NpdGlvbiBpcyB0
aGUgZW5kIG9mIHRoZSBtZWRpYSByZXNvdXJjZSBhbmQgdGhlIGRpcmVjdGlvbgotICAgIC8vIG9m
IHBsYXliYWNrIGlzIGZvcndhcmRzIGFuZCB0aGUgbWVkaWEgZWxlbWVudCBkb2VzIG5vdCBoYXZl
IGEgbG9vcCBhdHRyaWJ1dGUgc3BlY2lmaWVkLAorICAgIC8vIG9mIHBsYXliYWNrIGlzIGZvcndh
cmRzLCBFaXRoZXIgdGhlIG1lZGlhIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhIGxvb3AgYXR0cmli
dXRlIHNwZWNpZmllZCwKKyAgICAvLyBvciB0aGUgbWVkaWEgZWxlbWVudCBoYXMgYSBjdXJyZW50
IG1lZGlhIGNvbnRyb2xsZXIuCiAgICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUoKTsKICAgICBp
ZiAobV9wbGF5YmFja1JhdGUgPiAwKQotICAgICAgICByZXR1cm4gZHVyID4gMCAmJiBub3cgPj0g
ZHVyICYmICFsb29wKCk7CisgICAgICAgIHJldHVybiBkdXIgPiAwICYmIG5vdyA+PSBkdXIgJiYg
KCFsb29wKCkgfHwgbV9tZWRpYUNvbnRyb2xsZXIpOwogCiAgICAgLy8gb3IgdGhlIGN1cnJlbnQg
cGxheWJhY2sgcG9zaXRpb24gaXMgdGhlIGVhcmxpZXN0IHBvc3NpYmxlIHBvc2l0aW9uIGFuZCB0
aGUgZGlyZWN0aW9uIAogICAgIC8vIG9mIHBsYXliYWNrIGlzIGJhY2t3YXJkcwpAQCAtMjUwOSw4
ICsyNTM3LDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlVm9sdW1lKCkKICAgICBp
ZiAoIXByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCkpIHsKICAgICAgICAgUGFnZSogcGFn
ZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAgICAgICAgZmxvYXQgdm9sdW1lTXVsdGlwbGllciA9
IHBhZ2UgPyBwYWdlLT5tZWRpYVZvbHVtZSgpIDogMTsKLSAgICAKLSAgICAgICAgbV9wbGF5ZXIt
PnNldE11dGVkKG1fbXV0ZWQpOworICAgICAgICBib29sIHNob3VsZE11dGUgPSBtX211dGVkOwor
CisgICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikgeworICAgICAgICAgICAgdm9sdW1lTXVs
dGlwbGllciAqPSBtX21lZGlhQ29udHJvbGxlci0+dm9sdW1lKCk7CisgICAgICAgICAgICBzaG91
bGRNdXRlID0gbV9tZWRpYUNvbnRyb2xsZXItPm11dGVkKCk7CisgICAgICAgIH0KKworICAgICAg
ICBtX3BsYXllci0+c2V0TXV0ZWQoc2hvdWxkTXV0ZSk7CiAgICAgICAgIG1fcGxheWVyLT5zZXRW
b2x1bWUobV92b2x1bWUgKiB2b2x1bWVNdWx0aXBsaWVyKTsKICAgICB9CiAKQEAgLTI1NzcsMTEg
KzI2MTEsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUoKQogICAg
ICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICAgICAgbWVkaWFDb250cm9scygp
LT5wbGF5YmFja1N0b3BwZWQoKTsKICAgICB9Ci0gICAgCisKKyAgICB1cGRhdGVNZWRpYUNvbnRy
b2xsZXIoKTsKKwogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT51cGRh
dGVGcm9tRWxlbWVudCgpOwogfQotICAgIAorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBh
dXNlZEludGVybmFsKGJvb2wgYikKIHsKICAgICBtX3BhdXNlZEludGVybmFsID0gYjsKQEAgLTI2
NDEsNiArMjY3Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQo
KQogCiAgICAgLy8gUmVzZXQgbV9yZWFkeVN0YXRlIHNpbmNlIG1fcGxheWVyIGlzIGdvbmUuCiAg
ICAgbV9yZWFkeVN0YXRlID0gSEFWRV9OT1RISU5HOworICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxl
cigpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblN1c3BlbmQoKSBjb25zdApAQCAt
MzEzMyw2ICszMTcwLDcyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0SXRlbVZhbHVlVGV4
dChjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIH0KICNlbmRpZgogCitj
b25zdCBTdHJpbmcmIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhR3JvdXAoKSBjb25zdAoreworICAg
IHJldHVybiBtX21lZGlhQ29udHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5tZWRpYUdyb3Vw
KCkgOiBlbXB0eVN0cmluZygpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlh
R3JvdXAoY29uc3QgU3RyaW5nJiBncm91cCkKK3sKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIg
JiYgbV9tZWRpYUNvbnRyb2xsZXItPm1lZGlhR3JvdXAoKSA9PSBncm91cCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgc2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxlcjo6bWVkaWFDb250
cm9sbGVyRm9yTWVkaWFHcm91cChncm91cCkpOworfQorCitNZWRpYUNvbnRyb2xsZXIqIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhQ29udHJvbGxlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVk
aWFDb250cm9sbGVyLmdldCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlh
Q29udHJvbGxlcihQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gY29udHJvbGxlcikKK3sKKyAg
ICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVkaWFDb250cm9sbGVyLT5yZW1v
dmVNZWRpYUVsZW1lbnQodGhpcyk7CisKKyAgICBtX21lZGlhQ29udHJvbGxlciA9IGNvbnRyb2xs
ZXI7CisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVkaWFDb250cm9s
bGVyLT5hZGRNZWRpYUVsZW1lbnQodGhpcyk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dXBkYXRlTWVkaWFDb250cm9sbGVyKCkKK3sKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisg
ICAgICAgIG1fbWVkaWFDb250cm9sbGVyLT5yZXBvcnRDb250cm9sbGVyU3RhdGUoKTsKK30KKwor
Ym9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc0Jsb2NrZWQoKSBjb25zdAoreworICAgIC8vIEEgbWVk
aWEgZWxlbWVudCBpcyBhIGJsb2NrZWQgbWVkaWEgZWxlbWVudCBpZiBpdHMgcmVhZHlTdGF0ZSBh
dHRyaWJ1dGUgaXMgaW4gdGhlCisgICAgLy8gSEFWRV9OT1RISU5HIHN0YXRlLCB0aGUgSEFWRV9N
RVRBREFUQSBzdGF0ZSwgb3IgdGhlIEhBVkVfQ1VSUkVOVF9EQVRBIHN0YXRlLAorICAgIGlmICht
X3JlYWR5U3RhdGUgPD0gSEFWRV9DVVJSRU5UX0RBVEEpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgLy8gb3IgaWYgdGhlIGVsZW1lbnQgaGFzIHBhdXNlZCBmb3IgdXNlciBpbnRlcmFjdGlv
bi4KKyAgICByZXR1cm4gcGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCk7Cit9CisKK2Jvb2wgSFRN
TE1lZGlhRWxlbWVudDo6aXNCbG9ja2VkT25NZWRpYUNvbnRyb2xsZXIoKSBjb25zdAoreworICAg
IGlmICghbV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IEEgbWVkaWEgZWxlbWVudCBpcyBibG9ja2VkIG9uIGl0cyBtZWRpYSBjb250cm9sbGVyIGlmIHRo
ZSBNZWRpYUNvbnRyb2xsZXIgaXMgYSBibG9ja2VkIAorICAgIC8vIG1lZGlhIGNvbnRyb2xsZXIs
CisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5pc0Jsb2NrZWQoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAvLyBvciBpZiBpdHMgbWVkaWEgY29udHJvbGxlciBwb3NpdGlvbiBpcyBl
aXRoZXIgYmVmb3JlIHRoZSBtZWRpYSByZXNvdXJjZSdzIGVhcmxpZXN0IHBvc3NpYmxlIAorICAg
IC8vIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBNZWRpYUNvbnRyb2xsZXIncyB0aW1lbGluZSBv
ciBhZnRlciB0aGUgZW5kIG9mIHRoZSBtZWRpYSByZXNvdXJjZSAKKyAgICAvLyByZWxhdGl2ZSB0
byB0aGUgTWVkaWFDb250cm9sbGVyJ3MgdGltZWxpbmUuCisgICAgZmxvYXQgbWVkaWFDb250cm9s
bGVyUG9zaXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBpZiAo
bWVkaWFDb250cm9sbGVyUG9zaXRpb24gPCBzdGFydFRpbWUoKSB8fCBtZWRpYUNvbnRyb2xsZXJQ
b3NpdGlvbiA+IHN0YXJ0VGltZSgpICsgZHVyYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDBkMmY5ZmM0OWUxMDBjYjUxN2JlZjBkMTUwYWM0Zjc3
YTU3NWU5ZWMuLmY4MDllNmVlN2Y5OTA3NWJiMjEwNzNjZjdkZTZjYTRiYmQ5ZjQ1OWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNs
dWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2UuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogCiAjaWYgRU5BQkxFKFBMVUdJ
Tl9QUk9YWV9GT1JfVklERU8pCkBAIC01MCw2ICs1MSw3IEBAIGNsYXNzIE1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTsKIGNsYXNzIEV2ZW50OwogY2xhc3MgSFRNTFNvdXJjZUVsZW1lbnQ7CiBj
bGFzcyBIVE1MVHJhY2tFbGVtZW50OworY2xhc3MgTWVkaWFDb250cm9sbGVyOwogY2xhc3MgTWVk
aWFDb250cm9sczsKIGNsYXNzIE1lZGlhRXJyb3I7CiBjbGFzcyBLVVJMOwpAQCAtNjMsNyArNjUs
NyBAQCBjbGFzcyBXaWRnZXQ7CiAvLyBCdXQgaXQgY2FuJ3QgYmUgdW50aWwgdGhlIENocm9taXVt
IFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCBjbGFzcyBpcyBmaXhlZCBzbyBpdAogLy8gbm8gbG9u
Z2VyIGRlcGVuZHMgb24gdHlwZWNhc3RpbmcgYSBNZWRpYVBsYXllckNsaWVudCB0byBhbiBIVE1M
TWVkaWFFbGVtZW50LgogCi1jbGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVt
ZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHByaXZhdGUgTWVkaWFDYW5TdGFydExpc3Rl
bmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVi
bGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHByaXZhdGUgTWVkaWFD
YW5TdGFydExpc3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgTWVkaWFDb250
cm9sbGVySW50ZXJmYWNlCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgcHJpdmF0ZSBU
ZXh0VHJhY2tDbGllbnQKICNlbmRpZgpAQCAtMTA1LDcgKzEwNyw3IEBAIHB1YmxpYzoKIAogICAg
IGVudW0gTmV0d29ya1N0YXRlIHsgTkVUV09SS19FTVBUWSwgTkVUV09SS19JRExFLCBORVRXT1JL
X0xPQURJTkcsIE5FVFdPUktfTk9fU09VUkNFIH07CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtT
dGF0ZSgpIGNvbnN0OwotICAgIAorCiAgICAgU3RyaW5nIHByZWxvYWQoKSBjb25zdDsgICAgCiAg
ICAgdm9pZCBzZXRQcmVsb2FkKGNvbnN0IFN0cmluZyYpOwogCkBAIC0xMTQsNyArMTE2LDYgQEAg
cHVibGljOgogICAgIFN0cmluZyBjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBj
b25zdDsKIAogLy8gcmVhZHkgc3RhdGUKLSAgICBlbnVtIFJlYWR5U3RhdGUgeyBIQVZFX05PVEhJ
TkcsIEhBVkVfTUVUQURBVEEsIEhBVkVfQ1VSUkVOVF9EQVRBLCBIQVZFX0ZVVFVSRV9EQVRBLCBI
QVZFX0VOT1VHSF9EQVRBIH07CiAgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CiAg
ICAgYm9vbCBzZWVraW5nKCkgY29uc3Q7CiAKQEAgLTIzMCw2ICsyMzEsMTIgQEAgcHVibGljOgog
ICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKTsKICNlbmRpZgog
CisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNZWRp
YUdyb3VwKGNvbnN0IFN0cmluZyYpOworCisgICAgTWVkaWFDb250cm9sbGVyKiBtZWRpYUNvbnRy
b2xsZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldE1lZGlhQ29udHJvbGxlcihQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbGxlcj4pOworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5IVE1MTWVkaWFFbGVt
ZW50KCk7CkBAIC0zOTQsNiArNDAxLDggQEAgcHJpdmF0ZToKICAgICAvLyBQYXVzZXMgcGxheWJh
Y2sgd2l0aG91dCBjaGFuZ2luZyBhbnkgc3RhdGVzIG9yIGdlbmVyYXRpbmcgZXZlbnRzCiAgICAg
dm9pZCBzZXRQYXVzZWRJbnRlcm5hbChib29sKTsKIAorICAgIHZvaWQgc2V0UGxheWJhY2tSYXRl
SW50ZXJuYWwoZmxvYXQpOworCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhQ2FuU3RhcnQoKTsKIAog
ICAgIHZvaWQgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoYm9vbCk7CkBAIC00MTIsNiArNDIxLDEy
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEl0ZW1WYWx1ZVRleHQoY29uc3QgU3Ry
aW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCiAKKyAgICB2b2lkIHVwZGF0ZU1lZGlhQ29u
dHJvbGxlcigpOworICAgIGJvb2wgaXNCbG9ja2VkKCkgY29uc3Q7CisgICAgYm9vbCBpc0Jsb2Nr
ZWRPbk1lZGlhQ29udHJvbGxlcigpIGNvbnN0OworICAgIGJvb2wgaGFzU291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9uZXR3b3JrU3RhdGUgIT0gTkVUV09SS19FTVBUWSB8fCBtX25ldHdvcmtTdGF0
ZSAhPSBORVRXT1JLX05PX1NPVVJDRTsgfQorICAgIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3Qg
eyByZXR1cm4gbW92aWVMb2FkVHlwZSgpID09IE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtOyB9CisK
ICAgICBUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiBtX2xvYWRUaW1lcjsKICAgICBUaW1lcjxIVE1M
TWVkaWFFbGVtZW50PiBtX2FzeW5jRXZlbnRUaW1lcjsKICAgICBUaW1lcjxIVE1MTWVkaWFFbGVt
ZW50PiBtX3Byb2dyZXNzRXZlbnRUaW1lcjsKQEAgLTUxNiw2ICs1MzEsOSBAQCBwcml2YXRlOgog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBt
X3RleHRUcmFja3M7CiAjZW5kaWYKKworICAgIGZyaWVuZCBjbGFzcyBNZWRpYUNvbnRyb2xsZXI7
CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gbV9tZWRpYUNvbnRyb2xsZXI7CiB9OwogCiB9
IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAppbmRl
eCAzMzBhZGJhYWRlNzEwMjY5YzJmMmRlNWVlYzVjYzFlMTYyYjBjOWI1Li40OTIxMGI2MjAyNzIz
NzFlNDVhYWI5ZmFiMTkxYmY2MTAwNDNjZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5pZGwKQEAgLTExNCw1ICsxMTQsOCBAQCBtb2R1bGUgaHRtbCB7CiAjaWYgZGVm
aW5lZChFTkFCTEVfVklERU9fVFJBQ0spICYmIEVOQUJMRV9WSURFT19UUkFDSwogICAgIFtFbmFi
bGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2tdIFRleHRUcmFjayBhZGRUcmFjayhpbiBET01T
dHJpbmcga2luZCwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgbGFiZWwsIGluIFtPcHRpb25hbF0g
RE9NU3RyaW5nIGxhbmd1YWdlKTsKICNlbmRpZgorCisgICAgYXR0cmlidXRlIFtSZWZsZWN0LCBD
b252ZXJ0TnVsbFRvTnVsbFN0cmluZywgQ29udmVydE51bGxTdHJpbmdUb051bGxdIERPTVN0cmlu
ZyBtZWRpYUdyb3VwOworICAgIGF0dHJpYnV0ZSBbQ3VzdG9tU2V0dGVyXSBNZWRpYUNvbnRyb2xs
ZXIgbWVkaWFDb250cm9sbGVyOwogfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9s
bGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jYWJiMzJkZjU5NTE4YTVlODM0MzhlMDc0ODhkOGUxYmMzMjJh
NzA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xs
ZXIuY3BwCkBAIC0wLDAgKzEsNTk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlci5oIgorCisjaW5j
bHVkZSAiQ2xvY2suaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAi
VGltZVJhbmdlcy5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2lu
ZyBuYW1lc3BhY2Ugc3RkOworCit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBNZWRpYUNvbnRyb2xs
ZXIqPiBHcm91cENvbnRyb2xsZXJNYXA7CitzdGF0aWMgR3JvdXBDb250cm9sbGVyTWFwJiBtZWRp
YUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
R3JvdXBDb250cm9sbGVyTWFwLCBtYXAsICgpKTsKKyAgICByZXR1cm4gbWFwOworfQorCitQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gTWVkaWFDb250cm9sbGVyOjptZWRpYUNvbnRyb2xsZXJG
b3JNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYgZ3JvdXApCit7CisgICAgaWYgKGdyb3VwLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChncm91cC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgaWYgKE1lZGlhQ29udHJvbGxlciogY29udHJvbGxlciA9IG1l
ZGlhR3JvdXBUb01lZGlhQ29udHJvbGxlck1hcCgpLmdldChncm91cCkpCisgICAgICAgIHJldHVy
biBjb250cm9sbGVyOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gY29udHJvbGxlciA9
IGNyZWF0ZSgpOworICAgIGNvbnRyb2xsZXItPm1fbWVkaWFHcm91cCA9IGdyb3VwOworICAgIG1l
ZGlhR3JvdXBUb01lZGlhQ29udHJvbGxlck1hcCgpLnNldChncm91cCwgY29udHJvbGxlci5nZXQo
KSk7CisgICAgcmV0dXJuIGNvbnRyb2xsZXIucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbGxlcj4gTWVkaWFDb250cm9sbGVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTWVkaWFDb250cm9sbGVyKCkpOworfQorCitNZWRpYUNvbnRyb2xsZXI6Ok1l
ZGlhQ29udHJvbGxlcigpCisgICAgOiBtX3BhdXNlZChmYWxzZSkKKyAgICAsIG1fZGVmYXVsdFBs
YXliYWNrUmF0ZSgxKQorICAgICwgbV92b2x1bWUoMSkKKyAgICAsIG1fbXV0ZWQoZmFsc2UpCisg
ICAgLCBtX3JlYWR5U3RhdGUoSEFWRV9OT1RISU5HKQorICAgICwgbV9wbGF5YmFja1N0YXRlKFdB
SVRJTkcpCisgICAgLCBtX2FzeW5jRXZlbnRUaW1lcih0aGlzLCAmTWVkaWFDb250cm9sbGVyOjph
c3luY0V2ZW50VGltZXJGaXJlZCkKKyAgICAsIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGZhbHNl
KQorICAgICwgbV9jbG9jayhDbG9jazo6Y3JlYXRlKCkpCit7Cit9CisKK01lZGlhQ29udHJvbGxl
cjo6fk1lZGlhQ29udHJvbGxlcigpCit7CisgICAgaWYgKCFtX21lZGlhR3JvdXAuaXNFbXB0eSgp
KQorICAgICAgICBtZWRpYUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXAoKS5yZW1vdmUobV9tZWRp
YUdyb3VwKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmFkZE1lZGlhRWxlbWVudChIVE1M
TWVkaWFFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICBBU1NF
UlQoIW1fbWVkaWFFbGVtZW50cy5jb250YWlucyhlbGVtZW50KSk7CisKKyAgICBtX21lZGlhRWxl
bWVudHMuYXBwZW5kKGVsZW1lbnQpOworICAgIGJyaW5nRWxlbWVudFVwVG9TcGVlZChlbGVtZW50
KTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnJlbW92ZU1lZGlhRWxlbWVudChIVE1MTWVk
aWFFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICBBU1NFUlQo
bV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKGVsZW1lbnQpKTsKKyAgICBtX21lZGlhRWxlbWVudHMu
cmVtb3ZlKG1fbWVkaWFFbGVtZW50cy5maW5kKGVsZW1lbnQpKTsKK30KKworYm9vbCBNZWRpYUNv
bnRyb2xsZXI6OmNvbnRhaW5zTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50cy5jb250YWlucyhlbGVtZW50KTsK
K30KKworUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYUNvbnRyb2xsZXI6OmJ1ZmZlcmVkKCkg
Y29uc3QKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOworCisgICAgLy8gVGhlIGJ1ZmZlcmVkIGF0dHJpYnV0
ZSBtdXN0IHJldHVybiBhIG5ldyBzdGF0aWMgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCB0
aGF0IHJlcHJlc2VudHMgCisgICAgLy8gdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgcmFuZ2VzIG9m
IHRoZSBtZWRpYSByZXNvdXJjZXMgb2YgdGhlIHNsYXZlZCBtZWRpYSBlbGVtZW50cyB0aGF0IHRo
ZSAKKyAgICAvLyB1c2VyIGFnZW50IGhhcyBidWZmZXJlZCwgYXQgdGhlIHRpbWUgdGhlIGF0dHJp
YnV0ZSBpcyBldmFsdWF0ZWQuCisgICAgUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkUmFuZ2Vz
ID0gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPmJ1ZmZlcmVkKCk7CisgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAxOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAg
ICAgIGJ1ZmZlcmVkUmFuZ2VzLT5pbnRlcnNlY3RXaXRoKG1fbWVkaWFFbGVtZW50c1tpbmRleF0t
PmJ1ZmZlcmVkKCkuZ2V0KCkpOworICAgIHJldHVybiBidWZmZXJlZFJhbmdlczsKK30KKworUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYUNvbnRyb2xsZXI6OnNlZWthYmxlKCkgY29uc3QKK3sK
KyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFRpbWVS
YW5nZXM6OmNyZWF0ZSgpOworCisgICAgLy8gVGhlIHNlZWthYmxlIGF0dHJpYnV0ZSBtdXN0IHJl
dHVybiBhIG5ldyBzdGF0aWMgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCB0aGF0IHJlcHJl
c2VudHMKKyAgICAvLyB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSByYW5nZXMgb2YgdGhlIG1lZGlh
IHJlc291cmNlcyBvZiB0aGUgc2xhdmVkIG1lZGlhIGVsZW1lbnRzIHRoYXQgdGhlCisgICAgLy8g
dXNlciBhZ2VudCBpcyBhYmxlIHRvIHNlZWsgdG8sIGF0IHRoZSB0aW1lIHRoZSBhdHRyaWJ1dGUg
aXMgZXZhbHVhdGVkLgorICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZVJhbmdlcyA9IG1f
bWVkaWFFbGVtZW50cy5maXJzdCgpLT5zZWVrYWJsZSgpOworICAgIGZvciAoc2l6ZV90IGluZGV4
ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBz
ZWVrYWJsZVJhbmdlcy0+aW50ZXJzZWN0V2l0aChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5zZWVr
YWJsZSgpLmdldCgpKTsKKyAgICByZXR1cm4gc2Vla2FibGVSYW5nZXM7Cit9CisKK1Bhc3NSZWZQ
dHI8VGltZVJhbmdlcz4gTWVkaWFDb250cm9sbGVyOjpwbGF5ZWQoKQoreworICAgIGlmIChtX21l
ZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRl
KCk7CisKKyAgICAvLyBUaGUgcGxheWVkIGF0dHJpYnV0ZSBtdXN0IHJldHVybiBhIG5ldyBzdGF0
aWMgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgCisgICAgLy8g
dGhlIHVuaW9uIG9mIHRoZSByYW5nZXMgb2YgdGhlIG1lZGlhIHJlc291cmNlcyBvZiB0aGUgc2xh
dmVkIG1lZGlhIGVsZW1lbnRzIHRoYXQgdGhlIAorICAgIC8vIHVzZXIgYWdlbnQgaGFzIHNvIGZh
ciByZW5kZXJlZCwgYXQgdGhlIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyBldmFsdWF0ZWQuCisgICAg
UmVmUHRyPFRpbWVSYW5nZXM+IHBsYXllZFJhbmdlcyA9IG1fbWVkaWFFbGVtZW50cy5maXJzdCgp
LT5wbGF5ZWQoKTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVs
ZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgcGxheWVkUmFuZ2VzLT51bmlvbldpdGgo
bV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+cGxheWVkKCkuZ2V0KCkpOworICAgIHJldHVybiBwbGF5
ZWRSYW5nZXM7Cit9CisKK2Zsb2F0IE1lZGlhQ29udHJvbGxlcjo6ZHVyYXRpb24oKSBjb25zdAor
eworICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBjYWNoaW5nIHRoZSBtYXhpbXVtIGR1cmF0aW9u
IGFuZCBvbmx5IHVwZGF0aW5nIHRoZSBjYWNoZWQgdmFsdWUKKyAgICAvLyB3aGVuIHRoZSBzbGF2
ZWQgbWVkaWEgZWxlbWVudHMnIGR1cmF0aW9ucyBjaGFuZ2UuCisgICAgZmxvYXQgbWF4RHVyYXRp
b24gPSAwOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVu
dHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUVs
ZW1lbnRzW2luZGV4XS0+ZHVyYXRpb247CisgICAgICAgIGlmIChpc25hbihkdXJhdGlvbikpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbWF4RHVyYXRpb24gPSBtYXgobWF4RHVyYXRp
b24sIGR1cmF0aW9uKTsKKyAgICB9CisgICAgcmV0dXJuIG1heER1cmF0aW9uOworfQorCitmbG9h
dCBNZWRpYUNvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKCkgY29uc3QKK3sKKyAgICBpZiAobV9tZWRp
YUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJu
IG1fY2xvY2stPmN1cnJlbnRUaW1lKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRD
dXJyZW50VGltZShmbG9hdCB0aW1lLCBFeGNlcHRpb25Db2RlJiBjb2RlKQoreworICAgIC8vIFdo
ZW4gdGhlIHVzZXIgYWdlbnQgaXMgdG8gc2VlayB0aGUgbWVkaWEgY29udHJvbGxlciB0byBhIHBh
cnRpY3VsYXIgbmV3IHBsYXliYWNrIHBvc2l0aW9uLCAKKyAgICAvLyBpdCBtdXN0IGZvbGxvdyB0
aGVzZSBzdGVwczoKKyAgICAvLyBJZiB0aGUgbmV3IHBsYXliYWNrIHBvc2l0aW9uIGlzIGxlc3Mg
dGhhbiB6ZXJvLCB0aGVuIHNldCBpdCB0byB6ZXJvLgorICAgIHRpbWUgPSBtYXgoMC4wZiwgdGlt
ZSk7CisgICAgCisgICAgLy8gSWYgdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbiBpcyBncmVhdGVy
IHRoYW4gdGhlIG1lZGlhIGNvbnRyb2xsZXIgZHVyYXRpb24sIHRoZW4gc2V0IGl0IAorICAgIC8v
IHRvIHRoZSBtZWRpYSBjb250cm9sbGVyIGR1cmF0aW9uLgorICAgIHRpbWUgPSBtaW4odGltZSwg
ZHVyYXRpb24oKSk7CisgICAgCisgICAgLy8gU2V0IHRoZSBtZWRpYSBjb250cm9sbGVyIHBvc2l0
aW9uIHRvIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24uCisgICAgbV9jbG9jay0+c2V0Q3VycmVu
dFRpbWUodGltZSk7CisgICAgCisgICAgLy8gU2VlayBlYWNoIHNsYXZlZCBtZWRpYSBlbGVtZW50
IHRvIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIG1lZGlhIGVsZW1l
bnQgdGltZWxpbmUuCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFF
bGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0t
PnNlZWsodGltZSwgY29kZSk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpwbGF5KCkKK3sK
KyAgICAvLyBXaGVuIHRoZSBwbGF5KCkgbWV0aG9kIGlzIGludm9rZWQsIGlmIHRoZSBNZWRpYUNv
bnRyb2xsZXIgaXMgYSBwYXVzZWQgbWVkaWEgY29udHJvbGxlciwKKyAgICBpZiAoIW1fcGF1c2Vk
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyB0aGUgdXNlciBhZ2VudCBtdXN0IGNoYW5nZSB0
aGUgTWVkaWFDb250cm9sbGVyIGludG8gYSBwbGF5aW5nIG1lZGlhIGNvbnRyb2xsZXIsCisgICAg
bV9wYXVzZWQgPSBmYWxzZTsKKyAgICAvLyBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBl
dmVudCBuYW1lZCBwbGF5IGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIsCisgICAgc2NoZWR1bGVFdmVu
dChldmVudE5hbWVzKCkucGxheUV2ZW50KTsKKyAgICAvLyBhbmQgdGhlbiByZXBvcnQgdGhlIGNv
bnRyb2xsZXIgc3RhdGUgb2YgdGhlIE1lZGlhQ29udHJvbGxlci4KKyAgICByZXBvcnRDb250cm9s
bGVyU3RhdGUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnBhdXNlKCkKK3sKKyAgICAv
LyBXaGVuIHRoZSBwYXVzZSgpIG1ldGhvZCBpcyBpbnZva2VkLCBpZiB0aGUgTWVkaWFDb250cm9s
bGVyIGlzIGEgcGxheWluZyBtZWRpYSBjb250cm9sbGVyLAorICAgIGlmIChtX3BhdXNlZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0IGNoYW5nZSB0
aGUgTWVkaWFDb250cm9sbGVyIGludG8gYSBwYXVzZWQgbWVkaWEgY29udHJvbGxlciwKKyAgICBt
X3BhdXNlZCA9IHRydWU7CisgICAgLy8gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZl
bnQgbmFtZWQgcGF1c2UgYXQgdGhlIE1lZGlhQ29udHJvbGxlciwKKyAgICBzY2hlZHVsZUV2ZW50
KGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsKKyAgICAvLyBhbmQgdGhlbiByZXBvcnQgdGhlIGNv
bnRyb2xsZXIgc3RhdGUgb2YgdGhlIE1lZGlhQ29udHJvbGxlci4KKyAgICByZXBvcnRDb250cm9s
bGVyU3RhdGUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldERlZmF1bHRQbGF5YmFj
a1JhdGUoZmxvYXQgcmF0ZSkKK3sKKyAgICBpZiAobV9kZWZhdWx0UGxheWJhY2tSYXRlID09IHJh
dGUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBkZWZhdWx0UGxheWJhY2tSYXRlIGF0
dHJpYnV0ZSwgb24gc2V0dGluZywgbXVzdCBzZXQgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1lZGlh
IGNvbnRyb2xsZXIKKyAgICAvLyBkZWZhdWx0IHBsYXliYWNrIHJhdGUgdG8gdGhlIG5ldyB2YWx1
ZSwKKyAgICBtX2RlZmF1bHRQbGF5YmFja1JhdGUgPSByYXRlOworCisgICAgLy8gdGhlbiBxdWV1
ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCByYXRlY2hhbmdlIGF0IHRoZSBN
ZWRpYUNvbnRyb2xsZXIuCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucmF0ZWNoYW5n
ZUV2ZW50KTsKK30KKworZmxvYXQgTWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUoKSBjb25z
dAoreworICAgIHJldHVybiBtX2Nsb2NrLT5wbGF5UmF0ZSgpOworfQorCit2b2lkIE1lZGlhQ29u
dHJvbGxlcjo6c2V0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUpCit7CisgICAgaWYgKG1fY2xvY2st
PnBsYXlSYXRlKCkgPT0gcmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhlIHBsYXli
YWNrUmF0ZSBhdHRyaWJ1dGUsIG9uIHNldHRpbmcsIG11c3Qgc2V0IHRoZSBNZWRpYUNvbnRyb2xs
ZXIncyBtZWRpYSBjb250cm9sbGVyIAorICAgIC8vIHBsYXliYWNrIHJhdGUgdG8gdGhlIG5ldyB2
YWx1ZSwKKyAgICBtX2Nsb2NrLT5zZXRQbGF5UmF0ZShyYXRlKTsKKworICAgIC8vIHRoZW4gcXVl
dWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcmF0ZWNoYW5nZSBhdCB0aGUg
TWVkaWFDb250cm9sbGVyLgorICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnJhdGVjaGFu
Z2VFdmVudCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUoZmxvYXQgbGV2
ZWwsIEV4Y2VwdGlvbkNvZGUmIGNvZGUpCit7CisgICAgaWYgKG1fdm9sdW1lID09IGxldmVsKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBJZiB0aGUgbmV3IHZhbHVlIGlzIG91dHNpZGUgdGhl
IHJhbmdlIDAuMCB0byAxLjAgaW5jbHVzaXZlLCB0aGVuLCBvbiBzZXR0aW5nLCBhbiAKKyAgICAv
LyBJbmRleFNpemVFcnJvciBleGNlcHRpb24gbXVzdCBiZSByYWlzZWQgaW5zdGVhZC4KKyAgICBp
ZiAobGV2ZWwgPCAwIHx8IGxldmVsID4gMSkgeworICAgICAgICBjb2RlID0gSU5ERVhfU0laRV9F
UlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIC8vIFRoZSB2b2x1bWUg
YXR0cmlidXRlLCBvbiBzZXR0aW5nLCBpZiB0aGUgbmV3IHZhbHVlIGlzIGluIHRoZSByYW5nZSAw
LjAgdG8gMS4wIGluY2x1c2l2ZSwKKyAgICAvLyBtdXN0IHNldCB0aGUgTWVkaWFDb250cm9sbGVy
J3MgbWVkaWEgY29udHJvbGxlciB2b2x1bWUgbXVsdGlwbGllciB0byB0aGUgbmV3IHZhbHVlCisg
ICAgbV92b2x1bWUgPSBsZXZlbDsKKworICAgIC8vIGFuZCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBh
IHNpbXBsZSBldmVudCBuYW1lZCB2b2x1bWVjaGFuZ2UgYXQgdGhlIE1lZGlhQ29udHJvbGxlci4K
KyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS52b2x1bWVjaGFuZ2VFdmVudCk7CisKKyAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsg
KytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+dXBkYXRlVm9sdW1lKCk7
Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZChib29sIGZsYWcpCit7CisgICAg
aWYgKG1fbXV0ZWQgPT0gZmxhZykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhlIG11dGVk
IGF0dHJpYnV0ZSwgb24gc2V0dGluZywgbXVzdCBzZXQgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1l
ZGlhIGNvbnRyb2xsZXIgbXV0ZSBvdmVycmlkZQorICAgIC8vIHRvIHRoZSBuZXcgdmFsdWUKKyAg
ICBtX211dGVkID0gZmxhZzsKKworICAgIC8vIGFuZCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNp
bXBsZSBldmVudCBuYW1lZCB2b2x1bWVjaGFuZ2UgYXQgdGhlIE1lZGlhQ29udHJvbGxlci4KKyAg
ICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS52b2x1bWVjaGFuZ2VFdmVudCk7CisKKyAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytp
bmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+dXBkYXRlVm9sdW1lKCk7Cit9
CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpyZXBvcnRDb250cm9sbGVyU3RhdGUoKQoreworICAg
IHVwZGF0ZVJlYWR5U3RhdGUoKTsKKyAgICB1cGRhdGVQbGF5YmFja1N0YXRlKCk7Cit9CisKK3Zv
aWQgTWVkaWFDb250cm9sbGVyOjp1cGRhdGVSZWFkeVN0YXRlKCkKK3sKKyAgICBSZWFkeVN0YXRl
IG9sZFJlYWR5U3RhdGUgPSBtX3JlYWR5U3RhdGU7CisgICAgUmVhZHlTdGF0ZSBuZXdSZWFkeVN0
YXRlOworCisgICAgCisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgLy8gSWYgdGhlIE1lZGlhQ29udHJvbGxlciBoYXMgbm8gc2xhdmVkIG1lZGlhIGVsZW1lbnRz
LCBsZXQgbmV3IHJlYWRpbmVzcyBzdGF0ZSBiZSAwLgorICAgICAgICBuZXdSZWFkeVN0YXRlID0g
SEFWRV9OT1RISU5HOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE90aGVyd2lzZSwgbGV0IGl0
IGhhdmUgdGhlIGxvd2VzdCB2YWx1ZSBvZiB0aGUgcmVhZHlTdGF0ZSBJREwgYXR0cmlidXRlcyBv
ZiBhbGwgb2YgaXRzCisgICAgICAgIC8vIHNsYXZlZCBtZWRpYSBlbGVtZW50cy4KKyAgICAgICAg
bmV3UmVhZHlTdGF0ZSA9IG1fbWVkaWFFbGVtZW50cy5maXJzdCgpLT5yZWFkeVN0YXRlKCk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6
ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IG1pbihuZXdSZWFkeVN0
YXRlLCBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5yZWFkeVN0YXRlKCkpOworICAgIH0KKworICAg
IC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtb3N0IHJlY2VudGx5IHJlcG9ydGVkIHJlYWRp
bmVzcyBzdGF0ZSBpcyBub3QgZXF1YWwgdG8gbmV3IHJlYWRpbmVzcyBzdGF0ZQorICAgIGlmIChu
ZXdSZWFkeVN0YXRlID09IG9sZFJlYWR5U3RhdGUpIAorICAgICAgICByZXR1cm47CisKKyAgICAv
LyB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IGF0IHRoZSBNZWRpYUNv
bnRyb2xsZXIgb2JqZWN0LCB3aG9zZSBuYW1lIGlzIHRoZQorICAgIC8vIGV2ZW50IG5hbWUgY29y
cmVzcG9uZGluZyB0byB0aGUgdmFsdWUgb2YgbmV3IHJlYWRpbmVzcyBzdGF0ZSBnaXZlbiBpbiB0
aGUgdGFibGUgYmVsb3cgKG9tbWl0dGVkKQorICAgIEF0b21pY1N0cmluZyBldmVudE5hbWU7Cisg
ICAgc3dpdGNoIChuZXdSZWFkeVN0YXRlKSB7CisgICAgY2FzZSBIQVZFX05PVEhJTkc6CisgICAg
ICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5lbXB0aWVkRXZlbnQ7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSEFWRV9NRVRBREFUQToKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1l
cygpLmxvYWRlZG1ldGFkYXRhRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSEFWRV9D
VVJSRU5UX0RBVEE6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5sb2FkZWRkYXRh
RXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSEFWRV9GVVRVUkVfREFUQToKKyAgICAg
ICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLmNhbnBsYXlFdmVudDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBIQVZFX0VOT1VHSF9EQVRBOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5h
bWVzKCkuY2FucGxheXRocm91Z2hFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHNjaGVkdWxlRXZlbnQo
ZXZlbnROYW1lKTsKKworICAgIC8vIExldCB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbW9zdCByZWNl
bnRseSByZXBvcnRlZCByZWFkaW5lc3Mgc3RhdGUgYmUgbmV3IHJlYWRpbmVzcyBzdGF0ZS4KKyAg
ICBtX3JlYWR5U3RhdGUgPSBuZXdSZWFkeVN0YXRlOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxl
cjo6dXBkYXRlUGxheWJhY2tTdGF0ZSgpCit7CisgICAgUGxheWJhY2tTdGF0ZSBvbGRQbGF5YmFj
a1N0YXRlID0gbV9wbGF5YmFja1N0YXRlOworICAgIFBsYXliYWNrU3RhdGUgbmV3UGxheWJhY2tT
dGF0ZTsKKworICAgIC8vIEluaXRpYWxpemUgbmV3IHBsYXliYWNrIHN0YXRlIGJ5IHNldHRpbmcg
aXQgdG8gdGhlIHN0YXRlIGdpdmVuIGZvciB0aGUgZmlyc3QgbWF0Y2hpbmcgCisgICAgLy8gY29u
ZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgorICAgIGlmIChtX21lZGlhRWxlbWVudHMu
aXNFbXB0eSgpKSB7CisgICAgICAgIC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIgaGFzIG5vIHNs
YXZlZCBtZWRpYSBlbGVtZW50cworICAgICAgICAvLyBMZXQgbmV3IHBsYXliYWNrIHN0YXRlIGJl
IHdhaXRpbmcuCisgICAgICAgIG5ld1BsYXliYWNrU3RhdGUgPSBXQUlUSU5HOworICAgIH0gZWxz
ZSBpZiAoaGFzRW5kZWQoKSkgeworICAgICAgICAvLyBJZiBhbGwgb2YgdGhlIE1lZGlhQ29udHJv
bGxlcidzIHNsYXZlZCBtZWRpYSBlbGVtZW50cyBoYXZlIGVuZGVkIHBsYXliYWNrIGFuZCB0aGUg
bWVkaWEKKyAgICAgICAgLy8gY29udHJvbGxlciBwbGF5YmFjayByYXRlIGlzIHBvc2l0aXZlIG9y
IHplcm8KKyAgICAgICAgLy8gTGV0IG5ldyBwbGF5YmFjayBzdGF0ZSBiZSBlbmRlZC4KKyAgICAg
ICAgbmV3UGxheWJhY2tTdGF0ZSA9IEVOREVEOworICAgIH0gZWxzZSBpZiAoaXNCbG9ja2VkKCkp
IHsKKyAgICAgICAgLy8gSWYgdGhlIE1lZGlhQ29udHJvbGxlciBpcyBhIGJsb2NrZWQgbWVkaWEg
Y29udHJvbGxlcgorICAgICAgICAvLyBMZXQgbmV3IHBsYXliYWNrIHN0YXRlIGJlIHdhaXRpbmcu
CisgICAgICAgIG5ld1BsYXliYWNrU3RhdGUgPSBXQUlUSU5HOworICAgIH0gZWxzZSB7CisgICAg
ICAgIC8vIE90aGVyd2lzZQorICAgICAgICAvLyBMZXQgbmV3IHBsYXliYWNrIHN0YXRlIGJlIHBs
YXlpbmcuCisgICAgICAgIG5ld1BsYXliYWNrU3RhdGUgPSBQTEFZSU5HOworICAgIH0KKworICAg
IC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtb3N0IHJlY2VudGx5IHJlcG9ydGVkIHBsYXli
YWNrIHN0YXRlIGlzIG5vdCBlcXVhbCB0byBuZXcgcGxheWJhY2sgc3RhdGUKKyAgICBpZiAobmV3
UGxheWJhY2tTdGF0ZSA9PSBvbGRQbGF5YmFja1N0YXRlKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBhbmQgdGhlIG5ldyBwbGF5YmFjayBzdGF0ZSBpcyBlbmRlZCwKKyAgICBpZiAobmV3UGxh
eWJhY2tTdGF0ZSA9PSBFTkRFRCkgeworICAgICAgICAvLyB0aGVuIHF1ZXVlIGEgdGFzayB0aGF0
LCBpZiB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCBpcyBhIHBsYXlpbmcgbWVkaWEgY29udHJv
bGxlciwgYW5kIAorICAgICAgICAvLyBhbGwgb2YgdGhlIE1lZGlhQ29udHJvbGxlcidzIHNsYXZl
ZCBtZWRpYSBlbGVtZW50cyBoYXZlIHN0aWxsIGVuZGVkIHBsYXliYWNrLCBhbmQgdGhlIAorICAg
ICAgICAvLyBtZWRpYSBjb250cm9sbGVyIHBsYXliYWNrIHJhdGUgaXMgc3RpbGwgcG9zaXRpdmUg
b3IgemVybywgCisgICAgICAgIGlmICghbV9wYXVzZWQgJiYgaGFzRW5kZWQoKSkgeworICAgICAg
ICAgICAgLy8gY2hhbmdlcyB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCB0byBhIHBhdXNlZCBt
ZWRpYSBjb250cm9sbGVyCisgICAgICAgICAgICBtX3BhdXNlZCA9IHRydWU7CisgICAgICAgICAg
ICBtX2Nsb2NrLT5zdG9wKCk7CisKKyAgICAgICAgICAgIC8vIGFuZCB0aGVuIGZpcmVzIGEgc2lt
cGxlIGV2ZW50IG5hbWVkIHBhdXNlIGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIgb2JqZWN0LgorICAg
ICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGF1c2VFdmVudCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBJZiB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbW9zdCByZWNlbnRs
eSByZXBvcnRlZCBwbGF5YmFjayBzdGF0ZSBpcyBub3QgZXF1YWwgdG8gbmV3IHBsYXliYWNrIHN0
YXRlCisgICAgLy8gdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBhdCB0
aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCwgd2hvc2UgbmFtZSBpcyBwbGF5aW5nIAorICAgIC8v
IGlmIG5ldyBwbGF5YmFjayBzdGF0ZSBpcyBwbGF5aW5nLCBlbmRlZCBpZiBuZXcgcGxheWJhY2sg
c3RhdGUgaXMgZW5kZWQsIGFuZCB3YWl0aW5nIG90aGVyd2lzZS4KKyAgICBBdG9taWNTdHJpbmcg
ZXZlbnROYW1lOworICAgIHN3aXRjaCAobmV3UGxheWJhY2tTdGF0ZSkgeworICAgIGNhc2UgV0FJ
VElORzoKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLndhaXRpbmdFdmVudDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBFTkRFRDoKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnRO
YW1lcygpLmVuZGVkRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUExBWUlORzoKKyAg
ICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLnBsYXlpbmdFdmVudDsKKyAgICAgICAgbV9j
bG9jay0+c3RhcnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lKTsK
KworICAgIC8vIExldCB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbW9zdCByZWNlbnRseSByZXBvcnRl
ZCBwbGF5YmFjayBzdGF0ZSBiZSBuZXcgcGxheWJhY2sgc3RhdGUuCisgICAgbV9wbGF5YmFja1N0
YXRlID0gbmV3UGxheWJhY2tTdGF0ZTsKKworICAgIHVwZGF0ZU1lZGlhRWxlbWVudHMoKTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVwZGF0ZU1lZGlhRWxlbWVudHMoKQoreworICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2lu
ZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT51cGRhdGVQbGF5U3RhdGUoKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmJyaW5nRWxlbWVudFVwVG9TcGVlZChIVE1MTWVk
aWFFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICBBU1NFUlQo
bV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKGVsZW1lbnQpKTsKKworICAgIC8vIFdoZW4gdGhlIHVz
ZXIgYWdlbnQgaXMgdG8gYnJpbmcgYSBtZWRpYSBlbGVtZW50IHVwIHRvIHNwZWVkIHdpdGggaXRz
IG5ldyBtZWRpYSBjb250cm9sbGVyLAorICAgIC8vIGl0IG11c3Qgc2VlayB0aGF0IG1lZGlhIGVs
ZW1lbnQgdG8gdGhlIE1lZGlhQ29udHJvbGxlcidzIG1lZGlhIGNvbnRyb2xsZXIgcG9zaXRpb24g
cmVsYXRpdmUKKyAgICAvLyB0byB0aGUgbWVkaWEgZWxlbWVudCdzIHRpbWVsaW5lLgorICAgIEV4
Y2VwdGlvbkNvZGUgaWdub3JlZENvZGUgPSAwOworICAgIGVsZW1lbnQtPnNlZWsoY3VycmVudFRp
bWUoKSwgaWdub3JlZENvZGUpOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6aXNCbG9ja2Vk
KCkgY29uc3QKK3sKKyAgICAvLyBBIE1lZGlhQ29udHJvbGxlciBpcyBhIGJsb2NrZWQgbWVkaWEg
Y29udHJvbGxlciBpZiB0aGUgTWVkaWFDb250cm9sbGVyIGlzIGEgcGF1c2VkIG1lZGlhIAorICAg
IC8vIGNvbnRyb2xsZXIsCisgICAgaWYgKG1fcGF1c2VkKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIGJvb2wgYWxsUGF1c2VkID0gdHJ1ZTsKKyAgICBmb3IgKHNpemVf
dCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgewor
ICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0gbV9tZWRpYUVsZW1lbnRzW2luZGV4
XTsKKyAgICAgICAgLy8gIG9yIGlmIGFueSBvZiBpdHMgc2xhdmVkIG1lZGlhIGVsZW1lbnRzIGFy
ZSBibG9ja2VkIG1lZGlhIGVsZW1lbnRzLAorICAgICAgICBpZiAoZWxlbWVudC0+aXNCbG9ja2Vk
KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIC8vIG9yIGlm
IGFueSBvZiBpdHMgc2xhdmVkIG1lZGlhIGVsZW1lbnRzIHdob3NlIGF1dG9wbGF5aW5nIGZsYWcg
aXMgdHJ1ZSBzdGlsbCBoYXZlIHRoZWlyIAorICAgICAgICAvLyBwYXVzZWQgYXR0cmlidXRlIHNl
dCB0byB0cnVlLAorICAgICAgICBpZiAoZWxlbWVudC0+YXV0b3BsYXkoKSAmJiBlbGVtZW50LT5w
YXVzZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAKKyAgICAgICAgaWYg
KCFlbGVtZW50LT5wYXVzZWQoKSkKKyAgICAgICAgICAgIGFsbFBhdXNlZCA9IGZhbHNlOworICAg
IH0KKyAgICAKKyAgICAvLyBvciBpZiBhbGwgb2YgaXRzIHNsYXZlZCBtZWRpYSBlbGVtZW50cyBo
YXZlIHRoZWlyIHBhdXNlZCBhdHRyaWJ1dGUgc2V0IHRvIHRydWUuCisgICAgcmV0dXJuIGFsbFBh
dXNlZDsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6Omhhc0VuZGVkKCkgY29uc3QKK3sKKyAg
ICBpZiAobV9jbG9jay0+cGxheVJhdGUoKSA8PSAwKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICBib29sIGFsbEhhdmVFbmRlZCA9IHRydWU7CisgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsK
KyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5lbmRlZCgpKQorICAgICAgICAg
ICAgYWxsSGF2ZUVuZGVkID0gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBhbGxIYXZlRW5kZWQ7
Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnROYW1lKQoreworICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWUsIGZhbHNlLCB0cnVlKSk7CisgICAgaWYgKCFtX2FzeW5jRXZlbnRUaW1l
ci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2FzeW5jRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7
Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxN
ZWRpYUNvbnRyb2xsZXI+KikKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IHBlbmRpbmdF
dmVudHM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgCisgICAgbV9wZW5kaW5nRXZl
bnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7CisgICAgc2l6ZV90IGNvdW50ID0gcGVuZGluZ0V2ZW50
cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2lu
ZGV4KQorICAgICAgICBkaXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVudHNbaW5kZXhdLnJlbGVhc2Uo
KSwgZWMpOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBNZWRpYUNvbnRyb2xsZXI6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIGlmIChtX21lZGlhRWxlbWVudHMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnRz
LmZpcnN0KCktPmRvY3VtZW50KCk7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpoYXNBdWRp
bygpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFF
bGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKG1fbWVkaWFFbGVtZW50c1tp
bmRleF0tPmhhc0F1ZGlvKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6aGFzVmlkZW8oKSBjb25z
dAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMu
c2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5o
YXNWaWRlbygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29u
c3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRz
LnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+
aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0
aW9uc1Zpc2libGUoYm9vbCB2aXNpYmxlKQoreworICAgIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxl
ID0gdmlzaWJsZTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVs
ZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+
c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKHZpc2libGUpOworfQorCitib29sIE1lZGlhQ29udHJv
bGxlcjo6c3VwcG9ydHNTY2FubmluZygpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXgg
PSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAg
aWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5zdXBwb3J0c1NjYW5uaW5nKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1l
ZGlhQ29udHJvbGxlcjo6YmVnaW5TY3J1YmJpbmcoKQoreworICAgIGZvciAoc2l6ZV90IGluZGV4
ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBt
X21lZGlhRWxlbWVudHNbaW5kZXhdLT5iZWdpblNjcnViYmluZygpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbGxlcjo6ZW5kU2NydWJiaW5nKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRp
YUVsZW1lbnRzW2luZGV4XS0+ZW5kU2NydWJiaW5nKCk7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9s
bGVyOjpjYW5QbGF5KCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4
IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAoIW1fbWVk
aWFFbGVtZW50c1tpbmRleF0tPmNhblBsYXkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjppc0xp
dmVTdHJlYW0oKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBt
X21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmICghbV9tZWRpYUVs
ZW1lbnRzW2luZGV4XS0+aXNMaXZlU3RyZWFtKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6aGFz
U291cmNlKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9t
ZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAoIW1fbWVkaWFFbGVt
ZW50c1tpbmRleF0tPmhhc1NvdXJjZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnJldHVyblRv
UmVhbHRpbWUoKQoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlh
RWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhd
LT5yZXR1cm5Ub1JlYWx0aW1lKCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250
cm9sbGVyOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygp
LmludGVyZmFjZUZvck1lZGlhQ29udHJvbGxlcjsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODVlZjI5YTIzZGI5OWQ2ZmU0Yzg2MDQy
MjhmOTE5Mzc3MDk2ZmU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDE1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1l
ZGlhQ29udHJvbGxlcl9oCisjZGVmaW5lIE1lZGlhQ29udHJvbGxlcl9oCisKKyNpZiBFTkFCTEUo
VklERU8pCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFdmVudC5o
IgorI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgor
I2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIgorI2luY2x1ZGUgIlRpbWVyLmgi
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBDbG9jazsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBFdmVudDsKKworY2xhc3Mg
TWVkaWFDb250cm9sbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFDb250cm9sbGVyPiwgcHVi
bGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSwgcHVibGljIEV2ZW50VGFyZ2V0IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IG1lZGlhQ29udHJvbGxl
ckZvck1lZGlhR3JvdXAoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sbGVyPiBjcmVhdGUoKTsKKyAgICB2aXJ0dWFsIH5NZWRpYUNvbnRyb2xsZXIoKTsK
KworICAgIHZvaWQgYWRkTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICB2b2lk
IHJlbW92ZU1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgYm9vbCBjb250YWlu
c01lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KikgY29uc3Q7CisKKyAgICBjb25zdCBTdHJp
bmcmIG1lZGlhR3JvdXAoKSBjb25zdCB7IHJldHVybiBtX21lZGlhR3JvdXA7IH0KKyAgICAKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gcGxheWVkKCk7CisgICAgCisgICAgdmlydHVhbCBm
bG9hdCBkdXJhdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFRpbWUoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgcGF1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9w
YXVzZWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGxheSgpOworICAgIHZpcnR1YWwgdm9pZCBwYXVz
ZSgpOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRE
ZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0KTsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IHBsYXli
YWNrUmF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQp
OworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92b2x1
bWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7
CisgICAgCisgICAgdmlydHVhbCBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29sKTsKKyAgICAKKyAgICB2aXJ0dWFsIFJl
YWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQorCisg
ICAgZW51bSBQbGF5YmFja1N0YXRlIHsgV0FJVElORywgUExBWUlORywgRU5ERUQgfTsKKyAgICB2
aXJ0dWFsIFBsYXliYWNrU3RhdGUgcGxheWJhY2tTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
eWJhY2tTdGF0ZTsgfQorCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRnVsbHNjcmVlbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigp
IHsgfQorCisgICAgdmlydHVhbCBib29sIGhhc0F1ZGlvKCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGhhc1ZpZGVvKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc0Nsb3NlZENhcHRpb25z
KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29s
KTsKKyAgICB2aXJ0dWFsIGJvb2wgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9jbG9zZWRDYXB0aW9uc1Zpc2libGU7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNTY2FubmluZygpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjcnVi
YmluZygpOworICAgIHZpcnR1YWwgdm9pZCBlbmRTY3J1YmJpbmcoKTsKKyAgICAKKyAgICB2aXJ0
dWFsIGJvb2wgY2FuUGxheSgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVT
dHJlYW0oKSBjb25zdDsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaGFzU291cmNlKCkgY29uc3Q7
CisgICAgCisgICAgdmlydHVhbCB2b2lkIHJldHVyblRvUmVhbHRpbWUoKTsKKworICAgIGJvb2wg
aXNCbG9ja2VkKCkgY29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHVzaW5nIFJlZkNv
dW50ZWQ8TWVkaWFDb250cm9sbGVyPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFD
b250cm9sbGVyPjo6ZGVyZWY7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sbGVyKCk7Cisg
ICAgdm9pZCByZXBvcnRDb250cm9sbGVyU3RhdGUoKTsKKyAgICB2b2lkIHVwZGF0ZVJlYWR5U3Rh
dGUoKTsKKyAgICB2b2lkIHVwZGF0ZVBsYXliYWNrU3RhdGUoKTsKKyAgICB2b2lkIHVwZGF0ZU1l
ZGlhRWxlbWVudHMoKTsKKyAgICB2b2lkIGJyaW5nRWxlbWVudFVwVG9TcGVlZChIVE1MTWVkaWFF
bGVtZW50Kik7CisgICAgdm9pZCBzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnROYW1lKTsKKyAgICB2b2lkIGFzeW5jRXZlbnRUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJv
bGxlcj4qKTsKKyAgICBib29sIGhhc0VuZGVkKCkgY29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdl
dAorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisgICAg
dmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2
ZW50VGFyZ2V0RGF0YTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVu
dFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKyAgICBFdmVudFRh
cmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CisKKyAgICBmcmllbmQgY2xhc3MgSFRNTE1lZGlh
RWxlbWVudDsKKyAgICBmcmllbmQgY2xhc3MgTWVkaWFDb250cm9sbGVyRXZlbnRMaXN0ZW5lcjsK
KyAgICBWZWN0b3I8SFRNTE1lZGlhRWxlbWVudCo+IG1fbWVkaWFFbGVtZW50czsKKyAgICBib29s
IG1fcGF1c2VkOworICAgIGZsb2F0IG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsKKyAgICBmbG9hdCBt
X3ZvbHVtZTsKKyAgICBib29sIG1fbXV0ZWQ7CisgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7
CisgICAgUGxheWJhY2tTdGF0ZSBtX3BsYXliYWNrU3RhdGU7CisgICAgVmVjdG9yPFJlZlB0cjxF
dmVudD4gPiBtX3BlbmRpbmdFdmVudHM7CisgICAgVGltZXI8TWVkaWFDb250cm9sbGVyPiBtX2Fz
eW5jRXZlbnRUaW1lcjsKKyAgICBTdHJpbmcgbV9tZWRpYUdyb3VwOworICAgIGJvb2wgbV9jbG9z
ZWRDYXB0aW9uc1Zpc2libGU7CisgICAgUGFzc1JlZlB0cjxDbG9jaz4gbV9jbG9jazsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFDb250cm9sbGVyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGIyYTFmZDhjYjk0NDA4YTM4ZGFi
Yjk1NjNlYmZhNWY3MzhmYzUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUNvbnRyb2xsZXIuaWRsCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUg
aHRtbCB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9VklERU8sCisgICAg
ICAgIENhbkJlQ29uc3RydWN0ZWQsCisgICAgICAgIEdlbmVyYXRlVG9KUywKKyAgICAgICAgRXZl
bnRUYXJnZXQKKyAgICBdIE1lZGlhQ29udHJvbGxlciB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBUaW1lUmFuZ2VzIGJ1ZmZlcmVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGlt
ZVJhbmdlcyBzZWVrYWJsZTsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGR1
cmF0aW9uOworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIGN1cnJlbnRUaW1lCisgICAgICAgICAg
ICBzZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIHBhdXNlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRpbWVSYW5n
ZXMgcGxheWVkOworICAgICAgICB2b2lkIHBsYXkoKTsKKyAgICAgICAgdm9pZCBwYXVzZSgpOwor
CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgZGVmYXVsdFBsYXliYWNrUmF0ZTsKKyAgICAgICAg
YXR0cmlidXRlIGRvdWJsZSBwbGF5YmFja1JhdGU7CisKKyAgICAgICAgYXR0cmlidXRlIGRvdWJs
ZSB2b2x1bWUKKyAgICAgICAgICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAg
ICAgIGF0dHJpYnV0ZSBib29sZWFuIG11dGVkOworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGlu
dGVyZmFjZQorICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUs
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5l
ciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4g
dXNlQ2FwdHVyZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJp
bmcgdHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3Rl
bmVyIGxpc3RlbmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRp
b25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50
KGluIEV2ZW50IGV2dCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisgICAg
fTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVySW50
ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlckludGVyZmFjZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjcyY2Q0ZGE0MWFmNDJmNWRhMmFlNWRmOTc3OGM0Yjg2YjdjMzU0MDAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlckludGVy
ZmFjZS5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYUNvbnRyb2xs
ZXJJbnRlcmZhY2VfaAorI2RlZmluZSBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2VfaAorCisjaWYg
RU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBUaW1lUmFuZ2VzOworCit0eXBlZGVmIGludCBFeGNlcHRpb25D
b2RlOworCitjbGFzcyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UgeworcHVibGljOgorICAgIHZp
cnR1YWwgfk1lZGlhQ29udHJvbGxlckludGVyZmFjZSgpIHsgfTsKKyAgICAKKyAgICAvLyBNZWRp
YUNvbnRyb2xsZXIgSURMOgorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZm
ZXJlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc2Vl
a2FibGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHBs
YXllZCgpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IGR1cmF0aW9uKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldEN1cnJlbnRUaW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIAor
ICAgIHZpcnR1YWwgYm9vbCBwYXVzZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBs
YXkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgPSAwOworICAgIAorICAgIHZpcnR1
YWwgZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCkgPSAwOworICAgIAorICAgIHZpcnR1YWwg
ZmxvYXQgcGxheWJhY2tSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5
YmFja1JhdGUoZmxvYXQpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IHZvbHVtZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0LCBFeGNlcHRpb25Db2Rl
JikgPSAwOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBtdXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0TXV0ZWQoYm9vbCkgPSAwOworICAgIAorICAgIGVudW0gUmVhZHlTdGF0
ZSB7IEhBVkVfTk9USElORywgSEFWRV9NRVRBREFUQSwgSEFWRV9DVVJSRU5UX0RBVEEsIEhBVkVf
RlVUVVJFX0RBVEEsIEhBVkVfRU5PVUdIX0RBVEEgfTsKKyAgICB2aXJ0dWFsIFJlYWR5U3RhdGUg
cmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKKworICAgIC8vIE1lZGlhQ29udHJvbEVsZW1lbnRzOgor
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW50
ZXJGdWxsc2NyZWVuKCkgPSAwOworCisgICAgdmlydHVhbCBib29sIGhhc0F1ZGlvKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dENsb3NlZENhcHRpb25zVmlzaWJsZShib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNsb3Nl
ZENhcHRpb25zVmlzaWJsZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c1NjYW5uaW5nKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGJlZ2luU2NydWJiaW5n
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRTY3J1YmJpbmcoKSA9IDA7CisKKyAgICB2aXJ0
dWFsIGJvb2wgY2FuUGxheSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVT
dHJlYW0oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzU291cmNlKCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIHJldHVyblRvUmVhbHRpbWUoKSA9IDA7Cit9OworCit9
CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVS
YW5nZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcAppbmRleCAxZTE4
MzA2OTg3NzE0YjBlOTliMmQ1MzViYzRiNDdjZTNjY2M4NzgyLi5iYjFiMGZkNTg3MTI0N2IxZjhj
YTUyZThlZjdlMDM2N2IwZTg0ZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rp
bWVSYW5nZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAKQEAg
LTMwLDEzICszMCwxNCBAQAogI2luY2x1ZGUgPG1hdGguaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBUaW1lUmFuZ2VzOjpUaW1lUmFuZ2VzKGZs
b2F0IHN0YXJ0LCBmbG9hdCBlbmQpCiB7CiAgICAgYWRkKHN0YXJ0LCBlbmQpOwogfQogCi1QYXNz
UmVmUHRyPFRpbWVSYW5nZXM+IFRpbWVSYW5nZXM6OmNvcHkoKQorUGFzc1JlZlB0cjxUaW1lUmFu
Z2VzPiBUaW1lUmFuZ2VzOjpjb3B5KCkgY29uc3QKIHsKICAgICBSZWZQdHI8VGltZVJhbmdlcz4g
bmV3U2Vzc2lvbiA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwogICAgIApAQCAtNDcsNiArNDgsNTEg
QEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1lUmFuZ2VzOjpjb3B5KCkKICAgICByZXR1cm4g
bmV3U2Vzc2lvbi5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgVGltZVJhbmdlczo6aW52ZXJ0KCkKK3sK
KyAgICBSZWZQdHI8VGltZVJhbmdlcz4gaW52ZXJ0ZWQgPSBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsK
KyAgICBmbG9hdCBwb3NJbmYgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHko
KTsKKyAgICBmbG9hdCBuZWdJbmYgPSAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmlu
aXR5KCk7CisKKyAgICBpZiAoIW1fcmFuZ2VzLnNpemUoKSkKKyAgICAgICAgaW52ZXJ0ZWQtPmFk
ZChuZWdJbmYsIHBvc0luZik7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChmbG9hdCBzdGFydCA9
IG1fcmFuZ2VzLmZpcnN0KCkubV9zdGFydCAhPSBuZWdJbmYpCisgICAgICAgICAgICBpbnZlcnRl
ZC0+YWRkKG5lZ0luZiwgc3RhcnQpOworCisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsg
aW5kZXggKyAxIDwgbV9yYW5nZXMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgaW52ZXJ0
ZWQtPmFkZChtX3Jhbmdlc1tpbmRleF0ubV9lbmQsIG1fcmFuZ2VzW2luZGV4ICsgMV0ubV9zdGFy
dCk7CisKKyAgICAgICAgaWYgKGZsb2F0IGVuZCA9IG1fcmFuZ2VzLmxhc3QoKS5tX2VuZCAhPSBw
b3NJbmYpCisgICAgICAgICAgICBpbnZlcnRlZC0+YWRkKGVuZCwgcG9zSW5mKTsKKyAgICB9CisK
KyAgICBtX3Jhbmdlcy5zd2FwKGludmVydGVkLT5tX3Jhbmdlcyk7Cit9CisKK3ZvaWQgVGltZVJh
bmdlczo6aW50ZXJzZWN0V2l0aChjb25zdCBUaW1lUmFuZ2VzKiBvdGhlcikKK3sKKyAgICBBU1NF
UlQob3RoZXIpOworICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBpbnZlcnRlZCA9IGNvcHkoKTsKKyAg
ICBSZWZQdHI8VGltZVJhbmdlcz4gaW52ZXJ0ZWRPdGhlciA9IG90aGVyLT5jb3B5KCk7CisgICAg
aW52ZXJ0ZWQtPnVuaW9uV2l0aChpbnZlcnRlZE90aGVyLmdldCgpKTsKKyAgICBpbnZlcnRlZC0+
aW52ZXJ0KCk7CisKKyAgICBtX3Jhbmdlcy5zd2FwKGludmVydGVkLT5tX3Jhbmdlcyk7Cit9CisK
K3ZvaWQgVGltZVJhbmdlczo6dW5pb25XaXRoKGNvbnN0IFRpbWVSYW5nZXMqIG90aGVyKQorewor
ICAgIEFTU0VSVChvdGhlcik7CisgICAgUmVmUHRyPFRpbWVSYW5nZXM+IHVuaW9uZWQgPSBjb3B5
KCk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG90aGVyLT5tX3Jhbmdlcy5z
aXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgY29uc3QgUmFuZ2UmIHJhbmdlID0gb3RoZXItPm1f
cmFuZ2VzW2luZGV4XTsKKyAgICAgICAgdW5pb25lZC0+YWRkKHJhbmdlLm1fc3RhcnQsIHJhbmdl
Lm1fZW5kKTsKKyAgICB9CisKKyAgICBtX3Jhbmdlcy5zd2FwKHVuaW9uZWQtPm1fcmFuZ2VzKTsK
K30KKwogZmxvYXQgVGltZVJhbmdlczo6c3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdCAKIHsgCiAgICAgaWYgKGluZGV4ID49IGxlbmd0aCgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGltZVJhbmdlcy5oCmluZGV4IDJkN2FmMjVhODA5MTM3MzBmODBkMjM5MzBiZTI3NGUwZmYx
MjE3ZmQuLmNjY2NlMDVjMTljNGFjOWU2MjlkZDJhMmExZmI2NjUyMTk3ODEwZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGltZVJhbmdlcy5oCkBAIC00Niw3ICs0NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVGltZVJhbmdlcyhzdGFydCwgZW5kKSk7CiAgICAgfQogCi0gICAg
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBjb3B5KCk7CisgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2Vz
PiBjb3B5KCkgY29uc3Q7CisgICAgdm9pZCBpbnZlcnQoKTsKKyAgICB2b2lkIGludGVyc2VjdFdp
dGgoY29uc3QgVGltZVJhbmdlcyopOworICAgIHZvaWQgdW5pb25XaXRoKGNvbnN0IFRpbWVSYW5n
ZXMqKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VzLnNp
emUoKTsgfQogICAgIGZsb2F0IHN0YXJ0KHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJikg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggNGU4ZjA2NzBmOWYyNzZhMGM2
NDNlMmIyMWMwZWMyYWZjNWM0MzM4Ni4uZDJmNWRiYzFkMWIyMjFmOTgyYmU5M2JhOGIwZjg5MjAw
NTMxODVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtNjM0LDYgKzYzNCw3IEBA
IG1vZHVsZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVZJREVPLCBF
bmFibGVkQXRSdW50aW1lXSBNZWRpYUVycm9yQ29uc3RydWN0b3IgTWVkaWFFcnJvcjsKICAgICAg
ICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1WSURFTywgRW5hYmxlZEF0UnVudGltZV0gVGltZVJh
bmdlc0NvbnN0cnVjdG9yIFRpbWVSYW5nZXM7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9u
YWw9VklERU8sIEVuYWJsZWRBdFJ1bnRpbWVdIEhUTUxTb3VyY2VFbGVtZW50Q29uc3RydWN0b3Ig
SFRNTFNvdXJjZUVsZW1lbnQ7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU8s
IEVuYWJsZWRBdFJ1bnRpbWVdIE1lZGlhQ29udHJvbGxlckNvbnN0cnVjdG9yIE1lZGlhQ29udHJv
bGxlcjsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICYmIEVOQUJMRV9BTklN
QVRJT05fQVBJCiAgICAgICAgIGF0dHJpYnV0ZSBXZWJLaXRBbmltYXRpb25Db25zdHJ1Y3RvciBX
ZWJLaXRBbmltYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKaW5kZXggMDE4YzdkZDMzZTM4YzFiOGY3NzM0NWE4YzNlNGY4MzVmZWM2
MGE3My4uZmM3N2ZmMjg4MzhiN2MwOTRhYTUzYTRmYmRmMDcxNjgwY2EyMjEzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtNjA5
LDYgKzYwOSwxMSBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxheWVyOjpidWZmZXJl
ZCgpCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YnVmZmVyZWQoKTsKIH0KIAorUGFzc1JlZlB0cjxU
aW1lUmFuZ2VzPiBNZWRpYVBsYXllcjo6c2Vla2FibGUoKQoreworICAgIHJldHVybiBtX3ByaXZh
dGUtPnNlZWthYmxlKCk7Cit9CisKIGZsb2F0IE1lZGlhUGxheWVyOjptYXhUaW1lU2Vla2FibGUo
KQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPm1heFRpbWVTZWVrYWJsZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggYzk2YjAyNWQ4
MmQwMDcwOTE2OWVlYTUxYzA3ODI2Yjc0NTA2YzQ3MS4uNDc3MzlhMDhiMGUzZDljYzczYzk5YTEz
MTQzNGE3OGFlMDM3NDU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCkBAIC0yNDEsNiArMjQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
UHJlc2VydmVzUGl0Y2goYm9vbCk7CiAKICAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZl
cmVkKCk7CisgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpOwogICAgIGZsb2F0
IG1heFRpbWVTZWVrYWJsZSgpOwogCiAgICAgdW5zaWduZWQgYnl0ZXNMb2FkZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmgKaW5kZXggZjhjNzBhYmUyOGE3ZWQwMWRmYjhhMmNiN2YxYzYzNjYzN2QzODQ0MS4uNmM1Mjdk
N2U1Y2QzODk5OTE2YjQ2NWVmNzJkNTcxNDQwNTZlZDdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTI5LDYg
KzI5LDcgQEAKICNpZiBFTkFCTEUoVklERU8pCiAKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgor
I2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC05MSw2ICs5Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKIAor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1heFRpbWVTZWVrYWJsZSgpID8gVGltZVJhbmdlczo6Y3JlYXRlKDAsIG1heFRpbWVTZWVr
YWJsZSgpKSA6IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOyB9CiAgICAgdmlydHVhbCBmbG9hdCBtYXhU
aW1lU2Vla2FibGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IGJ1ZmZlcmVkKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmUyNWVjMzFjNzljZjQyNWVmYjZk
NTY2YWRhZmQ0OGQzOTkzYzMzMy4uMTlhMDQ4NTU5NjA2ZDlmZjgzNTQ5MWY3YzNkMzUzY2Q3YWVj
MWQ0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDExLTExLTAzICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNvbnRyb2xsZXIuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTQwOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvbWVk
aWEtY29udHJvbGxlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlh
LWNvbnRyb2xsZXItcGxheWJhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRp
YS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlh
L21lZGlhLWNvbnRyb2xsZXIuaHRtbDogQWRkZWQuCisKKzIwMTEtMTEtMDMgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IE1lZGlhQ29udHJvbGxl
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDA4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRp
YS9tZWRpYS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEv
bWVkaWEtY29udHJvbGxlci1wbGF5YmFjay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IG1lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbDogQWRkZWQuCisgICAgICAgICog
bWVkaWEvbWVkaWEtY29udHJvbGxlci5odG1sOiBBZGRlZC4KKworMjAxMS0xMS0wMiAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgTWVkaWFDb250
cm9sbGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzE0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IG1lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBt
ZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLmh0bWw6IEFkZGVkLgorCiAyMDExLTExLTA4ICBQ
aGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBm
YXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLWZpeGVkLXdpZHRoLWFuZC1o
ZWlnaHQtbm8tc2Nyb2xsaW5nLmh0bWwgaXMgZmxha3kKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEv
bWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM2ZDRkMDdmZmNjZmNi
MzBlNzU1YWNjMjY4ZTY3NGY3NGFjY2MwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L21lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAKKyAK
K1Rlc3QgcHJlc2VuY2Ugb2YgTWVkaWFDb250cm9sbGVyIGNvbnN0cnVjdG9yLCBtZWRpYUNvbnRy
b2xsZXIsIGFuZCBtZWRpYUdyb3VwIGF0dHJpYnV0ZXM6CitFWFBFQ1RFRCAodHlwZW9mKE1lZGlh
Q29udHJvbGxlcikgPT0gJ29iamVjdCcpIE9LCitFWFBFQ1RFRCAodmlkZW8ubWVkaWFDb250cm9s
bGVyID09ICdudWxsJykgT0sKK0VYUEVDVEVEICh2aWRlby5tZWRpYUdyb3VwID09ICcnKSBPSwor
CitUZXN0IHRoYXQgdGhlIHByZXNlbmNlIG9mIGEgbWVkaWFHcm91cCBhdHRyaWJ1dGUgY3JlYXRl
cyBhIG1lZGlhQ29udHJvbGxlcjoKK0VYUEVDVEVEICh2aWRlbzIubWVkaWFHcm91cCA9PSAnZ3Jv
dXAnKSBPSworRVhQRUNURUQgKHZpZGVvMi5tZWRpYUNvbnRyb2xsZXIgIT0gJ251bGwnKSBPSwor
CitUZXN0IHRoYXQgc2V0dGluZyBtZWRpYUdyb3VwIHRvIGFuIGVtcHR5IHN0cmluZyByZW1vdmVz
IHRoZSBtZWRpYUNvbnRyb2xsZXI6CitSVU4odmlkZW8ubWVkaWFHcm91cCA9ICcnKQorRVhQRUNU
RUQgKHZpZGVvLm1lZGlhQ29udHJvbGxlciA9PSAnbnVsbCcpIE9LCisKK1Rlc3QgbWFudWFsbHkg
Y3JlYXRpbmcgYW5kIGFzc2lnbmluZyBhIG1lZGlhQ29udHJvbGxlciB0byBhIG1lZGlhIGVsZW1l
bnQ6CitSVU4oY29udHJvbGxlciA9IG5ldyBNZWRpYUNvbnRyb2xsZXIoKSkKK1JVTih2aWRlby5t
ZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyKQorRVhQRUNURUQgKHZpZGVvLm1lZGlhQ29udHJv
bGxlciA9PSAnW29iamVjdCBNZWRpYUNvbnRyb2xsZXJdJykgT0sKKworVGVzdCB0aGF0IHR3byBt
ZWRpYSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIG1lZGlhR3JvdXAgaGF2ZSB0aGUgc2FtZSBtZWRp
YUNvbnRyb2xsZXI6CitSVU4odmlkZW8ubWVkaWFHcm91cCA9ICdncm91cCcpCitSVU4odmlkZW8y
Lm1lZGlhR3JvdXAgPSAnZ3JvdXAnKQorRVhQRUNURUQgKHZpZGVvLm1lZGlhQ29udHJvbGxlciA9
PT0gdmlkZW8yLm1lZGlhQ29udHJvbGxlciA9PSAndHJ1ZScpIE9LCitFTkQgT0YgVEVTVAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2st
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4YThlMDkyMTNlZTFhNzEwN2I4MTFhYjlmODgzYWQ0
MDEyYTNmYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250
cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACisgCitSVU4oY29u
dHJvbGxlciA9IHZpZGVvLm1lZGlhQ29udHJvbGxlcikKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQor
UlVOKGNvbnRyb2xsZXIuY3VycmVudFRpbWUgPSA1KQorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRU
aW1lID09ICc1JykgT0sKK0VYUEVDVEVEICh2aWRlbzIuY3VycmVudFRpbWUgPT0gJzUnKSBPSwor
UlVOKHZpZGVvLnBsYXkoKSkKK1JVTih2aWRlbzIucGxheSgpKQorUlVOKGNvbnRyb2xsZXIucGxh
eSgpKQorRVZFTlQocGxheWluZykKK0VYUEVDVEVEIChjb250cm9sbGVyLnBhdXNlZCA9PSAnZmFs
c2UnKSBPSworRVZFTlQoZW5kZWQpCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9t
ZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2MyYjgzZWYx
YWE4ODk2ZDdjMjIwN2Y3YTk0NjQ5MGYzY2NmNWYyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbApAQCAtMCwwICsxLDQ5
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0
IHNyYz1tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz12aWRlby10
ZXN0LmpzPjwvc2NyaXB0PgorCisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBjb250cm9s
bGVyOworICAgICAgICB2YXIgdmlkZW8yOworCisgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewor
ICAgICAgICAgICAgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8n
KVswXTsKKyAgICAgICAgICAgIHZpZGVvMiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCd2aWRlbycpWzFdOworICAgICAgICAgICAgcnVuKCdjb250cm9sbGVyID0gdmlkZW8ubWVkaWFD
b250cm9sbGVyJyk7CisgICAgICAgICAgICBjb250cm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2Nh
bnBsYXl0aHJvdWdoJywgY2FucGxheXRocm91Z2gsIHRydWUpOworICAgICAgICAgICAgc2V0U3Jj
QnlUYWdOYW1lKCd2aWRlbycsIGZpbmRNZWRpYUZpbGUoJ3ZpZGVvJywgJ2NvbnRlbnQvdGVzdCcp
KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gY2FucGxheXRocm91Z2go
KSB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGNhbnBsYXl0aHJvdWdoKSIpOwor
ICAgICAgICAgICAgY29udHJvbGxlci5yZW1vdmVFdmVudExpc3RlbmVyKCdjYW5wbGF5dGhyb3Vn
aCcsIGNhbnBsYXl0aHJvdWdoLCB0cnVlKTsKKyAgICAgICAgICAgIHJ1bignY29udHJvbGxlci5j
dXJyZW50VGltZSA9IDUnKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8uY3VycmVu
dFRpbWUnLCA1KTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8yLmN1cnJlbnRUaW1l
JywgNSk7CisgICAgICAgICAgICBydW4oJ3ZpZGVvLnBsYXkoKScpOworICAgICAgICAgICAgcnVu
KCd2aWRlbzIucGxheSgpJyk7CisgICAgICAgICAgICBjb250cm9sbGVyLmFkZEV2ZW50TGlzdGVu
ZXIoJ3BsYXlpbmcnLCBwbGF5aW5nLCB0cnVlKTsKKyAgICAgICAgICAgIHJ1bignY29udHJvbGxl
ci5wbGF5KCknKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gcGxheWlu
ZygpIHsgCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKHBsYXlpbmcpIik7CisgICAg
ICAgICAgICBjb250cm9sbGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBwbGF5aW5n
LCB0cnVlKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnY29udHJvbGxlci5wYXVzZWQnLCBm
YWxzZSk7CisgICAgICAgICAgICBjb250cm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywg
ZW5kZWQsIHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZW5kZWQoKSB7IAor
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVChlbmRlZCkiKTsKKyAgICAgICAgICAgIGNv
bnRyb2xsZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignZW5kZWQnLCBlbmRlZCwgdHJ1ZSk7CisgICAg
ICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICAgIDx2aWRlbyBtZWRpYUdy
b3VwPSJncm91cCIgY29udHJvbHM+PC92aWRlbz4KKyAgICAgICAgPHZpZGVvIG1lZGlhR3JvdXA9
Imdyb3VwIiBjb250cm9scz48L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1j
b250cm9sbGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzBlNTk2NzU0ZDVhYmIxYzNlN2VkZjE0MjljNjkzYThiODc4NGZhMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbApA
QCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c2NyaXB0IHNyYz1tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorCisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IHZhciBjb250cm9sbGVyOworICAgICAgICB2YXIgdmlkZW8yOworCisgICAgICAgIGZ1bmN0aW9u
IHN0YXJ0KCkgeworICAgICAgICAgICAgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgndmlkZW8nKVswXTsKKyAgICAgICAgICAgIHZpZGVvMiA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCd2aWRlbycpWzFdOworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRl
c3QgcHJlc2VuY2Ugb2YgTWVkaWFDb250cm9sbGVyIGNvbnN0cnVjdG9yLCBtZWRpYUNvbnRyb2xs
ZXIsIGFuZCBtZWRpYUdyb3VwIGF0dHJpYnV0ZXM6Iik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInR5cGVvZihNZWRpYUNvbnRyb2xsZXIpIiwgIm9iamVjdCIpOworICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJ2aWRlby5tZWRpYUNvbnRyb2xsZXIiLCBudWxsKTsKKyAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8ubWVkaWFHcm91cCIsICIiKTsKKyAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiIik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgdGhhdCB0aGUgcHJlc2Vu
Y2Ugb2YgYSBtZWRpYUdyb3VwIGF0dHJpYnV0ZSBjcmVhdGVzIGEgbWVkaWFDb250cm9sbGVyOiIp
CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvMi5tZWRpYUdyb3VwIiwgJ2dyb3VwJyk7
CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvMi5tZWRpYUNvbnRyb2xsZXIiLCBudWxs
LCAiIT0iKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICBjb25z
b2xlV3JpdGUoIlRlc3QgdGhhdCBzZXR0aW5nIG1lZGlhR3JvdXAgdG8gYW4gZW1wdHkgc3RyaW5n
IHJlbW92ZXMgdGhlIG1lZGlhQ29udHJvbGxlcjoiKQorICAgICAgICAgICAgcnVuKCJ2aWRlby5t
ZWRpYUdyb3VwID0gJyciKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubWVkaWFD
b250cm9sbGVyIiwgbnVsbCk7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCJUZXN0IG1hbnVhbGx5IGNyZWF0aW5nIGFuZCBhc3NpZ25pbmcg
YSBtZWRpYUNvbnRyb2xsZXIgdG8gYSBtZWRpYSBlbGVtZW50OiIpCisgICAgICAgICAgICBydW4o
ImNvbnRyb2xsZXIgPSBuZXcgTWVkaWFDb250cm9sbGVyKCkiKTsKKyAgICAgICAgICAgIHJ1bigi
dmlkZW8ubWVkaWFDb250cm9sbGVyID0gY29udHJvbGxlciIpOworICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJ2aWRlby5tZWRpYUNvbnRyb2xsZXIiLCBjb250cm9sbGVyKTsKKyAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgdGhhdCB0
d28gbWVkaWEgZWxlbWVudHMgd2l0aCB0aGUgc2FtZSBtZWRpYUdyb3VwIGhhdmUgdGhlIHNhbWUg
bWVkaWFDb250cm9sbGVyOiIpCisgICAgICAgICAgICBydW4oInZpZGVvLm1lZGlhR3JvdXAgPSAn
Z3JvdXAnIik7CisgICAgICAgICAgICBydW4oInZpZGVvMi5tZWRpYUdyb3VwID0gJ2dyb3VwJyIp
OworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRpYUNvbnRyb2xsZXIgPT09IHZp
ZGVvMi5tZWRpYUNvbnRyb2xsZXIiLCB0cnVlKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJzdGFydCgpIj4KKyAgICAgICAgPHZpZGVvPjwvdmlkZW8+CisgICAgICAgIDx2aWRlbyBtZWRp
YWdyb3VwPSJncm91cCI+PC92aWRlbz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxp
b24vZmFzdC9yZWdpb25zL3JlbmRlci1yZWdpb24tY3VzdG9tLXN0eWxlLW1hcmstZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxpb24vZmFzdC9yZWdpb25zL3JlbmRlci1y
ZWdpb24tY3VzdG9tLXN0eWxlLW1hcmstZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2NzRlYTll
NGZhODUwYTkzODQzZTNjZjhkYmJhNjU0ZGIzOTMwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbi9mYXN0L3JlZ2lvbnMvcmVuZGVyLXJlZ2lvbi1jdXN0
b20tc3R5bGUtbWFyay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNCBAQAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHgxNjYKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNp
emUgODAweDE2NgorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDE1MAor
ICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgMjAweDUwCisgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMCw1MCkgc2l6ZSAyMDB4NTAKKyAgICAgIFJlbmRlclJlZ2lvbiB7
RElWfSBhdCAoMCwxMDApIHNpemUgMjAweDUwCitGbG93IFRocmVhZHMKKyAgVGhyZWFkIHdpdGgg
Zmxvdy1uYW1lICdmbG93MScKKyAgICBsYXllciBhdCAoMCwwKSBzaXplIDIwMHgxMDAKKyAgICAg
IFJlbmRlckZsb3dUaHJlYWQgYXQgKDAsMCkgc2l6ZSAyMDB4MTAwCisgICAgICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgwLDE2KSBzaXplIDIwMHgxODgKKyAgICAgICAgICBSZW5kZXJCbG9jayB7
UH0gYXQgKDAsMCkgc2l6ZSAyMDB4MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDE2OHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCAxNjg6ICJGaXJzdCBwYXJhIGdvZXMgaW50byByZWdpb24uIgorICAgICAgICAgIFJlbmRlckJs
b2NrIChhbm9ueW1vdXMpIGF0ICgwLDM0KSBzaXplIDIwMHgxOAorICAgICAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTM0eDE4CisgICAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDEzNDogIlRleHQgZ29lcyBpbnRvIHJlZ2lvbiIKKyAgICAgICAgICBS
ZW5kZXJCbG9jayB7UH0gYXQgKDAsNjgpIHNpemUgMjAweDE4CisgICAgICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxODd4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggMTg3OiAiU2Vjb25kIHBhcmEgZ29lcyBpbnRvIHJlZ2lvbi4iCisgICAg
ICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDEwMikgc2l6ZSAyMDB4MTgKKyAgICAgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE3NXgxOAorICAgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNzU6ICJUaGlyZCBwYXJhIGdvZXMgaW50byByZWdpb24u
IgorICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDEzNikgc2l6ZSAyMDB4
MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEzNHgxOAor
ICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMzQ6ICJUZXh0IGdvZXMgaW50
byByZWdpb24iCisgICAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDE3MCkgc2l6ZSAyMDB4
MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE4MngxOAor
ICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxODI6ICJGb3VydGggcGFyYSBn
b2VzIGludG8gcmVnaW9uLiIKKyAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvdzEnCisgICAgUmVuZGVy
UmVnaW9uIHtESVZ9ICNyZWdpb24xIHJlZ2lvbiBzdHlsZTogMQorICAgIFJlbmRlclJlZ2lvbiB7
RElWfSAjcmVnaW9uMyByZWdpb24gc3R5bGU6IDEK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114107</attachid>
            <date>2011-11-08 10:12:40 -0800</date>
            <delta_ts>2011-11-09 00:13:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71408-20111108101238.patch</filename>
            <type>text/plain</type>
            <size>95621</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk1NzYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMmZmYzIwYjIxOWIyYjU1
NDczZWYzMmVhNWQyYWUxNzk0ZTIxN2MzLi43MTJhMWUxZTg4NmY1M2E0ZTA3ZjU5NTIzZDgyYmM1
ZGMxZDcwMWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU3IEBACisyMDExLTExLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNv
bnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbAorCisgICAgICAgIEFkZHMgc3VwcG9ydCBm
b3IgdGhlIE1lZGlhQ29udHJvbGxlciBET00gb2JqZWN0LCBhbmQgdGhlIG1lZGlhZ3JvdXAgYW5k
IG1lZGlhY29udHJvbGxlcgorICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGF0dHJpYnV0ZXMuCisK
KyAgICAgICAgTWVkaWFDb250cm9sbGVyIGlzIGFuIERPTSBvYmplY3Qgd2hpY2ggc3luY2hyb25p
emVzIHBsYXliYWNrIG9mIG11bHRpcGxlIEhUTUxNZWRpYUVsZW1lbnRzLiBJdCBjYW4KKyAgICAg
ICAgZWl0aGVyIGJlIGNyZWF0ZWQgYnkgYSBwYWdlIHNjcmlwdCBhbmQgYXNzaWduZWQgdG8gYSBI
VE1MTWVkaWFFbGVtZW50IHVzaW5nIHRoZSBtZWRpYUNvbnRyb2xsZXIgcHJvcGVydHksCisgICAg
ICAgIG9yIGFsbCBIVE1MTWVkaWFFbGVtZW50cyB3aXRoIGlkZW50aWNhbCBtZWRpYWdyb3VwIGF0
dHJpYnV0ZXMgd2lsbCBoYXZlIGEgTWVkaWFDb250cm9sbGVyIGFzc2lnbmVkIAorICAgICAgICBh
dXRvbWF0aWNhbGx5LgorCisgICAgICAgIEFkZCBhbiBhYnN0cmFjdCBpbnRlcmZhY2UgaW1wbGVt
ZW50ZWQgYnkgYm90aCBNZWRpYUNvbnRyb2xsZXIgYW5kIEhUTUxNZWRpYUVsZW1lbnQuCisgICAg
ICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U6On5NZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UpOgorCisgICAgICAgIEFkZCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCBhbmQgSURMLgor
ICAgICAgICAqIGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChtZWRp
YUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXApOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpt
ZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
Y3JlYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6TWVkaWFDb250cm9sbGVyKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6fk1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChNZWRp
YUNvbnRyb2xsZXI6OmFkZE1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnJlbW92ZU1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmNvbnRhaW5z
TWVkaWFFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6YnVmZmVyZWQpOgorICAg
ICAgICAoTWVkaWFDb250cm9sbGVyOjpzZWVrYWJsZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnBsYXllZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKToKKyAgICAg
ICAgKE1lZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnBsYXkpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpwYXVzZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnNldERlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpz
ZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZCk6CisgICAgICAgIChNZWRpYUNvbnRy
b2xsZXI6OnJlcG9ydENvbnRyb2xsZXJTdGF0ZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnVwZGF0ZVJlYWR5U3RhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjp1cGRhdGVQbGF5
YmFja1N0YXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlTWVkaWFFbGVtZW50
cyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnNjaGVkdWxlRXZlbnQpOgorICAgICAgICAo
TWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpoYXNBdWRpbyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Omhhc1ZpZGVvKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzQ2xvc2VkQ2FwdGlvbnMpOgorICAgICAgICAoTWVk
aWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUpOgorICAgICAgICAoTWVkaWFD
b250cm9sbGVyOjpzdXBwb3J0c1NjYW5uaW5nKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
YmVnaW5TY3J1YmJpbmcpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjplbmRTY3J1YmJpbmcp
OgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjYW5QbGF5KToKKyAgICAgICAgKE1lZGlhQ29u
dHJvbGxlcjo6aXNMaXZlU3RyZWFtKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzU291
cmNlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6cmV0dXJuVG9SZWFsdGltZSk6CisgICAg
ICAgIChNZWRpYUNvbnRyb2xsZXI6OmlzQmxvY2tlZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6Omhhc0VuZGVkKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6bWVkaWFHcm91cCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xsZXI6OmRlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sbGVyOjp2b2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpt
dXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnJlYWR5U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1N0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6c3VwcG9ydHNGdWxsc2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6aXNGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbGxlcjo6Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sbGVyOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbGxlcjo6dG9NZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sbGVyOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvTWVk
aWFDb250cm9sbGVyLmlkbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGNvbnZlbmllbmNlIGZ1bmN0
aW9ucyB0byBUaW1lUmFuZ2VzIHdoaWNoIGNhbiBjYWxjdWxhdGUgaW50ZXJzZWN0aW9ucyBhbmQK
KyAgICAgICAgdW5pb25zIGJldHdlZW4gVGltZVJhbmdlcyBvYmplY3RzLgorICAgICAgICAqIGh0
bWwvVGltZVJhbmdlcy5jcHA6CisgICAgICAgIChUaW1lUmFuZ2VzOjpjb3B5KToKKyAgICAgICAg
KFRpbWVSYW5nZXM6OmludmVydCk6CisgICAgICAgIChUaW1lUmFuZ2VzOjppbnRlcnNlY3RXaXRo
KToKKyAgICAgICAgKFRpbWVSYW5nZXM6OnVuaW9uV2l0aCk6CisgICAgICAgICogaHRtbC9UaW1l
UmFuZ2VzLmg6CisKKyAgICAgICAgQWRkIE1lZGlhQ29udHJvbGxlckNvbnN0cnVjdG9yIHRvIHRo
ZSBXaW5kb3cgb2JqZWN0LgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKworICAgICAg
ICBBZGQgdGhlIHR3byBuZXcgYXR0cmlidXRlIG5hbWVzLCBtZWRpYWdyb3VwIGFuZCBtZWRpYWNv
bnRyb2xsZXIuCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYXR0cmlidXRlcywgYW5kIGFkZCBvdmVycmlkZGVu
IGJlaGF2aW9yIHdoZW4gYSBtZWRpYSBlbGVtZW50CisgICAgICAgIGhhcyBhIGN1cnJlbnQgbWVk
aWEgY29udHJvbGxlcjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjplbmRlZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6dXNlckNhbmNlbGxlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRN
ZWRpYUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNv
bnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlTWVk
aWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzQmxv
Y2tlZE9uTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc1NvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0xpdmVTdHJlYW0pOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1M
TWVkaWFFbGVtZW50Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxN
ZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcik6CisKKyAgICAgICAgQWRkIGEgZnVuY3Rp
b24gInNlZWthYmxlIiB3aGljaCByZXR1cm5zIGEgVGltZVJhbmdlcyBjb250YWluaW5nIHRoZSBz
ZWVrYWJsZSB0aW1lIHJhbmdlcworICAgICAgICBpbiBhIG1lZGlhIGVsZW1lbnQuICBCeSBkZWZh
dWx0IHRoaXMgaXMgYSBzaW5nbGUgcmFuZ2Ugb2YgWzAsIG1heFRpbWVTZWVrYWJsZV0uCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OnNlZWthYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpz
ZWVrYWJsZSk6CisKKyAgICAgICAgU3VwcG9ydCBmdW5jdGlvbnMgdG8gY2FzdCBiZXR3ZWVuIE1l
ZGlhQ29udHJvbGxlciBhbmQgRXZlbnRUYXJnZXQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNF
dmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBkb20v
RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OnRvTWVkaWFD
b250cm9sbGVyKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKworICAgICAgICBCb2ls
ZXJwbGF0ZSB0byBzdXBwb3J0IGNyZWF0aW5nIHRoZSBkZXJpdmVkIHNvdXJjZXMgZm9yIE1lZGlh
Q29udHJvbGxlciBhbmQgYWRkaW5nIG5ldyBzb3VyY2VzCisgICAgICAgIHRvIHRoZSBwcm9qZWN0
OgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNw
cDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMS0xMS0wOCAgQW5kcmV5IEtvc3lha292ICA8
Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtFeHRlbnNpb24g
QVBJXVtDaHJvbWl1bV0gaW5qZWN0ZWQgZXh0ZW5zaW9uIEFQSSBuZWVkcyB0byByZXR1cm4gYW4g
b2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDdlMTUyOTc5YmJlMTg4MmQxOWRhZjBiNWZm
OWZjYjg5ODdiMmE1MmIuLmRiMjZkNzA0ODQ1NjQwZDZmMGExM2U4OWM1YmJkZDE3NDA2MzllMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yNzYsNiArMjc2LDcgQEAgU0VUKFdlYkNvcmVfSURM
X0ZJTEVTCiAgICAgaHRtbC9IVE1MVW5rbm93bkVsZW1lbnQuaWRsCiAgICAgaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmlkbAogICAgIGh0bWwvSW1hZ2VEYXRhLmlkbAorICAgIGh0bWwvTWVkaWFDb250
cm9sbGVyLmlkbAogICAgIGh0bWwvTWVkaWFFcnJvci5pZGwKICAgICBodG1sL1RleHRNZXRyaWNz
LmlkbAogICAgIGh0bWwvVGV4dFRyYWNrLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCmlu
ZGV4IGIzZjFlM2ZiOTk2ZTc5MDM5M2Q5ZmRjODZmNjkxYjhhNjE1M2QzZDYuLjU1ODc2MDkwNjY5
ZDI5ZTczNmMxYTg2ZDYyMDJiNzQyYjAyYzJmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5j
cHAKQEAgLTIyOCw2ICsyMjgsNyBAQAogI2luY2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHAiCiAjaW5jbHVkZSAiSlNLZXlib2FyZEV2ZW50LmNwcCIKICNpbmNsdWRlICJKU0xvY2F0aW9u
LmNwcCIKKyNpbmNsdWRlICJKU01lZGlhQ29udHJvbGxlci5jcHAiCiAjaW5jbHVkZSAiSlNNZWRp
YUVycm9yLmNwcCIKICNpbmNsdWRlICJKU01lZGlhTGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNNZWRp
YVF1ZXJ5TGlzdC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBlNjA3NGMx
ZWQ3NzEzNGU1YmNiZWE2YTk4YjVlMThkYzk5OGFhNzBmLi40ODQ5NTYyNzM1ZjNiNjAxZjRkZDk1
MDVlMTBhYjIxYjdhMjhiMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI3
Nyw2ICsyNzcsNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBLZXlib2FyZEV2ZW50IFwKICAgICBM
b2NhdGlvbiBcCiAgICAgTG93UGFzczJGaWx0ZXJOb2RlIFwKKyAgICBNZWRpYUNvbnRyb2xsZXIg
XAogICAgIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBcCiAgICAgTWVkaWFFcnJvciBcCiAg
ICAgTWVkaWFMaXN0IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LnByaSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCBjYWViNzk5ZTY3
NmQxMjBhNGU4OWNlODQwNDM3NDc1NzJjNGY3ZTk2Li5jNmY1MmU4MzdhN2UyZmZmMzE1MzMxNWE1
MWNlNDg2ODA1MTY3ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCkBAIC0zMTQsNiAr
MzE0LDcgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBodG1sL0hUTUxVbmtub3duRWxlbWVudC5p
ZGwgXAogICAgIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwgXAogICAgIGh0bWwvSW1hZ2VEYXRh
LmlkbCBcCisgICAgaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsIFwKICAgICBodG1sL01lZGlhRXJy
b3IuaWRsIFwKICAgICBodG1sL1RleHRNZXRyaWNzLmlkbCBcCiAgICAgaHRtbC9UaW1lUmFuZ2Vz
LmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxNTUzNDQyZTRiNDgyNWFm
YzE4Yzc5NTJlZWM0N2NlMGE2Yjk5ZWQ2Li44NjgxM2Y5MWFhM2JkZWFjYTZhMmE0OTlmZDcwNDE2
ZjljNWNmOGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM1OSw2ICszNTks
OCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNMb2NhbE1lZGlhU3RyZWFtLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNMb2NhdGlv
bi5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNMb2NhdGlvbi5oIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTTWVkaWFDb250cm9sbGVyLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU01lZGlhQ29udHJvbGxlci5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TWVkaWFFcnJvci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUVycm9yLmgg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUxpc3QuY3BwIFwKQEAgLTE4NzUsNiAr
MTg3Nyw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9MaW5r
UmVsQXR0cmlidXRlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2su
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmggXAorCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUNvbnRyb2xsZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmggXAogCVNvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGYwMjAxYjY1ZmY0MmYy
NTJhZTg1OWE5NWEyNDIzOTUxZmNmMGNiN2EuLjA1Y2M2N2U2OWI1YzllODViYjE2N2FmYWU1NWVj
MWMwNTdmYzQ1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTAyMiw2ICsxMDIyLDggQEAgU09VUkNFUyAr
PSBcCiAgICAgcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWREYXRlTm9uZS5jcHAgXAogICAgIHBsYXRm
b3JtL3RleHQvTG9jYWxpemVkTnVtYmVyTm9uZS5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvUXVv
dGVkUHJpbnRhYmxlLmNwcCBcCisgICAgcGxhdGZvcm0vQ2xvY2suY3BwIFwKKyAgICBwbGF0Zm9y
bS9DbG9ja0dlbmVyaWMuY3BwIFwKICAgICBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAgXAogICAg
IHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBcCiAgICAgcGxhdGZvcm0vRGF0ZUNvbXBv
bmVudHMuY3BwIFwKQEAgLTEwMzIsNyArMTAzNCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRm
b3JtL0ZpbGVJY29uTG9hZGVyLmNwcCBcCiAgICAgcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAgXAog
ICAgIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwIFwKLSAgICBwbGF0Zm9ybS9DbG9ja0dlbmVyaWMu
Y3BwIFwKICAgICBwbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuY3BwIFwKICAgICBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9xdC9JbWFnZUZyYW1lUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250RGVzY3JpcHRpb24uY3BwIFwKQEAgLTE4NjUsNiArMTg2Niw3IEBAIEhFQURFUlMg
Kz0gXAogICAgIGh0bWwvTGFiZWxzTm9kZUxpc3QuaCBcCiAgICAgaHRtbC9MaW5rUmVsQXR0cmli
dXRlLmggXAogICAgIGh0bWwvTG9hZGFibGVUZXh0VHJhY2suaCBcCisgICAgaHRtbC9NZWRpYUNv
bnRyb2xsZXIuaCBcCiAgICAgaHRtbC9NZWRpYURvY3VtZW50LmggXAogICAgIGh0bWwvTWljcm9E
YXRhSXRlbVZhbHVlLmggXAogICAgIGh0bWwvUGx1Z2luRG9jdW1lbnQuaCBcCkBAIC0yMDUyLDYg
KzIwNTQsOCBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9u
TGlzdC5oIFwKICAgICBwbGF0Zm9ybS9BcmVuYS5oIFwKICAgICBwbGF0Zm9ybS9Bc3luY0ZpbGVT
dHJlYW0uaCBcCisgICAgcGxhdGZvcm0vQ2xvY2suaCBcCisgICAgcGxhdGZvcm0vQ2xvY2tHZW5l
cmljLmggXAogICAgIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmggXAogICAgIHBsYXRmb3JtL0NvbnRl
eHRNZW51LmggXAogICAgIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmggXApAQCAtMjA3MCw3
ICsyMDc0LDYgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvblNl
cnZpY2VNb2NrLmggXAogICAgIHBsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgg
XAogICAgIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmggXAotICAgIHBsYXRmb3Jt
L0Nsb2NrR2VuZXJpYy5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQmxlbmQuaCBcCkBAIC0zMDg0LDYgKzMwODcsNyBAQCBjb250YWlucyhERUZJTkVT
LCBFTkFCTEVfVklERU89MSkgewogICAgICAgICBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIFwK
ICAgICAgICAgaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAgXAogICAgICAgICBodG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwIFwKKyAgICAgICAgaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwIFwKICAg
ICAgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIFwKICAgICAgICAgaHRt
bC9UaW1lUmFuZ2VzLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNTkzZWQ1OWFiMjI1OTFmODg4MGQ2NzFlMWI3YWE4
YmJhYTk4NzE2Mi4uNWZkMDQyODViOWJmYTI2Mzk2NmMxYmY2MTE2NWFhNjY2ZTU4OGJhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtMTMzMCw2ICsxMzMwLDcgQEAKICAgICAgICAgICAgICdodG1sL0hU
TUxVbmtub3duRWxlbWVudC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvSW1hZ2VEYXRhLmlkbCcsCisgICAgICAgICAgICAn
aHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsJywKICAgICAgICAgICAgICdodG1sL01lZGlhRXJyb3Iu
aWRsJywKICAgICAgICAgICAgICdodG1sL1RleHRNZXRyaWNzLmlkbCcsCiAgICAgICAgICAgICAn
aHRtbC9UZXh0VHJhY2suaWRsJywKQEAgLTU1OTQsNiArNTU5NSw4IEBACiAgICAgICAgICAgICAn
aHRtbC9MaW5rUmVsQXR0cmlidXRlLmgnLAogICAgICAgICAgICAgJ2h0bWwvTG9hZGFibGVUZXh0
VHJhY2suY3BwJywKICAgICAgICAgICAgICdodG1sL0xvYWRhYmxlVGV4dFRyYWNrLmgnLAorICAg
ICAgICAgICAgJ2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9N
ZWRpYUNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9NZWRpYURvY3VtZW50LmNwcCcs
CiAgICAgICAgICAgICAnaHRtbC9NZWRpYURvY3VtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwv
TWVkaWFFcnJvci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKaW5kZXggODlmNDU4MDY3NDliZmU2NzIwOTdmOTdmMzYzZTNlZTAxODQyNzJhZi4uZjc1
NWQ0OWZlNDkwNjU4NzNhYTM5M2FlNjY2MGJiMjdlNzExODU1MiAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTU3NTk0LDYgKzU3NTk0LDE0IEBA
CiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
TWVkaWFDb250cm9sbGVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5caHRtbFxNZWRpYUNvbnRyb2xsZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+
CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxNZWRpYURvY3VtZW50LmNwcCIK
IAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGJhOTQ0MTUwMjQ1YWM0YjI2NDcwNjNjZjcxZjA4MjM2
OTI1ZDdjYi4uMjlmNDBiZTIxYzkxN2QzNjRhYTE3NTU0N2ZlOTAxYTk0NGJkZGI5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NTcxMCwxNyArNTcxMCwyMiBAQAogCQlDRDBEQkZFRTE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0Nv
bXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXYgaW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwREJFMEQxNDIyNzU5NTAwMjgwMjYz
IC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUud2F2ICovOyB9OwogCQlDRDBEQkZF
RjE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXYg
aW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0QwREJFMEUxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1
X1AzMzAud2F2ICovOyB9OwogCQlDRDBEQkZGMDE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0NvbXBv
c2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXYgaW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwREJFMEYxNDIyNzU5NTAwMjgwMjYzIC8q
IElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzNDUud2F2ICovOyB9OworCQlDRDI3RjZFNTE0
NTc2ODVBMDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8q
IEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJQ0QyN0Y2RTcxNDU3NzBEMzAwNzgyMDdE
IC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDI3RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVy
LmNwcCAqLzsgfTsKIAkJQ0Q4MjAzMEExMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEODIwMzA2MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0Q4MjAzMEIxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgy
MDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSAq
Lzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby11bmRlZiI7IH07IH07CiAJCUNE
ODIwMzBDMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDgyMDMwODEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29u
dHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUNEODIwMzBEMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0Q4MjAzMDkxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdp
bmRvd0NvbnRyb2xsZXIubW0gKi87IH07CiAJCUNEODIwMzEwMTM5NUFDRTcwMEY5NTZDNiAvKiBX
ZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24u
aCAqLzsgfTsKIAkJQ0Q4MjAzMTExMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlv
bi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIw
MzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi87IH07CisJCUNE
RDUyNUQ3MTQ1QjZERDAwMDhEMjA0RCAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQ0MxNDVC
NkFGRTAwQzRDN0FBIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCUNE
RUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MkUxNDYwODRERTAwOEIz
MUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi87IH07CiAJCUNERUE3NjM0MTQ2MEI1NkYwMDhC
MzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RFQTc2MzIxNDYwQUUyOTAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5j
cHAgKi87IH07CiAJCUNERUE3NjM1MTQ2MEI3MUEwMDhCMzFGMSAvKiBDbG9jay5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBNzYzMzE0NjBCNDYy
MDA4QjMxRjEgLyogQ2xvY2suY3BwICovOyB9OwogCQlDREVBN0M4NDEyNzYyMzA0MDBCODQ2REQg
LyogUmVuZGVyRnVsbFNjcmVlbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RFQTdDODIxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4u
aCAqLzsgfTsKIAkJQ0RFQTdDODUxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTdD
ODMxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3BwICovOyB9OworCQlDREY2
NUNDODE0NUIxRTc1MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFNDE0NTc2Nzg3MDA3ODIwN0Qg
LyogTWVkaWFDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQ0RGNjVDQ0ExNDVCNDQ4ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxl
ckludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RGNjVDQzkxNDVCNDNBNzAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMDJG
MEM0MTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwMkYwQzMxMUU4M0FERDAwQzY2
ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UwNTdGQTUxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0UwNTdGQTYxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xMzAxOCw2ICsxMzAyMywxMSBAQAogCQlDRDBEQkUwRDE0MjI3NTk1MDAyODAyNjMgLyog
SVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBJUkNfQ29tcG9z
aXRlX0NfUjAxOTVfVDM0NV9QMzE1LndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNl
cy9JUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1Lndhdjsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OwogCQlDRDBEQkUwRTE0MjI3NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9D
X1IwMTk1X1QzNDVfUDMzMC53YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0
NV9QMzMwLndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9JUkNfQ29tcG9zaXRl
X0NfUjAxOTVfVDM0NV9QMzMwLndhdjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlD
RDBEQkUwRjE0MjI3NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0
NS53YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBh
dWRpby53YXY7IG5hbWUgPSBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzQ1LndhdjsgcGF0
aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9JUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9Q
MzQ1Lndhdjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlDRDI3RjZFMDE0NTc1QzFC
MDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYUNvbnRyb2xsZXIuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDI3RjZFMjE0NTc2NzU4MDA3ODIwN0Qg
LyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNNZWRpYUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRDI3RjZFMzE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUNvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyN0Y2RTQxNDU3Njc4NzAwNzgyMDdEIC8qIE1lZGlhQ29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyN0Y2RTYxNDU3NzBEMzAwNzgy
MDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEgLyogZnVsbHNjcmVlbi5jc3MgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW4uY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzA3MTM5
NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMDI2LDYgKzEzMDM2LDgg
QEAKIAkJQ0Q4MjAzMEUxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJXaW5kb3dBbmltYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4MjAzMEYxMzk1QUNFNzAwRjk1NkM2IC8qIFdl
YldpbmRvd0FuaW1hdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYldpbmRvd0FuaW1hdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0RCRDkzQkExMzMzQkQ0QjAwMjU3MEUzIC8qIGZ1bGxzY3JlZW5RdWlja1RpbWUuY3NzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzczsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDRTVDQ0YxNDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50RmFj
dG9yeS5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFdmVudEZhY3RvcnkuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQ0U1Q0QwMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudFRh
cmdldEZhY3RvcnkuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXZlbnRUYXJnZXRGYWN0b3J5
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBNzYyQzE0NjA4MjI0MDA4QjMx
RjEgLyogQ2xvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xvY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8q
IFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQbGF0Zm9ybUNsb2NrQ0EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVB
NzYyRjE0NjA4NEVFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ2xvY2tDQS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTMwMzQsNiArMTMwNDYsOCBAQAogCQlDREVBNzYzMzE0NjBCNDYyMDA4QjMx
RjEgLyogQ2xvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xv
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBN0M4MjEyNzYyMzA0MDBC
ODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJGdWxsU2NyZWVuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
RUE3QzgzMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZ1bGxTY3JlZW4uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEgLyogTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhQ29udHJvbGxlckludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REY2NUNDQzE0NUI2QUZFMDBDNEM3QUEgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE1lZGlhRWxlbWVudEN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDJGMEMzMTFFODNBREQw
MEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRDb250cm9sbGVyQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDU3RkE0
MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzM3Miw2ICsxNzM4NiwxMCBAQAogCQkJCUU0NDYx
M0EwMENENjMzMTAwMEZBREE3NSAvKiBWb2lkQ2FsbGJhY2suaWRsICovLAogCQkJCUY1NUIzREFC
MTI1MUYxMkQwMDNFRjI2OSAvKiBXZWVrSW5wdXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0RBQzEy
NTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0VHlwZS5oICovLAorCQkJCUNEMjdGNkUwMTQ1NzVD
MUIwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaWRsICovLAorCQkJCUNEMjdGNkU0MTQ1NzY3
ODcwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaCAqLywKKwkJCQlDRDI3RjZFNjE0NTc3MEQz
MDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCAqLywKKwkJCQlDREY2NUNDOTE0NUI0M0E3
MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggKi8sCiAJCQkpOwogCQkJcGF0
aCA9IGh0bWw7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTc2MDUsNiArMTc2MjMs
OCBAQAogCQlBODNCNzkwODBDQ0FGRjJCMDAwQjA4MjUgLyogSFRNTCAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdE
IC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLywKKwkJCQlDRDI3RjZFMzE0NTc2NzU4MDA3ODIw
N0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuaCAqLywKIAkJCQk0OUVFQ0VGMjEwNTA3MEM0MDAwOTlG
QUIgLyogSlNBcnJheUJ1ZmZlci5jcHAgKi8sCiAJCQkJNDlFRUNFRjMxMDUwNzBDNDAwMDk5RkFC
IC8qIEpTQXJyYXlCdWZmZXIuaCAqLywKIAkJCQk0OUVFQ0YxOTEwNTA3MkYzMDAwOTlGQUIgLyog
SlNBcnJheUJ1ZmZlclZpZXcuY3BwICovLApAQCAtMTk2MjcsNiArMTk2NDcsNyBAQAogCQkJCUJD
QzQzODc3MEU4ODZDQzcwMDUzM0RENSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwICov
LAogCQkJCUUxQUQxNDIyMTI5NUVBN0YwMEFDQTk4OSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0
b20uaCAqLywKIAkJCQlFMUFEMTM5QTEyOTVEOTI2MDBBQ0E5ODkgLyogSlNIVE1MTGlua0VsZW1l
bnRDdXN0b20uY3BwICovLAorCQkJCUNERjY1Q0NDMTQ1QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxN
ZWRpYUVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDMzA1Q0EzMEMwNzgxQkIwMENEMjBGMCAv
KiBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlFMUFEMTQyNDEyOTVFQTk1
MDBBQ0E5ODkgLyogSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5oICovLAogCQkJCTQ0OEFEMjdB
MEE0ODEzNzkwMDIzRDE3OSAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgKi8s
CkBAIC0yMDk0MCw2ICsyMDk2MSw4IEBACiAJCUY1MjNEMzI0MDJERTQ0NzgwMTg2MzVDQSAvKiBk
b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNEQ0U1
Q0NGMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudEZhY3RvcnkuaW4gKi8sCisJCQkJQ0RDRTVDRDAx
NDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50VGFyZ2V0RmFjdG9yeS5pbiAqLywKIAkJCQlFMUM0REU2
RDBFQTc1QzY1MDAyM0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0LmNwcCAqLywKIAkJCQlFMUM0REU2
ODBFQTc1QzFFMDAyM0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0LmggKi8sCiAJCQkJQThDNEE3RkMw
OUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuY3BwICovLApAQCAtMjQ2MzQsNiArMjQ2NTcsOCBAQAog
CQkJCUNBRTlGOTEwMTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NzZGMzZFQjE0Njg2MjI1MDA1RTkzQjQgLyogU2VjdXJpdHlDb250
ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTM0NDk2RTE0Njk0MUIzMDA3MjAzMTIgLyogU1ZH
TGVuZ3RoQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RGNjVDQzgxNDVCMUU3NTAwQzRD
N0FBIC8qIE1lZGlhQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RGNjVDQ0ExNDVC
NDQ4ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0yNzQ5MCw2ICsyNzUxNSw5IEBACiAJCQkJQ0FFOUY5MEYxNDY0NDFGMDAwQzI0NUIwIC8q
IENTU0FzcGVjdFJhdGlvVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2MzAxNDYw
OEE1MzAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
REVBNzYzNDE0NjBCNTZGMDA4QjMxRjEgLyogQ2xvY2tHZW5lcmljLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUNEMjdGNkU1MTQ1NzY4NUEwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDRDI3RjZFNzE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250
cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNERDUyNUQ3MTQ1QjZERDAwMDhEMjA0RCAv
KiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2
MzUxNDYwQjcxQTAwOEIzMUYxIC8qIENsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NkYz
NkVBMTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNzEzNDQ5NkQxNDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAppbmRleCAxYTM1MzdkMTM4YjY2MzEwNjVi
YTg3MGYyYmQxZjQ2NjdkYjFlNGJlLi4wMjM1OTQ5MmQ2NzVlMWZiMWEwOWUzNDFiM2RkODRiOTVk
MjExOTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRp
bWVFbmFibGVkRmVhdHVyZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVy
aWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKQEAgLTExMyw2ICsxMTMsMTEgQEAgYm9vbCBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sU291cmNlRWxlbWVudEVuYWJsZWQoKQogICAgIHJl
dHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKIH0KIAorYm9vbCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjptZWRpYUNvbnRyb2xsZXJFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OmlzQXZhaWxhYmxlKCk7Cit9CisKIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
bWVkaWFFcnJvckVuYWJsZWQoKQogewogICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFi
bGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggODAwMWI3YTcwZjM5MWE1NTVmZWNjNjA2MzRmMGRk
N2EwZjc2YTNkNi4uYzNhOWM2MDJlZDA3ZmVkOTU4MjM2YTBmMmNjNGYzMTU0OTYxMDVkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgKQEAgLTk0LDYgKzk0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29s
IGh0bWxBdWRpb0VsZW1lbnRFbmFibGVkKCk7CiAgICAgc3RhdGljIGJvb2wgaHRtbFZpZGVvRWxl
bWVudEVuYWJsZWQoKTsKICAgICBzdGF0aWMgYm9vbCBodG1sU291cmNlRWxlbWVudEVuYWJsZWQo
KTsKKyAgICBzdGF0aWMgYm9vbCBtZWRpYUNvbnRyb2xsZXJFbmFibGVkKCk7CiAgICAgc3RhdGlj
IGJvb2wgbWVkaWFFcnJvckVuYWJsZWQoKTsKICAgICBzdGF0aWMgYm9vbCB0aW1lUmFuZ2VzRW5h
YmxlZCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcAppbmRleCAwMDBjNWJmYTdmNDM0OTcxZmI3ZjQxMWMwNWQzMWJmNmNk
M2FjNTFjLi5jZmRkNjJiNTk3ODBjMDEyYjU2MGJkMTA2NzZjNGQ3ZjI3YTg5YjM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAg
LTkyLDYgKzkyLDcgQEAKICNpbmNsdWRlICJKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNI
VE1MTGlua0VsZW1lbnRDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTSFRNTE1lZGlhRWxlbWVudEN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAiCiAjaW5j
bHVkZSAiSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRN
TE91dHB1dEVsZW1lbnRDdXN0b20uY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTllZTZl
ZmIyZjcyYTE2NGQxODA2NzFiNWU4OTVjZmVmNmNmYTJlNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKQEAg
LTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlICJK
U0hUTUxNZWRpYUVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkpTTWVkaWFDb250cm9sbGVyLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBKU0hU
TUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIHZh
bHVlKQoreworICAgIEhUTUxNZWRpYUVsZW1lbnQqIGltcCA9IHN0YXRpY19jYXN0PEhUTUxNZWRp
YUVsZW1lbnQqPihpbXBsKCkpOworICAgIC8vIE9uIHNldHRpbmcsIGl0IG11c3QgZmlyc3QgcmVt
b3ZlIHRoZSBlbGVtZW50J3MgbWVkaWFncm91cCBhdHRyaWJ1dGUsIGlmIGFueSwgCisgICAgaW1w
LT5zZXRNZWRpYUdyb3VwKFN0cmluZygpKTsKKyAgICAvLyBhbmQgdGhlbiBzZXQgdGhlIGN1cnJl
bnQgbWVkaWEgY29udHJvbGxlciB0byB0aGUgZ2l2ZW4gdmFsdWUuCisgICAgaW1wLT5zZXRNZWRp
YUNvbnRyb2xsZXIodG9NZWRpYUNvbnRyb2xsZXIodmFsdWUpKTsKK30KKworfQorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IGM2ZjFmM2Q0NDNiODViNmY2NDIwY2VlYzk0YmVm
YjIyNzg2MmQ0NDYuLmJhZjBlZmM4OWQ0YWRlYWFiMzFjNzIzMzBmOGQxNWRlMTlkOTg4ZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC01NSw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDsKICAgICBjbGFzcyBKYXZh
U2NyaXB0QXVkaW9Ob2RlOwogICAgIGNsYXNzIExvY2FsTWVkaWFTdHJlYW07CisgICAgY2xhc3Mg
TWVkaWFDb250cm9sbGVyOwogICAgIGNsYXNzIE1lZGlhU3RyZWFtOwogICAgIGNsYXNzIE1lc3Nh
Z2VQb3J0OwogICAgIGNsYXNzIE5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFj
dG9yeS5pbgppbmRleCA2YmRiMmUyMWNhOTZiM2UxMGQzYmUxYzcxZWY3MzBkMjdmMDBkOTFkLi4y
YTM4OTAzNTdiYWY5ZTk2NmE3ZjEzNzE0ZDYxMGVmN2RlMTA4NGE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTEzLDYgKzEzLDcgQEAgSURCVHJhbnNhY3Rp
b24gY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qg
Y29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSmF2YVNjcmlwdEF1ZGlvTm9kZSBjb25kaXRp
b25hbD1XRUJfQVVESU8KIExvY2FsTWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
CitNZWRpYUNvbnRyb2xsZXIgY29uZGl0aW9uYWw9VklERU8KIE1lZGlhU3RyZWFtIGNvbmRpdGlv
bmFsPU1FRElBX1NUUkVBTQogTWVzc2FnZVBvcnQKIE5vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggZjFlMzU0YjYzMWY0OWJhM2FjMTAxZTU1MTNkMjc1
YWM1ZDJkMDk4Mi4uYWU1ZmI3MWNlZWU4NjQwOTgzNmZlMmQ1MDFlYzNmYTk5MGJhMzc1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTE0OCw2ICsxNDgs
NyBAQCBtYXgKIG1heGxlbmd0aAogbWF5c2NyaXB0CiBtZWRpYQorbWVkaWFncm91cAogbWV0aG9k
CiBtaW4KIG11bHRpcGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCBjOTA2NWY2OTFhOWMwY2FlOWU2ZWY2NDMyYjgxN2NmYzJiZDc5NzBmLi40ZTNjZjEyMzI3
ODE0ZTY3YmE5YTIzNTYzNGYzMmJkMjczYmIyMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJIVE1MU291cmNl
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250
cm9scy5oIgogI2luY2x1ZGUgIk1lZGlhRG9jdW1lbnQuaCIKICNpbmNsdWRlICJNZWRpYUVycm9y
LmgiCkBAIC0yMjgsNiArMjI5LDkgQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1l
bnQoKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3Muc2l6ZSgpOyAr
K2kpCiAgICAgICAgIG1fdGV4dFRyYWNrc1tpXS0+c2V0Q2xpZW50KDApOwogI2VuZGlmCisKKyAg
ICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVkaWFDb250cm9sbGVyLT5yZW1v
dmVNZWRpYUVsZW1lbnQodGhpcyk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbE1v
dmVUb05ld093bmVyRG9jdW1lbnQoKQpAQCAtMjk0LDcgKzI5OCw5IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICBp
ZiAoIWF1dG9wbGF5KCkgJiYgbV9wbGF5ZXIpCiAgICAgICAgICAgICBtX3BsYXllci0+c2V0UHJl
bG9hZChtX3ByZWxvYWQpOwogCi0gICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmFib3J0QXR0
cikKKyAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IG1lZGlhZ3JvdXBBdHRyKQorICAgICAgICBz
ZXRNZWRpYUdyb3VwKGF0dHItPnZhbHVlKCkpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IG9u
YWJvcnRBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5hYm9ydEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsK
ICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmJlZm9yZWxvYWRBdHRyKQogICAgICAgICBzZXRB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVsb2FkRXZlbnQsIGNyZWF0
ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwpAQCAtNTg0LDEwICs1OTAsMTEg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCgpCiAgICAgICAgIG1fc2Vl
a2luZyA9IGZhbHNlOwogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVkVGltZSgpOwogICAgICAgICBz
Y2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5lbXB0aWVkRXZlbnQpOworICAgICAgICB1cGRhdGVN
ZWRpYUNvbnRyb2xsZXIoKTsKICAgICB9CiAKICAgICAvLyA1IC0gU2V0IHRoZSBwbGF5YmFja1Jh
dGUgYXR0cmlidXRlIHRvIHRoZSB2YWx1ZSBvZiB0aGUgZGVmYXVsdFBsYXliYWNrUmF0ZSBhdHRy
aWJ1dGUuCi0gICAgc2V0UGxheWJhY2tSYXRlKGRlZmF1bHRQbGF5YmFja1JhdGUoKSk7CisgICAg
c2V0UGxheWJhY2tSYXRlKG1fbWVkaWFDb250cm9sbGVyID8gbV9tZWRpYUNvbnRyb2xsZXItPmRl
ZmF1bHRQbGF5YmFja1JhdGUoKSA6IGRlZmF1bHRQbGF5YmFja1JhdGUoKSk7CiAKICAgICAvLyA2
IC0gU2V0IHRoZSBlcnJvciBhdHRyaWJ1dGUgdG8gbnVsbCBhbmQgdGhlIGF1dG9wbGF5aW5nIGZs
YWcgdG8gdHJ1ZS4KICAgICBtX2Vycm9yID0gMDsKQEAgLTEyMjQsNiArMTIzMSw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBz
dGF0ZSkKICAgICB9CiAKICAgICB1cGRhdGVQbGF5U3RhdGUoKTsKKyAgICB1cGRhdGVNZWRpYUNv
bnRyb2xsZXIoKTsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCkBAIC0xNTIzLDYgKzE1
MzEsMTAgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudFRpbWUoKSBjb25zdAogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRpbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogeworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikgeworICAgICAgICBlYyA9
IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIHNlZWsodGlt
ZSwgZWMpOwogfQogCkBAIC0xNTc0LDEzICsxNTg2LDE0IEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1l
bnQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBsYXli
YWNrUmF0ZShmbG9hdCByYXRlKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6
OnNldFBsYXliYWNrUmF0ZSglZikiLCByYXRlKTsKLQorICAgIAogICAgIGlmIChtX3BsYXliYWNr
UmF0ZSAhPSByYXRlKSB7CiAgICAgICAgIG1fcGxheWJhY2tSYXRlID0gcmF0ZTsKICAgICAgICAg
aW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVz
KCkucmF0ZWNoYW5nZUV2ZW50KTsKICAgICB9Ci0gICAgaWYgKG1fcGxheWVyICYmIHBvdGVudGlh
bGx5UGxheWluZygpICYmIG1fcGxheWVyLT5yYXRlKCkgIT0gcmF0ZSkKKworICAgIGlmIChtX3Bs
YXllciAmJiBwb3RlbnRpYWxseVBsYXlpbmcoKSAmJiBtX3BsYXllci0+cmF0ZSgpICE9IHJhdGUg
JiYgIW1fbWVkaWFDb250cm9sbGVyKQogICAgICAgICBtX3BsYXllci0+c2V0UmF0ZShyYXRlKTsK
IH0KIApAQCAtMTY3Niw3ICsxNjg5LDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheUlu
dGVybmFsKCkKICAgICAgICAgRXhjZXB0aW9uQ29kZSB1bnVzZWQ7CiAgICAgICAgIHNlZWsoMCwg
dW51c2VkKTsKICAgICB9Ci0gICAgCisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAg
ICAgIG1fbWVkaWFDb250cm9sbGVyLT5icmluZ0VsZW1lbnRVcFRvU3BlZWQodGhpcyk7CisKICAg
ICBpZiAobV9wYXVzZWQpIHsKICAgICAgICAgbV9wYXVzZWQgPSBmYWxzZTsKICAgICAgICAgaW52
YWxpZGF0ZUNhY2hlZFRpbWUoKTsKQEAgLTE2OTAsNiArMTcwNiw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cGxheUludGVybmFsKCkKICAgICBtX2F1dG9wbGF5aW5nID0gZmFsc2U7CiAKICAg
ICB1cGRhdGVQbGF5U3RhdGUoKTsKKyAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKIH0KIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZSgpCkBAIC0xODgxLDcgKzE4OTgsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSgpCiAgICAgLy8gV2UgY2FuIHNhZmVs
eSBjYWxsIHRoZSBpbnRlcm5hbCBwbGF5L3BhdXNlIG1ldGhvZHMsIHdoaWNoIGRvbid0IGNoZWNr
IHJlc3RyaWN0aW9ucywgYmVjYXVzZQogICAgIC8vIHRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVk
IGZyb20gdGhlIGJ1aWx0LWluIG1lZGlhIGNvbnRyb2xsZXIKICAgICBpZiAoY2FuUGxheSgpKSB7
Ci0gICAgICAgIHNldFBsYXliYWNrUmF0ZShkZWZhdWx0UGxheWJhY2tSYXRlKCkpOworICAgICAg
ICBzZXRQbGF5YmFja1JhdGUobV9tZWRpYUNvbnRyb2xsZXIgPyBtX21lZGlhQ29udHJvbGxlci0+
ZGVmYXVsdFBsYXliYWNrUmF0ZSgpIDogZGVmYXVsdFBsYXliYWNrUmF0ZSgpKTsKICAgICAgICAg
cGxheUludGVybmFsKCk7CiAgICAgfSBlbHNlIAogICAgICAgICBwYXVzZUludGVybmFsKCk7CkBA
IC0yMjI5LDIwICsyMjQ2LDMzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJU
aW1lQ2hhbmdlZChNZWRpYVBsYXllciopCiAKICAgICBmbG9hdCBub3cgPSBjdXJyZW50VGltZSgp
OwogICAgIGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7Ci0gICAgaWYgKCFpc25hbihkdXIpICYmIGR1
ciAmJiBub3cgPj0gZHVyKSB7Ci0gICAgICAgIGlmIChsb29wKCkpIHsKKyAgICAKKyAgICAvLyBX
aGVuIHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIHJlYWNoZXMgdGhlIGVuZCBvZiB0aGUg
bWVkaWEgcmVzb3VyY2Ugd2hlbiB0aGUgZGlyZWN0aW9uIG9mCisgICAgLy8gcGxheWJhY2sgaXMg
Zm9yd2FyZHMsIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCBmb2xsb3cgdGhlc2Ugc3RlcHM6Cisg
ICAgaWYgKCFpc25hbihkdXIpICYmIGR1ciAmJiBub3cgPj0gZHVyICYmIG1fcGxheWJhY2tSYXRl
ID4gMCkgeworICAgICAgICAvLyBJZiB0aGUgbWVkaWEgZWxlbWVudCBoYXMgYSBsb29wIGF0dHJp
YnV0ZSBzcGVjaWZpZWQgYW5kIGRvZXMgbm90IGhhdmUgYSBjdXJyZW50IG1lZGlhIGNvbnRyb2xs
ZXIsCisgICAgICAgIGlmIChsb29wKCkgJiYgIW1fbWVkaWFDb250cm9sbGVyKSB7CiAgICAgICAg
ICAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRFeGNlcHRpb247CiAgICAgICAgICAgICBtX3NlbnRF
bmRFdmVudCA9IGZhbHNlOworICAgICAgICAgICAgLy8gIHRoZW4gc2VlayB0byB0aGUgZWFybGll
c3QgcG9zc2libGUgcG9zaXRpb24gb2YgdGhlIG1lZGlhIHJlc291cmNlIGFuZCBhYm9ydCB0aGVz
ZSBzdGVwcy4KICAgICAgICAgICAgIHNlZWsoMCwgaWdub3JlZEV4Y2VwdGlvbik7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIW1fcGF1c2VkKSB7CisgICAgICAgICAgICAvLyBJ
ZiB0aGUgbWVkaWEgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgY3VycmVudCBtZWRpYSBjb250cm9s
bGVyLCBhbmQgdGhlIG1lZGlhIGVsZW1lbnQKKyAgICAgICAgICAgIC8vIGhhcyBzdGlsbCBlbmRl
ZCBwbGF5YmFjaywgYW5kIHRoZSBkaXJlY3Rpb24gb2YgcGxheWJhY2sgaXMgc3RpbGwgZm9yd2Fy
ZHMsIGFuZCBwYXVzZWQKKyAgICAgICAgICAgIC8vIGlzIGZhbHNlLAorICAgICAgICAgICAgaWYg
KCFtX21lZGlhQ29udHJvbGxlciAmJiAhbV9wYXVzZWQpIHsKKyAgICAgICAgICAgICAgICAvLyBj
aGFuZ2VzIHBhdXNlZCB0byB0cnVlIGFuZCBmaXJlcyBhIHNpbXBsZSBldmVudCBuYW1lZCBwYXVz
ZSBhdCB0aGUgbWVkaWEgZWxlbWVudC4KICAgICAgICAgICAgICAgICBtX3BhdXNlZCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGF1c2VFdmVudCk7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNp
bXBsZSBldmVudCBuYW1lZCBlbmRlZCBhdCB0aGUgbWVkaWEgZWxlbWVudC4KICAgICAgICAgICAg
IGlmICghbV9zZW50RW5kRXZlbnQpIHsKICAgICAgICAgICAgICAgICBtX3NlbnRFbmRFdmVudCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW5kZWRF
dmVudCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBJZiB0aGUgbWVkaWEgZWxlbWVu
dCBoYXMgYSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIsIHRoZW4gcmVwb3J0IHRoZSBjb250cm9s
bGVyIHN0YXRlCisgICAgICAgICAgICAvLyBmb3IgdGhlIG1lZGlhIGVsZW1lbnQncyBjdXJyZW50
IG1lZGlhIGNvbnRyb2xsZXIuCisgICAgICAgICAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsK
ICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCkBAIC0yNDI2LDEwICsyNDU2LDcgQEAgUGFzc1Jl
ZlB0cjxUaW1lUmFuZ2VzPiBIVE1MTWVkaWFFbGVtZW50OjpwbGF5ZWQoKQogCiBQYXNzUmVmUHRy
PFRpbWVSYW5nZXM+IEhUTUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKCkgY29uc3QKIHsKLSAgICAv
LyBGSVhNRSByZWFsIHJhbmdlcyBzdXBwb3J0Ci0gICAgaWYgKCFtYXhUaW1lU2Vla2FibGUoKSkK
LSAgICAgICAgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwotICAgIHJldHVybiBUaW1lUmFu
Z2VzOjpjcmVhdGUobWluVGltZVNlZWthYmxlKCksIG1heFRpbWVTZWVrYWJsZSgpKTsKKyAgICBy
ZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+c2Vla2FibGUoKSA6IFRpbWVSYW5nZXM6OmNyZWF0
ZSgpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZygpIGNv
bnN0CkBAIC0yNDM4LDcgKzI0NjUsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlh
bGx5UGxheWluZygpIGNvbnN0CiAgICAgLy8gd2hlbiBpdCByYW4gb3V0IG9mIGJ1ZmZlcmVkIGRh
dGEuIEEgbW92aWUgaXMgdGhpcyBzdGF0ZSBpcyAicG90ZW50aWFsbHkgcGxheWluZyIsIG1vZHVs
byB0aGUKICAgICAvLyBjaGVja3MgaW4gY291bGRQbGF5SWZFbm91Z2hEYXRhKCkuCiAgICAgYm9v
bCBwYXVzZWRUb0J1ZmZlciA9IG1fcmVhZHlTdGF0ZU1heGltdW0gPj0gSEFWRV9GVVRVUkVfREFU
QSAmJiBtX3JlYWR5U3RhdGUgPCBIQVZFX0ZVVFVSRV9EQVRBOwotICAgIHJldHVybiAocGF1c2Vk
VG9CdWZmZXIgfHwgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpICYmIGNvdWxkUGxh
eUlmRW5vdWdoRGF0YSgpOworICAgIHJldHVybiAocGF1c2VkVG9CdWZmZXIgfHwgbV9yZWFkeVN0
YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpICYmIGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpICYmICFp
c0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OmNvdWxkUGxheUlmRW5vdWdoRGF0YSgpIGNvbnN0CkBAIC0yNDYwLDEwICsyNDg3LDExIEBAIGJv
b2wgSFRNTE1lZGlhRWxlbWVudDo6ZW5kZWRQbGF5YmFjaygpIGNvbnN0CiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIGFuZCB0aGUgY3VycmVudCBwbGF5YmFjayBwb3NpdGlvbiBpcyB0
aGUgZW5kIG9mIHRoZSBtZWRpYSByZXNvdXJjZSBhbmQgdGhlIGRpcmVjdGlvbgotICAgIC8vIG9m
IHBsYXliYWNrIGlzIGZvcndhcmRzIGFuZCB0aGUgbWVkaWEgZWxlbWVudCBkb2VzIG5vdCBoYXZl
IGEgbG9vcCBhdHRyaWJ1dGUgc3BlY2lmaWVkLAorICAgIC8vIG9mIHBsYXliYWNrIGlzIGZvcndh
cmRzLCBFaXRoZXIgdGhlIG1lZGlhIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhIGxvb3AgYXR0cmli
dXRlIHNwZWNpZmllZCwKKyAgICAvLyBvciB0aGUgbWVkaWEgZWxlbWVudCBoYXMgYSBjdXJyZW50
IG1lZGlhIGNvbnRyb2xsZXIuCiAgICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUoKTsKICAgICBp
ZiAobV9wbGF5YmFja1JhdGUgPiAwKQotICAgICAgICByZXR1cm4gZHVyID4gMCAmJiBub3cgPj0g
ZHVyICYmICFsb29wKCk7CisgICAgICAgIHJldHVybiBkdXIgPiAwICYmIG5vdyA+PSBkdXIgJiYg
KCFsb29wKCkgfHwgbV9tZWRpYUNvbnRyb2xsZXIpOwogCiAgICAgLy8gb3IgdGhlIGN1cnJlbnQg
cGxheWJhY2sgcG9zaXRpb24gaXMgdGhlIGVhcmxpZXN0IHBvc3NpYmxlIHBvc2l0aW9uIGFuZCB0
aGUgZGlyZWN0aW9uIAogICAgIC8vIG9mIHBsYXliYWNrIGlzIGJhY2t3YXJkcwpAQCAtMjUwOSw4
ICsyNTM3LDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlVm9sdW1lKCkKICAgICBp
ZiAoIXByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCkpIHsKICAgICAgICAgUGFnZSogcGFn
ZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAgICAgICAgZmxvYXQgdm9sdW1lTXVsdGlwbGllciA9
IHBhZ2UgPyBwYWdlLT5tZWRpYVZvbHVtZSgpIDogMTsKLSAgICAKLSAgICAgICAgbV9wbGF5ZXIt
PnNldE11dGVkKG1fbXV0ZWQpOworICAgICAgICBib29sIHNob3VsZE11dGUgPSBtX211dGVkOwor
CisgICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikgeworICAgICAgICAgICAgdm9sdW1lTXVs
dGlwbGllciAqPSBtX21lZGlhQ29udHJvbGxlci0+dm9sdW1lKCk7CisgICAgICAgICAgICBzaG91
bGRNdXRlID0gbV9tZWRpYUNvbnRyb2xsZXItPm11dGVkKCk7CisgICAgICAgIH0KKworICAgICAg
ICBtX3BsYXllci0+c2V0TXV0ZWQoc2hvdWxkTXV0ZSk7CiAgICAgICAgIG1fcGxheWVyLT5zZXRW
b2x1bWUobV92b2x1bWUgKiB2b2x1bWVNdWx0aXBsaWVyKTsKICAgICB9CiAKQEAgLTI1NzcsMTEg
KzI2MTEsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUoKQogICAg
ICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICAgICAgbWVkaWFDb250cm9scygp
LT5wbGF5YmFja1N0b3BwZWQoKTsKICAgICB9Ci0gICAgCisKKyAgICB1cGRhdGVNZWRpYUNvbnRy
b2xsZXIoKTsKKwogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT51cGRh
dGVGcm9tRWxlbWVudCgpOwogfQotICAgIAorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBh
dXNlZEludGVybmFsKGJvb2wgYikKIHsKICAgICBtX3BhdXNlZEludGVybmFsID0gYjsKQEAgLTI2
NDEsNiArMjY3Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQo
KQogCiAgICAgLy8gUmVzZXQgbV9yZWFkeVN0YXRlIHNpbmNlIG1fcGxheWVyIGlzIGdvbmUuCiAg
ICAgbV9yZWFkeVN0YXRlID0gSEFWRV9OT1RISU5HOworICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxl
cigpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblN1c3BlbmQoKSBjb25zdApAQCAt
MzEzMyw2ICszMTcwLDcyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0SXRlbVZhbHVlVGV4
dChjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIH0KICNlbmRpZgogCitj
b25zdCBTdHJpbmcmIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhR3JvdXAoKSBjb25zdAoreworICAg
IHJldHVybiBtX21lZGlhQ29udHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5tZWRpYUdyb3Vw
KCkgOiBlbXB0eVN0cmluZygpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlh
R3JvdXAoY29uc3QgU3RyaW5nJiBncm91cCkKK3sKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIg
JiYgbV9tZWRpYUNvbnRyb2xsZXItPm1lZGlhR3JvdXAoKSA9PSBncm91cCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgc2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxlcjo6bWVkaWFDb250
cm9sbGVyRm9yTWVkaWFHcm91cChncm91cCkpOworfQorCitNZWRpYUNvbnRyb2xsZXIqIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhQ29udHJvbGxlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVk
aWFDb250cm9sbGVyLmdldCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlh
Q29udHJvbGxlcihQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gY29udHJvbGxlcikKK3sKKyAg
ICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVkaWFDb250cm9sbGVyLT5yZW1v
dmVNZWRpYUVsZW1lbnQodGhpcyk7CisKKyAgICBtX21lZGlhQ29udHJvbGxlciA9IGNvbnRyb2xs
ZXI7CisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVkaWFDb250cm9s
bGVyLT5hZGRNZWRpYUVsZW1lbnQodGhpcyk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dXBkYXRlTWVkaWFDb250cm9sbGVyKCkKK3sKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisg
ICAgICAgIG1fbWVkaWFDb250cm9sbGVyLT5yZXBvcnRDb250cm9sbGVyU3RhdGUoKTsKK30KKwor
Ym9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc0Jsb2NrZWQoKSBjb25zdAoreworICAgIC8vIEEgbWVk
aWEgZWxlbWVudCBpcyBhIGJsb2NrZWQgbWVkaWEgZWxlbWVudCBpZiBpdHMgcmVhZHlTdGF0ZSBh
dHRyaWJ1dGUgaXMgaW4gdGhlCisgICAgLy8gSEFWRV9OT1RISU5HIHN0YXRlLCB0aGUgSEFWRV9N
RVRBREFUQSBzdGF0ZSwgb3IgdGhlIEhBVkVfQ1VSUkVOVF9EQVRBIHN0YXRlLAorICAgIGlmICht
X3JlYWR5U3RhdGUgPD0gSEFWRV9DVVJSRU5UX0RBVEEpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgLy8gb3IgaWYgdGhlIGVsZW1lbnQgaGFzIHBhdXNlZCBmb3IgdXNlciBpbnRlcmFjdGlv
bi4KKyAgICByZXR1cm4gcGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCk7Cit9CisKK2Jvb2wgSFRN
TE1lZGlhRWxlbWVudDo6aXNCbG9ja2VkT25NZWRpYUNvbnRyb2xsZXIoKSBjb25zdAoreworICAg
IGlmICghbV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IEEgbWVkaWEgZWxlbWVudCBpcyBibG9ja2VkIG9uIGl0cyBtZWRpYSBjb250cm9sbGVyIGlmIHRo
ZSBNZWRpYUNvbnRyb2xsZXIgaXMgYSBibG9ja2VkIAorICAgIC8vIG1lZGlhIGNvbnRyb2xsZXIs
CisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5pc0Jsb2NrZWQoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAvLyBvciBpZiBpdHMgbWVkaWEgY29udHJvbGxlciBwb3NpdGlvbiBpcyBl
aXRoZXIgYmVmb3JlIHRoZSBtZWRpYSByZXNvdXJjZSdzIGVhcmxpZXN0IHBvc3NpYmxlIAorICAg
IC8vIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBNZWRpYUNvbnRyb2xsZXIncyB0aW1lbGluZSBv
ciBhZnRlciB0aGUgZW5kIG9mIHRoZSBtZWRpYSByZXNvdXJjZSAKKyAgICAvLyByZWxhdGl2ZSB0
byB0aGUgTWVkaWFDb250cm9sbGVyJ3MgdGltZWxpbmUuCisgICAgZmxvYXQgbWVkaWFDb250cm9s
bGVyUG9zaXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBpZiAo
bWVkaWFDb250cm9sbGVyUG9zaXRpb24gPCBzdGFydFRpbWUoKSB8fCBtZWRpYUNvbnRyb2xsZXJQ
b3NpdGlvbiA+IHN0YXJ0VGltZSgpICsgZHVyYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDBkMmY5ZmM0OWUxMDBjYjUxN2JlZjBkMTUwYWM0Zjc3
YTU3NWU5ZWMuLmY4MDllNmVlN2Y5OTA3NWJiMjEwNzNjZjdkZTZjYTRiYmQ5ZjQ1OWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNs
dWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2UuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogCiAjaWYgRU5BQkxFKFBMVUdJ
Tl9QUk9YWV9GT1JfVklERU8pCkBAIC01MCw2ICs1MSw3IEBAIGNsYXNzIE1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTsKIGNsYXNzIEV2ZW50OwogY2xhc3MgSFRNTFNvdXJjZUVsZW1lbnQ7CiBj
bGFzcyBIVE1MVHJhY2tFbGVtZW50OworY2xhc3MgTWVkaWFDb250cm9sbGVyOwogY2xhc3MgTWVk
aWFDb250cm9sczsKIGNsYXNzIE1lZGlhRXJyb3I7CiBjbGFzcyBLVVJMOwpAQCAtNjMsNyArNjUs
NyBAQCBjbGFzcyBXaWRnZXQ7CiAvLyBCdXQgaXQgY2FuJ3QgYmUgdW50aWwgdGhlIENocm9taXVt
IFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCBjbGFzcyBpcyBmaXhlZCBzbyBpdAogLy8gbm8gbG9u
Z2VyIGRlcGVuZHMgb24gdHlwZWNhc3RpbmcgYSBNZWRpYVBsYXllckNsaWVudCB0byBhbiBIVE1M
TWVkaWFFbGVtZW50LgogCi1jbGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVt
ZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHByaXZhdGUgTWVkaWFDYW5TdGFydExpc3Rl
bmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVi
bGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHByaXZhdGUgTWVkaWFD
YW5TdGFydExpc3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgTWVkaWFDb250
cm9sbGVySW50ZXJmYWNlCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgcHJpdmF0ZSBU
ZXh0VHJhY2tDbGllbnQKICNlbmRpZgpAQCAtMTA1LDcgKzEwNyw3IEBAIHB1YmxpYzoKIAogICAg
IGVudW0gTmV0d29ya1N0YXRlIHsgTkVUV09SS19FTVBUWSwgTkVUV09SS19JRExFLCBORVRXT1JL
X0xPQURJTkcsIE5FVFdPUktfTk9fU09VUkNFIH07CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtT
dGF0ZSgpIGNvbnN0OwotICAgIAorCiAgICAgU3RyaW5nIHByZWxvYWQoKSBjb25zdDsgICAgCiAg
ICAgdm9pZCBzZXRQcmVsb2FkKGNvbnN0IFN0cmluZyYpOwogCkBAIC0xMTQsNyArMTE2LDYgQEAg
cHVibGljOgogICAgIFN0cmluZyBjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBj
b25zdDsKIAogLy8gcmVhZHkgc3RhdGUKLSAgICBlbnVtIFJlYWR5U3RhdGUgeyBIQVZFX05PVEhJ
TkcsIEhBVkVfTUVUQURBVEEsIEhBVkVfQ1VSUkVOVF9EQVRBLCBIQVZFX0ZVVFVSRV9EQVRBLCBI
QVZFX0VOT1VHSF9EQVRBIH07CiAgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CiAg
ICAgYm9vbCBzZWVraW5nKCkgY29uc3Q7CiAKQEAgLTIzMCw2ICsyMzEsMTIgQEAgcHVibGljOgog
ICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKTsKICNlbmRpZgog
CisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNZWRp
YUdyb3VwKGNvbnN0IFN0cmluZyYpOworCisgICAgTWVkaWFDb250cm9sbGVyKiBtZWRpYUNvbnRy
b2xsZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldE1lZGlhQ29udHJvbGxlcihQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbGxlcj4pOworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5IVE1MTWVkaWFFbGVt
ZW50KCk7CkBAIC0zOTQsNiArNDAxLDggQEAgcHJpdmF0ZToKICAgICAvLyBQYXVzZXMgcGxheWJh
Y2sgd2l0aG91dCBjaGFuZ2luZyBhbnkgc3RhdGVzIG9yIGdlbmVyYXRpbmcgZXZlbnRzCiAgICAg
dm9pZCBzZXRQYXVzZWRJbnRlcm5hbChib29sKTsKIAorICAgIHZvaWQgc2V0UGxheWJhY2tSYXRl
SW50ZXJuYWwoZmxvYXQpOworCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhQ2FuU3RhcnQoKTsKIAog
ICAgIHZvaWQgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoYm9vbCk7CkBAIC00MTIsNiArNDIxLDEy
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEl0ZW1WYWx1ZVRleHQoY29uc3QgU3Ry
aW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCiAKKyAgICB2b2lkIHVwZGF0ZU1lZGlhQ29u
dHJvbGxlcigpOworICAgIGJvb2wgaXNCbG9ja2VkKCkgY29uc3Q7CisgICAgYm9vbCBpc0Jsb2Nr
ZWRPbk1lZGlhQ29udHJvbGxlcigpIGNvbnN0OworICAgIGJvb2wgaGFzU291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9uZXR3b3JrU3RhdGUgIT0gTkVUV09SS19FTVBUWSB8fCBtX25ldHdvcmtTdGF0
ZSAhPSBORVRXT1JLX05PX1NPVVJDRTsgfQorICAgIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3Qg
eyByZXR1cm4gbW92aWVMb2FkVHlwZSgpID09IE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtOyB9CisK
ICAgICBUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiBtX2xvYWRUaW1lcjsKICAgICBUaW1lcjxIVE1M
TWVkaWFFbGVtZW50PiBtX2FzeW5jRXZlbnRUaW1lcjsKICAgICBUaW1lcjxIVE1MTWVkaWFFbGVt
ZW50PiBtX3Byb2dyZXNzRXZlbnRUaW1lcjsKQEAgLTUxNiw2ICs1MzEsOSBAQCBwcml2YXRlOgog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBt
X3RleHRUcmFja3M7CiAjZW5kaWYKKworICAgIGZyaWVuZCBjbGFzcyBNZWRpYUNvbnRyb2xsZXI7
CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gbV9tZWRpYUNvbnRyb2xsZXI7CiB9OwogCiB9
IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAppbmRl
eCAzMzBhZGJhYWRlNzEwMjY5YzJmMmRlNWVlYzVjYzFlMTYyYjBjOWI1Li40OTIxMGI2MjAyNzIz
NzFlNDVhYWI5ZmFiMTkxYmY2MTAwNDNjZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5pZGwKQEAgLTExNCw1ICsxMTQsOCBAQCBtb2R1bGUgaHRtbCB7CiAjaWYgZGVm
aW5lZChFTkFCTEVfVklERU9fVFJBQ0spICYmIEVOQUJMRV9WSURFT19UUkFDSwogICAgIFtFbmFi
bGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2tdIFRleHRUcmFjayBhZGRUcmFjayhpbiBET01T
dHJpbmcga2luZCwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgbGFiZWwsIGluIFtPcHRpb25hbF0g
RE9NU3RyaW5nIGxhbmd1YWdlKTsKICNlbmRpZgorCisgICAgYXR0cmlidXRlIFtSZWZsZWN0LCBD
b252ZXJ0TnVsbFRvTnVsbFN0cmluZywgQ29udmVydE51bGxTdHJpbmdUb051bGxdIERPTVN0cmlu
ZyBtZWRpYUdyb3VwOworICAgIGF0dHJpYnV0ZSBbQ3VzdG9tU2V0dGVyXSBNZWRpYUNvbnRyb2xs
ZXIgbWVkaWFDb250cm9sbGVyOwogfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9s
bGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xYTNmNmQ5YTZmNmFjMmRmNjcxYzYxMGM2NGQ1NjY1OTg2Njc4
YjMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xs
ZXIuY3BwCkBAIC0wLDAgKzEsNTk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlci5oIgorCisjaW5j
bHVkZSAiQ2xvY2suaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAi
VGltZVJhbmdlcy5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2lu
ZyBuYW1lc3BhY2Ugc3RkOworCit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBNZWRpYUNvbnRyb2xs
ZXIqPiBHcm91cENvbnRyb2xsZXJNYXA7CitzdGF0aWMgR3JvdXBDb250cm9sbGVyTWFwJiBtZWRp
YUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
R3JvdXBDb250cm9sbGVyTWFwLCBtYXAsICgpKTsKKyAgICByZXR1cm4gbWFwOworfQorCitQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gTWVkaWFDb250cm9sbGVyOjptZWRpYUNvbnRyb2xsZXJG
b3JNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYgZ3JvdXApCit7CisgICAgaWYgKGdyb3VwLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChncm91cC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgaWYgKE1lZGlhQ29udHJvbGxlciogY29udHJvbGxlciA9IG1l
ZGlhR3JvdXBUb01lZGlhQ29udHJvbGxlck1hcCgpLmdldChncm91cCkpCisgICAgICAgIHJldHVy
biBjb250cm9sbGVyOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gY29udHJvbGxlciA9
IGNyZWF0ZSgpOworICAgIGNvbnRyb2xsZXItPm1fbWVkaWFHcm91cCA9IGdyb3VwOworICAgIG1l
ZGlhR3JvdXBUb01lZGlhQ29udHJvbGxlck1hcCgpLnNldChncm91cCwgY29udHJvbGxlci5nZXQo
KSk7CisgICAgcmV0dXJuIGNvbnRyb2xsZXIucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbGxlcj4gTWVkaWFDb250cm9sbGVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTWVkaWFDb250cm9sbGVyKCkpOworfQorCitNZWRpYUNvbnRyb2xsZXI6Ok1l
ZGlhQ29udHJvbGxlcigpCisgICAgOiBtX3BhdXNlZChmYWxzZSkKKyAgICAsIG1fZGVmYXVsdFBs
YXliYWNrUmF0ZSgxKQorICAgICwgbV92b2x1bWUoMSkKKyAgICAsIG1fbXV0ZWQoZmFsc2UpCisg
ICAgLCBtX3JlYWR5U3RhdGUoSEFWRV9OT1RISU5HKQorICAgICwgbV9wbGF5YmFja1N0YXRlKFdB
SVRJTkcpCisgICAgLCBtX2FzeW5jRXZlbnRUaW1lcih0aGlzLCAmTWVkaWFDb250cm9sbGVyOjph
c3luY0V2ZW50VGltZXJGaXJlZCkKKyAgICAsIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGZhbHNl
KQorICAgICwgbV9jbG9jayhDbG9jazo6Y3JlYXRlKCkpCit7Cit9CisKK01lZGlhQ29udHJvbGxl
cjo6fk1lZGlhQ29udHJvbGxlcigpCit7CisgICAgaWYgKCFtX21lZGlhR3JvdXAuaXNFbXB0eSgp
KQorICAgICAgICBtZWRpYUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXAoKS5yZW1vdmUobV9tZWRp
YUdyb3VwKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmFkZE1lZGlhRWxlbWVudChIVE1M
TWVkaWFFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICBBU1NF
UlQoIW1fbWVkaWFFbGVtZW50cy5jb250YWlucyhlbGVtZW50KSk7CisKKyAgICBtX21lZGlhRWxl
bWVudHMuYXBwZW5kKGVsZW1lbnQpOworICAgIGJyaW5nRWxlbWVudFVwVG9TcGVlZChlbGVtZW50
KTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnJlbW92ZU1lZGlhRWxlbWVudChIVE1MTWVk
aWFFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICBBU1NFUlQo
bV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKGVsZW1lbnQpKTsKKyAgICBtX21lZGlhRWxlbWVudHMu
cmVtb3ZlKG1fbWVkaWFFbGVtZW50cy5maW5kKGVsZW1lbnQpKTsKK30KKworYm9vbCBNZWRpYUNv
bnRyb2xsZXI6OmNvbnRhaW5zTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50cy5jb250YWlucyhlbGVtZW50KTsK
K30KKworUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYUNvbnRyb2xsZXI6OmJ1ZmZlcmVkKCkg
Y29uc3QKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOworCisgICAgLy8gVGhlIGJ1ZmZlcmVkIGF0dHJpYnV0
ZSBtdXN0IHJldHVybiBhIG5ldyBzdGF0aWMgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCB0
aGF0IHJlcHJlc2VudHMgCisgICAgLy8gdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgcmFuZ2VzIG9m
IHRoZSBtZWRpYSByZXNvdXJjZXMgb2YgdGhlIHNsYXZlZCBtZWRpYSBlbGVtZW50cyB0aGF0IHRo
ZSAKKyAgICAvLyB1c2VyIGFnZW50IGhhcyBidWZmZXJlZCwgYXQgdGhlIHRpbWUgdGhlIGF0dHJp
YnV0ZSBpcyBldmFsdWF0ZWQuCisgICAgUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkUmFuZ2Vz
ID0gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPmJ1ZmZlcmVkKCk7CisgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAxOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAg
ICAgIGJ1ZmZlcmVkUmFuZ2VzLT5pbnRlcnNlY3RXaXRoKG1fbWVkaWFFbGVtZW50c1tpbmRleF0t
PmJ1ZmZlcmVkKCkuZ2V0KCkpOworICAgIHJldHVybiBidWZmZXJlZFJhbmdlczsKK30KKworUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYUNvbnRyb2xsZXI6OnNlZWthYmxlKCkgY29uc3QKK3sK
KyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFRpbWVS
YW5nZXM6OmNyZWF0ZSgpOworCisgICAgLy8gVGhlIHNlZWthYmxlIGF0dHJpYnV0ZSBtdXN0IHJl
dHVybiBhIG5ldyBzdGF0aWMgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCB0aGF0IHJlcHJl
c2VudHMKKyAgICAvLyB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSByYW5nZXMgb2YgdGhlIG1lZGlh
IHJlc291cmNlcyBvZiB0aGUgc2xhdmVkIG1lZGlhIGVsZW1lbnRzIHRoYXQgdGhlCisgICAgLy8g
dXNlciBhZ2VudCBpcyBhYmxlIHRvIHNlZWsgdG8sIGF0IHRoZSB0aW1lIHRoZSBhdHRyaWJ1dGUg
aXMgZXZhbHVhdGVkLgorICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZVJhbmdlcyA9IG1f
bWVkaWFFbGVtZW50cy5maXJzdCgpLT5zZWVrYWJsZSgpOworICAgIGZvciAoc2l6ZV90IGluZGV4
ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBz
ZWVrYWJsZVJhbmdlcy0+aW50ZXJzZWN0V2l0aChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5zZWVr
YWJsZSgpLmdldCgpKTsKKyAgICByZXR1cm4gc2Vla2FibGVSYW5nZXM7Cit9CisKK1Bhc3NSZWZQ
dHI8VGltZVJhbmdlcz4gTWVkaWFDb250cm9sbGVyOjpwbGF5ZWQoKQoreworICAgIGlmIChtX21l
ZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRl
KCk7CisKKyAgICAvLyBUaGUgcGxheWVkIGF0dHJpYnV0ZSBtdXN0IHJldHVybiBhIG5ldyBzdGF0
aWMgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgCisgICAgLy8g
dGhlIHVuaW9uIG9mIHRoZSByYW5nZXMgb2YgdGhlIG1lZGlhIHJlc291cmNlcyBvZiB0aGUgc2xh
dmVkIG1lZGlhIGVsZW1lbnRzIHRoYXQgdGhlIAorICAgIC8vIHVzZXIgYWdlbnQgaGFzIHNvIGZh
ciByZW5kZXJlZCwgYXQgdGhlIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyBldmFsdWF0ZWQuCisgICAg
UmVmUHRyPFRpbWVSYW5nZXM+IHBsYXllZFJhbmdlcyA9IG1fbWVkaWFFbGVtZW50cy5maXJzdCgp
LT5wbGF5ZWQoKTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVs
ZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgcGxheWVkUmFuZ2VzLT51bmlvbldpdGgo
bV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+cGxheWVkKCkuZ2V0KCkpOworICAgIHJldHVybiBwbGF5
ZWRSYW5nZXM7Cit9CisKK2Zsb2F0IE1lZGlhQ29udHJvbGxlcjo6ZHVyYXRpb24oKSBjb25zdAor
eworICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBjYWNoaW5nIHRoZSBtYXhpbXVtIGR1cmF0aW9u
IGFuZCBvbmx5IHVwZGF0aW5nIHRoZSBjYWNoZWQgdmFsdWUKKyAgICAvLyB3aGVuIHRoZSBzbGF2
ZWQgbWVkaWEgZWxlbWVudHMnIGR1cmF0aW9ucyBjaGFuZ2UuCisgICAgZmxvYXQgbWF4RHVyYXRp
b24gPSAwOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVu
dHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUVs
ZW1lbnRzW2luZGV4XS0+ZHVyYXRpb24oKTsKKyAgICAgICAgaWYgKGlzbmFuKGR1cmF0aW9uKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBtYXhEdXJhdGlvbiA9IG1heChtYXhEdXJh
dGlvbiwgZHVyYXRpb24pOworICAgIH0KKyAgICByZXR1cm4gbWF4RHVyYXRpb247Cit9CisKK2Zs
b2F0IE1lZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUoKSBjb25zdAoreworICAgIGlmIChtX21l
ZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1
cm4gbV9jbG9jay0+Y3VycmVudFRpbWUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNl
dEN1cnJlbnRUaW1lKGZsb2F0IHRpbWUsIEV4Y2VwdGlvbkNvZGUmIGNvZGUpCit7CisgICAgLy8g
V2hlbiB0aGUgdXNlciBhZ2VudCBpcyB0byBzZWVrIHRoZSBtZWRpYSBjb250cm9sbGVyIHRvIGEg
cGFydGljdWxhciBuZXcgcGxheWJhY2sgcG9zaXRpb24sIAorICAgIC8vIGl0IG11c3QgZm9sbG93
IHRoZXNlIHN0ZXBzOgorICAgIC8vIElmIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gaXMgbGVz
cyB0aGFuIHplcm8sIHRoZW4gc2V0IGl0IHRvIHplcm8uCisgICAgdGltZSA9IG1heCgwLjBmLCB0
aW1lKTsKKyAgICAKKyAgICAvLyBJZiB0aGUgbmV3IHBsYXliYWNrIHBvc2l0aW9uIGlzIGdyZWF0
ZXIgdGhhbiB0aGUgbWVkaWEgY29udHJvbGxlciBkdXJhdGlvbiwgdGhlbiBzZXQgaXQgCisgICAg
Ly8gdG8gdGhlIG1lZGlhIGNvbnRyb2xsZXIgZHVyYXRpb24uCisgICAgdGltZSA9IG1pbih0aW1l
LCBkdXJhdGlvbigpKTsKKyAgICAKKyAgICAvLyBTZXQgdGhlIG1lZGlhIGNvbnRyb2xsZXIgcG9z
aXRpb24gdG8gdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbi4KKyAgICBtX2Nsb2NrLT5zZXRDdXJy
ZW50VGltZSh0aW1lKTsKKyAgICAKKyAgICAvLyBTZWVrIGVhY2ggc2xhdmVkIG1lZGlhIGVsZW1l
bnQgdG8gdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgbWVkaWEgZWxl
bWVudCB0aW1lbGluZS4KKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRp
YUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4
XS0+c2Vlayh0aW1lLCBjb2RlKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnBsYXkoKQor
eworICAgIC8vIFdoZW4gdGhlIHBsYXkoKSBtZXRob2QgaXMgaW52b2tlZCwgaWYgdGhlIE1lZGlh
Q29udHJvbGxlciBpcyBhIHBhdXNlZCBtZWRpYSBjb250cm9sbGVyLAorICAgIGlmICghbV9wYXVz
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIHRoZSB1c2VyIGFnZW50IG11c3QgY2hhbmdl
IHRoZSBNZWRpYUNvbnRyb2xsZXIgaW50byBhIHBsYXlpbmcgbWVkaWEgY29udHJvbGxlciwKKyAg
ICBtX3BhdXNlZCA9IGZhbHNlOworICAgIC8vIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxl
IGV2ZW50IG5hbWVkIHBsYXkgYXQgdGhlIE1lZGlhQ29udHJvbGxlciwKKyAgICBzY2hlZHVsZUV2
ZW50KGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQpOworICAgIC8vIGFuZCB0aGVuIHJlcG9ydCB0aGUg
Y29udHJvbGxlciBzdGF0ZSBvZiB0aGUgTWVkaWFDb250cm9sbGVyLgorICAgIHJlcG9ydENvbnRy
b2xsZXJTdGF0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6cGF1c2UoKQoreworICAg
IC8vIFdoZW4gdGhlIHBhdXNlKCkgbWV0aG9kIGlzIGludm9rZWQsIGlmIHRoZSBNZWRpYUNvbnRy
b2xsZXIgaXMgYSBwbGF5aW5nIG1lZGlhIGNvbnRyb2xsZXIsCisgICAgaWYgKG1fcGF1c2VkKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyB0aGVuIHRoZSB1c2VyIGFnZW50IG11c3QgY2hhbmdl
IHRoZSBNZWRpYUNvbnRyb2xsZXIgaW50byBhIHBhdXNlZCBtZWRpYSBjb250cm9sbGVyLAorICAg
IG1fcGF1c2VkID0gdHJ1ZTsKKyAgICAvLyBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBl
dmVudCBuYW1lZCBwYXVzZSBhdCB0aGUgTWVkaWFDb250cm9sbGVyLAorICAgIHNjaGVkdWxlRXZl
bnQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQpOworICAgIC8vIGFuZCB0aGVuIHJlcG9ydCB0aGUg
Y29udHJvbGxlciBzdGF0ZSBvZiB0aGUgTWVkaWFDb250cm9sbGVyLgorICAgIHJlcG9ydENvbnRy
b2xsZXJTdGF0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0RGVmYXVsdFBsYXli
YWNrUmF0ZShmbG9hdCByYXRlKQoreworICAgIGlmIChtX2RlZmF1bHRQbGF5YmFja1JhdGUgPT0g
cmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhlIGRlZmF1bHRQbGF5YmFja1JhdGUg
YXR0cmlidXRlLCBvbiBzZXR0aW5nLCBtdXN0IHNldCB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbWVk
aWEgY29udHJvbGxlcgorICAgIC8vIGRlZmF1bHQgcGxheWJhY2sgcmF0ZSB0byB0aGUgbmV3IHZh
bHVlLAorICAgIG1fZGVmYXVsdFBsYXliYWNrUmF0ZSA9IHJhdGU7CisKKyAgICAvLyB0aGVuIHF1
ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHJhdGVjaGFuZ2UgYXQgdGhl
IE1lZGlhQ29udHJvbGxlci4KKyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hh
bmdlRXZlbnQpOworfQorCitmbG9hdCBNZWRpYUNvbnRyb2xsZXI6OnBsYXliYWNrUmF0ZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY2xvY2stPnBsYXlSYXRlKCk7Cit9CisKK3ZvaWQgTWVkaWFD
b250cm9sbGVyOjpzZXRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKK3sKKyAgICBpZiAobV9jbG9j
ay0+cGxheVJhdGUoKSA9PSByYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGUgcGxh
eWJhY2tSYXRlIGF0dHJpYnV0ZSwgb24gc2V0dGluZywgbXVzdCBzZXQgdGhlIE1lZGlhQ29udHJv
bGxlcidzIG1lZGlhIGNvbnRyb2xsZXIgCisgICAgLy8gcGxheWJhY2sgcmF0ZSB0byB0aGUgbmV3
IHZhbHVlLAorICAgIG1fY2xvY2stPnNldFBsYXlSYXRlKHJhdGUpOworCisgICAgLy8gdGhlbiBx
dWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCByYXRlY2hhbmdlIGF0IHRo
ZSBNZWRpYUNvbnRyb2xsZXIuCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucmF0ZWNo
YW5nZUV2ZW50KTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldFZvbHVtZShmbG9hdCBs
ZXZlbCwgRXhjZXB0aW9uQ29kZSYgY29kZSkKK3sKKyAgICBpZiAobV92b2x1bWUgPT0gbGV2ZWwp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIElmIHRoZSBuZXcgdmFsdWUgaXMgb3V0c2lkZSB0
aGUgcmFuZ2UgMC4wIHRvIDEuMCBpbmNsdXNpdmUsIHRoZW4sIG9uIHNldHRpbmcsIGFuIAorICAg
IC8vIEluZGV4U2l6ZUVycm9yIGV4Y2VwdGlvbiBtdXN0IGJlIHJhaXNlZCBpbnN0ZWFkLgorICAg
IGlmIChsZXZlbCA8IDAgfHwgbGV2ZWwgPiAxKSB7CisgICAgICAgIGNvZGUgPSBJTkRFWF9TSVpF
X0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgLy8gVGhlIHZvbHVt
ZSBhdHRyaWJ1dGUsIG9uIHNldHRpbmcsIGlmIHRoZSBuZXcgdmFsdWUgaXMgaW4gdGhlIHJhbmdl
IDAuMCB0byAxLjAgaW5jbHVzaXZlLAorICAgIC8vIG11c3Qgc2V0IHRoZSBNZWRpYUNvbnRyb2xs
ZXIncyBtZWRpYSBjb250cm9sbGVyIHZvbHVtZSBtdWx0aXBsaWVyIHRvIHRoZSBuZXcgdmFsdWUK
KyAgICBtX3ZvbHVtZSA9IGxldmVsOworCisgICAgLy8gYW5kIHF1ZXVlIGEgdGFzayB0byBmaXJl
IGEgc2ltcGxlIGV2ZW50IG5hbWVkIHZvbHVtZWNoYW5nZSBhdCB0aGUgTWVkaWFDb250cm9sbGVy
LgorICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnZvbHVtZWNoYW5nZUV2ZW50KTsKKwor
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgp
OyArK2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT51cGRhdGVWb2x1bWUo
KTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldE11dGVkKGJvb2wgZmxhZykKK3sKKyAg
ICBpZiAobV9tdXRlZCA9PSBmbGFnKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGUgbXV0
ZWQgYXR0cmlidXRlLCBvbiBzZXR0aW5nLCBtdXN0IHNldCB0aGUgTWVkaWFDb250cm9sbGVyJ3Mg
bWVkaWEgY29udHJvbGxlciBtdXRlIG92ZXJyaWRlCisgICAgLy8gdG8gdGhlIG5ldyB2YWx1ZQor
ICAgIG1fbXV0ZWQgPSBmbGFnOworCisgICAgLy8gYW5kIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEg
c2ltcGxlIGV2ZW50IG5hbWVkIHZvbHVtZWNoYW5nZSBhdCB0aGUgTWVkaWFDb250cm9sbGVyLgor
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnZvbHVtZWNoYW5nZUV2ZW50KTsKKworICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyAr
K2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT51cGRhdGVWb2x1bWUoKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnJlcG9ydENvbnRyb2xsZXJTdGF0ZSgpCit7Cisg
ICAgdXBkYXRlUmVhZHlTdGF0ZSgpOworICAgIHVwZGF0ZVBsYXliYWNrU3RhdGUoKTsKK30KKwor
dm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVwZGF0ZVJlYWR5U3RhdGUoKQoreworICAgIFJlYWR5U3Rh
dGUgb2xkUmVhZHlTdGF0ZSA9IG1fcmVhZHlTdGF0ZTsKKyAgICBSZWFkeVN0YXRlIG5ld1JlYWR5
U3RhdGU7CisKKyAgICAKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkgeworICAg
ICAgICAvLyBJZiB0aGUgTWVkaWFDb250cm9sbGVyIGhhcyBubyBzbGF2ZWQgbWVkaWEgZWxlbWVu
dHMsIGxldCBuZXcgcmVhZGluZXNzIHN0YXRlIGJlIDAuCisgICAgICAgIG5ld1JlYWR5U3RhdGUg
PSBIQVZFX05PVEhJTkc7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gT3RoZXJ3aXNlLCBsZXQg
aXQgaGF2ZSB0aGUgbG93ZXN0IHZhbHVlIG9mIHRoZSByZWFkeVN0YXRlIElETCBhdHRyaWJ1dGVz
IG9mIGFsbCBvZiBpdHMKKyAgICAgICAgLy8gc2xhdmVkIG1lZGlhIGVsZW1lbnRzLgorICAgICAg
ICBuZXdSZWFkeVN0YXRlID0gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPnJlYWR5U3RhdGUoKTsK
KyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAxOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5z
aXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBuZXdSZWFkeVN0YXRlID0gbWluKG5ld1JlYWR5
U3RhdGUsIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnJlYWR5U3RhdGUoKSk7CisgICAgfQorCisg
ICAgLy8gSWYgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1vc3QgcmVjZW50bHkgcmVwb3J0ZWQgcmVh
ZGluZXNzIHN0YXRlIGlzIG5vdCBlcXVhbCB0byBuZXcgcmVhZGluZXNzIHN0YXRlCisgICAgaWYg
KG5ld1JlYWR5U3RhdGUgPT0gb2xkUmVhZHlTdGF0ZSkgCisgICAgICAgIHJldHVybjsKKworICAg
IC8vIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgYXQgdGhlIE1lZGlh
Q29udHJvbGxlciBvYmplY3QsIHdob3NlIG5hbWUgaXMgdGhlCisgICAgLy8gZXZlbnQgbmFtZSBj
b3JyZXNwb25kaW5nIHRvIHRoZSB2YWx1ZSBvZiBuZXcgcmVhZGluZXNzIHN0YXRlIGdpdmVuIGlu
IHRoZSB0YWJsZSBiZWxvdyAob21taXR0ZWQpCisgICAgQXRvbWljU3RyaW5nIGV2ZW50TmFtZTsK
KyAgICBzd2l0Y2ggKG5ld1JlYWR5U3RhdGUpIHsKKyAgICBjYXNlIEhBVkVfTk9USElORzoKKyAg
ICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLmVtcHRpZWRFdmVudDsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBIQVZFX01FVEFEQVRBOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5h
bWVzKCkubG9hZGVkbWV0YWRhdGFFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIQVZF
X0NVUlJFTlRfREFUQToKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLmxvYWRlZGRh
dGFFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIQVZFX0ZVVFVSRV9EQVRBOgorICAg
ICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkuY2FucGxheUV2ZW50OworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEhBVkVfRU5PVUdIX0RBVEE6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50
TmFtZXMoKS5jYW5wbGF5dGhyb3VnaEV2ZW50OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgc2NoZWR1bGVFdmVu
dChldmVudE5hbWUpOworCisgICAgLy8gTGV0IHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtb3N0IHJl
Y2VudGx5IHJlcG9ydGVkIHJlYWRpbmVzcyBzdGF0ZSBiZSBuZXcgcmVhZGluZXNzIHN0YXRlLgor
ICAgIG1fcmVhZHlTdGF0ZSA9IG5ld1JlYWR5U3RhdGU7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9s
bGVyOjp1cGRhdGVQbGF5YmFja1N0YXRlKCkKK3sKKyAgICBQbGF5YmFja1N0YXRlIG9sZFBsYXli
YWNrU3RhdGUgPSBtX3BsYXliYWNrU3RhdGU7CisgICAgUGxheWJhY2tTdGF0ZSBuZXdQbGF5YmFj
a1N0YXRlOworCisgICAgLy8gSW5pdGlhbGl6ZSBuZXcgcGxheWJhY2sgc3RhdGUgYnkgc2V0dGlu
ZyBpdCB0byB0aGUgc3RhdGUgZ2l2ZW4gZm9yIHRoZSBmaXJzdCBtYXRjaGluZyAKKyAgICAvLyBj
b25kaXRpb24gZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6CisgICAgaWYgKG1fbWVkaWFFbGVtZW50
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIE1lZGlhQ29udHJvbGxlciBoYXMgbm8g
c2xhdmVkIG1lZGlhIGVsZW1lbnRzCisgICAgICAgIC8vIExldCBuZXcgcGxheWJhY2sgc3RhdGUg
YmUgd2FpdGluZy4KKyAgICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IFdBSVRJTkc7CisgICAgfSBl
bHNlIGlmIChoYXNFbmRlZCgpKSB7CisgICAgICAgIC8vIElmIGFsbCBvZiB0aGUgTWVkaWFDb250
cm9sbGVyJ3Mgc2xhdmVkIG1lZGlhIGVsZW1lbnRzIGhhdmUgZW5kZWQgcGxheWJhY2sgYW5kIHRo
ZSBtZWRpYQorICAgICAgICAvLyBjb250cm9sbGVyIHBsYXliYWNrIHJhdGUgaXMgcG9zaXRpdmUg
b3IgemVybworICAgICAgICAvLyBMZXQgbmV3IHBsYXliYWNrIHN0YXRlIGJlIGVuZGVkLgorICAg
ICAgICBuZXdQbGF5YmFja1N0YXRlID0gRU5ERUQ7CisgICAgfSBlbHNlIGlmIChpc0Jsb2NrZWQo
KSkgeworICAgICAgICAvLyBJZiB0aGUgTWVkaWFDb250cm9sbGVyIGlzIGEgYmxvY2tlZCBtZWRp
YSBjb250cm9sbGVyCisgICAgICAgIC8vIExldCBuZXcgcGxheWJhY2sgc3RhdGUgYmUgd2FpdGlu
Zy4KKyAgICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IFdBSVRJTkc7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgLy8gT3RoZXJ3aXNlCisgICAgICAgIC8vIExldCBuZXcgcGxheWJhY2sgc3RhdGUgYmUg
cGxheWluZy4KKyAgICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IFBMQVlJTkc7CisgICAgfQorCisg
ICAgLy8gSWYgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1vc3QgcmVjZW50bHkgcmVwb3J0ZWQgcGxh
eWJhY2sgc3RhdGUgaXMgbm90IGVxdWFsIHRvIG5ldyBwbGF5YmFjayBzdGF0ZQorICAgIGlmIChu
ZXdQbGF5YmFja1N0YXRlID09IG9sZFBsYXliYWNrU3RhdGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIGFuZCB0aGUgbmV3IHBsYXliYWNrIHN0YXRlIGlzIGVuZGVkLAorICAgIGlmIChuZXdQ
bGF5YmFja1N0YXRlID09IEVOREVEKSB7CisgICAgICAgIC8vIHRoZW4gcXVldWUgYSB0YXNrIHRo
YXQsIGlmIHRoZSBNZWRpYUNvbnRyb2xsZXIgb2JqZWN0IGlzIGEgcGxheWluZyBtZWRpYSBjb250
cm9sbGVyLCBhbmQgCisgICAgICAgIC8vIGFsbCBvZiB0aGUgTWVkaWFDb250cm9sbGVyJ3Mgc2xh
dmVkIG1lZGlhIGVsZW1lbnRzIGhhdmUgc3RpbGwgZW5kZWQgcGxheWJhY2ssIGFuZCB0aGUgCisg
ICAgICAgIC8vIG1lZGlhIGNvbnRyb2xsZXIgcGxheWJhY2sgcmF0ZSBpcyBzdGlsbCBwb3NpdGl2
ZSBvciB6ZXJvLCAKKyAgICAgICAgaWYgKCFtX3BhdXNlZCAmJiBoYXNFbmRlZCgpKSB7CisgICAg
ICAgICAgICAvLyBjaGFuZ2VzIHRoZSBNZWRpYUNvbnRyb2xsZXIgb2JqZWN0IHRvIGEgcGF1c2Vk
IG1lZGlhIGNvbnRyb2xsZXIKKyAgICAgICAgICAgIG1fcGF1c2VkID0gdHJ1ZTsKKyAgICAgICAg
ICAgIG1fY2xvY2stPnN0b3AoKTsKKworICAgICAgICAgICAgLy8gYW5kIHRoZW4gZmlyZXMgYSBz
aW1wbGUgZXZlbnQgbmFtZWQgcGF1c2UgYXQgdGhlIE1lZGlhQ29udHJvbGxlciBvYmplY3QuCisg
ICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtb3N0IHJlY2Vu
dGx5IHJlcG9ydGVkIHBsYXliYWNrIHN0YXRlIGlzIG5vdCBlcXVhbCB0byBuZXcgcGxheWJhY2sg
c3RhdGUKKyAgICAvLyB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IGF0
IHRoZSBNZWRpYUNvbnRyb2xsZXIgb2JqZWN0LCB3aG9zZSBuYW1lIGlzIHBsYXlpbmcgCisgICAg
Ly8gaWYgbmV3IHBsYXliYWNrIHN0YXRlIGlzIHBsYXlpbmcsIGVuZGVkIGlmIG5ldyBwbGF5YmFj
ayBzdGF0ZSBpcyBlbmRlZCwgYW5kIHdhaXRpbmcgb3RoZXJ3aXNlLgorICAgIEF0b21pY1N0cmlu
ZyBldmVudE5hbWU7CisgICAgc3dpdGNoIChuZXdQbGF5YmFja1N0YXRlKSB7CisgICAgY2FzZSBX
QUlUSU5HOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkud2FpdGluZ0V2ZW50Owor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEVOREVEOgorICAgICAgICBldmVudE5hbWUgPSBldmVu
dE5hbWVzKCkuZW5kZWRFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQTEFZSU5HOgor
ICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkucGxheWluZ0V2ZW50OworICAgICAgICBt
X2Nsb2NrLT5zdGFydCgpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWUp
OworCisgICAgLy8gTGV0IHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtb3N0IHJlY2VudGx5IHJlcG9y
dGVkIHBsYXliYWNrIHN0YXRlIGJlIG5ldyBwbGF5YmFjayBzdGF0ZS4KKyAgICBtX3BsYXliYWNr
U3RhdGUgPSBuZXdQbGF5YmFja1N0YXRlOworCisgICAgdXBkYXRlTWVkaWFFbGVtZW50cygpOwor
fQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlTWVkaWFFbGVtZW50cygpCit7CisgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsr
aW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnVwZGF0ZVBsYXlTdGF0ZSgp
OworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6YnJpbmdFbGVtZW50VXBUb1NwZWVkKEhUTUxN
ZWRpYUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIEFTU0VS
VChtX21lZGlhRWxlbWVudHMuY29udGFpbnMoZWxlbWVudCkpOworCisgICAgLy8gV2hlbiB0aGUg
dXNlciBhZ2VudCBpcyB0byBicmluZyBhIG1lZGlhIGVsZW1lbnQgdXAgdG8gc3BlZWQgd2l0aCBp
dHMgbmV3IG1lZGlhIGNvbnRyb2xsZXIsCisgICAgLy8gaXQgbXVzdCBzZWVrIHRoYXQgbWVkaWEg
ZWxlbWVudCB0byB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbWVkaWEgY29udHJvbGxlciBwb3NpdGlv
biByZWxhdGl2ZQorICAgIC8vIHRvIHRoZSBtZWRpYSBlbGVtZW50J3MgdGltZWxpbmUuCisgICAg
RXhjZXB0aW9uQ29kZSBpZ25vcmVkQ29kZSA9IDA7CisgICAgZWxlbWVudC0+c2VlayhjdXJyZW50
VGltZSgpLCBpZ25vcmVkQ29kZSk7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjppc0Jsb2Nr
ZWQoKSBjb25zdAoreworICAgIC8vIEEgTWVkaWFDb250cm9sbGVyIGlzIGEgYmxvY2tlZCBtZWRp
YSBjb250cm9sbGVyIGlmIHRoZSBNZWRpYUNvbnRyb2xsZXIgaXMgYSBwYXVzZWQgbWVkaWEgCisg
ICAgLy8gY29udHJvbGxlciwKKyAgICBpZiAobV9wYXVzZWQpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIAorICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgYm9vbCBhbGxQYXVzZWQgPSB0cnVlOworICAgIGZvciAoc2l6
ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7
CisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQgPSBtX21lZGlhRWxlbWVudHNbaW5k
ZXhdOworICAgICAgICAvLyAgb3IgaWYgYW55IG9mIGl0cyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMg
YXJlIGJsb2NrZWQgbWVkaWEgZWxlbWVudHMsCisgICAgICAgIGlmIChlbGVtZW50LT5pc0Jsb2Nr
ZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAKKyAgICAgICAgLy8gb3Ig
aWYgYW55IG9mIGl0cyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgd2hvc2UgYXV0b3BsYXlpbmcgZmxh
ZyBpcyB0cnVlIHN0aWxsIGhhdmUgdGhlaXIgCisgICAgICAgIC8vIHBhdXNlZCBhdHRyaWJ1dGUg
c2V0IHRvIHRydWUsCisgICAgICAgIGlmIChlbGVtZW50LT5hdXRvcGxheSgpICYmIGVsZW1lbnQt
PnBhdXNlZCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIAorICAgICAgICBp
ZiAoIWVsZW1lbnQtPnBhdXNlZCgpKQorICAgICAgICAgICAgYWxsUGF1c2VkID0gZmFsc2U7Cisg
ICAgfQorICAgIAorICAgIC8vIG9yIGlmIGFsbCBvZiBpdHMgc2xhdmVkIG1lZGlhIGVsZW1lbnRz
IGhhdmUgdGhlaXIgcGF1c2VkIGF0dHJpYnV0ZSBzZXQgdG8gdHJ1ZS4KKyAgICByZXR1cm4gYWxs
UGF1c2VkOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6aGFzRW5kZWQoKSBjb25zdAorewor
ICAgIGlmIChtX2Nsb2NrLT5wbGF5UmF0ZSgpIDw9IDApCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIGJvb2wgYWxsSGF2ZUVuZGVkID0gdHJ1ZTsKKyAgICBmb3IgKHNp
emVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkg
eworICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmVuZGVkKCkpCisgICAgICAg
ICAgICBhbGxIYXZlRW5kZWQgPSBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGFsbEhhdmVFbmRl
ZDsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudE5hbWUpCit7CisgICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2UsIHRydWUpKTsKKyAgICBpZiAoIW1fYXN5bmNFdmVudFRp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fYXN5bmNFdmVudFRpbWVyLnN0YXJ0T25lU2hvdCgw
KTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmFzeW5jRXZlbnRUaW1lckZpcmVkKFRpbWVy
PE1lZGlhQ29udHJvbGxlcj4qKQoreworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gcGVuZGlu
Z0V2ZW50czsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAKKyAgICBtX3BlbmRpbmdF
dmVudHMuc3dhcChwZW5kaW5nRXZlbnRzKTsKKyAgICBzaXplX3QgY291bnQgPSBwZW5kaW5nRXZl
bnRzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsr
aW5kZXgpCisgICAgICAgIGRpc3BhdGNoRXZlbnQocGVuZGluZ0V2ZW50c1tpbmRleF0ucmVsZWFz
ZSgpLCBlYyk7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1lZGlhQ29udHJvbGxlcjo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX21lZGlhRWxlbWVu
dHMuZmlyc3QoKS0+ZG9jdW1lbnQoKTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6Omhhc0F1
ZGlvKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRp
YUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnRz
W2luZGV4XS0+aGFzQXVkaW8oKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpoYXNWaWRlbygpIGNv
bnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50
cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKG1fbWVkaWFFbGVtZW50c1tpbmRleF0t
Pmhhc1ZpZGVvKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6aGFzQ2xvc2VkQ2FwdGlvbnMoKSBj
b25zdAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVu
dHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChtX21lZGlhRWxlbWVudHNbaW5kZXhd
LT5oYXNDbG9zZWRDYXB0aW9ucygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldENsb3NlZENh
cHRpb25zVmlzaWJsZShib29sIHZpc2libGUpCit7CisgICAgbV9jbG9zZWRDYXB0aW9uc1Zpc2li
bGUgPSB2aXNpYmxlOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlh
RWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhd
LT5zZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUodmlzaWJsZSk7Cit9CisKK2Jvb2wgTWVkaWFDb250
cm9sbGVyOjpzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRl
eCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAg
ICBpZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnN1cHBvcnRzU2Nhbm5pbmcoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
TWVkaWFDb250cm9sbGVyOjpiZWdpblNjcnViYmluZygpCit7CisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAg
IG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmJlZ2luU2NydWJiaW5nKCk7Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sbGVyOjplbmRTY3J1YmJpbmcoKQoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0g
MDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21l
ZGlhRWxlbWVudHNbaW5kZXhdLT5lbmRTY3J1YmJpbmcoKTsKK30KKworYm9vbCBNZWRpYUNvbnRy
b2xsZXI6OmNhblBsYXkoKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5k
ZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmICghbV9t
ZWRpYUVsZW1lbnRzW2luZGV4XS0+Y2FuUGxheSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6Omlz
TGl2ZVN0cmVhbSgpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8
IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKCFtX21lZGlh
RWxlbWVudHNbaW5kZXhdLT5pc0xpdmVTdHJlYW0oKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpo
YXNTb3VyY2UoKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBt
X21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmICghbV9tZWRpYUVs
ZW1lbnRzW2luZGV4XS0+aGFzU291cmNlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6cmV0dXJu
VG9SZWFsdGltZSgpCit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVk
aWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tpbmRl
eF0tPnJldHVyblRvUmVhbHRpbWUoKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNv
bnRyb2xsZXI6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVz
KCkuaW50ZXJmYWNlRm9yTWVkaWFDb250cm9sbGVyOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NWVmMjlhMjNkYjk5ZDZmZTRjODYw
NDIyOGY5MTkzNzcwOTZmZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
TWVkaWFDb250cm9sbGVyX2gKKyNkZWZpbmUgTWVkaWFDb250cm9sbGVyX2gKKworI2lmIEVOQUJM
RShWSURFTykKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV2ZW50
LmgiCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0Lmgi
CisjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiVGltZXIu
aCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIENsb2NrOworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIEV2ZW50OworCitjbGFz
cyBNZWRpYUNvbnRyb2xsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUNvbnRyb2xsZXI+LCBw
dWJsaWMgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLCBwdWJsaWMgRXZlbnRUYXJnZXQgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gbWVkaWFDb250cm9s
bGVyRm9yTWVkaWFHcm91cChjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xsZXI+IGNyZWF0ZSgpOworICAgIHZpcnR1YWwgfk1lZGlhQ29udHJvbGxlcigp
OworCisgICAgdm9pZCBhZGRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIHZv
aWQgcmVtb3ZlTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBib29sIGNvbnRh
aW5zTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKSBjb25zdDsKKworICAgIGNvbnN0IFN0
cmluZyYgbWVkaWFHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFHcm91cDsgfQorICAgIAor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0OworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBwbGF5ZWQoKTsKKyAgICAKKyAgICB2aXJ0dWFs
IGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCwgRXhjZXB0aW9u
Q29kZSYpOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBwYXVzZWQoKSBjb25zdCB7IHJldHVybiBt
X3BhdXNlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBwbGF5KCk7CisgICAgdmlydHVhbCB2b2lkIHBh
dXNlKCk7CisgICAgCisgICAgdmlydHVhbCBmbG9hdCBkZWZhdWx0UGxheWJhY2tSYXRlKCkgY29u
c3QgeyByZXR1cm4gbV9kZWZhdWx0UGxheWJhY2tSYXRlOyB9CisgICAgdmlydHVhbCB2b2lkIHNl
dERlZmF1bHRQbGF5YmFja1JhdGUoZmxvYXQpOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgcGxh
eWJhY2tSYXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFBsYXliYWNrUmF0ZShmbG9h
dCk7CisgICAgCisgICAgdmlydHVhbCBmbG9hdCB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3Zv
bHVtZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVk
OyB9CisgICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpOworICAgIAorICAgIHZpcnR1YWwg
UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9CisK
KyAgICBlbnVtIFBsYXliYWNrU3RhdGUgeyBXQUlUSU5HLCBQTEFZSU5HLCBFTkRFRCB9OworICAg
IHZpcnR1YWwgUGxheWJhY2tTdGF0ZSBwbGF5YmFja1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9w
bGF5YmFja1N0YXRlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNGdWxsc2NyZWVuKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVu
KCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQXVkaW8oKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgaGFzVmlkZW8oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ2xvc2VkQ2FwdGlv
bnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJv
b2wpOworICAgIHZpcnR1YWwgYm9vbCBjbG9zZWRDYXB0aW9uc1Zpc2libGUoKSBjb25zdCB7IHJl
dHVybiBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZTsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1NjYW5uaW5nKCkgY29uc3Q7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGJlZ2luU2Ny
dWJiaW5nKCk7CisgICAgdmlydHVhbCB2b2lkIGVuZFNjcnViYmluZygpOworICAgIAorICAgIHZp
cnR1YWwgYm9vbCBjYW5QbGF5KCkgY29uc3Q7CisgICAgCisgICAgdmlydHVhbCBib29sIGlzTGl2
ZVN0cmVhbSgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgYm9vbCBoYXNTb3VyY2UoKSBjb25z
dDsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuVG9SZWFsdGltZSgpOworCisgICAgYm9v
bCBpc0Jsb2NrZWQoKSBjb25zdDsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdXNpbmcgUmVm
Q291bnRlZDxNZWRpYUNvbnRyb2xsZXI+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRp
YUNvbnRyb2xsZXI+OjpkZXJlZjsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xsZXIoKTsK
KyAgICB2b2lkIHJlcG9ydENvbnRyb2xsZXJTdGF0ZSgpOworICAgIHZvaWQgdXBkYXRlUmVhZHlT
dGF0ZSgpOworICAgIHZvaWQgdXBkYXRlUGxheWJhY2tTdGF0ZSgpOworICAgIHZvaWQgdXBkYXRl
TWVkaWFFbGVtZW50cygpOworICAgIHZvaWQgYnJpbmdFbGVtZW50VXBUb1NwZWVkKEhUTUxNZWRp
YUVsZW1lbnQqKTsKKyAgICB2b2lkIHNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudE5hbWUpOworICAgIHZvaWQgYXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250
cm9sbGVyPiopOworICAgIGJvb2wgaGFzRW5kZWQoKSBjb25zdDsKKworICAgIC8vIEV2ZW50VGFy
Z2V0CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1f
ZXZlbnRUYXJnZXREYXRhOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2
ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIEV2ZW50
VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKworICAgIGZyaWVuZCBjbGFzcyBIVE1MTWVk
aWFFbGVtZW50OworICAgIGZyaWVuZCBjbGFzcyBNZWRpYUNvbnRyb2xsZXJFdmVudExpc3RlbmVy
OworICAgIFZlY3RvcjxIVE1MTWVkaWFFbGVtZW50Kj4gbV9tZWRpYUVsZW1lbnRzOworICAgIGJv
b2wgbV9wYXVzZWQ7CisgICAgZmxvYXQgbV9kZWZhdWx0UGxheWJhY2tSYXRlOworICAgIGZsb2F0
IG1fdm9sdW1lOworICAgIGJvb2wgbV9tdXRlZDsKKyAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0
ZTsKKyAgICBQbGF5YmFja1N0YXRlIG1fcGxheWJhY2tTdGF0ZTsKKyAgICBWZWN0b3I8UmVmUHRy
PEV2ZW50PiA+IG1fcGVuZGluZ0V2ZW50czsKKyAgICBUaW1lcjxNZWRpYUNvbnRyb2xsZXI+IG1f
YXN5bmNFdmVudFRpbWVyOworICAgIFN0cmluZyBtX21lZGlhR3JvdXA7CisgICAgYm9vbCBtX2Ns
b3NlZENhcHRpb25zVmlzaWJsZTsKKyAgICBQYXNzUmVmUHRyPENsb2NrPiBtX2Nsb2NrOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0YjJhMWZkOGNiOTQ0MDhhMzhk
YWJiOTU2M2ViZmE1ZjczOGZjNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhQ29udHJvbGxlci5pZGwKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVs
ZSBodG1sIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1WSURFTywKKyAg
ICAgICAgQ2FuQmVDb25zdHJ1Y3RlZCwKKyAgICAgICAgR2VuZXJhdGVUb0pTLAorICAgICAgICBF
dmVudFRhcmdldAorICAgIF0gTWVkaWFDb250cm9sbGVyIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFRpbWVSYW5nZXMgYnVmZmVyZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBU
aW1lUmFuZ2VzIHNlZWthYmxlOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUg
ZHVyYXRpb247CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgY3VycmVudFRpbWUKKyAgICAgICAg
ICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGJvb2xlYW4gcGF1c2VkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJh
bmdlcyBwbGF5ZWQ7CisgICAgICAgIHZvaWQgcGxheSgpOworICAgICAgICB2b2lkIHBhdXNlKCk7
CisKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBkZWZhdWx0UGxheWJhY2tSYXRlOworICAgICAg
ICBhdHRyaWJ1dGUgZG91YmxlIHBsYXliYWNrUmF0ZTsKKworICAgICAgICBhdHRyaWJ1dGUgZG91
YmxlIHZvbHVtZQorICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAg
ICAgICAgYXR0cmlidXRlIGJvb2xlYW4gbXV0ZWQ7CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQg
aW50ZXJmYWNlCisgICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlw
ZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3Rl
bmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVh
biB1c2VDYXB0dXJlKTsKKyAgICAgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0
cmluZyB0eXBlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlz
dGVuZXIgbGlzdGVuZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09w
dGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZl
bnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAg
ICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVySW50ZXJmYWNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzJjZDRkYTQxYWY0MmY1ZGEyYWU1ZGY5Nzc4YzRiODZiN2MzNTQwMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVySW50
ZXJmYWNlLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhQ29udHJv
bGxlckludGVyZmFjZV9oCisjZGVmaW5lIE1lZGlhQ29udHJvbGxlckludGVyZmFjZV9oCisKKyNp
ZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFRpbWVSYW5nZXM7CisKK3R5cGVkZWYgaW50IEV4Y2VwdGlv
bkNvZGU7CisKK2NsYXNzIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+TWVkaWFDb250cm9sbGVySW50ZXJmYWNlKCkgeyB9OworICAgIAorICAgIC8vIE1l
ZGlhQ29udHJvbGxlciBJREw6CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1
ZmZlcmVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBz
ZWVrYWJsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4g
cGxheWVkKCkgPSAwOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAg
CisgICAgdmlydHVhbCBib29sIHBhdXNlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cGxheSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKSA9IDA7CisgICAgCisgICAgdmly
dHVhbCBmbG9hdCBkZWZhdWx0UGxheWJhY2tSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0KSA9IDA7CisgICAgCisgICAgdmlydHVh
bCBmbG9hdCBwbGF5YmFja1JhdGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFBs
YXliYWNrUmF0ZShmbG9hdCkgPSAwOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgdm9sdW1lKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZmxvYXQsIEV4Y2VwdGlvbkNv
ZGUmKSA9IDA7CisgICAgCisgICAgdmlydHVhbCBib29sIG11dGVkKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29sKSA9IDA7CisgICAgCisgICAgZW51bSBSZWFkeVN0
YXRlIHsgSEFWRV9OT1RISU5HLCBIQVZFX01FVEFEQVRBLCBIQVZFX0NVUlJFTlRfREFUQSwgSEFW
RV9GVVRVUkVfREFUQSwgSEFWRV9FTk9VR0hfREFUQSB9OworICAgIHZpcnR1YWwgUmVhZHlTdGF0
ZSByZWFkeVN0YXRlKCkgY29uc3QgPSAwOworCisgICAgLy8gTWVkaWFDb250cm9sRWxlbWVudHM6
CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNGdWxsc2NyZWVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBl
bnRlckZ1bGxzY3JlZW4oKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQXVkaW8oKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1ZpZGVvKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2xv
c2VkQ2FwdGlvbnNWaXNpYmxlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzU2Nhbm5pbmcoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJp
bmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZFNjcnViYmluZygpID0gMDsKKworICAgIHZp
cnR1YWwgYm9vbCBjYW5QbGF5KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGlzTGl2
ZVN0cmVhbSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNTb3VyY2UoKSBjb25z
dCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuVG9SZWFsdGltZSgpID0gMDsKK307CisK
K30KKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGlt
ZVJhbmdlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwCmluZGV4IDFl
MTgzMDY5ODc3MTRiMGU5OWIyZDUzNWJjNGI0N2NlM2NjYzg3ODIuLmJiMWIwZmQ1ODcxMjQ3YjFm
OGNhNTJlOGVmN2UwMzY3YjBlODRmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGltZVJhbmdlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcApA
QCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSA8bWF0aC5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIFRpbWVSYW5nZXM6OlRpbWVSYW5nZXMo
ZmxvYXQgc3RhcnQsIGZsb2F0IGVuZCkKIHsKICAgICBhZGQoc3RhcnQsIGVuZCk7CiB9CiAKLVBh
c3NSZWZQdHI8VGltZVJhbmdlcz4gVGltZVJhbmdlczo6Y29weSgpCitQYXNzUmVmUHRyPFRpbWVS
YW5nZXM+IFRpbWVSYW5nZXM6OmNvcHkoKSBjb25zdAogewogICAgIFJlZlB0cjxUaW1lUmFuZ2Vz
PiBuZXdTZXNzaW9uID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7CiAgICAgCkBAIC00Nyw2ICs0OCw1
MSBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IFRpbWVSYW5nZXM6OmNvcHkoKQogICAgIHJldHVy
biBuZXdTZXNzaW9uLnJlbGVhc2UoKTsKIH0KIAordm9pZCBUaW1lUmFuZ2VzOjppbnZlcnQoKQor
eworICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBpbnZlcnRlZCA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgp
OworICAgIGZsb2F0IHBvc0luZiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0
eSgpOworICAgIGZsb2F0IG5lZ0luZiA9IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5m
aW5pdHkoKTsKKworICAgIGlmICghbV9yYW5nZXMuc2l6ZSgpKQorICAgICAgICBpbnZlcnRlZC0+
YWRkKG5lZ0luZiwgcG9zSW5mKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGZsb2F0IHN0YXJ0
ID0gbV9yYW5nZXMuZmlyc3QoKS5tX3N0YXJ0ICE9IG5lZ0luZikKKyAgICAgICAgICAgIGludmVy
dGVkLT5hZGQobmVnSW5mLCBzdGFydCk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAw
OyBpbmRleCArIDEgPCBtX3Jhbmdlcy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBpbnZl
cnRlZC0+YWRkKG1fcmFuZ2VzW2luZGV4XS5tX2VuZCwgbV9yYW5nZXNbaW5kZXggKyAxXS5tX3N0
YXJ0KTsKKworICAgICAgICBpZiAoZmxvYXQgZW5kID0gbV9yYW5nZXMubGFzdCgpLm1fZW5kICE9
IHBvc0luZikKKyAgICAgICAgICAgIGludmVydGVkLT5hZGQoZW5kLCBwb3NJbmYpOworICAgIH0K
KworICAgIG1fcmFuZ2VzLnN3YXAoaW52ZXJ0ZWQtPm1fcmFuZ2VzKTsKK30KKwordm9pZCBUaW1l
UmFuZ2VzOjppbnRlcnNlY3RXaXRoKGNvbnN0IFRpbWVSYW5nZXMqIG90aGVyKQoreworICAgIEFT
U0VSVChvdGhlcik7CisgICAgUmVmUHRyPFRpbWVSYW5nZXM+IGludmVydGVkID0gY29weSgpOwor
ICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBpbnZlcnRlZE90aGVyID0gb3RoZXItPmNvcHkoKTsKKyAg
ICBpbnZlcnRlZC0+dW5pb25XaXRoKGludmVydGVkT3RoZXIuZ2V0KCkpOworICAgIGludmVydGVk
LT5pbnZlcnQoKTsKKworICAgIG1fcmFuZ2VzLnN3YXAoaW52ZXJ0ZWQtPm1fcmFuZ2VzKTsKK30K
Kwordm9pZCBUaW1lUmFuZ2VzOjp1bmlvbldpdGgoY29uc3QgVGltZVJhbmdlcyogb3RoZXIpCit7
CisgICAgQVNTRVJUKG90aGVyKTsKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gdW5pb25lZCA9IGNv
cHkoKTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3RoZXItPm1fcmFuZ2Vz
LnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBjb25zdCBSYW5nZSYgcmFuZ2UgPSBvdGhlci0+
bV9yYW5nZXNbaW5kZXhdOworICAgICAgICB1bmlvbmVkLT5hZGQocmFuZ2UubV9zdGFydCwgcmFu
Z2UubV9lbmQpOworICAgIH0KKworICAgIG1fcmFuZ2VzLnN3YXAodW5pb25lZC0+bV9yYW5nZXMp
OworfQorCiBmbG9hdCBUaW1lUmFuZ2VzOjpzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9u
Q29kZSYgZWMpIGNvbnN0IAogeyAKICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9UaW1lUmFuZ2VzLmgKaW5kZXggMmQ3YWYyNWE4MDkxMzczMGY4MGQyMzkzMGJlMjc0ZTBm
ZjEyMTdmZC4uY2NjY2UwNWMxOWM0YWM5ZTYyOWRkMmEyYTFmYjY2NTIxOTc4MTBkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9UaW1lUmFuZ2VzLmgKQEAgLTQ2LDcgKzQ2LDEwIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBUaW1lUmFuZ2VzKHN0YXJ0LCBlbmQpKTsKICAgICB9CiAKLSAg
ICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGNvcHkoKTsKKyAgICBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IGNvcHkoKSBjb25zdDsKKyAgICB2b2lkIGludmVydCgpOworICAgIHZvaWQgaW50ZXJzZWN0
V2l0aChjb25zdCBUaW1lUmFuZ2VzKik7CisgICAgdm9pZCB1bmlvbldpdGgoY29uc3QgVGltZVJh
bmdlcyopOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZXMu
c2l6ZSgpOyB9CiAgICAgZmxvYXQgc3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUm
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCA0ZThmMDY3MGY5ZjI3NmEw
YzY0M2UyYjIxYzBlYzJhZmM1YzQzMzg2Li5kMmY1ZGJjMWQxYjIyMWY5ODJiZTkzYmE4YjBmODky
MDA1MzE4NWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC02MzQsNiArNjM0LDcg
QEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU8s
IEVuYWJsZWRBdFJ1bnRpbWVdIE1lZGlhRXJyb3JDb25zdHJ1Y3RvciBNZWRpYUVycm9yOwogICAg
ICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVZJREVPLCBFbmFibGVkQXRSdW50aW1lXSBUaW1l
UmFuZ2VzQ29uc3RydWN0b3IgVGltZVJhbmdlczsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRp
b25hbD1WSURFTywgRW5hYmxlZEF0UnVudGltZV0gSFRNTFNvdXJjZUVsZW1lbnRDb25zdHJ1Y3Rv
ciBIVE1MU291cmNlRWxlbWVudDsKKyAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1WSURF
TywgRW5hYmxlZEF0UnVudGltZV0gTWVkaWFDb250cm9sbGVyQ29uc3RydWN0b3IgTWVkaWFDb250
cm9sbGVyOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJiYgRU5BQkxFX0FO
SU1BVElPTl9BUEkKICAgICAgICAgYXR0cmlidXRlIFdlYktpdEFuaW1hdGlvbkNvbnN0cnVjdG9y
IFdlYktpdEFuaW1hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAppbmRleCAwMThjN2RkMzNlMzhjMWI4Zjc3MzQ1YThjM2U0ZjgzNWZl
YzYwYTczLi5mYzc3ZmYyODgzOGI3YzA5NGFhNTNhNGZiZGYwNzE2ODBjYTIyMTMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC02
MDksNiArNjA5LDExIEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXI6OmJ1ZmZl
cmVkKCkKICAgICByZXR1cm4gbV9wcml2YXRlLT5idWZmZXJlZCgpOwogfQogCitQYXNzUmVmUHRy
PFRpbWVSYW5nZXM+IE1lZGlhUGxheWVyOjpzZWVrYWJsZSgpCit7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+c2Vla2FibGUoKTsKK30KKwogZmxvYXQgTWVkaWFQbGF5ZXI6Om1heFRpbWVTZWVrYWJs
ZSgpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWF4VGltZVNlZWthYmxlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBjOTZiMDI1
ZDgyZDAwNzA5MTY5ZWVhNTFjMDc4MjZiNzQ1MDZjNDcxLi40NzczOWEwOGIwZTNkOWNjNzNjOTlh
MTMxNDM0YTc4YWUwMzc0NTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgKQEAgLTI0MSw2ICsyNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRQcmVzZXJ2ZXNQaXRjaChib29sKTsKIAogICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVm
ZmVyZWQoKTsKKyAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCk7CiAgICAgZmxv
YXQgbWF4VGltZVNlZWthYmxlKCk7CiAKICAgICB1bnNpZ25lZCBieXRlc0xvYWRlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaAppbmRleCBmOGM3MGFiZTI4YTdlZDAxZGZiOGEyY2I3ZjFjNjM2NjM3ZDM4NDQxLi42YzUy
N2Q3ZTVjZDM4OTk5MTZiNDY1ZWY3MmQ1NzE0NDA1NmVkN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMjks
NiArMjksNyBAQAogI2lmIEVOQUJMRShWSURFTykKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgi
CisjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTkxLDYgKzkyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgPSAwOwog
CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbWF4VGltZVNlZWthYmxlKCkgPyBUaW1lUmFuZ2VzOjpjcmVhdGUoMCwgbWF4VGltZVNl
ZWthYmxlKCkpIDogVGltZVJhbmdlczo6Y3JlYXRlKCk7IH0KICAgICB2aXJ0dWFsIGZsb2F0IG1h
eFRpbWVTZWVrYWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJh
bmdlcz4gYnVmZmVyZWQoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmZTI1ZWMzMWM3OWNmNDI1ZWZi
NmQ1NjZhZGFmZDQ4ZDM5OTNjMzMzLi4xOWEwNDg1NTk2MDZkOWZmODM1NDkxZjdjM2QzNTNjZDdh
ZWMxZDRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMTEtMDMgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IE1lZGlhQ29udHJvbGxlci4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDA4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS9t
ZWRpYS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVk
aWEtY29udHJvbGxlci1wbGF5YmFjay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbDogQWRkZWQuCisgICAgICAgICogbWVk
aWEvbWVkaWEtY29udHJvbGxlci5odG1sOiBBZGRlZC4KKworMjAxMS0xMS0wMyAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgTWVkaWFDb250cm9s
bGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE0
MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1l
ZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRp
YS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLmh0bWw6IEFkZGVkLgorCisyMDExLTExLTAyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNv
bnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IG1lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbDogQWRkZWQuCisKIDIwMTEtMTEtMDgg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
IGZhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctZml4ZWQtd2lkdGgtYW5k
LWhlaWdodC1uby1zY3JvbGxpbmcuaHRtbCBpcyBmbGFreQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRp
YS9tZWRpYS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzZkNGQwN2ZmY2Nm
Y2IzMGU3NTVhY2MyNjhlNjc0Zjc0YWNjYzBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNSBAQAor
IAorVGVzdCBwcmVzZW5jZSBvZiBNZWRpYUNvbnRyb2xsZXIgY29uc3RydWN0b3IsIG1lZGlhQ29u
dHJvbGxlciwgYW5kIG1lZGlhR3JvdXAgYXR0cmlidXRlczoKK0VYUEVDVEVEICh0eXBlb2YoTWVk
aWFDb250cm9sbGVyKSA9PSAnb2JqZWN0JykgT0sKK0VYUEVDVEVEICh2aWRlby5tZWRpYUNvbnRy
b2xsZXIgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKHZpZGVvLm1lZGlhR3JvdXAgPT0gJycpIE9L
CisKK1Rlc3QgdGhhdCB0aGUgcHJlc2VuY2Ugb2YgYSBtZWRpYUdyb3VwIGF0dHJpYnV0ZSBjcmVh
dGVzIGEgbWVkaWFDb250cm9sbGVyOgorRVhQRUNURUQgKHZpZGVvMi5tZWRpYUdyb3VwID09ICdn
cm91cCcpIE9LCitFWFBFQ1RFRCAodmlkZW8yLm1lZGlhQ29udHJvbGxlciAhPSAnbnVsbCcpIE9L
CisKK1Rlc3QgdGhhdCBzZXR0aW5nIG1lZGlhR3JvdXAgdG8gYW4gZW1wdHkgc3RyaW5nIHJlbW92
ZXMgdGhlIG1lZGlhQ29udHJvbGxlcjoKK1JVTih2aWRlby5tZWRpYUdyb3VwID0gJycpCitFWFBF
Q1RFRCAodmlkZW8ubWVkaWFDb250cm9sbGVyID09ICdudWxsJykgT0sKKworVGVzdCBtYW51YWxs
eSBjcmVhdGluZyBhbmQgYXNzaWduaW5nIGEgbWVkaWFDb250cm9sbGVyIHRvIGEgbWVkaWEgZWxl
bWVudDoKK1JVTihjb250cm9sbGVyID0gbmV3IE1lZGlhQ29udHJvbGxlcigpKQorUlVOKHZpZGVv
Lm1lZGlhQ29udHJvbGxlciA9IGNvbnRyb2xsZXIpCitFWFBFQ1RFRCAodmlkZW8ubWVkaWFDb250
cm9sbGVyID09ICdbb2JqZWN0IE1lZGlhQ29udHJvbGxlcl0nKSBPSworCitUZXN0IHRoYXQgdHdv
IG1lZGlhIGVsZW1lbnRzIHdpdGggdGhlIHNhbWUgbWVkaWFHcm91cCBoYXZlIHRoZSBzYW1lIG1l
ZGlhQ29udHJvbGxlcjoKK1JVTih2aWRlby5tZWRpYUdyb3VwID0gJ2dyb3VwJykKK1JVTih2aWRl
bzIubWVkaWFHcm91cCA9ICdncm91cCcpCitFWFBFQ1RFRCAodmlkZW8ubWVkaWFDb250cm9sbGVy
ID09PSB2aWRlbzIubWVkaWFDb250cm9sbGVyID09ICd0cnVlJykgT0sKK0VORCBPRiBURVNUCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2st
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFj
ay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhhOGUwOTIxM2VlMWE3MTA3YjgxMWFiOWY4ODNh
ZDQwMTJhM2ZhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNv
bnRyb2xsZXItcGxheWJhY2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKKyAKK1JVTihj
b250cm9sbGVyID0gdmlkZW8ubWVkaWFDb250cm9sbGVyKQorRVZFTlQoY2FucGxheXRocm91Z2gp
CitSVU4oY29udHJvbGxlci5jdXJyZW50VGltZSA9IDUpCitFWFBFQ1RFRCAodmlkZW8uY3VycmVu
dFRpbWUgPT0gJzUnKSBPSworRVhQRUNURUQgKHZpZGVvMi5jdXJyZW50VGltZSA9PSAnNScpIE9L
CitSVU4odmlkZW8ucGxheSgpKQorUlVOKHZpZGVvMi5wbGF5KCkpCitSVU4oY29udHJvbGxlci5w
bGF5KCkpCitFVkVOVChwbGF5aW5nKQorRVhQRUNURUQgKGNvbnRyb2xsZXIucGF1c2VkID09ICdm
YWxzZScpIE9LCitFVkVOVChlbmRlZCkKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbCBiL0xheW91dFRlc3Rz
L21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzJiODNl
ZjFhYTg4OTZkN2MyMjA3ZjdhOTQ2NDkwZjNjY2Y1ZjJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay5odG1sCkBAIC0wLDAgKzEs
NDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPXZpZGVv
LXRlc3QuanM+PC9zY3JpcHQ+CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgdmFyIGNvbnRy
b2xsZXI7CisgICAgICAgIHZhciB2aWRlbzI7CisKKyAgICAgICAgZnVuY3Rpb24gc3RhcnQoKSB7
CisgICAgICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRl
bycpWzBdOworICAgICAgICAgICAgdmlkZW8yID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ3ZpZGVvJylbMV07CisgICAgICAgICAgICBydW4oJ2NvbnRyb2xsZXIgPSB2aWRlby5tZWRp
YUNvbnRyb2xsZXInKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcign
Y2FucGxheXRocm91Z2gnLCBjYW5wbGF5dGhyb3VnaCwgdHJ1ZSk7CisgICAgICAgICAgICBzZXRT
cmNCeVRhZ05hbWUoJ3ZpZGVvJywgZmluZE1lZGlhRmlsZSgndmlkZW8nLCAnY29udGVudC90ZXN0
JykpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBjYW5wbGF5dGhyb3Vn
aCgpIHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQoY2FucGxheXRocm91Z2gpIik7
CisgICAgICAgICAgICBjb250cm9sbGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NhbnBsYXl0aHJv
dWdoJywgY2FucGxheXRocm91Z2gsIHRydWUpOworICAgICAgICAgICAgcnVuKCdjb250cm9sbGVy
LmN1cnJlbnRUaW1lID0gNScpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5jdXJy
ZW50VGltZScsIDUpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlbzIuY3VycmVudFRp
bWUnLCA1KTsKKyAgICAgICAgICAgIHJ1bigndmlkZW8ucGxheSgpJyk7CisgICAgICAgICAgICBy
dW4oJ3ZpZGVvMi5wbGF5KCknKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuYWRkRXZlbnRMaXN0
ZW5lcigncGxheWluZycsIHBsYXlpbmcsIHRydWUpOworICAgICAgICAgICAgcnVuKCdjb250cm9s
bGVyLnBsYXkoKScpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBwbGF5
aW5nKCkgeyAKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQocGxheWluZykiKTsKKyAg
ICAgICAgICAgIGNvbnRyb2xsZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHBsYXlp
bmcsIHRydWUpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdjb250cm9sbGVyLnBhdXNlZCcs
IGZhbHNlKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcignZW5kZWQn
LCBlbmRlZCwgdHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBlbmRlZCgpIHsg
CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGVuZGVkKSIpOworICAgICAgICAgICAg
Y29udHJvbGxlci5yZW1vdmVFdmVudExpc3RlbmVyKCdlbmRlZCcsIGVuZGVkLCB0cnVlKTsKKyAg
ICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHZpZGVvIG1lZGlh
R3JvdXA9Imdyb3VwIiBjb250cm9scz48L3ZpZGVvPgorICAgICAgICA8dmlkZW8gbWVkaWFHcm91
cD0iZ3JvdXAiIGNvbnRyb2xzPjwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlh
LWNvbnRyb2xsZXIuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jMGU1OTY3NTRkNWFiYjFjM2U3ZWRmMTQyOWM2OTNhOGI4Nzg0ZmEwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci5odG1s
CkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAg
ICAgdmFyIGNvbnRyb2xsZXI7CisgICAgICAgIHZhciB2aWRlbzI7CisKKyAgICAgICAgZnVuY3Rp
b24gc3RhcnQoKSB7CisgICAgICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCd2aWRlbycpWzBdOworICAgICAgICAgICAgdmlkZW8yID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMV07CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
VGVzdCBwcmVzZW5jZSBvZiBNZWRpYUNvbnRyb2xsZXIgY29uc3RydWN0b3IsIG1lZGlhQ29udHJv
bGxlciwgYW5kIG1lZGlhR3JvdXAgYXR0cmlidXRlczoiKTsKKyAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgidHlwZW9mKE1lZGlhQ29udHJvbGxlcikiLCAib2JqZWN0Iik7CisgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciIsIG51bGwpOworICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRpYUdyb3VwIiwgIiIpOworICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCB0aGF0IHRoZSBwcmVz
ZW5jZSBvZiBhIG1lZGlhR3JvdXAgYXR0cmlidXRlIGNyZWF0ZXMgYSBtZWRpYUNvbnRyb2xsZXI6
IikKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8yLm1lZGlhR3JvdXAiLCAnZ3JvdXAn
KTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8yLm1lZGlhQ29udHJvbGxlciIsIG51
bGwsICIhPSIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiVGVzdCB0aGF0IHNldHRpbmcgbWVkaWFHcm91cCB0byBhbiBlbXB0eSBzdHJp
bmcgcmVtb3ZlcyB0aGUgbWVkaWFDb250cm9sbGVyOiIpCisgICAgICAgICAgICBydW4oInZpZGVv
Lm1lZGlhR3JvdXAgPSAnJyIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRp
YUNvbnRyb2xsZXIiLCBudWxsKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgbWFudWFsbHkgY3JlYXRpbmcgYW5kIGFzc2lnbmlu
ZyBhIG1lZGlhQ29udHJvbGxlciB0byBhIG1lZGlhIGVsZW1lbnQ6IikKKyAgICAgICAgICAgIHJ1
bigiY29udHJvbGxlciA9IG5ldyBNZWRpYUNvbnRyb2xsZXIoKSIpOworICAgICAgICAgICAgcnVu
KCJ2aWRlby5tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyIik7CisgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciIsIGNvbnRyb2xsZXIpOworICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCB0aGF0
IHR3byBtZWRpYSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIG1lZGlhR3JvdXAgaGF2ZSB0aGUgc2Ft
ZSBtZWRpYUNvbnRyb2xsZXI6IikKKyAgICAgICAgICAgIHJ1bigidmlkZW8ubWVkaWFHcm91cCA9
ICdncm91cCciKTsKKyAgICAgICAgICAgIHJ1bigidmlkZW8yLm1lZGlhR3JvdXAgPSAnZ3JvdXAn
Iik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciA9PT0g
dmlkZW8yLm1lZGlhQ29udHJvbGxlciIsIHRydWUpOworICAgICAgICAgICAgZW5kVGVzdCgpOwor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9InN0YXJ0KCkiPgorICAgICAgICA8dmlkZW8+PC92aWRlbz4KKyAgICAgICAgPHZpZGVvIG1l
ZGlhZ3JvdXA9Imdyb3VwIj48L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
bGlvbi9mYXN0L3JlZ2lvbnMvcmVuZGVyLXJlZ2lvbi1jdXN0b20tc3R5bGUtbWFyay1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbi9mYXN0L3JlZ2lvbnMvcmVuZGVy
LXJlZ2lvbi1jdXN0b20tc3R5bGUtbWFyay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY3NGVh
OWU0ZmE4NTBhOTM4NDNlM2NmOGRiYmE2NTRkYjM5MzA0NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy1saW9uL2Zhc3QvcmVnaW9ucy9yZW5kZXItcmVnaW9uLWN1
c3RvbS1zdHlsZS1tYXJrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM0IEBACitsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xh
eWVyIGF0ICgwLDApIHNpemUgODAweDE2NgorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkg
c2l6ZSA4MDB4MTY2CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4MTUw
CisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAyMDB4NTAKKyAgICAgIFJl
bmRlckJsb2NrIHtESVZ9IGF0ICgwLDUwKSBzaXplIDIwMHg1MAorICAgICAgUmVuZGVyUmVnaW9u
IHtESVZ9IGF0ICgwLDEwMCkgc2l6ZSAyMDB4NTAKK0Zsb3cgVGhyZWFkcworICBUaHJlYWQgd2l0
aCBmbG93LW5hbWUgJ2Zsb3cxJworICAgIGxheWVyIGF0ICgwLDApIHNpemUgMjAweDEwMAorICAg
ICAgUmVuZGVyRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDIwMHgxMDAKKyAgICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDAsMTYpIHNpemUgMjAweDE4OAorICAgICAgICAgIFJlbmRlckJsb2Nr
IHtQfSBhdCAoMCwwKSBzaXplIDIwMHgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgMTY4eDE4CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDE2ODogIkZpcnN0IHBhcmEgZ29lcyBpbnRvIHJlZ2lvbi4iCisgICAgICAgICAgUmVuZGVy
QmxvY2sgKGFub255bW91cykgYXQgKDAsMzQpIHNpemUgMjAweDE4CisgICAgICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMzR4MTgKKyAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMTM0OiAiVGV4dCBnb2VzIGludG8gcmVnaW9uIgorICAgICAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCw2OCkgc2l6ZSAyMDB4MTgKKyAgICAgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE4N3gxOAorICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCAxODc6ICJTZWNvbmQgcGFyYSBnb2VzIGludG8gcmVnaW9uLiIKKyAg
ICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMTAyKSBzaXplIDIwMHgxOAorICAgICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTc1eDE4CisgICAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE3NTogIlRoaXJkIHBhcmEgZ29lcyBpbnRvIHJlZ2lv
bi4iCisgICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMTM2KSBzaXplIDIw
MHgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTM0eDE4
CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEzNDogIlRleHQgZ29lcyBp
bnRvIHJlZ2lvbiIKKyAgICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMTcwKSBzaXplIDIw
MHgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTgyeDE4
CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE4MjogIkZvdXJ0aCBwYXJh
IGdvZXMgaW50byByZWdpb24uIgorICBSZWdpb25zIGZvciBmbG93ICdmbG93MScKKyAgICBSZW5k
ZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjEgcmVnaW9uIHN0eWxlOiAxCisgICAgUmVuZGVyUmVnaW9u
IHtESVZ9ICNyZWdpb24zIHJlZ2lvbiBzdHlsZTogMQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114217</attachid>
            <date>2011-11-09 00:13:24 -0800</date>
            <delta_ts>2011-11-09 07:45:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71408-20111109001323.patch</filename>
            <type>text/plain</type>
            <size>100782</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk1NzYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMmZmYzIwYjIxOWIyYjU1
NDczZWYzMmVhNWQyYWUxNzk0ZTIxN2MzLi43MTJhMWUxZTg4NmY1M2E0ZTA3ZjU5NTIzZDgyYmM1
ZGMxZDcwMWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU3IEBACisyMDExLTExLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNv
bnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbAorCisgICAgICAgIEFkZHMgc3VwcG9ydCBm
b3IgdGhlIE1lZGlhQ29udHJvbGxlciBET00gb2JqZWN0LCBhbmQgdGhlIG1lZGlhZ3JvdXAgYW5k
IG1lZGlhY29udHJvbGxlcgorICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGF0dHJpYnV0ZXMuCisK
KyAgICAgICAgTWVkaWFDb250cm9sbGVyIGlzIGFuIERPTSBvYmplY3Qgd2hpY2ggc3luY2hyb25p
emVzIHBsYXliYWNrIG9mIG11bHRpcGxlIEhUTUxNZWRpYUVsZW1lbnRzLiBJdCBjYW4KKyAgICAg
ICAgZWl0aGVyIGJlIGNyZWF0ZWQgYnkgYSBwYWdlIHNjcmlwdCBhbmQgYXNzaWduZWQgdG8gYSBI
VE1MTWVkaWFFbGVtZW50IHVzaW5nIHRoZSBtZWRpYUNvbnRyb2xsZXIgcHJvcGVydHksCisgICAg
ICAgIG9yIGFsbCBIVE1MTWVkaWFFbGVtZW50cyB3aXRoIGlkZW50aWNhbCBtZWRpYWdyb3VwIGF0
dHJpYnV0ZXMgd2lsbCBoYXZlIGEgTWVkaWFDb250cm9sbGVyIGFzc2lnbmVkIAorICAgICAgICBh
dXRvbWF0aWNhbGx5LgorCisgICAgICAgIEFkZCBhbiBhYnN0cmFjdCBpbnRlcmZhY2UgaW1wbGVt
ZW50ZWQgYnkgYm90aCBNZWRpYUNvbnRyb2xsZXIgYW5kIEhUTUxNZWRpYUVsZW1lbnQuCisgICAg
ICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U6On5NZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UpOgorCisgICAgICAgIEFkZCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCBhbmQgSURMLgor
ICAgICAgICAqIGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChtZWRp
YUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXApOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpt
ZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
Y3JlYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6TWVkaWFDb250cm9sbGVyKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6fk1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChNZWRp
YUNvbnRyb2xsZXI6OmFkZE1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnJlbW92ZU1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmNvbnRhaW5z
TWVkaWFFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6YnVmZmVyZWQpOgorICAg
ICAgICAoTWVkaWFDb250cm9sbGVyOjpzZWVrYWJsZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnBsYXllZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKToKKyAgICAg
ICAgKE1lZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnBsYXkpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpwYXVzZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnNldERlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpz
ZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZCk6CisgICAgICAgIChNZWRpYUNvbnRy
b2xsZXI6OnJlcG9ydENvbnRyb2xsZXJTdGF0ZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnVwZGF0ZVJlYWR5U3RhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjp1cGRhdGVQbGF5
YmFja1N0YXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlTWVkaWFFbGVtZW50
cyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnNjaGVkdWxlRXZlbnQpOgorICAgICAgICAo
TWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpoYXNBdWRpbyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Omhhc1ZpZGVvKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzQ2xvc2VkQ2FwdGlvbnMpOgorICAgICAgICAoTWVk
aWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUpOgorICAgICAgICAoTWVkaWFD
b250cm9sbGVyOjpzdXBwb3J0c1NjYW5uaW5nKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
YmVnaW5TY3J1YmJpbmcpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjplbmRTY3J1YmJpbmcp
OgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjYW5QbGF5KToKKyAgICAgICAgKE1lZGlhQ29u
dHJvbGxlcjo6aXNMaXZlU3RyZWFtKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzU291
cmNlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6cmV0dXJuVG9SZWFsdGltZSk6CisgICAg
ICAgIChNZWRpYUNvbnRyb2xsZXI6OmlzQmxvY2tlZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6Omhhc0VuZGVkKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6bWVkaWFHcm91cCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xsZXI6OmRlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sbGVyOjp2b2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpt
dXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnJlYWR5U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1N0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6c3VwcG9ydHNGdWxsc2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6aXNGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbGxlcjo6Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sbGVyOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbGxlcjo6dG9NZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sbGVyOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvTWVk
aWFDb250cm9sbGVyLmlkbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGNvbnZlbmllbmNlIGZ1bmN0
aW9ucyB0byBUaW1lUmFuZ2VzIHdoaWNoIGNhbiBjYWxjdWxhdGUgaW50ZXJzZWN0aW9ucyBhbmQK
KyAgICAgICAgdW5pb25zIGJldHdlZW4gVGltZVJhbmdlcyBvYmplY3RzLgorICAgICAgICAqIGh0
bWwvVGltZVJhbmdlcy5jcHA6CisgICAgICAgIChUaW1lUmFuZ2VzOjpjb3B5KToKKyAgICAgICAg
KFRpbWVSYW5nZXM6OmludmVydCk6CisgICAgICAgIChUaW1lUmFuZ2VzOjppbnRlcnNlY3RXaXRo
KToKKyAgICAgICAgKFRpbWVSYW5nZXM6OnVuaW9uV2l0aCk6CisgICAgICAgICogaHRtbC9UaW1l
UmFuZ2VzLmg6CisKKyAgICAgICAgQWRkIE1lZGlhQ29udHJvbGxlckNvbnN0cnVjdG9yIHRvIHRo
ZSBXaW5kb3cgb2JqZWN0LgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKworICAgICAg
ICBBZGQgdGhlIHR3byBuZXcgYXR0cmlidXRlIG5hbWVzLCBtZWRpYWdyb3VwIGFuZCBtZWRpYWNv
bnRyb2xsZXIuCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYXR0cmlidXRlcywgYW5kIGFkZCBvdmVycmlkZGVu
IGJlaGF2aW9yIHdoZW4gYSBtZWRpYSBlbGVtZW50CisgICAgICAgIGhhcyBhIGN1cnJlbnQgbWVk
aWEgY29udHJvbGxlcjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjplbmRlZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6dXNlckNhbmNlbGxlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRN
ZWRpYUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNv
bnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlTWVk
aWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzQmxv
Y2tlZE9uTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc1NvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0xpdmVTdHJlYW0pOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1M
TWVkaWFFbGVtZW50Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxN
ZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcik6CisKKyAgICAgICAgQWRkIGEgZnVuY3Rp
b24gInNlZWthYmxlIiB3aGljaCByZXR1cm5zIGEgVGltZVJhbmdlcyBjb250YWluaW5nIHRoZSBz
ZWVrYWJsZSB0aW1lIHJhbmdlcworICAgICAgICBpbiBhIG1lZGlhIGVsZW1lbnQuICBCeSBkZWZh
dWx0IHRoaXMgaXMgYSBzaW5nbGUgcmFuZ2Ugb2YgWzAsIG1heFRpbWVTZWVrYWJsZV0uCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OnNlZWthYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpz
ZWVrYWJsZSk6CisKKyAgICAgICAgU3VwcG9ydCBmdW5jdGlvbnMgdG8gY2FzdCBiZXR3ZWVuIE1l
ZGlhQ29udHJvbGxlciBhbmQgRXZlbnRUYXJnZXQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNF
dmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBkb20v
RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OnRvTWVkaWFD
b250cm9sbGVyKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKworICAgICAgICBCb2ls
ZXJwbGF0ZSB0byBzdXBwb3J0IGNyZWF0aW5nIHRoZSBkZXJpdmVkIHNvdXJjZXMgZm9yIE1lZGlh
Q29udHJvbGxlciBhbmQgYWRkaW5nIG5ldyBzb3VyY2VzCisgICAgICAgIHRvIHRoZSBwcm9qZWN0
OgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNw
cDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMS0xMS0wOCAgQW5kcmV5IEtvc3lha292ICA8
Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtFeHRlbnNpb24g
QVBJXVtDaHJvbWl1bV0gaW5qZWN0ZWQgZXh0ZW5zaW9uIEFQSSBuZWVkcyB0byByZXR1cm4gYW4g
b2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKaW5kZXggYTE5NGFlODNlMWUz
YzAyZjVmZTA0NGExMTgxYzRmMDVjMDY3ZTlmNy4uZWM1MTBkZTI5ZTZlZTVkZmFkNWRiZTAwZDQy
ZmUyNzYzMTEzMjIxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaApAQCAtMTEx
MCw3ICsxMTEwLDcgQEAKICNkZWZpbmUgSEFWRV9JTlZFUlRFRF9XSEVFTF9FVkVOVFMgMQogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShXSU4pICYmICFPUyhXSU5DRSkg
JiYgIVBMQVRGT1JNKFdJTl9DQUlSTykpCisjaWYgUExBVEZPUk0oTUFDKQogI2RlZmluZSBXVEZf
VVNFX0NPUkVBVURJTyAxCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3ZTE1Mjk3
OWJiZTE4ODJkMTlkYWYwYjVmZjlmY2I4OTg3YjJhNTJiLi5kYjI2ZDcwNDg0NTY0MGQ2ZjBhMTNl
ODljNWJiZGQxNzQwNjM5ZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjc2LDYgKzI3Niw3
IEBAIFNFVChXZWJDb3JlX0lETF9GSUxFUwogICAgIGh0bWwvSFRNTFVua25vd25FbGVtZW50Lmlk
bAogICAgIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwKICAgICBodG1sL0ltYWdlRGF0YS5pZGwK
KyAgICBodG1sL01lZGlhQ29udHJvbGxlci5pZGwKICAgICBodG1sL01lZGlhRXJyb3IuaWRsCiAg
ICAgaHRtbC9UZXh0TWV0cmljcy5pZGwKICAgICBodG1sL1RleHRUcmFjay5pZGwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLmNwcAppbmRleCBiM2YxZTNmYjk5NmU3OTAzOTNkOWZkYzg2ZjY5MWI4YTYx
NTNkM2Q2Li41NTg3NjA5MDY2OWQyOWU3MzZjMWE4NmQ2MjAyYjc0MmIwMmMyZjFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC0yMjgsNiArMjI4LDcgQEAKICNpbmNsdWRlICJKU0ph
dmFTY3JpcHRDYWxsRnJhbWUuY3BwIgogI2luY2x1ZGUgIkpTS2V5Ym9hcmRFdmVudC5jcHAiCiAj
aW5jbHVkZSAiSlNMb2NhdGlvbi5jcHAiCisjaW5jbHVkZSAiSlNNZWRpYUNvbnRyb2xsZXIuY3Bw
IgogI2luY2x1ZGUgIkpTTWVkaWFFcnJvci5jcHAiCiAjaW5jbHVkZSAiSlNNZWRpYUxpc3QuY3Bw
IgogI2luY2x1ZGUgIkpTTWVkaWFRdWVyeUxpc3QuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggZTYwNzRjMWVkNzcxMzRlNWJjYmVhNmE5OGI1ZTE4ZGM5OThhYTcwZi4uNDg0
OTU2MjczNWYzYjYwMWY0ZGQ5NTA1ZTEwYWIyMWI3YTI4YjBjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC0yNzcsNiArMjc3LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgS2V5
Ym9hcmRFdmVudCBcCiAgICAgTG9jYXRpb24gXAogICAgIExvd1Bhc3MyRmlsdGVyTm9kZSBcCisg
ICAgTWVkaWFDb250cm9sbGVyIFwKICAgICBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgXAog
ICAgIE1lZGlhRXJyb3IgXAogICAgIE1lZGlhTGlzdCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5w
cmkKaW5kZXggY2FlYjc5OWU2NzZkMTIwYTRlODljZTg0MDQzNzQ3NTcyYzRmN2U5Ni4uYzZmNTJl
ODM3YTdlMmZmZjMxNTMzMTVhNTFjZTQ4NjgwNTE2N2YwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLnByaQpAQCAtMzE0LDYgKzMxNCw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgaHRtbC9I
VE1MVW5rbm93bkVsZW1lbnQuaWRsIFwKICAgICBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsIFwK
ICAgICBodG1sL0ltYWdlRGF0YS5pZGwgXAorICAgIGh0bWwvTWVkaWFDb250cm9sbGVyLmlkbCBc
CiAgICAgaHRtbC9NZWRpYUVycm9yLmlkbCBcCiAgICAgaHRtbC9UZXh0TWV0cmljcy5pZGwgXAog
ICAgIGh0bWwvVGltZVJhbmdlcy5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggMTU1MzQ0MmU0YjQ4MjVhZmMxOGM3OTUyZWVjNDdjZTBhNmI5OWVkNi4uODY4MTNmOTFhYTNi
ZGVhY2E2YTJhNDk5ZmQ3MDQxNmY5YzVjZjhjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0zNTksNiArMzU5LDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTTG9jYWxNZWRpYVN0cmVhbS5oIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTTG9jYXRpb24uY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTG9j
YXRpb24uaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhQ29udHJvbGxlci5jcHAg
XAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUNvbnRyb2xsZXIuaCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhRXJyb3IuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTTWVkaWFFcnJvci5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFMaXN0
LmNwcCBcCkBAIC0xODc1LDYgKzE4NzcsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvTGlua1JlbEF0dHJpYnV0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1s
L0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRl
eHRUcmFjay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFEb2N1bWVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1
bWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpp
bmRleCBmMDIwMWI2NWZmNDJmMjUyYWU4NTlhOTVhMjQyMzk1MWZjZjBjYjdhLi43ODM0MzhhOWVm
ZWI3OWE4MjAwZDY0ZTYxMzdhZTY0ZjU4OWRiN2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTE5Niw2ICsx
OTYsNyBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1l
bnRDb25zdHJ1Y3Rvci5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW5w
dXRFbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxM
aW5rRWxlbWVudEN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
TWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxPdXRwdXRFbGVtZW50Q3VzdG9tLmNwcCBcCkBAIC0zMDcsNiArMzA4
LDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0
b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNw
cCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCBcCisg
ICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgXAogICAgICAg
ICBiaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTSFRNTE91dHB1dEVsZW1lbnRDdXN0b20uY3BwIFwKQEAgLTEwMjIsNiArMTAy
NCw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL3RleHQvTG9jYWxpemVkRGF0ZU5vbmUu
Y3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L0xvY2FsaXplZE51bWJlck5vbmUuY3BwIFwKICAgICBw
bGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHAgXAorICAgIHBsYXRmb3JtL0Nsb2NrLmNw
cCBcCisgICAgcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmNwcCBcCiAgICAgcGxhdGZvcm0vQ29udGVu
dFR5cGUuY3BwIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAgXAogICAgIHBs
YXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBcCkBAIC0xMDMyLDcgKzEwMzYsNiBAQCBTT1VSQ0VT
ICs9IFwKICAgICBwbGF0Zm9ybS9GaWxlSWNvbkxvYWRlci5jcHAgXAogICAgIHBsYXRmb3JtL0Zp
bGVTdHJlYW0uY3BwIFwKICAgICBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcCBcCi0gICAgcGxhdGZv
cm0vQ2xvY2tHZW5lcmljLmNwcCBcCiAgICAgcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNw
cCBcCiAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvSW1hZ2VGcmFtZVF0LmNwcCBcCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmNwcCBcCkBAIC0xODY1LDYgKzE4
NjgsNyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL0xhYmVsc05vZGVMaXN0LmggXAogICAgIGh0
bWwvTGlua1JlbEF0dHJpYnV0ZS5oIFwKICAgICBodG1sL0xvYWRhYmxlVGV4dFRyYWNrLmggXAor
ICAgIGh0bWwvTWVkaWFDb250cm9sbGVyLmggXAogICAgIGh0bWwvTWVkaWFEb2N1bWVudC5oIFwK
ICAgICBodG1sL01pY3JvRGF0YUl0ZW1WYWx1ZS5oIFwKICAgICBodG1sL1BsdWdpbkRvY3VtZW50
LmggXApAQCAtMjA1Miw2ICsyMDU2LDggQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vYW5p
bWF0aW9uL0FuaW1hdGlvbkxpc3QuaCBcCiAgICAgcGxhdGZvcm0vQXJlbmEuaCBcCiAgICAgcGxh
dGZvcm0vQXN5bmNGaWxlU3RyZWFtLmggXAorICAgIHBsYXRmb3JtL0Nsb2NrLmggXAorICAgIHBs
YXRmb3JtL0Nsb2NrR2VuZXJpYy5oIFwKICAgICBwbGF0Zm9ybS9Db250ZW50VHlwZS5oIFwKICAg
ICBwbGF0Zm9ybS9Db250ZXh0TWVudS5oIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGll
ci5oIFwKQEAgLTIwNzAsNyArMjA3Niw2IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL21v
Y2svR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oIFwKICAgICBwbGF0Zm9ybS9tb2NrL1NwZWVjaElu
cHV0Q2xpZW50TW9jay5oIFwKICAgICBwbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5o
IFwKLSAgICBwbGF0Zm9ybS9DbG9ja0dlbmVyaWMuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmggXApAQCAtMzA4NCw2ICszMDg5LDcgQEAg
Y29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPPTEpIHsKICAgICAgICAgaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBcCiAgICAgICAgIGh0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwIFwKICAg
ICAgICAgaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBcCisgICAgICAgIGh0bWwvTWVkaWFDb250
cm9sbGVyLmNwcCBcCiAgICAgICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cCBcCiAgICAgICAgIGh0bWwvVGltZVJhbmdlcy5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDU5M2VkNTlhYjIyNTkx
Zjg4ODBkNjcxZTFiN2FhOGJiYWE5ODcxNjIuLjg3OGY4OGE4MGJmMmYzZjFjZjM5YTI5NjBkYTYx
YzA4MzI5MWVlZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEzMzAsNiArMTMzMCw3IEBACiAgICAg
ICAgICAgICAnaHRtbC9IVE1MVW5rbm93bkVsZW1lbnQuaWRsJywKICAgICAgICAgICAgICdodG1s
L0hUTUxWaWRlb0VsZW1lbnQuaWRsJywKICAgICAgICAgICAgICdodG1sL0ltYWdlRGF0YS5pZGwn
LAorICAgICAgICAgICAgJ2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbCcsCiAgICAgICAgICAgICAn
aHRtbC9NZWRpYUVycm9yLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9UZXh0TWV0cmljcy5pZGwn
LAogICAgICAgICAgICAgJ2h0bWwvVGV4dFRyYWNrLmlkbCcsCkBAIC0xODc0LDYgKzE4NzUsNyBA
QAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5oJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxMaW5rRWxlbWVudEN1c3RvbS5jcHAnLAor
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmgnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNw
cCcsCkBAIC0yMTk4LDYgKzIyMDAsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5oJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCcsCisgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25FbGVtZW50Q29uc3Ry
dWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9u
RWxlbWVudENvbnN0cnVjdG9yLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAnLApAQCAtNTU5NCw2ICs1NTk3LDggQEAK
ICAgICAgICAgICAgICdodG1sL0xpbmtSZWxBdHRyaWJ1dGUuaCcsCiAgICAgICAgICAgICAnaHRt
bC9Mb2FkYWJsZVRleHRUcmFjay5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvTG9hZGFibGVUZXh0
VHJhY2suaCcsCisgICAgICAgICAgICAnaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwJywKKyAgICAg
ICAgICAgICdodG1sL01lZGlhQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdodG1sL01lZGlh
RG9jdW1lbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL01lZGlhRG9jdW1lbnQuaCcsCiAgICAg
ICAgICAgICAnaHRtbC9NZWRpYUVycm9yLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA4OWY0NTgwNjc0OWJmZTY3MjA5N2Y5N2YzNjNlM2Vl
MDE4NDI3MmFmLi41ODdhMjcwMjU5Yjc0YTFhMTExM2JkZjFkYjIwOGExNDJjNmM0YzFiIDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjYyNTQs
NiArMjYyNTQsMjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccGxhdGZvcm1cQ2xvY2suY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxDbG9jay5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxDbG9ja0dlbmVyaWMu
Y3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxDbG9ja0dlbmVyaWMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cQ29udGVudFR5cGUuY3BwIgogCQkJCT4KIAkJCTwv
RmlsZT4KQEAgLTU3NTk0LDYgKzU3NjEwLDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTWVkaWFDb250cm9sbGVyLmNwcCIKKwkJCQk+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxNZWRpYUNv
bnRyb2xsZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5caHRtbFxNZWRpYURvY3VtZW50LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGJh
OTQ0MTUwMjQ1YWM0YjI2NDcwNjNjZjcxZjA4MjM2OTI1ZDdjYi4uMjlmNDBiZTIxYzkxN2QzNjRh
YTE3NTU0N2ZlOTAxYTk0NGJkZGI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTcxMCwxNyArNTcxMCwyMiBAQAogCQlDRDBE
QkZFRTE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53
YXYgaW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0QwREJFMEQxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9U
MzQ1X1AzMTUud2F2ICovOyB9OwogCQlDRDBEQkZFRjE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0Nv
bXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXYgaW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwREJFMEUxNDIyNzU5NTAwMjgwMjYz
IC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMzAud2F2ICovOyB9OwogCQlDRDBEQkZG
MDE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXYg
aW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0QwREJFMEYxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1
X1AzNDUud2F2ICovOyB9OworCQlDRDI3RjZFNTE0NTc2ODVBMDA3ODIwN0QgLyogSlNNZWRpYUNv
bnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLzsg
fTsKKwkJQ0QyN0Y2RTcxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFNjE0NTc3
MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0Q4MjAzMEExMzk1
QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzA2MTM5NUFCNkEwMEY5
NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q4MjAzMEIxMzk1QUI2QTAwRjk1NkM2
IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxB
R1MgPSAiLVduby11bmRlZiI7IH07IH07CiAJCUNEODIwMzBDMTM5NUFCNkEwMEY5NTZDNiAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwODEzOTVBQjZBMDBGOTU2QzYgLyog
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEODIwMzBEMTM5NUFCNkEwMEY5NTZD
NiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAzMDkxMzk1QUI2QTAwRjk1
NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gKi87IH07CiAJ
CUNEODIwMzEwMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBFMTM5NUFDRTcw
MEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAqLzsgfTsKIAkJQ0Q4MjAzMTExMzk1QUNF
NzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJX
aW5kb3dBbmltYXRpb24ubW0gKi87IH07CisJCUNERDUyNUQ3MTQ1QjZERDAwMDhEMjA0RCAvKiBK
U0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpTSFRNTE1lZGlh
RWxlbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCUNERUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQ
bGF0Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAg
Ki87IH07CiAJCUNERUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MzIxNDYw
QUUyOTAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5jcHAgKi87IH07CiAJCUNERUE3NjM1MTQ2MEI3
MUEwMDhCMzFGMSAvKiBDbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREVBNzYzMzE0NjBCNDYyMDA4QjMxRjEgLyogQ2xvY2suY3BwICovOyB9
OwogCQlDREVBN0M4NDEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTdDODIxMjc2MjMw
NDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uaCAqLzsgfTsKIAkJQ0RFQTdDODUxMjc2MjMw
NDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTdDODMxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRl
ckZ1bGxTY3JlZW4uY3BwICovOyB9OworCQlDREY2NUNDODE0NUIxRTc1MDBDNEM3QUEgLyogTWVk
aWFDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDI3RjZFNDE0NTc2Nzg3MDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RGNjVDQ0ExNDVC
NDQ4ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQzkxNDVCNDNBNzAwQzRDN0FB
IC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMDJGMEM0MTFFODNBREQwMEM2Njg0QSAvKiBTY3Jp
cHRDb250cm9sbGVyQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0UwMkYwQzMxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Uw
NTdGQTUxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBMzEyMjA3
MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0Uw
NTdGQTYxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTQxMjIwNzMx
MTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzAxOCw2ICsxMzAyMywxMSBAQAog
CQlDRDBEQkUwRDE0MjI3NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVf
UDMxNS53YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBhdWRpby53YXY7IG5hbWUgPSBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1Lndhdjsg
cGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9JUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0
NV9QMzE1Lndhdjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlDRDBEQkUwRTE0MjI3
NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXYgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5h
bWUgPSBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzMwLndhdjsgcGF0aCA9IHBsYXRmb3Jt
L2F1ZGlvL3Jlc291cmNlcy9JUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzMwLndhdjsgc291
cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlDRDBEQkUwRjE0MjI3NTk1MDAyODAyNjMgLyog
SVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBJUkNfQ29tcG9z
aXRlX0NfUjAxOTVfVDM0NV9QMzQ1LndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNl
cy9JUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzQ1Lndhdjsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OworCQlDRDI3RjZFMDE0NTc1QzFCMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVy
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBNZWRpYUNvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDRDI3RjZFMjE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYUNvbnRyb2xsZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDI3RjZFMzE0NTc2NzU4MDA3ODIwN0Qg
LyogSlNNZWRpYUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNNZWRpYUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyN0Y2
RTQxNDU3Njc4NzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0QyN0Y2RTYxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xsZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEg
LyogZnVsbHNjcmVlbi5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW4u
Y3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDgyMDMwNjEzOTVBQjZBMDBGOTU2
QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzA3MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzMDI2LDYgKzEzMDM2LDggQEAKIAkJQ0Q4MjAzMEUxMzk1QUNFNzAwRjk1
NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJXaW5kb3dBbmltYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0Q4MjAzMEYxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYldpbmRvd0FuaW1hdGlvbi5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCRDkzQkExMzMzQkQ0QjAwMjU3MEUzIC8q
IGZ1bGxzY3JlZW5RdWlja1RpbWUuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxs
c2NyZWVuUXVpY2tUaW1lLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDRTVD
Q0YxNDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50RmFjdG9yeS5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBFdmVudEZhY3RvcnkuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQ0U1
Q0QwMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudFRhcmdldEZhY3RvcnkuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gRXZlbnRUYXJnZXRGYWN0b3J5LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREVBNzYyQzE0NjA4MjI0MDA4QjMxRjEgLyogQ2xvY2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ0EuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBNzYyRjE0NjA4NEVFMDA4QjMxRjEgLyogUGxh
dGZvcm1DbG9ja0NBLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3Jt
Q2xvY2tDQS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMwMzQsNiArMTMwNDYs
OCBAQAogCQlDREVBNzYzMzE0NjBCNDYyMDA4QjMxRjEgLyogQ2xvY2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDREVBN0M4MjEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJGdWxsU2NyZWVuLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3QzgzMTI3NjIzMDQwMEI4NDZERCAvKiBS
ZW5kZXJGdWxsU2NyZWVuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlckZ1bGxTY3JlZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY2
NUNDOTE0NUI0M0E3MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY2NUNDQzE0NUI2QUZFMDBDNEM3QUEgLyog
SlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVy
QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRDb250cm9sbGVy
QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTA1N0ZBMzEyMjA3MzExMDBB
NDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDU3RkE0MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NzM3Miw2ICsxNzM4NiwxMCBAQAogCQkJCUU0NDYxM0EwMENENjMzMTAwMEZBREE3NSAvKiBWb2lk
Q2FsbGJhY2suaWRsICovLAogCQkJCUY1NUIzREFCMTI1MUYxMkQwMDNFRjI2OSAvKiBXZWVrSW5w
dXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0RBQzEyNTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0
VHlwZS5oICovLAorCQkJCUNEMjdGNkUwMTQ1NzVDMUIwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xs
ZXIuaWRsICovLAorCQkJCUNEMjdGNkU0MTQ1NzY3ODcwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xs
ZXIuaCAqLywKKwkJCQlDRDI3RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVy
LmNwcCAqLywKKwkJCQlDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVy
SW50ZXJmYWNlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGh0bWw7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMTc2MDUsNiArMTc2MjMsOCBAQAogCQlBODNCNzkwODBDQ0FGRjJCMDAw
QjA4MjUgLyogSFRNTCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJQ0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAq
LywKKwkJCQlDRDI3RjZFMzE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuaCAq
LywKIAkJCQk0OUVFQ0VGMjEwNTA3MEM0MDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlci5jcHAgKi8s
CiAJCQkJNDlFRUNFRjMxMDUwNzBDNDAwMDk5RkFCIC8qIEpTQXJyYXlCdWZmZXIuaCAqLywKIAkJ
CQk0OUVFQ0YxOTEwNTA3MkYzMDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlclZpZXcuY3BwICovLApA
QCAtMTk2MjcsNiArMTk2NDcsNyBAQAogCQkJCUJDQzQzODc3MEU4ODZDQzcwMDUzM0RENSAvKiBK
U0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUUxQUQxNDIyMTI5NUVBN0YwMEFD
QTk4OSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uaCAqLywKIAkJCQlFMUFEMTM5QTEyOTVE
OTI2MDBBQ0E5ODkgLyogSlNIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwICovLAorCQkJCUNERjY1
Q0NDMTQ1QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwICovLAog
CQkJCUJDMzA1Q0EzMEMwNzgxQkIwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9t
LmNwcCAqLywKIAkJCQlFMUFEMTQyNDEyOTVFQTk1MDBBQ0E5ODkgLyogSlNIVE1MT2JqZWN0RWxl
bWVudEN1c3RvbS5oICovLAogCQkJCTQ0OEFEMjdBMEE0ODEzNzkwMDIzRDE3OSAvKiBKU0hUTUxP
cHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgKi8sCkBAIC0yMDk0MCw2ICsyMDk2MSw4IEBACiAJ
CUY1MjNEMzI0MDJERTQ0NzgwMTg2MzVDQSAvKiBkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNEQ0U1Q0NGMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVu
dEZhY3RvcnkuaW4gKi8sCisJCQkJQ0RDRTVDRDAxNDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50VGFy
Z2V0RmFjdG9yeS5pbiAqLywKIAkJCQlFMUM0REU2RDBFQTc1QzY1MDAyM0NDRDYgLyogQWN0aXZl
RE9NT2JqZWN0LmNwcCAqLywKIAkJCQlFMUM0REU2ODBFQTc1QzFFMDAyM0NDRDYgLyogQWN0aXZl
RE9NT2JqZWN0LmggKi8sCiAJCQkJQThDNEE3RkMwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuY3Bw
ICovLApAQCAtMjQ2MzQsNiArMjQ2NTcsOCBAQAogCQkJCUNBRTlGOTEwMTQ2NDQxRjAwMEMyNDVC
MCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzZGMzZFQjE0
Njg2MjI1MDA1RTkzQjQgLyogU2VjdXJpdHlDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
MTM0NDk2RTE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQ0RGNjVDQzgxNDVCMUU3NTAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQ0RGNjVDQ0ExNDVCNDQ4ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJv
bGxlckludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNzQ5MCw2ICsyNzUxNSw5IEBACiAJ
CQkJQ0FFOUY5MEYxNDY0NDFGMDAwQzI0NUIwIC8qIENTU0FzcGVjdFJhdGlvVmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2MzAxNDYwOEE1MzAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xv
Y2tDQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREVBNzYzNDE0NjBCNTZGMDA4QjMxRjEgLyog
Q2xvY2tHZW5lcmljLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEMjdGNkU1MTQ1NzY4NUEwMDc4
MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDI3RjZF
NzE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUNERDUyNUQ3MTQ1QjZERDAwMDhEMjA0RCAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2MzUxNDYwQjcxQTAwOEIzMUYxIC8qIENsb2Nr
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NkYzNkVBMTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1
cml0eUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzEzNDQ5NkQxNDY5NDFCMzAwNzIw
MzEyIC8qIFNWR0xlbmd0aENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmNwcAppbmRleCAxYTM1MzdkMTM4YjY2MzEwNjViYTg3MGYyYmQxZjQ2NjdkYjFlNGJlLi4wMjM1
OTQ5MmQ2NzVlMWZiMWEwOWUzNDFiM2RkODRiOTVkMjExOTBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5j
cHAKQEAgLTExMyw2ICsxMTMsMTEgQEAgYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1s
U291cmNlRWxlbWVudEVuYWJsZWQoKQogICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFi
bGUoKTsKIH0KIAorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjptZWRpYUNvbnRyb2xsZXJF
bmFibGVkKCkKK3sKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7Cit9CisK
IGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFFcnJvckVuYWJsZWQoKQogewogICAg
IHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXgg
ODAwMWI3YTcwZjM5MWE1NTVmZWNjNjA2MzRmMGRkN2EwZjc2YTNkNi4uYzNhOWM2MDJlZDA3ZmVk
OTU4MjM2YTBmMmNjNGYzMTU0OTYxMDVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTk0LDYgKzk0
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGh0bWxBdWRpb0VsZW1lbnRFbmFibGVkKCk7
CiAgICAgc3RhdGljIGJvb2wgaHRtbFZpZGVvRWxlbWVudEVuYWJsZWQoKTsKICAgICBzdGF0aWMg
Ym9vbCBodG1sU291cmNlRWxlbWVudEVuYWJsZWQoKTsKKyAgICBzdGF0aWMgYm9vbCBtZWRpYUNv
bnRyb2xsZXJFbmFibGVkKCk7CiAgICAgc3RhdGljIGJvb2wgbWVkaWFFcnJvckVuYWJsZWQoKTsK
ICAgICBzdGF0aWMgYm9vbCB0aW1lUmFuZ2VzRW5hYmxlZCgpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAppbmRleCAwMDBj
NWJmYTdmNDM0OTcxZmI3ZjQxMWMwNWQzMWJmNmNkM2FjNTFjLi5jZmRkNjJiNTk3ODBjMDEyYjU2
MGJkMTA2NzZjNGQ3ZjI3YTg5YjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAgLTkyLDYgKzkyLDcgQEAKICNpbmNsdWRlICJK
U0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTElucHV0RWxl
bWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwIgor
I2luY2x1ZGUgIkpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1M
T2JqZWN0RWxlbWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MT3B0aW9uc0NvbGxlY3Rp
b25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTE91dHB1dEVsZW1lbnRDdXN0b20uY3BwIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTWVkaWFFbGVtZW50
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVu
dEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTllZTZlZmIyZjcyYTE2NGQxODA2NzFiNWU4OTVjZmVm
NmNmYTJlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
ZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlICJKU0hUTUxNZWRpYUVsZW1lbnQuaCIKKworI2lu
Y2x1ZGUgIkpTTWVkaWFDb250cm9sbGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNp
bmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBKU0hUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29u
dHJvbGxlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEhUTUxNZWRpYUVsZW1l
bnQqIGltcCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihpbXBsKCkpOworICAgIC8v
IE9uIHNldHRpbmcsIGl0IG11c3QgZmlyc3QgcmVtb3ZlIHRoZSBlbGVtZW50J3MgbWVkaWFncm91
cCBhdHRyaWJ1dGUsIGlmIGFueSwgCisgICAgaW1wLT5zZXRNZWRpYUdyb3VwKFN0cmluZygpKTsK
KyAgICAvLyBhbmQgdGhlbiBzZXQgdGhlIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlciB0byB0aGUg
Z2l2ZW4gdmFsdWUuCisgICAgaW1wLT5zZXRNZWRpYUNvbnRyb2xsZXIodG9NZWRpYUNvbnRyb2xs
ZXIodmFsdWUpKTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4NTBmOTBjZjhjNDBkMjkxMTQ4ZTAyOGU0OTY0MGQzMDg3ZWMyMmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTWVk
aWFFbGVtZW50Q3VzdG9tLmNwcApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFZJREVPKQorCisjaW5jbHVkZSAiVjhIVE1MTWVkaWFFbGVtZW50LmgiCisKKyNpbmNsdWRl
ICJWOE1lZGlhQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit2b2lkIFY4SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFDb250cm9sbGVyQWNj
ZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFU
UygiRE9NLkhUTUxNZWRpYUVsZW1lbnQubWVkaWFDb250cm9sbGVyLl9zZXQiKTsKKyAgICBIVE1M
TWVkaWFFbGVtZW50KiBpbXAgPSBWOEhUTUxNZWRpYUVsZW1lbnQ6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOworICAgIE1lZGlhQ29udHJvbGxlciogY29udHJvbGxlciA9IDA7CisgICAgaWYgKFY4
TWVkaWFDb250cm9sbGVyOjpIYXNJbnN0YW5jZSh2YWx1ZSkpCisgICAgICAgIGNvbnRyb2xsZXIg
PSBWOE1lZGlhQ29udHJvbGxlcjo6dG9OYXRpdmUodmFsdWUtPlRvT2JqZWN0KCkpOworICAgIAor
ICAgIGlmICghY29udHJvbGxlcikgeworICAgICAgICB0aHJvd0Vycm9yKCJWYWx1ZSBpcyBub3Qg
b2YgdHlwZSBNZWRpYUNvbnRyb2xsZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGltcC0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworfQorCit9CisKKyNlbmRpZgor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IGM2ZjFmM2Q0NDNiODViNmY2NDIwY2VlYzk0
YmVmYjIyNzg2MmQ0NDYuLmJhZjBlZmM4OWQ0YWRlYWFiMzFjNzIzMzBmOGQxNWRlMTlkOTg4ZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC01NSw2ICs1NSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDsKICAgICBjbGFzcyBK
YXZhU2NyaXB0QXVkaW9Ob2RlOwogICAgIGNsYXNzIExvY2FsTWVkaWFTdHJlYW07CisgICAgY2xh
c3MgTWVkaWFDb250cm9sbGVyOwogICAgIGNsYXNzIE1lZGlhU3RyZWFtOwogICAgIGNsYXNzIE1l
c3NhZ2VQb3J0OwogICAgIGNsYXNzIE5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
RmFjdG9yeS5pbgppbmRleCA2YmRiMmUyMWNhOTZiM2UxMGQzYmUxYzcxZWY3MzBkMjdmMDBkOTFk
Li4yYTM4OTAzNTdiYWY5ZTk2NmE3ZjEzNzE0ZDYxMGVmN2RlMTA4NGE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTEzLDYgKzEzLDcgQEAgSURCVHJhbnNh
Y3Rpb24gY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSURCVmVyc2lvbkNoYW5nZVJlcXVl
c3QgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSmF2YVNjcmlwdEF1ZGlvTm9kZSBjb25k
aXRpb25hbD1XRUJfQVVESU8KIExvY2FsTWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9TUVESUFfU1RS
RUFNCitNZWRpYUNvbnRyb2xsZXIgY29uZGl0aW9uYWw9VklERU8KIE1lZGlhU3RyZWFtIGNvbmRp
dGlvbmFsPU1FRElBX1NUUkVBTQogTWVzc2FnZVBvcnQKIE5vZGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggZjFlMzU0YjYzMWY0OWJhM2FjMTAxZTU1MTNk
Mjc1YWM1ZDJkMDk4Mi4uYWU1ZmI3MWNlZWU4NjQwOTgzNmZlMmQ1MDFlYzNmYTk5MGJhMzc1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTE0OCw2ICsx
NDgsNyBAQCBtYXgKIG1heGxlbmd0aAogbWF5c2NyaXB0CiBtZWRpYQorbWVkaWFncm91cAogbWV0
aG9kCiBtaW4KIG11bHRpcGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAppbmRleCBjOTA2NWY2OTFhOWMwY2FlOWU2ZWY2NDMyYjgxN2NmYzJiZDc5NzBmLi40ZTNjZjEy
MzI3ODE0ZTY3YmE5YTIzNTYzNGYzMmJkMjczYmIyMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJIVE1MU291
cmNlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFD
b250cm9scy5oIgogI2luY2x1ZGUgIk1lZGlhRG9jdW1lbnQuaCIKICNpbmNsdWRlICJNZWRpYUVy
cm9yLmgiCkBAIC0yMjgsNiArMjI5LDkgQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVs
ZW1lbnQoKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3Muc2l6ZSgp
OyArK2kpCiAgICAgICAgIG1fdGV4dFRyYWNrc1tpXS0+c2V0Q2xpZW50KDApOwogI2VuZGlmCisK
KyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVkaWFDb250cm9sbGVyLT5y
ZW1vdmVNZWRpYUVsZW1lbnQodGhpcyk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2ls
bE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQpAQCAtMjk0LDcgKzI5OCw5IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAg
ICBpZiAoIWF1dG9wbGF5KCkgJiYgbV9wbGF5ZXIpCiAgICAgICAgICAgICBtX3BsYXllci0+c2V0
UHJlbG9hZChtX3ByZWxvYWQpOwogCi0gICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmFib3J0
QXR0cikKKyAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IG1lZGlhZ3JvdXBBdHRyKQorICAgICAg
ICBzZXRNZWRpYUdyb3VwKGF0dHItPnZhbHVlKCkpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09
IG9uYWJvcnRBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5hYm9ydEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIp
KTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmJlZm9yZWxvYWRBdHRyKQogICAgICAgICBz
ZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVsb2FkRXZlbnQsIGNy
ZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwpAQCAtNTg0LDEwICs1OTAs
MTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCgpCiAgICAgICAgIG1f
c2Vla2luZyA9IGZhbHNlOwogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVkVGltZSgpOwogICAgICAg
ICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5lbXB0aWVkRXZlbnQpOworICAgICAgICB1cGRh
dGVNZWRpYUNvbnRyb2xsZXIoKTsKICAgICB9CiAKICAgICAvLyA1IC0gU2V0IHRoZSBwbGF5YmFj
a1JhdGUgYXR0cmlidXRlIHRvIHRoZSB2YWx1ZSBvZiB0aGUgZGVmYXVsdFBsYXliYWNrUmF0ZSBh
dHRyaWJ1dGUuCi0gICAgc2V0UGxheWJhY2tSYXRlKGRlZmF1bHRQbGF5YmFja1JhdGUoKSk7Cisg
ICAgc2V0UGxheWJhY2tSYXRlKG1fbWVkaWFDb250cm9sbGVyID8gbV9tZWRpYUNvbnRyb2xsZXIt
PmRlZmF1bHRQbGF5YmFja1JhdGUoKSA6IGRlZmF1bHRQbGF5YmFja1JhdGUoKSk7CiAKICAgICAv
LyA2IC0gU2V0IHRoZSBlcnJvciBhdHRyaWJ1dGUgdG8gbnVsbCBhbmQgdGhlIGF1dG9wbGF5aW5n
IGZsYWcgdG8gdHJ1ZS4KICAgICBtX2Vycm9yID0gMDsKQEAgLTEyMjQsNiArMTIzMSw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0
ZSBzdGF0ZSkKICAgICB9CiAKICAgICB1cGRhdGVQbGF5U3RhdGUoKTsKKyAgICB1cGRhdGVNZWRp
YUNvbnRyb2xsZXIoKTsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCkBAIC0xNTIzLDYg
KzE1MzEsMTAgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudFRpbWUoKSBjb25zdAog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRpbWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogeworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikgeworICAgICAgICBl
YyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIHNlZWso
dGltZSwgZWMpOwogfQogCkBAIC0xNTc0LDEzICsxNTg2LDE0IEBAIGZsb2F0IEhUTUxNZWRpYUVs
ZW1lbnQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBs
YXliYWNrUmF0ZShmbG9hdCByYXRlKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1l
bnQ6OnNldFBsYXliYWNrUmF0ZSglZikiLCByYXRlKTsKLQorICAgIAogICAgIGlmIChtX3BsYXli
YWNrUmF0ZSAhPSByYXRlKSB7CiAgICAgICAgIG1fcGxheWJhY2tSYXRlID0gcmF0ZTsKICAgICAg
ICAgaW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5h
bWVzKCkucmF0ZWNoYW5nZUV2ZW50KTsKICAgICB9Ci0gICAgaWYgKG1fcGxheWVyICYmIHBvdGVu
dGlhbGx5UGxheWluZygpICYmIG1fcGxheWVyLT5yYXRlKCkgIT0gcmF0ZSkKKworICAgIGlmICht
X3BsYXllciAmJiBwb3RlbnRpYWxseVBsYXlpbmcoKSAmJiBtX3BsYXllci0+cmF0ZSgpICE9IHJh
dGUgJiYgIW1fbWVkaWFDb250cm9sbGVyKQogICAgICAgICBtX3BsYXllci0+c2V0UmF0ZShyYXRl
KTsKIH0KIApAQCAtMTY3Niw3ICsxNjg5LDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxh
eUludGVybmFsKCkKICAgICAgICAgRXhjZXB0aW9uQ29kZSB1bnVzZWQ7CiAgICAgICAgIHNlZWso
MCwgdW51c2VkKTsKICAgICB9Ci0gICAgCisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisg
ICAgICAgIG1fbWVkaWFDb250cm9sbGVyLT5icmluZ0VsZW1lbnRVcFRvU3BlZWQodGhpcyk7CisK
ICAgICBpZiAobV9wYXVzZWQpIHsKICAgICAgICAgbV9wYXVzZWQgPSBmYWxzZTsKICAgICAgICAg
aW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKQEAgLTE2OTAsNiArMTcwNiw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkKICAgICBtX2F1dG9wbGF5aW5nID0gZmFsc2U7CiAK
ICAgICB1cGRhdGVQbGF5U3RhdGUoKTsKKyAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKIH0K
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZSgpCkBAIC0xODgxLDcgKzE4OTgsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSgpCiAgICAgLy8gV2UgY2FuIHNh
ZmVseSBjYWxsIHRoZSBpbnRlcm5hbCBwbGF5L3BhdXNlIG1ldGhvZHMsIHdoaWNoIGRvbid0IGNo
ZWNrIHJlc3RyaWN0aW9ucywgYmVjYXVzZQogICAgIC8vIHRoaXMgbWV0aG9kIGlzIG9ubHkgY2Fs
bGVkIGZyb20gdGhlIGJ1aWx0LWluIG1lZGlhIGNvbnRyb2xsZXIKICAgICBpZiAoY2FuUGxheSgp
KSB7Ci0gICAgICAgIHNldFBsYXliYWNrUmF0ZShkZWZhdWx0UGxheWJhY2tSYXRlKCkpOworICAg
ICAgICBzZXRQbGF5YmFja1JhdGUobV9tZWRpYUNvbnRyb2xsZXIgPyBtX21lZGlhQ29udHJvbGxl
ci0+ZGVmYXVsdFBsYXliYWNrUmF0ZSgpIDogZGVmYXVsdFBsYXliYWNrUmF0ZSgpKTsKICAgICAg
ICAgcGxheUludGVybmFsKCk7CiAgICAgfSBlbHNlIAogICAgICAgICBwYXVzZUludGVybmFsKCk7
CkBAIC0yMjI5LDIwICsyMjQ2LDMzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJUaW1lQ2hhbmdlZChNZWRpYVBsYXllciopCiAKICAgICBmbG9hdCBub3cgPSBjdXJyZW50VGlt
ZSgpOwogICAgIGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7Ci0gICAgaWYgKCFpc25hbihkdXIpICYm
IGR1ciAmJiBub3cgPj0gZHVyKSB7Ci0gICAgICAgIGlmIChsb29wKCkpIHsKKyAgICAKKyAgICAv
LyBXaGVuIHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIHJlYWNoZXMgdGhlIGVuZCBvZiB0
aGUgbWVkaWEgcmVzb3VyY2Ugd2hlbiB0aGUgZGlyZWN0aW9uIG9mCisgICAgLy8gcGxheWJhY2sg
aXMgZm9yd2FyZHMsIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCBmb2xsb3cgdGhlc2Ugc3RlcHM6
CisgICAgaWYgKCFpc25hbihkdXIpICYmIGR1ciAmJiBub3cgPj0gZHVyICYmIG1fcGxheWJhY2tS
YXRlID4gMCkgeworICAgICAgICAvLyBJZiB0aGUgbWVkaWEgZWxlbWVudCBoYXMgYSBsb29wIGF0
dHJpYnV0ZSBzcGVjaWZpZWQgYW5kIGRvZXMgbm90IGhhdmUgYSBjdXJyZW50IG1lZGlhIGNvbnRy
b2xsZXIsCisgICAgICAgIGlmIChsb29wKCkgJiYgIW1fbWVkaWFDb250cm9sbGVyKSB7CiAgICAg
ICAgICAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRFeGNlcHRpb247CiAgICAgICAgICAgICBtX3Nl
bnRFbmRFdmVudCA9IGZhbHNlOworICAgICAgICAgICAgLy8gIHRoZW4gc2VlayB0byB0aGUgZWFy
bGllc3QgcG9zc2libGUgcG9zaXRpb24gb2YgdGhlIG1lZGlhIHJlc291cmNlIGFuZCBhYm9ydCB0
aGVzZSBzdGVwcy4KICAgICAgICAgICAgIHNlZWsoMCwgaWdub3JlZEV4Y2VwdGlvbik7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIW1fcGF1c2VkKSB7CisgICAgICAgICAgICAv
LyBJZiB0aGUgbWVkaWEgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgY3VycmVudCBtZWRpYSBjb250
cm9sbGVyLCBhbmQgdGhlIG1lZGlhIGVsZW1lbnQKKyAgICAgICAgICAgIC8vIGhhcyBzdGlsbCBl
bmRlZCBwbGF5YmFjaywgYW5kIHRoZSBkaXJlY3Rpb24gb2YgcGxheWJhY2sgaXMgc3RpbGwgZm9y
d2FyZHMsIGFuZCBwYXVzZWQKKyAgICAgICAgICAgIC8vIGlzIGZhbHNlLAorICAgICAgICAgICAg
aWYgKCFtX21lZGlhQ29udHJvbGxlciAmJiAhbV9wYXVzZWQpIHsKKyAgICAgICAgICAgICAgICAv
LyBjaGFuZ2VzIHBhdXNlZCB0byB0cnVlIGFuZCBmaXJlcyBhIHNpbXBsZSBldmVudCBuYW1lZCBw
YXVzZSBhdCB0aGUgbWVkaWEgZWxlbWVudC4KICAgICAgICAgICAgICAgICBtX3BhdXNlZCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGF1c2VFdmVu
dCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBh
IHNpbXBsZSBldmVudCBuYW1lZCBlbmRlZCBhdCB0aGUgbWVkaWEgZWxlbWVudC4KICAgICAgICAg
ICAgIGlmICghbV9zZW50RW5kRXZlbnQpIHsKICAgICAgICAgICAgICAgICBtX3NlbnRFbmRFdmVu
dCA9IHRydWU7CiAgICAgICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW5k
ZWRFdmVudCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBJZiB0aGUgbWVkaWEgZWxl
bWVudCBoYXMgYSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIsIHRoZW4gcmVwb3J0IHRoZSBjb250
cm9sbGVyIHN0YXRlCisgICAgICAgICAgICAvLyBmb3IgdGhlIG1lZGlhIGVsZW1lbnQncyBjdXJy
ZW50IG1lZGlhIGNvbnRyb2xsZXIuCisgICAgICAgICAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIo
KTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCkBAIC0yNDI2LDEwICsyNDU2LDcgQEAgUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBIVE1MTWVkaWFFbGVtZW50OjpwbGF5ZWQoKQogCiBQYXNzUmVm
UHRyPFRpbWVSYW5nZXM+IEhUTUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKCkgY29uc3QKIHsKLSAg
ICAvLyBGSVhNRSByZWFsIHJhbmdlcyBzdXBwb3J0Ci0gICAgaWYgKCFtYXhUaW1lU2Vla2FibGUo
KSkKLSAgICAgICAgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwotICAgIHJldHVybiBUaW1l
UmFuZ2VzOjpjcmVhdGUobWluVGltZVNlZWthYmxlKCksIG1heFRpbWVTZWVrYWJsZSgpKTsKKyAg
ICByZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+c2Vla2FibGUoKSA6IFRpbWVSYW5nZXM6OmNy
ZWF0ZSgpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZygp
IGNvbnN0CkBAIC0yNDM4LDcgKzI0NjUsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVu
dGlhbGx5UGxheWluZygpIGNvbnN0CiAgICAgLy8gd2hlbiBpdCByYW4gb3V0IG9mIGJ1ZmZlcmVk
IGRhdGEuIEEgbW92aWUgaXMgdGhpcyBzdGF0ZSBpcyAicG90ZW50aWFsbHkgcGxheWluZyIsIG1v
ZHVsbyB0aGUKICAgICAvLyBjaGVja3MgaW4gY291bGRQbGF5SWZFbm91Z2hEYXRhKCkuCiAgICAg
Ym9vbCBwYXVzZWRUb0J1ZmZlciA9IG1fcmVhZHlTdGF0ZU1heGltdW0gPj0gSEFWRV9GVVRVUkVf
REFUQSAmJiBtX3JlYWR5U3RhdGUgPCBIQVZFX0ZVVFVSRV9EQVRBOwotICAgIHJldHVybiAocGF1
c2VkVG9CdWZmZXIgfHwgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpICYmIGNvdWxk
UGxheUlmRW5vdWdoRGF0YSgpOworICAgIHJldHVybiAocGF1c2VkVG9CdWZmZXIgfHwgbV9yZWFk
eVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpICYmIGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpICYm
ICFpc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1l
bnQ6OmNvdWxkUGxheUlmRW5vdWdoRGF0YSgpIGNvbnN0CkBAIC0yNDYwLDEwICsyNDg3LDExIEBA
IGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6ZW5kZWRQbGF5YmFjaygpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIC8vIGFuZCB0aGUgY3VycmVudCBwbGF5YmFjayBwb3NpdGlvbiBp
cyB0aGUgZW5kIG9mIHRoZSBtZWRpYSByZXNvdXJjZSBhbmQgdGhlIGRpcmVjdGlvbgotICAgIC8v
IG9mIHBsYXliYWNrIGlzIGZvcndhcmRzIGFuZCB0aGUgbWVkaWEgZWxlbWVudCBkb2VzIG5vdCBo
YXZlIGEgbG9vcCBhdHRyaWJ1dGUgc3BlY2lmaWVkLAorICAgIC8vIG9mIHBsYXliYWNrIGlzIGZv
cndhcmRzLCBFaXRoZXIgdGhlIG1lZGlhIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhIGxvb3AgYXR0
cmlidXRlIHNwZWNpZmllZCwKKyAgICAvLyBvciB0aGUgbWVkaWEgZWxlbWVudCBoYXMgYSBjdXJy
ZW50IG1lZGlhIGNvbnRyb2xsZXIuCiAgICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUoKTsKICAg
ICBpZiAobV9wbGF5YmFja1JhdGUgPiAwKQotICAgICAgICByZXR1cm4gZHVyID4gMCAmJiBub3cg
Pj0gZHVyICYmICFsb29wKCk7CisgICAgICAgIHJldHVybiBkdXIgPiAwICYmIG5vdyA+PSBkdXIg
JiYgKCFsb29wKCkgfHwgbV9tZWRpYUNvbnRyb2xsZXIpOwogCiAgICAgLy8gb3IgdGhlIGN1cnJl
bnQgcGxheWJhY2sgcG9zaXRpb24gaXMgdGhlIGVhcmxpZXN0IHBvc3NpYmxlIHBvc2l0aW9uIGFu
ZCB0aGUgZGlyZWN0aW9uIAogICAgIC8vIG9mIHBsYXliYWNrIGlzIGJhY2t3YXJkcwpAQCAtMjUw
OSw4ICsyNTM3LDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlVm9sdW1lKCkKICAg
ICBpZiAoIXByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCkpIHsKICAgICAgICAgUGFnZSog
cGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAgICAgICAgZmxvYXQgdm9sdW1lTXVsdGlwbGll
ciA9IHBhZ2UgPyBwYWdlLT5tZWRpYVZvbHVtZSgpIDogMTsKLSAgICAKLSAgICAgICAgbV9wbGF5
ZXItPnNldE11dGVkKG1fbXV0ZWQpOworICAgICAgICBib29sIHNob3VsZE11dGUgPSBtX211dGVk
OworCisgICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikgeworICAgICAgICAgICAgdm9sdW1l
TXVsdGlwbGllciAqPSBtX21lZGlhQ29udHJvbGxlci0+dm9sdW1lKCk7CisgICAgICAgICAgICBz
aG91bGRNdXRlID0gbV9tZWRpYUNvbnRyb2xsZXItPm11dGVkKCk7CisgICAgICAgIH0KKworICAg
ICAgICBtX3BsYXllci0+c2V0TXV0ZWQoc2hvdWxkTXV0ZSk7CiAgICAgICAgIG1fcGxheWVyLT5z
ZXRWb2x1bWUobV92b2x1bWUgKiB2b2x1bWVNdWx0aXBsaWVyKTsKICAgICB9CiAKQEAgLTI1Nzcs
MTEgKzI2MTEsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUoKQog
ICAgICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICAgICAgbWVkaWFDb250cm9s
cygpLT5wbGF5YmFja1N0b3BwZWQoKTsKICAgICB9Ci0gICAgCisKKyAgICB1cGRhdGVNZWRpYUNv
bnRyb2xsZXIoKTsKKwogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT51
cGRhdGVGcm9tRWxlbWVudCgpOwogfQotICAgIAorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
dFBhdXNlZEludGVybmFsKGJvb2wgYikKIHsKICAgICBtX3BhdXNlZEludGVybmFsID0gYjsKQEAg
LTI2NDEsNiArMjY3Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxlZExv
YWQoKQogCiAgICAgLy8gUmVzZXQgbV9yZWFkeVN0YXRlIHNpbmNlIG1fcGxheWVyIGlzIGdvbmUu
CiAgICAgbV9yZWFkeVN0YXRlID0gSEFWRV9OT1RISU5HOworICAgIHVwZGF0ZU1lZGlhQ29udHJv
bGxlcigpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblN1c3BlbmQoKSBjb25zdApA
QCAtMzEzMyw2ICszMTcwLDcyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0SXRlbVZhbHVl
VGV4dChjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIH0KICNlbmRpZgog
Citjb25zdCBTdHJpbmcmIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhR3JvdXAoKSBjb25zdAorewor
ICAgIHJldHVybiBtX21lZGlhQ29udHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5tZWRpYUdy
b3VwKCkgOiBlbXB0eVN0cmluZygpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE1l
ZGlhR3JvdXAoY29uc3QgU3RyaW5nJiBncm91cCkKK3sKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xs
ZXIgJiYgbV9tZWRpYUNvbnRyb2xsZXItPm1lZGlhR3JvdXAoKSA9PSBncm91cCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgc2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxlcjo6bWVkaWFD
b250cm9sbGVyRm9yTWVkaWFHcm91cChncm91cCkpOworfQorCitNZWRpYUNvbnRyb2xsZXIqIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhQ29udHJvbGxlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
bWVkaWFDb250cm9sbGVyLmdldCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE1l
ZGlhQ29udHJvbGxlcihQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gY29udHJvbGxlcikKK3sK
KyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVkaWFDb250cm9sbGVyLT5y
ZW1vdmVNZWRpYUVsZW1lbnQodGhpcyk7CisKKyAgICBtX21lZGlhQ29udHJvbGxlciA9IGNvbnRy
b2xsZXI7CisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVkaWFDb250
cm9sbGVyLT5hZGRNZWRpYUVsZW1lbnQodGhpcyk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6dXBkYXRlTWVkaWFDb250cm9sbGVyKCkKK3sKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIp
CisgICAgICAgIG1fbWVkaWFDb250cm9sbGVyLT5yZXBvcnRDb250cm9sbGVyU3RhdGUoKTsKK30K
KworYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc0Jsb2NrZWQoKSBjb25zdAoreworICAgIC8vIEEg
bWVkaWEgZWxlbWVudCBpcyBhIGJsb2NrZWQgbWVkaWEgZWxlbWVudCBpZiBpdHMgcmVhZHlTdGF0
ZSBhdHRyaWJ1dGUgaXMgaW4gdGhlCisgICAgLy8gSEFWRV9OT1RISU5HIHN0YXRlLCB0aGUgSEFW
RV9NRVRBREFUQSBzdGF0ZSwgb3IgdGhlIEhBVkVfQ1VSUkVOVF9EQVRBIHN0YXRlLAorICAgIGlm
IChtX3JlYWR5U3RhdGUgPD0gSEFWRV9DVVJSRU5UX0RBVEEpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgLy8gb3IgaWYgdGhlIGVsZW1lbnQgaGFzIHBhdXNlZCBmb3IgdXNlciBpbnRlcmFj
dGlvbi4KKyAgICByZXR1cm4gcGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCk7Cit9CisKK2Jvb2wg
SFRNTE1lZGlhRWxlbWVudDo6aXNCbG9ja2VkT25NZWRpYUNvbnRyb2xsZXIoKSBjb25zdAorewor
ICAgIGlmICghbV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIEEgbWVkaWEgZWxlbWVudCBpcyBibG9ja2VkIG9uIGl0cyBtZWRpYSBjb250cm9sbGVyIGlm
IHRoZSBNZWRpYUNvbnRyb2xsZXIgaXMgYSBibG9ja2VkIAorICAgIC8vIG1lZGlhIGNvbnRyb2xs
ZXIsCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5pc0Jsb2NrZWQoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICAvLyBvciBpZiBpdHMgbWVkaWEgY29udHJvbGxlciBwb3NpdGlvbiBp
cyBlaXRoZXIgYmVmb3JlIHRoZSBtZWRpYSByZXNvdXJjZSdzIGVhcmxpZXN0IHBvc3NpYmxlIAor
ICAgIC8vIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBNZWRpYUNvbnRyb2xsZXIncyB0aW1lbGlu
ZSBvciBhZnRlciB0aGUgZW5kIG9mIHRoZSBtZWRpYSByZXNvdXJjZSAKKyAgICAvLyByZWxhdGl2
ZSB0byB0aGUgTWVkaWFDb250cm9sbGVyJ3MgdGltZWxpbmUuCisgICAgZmxvYXQgbWVkaWFDb250
cm9sbGVyUG9zaXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBp
ZiAobWVkaWFDb250cm9sbGVyUG9zaXRpb24gPCBzdGFydFRpbWUoKSB8fCBtZWRpYUNvbnRyb2xs
ZXJQb3NpdGlvbiA+IHN0YXJ0VGltZSgpICsgZHVyYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDBkMmY5ZmM0OWUxMDBjYjUxN2JlZjBkMTUwYWM0
Zjc3YTU3NWU5ZWMuLmY4MDllNmVlN2Y5OTA3NWJiMjEwNzNjZjdkZTZjYTRiYmQ5ZjQ1OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNp
bmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xs
ZXJJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogCiAjaWYgRU5BQkxFKFBM
VUdJTl9QUk9YWV9GT1JfVklERU8pCkBAIC01MCw2ICs1MSw3IEBAIGNsYXNzIE1lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZTsKIGNsYXNzIEV2ZW50OwogY2xhc3MgSFRNTFNvdXJjZUVsZW1lbnQ7
CiBjbGFzcyBIVE1MVHJhY2tFbGVtZW50OworY2xhc3MgTWVkaWFDb250cm9sbGVyOwogY2xhc3Mg
TWVkaWFDb250cm9sczsKIGNsYXNzIE1lZGlhRXJyb3I7CiBjbGFzcyBLVVJMOwpAQCAtNjMsNyAr
NjUsNyBAQCBjbGFzcyBXaWRnZXQ7CiAvLyBCdXQgaXQgY2FuJ3QgYmUgdW50aWwgdGhlIENocm9t
aXVtIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCBjbGFzcyBpcyBmaXhlZCBzbyBpdAogLy8gbm8g
bG9uZ2VyIGRlcGVuZHMgb24gdHlwZWNhc3RpbmcgYSBNZWRpYVBsYXllckNsaWVudCB0byBhbiBI
VE1MTWVkaWFFbGVtZW50LgogCi1jbGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxF
bGVtZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHByaXZhdGUgTWVkaWFDYW5TdGFydExp
c3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50IDog
cHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHByaXZhdGUgTWVk
aWFDYW5TdGFydExpc3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgcHJpdmF0
ZSBUZXh0VHJhY2tDbGllbnQKICNlbmRpZgpAQCAtMTA1LDcgKzEwNyw3IEBAIHB1YmxpYzoKIAog
ICAgIGVudW0gTmV0d29ya1N0YXRlIHsgTkVUV09SS19FTVBUWSwgTkVUV09SS19JRExFLCBORVRX
T1JLX0xPQURJTkcsIE5FVFdPUktfTk9fU09VUkNFIH07CiAgICAgTmV0d29ya1N0YXRlIG5ldHdv
cmtTdGF0ZSgpIGNvbnN0OwotICAgIAorCiAgICAgU3RyaW5nIHByZWxvYWQoKSBjb25zdDsgICAg
CiAgICAgdm9pZCBzZXRQcmVsb2FkKGNvbnN0IFN0cmluZyYpOwogCkBAIC0xMTQsNyArMTE2LDYg
QEAgcHVibGljOgogICAgIFN0cmluZyBjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KSBjb25zdDsKIAogLy8gcmVhZHkgc3RhdGUKLSAgICBlbnVtIFJlYWR5U3RhdGUgeyBIQVZFX05P
VEhJTkcsIEhBVkVfTUVUQURBVEEsIEhBVkVfQ1VSUkVOVF9EQVRBLCBIQVZFX0ZVVFVSRV9EQVRB
LCBIQVZFX0VOT1VHSF9EQVRBIH07CiAgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7
CiAgICAgYm9vbCBzZWVraW5nKCkgY29uc3Q7CiAKQEAgLTIzMCw2ICsyMzEsMTIgQEAgcHVibGlj
OgogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKTsKICNlbmRp
ZgogCisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3Q7CisgICAgdm9pZCBzZXRN
ZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYpOworCisgICAgTWVkaWFDb250cm9sbGVyKiBtZWRpYUNv
bnRyb2xsZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldE1lZGlhQ29udHJvbGxlcihQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbGxlcj4pOworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5IVE1MTWVkaWFF
bGVtZW50KCk7CkBAIC0zOTQsNiArNDAxLDggQEAgcHJpdmF0ZToKICAgICAvLyBQYXVzZXMgcGxh
eWJhY2sgd2l0aG91dCBjaGFuZ2luZyBhbnkgc3RhdGVzIG9yIGdlbmVyYXRpbmcgZXZlbnRzCiAg
ICAgdm9pZCBzZXRQYXVzZWRJbnRlcm5hbChib29sKTsKIAorICAgIHZvaWQgc2V0UGxheWJhY2tS
YXRlSW50ZXJuYWwoZmxvYXQpOworCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhQ2FuU3RhcnQoKTsK
IAogICAgIHZvaWQgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoYm9vbCk7CkBAIC00MTIsNiArNDIx
LDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEl0ZW1WYWx1ZVRleHQoY29uc3Qg
U3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCiAKKyAgICB2b2lkIHVwZGF0ZU1lZGlh
Q29udHJvbGxlcigpOworICAgIGJvb2wgaXNCbG9ja2VkKCkgY29uc3Q7CisgICAgYm9vbCBpc0Js
b2NrZWRPbk1lZGlhQ29udHJvbGxlcigpIGNvbnN0OworICAgIGJvb2wgaGFzU291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9uZXR3b3JrU3RhdGUgIT0gTkVUV09SS19FTVBUWSB8fCBtX25ldHdvcmtT
dGF0ZSAhPSBORVRXT1JLX05PX1NPVVJDRTsgfQorICAgIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29u
c3QgeyByZXR1cm4gbW92aWVMb2FkVHlwZSgpID09IE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtOyB9
CisKICAgICBUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiBtX2xvYWRUaW1lcjsKICAgICBUaW1lcjxI
VE1MTWVkaWFFbGVtZW50PiBtX2FzeW5jRXZlbnRUaW1lcjsKICAgICBUaW1lcjxIVE1MTWVkaWFF
bGVtZW50PiBtX3Byb2dyZXNzRXZlbnRUaW1lcjsKQEAgLTUxNiw2ICs1MzEsOSBAQCBwcml2YXRl
OgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4g
PiBtX3RleHRUcmFja3M7CiAjZW5kaWYKKworICAgIGZyaWVuZCBjbGFzcyBNZWRpYUNvbnRyb2xs
ZXI7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gbV9tZWRpYUNvbnRyb2xsZXI7CiB9Owog
CiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbApp
bmRleCAzMzBhZGJhYWRlNzEwMjY5YzJmMmRlNWVlYzVjYzFlMTYyYjBjOWI1Li40OTIxMGI2MjAy
NzIzNzFlNDVhYWI5ZmFiMTkxYmY2MTAwNDNjZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5pZGwKQEAgLTExNCw1ICsxMTQsOCBAQCBtb2R1bGUgaHRtbCB7CiAjaWYg
ZGVmaW5lZChFTkFCTEVfVklERU9fVFJBQ0spICYmIEVOQUJMRV9WSURFT19UUkFDSwogICAgIFtF
bmFibGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2tdIFRleHRUcmFjayBhZGRUcmFjayhpbiBE
T01TdHJpbmcga2luZCwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgbGFiZWwsIGluIFtPcHRpb25h
bF0gRE9NU3RyaW5nIGxhbmd1YWdlKTsKICNlbmRpZgorCisgICAgYXR0cmlidXRlIFtSZWZsZWN0
LCBDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgQ29udmVydE51bGxTdHJpbmdUb051bGxdIERPTVN0
cmluZyBtZWRpYUdyb3VwOworICAgIGF0dHJpYnV0ZSBbQ3VzdG9tU2V0dGVyXSBNZWRpYUNvbnRy
b2xsZXIgbWVkaWFDb250cm9sbGVyOwogfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250
cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NjM3MmJiMmYwYjlmODQ1NDJiODU0ZmNhZWQzZmQ2NjQ2
YjgyZDkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRy
b2xsZXIuY3BwCkBAIC0wLDAgKzEsNTk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlci5oIgorCisj
aW5jbHVkZSAiQ2xvY2suaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAi
SFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKKyNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKwordHlwZWRl
ZiBIYXNoTWFwPFN0cmluZywgTWVkaWFDb250cm9sbGVyKj4gR3JvdXBDb250cm9sbGVyTWFwOwor
c3RhdGljIEdyb3VwQ29udHJvbGxlck1hcCYgbWVkaWFHcm91cFRvTWVkaWFDb250cm9sbGVyTWFw
KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEdyb3VwQ29udHJvbGxlck1hcCwgbWFwLCAo
KSk7CisgICAgcmV0dXJuIG1hcDsKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IE1l
ZGlhQ29udHJvbGxlcjo6bWVkaWFDb250cm9sbGVyRm9yTWVkaWFHcm91cChjb25zdCBTdHJpbmcm
IGdyb3VwKQoreworICAgIGlmIChncm91cC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBpZiAoZ3JvdXAuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChN
ZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBtZWRpYUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJN
YXAoKS5nZXQoZ3JvdXApKQorICAgICAgICByZXR1cm4gY29udHJvbGxlcjsKKworICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xsZXI+IGNvbnRyb2xsZXIgPSBjcmVhdGUoKTsKKyAgICBjb250cm9sbGVy
LT5tX21lZGlhR3JvdXAgPSBncm91cDsKKyAgICBtZWRpYUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJN
YXAoKS5zZXQoZ3JvdXAsIGNvbnRyb2xsZXIuZ2V0KCkpOworICAgIHJldHVybiBjb250cm9sbGVy
LnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IE1lZGlhQ29udHJv
bGxlcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbGxl
cigpKTsKK30KKworTWVkaWFDb250cm9sbGVyOjpNZWRpYUNvbnRyb2xsZXIoKQorICAgIDogbV9w
YXVzZWQoZmFsc2UpCisgICAgLCBtX2RlZmF1bHRQbGF5YmFja1JhdGUoMSkKKyAgICAsIG1fdm9s
dW1lKDEpCisgICAgLCBtX211dGVkKGZhbHNlKQorICAgICwgbV9yZWFkeVN0YXRlKEhBVkVfTk9U
SElORykKKyAgICAsIG1fcGxheWJhY2tTdGF0ZShXQUlUSU5HKQorICAgICwgbV9hc3luY0V2ZW50
VGltZXIodGhpcywgJk1lZGlhQ29udHJvbGxlcjo6YXN5bmNFdmVudFRpbWVyRmlyZWQpCisgICAg
LCBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZShmYWxzZSkKKyAgICAsIG1fY2xvY2soQ2xvY2s6OmNy
ZWF0ZSgpKQoreworfQorCitNZWRpYUNvbnRyb2xsZXI6On5NZWRpYUNvbnRyb2xsZXIoKQorewor
ICAgIGlmICghbV9tZWRpYUdyb3VwLmlzRW1wdHkoKSkKKyAgICAgICAgbWVkaWFHcm91cFRvTWVk
aWFDb250cm9sbGVyTWFwKCkucmVtb3ZlKG1fbWVkaWFHcm91cCk7Cit9CisKK3ZvaWQgTWVkaWFD
b250cm9sbGVyOjphZGRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKK3sK
KyAgICBBU1NFUlQoZWxlbWVudCk7CisgICAgQVNTRVJUKCFtX21lZGlhRWxlbWVudHMuY29udGFp
bnMoZWxlbWVudCkpOworCisgICAgbV9tZWRpYUVsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKKyAg
ICBicmluZ0VsZW1lbnRVcFRvU3BlZWQoZWxlbWVudCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9s
bGVyOjpyZW1vdmVNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAg
ICBBU1NFUlQoZWxlbWVudCk7CisgICAgQVNTRVJUKG1fbWVkaWFFbGVtZW50cy5jb250YWlucyhl
bGVtZW50KSk7CisgICAgbV9tZWRpYUVsZW1lbnRzLnJlbW92ZShtX21lZGlhRWxlbWVudHMuZmlu
ZChlbGVtZW50KSk7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpjb250YWluc01lZGlhRWxl
bWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSBjb25zdAoreworICAgIHJldHVybiBtX21l
ZGlhRWxlbWVudHMuY29udGFpbnMoZWxlbWVudCk7Cit9CisKK1Bhc3NSZWZQdHI8VGltZVJhbmdl
cz4gTWVkaWFDb250cm9sbGVyOjpidWZmZXJlZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fbWVkaWFF
bGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsK
KworICAgIC8vIFRoZSBidWZmZXJlZCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gYSBuZXcgc3RhdGlj
IG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgdGhhdCByZXByZXNlbnRzIAorICAgIC8vIHRo
ZSBpbnRlcnNlY3Rpb24gb2YgdGhlIHJhbmdlcyBvZiB0aGUgbWVkaWEgcmVzb3VyY2VzIG9mIHRo
ZSBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgdGhhdCB0aGUgCisgICAgLy8gdXNlciBhZ2VudCBoYXMg
YnVmZmVyZWQsIGF0IHRoZSB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgZXZhbHVhdGVkLgorICAgIFJl
ZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZFJhbmdlcyA9IG1fbWVkaWFFbGVtZW50cy5maXJzdCgp
LT5idWZmZXJlZCgpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBtX21lZGlh
RWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBidWZmZXJlZFJhbmdlcy0+aW50ZXJz
ZWN0V2l0aChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5idWZmZXJlZCgpLmdldCgpKTsKKyAgICBy
ZXR1cm4gYnVmZmVyZWRSYW5nZXM7Cit9CisKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFD
b250cm9sbGVyOjpzZWVrYWJsZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKworICAgIC8v
IFRoZSBzZWVrYWJsZSBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gYSBuZXcgc3RhdGljIG5vcm1hbGl6
ZWQgVGltZVJhbmdlcyBvYmplY3QgdGhhdCByZXByZXNlbnRzCisgICAgLy8gdGhlIGludGVyc2Vj
dGlvbiBvZiB0aGUgcmFuZ2VzIG9mIHRoZSBtZWRpYSByZXNvdXJjZXMgb2YgdGhlIHNsYXZlZCBt
ZWRpYSBlbGVtZW50cyB0aGF0IHRoZQorICAgIC8vIHVzZXIgYWdlbnQgaXMgYWJsZSB0byBzZWVr
IHRvLCBhdCB0aGUgdGltZSB0aGUgYXR0cmlidXRlIGlzIGV2YWx1YXRlZC4KKyAgICBSZWZQdHI8
VGltZVJhbmdlcz4gc2Vla2FibGVSYW5nZXMgPSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+c2Vl
a2FibGUoKTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1l
bnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgc2Vla2FibGVSYW5nZXMtPmludGVyc2VjdFdp
dGgobV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+c2Vla2FibGUoKS5nZXQoKSk7CisgICAgcmV0dXJu
IHNlZWthYmxlUmFuZ2VzOworfQorCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhQ29udHJv
bGxlcjo6cGxheWVkKCkKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOworCisgICAgLy8gVGhlIHBsYXllZCBh
dHRyaWJ1dGUgbXVzdCByZXR1cm4gYSBuZXcgc3RhdGljIG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBv
YmplY3QgdGhhdCByZXByZXNlbnRzIAorICAgIC8vIHRoZSB1bmlvbiBvZiB0aGUgcmFuZ2VzIG9m
IHRoZSBtZWRpYSByZXNvdXJjZXMgb2YgdGhlIHNsYXZlZCBtZWRpYSBlbGVtZW50cyB0aGF0IHRo
ZSAKKyAgICAvLyB1c2VyIGFnZW50IGhhcyBzbyBmYXIgcmVuZGVyZWQsIGF0IHRoZSB0aW1lIHRo
ZSBhdHRyaWJ1dGUgaXMgZXZhbHVhdGVkLgorICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBwbGF5ZWRS
YW5nZXMgPSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+cGxheWVkKCk7CisgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAxOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisg
ICAgICAgIHBsYXllZFJhbmdlcy0+dW5pb25XaXRoKG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnBs
YXllZCgpLmdldCgpKTsKKyAgICByZXR1cm4gcGxheWVkUmFuZ2VzOworfQorCitmbG9hdCBNZWRp
YUNvbnRyb2xsZXI6OmR1cmF0aW9uKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW52ZXN0aWdh
dGUgY2FjaGluZyB0aGUgbWF4aW11bSBkdXJhdGlvbiBhbmQgb25seSB1cGRhdGluZyB0aGUgY2Fj
aGVkIHZhbHVlCisgICAgLy8gd2hlbiB0aGUgc2xhdmVkIG1lZGlhIGVsZW1lbnRzJyBkdXJhdGlv
bnMgY2hhbmdlLgorICAgIGZsb2F0IG1heER1cmF0aW9uID0gMDsKKyAgICBmb3IgKHNpemVfdCBp
bmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAg
ICAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmR1cmF0aW9uKCk7
CisgICAgICAgIGlmIChpc25hbihkdXJhdGlvbikpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgbWF4RHVyYXRpb24gPSBtYXgobWF4RHVyYXRpb24sIGR1cmF0aW9uKTsKKyAgICB9Cisg
ICAgcmV0dXJuIG1heER1cmF0aW9uOworfQorCitmbG9hdCBNZWRpYUNvbnRyb2xsZXI6OmN1cnJl
bnRUaW1lKCkgY29uc3QKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJuIG1fY2xvY2stPmN1cnJlbnRUaW1lKCk7
Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRDdXJyZW50VGltZShmbG9hdCB0aW1lLCBF
eGNlcHRpb25Db2RlJiBjb2RlKQoreworICAgIC8vIFdoZW4gdGhlIHVzZXIgYWdlbnQgaXMgdG8g
c2VlayB0aGUgbWVkaWEgY29udHJvbGxlciB0byBhIHBhcnRpY3VsYXIgbmV3IHBsYXliYWNrIHBv
c2l0aW9uLCAKKyAgICAvLyBpdCBtdXN0IGZvbGxvdyB0aGVzZSBzdGVwczoKKyAgICAvLyBJZiB0
aGUgbmV3IHBsYXliYWNrIHBvc2l0aW9uIGlzIGxlc3MgdGhhbiB6ZXJvLCB0aGVuIHNldCBpdCB0
byB6ZXJvLgorICAgIHRpbWUgPSBtYXgoMC4wZiwgdGltZSk7CisgICAgCisgICAgLy8gSWYgdGhl
IG5ldyBwbGF5YmFjayBwb3NpdGlvbiBpcyBncmVhdGVyIHRoYW4gdGhlIG1lZGlhIGNvbnRyb2xs
ZXIgZHVyYXRpb24sIHRoZW4gc2V0IGl0IAorICAgIC8vIHRvIHRoZSBtZWRpYSBjb250cm9sbGVy
IGR1cmF0aW9uLgorICAgIHRpbWUgPSBtaW4odGltZSwgZHVyYXRpb24oKSk7CisgICAgCisgICAg
Ly8gU2V0IHRoZSBtZWRpYSBjb250cm9sbGVyIHBvc2l0aW9uIHRvIHRoZSBuZXcgcGxheWJhY2sg
cG9zaXRpb24uCisgICAgbV9jbG9jay0+c2V0Q3VycmVudFRpbWUodGltZSk7CisgICAgCisgICAg
Ly8gU2VlayBlYWNoIHNsYXZlZCBtZWRpYSBlbGVtZW50IHRvIHRoZSBuZXcgcGxheWJhY2sgcG9z
aXRpb24gcmVsYXRpdmUgdG8gdGhlIG1lZGlhIGVsZW1lbnQgdGltZWxpbmUuCisgICAgZm9yIChz
aXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgp
CisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnNlZWsodGltZSwgY29kZSk7Cit9CisK
K3ZvaWQgTWVkaWFDb250cm9sbGVyOjpwbGF5KCkKK3sKKyAgICAvLyBXaGVuIHRoZSBwbGF5KCkg
bWV0aG9kIGlzIGludm9rZWQsIGlmIHRoZSBNZWRpYUNvbnRyb2xsZXIgaXMgYSBwYXVzZWQgbWVk
aWEgY29udHJvbGxlciwKKyAgICBpZiAoIW1fcGF1c2VkKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyB0aGUgdXNlciBhZ2VudCBtdXN0IGNoYW5nZSB0aGUgTWVkaWFDb250cm9sbGVyIGludG8g
YSBwbGF5aW5nIG1lZGlhIGNvbnRyb2xsZXIsCisgICAgbV9wYXVzZWQgPSBmYWxzZTsKKyAgICAv
LyBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBwbGF5IGF0IHRoZSBN
ZWRpYUNvbnRyb2xsZXIsCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGxheUV2ZW50
KTsKKyAgICAvLyBhbmQgdGhlbiByZXBvcnQgdGhlIGNvbnRyb2xsZXIgc3RhdGUgb2YgdGhlIE1l
ZGlhQ29udHJvbGxlci4KKyAgICByZXBvcnRDb250cm9sbGVyU3RhdGUoKTsKK30KKwordm9pZCBN
ZWRpYUNvbnRyb2xsZXI6OnBhdXNlKCkKK3sKKyAgICAvLyBXaGVuIHRoZSBwYXVzZSgpIG1ldGhv
ZCBpcyBpbnZva2VkLCBpZiB0aGUgTWVkaWFDb250cm9sbGVyIGlzIGEgcGxheWluZyBtZWRpYSBj
b250cm9sbGVyLAorICAgIGlmIChtX3BhdXNlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
dGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0IGNoYW5nZSB0aGUgTWVkaWFDb250cm9sbGVyIGludG8g
YSBwYXVzZWQgbWVkaWEgY29udHJvbGxlciwKKyAgICBtX3BhdXNlZCA9IHRydWU7CisgICAgLy8g
cXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcGF1c2UgYXQgdGhlIE1l
ZGlhQ29udHJvbGxlciwKKyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50
KTsKKyAgICAvLyBhbmQgdGhlbiByZXBvcnQgdGhlIGNvbnRyb2xsZXIgc3RhdGUgb2YgdGhlIE1l
ZGlhQ29udHJvbGxlci4KKyAgICByZXBvcnRDb250cm9sbGVyU3RhdGUoKTsKK30KKwordm9pZCBN
ZWRpYUNvbnRyb2xsZXI6OnNldERlZmF1bHRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKK3sKKyAg
ICBpZiAobV9kZWZhdWx0UGxheWJhY2tSYXRlID09IHJhdGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIFRoZSBkZWZhdWx0UGxheWJhY2tSYXRlIGF0dHJpYnV0ZSwgb24gc2V0dGluZywgbXVz
dCBzZXQgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1lZGlhIGNvbnRyb2xsZXIKKyAgICAvLyBkZWZh
dWx0IHBsYXliYWNrIHJhdGUgdG8gdGhlIG5ldyB2YWx1ZSwKKyAgICBtX2RlZmF1bHRQbGF5YmFj
a1JhdGUgPSByYXRlOworCisgICAgLy8gdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBs
ZSBldmVudCBuYW1lZCByYXRlY2hhbmdlIGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIuCisgICAgc2No
ZWR1bGVFdmVudChldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50KTsKK30KKworZmxvYXQgTWVk
aWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2Nsb2Nr
LT5wbGF5UmF0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0UGxheWJhY2tSYXRl
KGZsb2F0IHJhdGUpCit7CisgICAgaWYgKG1fY2xvY2stPnBsYXlSYXRlKCkgPT0gcmF0ZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gVGhlIHBsYXliYWNrUmF0ZSBhdHRyaWJ1dGUsIG9uIHNl
dHRpbmcsIG11c3Qgc2V0IHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtZWRpYSBjb250cm9sbGVyIAor
ICAgIC8vIHBsYXliYWNrIHJhdGUgdG8gdGhlIG5ldyB2YWx1ZSwKKyAgICBtX2Nsb2NrLT5zZXRQ
bGF5UmF0ZShyYXRlKTsKKworICAgIC8vIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1w
bGUgZXZlbnQgbmFtZWQgcmF0ZWNoYW5nZSBhdCB0aGUgTWVkaWFDb250cm9sbGVyLgorICAgIHNj
aGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCk7Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sbGVyOjpzZXRWb2x1bWUoZmxvYXQgbGV2ZWwsIEV4Y2VwdGlvbkNvZGUmIGNvZGUp
Cit7CisgICAgaWYgKG1fdm9sdW1lID09IGxldmVsKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBJZiB0aGUgbmV3IHZhbHVlIGlzIG91dHNpZGUgdGhlIHJhbmdlIDAuMCB0byAxLjAgaW5jbHVz
aXZlLCB0aGVuLCBvbiBzZXR0aW5nLCBhbiAKKyAgICAvLyBJbmRleFNpemVFcnJvciBleGNlcHRp
b24gbXVzdCBiZSByYWlzZWQgaW5zdGVhZC4KKyAgICBpZiAobGV2ZWwgPCAwIHx8IGxldmVsID4g
MSkgeworICAgICAgICBjb2RlID0gSU5ERVhfU0laRV9FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgICAgIAorICAgIC8vIFRoZSB2b2x1bWUgYXR0cmlidXRlLCBvbiBzZXR0aW5nLCBp
ZiB0aGUgbmV3IHZhbHVlIGlzIGluIHRoZSByYW5nZSAwLjAgdG8gMS4wIGluY2x1c2l2ZSwKKyAg
ICAvLyBtdXN0IHNldCB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbWVkaWEgY29udHJvbGxlciB2b2x1
bWUgbXVsdGlwbGllciB0byB0aGUgbmV3IHZhbHVlCisgICAgbV92b2x1bWUgPSBsZXZlbDsKKwor
ICAgIC8vIGFuZCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCB2b2x1
bWVjaGFuZ2UgYXQgdGhlIE1lZGlhQ29udHJvbGxlci4KKyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50
TmFtZXMoKS52b2x1bWVjaGFuZ2VFdmVudCk7CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRp
YUVsZW1lbnRzW2luZGV4XS0+dXBkYXRlVm9sdW1lKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9s
bGVyOjpzZXRNdXRlZChib29sIGZsYWcpCit7CisgICAgaWYgKG1fbXV0ZWQgPT0gZmxhZykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gVGhlIG11dGVkIGF0dHJpYnV0ZSwgb24gc2V0dGluZywg
bXVzdCBzZXQgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1lZGlhIGNvbnRyb2xsZXIgbXV0ZSBvdmVy
cmlkZQorICAgIC8vIHRvIHRoZSBuZXcgdmFsdWUKKyAgICBtX211dGVkID0gZmxhZzsKKworICAg
IC8vIGFuZCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCB2b2x1bWVj
aGFuZ2UgYXQgdGhlIE1lZGlhQ29udHJvbGxlci4KKyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFt
ZXMoKS52b2x1bWVjaGFuZ2VFdmVudCk7CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVs
ZW1lbnRzW2luZGV4XS0+dXBkYXRlVm9sdW1lKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVy
OjpyZXBvcnRDb250cm9sbGVyU3RhdGUoKQoreworICAgIHVwZGF0ZVJlYWR5U3RhdGUoKTsKKyAg
ICB1cGRhdGVQbGF5YmFja1N0YXRlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjp1cGRh
dGVSZWFkeVN0YXRlKCkKK3sKKyAgICBSZWFkeVN0YXRlIG9sZFJlYWR5U3RhdGUgPSBtX3JlYWR5
U3RhdGU7CisgICAgUmVhZHlTdGF0ZSBuZXdSZWFkeVN0YXRlOworCisgICAgCisgICAgaWYgKG1f
bWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIE1lZGlhQ29udHJv
bGxlciBoYXMgbm8gc2xhdmVkIG1lZGlhIGVsZW1lbnRzLCBsZXQgbmV3IHJlYWRpbmVzcyBzdGF0
ZSBiZSAwLgorICAgICAgICBuZXdSZWFkeVN0YXRlID0gSEFWRV9OT1RISU5HOworICAgIH0gZWxz
ZSB7CisgICAgICAgIC8vIE90aGVyd2lzZSwgbGV0IGl0IGhhdmUgdGhlIGxvd2VzdCB2YWx1ZSBv
ZiB0aGUgcmVhZHlTdGF0ZSBJREwgYXR0cmlidXRlcyBvZiBhbGwgb2YgaXRzCisgICAgICAgIC8v
IHNsYXZlZCBtZWRpYSBlbGVtZW50cy4KKyAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IG1fbWVkaWFF
bGVtZW50cy5maXJzdCgpLT5yZWFkeVN0YXRlKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4
ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAg
ICAgbmV3UmVhZHlTdGF0ZSA9IG1pbihuZXdSZWFkeVN0YXRlLCBtX21lZGlhRWxlbWVudHNbaW5k
ZXhdLT5yZWFkeVN0YXRlKCkpOworICAgIH0KKworICAgIC8vIElmIHRoZSBNZWRpYUNvbnRyb2xs
ZXIncyBtb3N0IHJlY2VudGx5IHJlcG9ydGVkIHJlYWRpbmVzcyBzdGF0ZSBpcyBub3QgZXF1YWwg
dG8gbmV3IHJlYWRpbmVzcyBzdGF0ZQorICAgIGlmIChuZXdSZWFkeVN0YXRlID09IG9sZFJlYWR5
U3RhdGUpIAorICAgICAgICByZXR1cm47CisKKyAgICAvLyB0aGVuIHF1ZXVlIGEgdGFzayB0byBm
aXJlIGEgc2ltcGxlIGV2ZW50IGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIgb2JqZWN0LCB3aG9zZSBu
YW1lIGlzIHRoZQorICAgIC8vIGV2ZW50IG5hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgdmFsdWUg
b2YgbmV3IHJlYWRpbmVzcyBzdGF0ZSBnaXZlbiBpbiB0aGUgdGFibGUgYmVsb3cgKG9tbWl0dGVk
KQorICAgIEF0b21pY1N0cmluZyBldmVudE5hbWU7CisgICAgc3dpdGNoIChuZXdSZWFkeVN0YXRl
KSB7CisgICAgY2FzZSBIQVZFX05PVEhJTkc6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFt
ZXMoKS5lbXB0aWVkRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSEFWRV9NRVRBREFU
QToKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLmxvYWRlZG1ldGFkYXRhRXZlbnQ7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSEFWRV9DVVJSRU5UX0RBVEE6CisgICAgICAgIGV2
ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5sb2FkZWRkYXRhRXZlbnQ7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgSEFWRV9GVVRVUkVfREFUQToKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1l
cygpLmNhbnBsYXlFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIQVZFX0VOT1VHSF9E
QVRBOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkuY2FucGxheXRocm91Z2hFdmVu
dDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfQorICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lKTsKKworICAgIC8vIExl
dCB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbW9zdCByZWNlbnRseSByZXBvcnRlZCByZWFkaW5lc3Mg
c3RhdGUgYmUgbmV3IHJlYWRpbmVzcyBzdGF0ZS4KKyAgICBtX3JlYWR5U3RhdGUgPSBuZXdSZWFk
eVN0YXRlOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlUGxheWJhY2tTdGF0ZSgp
Cit7CisgICAgUGxheWJhY2tTdGF0ZSBvbGRQbGF5YmFja1N0YXRlID0gbV9wbGF5YmFja1N0YXRl
OworICAgIFBsYXliYWNrU3RhdGUgbmV3UGxheWJhY2tTdGF0ZTsKKworICAgIC8vIEluaXRpYWxp
emUgbmV3IHBsYXliYWNrIHN0YXRlIGJ5IHNldHRpbmcgaXQgdG8gdGhlIHN0YXRlIGdpdmVuIGZv
ciB0aGUgZmlyc3QgbWF0Y2hpbmcgCisgICAgLy8gY29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2lu
ZyBsaXN0OgorICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIC8v
IElmIHRoZSBNZWRpYUNvbnRyb2xsZXIgaGFzIG5vIHNsYXZlZCBtZWRpYSBlbGVtZW50cworICAg
ICAgICAvLyBMZXQgbmV3IHBsYXliYWNrIHN0YXRlIGJlIHdhaXRpbmcuCisgICAgICAgIG5ld1Bs
YXliYWNrU3RhdGUgPSBXQUlUSU5HOworICAgIH0gZWxzZSBpZiAoaGFzRW5kZWQoKSkgeworICAg
ICAgICAvLyBJZiBhbGwgb2YgdGhlIE1lZGlhQ29udHJvbGxlcidzIHNsYXZlZCBtZWRpYSBlbGVt
ZW50cyBoYXZlIGVuZGVkIHBsYXliYWNrIGFuZCB0aGUgbWVkaWEKKyAgICAgICAgLy8gY29udHJv
bGxlciBwbGF5YmFjayByYXRlIGlzIHBvc2l0aXZlIG9yIHplcm8KKyAgICAgICAgLy8gTGV0IG5l
dyBwbGF5YmFjayBzdGF0ZSBiZSBlbmRlZC4KKyAgICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IEVO
REVEOworICAgIH0gZWxzZSBpZiAoaXNCbG9ja2VkKCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIE1l
ZGlhQ29udHJvbGxlciBpcyBhIGJsb2NrZWQgbWVkaWEgY29udHJvbGxlcgorICAgICAgICAvLyBM
ZXQgbmV3IHBsYXliYWNrIHN0YXRlIGJlIHdhaXRpbmcuCisgICAgICAgIG5ld1BsYXliYWNrU3Rh
dGUgPSBXQUlUSU5HOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE90aGVyd2lzZQorICAgICAg
ICAvLyBMZXQgbmV3IHBsYXliYWNrIHN0YXRlIGJlIHBsYXlpbmcuCisgICAgICAgIG5ld1BsYXli
YWNrU3RhdGUgPSBQTEFZSU5HOworICAgIH0KKworICAgIC8vIElmIHRoZSBNZWRpYUNvbnRyb2xs
ZXIncyBtb3N0IHJlY2VudGx5IHJlcG9ydGVkIHBsYXliYWNrIHN0YXRlIGlzIG5vdCBlcXVhbCB0
byBuZXcgcGxheWJhY2sgc3RhdGUKKyAgICBpZiAobmV3UGxheWJhY2tTdGF0ZSA9PSBvbGRQbGF5
YmFja1N0YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBhbmQgdGhlIG5ldyBwbGF5YmFj
ayBzdGF0ZSBpcyBlbmRlZCwKKyAgICBpZiAobmV3UGxheWJhY2tTdGF0ZSA9PSBFTkRFRCkgewor
ICAgICAgICAvLyB0aGVuIHF1ZXVlIGEgdGFzayB0aGF0LCBpZiB0aGUgTWVkaWFDb250cm9sbGVy
IG9iamVjdCBpcyBhIHBsYXlpbmcgbWVkaWEgY29udHJvbGxlciwgYW5kIAorICAgICAgICAvLyBh
bGwgb2YgdGhlIE1lZGlhQ29udHJvbGxlcidzIHNsYXZlZCBtZWRpYSBlbGVtZW50cyBoYXZlIHN0
aWxsIGVuZGVkIHBsYXliYWNrLCBhbmQgdGhlIAorICAgICAgICAvLyBtZWRpYSBjb250cm9sbGVy
IHBsYXliYWNrIHJhdGUgaXMgc3RpbGwgcG9zaXRpdmUgb3IgemVybywgCisgICAgICAgIGlmICgh
bV9wYXVzZWQgJiYgaGFzRW5kZWQoKSkgeworICAgICAgICAgICAgLy8gY2hhbmdlcyB0aGUgTWVk
aWFDb250cm9sbGVyIG9iamVjdCB0byBhIHBhdXNlZCBtZWRpYSBjb250cm9sbGVyCisgICAgICAg
ICAgICBtX3BhdXNlZCA9IHRydWU7CisgICAgICAgICAgICBtX2Nsb2NrLT5zdG9wKCk7CisKKyAg
ICAgICAgICAgIC8vIGFuZCB0aGVuIGZpcmVzIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHBhdXNlIGF0
IHRoZSBNZWRpYUNvbnRyb2xsZXIgb2JqZWN0LgorICAgICAgICAgICAgc2NoZWR1bGVFdmVudChl
dmVudE5hbWVzKCkucGF1c2VFdmVudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBJZiB0
aGUgTWVkaWFDb250cm9sbGVyJ3MgbW9zdCByZWNlbnRseSByZXBvcnRlZCBwbGF5YmFjayBzdGF0
ZSBpcyBub3QgZXF1YWwgdG8gbmV3IHBsYXliYWNrIHN0YXRlCisgICAgLy8gdGhlbiBxdWV1ZSBh
IHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBhdCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVj
dCwgd2hvc2UgbmFtZSBpcyBwbGF5aW5nIAorICAgIC8vIGlmIG5ldyBwbGF5YmFjayBzdGF0ZSBp
cyBwbGF5aW5nLCBlbmRlZCBpZiBuZXcgcGxheWJhY2sgc3RhdGUgaXMgZW5kZWQsIGFuZCB3YWl0
aW5nIG90aGVyd2lzZS4KKyAgICBBdG9taWNTdHJpbmcgZXZlbnROYW1lOworICAgIHN3aXRjaCAo
bmV3UGxheWJhY2tTdGF0ZSkgeworICAgIGNhc2UgV0FJVElORzoKKyAgICAgICAgZXZlbnROYW1l
ID0gZXZlbnROYW1lcygpLndhaXRpbmdFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBF
TkRFRDoKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLmVuZGVkRXZlbnQ7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUExBWUlORzoKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnRO
YW1lcygpLnBsYXlpbmdFdmVudDsKKyAgICAgICAgbV9jbG9jay0+c3RhcnQoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lKTsKKworICAgIC8vIExldCB0aGUgTWVkaWFD
b250cm9sbGVyJ3MgbW9zdCByZWNlbnRseSByZXBvcnRlZCBwbGF5YmFjayBzdGF0ZSBiZSBuZXcg
cGxheWJhY2sgc3RhdGUuCisgICAgbV9wbGF5YmFja1N0YXRlID0gbmV3UGxheWJhY2tTdGF0ZTsK
KworICAgIHVwZGF0ZU1lZGlhRWxlbWVudHMoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6
OnVwZGF0ZU1lZGlhRWxlbWVudHMoKQoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5k
ZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21lZGlhRWxl
bWVudHNbaW5kZXhdLT51cGRhdGVQbGF5U3RhdGUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xs
ZXI6OmJyaW5nRWxlbWVudFVwVG9TcGVlZChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQorewor
ICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5z
KGVsZW1lbnQpKTsKKworICAgIC8vIFdoZW4gdGhlIHVzZXIgYWdlbnQgaXMgdG8gYnJpbmcgYSBt
ZWRpYSBlbGVtZW50IHVwIHRvIHNwZWVkIHdpdGggaXRzIG5ldyBtZWRpYSBjb250cm9sbGVyLAor
ICAgIC8vIGl0IG11c3Qgc2VlayB0aGF0IG1lZGlhIGVsZW1lbnQgdG8gdGhlIE1lZGlhQ29udHJv
bGxlcidzIG1lZGlhIGNvbnRyb2xsZXIgcG9zaXRpb24gcmVsYXRpdmUKKyAgICAvLyB0byB0aGUg
bWVkaWEgZWxlbWVudCdzIHRpbWVsaW5lLgorICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZENvZGUg
PSAwOworICAgIGVsZW1lbnQtPnNlZWsoY3VycmVudFRpbWUoKSwgaWdub3JlZENvZGUpOworfQor
Citib29sIE1lZGlhQ29udHJvbGxlcjo6aXNCbG9ja2VkKCkgY29uc3QKK3sKKyAgICAvLyBBIE1l
ZGlhQ29udHJvbGxlciBpcyBhIGJsb2NrZWQgbWVkaWEgY29udHJvbGxlciBpZiB0aGUgTWVkaWFD
b250cm9sbGVyIGlzIGEgcGF1c2VkIG1lZGlhIAorICAgIC8vIGNvbnRyb2xsZXIsCisgICAgaWYg
KG1fcGF1c2VkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICBpZiAobV9tZWRpYUVs
ZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGJvb2wg
YWxsUGF1c2VkID0gdHJ1ZTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9t
ZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBIVE1MTWVkaWFFbGVtZW50
KiBlbGVtZW50ID0gbV9tZWRpYUVsZW1lbnRzW2luZGV4XTsKKyAgICAgICAgLy8gIG9yIGlmIGFu
eSBvZiBpdHMgc2xhdmVkIG1lZGlhIGVsZW1lbnRzIGFyZSBibG9ja2VkIG1lZGlhIGVsZW1lbnRz
LAorICAgICAgICBpZiAoZWxlbWVudC0+aXNCbG9ja2VkKCkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgCisgICAgICAgIC8vIG9yIGlmIGFueSBvZiBpdHMgc2xhdmVkIG1lZGlh
IGVsZW1lbnRzIHdob3NlIGF1dG9wbGF5aW5nIGZsYWcgaXMgdHJ1ZSBzdGlsbCBoYXZlIHRoZWly
IAorICAgICAgICAvLyBwYXVzZWQgYXR0cmlidXRlIHNldCB0byB0cnVlLAorICAgICAgICBpZiAo
ZWxlbWVudC0+YXV0b3BsYXkoKSAmJiBlbGVtZW50LT5wYXVzZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAKKyAgICAgICAgaWYgKCFlbGVtZW50LT5wYXVzZWQoKSkKKyAg
ICAgICAgICAgIGFsbFBhdXNlZCA9IGZhbHNlOworICAgIH0KKyAgICAKKyAgICAvLyBvciBpZiBh
bGwgb2YgaXRzIHNsYXZlZCBtZWRpYSBlbGVtZW50cyBoYXZlIHRoZWlyIHBhdXNlZCBhdHRyaWJ1
dGUgc2V0IHRvIHRydWUuCisgICAgcmV0dXJuIGFsbFBhdXNlZDsKK30KKworYm9vbCBNZWRpYUNv
bnRyb2xsZXI6Omhhc0VuZGVkKCkgY29uc3QKK3sKKyAgICBpZiAobV9jbG9jay0+cGxheVJhdGUo
KSA8PSAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKG1fbWVkaWFFbGVt
ZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBib29sIGFs
bEhhdmVFbmRlZCA9IHRydWU7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1f
bWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxl
bWVudHNbaW5kZXhdLT5lbmRlZCgpKQorICAgICAgICAgICAgYWxsSGF2ZUVuZGVkID0gZmFsc2U7
CisgICAgfQorICAgIHJldHVybiBhbGxIYXZlRW5kZWQ7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9s
bGVyOjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQoreworICAg
IG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCB0
cnVlKSk7CisgICAgaWYgKCFtX2FzeW5jRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBt
X2FzeW5jRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9s
bGVyOjphc3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xsZXI+KikKK3sKKyAg
ICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IHBlbmRpbmdFdmVudHM7CisgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgCisgICAgbV9wZW5kaW5nRXZlbnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7
CisgICAgc2l6ZV90IGNvdW50ID0gcGVuZGluZ0V2ZW50cy5zaXplKCk7CisgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KQorICAgICAgICBkaXNwYXRjaEV2
ZW50KHBlbmRpbmdFdmVudHNbaW5kZXhdLnJlbGVhc2UoKSwgZWMpOworfQorCitTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBNZWRpYUNvbnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdAoreworICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPmRvY3VtZW50KCk7Cit9
CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpoYXNBdWRpbygpIGNvbnN0Cit7CisgICAgZm9yIChz
aXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgp
IHsKKyAgICAgICAgaWYgKG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmhhc0F1ZGlvKCkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IE1lZGlhQ29udHJvbGxlcjo6aGFzVmlkZW8oKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAg
ICAgIGlmIChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5oYXNWaWRlbygpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNv
bnRyb2xsZXI6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBp
bmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAg
ICAgICBpZiAobV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgTWVkaWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCB2aXNpYmxl
KQoreworICAgIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlID0gdmlzaWJsZTsKKyAgICBmb3IgKHNp
emVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkK
KyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxl
KHZpc2libGUpOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6c3VwcG9ydHNTY2FubmluZygp
IGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVt
ZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudHNbaW5k
ZXhdLT5zdXBwb3J0c1NjYW5uaW5nKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6YmVnaW5TY3J1
YmJpbmcoKQoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxl
bWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5i
ZWdpblNjcnViYmluZygpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6ZW5kU2NydWJiaW5n
KCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRz
LnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+ZW5kU2Ny
dWJiaW5nKCk7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpjYW5QbGF5KCkgY29uc3QKK3sK
KyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUo
KTsgKytpbmRleCkgeworICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmNhblBs
YXkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjppc0xpdmVTdHJlYW0oKSBjb25zdAoreworICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyAr
K2luZGV4KSB7CisgICAgICAgIGlmICghbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+aXNMaXZlU3Ry
ZWFtKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6aGFzU291cmNlKCkgY29uc3QKK3sKKyAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytp
bmRleCkgeworICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmhhc1NvdXJjZSgp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnJldHVyblRvUmVhbHRpbWUoKQoreworICAgIGZvciAo
c2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4
KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5yZXR1cm5Ub1JlYWx0aW1lKCk7Cit9
CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sbGVyOjppbnRlcmZhY2VOYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvck1lZGlhQ29udHJv
bGxlcjsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODVlZjI5YTIzZGI5OWQ2ZmU0Yzg2MDQyMjhmOTE5Mzc3MDk2ZmU1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaApAQCAtMCww
ICsxLDE1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhQ29udHJvbGxlcl9oCisjZGVmaW5l
IE1lZGlhQ29udHJvbGxlcl9oCisKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlICJBY3Rp
dmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TGlzdGVu
ZXIuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxl
ckludGVyZmFjZS5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDbG9jazsKK2NsYXNzIEhUTUxNZWRp
YUVsZW1lbnQ7CitjbGFzcyBFdmVudDsKKworY2xhc3MgTWVkaWFDb250cm9sbGVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8TWVkaWFDb250cm9sbGVyPiwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVy
ZmFjZSwgcHVibGljIEV2ZW50VGFyZ2V0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xsZXI+IG1lZGlhQ29udHJvbGxlckZvck1lZGlhR3JvdXAoY29uc3QgU3Ry
aW5nJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBjcmVhdGUoKTsK
KyAgICB2aXJ0dWFsIH5NZWRpYUNvbnRyb2xsZXIoKTsKKworICAgIHZvaWQgYWRkTWVkaWFFbGVt
ZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICB2b2lkIHJlbW92ZU1lZGlhRWxlbWVudChIVE1M
TWVkaWFFbGVtZW50Kik7CisgICAgYm9vbCBjb250YWluc01lZGlhRWxlbWVudChIVE1MTWVkaWFF
bGVtZW50KikgY29uc3Q7CisKKyAgICBjb25zdCBTdHJpbmcmIG1lZGlhR3JvdXAoKSBjb25zdCB7
IHJldHVybiBtX21lZGlhR3JvdXA7IH0KKyAgICAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGlt
ZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJh
bmdlcz4gc2Vla2FibGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdl
cz4gcGxheWVkKCk7CisgICAgCisgICAgdmlydHVhbCBmbG9hdCBkdXJhdGlvbigpIGNvbnN0Owor
ICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Q3VycmVudFRpbWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAKKyAgICB2aXJ0dWFs
IGJvb2wgcGF1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9wYXVzZWQ7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgcGxheSgpOworICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpOworICAgIAorICAgIHZpcnR1YWwg
ZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFBsYXli
YWNrUmF0ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0
KTsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IHBsYXliYWNrUmF0ZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQpOworICAgIAorICAgIHZpcnR1YWwgZmxv
YXQgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92b2x1bWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Vm9sdW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAgCisgICAgdmlydHVhbCBib29s
IG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRN
dXRlZChib29sKTsKKyAgICAKKyAgICB2aXJ0dWFsIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQorCisgICAgZW51bSBQbGF5YmFja1N0YXRlIHsg
V0FJVElORywgUExBWUlORywgRU5ERUQgfTsKKyAgICB2aXJ0dWFsIFBsYXliYWNrU3RhdGUgcGxh
eWJhY2tTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tTdGF0ZTsgfQorCisgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigpIHsgfQorCisgICAgdmlydHVhbCBib29s
IGhhc0F1ZGlvKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc1ZpZGVvKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIGhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIHNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2xv
c2VkQ2FwdGlvbnNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9jbG9zZWRDYXB0aW9uc1Zpc2li
bGU7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTY2FubmluZygpIGNvbnN0Owor
ICAgIAorICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjcnViYmluZygpOworICAgIHZpcnR1YWwgdm9p
ZCBlbmRTY3J1YmJpbmcoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUGxheSgpIGNvbnN0
OworICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVTdHJlYW0oKSBjb25zdDsKKyAgICAKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFzU291cmNlKCkgY29uc3Q7CisgICAgCisgICAgdmlydHVhbCB2b2lk
IHJldHVyblRvUmVhbHRpbWUoKTsKKworICAgIGJvb2wgaXNCbG9ja2VkKCkgY29uc3Q7CisKKyAg
ICAvLyBFdmVudFRhcmdldAorICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFDb250cm9sbGVyPjo6
cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFDb250cm9sbGVyPjo6ZGVyZWY7CisKK3By
aXZhdGU6CisgICAgTWVkaWFDb250cm9sbGVyKCk7CisgICAgdm9pZCByZXBvcnRDb250cm9sbGVy
U3RhdGUoKTsKKyAgICB2b2lkIHVwZGF0ZVJlYWR5U3RhdGUoKTsKKyAgICB2b2lkIHVwZGF0ZVBs
YXliYWNrU3RhdGUoKTsKKyAgICB2b2lkIHVwZGF0ZU1lZGlhRWxlbWVudHMoKTsKKyAgICB2b2lk
IGJyaW5nRWxlbWVudFVwVG9TcGVlZChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgdm9pZCBzY2hl
ZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKKyAgICB2b2lkIGFzeW5j
RXZlbnRUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbGxlcj4qKTsKKyAgICBib29sIGhhc0Vu
ZGVkKCkgY29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgdm9pZCByZWZF
dmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdl
dCgpIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZh
Y2VOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEq
IGV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSB7IHJldHVybiAm
bV9ldmVudFRhcmdldERhdGE7IH0KKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERh
dGE7CisKKyAgICBmcmllbmQgY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKKyAgICBmcmllbmQgY2xh
c3MgTWVkaWFDb250cm9sbGVyRXZlbnRMaXN0ZW5lcjsKKyAgICBWZWN0b3I8SFRNTE1lZGlhRWxl
bWVudCo+IG1fbWVkaWFFbGVtZW50czsKKyAgICBib29sIG1fcGF1c2VkOworICAgIGZsb2F0IG1f
ZGVmYXVsdFBsYXliYWNrUmF0ZTsKKyAgICBmbG9hdCBtX3ZvbHVtZTsKKyAgICBib29sIG1fbXV0
ZWQ7CisgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CisgICAgUGxheWJhY2tTdGF0ZSBtX3Bs
YXliYWNrU3RhdGU7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX3BlbmRpbmdFdmVudHM7
CisgICAgVGltZXI8TWVkaWFDb250cm9sbGVyPiBtX2FzeW5jRXZlbnRUaW1lcjsKKyAgICBTdHJp
bmcgbV9tZWRpYUdyb3VwOworICAgIGJvb2wgbV9jbG9zZWRDYXB0aW9uc1Zpc2libGU7CisgICAg
UGFzc1JlZlB0cjxDbG9jaz4gbV9jbG9jazsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFD
b250cm9sbGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kNGIyYTFmZDhjYjk0NDA4YTM4ZGFiYjk1NjNlYmZhNWY3MzhmYzUxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsCkBA
IC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUgaHRtbCB7CisgICAgaW50ZXJmYWNlIFsK
KyAgICAgICAgQ29uZGl0aW9uYWw9VklERU8sCisgICAgICAgIENhbkJlQ29uc3RydWN0ZWQsCisg
ICAgICAgIEdlbmVyYXRlVG9KUywKKyAgICAgICAgRXZlbnRUYXJnZXQKKyAgICBdIE1lZGlhQ29u
dHJvbGxlciB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUaW1lUmFuZ2VzIGJ1ZmZlcmVk
OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJhbmdlcyBzZWVrYWJsZTsKKworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGR1cmF0aW9uOworICAgICAgICBhdHRyaWJ1
dGUgZG91YmxlIGN1cnJlbnRUaW1lCisgICAgICAgICAgICBzZXR0ZXIgcmFpc2VzIChET01FeGNl
cHRpb24pOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHBhdXNlZDsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRpbWVSYW5nZXMgcGxheWVkOworICAgICAgICB2b2lk
IHBsYXkoKTsKKyAgICAgICAgdm9pZCBwYXVzZSgpOworCisgICAgICAgIGF0dHJpYnV0ZSBkb3Vi
bGUgZGVmYXVsdFBsYXliYWNrUmF0ZTsKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBwbGF5YmFj
a1JhdGU7CisKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSB2b2x1bWUKKyAgICAgICAgICAgIHNl
dHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIG11
dGVkOworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAgICB2b2lkIGFk
ZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIHZv
aWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJl
KTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAg
ICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhQ29udHJvbGxlckludGVyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyY2Q0ZGE0MWFm
NDJmNWRhMmFlNWRmOTc3OGM0Yjg2YjdjMzU0MDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlckludGVyZmFjZS5oCkBAIC0wLDAgKzEsOTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2VfaAorI2RlZmluZSBN
ZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2VfaAorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUaW1l
UmFuZ2VzOworCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOworCitjbGFzcyBNZWRpYUNvbnRy
b2xsZXJJbnRlcmZhY2UgeworcHVibGljOgorICAgIHZpcnR1YWwgfk1lZGlhQ29udHJvbGxlcklu
dGVyZmFjZSgpIHsgfTsKKyAgICAKKyAgICAvLyBNZWRpYUNvbnRyb2xsZXIgSURMOgorICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHBsYXllZCgpID0gMDsKKyAgICAKKyAgICB2
aXJ0dWFsIGZsb2F0IGR1cmF0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgY3Vy
cmVudFRpbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGZs
b2F0LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBwYXVzZWQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXkoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHBhdXNlKCkgPSAwOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgZGVmYXVsdFBsYXliYWNr
UmF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0
ZShmbG9hdCkgPSAwOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgcGxheWJhY2tSYXRlKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQpID0gMDsKKyAg
ICAKKyAgICB2aXJ0dWFsIGZsb2F0IHZvbHVtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Vm9sdW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIAorICAgIHZpcnR1
YWwgYm9vbCBtdXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TXV0ZWQoYm9v
bCkgPSAwOworICAgIAorICAgIGVudW0gUmVhZHlTdGF0ZSB7IEhBVkVfTk9USElORywgSEFWRV9N
RVRBREFUQSwgSEFWRV9DVVJSRU5UX0RBVEEsIEhBVkVfRlVUVVJFX0RBVEEsIEhBVkVfRU5PVUdI
X0RBVEEgfTsKKyAgICB2aXJ0dWFsIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsK
KworICAgIC8vIE1lZGlhQ29udHJvbEVsZW1lbnRzOgorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0Z1bGxzY3JlZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRnVsbHNjcmVlbigp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgPSAwOworCisg
ICAgdmlydHVhbCBib29sIGhhc0F1ZGlvKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBo
YXNWaWRlbygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ2xvc2VkQ2FwdGlvbnMo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldENsb3NlZENhcHRpb25zVmlzaWJsZShi
b29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNsb3NlZENhcHRpb25zVmlzaWJsZSgpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3QgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIGJlZ2luU2NydWJiaW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBlbmRTY3J1YmJpbmcoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUGxheSgpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVTdHJlYW0oKSBjb25zdCA9IDA7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFzU291cmNlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IHJldHVyblRvUmVhbHRpbWUoKSA9IDA7Cit9OworCit9CisKKyNlbmRpZgorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9UaW1lUmFuZ2VzLmNwcAppbmRleCAxZTE4MzA2OTg3NzE0YjBlOTliMmQ1MzViYzRi
NDdjZTNjY2M4NzgyLi5iYjFiMGZkNTg3MTI0N2IxZjhjYTUyZThlZjdlMDM2N2IwZTg0ZmQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAKQEAgLTMwLDEzICszMCwxNCBAQAogI2luY2x1
ZGUgPG1hdGguaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2Ug
c3RkOwogCiBUaW1lUmFuZ2VzOjpUaW1lUmFuZ2VzKGZsb2F0IHN0YXJ0LCBmbG9hdCBlbmQpCiB7
CiAgICAgYWRkKHN0YXJ0LCBlbmQpOwogfQogCi1QYXNzUmVmUHRyPFRpbWVSYW5nZXM+IFRpbWVS
YW5nZXM6OmNvcHkoKQorUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1lUmFuZ2VzOjpjb3B5KCkg
Y29uc3QKIHsKICAgICBSZWZQdHI8VGltZVJhbmdlcz4gbmV3U2Vzc2lvbiA9IFRpbWVSYW5nZXM6
OmNyZWF0ZSgpOwogICAgIApAQCAtNDcsNiArNDgsNTEgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2Vz
PiBUaW1lUmFuZ2VzOjpjb3B5KCkKICAgICByZXR1cm4gbmV3U2Vzc2lvbi5yZWxlYXNlKCk7CiB9
CiAKK3ZvaWQgVGltZVJhbmdlczo6aW52ZXJ0KCkKK3sKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4g
aW52ZXJ0ZWQgPSBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKyAgICBmbG9hdCBwb3NJbmYgPSBzdGQ6
Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKKyAgICBmbG9hdCBuZWdJbmYgPSAt
c3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CisKKyAgICBpZiAoIW1fcmFu
Z2VzLnNpemUoKSkKKyAgICAgICAgaW52ZXJ0ZWQtPmFkZChuZWdJbmYsIHBvc0luZik7CisgICAg
ZWxzZSB7CisgICAgICAgIGlmIChmbG9hdCBzdGFydCA9IG1fcmFuZ2VzLmZpcnN0KCkubV9zdGFy
dCAhPSBuZWdJbmYpCisgICAgICAgICAgICBpbnZlcnRlZC0+YWRkKG5lZ0luZiwgc3RhcnQpOwor
CisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggKyAxIDwgbV9yYW5nZXMuc2l6
ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgaW52ZXJ0ZWQtPmFkZChtX3Jhbmdlc1tpbmRleF0u
bV9lbmQsIG1fcmFuZ2VzW2luZGV4ICsgMV0ubV9zdGFydCk7CisKKyAgICAgICAgaWYgKGZsb2F0
IGVuZCA9IG1fcmFuZ2VzLmxhc3QoKS5tX2VuZCAhPSBwb3NJbmYpCisgICAgICAgICAgICBpbnZl
cnRlZC0+YWRkKGVuZCwgcG9zSW5mKTsKKyAgICB9CisKKyAgICBtX3Jhbmdlcy5zd2FwKGludmVy
dGVkLT5tX3Jhbmdlcyk7Cit9CisKK3ZvaWQgVGltZVJhbmdlczo6aW50ZXJzZWN0V2l0aChjb25z
dCBUaW1lUmFuZ2VzKiBvdGhlcikKK3sKKyAgICBBU1NFUlQob3RoZXIpOworICAgIFJlZlB0cjxU
aW1lUmFuZ2VzPiBpbnZlcnRlZCA9IGNvcHkoKTsKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gaW52
ZXJ0ZWRPdGhlciA9IG90aGVyLT5jb3B5KCk7CisgICAgaW52ZXJ0ZWQtPnVuaW9uV2l0aChpbnZl
cnRlZE90aGVyLmdldCgpKTsKKyAgICBpbnZlcnRlZC0+aW52ZXJ0KCk7CisKKyAgICBtX3Jhbmdl
cy5zd2FwKGludmVydGVkLT5tX3Jhbmdlcyk7Cit9CisKK3ZvaWQgVGltZVJhbmdlczo6dW5pb25X
aXRoKGNvbnN0IFRpbWVSYW5nZXMqIG90aGVyKQoreworICAgIEFTU0VSVChvdGhlcik7CisgICAg
UmVmUHRyPFRpbWVSYW5nZXM+IHVuaW9uZWQgPSBjb3B5KCk7CisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IG90aGVyLT5tX3Jhbmdlcy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAg
ICAgY29uc3QgUmFuZ2UmIHJhbmdlID0gb3RoZXItPm1fcmFuZ2VzW2luZGV4XTsKKyAgICAgICAg
dW5pb25lZC0+YWRkKHJhbmdlLm1fc3RhcnQsIHJhbmdlLm1fZW5kKTsKKyAgICB9CisKKyAgICBt
X3Jhbmdlcy5zd2FwKHVuaW9uZWQtPm1fcmFuZ2VzKTsKK30KKwogZmxvYXQgVGltZVJhbmdlczo6
c3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAKIHsgCiAgICAg
aWYgKGluZGV4ID49IGxlbmd0aCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RpbWVSYW5nZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oCmluZGV4IDJk
N2FmMjVhODA5MTM3MzBmODBkMjM5MzBiZTI3NGUwZmYxMjE3ZmQuLmNjY2NlMDVjMTljNGFjOWU2
MjlkZDJhMmExZmI2NjUyMTk3ODEwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGltZVJhbmdlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oCkBAIC00
Niw3ICs0NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGltZVJh
bmdlcyhzdGFydCwgZW5kKSk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBj
b3B5KCk7CisgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBjb3B5KCkgY29uc3Q7CisgICAgdm9p
ZCBpbnZlcnQoKTsKKyAgICB2b2lkIGludGVyc2VjdFdpdGgoY29uc3QgVGltZVJhbmdlcyopOwor
ICAgIHZvaWQgdW5pb25XaXRoKGNvbnN0IFRpbWVSYW5nZXMqKTsKIAogICAgIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VzLnNpemUoKTsgfQogICAgIGZsb2F0IHN0YXJ0
KHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5pZGwKaW5kZXggNGU4ZjA2NzBmOWYyNzZhMGM2NDNlMmIyMWMwZWMyYWZjNWM0MzM4Ni4u
ZDJmNWRiYzFkMWIyMjFmOTgyYmU5M2JhOGIwZjg5MjAwNTMxODVlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmlkbApAQCAtNjM0LDYgKzYzNCw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAg
ICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVZJREVPLCBFbmFibGVkQXRSdW50aW1lXSBNZWRpYUVy
cm9yQ29uc3RydWN0b3IgTWVkaWFFcnJvcjsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25h
bD1WSURFTywgRW5hYmxlZEF0UnVudGltZV0gVGltZVJhbmdlc0NvbnN0cnVjdG9yIFRpbWVSYW5n
ZXM7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU8sIEVuYWJsZWRBdFJ1bnRp
bWVdIEhUTUxTb3VyY2VFbGVtZW50Q29uc3RydWN0b3IgSFRNTFNvdXJjZUVsZW1lbnQ7CisgICAg
ICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU8sIEVuYWJsZWRBdFJ1bnRpbWVdIE1lZGlh
Q29udHJvbGxlckNvbnN0cnVjdG9yIE1lZGlhQ29udHJvbGxlcjsKIAogI2lmIGRlZmluZWQoRU5B
QkxFX0FOSU1BVElPTl9BUEkpICYmIEVOQUJMRV9BTklNQVRJT05fQVBJCiAgICAgICAgIGF0dHJp
YnV0ZSBXZWJLaXRBbmltYXRpb25Db25zdHJ1Y3RvciBXZWJLaXRBbmltYXRpb247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggMDE4
YzdkZDMzZTM4YzFiOGY3NzM0NWE4YzNlNGY4MzVmZWM2MGE3My4uZmM3N2ZmMjg4MzhiN2MwOTRh
YTUzYTRmYmRmMDcxNjgwY2EyMjEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtNjA5LDYgKzYwOSwxMSBAQCBQYXNzUmVmUHRy
PFRpbWVSYW5nZXM+IE1lZGlhUGxheWVyOjpidWZmZXJlZCgpCiAgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+YnVmZmVyZWQoKTsKIH0KIAorUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXllcjo6
c2Vla2FibGUoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnNlZWthYmxlKCk7Cit9CisKIGZs
b2F0IE1lZGlhUGxheWVyOjptYXhUaW1lU2Vla2FibGUoKQogewogICAgIHJldHVybiBtX3ByaXZh
dGUtPm1heFRpbWVTZWVrYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgKaW5kZXggYzk2YjAyNWQ4MmQwMDcwOTE2OWVlYTUxYzA3ODI2Yjc0
NTA2YzQ3MS4uNDc3MzlhMDhiMGUzZDljYzczYzk5YTEzMTQzNGE3OGFlMDM3NDU1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0yNDEs
NiArMjQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJlc2VydmVzUGl0Y2goYm9vbCk7CiAK
ICAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCk7CisgICAgUGFzc1JlZlB0cjxU
aW1lUmFuZ2VzPiBzZWVrYWJsZSgpOwogICAgIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpOwogCiAg
ICAgdW5zaWduZWQgYnl0ZXNMb2FkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggZjhjNzBhYmUyOGE3ZWQw
MWRmYjhhMmNiN2YxYzYzNjYzN2QzODQ0MS4uNmM1MjdkN2U1Y2QzODk5OTE2YjQ2NWVmNzJkNTcx
NDQwNTZlZDdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoVklE
RU8pCiAKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05MSw2
ICs5Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUg
bmV0d29ya1N0YXRlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5
U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxU
aW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1heFRpbWVTZWVrYWJsZSgpID8g
VGltZVJhbmdlczo6Y3JlYXRlKDAsIG1heFRpbWVTZWVrYWJsZSgpKSA6IFRpbWVSYW5nZXM6OmNy
ZWF0ZSgpOyB9CiAgICAgdmlydHVhbCBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgPSAw
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZmUyNWVjMzFjNzljZjQyNWVmYjZkNTY2YWRhZmQ0OGQzOTkzYzMzMy4uMTlh
MDQ4NTU5NjA2ZDlmZjgzNTQ5MWY3YzNkMzUzY2Q3YWVjMWQ0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5
IEBACisyMDExLTExLTAzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCBNZWRpYUNvbnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2stZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXli
YWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbDog
QWRkZWQuCisKKzIwMTEtMTEtMDMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IE1lZGlhQ29udHJvbGxlci4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFj
ay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIt
cGxheWJhY2suaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci5o
dG1sOiBBZGRlZC4KKworMjAxMS0xMS0wMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgTWVkaWFDb250cm9sbGVyLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE0MDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBs
YXliYWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJv
bGxlci1wbGF5YmFjay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9s
bGVyLmh0bWw6IEFkZGVkLgorCiAyMDExLTExLTA4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBmYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lm
cmFtZS1mbGF0dGVuaW5nLWZpeGVkLXdpZHRoLWFuZC1oZWlnaHQtbm8tc2Nyb2xsaW5nLmh0bWwg
aXMgZmxha3kKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGM2ZDRkMDdmZmNjZmNiMzBlNzU1YWNjMjY4ZTY3NGY3NGFjY2Mw
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXIt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAKKyAKK1Rlc3QgcHJlc2VuY2Ugb2YgTWVkaWFD
b250cm9sbGVyIGNvbnN0cnVjdG9yLCBtZWRpYUNvbnRyb2xsZXIsIGFuZCBtZWRpYUdyb3VwIGF0
dHJpYnV0ZXM6CitFWFBFQ1RFRCAodHlwZW9mKE1lZGlhQ29udHJvbGxlcikgPT0gJ29iamVjdCcp
IE9LCitFWFBFQ1RFRCAodmlkZW8ubWVkaWFDb250cm9sbGVyID09ICdudWxsJykgT0sKK0VYUEVD
VEVEICh2aWRlby5tZWRpYUdyb3VwID09ICcnKSBPSworCitUZXN0IHRoYXQgdGhlIHByZXNlbmNl
IG9mIGEgbWVkaWFHcm91cCBhdHRyaWJ1dGUgY3JlYXRlcyBhIG1lZGlhQ29udHJvbGxlcjoKK0VY
UEVDVEVEICh2aWRlbzIubWVkaWFHcm91cCA9PSAnZ3JvdXAnKSBPSworRVhQRUNURUQgKHZpZGVv
Mi5tZWRpYUNvbnRyb2xsZXIgIT0gJ251bGwnKSBPSworCitUZXN0IHRoYXQgc2V0dGluZyBtZWRp
YUdyb3VwIHRvIGFuIGVtcHR5IHN0cmluZyByZW1vdmVzIHRoZSBtZWRpYUNvbnRyb2xsZXI6CitS
VU4odmlkZW8ubWVkaWFHcm91cCA9ICcnKQorRVhQRUNURUQgKHZpZGVvLm1lZGlhQ29udHJvbGxl
ciA9PSAnbnVsbCcpIE9LCisKK1Rlc3QgbWFudWFsbHkgY3JlYXRpbmcgYW5kIGFzc2lnbmluZyBh
IG1lZGlhQ29udHJvbGxlciB0byBhIG1lZGlhIGVsZW1lbnQ6CitSVU4oY29udHJvbGxlciA9IG5l
dyBNZWRpYUNvbnRyb2xsZXIoKSkKK1JVTih2aWRlby5tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9s
bGVyKQorRVhQRUNURUQgKHZpZGVvLm1lZGlhQ29udHJvbGxlciA9PSAnW29iamVjdCBNZWRpYUNv
bnRyb2xsZXJdJykgT0sKKworVGVzdCB0aGF0IHR3byBtZWRpYSBlbGVtZW50cyB3aXRoIHRoZSBz
YW1lIG1lZGlhR3JvdXAgaGF2ZSB0aGUgc2FtZSBtZWRpYUNvbnRyb2xsZXI6CitSVU4odmlkZW8u
bWVkaWFHcm91cCA9ICdncm91cCcpCitSVU4odmlkZW8yLm1lZGlhR3JvdXAgPSAnZ3JvdXAnKQor
RVhQRUNURUQgKHZpZGVvLm1lZGlhQ29udHJvbGxlciA9PT0gdmlkZW8yLm1lZGlhQ29udHJvbGxl
ciA9PSAndHJ1ZScpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9t
ZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI4YThlMDkyMTNlZTFhNzEwN2I4MTFhYjlmODgzYWQ0MDEyYTNmYTYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE0IEBACisgCitSVU4oY29udHJvbGxlciA9IHZpZGVvLm1lZGlhQ29u
dHJvbGxlcikKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorUlVOKGNvbnRyb2xsZXIuY3VycmVudFRp
bWUgPSA1KQorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID09ICc1JykgT0sKK0VYUEVDVEVE
ICh2aWRlbzIuY3VycmVudFRpbWUgPT0gJzUnKSBPSworUlVOKHZpZGVvLnBsYXkoKSkKK1JVTih2
aWRlbzIucGxheSgpKQorUlVOKGNvbnRyb2xsZXIucGxheSgpKQorRVZFTlQocGxheWluZykKK0VY
UEVDVEVEIChjb250cm9sbGVyLnBhdXNlZCA9PSAnZmFsc2UnKSBPSworRVZFTlQoZW5kZWQpCitF
TkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9s
bGVyLXBsYXliYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLXBs
YXliYWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2MyYjgzZWYxYWE4ODk2ZDdjMjIwN2Y3YTk0NjQ5MGYz
Y2NmNWYyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRy
b2xsZXItcGxheWJhY2suaHRtbApAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz1tZWRpYS1maWxlLmpzPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorCisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBjb250cm9sbGVyOworICAgICAgICB2YXIgdmlkZW8y
OworCisgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICAgICAgdmlkZW8gPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8nKVswXTsKKyAgICAgICAgICAgIHZpZGVv
MiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzFdOworICAgICAgICAg
ICAgcnVuKCdjb250cm9sbGVyID0gdmlkZW8ubWVkaWFDb250cm9sbGVyJyk7CisgICAgICAgICAg
ICBjb250cm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2NhbnBsYXl0aHJvdWdoJywgY2FucGxheXRo
cm91Z2gsIHRydWUpOworICAgICAgICAgICAgc2V0U3JjQnlUYWdOYW1lKCd2aWRlbycsIGZpbmRN
ZWRpYUZpbGUoJ3ZpZGVvJywgJ2NvbnRlbnQvdGVzdCcpKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgZnVuY3Rpb24gY2FucGxheXRocm91Z2goKSB7CisgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIkVWRU5UKGNhbnBsYXl0aHJvdWdoKSIpOworICAgICAgICAgICAgY29udHJvbGxlci5y
ZW1vdmVFdmVudExpc3RlbmVyKCdjYW5wbGF5dGhyb3VnaCcsIGNhbnBsYXl0aHJvdWdoLCB0cnVl
KTsKKyAgICAgICAgICAgIHJ1bignY29udHJvbGxlci5jdXJyZW50VGltZSA9IDUnKTsKKyAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8uY3VycmVudFRpbWUnLCA1KTsKKyAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgndmlkZW8yLmN1cnJlbnRUaW1lJywgNSk7CisgICAgICAgICAgICBydW4o
J3ZpZGVvLnBsYXkoKScpOworICAgICAgICAgICAgcnVuKCd2aWRlbzIucGxheSgpJyk7CisgICAg
ICAgICAgICBjb250cm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBwbGF5aW5nLCB0
cnVlKTsKKyAgICAgICAgICAgIHJ1bignY29udHJvbGxlci5wbGF5KCknKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gcGxheWluZygpIHsgCisgICAgICAgICAgICBjb25z
b2xlV3JpdGUoIkVWRU5UKHBsYXlpbmcpIik7CisgICAgICAgICAgICBjb250cm9sbGVyLnJlbW92
ZUV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBwbGF5aW5nLCB0cnVlKTsKKyAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgnY29udHJvbGxlci5wYXVzZWQnLCBmYWxzZSk7CisgICAgICAgICAgICBjb250
cm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgZW5kZWQsIHRydWUpOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gZW5kZWQoKSB7IAorICAgICAgICAgICAgY29uc29sZVdyaXRl
KCJFVkVOVChlbmRlZCkiKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIucmVtb3ZlRXZlbnRMaXN0
ZW5lcignZW5kZWQnLCBlbmRlZCwgdHJ1ZSk7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAg
ICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0i
c3RhcnQoKSI+CisgICAgICAgIDx2aWRlbyBtZWRpYUdyb3VwPSJncm91cCIgY29udHJvbHM+PC92
aWRlbz4KKyAgICAgICAgPHZpZGVvIG1lZGlhR3JvdXA9Imdyb3VwIiBjb250cm9scz48L3ZpZGVv
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBlNTk2NzU0ZDVh
YmIxYzNlN2VkZjE0MjljNjkzYThiODc4NGZhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz1tZWRpYS1m
aWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2Ny
aXB0PgorCisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBjb250cm9sbGVyOworICAgICAg
ICB2YXIgdmlkZW8yOworCisgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICAgICAg
dmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8nKVswXTsKKyAgICAg
ICAgICAgIHZpZGVvMiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzFd
OworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgcHJlc2VuY2Ugb2YgTWVkaWFDb250
cm9sbGVyIGNvbnN0cnVjdG9yLCBtZWRpYUNvbnRyb2xsZXIsIGFuZCBtZWRpYUdyb3VwIGF0dHJp
YnV0ZXM6Iik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInR5cGVvZihNZWRpYUNvbnRyb2xs
ZXIpIiwgIm9iamVjdCIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRpYUNv
bnRyb2xsZXIiLCBudWxsKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubWVkaWFH
cm91cCIsICIiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICBj
b25zb2xlV3JpdGUoIlRlc3QgdGhhdCB0aGUgcHJlc2VuY2Ugb2YgYSBtZWRpYUdyb3VwIGF0dHJp
YnV0ZSBjcmVhdGVzIGEgbWVkaWFDb250cm9sbGVyOiIpCisgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInZpZGVvMi5tZWRpYUdyb3VwIiwgJ2dyb3VwJyk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInZpZGVvMi5tZWRpYUNvbnRyb2xsZXIiLCBudWxsLCAiIT0iKTsKKyAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgdGhhdCBzZXR0
aW5nIG1lZGlhR3JvdXAgdG8gYW4gZW1wdHkgc3RyaW5nIHJlbW92ZXMgdGhlIG1lZGlhQ29udHJv
bGxlcjoiKQorICAgICAgICAgICAgcnVuKCJ2aWRlby5tZWRpYUdyb3VwID0gJyciKTsKKyAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubWVkaWFDb250cm9sbGVyIiwgbnVsbCk7CisgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0
IG1hbnVhbGx5IGNyZWF0aW5nIGFuZCBhc3NpZ25pbmcgYSBtZWRpYUNvbnRyb2xsZXIgdG8gYSBt
ZWRpYSBlbGVtZW50OiIpCisgICAgICAgICAgICBydW4oImNvbnRyb2xsZXIgPSBuZXcgTWVkaWFD
b250cm9sbGVyKCkiKTsKKyAgICAgICAgICAgIHJ1bigidmlkZW8ubWVkaWFDb250cm9sbGVyID0g
Y29udHJvbGxlciIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRpYUNvbnRy
b2xsZXIiLCBjb250cm9sbGVyKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgdGhhdCB0d28gbWVkaWEgZWxlbWVudHMgd2l0aCB0
aGUgc2FtZSBtZWRpYUdyb3VwIGhhdmUgdGhlIHNhbWUgbWVkaWFDb250cm9sbGVyOiIpCisgICAg
ICAgICAgICBydW4oInZpZGVvLm1lZGlhR3JvdXAgPSAnZ3JvdXAnIik7CisgICAgICAgICAgICBy
dW4oInZpZGVvMi5tZWRpYUdyb3VwID0gJ2dyb3VwJyIpOworICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJ2aWRlby5tZWRpYUNvbnRyb2xsZXIgPT09IHZpZGVvMi5tZWRpYUNvbnRyb2xsZXIiLCB0
cnVlKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHZp
ZGVvPjwvdmlkZW8+CisgICAgICAgIDx2aWRlbyBtZWRpYWdyb3VwPSJncm91cCI+PC92aWRlbz4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxpb24vZmFzdC9yZWdpb25zL3JlbmRlci1y
ZWdpb24tY3VzdG9tLXN0eWxlLW1hcmstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLWxpb24vZmFzdC9yZWdpb25zL3JlbmRlci1yZWdpb24tY3VzdG9tLXN0eWxlLW1hcmst
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2NzRlYTllNGZhODUwYTkzODQzZTNjZjhkYmJhNjU0
ZGIzOTMwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlv
bi9mYXN0L3JlZ2lvbnMvcmVuZGVyLXJlZ2lvbi1jdXN0b20tc3R5bGUtbWFyay1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwzNCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRl
clZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHgxNjYK
KyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDE2NgorICAgIFJlbmRlckJv
ZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDE1MAorICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9
IGF0ICgwLDApIHNpemUgMjAweDUwCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1MCkg
c2l6ZSAyMDB4NTAKKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwxMDApIHNpemUgMjAw
eDUwCitGbG93IFRocmVhZHMKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93MScKKyAgICBs
YXllciBhdCAoMCwwKSBzaXplIDIwMHgxMDAKKyAgICAgIFJlbmRlckZsb3dUaHJlYWQgYXQgKDAs
MCkgc2l6ZSAyMDB4MTAwCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDE2KSBzaXpl
IDIwMHgxODgKKyAgICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSAyMDB4MTgK
KyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2OHgxOAorICAg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjg6ICJGaXJzdCBwYXJhIGdvZXMg
aW50byByZWdpb24uIgorICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDM0
KSBzaXplIDIwMHgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgMTM0eDE4CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEzNDogIlRl
eHQgZ29lcyBpbnRvIHJlZ2lvbiIKKyAgICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNjgp
IHNpemUgMjAweDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSAxODd4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTg3OiAiU2Vj
b25kIHBhcmEgZ29lcyBpbnRvIHJlZ2lvbi4iCisgICAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0
ICgwLDEwMikgc2l6ZSAyMDB4MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDE3NXgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAx
NzU6ICJUaGlyZCBwYXJhIGdvZXMgaW50byByZWdpb24uIgorICAgICAgICAgIFJlbmRlckJsb2Nr
IChhbm9ueW1vdXMpIGF0ICgwLDEzNikgc2l6ZSAyMDB4MTgKKyAgICAgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEzNHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCAxMzQ6ICJUZXh0IGdvZXMgaW50byByZWdpb24iCisgICAgICAgICAgUmVu
ZGVyQmxvY2sge1B9IGF0ICgwLDE3MCkgc2l6ZSAyMDB4MTgKKyAgICAgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE4MngxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCAxODI6ICJGb3VydGggcGFyYSBnb2VzIGludG8gcmVnaW9uLiIKKyAgUmVn
aW9ucyBmb3IgZmxvdyAnZmxvdzEnCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdpb24xIHJl
Z2lvbiBzdHlsZTogMQorICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uMyByZWdpb24gc3R5
bGU6IDEK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114277</attachid>
            <date>2011-11-09 07:45:45 -0800</date>
            <delta_ts>2011-11-10 00:51:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71408-20111109074544.patch</filename>
            <type>text/plain</type>
            <size>100768</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk3MTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkODFmZmZlMDRlNGRiZjE0
YjkxOTgyNjMwYThmYzI1MjZmY2UwZmI3Li41NDIyMTU4YjY0NGZlNzI2MmI3MmVlZDZiMmVkNzE5
MjU0OWIyNGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU3IEBACisyMDExLTExLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNv
bnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbAorCisgICAgICAgIEFkZHMgc3VwcG9ydCBm
b3IgdGhlIE1lZGlhQ29udHJvbGxlciBET00gb2JqZWN0LCBhbmQgdGhlIG1lZGlhZ3JvdXAgYW5k
IG1lZGlhY29udHJvbGxlcgorICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGF0dHJpYnV0ZXMuCisK
KyAgICAgICAgTWVkaWFDb250cm9sbGVyIGlzIGFuIERPTSBvYmplY3Qgd2hpY2ggc3luY2hyb25p
emVzIHBsYXliYWNrIG9mIG11bHRpcGxlIEhUTUxNZWRpYUVsZW1lbnRzLiBJdCBjYW4KKyAgICAg
ICAgZWl0aGVyIGJlIGNyZWF0ZWQgYnkgYSBwYWdlIHNjcmlwdCBhbmQgYXNzaWduZWQgdG8gYSBI
VE1MTWVkaWFFbGVtZW50IHVzaW5nIHRoZSBtZWRpYUNvbnRyb2xsZXIgcHJvcGVydHksCisgICAg
ICAgIG9yIGFsbCBIVE1MTWVkaWFFbGVtZW50cyB3aXRoIGlkZW50aWNhbCBtZWRpYWdyb3VwIGF0
dHJpYnV0ZXMgd2lsbCBoYXZlIGEgTWVkaWFDb250cm9sbGVyIGFzc2lnbmVkIAorICAgICAgICBh
dXRvbWF0aWNhbGx5LgorCisgICAgICAgIEFkZCBhbiBhYnN0cmFjdCBpbnRlcmZhY2UgaW1wbGVt
ZW50ZWQgYnkgYm90aCBNZWRpYUNvbnRyb2xsZXIgYW5kIEhUTUxNZWRpYUVsZW1lbnQuCisgICAg
ICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U6On5NZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UpOgorCisgICAgICAgIEFkZCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCBhbmQgSURMLgor
ICAgICAgICAqIGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChtZWRp
YUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXApOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpt
ZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
Y3JlYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6TWVkaWFDb250cm9sbGVyKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6fk1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChNZWRp
YUNvbnRyb2xsZXI6OmFkZE1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnJlbW92ZU1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmNvbnRhaW5z
TWVkaWFFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6YnVmZmVyZWQpOgorICAg
ICAgICAoTWVkaWFDb250cm9sbGVyOjpzZWVrYWJsZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnBsYXllZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKToKKyAgICAg
ICAgKE1lZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnBsYXkpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpwYXVzZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnNldERlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpz
ZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZCk6CisgICAgICAgIChNZWRpYUNvbnRy
b2xsZXI6OnJlcG9ydENvbnRyb2xsZXJTdGF0ZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnVwZGF0ZVJlYWR5U3RhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjp1cGRhdGVQbGF5
YmFja1N0YXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlTWVkaWFFbGVtZW50
cyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnNjaGVkdWxlRXZlbnQpOgorICAgICAgICAo
TWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpoYXNBdWRpbyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Omhhc1ZpZGVvKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzQ2xvc2VkQ2FwdGlvbnMpOgorICAgICAgICAoTWVk
aWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUpOgorICAgICAgICAoTWVkaWFD
b250cm9sbGVyOjpzdXBwb3J0c1NjYW5uaW5nKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
YmVnaW5TY3J1YmJpbmcpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjplbmRTY3J1YmJpbmcp
OgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjYW5QbGF5KToKKyAgICAgICAgKE1lZGlhQ29u
dHJvbGxlcjo6aXNMaXZlU3RyZWFtKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzU291
cmNlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6cmV0dXJuVG9SZWFsdGltZSk6CisgICAg
ICAgIChNZWRpYUNvbnRyb2xsZXI6OmlzQmxvY2tlZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6Omhhc0VuZGVkKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6bWVkaWFHcm91cCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xsZXI6OmRlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sbGVyOjp2b2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpt
dXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnJlYWR5U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1N0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6c3VwcG9ydHNGdWxsc2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6aXNGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbGxlcjo6Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sbGVyOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbGxlcjo6dG9NZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sbGVyOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvTWVk
aWFDb250cm9sbGVyLmlkbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGNvbnZlbmllbmNlIGZ1bmN0
aW9ucyB0byBUaW1lUmFuZ2VzIHdoaWNoIGNhbiBjYWxjdWxhdGUgaW50ZXJzZWN0aW9ucyBhbmQK
KyAgICAgICAgdW5pb25zIGJldHdlZW4gVGltZVJhbmdlcyBvYmplY3RzLgorICAgICAgICAqIGh0
bWwvVGltZVJhbmdlcy5jcHA6CisgICAgICAgIChUaW1lUmFuZ2VzOjpjb3B5KToKKyAgICAgICAg
KFRpbWVSYW5nZXM6OmludmVydCk6CisgICAgICAgIChUaW1lUmFuZ2VzOjppbnRlcnNlY3RXaXRo
KToKKyAgICAgICAgKFRpbWVSYW5nZXM6OnVuaW9uV2l0aCk6CisgICAgICAgICogaHRtbC9UaW1l
UmFuZ2VzLmg6CisKKyAgICAgICAgQWRkIE1lZGlhQ29udHJvbGxlckNvbnN0cnVjdG9yIHRvIHRo
ZSBXaW5kb3cgb2JqZWN0LgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKworICAgICAg
ICBBZGQgdGhlIHR3byBuZXcgYXR0cmlidXRlIG5hbWVzLCBtZWRpYWdyb3VwIGFuZCBtZWRpYWNv
bnRyb2xsZXIuCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYXR0cmlidXRlcywgYW5kIGFkZCBvdmVycmlkZGVu
IGJlaGF2aW9yIHdoZW4gYSBtZWRpYSBlbGVtZW50CisgICAgICAgIGhhcyBhIGN1cnJlbnQgbWVk
aWEgY29udHJvbGxlcjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjplbmRlZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6dXNlckNhbmNlbGxlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRN
ZWRpYUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNv
bnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlTWVk
aWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzQmxv
Y2tlZE9uTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc1NvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0xpdmVTdHJlYW0pOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1M
TWVkaWFFbGVtZW50Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxN
ZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcik6CisKKyAgICAgICAgQWRkIGEgZnVuY3Rp
b24gInNlZWthYmxlIiB3aGljaCByZXR1cm5zIGEgVGltZVJhbmdlcyBjb250YWluaW5nIHRoZSBz
ZWVrYWJsZSB0aW1lIHJhbmdlcworICAgICAgICBpbiBhIG1lZGlhIGVsZW1lbnQuICBCeSBkZWZh
dWx0IHRoaXMgaXMgYSBzaW5nbGUgcmFuZ2Ugb2YgWzAsIG1heFRpbWVTZWVrYWJsZV0uCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OnNlZWthYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpz
ZWVrYWJsZSk6CisKKyAgICAgICAgU3VwcG9ydCBmdW5jdGlvbnMgdG8gY2FzdCBiZXR3ZWVuIE1l
ZGlhQ29udHJvbGxlciBhbmQgRXZlbnRUYXJnZXQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNF
dmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBkb20v
RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OnRvTWVkaWFD
b250cm9sbGVyKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKworICAgICAgICBCb2ls
ZXJwbGF0ZSB0byBzdXBwb3J0IGNyZWF0aW5nIHRoZSBkZXJpdmVkIHNvdXJjZXMgZm9yIE1lZGlh
Q29udHJvbGxlciBhbmQgYWRkaW5nIG5ldyBzb3VyY2VzCisgICAgICAgIHRvIHRoZSBwcm9qZWN0
OgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNw
cDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMS0xMS0wOSAgQW5kcmV5IEtvc3lha292ICA8
Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtyZWZhY3Rvcmlu
Z10gcmVtb3ZlIGEgYnVuY2ggb2YgbWV0aG9kcyBmcm9tIEphdmFTY3JpcHRTb3VyY2VGcmFtZURl
bGVnYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKaW5kZXggNTUzZGM1ZThjMzU2
OWNiODA2Y2I1OTU0ZDdiYzNkNWEyOGU1ZTRlOS4uM2QxMjkzOTE4MzU1YTcyNDdkOGQ3NWYzM2Mz
NTFiZDBmZjExM2I4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaApAQCAtMTEw
Nyw3ICsxMTA3LDcgQEAKICNkZWZpbmUgSEFWRV9JTlZFUlRFRF9XSEVFTF9FVkVOVFMgMQogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShXSU4pICYmICFPUyhXSU5DRSkg
JiYgIVBMQVRGT1JNKFdJTl9DQUlSTykpCisjaWYgUExBVEZPUk0oTUFDKQogI2RlZmluZSBXVEZf
VVNFX0NPUkVBVURJTyAxCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5ZWYxYzNh
NTUzNDFlMjI2ZTMyMTk3ZDViNzNhZGRlNTA3NjAwYzdhLi44NGMwNTAyMDI0MjFiNTNmMWUwMDM4
YmFjODc2ODQ4NjMyODgzODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjc2LDYgKzI3Niw3
IEBAIFNFVChXZWJDb3JlX0lETF9GSUxFUwogICAgIGh0bWwvSFRNTFVua25vd25FbGVtZW50Lmlk
bAogICAgIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwKICAgICBodG1sL0ltYWdlRGF0YS5pZGwK
KyAgICBodG1sL01lZGlhQ29udHJvbGxlci5pZGwKICAgICBodG1sL01lZGlhRXJyb3IuaWRsCiAg
ICAgaHRtbC9UZXh0TWV0cmljcy5pZGwKICAgICBodG1sL1RleHRUcmFjay5pZGwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLmNwcAppbmRleCBiM2YxZTNmYjk5NmU3OTAzOTNkOWZkYzg2ZjY5MWI4YTYx
NTNkM2Q2Li41NTg3NjA5MDY2OWQyOWU3MzZjMWE4NmQ2MjAyYjc0MmIwMmMyZjFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC0yMjgsNiArMjI4LDcgQEAKICNpbmNsdWRlICJKU0ph
dmFTY3JpcHRDYWxsRnJhbWUuY3BwIgogI2luY2x1ZGUgIkpTS2V5Ym9hcmRFdmVudC5jcHAiCiAj
aW5jbHVkZSAiSlNMb2NhdGlvbi5jcHAiCisjaW5jbHVkZSAiSlNNZWRpYUNvbnRyb2xsZXIuY3Bw
IgogI2luY2x1ZGUgIkpTTWVkaWFFcnJvci5jcHAiCiAjaW5jbHVkZSAiSlNNZWRpYUxpc3QuY3Bw
IgogI2luY2x1ZGUgIkpTTWVkaWFRdWVyeUxpc3QuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggZTYwNzRjMWVkNzcxMzRlNWJjYmVhNmE5OGI1ZTE4ZGM5OThhYTcwZi4uNDg0
OTU2MjczNWYzYjYwMWY0ZGQ5NTA1ZTEwYWIyMWI3YTI4YjBjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC0yNzcsNiArMjc3LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgS2V5
Ym9hcmRFdmVudCBcCiAgICAgTG9jYXRpb24gXAogICAgIExvd1Bhc3MyRmlsdGVyTm9kZSBcCisg
ICAgTWVkaWFDb250cm9sbGVyIFwKICAgICBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgXAog
ICAgIE1lZGlhRXJyb3IgXAogICAgIE1lZGlhTGlzdCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5w
cmkKaW5kZXggY2FlYjc5OWU2NzZkMTIwYTRlODljZTg0MDQzNzQ3NTcyYzRmN2U5Ni4uYzZmNTJl
ODM3YTdlMmZmZjMxNTMzMTVhNTFjZTQ4NjgwNTE2N2YwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLnByaQpAQCAtMzE0LDYgKzMxNCw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgaHRtbC9I
VE1MVW5rbm93bkVsZW1lbnQuaWRsIFwKICAgICBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsIFwK
ICAgICBodG1sL0ltYWdlRGF0YS5pZGwgXAorICAgIGh0bWwvTWVkaWFDb250cm9sbGVyLmlkbCBc
CiAgICAgaHRtbC9NZWRpYUVycm9yLmlkbCBcCiAgICAgaHRtbC9UZXh0TWV0cmljcy5pZGwgXAog
ICAgIGh0bWwvVGltZVJhbmdlcy5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggNmNiYjA2ZDg2OTI0ZWU1Nzk0ZjZjY2MxZjY5N2NiY2FiMDQ0NjU3Zi4uNDUzNjhlOTg4ZmQx
N2QyNGIxMGUxMTE1ZDAxMDNjZWJhMGFjZWM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0zNTksNiArMzU5LDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTTG9jYWxNZWRpYVN0cmVhbS5oIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTTG9jYXRpb24uY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTG9j
YXRpb24uaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhQ29udHJvbGxlci5jcHAg
XAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUNvbnRyb2xsZXIuaCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhRXJyb3IuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTTWVkaWFFcnJvci5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFMaXN0
LmNwcCBcCkBAIC0xODc2LDYgKzE4NzgsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvTGlua1JlbEF0dHJpYnV0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1s
L0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRl
eHRUcmFjay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFEb2N1bWVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1
bWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpp
bmRleCBhOGNkZGRiMDY0YmNjMjgwNTMzYTE0MWRmOWNhODNkY2Q5ZjI1OWUyLi5kZmVkOWVhMzFh
YTliNGZhY2U4MDc2OTIyZGQ2NzVhNjAxOWFiNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTE5OCw2ICsx
OTgsNyBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1l
bnRDb25zdHJ1Y3Rvci5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW5w
dXRFbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxM
aW5rRWxlbWVudEN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
TWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxPdXRwdXRFbGVtZW50Q3VzdG9tLmNwcCBcCkBAIC0zMDksNiArMzEw
LDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0
b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNw
cCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCBcCisg
ICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgXAogICAgICAg
ICBiaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTSFRNTE91dHB1dEVsZW1lbnRDdXN0b20uY3BwIFwKQEAgLTEwMjUsNiArMTAy
Nyw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL3RleHQvTG9jYWxpemVkRGF0ZU5vbmUu
Y3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L0xvY2FsaXplZE51bWJlck5vbmUuY3BwIFwKICAgICBw
bGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHAgXAorICAgIHBsYXRmb3JtL0Nsb2NrLmNw
cCBcCisgICAgcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmNwcCBcCiAgICAgcGxhdGZvcm0vQ29udGVu
dFR5cGUuY3BwIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAgXAogICAgIHBs
YXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBcCkBAIC0xMDM1LDcgKzEwMzksNiBAQCBTT1VSQ0VT
ICs9IFwKICAgICBwbGF0Zm9ybS9GaWxlSWNvbkxvYWRlci5jcHAgXAogICAgIHBsYXRmb3JtL0Zp
bGVTdHJlYW0uY3BwIFwKICAgICBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcCBcCi0gICAgcGxhdGZv
cm0vQ2xvY2tHZW5lcmljLmNwcCBcCiAgICAgcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNw
cCBcCiAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvSW1hZ2VGcmFtZVF0LmNwcCBcCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmNwcCBcCkBAIC0xODcwLDYgKzE4
NzMsNyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL0xhYmVsc05vZGVMaXN0LmggXAogICAgIGh0
bWwvTGlua1JlbEF0dHJpYnV0ZS5oIFwKICAgICBodG1sL0xvYWRhYmxlVGV4dFRyYWNrLmggXAor
ICAgIGh0bWwvTWVkaWFDb250cm9sbGVyLmggXAogICAgIGh0bWwvTWVkaWFEb2N1bWVudC5oIFwK
ICAgICBodG1sL01pY3JvRGF0YUl0ZW1WYWx1ZS5oIFwKICAgICBodG1sL1BsdWdpbkRvY3VtZW50
LmggXApAQCAtMjA1Nyw2ICsyMDYxLDggQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vYW5p
bWF0aW9uL0FuaW1hdGlvbkxpc3QuaCBcCiAgICAgcGxhdGZvcm0vQXJlbmEuaCBcCiAgICAgcGxh
dGZvcm0vQXN5bmNGaWxlU3RyZWFtLmggXAorICAgIHBsYXRmb3JtL0Nsb2NrLmggXAorICAgIHBs
YXRmb3JtL0Nsb2NrR2VuZXJpYy5oIFwKICAgICBwbGF0Zm9ybS9Db250ZW50VHlwZS5oIFwKICAg
ICBwbGF0Zm9ybS9Db250ZXh0TWVudS5oIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGll
ci5oIFwKQEAgLTIwNzUsNyArMjA4MSw2IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL21v
Y2svR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oIFwKICAgICBwbGF0Zm9ybS9tb2NrL1NwZWVjaElu
cHV0Q2xpZW50TW9jay5oIFwKICAgICBwbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5o
IFwKLSAgICBwbGF0Zm9ybS9DbG9ja0dlbmVyaWMuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmggXApAQCAtMzA5MCw2ICszMDk1LDcgQEAg
Y29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPPTEpIHsKICAgICAgICAgaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBcCiAgICAgICAgIGh0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwIFwKICAg
ICAgICAgaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBcCisgICAgICAgIGh0bWwvTWVkaWFDb250
cm9sbGVyLmNwcCBcCiAgICAgICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cCBcCiAgICAgICAgIGh0bWwvVGltZVJhbmdlcy5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDQ4MjZjNWE1ODg0ZGRk
OTFhOWQ2YmQ0OWFkYzExMmU4NDU4YTUxNTIuLjc5NWViY2I2ODJmOWYyNjI1ZDIwNThmMWEwZDM4
ZWVjZGJmNTdiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEzMzIsNiArMTMzMiw3IEBACiAgICAg
ICAgICAgICAnaHRtbC9IVE1MVW5rbm93bkVsZW1lbnQuaWRsJywKICAgICAgICAgICAgICdodG1s
L0hUTUxWaWRlb0VsZW1lbnQuaWRsJywKICAgICAgICAgICAgICdodG1sL0ltYWdlRGF0YS5pZGwn
LAorICAgICAgICAgICAgJ2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbCcsCiAgICAgICAgICAgICAn
aHRtbC9NZWRpYUVycm9yLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9UZXh0TWV0cmljcy5pZGwn
LAogICAgICAgICAgICAgJ2h0bWwvVGV4dFRyYWNrLmlkbCcsCkBAIC0xODc2LDYgKzE4NzcsNyBA
QAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5oJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxMaW5rRWxlbWVudEN1c3RvbS5jcHAnLAor
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmgnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNw
cCcsCkBAIC0yMjAwLDYgKzIyMDIsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5oJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCcsCisgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25FbGVtZW50Q29uc3Ry
dWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9u
RWxlbWVudENvbnN0cnVjdG9yLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAnLApAQCAtNTU5Nyw2ICs1NjAwLDggQEAK
ICAgICAgICAgICAgICdodG1sL0xpbmtSZWxBdHRyaWJ1dGUuaCcsCiAgICAgICAgICAgICAnaHRt
bC9Mb2FkYWJsZVRleHRUcmFjay5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvTG9hZGFibGVUZXh0
VHJhY2suaCcsCisgICAgICAgICAgICAnaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwJywKKyAgICAg
ICAgICAgICdodG1sL01lZGlhQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdodG1sL01lZGlh
RG9jdW1lbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL01lZGlhRG9jdW1lbnQuaCcsCiAgICAg
ICAgICAgICAnaHRtbC9NZWRpYUVycm9yLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBhZGRmYTI0ZWEyODg3YzFlMjY4YzlhMjNmMGYzNTAy
YmQ0NTU5N2U1Li5jOWM5MWQ0YzFkMDdhMGFlMjMyOTJjMzM5NzgwZDUyNmY5YmJjOWQxIDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjYyNjIs
NiArMjYyNjIsMjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccGxhdGZvcm1cQ2xvY2suY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxDbG9jay5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxDbG9ja0dlbmVyaWMu
Y3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxDbG9ja0dlbmVyaWMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cQ29udGVudFR5cGUuY3BwIgogCQkJCT4KIAkJCTwv
RmlsZT4KQEAgLTU3NjA2LDYgKzU3NjIyLDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTWVkaWFDb250cm9sbGVyLmNwcCIKKwkJCQk+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxNZWRpYUNv
bnRyb2xsZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5caHRtbFxNZWRpYURvY3VtZW50LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmNi
ZjgxYzQ3Yjg3ZTJhYjFjOTk5ODk3ZGY1ZDFjZDQwZTFkNDQwOS4uZDU3YzYzNDUzOGM2MTE1NzRh
ODg3ZTZiMzQ5MWU0M2FiM2EwZTQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTcxMywxNyArNTcxMywyMiBAQAogCQlDRDBE
QkZFRTE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53
YXYgaW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0QwREJFMEQxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9U
MzQ1X1AzMTUud2F2ICovOyB9OwogCQlDRDBEQkZFRjE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0Nv
bXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXYgaW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwREJFMEUxNDIyNzU5NTAwMjgwMjYz
IC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMzAud2F2ICovOyB9OwogCQlDRDBEQkZG
MDE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXYg
aW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0QwREJFMEYxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1
X1AzNDUud2F2ICovOyB9OworCQlDRDI3RjZFNTE0NTc2ODVBMDA3ODIwN0QgLyogSlNNZWRpYUNv
bnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLzsg
fTsKKwkJQ0QyN0Y2RTcxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFNjE0NTc3
MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0Q4MjAzMEExMzk1
QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzA2MTM5NUFCNkEwMEY5
NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q4MjAzMEIxMzk1QUI2QTAwRjk1NkM2
IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxB
R1MgPSAiLVduby11bmRlZiI7IH07IH07CiAJCUNEODIwMzBDMTM5NUFCNkEwMEY5NTZDNiAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwODEzOTVBQjZBMDBGOTU2QzYgLyog
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEODIwMzBEMTM5NUFCNkEwMEY5NTZD
NiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAzMDkxMzk1QUI2QTAwRjk1
NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gKi87IH07CiAJ
CUNEODIwMzEwMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBFMTM5NUFDRTcw
MEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAqLzsgfTsKIAkJQ0Q4MjAzMTExMzk1QUNF
NzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJX
aW5kb3dBbmltYXRpb24ubW0gKi87IH07CisJCUNERDUyNUQ3MTQ1QjZERDAwMDhEMjA0RCAvKiBK
U0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpTSFRNTE1lZGlh
RWxlbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCUNERUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQ
bGF0Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAg
Ki87IH07CiAJCUNERUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MzIxNDYw
QUUyOTAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5jcHAgKi87IH07CiAJCUNERUE3NjM1MTQ2MEI3
MUEwMDhCMzFGMSAvKiBDbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREVBNzYzMzE0NjBCNDYyMDA4QjMxRjEgLyogQ2xvY2suY3BwICovOyB9
OwogCQlDREVBN0M4NDEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTdDODIxMjc2MjMw
NDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uaCAqLzsgfTsKIAkJQ0RFQTdDODUxMjc2MjMw
NDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTdDODMxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRl
ckZ1bGxTY3JlZW4uY3BwICovOyB9OworCQlDREY2NUNDODE0NUIxRTc1MDBDNEM3QUEgLyogTWVk
aWFDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDI3RjZFNDE0NTc2Nzg3MDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RGNjVDQ0ExNDVC
NDQ4ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQzkxNDVCNDNBNzAwQzRDN0FB
IC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMDJGMEM0MTFFODNBREQwMEM2Njg0QSAvKiBTY3Jp
cHRDb250cm9sbGVyQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0UwMkYwQzMxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Uw
NTdGQTUxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBMzEyMjA3
MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0Uw
NTdGQTYxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTQxMjIwNzMx
MTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzAyNCw2ICsxMzAyOSwxMSBAQAog
CQlDRDBEQkUwRDE0MjI3NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVf
UDMxNS53YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBhdWRpby53YXY7IG5hbWUgPSBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1Lndhdjsg
cGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9JUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0
NV9QMzE1Lndhdjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlDRDBEQkUwRTE0MjI3
NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXYgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5h
bWUgPSBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzMwLndhdjsgcGF0aCA9IHBsYXRmb3Jt
L2F1ZGlvL3Jlc291cmNlcy9JUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzMwLndhdjsgc291
cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlDRDBEQkUwRjE0MjI3NTk1MDAyODAyNjMgLyog
SVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBJUkNfQ29tcG9z
aXRlX0NfUjAxOTVfVDM0NV9QMzQ1LndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNl
cy9JUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzQ1Lndhdjsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OworCQlDRDI3RjZFMDE0NTc1QzFCMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVy
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBNZWRpYUNvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDRDI3RjZFMjE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYUNvbnRyb2xsZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDI3RjZFMzE0NTc2NzU4MDA3ODIwN0Qg
LyogSlNNZWRpYUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNNZWRpYUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyN0Y2
RTQxNDU3Njc4NzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0QyN0Y2RTYxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xsZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEg
LyogZnVsbHNjcmVlbi5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW4u
Y3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDgyMDMwNjEzOTVBQjZBMDBGOTU2
QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzA3MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzMDMyLDYgKzEzMDQyLDggQEAKIAkJQ0Q4MjAzMEUxMzk1QUNFNzAwRjk1
NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJXaW5kb3dBbmltYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0Q4MjAzMEYxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYldpbmRvd0FuaW1hdGlvbi5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCRDkzQkExMzMzQkQ0QjAwMjU3MEUzIC8q
IGZ1bGxzY3JlZW5RdWlja1RpbWUuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxs
c2NyZWVuUXVpY2tUaW1lLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDRTVD
Q0YxNDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50RmFjdG9yeS5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBFdmVudEZhY3RvcnkuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQ0U1
Q0QwMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudFRhcmdldEZhY3RvcnkuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gRXZlbnRUYXJnZXRGYWN0b3J5LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREVBNzYyQzE0NjA4MjI0MDA4QjMxRjEgLyogQ2xvY2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ0EuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBNzYyRjE0NjA4NEVFMDA4QjMxRjEgLyogUGxh
dGZvcm1DbG9ja0NBLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3Jt
Q2xvY2tDQS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMwNDAsNiArMTMwNTIs
OCBAQAogCQlDREVBNzYzMzE0NjBCNDYyMDA4QjMxRjEgLyogQ2xvY2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDREVBN0M4MjEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJGdWxsU2NyZWVuLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3QzgzMTI3NjIzMDQwMEI4NDZERCAvKiBS
ZW5kZXJGdWxsU2NyZWVuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlckZ1bGxTY3JlZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY2
NUNDOTE0NUI0M0E3MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY2NUNDQzE0NUI2QUZFMDBDNEM3QUEgLyog
SlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVy
QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRDb250cm9sbGVy
QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTA1N0ZBMzEyMjA3MzExMDBB
NDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDU3RkE0MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NzM4MCw2ICsxNzM5NCwxMCBAQAogCQkJCUU0NDYxM0EwMENENjMzMTAwMEZBREE3NSAvKiBWb2lk
Q2FsbGJhY2suaWRsICovLAogCQkJCUY1NUIzREFCMTI1MUYxMkQwMDNFRjI2OSAvKiBXZWVrSW5w
dXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0RBQzEyNTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0
VHlwZS5oICovLAorCQkJCUNEMjdGNkUwMTQ1NzVDMUIwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xs
ZXIuaWRsICovLAorCQkJCUNEMjdGNkU0MTQ1NzY3ODcwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xs
ZXIuaCAqLywKKwkJCQlDRDI3RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVy
LmNwcCAqLywKKwkJCQlDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVy
SW50ZXJmYWNlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGh0bWw7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMTc2MTMsNiArMTc2MzEsOCBAQAogCQlBODNCNzkwODBDQ0FGRjJCMDAw
QjA4MjUgLyogSFRNTCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJQ0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAq
LywKKwkJCQlDRDI3RjZFMzE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuaCAq
LywKIAkJCQk0OUVFQ0VGMjEwNTA3MEM0MDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlci5jcHAgKi8s
CiAJCQkJNDlFRUNFRjMxMDUwNzBDNDAwMDk5RkFCIC8qIEpTQXJyYXlCdWZmZXIuaCAqLywKIAkJ
CQk0OUVFQ0YxOTEwNTA3MkYzMDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlclZpZXcuY3BwICovLApA
QCAtMTk2MzUsNiArMTk2NTUsNyBAQAogCQkJCUJDQzQzODc3MEU4ODZDQzcwMDUzM0RENSAvKiBK
U0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUUxQUQxNDIyMTI5NUVBN0YwMEFD
QTk4OSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uaCAqLywKIAkJCQlFMUFEMTM5QTEyOTVE
OTI2MDBBQ0E5ODkgLyogSlNIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwICovLAorCQkJCUNERjY1
Q0NDMTQ1QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwICovLAog
CQkJCUJDMzA1Q0EzMEMwNzgxQkIwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9t
LmNwcCAqLywKIAkJCQlFMUFEMTQyNDEyOTVFQTk1MDBBQ0E5ODkgLyogSlNIVE1MT2JqZWN0RWxl
bWVudEN1c3RvbS5oICovLAogCQkJCTQ0OEFEMjdBMEE0ODEzNzkwMDIzRDE3OSAvKiBKU0hUTUxP
cHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgKi8sCkBAIC0yMDk0OSw2ICsyMDk3MCw4IEBACiAJ
CUY1MjNEMzI0MDJERTQ0NzgwMTg2MzVDQSAvKiBkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNEQ0U1Q0NGMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVu
dEZhY3RvcnkuaW4gKi8sCisJCQkJQ0RDRTVDRDAxNDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50VGFy
Z2V0RmFjdG9yeS5pbiAqLywKIAkJCQlFMUM0REU2RDBFQTc1QzY1MDAyM0NDRDYgLyogQWN0aXZl
RE9NT2JqZWN0LmNwcCAqLywKIAkJCQlFMUM0REU2ODBFQTc1QzFFMDAyM0NDRDYgLyogQWN0aXZl
RE9NT2JqZWN0LmggKi8sCiAJCQkJQThDNEE3RkMwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuY3Bw
ICovLApAQCAtMjQ2NDQsNiArMjQ2NjcsOCBAQAogCQkJCTk3NkYzNkVCMTQ2ODYyMjUwMDVFOTNC
NCAvKiBTZWN1cml0eUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMzQ0OTZFMTQ2OTQx
QjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzRE
MkRBNTE0NkE1MzVEMDBENTFGOEIgLyogU2VjdXJpdHlQb2xpY3kuaCBpbiBIZWFkZXJzICovLAor
CQkJCUNERjY1Q0M4MTQ1QjFFNzUwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNERjY1Q0NBMTQ1QjQ0ODgwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjc1MDAsNiArMjc1MjUsOSBAQAogCQkJCUNB
RTlGOTBGMTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNERUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0Eu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2MzQxNDYwQjU2RjAwOEIzMUYxIC8qIENsb2Nr
R2VuZXJpYy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDI3RjZFNTE0NTc2ODVBMDA3ODIwN0Qg
LyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QyN0Y2RTcxNDU3
NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlD
REQ1MjVENzE0NUI2REQwMDA4RDIwNEQgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUNERUE3NjM1MTQ2MEI3MUEwMDhCMzFGMSAvKiBDbG9jay5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5NzZGMzZFQTE0Njg2MjI1MDA1RTkzQjQgLyogU2VjdXJpdHlD
b250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcxMzQ0OTZEMTQ2OTQxQjMwMDcyMDMxMiAv
KiBTVkdMZW5ndGhDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAK
aW5kZXggMWEzNTM3ZDEzOGI2NjMxMDY1YmE4NzBmMmJkMWY0NjY3ZGIxZTRiZS4uMDIzNTk0OTJk
Njc1ZTFmYjFhMDllMzQxYjNkZDg0Yjk1ZDIxMTkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCkBA
IC0xMTMsNiArMTEzLDExIEBAIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbFNvdXJj
ZUVsZW1lbnRFbmFibGVkKCkKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7
CiB9CiAKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFDb250cm9sbGVyRW5hYmxl
ZCgpCit7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOworfQorCiBib29s
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhRXJyb3JFbmFibGVkKCkKIHsKICAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDgwMDFi
N2E3MGYzOTFhNTU1ZmVjYzYwNjM0ZjBkZDdhMGY3NmEzZDYuLmMzYTljNjAyZWQwN2ZlZDk1ODIz
NmEwZjJjYzRmMzE1NDk2MTA1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC05NCw2ICs5NCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBodG1sQXVkaW9FbGVtZW50RW5hYmxlZCgpOwogICAg
IHN0YXRpYyBib29sIGh0bWxWaWRlb0VsZW1lbnRFbmFibGVkKCk7CiAgICAgc3RhdGljIGJvb2wg
aHRtbFNvdXJjZUVsZW1lbnRFbmFibGVkKCk7CisgICAgc3RhdGljIGJvb2wgbWVkaWFDb250cm9s
bGVyRW5hYmxlZCgpOwogICAgIHN0YXRpYyBib29sIG1lZGlhRXJyb3JFbmFibGVkKCk7CiAgICAg
c3RhdGljIGJvb2wgdGltZVJhbmdlc0VuYWJsZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggMDAwYzViZmE3
ZjQzNDk3MWZiN2Y0MTFjMDVkMzFiZjZjZDNhYzUxYy4uY2ZkZDYyYjU5NzgwYzAxMmI1NjBiZDEw
Njc2YzRkN2YyN2E4OWIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC05Miw2ICs5Miw3IEBACiAjaW5jbHVkZSAiSlNIVE1M
RnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxJbnB1dEVsZW1lbnRD
dXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCIKKyNpbmNs
dWRlICJKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTE9iamVj
dEVsZW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3Vz
dG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxPdXRwdXRFbGVtZW50Q3VzdG9tLmNwcCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0
b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU5ZWU2ZWZiMmY3MmExNjRkMTgwNjcxYjVlODk1Y2ZlZjZjZmEy
ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxN
ZWRpYUVsZW1lbnRDdXN0b20uY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgRU5B
QkxFKFZJREVPKQorCisjaW5jbHVkZSAiSlNIVE1MTWVkaWFFbGVtZW50LmgiCisKKyNpbmNsdWRl
ICJKU01lZGlhQ29udHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK3ZvaWQgSlNIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNvbnRyb2xs
ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBp
bXAgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4oaW1wbCgpKTsKKyAgICAvLyBPbiBz
ZXR0aW5nLCBpdCBtdXN0IGZpcnN0IHJlbW92ZSB0aGUgZWxlbWVudCdzIG1lZGlhZ3JvdXAgYXR0
cmlidXRlLCBpZiBhbnksIAorICAgIGltcC0+c2V0TWVkaWFHcm91cChTdHJpbmcoKSk7CisgICAg
Ly8gYW5kIHRoZW4gc2V0IHRoZSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIgdG8gdGhlIGdpdmVu
IHZhbHVlLgorICAgIGltcC0+c2V0TWVkaWFDb250cm9sbGVyKHRvTWVkaWFDb250cm9sbGVyKHZh
bHVlKSk7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xODUwZjkwY2Y4YzQwZDI5MTE0OGUwMjhlNDk2NDBkMzA4N2VjMjJlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxl
bWVudEN1c3RvbS5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShW
SURFTykKKworI2luY2x1ZGUgIlY4SFRNTE1lZGlhRWxlbWVudC5oIgorCisjaW5jbHVkZSAiVjhN
ZWRpYUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordm9pZCBWOEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhQ29udHJvbGxlckFjY2Vzc29y
U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRP
TS5IVE1MTWVkaWFFbGVtZW50Lm1lZGlhQ29udHJvbGxlci5fc2V0Iik7CisgICAgSFRNTE1lZGlh
RWxlbWVudCogaW1wID0gVjhIVE1MTWVkaWFFbGVtZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKKyAgICBNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSAwOworICAgIGlmIChWOE1lZGlh
Q29udHJvbGxlcjo6SGFzSW5zdGFuY2UodmFsdWUpKQorICAgICAgICBjb250cm9sbGVyID0gVjhN
ZWRpYUNvbnRyb2xsZXI6OnRvTmF0aXZlKHZhbHVlLT5Ub09iamVjdCgpKTsKKyAgICAKKyAgICBp
ZiAoIWNvbnRyb2xsZXIpIHsKKyAgICAgICAgdGhyb3dFcnJvcigiVmFsdWUgaXMgbm90IG9mIHR5
cGUgTWVkaWFDb250cm9sbGVyIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbXAt
PnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKK30KKworfQorCisjZW5kaWYKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCBjNmYxZjNkNDQzYjg1YjZmNjQyMGNlZWM5NGJlZmIy
Mjc4NjJkNDQ2Li5iYWYwZWZjODlkNGFkZWFhYjMxYzcyMzMwZjhkMTVkZTE5ZDk4OGUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgY2xhc3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q7CiAgICAgY2xhc3MgSmF2YVNj
cmlwdEF1ZGlvTm9kZTsKICAgICBjbGFzcyBMb2NhbE1lZGlhU3RyZWFtOworICAgIGNsYXNzIE1l
ZGlhQ29udHJvbGxlcjsKICAgICBjbGFzcyBNZWRpYVN0cmVhbTsKICAgICBjbGFzcyBNZXNzYWdl
UG9ydDsKICAgICBjbGFzcyBOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4KaW5kZXggNmJkYjJlMjFjYTk2YjNlMTBkM2JlMWM3MWVmNzMwZDI3ZjAwZDkxZC4uMmEz
ODkwMzU3YmFmOWU5NjZhN2YxMzcxNGQ2MTBlZjdkZTEwODRhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC0xMyw2ICsxMyw3IEBAIElEQlRyYW5zYWN0aW9u
IGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IGNv
bmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIEphdmFTY3JpcHRBdWRpb05vZGUgY29uZGl0aW9u
YWw9V0VCX0FVRElPCiBMb2NhbE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQor
TWVkaWFDb250cm9sbGVyIGNvbmRpdGlvbmFsPVZJREVPCiBNZWRpYVN0cmVhbSBjb25kaXRpb25h
bD1NRURJQV9TVFJFQU0KIE1lc3NhZ2VQb3J0CiBOb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IGYxZTM1NGI2MzFmNDliYTNhYzEwMWU1NTEzZDI3NWFj
NWQyZDA5ODIuLmFlNWZiNzFjZWVlODY0MDk4MzZmZTJkNTAxZWMzZmE5OTBiYTM3NWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBAIC0xNDgsNiArMTQ4LDcg
QEAgbWF4CiBtYXhsZW5ndGgKIG1heXNjcmlwdAogbWVkaWEKK21lZGlhZ3JvdXAKIG1ldGhvZAog
bWluCiBtdWx0aXBsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggYzkwNjVmNjkxYTljMGNhZTllNmVmNjQzMmI4MTdjZmMyYmQ3OTcwZi4uNGUzY2YxMjMyNzgx
NGU2N2JhOWEyMzU2MzRmMzJiZDI3M2JiMjFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiSFRNTFNvdXJjZUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJv
bHMuaCIKICNpbmNsdWRlICJNZWRpYURvY3VtZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFFcnJvci5o
IgpAQCAtMjI4LDYgKzIyOSw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50
KCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLnNpemUoKTsgKytp
KQogICAgICAgICBtX3RleHRUcmFja3NbaV0tPnNldENsaWVudCgwKTsKICNlbmRpZgorCisgICAg
aWYgKG1fbWVkaWFDb250cm9sbGVyKQorICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+cmVtb3Zl
TWVkaWFFbGVtZW50KHRoaXMpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCkKQEAgLTI5NCw3ICsyOTgsOSBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgaWYg
KCFhdXRvcGxheSgpICYmIG1fcGxheWVyKQogICAgICAgICAgICAgbV9wbGF5ZXItPnNldFByZWxv
YWQobV9wcmVsb2FkKTsKIAotICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25hYm9ydEF0dHIp
CisgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBtZWRpYWdyb3VwQXR0cikKKyAgICAgICAgc2V0
TWVkaWFHcm91cChhdHRyLT52YWx1ZSgpKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmFi
b3J0QXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
YWJvcnRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAg
ICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25iZWZvcmVsb2FkQXR0cikKICAgICAgICAgc2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBjcmVhdGVB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKQEAgLTU4NCwxMCArNTkwLDExIEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQoKQogICAgICAgICBtX3NlZWtp
bmcgPSBmYWxzZTsKICAgICAgICAgaW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKICAgICAgICAgc2No
ZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW1wdGllZEV2ZW50KTsKKyAgICAgICAgdXBkYXRlTWVk
aWFDb250cm9sbGVyKCk7CiAgICAgfQogCiAgICAgLy8gNSAtIFNldCB0aGUgcGxheWJhY2tSYXRl
IGF0dHJpYnV0ZSB0byB0aGUgdmFsdWUgb2YgdGhlIGRlZmF1bHRQbGF5YmFja1JhdGUgYXR0cmli
dXRlLgotICAgIHNldFBsYXliYWNrUmF0ZShkZWZhdWx0UGxheWJhY2tSYXRlKCkpOworICAgIHNl
dFBsYXliYWNrUmF0ZShtX21lZGlhQ29udHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5kZWZh
dWx0UGxheWJhY2tSYXRlKCkgOiBkZWZhdWx0UGxheWJhY2tSYXRlKCkpOwogCiAgICAgLy8gNiAt
IFNldCB0aGUgZXJyb3IgYXR0cmlidXRlIHRvIG51bGwgYW5kIHRoZSBhdXRvcGxheWluZyBmbGFn
IHRvIHRydWUuCiAgICAgbV9lcnJvciA9IDA7CkBAIC0xMjI0LDYgKzEyMzEsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3Rh
dGUpCiAgICAgfQogCiAgICAgdXBkYXRlUGxheVN0YXRlKCk7CisgICAgdXBkYXRlTWVkaWFDb250
cm9sbGVyKCk7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQpAQCAtMTUyMyw2ICsxNTMx
LDEwIEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50VGltZShmbG9hdCB0aW1lLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZWMgPSBJ
TlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBzZWVrKHRpbWUs
IGVjKTsKIH0KIApAQCAtMTU3NCwxMyArMTU4NiwxNCBAQCBmbG9hdCBIVE1MTWVkaWFFbGVtZW50
OjpwbGF5YmFja1JhdGUoKSBjb25zdAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFj
a1JhdGUoZmxvYXQgcmF0ZSkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRQbGF5YmFja1JhdGUoJWYpIiwgcmF0ZSk7Ci0KKyAgICAKICAgICBpZiAobV9wbGF5YmFja1Jh
dGUgIT0gcmF0ZSkgewogICAgICAgICBtX3BsYXliYWNrUmF0ZSA9IHJhdGU7CiAgICAgICAgIGlu
dmFsaWRhdGVDYWNoZWRUaW1lKCk7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygp
LnJhdGVjaGFuZ2VFdmVudCk7CiAgICAgfQotICAgIGlmIChtX3BsYXllciAmJiBwb3RlbnRpYWxs
eVBsYXlpbmcoKSAmJiBtX3BsYXllci0+cmF0ZSgpICE9IHJhdGUpCisKKyAgICBpZiAobV9wbGF5
ZXIgJiYgcG90ZW50aWFsbHlQbGF5aW5nKCkgJiYgbV9wbGF5ZXItPnJhdGUoKSAhPSByYXRlICYm
ICFtX21lZGlhQ29udHJvbGxlcikKICAgICAgICAgbV9wbGF5ZXItPnNldFJhdGUocmF0ZSk7CiB9
CiAKQEAgLTE2NzYsNyArMTY4OSwxMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRl
cm5hbCgpCiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgdW51c2VkOwogICAgICAgICBzZWVrKDAsIHVu
dXNlZCk7CiAgICAgfQotICAgIAorCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQorICAgICAg
ICBtX21lZGlhQ29udHJvbGxlci0+YnJpbmdFbGVtZW50VXBUb1NwZWVkKHRoaXMpOworCiAgICAg
aWYgKG1fcGF1c2VkKSB7CiAgICAgICAgIG1fcGF1c2VkID0gZmFsc2U7CiAgICAgICAgIGludmFs
aWRhdGVDYWNoZWRUaW1lKCk7CkBAIC0xNjkwLDYgKzE3MDYsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnBsYXlJbnRlcm5hbCgpCiAgICAgbV9hdXRvcGxheWluZyA9IGZhbHNlOwogCiAgICAg
dXBkYXRlUGxheVN0YXRlKCk7CisgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiB9CiAKIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2UoKQpAQCAtMTg4MSw3ICsxODk4LDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojp0b2dnbGVQbGF5U3RhdGUoKQogICAgIC8vIFdlIGNhbiBzYWZlbHkg
Y2FsbCB0aGUgaW50ZXJuYWwgcGxheS9wYXVzZSBtZXRob2RzLCB3aGljaCBkb24ndCBjaGVjayBy
ZXN0cmljdGlvbnMsIGJlY2F1c2UKICAgICAvLyB0aGlzIG1ldGhvZCBpcyBvbmx5IGNhbGxlZCBm
cm9tIHRoZSBidWlsdC1pbiBtZWRpYSBjb250cm9sbGVyCiAgICAgaWYgKGNhblBsYXkoKSkgewot
ICAgICAgICBzZXRQbGF5YmFja1JhdGUoZGVmYXVsdFBsYXliYWNrUmF0ZSgpKTsKKyAgICAgICAg
c2V0UGxheWJhY2tSYXRlKG1fbWVkaWFDb250cm9sbGVyID8gbV9tZWRpYUNvbnRyb2xsZXItPmRl
ZmF1bHRQbGF5YmFja1JhdGUoKSA6IGRlZmF1bHRQbGF5YmFja1JhdGUoKSk7CiAgICAgICAgIHBs
YXlJbnRlcm5hbCgpOwogICAgIH0gZWxzZSAKICAgICAgICAgcGF1c2VJbnRlcm5hbCgpOwpAQCAt
MjIyOSwyMCArMjI0NiwzMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGlt
ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQogCiAgICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUoKTsK
ICAgICBmbG9hdCBkdXIgPSBkdXJhdGlvbigpOwotICAgIGlmICghaXNuYW4oZHVyKSAmJiBkdXIg
JiYgbm93ID49IGR1cikgewotICAgICAgICBpZiAobG9vcCgpKSB7CisgICAgCisgICAgLy8gV2hl
biB0aGUgY3VycmVudCBwbGF5YmFjayBwb3NpdGlvbiByZWFjaGVzIHRoZSBlbmQgb2YgdGhlIG1l
ZGlhIHJlc291cmNlIHdoZW4gdGhlIGRpcmVjdGlvbiBvZgorICAgIC8vIHBsYXliYWNrIGlzIGZv
cndhcmRzLCB0aGVuIHRoZSB1c2VyIGFnZW50IG11c3QgZm9sbG93IHRoZXNlIHN0ZXBzOgorICAg
IGlmICghaXNuYW4oZHVyKSAmJiBkdXIgJiYgbm93ID49IGR1ciAmJiBtX3BsYXliYWNrUmF0ZSA+
IDApIHsKKyAgICAgICAgLy8gSWYgdGhlIG1lZGlhIGVsZW1lbnQgaGFzIGEgbG9vcCBhdHRyaWJ1
dGUgc3BlY2lmaWVkIGFuZCBkb2VzIG5vdCBoYXZlIGEgY3VycmVudCBtZWRpYSBjb250cm9sbGVy
LAorICAgICAgICBpZiAobG9vcCgpICYmICFtX21lZGlhQ29udHJvbGxlcikgewogICAgICAgICAg
ICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uOwogICAgICAgICAgICAgbV9zZW50RW5k
RXZlbnQgPSBmYWxzZTsKKyAgICAgICAgICAgIC8vICB0aGVuIHNlZWsgdG8gdGhlIGVhcmxpZXN0
IHBvc3NpYmxlIHBvc2l0aW9uIG9mIHRoZSBtZWRpYSByZXNvdXJjZSBhbmQgYWJvcnQgdGhlc2Ug
c3RlcHMuCiAgICAgICAgICAgICBzZWVrKDAsIGlnbm9yZWRFeGNlcHRpb24pOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgaWYgKCFtX3BhdXNlZCkgeworICAgICAgICAgICAgLy8gSWYg
dGhlIG1lZGlhIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhIGN1cnJlbnQgbWVkaWEgY29udHJvbGxl
ciwgYW5kIHRoZSBtZWRpYSBlbGVtZW50CisgICAgICAgICAgICAvLyBoYXMgc3RpbGwgZW5kZWQg
cGxheWJhY2ssIGFuZCB0aGUgZGlyZWN0aW9uIG9mIHBsYXliYWNrIGlzIHN0aWxsIGZvcndhcmRz
LCBhbmQgcGF1c2VkCisgICAgICAgICAgICAvLyBpcyBmYWxzZSwKKyAgICAgICAgICAgIGlmICgh
bV9tZWRpYUNvbnRyb2xsZXIgJiYgIW1fcGF1c2VkKSB7CisgICAgICAgICAgICAgICAgLy8gY2hh
bmdlcyBwYXVzZWQgdG8gdHJ1ZSBhbmQgZmlyZXMgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcGF1c2Ug
YXQgdGhlIG1lZGlhIGVsZW1lbnQuCiAgICAgICAgICAgICAgICAgbV9wYXVzZWQgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQpOwog
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1w
bGUgZXZlbnQgbmFtZWQgZW5kZWQgYXQgdGhlIG1lZGlhIGVsZW1lbnQuCiAgICAgICAgICAgICBp
ZiAoIW1fc2VudEVuZEV2ZW50KSB7CiAgICAgICAgICAgICAgICAgbV9zZW50RW5kRXZlbnQgPSB0
cnVlOwogICAgICAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmVuZGVkRXZl
bnQpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gSWYgdGhlIG1lZGlhIGVsZW1lbnQg
aGFzIGEgY3VycmVudCBtZWRpYSBjb250cm9sbGVyLCB0aGVuIHJlcG9ydCB0aGUgY29udHJvbGxl
ciBzdGF0ZQorICAgICAgICAgICAgLy8gZm9yIHRoZSBtZWRpYSBlbGVtZW50J3MgY3VycmVudCBt
ZWRpYSBjb250cm9sbGVyLgorICAgICAgICAgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgZWxzZQpAQCAtMjQyNiwxMCArMjQ1Niw3IEBAIFBhc3NSZWZQ
dHI8VGltZVJhbmdlcz4gSFRNTE1lZGlhRWxlbWVudDo6cGxheWVkKCkKIAogUGFzc1JlZlB0cjxU
aW1lUmFuZ2VzPiBIVE1MTWVkaWFFbGVtZW50OjpzZWVrYWJsZSgpIGNvbnN0CiB7Ci0gICAgLy8g
RklYTUUgcmVhbCByYW5nZXMgc3VwcG9ydAotICAgIGlmICghbWF4VGltZVNlZWthYmxlKCkpCi0g
ICAgICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gVGltZVJhbmdl
czo6Y3JlYXRlKG1pblRpbWVTZWVrYWJsZSgpLCBtYXhUaW1lU2Vla2FibGUoKSk7CisgICAgcmV0
dXJuIG1fcGxheWVyID8gbV9wbGF5ZXItPnNlZWthYmxlKCkgOiBUaW1lUmFuZ2VzOjpjcmVhdGUo
KTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpwb3RlbnRpYWxseVBsYXlpbmcoKSBjb25z
dApAQCAtMjQzOCw3ICsyNDY1LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpwb3RlbnRpYWxs
eVBsYXlpbmcoKSBjb25zdAogICAgIC8vIHdoZW4gaXQgcmFuIG91dCBvZiBidWZmZXJlZCBkYXRh
LiBBIG1vdmllIGlzIHRoaXMgc3RhdGUgaXMgInBvdGVudGlhbGx5IHBsYXlpbmciLCBtb2R1bG8g
dGhlCiAgICAgLy8gY2hlY2tzIGluIGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpLgogICAgIGJvb2wg
cGF1c2VkVG9CdWZmZXIgPSBtX3JlYWR5U3RhdGVNYXhpbXVtID49IEhBVkVfRlVUVVJFX0RBVEEg
JiYgbV9yZWFkeVN0YXRlIDwgSEFWRV9GVVRVUkVfREFUQTsKLSAgICByZXR1cm4gKHBhdXNlZFRv
QnVmZmVyIHx8IG1fcmVhZHlTdGF0ZSA+PSBIQVZFX0ZVVFVSRV9EQVRBKSAmJiBjb3VsZFBsYXlJ
ZkVub3VnaERhdGEoKTsKKyAgICByZXR1cm4gKHBhdXNlZFRvQnVmZmVyIHx8IG1fcmVhZHlTdGF0
ZSA+PSBIQVZFX0ZVVFVSRV9EQVRBKSAmJiBjb3VsZFBsYXlJZkVub3VnaERhdGEoKSAmJiAhaXNC
bG9ja2VkT25NZWRpYUNvbnRyb2xsZXIoKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpj
b3VsZFBsYXlJZkVub3VnaERhdGEoKSBjb25zdApAQCAtMjQ2MCwxMCArMjQ4NywxMSBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OmVuZGVkUGxheWJhY2soKSBjb25zdAogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAvLyBhbmQgdGhlIGN1cnJlbnQgcGxheWJhY2sgcG9zaXRpb24gaXMgdGhl
IGVuZCBvZiB0aGUgbWVkaWEgcmVzb3VyY2UgYW5kIHRoZSBkaXJlY3Rpb24KLSAgICAvLyBvZiBw
bGF5YmFjayBpcyBmb3J3YXJkcyBhbmQgdGhlIG1lZGlhIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBh
IGxvb3AgYXR0cmlidXRlIHNwZWNpZmllZCwKKyAgICAvLyBvZiBwbGF5YmFjayBpcyBmb3J3YXJk
cywgRWl0aGVyIHRoZSBtZWRpYSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBsb29wIGF0dHJpYnV0
ZSBzcGVjaWZpZWQsCisgICAgLy8gb3IgdGhlIG1lZGlhIGVsZW1lbnQgaGFzIGEgY3VycmVudCBt
ZWRpYSBjb250cm9sbGVyLgogICAgIGZsb2F0IG5vdyA9IGN1cnJlbnRUaW1lKCk7CiAgICAgaWYg
KG1fcGxheWJhY2tSYXRlID4gMCkKLSAgICAgICAgcmV0dXJuIGR1ciA+IDAgJiYgbm93ID49IGR1
ciAmJiAhbG9vcCgpOworICAgICAgICByZXR1cm4gZHVyID4gMCAmJiBub3cgPj0gZHVyICYmICgh
bG9vcCgpIHx8IG1fbWVkaWFDb250cm9sbGVyKTsKIAogICAgIC8vIG9yIHRoZSBjdXJyZW50IHBs
YXliYWNrIHBvc2l0aW9uIGlzIHRoZSBlYXJsaWVzdCBwb3NzaWJsZSBwb3NpdGlvbiBhbmQgdGhl
IGRpcmVjdGlvbiAKICAgICAvLyBvZiBwbGF5YmFjayBpcyBiYWNrd2FyZHMKQEAgLTI1MDksOCAr
MjUzNywxNCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSgpCiAgICAgaWYg
KCFwcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpKSB7CiAgICAgICAgIFBhZ2UqIHBhZ2Ug
PSBkb2N1bWVudCgpLT5wYWdlKCk7CiAgICAgICAgIGZsb2F0IHZvbHVtZU11bHRpcGxpZXIgPSBw
YWdlID8gcGFnZS0+bWVkaWFWb2x1bWUoKSA6IDE7Ci0gICAgCi0gICAgICAgIG1fcGxheWVyLT5z
ZXRNdXRlZChtX211dGVkKTsKKyAgICAgICAgYm9vbCBzaG91bGRNdXRlID0gbV9tdXRlZDsKKwor
ICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIHZvbHVtZU11bHRp
cGxpZXIgKj0gbV9tZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgpOworICAgICAgICAgICAgc2hvdWxk
TXV0ZSA9IG1fbWVkaWFDb250cm9sbGVyLT5tdXRlZCgpOworICAgICAgICB9CisKKyAgICAgICAg
bV9wbGF5ZXItPnNldE11dGVkKHNob3VsZE11dGUpOwogICAgICAgICBtX3BsYXllci0+c2V0Vm9s
dW1lKG1fdm9sdW1lICogdm9sdW1lTXVsdGlwbGllcik7CiAgICAgfQogCkBAIC0yNTc3LDExICsy
NjExLDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0YXRlKCkKICAgICAg
ICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKICAgICAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+
cGxheWJhY2tTdG9wcGVkKCk7CiAgICAgfQotICAgIAorCisgICAgdXBkYXRlTWVkaWFDb250cm9s
bGVyKCk7CisKICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRl
RnJvbUVsZW1lbnQoKTsKIH0KLSAgICAKKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQYXVz
ZWRJbnRlcm5hbChib29sIGIpCiB7CiAgICAgbV9wYXVzZWRJbnRlcm5hbCA9IGI7CkBAIC0yNjQx
LDYgKzI2NzcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKCkK
IAogICAgIC8vIFJlc2V0IG1fcmVhZHlTdGF0ZSBzaW5jZSBtX3BsYXllciBpcyBnb25lLgogICAg
IG1fcmVhZHlTdGF0ZSA9IEhBVkVfTk9USElORzsKKyAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIo
KTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpjYW5TdXNwZW5kKCkgY29uc3QKQEAgLTMx
MzMsNiArMzE3MCw3MiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEl0ZW1WYWx1ZVRleHQo
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB9CiAjZW5kaWYKIAorY29u
c3QgU3RyaW5nJiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUdyb3VwKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9tZWRpYUNvbnRyb2xsZXIgPyBtX21lZGlhQ29udHJvbGxlci0+bWVkaWFHcm91cCgp
IDogZW1wdHlTdHJpbmcoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUdy
b3VwKGNvbnN0IFN0cmluZyYgZ3JvdXApCit7CisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyICYm
IG1fbWVkaWFDb250cm9sbGVyLT5tZWRpYUdyb3VwKCkgPT0gZ3JvdXApCisgICAgICAgIHJldHVy
bjsKKworICAgIHNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXI6Om1lZGlhQ29udHJv
bGxlckZvck1lZGlhR3JvdXAoZ3JvdXApKTsKK30KKworTWVkaWFDb250cm9sbGVyKiBIVE1MTWVk
aWFFbGVtZW50OjptZWRpYUNvbnRyb2xsZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlh
Q29udHJvbGxlci5nZXQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNv
bnRyb2xsZXIoUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IGNvbnRyb2xsZXIpCit7CisgICAg
aWYgKG1fbWVkaWFDb250cm9sbGVyKQorICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+cmVtb3Zl
TWVkaWFFbGVtZW50KHRoaXMpOworCisgICAgbV9tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVy
OworCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQorICAgICAgICBtX21lZGlhQ29udHJvbGxl
ci0+YWRkTWVkaWFFbGVtZW50KHRoaXMpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVw
ZGF0ZU1lZGlhQ29udHJvbGxlcigpCit7CisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQorICAg
ICAgICBtX21lZGlhQ29udHJvbGxlci0+cmVwb3J0Q29udHJvbGxlclN0YXRlKCk7Cit9CisKK2Jv
b2wgSFRNTE1lZGlhRWxlbWVudDo6aXNCbG9ja2VkKCkgY29uc3QKK3sKKyAgICAvLyBBIG1lZGlh
IGVsZW1lbnQgaXMgYSBibG9ja2VkIG1lZGlhIGVsZW1lbnQgaWYgaXRzIHJlYWR5U3RhdGUgYXR0
cmlidXRlIGlzIGluIHRoZQorICAgIC8vIEhBVkVfTk9USElORyBzdGF0ZSwgdGhlIEhBVkVfTUVU
QURBVEEgc3RhdGUsIG9yIHRoZSBIQVZFX0NVUlJFTlRfREFUQSBzdGF0ZSwKKyAgICBpZiAobV9y
ZWFkeVN0YXRlIDw9IEhBVkVfQ1VSUkVOVF9EQVRBKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIC8vIG9yIGlmIHRoZSBlbGVtZW50IGhhcyBwYXVzZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24u
CisgICAgcmV0dXJuIHBhdXNlZEZvclVzZXJJbnRlcmFjdGlvbigpOworfQorCitib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6OmlzQmxvY2tlZE9uTWVkaWFDb250cm9sbGVyKCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fbWVkaWFDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBB
IG1lZGlhIGVsZW1lbnQgaXMgYmxvY2tlZCBvbiBpdHMgbWVkaWEgY29udHJvbGxlciBpZiB0aGUg
TWVkaWFDb250cm9sbGVyIGlzIGEgYmxvY2tlZCAKKyAgICAvLyBtZWRpYSBjb250cm9sbGVyLAor
ICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aXNCbG9ja2VkKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgLy8gb3IgaWYgaXRzIG1lZGlhIGNvbnRyb2xsZXIgcG9zaXRpb24gaXMgZWl0
aGVyIGJlZm9yZSB0aGUgbWVkaWEgcmVzb3VyY2UncyBlYXJsaWVzdCBwb3NzaWJsZSAKKyAgICAv
LyBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgTWVkaWFDb250cm9sbGVyJ3MgdGltZWxpbmUgb3Ig
YWZ0ZXIgdGhlIGVuZCBvZiB0aGUgbWVkaWEgcmVzb3VyY2UgCisgICAgLy8gcmVsYXRpdmUgdG8g
dGhlIE1lZGlhQ29udHJvbGxlcidzIHRpbWVsaW5lLgorICAgIGZsb2F0IG1lZGlhQ29udHJvbGxl
clBvc2l0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CisgICAgaWYgKG1l
ZGlhQ29udHJvbGxlclBvc2l0aW9uIDwgc3RhcnRUaW1lKCkgfHwgbWVkaWFDb250cm9sbGVyUG9z
aXRpb24gPiBzdGFydFRpbWUoKSArIGR1cmF0aW9uKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAppbmRleCAwZDJmOWZjNDllMTAwY2I1MTdiZWYwZDE1MGFjNGY3N2E1
NzVlOWVjLi5mODA5ZTZlZTdmOTkwNzViYjIxMDczY2Y3ZGU2Y2E0YmJkOWY0NTlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVySW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKIAogI2lmIEVOQUJMRShQTFVHSU5f
UFJPWFlfRk9SX1ZJREVPKQpAQCAtNTAsNiArNTEsNyBAQCBjbGFzcyBNZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGU7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEhUTUxTb3VyY2VFbGVtZW50OwogY2xh
c3MgSFRNTFRyYWNrRWxlbWVudDsKK2NsYXNzIE1lZGlhQ29udHJvbGxlcjsKIGNsYXNzIE1lZGlh
Q29udHJvbHM7CiBjbGFzcyBNZWRpYUVycm9yOwogY2xhc3MgS1VSTDsKQEAgLTYzLDcgKzY1LDcg
QEAgY2xhc3MgV2lkZ2V0OwogLy8gQnV0IGl0IGNhbid0IGJlIHVudGlsIHRoZSBDaHJvbWl1bSBX
ZWJNZWRpYVBsYXllckNsaWVudEltcGwgY2xhc3MgaXMgZml4ZWQgc28gaXQKIC8vIG5vIGxvbmdl
ciBkZXBlbmRzIG9uIHR5cGVjYXN0aW5nIGEgTWVkaWFQbGF5ZXJDbGllbnQgdG8gYW4gSFRNTE1l
ZGlhRWxlbWVudC4KIAotY2xhc3MgSFRNTE1lZGlhRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVu
dCwgcHVibGljIE1lZGlhUGxheWVyQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ciwgcHVibGljIEFjdGl2ZURPTU9iamVjdAorY2xhc3MgSFRNTE1lZGlhRWxlbWVudCA6IHB1Ymxp
YyBIVE1MRWxlbWVudCwgcHVibGljIE1lZGlhUGxheWVyQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIE1lZGlhQ29udHJv
bGxlckludGVyZmFjZQogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICAsIHByaXZhdGUgVGV4
dFRyYWNrQ2xpZW50CiAjZW5kaWYKQEAgLTEwNSw3ICsxMDcsNyBAQCBwdWJsaWM6CiAKICAgICBl
bnVtIE5ldHdvcmtTdGF0ZSB7IE5FVFdPUktfRU1QVFksIE5FVFdPUktfSURMRSwgTkVUV09SS19M
T0FESU5HLCBORVRXT1JLX05PX1NPVVJDRSB9OwogICAgIE5ldHdvcmtTdGF0ZSBuZXR3b3JrU3Rh
dGUoKSBjb25zdDsKLSAgICAKKwogICAgIFN0cmluZyBwcmVsb2FkKCkgY29uc3Q7ICAgIAogICAg
IHZvaWQgc2V0UHJlbG9hZChjb25zdCBTdHJpbmcmKTsKIApAQCAtMTE0LDcgKzExNiw2IEBAIHB1
YmxpYzoKICAgICBTdHJpbmcgY2FuUGxheVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29u
c3Q7CiAKIC8vIHJlYWR5IHN0YXRlCi0gICAgZW51bSBSZWFkeVN0YXRlIHsgSEFWRV9OT1RISU5H
LCBIQVZFX01FVEFEQVRBLCBIQVZFX0NVUlJFTlRfREFUQSwgSEFWRV9GVVRVUkVfREFUQSwgSEFW
RV9FTk9VR0hfREFUQSB9OwogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwogICAg
IGJvb2wgc2Vla2luZygpIGNvbnN0OwogCkBAIC0yMzAsNiArMjMxLDEyIEBAIHB1YmxpYzoKICAg
ICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCk7CiAjZW5kaWYKIAor
ICAgIGNvbnN0IFN0cmluZyYgbWVkaWFHcm91cCgpIGNvbnN0OworICAgIHZvaWQgc2V0TWVkaWFH
cm91cChjb25zdCBTdHJpbmcmKTsKKworICAgIE1lZGlhQ29udHJvbGxlciogbWVkaWFDb250cm9s
bGVyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNZWRpYUNvbnRyb2xsZXIoUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xsZXI+KTsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxNZWRpYUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+SFRNTE1lZGlhRWxlbWVu
dCgpOwpAQCAtMzk0LDYgKzQwMSw4IEBAIHByaXZhdGU6CiAgICAgLy8gUGF1c2VzIHBsYXliYWNr
IHdpdGhvdXQgY2hhbmdpbmcgYW55IHN0YXRlcyBvciBnZW5lcmF0aW5nIGV2ZW50cwogICAgIHZv
aWQgc2V0UGF1c2VkSW50ZXJuYWwoYm9vbCk7CiAKKyAgICB2b2lkIHNldFBsYXliYWNrUmF0ZUlu
dGVybmFsKGZsb2F0KTsKKwogICAgIHZpcnR1YWwgdm9pZCBtZWRpYUNhblN0YXJ0KCk7CiAKICAg
ICB2b2lkIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KGJvb2wpOwpAQCAtNDEyLDYgKzQyMSwxMiBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRJdGVtVmFsdWVUZXh0KGNvbnN0IFN0cmlu
ZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgogCisgICAgdm9pZCB1cGRhdGVNZWRpYUNvbnRy
b2xsZXIoKTsKKyAgICBib29sIGlzQmxvY2tlZCgpIGNvbnN0OworICAgIGJvb2wgaXNCbG9ja2Vk
T25NZWRpYUNvbnRyb2xsZXIoKSBjb25zdDsKKyAgICBib29sIGhhc1NvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmV0d29ya1N0YXRlICE9IE5FVFdPUktfRU1QVFkgfHwgbV9uZXR3b3JrU3RhdGUg
IT0gTkVUV09SS19OT19TT1VSQ0U7IH0KKyAgICBib29sIGlzTGl2ZVN0cmVhbSgpIGNvbnN0IHsg
cmV0dXJuIG1vdmllTG9hZFR5cGUoKSA9PSBNZWRpYVBsYXllcjo6TGl2ZVN0cmVhbTsgfQorCiAg
ICAgVGltZXI8SFRNTE1lZGlhRWxlbWVudD4gbV9sb2FkVGltZXI7CiAgICAgVGltZXI8SFRNTE1l
ZGlhRWxlbWVudD4gbV9hc3luY0V2ZW50VGltZXI7CiAgICAgVGltZXI8SFRNTE1lZGlhRWxlbWVu
dD4gbV9wcm9ncmVzc0V2ZW50VGltZXI7CkBAIC01MTYsNiArNTMxLDkgQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gbV90
ZXh0VHJhY2tzOwogI2VuZGlmCisKKyAgICBmcmllbmQgY2xhc3MgTWVkaWFDb250cm9sbGVyOwor
ICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IG1fbWVkaWFDb250cm9sbGVyOwogfTsKIAogfSAv
L25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKaW5kZXgg
MzMwYWRiYWFkZTcxMDI2OWMyZjJkZTVlZWM1Y2MxZTE2MmIwYzliNS4uNDkyMTBiNjIwMjcyMzcx
ZTQ1YWFiOWZhYjE5MWJmNjEwMDQzY2U2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaWRsCkBAIC0xMTQsNSArMTE0LDggQEAgbW9kdWxlIGh0bWwgewogI2lmIGRlZmlu
ZWQoRU5BQkxFX1ZJREVPX1RSQUNLKSAmJiBFTkFCTEVfVklERU9fVFJBQ0sKICAgICBbRW5hYmxl
ZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBUZXh0VHJhY2sgYWRkVHJhY2soaW4gRE9NU3Ry
aW5nIGtpbmQsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIGxhYmVsLCBpbiBbT3B0aW9uYWxdIERP
TVN0cmluZyBsYW5ndWFnZSk7CiAjZW5kaWYKKworICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCwgQ29u
dmVydE51bGxUb051bGxTdHJpbmcsIENvbnZlcnROdWxsU3RyaW5nVG9OdWxsXSBET01TdHJpbmcg
bWVkaWFHcm91cDsKKyAgICBhdHRyaWJ1dGUgW0N1c3RvbVNldHRlcl0gTWVkaWFDb250cm9sbGVy
IG1lZGlhQ29udHJvbGxlcjsKIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDYzNzJiYjJmMGI5Zjg0NTQyYjg1NGZjYWVkM2ZkNjY0NmI4MmQ5
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVy
LmNwcApAQCAtMCwwICsxLDU5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXIuaCIKKworI2luY2x1
ZGUgIkNsb2NrLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkhUTUxN
ZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCisjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK3R5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIE1lZGlhQ29udHJvbGxlcio+IEdyb3VwQ29udHJvbGxlck1hcDsKK3N0YXRp
YyBHcm91cENvbnRyb2xsZXJNYXAmIG1lZGlhR3JvdXBUb01lZGlhQ29udHJvbGxlck1hcCgpCit7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChHcm91cENvbnRyb2xsZXJNYXAsIG1hcCwgKCkpOwor
ICAgIHJldHVybiBtYXA7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBNZWRpYUNv
bnRyb2xsZXI6Om1lZGlhQ29udHJvbGxlckZvck1lZGlhR3JvdXAoY29uc3QgU3RyaW5nJiBncm91
cCkKK3sKKyAgICBpZiAoZ3JvdXAuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAg
aWYgKGdyb3VwLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoTWVkaWFD
b250cm9sbGVyKiBjb250cm9sbGVyID0gbWVkaWFHcm91cFRvTWVkaWFDb250cm9sbGVyTWFwKCku
Z2V0KGdyb3VwKSkKKyAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXI7CisKKyAgICBSZWZQdHI8TWVk
aWFDb250cm9sbGVyPiBjb250cm9sbGVyID0gY3JlYXRlKCk7CisgICAgY29udHJvbGxlci0+bV9t
ZWRpYUdyb3VwID0gZ3JvdXA7CisgICAgbWVkaWFHcm91cFRvTWVkaWFDb250cm9sbGVyTWFwKCku
c2V0KGdyb3VwLCBjb250cm9sbGVyLmdldCgpKTsKKyAgICByZXR1cm4gY29udHJvbGxlci5yZWxl
YXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBNZWRpYUNvbnRyb2xsZXI6
OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xsZXIoKSk7
Cit9CisKK01lZGlhQ29udHJvbGxlcjo6TWVkaWFDb250cm9sbGVyKCkKKyAgICA6IG1fcGF1c2Vk
KGZhbHNlKQorICAgICwgbV9kZWZhdWx0UGxheWJhY2tSYXRlKDEpCisgICAgLCBtX3ZvbHVtZSgx
KQorICAgICwgbV9tdXRlZChmYWxzZSkKKyAgICAsIG1fcmVhZHlTdGF0ZShIQVZFX05PVEhJTkcp
CisgICAgLCBtX3BsYXliYWNrU3RhdGUoV0FJVElORykKKyAgICAsIG1fYXN5bmNFdmVudFRpbWVy
KHRoaXMsICZNZWRpYUNvbnRyb2xsZXI6OmFzeW5jRXZlbnRUaW1lckZpcmVkKQorICAgICwgbV9j
bG9zZWRDYXB0aW9uc1Zpc2libGUoZmFsc2UpCisgICAgLCBtX2Nsb2NrKENsb2NrOjpjcmVhdGUo
KSkKK3sKK30KKworTWVkaWFDb250cm9sbGVyOjp+TWVkaWFDb250cm9sbGVyKCkKK3sKKyAgICBp
ZiAoIW1fbWVkaWFHcm91cC5pc0VtcHR5KCkpCisgICAgICAgIG1lZGlhR3JvdXBUb01lZGlhQ29u
dHJvbGxlck1hcCgpLnJlbW92ZShtX21lZGlhR3JvdXApOworfQorCit2b2lkIE1lZGlhQ29udHJv
bGxlcjo6YWRkTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAg
QVNTRVJUKGVsZW1lbnQpOworICAgIEFTU0VSVCghbV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKGVs
ZW1lbnQpKTsKKworICAgIG1fbWVkaWFFbGVtZW50cy5hcHBlbmQoZWxlbWVudCk7CisgICAgYnJp
bmdFbGVtZW50VXBUb1NwZWVkKGVsZW1lbnQpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6
cmVtb3ZlTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNT
RVJUKGVsZW1lbnQpOworICAgIEFTU0VSVChtX21lZGlhRWxlbWVudHMuY29udGFpbnMoZWxlbWVu
dCkpOworICAgIG1fbWVkaWFFbGVtZW50cy5yZW1vdmUobV9tZWRpYUVsZW1lbnRzLmZpbmQoZWxl
bWVudCkpOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6Y29udGFpbnNNZWRpYUVsZW1lbnQo
SFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVs
ZW1lbnRzLmNvbnRhaW5zKGVsZW1lbnQpOworfQorCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1l
ZGlhQ29udHJvbGxlcjo6YnVmZmVyZWQoKSBjb25zdAoreworICAgIGlmIChtX21lZGlhRWxlbWVu
dHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisKKyAg
ICAvLyBUaGUgYnVmZmVyZWQgYXR0cmlidXRlIG11c3QgcmV0dXJuIGEgbmV3IHN0YXRpYyBub3Jt
YWxpemVkIFRpbWVSYW5nZXMgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyAKKyAgICAvLyB0aGUgaW50
ZXJzZWN0aW9uIG9mIHRoZSByYW5nZXMgb2YgdGhlIG1lZGlhIHJlc291cmNlcyBvZiB0aGUgc2xh
dmVkIG1lZGlhIGVsZW1lbnRzIHRoYXQgdGhlIAorICAgIC8vIHVzZXIgYWdlbnQgaGFzIGJ1ZmZl
cmVkLCBhdCB0aGUgdGltZSB0aGUgYXR0cmlidXRlIGlzIGV2YWx1YXRlZC4KKyAgICBSZWZQdHI8
VGltZVJhbmdlcz4gYnVmZmVyZWRSYW5nZXMgPSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+YnVm
ZmVyZWQoKTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1l
bnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgYnVmZmVyZWRSYW5nZXMtPmludGVyc2VjdFdp
dGgobV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+YnVmZmVyZWQoKS5nZXQoKSk7CisgICAgcmV0dXJu
IGJ1ZmZlcmVkUmFuZ2VzOworfQorCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhQ29udHJv
bGxlcjo6c2Vla2FibGUoKSBjb25zdAoreworICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisKKyAgICAvLyBUaGUg
c2Vla2FibGUgYXR0cmlidXRlIG11c3QgcmV0dXJuIGEgbmV3IHN0YXRpYyBub3JtYWxpemVkIFRp
bWVSYW5nZXMgb2JqZWN0IHRoYXQgcmVwcmVzZW50cworICAgIC8vIHRoZSBpbnRlcnNlY3Rpb24g
b2YgdGhlIHJhbmdlcyBvZiB0aGUgbWVkaWEgcmVzb3VyY2VzIG9mIHRoZSBzbGF2ZWQgbWVkaWEg
ZWxlbWVudHMgdGhhdCB0aGUKKyAgICAvLyB1c2VyIGFnZW50IGlzIGFibGUgdG8gc2VlayB0bywg
YXQgdGhlIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyBldmFsdWF0ZWQuCisgICAgUmVmUHRyPFRpbWVS
YW5nZXM+IHNlZWthYmxlUmFuZ2VzID0gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPnNlZWthYmxl
KCk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAxOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5z
aXplKCk7ICsraW5kZXgpCisgICAgICAgIHNlZWthYmxlUmFuZ2VzLT5pbnRlcnNlY3RXaXRoKG1f
bWVkaWFFbGVtZW50c1tpbmRleF0tPnNlZWthYmxlKCkuZ2V0KCkpOworICAgIHJldHVybiBzZWVr
YWJsZVJhbmdlczsKK30KKworUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYUNvbnRyb2xsZXI6
OnBsYXllZCgpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKworICAgIC8vIFRoZSBwbGF5ZWQgYXR0cmli
dXRlIG11c3QgcmV0dXJuIGEgbmV3IHN0YXRpYyBub3JtYWxpemVkIFRpbWVSYW5nZXMgb2JqZWN0
IHRoYXQgcmVwcmVzZW50cyAKKyAgICAvLyB0aGUgdW5pb24gb2YgdGhlIHJhbmdlcyBvZiB0aGUg
bWVkaWEgcmVzb3VyY2VzIG9mIHRoZSBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgdGhhdCB0aGUgCisg
ICAgLy8gdXNlciBhZ2VudCBoYXMgc28gZmFyIHJlbmRlcmVkLCBhdCB0aGUgdGltZSB0aGUgYXR0
cmlidXRlIGlzIGV2YWx1YXRlZC4KKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gcGxheWVkUmFuZ2Vz
ID0gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPnBsYXllZCgpOworICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAg
ICBwbGF5ZWRSYW5nZXMtPnVuaW9uV2l0aChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5wbGF5ZWQo
KS5nZXQoKSk7CisgICAgcmV0dXJuIHBsYXllZFJhbmdlczsKK30KKworZmxvYXQgTWVkaWFDb250
cm9sbGVyOjpkdXJhdGlvbigpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IEludmVzdGlnYXRlIGNh
Y2hpbmcgdGhlIG1heGltdW0gZHVyYXRpb24gYW5kIG9ubHkgdXBkYXRpbmcgdGhlIGNhY2hlZCB2
YWx1ZQorICAgIC8vIHdoZW4gdGhlIHNsYXZlZCBtZWRpYSBlbGVtZW50cycgZHVyYXRpb25zIGNo
YW5nZS4KKyAgICBmbG9hdCBtYXhEdXJhdGlvbiA9IDA7CisgICAgZm9yIChzaXplX3QgaW5kZXgg
PSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAg
ZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5kdXJhdGlvbigpOworICAg
ICAgICBpZiAoaXNuYW4oZHVyYXRpb24pKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IG1heER1cmF0aW9uID0gbWF4KG1heER1cmF0aW9uLCBkdXJhdGlvbik7CisgICAgfQorICAgIHJl
dHVybiBtYXhEdXJhdGlvbjsKK30KKworZmxvYXQgTWVkaWFDb250cm9sbGVyOjpjdXJyZW50VGlt
ZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiAwOworICAgIAorICAgIHJldHVybiBtX2Nsb2NrLT5jdXJyZW50VGltZSgpOworfQor
Cit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0Q3VycmVudFRpbWUoZmxvYXQgdGltZSwgRXhjZXB0
aW9uQ29kZSYgY29kZSkKK3sKKyAgICAvLyBXaGVuIHRoZSB1c2VyIGFnZW50IGlzIHRvIHNlZWsg
dGhlIG1lZGlhIGNvbnRyb2xsZXIgdG8gYSBwYXJ0aWN1bGFyIG5ldyBwbGF5YmFjayBwb3NpdGlv
biwgCisgICAgLy8gaXQgbXVzdCBmb2xsb3cgdGhlc2Ugc3RlcHM6CisgICAgLy8gSWYgdGhlIG5l
dyBwbGF5YmFjayBwb3NpdGlvbiBpcyBsZXNzIHRoYW4gemVybywgdGhlbiBzZXQgaXQgdG8gemVy
by4KKyAgICB0aW1lID0gbWF4KDAuMGYsIHRpbWUpOworICAgIAorICAgIC8vIElmIHRoZSBuZXcg
cGxheWJhY2sgcG9zaXRpb24gaXMgZ3JlYXRlciB0aGFuIHRoZSBtZWRpYSBjb250cm9sbGVyIGR1
cmF0aW9uLCB0aGVuIHNldCBpdCAKKyAgICAvLyB0byB0aGUgbWVkaWEgY29udHJvbGxlciBkdXJh
dGlvbi4KKyAgICB0aW1lID0gbWluKHRpbWUsIGR1cmF0aW9uKCkpOworICAgIAorICAgIC8vIFNl
dCB0aGUgbWVkaWEgY29udHJvbGxlciBwb3NpdGlvbiB0byB0aGUgbmV3IHBsYXliYWNrIHBvc2l0
aW9uLgorICAgIG1fY2xvY2stPnNldEN1cnJlbnRUaW1lKHRpbWUpOworICAgIAorICAgIC8vIFNl
ZWsgZWFjaCBzbGF2ZWQgbWVkaWEgZWxlbWVudCB0byB0aGUgbmV3IHBsYXliYWNrIHBvc2l0aW9u
IHJlbGF0aXZlIHRvIHRoZSBtZWRpYSBlbGVtZW50IHRpbWVsaW5lLgorICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAg
ICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5zZWVrKHRpbWUsIGNvZGUpOworfQorCit2b2lk
IE1lZGlhQ29udHJvbGxlcjo6cGxheSgpCit7CisgICAgLy8gV2hlbiB0aGUgcGxheSgpIG1ldGhv
ZCBpcyBpbnZva2VkLCBpZiB0aGUgTWVkaWFDb250cm9sbGVyIGlzIGEgcGF1c2VkIG1lZGlhIGNv
bnRyb2xsZXIsCisgICAgaWYgKCFtX3BhdXNlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
dGhlIHVzZXIgYWdlbnQgbXVzdCBjaGFuZ2UgdGhlIE1lZGlhQ29udHJvbGxlciBpbnRvIGEgcGxh
eWluZyBtZWRpYSBjb250cm9sbGVyLAorICAgIG1fcGF1c2VkID0gZmFsc2U7CisgICAgLy8gcXVl
dWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcGxheSBhdCB0aGUgTWVkaWFD
b250cm9sbGVyLAorICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBsYXlFdmVudCk7Cisg
ICAgLy8gYW5kIHRoZW4gcmVwb3J0IHRoZSBjb250cm9sbGVyIHN0YXRlIG9mIHRoZSBNZWRpYUNv
bnRyb2xsZXIuCisgICAgcmVwb3J0Q29udHJvbGxlclN0YXRlKCk7Cit9CisKK3ZvaWQgTWVkaWFD
b250cm9sbGVyOjpwYXVzZSgpCit7CisgICAgLy8gV2hlbiB0aGUgcGF1c2UoKSBtZXRob2QgaXMg
aW52b2tlZCwgaWYgdGhlIE1lZGlhQ29udHJvbGxlciBpcyBhIHBsYXlpbmcgbWVkaWEgY29udHJv
bGxlciwKKyAgICBpZiAobV9wYXVzZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIHRoZW4g
dGhlIHVzZXIgYWdlbnQgbXVzdCBjaGFuZ2UgdGhlIE1lZGlhQ29udHJvbGxlciBpbnRvIGEgcGF1
c2VkIG1lZGlhIGNvbnRyb2xsZXIsCisgICAgbV9wYXVzZWQgPSB0cnVlOworICAgIC8vIHF1ZXVl
IGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHBhdXNlIGF0IHRoZSBNZWRpYUNv
bnRyb2xsZXIsCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGF1c2VFdmVudCk7Cisg
ICAgLy8gYW5kIHRoZW4gcmVwb3J0IHRoZSBjb250cm9sbGVyIHN0YXRlIG9mIHRoZSBNZWRpYUNv
bnRyb2xsZXIuCisgICAgcmVwb3J0Q29udHJvbGxlclN0YXRlKCk7Cit9CisKK3ZvaWQgTWVkaWFD
b250cm9sbGVyOjpzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUpCit7CisgICAgaWYg
KG1fZGVmYXVsdFBsYXliYWNrUmF0ZSA9PSByYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBUaGUgZGVmYXVsdFBsYXliYWNrUmF0ZSBhdHRyaWJ1dGUsIG9uIHNldHRpbmcsIG11c3Qgc2V0
IHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtZWRpYSBjb250cm9sbGVyCisgICAgLy8gZGVmYXVsdCBw
bGF5YmFjayByYXRlIHRvIHRoZSBuZXcgdmFsdWUsCisgICAgbV9kZWZhdWx0UGxheWJhY2tSYXRl
ID0gcmF0ZTsKKworICAgIC8vIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZl
bnQgbmFtZWQgcmF0ZWNoYW5nZSBhdCB0aGUgTWVkaWFDb250cm9sbGVyLgorICAgIHNjaGVkdWxl
RXZlbnQoZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCk7Cit9CisKK2Zsb2F0IE1lZGlhQ29u
dHJvbGxlcjo6cGxheWJhY2tSYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbG9jay0+cGxh
eVJhdGUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldFBsYXliYWNrUmF0ZShmbG9h
dCByYXRlKQoreworICAgIGlmIChtX2Nsb2NrLT5wbGF5UmF0ZSgpID09IHJhdGUpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIFRoZSBwbGF5YmFja1JhdGUgYXR0cmlidXRlLCBvbiBzZXR0aW5n
LCBtdXN0IHNldCB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbWVkaWEgY29udHJvbGxlciAKKyAgICAv
LyBwbGF5YmFjayByYXRlIHRvIHRoZSBuZXcgdmFsdWUsCisgICAgbV9jbG9jay0+c2V0UGxheVJh
dGUocmF0ZSk7CisKKyAgICAvLyB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2
ZW50IG5hbWVkIHJhdGVjaGFuZ2UgYXQgdGhlIE1lZGlhQ29udHJvbGxlci4KKyAgICBzY2hlZHVs
ZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpOworfQorCit2b2lkIE1lZGlhQ29u
dHJvbGxlcjo6c2V0Vm9sdW1lKGZsb2F0IGxldmVsLCBFeGNlcHRpb25Db2RlJiBjb2RlKQorewor
ICAgIGlmIChtX3ZvbHVtZSA9PSBsZXZlbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSWYg
dGhlIG5ldyB2YWx1ZSBpcyBvdXRzaWRlIHRoZSByYW5nZSAwLjAgdG8gMS4wIGluY2x1c2l2ZSwg
dGhlbiwgb24gc2V0dGluZywgYW4gCisgICAgLy8gSW5kZXhTaXplRXJyb3IgZXhjZXB0aW9uIG11
c3QgYmUgcmFpc2VkIGluc3RlYWQuCisgICAgaWYgKGxldmVsIDwgMCB8fCBsZXZlbCA+IDEpIHsK
KyAgICAgICAgY29kZSA9IElOREVYX1NJWkVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgICAgICAKKyAgICAvLyBUaGUgdm9sdW1lIGF0dHJpYnV0ZSwgb24gc2V0dGluZywgaWYgdGhl
IG5ldyB2YWx1ZSBpcyBpbiB0aGUgcmFuZ2UgMC4wIHRvIDEuMCBpbmNsdXNpdmUsCisgICAgLy8g
bXVzdCBzZXQgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1lZGlhIGNvbnRyb2xsZXIgdm9sdW1lIG11
bHRpcGxpZXIgdG8gdGhlIG5ldyB2YWx1ZQorICAgIG1fdm9sdW1lID0gbGV2ZWw7CisKKyAgICAv
LyBhbmQgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgdm9sdW1lY2hh
bmdlIGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIuCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVz
KCkudm9sdW1lY2hhbmdlRXZlbnQpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRl
eCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVt
ZW50c1tpbmRleF0tPnVwZGF0ZVZvbHVtZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6
c2V0TXV0ZWQoYm9vbCBmbGFnKQoreworICAgIGlmIChtX211dGVkID09IGZsYWcpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIFRoZSBtdXRlZCBhdHRyaWJ1dGUsIG9uIHNldHRpbmcsIG11c3Qg
c2V0IHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtZWRpYSBjb250cm9sbGVyIG11dGUgb3ZlcnJpZGUK
KyAgICAvLyB0byB0aGUgbmV3IHZhbHVlCisgICAgbV9tdXRlZCA9IGZsYWc7CisKKyAgICAvLyBh
bmQgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgdm9sdW1lY2hhbmdl
IGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIuCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCku
dm9sdW1lY2hhbmdlRXZlbnQpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8
IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50
c1tpbmRleF0tPnVwZGF0ZVZvbHVtZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6cmVw
b3J0Q29udHJvbGxlclN0YXRlKCkKK3sKKyAgICB1cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgdXBk
YXRlUGxheWJhY2tTdGF0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlUmVh
ZHlTdGF0ZSgpCit7CisgICAgUmVhZHlTdGF0ZSBvbGRSZWFkeVN0YXRlID0gbV9yZWFkeVN0YXRl
OworICAgIFJlYWR5U3RhdGUgbmV3UmVhZHlTdGF0ZTsKKworICAgIAorICAgIGlmIChtX21lZGlh
RWxlbWVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIg
aGFzIG5vIHNsYXZlZCBtZWRpYSBlbGVtZW50cywgbGV0IG5ldyByZWFkaW5lc3Mgc3RhdGUgYmUg
MC4KKyAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IEhBVkVfTk9USElORzsKKyAgICB9IGVsc2Ugewor
ICAgICAgICAvLyBPdGhlcndpc2UsIGxldCBpdCBoYXZlIHRoZSBsb3dlc3QgdmFsdWUgb2YgdGhl
IHJlYWR5U3RhdGUgSURMIGF0dHJpYnV0ZXMgb2YgYWxsIG9mIGl0cworICAgICAgICAvLyBzbGF2
ZWQgbWVkaWEgZWxlbWVudHMuCisgICAgICAgIG5ld1JlYWR5U3RhdGUgPSBtX21lZGlhRWxlbWVu
dHMuZmlyc3QoKS0+cmVhZHlTdGF0ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7
IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgICAgIG5l
d1JlYWR5U3RhdGUgPSBtaW4obmV3UmVhZHlTdGF0ZSwgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+
cmVhZHlTdGF0ZSgpKTsKKyAgICB9CisKKyAgICAvLyBJZiB0aGUgTWVkaWFDb250cm9sbGVyJ3Mg
bW9zdCByZWNlbnRseSByZXBvcnRlZCByZWFkaW5lc3Mgc3RhdGUgaXMgbm90IGVxdWFsIHRvIG5l
dyByZWFkaW5lc3Mgc3RhdGUKKyAgICBpZiAobmV3UmVhZHlTdGF0ZSA9PSBvbGRSZWFkeVN0YXRl
KSAKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBh
IHNpbXBsZSBldmVudCBhdCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCwgd2hvc2UgbmFtZSBp
cyB0aGUKKyAgICAvLyBldmVudCBuYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHZhbHVlIG9mIG5l
dyByZWFkaW5lc3Mgc3RhdGUgZ2l2ZW4gaW4gdGhlIHRhYmxlIGJlbG93IChvbW1pdHRlZCkKKyAg
ICBBdG9taWNTdHJpbmcgZXZlbnROYW1lOworICAgIHN3aXRjaCAobmV3UmVhZHlTdGF0ZSkgewor
ICAgIGNhc2UgSEFWRV9OT1RISU5HOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCku
ZW1wdGllZEV2ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhBVkVfTUVUQURBVEE6Cisg
ICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5sb2FkZWRtZXRhZGF0YUV2ZW50OworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEhBVkVfQ1VSUkVOVF9EQVRBOgorICAgICAgICBldmVudE5h
bWUgPSBldmVudE5hbWVzKCkubG9hZGVkZGF0YUV2ZW50OworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEhBVkVfRlVUVVJFX0RBVEE6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5j
YW5wbGF5RXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSEFWRV9FTk9VR0hfREFUQToK
KyAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLmNhbnBsYXl0aHJvdWdoRXZlbnQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KKyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZSk7CisKKyAgICAvLyBMZXQgdGhl
IE1lZGlhQ29udHJvbGxlcidzIG1vc3QgcmVjZW50bHkgcmVwb3J0ZWQgcmVhZGluZXNzIHN0YXRl
IGJlIG5ldyByZWFkaW5lc3Mgc3RhdGUuCisgICAgbV9yZWFkeVN0YXRlID0gbmV3UmVhZHlTdGF0
ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVwZGF0ZVBsYXliYWNrU3RhdGUoKQorewor
ICAgIFBsYXliYWNrU3RhdGUgb2xkUGxheWJhY2tTdGF0ZSA9IG1fcGxheWJhY2tTdGF0ZTsKKyAg
ICBQbGF5YmFja1N0YXRlIG5ld1BsYXliYWNrU3RhdGU7CisKKyAgICAvLyBJbml0aWFsaXplIG5l
dyBwbGF5YmFjayBzdGF0ZSBieSBzZXR0aW5nIGl0IHRvIHRoZSBzdGF0ZSBnaXZlbiBmb3IgdGhl
IGZpcnN0IG1hdGNoaW5nIAorICAgIC8vIGNvbmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dpbmcgbGlz
dDoKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBJZiB0
aGUgTWVkaWFDb250cm9sbGVyIGhhcyBubyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMKKyAgICAgICAg
Ly8gTGV0IG5ldyBwbGF5YmFjayBzdGF0ZSBiZSB3YWl0aW5nLgorICAgICAgICBuZXdQbGF5YmFj
a1N0YXRlID0gV0FJVElORzsKKyAgICB9IGVsc2UgaWYgKGhhc0VuZGVkKCkpIHsKKyAgICAgICAg
Ly8gSWYgYWxsIG9mIHRoZSBNZWRpYUNvbnRyb2xsZXIncyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMg
aGF2ZSBlbmRlZCBwbGF5YmFjayBhbmQgdGhlIG1lZGlhCisgICAgICAgIC8vIGNvbnRyb2xsZXIg
cGxheWJhY2sgcmF0ZSBpcyBwb3NpdGl2ZSBvciB6ZXJvCisgICAgICAgIC8vIExldCBuZXcgcGxh
eWJhY2sgc3RhdGUgYmUgZW5kZWQuCisgICAgICAgIG5ld1BsYXliYWNrU3RhdGUgPSBFTkRFRDsK
KyAgICB9IGVsc2UgaWYgKGlzQmxvY2tlZCgpKSB7CisgICAgICAgIC8vIElmIHRoZSBNZWRpYUNv
bnRyb2xsZXIgaXMgYSBibG9ja2VkIG1lZGlhIGNvbnRyb2xsZXIKKyAgICAgICAgLy8gTGV0IG5l
dyBwbGF5YmFjayBzdGF0ZSBiZSB3YWl0aW5nLgorICAgICAgICBuZXdQbGF5YmFja1N0YXRlID0g
V0FJVElORzsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBPdGhlcndpc2UKKyAgICAgICAgLy8g
TGV0IG5ldyBwbGF5YmFjayBzdGF0ZSBiZSBwbGF5aW5nLgorICAgICAgICBuZXdQbGF5YmFja1N0
YXRlID0gUExBWUlORzsKKyAgICB9CisKKyAgICAvLyBJZiB0aGUgTWVkaWFDb250cm9sbGVyJ3Mg
bW9zdCByZWNlbnRseSByZXBvcnRlZCBwbGF5YmFjayBzdGF0ZSBpcyBub3QgZXF1YWwgdG8gbmV3
IHBsYXliYWNrIHN0YXRlCisgICAgaWYgKG5ld1BsYXliYWNrU3RhdGUgPT0gb2xkUGxheWJhY2tT
dGF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gYW5kIHRoZSBuZXcgcGxheWJhY2sgc3Rh
dGUgaXMgZW5kZWQsCisgICAgaWYgKG5ld1BsYXliYWNrU3RhdGUgPT0gRU5ERUQpIHsKKyAgICAg
ICAgLy8gdGhlbiBxdWV1ZSBhIHRhc2sgdGhhdCwgaWYgdGhlIE1lZGlhQ29udHJvbGxlciBvYmpl
Y3QgaXMgYSBwbGF5aW5nIG1lZGlhIGNvbnRyb2xsZXIsIGFuZCAKKyAgICAgICAgLy8gYWxsIG9m
IHRoZSBNZWRpYUNvbnRyb2xsZXIncyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgaGF2ZSBzdGlsbCBl
bmRlZCBwbGF5YmFjaywgYW5kIHRoZSAKKyAgICAgICAgLy8gbWVkaWEgY29udHJvbGxlciBwbGF5
YmFjayByYXRlIGlzIHN0aWxsIHBvc2l0aXZlIG9yIHplcm8sIAorICAgICAgICBpZiAoIW1fcGF1
c2VkICYmIGhhc0VuZGVkKCkpIHsKKyAgICAgICAgICAgIC8vIGNoYW5nZXMgdGhlIE1lZGlhQ29u
dHJvbGxlciBvYmplY3QgdG8gYSBwYXVzZWQgbWVkaWEgY29udHJvbGxlcgorICAgICAgICAgICAg
bV9wYXVzZWQgPSB0cnVlOworICAgICAgICAgICAgbV9jbG9jay0+c3RvcCgpOworCisgICAgICAg
ICAgICAvLyBhbmQgdGhlbiBmaXJlcyBhIHNpbXBsZSBldmVudCBuYW1lZCBwYXVzZSBhdCB0aGUg
TWVkaWFDb250cm9sbGVyIG9iamVjdC4KKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnRO
YW1lcygpLnBhdXNlRXZlbnQpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gSWYgdGhlIE1l
ZGlhQ29udHJvbGxlcidzIG1vc3QgcmVjZW50bHkgcmVwb3J0ZWQgcGxheWJhY2sgc3RhdGUgaXMg
bm90IGVxdWFsIHRvIG5ldyBwbGF5YmFjayBzdGF0ZQorICAgIC8vIHRoZW4gcXVldWUgYSB0YXNr
IHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgYXQgdGhlIE1lZGlhQ29udHJvbGxlciBvYmplY3QsIHdo
b3NlIG5hbWUgaXMgcGxheWluZyAKKyAgICAvLyBpZiBuZXcgcGxheWJhY2sgc3RhdGUgaXMgcGxh
eWluZywgZW5kZWQgaWYgbmV3IHBsYXliYWNrIHN0YXRlIGlzIGVuZGVkLCBhbmQgd2FpdGluZyBv
dGhlcndpc2UuCisgICAgQXRvbWljU3RyaW5nIGV2ZW50TmFtZTsKKyAgICBzd2l0Y2ggKG5ld1Bs
YXliYWNrU3RhdGUpIHsKKyAgICBjYXNlIFdBSVRJTkc6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2
ZW50TmFtZXMoKS53YWl0aW5nRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRU5ERUQ6
CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50OworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBMQVlJTkc6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMo
KS5wbGF5aW5nRXZlbnQ7CisgICAgICAgIG1fY2xvY2stPnN0YXJ0KCk7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAg
ICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZSk7CisKKyAgICAvLyBMZXQgdGhlIE1lZGlhQ29udHJv
bGxlcidzIG1vc3QgcmVjZW50bHkgcmVwb3J0ZWQgcGxheWJhY2sgc3RhdGUgYmUgbmV3IHBsYXli
YWNrIHN0YXRlLgorICAgIG1fcGxheWJhY2tTdGF0ZSA9IG5ld1BsYXliYWNrU3RhdGU7CisKKyAg
ICB1cGRhdGVNZWRpYUVsZW1lbnRzKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjp1cGRh
dGVNZWRpYUVsZW1lbnRzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
bV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRz
W2luZGV4XS0+dXBkYXRlUGxheVN0YXRlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpi
cmluZ0VsZW1lbnRVcFRvU3BlZWQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBB
U1NFUlQoZWxlbWVudCk7CisgICAgQVNTRVJUKG1fbWVkaWFFbGVtZW50cy5jb250YWlucyhlbGVt
ZW50KSk7CisKKyAgICAvLyBXaGVuIHRoZSB1c2VyIGFnZW50IGlzIHRvIGJyaW5nIGEgbWVkaWEg
ZWxlbWVudCB1cCB0byBzcGVlZCB3aXRoIGl0cyBuZXcgbWVkaWEgY29udHJvbGxlciwKKyAgICAv
LyBpdCBtdXN0IHNlZWsgdGhhdCBtZWRpYSBlbGVtZW50IHRvIHRoZSBNZWRpYUNvbnRyb2xsZXIn
cyBtZWRpYSBjb250cm9sbGVyIHBvc2l0aW9uIHJlbGF0aXZlCisgICAgLy8gdG8gdGhlIG1lZGlh
IGVsZW1lbnQncyB0aW1lbGluZS4KKyAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRDb2RlID0gMDsK
KyAgICBlbGVtZW50LT5zZWVrKGN1cnJlbnRUaW1lKCksIGlnbm9yZWRDb2RlKTsKK30KKworYm9v
bCBNZWRpYUNvbnRyb2xsZXI6OmlzQmxvY2tlZCgpIGNvbnN0Cit7CisgICAgLy8gQSBNZWRpYUNv
bnRyb2xsZXIgaXMgYSBibG9ja2VkIG1lZGlhIGNvbnRyb2xsZXIgaWYgdGhlIE1lZGlhQ29udHJv
bGxlciBpcyBhIHBhdXNlZCBtZWRpYSAKKyAgICAvLyBjb250cm9sbGVyLAorICAgIGlmIChtX3Bh
dXNlZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgaWYgKG1fbWVkaWFFbGVtZW50
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBib29sIGFsbFBh
dXNlZCA9IHRydWU7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFF
bGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgSFRNTE1lZGlhRWxlbWVudCogZWxl
bWVudCA9IG1fbWVkaWFFbGVtZW50c1tpbmRleF07CisgICAgICAgIC8vICBvciBpZiBhbnkgb2Yg
aXRzIHNsYXZlZCBtZWRpYSBlbGVtZW50cyBhcmUgYmxvY2tlZCBtZWRpYSBlbGVtZW50cywKKyAg
ICAgICAgaWYgKGVsZW1lbnQtPmlzQmxvY2tlZCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIAorICAgICAgICAvLyBvciBpZiBhbnkgb2YgaXRzIHNsYXZlZCBtZWRpYSBlbGVt
ZW50cyB3aG9zZSBhdXRvcGxheWluZyBmbGFnIGlzIHRydWUgc3RpbGwgaGF2ZSB0aGVpciAKKyAg
ICAgICAgLy8gcGF1c2VkIGF0dHJpYnV0ZSBzZXQgdG8gdHJ1ZSwKKyAgICAgICAgaWYgKGVsZW1l
bnQtPmF1dG9wbGF5KCkgJiYgZWxlbWVudC0+cGF1c2VkKCkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgCisgICAgICAgIGlmICghZWxlbWVudC0+cGF1c2VkKCkpCisgICAgICAg
ICAgICBhbGxQYXVzZWQgPSBmYWxzZTsKKyAgICB9CisgICAgCisgICAgLy8gb3IgaWYgYWxsIG9m
IGl0cyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgaGF2ZSB0aGVpciBwYXVzZWQgYXR0cmlidXRlIHNl
dCB0byB0cnVlLgorICAgIHJldHVybiBhbGxQYXVzZWQ7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9s
bGVyOjpoYXNFbmRlZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fY2xvY2stPnBsYXlSYXRlKCkgPD0g
MCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmIChtX21lZGlhRWxlbWVudHMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgYm9vbCBhbGxIYXZl
RW5kZWQgPSB0cnVlOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlh
RWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmICghbV9tZWRpYUVsZW1lbnRz
W2luZGV4XS0+ZW5kZWQoKSkKKyAgICAgICAgICAgIGFsbEhhdmVFbmRlZCA9IGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gYWxsSGF2ZUVuZGVkOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6
c2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKK3sKKyAgICBtX3Bl
bmRpbmdFdmVudHMuYXBwZW5kKEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgdHJ1ZSkp
OworICAgIGlmICghbV9hc3luY0V2ZW50VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9hc3lu
Y0V2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6
YXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sbGVyPiopCit7CisgICAgVmVj
dG9yPFJlZlB0cjxFdmVudD4gPiBwZW5kaW5nRXZlbnRzOworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIAorICAgIG1fcGVuZGluZ0V2ZW50cy5zd2FwKHBlbmRpbmdFdmVudHMpOworICAg
IHNpemVfdCBjb3VudCA9IHBlbmRpbmdFdmVudHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkKKyAgICAgICAgZGlzcGF0Y2hFdmVudChw
ZW5kaW5nRXZlbnRzW2luZGV4XS5yZWxlYXNlKCksIGVjKTsKK30KKworU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogTWVkaWFDb250cm9sbGVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QK
K3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50cy5maXJzdCgpLT5kb2N1bWVudCgpOworfQorCiti
b29sIE1lZGlhQ29udHJvbGxlcjo6aGFzQXVkaW8oKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7Cisg
ICAgICAgIGlmIChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5oYXNBdWRpbygpKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRp
YUNvbnRyb2xsZXI6Omhhc1ZpZGVvKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBp
ZiAobV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+aGFzVmlkZW8oKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9s
bGVyOjpoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXgg
PSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAg
aWYgKG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmhhc0Nsb3NlZENhcHRpb25zKCkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1l
ZGlhQ29udHJvbGxlcjo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wgdmlzaWJsZSkKK3sK
KyAgICBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZSA9IHZpc2libGU7CisgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAg
ICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnNldENsb3NlZENhcHRpb25zVmlzaWJsZSh2aXNp
YmxlKTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6OnN1cHBvcnRzU2Nhbm5pbmcoKSBjb25z
dAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMu
c2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmICghbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+
c3VwcG9ydHNTY2FubmluZygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmJlZ2luU2NydWJiaW5n
KCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRz
LnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+YmVnaW5T
Y3J1YmJpbmcoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmVuZFNjcnViYmluZygpCit7
CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXpl
KCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmVuZFNjcnViYmlu
ZygpOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6Y2FuUGxheSgpIGNvbnN0Cit7CisgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsr
aW5kZXgpIHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5jYW5QbGF5KCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
Citib29sIE1lZGlhQ29udHJvbGxlcjo6aXNMaXZlU3RyZWFtKCkgY29uc3QKK3sKKyAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRl
eCkgeworICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmlzTGl2ZVN0cmVhbSgp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBNZWRpYUNvbnRyb2xsZXI6Omhhc1NvdXJjZSgpIGNvbnN0Cit7CisgICAgZm9yIChz
aXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgp
IHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5oYXNTb3VyY2UoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgTWVkaWFDb250cm9sbGVyOjpyZXR1cm5Ub1JlYWx0aW1lKCkKK3sKKyAgICBmb3IgKHNpemVf
dCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAg
ICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+cmV0dXJuVG9SZWFsdGltZSgpOworfQorCitj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbGxlcjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZWRpYUNvbnRyb2xsZXI7
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTg1ZWYyOWEyM2RiOTlkNmZlNGM4NjA0MjI4ZjkxOTM3NzA5NmZlNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKQEAgLTAsMCArMSwx
NTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYUNvbnRyb2xsZXJfaAorI2RlZmluZSBNZWRp
YUNvbnRyb2xsZXJfaAorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgi
CisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJbnRl
cmZhY2UuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2xvY2s7CitjbGFzcyBIVE1MTWVkaWFFbGVt
ZW50OworY2xhc3MgRXZlbnQ7CisKK2NsYXNzIE1lZGlhQ29udHJvbGxlciA6IHB1YmxpYyBSZWZD
b3VudGVkPE1lZGlhQ29udHJvbGxlcj4sIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2Us
IHB1YmxpYyBFdmVudFRhcmdldCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sbGVyPiBtZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gY3JlYXRlKCk7CisgICAg
dmlydHVhbCB+TWVkaWFDb250cm9sbGVyKCk7CisKKyAgICB2b2lkIGFkZE1lZGlhRWxlbWVudChI
VE1MTWVkaWFFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVNZWRpYUVsZW1lbnQoSFRNTE1lZGlh
RWxlbWVudCopOworICAgIGJvb2wgY29udGFpbnNNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVu
dCopIGNvbnN0OworCisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3QgeyByZXR1
cm4gbV9tZWRpYUdyb3VwOyB9CisgICAgCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IGJ1ZmZlcmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+
IHNlZWthYmxlKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHBs
YXllZCgpOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEN1
cnJlbnRUaW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAgCisgICAgdmlydHVhbCBib29s
IHBhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF1c2VkOyB9CisgICAgdmlydHVhbCB2b2lkIHBs
YXkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0
IGRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRQbGF5YmFja1Jh
dGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCk7Cisg
ICAgCisgICAgdmlydHVhbCBmbG9hdCBwbGF5YmFja1JhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UGxheWJhY2tSYXRlKGZsb2F0KTsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IHZv
bHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFZv
bHVtZShmbG9hdCwgRXhjZXB0aW9uQ29kZSYpOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBtdXRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TXV0ZWQo
Ym9vbCk7CisgICAgCisgICAgdmlydHVhbCBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3JlYWR5U3RhdGU7IH0KKworICAgIGVudW0gUGxheWJhY2tTdGF0ZSB7IFdBSVRJ
TkcsIFBMQVlJTkcsIEVOREVEIH07CisgICAgdmlydHVhbCBQbGF5YmFja1N0YXRlIHBsYXliYWNr
U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3BsYXliYWNrU3RhdGU7IH0KKworICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc0Z1bGxzY3JlZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBoYXNB
dWRpbygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBz
ZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCk7CisgICAgdmlydHVhbCBib29sIGNsb3NlZENh
cHRpb25zVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlOyB9
CisgICAgCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Nhbm5pbmcoKSBjb25zdDsKKyAgICAK
KyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5k
U2NydWJiaW5nKCk7CisgICAgCisgICAgdmlydHVhbCBib29sIGNhblBsYXkoKSBjb25zdDsKKyAg
ICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3Q7CisgICAgCisgICAgdmly
dHVhbCBib29sIGhhc1NvdXJjZSgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgdm9pZCByZXR1
cm5Ub1JlYWx0aW1lKCk7CisKKyAgICBib29sIGlzQmxvY2tlZCgpIGNvbnN0OworCisgICAgLy8g
RXZlbnRUYXJnZXQKKyAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhQ29udHJvbGxlcj46OnJlZjsK
KyAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhQ29udHJvbGxlcj46OmRlcmVmOworCitwcml2YXRl
OgorICAgIE1lZGlhQ29udHJvbGxlcigpOworICAgIHZvaWQgcmVwb3J0Q29udHJvbGxlclN0YXRl
KCk7CisgICAgdm9pZCB1cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgdm9pZCB1cGRhdGVQbGF5YmFj
a1N0YXRlKCk7CisgICAgdm9pZCB1cGRhdGVNZWRpYUVsZW1lbnRzKCk7CisgICAgdm9pZCBicmlu
Z0VsZW1lbnRVcFRvU3BlZWQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIHZvaWQgc2NoZWR1bGVF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7CisgICAgdm9pZCBhc3luY0V2ZW50
VGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xsZXI+Kik7CisgICAgYm9vbCBoYXNFbmRlZCgp
IGNvbnN0OworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRU
YXJnZXQoKSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7
IGRlcmVmKCk7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFt
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVu
dFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKyAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZl
bnRUYXJnZXREYXRhOyB9CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwor
CisgICAgZnJpZW5kIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CisgICAgZnJpZW5kIGNsYXNzIE1l
ZGlhQ29udHJvbGxlckV2ZW50TGlzdGVuZXI7CisgICAgVmVjdG9yPEhUTUxNZWRpYUVsZW1lbnQq
PiBtX21lZGlhRWxlbWVudHM7CisgICAgYm9vbCBtX3BhdXNlZDsKKyAgICBmbG9hdCBtX2RlZmF1
bHRQbGF5YmFja1JhdGU7CisgICAgZmxvYXQgbV92b2x1bWU7CisgICAgYm9vbCBtX211dGVkOwor
ICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOworICAgIFBsYXliYWNrU3RhdGUgbV9wbGF5YmFj
a1N0YXRlOworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9wZW5kaW5nRXZlbnRzOworICAg
IFRpbWVyPE1lZGlhQ29udHJvbGxlcj4gbV9hc3luY0V2ZW50VGltZXI7CisgICAgU3RyaW5nIG1f
bWVkaWFHcm91cDsKKyAgICBib29sIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlOworICAgIFBhc3NS
ZWZQdHI8Q2xvY2s+IG1fY2xvY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJv
bGxlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDRiMmExZmQ4Y2I5NDQwOGEzOGRhYmI5NTYzZWJmYTVmNzM4ZmM1MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbApAQCAtMCww
ICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGh0bWwgeworICAgIGludGVyZmFjZSBbCisgICAg
ICAgIENvbmRpdGlvbmFsPVZJREVPLAorICAgICAgICBDYW5CZUNvbnN0cnVjdGVkLAorICAgICAg
ICBHZW5lcmF0ZVRvSlMsCisgICAgICAgIEV2ZW50VGFyZ2V0CisgICAgXSBNZWRpYUNvbnRyb2xs
ZXIgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJhbmdlcyBidWZmZXJlZDsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRpbWVSYW5nZXMgc2Vla2FibGU7CisKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBkdXJhdGlvbjsKKyAgICAgICAgYXR0cmlidXRlIGRv
dWJsZSBjdXJyZW50VGltZQorICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9u
KTsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBwYXVzZWQ7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBUaW1lUmFuZ2VzIHBsYXllZDsKKyAgICAgICAgdm9pZCBwbGF5
KCk7CisgICAgICAgIHZvaWQgcGF1c2UoKTsKKworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIGRl
ZmF1bHRQbGF5YmFja1JhdGU7CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgcGxheWJhY2tSYXRl
OworCisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgdm9sdW1lCisgICAgICAgICAgICBzZXR0ZXIg
cmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBtdXRlZDsK
KworICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAgICAgdm9pZCBhZGRFdmVu
dExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICB2b2lkIHJl
bW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Cisg
ICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAgICAgICAgICBy
YWlzZXMoRXZlbnRFeGNlcHRpb24pOworICAgIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MmNkNGRhNDFhZjQyZjVk
YTJhZTVkZjk3NzhjNGI4NmI3YzM1NDAwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaApAQCAtMCwwICsxLDk5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlX2gKKyNkZWZpbmUgTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlX2gKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGltZVJhbmdl
czsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKworY2xhc3MgTWVkaWFDb250cm9sbGVy
SW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UoKSB7IH07CisgICAgCisgICAgLy8gTWVkaWFDb250cm9sbGVyIElETDoKKyAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBwbGF5ZWQoKSA9IDA7CisgICAgCisgICAgdmlydHVh
bCBmbG9hdCBkdXJhdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRU
aW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCwg
RXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgcGF1c2VkKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBw
YXVzZSgpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IGRlZmF1bHRQbGF5YmFja1JhdGUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERlZmF1bHRQbGF5YmFja1JhdGUoZmxv
YXQpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IHBsYXliYWNrUmF0ZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheWJhY2tSYXRlKGZsb2F0KSA9IDA7CisgICAgCisg
ICAgdmlydHVhbCBmbG9hdCB2b2x1bWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dFZvbHVtZShmbG9hdCwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGJv
b2wgbXV0ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpID0g
MDsKKyAgICAKKyAgICBlbnVtIFJlYWR5U3RhdGUgeyBIQVZFX05PVEhJTkcsIEhBVkVfTUVUQURB
VEEsIEhBVkVfQ1VSUkVOVF9EQVRBLCBIQVZFX0ZVVFVSRV9EQVRBLCBIQVZFX0VOT1VHSF9EQVRB
IH07CisgICAgdmlydHVhbCBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCA9IDA7CisKKyAg
ICAvLyBNZWRpYUNvbnRyb2xFbGVtZW50czoKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxs
c2NyZWVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0Z1bGxzY3JlZW4oKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigpID0gMDsKKworICAgIHZp
cnR1YWwgYm9vbCBoYXNBdWRpbygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVmlk
ZW8oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc0Nsb3NlZENhcHRpb25zKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCkg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBjbG9zZWRDYXB0aW9uc1Zpc2libGUoKSBjb25zdCA9IDA7
CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTY2FubmluZygpIGNvbnN0ID0gMDsKKworICAg
IHZpcnR1YWwgdm9pZCBiZWdpblNjcnViYmluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5k
U2NydWJiaW5nKCkgPSAwOworCisgICAgdmlydHVhbCBib29sIGNhblBsYXkoKSBjb25zdCA9IDA7
CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3QgPSAwOworCisgICAgdmly
dHVhbCBib29sIGhhc1NvdXJjZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCByZXR1
cm5Ub1JlYWx0aW1lKCkgPSAwOworfTsKKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGltZVJhbmdlcy5jcHAKaW5kZXggOTg0YjZiY2E0ODU4OWZiNWQyNmE0NTk0OWUzZmZlNTYx
NjZiMjUzNS4uZDY4ZWEwMzcxODMzMmJlZTZkYjZmMDc5OWMxMjYxNTE3YmYxNWRmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RpbWVSYW5nZXMuY3BwCkBAIC0zMSwxMyArMzEsMTQgQEAKICNpbmNsdWRlIDxt
YXRoLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIHN0ZDsK
IAogVGltZVJhbmdlczo6VGltZVJhbmdlcyhmbG9hdCBzdGFydCwgZmxvYXQgZW5kKQogewogICAg
IGFkZChzdGFydCwgZW5kKTsKIH0KIAotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1lUmFuZ2Vz
Ojpjb3B5KCkKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gVGltZVJhbmdlczo6Y29weSgpIGNvbnN0
CiB7CiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IG5ld1Nlc3Npb24gPSBUaW1lUmFuZ2VzOjpjcmVh
dGUoKTsKICAgICAKQEAgLTQ4LDYgKzQ5LDUxIEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gVGlt
ZVJhbmdlczo6Y29weSgpCiAgICAgcmV0dXJuIG5ld1Nlc3Npb24ucmVsZWFzZSgpOwogfQogCit2
b2lkIFRpbWVSYW5nZXM6OmludmVydCgpCit7CisgICAgUmVmUHRyPFRpbWVSYW5nZXM+IGludmVy
dGVkID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisgICAgZmxvYXQgcG9zSW5mID0gc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CisgICAgZmxvYXQgbmVnSW5mID0gLXN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOworCisgICAgaWYgKCFtX3Jhbmdlcy5z
aXplKCkpCisgICAgICAgIGludmVydGVkLT5hZGQobmVnSW5mLCBwb3NJbmYpOworICAgIGVsc2Ug
eworICAgICAgICBpZiAoZmxvYXQgc3RhcnQgPSBtX3Jhbmdlcy5maXJzdCgpLm1fc3RhcnQgIT0g
bmVnSW5mKQorICAgICAgICAgICAgaW52ZXJ0ZWQtPmFkZChuZWdJbmYsIHN0YXJ0KTsKKworICAg
ICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4ICsgMSA8IG1fcmFuZ2VzLnNpemUoKTsg
KytpbmRleCkKKyAgICAgICAgICAgIGludmVydGVkLT5hZGQobV9yYW5nZXNbaW5kZXhdLm1fZW5k
LCBtX3Jhbmdlc1tpbmRleCArIDFdLm1fc3RhcnQpOworCisgICAgICAgIGlmIChmbG9hdCBlbmQg
PSBtX3Jhbmdlcy5sYXN0KCkubV9lbmQgIT0gcG9zSW5mKQorICAgICAgICAgICAgaW52ZXJ0ZWQt
PmFkZChlbmQsIHBvc0luZik7CisgICAgfQorCisgICAgbV9yYW5nZXMuc3dhcChpbnZlcnRlZC0+
bV9yYW5nZXMpOworfQorCit2b2lkIFRpbWVSYW5nZXM6OmludGVyc2VjdFdpdGgoY29uc3QgVGlt
ZVJhbmdlcyogb3RoZXIpCit7CisgICAgQVNTRVJUKG90aGVyKTsKKyAgICBSZWZQdHI8VGltZVJh
bmdlcz4gaW52ZXJ0ZWQgPSBjb3B5KCk7CisgICAgUmVmUHRyPFRpbWVSYW5nZXM+IGludmVydGVk
T3RoZXIgPSBvdGhlci0+Y29weSgpOworICAgIGludmVydGVkLT51bmlvbldpdGgoaW52ZXJ0ZWRP
dGhlci5nZXQoKSk7CisgICAgaW52ZXJ0ZWQtPmludmVydCgpOworCisgICAgbV9yYW5nZXMuc3dh
cChpbnZlcnRlZC0+bV9yYW5nZXMpOworfQorCit2b2lkIFRpbWVSYW5nZXM6OnVuaW9uV2l0aChj
b25zdCBUaW1lUmFuZ2VzKiBvdGhlcikKK3sKKyAgICBBU1NFUlQob3RoZXIpOworICAgIFJlZlB0
cjxUaW1lUmFuZ2VzPiB1bmlvbmVkID0gY29weSgpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0g
MDsgaW5kZXggPCBvdGhlci0+bV9yYW5nZXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGNv
bnN0IFJhbmdlJiByYW5nZSA9IG90aGVyLT5tX3Jhbmdlc1tpbmRleF07CisgICAgICAgIHVuaW9u
ZWQtPmFkZChyYW5nZS5tX3N0YXJ0LCByYW5nZS5tX2VuZCk7CisgICAgfQorCisgICAgbV9yYW5n
ZXMuc3dhcCh1bmlvbmVkLT5tX3Jhbmdlcyk7Cit9CisKIGZsb2F0IFRpbWVSYW5nZXM6OnN0YXJ0
KHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QgCiB7IAogICAgIGlmIChp
bmRleCA+PSBsZW5ndGgoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1l
UmFuZ2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaAppbmRleCBkMWQ1NjM3
OTIzZjA3MmY3NmNiMzdiYjYxZTcyMDZiZDA3MzkyMTBmLi40MjU3NjkwMzZhYzhlZjI3Mzg3ODQ3
ZjMwYWM0MWZmZTczMDRiNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVS
YW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaApAQCAtNDYsNyAr
NDYsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRpbWVSYW5nZXMo
c3RhcnQsIGVuZCkpOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gY29weSgp
OworICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gY29weSgpIGNvbnN0OworICAgIHZvaWQgaW52
ZXJ0KCk7CisgICAgdm9pZCBpbnRlcnNlY3RXaXRoKGNvbnN0IFRpbWVSYW5nZXMqKTsKKyAgICB2
b2lkIHVuaW9uV2l0aChjb25zdCBUaW1lUmFuZ2VzKik7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX3Jhbmdlcy5zaXplKCk7IH0KICAgICBmbG9hdCBzdGFydCh1bnNp
Z25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aWRsCmluZGV4IGVjMGMzMWYwNmRmMzFiNDZlYzRjYWI5OWUzZTlmMzJiMDcyYjgwNDguLjc1MWFk
ZWMxOTI0ZTU2MzYxMjIzZTE4YjkyYjAyYmE0YTQ1YjJhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5pZGwKQEAgLTYzNCw2ICs2MzQsNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0
cmlidXRlIFtDb25kaXRpb25hbD1WSURFTywgRW5hYmxlZEF0UnVudGltZV0gTWVkaWFFcnJvckNv
bnN0cnVjdG9yIE1lZGlhRXJyb3I7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklE
RU8sIEVuYWJsZWRBdFJ1bnRpbWVdIFRpbWVSYW5nZXNDb25zdHJ1Y3RvciBUaW1lUmFuZ2VzOwog
ICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVZJREVPLCBFbmFibGVkQXRSdW50aW1lXSBI
VE1MU291cmNlRWxlbWVudENvbnN0cnVjdG9yIEhUTUxTb3VyY2VFbGVtZW50OworICAgICAgICBh
dHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVZJREVPLCBFbmFibGVkQXRSdW50aW1lXSBNZWRpYUNvbnRy
b2xsZXJDb25zdHJ1Y3RvciBNZWRpYUNvbnRyb2xsZXI7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9B
TklNQVRJT05fQVBJKSAmJiBFTkFCTEVfQU5JTUFUSU9OX0FQSQogICAgICAgICBhdHRyaWJ1dGUg
V2ViS2l0QW5pbWF0aW9uQ29uc3RydWN0b3IgV2ViS2l0QW5pbWF0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDAxOGM3ZGQz
M2UzOGMxYjhmNzczNDVhOGMzZTRmODM1ZmVjNjBhNzMuLmZjNzdmZjI4ODM4YjdjMDk0YWE1M2E0
ZmJkZjA3MTY4MGNhMjIxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTYwOSw2ICs2MDksMTEgQEAgUGFzc1JlZlB0cjxUaW1l
UmFuZ2VzPiBNZWRpYVBsYXllcjo6YnVmZmVyZWQoKQogICAgIHJldHVybiBtX3ByaXZhdGUtPmJ1
ZmZlcmVkKCk7CiB9CiAKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXI6OnNlZWth
YmxlKCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5zZWVrYWJsZSgpOworfQorCiBmbG9hdCBN
ZWRpYVBsYXllcjo6bWF4VGltZVNlZWthYmxlKCkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5t
YXhUaW1lU2Vla2FibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCmluZGV4IGM5NmIwMjVkODJkMDA3MDkxNjllZWE1MWMwNzgyNmI3NDUwNmM0
NzEuLjQ3NzM5YTA4YjBlM2Q5Y2M3M2M5OWExMzE0MzRhNzhhZTAzNzQ1NWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjQxLDYgKzI0
MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZXNlcnZlc1BpdGNoKGJvb2wpOwogCiAgICAg
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpOworICAgIFBhc3NSZWZQdHI8VGltZVJh
bmdlcz4gc2Vla2FibGUoKTsKICAgICBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKTsKIAogICAgIHVu
c2lnbmVkIGJ5dGVzTG9hZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IGY4YzcwYWJlMjhhN2VkMDFkZmI4
YTJjYjdmMWM2MzY2MzdkMzg0NDEuLjZjNTI3ZDdlNWNkMzg5OTkxNmI0NjVlZjcyZDU3MTQ0MDU2
ZWQ3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFZJREVPKQog
CiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTEsNiArOTIs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdv
cmtTdGF0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
IHJlYWR5U3RhdGUoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJh
bmdlcz4gc2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBtYXhUaW1lU2Vla2FibGUoKSA/IFRpbWVS
YW5nZXM6OmNyZWF0ZSgwLCBtYXhUaW1lU2Vla2FibGUoKSkgOiBUaW1lUmFuZ2VzOjpjcmVhdGUo
KTsgfQogICAgIHZpcnR1YWwgZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0ID0gMDsKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDNkNjVjMjc3MDE4OTA3MzhiZmUwZTEwOTM0ZTk3NzMyNmRhYmExYmUuLjEyNGRjNTI5
N2Y1MWYwYzRhMTViZWU1M2I3ODE4MDk1MDZkNmY0N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAor
MjAxMS0xMS0wMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgTWVkaWFDb250cm9sbGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzE0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLmh0bWw6IEFkZGVk
LgorCisyMDExLTExLTAzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCBNZWRpYUNvbnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2stZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXli
YWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbDog
QWRkZWQuCisKKzIwMTEtMTEtMDIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IE1lZGlhQ29udHJvbGxlci4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFj
ay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIt
cGxheWJhY2suaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci5o
dG1sOiBBZGRlZC4KKwogMjAxMS0xMS0wOSAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtyZWZhY3RvcmluZ10gcmVtb3ZlIGEg
YnVuY2ggb2YgbWV0aG9kcyBmcm9tIEphdmFTY3JpcHRTb3VyY2VGcmFtZURlbGVnYXRlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRjNmQ0ZDA3ZmZjY2ZjYjMwZTc1NWFjYzI2OGU2NzRmNzRhY2NjMGUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDI1IEBACisgCitUZXN0IHByZXNlbmNlIG9mIE1lZGlhQ29udHJvbGxlciBjb25z
dHJ1Y3RvciwgbWVkaWFDb250cm9sbGVyLCBhbmQgbWVkaWFHcm91cCBhdHRyaWJ1dGVzOgorRVhQ
RUNURUQgKHR5cGVvZihNZWRpYUNvbnRyb2xsZXIpID09ICdvYmplY3QnKSBPSworRVhQRUNURUQg
KHZpZGVvLm1lZGlhQ29udHJvbGxlciA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAodmlkZW8ubWVk
aWFHcm91cCA9PSAnJykgT0sKKworVGVzdCB0aGF0IHRoZSBwcmVzZW5jZSBvZiBhIG1lZGlhR3Jv
dXAgYXR0cmlidXRlIGNyZWF0ZXMgYSBtZWRpYUNvbnRyb2xsZXI6CitFWFBFQ1RFRCAodmlkZW8y
Lm1lZGlhR3JvdXAgPT0gJ2dyb3VwJykgT0sKK0VYUEVDVEVEICh2aWRlbzIubWVkaWFDb250cm9s
bGVyICE9ICdudWxsJykgT0sKKworVGVzdCB0aGF0IHNldHRpbmcgbWVkaWFHcm91cCB0byBhbiBl
bXB0eSBzdHJpbmcgcmVtb3ZlcyB0aGUgbWVkaWFDb250cm9sbGVyOgorUlVOKHZpZGVvLm1lZGlh
R3JvdXAgPSAnJykKK0VYUEVDVEVEICh2aWRlby5tZWRpYUNvbnRyb2xsZXIgPT0gJ251bGwnKSBP
SworCitUZXN0IG1hbnVhbGx5IGNyZWF0aW5nIGFuZCBhc3NpZ25pbmcgYSBtZWRpYUNvbnRyb2xs
ZXIgdG8gYSBtZWRpYSBlbGVtZW50OgorUlVOKGNvbnRyb2xsZXIgPSBuZXcgTWVkaWFDb250cm9s
bGVyKCkpCitSVU4odmlkZW8ubWVkaWFDb250cm9sbGVyID0gY29udHJvbGxlcikKK0VYUEVDVEVE
ICh2aWRlby5tZWRpYUNvbnRyb2xsZXIgPT0gJ1tvYmplY3QgTWVkaWFDb250cm9sbGVyXScpIE9L
CisKK1Rlc3QgdGhhdCB0d28gbWVkaWEgZWxlbWVudHMgd2l0aCB0aGUgc2FtZSBtZWRpYUdyb3Vw
IGhhdmUgdGhlIHNhbWUgbWVkaWFDb250cm9sbGVyOgorUlVOKHZpZGVvLm1lZGlhR3JvdXAgPSAn
Z3JvdXAnKQorUlVOKHZpZGVvMi5tZWRpYUdyb3VwID0gJ2dyb3VwJykKK0VYUEVDVEVEICh2aWRl
by5tZWRpYUNvbnRyb2xsZXIgPT09IHZpZGVvMi5tZWRpYUNvbnRyb2xsZXIgPT0gJ3RydWUnKSBP
SworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29u
dHJvbGxlci1wbGF5YmFjay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1j
b250cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGE4ZTA5MjEzZWUx
YTcxMDdiODExYWI5Zjg4M2FkNDAxMmEzZmE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorIAorUlVOKGNvbnRyb2xsZXIgPSB2aWRlby5tZWRpYUNvbnRyb2xsZXIpCitFVkVO
VChjYW5wbGF5dGhyb3VnaCkKK1JVTihjb250cm9sbGVyLmN1cnJlbnRUaW1lID0gNSkKK0VYUEVD
VEVEICh2aWRlby5jdXJyZW50VGltZSA9PSAnNScpIE9LCitFWFBFQ1RFRCAodmlkZW8yLmN1cnJl
bnRUaW1lID09ICc1JykgT0sKK1JVTih2aWRlby5wbGF5KCkpCitSVU4odmlkZW8yLnBsYXkoKSkK
K1JVTihjb250cm9sbGVyLnBsYXkoKSkKK0VWRU5UKHBsYXlpbmcpCitFWFBFQ1RFRCAoY29udHJv
bGxlci5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKK0VWRU5UKGVuZGVkKQorRU5EIE9GIFRFU1QKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay5o
dG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdjMmI4M2VmMWFhODg5NmQ3YzIyMDdmN2E5NDY0OTBmM2NjZjVmMmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNr
Lmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9bWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKworICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICB2YXIgY29udHJvbGxlcjsKKyAgICAgICAgdmFyIHZpZGVvMjsKKworICAgICAgICBm
dW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgICAgIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF07CisgICAgICAgICAgICB2aWRlbzIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8nKVsxXTsKKyAgICAgICAgICAgIHJ1bignY29udHJv
bGxlciA9IHZpZGVvLm1lZGlhQ29udHJvbGxlcicpOworICAgICAgICAgICAgY29udHJvbGxlci5h
ZGRFdmVudExpc3RlbmVyKCdjYW5wbGF5dGhyb3VnaCcsIGNhbnBsYXl0aHJvdWdoLCB0cnVlKTsK
KyAgICAgICAgICAgIHNldFNyY0J5VGFnTmFtZSgndmlkZW8nLCBmaW5kTWVkaWFGaWxlKCd2aWRl
bycsICdjb250ZW50L3Rlc3QnKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZ1bmN0
aW9uIGNhbnBsYXl0aHJvdWdoKCkgeworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVChj
YW5wbGF5dGhyb3VnaCkiKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIucmVtb3ZlRXZlbnRMaXN0
ZW5lcignY2FucGxheXRocm91Z2gnLCBjYW5wbGF5dGhyb3VnaCwgdHJ1ZSk7CisgICAgICAgICAg
ICBydW4oJ2NvbnRyb2xsZXIuY3VycmVudFRpbWUgPSA1Jyk7CisgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ3ZpZGVvLmN1cnJlbnRUaW1lJywgNSk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
J3ZpZGVvMi5jdXJyZW50VGltZScsIDUpOworICAgICAgICAgICAgcnVuKCd2aWRlby5wbGF5KCkn
KTsKKyAgICAgICAgICAgIHJ1bigndmlkZW8yLnBsYXkoKScpOworICAgICAgICAgICAgY29udHJv
bGxlci5hZGRFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgcGxheWluZywgdHJ1ZSk7CisgICAgICAg
ICAgICBydW4oJ2NvbnRyb2xsZXIucGxheSgpJyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGZ1bmN0aW9uIHBsYXlpbmcoKSB7IAorICAgICAgICAgICAgY29uc29sZVdyaXRlKCJFVkVO
VChwbGF5aW5nKSIpOworICAgICAgICAgICAgY29udHJvbGxlci5yZW1vdmVFdmVudExpc3RlbmVy
KCdwbGF5aW5nJywgcGxheWluZywgdHJ1ZSk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2Nv
bnRyb2xsZXIucGF1c2VkJywgZmFsc2UpOworICAgICAgICAgICAgY29udHJvbGxlci5hZGRFdmVu
dExpc3RlbmVyKCdlbmRlZCcsIGVuZGVkLCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGVuZGVkKCkgeyAKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQoZW5kZWQp
Iik7CisgICAgICAgICAgICBjb250cm9sbGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2VuZGVkJywg
ZW5kZWQsIHRydWUpOworICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAg
ICAgICA8dmlkZW8gbWVkaWFHcm91cD0iZ3JvdXAiIGNvbnRyb2xzPjwvdmlkZW8+CisgICAgICAg
IDx2aWRlbyBtZWRpYUdyb3VwPSJncm91cCIgY29udHJvbHM+PC92aWRlbz4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVk
aWEtY29udHJvbGxlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwZTU5Njc1NGQ1YWJiMWMzZTdlZGYxNDI5
YzY5M2E4Yjg3ODRmYTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRp
YS1jb250cm9sbGVyLmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9bWVkaWEtZmlsZS5qcz48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKworICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB2YXIgY29udHJvbGxlcjsKKyAgICAgICAgdmFyIHZpZGVvMjsK
KworICAgICAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgICAgIHZpZGVvID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF07CisgICAgICAgICAgICB2aWRlbzIg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8nKVsxXTsKKworICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCJUZXN0IHByZXNlbmNlIG9mIE1lZGlhQ29udHJvbGxlciBjb25zdHJ1
Y3RvciwgbWVkaWFDb250cm9sbGVyLCBhbmQgbWVkaWFHcm91cCBhdHRyaWJ1dGVzOiIpOworICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0eXBlb2YoTWVkaWFDb250cm9sbGVyKSIsICJvYmplY3Qi
KTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubWVkaWFDb250cm9sbGVyIiwgbnVs
bCk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm1lZGlhR3JvdXAiLCAiIik7Cisg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJU
ZXN0IHRoYXQgdGhlIHByZXNlbmNlIG9mIGEgbWVkaWFHcm91cCBhdHRyaWJ1dGUgY3JlYXRlcyBh
IG1lZGlhQ29udHJvbGxlcjoiKQorICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlbzIubWVk
aWFHcm91cCIsICdncm91cCcpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlbzIubWVk
aWFDb250cm9sbGVyIiwgbnVsbCwgIiE9Iik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIp
OworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IHRoYXQgc2V0dGluZyBtZWRpYUdyb3Vw
IHRvIGFuIGVtcHR5IHN0cmluZyByZW1vdmVzIHRoZSBtZWRpYUNvbnRyb2xsZXI6IikKKyAgICAg
ICAgICAgIHJ1bigidmlkZW8ubWVkaWFHcm91cCA9ICcnIik7CisgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciIsIG51bGwpOworICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCBtYW51YWxseSBjcmVh
dGluZyBhbmQgYXNzaWduaW5nIGEgbWVkaWFDb250cm9sbGVyIHRvIGEgbWVkaWEgZWxlbWVudDoi
KQorICAgICAgICAgICAgcnVuKCJjb250cm9sbGVyID0gbmV3IE1lZGlhQ29udHJvbGxlcigpIik7
CisgICAgICAgICAgICBydW4oInZpZGVvLm1lZGlhQ29udHJvbGxlciA9IGNvbnRyb2xsZXIiKTsK
KyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubWVkaWFDb250cm9sbGVyIiwgY29udHJv
bGxlcik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCJUZXN0IHRoYXQgdHdvIG1lZGlhIGVsZW1lbnRzIHdpdGggdGhlIHNhbWUgbWVkaWFH
cm91cCBoYXZlIHRoZSBzYW1lIG1lZGlhQ29udHJvbGxlcjoiKQorICAgICAgICAgICAgcnVuKCJ2
aWRlby5tZWRpYUdyb3VwID0gJ2dyb3VwJyIpOworICAgICAgICAgICAgcnVuKCJ2aWRlbzIubWVk
aWFHcm91cCA9ICdncm91cCciKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubWVk
aWFDb250cm9sbGVyID09PSB2aWRlbzIubWVkaWFDb250cm9sbGVyIiwgdHJ1ZSk7CisgICAgICAg
ICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICAgIDx2aWRlbz48L3ZpZGVvPgor
ICAgICAgICA8dmlkZW8gbWVkaWFncm91cD0iZ3JvdXAiPjwvdmlkZW8+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy1saW9uL2Zhc3QvcmVnaW9ucy9yZW5kZXItcmVnaW9uLWN1c3RvbS1z
dHlsZS1tYXJrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1saW9uL2Zh
c3QvcmVnaW9ucy9yZW5kZXItcmVnaW9uLWN1c3RvbS1zdHlsZS1tYXJrLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNjc0ZWE5ZTRmYTg1MGE5Mzg0M2UzY2Y4ZGJiYTY1NGRiMzkzMDQ3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxpb24vZmFzdC9yZWdpb25z
L3JlbmRlci1yZWdpb24tY3VzdG9tLXN0eWxlLW1hcmstZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MzQgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDAp
IHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTY2CisgIFJlbmRlckJsb2Nr
IHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHgxNjYKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAo
OCw4KSBzaXplIDc4NHgxNTAKKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwwKSBzaXpl
IDIwMHg1MAorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTApIHNpemUgMjAweDUwCisg
ICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMTAwKSBzaXplIDIwMHg1MAorRmxvdyBUaHJl
YWRzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvdzEnCisgICAgbGF5ZXIgYXQgKDAsMCkg
c2l6ZSAyMDB4MTAwCisgICAgICBSZW5kZXJGbG93VGhyZWFkIGF0ICgwLDApIHNpemUgMjAweDEw
MAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxNikgc2l6ZSAyMDB4MTg4CisgICAg
ICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgMjAweDE4CisgICAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjh4MTgKKyAgICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggMTY4OiAiRmlyc3QgcGFyYSBnb2VzIGludG8gcmVnaW9uLiIK
KyAgICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwzNCkgc2l6ZSAyMDB4MTgK
KyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEzNHgxOAorICAg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMzQ6ICJUZXh0IGdvZXMgaW50byBy
ZWdpb24iCisgICAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDY4KSBzaXplIDIwMHgxOAor
ICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTg3eDE4CisgICAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE4NzogIlNlY29uZCBwYXJhIGdvZXMg
aW50byByZWdpb24uIgorICAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwxMDIpIHNpemUg
MjAweDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNzV4
MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTc1OiAiVGhpcmQgcGFy
YSBnb2VzIGludG8gcmVnaW9uLiIKKyAgICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBh
dCAoMCwxMzYpIHNpemUgMjAweDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAxMzR4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MTM0OiAiVGV4dCBnb2VzIGludG8gcmVnaW9uIgorICAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBh
dCAoMCwxNzApIHNpemUgMjAweDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAxODJ4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MTgyOiAiRm91cnRoIHBhcmEgZ29lcyBpbnRvIHJlZ2lvbi4iCisgIFJlZ2lvbnMgZm9yIGZsb3cg
J2Zsb3cxJworICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uMSByZWdpb24gc3R5bGU6IDEK
KyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjMgcmVnaW9uIHN0eWxlOiAxCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114451</attachid>
            <date>2011-11-10 00:51:45 -0800</date>
            <delta_ts>2011-11-10 21:07:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71408-20111110005144.patch</filename>
            <type>text/plain</type>
            <size>105624</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4MjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZTUyYTU2ZjBiNWNiYzg1
YmZlMjUzMjI3OTE0M2QwY2I3OWYwODA1Li5kMzJkYTVlZGYzYjkyMzRhNWNkZjM0NjEyMWJmMzc0
OWE1MTU4Yzc1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY5IEBACisyMDExLTExLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNv
bnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbAorCisgICAgICAgIEFkZHMgc3VwcG9ydCBm
b3IgdGhlIE1lZGlhQ29udHJvbGxlciBET00gb2JqZWN0LCBhbmQgdGhlIG1lZGlhZ3JvdXAgYW5k
IG1lZGlhY29udHJvbGxlcgorICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGF0dHJpYnV0ZXMuCisK
KyAgICAgICAgTWVkaWFDb250cm9sbGVyIGlzIGFuIERPTSBvYmplY3Qgd2hpY2ggc3luY2hyb25p
emVzIHBsYXliYWNrIG9mIG11bHRpcGxlIEhUTUxNZWRpYUVsZW1lbnRzLiBJdCBjYW4KKyAgICAg
ICAgZWl0aGVyIGJlIGNyZWF0ZWQgYnkgYSBwYWdlIHNjcmlwdCBhbmQgYXNzaWduZWQgdG8gYSBI
VE1MTWVkaWFFbGVtZW50IHVzaW5nIHRoZSBtZWRpYUNvbnRyb2xsZXIgcHJvcGVydHksCisgICAg
ICAgIG9yIGFsbCBIVE1MTWVkaWFFbGVtZW50cyB3aXRoIGlkZW50aWNhbCBtZWRpYWdyb3VwIGF0
dHJpYnV0ZXMgd2lsbCBoYXZlIGEgTWVkaWFDb250cm9sbGVyIGFzc2lnbmVkIAorICAgICAgICBh
dXRvbWF0aWNhbGx5LgorCisgICAgICAgIEFkZCBhbiBhYnN0cmFjdCBpbnRlcmZhY2UgaW1wbGVt
ZW50ZWQgYnkgYm90aCBNZWRpYUNvbnRyb2xsZXIgYW5kIEhUTUxNZWRpYUVsZW1lbnQuCisgICAg
ICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U6On5NZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UpOgorCisgICAgICAgIEFkZCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCBhbmQgSURMLgor
ICAgICAgICAqIGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChtZWRp
YUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXApOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpt
ZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
Y3JlYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6TWVkaWFDb250cm9sbGVyKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6fk1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChNZWRp
YUNvbnRyb2xsZXI6OmFkZE1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnJlbW92ZU1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmNvbnRhaW5z
TWVkaWFFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6YnVmZmVyZWQpOgorICAg
ICAgICAoTWVkaWFDb250cm9sbGVyOjpzZWVrYWJsZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnBsYXllZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKToKKyAgICAg
ICAgKE1lZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnBsYXkpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpwYXVzZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnNldERlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpz
ZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZCk6CisgICAgICAgIChNZWRpYUNvbnRy
b2xsZXI6OnJlcG9ydENvbnRyb2xsZXJTdGF0ZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnVwZGF0ZVJlYWR5U3RhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjp1cGRhdGVQbGF5
YmFja1N0YXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlTWVkaWFFbGVtZW50
cyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnNjaGVkdWxlRXZlbnQpOgorICAgICAgICAo
TWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpoYXNBdWRpbyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Omhhc1ZpZGVvKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzQ2xvc2VkQ2FwdGlvbnMpOgorICAgICAgICAoTWVk
aWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUpOgorICAgICAgICAoTWVkaWFD
b250cm9sbGVyOjpzdXBwb3J0c1NjYW5uaW5nKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
YmVnaW5TY3J1YmJpbmcpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjplbmRTY3J1YmJpbmcp
OgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjYW5QbGF5KToKKyAgICAgICAgKE1lZGlhQ29u
dHJvbGxlcjo6aXNMaXZlU3RyZWFtKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzU291
cmNlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6cmV0dXJuVG9SZWFsdGltZSk6CisgICAg
ICAgIChNZWRpYUNvbnRyb2xsZXI6OmlzQmxvY2tlZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6Omhhc0VuZGVkKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6bWVkaWFHcm91cCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xsZXI6OmRlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sbGVyOjp2b2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpt
dXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnJlYWR5U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1N0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6c3VwcG9ydHNGdWxsc2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6aXNGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbGxlcjo6Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sbGVyOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbGxlcjo6dG9NZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sbGVyOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvTWVk
aWFDb250cm9sbGVyLmlkbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGNvbnZlbmllbmNlIGZ1bmN0
aW9ucyB0byBUaW1lUmFuZ2VzIHdoaWNoIGNhbiBjYWxjdWxhdGUgaW50ZXJzZWN0aW9ucyBhbmQK
KyAgICAgICAgdW5pb25zIGJldHdlZW4gVGltZVJhbmdlcyBvYmplY3RzLgorICAgICAgICAqIGh0
bWwvVGltZVJhbmdlcy5jcHA6CisgICAgICAgIChUaW1lUmFuZ2VzOjpjb3B5KToKKyAgICAgICAg
KFRpbWVSYW5nZXM6OmludmVydCk6CisgICAgICAgIChUaW1lUmFuZ2VzOjppbnRlcnNlY3RXaXRo
KToKKyAgICAgICAgKFRpbWVSYW5nZXM6OnVuaW9uV2l0aCk6CisgICAgICAgICogaHRtbC9UaW1l
UmFuZ2VzLmg6CisKKyAgICAgICAgQWRkIE1lZGlhQ29udHJvbGxlckNvbnN0cnVjdG9yIHRvIHRo
ZSBXaW5kb3cgb2JqZWN0LgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKworICAgICAg
ICBBZGQgdGhlIHR3byBuZXcgYXR0cmlidXRlIG5hbWVzLCBtZWRpYWdyb3VwIGFuZCBtZWRpYWNv
bnRyb2xsZXIuCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYXR0cmlidXRlcywgYW5kIGFkZCBvdmVycmlkZGVu
IGJlaGF2aW9yIHdoZW4gYSBtZWRpYSBlbGVtZW50CisgICAgICAgIGhhcyBhIGN1cnJlbnQgbWVk
aWEgY29udHJvbGxlcjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjplbmRlZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6dXNlckNhbmNlbGxlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRN
ZWRpYUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNv
bnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlTWVk
aWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzQmxv
Y2tlZE9uTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc1NvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0xpdmVTdHJlYW0pOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1M
TWVkaWFFbGVtZW50Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxN
ZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcik6CisKKyAgICAgICAgQWRkIGEgZnVuY3Rp
b24gInNlZWthYmxlIiB3aGljaCByZXR1cm5zIGEgVGltZVJhbmdlcyBjb250YWluaW5nIHRoZSBz
ZWVrYWJsZSB0aW1lIHJhbmdlcworICAgICAgICBpbiBhIG1lZGlhIGVsZW1lbnQuICBCeSBkZWZh
dWx0IHRoaXMgaXMgYSBzaW5nbGUgcmFuZ2Ugb2YgWzAsIG1heFRpbWVTZWVrYWJsZV0uCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OnNlZWthYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpz
ZWVrYWJsZSk6CisKKyAgICAgICAgU3VwcG9ydCBmdW5jdGlvbnMgdG8gY2FzdCBiZXR3ZWVuIE1l
ZGlhQ29udHJvbGxlciBhbmQgRXZlbnRUYXJnZXQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNF
dmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBkb20v
RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OnRvTWVkaWFD
b250cm9sbGVyKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKworICAgICAgICBGaXhl
ZCBhbiBpbmZpbml0ZS1yZWN1cnNpb24gYnVnIGR1ZSB0byBhIGNvbGxpc2lvbiBiZXR3ZWVuIFdU
Rjo6Y3VycmVudFRpbWUgYW5kCisgICAgICAgIENsb2NrR2VuZXJpYzo6Y3VycmVudFRpbWU6Cisg
ICAgICAgICogcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmNwcDoKKyAgICAgICAgKENsb2NrR2VuZXJp
Yzo6Q2xvY2tHZW5lcmljKToKKyAgICAgICAgKENsb2NrR2VuZXJpYzo6c2V0Q3VycmVudFRpbWUp
OgorICAgICAgICAoQ2xvY2tHZW5lcmljOjpjdXJyZW50VGltZSk6CisgICAgICAgIChDbG9ja0dl
bmVyaWM6OnNldFBsYXlSYXRlKToKKyAgICAgICAgKENsb2NrR2VuZXJpYzo6c3RhcnQpOgorICAg
ICAgICAoQ2xvY2tHZW5lcmljOjpzdG9wKToKKyAgICAgICAgKENsb2NrR2VuZXJpYzo6bm93KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9DbG9ja0dlbmVyaWMuaDoKKworICAgICAgICBCb2lsZXJwbGF0
ZSB0byBzdXBwb3J0IGNyZWF0aW5nIHRoZSBkZXJpdmVkIHNvdXJjZXMgZm9yIE1lZGlhQ29udHJv
bGxlciBhbmQgYWRkaW5nIG5ldyBzb3VyY2VzCisgICAgICAgIHRvIHRoZSBwcm9qZWN0OgorICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3Qu
YW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAxMS0xMS0xMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk5
ODE2LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDU1M2RjNWU4YzM1Njlj
YjgwNmNiNTk1NGQ3YmMzZDVhMjhlNWU0ZTkuLjNkMTI5MzkxODM1NWE3MjQ3ZDhkNzVmMzNjMzUx
YmQwZmYxMTNiOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKQEAgLTExMDcs
NyArMTEwNyw3IEBACiAjZGVmaW5lIEhBVkVfSU5WRVJURURfV0hFRUxfRVZFTlRTIDEKICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oV0lOKSAmJiAhT1MoV0lOQ0UpICYm
ICFQTEFURk9STShXSU5fQ0FJUk8pKQorI2lmIFBMQVRGT1JNKE1BQykKICNkZWZpbmUgV1RGX1VT
RV9DT1JFQVVESU8gMQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWVmMWMzYTU1
MzQxZTIyNmUzMjE5N2Q1YjczYWRkZTUwNzYwMGM3YS4uODRjMDUwMjAyNDIxYjUzZjFlMDAzOGJh
Yzg3Njg0ODYzMjg4Mzg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTI3Niw2ICsyNzYsNyBA
QCBTRVQoV2ViQ29yZV9JRExfRklMRVMKICAgICBodG1sL0hUTUxVbmtub3duRWxlbWVudC5pZGwK
ICAgICBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCiAgICAgaHRtbC9JbWFnZURhdGEuaWRsCisg
ICAgaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsCiAgICAgaHRtbC9NZWRpYUVycm9yLmlkbAogICAg
IGh0bWwvVGV4dE1ldHJpY3MuaWRsCiAgICAgaHRtbC9UZXh0VHJhY2suaWRsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5jcHAKaW5kZXggYjNmMWUzZmI5OTZlNzkwMzkzZDlmZGM4NmY2OTFiOGE2MTUz
ZDNkNi4uNTU4NzYwOTA2NjlkMjllNzM2YzFhODZkNjIwMmI3NDJiMDJjMmYxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtMjI4LDYgKzIyOCw3IEBACiAjaW5jbHVkZSAiSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lLmNwcCIKICNpbmNsdWRlICJKU0tleWJvYXJkRXZlbnQuY3BwIgogI2lu
Y2x1ZGUgIkpTTG9jYXRpb24uY3BwIgorI2luY2x1ZGUgIkpTTWVkaWFDb250cm9sbGVyLmNwcCIK
ICNpbmNsdWRlICJKU01lZGlhRXJyb3IuY3BwIgogI2luY2x1ZGUgIkpTTWVkaWFMaXN0LmNwcCIK
ICNpbmNsdWRlICJKU01lZGlhUXVlcnlMaXN0LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCmluZGV4IGU2MDc0YzFlZDc3MTM0ZTViY2JlYTZhOThiNWUxOGRjOTk4YWE3MGYuLjQ4NDk1
NjI3MzVmM2I2MDFmNGRkOTUwNWUxMGFiMjFiN2EyOGIwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQpAQCAtMjc3LDYgKzI3Nyw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIEtleWJv
YXJkRXZlbnQgXAogICAgIExvY2F0aW9uIFwKICAgICBMb3dQYXNzMkZpbHRlck5vZGUgXAorICAg
IE1lZGlhQ29udHJvbGxlciBcCiAgICAgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlIFwKICAg
ICBNZWRpYUVycm9yIFwKICAgICBNZWRpYUxpc3QgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMucHJpIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJp
CmluZGV4IGNhZWI3OTllNjc2ZDEyMGE0ZTg5Y2U4NDA0Mzc0NzU3MmM0ZjdlOTYuLmM2ZjUyZTgz
N2E3ZTJmZmYzMTUzMzE1YTUxY2U0ODY4MDUxNjdmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5wcmkKQEAgLTMxNCw2ICszMTQsNyBAQCBJRExfQklORElOR1MgKz0gXAogICAgIGh0bWwvSFRN
TFVua25vd25FbGVtZW50LmlkbCBcCiAgICAgaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbCBcCiAg
ICAgaHRtbC9JbWFnZURhdGEuaWRsIFwKKyAgICBodG1sL01lZGlhQ29udHJvbGxlci5pZGwgXAog
ICAgIGh0bWwvTWVkaWFFcnJvci5pZGwgXAogICAgIGh0bWwvVGV4dE1ldHJpY3MuaWRsIFwKICAg
ICBodG1sL1RpbWVSYW5nZXMuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDg2NjhjZjE3Zjc3ZmZjYWFlNjUxMGZjNDJlNWU3NmY4NjdlMDM3ZmYuLmQ5NjEzNmEyMzY4Zjhm
YTc0ODM2YWM0NGE2OGQ5MDRlYWEzOTk1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtMzU5LDYgKzM1OSw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0xvY2FsTWVkaWFTdHJlYW0uaCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0xvY2F0aW9uLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0xvY2F0
aW9uLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUNvbnRyb2xsZXIuY3BwIFwK
KwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFDb250cm9sbGVyLmggXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNNZWRpYUVycm9yLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU01lZGlhRXJyb3IuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhTGlzdC5j
cHAgXApAQCAtMTg3NSw2ICsxODc3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9odG1sL0xpbmtSZWxBdHRyaWJ1dGUuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9M
b2FkYWJsZVRleHRUcmFjay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0
VHJhY2suaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRG9jdW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1l
bnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5k
ZXggZjY3MTY0MjgzZmFmZGIzZjdlZTVkZTc5ZDhhZGI1ZjNiYjk1YmNmYy4uZjQ3NWI5ZjM0ZDMz
ODY3Mzc2ZTY3YjBmMTYwNjRmN2RhZTM1ZGE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0xOTMsNiArMTkz
LDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50
Q29uc3RydWN0b3IuY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0
RWxlbWVudEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTGlu
a0VsZW1lbnRDdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1l
ZGlhRWxlbWVudEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
T3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTE91dHB1dEVsZW1lbnRDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTFBsdWdJbkVsZW1lbnRDdXN0b20uY3BwIFwKQEAgLTMwMyw2ICszMDQsNyBAQCB2
OCB7CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAg
XAogICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwIFwKICAg
ICAgICAgYmluZGluZ3MvanMvSlNIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwIFwKKyAgICAgICAg
YmluZGluZ3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRp
bmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3Mv
anMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3Mv
anMvSlNIVE1MT3V0cHV0RWxlbWVudEN1c3RvbS5jcHAgXApAQCAtMTAxOSw2ICsxMDIxLDggQEAg
U09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWREYXRlTm9uZS5jcHAgXAog
ICAgIHBsYXRmb3JtL3RleHQvTG9jYWxpemVkTnVtYmVyTm9uZS5jcHAgXAogICAgIHBsYXRmb3Jt
L3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcCBcCisgICAgcGxhdGZvcm0vQ2xvY2suY3BwIFwKKyAg
ICBwbGF0Zm9ybS9DbG9ja0dlbmVyaWMuY3BwIFwKICAgICBwbGF0Zm9ybS9Db250ZW50VHlwZS5j
cHAgXAogICAgIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBcCiAgICAgcGxhdGZvcm0v
RGF0ZUNvbXBvbmVudHMuY3BwIFwKQEAgLTEwMjksNyArMTAzMyw2IEBAIFNPVVJDRVMgKz0gXAog
ICAgIHBsYXRmb3JtL0ZpbGVJY29uTG9hZGVyLmNwcCBcCiAgICAgcGxhdGZvcm0vRmlsZVN0cmVh
bS5jcHAgXAogICAgIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwIFwKLSAgICBwbGF0Zm9ybS9DbG9j
a0dlbmVyaWMuY3BwIFwKICAgICBwbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuY3BwIFwKICAg
ICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9JbWFnZUZyYW1lUXQuY3BwIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwIFwKQEAgLTE4NjMsNiArMTg2Niw3IEBA
IEhFQURFUlMgKz0gXAogICAgIGh0bWwvTGFiZWxzTm9kZUxpc3QuaCBcCiAgICAgaHRtbC9MaW5r
UmVsQXR0cmlidXRlLmggXAogICAgIGh0bWwvTG9hZGFibGVUZXh0VHJhY2suaCBcCisgICAgaHRt
bC9NZWRpYUNvbnRyb2xsZXIuaCBcCiAgICAgaHRtbC9NZWRpYURvY3VtZW50LmggXAogICAgIGh0
bWwvTWljcm9EYXRhSXRlbVZhbHVlLmggXAogICAgIGh0bWwvUGx1Z2luRG9jdW1lbnQuaCBcCkBA
IC0yMDUwLDYgKzIwNTQsOCBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9hbmltYXRpb24v
QW5pbWF0aW9uTGlzdC5oIFwKICAgICBwbGF0Zm9ybS9BcmVuYS5oIFwKICAgICBwbGF0Zm9ybS9B
c3luY0ZpbGVTdHJlYW0uaCBcCisgICAgcGxhdGZvcm0vQ2xvY2suaCBcCisgICAgcGxhdGZvcm0v
Q2xvY2tHZW5lcmljLmggXAogICAgIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmggXAogICAgIHBsYXRm
b3JtL0NvbnRleHRNZW51LmggXAogICAgIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmggXApA
QCAtMjA2OCw3ICsyMDc0LDYgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbW9jay9HZW9s
b2NhdGlvblNlcnZpY2VNb2NrLmggXAogICAgIHBsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGll
bnRNb2NrLmggXAogICAgIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmggXAotICAg
IHBsYXRmb3JtL0Nsb2NrR2VuZXJpYy5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaCBcCkBAIC0zMDg0LDYgKzMwODksNyBAQCBjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfVklERU89MSkgewogICAgICAgICBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwIFwKICAgICAgICAgaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAgXAogICAgICAgICBo
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIFwKKyAgICAgICAgaHRtbC9NZWRpYUNvbnRyb2xsZXIu
Y3BwIFwKICAgICAgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIFwKICAg
ICAgICAgaHRtbC9UaW1lUmFuZ2VzLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZjZhODYzNmQyNDQwOWU4N2Y3OTMx
YjlhOTE1OWY1YTk5NGYzY2M1MS4uYWIyYmE0ZWI4NTI0N2E3ZGYxZTlkNGZlYTQ2ZjEyODg5YzAw
MzU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTMzMSw2ICsxMzMxLDcgQEAKICAgICAgICAgICAg
ICdodG1sL0hUTUxVbmtub3duRWxlbWVudC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvSW1hZ2VEYXRhLmlkbCcsCisgICAg
ICAgICAgICAnaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsJywKICAgICAgICAgICAgICdodG1sL01l
ZGlhRXJyb3IuaWRsJywKICAgICAgICAgICAgICdodG1sL1RleHRNZXRyaWNzLmlkbCcsCiAgICAg
ICAgICAgICAnaHRtbC9UZXh0VHJhY2suaWRsJywKQEAgLTE4NzUsNiArMTg3Niw3IEBACiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmgnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCcsCisgICAgICAg
ICAgICAnYmluZGluZ3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uaCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwJywKQEAg
LTIxOTcsNiArMjE5OSw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdi
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE91dHB1dEVsZW1lbnRD
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MUGx1Z0lu
RWxlbWVudEN1c3RvbS5jcHAnLApAQCAtNTU5OCw2ICs1NjAxLDggQEAKICAgICAgICAgICAgICdo
dG1sL0xpbmtSZWxBdHRyaWJ1dGUuaCcsCiAgICAgICAgICAgICAnaHRtbC9Mb2FkYWJsZVRleHRU
cmFjay5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaCcsCisgICAg
ICAgICAgICAnaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAgICdodG1sL01l
ZGlhQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdodG1sL01lZGlhRG9jdW1lbnQuY3BwJywK
ICAgICAgICAgICAgICdodG1sL01lZGlhRG9jdW1lbnQuaCcsCiAgICAgICAgICAgICAnaHRtbC9N
ZWRpYUVycm9yLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagppbmRleCBhZGRmYTI0ZWEyODg3YzFlMjY4YzlhMjNmMGYzNTAyYmQ0NTU5N2U1Li5jOWM5
MWQ0YzFkMDdhMGFlMjMyOTJjMzM5NzgwZDUyNmY5YmJjOWQxIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjYyNjIsNiArMjYyNjIsMjIgQEAK
IAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZv
cm1cQ2xvY2suY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwbGF0Zm9ybVxDbG9jay5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxDbG9ja0dlbmVyaWMuY3BwIgorCQkJCT4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxDbG9ja0dl
bmVyaWMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cQ29udGVudFR5cGUuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTU3NjA2
LDYgKzU3NjIyLDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGh0bWxcTWVkaWFDb250cm9sbGVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxNZWRpYUNvbnRyb2xsZXIuaCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxNZWRp
YURvY3VtZW50LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTg2ZTBjMjViY2VmMGQ3YjI5
MTAyMTU1YTY0MTllOThmZmY3MmUwMy4uZmYzMDk1MjRlODBhNDkwNzZlYTI2ZWY4NTRhZDA5Yzk2
OWVjMGM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNTcxMiwxNyArNTcxMiwyMiBAQAogCQlDRDBEQkZFRTE0MjI3Njg1MDAy
ODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXYgaW4gQ29weSBBdWRp
byBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwREJFMEQx
NDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUud2F2ICov
OyB9OwogCQlDRDBEQkZFRjE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1
X1QzNDVfUDMzMC53YXYgaW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0QwREJFMEUxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3Np
dGVfQ19SMDE5NV9UMzQ1X1AzMzAud2F2ICovOyB9OwogCQlDRDBEQkZGMDE0MjI3Njg1MDAyODAy
NjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXYgaW4gQ29weSBBdWRpbyBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwREJFMEYxNDIy
NzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzNDUud2F2ICovOyB9
OworCQlDRDI3RjZFNTE0NTc2ODVBMDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTIxNDU3
Njc1ODAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJQ0QyN0Y2RTcx
NDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyog
TWVkaWFDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0Q4MjAzMEExMzk1QUI2QTAwRjk1NkM2IC8q
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzA2MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQ0Q4MjAzMEIxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDgyMDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlci5tbSAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby11bmRl
ZiI7IH07IH07CiAJCUNEODIwMzBDMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDgyMDMwODEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuSFVEV2luZG93Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNEODIwMzBEMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1
bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAzMDkxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVv
RnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gKi87IH07CiAJCUNEODIwMzEwMTM5NUFD
RTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJX
aW5kb3dBbmltYXRpb24uaCAqLzsgfTsKIAkJQ0Q4MjAzMTExMzk1QUNFNzAwRjk1NkM2IC8qIFdl
YldpbmRvd0FuaW1hdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEODIwMzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24u
bW0gKi87IH07CisJCUNERDUyNUQ3MTQ1QjZERDAwMDhEMjA0RCAvKiBKU0hUTUxNZWRpYUVsZW1l
bnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5j
cHAgKi87IH07CiAJCUNERUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0Eu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2
MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi87IH07CiAJCUNERUE3
NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MzIxNDYwQUUyOTAwOEIzMUYxIC8q
IENsb2NrR2VuZXJpYy5jcHAgKi87IH07CiAJCUNERUE3NjM1MTQ2MEI3MUEwMDhCMzFGMSAvKiBD
bG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REVBNzYzMzE0NjBCNDYyMDA4QjMxRjEgLyogQ2xvY2suY3BwICovOyB9OwogCQlDREVBN0M4NDEy
NzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTdDODIxMjc2MjMwNDAwQjg0NkREIC8qIFJl
bmRlckZ1bGxTY3JlZW4uaCAqLzsgfTsKIAkJQ0RFQTdDODUxMjc2MjMwNDAwQjg0NkREIC8qIFJl
bmRlckZ1bGxTY3JlZW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFQTdDODMxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3Bw
ICovOyB9OworCQlDREY2NUNDODE0NUIxRTc1MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFNDE0
NTc2Nzg3MDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RGNjVDQ0ExNDVCNDQ4ODAwQzRDN0FBIC8q
IE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQzkxNDVCNDNBNzAwQzRDN0FBIC8qIE1lZGlhQ29udHJv
bGxlckludGVyZmFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUNFMDJGMEM0MTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwMkYw
QzMxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UwNTdGQTUxMjIwNzMxMTAw
QTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyog
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0UwNTdGQTYxMjIwNzMxMTAw
QTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1IC8qIERv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0xMzAyMiw2ICsxMzAyNywxMSBAQAogCQlDRDBEQkUwRDE0MjI3
NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXYgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5h
bWUgPSBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1LndhdjsgcGF0aCA9IHBsYXRmb3Jt
L2F1ZGlvL3Jlc291cmNlcy9JUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1Lndhdjsgc291
cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlDRDBEQkUwRTE0MjI3NTk1MDAyODAyNjMgLyog
SVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBJUkNfQ29tcG9z
aXRlX0NfUjAxOTVfVDM0NV9QMzMwLndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNl
cy9JUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzMwLndhdjsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OwogCQlDRDBEQkUwRjE0MjI3NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9D
X1IwMTk1X1QzNDVfUDM0NS53YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0
NV9QMzQ1LndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9JUkNfQ29tcG9zaXRl
X0NfUjAxOTVfVDM0NV9QMzQ1Lndhdjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlD
RDI3RjZFMDE0NTc1QzFCMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRp
YUNvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDI3RjZFMjE0
NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDRDI3RjZFMzE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRy
b2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUNvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyN0Y2RTQxNDU3Njc4NzAwNzgy
MDdEIC8qIE1lZGlhQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyN0Y2
RTYxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEgLyogZnVsbHNjcmVlbi5j
c3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW4uY3NzOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNEODIwMzA3MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEz
MDMwLDYgKzEzMDQwLDggQEAKIAkJQ0Q4MjAzMEUxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRv
d0FuaW1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJXaW5kb3dB
bmltYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4MjAzMEYxMzk1QUNF
NzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdlYldpbmRvd0FuaW1hdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0RCRDkzQkExMzMzQkQ0QjAwMjU3MEUzIC8qIGZ1bGxzY3JlZW5RdWlj
a1RpbWUuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuUXVpY2tUaW1l
LmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDRTVDQ0YxNDYzM0JDOTAwRDQ3
Q0NBIC8qIEV2ZW50RmFjdG9yeS5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFdmVudEZhY3Rv
cnkuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQ0U1Q0QwMTQ2MzNCQzkwMEQ0
N0NDQSAvKiBFdmVudFRhcmdldEZhY3RvcnkuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXZl
bnRUYXJnZXRGYWN0b3J5LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBNzYy
QzE0NjA4MjI0MDA4QjMxRjEgLyogQ2xvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2xvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTc2MkUxNDYw
ODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ0EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDREVBNzYyRjE0NjA4NEVFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ2xvY2tDQS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMwMzgsNiArMTMwNTAsOCBAQAogCQlDREVBNzYz
MzE0NjBCNDYyMDA4QjMxRjEgLyogQ2xvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ2xvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVB
N0M4MjEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJGdWxsU2NyZWVuLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNERUE3QzgzMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZ1bGxTY3Jl
ZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY2NUNDOTE0NUI0M0E3MDBD
NEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREY2NUNDQzE0NUI2QUZFMDBDNEM3QUEgLyogSlNIVE1MTWVkaWFFbGVt
ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRN
TE1lZGlhRWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNF
MDJGMEMzMTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRDb250cm9sbGVyQmFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNFMDU3RkE0MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzM3OCw2ICsxNzM5Miwx
MCBAQAogCQkJCUU0NDYxM0EwMENENjMzMTAwMEZBREE3NSAvKiBWb2lkQ2FsbGJhY2suaWRsICov
LAogCQkJCUY1NUIzREFCMTI1MUYxMkQwMDNFRjI2OSAvKiBXZWVrSW5wdXRUeXBlLmNwcCAqLywK
IAkJCQlGNTVCM0RBQzEyNTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0VHlwZS5oICovLAorCQkJ
CUNEMjdGNkUwMTQ1NzVDMUIwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaWRsICovLAorCQkJ
CUNEMjdGNkU0MTQ1NzY3ODcwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaCAqLywKKwkJCQlD
RDI3RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCAqLywKKwkJCQlD
REY2NUNDOTE0NUI0M0E3MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggKi8s
CiAJCQkpOwogCQkJcGF0aCA9IGh0bWw7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAt
MTc2MTEsNiArMTc2MjksOCBAQAogCQlBODNCNzkwODBDQ0FGRjJCMDAwQjA4MjUgLyogSFRNTCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0QyN0Y2RTIx
NDU3Njc1ODAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLywKKwkJCQlDRDI3RjZF
MzE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuaCAqLywKIAkJCQk0OUVFQ0VG
MjEwNTA3MEM0MDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlci5jcHAgKi8sCiAJCQkJNDlFRUNFRjMx
MDUwNzBDNDAwMDk5RkFCIC8qIEpTQXJyYXlCdWZmZXIuaCAqLywKIAkJCQk0OUVFQ0YxOTEwNTA3
MkYzMDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlclZpZXcuY3BwICovLApAQCAtMTk2MzMsNiArMTk2
NTMsNyBAQAogCQkJCUJDQzQzODc3MEU4ODZDQzcwMDUzM0RENSAvKiBKU0hUTUxJbnB1dEVsZW1l
bnRDdXN0b20uY3BwICovLAogCQkJCUUxQUQxNDIyMTI5NUVBN0YwMEFDQTk4OSAvKiBKU0hUTUxJ
bnB1dEVsZW1lbnRDdXN0b20uaCAqLywKIAkJCQlFMUFEMTM5QTEyOTVEOTI2MDBBQ0E5ODkgLyog
SlNIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwICovLAorCQkJCUNERjY1Q0NDMTQ1QjZBRkUwMEM0
QzdBQSAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDMzA1Q0EzMEMw
NzgxQkIwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlF
MUFEMTQyNDEyOTVFQTk1MDBBQ0E5ODkgLyogSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5oICov
LAogCQkJCTQ0OEFEMjdBMEE0ODEzNzkwMDIzRDE3OSAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlv
bkN1c3RvbS5jcHAgKi8sCkBAIC0yMDk0Niw2ICsyMDk2Nyw4IEBACiAJCUY1MjNEMzI0MDJERTQ0
NzgwMTg2MzVDQSAvKiBkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCUNEQ0U1Q0NGMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudEZhY3RvcnkuaW4gKi8s
CisJCQkJQ0RDRTVDRDAxNDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50VGFyZ2V0RmFjdG9yeS5pbiAq
LywKIAkJCQlFMUM0REU2RDBFQTc1QzY1MDAyM0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0LmNwcCAq
LywKIAkJCQlFMUM0REU2ODBFQTc1QzFFMDAyM0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0LmggKi8s
CiAJCQkJQThDNEE3RkMwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuY3BwICovLApAQCAtMjQ2NDAs
NiArMjQ2NjMsOCBAQAogCQkJCTk3NkYzNkVCMTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNv
bnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMzQ0OTZFMTQ2OTQxQjMwMDcyMDMxMiAvKiBT
VkdMZW5ndGhDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzREMkRBNTE0NkE1MzVEMDBE
NTFGOEIgLyogU2VjdXJpdHlQb2xpY3kuaCBpbiBIZWFkZXJzICovLAorCQkJCUNERjY1Q0M4MTQ1
QjFFNzUwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
RjY1Q0NBMTQ1QjQ0ODgwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjc0OTYsNiArMjc1MjEsOSBAQAogCQkJCUNBRTlGOTBGMTQ2NDQxRjAw
MEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNE
RUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0RFQTc2MzQxNDYwQjU2RjAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlDRDI3RjZFNTE0NTc2ODVBMDA3ODIwN0QgLyogSlNNZWRpYUNvbnRy
b2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QyN0Y2RTcxNDU3NzBEMzAwNzgyMDdEIC8q
IE1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREQ1MjVENzE0NUI2REQw
MDA4RDIwNEQgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNERUE3NjM1MTQ2MEI3MUEwMDhCMzFGMSAvKiBDbG9jay5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5NzZGMzZFQTE0Njg2MjI1MDA1RTkzQjQgLyogU2VjdXJpdHlDb250ZXh0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTcxMzQ0OTZEMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250
ZXh0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKaW5kZXggMWEzNTM3ZDEz
OGI2NjMxMDY1YmE4NzBmMmJkMWY0NjY3ZGIxZTRiZS4uMDIzNTk0OTJkNjc1ZTFmYjFhMDllMzQx
YjNkZDg0Yjk1ZDIxMTkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCkBAIC0xMTMsNiArMTEzLDEx
IEBAIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbFNvdXJjZUVsZW1lbnRFbmFibGVk
KCkKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7CiB9CiAKK2Jvb2wgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFDb250cm9sbGVyRW5hYmxlZCgpCit7CisgICAgcmV0
dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOworfQorCiBib29sIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6Om1lZGlhRXJyb3JFbmFibGVkKCkKIHsKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6
OmlzQXZhaWxhYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dl
bmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDgwMDFiN2E3MGYzOTFhNTU1ZmVj
YzYwNjM0ZjBkZDdhMGY3NmEzZDYuLmMzYTljNjAyZWQwN2ZlZDk1ODIzNmEwZjJjYzRmMzE1NDk2
MTA1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMv
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC05NCw2ICs5NCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBodG1sQXVkaW9FbGVtZW50RW5hYmxlZCgpOwogICAgIHN0YXRpYyBib29sIGh0
bWxWaWRlb0VsZW1lbnRFbmFibGVkKCk7CiAgICAgc3RhdGljIGJvb2wgaHRtbFNvdXJjZUVsZW1l
bnRFbmFibGVkKCk7CisgICAgc3RhdGljIGJvb2wgbWVkaWFDb250cm9sbGVyRW5hYmxlZCgpOwog
ICAgIHN0YXRpYyBib29sIG1lZGlhRXJyb3JFbmFibGVkKCk7CiAgICAgc3RhdGljIGJvb2wgdGlt
ZVJhbmdlc0VuYWJsZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggMDAwYzViZmE3ZjQzNDk3MWZiN2Y0MTFj
MDVkMzFiZjZjZDNhYzUxYy4uY2ZkZDYyYjU5NzgwYzAxMmI1NjBiZDEwNjc2YzRkN2YyN2E4OWIz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5P
bmUuY3BwCkBAIC05Miw2ICs5Miw3IEBACiAjaW5jbHVkZSAiSlNIVE1MRnJhbWVTZXRFbGVtZW50
Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwIgogI2lu
Y2x1ZGUgIkpTSFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU0hUTUxNZWRp
YUVsZW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCIKICNpbmNs
dWRlICJKU0hUTUxPdXRwdXRFbGVtZW50Q3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU5ZWU2ZWZiMmY3MmExNjRkMTgwNjcxYjVlODk1Y2ZlZjZjZmEyZTUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0
b20uY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgRU5BQkxFKFZJREVPKQorCisj
aW5jbHVkZSAiSlNIVE1MTWVkaWFFbGVtZW50LmgiCisKKyNpbmNsdWRlICJKU01lZGlhQ29udHJv
bGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisK
K3ZvaWQgSlNIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNvbnRyb2xsZXIoRXhlY1N0YXRlKiwg
SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBpbXAgPSBzdGF0aWNfY2Fz
dDxIVE1MTWVkaWFFbGVtZW50Kj4oaW1wbCgpKTsKKyAgICAvLyBPbiBzZXR0aW5nLCBpdCBtdXN0
IGZpcnN0IHJlbW92ZSB0aGUgZWxlbWVudCdzIG1lZGlhZ3JvdXAgYXR0cmlidXRlLCBpZiBhbnks
IAorICAgIGltcC0+c2V0TWVkaWFHcm91cChTdHJpbmcoKSk7CisgICAgLy8gYW5kIHRoZW4gc2V0
IHRoZSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIgdG8gdGhlIGdpdmVuIHZhbHVlLgorICAgIGlt
cC0+c2V0TWVkaWFDb250cm9sbGVyKHRvTWVkaWFDb250cm9sbGVyKHZhbHVlKSk7Cit9CisKK30K
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODUwZjkwY2Y4
YzQwZDI5MTE0OGUwMjhlNDk2NDBkMzA4N2VjMjJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1
ZGUgIlY4SFRNTE1lZGlhRWxlbWVudC5oIgorCisjaW5jbHVkZSAiVjhNZWRpYUNvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBW
OEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhQ29udHJvbGxlckFjY2Vzc29yU2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5IVE1MTWVkaWFFbGVt
ZW50Lm1lZGlhQ29udHJvbGxlci5fc2V0Iik7CisgICAgSFRNTE1lZGlhRWxlbWVudCogaW1wID0g
VjhIVE1MTWVkaWFFbGVtZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBNZWRpYUNv
bnRyb2xsZXIqIGNvbnRyb2xsZXIgPSAwOworICAgIGlmIChWOE1lZGlhQ29udHJvbGxlcjo6SGFz
SW5zdGFuY2UodmFsdWUpKQorICAgICAgICBjb250cm9sbGVyID0gVjhNZWRpYUNvbnRyb2xsZXI6
OnRvTmF0aXZlKHZhbHVlLT5Ub09iamVjdCgpKTsKKyAgICAKKyAgICBpZiAoIWNvbnRyb2xsZXIp
IHsKKyAgICAgICAgdGhyb3dFcnJvcigiVmFsdWUgaXMgbm90IG9mIHR5cGUgTWVkaWFDb250cm9s
bGVyIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbXAtPnNldE1lZGlhQ29udHJv
bGxlcihjb250cm9sbGVyKTsKK30KKworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuaAppbmRleCBjNmYxZjNkNDQzYjg1YjZmNjQyMGNlZWM5NGJlZmIyMjc4NjJkNDQ2Li5iYWYw
ZWZjODlkNGFkZWFhYjMxYzcyMzMwZjhkMTVkZTE5ZDk4OGUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuaApAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q7CiAgICAgY2xhc3MgSmF2YVNjcmlwdEF1ZGlvTm9kZTsK
ICAgICBjbGFzcyBMb2NhbE1lZGlhU3RyZWFtOworICAgIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsK
ICAgICBjbGFzcyBNZWRpYVN0cmVhbTsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFz
cyBOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9y
eS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggNmJk
YjJlMjFjYTk2YjNlMTBkM2JlMWM3MWVmNzMwZDI3ZjAwZDkxZC4uMmEzODkwMzU3YmFmOWU5NjZh
N2YxMzcxNGQ2MTBlZjdkZTEwODRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRG
YWN0b3J5LmluCkBAIC0xMyw2ICsxMyw3IEBAIElEQlRyYW5zYWN0aW9uIGNvbmRpdGlvbmFsPUlO
REVYRURfREFUQUJBU0UKIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IGNvbmRpdGlvbmFsPUlOREVY
RURfREFUQUJBU0UKIEphdmFTY3JpcHRBdWRpb05vZGUgY29uZGl0aW9uYWw9V0VCX0FVRElPCiBM
b2NhbE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorTWVkaWFDb250cm9sbGVy
IGNvbmRpdGlvbmFsPVZJREVPCiBNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0K
IE1lc3NhZ2VQb3J0CiBOb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
dHRyaWJ1dGVOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVz
LmluCmluZGV4IGYxZTM1NGI2MzFmNDliYTNhYzEwMWU1NTEzZDI3NWFjNWQyZDA5ODIuLmFlNWZi
NzFjZWVlODY0MDk4MzZmZTJkNTAxZWMzZmE5OTBiYTM3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBAIC0xNDgsNiArMTQ4LDcgQEAgbWF4CiBtYXhsZW5n
dGgKIG1heXNjcmlwdAogbWVkaWEKK21lZGlhZ3JvdXAKIG1ldGhvZAogbWluCiBtdWx0aXBsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYzAwYzY0MDU5ZTQz
NDJmZWE5NTc2ZmU5NmFhOWU2MDdkMmZlMWQ3Yi4uNmIzZDM0YjMzYjJmODAzNGVkMzJmYWRlNmM3
OWE5ZTdhMTE0ODczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiSFRNTFNvdXJjZUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
Ik1lZGlhQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKICNpbmNsdWRl
ICJNZWRpYURvY3VtZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFFcnJvci5oIgpAQCAtMTM2LDYgKzEz
NywzMSBAQCBzdGF0aWMgY29uc3QgY2hhciogbWVkaWFTb3VyY2VVUkxQcm90b2NvbCA9ICJ4LW1l
ZGlhLXNvdXJjZSI7CiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKK3VzaW5n
IG5hbWVzcGFjZSBzdGQ7CisKK3R5cGVkZWYgSGFzaE1hcDxEb2N1bWVudCosIEhhc2hTZXQ8SFRN
TE1lZGlhRWxlbWVudCo+ID4gRG9jRWxlbWVudFNldE1hcDsKK3N0YXRpYyBEb2NFbGVtZW50U2V0
TWFwJiBkb2N1bWVudFRvRWxlbWVudFNldE1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChEb2NFbGVtZW50U2V0TWFwLCBtYXAsICgpKTsKKyAgICByZXR1cm4gbWFwOworfQorCitzdGF0
aWMgdm9pZCBhZGRFbGVtZW50VG9Eb2N1bWVudE1hcChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50
LCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgRG9jRWxlbWVudFNldE1hcCYgbWFwID0gZG9j
dW1lbnRUb0VsZW1lbnRTZXRNYXAoKTsKKyAgICBIYXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPiBz
ZXQgPSBtYXAudGFrZShkb2N1bWVudCk7CisgICAgc2V0LmFkZChlbGVtZW50KTsKKyAgICBtYXAu
YWRkKGRvY3VtZW50LCBzZXQpOworfQorCitzdGF0aWMgdm9pZCByZW1vdmVFbGVtZW50RnJvbURv
Y3VtZW50TWFwKEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQsIERvY3VtZW50KiBkb2N1bWVudCkK
K3sKKyAgICBEb2NFbGVtZW50U2V0TWFwJiBtYXAgPSBkb2N1bWVudFRvRWxlbWVudFNldE1hcCgp
OworICAgIEhhc2hTZXQ8SFRNTE1lZGlhRWxlbWVudCo+IHNldCA9IG1hcC50YWtlKGRvY3VtZW50
KTsKKyAgICBzZXQucmVtb3ZlKGVsZW1lbnQpOworICAgIGlmICghc2V0LmlzRW1wdHkoKSkKKyAg
ICAgICAgbWFwLmFkZChkb2N1bWVudCwgc2V0KTsKK30KIAogSFRNTE1lZGlhRWxlbWVudDo6SFRN
TE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTIxMyw2ICsy
MzksNyBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bQogI2VuZGlmCiAKICAgICBzZXRIYXNDdXN0
b21XaWxsT3JEaWRSZWNhbGNTdHlsZSgpOworICAgIGFkZEVsZW1lbnRUb0RvY3VtZW50TWFwKHRo
aXMsIGRvY3VtZW50KTsKIH0KIAogSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQo
KQpAQCAtMjI4LDYgKzI1NSwxMSBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVu
dCgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4dFRyYWNrcy5zaXplKCk7ICsr
aSkKICAgICAgICAgbV90ZXh0VHJhY2tzW2ldLT5zZXRDbGllbnQoMCk7CiAjZW5kaWYKKworICAg
IGlmIChtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgbV9tZWRpYUNvbnRyb2xsZXItPnJlbW92
ZU1lZGlhRWxlbWVudCh0aGlzKTsKKworICAgIHJlbW92ZUVsZW1lbnRGcm9tRG9jdW1lbnRNYXAo
dGhpcywgZG9jdW1lbnQoKSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbE1vdmVU
b05ld093bmVyRG9jdW1lbnQoKQpAQCAtMjM3LDYgKzI2OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQogICAgIHNldFNob3VsZERlbGF5TG9h
ZEV2ZW50KGZhbHNlKTsKICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3Rp
dmF0aW9uQ2FsbGJhY2tzKHRoaXMpOwogICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JNZWRp
YVZvbHVtZUNhbGxiYWNrcyh0aGlzKTsKKyAgICByZW1vdmVFbGVtZW50RnJvbURvY3VtZW50TWFw
KHRoaXMsIGRvY3VtZW50KCkpOwogICAgIEhUTUxFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJE
b2N1bWVudCgpOwogfQogCkBAIC0yNDgsNiArMjgxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKICAgICAgICAgc2V0U2hvdWxkRGVsYXlMb2Fk
RXZlbnQodHJ1ZSk7CiAgICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRp
b25DYWxsYmFja3ModGhpcyk7CiAgICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JNZWRpYVZvbHVt
ZUNhbGxiYWNrcyh0aGlzKTsKKyAgICBhZGRFbGVtZW50VG9Eb2N1bWVudE1hcCh0aGlzLCBkb2N1
bWVudCgpKTsKICAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwog
fQogCkBAIC0yOTQsNyArMzI4LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIGlmICghYXV0b3BsYXkoKSAmJiBt
X3BsYXllcikKICAgICAgICAgICAgIG1fcGxheWVyLT5zZXRQcmVsb2FkKG1fcHJlbG9hZCk7CiAK
LSAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IG9uYWJvcnRBdHRyKQorICAgIH0gZWxzZSBpZiAo
YXR0ck5hbWUgPT0gbWVkaWFncm91cEF0dHIpCisgICAgICAgIHNldE1lZGlhR3JvdXAoYXR0ci0+
dmFsdWUoKSk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25hYm9ydEF0dHIpCiAgICAgICAg
IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmFib3J0RXZlbnQsIGNyZWF0
ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgaWYgKGF0dHJO
YW1lID09IG9uYmVmb3JlbG9hZEF0dHIpCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0
ZW5lcih0aGlzLCBhdHRyKSk7CkBAIC01ODQsMTAgKzYyMCwxMSBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnByZXBhcmVGb3JMb2FkKCkKICAgICAgICAgbV9zZWVraW5nID0gZmFsc2U7CiAgICAg
ICAgIGludmFsaWRhdGVDYWNoZWRUaW1lKCk7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnRO
YW1lcygpLmVtcHRpZWRFdmVudCk7CisgICAgICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOwog
ICAgIH0KIAogICAgIC8vIDUgLSBTZXQgdGhlIHBsYXliYWNrUmF0ZSBhdHRyaWJ1dGUgdG8gdGhl
IHZhbHVlIG9mIHRoZSBkZWZhdWx0UGxheWJhY2tSYXRlIGF0dHJpYnV0ZS4KLSAgICBzZXRQbGF5
YmFja1JhdGUoZGVmYXVsdFBsYXliYWNrUmF0ZSgpKTsKKyAgICBzZXRQbGF5YmFja1JhdGUobV9t
ZWRpYUNvbnRyb2xsZXIgPyBtX21lZGlhQ29udHJvbGxlci0+ZGVmYXVsdFBsYXliYWNrUmF0ZSgp
IDogZGVmYXVsdFBsYXliYWNrUmF0ZSgpKTsKIAogICAgIC8vIDYgLSBTZXQgdGhlIGVycm9yIGF0
dHJpYnV0ZSB0byBudWxsIGFuZCB0aGUgYXV0b3BsYXlpbmcgZmxhZyB0byB0cnVlLgogICAgIG1f
ZXJyb3IgPSAwOwpAQCAtMTIyNCw2ICsxMjYxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQogICAgIH0KIAogICAg
IHVwZGF0ZVBsYXlTdGF0ZSgpOworICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOwogfQogCiAj
aWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKQEAgLTE1MjMsNiArMTU2MSwxMCBAQCBmbG9hdCBIVE1M
TWVkaWFFbGVtZW50OjpjdXJyZW50VGltZSgpIGNvbnN0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0Q3VycmVudFRpbWUoZmxvYXQgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAg
aWYgKG1fbWVkaWFDb250cm9sbGVyKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgc2Vlayh0aW1lLCBlYyk7CiB9CiAKQEAgLTE1
NzQsMTMgKzE2MTYsMTQgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tSYXRlKCkg
Y29uc3QKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUp
CiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKCVm
KSIsIHJhdGUpOwotCisgICAgCiAgICAgaWYgKG1fcGxheWJhY2tSYXRlICE9IHJhdGUpIHsKICAg
ICAgICAgbV9wbGF5YmFja1JhdGUgPSByYXRlOwogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVkVGlt
ZSgpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQp
OwogICAgIH0KLSAgICBpZiAobV9wbGF5ZXIgJiYgcG90ZW50aWFsbHlQbGF5aW5nKCkgJiYgbV9w
bGF5ZXItPnJhdGUoKSAhPSByYXRlKQorCisgICAgaWYgKG1fcGxheWVyICYmIHBvdGVudGlhbGx5
UGxheWluZygpICYmIG1fcGxheWVyLT5yYXRlKCkgIT0gcmF0ZSAmJiAhbV9tZWRpYUNvbnRyb2xs
ZXIpCiAgICAgICAgIG1fcGxheWVyLT5zZXRSYXRlKHJhdGUpOwogfQogCkBAIC0xNjc2LDcgKzE3
MTksMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwoKQogICAgICAgICBF
eGNlcHRpb25Db2RlIHVudXNlZDsKICAgICAgICAgc2VlaygwLCB1bnVzZWQpOwogICAgIH0KLSAg
ICAKKworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgbV9tZWRpYUNvbnRyb2xs
ZXItPmJyaW5nRWxlbWVudFVwVG9TcGVlZCh0aGlzKTsKKwogICAgIGlmIChtX3BhdXNlZCkgewog
ICAgICAgICBtX3BhdXNlZCA9IGZhbHNlOwogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVkVGltZSgp
OwpAQCAtMTY5MCw2ICsxNzM2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJu
YWwoKQogICAgIG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKIAogICAgIHVwZGF0ZVBsYXlTdGF0ZSgp
OworICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnBhdXNlKCkKQEAgLTE4ODEsNyArMTkyOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dG9nZ2xlUGxheVN0YXRlKCkKICAgICAvLyBXZSBjYW4gc2FmZWx5IGNhbGwgdGhlIGludGVybmFs
IHBsYXkvcGF1c2UgbWV0aG9kcywgd2hpY2ggZG9uJ3QgY2hlY2sgcmVzdHJpY3Rpb25zLCBiZWNh
dXNlCiAgICAgLy8gdGhpcyBtZXRob2QgaXMgb25seSBjYWxsZWQgZnJvbSB0aGUgYnVpbHQtaW4g
bWVkaWEgY29udHJvbGxlcgogICAgIGlmIChjYW5QbGF5KCkpIHsKLSAgICAgICAgc2V0UGxheWJh
Y2tSYXRlKGRlZmF1bHRQbGF5YmFja1JhdGUoKSk7CisgICAgICAgIHNldFBsYXliYWNrUmF0ZSht
X21lZGlhQ29udHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5kZWZhdWx0UGxheWJhY2tSYXRl
KCkgOiBkZWZhdWx0UGxheWJhY2tSYXRlKCkpOwogICAgICAgICBwbGF5SW50ZXJuYWwoKTsKICAg
ICB9IGVsc2UgCiAgICAgICAgIHBhdXNlSW50ZXJuYWwoKTsKQEAgLTIyMjksMjAgKzIyNzYsMzMg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKE1lZGlhUGxh
eWVyKikKIAogICAgIGZsb2F0IG5vdyA9IGN1cnJlbnRUaW1lKCk7CiAgICAgZmxvYXQgZHVyID0g
ZHVyYXRpb24oKTsKLSAgICBpZiAoIWlzbmFuKGR1cikgJiYgZHVyICYmIG5vdyA+PSBkdXIpIHsK
LSAgICAgICAgaWYgKGxvb3AoKSkgeworICAgIAorICAgIC8vIFdoZW4gdGhlIGN1cnJlbnQgcGxh
eWJhY2sgcG9zaXRpb24gcmVhY2hlcyB0aGUgZW5kIG9mIHRoZSBtZWRpYSByZXNvdXJjZSB3aGVu
IHRoZSBkaXJlY3Rpb24gb2YKKyAgICAvLyBwbGF5YmFjayBpcyBmb3J3YXJkcywgdGhlbiB0aGUg
dXNlciBhZ2VudCBtdXN0IGZvbGxvdyB0aGVzZSBzdGVwczoKKyAgICBpZiAoIWlzbmFuKGR1cikg
JiYgZHVyICYmIG5vdyA+PSBkdXIgJiYgbV9wbGF5YmFja1JhdGUgPiAwKSB7CisgICAgICAgIC8v
IElmIHRoZSBtZWRpYSBlbGVtZW50IGhhcyBhIGxvb3AgYXR0cmlidXRlIHNwZWNpZmllZCBhbmQg
ZG9lcyBub3QgaGF2ZSBhIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlciwKKyAgICAgICAgaWYgKGxv
b3AoKSAmJiAhbV9tZWRpYUNvbnRyb2xsZXIpIHsKICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUg
aWdub3JlZEV4Y2VwdGlvbjsKICAgICAgICAgICAgIG1fc2VudEVuZEV2ZW50ID0gZmFsc2U7Cisg
ICAgICAgICAgICAvLyAgdGhlbiBzZWVrIHRvIHRoZSBlYXJsaWVzdCBwb3NzaWJsZSBwb3NpdGlv
biBvZiB0aGUgbWVkaWEgcmVzb3VyY2UgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICAg
ICAgc2VlaygwLCBpZ25vcmVkRXhjZXB0aW9uKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGlmICghbV9wYXVzZWQpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBtZWRpYSBlbGVtZW50
IGRvZXMgbm90IGhhdmUgYSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIsIGFuZCB0aGUgbWVkaWEg
ZWxlbWVudAorICAgICAgICAgICAgLy8gaGFzIHN0aWxsIGVuZGVkIHBsYXliYWNrLCBhbmQgdGhl
IGRpcmVjdGlvbiBvZiBwbGF5YmFjayBpcyBzdGlsbCBmb3J3YXJkcywgYW5kIHBhdXNlZAorICAg
ICAgICAgICAgLy8gaXMgZmFsc2UsCisgICAgICAgICAgICBpZiAoIW1fbWVkaWFDb250cm9sbGVy
ICYmICFtX3BhdXNlZCkgeworICAgICAgICAgICAgICAgIC8vIGNoYW5nZXMgcGF1c2VkIHRvIHRy
dWUgYW5kIGZpcmVzIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHBhdXNlIGF0IHRoZSBtZWRpYSBlbGVt
ZW50LgogICAgICAgICAgICAgICAgIG1fcGF1c2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBz
Y2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC8vIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGVu
ZGVkIGF0IHRoZSBtZWRpYSBlbGVtZW50LgogICAgICAgICAgICAgaWYgKCFtX3NlbnRFbmRFdmVu
dCkgewogICAgICAgICAgICAgICAgIG1fc2VudEVuZEV2ZW50ID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KTsKICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIC8vIElmIHRoZSBtZWRpYSBlbGVtZW50IGhhcyBhIGN1cnJlbnQgbWVk
aWEgY29udHJvbGxlciwgdGhlbiByZXBvcnQgdGhlIGNvbnRyb2xsZXIgc3RhdGUKKyAgICAgICAg
ICAgIC8vIGZvciB0aGUgbWVkaWEgZWxlbWVudCdzIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlci4K
KyAgICAgICAgICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOwogICAgICAgICB9CiAgICAgfQog
ICAgIGVsc2UKQEAgLTI0MjYsMTAgKzI0ODYsNyBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IEhU
TUxNZWRpYUVsZW1lbnQ6OnBsYXllZCgpCiAKIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gSFRNTE1l
ZGlhRWxlbWVudDo6c2Vla2FibGUoKSBjb25zdAogewotICAgIC8vIEZJWE1FIHJlYWwgcmFuZ2Vz
IHN1cHBvcnQKLSAgICBpZiAoIW1heFRpbWVTZWVrYWJsZSgpKQotICAgICAgICByZXR1cm4gVGlt
ZVJhbmdlczo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZShtaW5UaW1l
U2Vla2FibGUoKSwgbWF4VGltZVNlZWthYmxlKCkpOworICAgIHJldHVybiBtX3BsYXllciA/IG1f
cGxheWVyLT5zZWVrYWJsZSgpIDogVGltZVJhbmdlczo6Y3JlYXRlKCk7CiB9CiAKIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6cG90ZW50aWFsbHlQbGF5aW5nKCkgY29uc3QKQEAgLTI0MzgsNyArMjQ5
NSw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cG90ZW50aWFsbHlQbGF5aW5nKCkgY29uc3QK
ICAgICAvLyB3aGVuIGl0IHJhbiBvdXQgb2YgYnVmZmVyZWQgZGF0YS4gQSBtb3ZpZSBpcyB0aGlz
IHN0YXRlIGlzICJwb3RlbnRpYWxseSBwbGF5aW5nIiwgbW9kdWxvIHRoZQogICAgIC8vIGNoZWNr
cyBpbiBjb3VsZFBsYXlJZkVub3VnaERhdGEoKS4KICAgICBib29sIHBhdXNlZFRvQnVmZmVyID0g
bV9yZWFkeVN0YXRlTWF4aW11bSA+PSBIQVZFX0ZVVFVSRV9EQVRBICYmIG1fcmVhZHlTdGF0ZSA8
IEhBVkVfRlVUVVJFX0RBVEE7Ci0gICAgcmV0dXJuIChwYXVzZWRUb0J1ZmZlciB8fCBtX3JlYWR5
U3RhdGUgPj0gSEFWRV9GVVRVUkVfREFUQSkgJiYgY291bGRQbGF5SWZFbm91Z2hEYXRhKCk7Cisg
ICAgcmV0dXJuIChwYXVzZWRUb0J1ZmZlciB8fCBtX3JlYWR5U3RhdGUgPj0gSEFWRV9GVVRVUkVf
REFUQSkgJiYgY291bGRQbGF5SWZFbm91Z2hEYXRhKCkgJiYgIWlzQmxvY2tlZE9uTWVkaWFDb250
cm9sbGVyKCk7CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y291bGRQbGF5SWZFbm91Z2hE
YXRhKCkgY29uc3QKQEAgLTI0NjAsMTAgKzI1MTcsMTEgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50
OjplbmRlZFBsYXliYWNrKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
YW5kIHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIGlzIHRoZSBlbmQgb2YgdGhlIG1lZGlh
IHJlc291cmNlIGFuZCB0aGUgZGlyZWN0aW9uCi0gICAgLy8gb2YgcGxheWJhY2sgaXMgZm9yd2Fy
ZHMgYW5kIHRoZSBtZWRpYSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBsb29wIGF0dHJpYnV0ZSBz
cGVjaWZpZWQsCisgICAgLy8gb2YgcGxheWJhY2sgaXMgZm9yd2FyZHMsIEVpdGhlciB0aGUgbWVk
aWEgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgbG9vcCBhdHRyaWJ1dGUgc3BlY2lmaWVkLAorICAg
IC8vIG9yIHRoZSBtZWRpYSBlbGVtZW50IGhhcyBhIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlci4K
ICAgICBmbG9hdCBub3cgPSBjdXJyZW50VGltZSgpOwogICAgIGlmIChtX3BsYXliYWNrUmF0ZSA+
IDApCi0gICAgICAgIHJldHVybiBkdXIgPiAwICYmIG5vdyA+PSBkdXIgJiYgIWxvb3AoKTsKKyAg
ICAgICAgcmV0dXJuIGR1ciA+IDAgJiYgbm93ID49IGR1ciAmJiAoIWxvb3AoKSB8fCBtX21lZGlh
Q29udHJvbGxlcik7CiAKICAgICAvLyBvciB0aGUgY3VycmVudCBwbGF5YmFjayBwb3NpdGlvbiBp
cyB0aGUgZWFybGllc3QgcG9zc2libGUgcG9zaXRpb24gYW5kIHRoZSBkaXJlY3Rpb24gCiAgICAg
Ly8gb2YgcGxheWJhY2sgaXMgYmFja3dhcmRzCkBAIC0yNTA5LDggKzI1NjcsMTQgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVWb2x1bWUoKQogICAgIGlmICghcHJvY2Vzc2luZ01lZGlh
UGxheWVyQ2FsbGJhY2soKSkgewogICAgICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFn
ZSgpOwogICAgICAgICBmbG9hdCB2b2x1bWVNdWx0aXBsaWVyID0gcGFnZSA/IHBhZ2UtPm1lZGlh
Vm9sdW1lKCkgOiAxOwotICAgIAotICAgICAgICBtX3BsYXllci0+c2V0TXV0ZWQobV9tdXRlZCk7
CisgICAgICAgIGJvb2wgc2hvdWxkTXV0ZSA9IG1fbXV0ZWQ7CisKKyAgICAgICAgaWYgKG1fbWVk
aWFDb250cm9sbGVyKSB7CisgICAgICAgICAgICB2b2x1bWVNdWx0aXBsaWVyICo9IG1fbWVkaWFD
b250cm9sbGVyLT52b2x1bWUoKTsKKyAgICAgICAgICAgIHNob3VsZE11dGUgPSBtX21lZGlhQ29u
dHJvbGxlci0+bXV0ZWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1fcGxheWVyLT5zZXRNdXRl
ZChzaG91bGRNdXRlKTsKICAgICAgICAgbV9wbGF5ZXItPnNldFZvbHVtZShtX3ZvbHVtZSAqIHZv
bHVtZU11bHRpcGxpZXIpOwogICAgIH0KIApAQCAtMjU3NywxMSArMjY0MSwxMyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSgpCiAgICAgICAgIGlmIChoYXNNZWRpYUNv
bnRyb2xzKCkpCiAgICAgICAgICAgICBtZWRpYUNvbnRyb2xzKCktPnBsYXliYWNrU3RvcHBlZCgp
OwogICAgIH0KLSAgICAKKworICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOworCiAgICAgaWYg
KHJlbmRlcmVyKCkpCiAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9
Ci0gICAgCisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGF1c2VkSW50ZXJuYWwoYm9vbCBi
KQogewogICAgIG1fcGF1c2VkSW50ZXJuYWwgPSBiOwpAQCAtMjY0MSw2ICsyNzA3LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9hZCgpCiAKICAgICAvLyBSZXNldCBt
X3JlYWR5U3RhdGUgc2luY2UgbV9wbGF5ZXIgaXMgZ29uZS4KICAgICBtX3JlYWR5U3RhdGUgPSBI
QVZFX05PVEhJTkc7CisgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiB9CiAKIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6Y2FuU3VzcGVuZCgpIGNvbnN0CkBAIC0zMTMzLDYgKzMyMDAsOTggQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRJdGVtVmFsdWVUZXh0KGNvbnN0IFN0cmluZyYgdmFs
dWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogfQogI2VuZGlmCiAKK2NvbnN0IFN0cmluZyYgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFHcm91cCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFHcm91
cDsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUdyb3VwKGNvbnN0IFN0cmlu
ZyYgZ3JvdXApCit7CisgICAgaWYgKG1fbWVkaWFHcm91cCA9PSBncm91cCkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fbWVkaWFHcm91cCA9IGdyb3VwOworCisgICAgLy8gV2hlbiBhIG1lZGlhIGVs
ZW1lbnQgaXMgY3JlYXRlZCB3aXRoIGEgbWVkaWFncm91cCBhdHRyaWJ1dGUsIGFuZCB3aGVuIGEg
bWVkaWEgZWxlbWVudCdzIG1lZGlhZ3JvdXAgCisgICAgLy8gYXR0cmlidXRlIGlzIHNldCwgY2hh
bmdlZCwgb3IgcmVtb3ZlZCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBz
dGVwczoKKyAgICAvLyAxLiBMZXQgbSBbdGhpc10gYmUgdGhlIG1lZGlhIGVsZW1lbnQgaW4gcXVl
c3Rpb24uCisgICAgLy8gMi4gTGV0IG0gaGF2ZSBubyBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIs
IGlmIGl0IGN1cnJlbnRseSBoYXMgb25lLgorICAgIHNldE1lZGlhQ29udHJvbGxlcigwKTsKKyAg
ICAvLyAzLiBJZiBtJ3MgbWVkaWFncm91cCBhdHRyaWJ1dGUgaXMgYmVpbmcgcmVtb3ZlZCwgdGhl
biBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoZ3JvdXAuaXNOdWxsKCkgfHwgZ3JvdXAuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgLy8gNC4gSWYgdGhlcmUgaXMgYW5vdGhlciBt
ZWRpYSBlbGVtZW50IHdob3NlIERvY3VtZW50IGlzIHRoZSBzYW1lIGFzIG0ncyBEb2N1bWVudCAo
ZXZlbiBpZiBvbmUgb3IgYm90aAorICAgIC8vIG9mIHRoZXNlIGVsZW1lbnRzIGFyZSBub3QgYWN0
dWFsbHkgaW4gdGhlIERvY3VtZW50KSwgCisgICAgSGFzaFNldDxIVE1MTWVkaWFFbGVtZW50Kj4g
ZWxlbWVudHMgPSBkb2N1bWVudFRvRWxlbWVudFNldE1hcCgpLmdldChkb2N1bWVudCgpKTsKKyAg
ICBmb3IgKEhhc2hTZXQ8SFRNTE1lZGlhRWxlbWVudCo+OjppdGVyYXRvciBpID0gZWxlbWVudHMu
YmVnaW4oKTsgaSAhPSBlbGVtZW50cy5lbmQoKTsgKytpKSB7CisgICAgICAgIGlmICgqaSA9PSB0
aGlzKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gYW5kIHdoaWNoIGFsc28g
aGFzIGEgbWVkaWFncm91cCBhdHRyaWJ1dGUsIGFuZCB3aG9zZSBtZWRpYWdyb3VwIGF0dHJpYnV0
ZSBoYXMgdGhlIHNhbWUgdmFsdWUgYXMKKyAgICAgICAgLy8gdGhlIG5ldyB2YWx1ZSBvZiBtJ3Mg
bWVkaWFncm91cCBhdHRyaWJ1dGUsICAgICAgICAKKyAgICAgICAgaWYgKCgqaSktPm1lZGlhR3Jv
dXAoKSA9PSBncm91cCkgeworICAgICAgICAgICAgLy8gIHRoZW4gbGV0IGNvbnRyb2xsZXIgYmUg
dGhhdCBtZWRpYSBlbGVtZW50J3MgY3VycmVudCBtZWRpYSBjb250cm9sbGVyLgorICAgICAgICAg
ICAgc2V0TWVkaWFDb250cm9sbGVyKCgqaSktPm1lZGlhQ29udHJvbGxlcigpKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIE90aGVyd2lzZSwgbGV0IGNv
bnRyb2xsZXIgYmUgYSBuZXdseSBjcmVhdGVkIE1lZGlhQ29udHJvbGxlci4KKyAgICBzZXRNZWRp
YUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVyOjpjcmVhdGUoKSk7Cit9CisKK01lZGlhQ29udHJv
bGxlciogSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFDb250cm9sbGVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9tZWRpYUNvbnRyb2xsZXIuZ2V0KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0TWVkaWFDb250cm9sbGVyKFBhc3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBjb250cm9s
bGVyKQoreworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgbV9tZWRpYUNvbnRy
b2xsZXItPnJlbW92ZU1lZGlhRWxlbWVudCh0aGlzKTsKKworICAgIG1fbWVkaWFDb250cm9sbGVy
ID0gY29udHJvbGxlcjsKKworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgbV9t
ZWRpYUNvbnRyb2xsZXItPmFkZE1lZGlhRWxlbWVudCh0aGlzKTsKK30KKwordm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojp1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKQoreworICAgIGlmIChtX21lZGlhQ29u
dHJvbGxlcikKKyAgICAgICAgbV9tZWRpYUNvbnRyb2xsZXItPnJlcG9ydENvbnRyb2xsZXJTdGF0
ZSgpOworfQorCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzQmxvY2tlZCgpIGNvbnN0Cit7Cisg
ICAgLy8gQSBtZWRpYSBlbGVtZW50IGlzIGEgYmxvY2tlZCBtZWRpYSBlbGVtZW50IGlmIGl0cyBy
ZWFkeVN0YXRlIGF0dHJpYnV0ZSBpcyBpbiB0aGUKKyAgICAvLyBIQVZFX05PVEhJTkcgc3RhdGUs
IHRoZSBIQVZFX01FVEFEQVRBIHN0YXRlLCBvciB0aGUgSEFWRV9DVVJSRU5UX0RBVEEgc3RhdGUs
CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA8PSBIQVZFX0NVUlJFTlRfREFUQSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICAvLyBvciBpZiB0aGUgZWxlbWVudCBoYXMgcGF1c2VkIGZvciB1c2Vy
IGludGVyYWN0aW9uLgorICAgIHJldHVybiBwYXVzZWRGb3JVc2VySW50ZXJhY3Rpb24oKTsKK30K
KworYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigpIGNv
bnN0Cit7CisgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgLy8gQSBtZWRpYSBlbGVtZW50IGlzIGJsb2NrZWQgb24gaXRzIG1lZGlhIGNvbnRy
b2xsZXIgaWYgdGhlIE1lZGlhQ29udHJvbGxlciBpcyBhIGJsb2NrZWQgCisgICAgLy8gbWVkaWEg
Y29udHJvbGxlciwKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPmlzQmxvY2tlZCgpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIG9yIGlmIGl0cyBtZWRpYSBjb250cm9sbGVyIHBv
c2l0aW9uIGlzIGVpdGhlciBiZWZvcmUgdGhlIG1lZGlhIHJlc291cmNlJ3MgZWFybGllc3QgcG9z
c2libGUgCisgICAgLy8gcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIE1lZGlhQ29udHJvbGxlcidz
IHRpbWVsaW5lIG9yIGFmdGVyIHRoZSBlbmQgb2YgdGhlIG1lZGlhIHJlc291cmNlIAorICAgIC8v
IHJlbGF0aXZlIHRvIHRoZSBNZWRpYUNvbnRyb2xsZXIncyB0aW1lbGluZS4KKyAgICBmbG9hdCBt
ZWRpYUNvbnRyb2xsZXJQb3NpdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgp
OworICAgIGlmIChtZWRpYUNvbnRyb2xsZXJQb3NpdGlvbiA8IHN0YXJ0VGltZSgpIHx8IG1lZGlh
Q29udHJvbGxlclBvc2l0aW9uID4gc3RhcnRUaW1lKCkgKyBkdXJhdGlvbigpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMGQyZjlmYzQ5ZTEwMGNiNTE3YmVm
MGQxNTBhYzRmNzdhNTc1ZTllYy4uZWU5Y2JhZTJiZGYzNjdiZDc5MWQ4MmQ4ZGMyOGY5MjVlMGQ0
NmI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIk1lZGlh
Q29udHJvbGxlckludGVyZmFjZS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAKICNpZiBF
TkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKQEAgLTUwLDYgKzUxLDcgQEAgY2xhc3MgTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBIVE1MU291cmNl
RWxlbWVudDsKIGNsYXNzIEhUTUxUcmFja0VsZW1lbnQ7CitjbGFzcyBNZWRpYUNvbnRyb2xsZXI7
CiBjbGFzcyBNZWRpYUNvbnRyb2xzOwogY2xhc3MgTWVkaWFFcnJvcjsKIGNsYXNzIEtVUkw7CkBA
IC02Myw3ICs2NSw3IEBAIGNsYXNzIFdpZGdldDsKIC8vIEJ1dCBpdCBjYW4ndCBiZSB1bnRpbCB0
aGUgQ2hyb21pdW0gV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsIGNsYXNzIGlzIGZpeGVkIHNvIGl0
CiAvLyBubyBsb25nZXIgZGVwZW5kcyBvbiB0eXBlY2FzdGluZyBhIE1lZGlhUGxheWVyQ2xpZW50
IHRvIGFuIEhUTUxNZWRpYUVsZW1lbnQuCiAKLWNsYXNzIEhUTUxNZWRpYUVsZW1lbnQgOiBwdWJs
aWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBNZWRpYVBsYXllckNsaWVudCwgcHJpdmF0ZSBNZWRpYUNh
blN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QKK2NsYXNzIEhUTUxNZWRpYUVs
ZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBNZWRpYVBsYXllckNsaWVudCwgcHJp
dmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1Ymxp
YyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAg
LCBwcml2YXRlIFRleHRUcmFja0NsaWVudAogI2VuZGlmCkBAIC0xMDUsNyArMTA3LDcgQEAgcHVi
bGljOgogCiAgICAgZW51bSBOZXR3b3JrU3RhdGUgeyBORVRXT1JLX0VNUFRZLCBORVRXT1JLX0lE
TEUsIE5FVFdPUktfTE9BRElORywgTkVUV09SS19OT19TT1VSQ0UgfTsKICAgICBOZXR3b3JrU3Rh
dGUgbmV0d29ya1N0YXRlKCkgY29uc3Q7Ci0gICAgCisKICAgICBTdHJpbmcgcHJlbG9hZCgpIGNv
bnN0OyAgICAKICAgICB2b2lkIHNldFByZWxvYWQoY29uc3QgU3RyaW5nJik7CiAKQEAgLTExNCw3
ICsxMTYsNiBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGNhblBsYXlUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpIGNvbnN0OwogCiAvLyByZWFkeSBzdGF0ZQotICAgIGVudW0gUmVhZHlTdGF0ZSB7
IEhBVkVfTk9USElORywgSEFWRV9NRVRBREFUQSwgSEFWRV9DVVJSRU5UX0RBVEEsIEhBVkVfRlVU
VVJFX0RBVEEsIEhBVkVfRU5PVUdIX0RBVEEgfTsKICAgICBSZWFkeVN0YXRlIHJlYWR5U3RhdGUo
KSBjb25zdDsKICAgICBib29sIHNlZWtpbmcoKSBjb25zdDsKIApAQCAtMjMwLDYgKzIzMSwxMiBA
QCBwdWJsaWM6CiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigp
OwogI2VuZGlmCiAKKyAgICBjb25zdCBTdHJpbmcmIG1lZGlhR3JvdXAoKSBjb25zdDsKKyAgICB2
b2lkIHNldE1lZGlhR3JvdXAoY29uc3QgU3RyaW5nJik7CisKKyAgICBNZWRpYUNvbnRyb2xsZXIq
IG1lZGlhQ29udHJvbGxlcigpIGNvbnN0OworICAgIHZvaWQgc2V0TWVkaWFDb250cm9sbGVyKFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPik7CisKIHByb3RlY3RlZDoKICAgICBIVE1MTWVkaWFF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkhU
TUxNZWRpYUVsZW1lbnQoKTsKQEAgLTM5NCw2ICs0MDEsOCBAQCBwcml2YXRlOgogICAgIC8vIFBh
dXNlcyBwbGF5YmFjayB3aXRob3V0IGNoYW5naW5nIGFueSBzdGF0ZXMgb3IgZ2VuZXJhdGluZyBl
dmVudHMKICAgICB2b2lkIHNldFBhdXNlZEludGVybmFsKGJvb2wpOwogCisgICAgdm9pZCBzZXRQ
bGF5YmFja1JhdGVJbnRlcm5hbChmbG9hdCk7CisKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFDYW5T
dGFydCgpOwogCiAgICAgdm9pZCBzZXRTaG91bGREZWxheUxvYWRFdmVudChib29sKTsKQEAgLTQx
Miw2ICs0MjEsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXRlbVZhbHVlVGV4
dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAjZW5kaWYKIAorICAgIHZvaWQgdXBk
YXRlTWVkaWFDb250cm9sbGVyKCk7CisgICAgYm9vbCBpc0Jsb2NrZWQoKSBjb25zdDsKKyAgICBi
b29sIGlzQmxvY2tlZE9uTWVkaWFDb250cm9sbGVyKCkgY29uc3Q7CisgICAgYm9vbCBoYXNTb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtTdGF0ZSAhPSBORVRXT1JLX0VNUFRZIHx8IG1f
bmV0d29ya1N0YXRlICE9IE5FVFdPUktfTk9fU09VUkNFOyB9CisgICAgYm9vbCBpc0xpdmVTdHJl
YW0oKSBjb25zdCB7IHJldHVybiBtb3ZpZUxvYWRUeXBlKCkgPT0gTWVkaWFQbGF5ZXI6OkxpdmVT
dHJlYW07IH0KKwogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fbG9hZFRpbWVyOwogICAg
IFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fYXN5bmNFdmVudFRpbWVyOwogICAgIFRpbWVyPEhU
TUxNZWRpYUVsZW1lbnQ+IG1fcHJvZ3Jlc3NFdmVudFRpbWVyOwpAQCAtNTE2LDYgKzUzMSwxMCBA
QCBwcml2YXRlOgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBWZWN0b3I8UmVmUHRyPFRl
eHRUcmFjaz4gPiBtX3RleHRUcmFja3M7CiAjZW5kaWYKKworICAgIFN0cmluZyBtX21lZGlhR3Jv
dXA7CisgICAgZnJpZW5kIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sbGVyPiBtX21lZGlhQ29udHJvbGxlcjsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCmluZGV4IDMzMGFkYmFhZGU3MTAyNjlj
MmYyZGU1ZWVjNWNjMWUxNjJiMGM5YjUuLjQ5MjEwYjYyMDI3MjM3MWU0NWFhYjlmYWIxOTFiZjYx
MDA0M2NlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbApAQCAt
MTE0LDUgKzExNCw4IEBAIG1vZHVsZSBodG1sIHsKICNpZiBkZWZpbmVkKEVOQUJMRV9WSURFT19U
UkFDSykgJiYgRU5BQkxFX1ZJREVPX1RSQUNLCiAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9d2Via2l0
VmlkZW9UcmFja10gVGV4dFRyYWNrIGFkZFRyYWNrKGluIERPTVN0cmluZyBraW5kLCBpbiBbT3B0
aW9uYWxdIERPTVN0cmluZyBsYWJlbCwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgbGFuZ3VhZ2Up
OwogI2VuZGlmCisKKyAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsIENvbnZlcnROdWxsVG9OdWxsU3Ry
aW5nLCBDb252ZXJ0TnVsbFN0cmluZ1RvTnVsbF0gRE9NU3RyaW5nIG1lZGlhR3JvdXA7CisgICAg
YXR0cmlidXRlIFtDdXN0b21TZXR0ZXJdIE1lZGlhQ29udHJvbGxlciBtZWRpYUNvbnRyb2xsZXI7
CiB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjVhNjVkYmMyNWVjMTRjZTllYjU2NDY5MzhjZDNhYWZhYTI3ZDdhY2UKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSw1
NzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU8p
CisjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJDbG9jay5oIgorI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisj
aW5jbHVkZSAiVGltZVJhbmdlcy5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOworCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4g
TWVkaWFDb250cm9sbGVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVk
aWFDb250cm9sbGVyKCkpOworfQorCitNZWRpYUNvbnRyb2xsZXI6Ok1lZGlhQ29udHJvbGxlcigp
CisgICAgOiBtX3BhdXNlZChmYWxzZSkKKyAgICAsIG1fZGVmYXVsdFBsYXliYWNrUmF0ZSgxKQor
ICAgICwgbV92b2x1bWUoMSkKKyAgICAsIG1fbXV0ZWQoZmFsc2UpCisgICAgLCBtX3JlYWR5U3Rh
dGUoSEFWRV9OT1RISU5HKQorICAgICwgbV9wbGF5YmFja1N0YXRlKFdBSVRJTkcpCisgICAgLCBt
X2FzeW5jRXZlbnRUaW1lcih0aGlzLCAmTWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50VGltZXJG
aXJlZCkKKyAgICAsIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGZhbHNlKQorICAgICwgbV9jbG9j
ayhDbG9jazo6Y3JlYXRlKCkpCit7Cit9CisKK01lZGlhQ29udHJvbGxlcjo6fk1lZGlhQ29udHJv
bGxlcigpCit7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjphZGRNZWRpYUVsZW1lbnQoSFRN
TE1lZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudCk7CisgICAgQVNT
RVJUKCFtX21lZGlhRWxlbWVudHMuY29udGFpbnMoZWxlbWVudCkpOworCisgICAgbV9tZWRpYUVs
ZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKKyAgICBicmluZ0VsZW1lbnRVcFRvU3BlZWQoZWxlbWVu
dCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpyZW1vdmVNZWRpYUVsZW1lbnQoSFRNTE1l
ZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudCk7CisgICAgQVNTRVJU
KG1fbWVkaWFFbGVtZW50cy5jb250YWlucyhlbGVtZW50KSk7CisgICAgbV9tZWRpYUVsZW1lbnRz
LnJlbW92ZShtX21lZGlhRWxlbWVudHMuZmluZChlbGVtZW50KSk7Cit9CisKK2Jvb2wgTWVkaWFD
b250cm9sbGVyOjpjb250YWluc01lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50
KSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlhRWxlbWVudHMuY29udGFpbnMoZWxlbWVudCk7
Cit9CisKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFDb250cm9sbGVyOjpidWZmZXJlZCgp
IGNvbnN0Cit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKworICAgIC8vIFRoZSBidWZmZXJlZCBhdHRyaWJ1
dGUgbXVzdCByZXR1cm4gYSBuZXcgc3RhdGljIG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3Qg
dGhhdCByZXByZXNlbnRzIAorICAgIC8vIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIHJhbmdlcyBv
ZiB0aGUgbWVkaWEgcmVzb3VyY2VzIG9mIHRoZSBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgdGhhdCB0
aGUgCisgICAgLy8gdXNlciBhZ2VudCBoYXMgYnVmZmVyZWQsIGF0IHRoZSB0aW1lIHRoZSBhdHRy
aWJ1dGUgaXMgZXZhbHVhdGVkLgorICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZFJhbmdl
cyA9IG1fbWVkaWFFbGVtZW50cy5maXJzdCgpLT5idWZmZXJlZCgpOworICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAg
ICAgICBidWZmZXJlZFJhbmdlcy0+aW50ZXJzZWN0V2l0aChtX21lZGlhRWxlbWVudHNbaW5kZXhd
LT5idWZmZXJlZCgpLmdldCgpKTsKKyAgICByZXR1cm4gYnVmZmVyZWRSYW5nZXM7Cit9CisKK1Bh
c3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFDb250cm9sbGVyOjpzZWVrYWJsZSgpIGNvbnN0Cit7
CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBUaW1l
UmFuZ2VzOjpjcmVhdGUoKTsKKworICAgIC8vIFRoZSBzZWVrYWJsZSBhdHRyaWJ1dGUgbXVzdCBy
ZXR1cm4gYSBuZXcgc3RhdGljIG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgdGhhdCByZXBy
ZXNlbnRzCisgICAgLy8gdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgcmFuZ2VzIG9mIHRoZSBtZWRp
YSByZXNvdXJjZXMgb2YgdGhlIHNsYXZlZCBtZWRpYSBlbGVtZW50cyB0aGF0IHRoZQorICAgIC8v
IHVzZXIgYWdlbnQgaXMgYWJsZSB0byBzZWVrIHRvLCBhdCB0aGUgdGltZSB0aGUgYXR0cmlidXRl
IGlzIGV2YWx1YXRlZC4KKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gc2Vla2FibGVSYW5nZXMgPSBt
X21lZGlhRWxlbWVudHMuZmlyc3QoKS0+c2Vla2FibGUoKTsKKyAgICBmb3IgKHNpemVfdCBpbmRl
eCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAg
c2Vla2FibGVSYW5nZXMtPmludGVyc2VjdFdpdGgobV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+c2Vl
a2FibGUoKS5nZXQoKSk7CisgICAgcmV0dXJuIHNlZWthYmxlUmFuZ2VzOworfQorCitQYXNzUmVm
UHRyPFRpbWVSYW5nZXM+IE1lZGlhQ29udHJvbGxlcjo6cGxheWVkKCkKK3sKKyAgICBpZiAobV9t
ZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0
ZSgpOworCisgICAgLy8gVGhlIHBsYXllZCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gYSBuZXcgc3Rh
dGljIG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgdGhhdCByZXByZXNlbnRzIAorICAgIC8v
IHRoZSB1bmlvbiBvZiB0aGUgcmFuZ2VzIG9mIHRoZSBtZWRpYSByZXNvdXJjZXMgb2YgdGhlIHNs
YXZlZCBtZWRpYSBlbGVtZW50cyB0aGF0IHRoZSAKKyAgICAvLyB1c2VyIGFnZW50IGhhcyBzbyBm
YXIgcmVuZGVyZWQsIGF0IHRoZSB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgZXZhbHVhdGVkLgorICAg
IFJlZlB0cjxUaW1lUmFuZ2VzPiBwbGF5ZWRSYW5nZXMgPSBtX21lZGlhRWxlbWVudHMuZmlyc3Qo
KS0+cGxheWVkKCk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAxOyBpbmRleCA8IG1fbWVkaWFF
bGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIHBsYXllZFJhbmdlcy0+dW5pb25XaXRo
KG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnBsYXllZCgpLmdldCgpKTsKKyAgICByZXR1cm4gcGxh
eWVkUmFuZ2VzOworfQorCitmbG9hdCBNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKCkgY29uc3QK
K3sKKyAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgY2FjaGluZyB0aGUgbWF4aW11bSBkdXJhdGlv
biBhbmQgb25seSB1cGRhdGluZyB0aGUgY2FjaGVkIHZhbHVlCisgICAgLy8gd2hlbiB0aGUgc2xh
dmVkIG1lZGlhIGVsZW1lbnRzJyBkdXJhdGlvbnMgY2hhbmdlLgorICAgIGZsb2F0IG1heER1cmF0
aW9uID0gMDsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1l
bnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFF
bGVtZW50c1tpbmRleF0tPmR1cmF0aW9uKCk7CisgICAgICAgIGlmIChpc25hbihkdXJhdGlvbikp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbWF4RHVyYXRpb24gPSBtYXgobWF4RHVy
YXRpb24sIGR1cmF0aW9uKTsKKyAgICB9CisgICAgcmV0dXJuIG1heER1cmF0aW9uOworfQorCitm
bG9hdCBNZWRpYUNvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKCkgY29uc3QKK3sKKyAgICBpZiAobV9t
ZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0
dXJuIG1fY2xvY2stPmN1cnJlbnRUaW1lKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpz
ZXRDdXJyZW50VGltZShmbG9hdCB0aW1lLCBFeGNlcHRpb25Db2RlJiBjb2RlKQoreworICAgIC8v
IFdoZW4gdGhlIHVzZXIgYWdlbnQgaXMgdG8gc2VlayB0aGUgbWVkaWEgY29udHJvbGxlciB0byBh
IHBhcnRpY3VsYXIgbmV3IHBsYXliYWNrIHBvc2l0aW9uLCAKKyAgICAvLyBpdCBtdXN0IGZvbGxv
dyB0aGVzZSBzdGVwczoKKyAgICAvLyBJZiB0aGUgbmV3IHBsYXliYWNrIHBvc2l0aW9uIGlzIGxl
c3MgdGhhbiB6ZXJvLCB0aGVuIHNldCBpdCB0byB6ZXJvLgorICAgIHRpbWUgPSBtYXgoMC4wZiwg
dGltZSk7CisgICAgCisgICAgLy8gSWYgdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbiBpcyBncmVh
dGVyIHRoYW4gdGhlIG1lZGlhIGNvbnRyb2xsZXIgZHVyYXRpb24sIHRoZW4gc2V0IGl0IAorICAg
IC8vIHRvIHRoZSBtZWRpYSBjb250cm9sbGVyIGR1cmF0aW9uLgorICAgIHRpbWUgPSBtaW4odGlt
ZSwgZHVyYXRpb24oKSk7CisgICAgCisgICAgLy8gU2V0IHRoZSBtZWRpYSBjb250cm9sbGVyIHBv
c2l0aW9uIHRvIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24uCisgICAgbV9jbG9jay0+c2V0Q3Vy
cmVudFRpbWUodGltZSk7CisgICAgCisgICAgLy8gU2VlayBlYWNoIHNsYXZlZCBtZWRpYSBlbGVt
ZW50IHRvIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIG1lZGlhIGVs
ZW1lbnQgdGltZWxpbmUuCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVk
aWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tpbmRl
eF0tPnNlZWsodGltZSwgY29kZSk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpwbGF5KCkK
K3sKKyAgICAvLyBXaGVuIHRoZSBwbGF5KCkgbWV0aG9kIGlzIGludm9rZWQsIGlmIHRoZSBNZWRp
YUNvbnRyb2xsZXIgaXMgYSBwYXVzZWQgbWVkaWEgY29udHJvbGxlciwKKyAgICBpZiAoIW1fcGF1
c2VkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyB0aGUgdXNlciBhZ2VudCBtdXN0IGNoYW5n
ZSB0aGUgTWVkaWFDb250cm9sbGVyIGludG8gYSBwbGF5aW5nIG1lZGlhIGNvbnRyb2xsZXIsCisg
ICAgbV9wYXVzZWQgPSBmYWxzZTsKKyAgICAvLyBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBs
ZSBldmVudCBuYW1lZCBwbGF5IGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIsCisgICAgc2NoZWR1bGVF
dmVudChldmVudE5hbWVzKCkucGxheUV2ZW50KTsKKyAgICAvLyBhbmQgdGhlbiByZXBvcnQgdGhl
IGNvbnRyb2xsZXIgc3RhdGUgb2YgdGhlIE1lZGlhQ29udHJvbGxlci4KKyAgICByZXBvcnRDb250
cm9sbGVyU3RhdGUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnBhdXNlKCkKK3sKKyAg
ICAvLyBXaGVuIHRoZSBwYXVzZSgpIG1ldGhvZCBpcyBpbnZva2VkLCBpZiB0aGUgTWVkaWFDb250
cm9sbGVyIGlzIGEgcGxheWluZyBtZWRpYSBjb250cm9sbGVyLAorICAgIGlmIChtX3BhdXNlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0IGNoYW5n
ZSB0aGUgTWVkaWFDb250cm9sbGVyIGludG8gYSBwYXVzZWQgbWVkaWEgY29udHJvbGxlciwKKyAg
ICBtX3BhdXNlZCA9IHRydWU7CisgICAgLy8gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUg
ZXZlbnQgbmFtZWQgcGF1c2UgYXQgdGhlIE1lZGlhQ29udHJvbGxlciwKKyAgICBzY2hlZHVsZUV2
ZW50KGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsKKyAgICAvLyBhbmQgdGhlbiByZXBvcnQgdGhl
IGNvbnRyb2xsZXIgc3RhdGUgb2YgdGhlIE1lZGlhQ29udHJvbGxlci4KKyAgICByZXBvcnRDb250
cm9sbGVyU3RhdGUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldERlZmF1bHRQbGF5
YmFja1JhdGUoZmxvYXQgcmF0ZSkKK3sKKyAgICBpZiAobV9kZWZhdWx0UGxheWJhY2tSYXRlID09
IHJhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBkZWZhdWx0UGxheWJhY2tSYXRl
IGF0dHJpYnV0ZSwgb24gc2V0dGluZywgbXVzdCBzZXQgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1l
ZGlhIGNvbnRyb2xsZXIKKyAgICAvLyBkZWZhdWx0IHBsYXliYWNrIHJhdGUgdG8gdGhlIG5ldyB2
YWx1ZSwKKyAgICBtX2RlZmF1bHRQbGF5YmFja1JhdGUgPSByYXRlOworCisgICAgLy8gdGhlbiBx
dWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCByYXRlY2hhbmdlIGF0IHRo
ZSBNZWRpYUNvbnRyb2xsZXIuCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucmF0ZWNo
YW5nZUV2ZW50KTsKK30KKworZmxvYXQgTWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUoKSBj
b25zdAoreworICAgIHJldHVybiBtX2Nsb2NrLT5wbGF5UmF0ZSgpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbGxlcjo6c2V0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUpCit7CisgICAgaWYgKG1fY2xv
Y2stPnBsYXlSYXRlKCkgPT0gcmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhlIHBs
YXliYWNrUmF0ZSBhdHRyaWJ1dGUsIG9uIHNldHRpbmcsIG11c3Qgc2V0IHRoZSBNZWRpYUNvbnRy
b2xsZXIncyBtZWRpYSBjb250cm9sbGVyIAorICAgIC8vIHBsYXliYWNrIHJhdGUgdG8gdGhlIG5l
dyB2YWx1ZSwKKyAgICBtX2Nsb2NrLT5zZXRQbGF5UmF0ZShyYXRlKTsKKworICAgIC8vIHRoZW4g
cXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcmF0ZWNoYW5nZSBhdCB0
aGUgTWVkaWFDb250cm9sbGVyLgorICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnJhdGVj
aGFuZ2VFdmVudCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUoZmxvYXQg
bGV2ZWwsIEV4Y2VwdGlvbkNvZGUmIGNvZGUpCit7CisgICAgaWYgKG1fdm9sdW1lID09IGxldmVs
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJZiB0aGUgbmV3IHZhbHVlIGlzIG91dHNpZGUg
dGhlIHJhbmdlIDAuMCB0byAxLjAgaW5jbHVzaXZlLCB0aGVuLCBvbiBzZXR0aW5nLCBhbiAKKyAg
ICAvLyBJbmRleFNpemVFcnJvciBleGNlcHRpb24gbXVzdCBiZSByYWlzZWQgaW5zdGVhZC4KKyAg
ICBpZiAobGV2ZWwgPCAwIHx8IGxldmVsID4gMSkgeworICAgICAgICBjb2RlID0gSU5ERVhfU0la
RV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIC8vIFRoZSB2b2x1
bWUgYXR0cmlidXRlLCBvbiBzZXR0aW5nLCBpZiB0aGUgbmV3IHZhbHVlIGlzIGluIHRoZSByYW5n
ZSAwLjAgdG8gMS4wIGluY2x1c2l2ZSwKKyAgICAvLyBtdXN0IHNldCB0aGUgTWVkaWFDb250cm9s
bGVyJ3MgbWVkaWEgY29udHJvbGxlciB2b2x1bWUgbXVsdGlwbGllciB0byB0aGUgbmV3IHZhbHVl
CisgICAgbV92b2x1bWUgPSBsZXZlbDsKKworICAgIC8vIGFuZCBxdWV1ZSBhIHRhc2sgdG8gZmly
ZSBhIHNpbXBsZSBldmVudCBuYW1lZCB2b2x1bWVjaGFuZ2UgYXQgdGhlIE1lZGlhQ29udHJvbGxl
ci4KKyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS52b2x1bWVjaGFuZ2VFdmVudCk7CisK
KyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUo
KTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+dXBkYXRlVm9sdW1l
KCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZChib29sIGZsYWcpCit7Cisg
ICAgaWYgKG1fbXV0ZWQgPT0gZmxhZykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhlIG11
dGVkIGF0dHJpYnV0ZSwgb24gc2V0dGluZywgbXVzdCBzZXQgdGhlIE1lZGlhQ29udHJvbGxlcidz
IG1lZGlhIGNvbnRyb2xsZXIgbXV0ZSBvdmVycmlkZQorICAgIC8vIHRvIHRoZSBuZXcgdmFsdWUK
KyAgICBtX211dGVkID0gZmxhZzsKKworICAgIC8vIGFuZCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBh
IHNpbXBsZSBldmVudCBuYW1lZCB2b2x1bWVjaGFuZ2UgYXQgdGhlIE1lZGlhQ29udHJvbGxlci4K
KyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS52b2x1bWVjaGFuZ2VFdmVudCk7CisKKyAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsg
KytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+dXBkYXRlVm9sdW1lKCk7
Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpyZXBvcnRDb250cm9sbGVyU3RhdGUoKQorewor
ICAgIHVwZGF0ZVJlYWR5U3RhdGUoKTsKKyAgICB1cGRhdGVQbGF5YmFja1N0YXRlKCk7Cit9CisK
K3ZvaWQgTWVkaWFDb250cm9sbGVyOjp1cGRhdGVSZWFkeVN0YXRlKCkKK3sKKyAgICBSZWFkeVN0
YXRlIG9sZFJlYWR5U3RhdGUgPSBtX3JlYWR5U3RhdGU7CisgICAgUmVhZHlTdGF0ZSBuZXdSZWFk
eVN0YXRlOworCisgICAgCisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgLy8gSWYgdGhlIE1lZGlhQ29udHJvbGxlciBoYXMgbm8gc2xhdmVkIG1lZGlhIGVsZW1l
bnRzLCBsZXQgbmV3IHJlYWRpbmVzcyBzdGF0ZSBiZSAwLgorICAgICAgICBuZXdSZWFkeVN0YXRl
ID0gSEFWRV9OT1RISU5HOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE90aGVyd2lzZSwgbGV0
IGl0IGhhdmUgdGhlIGxvd2VzdCB2YWx1ZSBvZiB0aGUgcmVhZHlTdGF0ZSBJREwgYXR0cmlidXRl
cyBvZiBhbGwgb2YgaXRzCisgICAgICAgIC8vIHNsYXZlZCBtZWRpYSBlbGVtZW50cy4KKyAgICAg
ICAgbmV3UmVhZHlTdGF0ZSA9IG1fbWVkaWFFbGVtZW50cy5maXJzdCgpLT5yZWFkeVN0YXRlKCk7
CisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMu
c2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IG1pbihuZXdSZWFk
eVN0YXRlLCBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5yZWFkeVN0YXRlKCkpOworICAgIH0KKwor
ICAgIC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtb3N0IHJlY2VudGx5IHJlcG9ydGVkIHJl
YWRpbmVzcyBzdGF0ZSBpcyBub3QgZXF1YWwgdG8gbmV3IHJlYWRpbmVzcyBzdGF0ZQorICAgIGlm
IChuZXdSZWFkeVN0YXRlID09IG9sZFJlYWR5U3RhdGUpIAorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IGF0IHRoZSBNZWRp
YUNvbnRyb2xsZXIgb2JqZWN0LCB3aG9zZSBuYW1lIGlzIHRoZQorICAgIC8vIGV2ZW50IG5hbWUg
Y29ycmVzcG9uZGluZyB0byB0aGUgdmFsdWUgb2YgbmV3IHJlYWRpbmVzcyBzdGF0ZSBnaXZlbiBp
biB0aGUgdGFibGUgYmVsb3cgKG9tbWl0dGVkKQorICAgIEF0b21pY1N0cmluZyBldmVudE5hbWU7
CisgICAgc3dpdGNoIChuZXdSZWFkeVN0YXRlKSB7CisgICAgY2FzZSBIQVZFX05PVEhJTkc6Cisg
ICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5lbXB0aWVkRXZlbnQ7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSEFWRV9NRVRBREFUQToKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnRO
YW1lcygpLmxvYWRlZG1ldGFkYXRhRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSEFW
RV9DVVJSRU5UX0RBVEE6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5sb2FkZWRk
YXRhRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSEFWRV9GVVRVUkVfREFUQToKKyAg
ICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLmNhbnBsYXlFdmVudDsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBIQVZFX0VOT1VHSF9EQVRBOgorICAgICAgICBldmVudE5hbWUgPSBldmVu
dE5hbWVzKCkuY2FucGxheXRocm91Z2hFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHNjaGVkdWxlRXZl
bnQoZXZlbnROYW1lKTsKKworICAgIC8vIExldCB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbW9zdCBy
ZWNlbnRseSByZXBvcnRlZCByZWFkaW5lc3Mgc3RhdGUgYmUgbmV3IHJlYWRpbmVzcyBzdGF0ZS4K
KyAgICBtX3JlYWR5U3RhdGUgPSBuZXdSZWFkeVN0YXRlOworfQorCit2b2lkIE1lZGlhQ29udHJv
bGxlcjo6dXBkYXRlUGxheWJhY2tTdGF0ZSgpCit7CisgICAgUGxheWJhY2tTdGF0ZSBvbGRQbGF5
YmFja1N0YXRlID0gbV9wbGF5YmFja1N0YXRlOworICAgIFBsYXliYWNrU3RhdGUgbmV3UGxheWJh
Y2tTdGF0ZTsKKworICAgIC8vIEluaXRpYWxpemUgbmV3IHBsYXliYWNrIHN0YXRlIGJ5IHNldHRp
bmcgaXQgdG8gdGhlIHN0YXRlIGdpdmVuIGZvciB0aGUgZmlyc3QgbWF0Y2hpbmcgCisgICAgLy8g
Y29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgorICAgIGlmIChtX21lZGlhRWxlbWVu
dHMuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIgaGFzIG5v
IHNsYXZlZCBtZWRpYSBlbGVtZW50cworICAgICAgICAvLyBMZXQgbmV3IHBsYXliYWNrIHN0YXRl
IGJlIHdhaXRpbmcuCisgICAgICAgIG5ld1BsYXliYWNrU3RhdGUgPSBXQUlUSU5HOworICAgIH0g
ZWxzZSBpZiAoaGFzRW5kZWQoKSkgeworICAgICAgICAvLyBJZiBhbGwgb2YgdGhlIE1lZGlhQ29u
dHJvbGxlcidzIHNsYXZlZCBtZWRpYSBlbGVtZW50cyBoYXZlIGVuZGVkIHBsYXliYWNrIGFuZCB0
aGUgbWVkaWEKKyAgICAgICAgLy8gY29udHJvbGxlciBwbGF5YmFjayByYXRlIGlzIHBvc2l0aXZl
IG9yIHplcm8KKyAgICAgICAgLy8gTGV0IG5ldyBwbGF5YmFjayBzdGF0ZSBiZSBlbmRlZC4KKyAg
ICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IEVOREVEOworICAgIH0gZWxzZSBpZiAoaXNCbG9ja2Vk
KCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIE1lZGlhQ29udHJvbGxlciBpcyBhIGJsb2NrZWQgbWVk
aWEgY29udHJvbGxlcgorICAgICAgICAvLyBMZXQgbmV3IHBsYXliYWNrIHN0YXRlIGJlIHdhaXRp
bmcuCisgICAgICAgIG5ld1BsYXliYWNrU3RhdGUgPSBXQUlUSU5HOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIC8vIE90aGVyd2lzZQorICAgICAgICAvLyBMZXQgbmV3IHBsYXliYWNrIHN0YXRlIGJl
IHBsYXlpbmcuCisgICAgICAgIG5ld1BsYXliYWNrU3RhdGUgPSBQTEFZSU5HOworICAgIH0KKwor
ICAgIC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtb3N0IHJlY2VudGx5IHJlcG9ydGVkIHBs
YXliYWNrIHN0YXRlIGlzIG5vdCBlcXVhbCB0byBuZXcgcGxheWJhY2sgc3RhdGUKKyAgICBpZiAo
bmV3UGxheWJhY2tTdGF0ZSA9PSBvbGRQbGF5YmFja1N0YXRlKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBhbmQgdGhlIG5ldyBwbGF5YmFjayBzdGF0ZSBpcyBlbmRlZCwKKyAgICBpZiAobmV3
UGxheWJhY2tTdGF0ZSA9PSBFTkRFRCkgeworICAgICAgICAvLyB0aGVuIHF1ZXVlIGEgdGFzayB0
aGF0LCBpZiB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCBpcyBhIHBsYXlpbmcgbWVkaWEgY29u
dHJvbGxlciwgYW5kIAorICAgICAgICAvLyBhbGwgb2YgdGhlIE1lZGlhQ29udHJvbGxlcidzIHNs
YXZlZCBtZWRpYSBlbGVtZW50cyBoYXZlIHN0aWxsIGVuZGVkIHBsYXliYWNrLCBhbmQgdGhlIAor
ICAgICAgICAvLyBtZWRpYSBjb250cm9sbGVyIHBsYXliYWNrIHJhdGUgaXMgc3RpbGwgcG9zaXRp
dmUgb3IgemVybywgCisgICAgICAgIGlmICghbV9wYXVzZWQgJiYgaGFzRW5kZWQoKSkgeworICAg
ICAgICAgICAgLy8gY2hhbmdlcyB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCB0byBhIHBhdXNl
ZCBtZWRpYSBjb250cm9sbGVyCisgICAgICAgICAgICBtX3BhdXNlZCA9IHRydWU7CisgICAgICAg
ICAgICBtX2Nsb2NrLT5zdG9wKCk7CisKKyAgICAgICAgICAgIC8vIGFuZCB0aGVuIGZpcmVzIGEg
c2ltcGxlIGV2ZW50IG5hbWVkIHBhdXNlIGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIgb2JqZWN0Lgor
ICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGF1c2VFdmVudCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBJZiB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbW9zdCByZWNl
bnRseSByZXBvcnRlZCBwbGF5YmFjayBzdGF0ZSBpcyBub3QgZXF1YWwgdG8gbmV3IHBsYXliYWNr
IHN0YXRlCisgICAgLy8gdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBh
dCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCwgd2hvc2UgbmFtZSBpcyBwbGF5aW5nIAorICAg
IC8vIGlmIG5ldyBwbGF5YmFjayBzdGF0ZSBpcyBwbGF5aW5nLCBlbmRlZCBpZiBuZXcgcGxheWJh
Y2sgc3RhdGUgaXMgZW5kZWQsIGFuZCB3YWl0aW5nIG90aGVyd2lzZS4KKyAgICBBdG9taWNTdHJp
bmcgZXZlbnROYW1lOworICAgIHN3aXRjaCAobmV3UGxheWJhY2tTdGF0ZSkgeworICAgIGNhc2Ug
V0FJVElORzoKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLndhaXRpbmdFdmVudDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFTkRFRDoKKyAgICAgICAgZXZlbnROYW1lID0gZXZl
bnROYW1lcygpLmVuZGVkRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUExBWUlORzoK
KyAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLnBsYXlpbmdFdmVudDsKKyAgICAgICAg
bV9jbG9jay0+c3RhcnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1l
KTsKKworICAgIC8vIExldCB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbW9zdCByZWNlbnRseSByZXBv
cnRlZCBwbGF5YmFjayBzdGF0ZSBiZSBuZXcgcGxheWJhY2sgc3RhdGUuCisgICAgbV9wbGF5YmFj
a1N0YXRlID0gbmV3UGxheWJhY2tTdGF0ZTsKKworICAgIHVwZGF0ZU1lZGlhRWxlbWVudHMoKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVwZGF0ZU1lZGlhRWxlbWVudHMoKQoreworICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyAr
K2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT51cGRhdGVQbGF5U3RhdGUo
KTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmJyaW5nRWxlbWVudFVwVG9TcGVlZChIVE1M
TWVkaWFFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICBBU1NF
UlQobV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKGVsZW1lbnQpKTsKKworICAgIC8vIFdoZW4gdGhl
IHVzZXIgYWdlbnQgaXMgdG8gYnJpbmcgYSBtZWRpYSBlbGVtZW50IHVwIHRvIHNwZWVkIHdpdGgg
aXRzIG5ldyBtZWRpYSBjb250cm9sbGVyLAorICAgIC8vIGl0IG11c3Qgc2VlayB0aGF0IG1lZGlh
IGVsZW1lbnQgdG8gdGhlIE1lZGlhQ29udHJvbGxlcidzIG1lZGlhIGNvbnRyb2xsZXIgcG9zaXRp
b24gcmVsYXRpdmUKKyAgICAvLyB0byB0aGUgbWVkaWEgZWxlbWVudCdzIHRpbWVsaW5lLgorICAg
IEV4Y2VwdGlvbkNvZGUgaWdub3JlZENvZGUgPSAwOworICAgIGVsZW1lbnQtPnNlZWsoY3VycmVu
dFRpbWUoKSwgaWdub3JlZENvZGUpOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6aXNCbG9j
a2VkKCkgY29uc3QKK3sKKyAgICAvLyBBIE1lZGlhQ29udHJvbGxlciBpcyBhIGJsb2NrZWQgbWVk
aWEgY29udHJvbGxlciBpZiB0aGUgTWVkaWFDb250cm9sbGVyIGlzIGEgcGF1c2VkIG1lZGlhIAor
ICAgIC8vIGNvbnRyb2xsZXIsCisgICAgaWYgKG1fcGF1c2VkKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIAorICAgIGJvb2wgYWxsUGF1c2VkID0gdHJ1ZTsKKyAgICBmb3IgKHNp
emVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkg
eworICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0gbV9tZWRpYUVsZW1lbnRzW2lu
ZGV4XTsKKyAgICAgICAgLy8gIG9yIGlmIGFueSBvZiBpdHMgc2xhdmVkIG1lZGlhIGVsZW1lbnRz
IGFyZSBibG9ja2VkIG1lZGlhIGVsZW1lbnRzLAorICAgICAgICBpZiAoZWxlbWVudC0+aXNCbG9j
a2VkKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIC8vIG9y
IGlmIGFueSBvZiBpdHMgc2xhdmVkIG1lZGlhIGVsZW1lbnRzIHdob3NlIGF1dG9wbGF5aW5nIGZs
YWcgaXMgdHJ1ZSBzdGlsbCBoYXZlIHRoZWlyIAorICAgICAgICAvLyBwYXVzZWQgYXR0cmlidXRl
IHNldCB0byB0cnVlLAorICAgICAgICBpZiAoZWxlbWVudC0+YXV0b3BsYXkoKSAmJiBlbGVtZW50
LT5wYXVzZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAKKyAgICAgICAg
aWYgKCFlbGVtZW50LT5wYXVzZWQoKSkKKyAgICAgICAgICAgIGFsbFBhdXNlZCA9IGZhbHNlOwor
ICAgIH0KKyAgICAKKyAgICAvLyBvciBpZiBhbGwgb2YgaXRzIHNsYXZlZCBtZWRpYSBlbGVtZW50
cyBoYXZlIHRoZWlyIHBhdXNlZCBhdHRyaWJ1dGUgc2V0IHRvIHRydWUuCisgICAgcmV0dXJuIGFs
bFBhdXNlZDsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6Omhhc0VuZGVkKCkgY29uc3QKK3sK
KyAgICBpZiAobV9jbG9jay0+cGxheVJhdGUoKSA8PSAwKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICBib29sIGFsbEhhdmVFbmRlZCA9IHRydWU7CisgICAgZm9yIChz
aXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgp
IHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5lbmRlZCgpKQorICAgICAg
ICAgICAgYWxsSGF2ZUVuZGVkID0gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBhbGxIYXZlRW5k
ZWQ7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnROYW1lKQoreworICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCB0cnVlKSk7CisgICAgaWYgKCFtX2FzeW5jRXZlbnRU
aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2FzeW5jRXZlbnRUaW1lci5zdGFydE9uZVNob3Qo
MCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50VGltZXJGaXJlZChUaW1l
cjxNZWRpYUNvbnRyb2xsZXI+KikKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IHBlbmRp
bmdFdmVudHM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgCisgICAgbV9wZW5kaW5n
RXZlbnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7CisgICAgc2l6ZV90IGNvdW50ID0gcGVuZGluZ0V2
ZW50cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyAr
K2luZGV4KQorICAgICAgICBkaXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVudHNbaW5kZXhdLnJlbGVh
c2UoKSwgZWMpOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBNZWRpYUNvbnRyb2xsZXI6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIGlmIChtX21lZGlhRWxlbWVu
dHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1l
bnRzLmZpcnN0KCktPmRvY3VtZW50KCk7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpoYXNB
dWRpbygpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVk
aWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKG1fbWVkaWFFbGVtZW50
c1tpbmRleF0tPmhhc0F1ZGlvKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6aGFzVmlkZW8oKSBj
b25zdAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVu
dHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChtX21lZGlhRWxlbWVudHNbaW5kZXhd
LT5oYXNWaWRlbygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6Omhhc0Nsb3NlZENhcHRpb25zKCkg
Y29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1l
bnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnRzW2luZGV4
XS0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRDbG9zZWRD
YXB0aW9uc1Zpc2libGUoYm9vbCB2aXNpYmxlKQoreworICAgIG1fY2xvc2VkQ2FwdGlvbnNWaXNp
YmxlID0gdmlzaWJsZTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRp
YUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4
XS0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKHZpc2libGUpOworfQorCitib29sIE1lZGlhQ29u
dHJvbGxlcjo6c3VwcG9ydHNTY2FubmluZygpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAg
ICAgaWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5zdXBwb3J0c1NjYW5uaW5nKCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lk
IE1lZGlhQ29udHJvbGxlcjo6YmVnaW5TY3J1YmJpbmcoKQoreworICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAg
ICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5iZWdpblNjcnViYmluZygpOworfQorCit2b2lkIE1l
ZGlhQ29udHJvbGxlcjo6ZW5kU2NydWJiaW5nKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9t
ZWRpYUVsZW1lbnRzW2luZGV4XS0+ZW5kU2NydWJiaW5nKCk7Cit9CisKK2Jvb2wgTWVkaWFDb250
cm9sbGVyOjpjYW5QbGF5KCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAoIW1f
bWVkaWFFbGVtZW50c1tpbmRleF0tPmNhblBsYXkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpp
c0xpdmVTdHJlYW0oKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXgg
PCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmICghbV9tZWRp
YUVsZW1lbnRzW2luZGV4XS0+aXNMaXZlU3RyZWFtKCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6
aGFzU291cmNlKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
bV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAoIW1fbWVkaWFF
bGVtZW50c1tpbmRleF0tPmhhc1NvdXJjZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnJldHVy
blRvUmVhbHRpbWUoKQoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21l
ZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5k
ZXhdLT5yZXR1cm5Ub1JlYWx0aW1lKCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFD
b250cm9sbGVyOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1l
cygpLmludGVyZmFjZUZvck1lZGlhQ29udHJvbGxlcjsKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzBlMDAyNjA4NGI5MmJkMDhmYTAx
NzRiMzRhNDFmNzJmN2U1M2I0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDE1NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IE1lZGlhQ29udHJvbGxlcl9oCisjZGVmaW5lIE1lZGlhQ29udHJvbGxlcl9oCisKKyNpZiBFTkFC
TEUoVklERU8pCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFdmVu
dC5oIgorI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5o
IgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIgorI2luY2x1ZGUgIlRpbWVy
LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBDbG9jazsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBFdmVudDsKKworY2xh
c3MgTWVkaWFDb250cm9sbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFDb250cm9sbGVyPiwg
cHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSwgcHVibGljIEV2ZW50VGFyZ2V0IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IGNyZWF0ZSgpOwor
ICAgIHZpcnR1YWwgfk1lZGlhQ29udHJvbGxlcigpOworCisgICAgdm9pZCBhZGRNZWRpYUVsZW1l
bnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIHZvaWQgcmVtb3ZlTWVkaWFFbGVtZW50KEhUTUxN
ZWRpYUVsZW1lbnQqKTsKKyAgICBib29sIGNvbnRhaW5zTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVs
ZW1lbnQqKSBjb25zdDsKKworICAgIGNvbnN0IFN0cmluZyYgbWVkaWFHcm91cCgpIGNvbnN0IHsg
cmV0dXJuIG1fbWVkaWFHcm91cDsgfQorICAgIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1l
UmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFu
Z2VzPiBzZWVrYWJsZSgpIGNvbnN0OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2Vz
PiBwbGF5ZWQoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBz
ZXRDdXJyZW50VGltZShmbG9hdCwgRXhjZXB0aW9uQ29kZSYpOworICAgIAorICAgIHZpcnR1YWwg
Ym9vbCBwYXVzZWQoKSBjb25zdCB7IHJldHVybiBtX3BhdXNlZDsgfQorICAgIHZpcnR1YWwgdm9p
ZCBwbGF5KCk7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlKCk7CisgICAgCisgICAgdmlydHVhbCBm
bG9hdCBkZWZhdWx0UGxheWJhY2tSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0UGxheWJh
Y2tSYXRlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldERlZmF1bHRQbGF5YmFja1JhdGUoZmxvYXQp
OworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgcGxheWJhY2tSYXRlKCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIHNldFBsYXliYWNrUmF0ZShmbG9hdCk7CisgICAgCisgICAgdmlydHVhbCBmbG9h
dCB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3ZvbHVtZTsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRWb2x1bWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wg
bXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9CisgICAgdmlydHVhbCB2b2lkIHNldE11
dGVkKGJvb2wpOworICAgIAorICAgIHZpcnR1YWwgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9CisKKyAgICBlbnVtIFBsYXliYWNrU3RhdGUgeyBX
QUlUSU5HLCBQTEFZSU5HLCBFTkRFRCB9OworICAgIHZpcnR1YWwgUGxheWJhY2tTdGF0ZSBwbGF5
YmFja1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5YmFja1N0YXRlOyB9CisKKyAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzQXVkaW8oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVmlkZW8oKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBjbG9z
ZWRDYXB0aW9uc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2Nsb3NlZENhcHRpb25zVmlzaWJs
ZTsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3Q7Cisg
ICAgCisgICAgdmlydHVhbCB2b2lkIGJlZ2luU2NydWJiaW5nKCk7CisgICAgdmlydHVhbCB2b2lk
IGVuZFNjcnViYmluZygpOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBjYW5QbGF5KCkgY29uc3Q7
CisgICAgCisgICAgdmlydHVhbCBib29sIGlzTGl2ZVN0cmVhbSgpIGNvbnN0OworICAgIAorICAg
IHZpcnR1YWwgYm9vbCBoYXNTb3VyY2UoKSBjb25zdDsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQg
cmV0dXJuVG9SZWFsdGltZSgpOworCisgICAgYm9vbCBpc0Jsb2NrZWQoKSBjb25zdDsKKworICAg
IC8vIEV2ZW50VGFyZ2V0CisgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYUNvbnRyb2xsZXI+Ojpy
ZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYUNvbnRyb2xsZXI+OjpkZXJlZjsKKworcHJp
dmF0ZToKKyAgICBNZWRpYUNvbnRyb2xsZXIoKTsKKyAgICB2b2lkIHJlcG9ydENvbnRyb2xsZXJT
dGF0ZSgpOworICAgIHZvaWQgdXBkYXRlUmVhZHlTdGF0ZSgpOworICAgIHZvaWQgdXBkYXRlUGxh
eWJhY2tTdGF0ZSgpOworICAgIHZvaWQgdXBkYXRlTWVkaWFFbGVtZW50cygpOworICAgIHZvaWQg
YnJpbmdFbGVtZW50VXBUb1NwZWVkKEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICB2b2lkIHNjaGVk
dWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpOworICAgIHZvaWQgYXN5bmNF
dmVudFRpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sbGVyPiopOworICAgIGJvb2wgaGFzRW5k
ZWQoKSBjb25zdDsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCB2b2lkIHJlZkV2
ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0
KCkgeyBkZXJlZigpOyB9CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFj
ZU5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSog
ZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAgdmly
dHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZt
X2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0
YTsKKworICAgIGZyaWVuZCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworICAgIGZyaWVuZCBjbGFz
cyBNZWRpYUNvbnRyb2xsZXJFdmVudExpc3RlbmVyOworICAgIFZlY3RvcjxIVE1MTWVkaWFFbGVt
ZW50Kj4gbV9tZWRpYUVsZW1lbnRzOworICAgIGJvb2wgbV9wYXVzZWQ7CisgICAgZmxvYXQgbV9k
ZWZhdWx0UGxheWJhY2tSYXRlOworICAgIGZsb2F0IG1fdm9sdW1lOworICAgIGJvb2wgbV9tdXRl
ZDsKKyAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKKyAgICBQbGF5YmFja1N0YXRlIG1fcGxh
eWJhY2tTdGF0ZTsKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fcGVuZGluZ0V2ZW50czsK
KyAgICBUaW1lcjxNZWRpYUNvbnRyb2xsZXI+IG1fYXN5bmNFdmVudFRpbWVyOworICAgIFN0cmlu
ZyBtX21lZGlhR3JvdXA7CisgICAgYm9vbCBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZTsKKyAgICBQ
YXNzUmVmUHRyPENsb2NrPiBtX2Nsb2NrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNv
bnRyb2xsZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ0YjJhMWZkOGNiOTQ0MDhhMzhkYWJiOTU2M2ViZmE1ZjczOGZjNTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5pZGwKQEAg
LTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVsZSBodG1sIHsKKyAgICBpbnRlcmZhY2UgWwor
ICAgICAgICBDb25kaXRpb25hbD1WSURFTywKKyAgICAgICAgQ2FuQmVDb25zdHJ1Y3RlZCwKKyAg
ICAgICAgR2VuZXJhdGVUb0pTLAorICAgICAgICBFdmVudFRhcmdldAorICAgIF0gTWVkaWFDb250
cm9sbGVyIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRpbWVSYW5nZXMgYnVmZmVyZWQ7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUaW1lUmFuZ2VzIHNlZWthYmxlOworCisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgZHVyYXRpb247CisgICAgICAgIGF0dHJpYnV0
ZSBkb3VibGUgY3VycmVudFRpbWUKKyAgICAgICAgICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2Vw
dGlvbik7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gcGF1c2VkOworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJhbmdlcyBwbGF5ZWQ7CisgICAgICAgIHZvaWQg
cGxheSgpOworICAgICAgICB2b2lkIHBhdXNlKCk7CisKKyAgICAgICAgYXR0cmlidXRlIGRvdWJs
ZSBkZWZhdWx0UGxheWJhY2tSYXRlOworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIHBsYXliYWNr
UmF0ZTsKKworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIHZvbHVtZQorICAgICAgICAgICAgc2V0
dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gbXV0
ZWQ7CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisgICAgICAgIHZvaWQgYWRk
RXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgdm9p
ZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUp
OworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICAg
ICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzJjZDRkYTQxYWY0
MmY1ZGEyYWU1ZGY5Nzc4YzRiODZiN2MzNTQwMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgKQEAgLTAsMCArMSw5OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIE1lZGlhQ29udHJvbGxlckludGVyZmFjZV9oCisjZGVmaW5lIE1l
ZGlhQ29udHJvbGxlckludGVyZmFjZV9oCisKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRpbWVS
YW5nZXM7CisKK3R5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CisKK2NsYXNzIE1lZGlhQ29udHJv
bGxlckludGVyZmFjZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVkaWFDb250cm9sbGVySW50
ZXJmYWNlKCkgeyB9OworICAgIAorICAgIC8vIE1lZGlhQ29udHJvbGxlciBJREw6CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gcGxheWVkKCkgPSAwOworICAgIAorICAgIHZp
cnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBjdXJy
ZW50VGltZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxv
YXQsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgCisgICAgdmlydHVhbCBib29sIHBhdXNlZCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxheSgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcGF1c2UoKSA9IDA7CisgICAgCisgICAgdmlydHVhbCBmbG9hdCBkZWZhdWx0UGxheWJhY2tS
YXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWZhdWx0UGxheWJhY2tSYXRl
KGZsb2F0KSA9IDA7CisgICAgCisgICAgdmlydHVhbCBmbG9hdCBwbGF5YmFja1JhdGUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFBsYXliYWNrUmF0ZShmbG9hdCkgPSAwOworICAg
IAorICAgIHZpcnR1YWwgZmxvYXQgdm9sdW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRWb2x1bWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgCisgICAgdmlydHVh
bCBib29sIG11dGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29s
KSA9IDA7CisgICAgCisgICAgZW51bSBSZWFkeVN0YXRlIHsgSEFWRV9OT1RISU5HLCBIQVZFX01F
VEFEQVRBLCBIQVZFX0NVUlJFTlRfREFUQSwgSEFWRV9GVVRVUkVfREFUQSwgSEFWRV9FTk9VR0hf
REFUQSB9OworICAgIHZpcnR1YWwgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgPSAwOwor
CisgICAgLy8gTWVkaWFDb250cm9sRWxlbWVudHM6CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
RnVsbHNjcmVlbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNGdWxsc2NyZWVuKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFzQXVkaW8oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhh
c1ZpZGVvKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJv
b2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Nhbm5pbmcoKSBjb25zdCA9IDA7CisK
KyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGVuZFNjcnViYmluZygpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5QbGF5KCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCBib29sIGlzTGl2ZVN0cmVhbSgpIGNvbnN0ID0gMDsKKworICAg
IHZpcnR1YWwgYm9vbCBoYXNTb3VyY2UoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQg
cmV0dXJuVG9SZWFsdGltZSgpID0gMDsKK307CisKK30KKworI2VuZGlmCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RpbWVSYW5nZXMuY3BwCmluZGV4IDk4NGI2YmNhNDg1ODlmYjVkMjZhNDU5NDllM2Zm
ZTU2MTY2YjI1MzUuLmQ2OGVhMDM3MTgzMzJiZWU2ZGI2ZjA3OTljMTI2MTUxN2JmMTVkZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcApAQCAtMzEsMTMgKzMxLDE0IEBACiAjaW5jbHVk
ZSA8bWF0aC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBz
dGQ7CiAKIFRpbWVSYW5nZXM6OlRpbWVSYW5nZXMoZmxvYXQgc3RhcnQsIGZsb2F0IGVuZCkKIHsK
ICAgICBhZGQoc3RhcnQsIGVuZCk7CiB9CiAKLVBhc3NSZWZQdHI8VGltZVJhbmdlcz4gVGltZVJh
bmdlczo6Y29weSgpCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IFRpbWVSYW5nZXM6OmNvcHkoKSBj
b25zdAogewogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBuZXdTZXNzaW9uID0gVGltZVJhbmdlczo6
Y3JlYXRlKCk7CiAgICAgCkBAIC00OCw2ICs0OSw1MSBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+
IFRpbWVSYW5nZXM6OmNvcHkoKQogICAgIHJldHVybiBuZXdTZXNzaW9uLnJlbGVhc2UoKTsKIH0K
IAordm9pZCBUaW1lUmFuZ2VzOjppbnZlcnQoKQoreworICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBp
bnZlcnRlZCA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOworICAgIGZsb2F0IHBvc0luZiA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOworICAgIGZsb2F0IG5lZ0luZiA9IC1z
dGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKKworICAgIGlmICghbV9yYW5n
ZXMuc2l6ZSgpKQorICAgICAgICBpbnZlcnRlZC0+YWRkKG5lZ0luZiwgcG9zSW5mKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgaWYgKGZsb2F0IHN0YXJ0ID0gbV9yYW5nZXMuZmlyc3QoKS5tX3N0YXJ0
ICE9IG5lZ0luZikKKyAgICAgICAgICAgIGludmVydGVkLT5hZGQobmVnSW5mLCBzdGFydCk7CisK
KyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCArIDEgPCBtX3Jhbmdlcy5zaXpl
KCk7ICsraW5kZXgpCisgICAgICAgICAgICBpbnZlcnRlZC0+YWRkKG1fcmFuZ2VzW2luZGV4XS5t
X2VuZCwgbV9yYW5nZXNbaW5kZXggKyAxXS5tX3N0YXJ0KTsKKworICAgICAgICBpZiAoZmxvYXQg
ZW5kID0gbV9yYW5nZXMubGFzdCgpLm1fZW5kICE9IHBvc0luZikKKyAgICAgICAgICAgIGludmVy
dGVkLT5hZGQoZW5kLCBwb3NJbmYpOworICAgIH0KKworICAgIG1fcmFuZ2VzLnN3YXAoaW52ZXJ0
ZWQtPm1fcmFuZ2VzKTsKK30KKwordm9pZCBUaW1lUmFuZ2VzOjppbnRlcnNlY3RXaXRoKGNvbnN0
IFRpbWVSYW5nZXMqIG90aGVyKQoreworICAgIEFTU0VSVChvdGhlcik7CisgICAgUmVmUHRyPFRp
bWVSYW5nZXM+IGludmVydGVkID0gY29weSgpOworICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBpbnZl
cnRlZE90aGVyID0gb3RoZXItPmNvcHkoKTsKKyAgICBpbnZlcnRlZC0+dW5pb25XaXRoKGludmVy
dGVkT3RoZXIuZ2V0KCkpOworICAgIGludmVydGVkLT5pbnZlcnQoKTsKKworICAgIG1fcmFuZ2Vz
LnN3YXAoaW52ZXJ0ZWQtPm1fcmFuZ2VzKTsKK30KKwordm9pZCBUaW1lUmFuZ2VzOjp1bmlvbldp
dGgoY29uc3QgVGltZVJhbmdlcyogb3RoZXIpCit7CisgICAgQVNTRVJUKG90aGVyKTsKKyAgICBS
ZWZQdHI8VGltZVJhbmdlcz4gdW5pb25lZCA9IGNvcHkoKTsKKyAgICBmb3IgKHNpemVfdCBpbmRl
eCA9IDA7IGluZGV4IDwgb3RoZXItPm1fcmFuZ2VzLnNpemUoKTsgKytpbmRleCkgeworICAgICAg
ICBjb25zdCBSYW5nZSYgcmFuZ2UgPSBvdGhlci0+bV9yYW5nZXNbaW5kZXhdOworICAgICAgICB1
bmlvbmVkLT5hZGQocmFuZ2UubV9zdGFydCwgcmFuZ2UubV9lbmQpOworICAgIH0KKworICAgIG1f
cmFuZ2VzLnN3YXAodW5pb25lZC0+bV9yYW5nZXMpOworfQorCiBmbG9hdCBUaW1lUmFuZ2VzOjpz
dGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0IAogeyAKICAgICBp
ZiAoaW5kZXggPj0gbGVuZ3RoKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGltZVJhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgKaW5kZXggZDFk
NTYzNzkyM2YwNzJmNzZjYjM3YmI2MWU3MjA2YmQwNzM5MjEwZi4uNDI1NzY5MDM2YWM4ZWYyNzM4
Nzg0N2YzMGFjNDFmZmU3MzA0YjU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9U
aW1lUmFuZ2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgKQEAgLTQ2
LDcgKzQ2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUaW1lUmFu
Z2VzKHN0YXJ0LCBlbmQpKTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGNv
cHkoKTsKKyAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGNvcHkoKSBjb25zdDsKKyAgICB2b2lk
IGludmVydCgpOworICAgIHZvaWQgaW50ZXJzZWN0V2l0aChjb25zdCBUaW1lUmFuZ2VzKik7Cisg
ICAgdm9pZCB1bmlvbldpdGgoY29uc3QgVGltZVJhbmdlcyopOwogCiAgICAgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZXMuc2l6ZSgpOyB9CiAgICAgZmxvYXQgc3RhcnQo
dW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmlkbAppbmRleCBiZDliMjM3Yzc1NDkxMDRjZjMxYzhjY2VjMjUyMTVmN2JiZGU1OTQxLi5m
NzkyOGMwNmVkYzNkODY3OTdkOWJkNmUyM2ZkMTI0MTZjYTAyZmNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCkBAIC02MzQsNiArNjM0LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAg
IGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU8sIEVuYWJsZWRBdFJ1bnRpbWVdIE1lZGlhRXJy
b3JDb25zdHJ1Y3RvciBNZWRpYUVycm9yOwogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFs
PVZJREVPLCBFbmFibGVkQXRSdW50aW1lXSBUaW1lUmFuZ2VzQ29uc3RydWN0b3IgVGltZVJhbmdl
czsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1WSURFTywgRW5hYmxlZEF0UnVudGlt
ZV0gSFRNTFNvdXJjZUVsZW1lbnRDb25zdHJ1Y3RvciBIVE1MU291cmNlRWxlbWVudDsKKyAgICAg
ICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1WSURFTywgRW5hYmxlZEF0UnVudGltZV0gTWVkaWFD
b250cm9sbGVyQ29uc3RydWN0b3IgTWVkaWFDb250cm9sbGVyOwogCiAjaWYgZGVmaW5lZChFTkFC
TEVfQU5JTUFUSU9OX0FQSSkgJiYgRU5BQkxFX0FOSU1BVElPTl9BUEkKICAgICAgICAgYXR0cmli
dXRlIFdlYktpdEFuaW1hdGlvbkNvbnN0cnVjdG9yIFdlYktpdEFuaW1hdGlvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DbG9ja0dlbmVyaWMuY3BwCmluZGV4IDI4OTYwYzMwM2YxZmFlZDliYWUz
MThjZjVkNjM3OWNkNmE1ZWVlN2YuLmFlYWY4Njc5MTMzMWJlM2JiZWNjYjMwZjJlODRmM2NlNjA0
ZjY3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrR2VuZXJpYy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmNwcApAQCAtMzYs
MjcgKzM2LDI3IEBAIENsb2NrR2VuZXJpYzo6Q2xvY2tHZW5lcmljKCkKICAgICAsIG1fcmF0ZSgx
KQogICAgICwgbV9vZmZzZXQoMCkKIHsKLSAgICBtX3N0YXJ0VGltZSA9IG1fbGFzdFRpbWUgPSBj
dXJyZW50VGltZSgpOworICAgIG1fc3RhcnRUaW1lID0gbV9sYXN0VGltZSA9IG5vdygpOwogfQog
CiB2b2lkIENsb2NrR2VuZXJpYzo6c2V0Q3VycmVudFRpbWUoZmxvYXQgdGltZSkKIHsKLSAgICBt
X3N0YXJ0VGltZSA9IG1fbGFzdFRpbWUgPSBjdXJyZW50VGltZSgpOworICAgIG1fc3RhcnRUaW1l
ID0gbV9sYXN0VGltZSA9IG5vdygpOwogICAgIG1fb2Zmc2V0ID0gdGltZTsKIH0KIAogZmxvYXQg
Q2xvY2tHZW5lcmljOjpjdXJyZW50VGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fcnVubmluZykK
LSAgICAgICAgbV9sYXN0VGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgICAgIG1fbGFzdFRpbWUg
PSBub3coKTsKICAgICBmbG9hdCB0aW1lID0gKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobV9sYXN0
VGltZSAtIG1fc3RhcnRUaW1lKSAqIG1fcmF0ZSkgKyBtX29mZnNldDsKICAgICByZXR1cm4gdGlt
ZTsKIH0KIAogdm9pZCBDbG9ja0dlbmVyaWM6OnNldFBsYXlSYXRlKGZsb2F0IHJhdGUpCiB7Ci0g
ICAgbV9vZmZzZXQgPSBjdXJyZW50VGltZSgpOwotICAgIG1fbGFzdFRpbWUgPSBtX3N0YXJ0VGlt
ZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgbV9vZmZzZXQgPSBub3coKTsKKyAgICBtX2xhc3RUaW1l
ID0gbV9zdGFydFRpbWUgPSBub3coKTsKICAgICBtX3JhdGUgPSByYXRlOwogfQogCkBAIC02NSw3
ICs2NSw3IEBAIHZvaWQgQ2xvY2tHZW5lcmljOjpzdGFydCgpCiAgICAgaWYgKG1fcnVubmluZykK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9sYXN0VGltZSA9IG1fc3RhcnRUaW1lID0gY3VycmVu
dFRpbWUoKTsKKyAgICBtX2xhc3RUaW1lID0gbV9zdGFydFRpbWUgPSBub3coKTsKICAgICBtX3J1
bm5pbmcgPSB0cnVlOwogfQogCkBAIC03NCw3ICs3NCwxMyBAQCB2b2lkIENsb2NrR2VuZXJpYzo6
c3RvcCgpCiAgICAgaWYgKCFtX3J1bm5pbmcpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fb2Zm
c2V0ID0gY3VycmVudFRpbWUoKTsKLSAgICBtX2xhc3RUaW1lID0gbV9zdGFydFRpbWUgPSBjdXJy
ZW50VGltZSgpOworICAgIG1fb2Zmc2V0ID0gbm93KCk7CisgICAgbV9sYXN0VGltZSA9IG1fc3Rh
cnRUaW1lID0gbm93KCk7CiAgICAgbV9ydW5uaW5nID0gZmFsc2U7CiB9CisKK2Zsb2F0IENsb2Nr
R2VuZXJpYzo6bm93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpjdXJyZW50VGltZSgpOwor
fQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9ja0dlbmVyaWMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrR2VuZXJpYy5oCmluZGV4IDcyYjBjYjAxYzBl
YzEwMGFjM2ZhNzFmOWNlMTBkMjAwNGE1NTM0YzcuLjViNzViZjYzZjIyMmRjZTg3NTM5Mjk5ZDAw
N2EyZDk3ZWMxMjc4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2Nr
R2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrR2VuZXJpYy5oCkBA
IC00NSw2ICs0NSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKICAgICB2
aXJ0dWFsIGJvb2wgaXNSdW5uaW5nKCkgY29uc3QgeyByZXR1cm4gbV9ydW5uaW5nOyB9CiAKKyAg
ICBmbG9hdCBub3coKSBjb25zdDsKKwogICAgIGJvb2wgbV9ydW5uaW5nOwogICAgIGZsb2F0IG1f
cmF0ZTsKICAgICBmbG9hdCBtX29mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCAwMThjN2RkMzNlMzhjMWI4Zjc3MzQ1YThj
M2U0ZjgzNWZlYzYwYTczLi5mYzc3ZmYyODgzOGI3YzA5NGFhNTNhNGZiZGYwNzE2ODBjYTIyMTMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCkBAIC02MDksNiArNjA5LDExIEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5
ZXI6OmJ1ZmZlcmVkKCkKICAgICByZXR1cm4gbV9wcml2YXRlLT5idWZmZXJlZCgpOwogfQogCitQ
YXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxheWVyOjpzZWVrYWJsZSgpCit7CisgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+c2Vla2FibGUoKTsKK30KKwogZmxvYXQgTWVkaWFQbGF5ZXI6Om1heFRp
bWVTZWVrYWJsZSgpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWF4VGltZVNlZWthYmxlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRl
eCBjOTZiMDI1ZDgyZDAwNzA5MTY5ZWVhNTFjMDc4MjZiNzQ1MDZjNDcxLi40NzczOWEwOGIwZTNk
OWNjNzNjOTlhMTMxNDM0YTc4YWUwMzc0NTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTI0MSw2ICsyNDEsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRQcmVzZXJ2ZXNQaXRjaChib29sKTsKIAogICAgIFBhc3NSZWZQdHI8VGltZVJh
bmdlcz4gYnVmZmVyZWQoKTsKKyAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCk7
CiAgICAgZmxvYXQgbWF4VGltZVNlZWthYmxlKCk7CiAKICAgICB1bnNpZ25lZCBieXRlc0xvYWRl
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaAppbmRleCBmOGM3MGFiZTI4YTdlZDAxZGZiOGEyY2I3ZjFjNjM2NjM3ZDM4
NDQxLi42YzUyN2Q3ZTVjZDM4OTk5MTZiNDY1ZWY3MmQ1NzE0NDA1NmVkN2U3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShWSURFTykKIAogI2luY2x1ZGUgIk1lZGlh
UGxheWVyLmgiCisjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTkxLDYgKzkyLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29u
c3QgPSAwOwogCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCkg
Y29uc3QgeyByZXR1cm4gbWF4VGltZVNlZWthYmxlKCkgPyBUaW1lUmFuZ2VzOjpjcmVhdGUoMCwg
bWF4VGltZVNlZWthYmxlKCkpIDogVGltZVJhbmdlczo6Y3JlYXRlKCk7IH0KICAgICB2aXJ0dWFs
IGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NjAzOWM5NzI0
YTkwNjRiODJiMDI4YWVjMTE2ZDAzNzYzMDIwNmZjLi5jNDE2MTM4YzkxMDRiNmZiZDBkN2NhYTk4
YmEyZDZjNGI0YzIwZmQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMTEtMDMgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IE1lZGlhQ29u
dHJvbGxlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcxNDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
bWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbDogQWRkZWQuCisgICAg
ICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci5odG1sOiBBZGRlZC4KKworMjAxMS0xMS0wMyAg
SmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgTWVk
aWFDb250cm9sbGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzE0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLmh0bWw6IEFkZGVkLgorCisyMDExLTEx
LTAyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBNZWRpYUNvbnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2stZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbDogQWRkZWQuCisKIDIw
MTEtMTEtMTAgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W0Nocm9taXVtXSBVbnJldmlld2VkLCByZWJhc2VsaW5lIFNWRyB0ZXN0IHJlc3VsdHMgY2hhbmdl
ZCBhZnRlciByOTk1MzkuIChwYXJ0IDIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9t
ZWRpYS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNv
bnRyb2xsZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjNmQ0ZDA3ZmZjY2ZjYjMwZTc1NWFj
YzI2OGU2NzRmNzRhY2NjMGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9t
ZWRpYS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBACisgCitUZXN0IHBy
ZXNlbmNlIG9mIE1lZGlhQ29udHJvbGxlciBjb25zdHJ1Y3RvciwgbWVkaWFDb250cm9sbGVyLCBh
bmQgbWVkaWFHcm91cCBhdHRyaWJ1dGVzOgorRVhQRUNURUQgKHR5cGVvZihNZWRpYUNvbnRyb2xs
ZXIpID09ICdvYmplY3QnKSBPSworRVhQRUNURUQgKHZpZGVvLm1lZGlhQ29udHJvbGxlciA9PSAn
bnVsbCcpIE9LCitFWFBFQ1RFRCAodmlkZW8ubWVkaWFHcm91cCA9PSAnJykgT0sKKworVGVzdCB0
aGF0IHRoZSBwcmVzZW5jZSBvZiBhIG1lZGlhR3JvdXAgYXR0cmlidXRlIGNyZWF0ZXMgYSBtZWRp
YUNvbnRyb2xsZXI6CitFWFBFQ1RFRCAodmlkZW8yLm1lZGlhR3JvdXAgPT0gJ2dyb3VwJykgT0sK
K0VYUEVDVEVEICh2aWRlbzIubWVkaWFDb250cm9sbGVyICE9ICdudWxsJykgT0sKKworVGVzdCB0
aGF0IHNldHRpbmcgbWVkaWFHcm91cCB0byBhbiBlbXB0eSBzdHJpbmcgcmVtb3ZlcyB0aGUgbWVk
aWFDb250cm9sbGVyOgorUlVOKHZpZGVvLm1lZGlhR3JvdXAgPSAnJykKK0VYUEVDVEVEICh2aWRl
by5tZWRpYUNvbnRyb2xsZXIgPT0gJ251bGwnKSBPSworCitUZXN0IG1hbnVhbGx5IGNyZWF0aW5n
IGFuZCBhc3NpZ25pbmcgYSBtZWRpYUNvbnRyb2xsZXIgdG8gYSBtZWRpYSBlbGVtZW50OgorUlVO
KGNvbnRyb2xsZXIgPSBuZXcgTWVkaWFDb250cm9sbGVyKCkpCitSVU4odmlkZW8ubWVkaWFDb250
cm9sbGVyID0gY29udHJvbGxlcikKK0VYUEVDVEVEICh2aWRlby5tZWRpYUNvbnRyb2xsZXIgPT0g
J1tvYmplY3QgTWVkaWFDb250cm9sbGVyXScpIE9LCisKK1Rlc3QgdGhhdCB0d28gbWVkaWEgZWxl
bWVudHMgd2l0aCB0aGUgc2FtZSBtZWRpYUdyb3VwIGhhdmUgdGhlIHNhbWUgbWVkaWFDb250cm9s
bGVyOgorUlVOKHZpZGVvLm1lZGlhR3JvdXAgPSAnZ3JvdXAnKQorUlVOKHZpZGVvMi5tZWRpYUdy
b3VwID0gJ2dyb3VwJykKK0VYUEVDVEVEICh2aWRlby5tZWRpYUNvbnRyb2xsZXIgPT09IHZpZGVv
Mi5tZWRpYUNvbnRyb2xsZXIgPT0gJ3RydWUnKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iOGE4ZTA5MjEzZWUxYTcxMDdiODExYWI5Zjg4M2FkNDAxMmEzZmE2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1w
bGF5YmFjay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorIAorUlVOKGNvbnRyb2xsZXIg
PSB2aWRlby5tZWRpYUNvbnRyb2xsZXIpCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK1JVTihjb250
cm9sbGVyLmN1cnJlbnRUaW1lID0gNSkKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA9PSAn
NScpIE9LCitFWFBFQ1RFRCAodmlkZW8yLmN1cnJlbnRUaW1lID09ICc1JykgT0sKK1JVTih2aWRl
by5wbGF5KCkpCitSVU4odmlkZW8yLnBsYXkoKSkKK1JVTihjb250cm9sbGVyLnBsYXkoKSkKK0VW
RU5UKHBsYXlpbmcpCitFWFBFQ1RFRCAoY29udHJvbGxlci5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sK
K0VWRU5UKGVuZGVkKQorRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVk
aWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVk
aWEtY29udHJvbGxlci1wbGF5YmFjay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjMmI4M2VmMWFhODg5NmQ3
YzIyMDdmN2E5NDY0OTBmM2NjZjVmMmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9t
ZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9bWVk
aWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48
L3NjcmlwdD4KKworICAgICAgICA8c2NyaXB0PgorICAgICAgICB2YXIgY29udHJvbGxlcjsKKyAg
ICAgICAgdmFyIHZpZGVvMjsKKworICAgICAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAg
ICAgIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF07Cisg
ICAgICAgICAgICB2aWRlbzIgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8n
KVsxXTsKKyAgICAgICAgICAgIHJ1bignY29udHJvbGxlciA9IHZpZGVvLm1lZGlhQ29udHJvbGxl
cicpOworICAgICAgICAgICAgY29udHJvbGxlci5hZGRFdmVudExpc3RlbmVyKCdjYW5wbGF5dGhy
b3VnaCcsIGNhbnBsYXl0aHJvdWdoLCB0cnVlKTsKKyAgICAgICAgICAgIHNldFNyY0J5VGFnTmFt
ZSgndmlkZW8nLCBmaW5kTWVkaWFGaWxlKCd2aWRlbycsICdjb250ZW50L3Rlc3QnKSk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGNhbnBsYXl0aHJvdWdoKCkgeworICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVChjYW5wbGF5dGhyb3VnaCkiKTsKKyAgICAgICAg
ICAgIGNvbnRyb2xsZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2FucGxheXRocm91Z2gnLCBjYW5w
bGF5dGhyb3VnaCwgdHJ1ZSk7CisgICAgICAgICAgICBydW4oJ2NvbnRyb2xsZXIuY3VycmVudFRp
bWUgPSA1Jyk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLmN1cnJlbnRUaW1lJywg
NSk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvMi5jdXJyZW50VGltZScsIDUpOwor
ICAgICAgICAgICAgcnVuKCd2aWRlby5wbGF5KCknKTsKKyAgICAgICAgICAgIHJ1bigndmlkZW8y
LnBsYXkoKScpOworICAgICAgICAgICAgY29udHJvbGxlci5hZGRFdmVudExpc3RlbmVyKCdwbGF5
aW5nJywgcGxheWluZywgdHJ1ZSk7CisgICAgICAgICAgICBydW4oJ2NvbnRyb2xsZXIucGxheSgp
Jyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIHBsYXlpbmcoKSB7IAor
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVChwbGF5aW5nKSIpOworICAgICAgICAgICAg
Y29udHJvbGxlci5yZW1vdmVFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgcGxheWluZywgdHJ1ZSk7
CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2NvbnRyb2xsZXIucGF1c2VkJywgZmFsc2UpOwor
ICAgICAgICAgICAgY29udHJvbGxlci5hZGRFdmVudExpc3RlbmVyKCdlbmRlZCcsIGVuZGVkLCB0
cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGVuZGVkKCkgeyAKKyAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQoZW5kZWQpIik7CisgICAgICAgICAgICBjb250cm9sbGVy
LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgZW5kZWQsIHRydWUpOworICAgICAgICAgICAg
ZW5kVGVzdCgpOworICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8dmlkZW8gbWVkaWFHcm91cD0iZ3Jv
dXAiIGNvbnRyb2xzPjwvdmlkZW8+CisgICAgICAgIDx2aWRlbyBtZWRpYUdyb3VwPSJncm91cCIg
Y29udHJvbHM+PC92aWRlbz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxl
ci5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmMzMWM0OGRiMDQ3ODJjYTQ1NGYyZjVhNDBkZmVjMjRiNzI1MmMxNGEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLmh0bWwKQEAgLTAsMCAr
MSw0NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNj
cmlwdCBzcmM9bWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9dmlk
ZW8tdGVzdC5qcz48L3NjcmlwdD4KKworICAgICAgICA8c2NyaXB0PgorICAgICAgICB2YXIgY29u
dHJvbGxlcjsKKyAgICAgICAgdmFyIHZpZGVvMjsKKworICAgICAgICBmdW5jdGlvbiBzdGFydCgp
IHsKKyAgICAgICAgICAgIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3Zp
ZGVvJylbMF07CisgICAgICAgICAgICB2aWRlbzIgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgndmlkZW8nKVsxXTsKKworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IHByZXNl
bmNlIG9mIE1lZGlhQ29udHJvbGxlciBjb25zdHJ1Y3RvciwgbWVkaWFDb250cm9sbGVyLCBhbmQg
bWVkaWFHcm91cCBhdHRyaWJ1dGVzOiIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0eXBl
b2YoTWVkaWFDb250cm9sbGVyKSIsICJ1bmRlZmluZWQiLCAiIT0iKTsKKyAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8ubWVkaWFDb250cm9sbGVyIiwgbnVsbCk7CisgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInZpZGVvLm1lZGlhR3JvdXAiLCAiIik7CisgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIiIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IHRoYXQgdGhlIHByZXNl
bmNlIG9mIGEgbWVkaWFHcm91cCBhdHRyaWJ1dGUgY3JlYXRlcyBhIG1lZGlhQ29udHJvbGxlcjoi
KQorICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlbzIubWVkaWFHcm91cCIsICdncm91cCcp
OworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlbzIubWVkaWFDb250cm9sbGVyIiwgbnVs
bCwgIiE9Iik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgY29u
c29sZVdyaXRlKCJUZXN0IHRoYXQgc2V0dGluZyBtZWRpYUdyb3VwIHRvIGFuIGVtcHR5IHN0cmlu
ZyByZW1vdmVzIHRoZSBtZWRpYUNvbnRyb2xsZXI6IikKKyAgICAgICAgICAgIHJ1bigidmlkZW8u
bWVkaWFHcm91cCA9ICcnIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm1lZGlh
Q29udHJvbGxlciIsIG51bGwpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCBtYW51YWxseSBjcmVhdGluZyBhbmQgYXNzaWduaW5n
IGEgbWVkaWFDb250cm9sbGVyIHRvIGEgbWVkaWEgZWxlbWVudDoiKQorICAgICAgICAgICAgcnVu
KCJjb250cm9sbGVyID0gbmV3IE1lZGlhQ29udHJvbGxlcigpIik7CisgICAgICAgICAgICBydW4o
InZpZGVvLm1lZGlhQ29udHJvbGxlciA9IGNvbnRyb2xsZXIiKTsKKyAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgidmlkZW8ubWVkaWFDb250cm9sbGVyIiwgY29udHJvbGxlcik7CisgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IHRoYXQg
dHdvIG1lZGlhIGVsZW1lbnRzIHdpdGggdGhlIHNhbWUgbWVkaWFHcm91cCBoYXZlIHRoZSBzYW1l
IG1lZGlhQ29udHJvbGxlcjoiKQorICAgICAgICAgICAgcnVuKCJ2aWRlby5tZWRpYUdyb3VwID0g
J2dyb3VwJyIpOworICAgICAgICAgICAgcnVuKCJ2aWRlbzIubWVkaWFHcm91cCA9ICdncm91cCci
KTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubWVkaWFDb250cm9sbGVyID09PSB2
aWRlbzIubWVkaWFDb250cm9sbGVyIiwgdHJ1ZSk7CisgICAgICAgICAgICBlbmRUZXN0KCk7Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ic3RhcnQoKSI+CisgICAgICAgIDx2aWRlbz48L3ZpZGVvPgorICAgICAgICA8dmlkZW8gbWVk
aWFncm91cD0iZ3JvdXAiPjwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxpb24vZmFzdC9yZWdpb25zL3JlbmRlci1yZWdp
b24tY3VzdG9tLXN0eWxlLW1hcmstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLWxpb24vZmFzdC9yZWdpb25zL3JlbmRlci1yZWdpb24tY3VzdG9tLXN0eWxlLW1hcmstZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2NzRlYTllNGZhODUwYTkzODQzZTNjZjhkYmJhNjU0ZGIz
OTMwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbi9m
YXN0L3JlZ2lvbnMvcmVuZGVyLXJlZ2lvbi1jdXN0b20tc3R5bGUtbWFyay1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwzNCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZp
ZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHgxNjYKKyAg
UmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDE2NgorICAgIFJlbmRlckJvZHkg
e0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDE1MAorICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0
ICgwLDApIHNpemUgMjAweDUwCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1MCkgc2l6
ZSAyMDB4NTAKKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwxMDApIHNpemUgMjAweDUw
CitGbG93IFRocmVhZHMKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93MScKKyAgICBsYXll
ciBhdCAoMCwwKSBzaXplIDIwMHgxMDAKKyAgICAgIFJlbmRlckZsb3dUaHJlYWQgYXQgKDAsMCkg
c2l6ZSAyMDB4MTAwCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDE2KSBzaXplIDIw
MHgxODgKKyAgICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSAyMDB4MTgKKyAg
ICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2OHgxOAorICAgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjg6ICJGaXJzdCBwYXJhIGdvZXMgaW50
byByZWdpb24uIgorICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDM0KSBz
aXplIDIwMHgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
MTM0eDE4CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEzNDogIlRleHQg
Z29lcyBpbnRvIHJlZ2lvbiIKKyAgICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNjgpIHNp
emUgMjAweDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAx
ODd4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTg3OiAiU2Vjb25k
IHBhcmEgZ29lcyBpbnRvIHJlZ2lvbi4iCisgICAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgw
LDEwMikgc2l6ZSAyMDB4MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDE3NXgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNzU6
ICJUaGlyZCBwYXJhIGdvZXMgaW50byByZWdpb24uIgorICAgICAgICAgIFJlbmRlckJsb2NrIChh
bm9ueW1vdXMpIGF0ICgwLDEzNikgc2l6ZSAyMDB4MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEzNHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCAxMzQ6ICJUZXh0IGdvZXMgaW50byByZWdpb24iCisgICAgICAgICAgUmVuZGVy
QmxvY2sge1B9IGF0ICgwLDE3MCkgc2l6ZSAyMDB4MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE4MngxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCAxODI6ICJGb3VydGggcGFyYSBnb2VzIGludG8gcmVnaW9uLiIKKyAgUmVnaW9u
cyBmb3IgZmxvdyAnZmxvdzEnCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdpb24xIHJlZ2lv
biBzdHlsZTogMQorICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uMyByZWdpb24gc3R5bGU6
IDEK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114620</attachid>
            <date>2011-11-10 21:07:24 -0800</date>
            <delta_ts>2011-11-10 21:13:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71408-20111110210722.patch</filename>
            <type>text/plain</type>
            <size>107466</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4MjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZTUyYTU2ZjBiNWNiYzg1
YmZlMjUzMjI3OTE0M2QwY2I3OWYwODA1Li43MmNlYTdhOTkyMWNkNTc5NGViYmI3ZmE5YmMzYjMx
NTI3NWVjMGI3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY5IEBACisyMDExLTExLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNv
bnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbAorCisgICAgICAgIEFkZHMgc3VwcG9ydCBm
b3IgdGhlIE1lZGlhQ29udHJvbGxlciBET00gb2JqZWN0LCBhbmQgdGhlIG1lZGlhZ3JvdXAgYW5k
IG1lZGlhY29udHJvbGxlcgorICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGF0dHJpYnV0ZXMuCisK
KyAgICAgICAgTWVkaWFDb250cm9sbGVyIGlzIGFuIERPTSBvYmplY3Qgd2hpY2ggc3luY2hyb25p
emVzIHBsYXliYWNrIG9mIG11bHRpcGxlIEhUTUxNZWRpYUVsZW1lbnRzLiBJdCBjYW4KKyAgICAg
ICAgZWl0aGVyIGJlIGNyZWF0ZWQgYnkgYSBwYWdlIHNjcmlwdCBhbmQgYXNzaWduZWQgdG8gYSBI
VE1MTWVkaWFFbGVtZW50IHVzaW5nIHRoZSBjb250cm9sbGVyIHByb3BlcnR5LAorICAgICAgICBv
ciBhbGwgSFRNTE1lZGlhRWxlbWVudHMgd2l0aCBpZGVudGljYWwgbWVkaWFncm91cCBhdHRyaWJ1
dGVzIHdpbGwgaGF2ZSBhIE1lZGlhQ29udHJvbGxlciBhc3NpZ25lZCAKKyAgICAgICAgYXV0b21h
dGljYWxseS4KKworICAgICAgICBBZGQgYW4gYWJzdHJhY3QgaW50ZXJmYWNlIGltcGxlbWVudGVk
IGJ5IGJvdGggTWVkaWFDb250cm9sbGVyIGFuZCBIVE1MTWVkaWFFbGVtZW50LgorICAgICAgICAq
IGh0bWwvTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sbGVySW50ZXJmYWNlOjp+TWVkaWFDb250cm9sbGVySW50ZXJmYWNlKToK
KworICAgICAgICBBZGQgdGhlIE1lZGlhQ29udHJvbGxlciBvYmplY3QgYW5kIElETC4KKyAgICAg
ICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAobWVkaWFHcm91
cFRvTWVkaWFDb250cm9sbGVyTWFwKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6bWVkaWFD
b250cm9sbGVyRm9yTWVkaWFHcm91cCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmNyZWF0
ZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Ok1lZGlhQ29udHJvbGxlcik6CisgICAgICAg
IChNZWRpYUNvbnRyb2xsZXI6On5NZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoTWVkaWFDb250
cm9sbGVyOjphZGRNZWRpYUVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpyZW1v
dmVNZWRpYUVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjb250YWluc01lZGlh
RWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmJ1ZmZlcmVkKToKKyAgICAgICAg
KE1lZGlhQ29udHJvbGxlcjo6c2Vla2FibGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpw
bGF5ZWQpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpkdXJhdGlvbik6CisgICAgICAgIChN
ZWRpYUNvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
c2V0Q3VycmVudFRpbWUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpwbGF5KToKKyAgICAg
ICAgKE1lZGlhQ29udHJvbGxlcjo6cGF1c2UpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpz
ZXREZWZhdWx0UGxheWJhY2tSYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6c2V0UGxh
eWJhY2tSYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6c2V0Vm9sdW1lKToKKyAgICAg
ICAgKE1lZGlhQ29udHJvbGxlcjo6c2V0TXV0ZWQpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVy
OjpyZXBvcnRDb250cm9sbGVyU3RhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjp1cGRh
dGVSZWFkeVN0YXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlUGxheWJhY2tT
dGF0ZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnVwZGF0ZU1lZGlhRWxlbWVudHMpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKE1lZGlh
Q29udHJvbGxlcjo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
aGFzQXVkaW8pOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpoYXNWaWRlbyk6CisgICAgICAg
IChNZWRpYUNvbnRyb2xsZXI6Omhhc0Nsb3NlZENhcHRpb25zKToKKyAgICAgICAgKE1lZGlhQ29u
dHJvbGxlcjo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKToKKyAgICAgICAgKE1lZGlhQ29udHJv
bGxlcjo6c3VwcG9ydHNTY2FubmluZyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmJlZ2lu
U2NydWJiaW5nKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6ZW5kU2NydWJiaW5nKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6Y2FuUGxheSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OmlzTGl2ZVN0cmVhbSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Omhhc1NvdXJjZSk6
CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnJldHVyblRvUmVhbHRpbWUpOgorICAgICAgICAo
TWVkaWFDb250cm9sbGVyOjppc0Jsb2NrZWQpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpo
YXNFbmRlZCk6CisgICAgICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6Om1lZGlhR3JvdXApOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sbGVyOjpwYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sbGVyOjpkZWZhdWx0UGxheWJhY2tSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbGxlcjo6cGxheWJhY2tSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bGxlcjo6dm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6bXV0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpyZWFkeVN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6cGxheWJhY2tTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnN1cHBvcnRzRnVsbHNjcmVlbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OmlzRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xsZXI6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xsZXI6OmNsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xsZXI6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbGxlcjo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xsZXI6OnRvTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbGxlcjo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbGxlcjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29u
dHJvbGxlci5pZGw6IEFkZGVkLgorCisgICAgICAgIEFkZCBjb252ZW5pZW5jZSBmdW5jdGlvbnMg
dG8gVGltZVJhbmdlcyB3aGljaCBjYW4gY2FsY3VsYXRlIGludGVyc2VjdGlvbnMgYW5kCisgICAg
ICAgIHVuaW9ucyBiZXR3ZWVuIFRpbWVSYW5nZXMgb2JqZWN0cy4KKyAgICAgICAgKiBodG1sL1Rp
bWVSYW5nZXMuY3BwOgorICAgICAgICAoVGltZVJhbmdlczo6Y29weSk6CisgICAgICAgIChUaW1l
UmFuZ2VzOjppbnZlcnQpOgorICAgICAgICAoVGltZVJhbmdlczo6aW50ZXJzZWN0V2l0aCk6Cisg
ICAgICAgIChUaW1lUmFuZ2VzOjp1bmlvbldpdGgpOgorICAgICAgICAqIGh0bWwvVGltZVJhbmdl
cy5oOgorCisgICAgICAgIEFkZCBNZWRpYUNvbnRyb2xsZXJDb25zdHJ1Y3RvciB0byB0aGUgV2lu
ZG93IG9iamVjdC4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisKKyAgICAgICAgQWRk
IHRoZSB0d28gbmV3IGF0dHJpYnV0ZSBuYW1lcywgbWVkaWFncm91cCBhbmQgY29udHJvbGxlci4K
KyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKworICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgdGhlIG5ldyBhdHRyaWJ1dGVzLCBhbmQgYWRkIG92ZXJyaWRkZW4gYmVoYXZpb3Ig
d2hlbiBhIG1lZGlhIGVsZW1lbnQKKyAgICAgICAgaGFzIGEgY3VycmVudCBtZWRpYSBjb250cm9s
bGVyOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnNldFBsYXliYWNrUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6dG9nZ2xlUGxheVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2Vla2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6cG90ZW50aWFsbHlQbGF5aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OmVuZGVkUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
dXBkYXRlVm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0
ZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2Fu
Y2VsbGVkTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYUdy
b3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhR3JvdXAp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y29udHJvbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDb250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZU1lZGlhQ29udHJvbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxl
cik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpoYXNTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6aXNMaXZlU3RyZWFtKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRp
YUNvbnRyb2xsZXIpOgorCisgICAgICAgIEFkZCBhIGZ1bmN0aW9uICJzZWVrYWJsZSIgd2hpY2gg
cmV0dXJucyBhIFRpbWVSYW5nZXMgY29udGFpbmluZyB0aGUgc2Vla2FibGUgdGltZSByYW5nZXMK
KyAgICAgICAgaW4gYSBtZWRpYSBlbGVtZW50LiAgQnkgZGVmYXVsdCB0aGlzIGlzIGEgc2luZ2xl
IHJhbmdlIG9mIFswLCBtYXhUaW1lU2Vla2FibGVdLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzZWVr
YWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6c2Vla2FibGUpOgorCisgICAgICAg
IFN1cHBvcnQgZnVuY3Rpb25zIHRvIGNhc3QgYmV0d2VlbiBNZWRpYUNvbnRyb2xsZXIgYW5kIEV2
ZW50VGFyZ2V0LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojp0b01lZGlhQ29udHJvbGxlcik6CisgICAgICAg
ICogZG9tL0V2ZW50VGFyZ2V0Lmg6CisKKyAgICAgICAgRml4ZWQgYW4gaW5maW5pdGUtcmVjdXJz
aW9uIGJ1ZyBkdWUgdG8gYSBjb2xsaXNpb24gYmV0d2VlbiBXVEY6OmN1cnJlbnRUaW1lIGFuZAor
ICAgICAgICBDbG9ja0dlbmVyaWM6OmN1cnJlbnRUaW1lOgorICAgICAgICAqIHBsYXRmb3JtL0Ns
b2NrR2VuZXJpYy5jcHA6CisgICAgICAgIChDbG9ja0dlbmVyaWM6OkNsb2NrR2VuZXJpYyk6Cisg
ICAgICAgIChDbG9ja0dlbmVyaWM6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKENsb2NrR2Vu
ZXJpYzo6Y3VycmVudFRpbWUpOgorICAgICAgICAoQ2xvY2tHZW5lcmljOjpzZXRQbGF5UmF0ZSk6
CisgICAgICAgIChDbG9ja0dlbmVyaWM6OnN0YXJ0KToKKyAgICAgICAgKENsb2NrR2VuZXJpYzo6
c3RvcCk6CisgICAgICAgIChDbG9ja0dlbmVyaWM6Om5vdyk6CisgICAgICAgICogcGxhdGZvcm0v
Q2xvY2tHZW5lcmljLmg6CisKKyAgICAgICAgQm9pbGVycGxhdGUgdG8gc3VwcG9ydCBjcmVhdGlu
ZyB0aGUgZGVyaXZlZCBzb3VyY2VzIGZvciBNZWRpYUNvbnRyb2xsZXIgYW5kIGFkZGluZyBuZXcg
c291cmNlcworICAgICAgICB0byB0aGUgcHJvamVjdDoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5jcHA6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
IDIwMTEtMTEtMTAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5OTgxNi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvUGxhdGZvcm0uaAppbmRleCA1NTNkYzVlOGMzNTY5Y2I4MDZjYjU5NTRkN2JjM2Q1YTI4
ZTVlNGU5Li4zZDEyOTM5MTgzNTVhNzI0N2Q4ZDc1ZjMzYzM1MWJkMGZmMTEzYjhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTA3LDcgKzExMDcsNyBAQAogI2RlZmlu
ZSBIQVZFX0lOVkVSVEVEX1dIRUVMX0VWRU5UUyAxCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1B
QykgfHwgKFBMQVRGT1JNKFdJTikgJiYgIU9TKFdJTkNFKSAmJiAhUExBVEZPUk0oV0lOX0NBSVJP
KSkKKyNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIFdURl9VU0VfQ09SRUFVRElPIDEKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDllZjFjM2E1NTM0MWUyMjZlMzIxOTdkNWI3M2Fk
ZGU1MDc2MDBjN2EuLjg0YzA1MDIwMjQyMWI1M2YxZTAwMzhiYWM4NzY4NDg2MzI4ODM4NDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yNzYsNiArMjc2LDcgQEAgU0VUKFdlYkNvcmVfSURMX0ZJ
TEVTCiAgICAgaHRtbC9IVE1MVW5rbm93bkVsZW1lbnQuaWRsCiAgICAgaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmlkbAogICAgIGh0bWwvSW1hZ2VEYXRhLmlkbAorICAgIGh0bWwvTWVkaWFDb250cm9s
bGVyLmlkbAogICAgIGh0bWwvTWVkaWFFcnJvci5pZGwKICAgICBodG1sL1RleHRNZXRyaWNzLmlk
bAogICAgIGh0bWwvVGV4dFRyYWNrLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCmluZGV4
IGIzZjFlM2ZiOTk2ZTc5MDM5M2Q5ZmRjODZmNjkxYjhhNjE1M2QzZDYuLjU1ODc2MDkwNjY5ZDI5
ZTczNmMxYTg2ZDYyMDJiNzQyYjAyYzJmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAK
QEAgLTIyOCw2ICsyMjgsNyBAQAogI2luY2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAi
CiAjaW5jbHVkZSAiSlNLZXlib2FyZEV2ZW50LmNwcCIKICNpbmNsdWRlICJKU0xvY2F0aW9uLmNw
cCIKKyNpbmNsdWRlICJKU01lZGlhQ29udHJvbGxlci5jcHAiCiAjaW5jbHVkZSAiSlNNZWRpYUVy
cm9yLmNwcCIKICNpbmNsdWRlICJKU01lZGlhTGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNNZWRpYVF1
ZXJ5TGlzdC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBlNjA3NGMxZWQ3
NzEzNGU1YmNiZWE2YTk4YjVlMThkYzk5OGFhNzBmLi40ODQ5NTYyNzM1ZjNiNjAxZjRkZDk1MDVl
MTBhYjIxYjdhMjhiMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI3Nyw2
ICsyNzcsNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBLZXlib2FyZEV2ZW50IFwKICAgICBMb2Nh
dGlvbiBcCiAgICAgTG93UGFzczJGaWx0ZXJOb2RlIFwKKyAgICBNZWRpYUNvbnRyb2xsZXIgXAog
ICAgIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBcCiAgICAgTWVkaWFFcnJvciBcCiAgICAg
TWVkaWFMaXN0IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnBy
aSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCBjYWViNzk5ZTY3NmQx
MjBhNGU4OWNlODQwNDM3NDc1NzJjNGY3ZTk2Li5jNmY1MmU4MzdhN2UyZmZmMzE1MzMxNWE1MWNl
NDg2ODA1MTY3ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5w
cmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCkBAIC0zMTQsNiArMzE0
LDcgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBodG1sL0hUTUxVbmtub3duRWxlbWVudC5pZGwg
XAogICAgIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwgXAogICAgIGh0bWwvSW1hZ2VEYXRhLmlk
bCBcCisgICAgaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsIFwKICAgICBodG1sL01lZGlhRXJyb3Iu
aWRsIFwKICAgICBodG1sL1RleHRNZXRyaWNzLmlkbCBcCiAgICAgaHRtbC9UaW1lUmFuZ2VzLmlk
bCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA4NjY4Y2YxN2Y3N2ZmY2FhZTY1
MTBmYzQyZTVlNzZmODY3ZTAzN2ZmLi4wM2UyODU4OWEwYjkwODFkMGM2NDhhN2JmNzAwNDU5ZWY3
Zjg0NDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM1OSw2ICszNTksOCBA
QCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNM
b2NhbE1lZGlhU3RyZWFtLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNMb2NhdGlvbi5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNMb2NhdGlvbi5oIFwKKwlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTTWVkaWFDb250cm9sbGVyLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU01lZGlhQ29udHJvbGxlci5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVk
aWFFcnJvci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUVycm9yLmggXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUxpc3QuY3BwIFwKQEAgLTc4OSw2ICs3OTEs
NyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxMaW5rRWxlbWVudEN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBcCkBAIC0xODc1
LDYgKzE4NzgsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwv
TGlua1JlbEF0dHJpYnV0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRy
YWNrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFDb250cm9sbGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1
bWVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaCBcCkBAIC0yNDU0LDYgKzI0NTksMTAgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0
ZW0uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQXV0b2RyYWluZWRQb29sLmggXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0Nsb2NrLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2su
aCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0NvbG9yQ2hvb3Nlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbG9yQ2hv
b3Nlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKaW5kZXggZjY3MTY0MjgzZmFmZGIzZjdlZTVkZTc5ZDhhZGI1ZjNiYjk1YmNmYy4uZjQ3
NWI5ZjM0ZDMzODY3Mzc2ZTY3YjBmMTYwNjRmN2RhZTM1ZGE2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0x
OTMsNiArMTkzLDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1h
Z2VFbGVtZW50Q29uc3RydWN0b3IuY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTE91dHB1dEVsZW1lbnRDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTFBsdWdJbkVsZW1lbnRDdXN0b20uY3BwIFwKQEAgLTMwMyw2ICsz
MDQsNyBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1
c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20u
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwIFwK
KyAgICAgICAgYmluZGluZ3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAg
ICAgIGJpbmRpbmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwIFwKICAgICAgICAg
YmluZGluZ3MvanMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwIFwKICAgICAgICAg
YmluZGluZ3MvanMvSlNIVE1MT3V0cHV0RWxlbWVudEN1c3RvbS5jcHAgXApAQCAtMTAxOSw2ICsx
MDIxLDggQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWREYXRlTm9u
ZS5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvTG9jYWxpemVkTnVtYmVyTm9uZS5jcHAgXAogICAg
IHBsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcCBcCisgICAgcGxhdGZvcm0vQ2xvY2su
Y3BwIFwKKyAgICBwbGF0Zm9ybS9DbG9ja0dlbmVyaWMuY3BwIFwKICAgICBwbGF0Zm9ybS9Db250
ZW50VHlwZS5jcHAgXAogICAgIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBcCiAgICAg
cGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwIFwKQEAgLTEwMjksNyArMTAzMyw2IEBAIFNPVVJD
RVMgKz0gXAogICAgIHBsYXRmb3JtL0ZpbGVJY29uTG9hZGVyLmNwcCBcCiAgICAgcGxhdGZvcm0v
RmlsZVN0cmVhbS5jcHAgXAogICAgIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwIFwKLSAgICBwbGF0
Zm9ybS9DbG9ja0dlbmVyaWMuY3BwIFwKICAgICBwbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2Uu
Y3BwIFwKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9JbWFnZUZyYW1lUXQuY3BwIFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwIFwKQEAgLTE4NjMsNiAr
MTg2Niw3IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwvTGFiZWxzTm9kZUxpc3QuaCBcCiAgICAg
aHRtbC9MaW5rUmVsQXR0cmlidXRlLmggXAogICAgIGh0bWwvTG9hZGFibGVUZXh0VHJhY2suaCBc
CisgICAgaHRtbC9NZWRpYUNvbnRyb2xsZXIuaCBcCiAgICAgaHRtbC9NZWRpYURvY3VtZW50Lmgg
XAogICAgIGh0bWwvTWljcm9EYXRhSXRlbVZhbHVlLmggXAogICAgIGh0bWwvUGx1Z2luRG9jdW1l
bnQuaCBcCkBAIC0yMDUwLDYgKzIwNTQsOCBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9h
bmltYXRpb24vQW5pbWF0aW9uTGlzdC5oIFwKICAgICBwbGF0Zm9ybS9BcmVuYS5oIFwKICAgICBw
bGF0Zm9ybS9Bc3luY0ZpbGVTdHJlYW0uaCBcCisgICAgcGxhdGZvcm0vQ2xvY2suaCBcCisgICAg
cGxhdGZvcm0vQ2xvY2tHZW5lcmljLmggXAogICAgIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmggXAog
ICAgIHBsYXRmb3JtL0NvbnRleHRNZW51LmggXAogICAgIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29w
aWVyLmggXApAQCAtMjA2OCw3ICsyMDc0LDYgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0v
bW9jay9HZW9sb2NhdGlvblNlcnZpY2VNb2NrLmggXAogICAgIHBsYXRmb3JtL21vY2svU3BlZWNo
SW5wdXRDbGllbnRNb2NrLmggXAogICAgIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2Nr
LmggXAotICAgIHBsYXRmb3JtL0Nsb2NrR2VuZXJpYy5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIFwKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaCBcCkBAIC0zMDg0LDYgKzMwODksNyBA
QCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU89MSkgewogICAgICAgICBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwIFwKICAgICAgICAgaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAgXAog
ICAgICAgICBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIFwKKyAgICAgICAgaHRtbC9NZWRpYUNv
bnRyb2xsZXIuY3BwIFwKICAgICAgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMu
Y3BwIFwKICAgICAgICAgaHRtbC9UaW1lUmFuZ2VzLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZjZhODYzNmQyNDQw
OWU4N2Y3OTMxYjlhOTE1OWY1YTk5NGYzY2M1MS4uYWIyYmE0ZWI4NTI0N2E3ZGYxZTlkNGZlYTQ2
ZjEyODg5YzAwMzU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTMzMSw2ICsxMzMxLDcgQEAKICAg
ICAgICAgICAgICdodG1sL0hUTUxVbmtub3duRWxlbWVudC5pZGwnLAogICAgICAgICAgICAgJ2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvSW1hZ2VEYXRhLmlk
bCcsCisgICAgICAgICAgICAnaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsJywKICAgICAgICAgICAg
ICdodG1sL01lZGlhRXJyb3IuaWRsJywKICAgICAgICAgICAgICdodG1sL1RleHRNZXRyaWNzLmlk
bCcsCiAgICAgICAgICAgICAnaHRtbC9UZXh0VHJhY2suaWRsJywKQEAgLTE4NzUsNiArMTg3Niw3
IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmgn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCcs
CisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uaCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20u
Y3BwJywKQEAgLTIxOTcsNiArMjE5OSw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmgnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwJywKKyAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9u
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE91dHB1
dEVsZW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MUGx1Z0luRWxlbWVudEN1c3RvbS5jcHAnLApAQCAtNTU5OCw2ICs1NjAxLDggQEAKICAgICAg
ICAgICAgICdodG1sL0xpbmtSZWxBdHRyaWJ1dGUuaCcsCiAgICAgICAgICAgICAnaHRtbC9Mb2Fk
YWJsZVRleHRUcmFjay5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvTG9hZGFibGVUZXh0VHJhY2su
aCcsCisgICAgICAgICAgICAnaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAg
ICdodG1sL01lZGlhQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdodG1sL01lZGlhRG9jdW1l
bnQuY3BwJywKICAgICAgICAgICAgICdodG1sL01lZGlhRG9jdW1lbnQuaCcsCiAgICAgICAgICAg
ICAnaHRtbC9NZWRpYUVycm9yLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagppbmRleCBhZGRmYTI0ZWEyODg3YzFlMjY4YzlhMjNmMGYzNTAyYmQ0NTU5
N2U1Li5jOWM5MWQ0YzFkMDdhMGFlMjMyOTJjMzM5NzgwZDUyNmY5YmJjOWQxIDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjYyNjIsNiArMjYy
NjIsMjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cQ2xvY2suY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxDbG9jay5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxDbG9ja0dlbmVyaWMuY3BwIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxDbG9ja0dlbmVyaWMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cQ29udGVudFR5cGUuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4K
QEAgLTU3NjA2LDYgKzU3NjIyLDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTWVkaWFDb250cm9sbGVyLmNwcCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxNZWRpYUNvbnRyb2xs
ZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aHRtbFxNZWRpYURvY3VtZW50LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTg2ZTBjMjVi
Y2VmMGQ3YjI5MTAyMTU1YTY0MTllOThmZmY3MmUwMy4uZmYzMDk1MjRlODBhNDkwNzZlYTI2ZWY4
NTRhZDA5Yzk2OWVjMGM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTcxMiwxNyArNTcxMiwyMiBAQAogCQlDRDBEQkZFRTE0
MjI3Njg1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXYgaW4g
Q29weSBBdWRpbyBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0QwREJFMEQxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1Az
MTUud2F2ICovOyB9OwogCQlDRDBEQkZFRjE0MjI3Njg1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0
ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXYgaW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwREJFMEUxNDIyNzU5NTAwMjgwMjYzIC8qIElS
Q19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMzAud2F2ICovOyB9OwogCQlDRDBEQkZGMDE0MjI3
Njg1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXYgaW4gQ29w
eSBBdWRpbyBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Qw
REJFMEYxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzNDUu
d2F2ICovOyB9OworCQlDRDI3RjZFNTE0NTc2ODVBMDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Qy
N0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJ
Q0QyN0Y2RTcxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFNjE0NTc3MEQzMDA3
ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0Q4MjAzMEExMzk1QUI2QTAw
Rjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzA2MTM5NUFCNkEwMEY5NTZDNiAv
KiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q4MjAzMEIxMzk1QUI2QTAwRjk1NkM2IC8qIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlci5tbSAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAi
LVduby11bmRlZiI7IH07IH07CiAJCUNEODIwMzBDMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRl
b0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwODEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEODIwMzBEMTM5NUFCNkEwMEY5NTZDNiAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAzMDkxMzk1QUI2QTAwRjk1NkM2IC8q
IFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gKi87IH07CiAJCUNEODIw
MzEwMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBFMTM5NUFDRTcwMEY5NTZD
NiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAqLzsgfTsKIAkJQ0Q4MjAzMTExMzk1QUNFNzAwRjk1
NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dB
bmltYXRpb24ubW0gKi87IH07CisJCUNERDUyNUQ3MTQ1QjZERDAwMDhEMjA0RCAvKiBKU0hUTUxN
ZWRpYUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpTSFRNTE1lZGlhRWxlbWVu
dEN1c3RvbS5jcHAgKi87IH07CiAJCUNERUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQbGF0Zm9y
bUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi87IH07
CiAJCUNERUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MzIxNDYwQUUyOTAw
OEIzMUYxIC8qIENsb2NrR2VuZXJpYy5jcHAgKi87IH07CiAJCUNERUE3NjM1MTQ2MEI3MUEwMDhC
MzFGMSAvKiBDbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREVBNzYzMzE0NjBCNDYyMDA4QjMxRjEgLyogQ2xvY2suY3BwICovOyB9OwogCQlD
REVBN0M4NDEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTdDODIxMjc2MjMwNDAwQjg0
NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uaCAqLzsgfTsKIAkJQ0RFQTdDODUxMjc2MjMwNDAwQjg0
NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RFQTdDODMxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxT
Y3JlZW4uY3BwICovOyB9OworCQlDREY2NUNDODE0NUIxRTc1MDBDNEM3QUEgLyogTWVkaWFDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDI3RjZFNDE0NTc2Nzg3MDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RGNjVDQ0ExNDVCNDQ4ODAw
QzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQzkxNDVCNDNBNzAwQzRDN0FBIC8qIE1l
ZGlhQ29udHJvbGxlckludGVyZmFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNFMDJGMEM0MTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250
cm9sbGVyQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0UwMkYwQzMxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UwNTdGQTUx
MjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBMzEyMjA3MzExMDBB
NDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0UwNTdGQTYx
MjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3
NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzAyMiw2ICsxMzAyNywxMSBAQAogCQlDRDBE
QkUwRDE0MjI3NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53
YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRp
by53YXY7IG5hbWUgPSBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1LndhdjsgcGF0aCA9
IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9JUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1
Lndhdjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlDRDBEQkUwRTE0MjI3NTk1MDAy
ODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXYgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBJ
UkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzMwLndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlv
L3Jlc291cmNlcy9JUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzMwLndhdjsgc291cmNlVHJl
ZSA9IFNPVVJDRV9ST09UOyB9OwogCQlDRDBEQkUwRjE0MjI3NTk1MDAyODAyNjMgLyogSVJDX0Nv
bXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBJUkNfQ29tcG9zaXRlX0Nf
UjAxOTVfVDM0NV9QMzQ1LndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9JUkNf
Q29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzQ1Lndhdjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OworCQlDRDI3RjZFMDE0NTc1QzFCMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBNZWRpYUNvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RDI3RjZFMjE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYUNvbnRyb2xsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDI3RjZFMzE0NTc2NzU4MDA3ODIwN0QgLyogSlNN
ZWRpYUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRp
YUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyN0Y2RTQxNDU3
Njc4NzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZWRpYUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0QyN0Y2RTYxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEgLyogZnVs
bHNjcmVlbi5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW4uY3NzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyog
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNEODIwMzA3MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEzMDMwLDYgKzEzMDQwLDggQEAKIAkJQ0Q4MjAzMEUxMzk1QUNFNzAwRjk1NkM2IC8q
IFdlYldpbmRvd0FuaW1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJXaW5kb3dBbmltYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4MjAz
MEYxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYldpbmRvd0FuaW1hdGlvbi5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCRDkzQkExMzMzQkQ0QjAwMjU3MEUzIC8qIGZ1bGxz
Y3JlZW5RdWlja1RpbWUuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVu
UXVpY2tUaW1lLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDRTVDQ0YxNDYz
M0JDOTAwRDQ3Q0NBIC8qIEV2ZW50RmFjdG9yeS5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBF
dmVudEZhY3RvcnkuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQ0U1Q0QwMTQ2
MzNCQzkwMEQ0N0NDQSAvKiBFdmVudFRhcmdldEZhY3RvcnkuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gRXZlbnRUYXJnZXRGYWN0b3J5LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDREVBNzYyQzE0NjA4MjI0MDA4QjMxRjEgLyogQ2xvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2xvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RF
QTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ0EuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREVBNzYyRjE0NjA4NEVFMDA4QjMxRjEgLyogUGxhdGZvcm1D
bG9ja0NBLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ2xvY2tD
QS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMwMzgsNiArMTMwNTAsOCBAQAog
CQlDREVBNzYzMzE0NjBCNDYyMDA4QjMxRjEgLyogQ2xvY2suY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ2xvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDREVBN0M4MjEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJGdWxsU2NyZWVuLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3QzgzMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJG
dWxsU2NyZWVuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRl
ckZ1bGxTY3JlZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY2NUNDOTE0
NUI0M0E3MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREY2NUNDQzE0NUI2QUZFMDBDNEM3QUEgLyogSlNIVE1M
TWVkaWFFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRDb250cm9sbGVyQmFzZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUg
LyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNFMDU3RkE0MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzM3OCw2
ICsxNzM5MiwxMCBAQAogCQkJCUU0NDYxM0EwMENENjMzMTAwMEZBREE3NSAvKiBWb2lkQ2FsbGJh
Y2suaWRsICovLAogCQkJCUY1NUIzREFCMTI1MUYxMkQwMDNFRjI2OSAvKiBXZWVrSW5wdXRUeXBl
LmNwcCAqLywKIAkJCQlGNTVCM0RBQzEyNTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0VHlwZS5o
ICovLAorCQkJCUNEMjdGNkUwMTQ1NzVDMUIwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaWRs
ICovLAorCQkJCUNEMjdGNkU0MTQ1NzY3ODcwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaCAq
LywKKwkJCQlDRDI3RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCAq
LywKKwkJCQlDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJm
YWNlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGh0bWw7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtMTc2MTEsNiArMTc2MjksOCBAQAogCQlBODNCNzkwODBDQ0FGRjJCMDAwQjA4MjUg
LyogSFRNTCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
Q0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLywKKwkJ
CQlDRDI3RjZFMzE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuaCAqLywKIAkJ
CQk0OUVFQ0VGMjEwNTA3MEM0MDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlci5jcHAgKi8sCiAJCQkJ
NDlFRUNFRjMxMDUwNzBDNDAwMDk5RkFCIC8qIEpTQXJyYXlCdWZmZXIuaCAqLywKIAkJCQk0OUVF
Q0YxOTEwNTA3MkYzMDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlclZpZXcuY3BwICovLApAQCAtMTk2
MzMsNiArMTk2NTMsNyBAQAogCQkJCUJDQzQzODc3MEU4ODZDQzcwMDUzM0RENSAvKiBKU0hUTUxJ
bnB1dEVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUUxQUQxNDIyMTI5NUVBN0YwMEFDQTk4OSAv
KiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uaCAqLywKIAkJCQlFMUFEMTM5QTEyOTVEOTI2MDBB
Q0E5ODkgLyogSlNIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwICovLAorCQkJCUNERjY1Q0NDMTQ1
QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJD
MzA1Q0EzMEMwNzgxQkIwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcCAq
LywKIAkJCQlFMUFEMTQyNDEyOTVFQTk1MDBBQ0E5ODkgLyogSlNIVE1MT2JqZWN0RWxlbWVudEN1
c3RvbS5oICovLAogCQkJCTQ0OEFEMjdBMEE0ODEzNzkwMDIzRDE3OSAvKiBKU0hUTUxPcHRpb25z
Q29sbGVjdGlvbkN1c3RvbS5jcHAgKi8sCkBAIC0yMDk0Niw2ICsyMDk2Nyw4IEBACiAJCUY1MjNE
MzI0MDJERTQ0NzgwMTg2MzVDQSAvKiBkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCUNEQ0U1Q0NGMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudEZhY3Rv
cnkuaW4gKi8sCisJCQkJQ0RDRTVDRDAxNDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50VGFyZ2V0RmFj
dG9yeS5pbiAqLywKIAkJCQlFMUM0REU2RDBFQTc1QzY1MDAyM0NDRDYgLyogQWN0aXZlRE9NT2Jq
ZWN0LmNwcCAqLywKIAkJCQlFMUM0REU2ODBFQTc1QzFFMDAyM0NDRDYgLyogQWN0aXZlRE9NT2Jq
ZWN0LmggKi8sCiAJCQkJQThDNEE3RkMwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuY3BwICovLApA
QCAtMjQ2NDAsNiArMjQ2NjMsOCBAQAogCQkJCTk3NkYzNkVCMTQ2ODYyMjUwMDVFOTNCNCAvKiBT
ZWN1cml0eUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMzQ0OTZFMTQ2OTQxQjMwMDcy
MDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzREMkRBNTE0
NkE1MzVEMDBENTFGOEIgLyogU2VjdXJpdHlQb2xpY3kuaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
RjY1Q0M4MTQ1QjFFNzUwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCUNERjY1Q0NBMTQ1QjQ0ODgwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjc0OTYsNiArMjc1MjEsOSBAQAogCQkJCUNBRTlGOTBG
MTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNERUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2MzQxNDYwQjU2RjAwOEIzMUYxIC8qIENsb2NrR2VuZXJp
Yy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDI3RjZFNTE0NTc2ODVBMDA3ODIwN0QgLyogSlNN
ZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QyN0Y2RTcxNDU3NzBEMzAw
NzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREQ1MjVE
NzE0NUI2REQwMDA4RDIwNEQgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNERUE3NjM1MTQ2MEI3MUEwMDhCMzFGMSAvKiBDbG9jay5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5NzZGMzZFQTE0Njg2MjI1MDA1RTkzQjQgLyogU2VjdXJpdHlDb250ZXh0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcxMzQ0OTZEMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdM
ZW5ndGhDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKaW5kZXgg
MWEzNTM3ZDEzOGI2NjMxMDY1YmE4NzBmMmJkMWY0NjY3ZGIxZTRiZS4uMDIzNTk0OTJkNjc1ZTFm
YjFhMDllMzQxYjNkZDg0Yjk1ZDIxMTkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCkBAIC0xMTMs
NiArMTEzLDExIEBAIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbFNvdXJjZUVsZW1l
bnRFbmFibGVkKCkKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7CiB9CiAK
K2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFDb250cm9sbGVyRW5hYmxlZCgpCit7
CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOworfQorCiBib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhRXJyb3JFbmFibGVkKCkKIHsKICAgICByZXR1cm4gTWVk
aWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDgwMDFiN2E3MGYz
OTFhNTU1ZmVjYzYwNjM0ZjBkZDdhMGY3NmEzZDYuLmMzYTljNjAyZWQwN2ZlZDk1ODIzNmEwZjJj
YzRmMzE1NDk2MTA1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVy
aWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC05NCw2ICs5NCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgYm9vbCBodG1sQXVkaW9FbGVtZW50RW5hYmxlZCgpOwogICAgIHN0YXRp
YyBib29sIGh0bWxWaWRlb0VsZW1lbnRFbmFibGVkKCk7CiAgICAgc3RhdGljIGJvb2wgaHRtbFNv
dXJjZUVsZW1lbnRFbmFibGVkKCk7CisgICAgc3RhdGljIGJvb2wgbWVkaWFDb250cm9sbGVyRW5h
YmxlZCgpOwogICAgIHN0YXRpYyBib29sIG1lZGlhRXJyb3JFbmFibGVkKCk7CiAgICAgc3RhdGlj
IGJvb2wgdGltZVJhbmdlc0VuYWJsZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggMDAwYzViZmE3ZjQzNDk3
MWZiN2Y0MTFjMDVkMzFiZjZjZDNhYzUxYy4uY2ZkZDYyYjU5NzgwYzAxMmI1NjBiZDEwNjc2YzRk
N2YyN2E4OWIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRp
bmdzQWxsSW5PbmUuY3BwCkBAIC05Miw2ICs5Miw3IEBACiAjaW5jbHVkZSAiSlNIVE1MRnJhbWVT
ZXRFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTSFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCIKKyNpbmNsdWRlICJK
U0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTE9iamVjdEVsZW1l
bnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNw
cCIKICNpbmNsdWRlICJKU0hUTUxPdXRwdXRFbGVtZW50Q3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU0MTI3NTAxMTU5NzNhNzhhZTRjOWE2MTI0MjMwMzZmZDZiYzUxMjUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVs
ZW1lbnRDdXN0b20uY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgRU5BQkxFKFZJ
REVPKQorCisjaW5jbHVkZSAiSlNIVE1MTWVkaWFFbGVtZW50LmgiCisKKyNpbmNsdWRlICJKU01l
ZGlhQ29udHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFj
ZSBKU0M7CisKK3ZvaWQgSlNIVE1MTWVkaWFFbGVtZW50OjpzZXRDb250cm9sbGVyKEV4ZWNTdGF0
ZSosIEpTVmFsdWUgdmFsdWUpCit7CisgICAgSFRNTE1lZGlhRWxlbWVudCogaW1wID0gc3RhdGlj
X2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KGltcGwoKSk7CisgICAgLy8gT24gc2V0dGluZywgaXQg
bXVzdCBmaXJzdCByZW1vdmUgdGhlIGVsZW1lbnQncyBtZWRpYWdyb3VwIGF0dHJpYnV0ZSwgaWYg
YW55LCAKKyAgICBpbXAtPnNldE1lZGlhR3JvdXAoU3RyaW5nKCkpOworICAgIC8vIGFuZCB0aGVu
IHNldCB0aGUgY3VycmVudCBtZWRpYSBjb250cm9sbGVyIHRvIHRoZSBnaXZlbiB2YWx1ZS4KKyAg
ICBpbXAtPnNldENvbnRyb2xsZXIodG9NZWRpYUNvbnRyb2xsZXIodmFsdWUpKTsKK30KKworfQor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3MzE1MmRkNmEw
MjRiZGM4MWRhM2QyMmM4Mzc0OWE1MmZmZTMyNzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcApA
QCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVk
ZSAiVjhIVE1MTWVkaWFFbGVtZW50LmgiCisKKyNpbmNsdWRlICJWOE1lZGlhQ29udHJvbGxlci5o
IgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFY4
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFDb250cm9sbGVyQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLkhUTUxNZWRpYUVsZW1l
bnQubWVkaWFDb250cm9sbGVyLl9zZXQiKTsKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBpbXAgPSBW
OEhUTUxNZWRpYUVsZW1lbnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIE1lZGlhQ29u
dHJvbGxlciogY29udHJvbGxlciA9IDA7CisgICAgaWYgKFY4TWVkaWFDb250cm9sbGVyOjpIYXNJ
bnN0YW5jZSh2YWx1ZSkpCisgICAgICAgIGNvbnRyb2xsZXIgPSBWOE1lZGlhQ29udHJvbGxlcjo6
dG9OYXRpdmUodmFsdWUtPlRvT2JqZWN0KCkpOworICAgIAorICAgIGlmICghY29udHJvbGxlcikg
eworICAgICAgICB0aHJvd0Vycm9yKCJWYWx1ZSBpcyBub3Qgb2YgdHlwZSBNZWRpYUNvbnRyb2xs
ZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGltcC0+c2V0Q29udHJvbGxlcihj
b250cm9sbGVyKTsKK30KKworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApp
bmRleCBjNmYxZjNkNDQzYjg1YjZmNjQyMGNlZWM5NGJlZmIyMjc4NjJkNDQ2Li5iYWYwZWZjODlk
NGFkZWFhYjMxYzcyMzMwZjhkMTVkZTE5ZDk4OGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
aApAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSURCVmVy
c2lvbkNoYW5nZVJlcXVlc3Q7CiAgICAgY2xhc3MgSmF2YVNjcmlwdEF1ZGlvTm9kZTsKICAgICBj
bGFzcyBMb2NhbE1lZGlhU3RyZWFtOworICAgIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsKICAgICBj
bGFzcyBNZWRpYVN0cmVhbTsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBOb2Rl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggNmJkYjJlMjFj
YTk2YjNlMTBkM2JlMWM3MWVmNzMwZDI3ZjAwZDkxZC4uMmEzODkwMzU3YmFmOWU5NjZhN2YxMzcx
NGQ2MTBlZjdkZTEwODRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5
LmluCkBAIC0xMyw2ICsxMyw3IEBAIElEQlRyYW5zYWN0aW9uIGNvbmRpdGlvbmFsPUlOREVYRURf
REFUQUJBU0UKIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IGNvbmRpdGlvbmFsPUlOREVYRURfREFU
QUJBU0UKIEphdmFTY3JpcHRBdWRpb05vZGUgY29uZGl0aW9uYWw9V0VCX0FVRElPCiBMb2NhbE1l
ZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorTWVkaWFDb250cm9sbGVyIGNvbmRp
dGlvbmFsPVZJREVPCiBNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1lc3Nh
Z2VQb3J0CiBOb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1
dGVOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmlu
ZGV4IGYxZTM1NGI2MzFmNDliYTNhYzEwMWU1NTEzZDI3NWFjNWQyZDA5ODIuLmFlNWZiNzFjZWVl
ODY0MDk4MzZmZTJkNTAxZWMzZmE5OTBiYTM3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dHJpYnV0ZU5hbWVzLmluCkBAIC0xNDgsNiArMTQ4LDcgQEAgbWF4CiBtYXhsZW5ndGgKIG1h
eXNjcmlwdAogbWVkaWEKK21lZGlhZ3JvdXAKIG1ldGhvZAogbWluCiBtdWx0aXBsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYzAwYzY0MDU5ZTQzNDJmZWE5
NTc2ZmU5NmFhOWU2MDdkMmZlMWQ3Yi4uMzZhNTg2Y2RmNmFmY2VhOGM3MDhiZGQxMjhmYTllOWMx
YWU3ZWY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01
Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiSFRNTFNvdXJjZUVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlh
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKICNpbmNsdWRlICJNZWRp
YURvY3VtZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFFcnJvci5oIgpAQCAtMTM2LDYgKzEzNywzMSBA
QCBzdGF0aWMgY29uc3QgY2hhciogbWVkaWFTb3VyY2VVUkxQcm90b2NvbCA9ICJ4LW1lZGlhLXNv
dXJjZSI7CiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKK3VzaW5nIG5hbWVz
cGFjZSBzdGQ7CisKK3R5cGVkZWYgSGFzaE1hcDxEb2N1bWVudCosIEhhc2hTZXQ8SFRNTE1lZGlh
RWxlbWVudCo+ID4gRG9jRWxlbWVudFNldE1hcDsKK3N0YXRpYyBEb2NFbGVtZW50U2V0TWFwJiBk
b2N1bWVudFRvRWxlbWVudFNldE1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChEb2NF
bGVtZW50U2V0TWFwLCBtYXAsICgpKTsKKyAgICByZXR1cm4gbWFwOworfQorCitzdGF0aWMgdm9p
ZCBhZGRFbGVtZW50VG9Eb2N1bWVudE1hcChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50LCBEb2N1
bWVudCogZG9jdW1lbnQpCit7CisgICAgRG9jRWxlbWVudFNldE1hcCYgbWFwID0gZG9jdW1lbnRU
b0VsZW1lbnRTZXRNYXAoKTsKKyAgICBIYXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPiBzZXQgPSBt
YXAudGFrZShkb2N1bWVudCk7CisgICAgc2V0LmFkZChlbGVtZW50KTsKKyAgICBtYXAuYWRkKGRv
Y3VtZW50LCBzZXQpOworfQorCitzdGF0aWMgdm9pZCByZW1vdmVFbGVtZW50RnJvbURvY3VtZW50
TWFwKEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQsIERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAg
ICBEb2NFbGVtZW50U2V0TWFwJiBtYXAgPSBkb2N1bWVudFRvRWxlbWVudFNldE1hcCgpOworICAg
IEhhc2hTZXQ8SFRNTE1lZGlhRWxlbWVudCo+IHNldCA9IG1hcC50YWtlKGRvY3VtZW50KTsKKyAg
ICBzZXQucmVtb3ZlKGVsZW1lbnQpOworICAgIGlmICghc2V0LmlzRW1wdHkoKSkKKyAgICAgICAg
bWFwLmFkZChkb2N1bWVudCwgc2V0KTsKK30KIAogSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlh
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTIxMyw2ICsyMzksNyBA
QCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bQogI2VuZGlmCiAKICAgICBzZXRIYXNDdXN0b21XaWxs
T3JEaWRSZWNhbGNTdHlsZSgpOworICAgIGFkZEVsZW1lbnRUb0RvY3VtZW50TWFwKHRoaXMsIGRv
Y3VtZW50KTsKIH0KIAogSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQpAQCAt
MjI4LDYgKzI1NSwxMSBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4dFRyYWNrcy5zaXplKCk7ICsraSkKICAg
ICAgICAgbV90ZXh0VHJhY2tzW2ldLT5zZXRDbGllbnQoMCk7CiAjZW5kaWYKKworICAgIGlmICht
X21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgbV9tZWRpYUNvbnRyb2xsZXItPnJlbW92ZU1lZGlh
RWxlbWVudCh0aGlzKTsKKworICAgIHJlbW92ZUVsZW1lbnRGcm9tRG9jdW1lbnRNYXAodGhpcywg
ZG9jdW1lbnQoKSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbE1vdmVUb05ld093
bmVyRG9jdW1lbnQoKQpAQCAtMjM3LDYgKzI2OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQogICAgIHNldFNob3VsZERlbGF5TG9hZEV2ZW50
KGZhbHNlKTsKICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9u
Q2FsbGJhY2tzKHRoaXMpOwogICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JNZWRpYVZvbHVt
ZUNhbGxiYWNrcyh0aGlzKTsKKyAgICByZW1vdmVFbGVtZW50RnJvbURvY3VtZW50TWFwKHRoaXMs
IGRvY3VtZW50KCkpOwogICAgIEhUTUxFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVu
dCgpOwogfQogCkBAIC0yNDgsNiArMjgxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRN
b3ZlVG9OZXdPd25lckRvY3VtZW50KCkKICAgICAgICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQo
dHJ1ZSk7CiAgICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxs
YmFja3ModGhpcyk7CiAgICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JNZWRpYVZvbHVtZUNhbGxi
YWNrcyh0aGlzKTsKKyAgICBhZGRFbGVtZW50VG9Eb2N1bWVudE1hcCh0aGlzLCBkb2N1bWVudCgp
KTsKICAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogfQogCkBA
IC0yOTQsNyArMzI4LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIGlmICghYXV0b3BsYXkoKSAmJiBtX3BsYXll
cikKICAgICAgICAgICAgIG1fcGxheWVyLT5zZXRQcmVsb2FkKG1fcHJlbG9hZCk7CiAKLSAgICB9
IGVsc2UgaWYgKGF0dHJOYW1lID09IG9uYWJvcnRBdHRyKQorICAgIH0gZWxzZSBpZiAoYXR0ck5h
bWUgPT0gbWVkaWFncm91cEF0dHIpCisgICAgICAgIHNldE1lZGlhR3JvdXAoYXR0ci0+dmFsdWUo
KSk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25hYm9ydEF0dHIpCiAgICAgICAgIHNldEF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmFib3J0RXZlbnQsIGNyZWF0ZUF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09
IG9uYmVmb3JlbG9hZEF0dHIpCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0
aGlzLCBhdHRyKSk7CkBAIC01ODQsMTAgKzYyMCwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnByZXBhcmVGb3JMb2FkKCkKICAgICAgICAgbV9zZWVraW5nID0gZmFsc2U7CiAgICAgICAgIGlu
dmFsaWRhdGVDYWNoZWRUaW1lKCk7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygp
LmVtcHRpZWRFdmVudCk7CisgICAgICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOwogICAgIH0K
IAogICAgIC8vIDUgLSBTZXQgdGhlIHBsYXliYWNrUmF0ZSBhdHRyaWJ1dGUgdG8gdGhlIHZhbHVl
IG9mIHRoZSBkZWZhdWx0UGxheWJhY2tSYXRlIGF0dHJpYnV0ZS4KLSAgICBzZXRQbGF5YmFja1Jh
dGUoZGVmYXVsdFBsYXliYWNrUmF0ZSgpKTsKKyAgICBzZXRQbGF5YmFja1JhdGUobV9tZWRpYUNv
bnRyb2xsZXIgPyBtX21lZGlhQ29udHJvbGxlci0+ZGVmYXVsdFBsYXliYWNrUmF0ZSgpIDogZGVm
YXVsdFBsYXliYWNrUmF0ZSgpKTsKIAogICAgIC8vIDYgLSBTZXQgdGhlIGVycm9yIGF0dHJpYnV0
ZSB0byBudWxsIGFuZCB0aGUgYXV0b3BsYXlpbmcgZmxhZyB0byB0cnVlLgogICAgIG1fZXJyb3Ig
PSAwOwpAQCAtMTIyNCw2ICsxMjYxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFk
eVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQogICAgIH0KIAogICAgIHVwZGF0
ZVBsYXlTdGF0ZSgpOworICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOwogfQogCiAjaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKQEAgLTE1MjMsNiArMTU2MSwxMCBAQCBmbG9hdCBIVE1MTWVkaWFF
bGVtZW50OjpjdXJyZW50VGltZSgpIGNvbnN0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0
Q3VycmVudFRpbWUoZmxvYXQgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgaWYgKG1f
bWVkaWFDb250cm9sbGVyKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAgICAgc2Vlayh0aW1lLCBlYyk7CiB9CiAKQEAgLTE1NzQsMTMg
KzE2MTYsMTQgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tSYXRlKCkgY29uc3QK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUpCiB7CiAg
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKCVmKSIsIHJh
dGUpOwotCisgICAgCiAgICAgaWYgKG1fcGxheWJhY2tSYXRlICE9IHJhdGUpIHsKICAgICAgICAg
bV9wbGF5YmFja1JhdGUgPSByYXRlOwogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVkVGltZSgpOwog
ICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpOwogICAg
IH0KLSAgICBpZiAobV9wbGF5ZXIgJiYgcG90ZW50aWFsbHlQbGF5aW5nKCkgJiYgbV9wbGF5ZXIt
PnJhdGUoKSAhPSByYXRlKQorCisgICAgaWYgKG1fcGxheWVyICYmIHBvdGVudGlhbGx5UGxheWlu
ZygpICYmIG1fcGxheWVyLT5yYXRlKCkgIT0gcmF0ZSAmJiAhbV9tZWRpYUNvbnRyb2xsZXIpCiAg
ICAgICAgIG1fcGxheWVyLT5zZXRSYXRlKHJhdGUpOwogfQogCkBAIC0xNjc2LDcgKzE3MTksMTAg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwoKQogICAgICAgICBFeGNlcHRp
b25Db2RlIHVudXNlZDsKICAgICAgICAgc2VlaygwLCB1bnVzZWQpOwogICAgIH0KLSAgICAKKwor
ICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgbV9tZWRpYUNvbnRyb2xsZXItPmJy
aW5nRWxlbWVudFVwVG9TcGVlZCh0aGlzKTsKKwogICAgIGlmIChtX3BhdXNlZCkgewogICAgICAg
ICBtX3BhdXNlZCA9IGZhbHNlOwogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVkVGltZSgpOwpAQCAt
MTY5MCw2ICsxNzM2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwoKQog
ICAgIG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKIAogICAgIHVwZGF0ZVBsYXlTdGF0ZSgpOworICAg
IHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBh
dXNlKCkKQEAgLTE4ODEsNyArMTkyOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dG9nZ2xl
UGxheVN0YXRlKCkKICAgICAvLyBXZSBjYW4gc2FmZWx5IGNhbGwgdGhlIGludGVybmFsIHBsYXkv
cGF1c2UgbWV0aG9kcywgd2hpY2ggZG9uJ3QgY2hlY2sgcmVzdHJpY3Rpb25zLCBiZWNhdXNlCiAg
ICAgLy8gdGhpcyBtZXRob2QgaXMgb25seSBjYWxsZWQgZnJvbSB0aGUgYnVpbHQtaW4gbWVkaWEg
Y29udHJvbGxlcgogICAgIGlmIChjYW5QbGF5KCkpIHsKLSAgICAgICAgc2V0UGxheWJhY2tSYXRl
KGRlZmF1bHRQbGF5YmFja1JhdGUoKSk7CisgICAgICAgIHNldFBsYXliYWNrUmF0ZShtX21lZGlh
Q29udHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5kZWZhdWx0UGxheWJhY2tSYXRlKCkgOiBk
ZWZhdWx0UGxheWJhY2tSYXRlKCkpOwogICAgICAgICBwbGF5SW50ZXJuYWwoKTsKICAgICB9IGVs
c2UgCiAgICAgICAgIHBhdXNlSW50ZXJuYWwoKTsKQEAgLTIyMjksMjAgKzIyNzYsMzMgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikK
IAogICAgIGZsb2F0IG5vdyA9IGN1cnJlbnRUaW1lKCk7CiAgICAgZmxvYXQgZHVyID0gZHVyYXRp
b24oKTsKLSAgICBpZiAoIWlzbmFuKGR1cikgJiYgZHVyICYmIG5vdyA+PSBkdXIpIHsKLSAgICAg
ICAgaWYgKGxvb3AoKSkgeworICAgIAorICAgIC8vIFdoZW4gdGhlIGN1cnJlbnQgcGxheWJhY2sg
cG9zaXRpb24gcmVhY2hlcyB0aGUgZW5kIG9mIHRoZSBtZWRpYSByZXNvdXJjZSB3aGVuIHRoZSBk
aXJlY3Rpb24gb2YKKyAgICAvLyBwbGF5YmFjayBpcyBmb3J3YXJkcywgdGhlbiB0aGUgdXNlciBh
Z2VudCBtdXN0IGZvbGxvdyB0aGVzZSBzdGVwczoKKyAgICBpZiAoIWlzbmFuKGR1cikgJiYgZHVy
ICYmIG5vdyA+PSBkdXIgJiYgbV9wbGF5YmFja1JhdGUgPiAwKSB7CisgICAgICAgIC8vIElmIHRo
ZSBtZWRpYSBlbGVtZW50IGhhcyBhIGxvb3AgYXR0cmlidXRlIHNwZWNpZmllZCBhbmQgZG9lcyBu
b3QgaGF2ZSBhIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlciwKKyAgICAgICAgaWYgKGxvb3AoKSAm
JiAhbV9tZWRpYUNvbnRyb2xsZXIpIHsKICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3Jl
ZEV4Y2VwdGlvbjsKICAgICAgICAgICAgIG1fc2VudEVuZEV2ZW50ID0gZmFsc2U7CisgICAgICAg
ICAgICAvLyAgdGhlbiBzZWVrIHRvIHRoZSBlYXJsaWVzdCBwb3NzaWJsZSBwb3NpdGlvbiBvZiB0
aGUgbWVkaWEgcmVzb3VyY2UgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICAgICAgc2Vl
aygwLCBpZ25vcmVkRXhjZXB0aW9uKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlm
ICghbV9wYXVzZWQpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBtZWRpYSBlbGVtZW50IGRvZXMg
bm90IGhhdmUgYSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIsIGFuZCB0aGUgbWVkaWEgZWxlbWVu
dAorICAgICAgICAgICAgLy8gaGFzIHN0aWxsIGVuZGVkIHBsYXliYWNrLCBhbmQgdGhlIGRpcmVj
dGlvbiBvZiBwbGF5YmFjayBpcyBzdGlsbCBmb3J3YXJkcywgYW5kIHBhdXNlZAorICAgICAgICAg
ICAgLy8gaXMgZmFsc2UsCisgICAgICAgICAgICBpZiAoIW1fbWVkaWFDb250cm9sbGVyICYmICFt
X3BhdXNlZCkgeworICAgICAgICAgICAgICAgIC8vIGNoYW5nZXMgcGF1c2VkIHRvIHRydWUgYW5k
IGZpcmVzIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHBhdXNlIGF0IHRoZSBtZWRpYSBlbGVtZW50Lgog
ICAgICAgICAgICAgICAgIG1fcGF1c2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBzY2hlZHVs
ZUV2ZW50KGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsKICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC8vIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGVuZGVkIGF0
IHRoZSBtZWRpYSBlbGVtZW50LgogICAgICAgICAgICAgaWYgKCFtX3NlbnRFbmRFdmVudCkgewog
ICAgICAgICAgICAgICAgIG1fc2VudEVuZEV2ZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBz
Y2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KTsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC8vIElmIHRoZSBtZWRpYSBlbGVtZW50IGhhcyBhIGN1cnJlbnQgbWVkaWEgY29u
dHJvbGxlciwgdGhlbiByZXBvcnQgdGhlIGNvbnRyb2xsZXIgc3RhdGUKKyAgICAgICAgICAgIC8v
IGZvciB0aGUgbWVkaWEgZWxlbWVudCdzIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlci4KKyAgICAg
ICAgICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOwogICAgICAgICB9CiAgICAgfQogICAgIGVs
c2UKQEAgLTI0MjYsMTAgKzI0ODYsNyBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IEhUTUxNZWRp
YUVsZW1lbnQ6OnBsYXllZCgpCiAKIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gSFRNTE1lZGlhRWxl
bWVudDo6c2Vla2FibGUoKSBjb25zdAogewotICAgIC8vIEZJWE1FIHJlYWwgcmFuZ2VzIHN1cHBv
cnQKLSAgICBpZiAoIW1heFRpbWVTZWVrYWJsZSgpKQotICAgICAgICByZXR1cm4gVGltZVJhbmdl
czo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZShtaW5UaW1lU2Vla2Fi
bGUoKSwgbWF4VGltZVNlZWthYmxlKCkpOworICAgIHJldHVybiBtX3BsYXllciA/IG1fcGxheWVy
LT5zZWVrYWJsZSgpIDogVGltZVJhbmdlczo6Y3JlYXRlKCk7CiB9CiAKIGJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6cG90ZW50aWFsbHlQbGF5aW5nKCkgY29uc3QKQEAgLTI0MzgsNyArMjQ5NSw3IEBA
IGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cG90ZW50aWFsbHlQbGF5aW5nKCkgY29uc3QKICAgICAv
LyB3aGVuIGl0IHJhbiBvdXQgb2YgYnVmZmVyZWQgZGF0YS4gQSBtb3ZpZSBpcyB0aGlzIHN0YXRl
IGlzICJwb3RlbnRpYWxseSBwbGF5aW5nIiwgbW9kdWxvIHRoZQogICAgIC8vIGNoZWNrcyBpbiBj
b3VsZFBsYXlJZkVub3VnaERhdGEoKS4KICAgICBib29sIHBhdXNlZFRvQnVmZmVyID0gbV9yZWFk
eVN0YXRlTWF4aW11bSA+PSBIQVZFX0ZVVFVSRV9EQVRBICYmIG1fcmVhZHlTdGF0ZSA8IEhBVkVf
RlVUVVJFX0RBVEE7Ci0gICAgcmV0dXJuIChwYXVzZWRUb0J1ZmZlciB8fCBtX3JlYWR5U3RhdGUg
Pj0gSEFWRV9GVVRVUkVfREFUQSkgJiYgY291bGRQbGF5SWZFbm91Z2hEYXRhKCk7CisgICAgcmV0
dXJuIChwYXVzZWRUb0J1ZmZlciB8fCBtX3JlYWR5U3RhdGUgPj0gSEFWRV9GVVRVUkVfREFUQSkg
JiYgY291bGRQbGF5SWZFbm91Z2hEYXRhKCkgJiYgIWlzQmxvY2tlZE9uTWVkaWFDb250cm9sbGVy
KCk7CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y291bGRQbGF5SWZFbm91Z2hEYXRhKCkg
Y29uc3QKQEAgLTI0NjAsMTAgKzI1MTcsMTEgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplbmRl
ZFBsYXliYWNrKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gYW5kIHRo
ZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIGlzIHRoZSBlbmQgb2YgdGhlIG1lZGlhIHJlc291
cmNlIGFuZCB0aGUgZGlyZWN0aW9uCi0gICAgLy8gb2YgcGxheWJhY2sgaXMgZm9yd2FyZHMgYW5k
IHRoZSBtZWRpYSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBsb29wIGF0dHJpYnV0ZSBzcGVjaWZp
ZWQsCisgICAgLy8gb2YgcGxheWJhY2sgaXMgZm9yd2FyZHMsIEVpdGhlciB0aGUgbWVkaWEgZWxl
bWVudCBkb2VzIG5vdCBoYXZlIGEgbG9vcCBhdHRyaWJ1dGUgc3BlY2lmaWVkLAorICAgIC8vIG9y
IHRoZSBtZWRpYSBlbGVtZW50IGhhcyBhIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlci4KICAgICBm
bG9hdCBub3cgPSBjdXJyZW50VGltZSgpOwogICAgIGlmIChtX3BsYXliYWNrUmF0ZSA+IDApCi0g
ICAgICAgIHJldHVybiBkdXIgPiAwICYmIG5vdyA+PSBkdXIgJiYgIWxvb3AoKTsKKyAgICAgICAg
cmV0dXJuIGR1ciA+IDAgJiYgbm93ID49IGR1ciAmJiAoIWxvb3AoKSB8fCBtX21lZGlhQ29udHJv
bGxlcik7CiAKICAgICAvLyBvciB0aGUgY3VycmVudCBwbGF5YmFjayBwb3NpdGlvbiBpcyB0aGUg
ZWFybGllc3QgcG9zc2libGUgcG9zaXRpb24gYW5kIHRoZSBkaXJlY3Rpb24gCiAgICAgLy8gb2Yg
cGxheWJhY2sgaXMgYmFja3dhcmRzCkBAIC0yNTA5LDggKzI1NjcsMTQgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojp1cGRhdGVWb2x1bWUoKQogICAgIGlmICghcHJvY2Vzc2luZ01lZGlhUGxheWVy
Q2FsbGJhY2soKSkgewogICAgICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOwog
ICAgICAgICBmbG9hdCB2b2x1bWVNdWx0aXBsaWVyID0gcGFnZSA/IHBhZ2UtPm1lZGlhVm9sdW1l
KCkgOiAxOwotICAgIAotICAgICAgICBtX3BsYXllci0+c2V0TXV0ZWQobV9tdXRlZCk7CisgICAg
ICAgIGJvb2wgc2hvdWxkTXV0ZSA9IG1fbXV0ZWQ7CisKKyAgICAgICAgaWYgKG1fbWVkaWFDb250
cm9sbGVyKSB7CisgICAgICAgICAgICB2b2x1bWVNdWx0aXBsaWVyICo9IG1fbWVkaWFDb250cm9s
bGVyLT52b2x1bWUoKTsKKyAgICAgICAgICAgIHNob3VsZE11dGUgPSBtX21lZGlhQ29udHJvbGxl
ci0+bXV0ZWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1fcGxheWVyLT5zZXRNdXRlZChzaG91
bGRNdXRlKTsKICAgICAgICAgbV9wbGF5ZXItPnNldFZvbHVtZShtX3ZvbHVtZSAqIHZvbHVtZU11
bHRpcGxpZXIpOwogICAgIH0KIApAQCAtMjU3NywxMSArMjY0MSwxMyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSgpCiAgICAgICAgIGlmIChoYXNNZWRpYUNvbnRyb2xz
KCkpCiAgICAgICAgICAgICBtZWRpYUNvbnRyb2xzKCktPnBsYXliYWNrU3RvcHBlZCgpOwogICAg
IH0KLSAgICAKKworICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOworCiAgICAgaWYgKHJlbmRl
cmVyKCkpCiAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9Ci0gICAg
CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGF1c2VkSW50ZXJuYWwoYm9vbCBiKQogewog
ICAgIG1fcGF1c2VkSW50ZXJuYWwgPSBiOwpAQCAtMjY0MSw2ICsyNzA3LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9hZCgpCiAKICAgICAvLyBSZXNldCBtX3JlYWR5
U3RhdGUgc2luY2UgbV9wbGF5ZXIgaXMgZ29uZS4KICAgICBtX3JlYWR5U3RhdGUgPSBIQVZFX05P
VEhJTkc7CisgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiB9CiAKIGJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6Y2FuU3VzcGVuZCgpIGNvbnN0CkBAIC0zMTMzLDYgKzMyMDAsOTggQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzZXRJdGVtVmFsdWVUZXh0KGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogfQogI2VuZGlmCiAKK2NvbnN0IFN0cmluZyYgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFHcm91cCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFHcm91cDsKK30K
Kwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYgZ3Jv
dXApCit7CisgICAgaWYgKG1fbWVkaWFHcm91cCA9PSBncm91cCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fbWVkaWFHcm91cCA9IGdyb3VwOworCisgICAgLy8gV2hlbiBhIG1lZGlhIGVsZW1lbnQg
aXMgY3JlYXRlZCB3aXRoIGEgbWVkaWFncm91cCBhdHRyaWJ1dGUsIGFuZCB3aGVuIGEgbWVkaWEg
ZWxlbWVudCdzIG1lZGlhZ3JvdXAgCisgICAgLy8gYXR0cmlidXRlIGlzIHNldCwgY2hhbmdlZCwg
b3IgcmVtb3ZlZCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoK
KyAgICAvLyAxLiBMZXQgbSBbdGhpc10gYmUgdGhlIG1lZGlhIGVsZW1lbnQgaW4gcXVlc3Rpb24u
CisgICAgLy8gMi4gTGV0IG0gaGF2ZSBubyBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIsIGlmIGl0
IGN1cnJlbnRseSBoYXMgb25lLgorICAgIHNldENvbnRyb2xsZXIoMCk7CisgICAgLy8gMy4gSWYg
bSdzIG1lZGlhZ3JvdXAgYXR0cmlidXRlIGlzIGJlaW5nIHJlbW92ZWQsIHRoZW4gYWJvcnQgdGhl
c2Ugc3RlcHMuCisgICAgaWYgKGdyb3VwLmlzTnVsbCgpIHx8IGdyb3VwLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIC8vIDQuIElmIHRoZXJlIGlzIGFub3RoZXIgbWVkaWEgZWxlbWVu
dCB3aG9zZSBEb2N1bWVudCBpcyB0aGUgc2FtZSBhcyBtJ3MgRG9jdW1lbnQgKGV2ZW4gaWYgb25l
IG9yIGJvdGgKKyAgICAvLyBvZiB0aGVzZSBlbGVtZW50cyBhcmUgbm90IGFjdHVhbGx5IGluIHRo
ZSBEb2N1bWVudCksIAorICAgIEhhc2hTZXQ8SFRNTE1lZGlhRWxlbWVudCo+IGVsZW1lbnRzID0g
ZG9jdW1lbnRUb0VsZW1lbnRTZXRNYXAoKS5nZXQoZG9jdW1lbnQoKSk7CisgICAgZm9yIChIYXNo
U2V0PEhUTUxNZWRpYUVsZW1lbnQqPjo6aXRlcmF0b3IgaSA9IGVsZW1lbnRzLmJlZ2luKCk7IGkg
IT0gZWxlbWVudHMuZW5kKCk7ICsraSkgeworICAgICAgICBpZiAoKmkgPT0gdGhpcykKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIGFuZCB3aGljaCBhbHNvIGhhcyBhIG1lZGlh
Z3JvdXAgYXR0cmlidXRlLCBhbmQgd2hvc2UgbWVkaWFncm91cCBhdHRyaWJ1dGUgaGFzIHRoZSBz
YW1lIHZhbHVlIGFzCisgICAgICAgIC8vIHRoZSBuZXcgdmFsdWUgb2YgbSdzIG1lZGlhZ3JvdXAg
YXR0cmlidXRlLCAgICAgICAgCisgICAgICAgIGlmICgoKmkpLT5tZWRpYUdyb3VwKCkgPT0gZ3Jv
dXApIHsKKyAgICAgICAgICAgIC8vICB0aGVuIGxldCBjb250cm9sbGVyIGJlIHRoYXQgbWVkaWEg
ZWxlbWVudCdzIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlci4KKyAgICAgICAgICAgIHNldENvbnRy
b2xsZXIoKCppKS0+Y29udHJvbGxlcigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIE90aGVyd2lzZSwgbGV0IGNvbnRyb2xsZXIgYmUgYSBuZXdseSBj
cmVhdGVkIE1lZGlhQ29udHJvbGxlci4KKyAgICBzZXRDb250cm9sbGVyKE1lZGlhQ29udHJvbGxl
cjo6Y3JlYXRlKCkpOworfQorCitNZWRpYUNvbnRyb2xsZXIqIEhUTUxNZWRpYUVsZW1lbnQ6OmNv
bnRyb2xsZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlhQ29udHJvbGxlci5nZXQoKTsK
K30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRDb250cm9sbGVyKFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sbGVyPiBjb250cm9sbGVyKQoreworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikK
KyAgICAgICAgbV9tZWRpYUNvbnRyb2xsZXItPnJlbW92ZU1lZGlhRWxlbWVudCh0aGlzKTsKKwor
ICAgIG1fbWVkaWFDb250cm9sbGVyID0gY29udHJvbGxlcjsKKworICAgIGlmIChtX21lZGlhQ29u
dHJvbGxlcikKKyAgICAgICAgbV9tZWRpYUNvbnRyb2xsZXItPmFkZE1lZGlhRWxlbWVudCh0aGlz
KTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKQor
eworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgbV9tZWRpYUNvbnRyb2xsZXIt
PnJlcG9ydENvbnRyb2xsZXJTdGF0ZSgpOworfQorCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6Omlz
QmxvY2tlZCgpIGNvbnN0Cit7CisgICAgLy8gQSBtZWRpYSBlbGVtZW50IGlzIGEgYmxvY2tlZCBt
ZWRpYSBlbGVtZW50IGlmIGl0cyByZWFkeVN0YXRlIGF0dHJpYnV0ZSBpcyBpbiB0aGUKKyAgICAv
LyBIQVZFX05PVEhJTkcgc3RhdGUsIHRoZSBIQVZFX01FVEFEQVRBIHN0YXRlLCBvciB0aGUgSEFW
RV9DVVJSRU5UX0RBVEEgc3RhdGUsCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA8PSBIQVZFX0NVUlJF
TlRfREFUQSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBvciBpZiB0aGUgZWxlbWVu
dCBoYXMgcGF1c2VkIGZvciB1c2VyIGludGVyYWN0aW9uLgorICAgIHJldHVybiBwYXVzZWRGb3JV
c2VySW50ZXJhY3Rpb24oKTsKK30KKworYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc0Jsb2NrZWRP
bk1lZGlhQ29udHJvbGxlcigpIGNvbnN0Cit7CisgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlcikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQSBtZWRpYSBlbGVtZW50IGlzIGJsb2Nr
ZWQgb24gaXRzIG1lZGlhIGNvbnRyb2xsZXIgaWYgdGhlIE1lZGlhQ29udHJvbGxlciBpcyBhIGJs
b2NrZWQgCisgICAgLy8gbWVkaWEgY29udHJvbGxlciwKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xs
ZXItPmlzQmxvY2tlZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIG9yIGlmIGl0
cyBtZWRpYSBjb250cm9sbGVyIHBvc2l0aW9uIGlzIGVpdGhlciBiZWZvcmUgdGhlIG1lZGlhIHJl
c291cmNlJ3MgZWFybGllc3QgcG9zc2libGUgCisgICAgLy8gcG9zaXRpb24gcmVsYXRpdmUgdG8g
dGhlIE1lZGlhQ29udHJvbGxlcidzIHRpbWVsaW5lIG9yIGFmdGVyIHRoZSBlbmQgb2YgdGhlIG1l
ZGlhIHJlc291cmNlIAorICAgIC8vIHJlbGF0aXZlIHRvIHRoZSBNZWRpYUNvbnRyb2xsZXIncyB0
aW1lbGluZS4KKyAgICBmbG9hdCBtZWRpYUNvbnRyb2xsZXJQb3NpdGlvbiA9IG1fbWVkaWFDb250
cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgIGlmIChtZWRpYUNvbnRyb2xsZXJQb3NpdGlvbiA8
IHN0YXJ0VGltZSgpIHx8IG1lZGlhQ29udHJvbGxlclBvc2l0aW9uID4gc3RhcnRUaW1lKCkgKyBk
dXJhdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30K
KwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXgg
MGQyZjlmYzQ5ZTEwMGNiNTE3YmVmMGQxNTBhYzRmNzdhNTc1ZTllYy4uMTQyMTA5ODQyYjBkYzhl
ODBiMjk1Y2UzNDZjNDNmMTVkYjMyMWY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ci5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIgogI2luY2x1ZGUgIk1l
ZGlhUGxheWVyLmgiCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKQEAgLTUw
LDYgKzUxLDcgQEAgY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOwogY2xhc3MgRXZl
bnQ7CiBjbGFzcyBIVE1MU291cmNlRWxlbWVudDsKIGNsYXNzIEhUTUxUcmFja0VsZW1lbnQ7Citj
bGFzcyBNZWRpYUNvbnRyb2xsZXI7CiBjbGFzcyBNZWRpYUNvbnRyb2xzOwogY2xhc3MgTWVkaWFF
cnJvcjsKIGNsYXNzIEtVUkw7CkBAIC02Myw3ICs2NSw3IEBAIGNsYXNzIFdpZGdldDsKIC8vIEJ1
dCBpdCBjYW4ndCBiZSB1bnRpbCB0aGUgQ2hyb21pdW0gV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
IGNsYXNzIGlzIGZpeGVkIHNvIGl0CiAvLyBubyBsb25nZXIgZGVwZW5kcyBvbiB0eXBlY2FzdGlu
ZyBhIE1lZGlhUGxheWVyQ2xpZW50IHRvIGFuIEhUTUxNZWRpYUVsZW1lbnQuCiAKLWNsYXNzIEhU
TUxNZWRpYUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBNZWRpYVBsYXllckNs
aWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVET01PYmpl
Y3QKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBN
ZWRpYVBsYXllckNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBB
Y3RpdmVET01PYmplY3QsIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCiAgICAgLCBwcml2YXRlIFRleHRUcmFja0NsaWVudAogI2VuZGlmCkBA
IC0xMDUsNyArMTA3LDcgQEAgcHVibGljOgogCiAgICAgZW51bSBOZXR3b3JrU3RhdGUgeyBORVRX
T1JLX0VNUFRZLCBORVRXT1JLX0lETEUsIE5FVFdPUktfTE9BRElORywgTkVUV09SS19OT19TT1VS
Q0UgfTsKICAgICBOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3Q7Ci0gICAgCisKICAg
ICBTdHJpbmcgcHJlbG9hZCgpIGNvbnN0OyAgICAKICAgICB2b2lkIHNldFByZWxvYWQoY29uc3Qg
U3RyaW5nJik7CiAKQEAgLTExNCw3ICsxMTYsNiBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGNhblBs
YXlUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0OwogCiAvLyByZWFkeSBzdGF0ZQot
ICAgIGVudW0gUmVhZHlTdGF0ZSB7IEhBVkVfTk9USElORywgSEFWRV9NRVRBREFUQSwgSEFWRV9D
VVJSRU5UX0RBVEEsIEhBVkVfRlVUVVJFX0RBVEEsIEhBVkVfRU5PVUdIX0RBVEEgfTsKICAgICBS
ZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKICAgICBib29sIHNlZWtpbmcoKSBjb25zdDsK
IApAQCAtMjMwLDYgKzIzMSwxMiBAQCBwdWJsaWM6CiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciog
YXVkaW9Tb3VyY2VQcm92aWRlcigpOwogI2VuZGlmCiAKKyAgICBjb25zdCBTdHJpbmcmIG1lZGlh
R3JvdXAoKSBjb25zdDsKKyAgICB2b2lkIHNldE1lZGlhR3JvdXAoY29uc3QgU3RyaW5nJik7CisK
KyAgICBNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldENv
bnRyb2xsZXIoUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+KTsKKwogcHJvdGVjdGVkOgogICAg
IEhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAg
dmlydHVhbCB+SFRNTE1lZGlhRWxlbWVudCgpOwpAQCAtMzk0LDYgKzQwMSw4IEBAIHByaXZhdGU6
CiAgICAgLy8gUGF1c2VzIHBsYXliYWNrIHdpdGhvdXQgY2hhbmdpbmcgYW55IHN0YXRlcyBvciBn
ZW5lcmF0aW5nIGV2ZW50cwogICAgIHZvaWQgc2V0UGF1c2VkSW50ZXJuYWwoYm9vbCk7CiAKKyAg
ICB2b2lkIHNldFBsYXliYWNrUmF0ZUludGVybmFsKGZsb2F0KTsKKwogICAgIHZpcnR1YWwgdm9p
ZCBtZWRpYUNhblN0YXJ0KCk7CiAKICAgICB2b2lkIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KGJv
b2wpOwpAQCAtNDEyLDYgKzQyMSwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRJ
dGVtVmFsdWVUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgogCisg
ICAgdm9pZCB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKKyAgICBib29sIGlzQmxvY2tlZCgpIGNv
bnN0OworICAgIGJvb2wgaXNCbG9ja2VkT25NZWRpYUNvbnRyb2xsZXIoKSBjb25zdDsKKyAgICBi
b29sIGhhc1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya1N0YXRlICE9IE5FVFdPUktf
RU1QVFkgfHwgbV9uZXR3b3JrU3RhdGUgIT0gTkVUV09SS19OT19TT1VSQ0U7IH0KKyAgICBib29s
IGlzTGl2ZVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1vdmllTG9hZFR5cGUoKSA9PSBNZWRpYVBs
YXllcjo6TGl2ZVN0cmVhbTsgfQorCiAgICAgVGltZXI8SFRNTE1lZGlhRWxlbWVudD4gbV9sb2Fk
VGltZXI7CiAgICAgVGltZXI8SFRNTE1lZGlhRWxlbWVudD4gbV9hc3luY0V2ZW50VGltZXI7CiAg
ICAgVGltZXI8SFRNTE1lZGlhRWxlbWVudD4gbV9wcm9ncmVzc0V2ZW50VGltZXI7CkBAIC01MTYs
NiArNTMxLDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIFZlY3Rv
cjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1fdGV4dFRyYWNrczsKICNlbmRpZgorCisgICAgU3RyaW5n
IG1fbWVkaWFHcm91cDsKKyAgICBmcmllbmQgY2xhc3MgTWVkaWFDb250cm9sbGVyOworICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xsZXI+IG1fbWVkaWFDb250cm9sbGVyOwogfTsKIAogfSAvL25hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKaW5kZXggMzMwYWRi
YWFkZTcxMDI2OWMyZjJkZTVlZWM1Y2MxZTE2MmIwYzliNS4uNTIxYTUyNzIxNmYzZTgxOGQ2ZDdh
ZGJhOTU5NmU4OTljN2U4ZWVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaWRsCkBAIC0xMTQsNSArMTE0LDggQEAgbW9kdWxlIGh0bWwgewogI2lmIGRlZmluZWQoRU5B
QkxFX1ZJREVPX1RSQUNLKSAmJiBFTkFCTEVfVklERU9fVFJBQ0sKICAgICBbRW5hYmxlZEF0UnVu
dGltZT13ZWJraXRWaWRlb1RyYWNrXSBUZXh0VHJhY2sgYWRkVHJhY2soaW4gRE9NU3RyaW5nIGtp
bmQsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIGxhYmVsLCBpbiBbT3B0aW9uYWxdIERPTVN0cmlu
ZyBsYW5ndWFnZSk7CiAjZW5kaWYKKworICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCwgQ29udmVydE51
bGxUb051bGxTdHJpbmcsIENvbnZlcnROdWxsU3RyaW5nVG9OdWxsXSBET01TdHJpbmcgbWVkaWFH
cm91cDsKKyAgICBhdHRyaWJ1dGUgW0N1c3RvbVNldHRlcl0gTWVkaWFDb250cm9sbGVyIGNvbnRy
b2xsZXI7CiB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU3NjY0ZmZiNjA0MTA4YWFiNzU5NTRjYmQ2NWRmNTAyNmY5ZWQ4MGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAKQEAgLTAs
MCArMSw1ODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
VklERU8pCisjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJDbG9jay5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50
LmgiCisjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOworCitQYXNzUmVmUHRyPE1lZGlhQ29udHJv
bGxlcj4gTWVkaWFDb250cm9sbGVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgTWVkaWFDb250cm9sbGVyKCkpOworfQorCitNZWRpYUNvbnRyb2xsZXI6Ok1lZGlhQ29udHJv
bGxlcigpCisgICAgOiBtX3BhdXNlZChmYWxzZSkKKyAgICAsIG1fZGVmYXVsdFBsYXliYWNrUmF0
ZSgxKQorICAgICwgbV92b2x1bWUoMSkKKyAgICAsIG1fbXV0ZWQoZmFsc2UpCisgICAgLCBtX3Jl
YWR5U3RhdGUoSEFWRV9OT1RISU5HKQorICAgICwgbV9wbGF5YmFja1N0YXRlKFdBSVRJTkcpCisg
ICAgLCBtX2FzeW5jRXZlbnRUaW1lcih0aGlzLCAmTWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50
VGltZXJGaXJlZCkKKyAgICAsIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGZhbHNlKQorICAgICwg
bV9jbG9jayhDbG9jazo6Y3JlYXRlKCkpCit7Cit9CisKK01lZGlhQ29udHJvbGxlcjo6fk1lZGlh
Q29udHJvbGxlcigpCit7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjphZGRNZWRpYUVsZW1l
bnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudCk7Cisg
ICAgQVNTRVJUKCFtX21lZGlhRWxlbWVudHMuY29udGFpbnMoZWxlbWVudCkpOworCisgICAgbV9t
ZWRpYUVsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKKyAgICBicmluZ0VsZW1lbnRVcFRvU3BlZWQo
ZWxlbWVudCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpyZW1vdmVNZWRpYUVsZW1lbnQo
SFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudCk7CisgICAg
QVNTRVJUKG1fbWVkaWFFbGVtZW50cy5jb250YWlucyhlbGVtZW50KSk7CisgICAgbV9tZWRpYUVs
ZW1lbnRzLnJlbW92ZShtX21lZGlhRWxlbWVudHMuZmluZChlbGVtZW50KSk7Cit9CisKK2Jvb2wg
TWVkaWFDb250cm9sbGVyOjpjb250YWluc01lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBl
bGVtZW50KSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlhRWxlbWVudHMuY29udGFpbnMoZWxl
bWVudCk7Cit9CisKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFDb250cm9sbGVyOjpidWZm
ZXJlZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKworICAgIC8vIFRoZSBidWZmZXJlZCBh
dHRyaWJ1dGUgbXVzdCByZXR1cm4gYSBuZXcgc3RhdGljIG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBv
YmplY3QgdGhhdCByZXByZXNlbnRzIAorICAgIC8vIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIHJh
bmdlcyBvZiB0aGUgbWVkaWEgcmVzb3VyY2VzIG9mIHRoZSBzbGF2ZWQgbWVkaWEgZWxlbWVudHMg
dGhhdCB0aGUgCisgICAgLy8gdXNlciBhZ2VudCBoYXMgYnVmZmVyZWQsIGF0IHRoZSB0aW1lIHRo
ZSBhdHRyaWJ1dGUgaXMgZXZhbHVhdGVkLgorICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJl
ZFJhbmdlcyA9IG1fbWVkaWFFbGVtZW50cy5maXJzdCgpLT5idWZmZXJlZCgpOworICAgIGZvciAo
c2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4
KQorICAgICAgICBidWZmZXJlZFJhbmdlcy0+aW50ZXJzZWN0V2l0aChtX21lZGlhRWxlbWVudHNb
aW5kZXhdLT5idWZmZXJlZCgpLmdldCgpKTsKKyAgICByZXR1cm4gYnVmZmVyZWRSYW5nZXM7Cit9
CisKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFDb250cm9sbGVyOjpzZWVrYWJsZSgpIGNv
bnN0Cit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKworICAgIC8vIFRoZSBzZWVrYWJsZSBhdHRyaWJ1dGUg
bXVzdCByZXR1cm4gYSBuZXcgc3RhdGljIG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgdGhh
dCByZXByZXNlbnRzCisgICAgLy8gdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgcmFuZ2VzIG9mIHRo
ZSBtZWRpYSByZXNvdXJjZXMgb2YgdGhlIHNsYXZlZCBtZWRpYSBlbGVtZW50cyB0aGF0IHRoZQor
ICAgIC8vIHVzZXIgYWdlbnQgaXMgYWJsZSB0byBzZWVrIHRvLCBhdCB0aGUgdGltZSB0aGUgYXR0
cmlidXRlIGlzIGV2YWx1YXRlZC4KKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gc2Vla2FibGVSYW5n
ZXMgPSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+c2Vla2FibGUoKTsKKyAgICBmb3IgKHNpemVf
dCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAg
ICAgICAgc2Vla2FibGVSYW5nZXMtPmludGVyc2VjdFdpdGgobV9tZWRpYUVsZW1lbnRzW2luZGV4
XS0+c2Vla2FibGUoKS5nZXQoKSk7CisgICAgcmV0dXJuIHNlZWthYmxlUmFuZ2VzOworfQorCitQ
YXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhQ29udHJvbGxlcjo6cGxheWVkKCkKK3sKKyAgICBp
ZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFRpbWVSYW5nZXM6
OmNyZWF0ZSgpOworCisgICAgLy8gVGhlIHBsYXllZCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gYSBu
ZXcgc3RhdGljIG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgdGhhdCByZXByZXNlbnRzIAor
ICAgIC8vIHRoZSB1bmlvbiBvZiB0aGUgcmFuZ2VzIG9mIHRoZSBtZWRpYSByZXNvdXJjZXMgb2Yg
dGhlIHNsYXZlZCBtZWRpYSBlbGVtZW50cyB0aGF0IHRoZSAKKyAgICAvLyB1c2VyIGFnZW50IGhh
cyBzbyBmYXIgcmVuZGVyZWQsIGF0IHRoZSB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgZXZhbHVhdGVk
LgorICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBwbGF5ZWRSYW5nZXMgPSBtX21lZGlhRWxlbWVudHMu
Zmlyc3QoKS0+cGxheWVkKCk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAxOyBpbmRleCA8IG1f
bWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIHBsYXllZFJhbmdlcy0+dW5p
b25XaXRoKG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnBsYXllZCgpLmdldCgpKTsKKyAgICByZXR1
cm4gcGxheWVkUmFuZ2VzOworfQorCitmbG9hdCBNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKCkg
Y29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgY2FjaGluZyB0aGUgbWF4aW11bSBk
dXJhdGlvbiBhbmQgb25seSB1cGRhdGluZyB0aGUgY2FjaGVkIHZhbHVlCisgICAgLy8gd2hlbiB0
aGUgc2xhdmVkIG1lZGlhIGVsZW1lbnRzJyBkdXJhdGlvbnMgY2hhbmdlLgorICAgIGZsb2F0IG1h
eER1cmF0aW9uID0gMDsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRp
YUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBmbG9hdCBkdXJhdGlvbiA9IG1f
bWVkaWFFbGVtZW50c1tpbmRleF0tPmR1cmF0aW9uKCk7CisgICAgICAgIGlmIChpc25hbihkdXJh
dGlvbikpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbWF4RHVyYXRpb24gPSBtYXgo
bWF4RHVyYXRpb24sIGR1cmF0aW9uKTsKKyAgICB9CisgICAgcmV0dXJuIG1heER1cmF0aW9uOwor
fQorCitmbG9hdCBNZWRpYUNvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKCkgY29uc3QKK3sKKyAgICBp
ZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisg
ICAgcmV0dXJuIG1fY2xvY2stPmN1cnJlbnRUaW1lKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9s
bGVyOjpzZXRDdXJyZW50VGltZShmbG9hdCB0aW1lLCBFeGNlcHRpb25Db2RlJiBjb2RlKQorewor
ICAgIC8vIFdoZW4gdGhlIHVzZXIgYWdlbnQgaXMgdG8gc2VlayB0aGUgbWVkaWEgY29udHJvbGxl
ciB0byBhIHBhcnRpY3VsYXIgbmV3IHBsYXliYWNrIHBvc2l0aW9uLCAKKyAgICAvLyBpdCBtdXN0
IGZvbGxvdyB0aGVzZSBzdGVwczoKKyAgICAvLyBJZiB0aGUgbmV3IHBsYXliYWNrIHBvc2l0aW9u
IGlzIGxlc3MgdGhhbiB6ZXJvLCB0aGVuIHNldCBpdCB0byB6ZXJvLgorICAgIHRpbWUgPSBtYXgo
MC4wZiwgdGltZSk7CisgICAgCisgICAgLy8gSWYgdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbiBp
cyBncmVhdGVyIHRoYW4gdGhlIG1lZGlhIGNvbnRyb2xsZXIgZHVyYXRpb24sIHRoZW4gc2V0IGl0
IAorICAgIC8vIHRvIHRoZSBtZWRpYSBjb250cm9sbGVyIGR1cmF0aW9uLgorICAgIHRpbWUgPSBt
aW4odGltZSwgZHVyYXRpb24oKSk7CisgICAgCisgICAgLy8gU2V0IHRoZSBtZWRpYSBjb250cm9s
bGVyIHBvc2l0aW9uIHRvIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24uCisgICAgbV9jbG9jay0+
c2V0Q3VycmVudFRpbWUodGltZSk7CisgICAgCisgICAgLy8gU2VlayBlYWNoIHNsYXZlZCBtZWRp
YSBlbGVtZW50IHRvIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIG1l
ZGlhIGVsZW1lbnQgdGltZWxpbmUuCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8
IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50
c1tpbmRleF0tPnNlZWsodGltZSwgY29kZSk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpw
bGF5KCkKK3sKKyAgICAvLyBXaGVuIHRoZSBwbGF5KCkgbWV0aG9kIGlzIGludm9rZWQsIGlmIHRo
ZSBNZWRpYUNvbnRyb2xsZXIgaXMgYSBwYXVzZWQgbWVkaWEgY29udHJvbGxlciwKKyAgICBpZiAo
IW1fcGF1c2VkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyB0aGUgdXNlciBhZ2VudCBtdXN0
IGNoYW5nZSB0aGUgTWVkaWFDb250cm9sbGVyIGludG8gYSBwbGF5aW5nIG1lZGlhIGNvbnRyb2xs
ZXIsCisgICAgbV9wYXVzZWQgPSBmYWxzZTsKKyAgICAvLyBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBh
IHNpbXBsZSBldmVudCBuYW1lZCBwbGF5IGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIsCisgICAgc2No
ZWR1bGVFdmVudChldmVudE5hbWVzKCkucGxheUV2ZW50KTsKKyAgICAvLyBhbmQgdGhlbiByZXBv
cnQgdGhlIGNvbnRyb2xsZXIgc3RhdGUgb2YgdGhlIE1lZGlhQ29udHJvbGxlci4KKyAgICByZXBv
cnRDb250cm9sbGVyU3RhdGUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnBhdXNlKCkK
K3sKKyAgICAvLyBXaGVuIHRoZSBwYXVzZSgpIG1ldGhvZCBpcyBpbnZva2VkLCBpZiB0aGUgTWVk
aWFDb250cm9sbGVyIGlzIGEgcGxheWluZyBtZWRpYSBjb250cm9sbGVyLAorICAgIGlmIChtX3Bh
dXNlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0
IGNoYW5nZSB0aGUgTWVkaWFDb250cm9sbGVyIGludG8gYSBwYXVzZWQgbWVkaWEgY29udHJvbGxl
ciwKKyAgICBtX3BhdXNlZCA9IHRydWU7CisgICAgLy8gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBz
aW1wbGUgZXZlbnQgbmFtZWQgcGF1c2UgYXQgdGhlIE1lZGlhQ29udHJvbGxlciwKKyAgICBzY2hl
ZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsKKyAgICAvLyBhbmQgdGhlbiByZXBv
cnQgdGhlIGNvbnRyb2xsZXIgc3RhdGUgb2YgdGhlIE1lZGlhQ29udHJvbGxlci4KKyAgICByZXBv
cnRDb250cm9sbGVyU3RhdGUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldERlZmF1
bHRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKK3sKKyAgICBpZiAobV9kZWZhdWx0UGxheWJhY2tS
YXRlID09IHJhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBkZWZhdWx0UGxheWJh
Y2tSYXRlIGF0dHJpYnV0ZSwgb24gc2V0dGluZywgbXVzdCBzZXQgdGhlIE1lZGlhQ29udHJvbGxl
cidzIG1lZGlhIGNvbnRyb2xsZXIKKyAgICAvLyBkZWZhdWx0IHBsYXliYWNrIHJhdGUgdG8gdGhl
IG5ldyB2YWx1ZSwKKyAgICBtX2RlZmF1bHRQbGF5YmFja1JhdGUgPSByYXRlOworCisgICAgLy8g
dGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCByYXRlY2hhbmdl
IGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIuCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCku
cmF0ZWNoYW5nZUV2ZW50KTsKK30KKworZmxvYXQgTWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1Jh
dGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2Nsb2NrLT5wbGF5UmF0ZSgpOworfQorCit2b2lk
IE1lZGlhQ29udHJvbGxlcjo6c2V0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUpCit7CisgICAgaWYg
KG1fY2xvY2stPnBsYXlSYXRlKCkgPT0gcmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
VGhlIHBsYXliYWNrUmF0ZSBhdHRyaWJ1dGUsIG9uIHNldHRpbmcsIG11c3Qgc2V0IHRoZSBNZWRp
YUNvbnRyb2xsZXIncyBtZWRpYSBjb250cm9sbGVyIAorICAgIC8vIHBsYXliYWNrIHJhdGUgdG8g
dGhlIG5ldyB2YWx1ZSwKKyAgICBtX2Nsb2NrLT5zZXRQbGF5UmF0ZShyYXRlKTsKKworICAgIC8v
IHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcmF0ZWNoYW5n
ZSBhdCB0aGUgTWVkaWFDb250cm9sbGVyLgorICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygp
LnJhdGVjaGFuZ2VFdmVudCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUo
ZmxvYXQgbGV2ZWwsIEV4Y2VwdGlvbkNvZGUmIGNvZGUpCit7CisgICAgaWYgKG1fdm9sdW1lID09
IGxldmVsKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJZiB0aGUgbmV3IHZhbHVlIGlzIG91
dHNpZGUgdGhlIHJhbmdlIDAuMCB0byAxLjAgaW5jbHVzaXZlLCB0aGVuLCBvbiBzZXR0aW5nLCBh
biAKKyAgICAvLyBJbmRleFNpemVFcnJvciBleGNlcHRpb24gbXVzdCBiZSByYWlzZWQgaW5zdGVh
ZC4KKyAgICBpZiAobGV2ZWwgPCAwIHx8IGxldmVsID4gMSkgeworICAgICAgICBjb2RlID0gSU5E
RVhfU0laRV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIC8vIFRo
ZSB2b2x1bWUgYXR0cmlidXRlLCBvbiBzZXR0aW5nLCBpZiB0aGUgbmV3IHZhbHVlIGlzIGluIHRo
ZSByYW5nZSAwLjAgdG8gMS4wIGluY2x1c2l2ZSwKKyAgICAvLyBtdXN0IHNldCB0aGUgTWVkaWFD
b250cm9sbGVyJ3MgbWVkaWEgY29udHJvbGxlciB2b2x1bWUgbXVsdGlwbGllciB0byB0aGUgbmV3
IHZhbHVlCisgICAgbV92b2x1bWUgPSBsZXZlbDsKKworICAgIC8vIGFuZCBxdWV1ZSBhIHRhc2sg
dG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCB2b2x1bWVjaGFuZ2UgYXQgdGhlIE1lZGlhQ29u
dHJvbGxlci4KKyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS52b2x1bWVjaGFuZ2VFdmVu
dCk7CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRz
LnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+dXBkYXRl
Vm9sdW1lKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZChib29sIGZsYWcp
Cit7CisgICAgaWYgKG1fbXV0ZWQgPT0gZmxhZykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
VGhlIG11dGVkIGF0dHJpYnV0ZSwgb24gc2V0dGluZywgbXVzdCBzZXQgdGhlIE1lZGlhQ29udHJv
bGxlcidzIG1lZGlhIGNvbnRyb2xsZXIgbXV0ZSBvdmVycmlkZQorICAgIC8vIHRvIHRoZSBuZXcg
dmFsdWUKKyAgICBtX211dGVkID0gZmxhZzsKKworICAgIC8vIGFuZCBxdWV1ZSBhIHRhc2sgdG8g
ZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCB2b2x1bWVjaGFuZ2UgYXQgdGhlIE1lZGlhQ29udHJv
bGxlci4KKyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS52b2x1bWVjaGFuZ2VFdmVudCk7
CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNp
emUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+dXBkYXRlVm9s
dW1lKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpyZXBvcnRDb250cm9sbGVyU3RhdGUo
KQoreworICAgIHVwZGF0ZVJlYWR5U3RhdGUoKTsKKyAgICB1cGRhdGVQbGF5YmFja1N0YXRlKCk7
Cit9CisKK3N0YXRpYyBBdG9taWNTdHJpbmcgZXZlbnROYW1lRm9yUmVhZHlTdGF0ZShNZWRpYUNv
bnRyb2xsZXJJbnRlcmZhY2U6OlJlYWR5U3RhdGUgc3RhdGUpCit7CisgICAgc3dpdGNoIChzdGF0
ZSkgeworICAgIGNhc2UgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlOjpIQVZFX05PVEhJTkc6Cisg
ICAgICAgIHJldHVybiBldmVudE5hbWVzKCkuZW1wdGllZEV2ZW50OworICAgIGNhc2UgTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlOjpIQVZFX01FVEFEQVRBOgorICAgICAgICByZXR1cm4gZXZlbnRO
YW1lcygpLmxvYWRlZG1ldGFkYXRhRXZlbnQ7CisgICAgY2FzZSBNZWRpYUNvbnRyb2xsZXJJbnRl
cmZhY2U6OkhBVkVfQ1VSUkVOVF9EQVRBOgorICAgICAgICByZXR1cm4gZXZlbnROYW1lcygpLmxv
YWRlZGRhdGFFdmVudDsKKyAgICBjYXNlIE1lZGlhQ29udHJvbGxlckludGVyZmFjZTo6SEFWRV9G
VVRVUkVfREFUQToKKyAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5jYW5wbGF5RXZlbnQ7Cisg
ICAgY2FzZSBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U6OkhBVkVfRU5PVUdIX0RBVEE6CisgICAg
ICAgIHJldHVybiBldmVudE5hbWVzKCkuY2FucGxheXRocm91Z2hFdmVudDsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxBdG9t
OworICAgIH0KK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVwZGF0ZVJlYWR5U3RhdGUoKQor
eworICAgIFJlYWR5U3RhdGUgb2xkUmVhZHlTdGF0ZSA9IG1fcmVhZHlTdGF0ZTsKKyAgICBSZWFk
eVN0YXRlIG5ld1JlYWR5U3RhdGU7CisgICAgCisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIE1lZGlhQ29udHJvbGxlciBoYXMgbm8gc2xhdmVk
IG1lZGlhIGVsZW1lbnRzLCBsZXQgbmV3IHJlYWRpbmVzcyBzdGF0ZSBiZSAwLgorICAgICAgICBu
ZXdSZWFkeVN0YXRlID0gSEFWRV9OT1RISU5HOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE90
aGVyd2lzZSwgbGV0IGl0IGhhdmUgdGhlIGxvd2VzdCB2YWx1ZSBvZiB0aGUgcmVhZHlTdGF0ZSBJ
REwgYXR0cmlidXRlcyBvZiBhbGwgb2YgaXRzCisgICAgICAgIC8vIHNsYXZlZCBtZWRpYSBlbGVt
ZW50cy4KKyAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IG1fbWVkaWFFbGVtZW50cy5maXJzdCgpLT5y
ZWFkeVN0YXRlKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBtX21l
ZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgbmV3UmVhZHlTdGF0ZSA9
IG1pbihuZXdSZWFkeVN0YXRlLCBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5yZWFkeVN0YXRlKCkp
OworICAgIH0KKworICAgIGlmIChuZXdSZWFkeVN0YXRlID09IG9sZFJlYWR5U3RhdGUpIAorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBJZiB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbW9zdCByZWNl
bnRseSByZXBvcnRlZCByZWFkaW5lc3Mgc3RhdGUgaXMgZ3JlYXRlciB0aGFuIG5ldyByZWFkaW5l
c3MgCisgICAgLy8gc3RhdGUgdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVu
dCBhdCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCwgd2hvc2UgbmFtZSBpcyB0aGUKKyAgICAv
LyBldmVudCBuYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHZhbHVlIG9mIG5ldyByZWFkaW5lc3Mg
c3RhdGUgZ2l2ZW4gaW4gdGhlIHRhYmxlIGJlbG93LiBbb21pdHRlZF0KKyAgICBpZiAob2xkUmVh
ZHlTdGF0ZSA+IG5ld1JlYWR5U3RhdGUpIHsKKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5h
bWVGb3JSZWFkeVN0YXRlKG5ld1JlYWR5U3RhdGUpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtb3N0IHJlY2VudGx5IHJlcG9ydGVk
IHJlYWRpbmVzcyBzdGF0ZSBpcyBsZXNzIHRoYW4gdGhlIG5ldyByZWFkaW5lc3MKKyAgICAvLyBz
dGF0ZSwgdGhlbiBydW4gdGhlc2Ugc3Vic3RlcHM6CisgICAgLy8gMS4gTGV0IG5leHQgc3RhdGUg
YmUgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1vc3QgcmVjZW50bHkgcmVwb3J0ZWQgcmVhZGluZXNz
IHN0YXRlLgorICAgIFJlYWR5U3RhdGUgbmV4dFN0YXRlID0gb2xkUmVhZHlTdGF0ZTsKKyAgICBk
byB7CisgICAgICAgIC8vIDIuIExvb3A6IEluY3JlbWVudCBuZXh0IHN0YXRlIGJ5IG9uZS4KKyAg
ICAgICAgKytuZXh0U3RhdGU7CisgICAgICAgIC8vIDMuIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEg
c2ltcGxlIGV2ZW50IGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIgb2JqZWN0LCB3aG9zZSBuYW1lIGlz
IHRoZQorICAgICAgICAvLyBldmVudCBuYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHZhbHVlIG9m
IG5leHQgc3RhdGUgZ2l2ZW4gaW4gdGhlIHRhYmxlIGJlbG93LiBbb21pdHRlZF0KKyAgICAgICAg
c2NoZWR1bGVFdmVudChldmVudE5hbWVGb3JSZWFkeVN0YXRlKG5ld1JlYWR5U3RhdGUpKTsgICAg
ICAgIAorICAgICAgICAvLyBJZiBuZXh0IHN0YXRlIGlzIGxlc3MgdGhhbiBuZXcgcmVhZGluZXNz
IHN0YXRlLCB0aGVuIHJldHVybiB0byB0aGUgc3RlcCBsYWJlbGVkIGxvb3AKKyAgICB9IHdoaWxl
IChuZXh0U3RhdGUgPCBuZXdSZWFkeVN0YXRlKTsKKworICAgIC8vIExldCB0aGUgTWVkaWFDb250
cm9sbGVyJ3MgbW9zdCByZWNlbnRseSByZXBvcnRlZCByZWFkaW5lc3Mgc3RhdGUgYmUgbmV3IHJl
YWRpbmVzcyBzdGF0ZS4KKyAgICBtX3JlYWR5U3RhdGUgPSBuZXdSZWFkeVN0YXRlOworfQorCit2
b2lkIE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlUGxheWJhY2tTdGF0ZSgpCit7CisgICAgUGxheWJh
Y2tTdGF0ZSBvbGRQbGF5YmFja1N0YXRlID0gbV9wbGF5YmFja1N0YXRlOworICAgIFBsYXliYWNr
U3RhdGUgbmV3UGxheWJhY2tTdGF0ZTsKKworICAgIC8vIEluaXRpYWxpemUgbmV3IHBsYXliYWNr
IHN0YXRlIGJ5IHNldHRpbmcgaXQgdG8gdGhlIHN0YXRlIGdpdmVuIGZvciB0aGUgZmlyc3QgbWF0
Y2hpbmcgCisgICAgLy8gY29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgorICAgIGlm
IChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIElmIHRoZSBNZWRpYUNv
bnRyb2xsZXIgaGFzIG5vIHNsYXZlZCBtZWRpYSBlbGVtZW50cworICAgICAgICAvLyBMZXQgbmV3
IHBsYXliYWNrIHN0YXRlIGJlIHdhaXRpbmcuCisgICAgICAgIG5ld1BsYXliYWNrU3RhdGUgPSBX
QUlUSU5HOworICAgIH0gZWxzZSBpZiAoaGFzRW5kZWQoKSkgeworICAgICAgICAvLyBJZiBhbGwg
b2YgdGhlIE1lZGlhQ29udHJvbGxlcidzIHNsYXZlZCBtZWRpYSBlbGVtZW50cyBoYXZlIGVuZGVk
IHBsYXliYWNrIGFuZCB0aGUgbWVkaWEKKyAgICAgICAgLy8gY29udHJvbGxlciBwbGF5YmFjayBy
YXRlIGlzIHBvc2l0aXZlIG9yIHplcm8KKyAgICAgICAgLy8gTGV0IG5ldyBwbGF5YmFjayBzdGF0
ZSBiZSBlbmRlZC4KKyAgICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IEVOREVEOworICAgIH0gZWxz
ZSBpZiAoaXNCbG9ja2VkKCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIE1lZGlhQ29udHJvbGxlciBp
cyBhIGJsb2NrZWQgbWVkaWEgY29udHJvbGxlcgorICAgICAgICAvLyBMZXQgbmV3IHBsYXliYWNr
IHN0YXRlIGJlIHdhaXRpbmcuCisgICAgICAgIG5ld1BsYXliYWNrU3RhdGUgPSBXQUlUSU5HOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE90aGVyd2lzZQorICAgICAgICAvLyBMZXQgbmV3IHBs
YXliYWNrIHN0YXRlIGJlIHBsYXlpbmcuCisgICAgICAgIG5ld1BsYXliYWNrU3RhdGUgPSBQTEFZ
SU5HOworICAgIH0KKworICAgIC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtb3N0IHJlY2Vu
dGx5IHJlcG9ydGVkIHBsYXliYWNrIHN0YXRlIGlzIG5vdCBlcXVhbCB0byBuZXcgcGxheWJhY2sg
c3RhdGUKKyAgICBpZiAobmV3UGxheWJhY2tTdGF0ZSA9PSBvbGRQbGF5YmFja1N0YXRlKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBhbmQgdGhlIG5ldyBwbGF5YmFjayBzdGF0ZSBpcyBlbmRl
ZCwKKyAgICBpZiAobmV3UGxheWJhY2tTdGF0ZSA9PSBFTkRFRCkgeworICAgICAgICAvLyB0aGVu
IHF1ZXVlIGEgdGFzayB0aGF0LCBpZiB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCBpcyBhIHBs
YXlpbmcgbWVkaWEgY29udHJvbGxlciwgYW5kIAorICAgICAgICAvLyBhbGwgb2YgdGhlIE1lZGlh
Q29udHJvbGxlcidzIHNsYXZlZCBtZWRpYSBlbGVtZW50cyBoYXZlIHN0aWxsIGVuZGVkIHBsYXli
YWNrLCBhbmQgdGhlIAorICAgICAgICAvLyBtZWRpYSBjb250cm9sbGVyIHBsYXliYWNrIHJhdGUg
aXMgc3RpbGwgcG9zaXRpdmUgb3IgemVybywgCisgICAgICAgIGlmICghbV9wYXVzZWQgJiYgaGFz
RW5kZWQoKSkgeworICAgICAgICAgICAgLy8gY2hhbmdlcyB0aGUgTWVkaWFDb250cm9sbGVyIG9i
amVjdCB0byBhIHBhdXNlZCBtZWRpYSBjb250cm9sbGVyCisgICAgICAgICAgICBtX3BhdXNlZCA9
IHRydWU7CisgICAgICAgICAgICBtX2Nsb2NrLT5zdG9wKCk7CisKKyAgICAgICAgICAgIC8vIGFu
ZCB0aGVuIGZpcmVzIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHBhdXNlIGF0IHRoZSBNZWRpYUNvbnRy
b2xsZXIgb2JqZWN0LgorICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGF1
c2VFdmVudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBJZiB0aGUgTWVkaWFDb250cm9s
bGVyJ3MgbW9zdCByZWNlbnRseSByZXBvcnRlZCBwbGF5YmFjayBzdGF0ZSBpcyBub3QgZXF1YWwg
dG8gbmV3IHBsYXliYWNrIHN0YXRlCisgICAgLy8gdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBh
IHNpbXBsZSBldmVudCBhdCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCwgd2hvc2UgbmFtZSBp
cyBwbGF5aW5nIAorICAgIC8vIGlmIG5ldyBwbGF5YmFjayBzdGF0ZSBpcyBwbGF5aW5nLCBlbmRl
ZCBpZiBuZXcgcGxheWJhY2sgc3RhdGUgaXMgZW5kZWQsIGFuZCB3YWl0aW5nIG90aGVyd2lzZS4K
KyAgICBBdG9taWNTdHJpbmcgZXZlbnROYW1lOworICAgIHN3aXRjaCAobmV3UGxheWJhY2tTdGF0
ZSkgeworICAgIGNhc2UgV0FJVElORzoKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygp
LndhaXRpbmdFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFTkRFRDoKKyAgICAgICAg
ZXZlbnROYW1lID0gZXZlbnROYW1lcygpLmVuZGVkRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUExBWUlORzoKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLnBsYXlpbmdF
dmVudDsKKyAgICAgICAgbV9jbG9jay0+c3RhcnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHNjaGVkdWxl
RXZlbnQoZXZlbnROYW1lKTsKKworICAgIC8vIExldCB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbW9z
dCByZWNlbnRseSByZXBvcnRlZCBwbGF5YmFjayBzdGF0ZSBiZSBuZXcgcGxheWJhY2sgc3RhdGUu
CisgICAgbV9wbGF5YmFja1N0YXRlID0gbmV3UGxheWJhY2tTdGF0ZTsKKworICAgIHVwZGF0ZU1l
ZGlhRWxlbWVudHMoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVwZGF0ZU1lZGlhRWxl
bWVudHMoKQoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxl
bWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT51
cGRhdGVQbGF5U3RhdGUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmJyaW5nRWxlbWVu
dFVwVG9TcGVlZChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVt
ZW50KTsKKyAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKGVsZW1lbnQpKTsKKwor
ICAgIC8vIFdoZW4gdGhlIHVzZXIgYWdlbnQgaXMgdG8gYnJpbmcgYSBtZWRpYSBlbGVtZW50IHVw
IHRvIHNwZWVkIHdpdGggaXRzIG5ldyBtZWRpYSBjb250cm9sbGVyLAorICAgIC8vIGl0IG11c3Qg
c2VlayB0aGF0IG1lZGlhIGVsZW1lbnQgdG8gdGhlIE1lZGlhQ29udHJvbGxlcidzIG1lZGlhIGNv
bnRyb2xsZXIgcG9zaXRpb24gcmVsYXRpdmUKKyAgICAvLyB0byB0aGUgbWVkaWEgZWxlbWVudCdz
IHRpbWVsaW5lLgorICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZENvZGUgPSAwOworICAgIGVsZW1l
bnQtPnNlZWsoY3VycmVudFRpbWUoKSwgaWdub3JlZENvZGUpOworfQorCitib29sIE1lZGlhQ29u
dHJvbGxlcjo6aXNCbG9ja2VkKCkgY29uc3QKK3sKKyAgICAvLyBBIE1lZGlhQ29udHJvbGxlciBp
cyBhIGJsb2NrZWQgbWVkaWEgY29udHJvbGxlciBpZiB0aGUgTWVkaWFDb250cm9sbGVyIGlzIGEg
cGF1c2VkIG1lZGlhIAorICAgIC8vIGNvbnRyb2xsZXIsCisgICAgaWYgKG1fcGF1c2VkKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGJvb2wgYWxsUGF1c2VkID0gdHJ1
ZTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNp
emUoKTsgKytpbmRleCkgeworICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0gbV9t
ZWRpYUVsZW1lbnRzW2luZGV4XTsKKyAgICAgICAgLy8gIG9yIGlmIGFueSBvZiBpdHMgc2xhdmVk
IG1lZGlhIGVsZW1lbnRzIGFyZSBibG9ja2VkIG1lZGlhIGVsZW1lbnRzLAorICAgICAgICBpZiAo
ZWxlbWVudC0+aXNCbG9ja2VkKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
CisgICAgICAgIC8vIG9yIGlmIGFueSBvZiBpdHMgc2xhdmVkIG1lZGlhIGVsZW1lbnRzIHdob3Nl
IGF1dG9wbGF5aW5nIGZsYWcgaXMgdHJ1ZSBzdGlsbCBoYXZlIHRoZWlyIAorICAgICAgICAvLyBw
YXVzZWQgYXR0cmlidXRlIHNldCB0byB0cnVlLAorICAgICAgICBpZiAoZWxlbWVudC0+YXV0b3Bs
YXkoKSAmJiBlbGVtZW50LT5wYXVzZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAKKyAgICAgICAgaWYgKCFlbGVtZW50LT5wYXVzZWQoKSkKKyAgICAgICAgICAgIGFsbFBh
dXNlZCA9IGZhbHNlOworICAgIH0KKyAgICAKKyAgICAvLyBvciBpZiBhbGwgb2YgaXRzIHNsYXZl
ZCBtZWRpYSBlbGVtZW50cyBoYXZlIHRoZWlyIHBhdXNlZCBhdHRyaWJ1dGUgc2V0IHRvIHRydWUu
CisgICAgcmV0dXJuIGFsbFBhdXNlZDsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6Omhhc0Vu
ZGVkKCkgY29uc3QKK3sKKyAgICBpZiAobV9jbG9jay0+cGxheVJhdGUoKSA8PSAwKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBib29sIGFsbEhhdmVFbmRlZCA9IHRy
dWU7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5z
aXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5l
bmRlZCgpKQorICAgICAgICAgICAgYWxsSGF2ZUVuZGVkID0gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiBhbGxIYXZlRW5kZWQ7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzY2hlZHVsZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQoreworICAgIG1fcGVuZGluZ0V2ZW50
cy5hcHBlbmQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCB0cnVlKSk7CisgICAgaWYg
KCFtX2FzeW5jRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2FzeW5jRXZlbnRUaW1l
ci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50
VGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xsZXI+KikKK3sKKyAgICBWZWN0b3I8UmVmUHRy
PEV2ZW50PiA+IHBlbmRpbmdFdmVudHM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
CisgICAgbV9wZW5kaW5nRXZlbnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7CisgICAgc2l6ZV90IGNv
dW50ID0gcGVuZGluZ0V2ZW50cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBp
bmRleCA8IGNvdW50OyArK2luZGV4KQorICAgICAgICBkaXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVu
dHNbaW5kZXhdLnJlbGVhc2UoKSwgZWMpOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBN
ZWRpYUNvbnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIGlm
IChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPmRvY3VtZW50KCk7Cit9CisKK2Jvb2wgTWVkaWFD
b250cm9sbGVyOjpoYXNBdWRpbygpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAw
OyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYg
KG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmhhc0F1ZGlvKCkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhQ29udHJvbGxl
cjo6aGFzVmlkZW8oKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXgg
PCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChtX21lZGlh
RWxlbWVudHNbaW5kZXhdLT5oYXNWaWRlbygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6Omhhc0Ns
b3NlZENhcHRpb25zKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4
IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAobV9tZWRp
YUVsZW1lbnRzW2luZGV4XS0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9s
bGVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCB2aXNpYmxlKQoreworICAgIG1fY2xv
c2VkQ2FwdGlvbnNWaXNpYmxlID0gdmlzaWJsZTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRp
YUVsZW1lbnRzW2luZGV4XS0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKHZpc2libGUpOworfQor
Citib29sIE1lZGlhQ29udHJvbGxlcjo6c3VwcG9ydHNTY2FubmluZygpIGNvbnN0Cit7CisgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsr
aW5kZXgpIHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5zdXBwb3J0c1Nj
YW5uaW5nKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6YmVnaW5TY3J1YmJpbmcoKQoreworICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyAr
K2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5iZWdpblNjcnViYmluZygp
OworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6ZW5kU2NydWJiaW5nKCkKK3sKKyAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRl
eCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+ZW5kU2NydWJiaW5nKCk7Cit9CisK
K2Jvb2wgTWVkaWFDb250cm9sbGVyOjpjYW5QbGF5KCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVf
dCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgewor
ICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmNhblBsYXkoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVk
aWFDb250cm9sbGVyOjppc0xpdmVTdHJlYW0oKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAg
ICAgIGlmICghbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+aXNMaXZlU3RyZWFtKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIE1l
ZGlhQ29udHJvbGxlcjo6aGFzU291cmNlKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRl
eCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAg
ICBpZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmhhc1NvdXJjZSgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYUNv
bnRyb2xsZXI6OnJldHVyblRvUmVhbHRpbWUoKQoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0g
MDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21l
ZGlhRWxlbWVudHNbaW5kZXhdLT5yZXR1cm5Ub1JlYWx0aW1lKCk7Cit9CisKK2NvbnN0IEF0b21p
Y1N0cmluZyYgTWVkaWFDb250cm9sbGVyOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvck1lZGlhQ29udHJvbGxlcjsKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzBlMDAy
NjA4NGI5MmJkMDhmYTAxNzRiMzRhNDFmNzJmN2U1M2I0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDE1NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIE1lZGlhQ29udHJvbGxlcl9oCisjZGVmaW5lIE1lZGlhQ29udHJvbGxl
cl9oCisKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIK
KyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRl
ICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIgor
I2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBDbG9jazsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFz
cyBFdmVudDsKKworY2xhc3MgTWVkaWFDb250cm9sbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFDb250cm9sbGVyPiwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSwgcHVibGljIEV2
ZW50VGFyZ2V0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xs
ZXI+IGNyZWF0ZSgpOworICAgIHZpcnR1YWwgfk1lZGlhQ29udHJvbGxlcigpOworCisgICAgdm9p
ZCBhZGRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIHZvaWQgcmVtb3ZlTWVk
aWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBib29sIGNvbnRhaW5zTWVkaWFFbGVt
ZW50KEhUTUxNZWRpYUVsZW1lbnQqKSBjb25zdDsKKworICAgIGNvbnN0IFN0cmluZyYgbWVkaWFH
cm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFHcm91cDsgfQorICAgIAorICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0OworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxUaW1lUmFuZ2VzPiBwbGF5ZWQoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IGR1cmF0
aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCwgRXhjZXB0aW9uQ29kZSYpOworICAg
IAorICAgIHZpcnR1YWwgYm9vbCBwYXVzZWQoKSBjb25zdCB7IHJldHVybiBtX3BhdXNlZDsgfQor
ICAgIHZpcnR1YWwgdm9pZCBwbGF5KCk7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlKCk7CisgICAg
CisgICAgdmlydHVhbCBmbG9hdCBkZWZhdWx0UGxheWJhY2tSYXRlKCkgY29uc3QgeyByZXR1cm4g
bV9kZWZhdWx0UGxheWJhY2tSYXRlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldERlZmF1bHRQbGF5
YmFja1JhdGUoZmxvYXQpOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgcGxheWJhY2tSYXRlKCkg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFBsYXliYWNrUmF0ZShmbG9hdCk7CisgICAgCisg
ICAgdmlydHVhbCBmbG9hdCB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3ZvbHVtZTsgfQorICAg
IHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAKKyAg
ICB2aXJ0dWFsIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9CisgICAgdmly
dHVhbCB2b2lkIHNldE11dGVkKGJvb2wpOworICAgIAorICAgIHZpcnR1YWwgUmVhZHlTdGF0ZSBy
ZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9CisKKyAgICBlbnVtIFBs
YXliYWNrU3RhdGUgeyBXQUlUSU5HLCBQTEFZSU5HLCBFTkRFRCB9OworICAgIHZpcnR1YWwgUGxh
eWJhY2tTdGF0ZSBwbGF5YmFja1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5YmFja1N0YXRl
OyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgeyB9CisKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFzQXVkaW8oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVmlk
ZW8oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wpOworICAgIHZp
cnR1YWwgYm9vbCBjbG9zZWRDYXB0aW9uc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2Nsb3Nl
ZENhcHRpb25zVmlzaWJsZTsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NjYW5u
aW5nKCkgY29uc3Q7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGJlZ2luU2NydWJiaW5nKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGVuZFNjcnViYmluZygpOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBj
YW5QbGF5KCkgY29uc3Q7CisgICAgCisgICAgdmlydHVhbCBib29sIGlzTGl2ZVN0cmVhbSgpIGNv
bnN0OworICAgIAorICAgIHZpcnR1YWwgYm9vbCBoYXNTb3VyY2UoKSBjb25zdDsKKyAgICAKKyAg
ICB2aXJ0dWFsIHZvaWQgcmV0dXJuVG9SZWFsdGltZSgpOworCisgICAgYm9vbCBpc0Jsb2NrZWQo
KSBjb25zdDsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRp
YUNvbnRyb2xsZXI+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYUNvbnRyb2xsZXI+
OjpkZXJlZjsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xsZXIoKTsKKyAgICB2b2lkIHJl
cG9ydENvbnRyb2xsZXJTdGF0ZSgpOworICAgIHZvaWQgdXBkYXRlUmVhZHlTdGF0ZSgpOworICAg
IHZvaWQgdXBkYXRlUGxheWJhY2tTdGF0ZSgpOworICAgIHZvaWQgdXBkYXRlTWVkaWFFbGVtZW50
cygpOworICAgIHZvaWQgYnJpbmdFbGVtZW50VXBUb1NwZWVkKEhUTUxNZWRpYUVsZW1lbnQqKTsK
KyAgICB2b2lkIHNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpOwor
ICAgIHZvaWQgYXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sbGVyPiopOwor
ICAgIGJvb2wgaGFzRW5kZWQoKSBjb25zdDsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmly
dHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBk
ZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXRE
YXRhOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0
YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIEV2ZW50VGFyZ2V0RGF0YSBt
X2V2ZW50VGFyZ2V0RGF0YTsKKworICAgIGZyaWVuZCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50Owor
ICAgIGZyaWVuZCBjbGFzcyBNZWRpYUNvbnRyb2xsZXJFdmVudExpc3RlbmVyOworICAgIFZlY3Rv
cjxIVE1MTWVkaWFFbGVtZW50Kj4gbV9tZWRpYUVsZW1lbnRzOworICAgIGJvb2wgbV9wYXVzZWQ7
CisgICAgZmxvYXQgbV9kZWZhdWx0UGxheWJhY2tSYXRlOworICAgIGZsb2F0IG1fdm9sdW1lOwor
ICAgIGJvb2wgbV9tdXRlZDsKKyAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKKyAgICBQbGF5
YmFja1N0YXRlIG1fcGxheWJhY2tTdGF0ZTsKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1f
cGVuZGluZ0V2ZW50czsKKyAgICBUaW1lcjxNZWRpYUNvbnRyb2xsZXI+IG1fYXN5bmNFdmVudFRp
bWVyOworICAgIFN0cmluZyBtX21lZGlhR3JvdXA7CisgICAgYm9vbCBtX2Nsb3NlZENhcHRpb25z
VmlzaWJsZTsKKyAgICBQYXNzUmVmUHRyPENsb2NrPiBtX2Nsb2NrOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNv
bnRyb2xsZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0YjJhMWZkOGNiOTQ0MDhhMzhkYWJiOTU2M2ViZmE1
ZjczOGZjNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29u
dHJvbGxlci5pZGwKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVsZSBodG1sIHsKKyAg
ICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1WSURFTywKKyAgICAgICAgQ2FuQmVD
b25zdHJ1Y3RlZCwKKyAgICAgICAgR2VuZXJhdGVUb0pTLAorICAgICAgICBFdmVudFRhcmdldAor
ICAgIF0gTWVkaWFDb250cm9sbGVyIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRpbWVS
YW5nZXMgYnVmZmVyZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUaW1lUmFuZ2VzIHNl
ZWthYmxlOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgZHVyYXRpb247Cisg
ICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgY3VycmVudFRpbWUKKyAgICAgICAgICAgIHNldHRlciBy
YWlzZXMgKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gcGF1c2VkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJhbmdlcyBwbGF5ZWQ7
CisgICAgICAgIHZvaWQgcGxheSgpOworICAgICAgICB2b2lkIHBhdXNlKCk7CisKKyAgICAgICAg
YXR0cmlidXRlIGRvdWJsZSBkZWZhdWx0UGxheWJhY2tSYXRlOworICAgICAgICBhdHRyaWJ1dGUg
ZG91YmxlIHBsYXliYWNrUmF0ZTsKKworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIHZvbHVtZQor
ICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgYXR0cmli
dXRlIGJvb2xlYW4gbXV0ZWQ7CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisg
ICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJl
KTsKKyAgICAgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVu
ZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29s
ZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQg
ZXZ0KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAgICB9OworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzJjZDRkYTQxYWY0MmY1ZGEyYWU1ZGY5Nzc4YzRiODZiN2MzNTQwMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgKQEAg
LTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhQ29udHJvbGxlckludGVyZmFj
ZV9oCisjZGVmaW5lIE1lZGlhQ29udHJvbGxlckludGVyZmFjZV9oCisKKyNpZiBFTkFCTEUoVklE
RU8pCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFRpbWVSYW5nZXM7CisKK3R5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CisKK2Ns
YXNzIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVk
aWFDb250cm9sbGVySW50ZXJmYWNlKCkgeyB9OworICAgIAorICAgIC8vIE1lZGlhQ29udHJvbGxl
ciBJREw6CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gcGxheWVkKCkgPSAw
OworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Q3VycmVudFRpbWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgCisgICAgdmlydHVh
bCBib29sIHBhdXNlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxheSgpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKSA9IDA7CisgICAgCisgICAgdmlydHVhbCBmbG9hdCBk
ZWZhdWx0UGxheWJhY2tSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWZh
dWx0UGxheWJhY2tSYXRlKGZsb2F0KSA9IDA7CisgICAgCisgICAgdmlydHVhbCBmbG9hdCBwbGF5
YmFja1JhdGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFBsYXliYWNrUmF0ZShm
bG9hdCkgPSAwOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgdm9sdW1lKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7Cisg
ICAgCisgICAgdmlydHVhbCBib29sIG11dGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRNdXRlZChib29sKSA9IDA7CisgICAgCisgICAgZW51bSBSZWFkeVN0YXRlIHsgSEFWRV9O
T1RISU5HLCBIQVZFX01FVEFEQVRBLCBIQVZFX0NVUlJFTlRfREFUQSwgSEFWRV9GVVRVUkVfREFU
QSwgSEFWRV9FTk9VR0hfREFUQSB9OworICAgIHZpcnR1YWwgUmVhZHlTdGF0ZSByZWFkeVN0YXRl
KCkgY29uc3QgPSAwOworCisgICAgLy8gTWVkaWFDb250cm9sRWxlbWVudHM6CisgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNGdWxsc2NyZWVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3Jl
ZW4oKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQXVkaW8oKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGhhc1ZpZGVvKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXND
bG9zZWRDYXB0aW9ucygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xvc2VkQ2Fw
dGlvbnNWaXNpYmxlKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2xvc2VkQ2FwdGlvbnNW
aXNpYmxlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Nhbm5pbmco
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJpbmcoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGVuZFNjcnViYmluZygpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBj
YW5QbGF5KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGlzTGl2ZVN0cmVhbSgpIGNv
bnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNTb3VyY2UoKSBjb25zdCA9IDA7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgcmV0dXJuVG9SZWFsdGltZSgpID0gMDsKK307CisKK30KKworI2VuZGlm
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwCmluZGV4IDk4NGI2YmNhNDg1ODlm
YjVkMjZhNDU5NDllM2ZmZTU2MTY2YjI1MzUuLmQ2OGVhMDM3MTgzMzJiZWU2ZGI2ZjA3OTljMTI2
MTUxN2JmMTVkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcApAQCAtMzEsMTMgKzMx
LDE0IEBACiAjaW5jbHVkZSA8bWF0aC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3Vz
aW5nIG5hbWVzcGFjZSBzdGQ7CiAKIFRpbWVSYW5nZXM6OlRpbWVSYW5nZXMoZmxvYXQgc3RhcnQs
IGZsb2F0IGVuZCkKIHsKICAgICBhZGQoc3RhcnQsIGVuZCk7CiB9CiAKLVBhc3NSZWZQdHI8VGlt
ZVJhbmdlcz4gVGltZVJhbmdlczo6Y29weSgpCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IFRpbWVS
YW5nZXM6OmNvcHkoKSBjb25zdAogewogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBuZXdTZXNzaW9u
ID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7CiAgICAgCkBAIC00OCw2ICs0OSw1MSBAQCBQYXNzUmVm
UHRyPFRpbWVSYW5nZXM+IFRpbWVSYW5nZXM6OmNvcHkoKQogICAgIHJldHVybiBuZXdTZXNzaW9u
LnJlbGVhc2UoKTsKIH0KIAordm9pZCBUaW1lUmFuZ2VzOjppbnZlcnQoKQoreworICAgIFJlZlB0
cjxUaW1lUmFuZ2VzPiBpbnZlcnRlZCA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOworICAgIGZsb2F0
IHBvc0luZiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOworICAgIGZs
b2F0IG5lZ0luZiA9IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKKwor
ICAgIGlmICghbV9yYW5nZXMuc2l6ZSgpKQorICAgICAgICBpbnZlcnRlZC0+YWRkKG5lZ0luZiwg
cG9zSW5mKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGZsb2F0IHN0YXJ0ID0gbV9yYW5nZXMu
Zmlyc3QoKS5tX3N0YXJ0ICE9IG5lZ0luZikKKyAgICAgICAgICAgIGludmVydGVkLT5hZGQobmVn
SW5mLCBzdGFydCk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCArIDEg
PCBtX3Jhbmdlcy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBpbnZlcnRlZC0+YWRkKG1f
cmFuZ2VzW2luZGV4XS5tX2VuZCwgbV9yYW5nZXNbaW5kZXggKyAxXS5tX3N0YXJ0KTsKKworICAg
ICAgICBpZiAoZmxvYXQgZW5kID0gbV9yYW5nZXMubGFzdCgpLm1fZW5kICE9IHBvc0luZikKKyAg
ICAgICAgICAgIGludmVydGVkLT5hZGQoZW5kLCBwb3NJbmYpOworICAgIH0KKworICAgIG1fcmFu
Z2VzLnN3YXAoaW52ZXJ0ZWQtPm1fcmFuZ2VzKTsKK30KKwordm9pZCBUaW1lUmFuZ2VzOjppbnRl
cnNlY3RXaXRoKGNvbnN0IFRpbWVSYW5nZXMqIG90aGVyKQoreworICAgIEFTU0VSVChvdGhlcik7
CisgICAgUmVmUHRyPFRpbWVSYW5nZXM+IGludmVydGVkID0gY29weSgpOworICAgIFJlZlB0cjxU
aW1lUmFuZ2VzPiBpbnZlcnRlZE90aGVyID0gb3RoZXItPmNvcHkoKTsKKyAgICBpbnZlcnRlZC0+
dW5pb25XaXRoKGludmVydGVkT3RoZXIuZ2V0KCkpOworICAgIGludmVydGVkLT5pbnZlcnQoKTsK
KworICAgIG1fcmFuZ2VzLnN3YXAoaW52ZXJ0ZWQtPm1fcmFuZ2VzKTsKK30KKwordm9pZCBUaW1l
UmFuZ2VzOjp1bmlvbldpdGgoY29uc3QgVGltZVJhbmdlcyogb3RoZXIpCit7CisgICAgQVNTRVJU
KG90aGVyKTsKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gdW5pb25lZCA9IGNvcHkoKTsKKyAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3RoZXItPm1fcmFuZ2VzLnNpemUoKTsgKytp
bmRleCkgeworICAgICAgICBjb25zdCBSYW5nZSYgcmFuZ2UgPSBvdGhlci0+bV9yYW5nZXNbaW5k
ZXhdOworICAgICAgICB1bmlvbmVkLT5hZGQocmFuZ2UubV9zdGFydCwgcmFuZ2UubV9lbmQpOwor
ICAgIH0KKworICAgIG1fcmFuZ2VzLnN3YXAodW5pb25lZC0+bV9yYW5nZXMpOworfQorCiBmbG9h
dCBUaW1lUmFuZ2VzOjpzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNv
bnN0IAogeyAKICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFu
Z2VzLmgKaW5kZXggZDFkNTYzNzkyM2YwNzJmNzZjYjM3YmI2MWU3MjA2YmQwNzM5MjEwZi4uNDI1
NzY5MDM2YWM4ZWYyNzM4Nzg0N2YzMGFjNDFmZmU3MzA0YjU3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1l
UmFuZ2VzLmgKQEAgLTQ2LDcgKzQ2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBUaW1lUmFuZ2VzKHN0YXJ0LCBlbmQpKTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRy
PFRpbWVSYW5nZXM+IGNvcHkoKTsKKyAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGNvcHkoKSBj
b25zdDsKKyAgICB2b2lkIGludmVydCgpOworICAgIHZvaWQgaW50ZXJzZWN0V2l0aChjb25zdCBU
aW1lUmFuZ2VzKik7CisgICAgdm9pZCB1bmlvbldpdGgoY29uc3QgVGltZVJhbmdlcyopOwogCiAg
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZXMuc2l6ZSgpOyB9CiAg
ICAgZmxvYXQgc3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCBiZDliMjM3Yzc1NDkxMDRjZjMxYzhjY2VjMjUy
MTVmN2JiZGU1OTQxLi5mNzkyOGMwNmVkYzNkODY3OTdkOWJkNmUyM2ZkMTI0MTZjYTAyZmNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC02MzQsNiArNjM0LDcgQEAgbW9kdWxlIHdp
bmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU8sIEVuYWJsZWRBdFJ1
bnRpbWVdIE1lZGlhRXJyb3JDb25zdHJ1Y3RvciBNZWRpYUVycm9yOwogICAgICAgICBhdHRyaWJ1
dGUgW0NvbmRpdGlvbmFsPVZJREVPLCBFbmFibGVkQXRSdW50aW1lXSBUaW1lUmFuZ2VzQ29uc3Ry
dWN0b3IgVGltZVJhbmdlczsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1WSURFTywg
RW5hYmxlZEF0UnVudGltZV0gSFRNTFNvdXJjZUVsZW1lbnRDb25zdHJ1Y3RvciBIVE1MU291cmNl
RWxlbWVudDsKKyAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1WSURFTywgRW5hYmxlZEF0
UnVudGltZV0gTWVkaWFDb250cm9sbGVyQ29uc3RydWN0b3IgTWVkaWFDb250cm9sbGVyOwogCiAj
aWYgZGVmaW5lZChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJiYgRU5BQkxFX0FOSU1BVElPTl9BUEkK
ICAgICAgICAgYXR0cmlidXRlIFdlYktpdEFuaW1hdGlvbkNvbnN0cnVjdG9yIFdlYktpdEFuaW1h
dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrR2VuZXJpYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9ja0dlbmVyaWMuY3BwCmluZGV4IDI4OTYw
YzMwM2YxZmFlZDliYWUzMThjZjVkNjM3OWNkNmE1ZWVlN2YuLmFlYWY4Njc5MTMzMWJlM2JiZWNj
YjMwZjJlODRmM2NlNjA0ZjY3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0Nsb2NrR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2tHZW5l
cmljLmNwcApAQCAtMzYsMjcgKzM2LDI3IEBAIENsb2NrR2VuZXJpYzo6Q2xvY2tHZW5lcmljKCkK
ICAgICAsIG1fcmF0ZSgxKQogICAgICwgbV9vZmZzZXQoMCkKIHsKLSAgICBtX3N0YXJ0VGltZSA9
IG1fbGFzdFRpbWUgPSBjdXJyZW50VGltZSgpOworICAgIG1fc3RhcnRUaW1lID0gbV9sYXN0VGlt
ZSA9IG5vdygpOwogfQogCiB2b2lkIENsb2NrR2VuZXJpYzo6c2V0Q3VycmVudFRpbWUoZmxvYXQg
dGltZSkKIHsKLSAgICBtX3N0YXJ0VGltZSA9IG1fbGFzdFRpbWUgPSBjdXJyZW50VGltZSgpOwor
ICAgIG1fc3RhcnRUaW1lID0gbV9sYXN0VGltZSA9IG5vdygpOwogICAgIG1fb2Zmc2V0ID0gdGlt
ZTsKIH0KIAogZmxvYXQgQ2xvY2tHZW5lcmljOjpjdXJyZW50VGltZSgpIGNvbnN0CiB7CiAgICAg
aWYgKG1fcnVubmluZykKLSAgICAgICAgbV9sYXN0VGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAg
ICAgIG1fbGFzdFRpbWUgPSBub3coKTsKICAgICBmbG9hdCB0aW1lID0gKG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQobV9sYXN0VGltZSAtIG1fc3RhcnRUaW1lKSAqIG1fcmF0ZSkgKyBtX29mZnNldDsK
ICAgICByZXR1cm4gdGltZTsKIH0KIAogdm9pZCBDbG9ja0dlbmVyaWM6OnNldFBsYXlSYXRlKGZs
b2F0IHJhdGUpCiB7Ci0gICAgbV9vZmZzZXQgPSBjdXJyZW50VGltZSgpOwotICAgIG1fbGFzdFRp
bWUgPSBtX3N0YXJ0VGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgbV9vZmZzZXQgPSBub3coKTsK
KyAgICBtX2xhc3RUaW1lID0gbV9zdGFydFRpbWUgPSBub3coKTsKICAgICBtX3JhdGUgPSByYXRl
OwogfQogCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ2xvY2tHZW5lcmljOjpzdGFydCgpCiAgICAg
aWYgKG1fcnVubmluZykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9sYXN0VGltZSA9IG1fc3Rh
cnRUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICBtX2xhc3RUaW1lID0gbV9zdGFydFRpbWUgPSBu
b3coKTsKICAgICBtX3J1bm5pbmcgPSB0cnVlOwogfQogCkBAIC03NCw3ICs3NCwxMyBAQCB2b2lk
IENsb2NrR2VuZXJpYzo6c3RvcCgpCiAgICAgaWYgKCFtX3J1bm5pbmcpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fb2Zmc2V0ID0gY3VycmVudFRpbWUoKTsKLSAgICBtX2xhc3RUaW1lID0gbV9z
dGFydFRpbWUgPSBjdXJyZW50VGltZSgpOworICAgIG1fb2Zmc2V0ID0gbm93KCk7CisgICAgbV9s
YXN0VGltZSA9IG1fc3RhcnRUaW1lID0gbm93KCk7CiAgICAgbV9ydW5uaW5nID0gZmFsc2U7CiB9
CisKK2Zsb2F0IENsb2NrR2VuZXJpYzo6bm93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpj
dXJyZW50VGltZSgpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
bG9ja0dlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrR2VuZXJpYy5oCmlu
ZGV4IDcyYjBjYjAxYzBlYzEwMGFjM2ZhNzFmOWNlMTBkMjAwNGE1NTM0YzcuLjViNzViZjYzZjIy
MmRjZTg3NTM5Mjk5ZDAwN2EyZDk3ZWMxMjc4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0Nsb2NrR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ns
b2NrR2VuZXJpYy5oCkBAIC00NSw2ICs0NSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHN0b3AoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNSdW5uaW5nKCkgY29uc3QgeyByZXR1cm4gbV9y
dW5uaW5nOyB9CiAKKyAgICBmbG9hdCBub3coKSBjb25zdDsKKwogICAgIGJvb2wgbV9ydW5uaW5n
OwogICAgIGZsb2F0IG1fcmF0ZTsKICAgICBmbG9hdCBtX29mZnNldDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCAwMThjN2RkMzNl
MzhjMWI4Zjc3MzQ1YThjM2U0ZjgzNWZlYzYwYTczLi5mYzc3ZmYyODgzOGI3YzA5NGFhNTNhNGZi
ZGYwNzE2ODBjYTIyMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC02MDksNiArNjA5LDExIEBAIFBhc3NSZWZQdHI8VGltZVJh
bmdlcz4gTWVkaWFQbGF5ZXI6OmJ1ZmZlcmVkKCkKICAgICByZXR1cm4gbV9wcml2YXRlLT5idWZm
ZXJlZCgpOwogfQogCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxheWVyOjpzZWVrYWJs
ZSgpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2Vla2FibGUoKTsKK30KKwogZmxvYXQgTWVk
aWFQbGF5ZXI6Om1heFRpbWVTZWVrYWJsZSgpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWF4
VGltZVNlZWthYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaAppbmRleCBjOTZiMDI1ZDgyZDAwNzA5MTY5ZWVhNTFjMDc4MjZiNzQ1MDZjNDcx
Li40NzczOWEwOGIwZTNkOWNjNzNjOTlhMTMxNDM0YTc4YWUwMzc0NTVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTI0MSw2ICsyNDEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmVzZXJ2ZXNQaXRjaChib29sKTsKIAogICAgIFBh
c3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKTsKKyAgICBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IHNlZWthYmxlKCk7CiAgICAgZmxvYXQgbWF4VGltZVNlZWthYmxlKCk7CiAKICAgICB1bnNp
Z25lZCBieXRlc0xvYWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCBmOGM3MGFiZTI4YTdlZDAxZGZiOGEy
Y2I3ZjFjNjM2NjM3ZDM4NDQxLi42YzUyN2Q3ZTVjZDM4OTk5MTZiNDY1ZWY3MmQ1NzE0NDA1NmVk
N2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShWSURFTykKIAog
I2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTkxLDYgKzkyLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3Jr
U3RhdGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBy
ZWFkeVN0YXRlKCkgY29uc3QgPSAwOwogCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IHNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gbWF4VGltZVNlZWthYmxlKCkgPyBUaW1lUmFu
Z2VzOjpjcmVhdGUoMCwgbWF4VGltZVNlZWthYmxlKCkpIDogVGltZVJhbmdlczo6Y3JlYXRlKCk7
IH0KICAgICB2aXJ0dWFsIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCA9IDA7CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA4NjAzOWM5NzI0YTkwNjRiODJiMDI4YWVjMTE2ZDAzNzYzMDIwNmZjLi5jNDE2MTM4Yzkx
MDRiNmZiZDBkN2NhYTk4YmEyZDZjNGI0YzIwZmQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIw
MTEtMTEtMDMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1w
bGVtZW50IE1lZGlhQ29udHJvbGxlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTcxNDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRt
bDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci5odG1sOiBBZGRlZC4K
KworMjAxMS0xMS0wMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbXBsZW1lbnQgTWVkaWFDb250cm9sbGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFj
ay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLmh0bWw6IEFk
ZGVkLgorCisyMDExLTExLTAyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCBNZWRpYUNvbnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2st
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBs
YXliYWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRt
bDogQWRkZWQuCisKIDIwMTEtMTEtMTAgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBVbnJldmlld2VkLCByZWJhc2VsaW5lIFNWRyB0ZXN0
IHJlc3VsdHMgY2hhbmdlZCBhZnRlciByOTk1MzkuIChwYXJ0IDIpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L21lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjNjlkZDBj
ZjlmZTIxYzlmYWFhNWQyYTliOGNkODYyMzNmMzVhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1
IEBACisgCitUZXN0IHByZXNlbmNlIG9mIE1lZGlhQ29udHJvbGxlciBjb25zdHJ1Y3RvciwgbWVk
aWFDb250cm9sbGVyLCBhbmQgbWVkaWFHcm91cCBhdHRyaWJ1dGVzOgorRVhQRUNURUQgKHR5cGVv
ZihNZWRpYUNvbnRyb2xsZXIpICE9ICd1bmRlZmluZWQnKSBPSworRVhQRUNURUQgKHZpZGVvLm1l
ZGlhQ29udHJvbGxlciA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAodmlkZW8ubWVkaWFHcm91cCA9
PSAnJykgT0sKKworVGVzdCB0aGF0IHRoZSBwcmVzZW5jZSBvZiBhIG1lZGlhR3JvdXAgYXR0cmli
dXRlIGNyZWF0ZXMgYSBtZWRpYUNvbnRyb2xsZXI6CitFWFBFQ1RFRCAodmlkZW8yLm1lZGlhR3Jv
dXAgPT0gJ2dyb3VwJykgT0sKK0VYUEVDVEVEICh2aWRlbzIubWVkaWFDb250cm9sbGVyICE9ICdu
dWxsJykgT0sKKworVGVzdCB0aGF0IHNldHRpbmcgbWVkaWFHcm91cCB0byBhbiBlbXB0eSBzdHJp
bmcgcmVtb3ZlcyB0aGUgbWVkaWFDb250cm9sbGVyOgorUlVOKHZpZGVvLm1lZGlhR3JvdXAgPSAn
JykKK0VYUEVDVEVEICh2aWRlby5tZWRpYUNvbnRyb2xsZXIgPT0gJ251bGwnKSBPSworCitUZXN0
IG1hbnVhbGx5IGNyZWF0aW5nIGFuZCBhc3NpZ25pbmcgYSBtZWRpYUNvbnRyb2xsZXIgdG8gYSBt
ZWRpYSBlbGVtZW50OgorUlVOKGNvbnRyb2xsZXIgPSBuZXcgTWVkaWFDb250cm9sbGVyKCkpCitS
VU4odmlkZW8ubWVkaWFDb250cm9sbGVyID0gY29udHJvbGxlcikKK0VYUEVDVEVEICh2aWRlby5t
ZWRpYUNvbnRyb2xsZXIgPT0gJ1tvYmplY3QgTWVkaWFDb250cm9sbGVyXScpIE9LCisKK1Rlc3Qg
dGhhdCB0d28gbWVkaWEgZWxlbWVudHMgd2l0aCB0aGUgc2FtZSBtZWRpYUdyb3VwIGhhdmUgdGhl
IHNhbWUgbWVkaWFDb250cm9sbGVyOgorUlVOKHZpZGVvLm1lZGlhR3JvdXAgPSAnZ3JvdXAnKQor
UlVOKHZpZGVvMi5tZWRpYUdyb3VwID0gJ2dyb3VwJykKK0VYUEVDVEVEICh2aWRlby5tZWRpYUNv
bnRyb2xsZXIgPT09IHZpZGVvMi5tZWRpYUNvbnRyb2xsZXIgPT0gJ3RydWUnKSBPSworRU5EIE9G
IFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1w
bGF5YmFjay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVy
LXBsYXliYWNrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGE4ZTA5MjEzZWUxYTcxMDdiODEx
YWI5Zjg4M2FkNDAxMmEzZmE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEv
bWVkaWEtY29udHJvbGxlci1wbGF5YmFjay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
IAorUlVOKGNvbnRyb2xsZXIgPSB2aWRlby5tZWRpYUNvbnRyb2xsZXIpCitFVkVOVChjYW5wbGF5
dGhyb3VnaCkKK1JVTihjb250cm9sbGVyLmN1cnJlbnRUaW1lID0gNSkKK0VYUEVDVEVEICh2aWRl
by5jdXJyZW50VGltZSA9PSAnNScpIE9LCitFWFBFQ1RFRCAodmlkZW8yLmN1cnJlbnRUaW1lID09
ICc1JykgT0sKK1JVTih2aWRlby5wbGF5KCkpCitSVU4odmlkZW8yLnBsYXkoKSkKK1JVTihjb250
cm9sbGVyLnBsYXkoKSkKK0VWRU5UKHBsYXlpbmcpCitFWFBFQ1RFRCAoY29udHJvbGxlci5wYXVz
ZWQgPT0gJ2ZhbHNlJykgT0sKK0VWRU5UKGVuZGVkKQorRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay5odG1sIGIvTGF5
b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdjMmI4M2VmMWFhODg5NmQ3YzIyMDdmN2E5NDY0OTBmM2NjZjVmMmYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKQEAg
LTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9bWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBz
cmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKworICAgICAgICA8c2NyaXB0PgorICAgICAgICB2
YXIgY29udHJvbGxlcjsKKyAgICAgICAgdmFyIHZpZGVvMjsKKworICAgICAgICBmdW5jdGlvbiBz
dGFydCgpIHsKKyAgICAgICAgICAgIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ3ZpZGVvJylbMF07CisgICAgICAgICAgICB2aWRlbzIgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgndmlkZW8nKVsxXTsKKyAgICAgICAgICAgIHJ1bignY29udHJvbGxlciA9IHZp
ZGVvLm1lZGlhQ29udHJvbGxlcicpOworICAgICAgICAgICAgY29udHJvbGxlci5hZGRFdmVudExp
c3RlbmVyKCdjYW5wbGF5dGhyb3VnaCcsIGNhbnBsYXl0aHJvdWdoLCB0cnVlKTsKKyAgICAgICAg
ICAgIHNldFNyY0J5VGFnTmFtZSgndmlkZW8nLCBmaW5kTWVkaWFGaWxlKCd2aWRlbycsICdjb250
ZW50L3Rlc3QnKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGNhbnBs
YXl0aHJvdWdoKCkgeworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVChjYW5wbGF5dGhy
b3VnaCkiKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2Fu
cGxheXRocm91Z2gnLCBjYW5wbGF5dGhyb3VnaCwgdHJ1ZSk7CisgICAgICAgICAgICBydW4oJ2Nv
bnRyb2xsZXIuY3VycmVudFRpbWUgPSA1Jyk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3Zp
ZGVvLmN1cnJlbnRUaW1lJywgNSk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvMi5j
dXJyZW50VGltZScsIDUpOworICAgICAgICAgICAgcnVuKCd2aWRlby5wbGF5KCknKTsKKyAgICAg
ICAgICAgIHJ1bigndmlkZW8yLnBsYXkoKScpOworICAgICAgICAgICAgY29udHJvbGxlci5hZGRF
dmVudExpc3RlbmVyKCdwbGF5aW5nJywgcGxheWluZywgdHJ1ZSk7CisgICAgICAgICAgICBydW4o
J2NvbnRyb2xsZXIucGxheSgpJyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZ1bmN0
aW9uIHBsYXlpbmcoKSB7IAorICAgICAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVChwbGF5aW5n
KSIpOworICAgICAgICAgICAgY29udHJvbGxlci5yZW1vdmVFdmVudExpc3RlbmVyKCdwbGF5aW5n
JywgcGxheWluZywgdHJ1ZSk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2NvbnRyb2xsZXIu
cGF1c2VkJywgZmFsc2UpOworICAgICAgICAgICAgY29udHJvbGxlci5hZGRFdmVudExpc3RlbmVy
KCdlbmRlZCcsIGVuZGVkLCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGVu
ZGVkKCkgeyAKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQoZW5kZWQpIik7CisgICAg
ICAgICAgICBjb250cm9sbGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgZW5kZWQsIHRy
dWUpOworICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8dmlk
ZW8gbWVkaWFHcm91cD0iZ3JvdXAiIGNvbnRyb2xzPjwvdmlkZW8+CisgICAgICAgIDx2aWRlbyBt
ZWRpYUdyb3VwPSJncm91cCIgY29udHJvbHM+PC92aWRlbz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVk
aWEvbWVkaWEtY29udHJvbGxlci5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJv
bGxlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzMWM0OGRiMDQ3ODJjYTQ1NGYyZjVhNDBkZmVjMjRiNzI1
MmMxNGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9s
bGVyLmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9bWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKworICAgICAgICA8c2NyaXB0
PgorICAgICAgICB2YXIgY29udHJvbGxlcjsKKyAgICAgICAgdmFyIHZpZGVvMjsKKworICAgICAg
ICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgICAgIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF07CisgICAgICAgICAgICB2aWRlbzIgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8nKVsxXTsKKworICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCJUZXN0IHByZXNlbmNlIG9mIE1lZGlhQ29udHJvbGxlciBjb25zdHJ1Y3RvciwgbWVk
aWFDb250cm9sbGVyLCBhbmQgbWVkaWFHcm91cCBhdHRyaWJ1dGVzOiIpOworICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJ0eXBlb2YoTWVkaWFDb250cm9sbGVyKSIsICJ1bmRlZmluZWQiLCAiIT0i
KTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubWVkaWFDb250cm9sbGVyIiwgbnVs
bCk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm1lZGlhR3JvdXAiLCAiIik7Cisg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJU
ZXN0IHRoYXQgdGhlIHByZXNlbmNlIG9mIGEgbWVkaWFHcm91cCBhdHRyaWJ1dGUgY3JlYXRlcyBh
IG1lZGlhQ29udHJvbGxlcjoiKQorICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlbzIubWVk
aWFHcm91cCIsICdncm91cCcpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlbzIubWVk
aWFDb250cm9sbGVyIiwgbnVsbCwgIiE9Iik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIp
OworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IHRoYXQgc2V0dGluZyBtZWRpYUdyb3Vw
IHRvIGFuIGVtcHR5IHN0cmluZyByZW1vdmVzIHRoZSBtZWRpYUNvbnRyb2xsZXI6IikKKyAgICAg
ICAgICAgIHJ1bigidmlkZW8ubWVkaWFHcm91cCA9ICcnIik7CisgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciIsIG51bGwpOworICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCBtYW51YWxseSBjcmVh
dGluZyBhbmQgYXNzaWduaW5nIGEgbWVkaWFDb250cm9sbGVyIHRvIGEgbWVkaWEgZWxlbWVudDoi
KQorICAgICAgICAgICAgcnVuKCJjb250cm9sbGVyID0gbmV3IE1lZGlhQ29udHJvbGxlcigpIik7
CisgICAgICAgICAgICBydW4oInZpZGVvLm1lZGlhQ29udHJvbGxlciA9IGNvbnRyb2xsZXIiKTsK
KyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubWVkaWFDb250cm9sbGVyIiwgY29udHJv
bGxlcik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCJUZXN0IHRoYXQgdHdvIG1lZGlhIGVsZW1lbnRzIHdpdGggdGhlIHNhbWUgbWVkaWFH
cm91cCBoYXZlIHRoZSBzYW1lIG1lZGlhQ29udHJvbGxlcjoiKQorICAgICAgICAgICAgcnVuKCJ2
aWRlby5tZWRpYUdyb3VwID0gJ2dyb3VwJyIpOworICAgICAgICAgICAgcnVuKCJ2aWRlbzIubWVk
aWFHcm91cCA9ICdncm91cCciKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubWVk
aWFDb250cm9sbGVyID09PSB2aWRlbzIubWVkaWFDb250cm9sbGVyIiwgdHJ1ZSk7CisgICAgICAg
ICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICAgIDx2aWRlbz48L3ZpZGVvPgor
ICAgICAgICA8dmlkZW8gbWVkaWFncm91cD0iZ3JvdXAiPjwvdmlkZW8+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxpb24vZmFzdC9y
ZWdpb25zL3JlbmRlci1yZWdpb24tY3VzdG9tLXN0eWxlLW1hcmstZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxpb24vZmFzdC9yZWdpb25zL3JlbmRlci1yZWdpb24tY3Vz
dG9tLXN0eWxlLW1hcmstZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2NzRlYTllNGZhODUwYTkz
ODQzZTNjZjhkYmJhNjU0ZGIzOTMwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtbGlvbi9mYXN0L3JlZ2lvbnMvcmVuZGVyLXJlZ2lvbi1jdXN0b20tc3R5bGUt
bWFyay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCww
KSBzaXplIDgwMHgxNjYKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDE2
NgorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDE1MAorICAgICAgUmVu
ZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgMjAweDUwCisgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMCw1MCkgc2l6ZSAyMDB4NTAKKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAo
MCwxMDApIHNpemUgMjAweDUwCitGbG93IFRocmVhZHMKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1l
ICdmbG93MScKKyAgICBsYXllciBhdCAoMCwwKSBzaXplIDIwMHgxMDAKKyAgICAgIFJlbmRlckZs
b3dUaHJlYWQgYXQgKDAsMCkgc2l6ZSAyMDB4MTAwCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDE2KSBzaXplIDIwMHgxODgKKyAgICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAs
MCkgc2l6ZSAyMDB4MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDE2OHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjg6ICJG
aXJzdCBwYXJhIGdvZXMgaW50byByZWdpb24uIgorICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9u
eW1vdXMpIGF0ICgwLDM0KSBzaXplIDIwMHgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgMTM0eDE4CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDEzNDogIlRleHQgZ29lcyBpbnRvIHJlZ2lvbiIKKyAgICAgICAgICBSZW5kZXJCbG9j
ayB7UH0gYXQgKDAsNjgpIHNpemUgMjAweDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAxODd4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMTg3OiAiU2Vjb25kIHBhcmEgZ29lcyBpbnRvIHJlZ2lvbi4iCisgICAgICAgICAgUmVu
ZGVyQmxvY2sge1B9IGF0ICgwLDEwMikgc2l6ZSAyMDB4MTgKKyAgICAgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE3NXgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCAxNzU6ICJUaGlyZCBwYXJhIGdvZXMgaW50byByZWdpb24uIgorICAgICAg
ICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDEzNikgc2l6ZSAyMDB4MTgKKyAgICAg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEzNHgxOAorICAgICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMzQ6ICJUZXh0IGdvZXMgaW50byByZWdpb24i
CisgICAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDE3MCkgc2l6ZSAyMDB4MTgKKyAgICAg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE4MngxOAorICAgICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxODI6ICJGb3VydGggcGFyYSBnb2VzIGludG8g
cmVnaW9uLiIKKyAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvdzEnCisgICAgUmVuZGVyUmVnaW9uIHtE
SVZ9ICNyZWdpb24xIHJlZ2lvbiBzdHlsZTogMQorICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVn
aW9uMyByZWdpb24gc3R5bGU6IDEK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114621</attachid>
            <date>2011-11-10 21:13:22 -0800</date>
            <delta_ts>2011-11-10 22:44:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71408-20111110211321.patch</filename>
            <type>text/plain</type>
            <size>107449</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk5MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NGZkMjFmZjNmYjA1YjEz
ZDA2NzE0ZDk3Yzc3YTFiMWYyMzEwMTAyLi42OTM1YWRjZWIzZmMwYjBhZDRlZWY1MWY3YmU5MTJm
Y2E5ODY0MDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY5IEBACisyMDExLTExLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNv
bnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbAorCisgICAgICAgIEFkZHMgc3VwcG9ydCBm
b3IgdGhlIE1lZGlhQ29udHJvbGxlciBET00gb2JqZWN0LCBhbmQgdGhlIG1lZGlhZ3JvdXAgYW5k
IG1lZGlhY29udHJvbGxlcgorICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGF0dHJpYnV0ZXMuCisK
KyAgICAgICAgTWVkaWFDb250cm9sbGVyIGlzIGFuIERPTSBvYmplY3Qgd2hpY2ggc3luY2hyb25p
emVzIHBsYXliYWNrIG9mIG11bHRpcGxlIEhUTUxNZWRpYUVsZW1lbnRzLiBJdCBjYW4KKyAgICAg
ICAgZWl0aGVyIGJlIGNyZWF0ZWQgYnkgYSBwYWdlIHNjcmlwdCBhbmQgYXNzaWduZWQgdG8gYSBI
VE1MTWVkaWFFbGVtZW50IHVzaW5nIHRoZSBjb250cm9sbGVyIHByb3BlcnR5LAorICAgICAgICBv
ciBhbGwgSFRNTE1lZGlhRWxlbWVudHMgd2l0aCBpZGVudGljYWwgbWVkaWFncm91cCBhdHRyaWJ1
dGVzIHdpbGwgaGF2ZSBhIE1lZGlhQ29udHJvbGxlciBhc3NpZ25lZCAKKyAgICAgICAgYXV0b21h
dGljYWxseS4KKworICAgICAgICBBZGQgYW4gYWJzdHJhY3QgaW50ZXJmYWNlIGltcGxlbWVudGVk
IGJ5IGJvdGggTWVkaWFDb250cm9sbGVyIGFuZCBIVE1MTWVkaWFFbGVtZW50LgorICAgICAgICAq
IGh0bWwvTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sbGVySW50ZXJmYWNlOjp+TWVkaWFDb250cm9sbGVySW50ZXJmYWNlKToK
KworICAgICAgICBBZGQgdGhlIE1lZGlhQ29udHJvbGxlciBvYmplY3QgYW5kIElETC4KKyAgICAg
ICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAobWVkaWFHcm91
cFRvTWVkaWFDb250cm9sbGVyTWFwKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6bWVkaWFD
b250cm9sbGVyRm9yTWVkaWFHcm91cCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmNyZWF0
ZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Ok1lZGlhQ29udHJvbGxlcik6CisgICAgICAg
IChNZWRpYUNvbnRyb2xsZXI6On5NZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoTWVkaWFDb250
cm9sbGVyOjphZGRNZWRpYUVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpyZW1v
dmVNZWRpYUVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjb250YWluc01lZGlh
RWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmJ1ZmZlcmVkKToKKyAgICAgICAg
KE1lZGlhQ29udHJvbGxlcjo6c2Vla2FibGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpw
bGF5ZWQpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpkdXJhdGlvbik6CisgICAgICAgIChN
ZWRpYUNvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
c2V0Q3VycmVudFRpbWUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpwbGF5KToKKyAgICAg
ICAgKE1lZGlhQ29udHJvbGxlcjo6cGF1c2UpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpz
ZXREZWZhdWx0UGxheWJhY2tSYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6c2V0UGxh
eWJhY2tSYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6c2V0Vm9sdW1lKToKKyAgICAg
ICAgKE1lZGlhQ29udHJvbGxlcjo6c2V0TXV0ZWQpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVy
OjpyZXBvcnRDb250cm9sbGVyU3RhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjp1cGRh
dGVSZWFkeVN0YXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlUGxheWJhY2tT
dGF0ZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnVwZGF0ZU1lZGlhRWxlbWVudHMpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKE1lZGlh
Q29udHJvbGxlcjo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
aGFzQXVkaW8pOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpoYXNWaWRlbyk6CisgICAgICAg
IChNZWRpYUNvbnRyb2xsZXI6Omhhc0Nsb3NlZENhcHRpb25zKToKKyAgICAgICAgKE1lZGlhQ29u
dHJvbGxlcjo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKToKKyAgICAgICAgKE1lZGlhQ29udHJv
bGxlcjo6c3VwcG9ydHNTY2FubmluZyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmJlZ2lu
U2NydWJiaW5nKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6ZW5kU2NydWJiaW5nKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6Y2FuUGxheSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OmlzTGl2ZVN0cmVhbSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Omhhc1NvdXJjZSk6
CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnJldHVyblRvUmVhbHRpbWUpOgorICAgICAgICAo
TWVkaWFDb250cm9sbGVyOjppc0Jsb2NrZWQpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpo
YXNFbmRlZCk6CisgICAgICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6Om1lZGlhR3JvdXApOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sbGVyOjpwYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sbGVyOjpkZWZhdWx0UGxheWJhY2tSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbGxlcjo6cGxheWJhY2tSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bGxlcjo6dm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6bXV0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpyZWFkeVN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6cGxheWJhY2tTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnN1cHBvcnRzRnVsbHNjcmVlbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OmlzRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xsZXI6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xsZXI6OmNsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xsZXI6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbGxlcjo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xsZXI6OnRvTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbGxlcjo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbGxlcjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29u
dHJvbGxlci5pZGw6IEFkZGVkLgorCisgICAgICAgIEFkZCBjb252ZW5pZW5jZSBmdW5jdGlvbnMg
dG8gVGltZVJhbmdlcyB3aGljaCBjYW4gY2FsY3VsYXRlIGludGVyc2VjdGlvbnMgYW5kCisgICAg
ICAgIHVuaW9ucyBiZXR3ZWVuIFRpbWVSYW5nZXMgb2JqZWN0cy4KKyAgICAgICAgKiBodG1sL1Rp
bWVSYW5nZXMuY3BwOgorICAgICAgICAoVGltZVJhbmdlczo6Y29weSk6CisgICAgICAgIChUaW1l
UmFuZ2VzOjppbnZlcnQpOgorICAgICAgICAoVGltZVJhbmdlczo6aW50ZXJzZWN0V2l0aCk6Cisg
ICAgICAgIChUaW1lUmFuZ2VzOjp1bmlvbldpdGgpOgorICAgICAgICAqIGh0bWwvVGltZVJhbmdl
cy5oOgorCisgICAgICAgIEFkZCBNZWRpYUNvbnRyb2xsZXJDb25zdHJ1Y3RvciB0byB0aGUgV2lu
ZG93IG9iamVjdC4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisKKyAgICAgICAgQWRk
IHRoZSB0d28gbmV3IGF0dHJpYnV0ZSBuYW1lcywgbWVkaWFncm91cCBhbmQgY29udHJvbGxlci4K
KyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKworICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgdGhlIG5ldyBhdHRyaWJ1dGVzLCBhbmQgYWRkIG92ZXJyaWRkZW4gYmVoYXZpb3Ig
d2hlbiBhIG1lZGlhIGVsZW1lbnQKKyAgICAgICAgaGFzIGEgY3VycmVudCBtZWRpYSBjb250cm9s
bGVyOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnNldFBsYXliYWNrUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6dG9nZ2xlUGxheVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2Vla2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6cG90ZW50aWFsbHlQbGF5aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OmVuZGVkUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
dXBkYXRlVm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0
ZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2Fu
Y2VsbGVkTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYUdy
b3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhR3JvdXAp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y29udHJvbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDb250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZU1lZGlhQ29udHJvbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxl
cik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpoYXNTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6aXNMaXZlU3RyZWFtKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRp
YUNvbnRyb2xsZXIpOgorCisgICAgICAgIEFkZCBhIGZ1bmN0aW9uICJzZWVrYWJsZSIgd2hpY2gg
cmV0dXJucyBhIFRpbWVSYW5nZXMgY29udGFpbmluZyB0aGUgc2Vla2FibGUgdGltZSByYW5nZXMK
KyAgICAgICAgaW4gYSBtZWRpYSBlbGVtZW50LiAgQnkgZGVmYXVsdCB0aGlzIGlzIGEgc2luZ2xl
IHJhbmdlIG9mIFswLCBtYXhUaW1lU2Vla2FibGVdLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzZWVr
YWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6c2Vla2FibGUpOgorCisgICAgICAg
IFN1cHBvcnQgZnVuY3Rpb25zIHRvIGNhc3QgYmV0d2VlbiBNZWRpYUNvbnRyb2xsZXIgYW5kIEV2
ZW50VGFyZ2V0LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojp0b01lZGlhQ29udHJvbGxlcik6CisgICAgICAg
ICogZG9tL0V2ZW50VGFyZ2V0Lmg6CisKKyAgICAgICAgRml4ZWQgYW4gaW5maW5pdGUtcmVjdXJz
aW9uIGJ1ZyBkdWUgdG8gYSBjb2xsaXNpb24gYmV0d2VlbiBXVEY6OmN1cnJlbnRUaW1lIGFuZAor
ICAgICAgICBDbG9ja0dlbmVyaWM6OmN1cnJlbnRUaW1lOgorICAgICAgICAqIHBsYXRmb3JtL0Ns
b2NrR2VuZXJpYy5jcHA6CisgICAgICAgIChDbG9ja0dlbmVyaWM6OkNsb2NrR2VuZXJpYyk6Cisg
ICAgICAgIChDbG9ja0dlbmVyaWM6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKENsb2NrR2Vu
ZXJpYzo6Y3VycmVudFRpbWUpOgorICAgICAgICAoQ2xvY2tHZW5lcmljOjpzZXRQbGF5UmF0ZSk6
CisgICAgICAgIChDbG9ja0dlbmVyaWM6OnN0YXJ0KToKKyAgICAgICAgKENsb2NrR2VuZXJpYzo6
c3RvcCk6CisgICAgICAgIChDbG9ja0dlbmVyaWM6Om5vdyk6CisgICAgICAgICogcGxhdGZvcm0v
Q2xvY2tHZW5lcmljLmg6CisKKyAgICAgICAgQm9pbGVycGxhdGUgdG8gc3VwcG9ydCBjcmVhdGlu
ZyB0aGUgZGVyaXZlZCBzb3VyY2VzIGZvciBNZWRpYUNvbnRyb2xsZXIgYW5kIGFkZGluZyBuZXcg
c291cmNlcworICAgICAgICB0byB0aGUgcHJvamVjdDoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5jcHA6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
IDIwMTEtMTEtMTAgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW2Nocm9taXVtXSBBZGQgcGx1bWJpbmcgZm9yIEpTIHRvIHdyaXRlIHRvIGNsaXBib2FyZCBp
biBjb3B5L2N1dCBldmVudHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKaW5kZXgg
NTUzZGM1ZThjMzU2OWNiODA2Y2I1OTU0ZDdiYzNkNWEyOGU1ZTRlOS4uM2QxMjkzOTE4MzU1YTcy
NDdkOGQ3NWYzM2MzNTFiZDBmZjExM2I4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaApAQCAtMTEwNyw3ICsxMTA3LDcgQEAKICNkZWZpbmUgSEFWRV9JTlZFUlRFRF9XSEVFTF9F
VkVOVFMgMQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShXSU4pICYm
ICFPUyhXSU5DRSkgJiYgIVBMQVRGT1JNKFdJTl9DQUlSTykpCisjaWYgUExBVEZPUk0oTUFDKQog
I2RlZmluZSBXVEZfVVNFX0NPUkVBVURJTyAxCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBmNTdlOWUzZjg2ZDJmMjgwZTUyNGI0ZTdiN2ZiMGEwZjQ4M2I3MDUwLi40NTRjYmE1MDg2
MGJmODJlM2FmZTQ4NWEyMzA0MTYyMDFhNmI4NmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
Mjc2LDYgKzI3Niw3IEBAIFNFVChXZWJDb3JlX0lETF9GSUxFUwogICAgIGh0bWwvSFRNTFVua25v
d25FbGVtZW50LmlkbAogICAgIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwKICAgICBodG1sL0lt
YWdlRGF0YS5pZGwKKyAgICBodG1sL01lZGlhQ29udHJvbGxlci5pZGwKICAgICBodG1sL01lZGlh
RXJyb3IuaWRsCiAgICAgaHRtbC9UZXh0TWV0cmljcy5pZGwKICAgICBodG1sL1RleHRUcmFjay5p
ZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAppbmRleCBiM2YxZTNmYjk5NmU3OTAzOTNkOWZk
Yzg2ZjY5MWI4YTYxNTNkM2Q2Li41NTg3NjA5MDY2OWQyOWU3MzZjMWE4NmQ2MjAyYjc0MmIwMmMy
ZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC0yMjgsNiArMjI4LDcgQEAKICNp
bmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwIgogI2luY2x1ZGUgIkpTS2V5Ym9hcmRF
dmVudC5jcHAiCiAjaW5jbHVkZSAiSlNMb2NhdGlvbi5jcHAiCisjaW5jbHVkZSAiSlNNZWRpYUNv
bnRyb2xsZXIuY3BwIgogI2luY2x1ZGUgIkpTTWVkaWFFcnJvci5jcHAiCiAjaW5jbHVkZSAiSlNN
ZWRpYUxpc3QuY3BwIgogI2luY2x1ZGUgIkpTTWVkaWFRdWVyeUxpc3QuY3BwIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZTYwNzRjMWVkNzcxMzRlNWJjYmVhNmE5OGI1ZTE4ZGM5
OThhYTcwZi4uNDg0OTU2MjczNWYzYjYwMWY0ZGQ5NTA1ZTEwYWIyMWI3YTI4YjBjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yNzcsNiArMjc3LDcgQEAgRE9NX0NMQVNTRVMg
PSBcCiAgICAgS2V5Ym9hcmRFdmVudCBcCiAgICAgTG9jYXRpb24gXAogICAgIExvd1Bhc3MyRmls
dGVyTm9kZSBcCisgICAgTWVkaWFDb250cm9sbGVyIFwKICAgICBNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUgXAogICAgIE1lZGlhRXJyb3IgXAogICAgIE1lZGlhTGlzdCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5wcmkKaW5kZXggYzFmZDA1NDU5MWVjMDg4YzM4OWQwNGEzZGQ5ZTg1NTE2YTJm
OTZiZi4uODA0MDI0M2I2OTA4ZGI4MWM3MWM0MTQyMTUyZWUyODdkZGM4OGI0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtMzE0LDYgKzMxNCw3IEBAIElETF9CSU5ESU5HUyArPSBc
CiAgICAgaHRtbC9IVE1MVW5rbm93bkVsZW1lbnQuaWRsIFwKICAgICBodG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaWRsIFwKICAgICBodG1sL0ltYWdlRGF0YS5pZGwgXAorICAgIGh0bWwvTWVkaWFDb250
cm9sbGVyLmlkbCBcCiAgICAgaHRtbC9NZWRpYUVycm9yLmlkbCBcCiAgICAgaHRtbC9UZXh0TWV0
cmljcy5pZGwgXAogICAgIGh0bWwvVGltZVJhbmdlcy5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggN2U5ZGFmZmI5ZDcwNDI1NTc0ODQ2YzVmMTBkZjY4NzZkZmY0MWQwMC4u
ODg0OTExNWM5OTY1ZjA4OGZkOTVjMTk3ZTE1MTIyYWQzYWQ0MzYzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCkBAIC0zNTksNiArMzU5LDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2Vz
ICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTG9jYWxNZWRpYVN0cmVhbS5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTG9jYXRpb24uY3BwIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTTG9jYXRpb24uaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhQ29u
dHJvbGxlci5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUNvbnRyb2xsZXIu
aCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhRXJyb3IuY3BwIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTTWVkaWFFcnJvci5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTTWVkaWFMaXN0LmNwcCBcCkBAIC03ODksNiArNzkxLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20u
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0
b20uaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTGlua0VsZW1lbnRDdXN0
b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRD
dXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVt
ZW50Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0
RWxlbWVudEN1c3RvbS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRp
b25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgXApAQCAtMTg3NSw2ICsxODc4LDggQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtSZWxBdHRyaWJ1dGUuaCBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUNvbnRyb2xsZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRG9jdW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVy
cm9yLmggXApAQCAtMjQ1NSw2ICsyNDYwLDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0F1dG9kcmFpbmVkUG9vbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9jay5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrLmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0Nsb2NrR2VuZXJpYy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2Nr
R2VuZXJpYy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db2xvckNob29zZXIuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db2xvckNob29zZXIuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGNmYjQxZTk2NmU3
YzM3YjU3OGE0NTZjODExYzFiY2ZhN2RkNWM1ODIuLmU2ZDk2NDA1ZGQzZTEyZmVlZDQ1NjY3OGIz
NjEzZDk5NjVjMGU0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysr
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTkzLDYgKzE5Myw3IEBAIHY4IHsKICAg
ICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNw
cCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0b20u
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTExpbmtFbGVtZW50Q3VzdG9t
LmNwcCBcCisgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxNZWRpYUVsZW1lbnRDdXN0
b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0
aW9uQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPdXRwdXRF
bGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxQbHVn
SW5FbGVtZW50Q3VzdG9tLmNwcCBcCkBAIC0zMDMsNiArMzA0LDcgQEAgdjggewogICAgICAgICBi
aW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwIFwKICAgICAgICAgYmlu
ZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdz
L2pzL0pTSFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pT
SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxP
YmplY3RFbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTE9wdGlv
bnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTE91dHB1
dEVsZW1lbnRDdXN0b20uY3BwIFwKQEAgLTEwMTksNiArMTAyMSw4IEBAIFNPVVJDRVMgKz0gXAog
ICAgIHBsYXRmb3JtL3RleHQvTG9jYWxpemVkRGF0ZU5vbmUuY3BwIFwKICAgICBwbGF0Zm9ybS90
ZXh0L0xvY2FsaXplZE51bWJlck5vbmUuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L1F1b3RlZFBy
aW50YWJsZS5jcHAgXAorICAgIHBsYXRmb3JtL0Nsb2NrLmNwcCBcCisgICAgcGxhdGZvcm0vQ2xv
Y2tHZW5lcmljLmNwcCBcCiAgICAgcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIFwKICAgICBwbGF0
Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAgXAogICAgIHBsYXRmb3JtL0RhdGVDb21wb25lbnRz
LmNwcCBcCkBAIC0xMDI5LDcgKzEwMzMsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9G
aWxlSWNvbkxvYWRlci5jcHAgXAogICAgIHBsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwIFwKICAgICBw
bGF0Zm9ybS9GaWxlU3lzdGVtLmNwcCBcCi0gICAgcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmNwcCBc
CiAgICAgcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvcXQvSW1hZ2VGcmFtZVF0LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udERlc2NyaXB0aW9uLmNwcCBcCkBAIC0xODYzLDYgKzE4NjYsNyBAQCBIRUFERVJTICs9IFwK
ICAgICBodG1sL0xhYmVsc05vZGVMaXN0LmggXAogICAgIGh0bWwvTGlua1JlbEF0dHJpYnV0ZS5o
IFwKICAgICBodG1sL0xvYWRhYmxlVGV4dFRyYWNrLmggXAorICAgIGh0bWwvTWVkaWFDb250cm9s
bGVyLmggXAogICAgIGh0bWwvTWVkaWFEb2N1bWVudC5oIFwKICAgICBodG1sL01pY3JvRGF0YUl0
ZW1WYWx1ZS5oIFwKICAgICBodG1sL1BsdWdpbkRvY3VtZW50LmggXApAQCAtMjA1MCw2ICsyMDU0
LDggQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3Qu
aCBcCiAgICAgcGxhdGZvcm0vQXJlbmEuaCBcCiAgICAgcGxhdGZvcm0vQXN5bmNGaWxlU3RyZWFt
LmggXAorICAgIHBsYXRmb3JtL0Nsb2NrLmggXAorICAgIHBsYXRmb3JtL0Nsb2NrR2VuZXJpYy5o
IFwKICAgICBwbGF0Zm9ybS9Db250ZW50VHlwZS5oIFwKICAgICBwbGF0Zm9ybS9Db250ZXh0TWVu
dS5oIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oIFwKQEAgLTIwNjgsNyArMjA3
NCw2IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25TZXJ2aWNl
TW9jay5oIFwKICAgICBwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oIFwKICAg
ICBwbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5oIFwKLSAgICBwbGF0Zm9ybS9DbG9j
a0dlbmVyaWMuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUJsZW5kLmggXApAQCAtMzA5MCw2ICszMDk1LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX1ZJREVPPTEpIHsKICAgICAgICAgaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBcCiAgICAg
ICAgIGh0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwIFwKICAgICAgICAgaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcCBcCisgICAgICAgIGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcCBcCiAgICAgICAg
IGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBcCiAgICAgICAgIGh0bWwvVGlt
ZVJhbmdlcy5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IGM2MWFjZGVjZDU3Y2QwNGNlZGU4ZmExOTUyZjUyOWY3YTUz
YzFmY2UuLjQ1MGQxYjMzNjI2ZWQzNmMyZjY3MGJhOWVmNjkyMDAzMWEwMjM1YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTEzMzEsNiArMTMzMSw3IEBACiAgICAgICAgICAgICAnaHRtbC9IVE1MVW5r
bm93bkVsZW1lbnQuaWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRs
JywKICAgICAgICAgICAgICdodG1sL0ltYWdlRGF0YS5pZGwnLAorICAgICAgICAgICAgJ2h0bWwv
TWVkaWFDb250cm9sbGVyLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9NZWRpYUVycm9yLmlkbCcs
CiAgICAgICAgICAgICAnaHRtbC9UZXh0TWV0cmljcy5pZGwnLAogICAgICAgICAgICAgJ2h0bWwv
VGV4dFRyYWNrLmlkbCcsCkBAIC0xODc1LDYgKzE4NzYsNyBAQAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5oJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU0hUTUxMaW5rRWxlbWVudEN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCcsCkBAIC0yMTk3LDYgKzIxOTks
NyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRD
b25zdHJ1Y3Rvci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW5w
dXRFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPdXRwdXRFbGVtZW50Q3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFBsdWdJbkVsZW1lbnRDdXN0b20u
Y3BwJywKQEAgLTU2MDIsNiArNTYwNSw4IEBACiAgICAgICAgICAgICAnaHRtbC9MaW5rUmVsQXR0
cmlidXRlLmgnLAogICAgICAgICAgICAgJ2h0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwJywKICAg
ICAgICAgICAgICdodG1sL0xvYWRhYmxlVGV4dFRyYWNrLmgnLAorICAgICAgICAgICAgJ2h0bWwv
TWVkaWFDb250cm9sbGVyLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9NZWRpYUNvbnRyb2xsZXIu
aCcsCiAgICAgICAgICAgICAnaHRtbC9NZWRpYURvY3VtZW50LmNwcCcsCiAgICAgICAgICAgICAn
aHRtbC9NZWRpYURvY3VtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvTWVkaWFFcnJvci5oJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMWYx
MzA3YjQ4ZWIyODQ5OGRjMDc3YTRhZDMxY2ViN2ExMDM0MjQzNy4uYjAwZjNhMzAxMjU1MDdjNTdm
ZjI0NjUwNTRhYTQ4NmJiZGZiZGUxMyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI2MjYyLDYgKzI2MjYyLDIyIEBACiAJCQkJPgogCQkJPC9G
aWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXENsb2NrLmNwcCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZv
cm1cQ2xvY2suaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cQ2xvY2tHZW5lcmljLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cQ2xvY2tHZW5lcmljLmgiCisJCQkJ
PgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXENv
bnRlbnRUeXBlLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC01NzcxOCw2ICs1NzczNCwxNCBA
QAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1s
XE1lZGlhQ29udHJvbGxlci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTWVkaWFDb250cm9sbGVyLmgiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTWVkaWFEb2N1bWVudC5jcHAi
CiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYwZmZmZGE3NDY2MDMxOGNkNmNlY2RiZjQwZmQxZDg1
ZTVlNzcyMTIuLmFjYzI2YzVhYmQ1M2M4OTg5MGNjYjY4NjQ3NjM1YzMyNWFmZmE2MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTU3MTUsMTcgKzU3MTUsMjIgQEAKIAkJQ0QwREJGRUUxNDIyNzY4NTAwMjgwMjYzIC8qIElSQ19D
b21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUud2F2IGluIENvcHkgQXVkaW8gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMERCRTBEMTQyMjc1OTUwMDI4MDI2
MyAvKiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1LndhdiAqLzsgfTsKIAkJQ0QwREJG
RUYxNDIyNzY4NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMzAud2F2
IGluIENvcHkgQXVkaW8gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEMERCRTBFMTQyMjc1OTUwMDI4MDI2MyAvKiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0
NV9QMzMwLndhdiAqLzsgfTsKIAkJQ0QwREJGRjAxNDIyNzY4NTAwMjgwMjYzIC8qIElSQ19Db21w
b3NpdGVfQ19SMDE5NV9UMzQ1X1AzNDUud2F2IGluIENvcHkgQXVkaW8gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMERCRTBGMTQyMjc1OTUwMDI4MDI2MyAv
KiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzQ1LndhdiAqLzsgfTsKKwkJQ0QyN0Y2RTUx
NDU3Njg1QTAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkUyMTQ1NzY3NTgwMDc4MjA3RCAv
KiBKU01lZGlhQ29udHJvbGxlci5jcHAgKi87IH07CisJCUNEMjdGNkU3MTQ1NzcwRDMwMDc4MjA3
RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTYxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxl
ci5jcHAgKi87IH07CiAJCUNEODIwMzBBMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUNEODIwMzBCMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4
MjAzMDcxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0g
Ki87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8tdW5kZWYiOyB9OyB9OwogCQlD
RDgyMDMwQzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0Q4MjAzMDgxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0Nv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDRDgyMDMwRDEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2lu
ZG93Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEODIwMzA5MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURX
aW5kb3dDb250cm9sbGVyLm1tICovOyB9OwogCQlDRDgyMDMxMDEzOTVBQ0U3MDBGOTU2QzYgLyog
V2ViV2luZG93QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDgyMDMwRTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9u
LmggKi87IH07CiAJCUNEODIwMzExMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRp
b24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgy
MDMwRjEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLm1tICovOyB9OworCQlD
REQ1MjVENzE0NUI2REQwMDA4RDIwNEQgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjY1Q0NDMTQ1
QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlD
REVBNzYzMDE0NjA4QTUzMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjJFMTQ2MDg0REUwMDhC
MzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovOyB9OwogCQlDREVBNzYzNDE0NjBCNTZGMDA4
QjMxRjEgLyogQ2xvY2tHZW5lcmljLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENERUE3NjMyMTQ2MEFFMjkwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMu
Y3BwICovOyB9OwogCQlDREVBNzYzNTE0NjBCNzFBMDA4QjMxRjEgLyogQ2xvY2suY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MzMxNDYwQjQ2
MjAwOEIzMUYxIC8qIENsb2NrLmNwcCAqLzsgfTsKIAkJQ0RFQTdDODQxMjc2MjMwNDAwQjg0NkRE
IC8qIFJlbmRlckZ1bGxTY3JlZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENERUE3QzgyMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVu
LmggKi87IH07CiAJCUNERUE3Qzg1MTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVu
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3
QzgzMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmNwcCAqLzsgfTsKKwkJQ0RG
NjVDQzgxNDVCMUU3NTAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTQxNDU3Njc4NzAwNzgyMDdE
IC8qIE1lZGlhQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUNERjY1Q0NBMTQ1QjQ0ODgwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xs
ZXJJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERjY1Q0M5MTQ1QjQzQTcwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTAy
RjBDNDExRTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDJGMEMzMTFFODNBREQwMEM2
Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMDU3RkE1MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0UwNTdGQTMxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5jcHAgKi87IH07CiAJCUNFMDU3RkE2MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFMDU3RkE0MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTMwMjksNiArMTMwMzQsMTEgQEAKIAkJQ0QwREJFMEQxNDIyNzU5NTAwMjgwMjYzIC8q
IElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUud2F2ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXVkaW8ud2F2OyBuYW1lID0gSVJDX0NvbXBv
c2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXY7IHBhdGggPSBwbGF0Zm9ybS9hdWRpby9yZXNvdXJj
ZXMvSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXY7IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKIAkJQ0QwREJFMEUxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVf
Q19SMDE5NV9UMzQ1X1AzMzAud2F2ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gYXVkaW8ud2F2OyBuYW1lID0gSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1Qz
NDVfUDMzMC53YXY7IHBhdGggPSBwbGF0Zm9ybS9hdWRpby9yZXNvdXJjZXMvSVJDX0NvbXBvc2l0
ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXY7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJ
Q0QwREJFMEYxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1Az
NDUud2F2ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
YXVkaW8ud2F2OyBuYW1lID0gSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXY7IHBh
dGggPSBwbGF0Zm9ybS9hdWRpby9yZXNvdXJjZXMvSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVf
UDM0NS53YXY7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJQ0QyN0Y2RTAxNDU3NUMx
QjAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFDb250cm9sbGVyLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdE
IC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTTWVkaWFDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0QyN0Y2RTMxNDU3Njc1ODAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFDb250cm9sbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjdGNkU0MTQ1NzY3ODcwMDc4MjA3RCAvKiBNZWRpYUNv
bnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjdGNkU2MTQ1NzcwRDMwMDc4
MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWVkaWFDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8qIGZ1bGxzY3JlZW4uY3NzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0Q4MjAzMDYxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDgyMDMwNzEz
OTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzAzNyw2ICsxMzA0Nyw4
IEBACiAJCUNEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViV2luZG93QW5pbWF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBX
ZWJXaW5kb3dBbmltYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJXaW5kb3dBbmltYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEQkQ5M0JBMTMzM0JENEIwMDI1NzBFMyAvKiBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlblF1aWNrVGltZS5jc3M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQ0U1Q0NGMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudEZh
Y3RvcnkuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXZlbnRGYWN0b3J5LmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDRENFNUNEMDE0NjMzQkM5MDBENDdDQ0EgLyogRXZlbnRU
YXJnZXRGYWN0b3J5LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEV2ZW50VGFyZ2V0RmFjdG9y
eS5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTc2MkMxNDYwODIyNDAwOEIz
MUYxIC8qIENsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsb2NrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3NjJFMTQ2MDg0REUwMDhCMzFGMSAv
KiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGxhdGZvcm1DbG9ja0NBLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RF
QTc2MkYxNDYwODRFRTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ0EuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzMDQ1LDYgKzEzMDU3LDggQEAKIAkJQ0RFQTc2MzMxNDYwQjQ2MjAwOEIz
MUYxIC8qIENsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENs
b2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTdDODIxMjc2MjMwNDAw
Qjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyRnVsbFNjcmVlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
REVBN0M4MzEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJGdWxsU2NyZWVuLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RGNjVDQzkxNDVCNDNBNzAwQzRDN0FBIC8qIE1lZGlh
Q29udHJvbGxlckludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxNZWRpYUVsZW1lbnRD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTAyRjBDMzExRTgzQURE
MDBDNjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2NyaXB0Q29udHJvbGxlckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0UwNTdGQTMxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJv
bGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTA1N0ZB
NDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTczODcsNiArMTc0MDEsMTAgQEAKIAkJCQlFNDQ2
MTNBMDBDRDYzMzEwMDBGQURBNzUgLyogVm9pZENhbGxiYWNrLmlkbCAqLywKIAkJCQlGNTVCM0RB
QjEyNTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0VHlwZS5jcHAgKi8sCiAJCQkJRjU1QjNEQUMx
MjUxRjEyRDAwM0VGMjY5IC8qIFdlZWtJbnB1dFR5cGUuaCAqLywKKwkJCQlDRDI3RjZFMDE0NTc1
QzFCMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmlkbCAqLywKKwkJCQlDRDI3RjZFNDE0NTc2
Nzg3MDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmggKi8sCisJCQkJQ0QyN0Y2RTYxNDU3NzBE
MzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgKi8sCisJCQkJQ0RGNjVDQzkxNDVCNDNB
NzAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oICovLAogCQkJKTsKIAkJCXBh
dGggPSBodG1sOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE3NjIwLDYgKzE3NjM4
LDggQEAKIAkJQTgzQjc5MDgwQ0NBRkYyQjAwMEIwODI1IC8qIEhUTUwgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNEMjdGNkUyMTQ1NzY3NTgwMDc4MjA3
RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAgKi8sCisJCQkJQ0QyN0Y2RTMxNDU3Njc1ODAwNzgy
MDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmggKi8sCiAJCQkJNDlFRUNFRjIxMDUwNzBDNDAwMDk5
RkFCIC8qIEpTQXJyYXlCdWZmZXIuY3BwICovLAogCQkJCTQ5RUVDRUYzMTA1MDcwQzQwMDA5OUZB
QiAvKiBKU0FycmF5QnVmZmVyLmggKi8sCiAJCQkJNDlFRUNGMTkxMDUwNzJGMzAwMDk5RkFCIC8q
IEpTQXJyYXlCdWZmZXJWaWV3LmNwcCAqLywKQEAgLTE5NjQyLDYgKzE5NjYyLDcgQEAKIAkJCQlC
Q0M0Mzg3NzBFODg2Q0M3MDA1MzNERDUgLyogSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCAq
LywKIAkJCQlFMUFEMTQyMjEyOTVFQTdGMDBBQ0E5ODkgLyogSlNIVE1MSW5wdXRFbGVtZW50Q3Vz
dG9tLmggKi8sCiAJCQkJRTFBRDEzOUExMjk1RDkyNjAwQUNBOTg5IC8qIEpTSFRNTExpbmtFbGVt
ZW50Q3VzdG9tLmNwcCAqLywKKwkJCQlDREY2NUNDQzE0NUI2QUZFMDBDNEM3QUEgLyogSlNIVE1M
TWVkaWFFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzMwNUNBMzBDMDc4MUJCMDBDRDIwRjAg
LyogSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJRTFBRDE0MjQxMjk1RUE5
NTAwQUNBOTg5IC8qIEpTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uaCAqLywKIAkJCQk0NDhBRDI3
QTBBNDgxMzc5MDAyM0QxNzkgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwICov
LApAQCAtMjA5NTcsNiArMjA5NzgsOCBAQAogCQlGNTIzRDMyNDAyREU0NDc4MDE4NjM1Q0EgLyog
ZG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDRENF
NUNDRjE0NjMzQkM5MDBENDdDQ0EgLyogRXZlbnRGYWN0b3J5LmluICovLAorCQkJCUNEQ0U1Q0Qw
MTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudFRhcmdldEZhY3RvcnkuaW4gKi8sCiAJCQkJRTFDNERF
NkQwRUE3NUM2NTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5jcHAgKi8sCiAJCQkJRTFDNERF
NjgwRUE3NUMxRTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5oICovLAogCQkJCUE4QzRBN0ZD
MDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmNwcCAqLywKQEAgLTI0NjUzLDYgKzI0Njc2LDggQEAK
IAkJCQk5NzREMkRBNTE0NkE1MzVEMDBENTFGOEIgLyogU2VjdXJpdHlQb2xpY3kuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTcxNTM3QTAxMTQ2QkQ5RDcwMDhCRDYxNSAvKiBTVkdQYXRoRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzEzMTNGNjYxNDQzQjM1RjAwNkUyQTkwIC8qIEZpbHRlckVmZmVj
dFJlbmRlcmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREY2NUNDODE0NUIxRTc1MDBDNEM3QUEg
LyogTWVkaWFDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREY2NUNDQTE0NUI0NDg4
MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAg
LTI3NTA5LDYgKzI3NTM0LDkgQEAKIAkJCQlDQUU5RjkwRjE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NT
QXNwZWN0UmF0aW9WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREVBNzYzMDE0NjA4QTUz
MDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERUE3
NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0QyN0Y2RTUxNDU3Njg1QTAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUNEMjdGNkU3MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RENTI1RDcxNDVCNkREMDAwOEQyMDREIC8qIEpT
SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREVBNzYzNTE0
NjBCNzFBMDA4QjMxRjEgLyogQ2xvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc2RjM2RUEx
NDY4NjIyNTAwNUU5M0I0IC8qIFNlY3VyaXR5Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3MTM0NDk2RDE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCmluZGV4IDFhMzUzN2QxMzhiNjYzMTA2NWJhODcw
ZjJiZDFmNDY2N2RiMWU0YmUuLjAyMzU5NDkyZDY3NWUxZmIxYTA5ZTM0MWIzZGQ4NGI5NWQyMTE5
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9S
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcApAQCAtMTEzLDYgKzExMywxMSBAQCBib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6Omh0bWxTb3VyY2VFbGVtZW50RW5hYmxlZCgpCiAgICAgcmV0dXJu
IE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOwogfQogCitib29sIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6Om1lZGlhQ29udHJvbGxlckVuYWJsZWQoKQoreworICAgIHJldHVybiBNZWRpYVBsYXll
cjo6aXNBdmFpbGFibGUoKTsKK30KKwogYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjptZWRp
YUVycm9yRW5hYmxlZCgpCiB7CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaAppbmRleCA4MDAxYjdhNzBmMzkxYTU1NWZlY2M2MDYzNGYwZGQ3YTBm
NzZhM2Q2Li5jM2E5YzYwMmVkMDdmZWQ5NTgyMzZhMGYyY2M0ZjMxNTQ5NjEwNWRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaApAQCAtOTQsNiArOTQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaHRt
bEF1ZGlvRWxlbWVudEVuYWJsZWQoKTsKICAgICBzdGF0aWMgYm9vbCBodG1sVmlkZW9FbGVtZW50
RW5hYmxlZCgpOwogICAgIHN0YXRpYyBib29sIGh0bWxTb3VyY2VFbGVtZW50RW5hYmxlZCgpOwor
ICAgIHN0YXRpYyBib29sIG1lZGlhQ29udHJvbGxlckVuYWJsZWQoKTsKICAgICBzdGF0aWMgYm9v
bCBtZWRpYUVycm9yRW5hYmxlZCgpOwogICAgIHN0YXRpYyBib29sIHRpbWVSYW5nZXNFbmFibGVk
KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwCmluZGV4IDAwMGM1YmZhN2Y0MzQ5NzFmYjdmNDExYzA1ZDMxYmY2Y2QzYWM1
MWMuLmNmZGQ2MmI1OTc4MGMwMTJiNTYwYmQxMDY3NmM0ZDdmMjdhODliMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtOTIs
NiArOTIsNyBAQAogI2luY2x1ZGUgIkpTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAiCiAj
aW5jbHVkZSAiSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxM
aW5rRWxlbWVudEN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9t
LmNwcCIKICNpbmNsdWRlICJKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRl
ICJKU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MT3V0
cHV0RWxlbWVudEN1c3RvbS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDEyNzUwMTE1
OTczYTc4YWU0YzlhNjEyNDIzMDM2ZmQ2YmM1MTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcApAQCAtMCww
ICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgIkpTSFRN
TE1lZGlhRWxlbWVudC5oIgorCisjaW5jbHVkZSAiSlNNZWRpYUNvbnRyb2xsZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCit2b2lkIEpTSFRNTE1l
ZGlhRWxlbWVudDo6c2V0Q29udHJvbGxlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIHZhbHVlKQorewor
ICAgIEhUTUxNZWRpYUVsZW1lbnQqIGltcCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQq
PihpbXBsKCkpOworICAgIC8vIE9uIHNldHRpbmcsIGl0IG11c3QgZmlyc3QgcmVtb3ZlIHRoZSBl
bGVtZW50J3MgbWVkaWFncm91cCBhdHRyaWJ1dGUsIGlmIGFueSwgCisgICAgaW1wLT5zZXRNZWRp
YUdyb3VwKFN0cmluZygpKTsKKyAgICAvLyBhbmQgdGhlbiBzZXQgdGhlIGN1cnJlbnQgbWVkaWEg
Y29udHJvbGxlciB0byB0aGUgZ2l2ZW4gdmFsdWUuCisgICAgaW1wLT5zZXRDb250cm9sbGVyKHRv
TWVkaWFDb250cm9sbGVyKHZhbHVlKSk7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTWVkaWFFbGVtZW50
Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzMxNTJkZDZhMDI0YmRjODFkYTNkMjJjODM3NDlhNTJm
ZmUzMjcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgIlY4SFRNTE1lZGlhRWxlbWVudC5o
IgorCisjaW5jbHVkZSAiVjhNZWRpYUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJWOFByb3h5Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBWOEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
Q29udHJvbGxlckFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBJTkNfU1RBVFMoIkRPTS5IVE1MTWVkaWFFbGVtZW50Lm1lZGlhQ29udHJvbGxlci5fc2V0
Iik7CisgICAgSFRNTE1lZGlhRWxlbWVudCogaW1wID0gVjhIVE1MTWVkaWFFbGVtZW50Ojp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSAw
OworICAgIGlmIChWOE1lZGlhQ29udHJvbGxlcjo6SGFzSW5zdGFuY2UodmFsdWUpKQorICAgICAg
ICBjb250cm9sbGVyID0gVjhNZWRpYUNvbnRyb2xsZXI6OnRvTmF0aXZlKHZhbHVlLT5Ub09iamVj
dCgpKTsKKyAgICAKKyAgICBpZiAoIWNvbnRyb2xsZXIpIHsKKyAgICAgICAgdGhyb3dFcnJvcigi
VmFsdWUgaXMgbm90IG9mIHR5cGUgTWVkaWFDb250cm9sbGVyIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpbXAtPnNldENvbnRyb2xsZXIoY29udHJvbGxlcik7Cit9CisKK30KKwor
I2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggYzZmMWYzZDQ0M2I4NWI2ZjY0
MjBjZWVjOTRiZWZiMjI3ODYyZDQ0Ni4uYmFmMGVmYzg5ZDRhZGVhYWIzMWM3MjMzMGY4ZDE1ZGUx
OWQ5ODhlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTU1LDYgKzU1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OwogICAg
IGNsYXNzIEphdmFTY3JpcHRBdWRpb05vZGU7CiAgICAgY2xhc3MgTG9jYWxNZWRpYVN0cmVhbTsK
KyAgICBjbGFzcyBNZWRpYUNvbnRyb2xsZXI7CiAgICAgY2xhc3MgTWVkaWFTdHJlYW07CiAgICAg
Y2xhc3MgTWVzc2FnZVBvcnQ7CiAgICAgY2xhc3MgTm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IDZiZGIyZTIxY2E5NmIzZTEwZDNiZTFjNzFlZjczMGQy
N2YwMGQ5MWQuLjJhMzg5MDM1N2JhZjllOTY2YTdmMTM3MTRkNjEwZWY3ZGUxMDg0YTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtMTMsNiArMTMsNyBAQCBJ
REJUcmFuc2FjdGlvbiBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJWZXJzaW9uQ2hh
bmdlUmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBKYXZhU2NyaXB0QXVkaW9O
b2RlIGNvbmRpdGlvbmFsPVdFQl9BVURJTwogTG9jYWxNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1N
RURJQV9TVFJFQU0KK01lZGlhQ29udHJvbGxlciBjb25kaXRpb25hbD1WSURFTwogTWVkaWFTdHJl
YW0gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBNZXNzYWdlUG9ydAogTm9kZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRleCBmMWUzNTRiNjMxZjQ5YmEzYWMx
MDFlNTUxM2QyNzVhYzVkMmQwOTgyLi5hZTVmYjcxY2VlZTg2NDA5ODM2ZmUyZDUwMWVjM2ZhOTkw
YmEzNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1l
cy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAt
MTQ4LDYgKzE0OCw3IEBAIG1heAogbWF4bGVuZ3RoCiBtYXlzY3JpcHQKIG1lZGlhCittZWRpYWdy
b3VwCiBtZXRob2QKIG1pbgogbXVsdGlwbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCmluZGV4IGMwMGM2NDA1OWU0MzQyZmVhOTU3NmZlOTZhYTllNjA3ZDJmZTFkN2Iu
LjM2YTU4NmNkZjZhZmNlYThjNzA4YmRkMTI4ZmE5ZTljMWFlN2VmOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUg
IkhUTUxTb3VyY2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJNZWRpYUNvbnRyb2xzLmgiCiAjaW5jbHVkZSAiTWVkaWFEb2N1bWVudC5oIgogI2luY2x1ZGUg
Ik1lZGlhRXJyb3IuaCIKQEAgLTEzNiw2ICsxMzcsMzEgQEAgc3RhdGljIGNvbnN0IGNoYXIqIG1l
ZGlhU291cmNlVVJMUHJvdG9jb2wgPSAieC1tZWRpYS1zb3VyY2UiOwogI2VuZGlmCiAKIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOworCit0eXBlZGVmIEhh
c2hNYXA8RG9jdW1lbnQqLCBIYXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPiA+IERvY0VsZW1lbnRT
ZXRNYXA7CitzdGF0aWMgRG9jRWxlbWVudFNldE1hcCYgZG9jdW1lbnRUb0VsZW1lbnRTZXRNYXAo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRG9jRWxlbWVudFNldE1hcCwgbWFwLCAoKSk7
CisgICAgcmV0dXJuIG1hcDsKK30KKworc3RhdGljIHZvaWQgYWRkRWxlbWVudFRvRG9jdW1lbnRN
YXAoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCwgRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAg
IERvY0VsZW1lbnRTZXRNYXAmIG1hcCA9IGRvY3VtZW50VG9FbGVtZW50U2V0TWFwKCk7CisgICAg
SGFzaFNldDxIVE1MTWVkaWFFbGVtZW50Kj4gc2V0ID0gbWFwLnRha2UoZG9jdW1lbnQpOworICAg
IHNldC5hZGQoZWxlbWVudCk7CisgICAgbWFwLmFkZChkb2N1bWVudCwgc2V0KTsKK30KKworc3Rh
dGljIHZvaWQgcmVtb3ZlRWxlbWVudEZyb21Eb2N1bWVudE1hcChIVE1MTWVkaWFFbGVtZW50KiBl
bGVtZW50LCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgRG9jRWxlbWVudFNldE1hcCYgbWFw
ID0gZG9jdW1lbnRUb0VsZW1lbnRTZXRNYXAoKTsKKyAgICBIYXNoU2V0PEhUTUxNZWRpYUVsZW1l
bnQqPiBzZXQgPSBtYXAudGFrZShkb2N1bWVudCk7CisgICAgc2V0LnJlbW92ZShlbGVtZW50KTsK
KyAgICBpZiAoIXNldC5pc0VtcHR5KCkpCisgICAgICAgIG1hcC5hZGQoZG9jdW1lbnQsIHNldCk7
Cit9CiAKIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCkBAIC0yMTMsNiArMjM5LDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRN
TE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW0KICNlbmRpZgogCiAgICAgc2V0SGFzQ3VzdG9tV2lsbE9yRGlkUmVjYWxjU3R5bGUoKTsKKyAg
ICBhZGRFbGVtZW50VG9Eb2N1bWVudE1hcCh0aGlzLCBkb2N1bWVudCk7CiB9CiAKIEhUTUxNZWRp
YUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKQEAgLTIyOCw2ICsyNTUsMTEgQEAgSFRNTE1l
ZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX3RleHRUcmFja3Muc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fdGV4dFRyYWNrc1tpXS0+
c2V0Q2xpZW50KDApOwogI2VuZGlmCisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAg
ICAgIG1fbWVkaWFDb250cm9sbGVyLT5yZW1vdmVNZWRpYUVsZW1lbnQodGhpcyk7CisKKyAgICBy
ZW1vdmVFbGVtZW50RnJvbURvY3VtZW50TWFwKHRoaXMsIGRvY3VtZW50KCkpOwogfQogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKQEAgLTIzNyw2
ICsyNjksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KCkKICAgICBzZXRTaG91bGREZWxheUxvYWRFdmVudChmYWxzZSk7CiAgICAgZG9jdW1lbnQo
KS0+dW5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyh0aGlzKTsKICAgICBk
b2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yTWVkaWFWb2x1bWVDYWxsYmFja3ModGhpcyk7CisgICAg
cmVtb3ZlRWxlbWVudEZyb21Eb2N1bWVudE1hcCh0aGlzLCBkb2N1bWVudCgpKTsKICAgICBIVE1M
RWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKIH0KIApAQCAtMjQ4LDYgKzI4
MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgp
CiAgICAgICAgIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KHRydWUpOwogICAgIGRvY3VtZW50KCkt
PnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOwogICAgIGRvY3Vt
ZW50KCktPnJlZ2lzdGVyRm9yTWVkaWFWb2x1bWVDYWxsYmFja3ModGhpcyk7CisgICAgYWRkRWxl
bWVudFRvRG9jdW1lbnRNYXAodGhpcywgZG9jdW1lbnQoKSk7CiAgICAgSFRNTEVsZW1lbnQ6OmRp
ZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKIH0KIApAQCAtMjk0LDcgKzMyOCw5IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQog
ICAgICAgICBpZiAoIWF1dG9wbGF5KCkgJiYgbV9wbGF5ZXIpCiAgICAgICAgICAgICBtX3BsYXll
ci0+c2V0UHJlbG9hZChtX3ByZWxvYWQpOwogCi0gICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBv
bmFib3J0QXR0cikKKyAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IG1lZGlhZ3JvdXBBdHRyKQor
ICAgICAgICBzZXRNZWRpYUdyb3VwKGF0dHItPnZhbHVlKCkpOworICAgIGVsc2UgaWYgKGF0dHJO
YW1lID09IG9uYWJvcnRBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5hYm9ydEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMs
IGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmJlZm9yZWxvYWRBdHRyKQogICAg
ICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVsb2FkRXZl
bnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwpAQCAtNTg0LDEw
ICs2MjAsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCgpCiAgICAg
ICAgIG1fc2Vla2luZyA9IGZhbHNlOwogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVkVGltZSgpOwog
ICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5lbXB0aWVkRXZlbnQpOworICAgICAg
ICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKICAgICB9CiAKICAgICAvLyA1IC0gU2V0IHRoZSBw
bGF5YmFja1JhdGUgYXR0cmlidXRlIHRvIHRoZSB2YWx1ZSBvZiB0aGUgZGVmYXVsdFBsYXliYWNr
UmF0ZSBhdHRyaWJ1dGUuCi0gICAgc2V0UGxheWJhY2tSYXRlKGRlZmF1bHRQbGF5YmFja1JhdGUo
KSk7CisgICAgc2V0UGxheWJhY2tSYXRlKG1fbWVkaWFDb250cm9sbGVyID8gbV9tZWRpYUNvbnRy
b2xsZXItPmRlZmF1bHRQbGF5YmFja1JhdGUoKSA6IGRlZmF1bHRQbGF5YmFja1JhdGUoKSk7CiAK
ICAgICAvLyA2IC0gU2V0IHRoZSBlcnJvciBhdHRyaWJ1dGUgdG8gbnVsbCBhbmQgdGhlIGF1dG9w
bGF5aW5nIGZsYWcgdG8gdHJ1ZS4KICAgICBtX2Vycm9yID0gMDsKQEAgLTEyMjQsNiArMTI2MSw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSBzdGF0ZSkKICAgICB9CiAKICAgICB1cGRhdGVQbGF5U3RhdGUoKTsKKyAgICB1cGRh
dGVNZWRpYUNvbnRyb2xsZXIoKTsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCkBAIC0x
NTIzLDYgKzE1NjEsMTAgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudFRpbWUoKSBj
b25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRpbWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikgeworICAg
ICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQogICAg
IHNlZWsodGltZSwgZWMpOwogfQogCkBAIC0xNTc0LDEzICsxNjE2LDE0IEBAIGZsb2F0IEhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNldFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRp
YUVsZW1lbnQ6OnNldFBsYXliYWNrUmF0ZSglZikiLCByYXRlKTsKLQorICAgIAogICAgIGlmICht
X3BsYXliYWNrUmF0ZSAhPSByYXRlKSB7CiAgICAgICAgIG1fcGxheWJhY2tSYXRlID0gcmF0ZTsK
ICAgICAgICAgaW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChl
dmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50KTsKICAgICB9Ci0gICAgaWYgKG1fcGxheWVyICYm
IHBvdGVudGlhbGx5UGxheWluZygpICYmIG1fcGxheWVyLT5yYXRlKCkgIT0gcmF0ZSkKKworICAg
IGlmIChtX3BsYXllciAmJiBwb3RlbnRpYWxseVBsYXlpbmcoKSAmJiBtX3BsYXllci0+cmF0ZSgp
ICE9IHJhdGUgJiYgIW1fbWVkaWFDb250cm9sbGVyKQogICAgICAgICBtX3BsYXllci0+c2V0UmF0
ZShyYXRlKTsKIH0KIApAQCAtMTY3Niw3ICsxNzE5LDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cGxheUludGVybmFsKCkKICAgICAgICAgRXhjZXB0aW9uQ29kZSB1bnVzZWQ7CiAgICAgICAg
IHNlZWsoMCwgdW51c2VkKTsKICAgICB9Ci0gICAgCisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xs
ZXIpCisgICAgICAgIG1fbWVkaWFDb250cm9sbGVyLT5icmluZ0VsZW1lbnRVcFRvU3BlZWQodGhp
cyk7CisKICAgICBpZiAobV9wYXVzZWQpIHsKICAgICAgICAgbV9wYXVzZWQgPSBmYWxzZTsKICAg
ICAgICAgaW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKQEAgLTE2OTAsNiArMTczNiw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkKICAgICBtX2F1dG9wbGF5aW5nID0gZmFs
c2U7CiAKICAgICB1cGRhdGVQbGF5U3RhdGUoKTsKKyAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIo
KTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZSgpCkBAIC0xODgxLDcgKzE5Mjgs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSgpCiAgICAgLy8gV2Ug
Y2FuIHNhZmVseSBjYWxsIHRoZSBpbnRlcm5hbCBwbGF5L3BhdXNlIG1ldGhvZHMsIHdoaWNoIGRv
bid0IGNoZWNrIHJlc3RyaWN0aW9ucywgYmVjYXVzZQogICAgIC8vIHRoaXMgbWV0aG9kIGlzIG9u
bHkgY2FsbGVkIGZyb20gdGhlIGJ1aWx0LWluIG1lZGlhIGNvbnRyb2xsZXIKICAgICBpZiAoY2Fu
UGxheSgpKSB7Ci0gICAgICAgIHNldFBsYXliYWNrUmF0ZShkZWZhdWx0UGxheWJhY2tSYXRlKCkp
OworICAgICAgICBzZXRQbGF5YmFja1JhdGUobV9tZWRpYUNvbnRyb2xsZXIgPyBtX21lZGlhQ29u
dHJvbGxlci0+ZGVmYXVsdFBsYXliYWNrUmF0ZSgpIDogZGVmYXVsdFBsYXliYWNrUmF0ZSgpKTsK
ICAgICAgICAgcGxheUludGVybmFsKCk7CiAgICAgfSBlbHNlIAogICAgICAgICBwYXVzZUludGVy
bmFsKCk7CkBAIC0yMjI5LDIwICsyMjc2LDMzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJUaW1lQ2hhbmdlZChNZWRpYVBsYXllciopCiAKICAgICBmbG9hdCBub3cgPSBjdXJy
ZW50VGltZSgpOwogICAgIGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7Ci0gICAgaWYgKCFpc25hbihk
dXIpICYmIGR1ciAmJiBub3cgPj0gZHVyKSB7Ci0gICAgICAgIGlmIChsb29wKCkpIHsKKyAgICAK
KyAgICAvLyBXaGVuIHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIHJlYWNoZXMgdGhlIGVu
ZCBvZiB0aGUgbWVkaWEgcmVzb3VyY2Ugd2hlbiB0aGUgZGlyZWN0aW9uIG9mCisgICAgLy8gcGxh
eWJhY2sgaXMgZm9yd2FyZHMsIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCBmb2xsb3cgdGhlc2Ug
c3RlcHM6CisgICAgaWYgKCFpc25hbihkdXIpICYmIGR1ciAmJiBub3cgPj0gZHVyICYmIG1fcGxh
eWJhY2tSYXRlID4gMCkgeworICAgICAgICAvLyBJZiB0aGUgbWVkaWEgZWxlbWVudCBoYXMgYSBs
b29wIGF0dHJpYnV0ZSBzcGVjaWZpZWQgYW5kIGRvZXMgbm90IGhhdmUgYSBjdXJyZW50IG1lZGlh
IGNvbnRyb2xsZXIsCisgICAgICAgIGlmIChsb29wKCkgJiYgIW1fbWVkaWFDb250cm9sbGVyKSB7
CiAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRFeGNlcHRpb247CiAgICAgICAgICAg
ICBtX3NlbnRFbmRFdmVudCA9IGZhbHNlOworICAgICAgICAgICAgLy8gIHRoZW4gc2VlayB0byB0
aGUgZWFybGllc3QgcG9zc2libGUgcG9zaXRpb24gb2YgdGhlIG1lZGlhIHJlc291cmNlIGFuZCBh
Ym9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgICAgIHNlZWsoMCwgaWdub3JlZEV4Y2VwdGlvbik7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIW1fcGF1c2VkKSB7CisgICAgICAg
ICAgICAvLyBJZiB0aGUgbWVkaWEgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgY3VycmVudCBtZWRp
YSBjb250cm9sbGVyLCBhbmQgdGhlIG1lZGlhIGVsZW1lbnQKKyAgICAgICAgICAgIC8vIGhhcyBz
dGlsbCBlbmRlZCBwbGF5YmFjaywgYW5kIHRoZSBkaXJlY3Rpb24gb2YgcGxheWJhY2sgaXMgc3Rp
bGwgZm9yd2FyZHMsIGFuZCBwYXVzZWQKKyAgICAgICAgICAgIC8vIGlzIGZhbHNlLAorICAgICAg
ICAgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlciAmJiAhbV9wYXVzZWQpIHsKKyAgICAgICAgICAg
ICAgICAvLyBjaGFuZ2VzIHBhdXNlZCB0byB0cnVlIGFuZCBmaXJlcyBhIHNpbXBsZSBldmVudCBu
YW1lZCBwYXVzZSBhdCB0aGUgbWVkaWEgZWxlbWVudC4KICAgICAgICAgICAgICAgICBtX3BhdXNl
ZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGF1
c2VFdmVudCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBRdWV1ZSBhIHRhc2sgdG8g
ZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBlbmRlZCBhdCB0aGUgbWVkaWEgZWxlbWVudC4KICAg
ICAgICAgICAgIGlmICghbV9zZW50RW5kRXZlbnQpIHsKICAgICAgICAgICAgICAgICBtX3NlbnRF
bmRFdmVudCA9IHRydWU7CiAgICAgICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVz
KCkuZW5kZWRFdmVudCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBJZiB0aGUgbWVk
aWEgZWxlbWVudCBoYXMgYSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIsIHRoZW4gcmVwb3J0IHRo
ZSBjb250cm9sbGVyIHN0YXRlCisgICAgICAgICAgICAvLyBmb3IgdGhlIG1lZGlhIGVsZW1lbnQn
cyBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIuCisgICAgICAgICAgICB1cGRhdGVNZWRpYUNvbnRy
b2xsZXIoKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCkBAIC0yNDI2LDEwICsyNDg2LDcg
QEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBIVE1MTWVkaWFFbGVtZW50OjpwbGF5ZWQoKQogCiBQ
YXNzUmVmUHRyPFRpbWVSYW5nZXM+IEhUTUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKCkgY29uc3QK
IHsKLSAgICAvLyBGSVhNRSByZWFsIHJhbmdlcyBzdXBwb3J0Ci0gICAgaWYgKCFtYXhUaW1lU2Vl
a2FibGUoKSkKLSAgICAgICAgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwotICAgIHJldHVy
biBUaW1lUmFuZ2VzOjpjcmVhdGUobWluVGltZVNlZWthYmxlKCksIG1heFRpbWVTZWVrYWJsZSgp
KTsKKyAgICByZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+c2Vla2FibGUoKSA6IFRpbWVSYW5n
ZXM6OmNyZWF0ZSgpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxh
eWluZygpIGNvbnN0CkBAIC0yNDM4LDcgKzI0OTUsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OnBvdGVudGlhbGx5UGxheWluZygpIGNvbnN0CiAgICAgLy8gd2hlbiBpdCByYW4gb3V0IG9mIGJ1
ZmZlcmVkIGRhdGEuIEEgbW92aWUgaXMgdGhpcyBzdGF0ZSBpcyAicG90ZW50aWFsbHkgcGxheWlu
ZyIsIG1vZHVsbyB0aGUKICAgICAvLyBjaGVja3MgaW4gY291bGRQbGF5SWZFbm91Z2hEYXRhKCku
CiAgICAgYm9vbCBwYXVzZWRUb0J1ZmZlciA9IG1fcmVhZHlTdGF0ZU1heGltdW0gPj0gSEFWRV9G
VVRVUkVfREFUQSAmJiBtX3JlYWR5U3RhdGUgPCBIQVZFX0ZVVFVSRV9EQVRBOwotICAgIHJldHVy
biAocGF1c2VkVG9CdWZmZXIgfHwgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpICYm
IGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpOworICAgIHJldHVybiAocGF1c2VkVG9CdWZmZXIgfHwg
bV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpICYmIGNvdWxkUGxheUlmRW5vdWdoRGF0
YSgpICYmICFpc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigpOwogfQogCiBib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OmNvdWxkUGxheUlmRW5vdWdoRGF0YSgpIGNvbnN0CkBAIC0yNDYwLDEwICsyNTE3
LDExIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6ZW5kZWRQbGF5YmFjaygpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIGFuZCB0aGUgY3VycmVudCBwbGF5YmFjayBwb3Np
dGlvbiBpcyB0aGUgZW5kIG9mIHRoZSBtZWRpYSByZXNvdXJjZSBhbmQgdGhlIGRpcmVjdGlvbgot
ICAgIC8vIG9mIHBsYXliYWNrIGlzIGZvcndhcmRzIGFuZCB0aGUgbWVkaWEgZWxlbWVudCBkb2Vz
IG5vdCBoYXZlIGEgbG9vcCBhdHRyaWJ1dGUgc3BlY2lmaWVkLAorICAgIC8vIG9mIHBsYXliYWNr
IGlzIGZvcndhcmRzLCBFaXRoZXIgdGhlIG1lZGlhIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhIGxv
b3AgYXR0cmlidXRlIHNwZWNpZmllZCwKKyAgICAvLyBvciB0aGUgbWVkaWEgZWxlbWVudCBoYXMg
YSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIuCiAgICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUo
KTsKICAgICBpZiAobV9wbGF5YmFja1JhdGUgPiAwKQotICAgICAgICByZXR1cm4gZHVyID4gMCAm
JiBub3cgPj0gZHVyICYmICFsb29wKCk7CisgICAgICAgIHJldHVybiBkdXIgPiAwICYmIG5vdyA+
PSBkdXIgJiYgKCFsb29wKCkgfHwgbV9tZWRpYUNvbnRyb2xsZXIpOwogCiAgICAgLy8gb3IgdGhl
IGN1cnJlbnQgcGxheWJhY2sgcG9zaXRpb24gaXMgdGhlIGVhcmxpZXN0IHBvc3NpYmxlIHBvc2l0
aW9uIGFuZCB0aGUgZGlyZWN0aW9uIAogICAgIC8vIG9mIHBsYXliYWNrIGlzIGJhY2t3YXJkcwpA
QCAtMjUwOSw4ICsyNTY3LDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlVm9sdW1l
KCkKICAgICBpZiAoIXByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCkpIHsKICAgICAgICAg
UGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAgICAgICAgZmxvYXQgdm9sdW1lTXVs
dGlwbGllciA9IHBhZ2UgPyBwYWdlLT5tZWRpYVZvbHVtZSgpIDogMTsKLSAgICAKLSAgICAgICAg
bV9wbGF5ZXItPnNldE11dGVkKG1fbXV0ZWQpOworICAgICAgICBib29sIHNob3VsZE11dGUgPSBt
X211dGVkOworCisgICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikgeworICAgICAgICAgICAg
dm9sdW1lTXVsdGlwbGllciAqPSBtX21lZGlhQ29udHJvbGxlci0+dm9sdW1lKCk7CisgICAgICAg
ICAgICBzaG91bGRNdXRlID0gbV9tZWRpYUNvbnRyb2xsZXItPm11dGVkKCk7CisgICAgICAgIH0K
KworICAgICAgICBtX3BsYXllci0+c2V0TXV0ZWQoc2hvdWxkTXV0ZSk7CiAgICAgICAgIG1fcGxh
eWVyLT5zZXRWb2x1bWUobV92b2x1bWUgKiB2b2x1bWVNdWx0aXBsaWVyKTsKICAgICB9CiAKQEAg
LTI1NzcsMTEgKzI2NDEsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3Rh
dGUoKQogICAgICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICAgICAgbWVkaWFD
b250cm9scygpLT5wbGF5YmFja1N0b3BwZWQoKTsKICAgICB9Ci0gICAgCisKKyAgICB1cGRhdGVN
ZWRpYUNvbnRyb2xsZXIoKTsKKwogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5kZXJl
cigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwogfQotICAgIAorCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNldFBhdXNlZEludGVybmFsKGJvb2wgYikKIHsKICAgICBtX3BhdXNlZEludGVybmFsID0g
YjsKQEAgLTI2NDEsNiArMjcwNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNl
bGxlZExvYWQoKQogCiAgICAgLy8gUmVzZXQgbV9yZWFkeVN0YXRlIHNpbmNlIG1fcGxheWVyIGlz
IGdvbmUuCiAgICAgbV9yZWFkeVN0YXRlID0gSEFWRV9OT1RISU5HOworICAgIHVwZGF0ZU1lZGlh
Q29udHJvbGxlcigpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblN1c3BlbmQoKSBj
b25zdApAQCAtMzEzMyw2ICszMjAwLDk4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0SXRl
bVZhbHVlVGV4dChjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIH0KICNl
bmRpZgogCitjb25zdCBTdHJpbmcmIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhR3JvdXAoKSBjb25z
dAoreworICAgIHJldHVybiBtX21lZGlhR3JvdXA7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0TWVkaWFHcm91cChjb25zdCBTdHJpbmcmIGdyb3VwKQoreworICAgIGlmIChtX21lZGlh
R3JvdXAgPT0gZ3JvdXApCisgICAgICAgIHJldHVybjsKKyAgICBtX21lZGlhR3JvdXAgPSBncm91
cDsKKworICAgIC8vIFdoZW4gYSBtZWRpYSBlbGVtZW50IGlzIGNyZWF0ZWQgd2l0aCBhIG1lZGlh
Z3JvdXAgYXR0cmlidXRlLCBhbmQgd2hlbiBhIG1lZGlhIGVsZW1lbnQncyBtZWRpYWdyb3VwIAor
ICAgIC8vIGF0dHJpYnV0ZSBpcyBzZXQsIGNoYW5nZWQsIG9yIHJlbW92ZWQsIHRoZSB1c2VyIGFn
ZW50IG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgLy8gMS4gTGV0IG0gW3RoaXNd
IGJlIHRoZSBtZWRpYSBlbGVtZW50IGluIHF1ZXN0aW9uLgorICAgIC8vIDIuIExldCBtIGhhdmUg
bm8gY3VycmVudCBtZWRpYSBjb250cm9sbGVyLCBpZiBpdCBjdXJyZW50bHkgaGFzIG9uZS4KKyAg
ICBzZXRDb250cm9sbGVyKDApOworICAgIC8vIDMuIElmIG0ncyBtZWRpYWdyb3VwIGF0dHJpYnV0
ZSBpcyBiZWluZyByZW1vdmVkLCB0aGVuIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmIChncm91
cC5pc051bGwoKSB8fCBncm91cC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICAvLyA0
LiBJZiB0aGVyZSBpcyBhbm90aGVyIG1lZGlhIGVsZW1lbnQgd2hvc2UgRG9jdW1lbnQgaXMgdGhl
IHNhbWUgYXMgbSdzIERvY3VtZW50IChldmVuIGlmIG9uZSBvciBib3RoCisgICAgLy8gb2YgdGhl
c2UgZWxlbWVudHMgYXJlIG5vdCBhY3R1YWxseSBpbiB0aGUgRG9jdW1lbnQpLCAKKyAgICBIYXNo
U2V0PEhUTUxNZWRpYUVsZW1lbnQqPiBlbGVtZW50cyA9IGRvY3VtZW50VG9FbGVtZW50U2V0TWFw
KCkuZ2V0KGRvY3VtZW50KCkpOworICAgIGZvciAoSGFzaFNldDxIVE1MTWVkaWFFbGVtZW50Kj46
Oml0ZXJhdG9yIGkgPSBlbGVtZW50cy5iZWdpbigpOyBpICE9IGVsZW1lbnRzLmVuZCgpOyArK2kp
IHsKKyAgICAgICAgaWYgKCppID09IHRoaXMpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAvLyBhbmQgd2hpY2ggYWxzbyBoYXMgYSBtZWRpYWdyb3VwIGF0dHJpYnV0ZSwgYW5kIHdo
b3NlIG1lZGlhZ3JvdXAgYXR0cmlidXRlIGhhcyB0aGUgc2FtZSB2YWx1ZSBhcworICAgICAgICAv
LyB0aGUgbmV3IHZhbHVlIG9mIG0ncyBtZWRpYWdyb3VwIGF0dHJpYnV0ZSwgICAgICAgIAorICAg
ICAgICBpZiAoKCppKS0+bWVkaWFHcm91cCgpID09IGdyb3VwKSB7CisgICAgICAgICAgICAvLyAg
dGhlbiBsZXQgY29udHJvbGxlciBiZSB0aGF0IG1lZGlhIGVsZW1lbnQncyBjdXJyZW50IG1lZGlh
IGNvbnRyb2xsZXIuCisgICAgICAgICAgICBzZXRDb250cm9sbGVyKCgqaSktPmNvbnRyb2xsZXIo
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBPdGhl
cndpc2UsIGxldCBjb250cm9sbGVyIGJlIGEgbmV3bHkgY3JlYXRlZCBNZWRpYUNvbnRyb2xsZXIu
CisgICAgc2V0Q29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXI6OmNyZWF0ZSgpKTsKK30KKworTWVk
aWFDb250cm9sbGVyKiBIVE1MTWVkaWFFbGVtZW50Ojpjb250cm9sbGVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9tZWRpYUNvbnRyb2xsZXIuZ2V0KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0Q29udHJvbGxlcihQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gY29udHJvbGxl
cikKK3sKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVkaWFDb250cm9s
bGVyLT5yZW1vdmVNZWRpYUVsZW1lbnQodGhpcyk7CisKKyAgICBtX21lZGlhQ29udHJvbGxlciA9
IGNvbnRyb2xsZXI7CisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVk
aWFDb250cm9sbGVyLT5hZGRNZWRpYUVsZW1lbnQodGhpcyk7Cit9CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6dXBkYXRlTWVkaWFDb250cm9sbGVyKCkKK3sKKyAgICBpZiAobV9tZWRpYUNvbnRy
b2xsZXIpCisgICAgICAgIG1fbWVkaWFDb250cm9sbGVyLT5yZXBvcnRDb250cm9sbGVyU3RhdGUo
KTsKK30KKworYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc0Jsb2NrZWQoKSBjb25zdAoreworICAg
IC8vIEEgbWVkaWEgZWxlbWVudCBpcyBhIGJsb2NrZWQgbWVkaWEgZWxlbWVudCBpZiBpdHMgcmVh
ZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgaW4gdGhlCisgICAgLy8gSEFWRV9OT1RISU5HIHN0YXRlLCB0
aGUgSEFWRV9NRVRBREFUQSBzdGF0ZSwgb3IgdGhlIEhBVkVfQ1VSUkVOVF9EQVRBIHN0YXRlLAor
ICAgIGlmIChtX3JlYWR5U3RhdGUgPD0gSEFWRV9DVVJSRU5UX0RBVEEpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgLy8gb3IgaWYgdGhlIGVsZW1lbnQgaGFzIHBhdXNlZCBmb3IgdXNlciBp
bnRlcmFjdGlvbi4KKyAgICByZXR1cm4gcGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCk7Cit9CisK
K2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNCbG9ja2VkT25NZWRpYUNvbnRyb2xsZXIoKSBjb25z
dAoreworICAgIGlmICghbV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIEEgbWVkaWEgZWxlbWVudCBpcyBibG9ja2VkIG9uIGl0cyBtZWRpYSBjb250cm9s
bGVyIGlmIHRoZSBNZWRpYUNvbnRyb2xsZXIgaXMgYSBibG9ja2VkIAorICAgIC8vIG1lZGlhIGNv
bnRyb2xsZXIsCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5pc0Jsb2NrZWQoKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBvciBpZiBpdHMgbWVkaWEgY29udHJvbGxlciBwb3Np
dGlvbiBpcyBlaXRoZXIgYmVmb3JlIHRoZSBtZWRpYSByZXNvdXJjZSdzIGVhcmxpZXN0IHBvc3Np
YmxlIAorICAgIC8vIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBNZWRpYUNvbnRyb2xsZXIncyB0
aW1lbGluZSBvciBhZnRlciB0aGUgZW5kIG9mIHRoZSBtZWRpYSByZXNvdXJjZSAKKyAgICAvLyBy
ZWxhdGl2ZSB0byB0aGUgTWVkaWFDb250cm9sbGVyJ3MgdGltZWxpbmUuCisgICAgZmxvYXQgbWVk
aWFDb250cm9sbGVyUG9zaXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsK
KyAgICBpZiAobWVkaWFDb250cm9sbGVyUG9zaXRpb24gPCBzdGFydFRpbWUoKSB8fCBtZWRpYUNv
bnRyb2xsZXJQb3NpdGlvbiA+IHN0YXJ0VGltZSgpICsgZHVyYXRpb24oKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDBkMmY5ZmM0OWUxMDBjYjUxN2JlZjBk
MTUwYWM0Zjc3YTU3NWU5ZWMuLjE0MjEwOTg0MmIwZGM4ZTgwYjI5NWNlMzQ2YzQzZjE1ZGIzMjFm
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNZWRpYUNv
bnRyb2xsZXJJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogCiAjaWYgRU5B
QkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCkBAIC01MCw2ICs1MSw3IEBAIGNsYXNzIE1lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZTsKIGNsYXNzIEV2ZW50OwogY2xhc3MgSFRNTFNvdXJjZUVs
ZW1lbnQ7CiBjbGFzcyBIVE1MVHJhY2tFbGVtZW50OworY2xhc3MgTWVkaWFDb250cm9sbGVyOwog
Y2xhc3MgTWVkaWFDb250cm9sczsKIGNsYXNzIE1lZGlhRXJyb3I7CiBjbGFzcyBLVVJMOwpAQCAt
NjMsNyArNjUsNyBAQCBjbGFzcyBXaWRnZXQ7CiAvLyBCdXQgaXQgY2FuJ3QgYmUgdW50aWwgdGhl
IENocm9taXVtIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCBjbGFzcyBpcyBmaXhlZCBzbyBpdAog
Ly8gbm8gbG9uZ2VyIGRlcGVuZHMgb24gdHlwZWNhc3RpbmcgYSBNZWRpYVBsYXllckNsaWVudCB0
byBhbiBIVE1MTWVkaWFFbGVtZW50LgogCi1jbGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGlj
IEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHByaXZhdGUgTWVkaWFDYW5T
dGFydExpc3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CitjbGFzcyBIVE1MTWVkaWFFbGVt
ZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHByaXZh
dGUgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMg
TWVkaWFDb250cm9sbGVySW50ZXJmYWNlCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwg
cHJpdmF0ZSBUZXh0VHJhY2tDbGllbnQKICNlbmRpZgpAQCAtMTA1LDcgKzEwNyw3IEBAIHB1Ymxp
YzoKIAogICAgIGVudW0gTmV0d29ya1N0YXRlIHsgTkVUV09SS19FTVBUWSwgTkVUV09SS19JRExF
LCBORVRXT1JLX0xPQURJTkcsIE5FVFdPUktfTk9fU09VUkNFIH07CiAgICAgTmV0d29ya1N0YXRl
IG5ldHdvcmtTdGF0ZSgpIGNvbnN0OwotICAgIAorCiAgICAgU3RyaW5nIHByZWxvYWQoKSBjb25z
dDsgICAgCiAgICAgdm9pZCBzZXRQcmVsb2FkKGNvbnN0IFN0cmluZyYpOwogCkBAIC0xMTQsNyAr
MTE2LDYgQEAgcHVibGljOgogICAgIFN0cmluZyBjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKSBjb25zdDsKIAogLy8gcmVhZHkgc3RhdGUKLSAgICBlbnVtIFJlYWR5U3RhdGUgeyBI
QVZFX05PVEhJTkcsIEhBVkVfTUVUQURBVEEsIEhBVkVfQ1VSUkVOVF9EQVRBLCBIQVZFX0ZVVFVS
RV9EQVRBLCBIQVZFX0VOT1VHSF9EQVRBIH07CiAgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkg
Y29uc3Q7CiAgICAgYm9vbCBzZWVraW5nKCkgY29uc3Q7CiAKQEAgLTIzMCw2ICsyMzEsMTIgQEAg
cHVibGljOgogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKTsK
ICNlbmRpZgogCisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYpOworCisgICAgTWVkaWFDb250cm9sbGVyKiBj
b250cm9sbGVyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDb250cm9sbGVyKFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sbGVyPik7CisKIHByb3RlY3RlZDoKICAgICBIVE1MTWVkaWFFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkhUTUxNZWRpYUVsZW1l
bnQoKTsKQEAgLTM5NCw2ICs0MDEsOCBAQCBwcml2YXRlOgogICAgIC8vIFBhdXNlcyBwbGF5YmFj
ayB3aXRob3V0IGNoYW5naW5nIGFueSBzdGF0ZXMgb3IgZ2VuZXJhdGluZyBldmVudHMKICAgICB2
b2lkIHNldFBhdXNlZEludGVybmFsKGJvb2wpOwogCisgICAgdm9pZCBzZXRQbGF5YmFja1JhdGVJ
bnRlcm5hbChmbG9hdCk7CisKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFDYW5TdGFydCgpOwogCiAg
ICAgdm9pZCBzZXRTaG91bGREZWxheUxvYWRFdmVudChib29sKTsKQEAgLTQxMiw2ICs0MjEsMTIg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXRlbVZhbHVlVGV4dChjb25zdCBTdHJp
bmcmLCBFeGNlcHRpb25Db2RlJik7CiAjZW5kaWYKIAorICAgIHZvaWQgdXBkYXRlTWVkaWFDb250
cm9sbGVyKCk7CisgICAgYm9vbCBpc0Jsb2NrZWQoKSBjb25zdDsKKyAgICBib29sIGlzQmxvY2tl
ZE9uTWVkaWFDb250cm9sbGVyKCkgY29uc3Q7CisgICAgYm9vbCBoYXNTb3VyY2UoKSBjb25zdCB7
IHJldHVybiBtX25ldHdvcmtTdGF0ZSAhPSBORVRXT1JLX0VNUFRZIHx8IG1fbmV0d29ya1N0YXRl
ICE9IE5FVFdPUktfTk9fU09VUkNFOyB9CisgICAgYm9vbCBpc0xpdmVTdHJlYW0oKSBjb25zdCB7
IHJldHVybiBtb3ZpZUxvYWRUeXBlKCkgPT0gTWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW07IH0KKwog
ICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fbG9hZFRpbWVyOwogICAgIFRpbWVyPEhUTUxN
ZWRpYUVsZW1lbnQ+IG1fYXN5bmNFdmVudFRpbWVyOwogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1l
bnQ+IG1fcHJvZ3Jlc3NFdmVudFRpbWVyOwpAQCAtNTE2LDYgKzUzMSwxMCBAQCBwcml2YXRlOgog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBt
X3RleHRUcmFja3M7CiAjZW5kaWYKKworICAgIFN0cmluZyBtX21lZGlhR3JvdXA7CisgICAgZnJp
ZW5kIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBt
X21lZGlhQ29udHJvbGxlcjsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaWRsCmluZGV4IDMzMGFkYmFhZGU3MTAyNjljMmYyZGU1ZWVjNWNj
MWUxNjJiMGM5YjUuLjUyMWE1MjcyMTZmM2U4MThkNmQ3YWRiYTk1OTZlODk5YzdlOGVlZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbApAQCAtMTE0LDUgKzExNCw4
IEBAIG1vZHVsZSBodG1sIHsKICNpZiBkZWZpbmVkKEVOQUJMRV9WSURFT19UUkFDSykgJiYgRU5B
QkxFX1ZJREVPX1RSQUNLCiAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10g
VGV4dFRyYWNrIGFkZFRyYWNrKGluIERPTVN0cmluZyBraW5kLCBpbiBbT3B0aW9uYWxdIERPTVN0
cmluZyBsYWJlbCwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgbGFuZ3VhZ2UpOwogI2VuZGlmCisK
KyAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsIENvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBDb252ZXJ0
TnVsbFN0cmluZ1RvTnVsbF0gRE9NU3RyaW5nIG1lZGlhR3JvdXA7CisgICAgYXR0cmlidXRlIFtD
dXN0b21TZXR0ZXJdIE1lZGlhQ29udHJvbGxlciBjb250cm9sbGVyOwogfTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzY2NGZmYjYwNDEwOGFh
Yjc1OTU0Y2JkNjVkZjUwMjZmOWVkODBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsNTg3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIk1lZGlh
Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiQ2xvY2suaCIKKyNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIlRpbWVSYW5n
ZXMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNw
YWNlIHN0ZDsKKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IE1lZGlhQ29udHJvbGxlcjo6
Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbGxlcigpKTsK
K30KKworTWVkaWFDb250cm9sbGVyOjpNZWRpYUNvbnRyb2xsZXIoKQorICAgIDogbV9wYXVzZWQo
ZmFsc2UpCisgICAgLCBtX2RlZmF1bHRQbGF5YmFja1JhdGUoMSkKKyAgICAsIG1fdm9sdW1lKDEp
CisgICAgLCBtX211dGVkKGZhbHNlKQorICAgICwgbV9yZWFkeVN0YXRlKEhBVkVfTk9USElORykK
KyAgICAsIG1fcGxheWJhY2tTdGF0ZShXQUlUSU5HKQorICAgICwgbV9hc3luY0V2ZW50VGltZXIo
dGhpcywgJk1lZGlhQ29udHJvbGxlcjo6YXN5bmNFdmVudFRpbWVyRmlyZWQpCisgICAgLCBtX2Ns
b3NlZENhcHRpb25zVmlzaWJsZShmYWxzZSkKKyAgICAsIG1fY2xvY2soQ2xvY2s6OmNyZWF0ZSgp
KQoreworfQorCitNZWRpYUNvbnRyb2xsZXI6On5NZWRpYUNvbnRyb2xsZXIoKQoreworfQorCit2
b2lkIE1lZGlhQ29udHJvbGxlcjo6YWRkTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVs
ZW1lbnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIEFTU0VSVCghbV9tZWRpYUVsZW1l
bnRzLmNvbnRhaW5zKGVsZW1lbnQpKTsKKworICAgIG1fbWVkaWFFbGVtZW50cy5hcHBlbmQoZWxl
bWVudCk7CisgICAgYnJpbmdFbGVtZW50VXBUb1NwZWVkKGVsZW1lbnQpOworfQorCit2b2lkIE1l
ZGlhQ29udHJvbGxlcjo6cmVtb3ZlTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1l
bnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIEFTU0VSVChtX21lZGlhRWxlbWVudHMu
Y29udGFpbnMoZWxlbWVudCkpOworICAgIG1fbWVkaWFFbGVtZW50cy5yZW1vdmUobV9tZWRpYUVs
ZW1lbnRzLmZpbmQoZWxlbWVudCkpOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6Y29udGFp
bnNNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKGVsZW1lbnQpOworfQorCitQYXNzUmVmUHRy
PFRpbWVSYW5nZXM+IE1lZGlhQ29udHJvbGxlcjo6YnVmZmVyZWQoKSBjb25zdAoreworICAgIGlm
IChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gVGltZVJhbmdlczo6
Y3JlYXRlKCk7CisKKyAgICAvLyBUaGUgYnVmZmVyZWQgYXR0cmlidXRlIG11c3QgcmV0dXJuIGEg
bmV3IHN0YXRpYyBub3JtYWxpemVkIFRpbWVSYW5nZXMgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyAK
KyAgICAvLyB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSByYW5nZXMgb2YgdGhlIG1lZGlhIHJlc291
cmNlcyBvZiB0aGUgc2xhdmVkIG1lZGlhIGVsZW1lbnRzIHRoYXQgdGhlIAorICAgIC8vIHVzZXIg
YWdlbnQgaGFzIGJ1ZmZlcmVkLCBhdCB0aGUgdGltZSB0aGUgYXR0cmlidXRlIGlzIGV2YWx1YXRl
ZC4KKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWRSYW5nZXMgPSBtX21lZGlhRWxlbWVu
dHMuZmlyc3QoKS0+YnVmZmVyZWQoKTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4
IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgYnVmZmVyZWRSYW5n
ZXMtPmludGVyc2VjdFdpdGgobV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+YnVmZmVyZWQoKS5nZXQo
KSk7CisgICAgcmV0dXJuIGJ1ZmZlcmVkUmFuZ2VzOworfQorCitQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IE1lZGlhQ29udHJvbGxlcjo6c2Vla2FibGUoKSBjb25zdAoreworICAgIGlmIChtX21lZGlh
RWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7
CisKKyAgICAvLyBUaGUgc2Vla2FibGUgYXR0cmlidXRlIG11c3QgcmV0dXJuIGEgbmV3IHN0YXRp
YyBub3JtYWxpemVkIFRpbWVSYW5nZXMgb2JqZWN0IHRoYXQgcmVwcmVzZW50cworICAgIC8vIHRo
ZSBpbnRlcnNlY3Rpb24gb2YgdGhlIHJhbmdlcyBvZiB0aGUgbWVkaWEgcmVzb3VyY2VzIG9mIHRo
ZSBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgdGhhdCB0aGUKKyAgICAvLyB1c2VyIGFnZW50IGlzIGFi
bGUgdG8gc2VlayB0bywgYXQgdGhlIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyBldmFsdWF0ZWQuCisg
ICAgUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlUmFuZ2VzID0gbV9tZWRpYUVsZW1lbnRzLmZp
cnN0KCktPnNlZWthYmxlKCk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAxOyBpbmRleCA8IG1f
bWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIHNlZWthYmxlUmFuZ2VzLT5p
bnRlcnNlY3RXaXRoKG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnNlZWthYmxlKCkuZ2V0KCkpOwor
ICAgIHJldHVybiBzZWVrYWJsZVJhbmdlczsKK30KKworUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBN
ZWRpYUNvbnRyb2xsZXI6OnBsYXllZCgpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKworICAgIC8vIFRo
ZSBwbGF5ZWQgYXR0cmlidXRlIG11c3QgcmV0dXJuIGEgbmV3IHN0YXRpYyBub3JtYWxpemVkIFRp
bWVSYW5nZXMgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyAKKyAgICAvLyB0aGUgdW5pb24gb2YgdGhl
IHJhbmdlcyBvZiB0aGUgbWVkaWEgcmVzb3VyY2VzIG9mIHRoZSBzbGF2ZWQgbWVkaWEgZWxlbWVu
dHMgdGhhdCB0aGUgCisgICAgLy8gdXNlciBhZ2VudCBoYXMgc28gZmFyIHJlbmRlcmVkLCBhdCB0
aGUgdGltZSB0aGUgYXR0cmlidXRlIGlzIGV2YWx1YXRlZC4KKyAgICBSZWZQdHI8VGltZVJhbmdl
cz4gcGxheWVkUmFuZ2VzID0gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPnBsYXllZCgpOworICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyAr
K2luZGV4KQorICAgICAgICBwbGF5ZWRSYW5nZXMtPnVuaW9uV2l0aChtX21lZGlhRWxlbWVudHNb
aW5kZXhdLT5wbGF5ZWQoKS5nZXQoKSk7CisgICAgcmV0dXJuIHBsYXllZFJhbmdlczsKK30KKwor
ZmxvYXQgTWVkaWFDb250cm9sbGVyOjpkdXJhdGlvbigpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6
IEludmVzdGlnYXRlIGNhY2hpbmcgdGhlIG1heGltdW0gZHVyYXRpb24gYW5kIG9ubHkgdXBkYXRp
bmcgdGhlIGNhY2hlZCB2YWx1ZQorICAgIC8vIHdoZW4gdGhlIHNsYXZlZCBtZWRpYSBlbGVtZW50
cycgZHVyYXRpb25zIGNoYW5nZS4KKyAgICBmbG9hdCBtYXhEdXJhdGlvbiA9IDA7CisgICAgZm9y
IChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5k
ZXgpIHsKKyAgICAgICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5k
dXJhdGlvbigpOworICAgICAgICBpZiAoaXNuYW4oZHVyYXRpb24pKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIG1heER1cmF0aW9uID0gbWF4KG1heER1cmF0aW9uLCBkdXJhdGlvbik7
CisgICAgfQorICAgIHJldHVybiBtYXhEdXJhdGlvbjsKK30KKworZmxvYXQgTWVkaWFDb250cm9s
bGVyOjpjdXJyZW50VGltZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBtX2Nsb2NrLT5jdXJy
ZW50VGltZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0Q3VycmVudFRpbWUoZmxv
YXQgdGltZSwgRXhjZXB0aW9uQ29kZSYgY29kZSkKK3sKKyAgICAvLyBXaGVuIHRoZSB1c2VyIGFn
ZW50IGlzIHRvIHNlZWsgdGhlIG1lZGlhIGNvbnRyb2xsZXIgdG8gYSBwYXJ0aWN1bGFyIG5ldyBw
bGF5YmFjayBwb3NpdGlvbiwgCisgICAgLy8gaXQgbXVzdCBmb2xsb3cgdGhlc2Ugc3RlcHM6Cisg
ICAgLy8gSWYgdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbiBpcyBsZXNzIHRoYW4gemVybywgdGhl
biBzZXQgaXQgdG8gemVyby4KKyAgICB0aW1lID0gbWF4KDAuMGYsIHRpbWUpOworICAgIAorICAg
IC8vIElmIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gaXMgZ3JlYXRlciB0aGFuIHRoZSBtZWRp
YSBjb250cm9sbGVyIGR1cmF0aW9uLCB0aGVuIHNldCBpdCAKKyAgICAvLyB0byB0aGUgbWVkaWEg
Y29udHJvbGxlciBkdXJhdGlvbi4KKyAgICB0aW1lID0gbWluKHRpbWUsIGR1cmF0aW9uKCkpOwor
ICAgIAorICAgIC8vIFNldCB0aGUgbWVkaWEgY29udHJvbGxlciBwb3NpdGlvbiB0byB0aGUgbmV3
IHBsYXliYWNrIHBvc2l0aW9uLgorICAgIG1fY2xvY2stPnNldEN1cnJlbnRUaW1lKHRpbWUpOwor
ICAgIAorICAgIC8vIFNlZWsgZWFjaCBzbGF2ZWQgbWVkaWEgZWxlbWVudCB0byB0aGUgbmV3IHBs
YXliYWNrIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBtZWRpYSBlbGVtZW50IHRpbWVsaW5lLgor
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgp
OyArK2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5zZWVrKHRpbWUsIGNv
ZGUpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6cGxheSgpCit7CisgICAgLy8gV2hlbiB0
aGUgcGxheSgpIG1ldGhvZCBpcyBpbnZva2VkLCBpZiB0aGUgTWVkaWFDb250cm9sbGVyIGlzIGEg
cGF1c2VkIG1lZGlhIGNvbnRyb2xsZXIsCisgICAgaWYgKCFtX3BhdXNlZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gdGhlIHVzZXIgYWdlbnQgbXVzdCBjaGFuZ2UgdGhlIE1lZGlhQ29udHJv
bGxlciBpbnRvIGEgcGxheWluZyBtZWRpYSBjb250cm9sbGVyLAorICAgIG1fcGF1c2VkID0gZmFs
c2U7CisgICAgLy8gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcGxh
eSBhdCB0aGUgTWVkaWFDb250cm9sbGVyLAorICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygp
LnBsYXlFdmVudCk7CisgICAgLy8gYW5kIHRoZW4gcmVwb3J0IHRoZSBjb250cm9sbGVyIHN0YXRl
IG9mIHRoZSBNZWRpYUNvbnRyb2xsZXIuCisgICAgcmVwb3J0Q29udHJvbGxlclN0YXRlKCk7Cit9
CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpwYXVzZSgpCit7CisgICAgLy8gV2hlbiB0aGUgcGF1
c2UoKSBtZXRob2QgaXMgaW52b2tlZCwgaWYgdGhlIE1lZGlhQ29udHJvbGxlciBpcyBhIHBsYXlp
bmcgbWVkaWEgY29udHJvbGxlciwKKyAgICBpZiAobV9wYXVzZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCBjaGFuZ2UgdGhlIE1lZGlhQ29udHJv
bGxlciBpbnRvIGEgcGF1c2VkIG1lZGlhIGNvbnRyb2xsZXIsCisgICAgbV9wYXVzZWQgPSB0cnVl
OworICAgIC8vIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHBhdXNl
IGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIsCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCku
cGF1c2VFdmVudCk7CisgICAgLy8gYW5kIHRoZW4gcmVwb3J0IHRoZSBjb250cm9sbGVyIHN0YXRl
IG9mIHRoZSBNZWRpYUNvbnRyb2xsZXIuCisgICAgcmVwb3J0Q29udHJvbGxlclN0YXRlKCk7Cit9
CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0IHJh
dGUpCit7CisgICAgaWYgKG1fZGVmYXVsdFBsYXliYWNrUmF0ZSA9PSByYXRlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBUaGUgZGVmYXVsdFBsYXliYWNrUmF0ZSBhdHRyaWJ1dGUsIG9uIHNl
dHRpbmcsIG11c3Qgc2V0IHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtZWRpYSBjb250cm9sbGVyCisg
ICAgLy8gZGVmYXVsdCBwbGF5YmFjayByYXRlIHRvIHRoZSBuZXcgdmFsdWUsCisgICAgbV9kZWZh
dWx0UGxheWJhY2tSYXRlID0gcmF0ZTsKKworICAgIC8vIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZp
cmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcmF0ZWNoYW5nZSBhdCB0aGUgTWVkaWFDb250cm9sbGVy
LgorICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCk7Cit9CisK
K2Zsb2F0IE1lZGlhQ29udHJvbGxlcjo6cGxheWJhY2tSYXRlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jbG9jay0+cGxheVJhdGUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldFBs
YXliYWNrUmF0ZShmbG9hdCByYXRlKQoreworICAgIGlmIChtX2Nsb2NrLT5wbGF5UmF0ZSgpID09
IHJhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBwbGF5YmFja1JhdGUgYXR0cmli
dXRlLCBvbiBzZXR0aW5nLCBtdXN0IHNldCB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbWVkaWEgY29u
dHJvbGxlciAKKyAgICAvLyBwbGF5YmFjayByYXRlIHRvIHRoZSBuZXcgdmFsdWUsCisgICAgbV9j
bG9jay0+c2V0UGxheVJhdGUocmF0ZSk7CisKKyAgICAvLyB0aGVuIHF1ZXVlIGEgdGFzayB0byBm
aXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHJhdGVjaGFuZ2UgYXQgdGhlIE1lZGlhQ29udHJvbGxl
ci4KKyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpOworfQor
Cit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0Vm9sdW1lKGZsb2F0IGxldmVsLCBFeGNlcHRpb25D
b2RlJiBjb2RlKQoreworICAgIGlmIChtX3ZvbHVtZSA9PSBsZXZlbCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gSWYgdGhlIG5ldyB2YWx1ZSBpcyBvdXRzaWRlIHRoZSByYW5nZSAwLjAgdG8g
MS4wIGluY2x1c2l2ZSwgdGhlbiwgb24gc2V0dGluZywgYW4gCisgICAgLy8gSW5kZXhTaXplRXJy
b3IgZXhjZXB0aW9uIG11c3QgYmUgcmFpc2VkIGluc3RlYWQuCisgICAgaWYgKGxldmVsIDwgMCB8
fCBsZXZlbCA+IDEpIHsKKyAgICAgICAgY29kZSA9IElOREVYX1NJWkVfRVJSOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICAvLyBUaGUgdm9sdW1lIGF0dHJpYnV0ZSwgb24g
c2V0dGluZywgaWYgdGhlIG5ldyB2YWx1ZSBpcyBpbiB0aGUgcmFuZ2UgMC4wIHRvIDEuMCBpbmNs
dXNpdmUsCisgICAgLy8gbXVzdCBzZXQgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1lZGlhIGNvbnRy
b2xsZXIgdm9sdW1lIG11bHRpcGxpZXIgdG8gdGhlIG5ldyB2YWx1ZQorICAgIG1fdm9sdW1lID0g
bGV2ZWw7CisKKyAgICAvLyBhbmQgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQg
bmFtZWQgdm9sdW1lY2hhbmdlIGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIuCisgICAgc2NoZWR1bGVF
dmVudChldmVudE5hbWVzKCkudm9sdW1lY2hhbmdlRXZlbnQpOworCisgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAg
ICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnVwZGF0ZVZvbHVtZSgpOworfQorCit2b2lkIE1l
ZGlhQ29udHJvbGxlcjo6c2V0TXV0ZWQoYm9vbCBmbGFnKQoreworICAgIGlmIChtX211dGVkID09
IGZsYWcpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBtdXRlZCBhdHRyaWJ1dGUsIG9u
IHNldHRpbmcsIG11c3Qgc2V0IHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtZWRpYSBjb250cm9sbGVy
IG11dGUgb3ZlcnJpZGUKKyAgICAvLyB0byB0aGUgbmV3IHZhbHVlCisgICAgbV9tdXRlZCA9IGZs
YWc7CisKKyAgICAvLyBhbmQgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFt
ZWQgdm9sdW1lY2hhbmdlIGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIuCisgICAgc2NoZWR1bGVFdmVu
dChldmVudE5hbWVzKCkudm9sdW1lY2hhbmdlRXZlbnQpOworCisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAg
IG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnVwZGF0ZVZvbHVtZSgpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbGxlcjo6cmVwb3J0Q29udHJvbGxlclN0YXRlKCkKK3sKKyAgICB1cGRhdGVSZWFkeVN0
YXRlKCk7CisgICAgdXBkYXRlUGxheWJhY2tTdGF0ZSgpOworfQorCitzdGF0aWMgQXRvbWljU3Ry
aW5nIGV2ZW50TmFtZUZvclJlYWR5U3RhdGUoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlOjpSZWFk
eVN0YXRlIHN0YXRlKQoreworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIE1lZGlhQ29u
dHJvbGxlckludGVyZmFjZTo6SEFWRV9OT1RISU5HOgorICAgICAgICByZXR1cm4gZXZlbnROYW1l
cygpLmVtcHRpZWRFdmVudDsKKyAgICBjYXNlIE1lZGlhQ29udHJvbGxlckludGVyZmFjZTo6SEFW
RV9NRVRBREFUQToKKyAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5sb2FkZWRtZXRhZGF0YUV2
ZW50OworICAgIGNhc2UgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlOjpIQVZFX0NVUlJFTlRfREFU
QToKKyAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5sb2FkZWRkYXRhRXZlbnQ7CisgICAgY2Fz
ZSBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U6OkhBVkVfRlVUVVJFX0RBVEE6CisgICAgICAgIHJl
dHVybiBldmVudE5hbWVzKCkuY2FucGxheUV2ZW50OworICAgIGNhc2UgTWVkaWFDb250cm9sbGVy
SW50ZXJmYWNlOjpIQVZFX0VOT1VHSF9EQVRBOgorICAgICAgICByZXR1cm4gZXZlbnROYW1lcygp
LmNhbnBsYXl0aHJvdWdoRXZlbnQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxsQXRvbTsKKyAgICB9Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sbGVyOjp1cGRhdGVSZWFkeVN0YXRlKCkKK3sKKyAgICBSZWFkeVN0YXRlIG9sZFJl
YWR5U3RhdGUgPSBtX3JlYWR5U3RhdGU7CisgICAgUmVhZHlTdGF0ZSBuZXdSZWFkeVN0YXRlOwor
ICAgIAorICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIElm
IHRoZSBNZWRpYUNvbnRyb2xsZXIgaGFzIG5vIHNsYXZlZCBtZWRpYSBlbGVtZW50cywgbGV0IG5l
dyByZWFkaW5lc3Mgc3RhdGUgYmUgMC4KKyAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IEhBVkVfTk9U
SElORzsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBPdGhlcndpc2UsIGxldCBpdCBoYXZlIHRo
ZSBsb3dlc3QgdmFsdWUgb2YgdGhlIHJlYWR5U3RhdGUgSURMIGF0dHJpYnV0ZXMgb2YgYWxsIG9m
IGl0cworICAgICAgICAvLyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMuCisgICAgICAgIG5ld1JlYWR5
U3RhdGUgPSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+cmVhZHlTdGF0ZSgpOworICAgICAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytp
bmRleCkKKyAgICAgICAgICAgIG5ld1JlYWR5U3RhdGUgPSBtaW4obmV3UmVhZHlTdGF0ZSwgbV9t
ZWRpYUVsZW1lbnRzW2luZGV4XS0+cmVhZHlTdGF0ZSgpKTsKKyAgICB9CisKKyAgICBpZiAobmV3
UmVhZHlTdGF0ZSA9PSBvbGRSZWFkeVN0YXRlKSAKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
SWYgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1vc3QgcmVjZW50bHkgcmVwb3J0ZWQgcmVhZGluZXNz
IHN0YXRlIGlzIGdyZWF0ZXIgdGhhbiBuZXcgcmVhZGluZXNzIAorICAgIC8vIHN0YXRlIHRoZW4g
cXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgYXQgdGhlIE1lZGlhQ29udHJvbGxl
ciBvYmplY3QsIHdob3NlIG5hbWUgaXMgdGhlCisgICAgLy8gZXZlbnQgbmFtZSBjb3JyZXNwb25k
aW5nIHRvIHRoZSB2YWx1ZSBvZiBuZXcgcmVhZGluZXNzIHN0YXRlIGdpdmVuIGluIHRoZSB0YWJs
ZSBiZWxvdy4gW29taXR0ZWRdCisgICAgaWYgKG9sZFJlYWR5U3RhdGUgPiBuZXdSZWFkeVN0YXRl
KSB7CisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lRm9yUmVhZHlTdGF0ZShuZXdSZWFk
eVN0YXRlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBJZiB0aGUgTWVkaWFD
b250cm9sbGVyJ3MgbW9zdCByZWNlbnRseSByZXBvcnRlZCByZWFkaW5lc3Mgc3RhdGUgaXMgbGVz
cyB0aGFuIHRoZSBuZXcgcmVhZGluZXNzCisgICAgLy8gc3RhdGUsIHRoZW4gcnVuIHRoZXNlIHN1
YnN0ZXBzOgorICAgIC8vIDEuIExldCBuZXh0IHN0YXRlIGJlIHRoZSBNZWRpYUNvbnRyb2xsZXIn
cyBtb3N0IHJlY2VudGx5IHJlcG9ydGVkIHJlYWRpbmVzcyBzdGF0ZS4KKyAgICBSZWFkeVN0YXRl
IG5leHRTdGF0ZSA9IG9sZFJlYWR5U3RhdGU7CisgICAgZG8geworICAgICAgICAvLyAyLiBMb29w
OiBJbmNyZW1lbnQgbmV4dCBzdGF0ZSBieSBvbmUuCisgICAgICAgICsrbmV4dFN0YXRlOworICAg
ICAgICAvLyAzLiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBhdCB0aGUgTWVk
aWFDb250cm9sbGVyIG9iamVjdCwgd2hvc2UgbmFtZSBpcyB0aGUKKyAgICAgICAgLy8gZXZlbnQg
bmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSB2YWx1ZSBvZiBuZXh0IHN0YXRlIGdpdmVuIGluIHRo
ZSB0YWJsZSBiZWxvdy4gW29taXR0ZWRdCisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1l
Rm9yUmVhZHlTdGF0ZShuZXdSZWFkeVN0YXRlKSk7ICAgICAgICAKKyAgICAgICAgLy8gSWYgbmV4
dCBzdGF0ZSBpcyBsZXNzIHRoYW4gbmV3IHJlYWRpbmVzcyBzdGF0ZSwgdGhlbiByZXR1cm4gdG8g
dGhlIHN0ZXAgbGFiZWxlZCBsb29wCisgICAgfSB3aGlsZSAobmV4dFN0YXRlIDwgbmV3UmVhZHlT
dGF0ZSk7CisKKyAgICAvLyBMZXQgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1vc3QgcmVjZW50bHkg
cmVwb3J0ZWQgcmVhZGluZXNzIHN0YXRlIGJlIG5ldyByZWFkaW5lc3Mgc3RhdGUuCisgICAgbV9y
ZWFkeVN0YXRlID0gbmV3UmVhZHlTdGF0ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVw
ZGF0ZVBsYXliYWNrU3RhdGUoKQoreworICAgIFBsYXliYWNrU3RhdGUgb2xkUGxheWJhY2tTdGF0
ZSA9IG1fcGxheWJhY2tTdGF0ZTsKKyAgICBQbGF5YmFja1N0YXRlIG5ld1BsYXliYWNrU3RhdGU7
CisKKyAgICAvLyBJbml0aWFsaXplIG5ldyBwbGF5YmFjayBzdGF0ZSBieSBzZXR0aW5nIGl0IHRv
IHRoZSBzdGF0ZSBnaXZlbiBmb3IgdGhlIGZpcnN0IG1hdGNoaW5nIAorICAgIC8vIGNvbmRpdGlv
biBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDoKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1w
dHkoKSkgeworICAgICAgICAvLyBJZiB0aGUgTWVkaWFDb250cm9sbGVyIGhhcyBubyBzbGF2ZWQg
bWVkaWEgZWxlbWVudHMKKyAgICAgICAgLy8gTGV0IG5ldyBwbGF5YmFjayBzdGF0ZSBiZSB3YWl0
aW5nLgorICAgICAgICBuZXdQbGF5YmFja1N0YXRlID0gV0FJVElORzsKKyAgICB9IGVsc2UgaWYg
KGhhc0VuZGVkKCkpIHsKKyAgICAgICAgLy8gSWYgYWxsIG9mIHRoZSBNZWRpYUNvbnRyb2xsZXIn
cyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgaGF2ZSBlbmRlZCBwbGF5YmFjayBhbmQgdGhlIG1lZGlh
CisgICAgICAgIC8vIGNvbnRyb2xsZXIgcGxheWJhY2sgcmF0ZSBpcyBwb3NpdGl2ZSBvciB6ZXJv
CisgICAgICAgIC8vIExldCBuZXcgcGxheWJhY2sgc3RhdGUgYmUgZW5kZWQuCisgICAgICAgIG5l
d1BsYXliYWNrU3RhdGUgPSBFTkRFRDsKKyAgICB9IGVsc2UgaWYgKGlzQmxvY2tlZCgpKSB7Cisg
ICAgICAgIC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIgaXMgYSBibG9ja2VkIG1lZGlhIGNvbnRy
b2xsZXIKKyAgICAgICAgLy8gTGV0IG5ldyBwbGF5YmFjayBzdGF0ZSBiZSB3YWl0aW5nLgorICAg
ICAgICBuZXdQbGF5YmFja1N0YXRlID0gV0FJVElORzsKKyAgICB9IGVsc2UgeworICAgICAgICAv
LyBPdGhlcndpc2UKKyAgICAgICAgLy8gTGV0IG5ldyBwbGF5YmFjayBzdGF0ZSBiZSBwbGF5aW5n
LgorICAgICAgICBuZXdQbGF5YmFja1N0YXRlID0gUExBWUlORzsKKyAgICB9CisKKyAgICAvLyBJ
ZiB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbW9zdCByZWNlbnRseSByZXBvcnRlZCBwbGF5YmFjayBz
dGF0ZSBpcyBub3QgZXF1YWwgdG8gbmV3IHBsYXliYWNrIHN0YXRlCisgICAgaWYgKG5ld1BsYXli
YWNrU3RhdGUgPT0gb2xkUGxheWJhY2tTdGF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
YW5kIHRoZSBuZXcgcGxheWJhY2sgc3RhdGUgaXMgZW5kZWQsCisgICAgaWYgKG5ld1BsYXliYWNr
U3RhdGUgPT0gRU5ERUQpIHsKKyAgICAgICAgLy8gdGhlbiBxdWV1ZSBhIHRhc2sgdGhhdCwgaWYg
dGhlIE1lZGlhQ29udHJvbGxlciBvYmplY3QgaXMgYSBwbGF5aW5nIG1lZGlhIGNvbnRyb2xsZXIs
IGFuZCAKKyAgICAgICAgLy8gYWxsIG9mIHRoZSBNZWRpYUNvbnRyb2xsZXIncyBzbGF2ZWQgbWVk
aWEgZWxlbWVudHMgaGF2ZSBzdGlsbCBlbmRlZCBwbGF5YmFjaywgYW5kIHRoZSAKKyAgICAgICAg
Ly8gbWVkaWEgY29udHJvbGxlciBwbGF5YmFjayByYXRlIGlzIHN0aWxsIHBvc2l0aXZlIG9yIHpl
cm8sIAorICAgICAgICBpZiAoIW1fcGF1c2VkICYmIGhhc0VuZGVkKCkpIHsKKyAgICAgICAgICAg
IC8vIGNoYW5nZXMgdGhlIE1lZGlhQ29udHJvbGxlciBvYmplY3QgdG8gYSBwYXVzZWQgbWVkaWEg
Y29udHJvbGxlcgorICAgICAgICAgICAgbV9wYXVzZWQgPSB0cnVlOworICAgICAgICAgICAgbV9j
bG9jay0+c3RvcCgpOworCisgICAgICAgICAgICAvLyBhbmQgdGhlbiBmaXJlcyBhIHNpbXBsZSBl
dmVudCBuYW1lZCBwYXVzZSBhdCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdC4KKyAgICAgICAg
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgLy8gSWYgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1vc3QgcmVjZW50bHkgcmVw
b3J0ZWQgcGxheWJhY2sgc3RhdGUgaXMgbm90IGVxdWFsIHRvIG5ldyBwbGF5YmFjayBzdGF0ZQor
ICAgIC8vIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgYXQgdGhlIE1l
ZGlhQ29udHJvbGxlciBvYmplY3QsIHdob3NlIG5hbWUgaXMgcGxheWluZyAKKyAgICAvLyBpZiBu
ZXcgcGxheWJhY2sgc3RhdGUgaXMgcGxheWluZywgZW5kZWQgaWYgbmV3IHBsYXliYWNrIHN0YXRl
IGlzIGVuZGVkLCBhbmQgd2FpdGluZyBvdGhlcndpc2UuCisgICAgQXRvbWljU3RyaW5nIGV2ZW50
TmFtZTsKKyAgICBzd2l0Y2ggKG5ld1BsYXliYWNrU3RhdGUpIHsKKyAgICBjYXNlIFdBSVRJTkc6
CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS53YWl0aW5nRXZlbnQ7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgRU5ERUQ6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMo
KS5lbmRlZEV2ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBMQVlJTkc6CisgICAgICAg
IGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5wbGF5aW5nRXZlbnQ7CisgICAgICAgIG1fY2xvY2st
PnN0YXJ0KCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZSk7CisKKyAg
ICAvLyBMZXQgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1vc3QgcmVjZW50bHkgcmVwb3J0ZWQgcGxh
eWJhY2sgc3RhdGUgYmUgbmV3IHBsYXliYWNrIHN0YXRlLgorICAgIG1fcGxheWJhY2tTdGF0ZSA9
IG5ld1BsYXliYWNrU3RhdGU7CisKKyAgICB1cGRhdGVNZWRpYUVsZW1lbnRzKCk7Cit9CisKK3Zv
aWQgTWVkaWFDb250cm9sbGVyOjp1cGRhdGVNZWRpYUVsZW1lbnRzKCkKK3sKKyAgICBmb3IgKHNp
emVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkK
KyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+dXBkYXRlUGxheVN0YXRlKCk7Cit9CisK
K3ZvaWQgTWVkaWFDb250cm9sbGVyOjpicmluZ0VsZW1lbnRVcFRvU3BlZWQoSFRNTE1lZGlhRWxl
bWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudCk7CisgICAgQVNTRVJUKG1fbWVk
aWFFbGVtZW50cy5jb250YWlucyhlbGVtZW50KSk7CisKKyAgICAvLyBXaGVuIHRoZSB1c2VyIGFn
ZW50IGlzIHRvIGJyaW5nIGEgbWVkaWEgZWxlbWVudCB1cCB0byBzcGVlZCB3aXRoIGl0cyBuZXcg
bWVkaWEgY29udHJvbGxlciwKKyAgICAvLyBpdCBtdXN0IHNlZWsgdGhhdCBtZWRpYSBlbGVtZW50
IHRvIHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtZWRpYSBjb250cm9sbGVyIHBvc2l0aW9uIHJlbGF0
aXZlCisgICAgLy8gdG8gdGhlIG1lZGlhIGVsZW1lbnQncyB0aW1lbGluZS4KKyAgICBFeGNlcHRp
b25Db2RlIGlnbm9yZWRDb2RlID0gMDsKKyAgICBlbGVtZW50LT5zZWVrKGN1cnJlbnRUaW1lKCks
IGlnbm9yZWRDb2RlKTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6OmlzQmxvY2tlZCgpIGNv
bnN0Cit7CisgICAgLy8gQSBNZWRpYUNvbnRyb2xsZXIgaXMgYSBibG9ja2VkIG1lZGlhIGNvbnRy
b2xsZXIgaWYgdGhlIE1lZGlhQ29udHJvbGxlciBpcyBhIHBhdXNlZCBtZWRpYSAKKyAgICAvLyBj
b250cm9sbGVyLAorICAgIGlmIChtX3BhdXNlZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBib29sIGFsbFBhdXNlZCA9IHRydWU7CisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAg
ICAgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCA9IG1fbWVkaWFFbGVtZW50c1tpbmRleF07Cisg
ICAgICAgIC8vICBvciBpZiBhbnkgb2YgaXRzIHNsYXZlZCBtZWRpYSBlbGVtZW50cyBhcmUgYmxv
Y2tlZCBtZWRpYSBlbGVtZW50cywKKyAgICAgICAgaWYgKGVsZW1lbnQtPmlzQmxvY2tlZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIAorICAgICAgICAvLyBvciBpZiBhbnkg
b2YgaXRzIHNsYXZlZCBtZWRpYSBlbGVtZW50cyB3aG9zZSBhdXRvcGxheWluZyBmbGFnIGlzIHRy
dWUgc3RpbGwgaGF2ZSB0aGVpciAKKyAgICAgICAgLy8gcGF1c2VkIGF0dHJpYnV0ZSBzZXQgdG8g
dHJ1ZSwKKyAgICAgICAgaWYgKGVsZW1lbnQtPmF1dG9wbGF5KCkgJiYgZWxlbWVudC0+cGF1c2Vk
KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIGlmICghZWxl
bWVudC0+cGF1c2VkKCkpCisgICAgICAgICAgICBhbGxQYXVzZWQgPSBmYWxzZTsKKyAgICB9Cisg
ICAgCisgICAgLy8gb3IgaWYgYWxsIG9mIGl0cyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgaGF2ZSB0
aGVpciBwYXVzZWQgYXR0cmlidXRlIHNldCB0byB0cnVlLgorICAgIHJldHVybiBhbGxQYXVzZWQ7
Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpoYXNFbmRlZCgpIGNvbnN0Cit7CisgICAgaWYg
KG1fY2xvY2stPnBsYXlSYXRlKCkgPD0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgYm9vbCBhbGxIYXZlRW5kZWQgPSB0cnVlOworICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAg
ICAgIGlmICghbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+ZW5kZWQoKSkKKyAgICAgICAgICAgIGFs
bEhhdmVFbmRlZCA9IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gYWxsSGF2ZUVuZGVkOworfQor
Cit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50TmFtZSkKK3sKKyAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5kKEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lLCBmYWxzZSwgdHJ1ZSkpOworICAgIGlmICghbV9hc3luY0V2ZW50VGltZXIuaXNB
Y3RpdmUoKSkKKyAgICAgICAgbV9hc3luY0V2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOworfQor
Cit2b2lkIE1lZGlhQ29udHJvbGxlcjo6YXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8TWVkaWFD
b250cm9sbGVyPiopCit7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBwZW5kaW5nRXZlbnRz
OworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIAorICAgIG1fcGVuZGluZ0V2ZW50cy5z
d2FwKHBlbmRpbmdFdmVudHMpOworICAgIHNpemVfdCBjb3VudCA9IHBlbmRpbmdFdmVudHMuc2l6
ZSgpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkK
KyAgICAgICAgZGlzcGF0Y2hFdmVudChwZW5kaW5nRXZlbnRzW2luZGV4XS5yZWxlYXNlKCksIGVj
KTsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFDb250cm9sbGVyOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50cy5maXJz
dCgpLT5kb2N1bWVudCgpOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6aGFzQXVkaW8oKSBj
b25zdAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVu
dHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChtX21lZGlhRWxlbWVudHNbaW5kZXhd
LT5oYXNBdWRpbygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6Omhhc1ZpZGVvKCkgY29uc3QKK3sK
KyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUo
KTsgKytpbmRleCkgeworICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+aGFzVmlk
ZW8oKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0Cit7
CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXpl
KCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmhhc0Ns
b3NlZENhcHRpb25zKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0Q2xvc2VkQ2FwdGlvbnNW
aXNpYmxlKGJvb2wgdmlzaWJsZSkKK3sKKyAgICBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZSA9IHZp
c2libGU7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50
cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnNldENs
b3NlZENhcHRpb25zVmlzaWJsZSh2aXNpYmxlKTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6
OnN1cHBvcnRzU2Nhbm5pbmcoKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsg
aW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmICgh
bV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+c3VwcG9ydHNTY2FubmluZygpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYUNv
bnRyb2xsZXI6OmJlZ2luU2NydWJiaW5nKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRp
YUVsZW1lbnRzW2luZGV4XS0+YmVnaW5TY3J1YmJpbmcoKTsKK30KKwordm9pZCBNZWRpYUNvbnRy
b2xsZXI6OmVuZFNjcnViYmluZygpCit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRl
eCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVt
ZW50c1tpbmRleF0tPmVuZFNjcnViYmluZygpOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6
Y2FuUGxheSgpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1f
bWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxl
bWVudHNbaW5kZXhdLT5jYW5QbGF5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6aXNMaXZlU3Ry
ZWFtKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRp
YUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50
c1tpbmRleF0tPmlzTGl2ZVN0cmVhbSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6Omhhc1NvdXJj
ZSgpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFF
bGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudHNb
aW5kZXhdLT5oYXNTb3VyY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpyZXR1cm5Ub1JlYWx0
aW1lKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1l
bnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+cmV0
dXJuVG9SZWFsdGltZSgpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbGxl
cjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRl
cmZhY2VGb3JNZWRpYUNvbnRyb2xsZXI7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDMwZTAwMjYwODRiOTJiZDA4ZmEwMTc0YjM0YTQx
ZjcyZjdlNTNiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFD
b250cm9sbGVyLmgKQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYUNv
bnRyb2xsZXJfaAorI2RlZmluZSBNZWRpYUNvbnRyb2xsZXJfaAorCisjaWYgRU5BQkxFKFZJREVP
KQorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNp
bmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNs
dWRlICJNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2xv
Y2s7CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3MgRXZlbnQ7CisKK2NsYXNzIE1lZGlh
Q29udHJvbGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29udHJvbGxlcj4sIHB1YmxpYyBN
ZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UsIHB1YmxpYyBFdmVudFRhcmdldCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBjcmVhdGUoKTsKKyAgICB2aXJ0
dWFsIH5NZWRpYUNvbnRyb2xsZXIoKTsKKworICAgIHZvaWQgYWRkTWVkaWFFbGVtZW50KEhUTUxN
ZWRpYUVsZW1lbnQqKTsKKyAgICB2b2lkIHJlbW92ZU1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVt
ZW50Kik7CisgICAgYm9vbCBjb250YWluc01lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kikg
Y29uc3Q7CisKKyAgICBjb25zdCBTdHJpbmcmIG1lZGlhR3JvdXAoKSBjb25zdCB7IHJldHVybiBt
X21lZGlhR3JvdXA7IH0KKyAgICAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4g
YnVmZmVyZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc2Vl
a2FibGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gcGxheWVk
KCk7CisgICAgCisgICAgdmlydHVhbCBmbG9hdCBkdXJhdGlvbigpIGNvbnN0OworICAgIHZpcnR1
YWwgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVu
dFRpbWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgcGF1
c2VkKCkgY29uc3QgeyByZXR1cm4gbV9wYXVzZWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGxheSgp
OworICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgZGVm
YXVsdFBsYXliYWNrUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0KTsKKyAgICAK
KyAgICB2aXJ0dWFsIGZsb2F0IHBsYXliYWNrUmF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQpOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgdm9sdW1l
KCkgY29uc3QgeyByZXR1cm4gbV92b2x1bWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1l
KGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAgCisgICAgdmlydHVhbCBib29sIG11dGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9tdXRlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29s
KTsKKyAgICAKKyAgICB2aXJ0dWFsIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVhZHlTdGF0ZTsgfQorCisgICAgZW51bSBQbGF5YmFja1N0YXRlIHsgV0FJVElORywg
UExBWUlORywgRU5ERUQgfTsKKyAgICB2aXJ0dWFsIFBsYXliYWNrU3RhdGUgcGxheWJhY2tTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tTdGF0ZTsgfQorCisgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCB2b2lkIGVudGVyRnVsbHNjcmVlbigpIHsgfQorCisgICAgdmlydHVhbCBib29sIGhhc0F1ZGlv
KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc1ZpZGVvKCkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIGhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldENs
b3NlZENhcHRpb25zVmlzaWJsZShib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2xvc2VkQ2FwdGlv
bnNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9jbG9zZWRDYXB0aW9uc1Zpc2libGU7IH0KKyAg
ICAKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTY2FubmluZygpIGNvbnN0OworICAgIAorICAg
IHZpcnR1YWwgdm9pZCBiZWdpblNjcnViYmluZygpOworICAgIHZpcnR1YWwgdm9pZCBlbmRTY3J1
YmJpbmcoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUGxheSgpIGNvbnN0OworICAgIAor
ICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVTdHJlYW0oKSBjb25zdDsKKyAgICAKKyAgICB2aXJ0dWFs
IGJvb2wgaGFzU291cmNlKCkgY29uc3Q7CisgICAgCisgICAgdmlydHVhbCB2b2lkIHJldHVyblRv
UmVhbHRpbWUoKTsKKworICAgIGJvb2wgaXNCbG9ja2VkKCkgY29uc3Q7CisKKyAgICAvLyBFdmVu
dFRhcmdldAorICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFDb250cm9sbGVyPjo6cmVmOworICAg
IHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFDb250cm9sbGVyPjo6ZGVyZWY7CisKK3ByaXZhdGU6Cisg
ICAgTWVkaWFDb250cm9sbGVyKCk7CisgICAgdm9pZCByZXBvcnRDb250cm9sbGVyU3RhdGUoKTsK
KyAgICB2b2lkIHVwZGF0ZVJlYWR5U3RhdGUoKTsKKyAgICB2b2lkIHVwZGF0ZVBsYXliYWNrU3Rh
dGUoKTsKKyAgICB2b2lkIHVwZGF0ZU1lZGlhRWxlbWVudHMoKTsKKyAgICB2b2lkIGJyaW5nRWxl
bWVudFVwVG9TcGVlZChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgdm9pZCBzY2hlZHVsZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKKyAgICB2b2lkIGFzeW5jRXZlbnRUaW1l
ckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbGxlcj4qKTsKKyAgICBib29sIGhhc0VuZGVkKCkgY29u
c3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdl
dCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVy
ZWYoKTsgfQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFy
Z2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIHZpcnR1YWwgRXZl
bnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRh
cmdldERhdGE7IH0KKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CisKKyAg
ICBmcmllbmQgY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKKyAgICBmcmllbmQgY2xhc3MgTWVkaWFD
b250cm9sbGVyRXZlbnRMaXN0ZW5lcjsKKyAgICBWZWN0b3I8SFRNTE1lZGlhRWxlbWVudCo+IG1f
bWVkaWFFbGVtZW50czsKKyAgICBib29sIG1fcGF1c2VkOworICAgIGZsb2F0IG1fZGVmYXVsdFBs
YXliYWNrUmF0ZTsKKyAgICBmbG9hdCBtX3ZvbHVtZTsKKyAgICBib29sIG1fbXV0ZWQ7CisgICAg
UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CisgICAgUGxheWJhY2tTdGF0ZSBtX3BsYXliYWNrU3Rh
dGU7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX3BlbmRpbmdFdmVudHM7CisgICAgVGlt
ZXI8TWVkaWFDb250cm9sbGVyPiBtX2FzeW5jRXZlbnRUaW1lcjsKKyAgICBTdHJpbmcgbV9tZWRp
YUdyb3VwOworICAgIGJvb2wgbV9jbG9zZWRDYXB0aW9uc1Zpc2libGU7CisgICAgUGFzc1JlZlB0
cjxDbG9jaz4gbV9jbG9jazsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVy
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kNGIyYTFmZDhjYjk0NDA4YTM4ZGFiYjk1NjNlYmZhNWY3MzhmYzUxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsCkBAIC0wLDAgKzEs
NjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCittb2R1bGUgaHRtbCB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAg
Q29uZGl0aW9uYWw9VklERU8sCisgICAgICAgIENhbkJlQ29uc3RydWN0ZWQsCisgICAgICAgIEdl
bmVyYXRlVG9KUywKKyAgICAgICAgRXZlbnRUYXJnZXQKKyAgICBdIE1lZGlhQ29udHJvbGxlciB7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUaW1lUmFuZ2VzIGJ1ZmZlcmVkOworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJhbmdlcyBzZWVrYWJsZTsKKworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgZG91YmxlIGR1cmF0aW9uOworICAgICAgICBhdHRyaWJ1dGUgZG91Ymxl
IGN1cnJlbnRUaW1lCisgICAgICAgICAgICBzZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOwor
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHBhdXNlZDsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFRpbWVSYW5nZXMgcGxheWVkOworICAgICAgICB2b2lkIHBsYXkoKTsK
KyAgICAgICAgdm9pZCBwYXVzZSgpOworCisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgZGVmYXVs
dFBsYXliYWNrUmF0ZTsKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBwbGF5YmFja1JhdGU7CisK
KyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSB2b2x1bWUKKyAgICAgICAgICAgIHNldHRlciByYWlz
ZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIG11dGVkOworCisg
ICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAgICB2b2lkIGFkZEV2ZW50TGlz
dGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIHZvaWQgcmVtb3Zl
RXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAg
ICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAgICAgIHJhaXNl
cyhFdmVudEV4Y2VwdGlvbik7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhQ29udHJvbGxlckludGVyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyY2Q0ZGE0MWFmNDJmNWRhMmFl
NWRmOTc3OGM0Yjg2YjdjMzU0MDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhQ29udHJvbGxlckludGVyZmFjZS5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2VfaAorI2RlZmluZSBNZWRpYUNvbnRy
b2xsZXJJbnRlcmZhY2VfaAorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUaW1lUmFuZ2VzOwor
Cit0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOworCitjbGFzcyBNZWRpYUNvbnRyb2xsZXJJbnRl
cmZhY2UgeworcHVibGljOgorICAgIHZpcnR1YWwgfk1lZGlhQ29udHJvbGxlckludGVyZmFjZSgp
IHsgfTsKKyAgICAKKyAgICAvLyBNZWRpYUNvbnRyb2xsZXIgSURMOgorICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8VGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFRpbWVSYW5nZXM+IHBsYXllZCgpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGZs
b2F0IGR1cmF0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFRpbWUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGZsb2F0LCBFeGNl
cHRpb25Db2RlJikgPSAwOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBwYXVzZWQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhdXNl
KCkgPSAwOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0ZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCkg
PSAwOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgcGxheWJhY2tSYXRlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQpID0gMDsKKyAgICAKKyAgICB2
aXJ0dWFsIGZsb2F0IHZvbHVtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9s
dW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBt
dXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TXV0ZWQoYm9vbCkgPSAwOwor
ICAgIAorICAgIGVudW0gUmVhZHlTdGF0ZSB7IEhBVkVfTk9USElORywgSEFWRV9NRVRBREFUQSwg
SEFWRV9DVVJSRU5UX0RBVEEsIEhBVkVfRlVUVVJFX0RBVEEsIEhBVkVfRU5PVUdIX0RBVEEgfTsK
KyAgICB2aXJ0dWFsIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKKworICAgIC8v
IE1lZGlhQ29udHJvbEVsZW1lbnRzOgorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3Jl
ZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgPSAwOworCisgICAgdmlydHVh
bCBib29sIGhhc0F1ZGlvKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29sKSA9IDA7
CisgICAgdmlydHVhbCBib29sIGNsb3NlZENhcHRpb25zVmlzaWJsZSgpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3QgPSAwOworCisgICAgdmly
dHVhbCB2b2lkIGJlZ2luU2NydWJiaW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRTY3J1
YmJpbmcoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUGxheSgpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVTdHJlYW0oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFs
IGJvb2wgaGFzU291cmNlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHJldHVyblRv
UmVhbHRpbWUoKSA9IDA7Cit9OworCit9CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9U
aW1lUmFuZ2VzLmNwcAppbmRleCA5ODRiNmJjYTQ4NTg5ZmI1ZDI2YTQ1OTQ5ZTNmZmU1NjE2NmIy
NTM1Li5kNjhlYTAzNzE4MzMyYmVlNmRiNmYwNzk5YzEyNjE1MTdiZjE1ZGZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGltZVJhbmdlcy5jcHAKQEAgLTMxLDEzICszMSwxNCBAQAogI2luY2x1ZGUgPG1hdGgu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBU
aW1lUmFuZ2VzOjpUaW1lUmFuZ2VzKGZsb2F0IHN0YXJ0LCBmbG9hdCBlbmQpCiB7CiAgICAgYWRk
KHN0YXJ0LCBlbmQpOwogfQogCi1QYXNzUmVmUHRyPFRpbWVSYW5nZXM+IFRpbWVSYW5nZXM6OmNv
cHkoKQorUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1lUmFuZ2VzOjpjb3B5KCkgY29uc3QKIHsK
ICAgICBSZWZQdHI8VGltZVJhbmdlcz4gbmV3U2Vzc2lvbiA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgp
OwogICAgIApAQCAtNDgsNiArNDksNTEgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1lUmFu
Z2VzOjpjb3B5KCkKICAgICByZXR1cm4gbmV3U2Vzc2lvbi5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQg
VGltZVJhbmdlczo6aW52ZXJ0KCkKK3sKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gaW52ZXJ0ZWQg
PSBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKyAgICBmbG9hdCBwb3NJbmYgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKKyAgICBmbG9hdCBuZWdJbmYgPSAtc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CisKKyAgICBpZiAoIW1fcmFuZ2VzLnNpemUo
KSkKKyAgICAgICAgaW52ZXJ0ZWQtPmFkZChuZWdJbmYsIHBvc0luZik7CisgICAgZWxzZSB7Cisg
ICAgICAgIGlmIChmbG9hdCBzdGFydCA9IG1fcmFuZ2VzLmZpcnN0KCkubV9zdGFydCAhPSBuZWdJ
bmYpCisgICAgICAgICAgICBpbnZlcnRlZC0+YWRkKG5lZ0luZiwgc3RhcnQpOworCisgICAgICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggKyAxIDwgbV9yYW5nZXMuc2l6ZSgpOyArK2lu
ZGV4KQorICAgICAgICAgICAgaW52ZXJ0ZWQtPmFkZChtX3Jhbmdlc1tpbmRleF0ubV9lbmQsIG1f
cmFuZ2VzW2luZGV4ICsgMV0ubV9zdGFydCk7CisKKyAgICAgICAgaWYgKGZsb2F0IGVuZCA9IG1f
cmFuZ2VzLmxhc3QoKS5tX2VuZCAhPSBwb3NJbmYpCisgICAgICAgICAgICBpbnZlcnRlZC0+YWRk
KGVuZCwgcG9zSW5mKTsKKyAgICB9CisKKyAgICBtX3Jhbmdlcy5zd2FwKGludmVydGVkLT5tX3Jh
bmdlcyk7Cit9CisKK3ZvaWQgVGltZVJhbmdlczo6aW50ZXJzZWN0V2l0aChjb25zdCBUaW1lUmFu
Z2VzKiBvdGhlcikKK3sKKyAgICBBU1NFUlQob3RoZXIpOworICAgIFJlZlB0cjxUaW1lUmFuZ2Vz
PiBpbnZlcnRlZCA9IGNvcHkoKTsKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gaW52ZXJ0ZWRPdGhl
ciA9IG90aGVyLT5jb3B5KCk7CisgICAgaW52ZXJ0ZWQtPnVuaW9uV2l0aChpbnZlcnRlZE90aGVy
LmdldCgpKTsKKyAgICBpbnZlcnRlZC0+aW52ZXJ0KCk7CisKKyAgICBtX3Jhbmdlcy5zd2FwKGlu
dmVydGVkLT5tX3Jhbmdlcyk7Cit9CisKK3ZvaWQgVGltZVJhbmdlczo6dW5pb25XaXRoKGNvbnN0
IFRpbWVSYW5nZXMqIG90aGVyKQoreworICAgIEFTU0VSVChvdGhlcik7CisgICAgUmVmUHRyPFRp
bWVSYW5nZXM+IHVuaW9uZWQgPSBjb3B5KCk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBp
bmRleCA8IG90aGVyLT5tX3Jhbmdlcy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgY29uc3Qg
UmFuZ2UmIHJhbmdlID0gb3RoZXItPm1fcmFuZ2VzW2luZGV4XTsKKyAgICAgICAgdW5pb25lZC0+
YWRkKHJhbmdlLm1fc3RhcnQsIHJhbmdlLm1fZW5kKTsKKyAgICB9CisKKyAgICBtX3Jhbmdlcy5z
d2FwKHVuaW9uZWQtPm1fcmFuZ2VzKTsKK30KKwogZmxvYXQgVGltZVJhbmdlczo6c3RhcnQodW5z
aWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAKIHsgCiAgICAgaWYgKGluZGV4
ID49IGxlbmd0aCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5n
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oCmluZGV4IGQxZDU2Mzc5MjNm
MDcyZjc2Y2IzN2JiNjFlNzIwNmJkMDczOTIxMGYuLjQyNTc2OTAzNmFjOGVmMjczODc4NDdmMzBh
YzQxZmZlNzMwNGI1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oCkBAIC00Niw3ICs0Niwx
MCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGltZVJhbmdlcyhzdGFy
dCwgZW5kKSk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBjb3B5KCk7Cisg
ICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBjb3B5KCkgY29uc3Q7CisgICAgdm9pZCBpbnZlcnQo
KTsKKyAgICB2b2lkIGludGVyc2VjdFdpdGgoY29uc3QgVGltZVJhbmdlcyopOworICAgIHZvaWQg
dW5pb25XaXRoKGNvbnN0IFRpbWVSYW5nZXMqKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmFuZ2VzLnNpemUoKTsgfQogICAgIGZsb2F0IHN0YXJ0KHVuc2lnbmVk
IGluZGV4LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwK
aW5kZXggYmQ5YjIzN2M3NTQ5MTA0Y2YzMWM4Y2NlYzI1MjE1ZjdiYmRlNTk0MS4uZjc5MjhjMDZl
ZGMzZDg2Nzk3ZDliZDZlMjNmZDEyNDE2Y2EwMmZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmlkbApAQCAtNjM0LDYgKzYzNCw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1
dGUgW0NvbmRpdGlvbmFsPVZJREVPLCBFbmFibGVkQXRSdW50aW1lXSBNZWRpYUVycm9yQ29uc3Ry
dWN0b3IgTWVkaWFFcnJvcjsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1WSURFTywg
RW5hYmxlZEF0UnVudGltZV0gVGltZVJhbmdlc0NvbnN0cnVjdG9yIFRpbWVSYW5nZXM7CiAgICAg
ICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU8sIEVuYWJsZWRBdFJ1bnRpbWVdIEhUTUxT
b3VyY2VFbGVtZW50Q29uc3RydWN0b3IgSFRNTFNvdXJjZUVsZW1lbnQ7CisgICAgICAgIGF0dHJp
YnV0ZSBbQ29uZGl0aW9uYWw9VklERU8sIEVuYWJsZWRBdFJ1bnRpbWVdIE1lZGlhQ29udHJvbGxl
ckNvbnN0cnVjdG9yIE1lZGlhQ29udHJvbGxlcjsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0FOSU1B
VElPTl9BUEkpICYmIEVOQUJMRV9BTklNQVRJT05fQVBJCiAgICAgICAgIGF0dHJpYnV0ZSBXZWJL
aXRBbmltYXRpb25Db25zdHJ1Y3RvciBXZWJLaXRBbmltYXRpb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9ja0dlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ2xvY2tHZW5lcmljLmNwcAppbmRleCAyODk2MGMzMDNmMWZhZWQ5YmFlMzE4Y2Y1ZDYz
NzljZDZhNWVlZTdmLi5hZWFmODY3OTEzMzFiZTNiYmVjY2IzMGYyZTg0ZjNjZTYwNGY2NzEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9ja0dlbmVyaWMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrR2VuZXJpYy5jcHAKQEAgLTM2LDI3ICszNiwy
NyBAQCBDbG9ja0dlbmVyaWM6OkNsb2NrR2VuZXJpYygpCiAgICAgLCBtX3JhdGUoMSkKICAgICAs
IG1fb2Zmc2V0KDApCiB7Ci0gICAgbV9zdGFydFRpbWUgPSBtX2xhc3RUaW1lID0gY3VycmVudFRp
bWUoKTsKKyAgICBtX3N0YXJ0VGltZSA9IG1fbGFzdFRpbWUgPSBub3coKTsKIH0KIAogdm9pZCBD
bG9ja0dlbmVyaWM6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRpbWUpCiB7Ci0gICAgbV9zdGFydFRp
bWUgPSBtX2xhc3RUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICBtX3N0YXJ0VGltZSA9IG1fbGFz
dFRpbWUgPSBub3coKTsKICAgICBtX29mZnNldCA9IHRpbWU7CiB9CiAKIGZsb2F0IENsb2NrR2Vu
ZXJpYzo6Y3VycmVudFRpbWUoKSBjb25zdAogewogICAgIGlmIChtX3J1bm5pbmcpCi0gICAgICAg
IG1fbGFzdFRpbWUgPSBjdXJyZW50VGltZSgpOworICAgICAgICBtX2xhc3RUaW1lID0gbm93KCk7
CiAgICAgZmxvYXQgdGltZSA9IChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG1fbGFzdFRpbWUgLSBt
X3N0YXJ0VGltZSkgKiBtX3JhdGUpICsgbV9vZmZzZXQ7CiAgICAgcmV0dXJuIHRpbWU7CiB9CiAK
IHZvaWQgQ2xvY2tHZW5lcmljOjpzZXRQbGF5UmF0ZShmbG9hdCByYXRlKQogewotICAgIG1fb2Zm
c2V0ID0gY3VycmVudFRpbWUoKTsKLSAgICBtX2xhc3RUaW1lID0gbV9zdGFydFRpbWUgPSBjdXJy
ZW50VGltZSgpOworICAgIG1fb2Zmc2V0ID0gbm93KCk7CisgICAgbV9sYXN0VGltZSA9IG1fc3Rh
cnRUaW1lID0gbm93KCk7CiAgICAgbV9yYXRlID0gcmF0ZTsKIH0KIApAQCAtNjUsNyArNjUsNyBA
QCB2b2lkIENsb2NrR2VuZXJpYzo6c3RhcnQoKQogICAgIGlmIChtX3J1bm5pbmcpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fbGFzdFRpbWUgPSBtX3N0YXJ0VGltZSA9IGN1cnJlbnRUaW1lKCk7
CisgICAgbV9sYXN0VGltZSA9IG1fc3RhcnRUaW1lID0gbm93KCk7CiAgICAgbV9ydW5uaW5nID0g
dHJ1ZTsKIH0KIApAQCAtNzQsNyArNzQsMTMgQEAgdm9pZCBDbG9ja0dlbmVyaWM6OnN0b3AoKQog
ICAgIGlmICghbV9ydW5uaW5nKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX29mZnNldCA9IGN1
cnJlbnRUaW1lKCk7Ci0gICAgbV9sYXN0VGltZSA9IG1fc3RhcnRUaW1lID0gY3VycmVudFRpbWUo
KTsKKyAgICBtX29mZnNldCA9IG5vdygpOworICAgIG1fbGFzdFRpbWUgPSBtX3N0YXJ0VGltZSA9
IG5vdygpOwogICAgIG1fcnVubmluZyA9IGZhbHNlOwogfQorCitmbG9hdCBDbG9ja0dlbmVyaWM6
Om5vdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6Y3VycmVudFRpbWUoKTsKK30KKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9DbG9ja0dlbmVyaWMuaAppbmRleCA3MmIwY2IwMWMwZWMxMDBhYzNm
YTcxZjljZTEwZDIwMDRhNTUzNGM3Li41Yjc1YmY2M2YyMjJkY2U4NzUzOTI5OWQwMDdhMmQ5N2Vj
MTI3OGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9ja0dlbmVyaWMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9ja0dlbmVyaWMuaApAQCAtNDUsNiAr
NDUsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAgICAgdmlydHVhbCBi
b29sIGlzUnVubmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcnVubmluZzsgfQogCisgICAgZmxvYXQg
bm93KCkgY29uc3Q7CisKICAgICBib29sIG1fcnVubmluZzsKICAgICBmbG9hdCBtX3JhdGU7CiAg
ICAgZmxvYXQgbV9vZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHAKaW5kZXggMDE4YzdkZDMzZTM4YzFiOGY3NzM0NWE4YzNlNGY4MzVm
ZWM2MGE3My4uZmM3N2ZmMjg4MzhiN2MwOTRhYTUzYTRmYmRmMDcxNjgwY2EyMjEzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAt
NjA5LDYgKzYwOSwxMSBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxheWVyOjpidWZm
ZXJlZCgpCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YnVmZmVyZWQoKTsKIH0KIAorUGFzc1JlZlB0
cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXllcjo6c2Vla2FibGUoKQoreworICAgIHJldHVybiBtX3By
aXZhdGUtPnNlZWthYmxlKCk7Cit9CisKIGZsb2F0IE1lZGlhUGxheWVyOjptYXhUaW1lU2Vla2Fi
bGUoKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPm1heFRpbWVTZWVrYWJsZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggYzk2YjAy
NWQ4MmQwMDcwOTE2OWVlYTUxYzA3ODI2Yjc0NTA2YzQ3MS4uNDc3MzlhMDhiMGUzZDljYzczYzk5
YTEzMTQzNGE3OGFlMDM3NDU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oCkBAIC0yNDEsNiArMjQxLDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0UHJlc2VydmVzUGl0Y2goYm9vbCk7CiAKICAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1
ZmZlcmVkKCk7CisgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpOwogICAgIGZs
b2F0IG1heFRpbWVTZWVrYWJsZSgpOwogCiAgICAgdW5zaWduZWQgYnl0ZXNMb2FkZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmgKaW5kZXggZjhjNzBhYmUyOGE3ZWQwMWRmYjhhMmNiN2YxYzYzNjYzN2QzODQ0MS4uNmM1
MjdkN2U1Y2QzODk5OTE2YjQ2NWVmNzJkNTcxNDQwNTZlZDdlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTI5
LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoVklERU8pCiAKICNpbmNsdWRlICJNZWRpYVBsYXllci5o
IgorI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05MSw2ICs5Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsK
IAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIG1heFRpbWVTZWVrYWJsZSgpID8gVGltZVJhbmdlczo6Y3JlYXRlKDAsIG1heFRpbWVT
ZWVrYWJsZSgpKSA6IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOyB9CiAgICAgdmlydHVhbCBmbG9hdCBt
YXhUaW1lU2Vla2FibGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVS
YW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDZlOWMxNmUwZjk2YzA5ZDc1
NDZkMmYxZTQ3Yzg2YjQzZjJlY2Y5MC4uZDdkOTQ1OGRlMmMwNTQ4ZDA1ZjcyNTg4ZWZhMGYzNTg3
MDhmMWY4MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDExLTExLTAzICBKZXIgTm9ibGUgIDxq
ZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNvbnRyb2xsZXIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTQwOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEv
bWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21l
ZGlhLWNvbnRyb2xsZXItcGxheWJhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBt
ZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbDogQWRkZWQuCisKKzIwMTEtMTEtMDMgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IE1lZGlhQ29udHJv
bGxlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
NDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBt
ZWRpYS9tZWRpYS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVk
aWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbDogQWRkZWQuCisgICAgICAg
ICogbWVkaWEvbWVkaWEtY29udHJvbGxlci5odG1sOiBBZGRlZC4KKworMjAxMS0xMS0wMiAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgTWVkaWFD
b250cm9sbGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzE0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLmh0bWw6IEFkZGVkLgorCiAyMDExLTExLTEw
ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hyb21pdW0gcmVi
YXNlbGluZXMgYWZ0ZXIgcjk5OTAyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVk
aWEtY29udHJvbGxlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250
cm9sbGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzY5ZGQwY2Y5ZmUyMWM5ZmFhYTVkMmE5
YjhjZDg2MjMzZjM1YWE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVk
aWEtY29udHJvbGxlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNSBAQAorIAorVGVzdCBwcmVz
ZW5jZSBvZiBNZWRpYUNvbnRyb2xsZXIgY29uc3RydWN0b3IsIG1lZGlhQ29udHJvbGxlciwgYW5k
IG1lZGlhR3JvdXAgYXR0cmlidXRlczoKK0VYUEVDVEVEICh0eXBlb2YoTWVkaWFDb250cm9sbGVy
KSAhPSAndW5kZWZpbmVkJykgT0sKK0VYUEVDVEVEICh2aWRlby5tZWRpYUNvbnRyb2xsZXIgPT0g
J251bGwnKSBPSworRVhQRUNURUQgKHZpZGVvLm1lZGlhR3JvdXAgPT0gJycpIE9LCisKK1Rlc3Qg
dGhhdCB0aGUgcHJlc2VuY2Ugb2YgYSBtZWRpYUdyb3VwIGF0dHJpYnV0ZSBjcmVhdGVzIGEgbWVk
aWFDb250cm9sbGVyOgorRVhQRUNURUQgKHZpZGVvMi5tZWRpYUdyb3VwID09ICdncm91cCcpIE9L
CitFWFBFQ1RFRCAodmlkZW8yLm1lZGlhQ29udHJvbGxlciAhPSAnbnVsbCcpIE9LCisKK1Rlc3Qg
dGhhdCBzZXR0aW5nIG1lZGlhR3JvdXAgdG8gYW4gZW1wdHkgc3RyaW5nIHJlbW92ZXMgdGhlIG1l
ZGlhQ29udHJvbGxlcjoKK1JVTih2aWRlby5tZWRpYUdyb3VwID0gJycpCitFWFBFQ1RFRCAodmlk
ZW8ubWVkaWFDb250cm9sbGVyID09ICdudWxsJykgT0sKKworVGVzdCBtYW51YWxseSBjcmVhdGlu
ZyBhbmQgYXNzaWduaW5nIGEgbWVkaWFDb250cm9sbGVyIHRvIGEgbWVkaWEgZWxlbWVudDoKK1JV
Tihjb250cm9sbGVyID0gbmV3IE1lZGlhQ29udHJvbGxlcigpKQorUlVOKHZpZGVvLm1lZGlhQ29u
dHJvbGxlciA9IGNvbnRyb2xsZXIpCitFWFBFQ1RFRCAodmlkZW8ubWVkaWFDb250cm9sbGVyID09
ICdbb2JqZWN0IE1lZGlhQ29udHJvbGxlcl0nKSBPSworCitUZXN0IHRoYXQgdHdvIG1lZGlhIGVs
ZW1lbnRzIHdpdGggdGhlIHNhbWUgbWVkaWFHcm91cCBoYXZlIHRoZSBzYW1lIG1lZGlhQ29udHJv
bGxlcjoKK1JVTih2aWRlby5tZWRpYUdyb3VwID0gJ2dyb3VwJykKK1JVTih2aWRlbzIubWVkaWFH
cm91cCA9ICdncm91cCcpCitFWFBFQ1RFRCAodmlkZW8ubWVkaWFDb250cm9sbGVyID09PSB2aWRl
bzIubWVkaWFDb250cm9sbGVyID09ICd0cnVlJykgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2stZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjhhOGUwOTIxM2VlMWE3MTA3YjgxMWFiOWY4ODNhZDQwMTJhM2Zh
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXIt
cGxheWJhY2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKKyAKK1JVTihjb250cm9sbGVy
ID0gdmlkZW8ubWVkaWFDb250cm9sbGVyKQorRVZFTlQoY2FucGxheXRocm91Z2gpCitSVU4oY29u
dHJvbGxlci5jdXJyZW50VGltZSA9IDUpCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPT0g
JzUnKSBPSworRVhQRUNURUQgKHZpZGVvMi5jdXJyZW50VGltZSA9PSAnNScpIE9LCitSVU4odmlk
ZW8ucGxheSgpKQorUlVOKHZpZGVvMi5wbGF5KCkpCitSVU4oY29udHJvbGxlci5wbGF5KCkpCitF
VkVOVChwbGF5aW5nKQorRVhQRUNURUQgKGNvbnRyb2xsZXIucGF1c2VkID09ICdmYWxzZScpIE9L
CitFVkVOVChlbmRlZCkKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21l
ZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21l
ZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzJiODNlZjFhYTg4OTZk
N2MyMjA3ZjdhOTQ2NDkwZjNjY2Y1ZjJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
bWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPW1l
ZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+
PC9zY3JpcHQ+CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgdmFyIGNvbnRyb2xsZXI7Cisg
ICAgICAgIHZhciB2aWRlbzI7CisKKyAgICAgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAg
ICAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBdOwor
ICAgICAgICAgICAgdmlkZW8yID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVv
JylbMV07CisgICAgICAgICAgICBydW4oJ2NvbnRyb2xsZXIgPSB2aWRlby5tZWRpYUNvbnRyb2xs
ZXInKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcignY2FucGxheXRo
cm91Z2gnLCBjYW5wbGF5dGhyb3VnaCwgdHJ1ZSk7CisgICAgICAgICAgICBzZXRTcmNCeVRhZ05h
bWUoJ3ZpZGVvJywgZmluZE1lZGlhRmlsZSgndmlkZW8nLCAnY29udGVudC90ZXN0JykpOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBjYW5wbGF5dGhyb3VnaCgpIHsKKyAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQoY2FucGxheXRocm91Z2gpIik7CisgICAgICAg
ICAgICBjb250cm9sbGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NhbnBsYXl0aHJvdWdoJywgY2Fu
cGxheXRocm91Z2gsIHRydWUpOworICAgICAgICAgICAgcnVuKCdjb250cm9sbGVyLmN1cnJlbnRU
aW1lID0gNScpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5jdXJyZW50VGltZScs
IDUpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlbzIuY3VycmVudFRpbWUnLCA1KTsK
KyAgICAgICAgICAgIHJ1bigndmlkZW8ucGxheSgpJyk7CisgICAgICAgICAgICBydW4oJ3ZpZGVv
Mi5wbGF5KCknKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcigncGxh
eWluZycsIHBsYXlpbmcsIHRydWUpOworICAgICAgICAgICAgcnVuKCdjb250cm9sbGVyLnBsYXko
KScpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBwbGF5aW5nKCkgeyAK
KyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQocGxheWluZykiKTsKKyAgICAgICAgICAg
IGNvbnRyb2xsZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHBsYXlpbmcsIHRydWUp
OworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdjb250cm9sbGVyLnBhdXNlZCcsIGZhbHNlKTsK
KyAgICAgICAgICAgIGNvbnRyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcignZW5kZWQnLCBlbmRlZCwg
dHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBlbmRlZCgpIHsgCisgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGVuZGVkKSIpOworICAgICAgICAgICAgY29udHJvbGxl
ci5yZW1vdmVFdmVudExpc3RlbmVyKCdlbmRlZCcsIGVuZGVkLCB0cnVlKTsKKyAgICAgICAgICAg
IGVuZFRlc3QoKTsKKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHZpZGVvIG1lZGlhR3JvdXA9Imdy
b3VwIiBjb250cm9scz48L3ZpZGVvPgorICAgICAgICA8dmlkZW8gbWVkaWFHcm91cD0iZ3JvdXAi
IGNvbnRyb2xzPjwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xs
ZXIuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jMzFjNDhkYjA0NzgyY2E0NTRmMmY1YTQwZGZlYzI0YjcyNTJjMTRhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci5odG1sCkBAIC0wLDAg
KzEsNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxz
Y3JpcHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPXZp
ZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgdmFyIGNv
bnRyb2xsZXI7CisgICAgICAgIHZhciB2aWRlbzI7CisKKyAgICAgICAgZnVuY3Rpb24gc3RhcnQo
KSB7CisgICAgICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2
aWRlbycpWzBdOworICAgICAgICAgICAgdmlkZW8yID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoJ3ZpZGVvJylbMV07CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCBwcmVz
ZW5jZSBvZiBNZWRpYUNvbnRyb2xsZXIgY29uc3RydWN0b3IsIG1lZGlhQ29udHJvbGxlciwgYW5k
IG1lZGlhR3JvdXAgYXR0cmlidXRlczoiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHlw
ZW9mKE1lZGlhQ29udHJvbGxlcikiLCAidW5kZWZpbmVkIiwgIiE9Iik7CisgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciIsIG51bGwpOworICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRpYUdyb3VwIiwgIiIpOworICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCB0aGF0IHRoZSBwcmVz
ZW5jZSBvZiBhIG1lZGlhR3JvdXAgYXR0cmlidXRlIGNyZWF0ZXMgYSBtZWRpYUNvbnRyb2xsZXI6
IikKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8yLm1lZGlhR3JvdXAiLCAnZ3JvdXAn
KTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8yLm1lZGlhQ29udHJvbGxlciIsIG51
bGwsICIhPSIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiVGVzdCB0aGF0IHNldHRpbmcgbWVkaWFHcm91cCB0byBhbiBlbXB0eSBzdHJp
bmcgcmVtb3ZlcyB0aGUgbWVkaWFDb250cm9sbGVyOiIpCisgICAgICAgICAgICBydW4oInZpZGVv
Lm1lZGlhR3JvdXAgPSAnJyIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRp
YUNvbnRyb2xsZXIiLCBudWxsKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgbWFudWFsbHkgY3JlYXRpbmcgYW5kIGFzc2lnbmlu
ZyBhIG1lZGlhQ29udHJvbGxlciB0byBhIG1lZGlhIGVsZW1lbnQ6IikKKyAgICAgICAgICAgIHJ1
bigiY29udHJvbGxlciA9IG5ldyBNZWRpYUNvbnRyb2xsZXIoKSIpOworICAgICAgICAgICAgcnVu
KCJ2aWRlby5tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyIik7CisgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciIsIGNvbnRyb2xsZXIpOworICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCB0aGF0
IHR3byBtZWRpYSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIG1lZGlhR3JvdXAgaGF2ZSB0aGUgc2Ft
ZSBtZWRpYUNvbnRyb2xsZXI6IikKKyAgICAgICAgICAgIHJ1bigidmlkZW8ubWVkaWFHcm91cCA9
ICdncm91cCciKTsKKyAgICAgICAgICAgIHJ1bigidmlkZW8yLm1lZGlhR3JvdXAgPSAnZ3JvdXAn
Iik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciA9PT0g
dmlkZW8yLm1lZGlhQ29udHJvbGxlciIsIHRydWUpOworICAgICAgICAgICAgZW5kVGVzdCgpOwor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9InN0YXJ0KCkiPgorICAgICAgICA8dmlkZW8+PC92aWRlbz4KKyAgICAgICAgPHZpZGVvIG1l
ZGlhZ3JvdXA9Imdyb3VwIj48L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1saW9uL2Zhc3QvcmVnaW9ucy9yZW5kZXItcmVn
aW9uLWN1c3RvbS1zdHlsZS1tYXJrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy1saW9uL2Zhc3QvcmVnaW9ucy9yZW5kZXItcmVnaW9uLWN1c3RvbS1zdHlsZS1tYXJrLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjc0ZWE5ZTRmYTg1MGE5Mzg0M2UzY2Y4ZGJiYTY1NGRi
MzkzMDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxpb24v
ZmFzdC9yZWdpb25zL3JlbmRlci1yZWdpb24tY3VzdG9tLXN0eWxlLW1hcmstZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMzQgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJW
aWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTY2Cisg
IFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHgxNjYKKyAgICBSZW5kZXJCb2R5
IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHgxNTAKKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBh
dCAoMCwwKSBzaXplIDIwMHg1MAorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTApIHNp
emUgMjAweDUwCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMTAwKSBzaXplIDIwMHg1
MAorRmxvdyBUaHJlYWRzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvdzEnCisgICAgbGF5
ZXIgYXQgKDAsMCkgc2l6ZSAyMDB4MTAwCisgICAgICBSZW5kZXJGbG93VGhyZWFkIGF0ICgwLDAp
IHNpemUgMjAweDEwMAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxNikgc2l6ZSAy
MDB4MTg4CisgICAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgMjAweDE4Cisg
ICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjh4MTgKKyAgICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTY4OiAiRmlyc3QgcGFyYSBnb2VzIGlu
dG8gcmVnaW9uLiIKKyAgICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwzNCkg
c2l6ZSAyMDB4MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDEzNHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMzQ6ICJUZXh0
IGdvZXMgaW50byByZWdpb24iCisgICAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDY4KSBz
aXplIDIwMHgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
MTg3eDE4CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE4NzogIlNlY29u
ZCBwYXJhIGdvZXMgaW50byByZWdpb24uIgorICAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAo
MCwxMDIpIHNpemUgMjAweDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSAxNzV4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTc1
OiAiVGhpcmQgcGFyYSBnb2VzIGludG8gcmVnaW9uLiIKKyAgICAgICAgICBSZW5kZXJCbG9jayAo
YW5vbnltb3VzKSBhdCAoMCwxMzYpIHNpemUgMjAweDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMzR4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggMTM0OiAiVGV4dCBnb2VzIGludG8gcmVnaW9uIgorICAgICAgICAgIFJlbmRl
ckJsb2NrIHtQfSBhdCAoMCwxNzApIHNpemUgMjAweDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxODJ4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggMTgyOiAiRm91cnRoIHBhcmEgZ29lcyBpbnRvIHJlZ2lvbi4iCisgIFJlZ2lv
bnMgZm9yIGZsb3cgJ2Zsb3cxJworICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uMSByZWdp
b24gc3R5bGU6IDEKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjMgcmVnaW9uIHN0eWxl
OiAxCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114629</attachid>
            <date>2011-11-10 22:44:42 -0800</date>
            <delta_ts>2011-11-11 15:12:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71408-20111110224441.patch</filename>
            <type>text/plain</type>
            <size>107484</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk5MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NGZkMjFmZjNmYjA1YjEz
ZDA2NzE0ZDk3Yzc3YTFiMWYyMzEwMTAyLi42OTM1YWRjZWIzZmMwYjBhZDRlZWY1MWY3YmU5MTJm
Y2E5ODY0MDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY5IEBACisyMDExLTExLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNv
bnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbAorCisgICAgICAgIEFkZHMgc3VwcG9ydCBm
b3IgdGhlIE1lZGlhQ29udHJvbGxlciBET00gb2JqZWN0LCBhbmQgdGhlIG1lZGlhZ3JvdXAgYW5k
IG1lZGlhY29udHJvbGxlcgorICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGF0dHJpYnV0ZXMuCisK
KyAgICAgICAgTWVkaWFDb250cm9sbGVyIGlzIGFuIERPTSBvYmplY3Qgd2hpY2ggc3luY2hyb25p
emVzIHBsYXliYWNrIG9mIG11bHRpcGxlIEhUTUxNZWRpYUVsZW1lbnRzLiBJdCBjYW4KKyAgICAg
ICAgZWl0aGVyIGJlIGNyZWF0ZWQgYnkgYSBwYWdlIHNjcmlwdCBhbmQgYXNzaWduZWQgdG8gYSBI
VE1MTWVkaWFFbGVtZW50IHVzaW5nIHRoZSBjb250cm9sbGVyIHByb3BlcnR5LAorICAgICAgICBv
ciBhbGwgSFRNTE1lZGlhRWxlbWVudHMgd2l0aCBpZGVudGljYWwgbWVkaWFncm91cCBhdHRyaWJ1
dGVzIHdpbGwgaGF2ZSBhIE1lZGlhQ29udHJvbGxlciBhc3NpZ25lZCAKKyAgICAgICAgYXV0b21h
dGljYWxseS4KKworICAgICAgICBBZGQgYW4gYWJzdHJhY3QgaW50ZXJmYWNlIGltcGxlbWVudGVk
IGJ5IGJvdGggTWVkaWFDb250cm9sbGVyIGFuZCBIVE1MTWVkaWFFbGVtZW50LgorICAgICAgICAq
IGh0bWwvTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sbGVySW50ZXJmYWNlOjp+TWVkaWFDb250cm9sbGVySW50ZXJmYWNlKToK
KworICAgICAgICBBZGQgdGhlIE1lZGlhQ29udHJvbGxlciBvYmplY3QgYW5kIElETC4KKyAgICAg
ICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAobWVkaWFHcm91
cFRvTWVkaWFDb250cm9sbGVyTWFwKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6bWVkaWFD
b250cm9sbGVyRm9yTWVkaWFHcm91cCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmNyZWF0
ZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Ok1lZGlhQ29udHJvbGxlcik6CisgICAgICAg
IChNZWRpYUNvbnRyb2xsZXI6On5NZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoTWVkaWFDb250
cm9sbGVyOjphZGRNZWRpYUVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpyZW1v
dmVNZWRpYUVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjb250YWluc01lZGlh
RWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmJ1ZmZlcmVkKToKKyAgICAgICAg
KE1lZGlhQ29udHJvbGxlcjo6c2Vla2FibGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpw
bGF5ZWQpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpkdXJhdGlvbik6CisgICAgICAgIChN
ZWRpYUNvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
c2V0Q3VycmVudFRpbWUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpwbGF5KToKKyAgICAg
ICAgKE1lZGlhQ29udHJvbGxlcjo6cGF1c2UpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpz
ZXREZWZhdWx0UGxheWJhY2tSYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6c2V0UGxh
eWJhY2tSYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6c2V0Vm9sdW1lKToKKyAgICAg
ICAgKE1lZGlhQ29udHJvbGxlcjo6c2V0TXV0ZWQpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVy
OjpyZXBvcnRDb250cm9sbGVyU3RhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjp1cGRh
dGVSZWFkeVN0YXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlUGxheWJhY2tT
dGF0ZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnVwZGF0ZU1lZGlhRWxlbWVudHMpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKE1lZGlh
Q29udHJvbGxlcjo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
aGFzQXVkaW8pOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpoYXNWaWRlbyk6CisgICAgICAg
IChNZWRpYUNvbnRyb2xsZXI6Omhhc0Nsb3NlZENhcHRpb25zKToKKyAgICAgICAgKE1lZGlhQ29u
dHJvbGxlcjo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKToKKyAgICAgICAgKE1lZGlhQ29udHJv
bGxlcjo6c3VwcG9ydHNTY2FubmluZyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmJlZ2lu
U2NydWJiaW5nKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6ZW5kU2NydWJiaW5nKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6Y2FuUGxheSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OmlzTGl2ZVN0cmVhbSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Omhhc1NvdXJjZSk6
CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnJldHVyblRvUmVhbHRpbWUpOgorICAgICAgICAo
TWVkaWFDb250cm9sbGVyOjppc0Jsb2NrZWQpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpo
YXNFbmRlZCk6CisgICAgICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6Om1lZGlhR3JvdXApOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sbGVyOjpwYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sbGVyOjpkZWZhdWx0UGxheWJhY2tSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbGxlcjo6cGxheWJhY2tSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bGxlcjo6dm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6bXV0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpyZWFkeVN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6cGxheWJhY2tTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnN1cHBvcnRzRnVsbHNjcmVlbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OmlzRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xsZXI6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xsZXI6OmNsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xsZXI6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbGxlcjo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xsZXI6OnRvTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbGxlcjo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbGxlcjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29u
dHJvbGxlci5pZGw6IEFkZGVkLgorCisgICAgICAgIEFkZCBjb252ZW5pZW5jZSBmdW5jdGlvbnMg
dG8gVGltZVJhbmdlcyB3aGljaCBjYW4gY2FsY3VsYXRlIGludGVyc2VjdGlvbnMgYW5kCisgICAg
ICAgIHVuaW9ucyBiZXR3ZWVuIFRpbWVSYW5nZXMgb2JqZWN0cy4KKyAgICAgICAgKiBodG1sL1Rp
bWVSYW5nZXMuY3BwOgorICAgICAgICAoVGltZVJhbmdlczo6Y29weSk6CisgICAgICAgIChUaW1l
UmFuZ2VzOjppbnZlcnQpOgorICAgICAgICAoVGltZVJhbmdlczo6aW50ZXJzZWN0V2l0aCk6Cisg
ICAgICAgIChUaW1lUmFuZ2VzOjp1bmlvbldpdGgpOgorICAgICAgICAqIGh0bWwvVGltZVJhbmdl
cy5oOgorCisgICAgICAgIEFkZCBNZWRpYUNvbnRyb2xsZXJDb25zdHJ1Y3RvciB0byB0aGUgV2lu
ZG93IG9iamVjdC4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisKKyAgICAgICAgQWRk
IHRoZSB0d28gbmV3IGF0dHJpYnV0ZSBuYW1lcywgbWVkaWFncm91cCBhbmQgY29udHJvbGxlci4K
KyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKworICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgdGhlIG5ldyBhdHRyaWJ1dGVzLCBhbmQgYWRkIG92ZXJyaWRkZW4gYmVoYXZpb3Ig
d2hlbiBhIG1lZGlhIGVsZW1lbnQKKyAgICAgICAgaGFzIGEgY3VycmVudCBtZWRpYSBjb250cm9s
bGVyOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnNldFBsYXliYWNrUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6dG9nZ2xlUGxheVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2Vla2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6cG90ZW50aWFsbHlQbGF5aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OmVuZGVkUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
dXBkYXRlVm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0
ZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2Fu
Y2VsbGVkTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYUdy
b3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhR3JvdXAp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y29udHJvbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDb250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZU1lZGlhQ29udHJvbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxl
cik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpoYXNTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6aXNMaXZlU3RyZWFtKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRp
YUNvbnRyb2xsZXIpOgorCisgICAgICAgIEFkZCBhIGZ1bmN0aW9uICJzZWVrYWJsZSIgd2hpY2gg
cmV0dXJucyBhIFRpbWVSYW5nZXMgY29udGFpbmluZyB0aGUgc2Vla2FibGUgdGltZSByYW5nZXMK
KyAgICAgICAgaW4gYSBtZWRpYSBlbGVtZW50LiAgQnkgZGVmYXVsdCB0aGlzIGlzIGEgc2luZ2xl
IHJhbmdlIG9mIFswLCBtYXhUaW1lU2Vla2FibGVdLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzZWVr
YWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6c2Vla2FibGUpOgorCisgICAgICAg
IFN1cHBvcnQgZnVuY3Rpb25zIHRvIGNhc3QgYmV0d2VlbiBNZWRpYUNvbnRyb2xsZXIgYW5kIEV2
ZW50VGFyZ2V0LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojp0b01lZGlhQ29udHJvbGxlcik6CisgICAgICAg
ICogZG9tL0V2ZW50VGFyZ2V0Lmg6CisKKyAgICAgICAgRml4ZWQgYW4gaW5maW5pdGUtcmVjdXJz
aW9uIGJ1ZyBkdWUgdG8gYSBjb2xsaXNpb24gYmV0d2VlbiBXVEY6OmN1cnJlbnRUaW1lIGFuZAor
ICAgICAgICBDbG9ja0dlbmVyaWM6OmN1cnJlbnRUaW1lOgorICAgICAgICAqIHBsYXRmb3JtL0Ns
b2NrR2VuZXJpYy5jcHA6CisgICAgICAgIChDbG9ja0dlbmVyaWM6OkNsb2NrR2VuZXJpYyk6Cisg
ICAgICAgIChDbG9ja0dlbmVyaWM6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKENsb2NrR2Vu
ZXJpYzo6Y3VycmVudFRpbWUpOgorICAgICAgICAoQ2xvY2tHZW5lcmljOjpzZXRQbGF5UmF0ZSk6
CisgICAgICAgIChDbG9ja0dlbmVyaWM6OnN0YXJ0KToKKyAgICAgICAgKENsb2NrR2VuZXJpYzo6
c3RvcCk6CisgICAgICAgIChDbG9ja0dlbmVyaWM6Om5vdyk6CisgICAgICAgICogcGxhdGZvcm0v
Q2xvY2tHZW5lcmljLmg6CisKKyAgICAgICAgQm9pbGVycGxhdGUgdG8gc3VwcG9ydCBjcmVhdGlu
ZyB0aGUgZGVyaXZlZCBzb3VyY2VzIGZvciBNZWRpYUNvbnRyb2xsZXIgYW5kIGFkZGluZyBuZXcg
c291cmNlcworICAgICAgICB0byB0aGUgcHJvamVjdDoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5jcHA6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
IDIwMTEtMTEtMTAgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW2Nocm9taXVtXSBBZGQgcGx1bWJpbmcgZm9yIEpTIHRvIHdyaXRlIHRvIGNsaXBib2FyZCBp
biBjb3B5L2N1dCBldmVudHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKaW5kZXgg
NTUzZGM1ZThjMzU2OWNiODA2Y2I1OTU0ZDdiYzNkNWEyOGU1ZTRlOS4uM2QxMjkzOTE4MzU1YTcy
NDdkOGQ3NWYzM2MzNTFiZDBmZjExM2I4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaApAQCAtMTEwNyw3ICsxMTA3LDcgQEAKICNkZWZpbmUgSEFWRV9JTlZFUlRFRF9XSEVFTF9F
VkVOVFMgMQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShXSU4pICYm
ICFPUyhXSU5DRSkgJiYgIVBMQVRGT1JNKFdJTl9DQUlSTykpCisjaWYgUExBVEZPUk0oTUFDKQog
I2RlZmluZSBXVEZfVVNFX0NPUkVBVURJTyAxCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBmNTdlOWUzZjg2ZDJmMjgwZTUyNGI0ZTdiN2ZiMGEwZjQ4M2I3MDUwLi40NTRjYmE1MDg2
MGJmODJlM2FmZTQ4NWEyMzA0MTYyMDFhNmI4NmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
Mjc2LDYgKzI3Niw3IEBAIFNFVChXZWJDb3JlX0lETF9GSUxFUwogICAgIGh0bWwvSFRNTFVua25v
d25FbGVtZW50LmlkbAogICAgIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwKICAgICBodG1sL0lt
YWdlRGF0YS5pZGwKKyAgICBodG1sL01lZGlhQ29udHJvbGxlci5pZGwKICAgICBodG1sL01lZGlh
RXJyb3IuaWRsCiAgICAgaHRtbC9UZXh0TWV0cmljcy5pZGwKICAgICBodG1sL1RleHRUcmFjay5p
ZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAppbmRleCBiM2YxZTNmYjk5NmU3OTAzOTNkOWZk
Yzg2ZjY5MWI4YTYxNTNkM2Q2Li41NTg3NjA5MDY2OWQyOWU3MzZjMWE4NmQ2MjAyYjc0MmIwMmMy
ZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC0yMjgsNiArMjI4LDcgQEAKICNp
bmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwIgogI2luY2x1ZGUgIkpTS2V5Ym9hcmRF
dmVudC5jcHAiCiAjaW5jbHVkZSAiSlNMb2NhdGlvbi5jcHAiCisjaW5jbHVkZSAiSlNNZWRpYUNv
bnRyb2xsZXIuY3BwIgogI2luY2x1ZGUgIkpTTWVkaWFFcnJvci5jcHAiCiAjaW5jbHVkZSAiSlNN
ZWRpYUxpc3QuY3BwIgogI2luY2x1ZGUgIkpTTWVkaWFRdWVyeUxpc3QuY3BwIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZTYwNzRjMWVkNzcxMzRlNWJjYmVhNmE5OGI1ZTE4ZGM5
OThhYTcwZi4uNDg0OTU2MjczNWYzYjYwMWY0ZGQ5NTA1ZTEwYWIyMWI3YTI4YjBjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yNzcsNiArMjc3LDcgQEAgRE9NX0NMQVNTRVMg
PSBcCiAgICAgS2V5Ym9hcmRFdmVudCBcCiAgICAgTG9jYXRpb24gXAogICAgIExvd1Bhc3MyRmls
dGVyTm9kZSBcCisgICAgTWVkaWFDb250cm9sbGVyIFwKICAgICBNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUgXAogICAgIE1lZGlhRXJyb3IgXAogICAgIE1lZGlhTGlzdCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5wcmkKaW5kZXggYzFmZDA1NDU5MWVjMDg4YzM4OWQwNGEzZGQ5ZTg1NTE2YTJm
OTZiZi4uODA0MDI0M2I2OTA4ZGI4MWM3MWM0MTQyMTUyZWUyODdkZGM4OGI0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtMzE0LDYgKzMxNCw3IEBAIElETF9CSU5ESU5HUyArPSBc
CiAgICAgaHRtbC9IVE1MVW5rbm93bkVsZW1lbnQuaWRsIFwKICAgICBodG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaWRsIFwKICAgICBodG1sL0ltYWdlRGF0YS5pZGwgXAorICAgIGh0bWwvTWVkaWFDb250
cm9sbGVyLmlkbCBcCiAgICAgaHRtbC9NZWRpYUVycm9yLmlkbCBcCiAgICAgaHRtbC9UZXh0TWV0
cmljcy5pZGwgXAogICAgIGh0bWwvVGltZVJhbmdlcy5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggN2U5ZGFmZmI5ZDcwNDI1NTc0ODQ2YzVmMTBkZjY4NzZkZmY0MWQwMC4u
ODg0OTExNWM5OTY1ZjA4OGZkOTVjMTk3ZTE1MTIyYWQzYWQ0MzYzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCkBAIC0zNTksNiArMzU5LDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2Vz
ICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTG9jYWxNZWRpYVN0cmVhbS5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTG9jYXRpb24uY3BwIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTTG9jYXRpb24uaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhQ29u
dHJvbGxlci5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUNvbnRyb2xsZXIu
aCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhRXJyb3IuY3BwIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTTWVkaWFFcnJvci5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTTWVkaWFMaXN0LmNwcCBcCkBAIC03ODksNiArNzkxLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20u
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0
b20uaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTGlua0VsZW1lbnRDdXN0
b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRD
dXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVt
ZW50Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0
RWxlbWVudEN1c3RvbS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRp
b25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgXApAQCAtMTg3NSw2ICsxODc4LDggQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtSZWxBdHRyaWJ1dGUuaCBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUNvbnRyb2xsZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRG9jdW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVy
cm9yLmggXApAQCAtMjQ1NSw2ICsyNDYwLDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0F1dG9kcmFpbmVkUG9vbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9jay5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrLmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0Nsb2NrR2VuZXJpYy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2Nr
R2VuZXJpYy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db2xvckNob29zZXIuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db2xvckNob29zZXIuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGNmYjQxZTk2NmU3
YzM3YjU3OGE0NTZjODExYzFiY2ZhN2RkNWM1ODIuLmU2ZDk2NDA1ZGQzZTEyZmVlZDQ1NjY3OGIz
NjEzZDk5NjVjMGU0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysr
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTkzLDYgKzE5Myw3IEBAIHY4IHsKICAg
ICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNw
cCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0b20u
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTExpbmtFbGVtZW50Q3VzdG9t
LmNwcCBcCisgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxNZWRpYUVsZW1lbnRDdXN0
b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0
aW9uQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPdXRwdXRF
bGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxQbHVn
SW5FbGVtZW50Q3VzdG9tLmNwcCBcCkBAIC0zMDMsNiArMzA0LDcgQEAgdjggewogICAgICAgICBi
aW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwIFwKICAgICAgICAgYmlu
ZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdz
L2pzL0pTSFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pT
SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxP
YmplY3RFbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTE9wdGlv
bnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTE91dHB1
dEVsZW1lbnRDdXN0b20uY3BwIFwKQEAgLTEwMTksNiArMTAyMSw4IEBAIFNPVVJDRVMgKz0gXAog
ICAgIHBsYXRmb3JtL3RleHQvTG9jYWxpemVkRGF0ZU5vbmUuY3BwIFwKICAgICBwbGF0Zm9ybS90
ZXh0L0xvY2FsaXplZE51bWJlck5vbmUuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L1F1b3RlZFBy
aW50YWJsZS5jcHAgXAorICAgIHBsYXRmb3JtL0Nsb2NrLmNwcCBcCisgICAgcGxhdGZvcm0vQ2xv
Y2tHZW5lcmljLmNwcCBcCiAgICAgcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIFwKICAgICBwbGF0
Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAgXAogICAgIHBsYXRmb3JtL0RhdGVDb21wb25lbnRz
LmNwcCBcCkBAIC0xMDI5LDcgKzEwMzMsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9G
aWxlSWNvbkxvYWRlci5jcHAgXAogICAgIHBsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwIFwKICAgICBw
bGF0Zm9ybS9GaWxlU3lzdGVtLmNwcCBcCi0gICAgcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmNwcCBc
CiAgICAgcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvcXQvSW1hZ2VGcmFtZVF0LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udERlc2NyaXB0aW9uLmNwcCBcCkBAIC0xODYzLDYgKzE4NjYsNyBAQCBIRUFERVJTICs9IFwK
ICAgICBodG1sL0xhYmVsc05vZGVMaXN0LmggXAogICAgIGh0bWwvTGlua1JlbEF0dHJpYnV0ZS5o
IFwKICAgICBodG1sL0xvYWRhYmxlVGV4dFRyYWNrLmggXAorICAgIGh0bWwvTWVkaWFDb250cm9s
bGVyLmggXAogICAgIGh0bWwvTWVkaWFEb2N1bWVudC5oIFwKICAgICBodG1sL01pY3JvRGF0YUl0
ZW1WYWx1ZS5oIFwKICAgICBodG1sL1BsdWdpbkRvY3VtZW50LmggXApAQCAtMjA1MCw2ICsyMDU0
LDggQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3Qu
aCBcCiAgICAgcGxhdGZvcm0vQXJlbmEuaCBcCiAgICAgcGxhdGZvcm0vQXN5bmNGaWxlU3RyZWFt
LmggXAorICAgIHBsYXRmb3JtL0Nsb2NrLmggXAorICAgIHBsYXRmb3JtL0Nsb2NrR2VuZXJpYy5o
IFwKICAgICBwbGF0Zm9ybS9Db250ZW50VHlwZS5oIFwKICAgICBwbGF0Zm9ybS9Db250ZXh0TWVu
dS5oIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oIFwKQEAgLTIwNjgsNyArMjA3
NCw2IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25TZXJ2aWNl
TW9jay5oIFwKICAgICBwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oIFwKICAg
ICBwbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5oIFwKLSAgICBwbGF0Zm9ybS9DbG9j
a0dlbmVyaWMuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUJsZW5kLmggXApAQCAtMzA5MCw2ICszMDk1LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX1ZJREVPPTEpIHsKICAgICAgICAgaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBcCiAgICAg
ICAgIGh0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwIFwKICAgICAgICAgaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcCBcCisgICAgICAgIGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcCBcCiAgICAgICAg
IGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBcCiAgICAgICAgIGh0bWwvVGlt
ZVJhbmdlcy5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IGM2MWFjZGVjZDU3Y2QwNGNlZGU4ZmExOTUyZjUyOWY3YTUz
YzFmY2UuLjQ1MGQxYjMzNjI2ZWQzNmMyZjY3MGJhOWVmNjkyMDAzMWEwMjM1YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTEzMzEsNiArMTMzMSw3IEBACiAgICAgICAgICAgICAnaHRtbC9IVE1MVW5r
bm93bkVsZW1lbnQuaWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRs
JywKICAgICAgICAgICAgICdodG1sL0ltYWdlRGF0YS5pZGwnLAorICAgICAgICAgICAgJ2h0bWwv
TWVkaWFDb250cm9sbGVyLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9NZWRpYUVycm9yLmlkbCcs
CiAgICAgICAgICAgICAnaHRtbC9UZXh0TWV0cmljcy5pZGwnLAogICAgICAgICAgICAgJ2h0bWwv
VGV4dFRyYWNrLmlkbCcsCkBAIC0xODc1LDYgKzE4NzYsNyBAQAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5oJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU0hUTUxMaW5rRWxlbWVudEN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCcsCkBAIC0yMTk3LDYgKzIxOTks
NyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRD
b25zdHJ1Y3Rvci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW5w
dXRFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPdXRwdXRFbGVtZW50Q3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFBsdWdJbkVsZW1lbnRDdXN0b20u
Y3BwJywKQEAgLTU2MDIsNiArNTYwNSw4IEBACiAgICAgICAgICAgICAnaHRtbC9MaW5rUmVsQXR0
cmlidXRlLmgnLAogICAgICAgICAgICAgJ2h0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwJywKICAg
ICAgICAgICAgICdodG1sL0xvYWRhYmxlVGV4dFRyYWNrLmgnLAorICAgICAgICAgICAgJ2h0bWwv
TWVkaWFDb250cm9sbGVyLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9NZWRpYUNvbnRyb2xsZXIu
aCcsCiAgICAgICAgICAgICAnaHRtbC9NZWRpYURvY3VtZW50LmNwcCcsCiAgICAgICAgICAgICAn
aHRtbC9NZWRpYURvY3VtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvTWVkaWFFcnJvci5oJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMWYx
MzA3YjQ4ZWIyODQ5OGRjMDc3YTRhZDMxY2ViN2ExMDM0MjQzNy4uYjAwZjNhMzAxMjU1MDdjNTdm
ZjI0NjUwNTRhYTQ4NmJiZGZiZGUxMyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI2MjYyLDYgKzI2MjYyLDIyIEBACiAJCQkJPgogCQkJPC9G
aWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXENsb2NrLmNwcCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZv
cm1cQ2xvY2suaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cQ2xvY2tHZW5lcmljLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cQ2xvY2tHZW5lcmljLmgiCisJCQkJ
PgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXENv
bnRlbnRUeXBlLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC01NzcxOCw2ICs1NzczNCwxNCBA
QAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1s
XE1lZGlhQ29udHJvbGxlci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTWVkaWFDb250cm9sbGVyLmgiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTWVkaWFEb2N1bWVudC5jcHAi
CiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYwZmZmZGE3NDY2MDMxOGNkNmNlY2RiZjQwZmQxZDg1
ZTVlNzcyMTIuLmFjYzI2YzVhYmQ1M2M4OTg5MGNjYjY4NjQ3NjM1YzMyNWFmZmE2MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTU3MTUsMTcgKzU3MTUsMjIgQEAKIAkJQ0QwREJGRUUxNDIyNzY4NTAwMjgwMjYzIC8qIElSQ19D
b21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUud2F2IGluIENvcHkgQXVkaW8gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMERCRTBEMTQyMjc1OTUwMDI4MDI2
MyAvKiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1LndhdiAqLzsgfTsKIAkJQ0QwREJG
RUYxNDIyNzY4NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMzAud2F2
IGluIENvcHkgQXVkaW8gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEMERCRTBFMTQyMjc1OTUwMDI4MDI2MyAvKiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0
NV9QMzMwLndhdiAqLzsgfTsKIAkJQ0QwREJGRjAxNDIyNzY4NTAwMjgwMjYzIC8qIElSQ19Db21w
b3NpdGVfQ19SMDE5NV9UMzQ1X1AzNDUud2F2IGluIENvcHkgQXVkaW8gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMERCRTBGMTQyMjc1OTUwMDI4MDI2MyAv
KiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzQ1LndhdiAqLzsgfTsKKwkJQ0QyN0Y2RTUx
NDU3Njg1QTAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkUyMTQ1NzY3NTgwMDc4MjA3RCAv
KiBKU01lZGlhQ29udHJvbGxlci5jcHAgKi87IH07CisJCUNEMjdGNkU3MTQ1NzcwRDMwMDc4MjA3
RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTYxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxl
ci5jcHAgKi87IH07CiAJCUNEODIwMzBBMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUNEODIwMzBCMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4
MjAzMDcxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0g
Ki87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8tdW5kZWYiOyB9OyB9OwogCQlD
RDgyMDMwQzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0Q4MjAzMDgxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0Nv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDRDgyMDMwRDEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2lu
ZG93Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEODIwMzA5MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURX
aW5kb3dDb250cm9sbGVyLm1tICovOyB9OwogCQlDRDgyMDMxMDEzOTVBQ0U3MDBGOTU2QzYgLyog
V2ViV2luZG93QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDgyMDMwRTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9u
LmggKi87IH07CiAJCUNEODIwMzExMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRp
b24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgy
MDMwRjEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLm1tICovOyB9OworCQlD
REQ1MjVENzE0NUI2REQwMDA4RDIwNEQgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjY1Q0NDMTQ1
QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlD
REVBNzYzMDE0NjA4QTUzMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjJFMTQ2MDg0REUwMDhC
MzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovOyB9OwogCQlDREVBNzYzNDE0NjBCNTZGMDA4
QjMxRjEgLyogQ2xvY2tHZW5lcmljLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENERUE3NjMyMTQ2MEFFMjkwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMu
Y3BwICovOyB9OwogCQlDREVBNzYzNTE0NjBCNzFBMDA4QjMxRjEgLyogQ2xvY2suY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MzMxNDYwQjQ2
MjAwOEIzMUYxIC8qIENsb2NrLmNwcCAqLzsgfTsKIAkJQ0RFQTdDODQxMjc2MjMwNDAwQjg0NkRE
IC8qIFJlbmRlckZ1bGxTY3JlZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENERUE3QzgyMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVu
LmggKi87IH07CiAJCUNERUE3Qzg1MTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVu
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3
QzgzMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmNwcCAqLzsgfTsKKwkJQ0RG
NjVDQzgxNDVCMUU3NTAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTQxNDU3Njc4NzAwNzgyMDdE
IC8qIE1lZGlhQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUNERjY1Q0NBMTQ1QjQ0ODgwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xs
ZXJJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERjY1Q0M5MTQ1QjQzQTcwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTAy
RjBDNDExRTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDJGMEMzMTFFODNBREQwMEM2
Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMDU3RkE1MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0UwNTdGQTMxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5jcHAgKi87IH07CiAJCUNFMDU3RkE2MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFMDU3RkE0MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTMwMjksNiArMTMwMzQsMTEgQEAKIAkJQ0QwREJFMEQxNDIyNzU5NTAwMjgwMjYzIC8q
IElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUud2F2ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXVkaW8ud2F2OyBuYW1lID0gSVJDX0NvbXBv
c2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXY7IHBhdGggPSBwbGF0Zm9ybS9hdWRpby9yZXNvdXJj
ZXMvSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXY7IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKIAkJQ0QwREJFMEUxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVf
Q19SMDE5NV9UMzQ1X1AzMzAud2F2ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gYXVkaW8ud2F2OyBuYW1lID0gSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1Qz
NDVfUDMzMC53YXY7IHBhdGggPSBwbGF0Zm9ybS9hdWRpby9yZXNvdXJjZXMvSVJDX0NvbXBvc2l0
ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXY7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJ
Q0QwREJFMEYxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1Az
NDUud2F2ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
YXVkaW8ud2F2OyBuYW1lID0gSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXY7IHBh
dGggPSBwbGF0Zm9ybS9hdWRpby9yZXNvdXJjZXMvSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVf
UDM0NS53YXY7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJQ0QyN0Y2RTAxNDU3NUMx
QjAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFDb250cm9sbGVyLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdE
IC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTTWVkaWFDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0QyN0Y2RTMxNDU3Njc1ODAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFDb250cm9sbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjdGNkU0MTQ1NzY3ODcwMDc4MjA3RCAvKiBNZWRpYUNv
bnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjdGNkU2MTQ1NzcwRDMwMDc4
MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWVkaWFDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8qIGZ1bGxzY3JlZW4uY3NzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0Q4MjAzMDYxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDgyMDMwNzEz
OTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzAzNyw2ICsxMzA0Nyw4
IEBACiAJCUNEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViV2luZG93QW5pbWF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBX
ZWJXaW5kb3dBbmltYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJXaW5kb3dBbmltYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEQkQ5M0JBMTMzM0JENEIwMDI1NzBFMyAvKiBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlblF1aWNrVGltZS5jc3M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQ0U1Q0NGMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudEZh
Y3RvcnkuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXZlbnRGYWN0b3J5LmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDRENFNUNEMDE0NjMzQkM5MDBENDdDQ0EgLyogRXZlbnRU
YXJnZXRGYWN0b3J5LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEV2ZW50VGFyZ2V0RmFjdG9y
eS5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTc2MkMxNDYwODIyNDAwOEIz
MUYxIC8qIENsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsb2NrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3NjJFMTQ2MDg0REUwMDhCMzFGMSAv
KiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGxhdGZvcm1DbG9ja0NBLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RF
QTc2MkYxNDYwODRFRTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ0EuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzMDQ1LDYgKzEzMDU3LDggQEAKIAkJQ0RFQTc2MzMxNDYwQjQ2MjAwOEIz
MUYxIC8qIENsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENs
b2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTdDODIxMjc2MjMwNDAw
Qjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyRnVsbFNjcmVlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
REVBN0M4MzEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJGdWxsU2NyZWVuLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RGNjVDQzkxNDVCNDNBNzAwQzRDN0FBIC8qIE1lZGlh
Q29udHJvbGxlckludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxNZWRpYUVsZW1lbnRD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTAyRjBDMzExRTgzQURE
MDBDNjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2NyaXB0Q29udHJvbGxlckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0UwNTdGQTMxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJv
bGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTA1N0ZB
NDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTczODcsNiArMTc0MDEsMTAgQEAKIAkJCQlFNDQ2
MTNBMDBDRDYzMzEwMDBGQURBNzUgLyogVm9pZENhbGxiYWNrLmlkbCAqLywKIAkJCQlGNTVCM0RB
QjEyNTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0VHlwZS5jcHAgKi8sCiAJCQkJRjU1QjNEQUMx
MjUxRjEyRDAwM0VGMjY5IC8qIFdlZWtJbnB1dFR5cGUuaCAqLywKKwkJCQlDRDI3RjZFMDE0NTc1
QzFCMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmlkbCAqLywKKwkJCQlDRDI3RjZFNDE0NTc2
Nzg3MDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmggKi8sCisJCQkJQ0QyN0Y2RTYxNDU3NzBE
MzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgKi8sCisJCQkJQ0RGNjVDQzkxNDVCNDNB
NzAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oICovLAogCQkJKTsKIAkJCXBh
dGggPSBodG1sOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE3NjIwLDYgKzE3NjM4
LDggQEAKIAkJQTgzQjc5MDgwQ0NBRkYyQjAwMEIwODI1IC8qIEhUTUwgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNEMjdGNkUyMTQ1NzY3NTgwMDc4MjA3
RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAgKi8sCisJCQkJQ0QyN0Y2RTMxNDU3Njc1ODAwNzgy
MDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmggKi8sCiAJCQkJNDlFRUNFRjIxMDUwNzBDNDAwMDk5
RkFCIC8qIEpTQXJyYXlCdWZmZXIuY3BwICovLAogCQkJCTQ5RUVDRUYzMTA1MDcwQzQwMDA5OUZB
QiAvKiBKU0FycmF5QnVmZmVyLmggKi8sCiAJCQkJNDlFRUNGMTkxMDUwNzJGMzAwMDk5RkFCIC8q
IEpTQXJyYXlCdWZmZXJWaWV3LmNwcCAqLywKQEAgLTE5NjQyLDYgKzE5NjYyLDcgQEAKIAkJCQlC
Q0M0Mzg3NzBFODg2Q0M3MDA1MzNERDUgLyogSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCAq
LywKIAkJCQlFMUFEMTQyMjEyOTVFQTdGMDBBQ0E5ODkgLyogSlNIVE1MSW5wdXRFbGVtZW50Q3Vz
dG9tLmggKi8sCiAJCQkJRTFBRDEzOUExMjk1RDkyNjAwQUNBOTg5IC8qIEpTSFRNTExpbmtFbGVt
ZW50Q3VzdG9tLmNwcCAqLywKKwkJCQlDREY2NUNDQzE0NUI2QUZFMDBDNEM3QUEgLyogSlNIVE1M
TWVkaWFFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzMwNUNBMzBDMDc4MUJCMDBDRDIwRjAg
LyogSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJRTFBRDE0MjQxMjk1RUE5
NTAwQUNBOTg5IC8qIEpTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uaCAqLywKIAkJCQk0NDhBRDI3
QTBBNDgxMzc5MDAyM0QxNzkgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwICov
LApAQCAtMjA5NTcsNiArMjA5NzgsOCBAQAogCQlGNTIzRDMyNDAyREU0NDc4MDE4NjM1Q0EgLyog
ZG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDRENF
NUNDRjE0NjMzQkM5MDBENDdDQ0EgLyogRXZlbnRGYWN0b3J5LmluICovLAorCQkJCUNEQ0U1Q0Qw
MTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudFRhcmdldEZhY3RvcnkuaW4gKi8sCiAJCQkJRTFDNERF
NkQwRUE3NUM2NTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5jcHAgKi8sCiAJCQkJRTFDNERF
NjgwRUE3NUMxRTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5oICovLAogCQkJCUE4QzRBN0ZD
MDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmNwcCAqLywKQEAgLTI0NjUzLDYgKzI0Njc2LDggQEAK
IAkJCQk5NzREMkRBNTE0NkE1MzVEMDBENTFGOEIgLyogU2VjdXJpdHlQb2xpY3kuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTcxNTM3QTAxMTQ2QkQ5RDcwMDhCRDYxNSAvKiBTVkdQYXRoRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzEzMTNGNjYxNDQzQjM1RjAwNkUyQTkwIC8qIEZpbHRlckVmZmVj
dFJlbmRlcmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREY2NUNDODE0NUIxRTc1MDBDNEM3QUEg
LyogTWVkaWFDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREY2NUNDQTE0NUI0NDg4
MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAg
LTI3NTA5LDYgKzI3NTM0LDkgQEAKIAkJCQlDQUU5RjkwRjE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NT
QXNwZWN0UmF0aW9WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREVBNzYzMDE0NjA4QTUz
MDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERUE3
NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0QyN0Y2RTUxNDU3Njg1QTAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUNEMjdGNkU3MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RENTI1RDcxNDVCNkREMDAwOEQyMDREIC8qIEpT
SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREVBNzYzNTE0
NjBCNzFBMDA4QjMxRjEgLyogQ2xvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc2RjM2RUEx
NDY4NjIyNTAwNUU5M0I0IC8qIFNlY3VyaXR5Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3MTM0NDk2RDE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCmluZGV4IDFhMzUzN2QxMzhiNjYzMTA2NWJhODcw
ZjJiZDFmNDY2N2RiMWU0YmUuLjAyMzU5NDkyZDY3NWUxZmIxYTA5ZTM0MWIzZGQ4NGI5NWQyMTE5
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9S
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcApAQCAtMTEzLDYgKzExMywxMSBAQCBib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6Omh0bWxTb3VyY2VFbGVtZW50RW5hYmxlZCgpCiAgICAgcmV0dXJu
IE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOwogfQogCitib29sIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6Om1lZGlhQ29udHJvbGxlckVuYWJsZWQoKQoreworICAgIHJldHVybiBNZWRpYVBsYXll
cjo6aXNBdmFpbGFibGUoKTsKK30KKwogYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjptZWRp
YUVycm9yRW5hYmxlZCgpCiB7CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaAppbmRleCA4MDAxYjdhNzBmMzkxYTU1NWZlY2M2MDYzNGYwZGQ3YTBm
NzZhM2Q2Li5jM2E5YzYwMmVkMDdmZWQ5NTgyMzZhMGYyY2M0ZjMxNTQ5NjEwNWRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaApAQCAtOTQsNiArOTQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaHRt
bEF1ZGlvRWxlbWVudEVuYWJsZWQoKTsKICAgICBzdGF0aWMgYm9vbCBodG1sVmlkZW9FbGVtZW50
RW5hYmxlZCgpOwogICAgIHN0YXRpYyBib29sIGh0bWxTb3VyY2VFbGVtZW50RW5hYmxlZCgpOwor
ICAgIHN0YXRpYyBib29sIG1lZGlhQ29udHJvbGxlckVuYWJsZWQoKTsKICAgICBzdGF0aWMgYm9v
bCBtZWRpYUVycm9yRW5hYmxlZCgpOwogICAgIHN0YXRpYyBib29sIHRpbWVSYW5nZXNFbmFibGVk
KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwCmluZGV4IDAwMGM1YmZhN2Y0MzQ5NzFmYjdmNDExYzA1ZDMxYmY2Y2QzYWM1
MWMuLmNmZGQ2MmI1OTc4MGMwMTJiNTYwYmQxMDY3NmM0ZDdmMjdhODliMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtOTIs
NiArOTIsNyBAQAogI2luY2x1ZGUgIkpTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAiCiAj
aW5jbHVkZSAiSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxM
aW5rRWxlbWVudEN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9t
LmNwcCIKICNpbmNsdWRlICJKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRl
ICJKU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MT3V0
cHV0RWxlbWVudEN1c3RvbS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDEyNzUwMTE1
OTczYTc4YWU0YzlhNjEyNDIzMDM2ZmQ2YmM1MTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcApAQCAtMCww
ICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgIkpTSFRN
TE1lZGlhRWxlbWVudC5oIgorCisjaW5jbHVkZSAiSlNNZWRpYUNvbnRyb2xsZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCit2b2lkIEpTSFRNTE1l
ZGlhRWxlbWVudDo6c2V0Q29udHJvbGxlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIHZhbHVlKQorewor
ICAgIEhUTUxNZWRpYUVsZW1lbnQqIGltcCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQq
PihpbXBsKCkpOworICAgIC8vIE9uIHNldHRpbmcsIGl0IG11c3QgZmlyc3QgcmVtb3ZlIHRoZSBl
bGVtZW50J3MgbWVkaWFncm91cCBhdHRyaWJ1dGUsIGlmIGFueSwgCisgICAgaW1wLT5zZXRNZWRp
YUdyb3VwKFN0cmluZygpKTsKKyAgICAvLyBhbmQgdGhlbiBzZXQgdGhlIGN1cnJlbnQgbWVkaWEg
Y29udHJvbGxlciB0byB0aGUgZ2l2ZW4gdmFsdWUuCisgICAgaW1wLT5zZXRDb250cm9sbGVyKHRv
TWVkaWFDb250cm9sbGVyKHZhbHVlKSk7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTWVkaWFFbGVtZW50
Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzMxNTJkZDZhMDI0YmRjODFkYTNkMjJjODM3NDlhNTJm
ZmUzMjcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgIlY4SFRNTE1lZGlhRWxlbWVudC5o
IgorCisjaW5jbHVkZSAiVjhNZWRpYUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJWOFByb3h5Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBWOEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
Q29udHJvbGxlckFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBJTkNfU1RBVFMoIkRPTS5IVE1MTWVkaWFFbGVtZW50Lm1lZGlhQ29udHJvbGxlci5fc2V0
Iik7CisgICAgSFRNTE1lZGlhRWxlbWVudCogaW1wID0gVjhIVE1MTWVkaWFFbGVtZW50Ojp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSAw
OworICAgIGlmIChWOE1lZGlhQ29udHJvbGxlcjo6SGFzSW5zdGFuY2UodmFsdWUpKQorICAgICAg
ICBjb250cm9sbGVyID0gVjhNZWRpYUNvbnRyb2xsZXI6OnRvTmF0aXZlKHZhbHVlLT5Ub09iamVj
dCgpKTsKKyAgICAKKyAgICBpZiAoIWNvbnRyb2xsZXIpIHsKKyAgICAgICAgdGhyb3dFcnJvcigi
VmFsdWUgaXMgbm90IG9mIHR5cGUgTWVkaWFDb250cm9sbGVyIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpbXAtPnNldENvbnRyb2xsZXIoY29udHJvbGxlcik7Cit9CisKK30KKwor
I2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggYzZmMWYzZDQ0M2I4NWI2ZjY0
MjBjZWVjOTRiZWZiMjI3ODYyZDQ0Ni4uYmFmMGVmYzg5ZDRhZGVhYWIzMWM3MjMzMGY4ZDE1ZGUx
OWQ5ODhlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTU1LDYgKzU1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OwogICAg
IGNsYXNzIEphdmFTY3JpcHRBdWRpb05vZGU7CiAgICAgY2xhc3MgTG9jYWxNZWRpYVN0cmVhbTsK
KyAgICBjbGFzcyBNZWRpYUNvbnRyb2xsZXI7CiAgICAgY2xhc3MgTWVkaWFTdHJlYW07CiAgICAg
Y2xhc3MgTWVzc2FnZVBvcnQ7CiAgICAgY2xhc3MgTm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IDZiZGIyZTIxY2E5NmIzZTEwZDNiZTFjNzFlZjczMGQy
N2YwMGQ5MWQuLjJhMzg5MDM1N2JhZjllOTY2YTdmMTM3MTRkNjEwZWY3ZGUxMDg0YTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtMTMsNiArMTMsNyBAQCBJ
REJUcmFuc2FjdGlvbiBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJWZXJzaW9uQ2hh
bmdlUmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBKYXZhU2NyaXB0QXVkaW9O
b2RlIGNvbmRpdGlvbmFsPVdFQl9BVURJTwogTG9jYWxNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1N
RURJQV9TVFJFQU0KK01lZGlhQ29udHJvbGxlciBjb25kaXRpb25hbD1WSURFTwogTWVkaWFTdHJl
YW0gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBNZXNzYWdlUG9ydAogTm9kZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRleCBmMWUzNTRiNjMxZjQ5YmEzYWMx
MDFlNTUxM2QyNzVhYzVkMmQwOTgyLi5hZTVmYjcxY2VlZTg2NDA5ODM2ZmUyZDUwMWVjM2ZhOTkw
YmEzNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1l
cy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAt
MTQ4LDYgKzE0OCw3IEBAIG1heAogbWF4bGVuZ3RoCiBtYXlzY3JpcHQKIG1lZGlhCittZWRpYWdy
b3VwCiBtZXRob2QKIG1pbgogbXVsdGlwbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCmluZGV4IGMwMGM2NDA1OWU0MzQyZmVhOTU3NmZlOTZhYTllNjA3ZDJmZTFkN2Iu
LjM2YTU4NmNkZjZhZmNlYThjNzA4YmRkMTI4ZmE5ZTljMWFlN2VmOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUg
IkhUTUxTb3VyY2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJNZWRpYUNvbnRyb2xzLmgiCiAjaW5jbHVkZSAiTWVkaWFEb2N1bWVudC5oIgogI2luY2x1ZGUg
Ik1lZGlhRXJyb3IuaCIKQEAgLTEzNiw2ICsxMzcsMzEgQEAgc3RhdGljIGNvbnN0IGNoYXIqIG1l
ZGlhU291cmNlVVJMUHJvdG9jb2wgPSAieC1tZWRpYS1zb3VyY2UiOwogI2VuZGlmCiAKIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOworCit0eXBlZGVmIEhh
c2hNYXA8RG9jdW1lbnQqLCBIYXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPiA+IERvY0VsZW1lbnRT
ZXRNYXA7CitzdGF0aWMgRG9jRWxlbWVudFNldE1hcCYgZG9jdW1lbnRUb0VsZW1lbnRTZXRNYXAo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRG9jRWxlbWVudFNldE1hcCwgbWFwLCAoKSk7
CisgICAgcmV0dXJuIG1hcDsKK30KKworc3RhdGljIHZvaWQgYWRkRWxlbWVudFRvRG9jdW1lbnRN
YXAoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCwgRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAg
IERvY0VsZW1lbnRTZXRNYXAmIG1hcCA9IGRvY3VtZW50VG9FbGVtZW50U2V0TWFwKCk7CisgICAg
SGFzaFNldDxIVE1MTWVkaWFFbGVtZW50Kj4gc2V0ID0gbWFwLnRha2UoZG9jdW1lbnQpOworICAg
IHNldC5hZGQoZWxlbWVudCk7CisgICAgbWFwLmFkZChkb2N1bWVudCwgc2V0KTsKK30KKworc3Rh
dGljIHZvaWQgcmVtb3ZlRWxlbWVudEZyb21Eb2N1bWVudE1hcChIVE1MTWVkaWFFbGVtZW50KiBl
bGVtZW50LCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgRG9jRWxlbWVudFNldE1hcCYgbWFw
ID0gZG9jdW1lbnRUb0VsZW1lbnRTZXRNYXAoKTsKKyAgICBIYXNoU2V0PEhUTUxNZWRpYUVsZW1l
bnQqPiBzZXQgPSBtYXAudGFrZShkb2N1bWVudCk7CisgICAgc2V0LnJlbW92ZShlbGVtZW50KTsK
KyAgICBpZiAoIXNldC5pc0VtcHR5KCkpCisgICAgICAgIG1hcC5hZGQoZG9jdW1lbnQsIHNldCk7
Cit9CiAKIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCkBAIC0yMTMsNiArMjM5LDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRN
TE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW0KICNlbmRpZgogCiAgICAgc2V0SGFzQ3VzdG9tV2lsbE9yRGlkUmVjYWxjU3R5bGUoKTsKKyAg
ICBhZGRFbGVtZW50VG9Eb2N1bWVudE1hcCh0aGlzLCBkb2N1bWVudCk7CiB9CiAKIEhUTUxNZWRp
YUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKQEAgLTIyOCw2ICsyNTUsMTEgQEAgSFRNTE1l
ZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX3RleHRUcmFja3Muc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fdGV4dFRyYWNrc1tpXS0+
c2V0Q2xpZW50KDApOwogI2VuZGlmCisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAg
ICAgIG1fbWVkaWFDb250cm9sbGVyLT5yZW1vdmVNZWRpYUVsZW1lbnQodGhpcyk7CisKKyAgICBy
ZW1vdmVFbGVtZW50RnJvbURvY3VtZW50TWFwKHRoaXMsIGRvY3VtZW50KCkpOwogfQogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKQEAgLTIzNyw2
ICsyNjksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KCkKICAgICBzZXRTaG91bGREZWxheUxvYWRFdmVudChmYWxzZSk7CiAgICAgZG9jdW1lbnQo
KS0+dW5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyh0aGlzKTsKICAgICBk
b2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yTWVkaWFWb2x1bWVDYWxsYmFja3ModGhpcyk7CisgICAg
cmVtb3ZlRWxlbWVudEZyb21Eb2N1bWVudE1hcCh0aGlzLCBkb2N1bWVudCgpKTsKICAgICBIVE1M
RWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKIH0KIApAQCAtMjQ4LDYgKzI4
MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgp
CiAgICAgICAgIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KHRydWUpOwogICAgIGRvY3VtZW50KCkt
PnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOwogICAgIGRvY3Vt
ZW50KCktPnJlZ2lzdGVyRm9yTWVkaWFWb2x1bWVDYWxsYmFja3ModGhpcyk7CisgICAgYWRkRWxl
bWVudFRvRG9jdW1lbnRNYXAodGhpcywgZG9jdW1lbnQoKSk7CiAgICAgSFRNTEVsZW1lbnQ6OmRp
ZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKIH0KIApAQCAtMjk0LDcgKzMyOCw5IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQog
ICAgICAgICBpZiAoIWF1dG9wbGF5KCkgJiYgbV9wbGF5ZXIpCiAgICAgICAgICAgICBtX3BsYXll
ci0+c2V0UHJlbG9hZChtX3ByZWxvYWQpOwogCi0gICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBv
bmFib3J0QXR0cikKKyAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IG1lZGlhZ3JvdXBBdHRyKQor
ICAgICAgICBzZXRNZWRpYUdyb3VwKGF0dHItPnZhbHVlKCkpOworICAgIGVsc2UgaWYgKGF0dHJO
YW1lID09IG9uYWJvcnRBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5hYm9ydEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMs
IGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmJlZm9yZWxvYWRBdHRyKQogICAg
ICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVsb2FkRXZl
bnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwpAQCAtNTg0LDEw
ICs2MjAsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCgpCiAgICAg
ICAgIG1fc2Vla2luZyA9IGZhbHNlOwogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVkVGltZSgpOwog
ICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5lbXB0aWVkRXZlbnQpOworICAgICAg
ICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKICAgICB9CiAKICAgICAvLyA1IC0gU2V0IHRoZSBw
bGF5YmFja1JhdGUgYXR0cmlidXRlIHRvIHRoZSB2YWx1ZSBvZiB0aGUgZGVmYXVsdFBsYXliYWNr
UmF0ZSBhdHRyaWJ1dGUuCi0gICAgc2V0UGxheWJhY2tSYXRlKGRlZmF1bHRQbGF5YmFja1JhdGUo
KSk7CisgICAgc2V0UGxheWJhY2tSYXRlKG1fbWVkaWFDb250cm9sbGVyID8gbV9tZWRpYUNvbnRy
b2xsZXItPmRlZmF1bHRQbGF5YmFja1JhdGUoKSA6IGRlZmF1bHRQbGF5YmFja1JhdGUoKSk7CiAK
ICAgICAvLyA2IC0gU2V0IHRoZSBlcnJvciBhdHRyaWJ1dGUgdG8gbnVsbCBhbmQgdGhlIGF1dG9w
bGF5aW5nIGZsYWcgdG8gdHJ1ZS4KICAgICBtX2Vycm9yID0gMDsKQEAgLTEyMjQsNiArMTI2MSw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSBzdGF0ZSkKICAgICB9CiAKICAgICB1cGRhdGVQbGF5U3RhdGUoKTsKKyAgICB1cGRh
dGVNZWRpYUNvbnRyb2xsZXIoKTsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCkBAIC0x
NTIzLDYgKzE1NjEsMTAgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudFRpbWUoKSBj
b25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRpbWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikgeworICAg
ICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQogICAg
IHNlZWsodGltZSwgZWMpOwogfQogCkBAIC0xNTc0LDEzICsxNjE2LDE0IEBAIGZsb2F0IEhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNldFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRp
YUVsZW1lbnQ6OnNldFBsYXliYWNrUmF0ZSglZikiLCByYXRlKTsKLQorICAgIAogICAgIGlmICht
X3BsYXliYWNrUmF0ZSAhPSByYXRlKSB7CiAgICAgICAgIG1fcGxheWJhY2tSYXRlID0gcmF0ZTsK
ICAgICAgICAgaW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChl
dmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50KTsKICAgICB9Ci0gICAgaWYgKG1fcGxheWVyICYm
IHBvdGVudGlhbGx5UGxheWluZygpICYmIG1fcGxheWVyLT5yYXRlKCkgIT0gcmF0ZSkKKworICAg
IGlmIChtX3BsYXllciAmJiBwb3RlbnRpYWxseVBsYXlpbmcoKSAmJiBtX3BsYXllci0+cmF0ZSgp
ICE9IHJhdGUgJiYgIW1fbWVkaWFDb250cm9sbGVyKQogICAgICAgICBtX3BsYXllci0+c2V0UmF0
ZShyYXRlKTsKIH0KIApAQCAtMTY3Niw3ICsxNzE5LDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cGxheUludGVybmFsKCkKICAgICAgICAgRXhjZXB0aW9uQ29kZSB1bnVzZWQ7CiAgICAgICAg
IHNlZWsoMCwgdW51c2VkKTsKICAgICB9Ci0gICAgCisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xs
ZXIpCisgICAgICAgIG1fbWVkaWFDb250cm9sbGVyLT5icmluZ0VsZW1lbnRVcFRvU3BlZWQodGhp
cyk7CisKICAgICBpZiAobV9wYXVzZWQpIHsKICAgICAgICAgbV9wYXVzZWQgPSBmYWxzZTsKICAg
ICAgICAgaW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKQEAgLTE2OTAsNiArMTczNiw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkKICAgICBtX2F1dG9wbGF5aW5nID0gZmFs
c2U7CiAKICAgICB1cGRhdGVQbGF5U3RhdGUoKTsKKyAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIo
KTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZSgpCkBAIC0xODgxLDcgKzE5Mjgs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSgpCiAgICAgLy8gV2Ug
Y2FuIHNhZmVseSBjYWxsIHRoZSBpbnRlcm5hbCBwbGF5L3BhdXNlIG1ldGhvZHMsIHdoaWNoIGRv
bid0IGNoZWNrIHJlc3RyaWN0aW9ucywgYmVjYXVzZQogICAgIC8vIHRoaXMgbWV0aG9kIGlzIG9u
bHkgY2FsbGVkIGZyb20gdGhlIGJ1aWx0LWluIG1lZGlhIGNvbnRyb2xsZXIKICAgICBpZiAoY2Fu
UGxheSgpKSB7Ci0gICAgICAgIHNldFBsYXliYWNrUmF0ZShkZWZhdWx0UGxheWJhY2tSYXRlKCkp
OworICAgICAgICBzZXRQbGF5YmFja1JhdGUobV9tZWRpYUNvbnRyb2xsZXIgPyBtX21lZGlhQ29u
dHJvbGxlci0+ZGVmYXVsdFBsYXliYWNrUmF0ZSgpIDogZGVmYXVsdFBsYXliYWNrUmF0ZSgpKTsK
ICAgICAgICAgcGxheUludGVybmFsKCk7CiAgICAgfSBlbHNlIAogICAgICAgICBwYXVzZUludGVy
bmFsKCk7CkBAIC0yMjI5LDIwICsyMjc2LDMzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJUaW1lQ2hhbmdlZChNZWRpYVBsYXllciopCiAKICAgICBmbG9hdCBub3cgPSBjdXJy
ZW50VGltZSgpOwogICAgIGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7Ci0gICAgaWYgKCFpc25hbihk
dXIpICYmIGR1ciAmJiBub3cgPj0gZHVyKSB7Ci0gICAgICAgIGlmIChsb29wKCkpIHsKKyAgICAK
KyAgICAvLyBXaGVuIHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIHJlYWNoZXMgdGhlIGVu
ZCBvZiB0aGUgbWVkaWEgcmVzb3VyY2Ugd2hlbiB0aGUgZGlyZWN0aW9uIG9mCisgICAgLy8gcGxh
eWJhY2sgaXMgZm9yd2FyZHMsIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCBmb2xsb3cgdGhlc2Ug
c3RlcHM6CisgICAgaWYgKCFpc25hbihkdXIpICYmIGR1ciAmJiBub3cgPj0gZHVyICYmIG1fcGxh
eWJhY2tSYXRlID4gMCkgeworICAgICAgICAvLyBJZiB0aGUgbWVkaWEgZWxlbWVudCBoYXMgYSBs
b29wIGF0dHJpYnV0ZSBzcGVjaWZpZWQgYW5kIGRvZXMgbm90IGhhdmUgYSBjdXJyZW50IG1lZGlh
IGNvbnRyb2xsZXIsCisgICAgICAgIGlmIChsb29wKCkgJiYgIW1fbWVkaWFDb250cm9sbGVyKSB7
CiAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRFeGNlcHRpb247CiAgICAgICAgICAg
ICBtX3NlbnRFbmRFdmVudCA9IGZhbHNlOworICAgICAgICAgICAgLy8gIHRoZW4gc2VlayB0byB0
aGUgZWFybGllc3QgcG9zc2libGUgcG9zaXRpb24gb2YgdGhlIG1lZGlhIHJlc291cmNlIGFuZCBh
Ym9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgICAgIHNlZWsoMCwgaWdub3JlZEV4Y2VwdGlvbik7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIW1fcGF1c2VkKSB7CisgICAgICAg
ICAgICAvLyBJZiB0aGUgbWVkaWEgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgY3VycmVudCBtZWRp
YSBjb250cm9sbGVyLCBhbmQgdGhlIG1lZGlhIGVsZW1lbnQKKyAgICAgICAgICAgIC8vIGhhcyBz
dGlsbCBlbmRlZCBwbGF5YmFjaywgYW5kIHRoZSBkaXJlY3Rpb24gb2YgcGxheWJhY2sgaXMgc3Rp
bGwgZm9yd2FyZHMsIGFuZCBwYXVzZWQKKyAgICAgICAgICAgIC8vIGlzIGZhbHNlLAorICAgICAg
ICAgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlciAmJiAhbV9wYXVzZWQpIHsKKyAgICAgICAgICAg
ICAgICAvLyBjaGFuZ2VzIHBhdXNlZCB0byB0cnVlIGFuZCBmaXJlcyBhIHNpbXBsZSBldmVudCBu
YW1lZCBwYXVzZSBhdCB0aGUgbWVkaWEgZWxlbWVudC4KICAgICAgICAgICAgICAgICBtX3BhdXNl
ZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGF1
c2VFdmVudCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBRdWV1ZSBhIHRhc2sgdG8g
ZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBlbmRlZCBhdCB0aGUgbWVkaWEgZWxlbWVudC4KICAg
ICAgICAgICAgIGlmICghbV9zZW50RW5kRXZlbnQpIHsKICAgICAgICAgICAgICAgICBtX3NlbnRF
bmRFdmVudCA9IHRydWU7CiAgICAgICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVz
KCkuZW5kZWRFdmVudCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBJZiB0aGUgbWVk
aWEgZWxlbWVudCBoYXMgYSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIsIHRoZW4gcmVwb3J0IHRo
ZSBjb250cm9sbGVyIHN0YXRlCisgICAgICAgICAgICAvLyBmb3IgdGhlIG1lZGlhIGVsZW1lbnQn
cyBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIuCisgICAgICAgICAgICB1cGRhdGVNZWRpYUNvbnRy
b2xsZXIoKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCkBAIC0yNDI2LDEwICsyNDg2LDcg
QEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBIVE1MTWVkaWFFbGVtZW50OjpwbGF5ZWQoKQogCiBQ
YXNzUmVmUHRyPFRpbWVSYW5nZXM+IEhUTUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKCkgY29uc3QK
IHsKLSAgICAvLyBGSVhNRSByZWFsIHJhbmdlcyBzdXBwb3J0Ci0gICAgaWYgKCFtYXhUaW1lU2Vl
a2FibGUoKSkKLSAgICAgICAgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwotICAgIHJldHVy
biBUaW1lUmFuZ2VzOjpjcmVhdGUobWluVGltZVNlZWthYmxlKCksIG1heFRpbWVTZWVrYWJsZSgp
KTsKKyAgICByZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+c2Vla2FibGUoKSA6IFRpbWVSYW5n
ZXM6OmNyZWF0ZSgpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxh
eWluZygpIGNvbnN0CkBAIC0yNDM4LDcgKzI0OTUsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OnBvdGVudGlhbGx5UGxheWluZygpIGNvbnN0CiAgICAgLy8gd2hlbiBpdCByYW4gb3V0IG9mIGJ1
ZmZlcmVkIGRhdGEuIEEgbW92aWUgaXMgdGhpcyBzdGF0ZSBpcyAicG90ZW50aWFsbHkgcGxheWlu
ZyIsIG1vZHVsbyB0aGUKICAgICAvLyBjaGVja3MgaW4gY291bGRQbGF5SWZFbm91Z2hEYXRhKCku
CiAgICAgYm9vbCBwYXVzZWRUb0J1ZmZlciA9IG1fcmVhZHlTdGF0ZU1heGltdW0gPj0gSEFWRV9G
VVRVUkVfREFUQSAmJiBtX3JlYWR5U3RhdGUgPCBIQVZFX0ZVVFVSRV9EQVRBOwotICAgIHJldHVy
biAocGF1c2VkVG9CdWZmZXIgfHwgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpICYm
IGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpOworICAgIHJldHVybiAocGF1c2VkVG9CdWZmZXIgfHwg
bV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpICYmIGNvdWxkUGxheUlmRW5vdWdoRGF0
YSgpICYmICFpc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigpOwogfQogCiBib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OmNvdWxkUGxheUlmRW5vdWdoRGF0YSgpIGNvbnN0CkBAIC0yNDYwLDEwICsyNTE3
LDExIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6ZW5kZWRQbGF5YmFjaygpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIGFuZCB0aGUgY3VycmVudCBwbGF5YmFjayBwb3Np
dGlvbiBpcyB0aGUgZW5kIG9mIHRoZSBtZWRpYSByZXNvdXJjZSBhbmQgdGhlIGRpcmVjdGlvbgot
ICAgIC8vIG9mIHBsYXliYWNrIGlzIGZvcndhcmRzIGFuZCB0aGUgbWVkaWEgZWxlbWVudCBkb2Vz
IG5vdCBoYXZlIGEgbG9vcCBhdHRyaWJ1dGUgc3BlY2lmaWVkLAorICAgIC8vIG9mIHBsYXliYWNr
IGlzIGZvcndhcmRzLCBFaXRoZXIgdGhlIG1lZGlhIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhIGxv
b3AgYXR0cmlidXRlIHNwZWNpZmllZCwKKyAgICAvLyBvciB0aGUgbWVkaWEgZWxlbWVudCBoYXMg
YSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIuCiAgICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUo
KTsKICAgICBpZiAobV9wbGF5YmFja1JhdGUgPiAwKQotICAgICAgICByZXR1cm4gZHVyID4gMCAm
JiBub3cgPj0gZHVyICYmICFsb29wKCk7CisgICAgICAgIHJldHVybiBkdXIgPiAwICYmIG5vdyA+
PSBkdXIgJiYgKCFsb29wKCkgfHwgbV9tZWRpYUNvbnRyb2xsZXIpOwogCiAgICAgLy8gb3IgdGhl
IGN1cnJlbnQgcGxheWJhY2sgcG9zaXRpb24gaXMgdGhlIGVhcmxpZXN0IHBvc3NpYmxlIHBvc2l0
aW9uIGFuZCB0aGUgZGlyZWN0aW9uIAogICAgIC8vIG9mIHBsYXliYWNrIGlzIGJhY2t3YXJkcwpA
QCAtMjUwOSw4ICsyNTY3LDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlVm9sdW1l
KCkKICAgICBpZiAoIXByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCkpIHsKICAgICAgICAg
UGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAgICAgICAgZmxvYXQgdm9sdW1lTXVs
dGlwbGllciA9IHBhZ2UgPyBwYWdlLT5tZWRpYVZvbHVtZSgpIDogMTsKLSAgICAKLSAgICAgICAg
bV9wbGF5ZXItPnNldE11dGVkKG1fbXV0ZWQpOworICAgICAgICBib29sIHNob3VsZE11dGUgPSBt
X211dGVkOworCisgICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikgeworICAgICAgICAgICAg
dm9sdW1lTXVsdGlwbGllciAqPSBtX21lZGlhQ29udHJvbGxlci0+dm9sdW1lKCk7CisgICAgICAg
ICAgICBzaG91bGRNdXRlID0gbV9tZWRpYUNvbnRyb2xsZXItPm11dGVkKCk7CisgICAgICAgIH0K
KworICAgICAgICBtX3BsYXllci0+c2V0TXV0ZWQoc2hvdWxkTXV0ZSk7CiAgICAgICAgIG1fcGxh
eWVyLT5zZXRWb2x1bWUobV92b2x1bWUgKiB2b2x1bWVNdWx0aXBsaWVyKTsKICAgICB9CiAKQEAg
LTI1NzcsMTEgKzI2NDEsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3Rh
dGUoKQogICAgICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICAgICAgbWVkaWFD
b250cm9scygpLT5wbGF5YmFja1N0b3BwZWQoKTsKICAgICB9Ci0gICAgCisKKyAgICB1cGRhdGVN
ZWRpYUNvbnRyb2xsZXIoKTsKKwogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5kZXJl
cigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwogfQotICAgIAorCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNldFBhdXNlZEludGVybmFsKGJvb2wgYikKIHsKICAgICBtX3BhdXNlZEludGVybmFsID0g
YjsKQEAgLTI2NDEsNiArMjcwNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNl
bGxlZExvYWQoKQogCiAgICAgLy8gUmVzZXQgbV9yZWFkeVN0YXRlIHNpbmNlIG1fcGxheWVyIGlz
IGdvbmUuCiAgICAgbV9yZWFkeVN0YXRlID0gSEFWRV9OT1RISU5HOworICAgIHVwZGF0ZU1lZGlh
Q29udHJvbGxlcigpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblN1c3BlbmQoKSBj
b25zdApAQCAtMzEzMyw2ICszMjAwLDk4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0SXRl
bVZhbHVlVGV4dChjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIH0KICNl
bmRpZgogCitjb25zdCBTdHJpbmcmIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhR3JvdXAoKSBjb25z
dAoreworICAgIHJldHVybiBtX21lZGlhR3JvdXA7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0TWVkaWFHcm91cChjb25zdCBTdHJpbmcmIGdyb3VwKQoreworICAgIGlmIChtX21lZGlh
R3JvdXAgPT0gZ3JvdXApCisgICAgICAgIHJldHVybjsKKyAgICBtX21lZGlhR3JvdXAgPSBncm91
cDsKKworICAgIC8vIFdoZW4gYSBtZWRpYSBlbGVtZW50IGlzIGNyZWF0ZWQgd2l0aCBhIG1lZGlh
Z3JvdXAgYXR0cmlidXRlLCBhbmQgd2hlbiBhIG1lZGlhIGVsZW1lbnQncyBtZWRpYWdyb3VwIAor
ICAgIC8vIGF0dHJpYnV0ZSBpcyBzZXQsIGNoYW5nZWQsIG9yIHJlbW92ZWQsIHRoZSB1c2VyIGFn
ZW50IG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgLy8gMS4gTGV0IG0gW3RoaXNd
IGJlIHRoZSBtZWRpYSBlbGVtZW50IGluIHF1ZXN0aW9uLgorICAgIC8vIDIuIExldCBtIGhhdmUg
bm8gY3VycmVudCBtZWRpYSBjb250cm9sbGVyLCBpZiBpdCBjdXJyZW50bHkgaGFzIG9uZS4KKyAg
ICBzZXRDb250cm9sbGVyKDApOworICAgIC8vIDMuIElmIG0ncyBtZWRpYWdyb3VwIGF0dHJpYnV0
ZSBpcyBiZWluZyByZW1vdmVkLCB0aGVuIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmIChncm91
cC5pc051bGwoKSB8fCBncm91cC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICAvLyA0
LiBJZiB0aGVyZSBpcyBhbm90aGVyIG1lZGlhIGVsZW1lbnQgd2hvc2UgRG9jdW1lbnQgaXMgdGhl
IHNhbWUgYXMgbSdzIERvY3VtZW50IChldmVuIGlmIG9uZSBvciBib3RoCisgICAgLy8gb2YgdGhl
c2UgZWxlbWVudHMgYXJlIG5vdCBhY3R1YWxseSBpbiB0aGUgRG9jdW1lbnQpLCAKKyAgICBIYXNo
U2V0PEhUTUxNZWRpYUVsZW1lbnQqPiBlbGVtZW50cyA9IGRvY3VtZW50VG9FbGVtZW50U2V0TWFw
KCkuZ2V0KGRvY3VtZW50KCkpOworICAgIGZvciAoSGFzaFNldDxIVE1MTWVkaWFFbGVtZW50Kj46
Oml0ZXJhdG9yIGkgPSBlbGVtZW50cy5iZWdpbigpOyBpICE9IGVsZW1lbnRzLmVuZCgpOyArK2kp
IHsKKyAgICAgICAgaWYgKCppID09IHRoaXMpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAvLyBhbmQgd2hpY2ggYWxzbyBoYXMgYSBtZWRpYWdyb3VwIGF0dHJpYnV0ZSwgYW5kIHdo
b3NlIG1lZGlhZ3JvdXAgYXR0cmlidXRlIGhhcyB0aGUgc2FtZSB2YWx1ZSBhcworICAgICAgICAv
LyB0aGUgbmV3IHZhbHVlIG9mIG0ncyBtZWRpYWdyb3VwIGF0dHJpYnV0ZSwgICAgICAgIAorICAg
ICAgICBpZiAoKCppKS0+bWVkaWFHcm91cCgpID09IGdyb3VwKSB7CisgICAgICAgICAgICAvLyAg
dGhlbiBsZXQgY29udHJvbGxlciBiZSB0aGF0IG1lZGlhIGVsZW1lbnQncyBjdXJyZW50IG1lZGlh
IGNvbnRyb2xsZXIuCisgICAgICAgICAgICBzZXRDb250cm9sbGVyKCgqaSktPmNvbnRyb2xsZXIo
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBPdGhl
cndpc2UsIGxldCBjb250cm9sbGVyIGJlIGEgbmV3bHkgY3JlYXRlZCBNZWRpYUNvbnRyb2xsZXIu
CisgICAgc2V0Q29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXI6OmNyZWF0ZSgpKTsKK30KKworTWVk
aWFDb250cm9sbGVyKiBIVE1MTWVkaWFFbGVtZW50Ojpjb250cm9sbGVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9tZWRpYUNvbnRyb2xsZXIuZ2V0KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0Q29udHJvbGxlcihQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gY29udHJvbGxl
cikKK3sKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVkaWFDb250cm9s
bGVyLT5yZW1vdmVNZWRpYUVsZW1lbnQodGhpcyk7CisKKyAgICBtX21lZGlhQ29udHJvbGxlciA9
IGNvbnRyb2xsZXI7CisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVk
aWFDb250cm9sbGVyLT5hZGRNZWRpYUVsZW1lbnQodGhpcyk7Cit9CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6dXBkYXRlTWVkaWFDb250cm9sbGVyKCkKK3sKKyAgICBpZiAobV9tZWRpYUNvbnRy
b2xsZXIpCisgICAgICAgIG1fbWVkaWFDb250cm9sbGVyLT5yZXBvcnRDb250cm9sbGVyU3RhdGUo
KTsKK30KKworYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc0Jsb2NrZWQoKSBjb25zdAoreworICAg
IC8vIEEgbWVkaWEgZWxlbWVudCBpcyBhIGJsb2NrZWQgbWVkaWEgZWxlbWVudCBpZiBpdHMgcmVh
ZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgaW4gdGhlCisgICAgLy8gSEFWRV9OT1RISU5HIHN0YXRlLCB0
aGUgSEFWRV9NRVRBREFUQSBzdGF0ZSwgb3IgdGhlIEhBVkVfQ1VSUkVOVF9EQVRBIHN0YXRlLAor
ICAgIGlmIChtX3JlYWR5U3RhdGUgPD0gSEFWRV9DVVJSRU5UX0RBVEEpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgLy8gb3IgaWYgdGhlIGVsZW1lbnQgaGFzIHBhdXNlZCBmb3IgdXNlciBp
bnRlcmFjdGlvbi4KKyAgICByZXR1cm4gcGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCk7Cit9CisK
K2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNCbG9ja2VkT25NZWRpYUNvbnRyb2xsZXIoKSBjb25z
dAoreworICAgIGlmICghbV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIEEgbWVkaWEgZWxlbWVudCBpcyBibG9ja2VkIG9uIGl0cyBtZWRpYSBjb250cm9s
bGVyIGlmIHRoZSBNZWRpYUNvbnRyb2xsZXIgaXMgYSBibG9ja2VkIAorICAgIC8vIG1lZGlhIGNv
bnRyb2xsZXIsCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5pc0Jsb2NrZWQoKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBvciBpZiBpdHMgbWVkaWEgY29udHJvbGxlciBwb3Np
dGlvbiBpcyBlaXRoZXIgYmVmb3JlIHRoZSBtZWRpYSByZXNvdXJjZSdzIGVhcmxpZXN0IHBvc3Np
YmxlIAorICAgIC8vIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBNZWRpYUNvbnRyb2xsZXIncyB0
aW1lbGluZSBvciBhZnRlciB0aGUgZW5kIG9mIHRoZSBtZWRpYSByZXNvdXJjZSAKKyAgICAvLyBy
ZWxhdGl2ZSB0byB0aGUgTWVkaWFDb250cm9sbGVyJ3MgdGltZWxpbmUuCisgICAgZmxvYXQgbWVk
aWFDb250cm9sbGVyUG9zaXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsK
KyAgICBpZiAobWVkaWFDb250cm9sbGVyUG9zaXRpb24gPCBzdGFydFRpbWUoKSB8fCBtZWRpYUNv
bnRyb2xsZXJQb3NpdGlvbiA+IHN0YXJ0VGltZSgpICsgZHVyYXRpb24oKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDBkMmY5ZmM0OWUxMDBjYjUxN2JlZjBk
MTUwYWM0Zjc3YTU3NWU5ZWMuLjE0MjEwOTg0MmIwZGM4ZTgwYjI5NWNlMzQ2YzQzZjE1ZGIzMjFm
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNZWRpYUNv
bnRyb2xsZXJJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogCiAjaWYgRU5B
QkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCkBAIC01MCw2ICs1MSw3IEBAIGNsYXNzIE1lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZTsKIGNsYXNzIEV2ZW50OwogY2xhc3MgSFRNTFNvdXJjZUVs
ZW1lbnQ7CiBjbGFzcyBIVE1MVHJhY2tFbGVtZW50OworY2xhc3MgTWVkaWFDb250cm9sbGVyOwog
Y2xhc3MgTWVkaWFDb250cm9sczsKIGNsYXNzIE1lZGlhRXJyb3I7CiBjbGFzcyBLVVJMOwpAQCAt
NjMsNyArNjUsNyBAQCBjbGFzcyBXaWRnZXQ7CiAvLyBCdXQgaXQgY2FuJ3QgYmUgdW50aWwgdGhl
IENocm9taXVtIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCBjbGFzcyBpcyBmaXhlZCBzbyBpdAog
Ly8gbm8gbG9uZ2VyIGRlcGVuZHMgb24gdHlwZWNhc3RpbmcgYSBNZWRpYVBsYXllckNsaWVudCB0
byBhbiBIVE1MTWVkaWFFbGVtZW50LgogCi1jbGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGlj
IEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHByaXZhdGUgTWVkaWFDYW5T
dGFydExpc3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CitjbGFzcyBIVE1MTWVkaWFFbGVt
ZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHByaXZh
dGUgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMg
TWVkaWFDb250cm9sbGVySW50ZXJmYWNlCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwg
cHJpdmF0ZSBUZXh0VHJhY2tDbGllbnQKICNlbmRpZgpAQCAtMTA1LDcgKzEwNyw3IEBAIHB1Ymxp
YzoKIAogICAgIGVudW0gTmV0d29ya1N0YXRlIHsgTkVUV09SS19FTVBUWSwgTkVUV09SS19JRExF
LCBORVRXT1JLX0xPQURJTkcsIE5FVFdPUktfTk9fU09VUkNFIH07CiAgICAgTmV0d29ya1N0YXRl
IG5ldHdvcmtTdGF0ZSgpIGNvbnN0OwotICAgIAorCiAgICAgU3RyaW5nIHByZWxvYWQoKSBjb25z
dDsgICAgCiAgICAgdm9pZCBzZXRQcmVsb2FkKGNvbnN0IFN0cmluZyYpOwogCkBAIC0xMTQsNyAr
MTE2LDYgQEAgcHVibGljOgogICAgIFN0cmluZyBjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKSBjb25zdDsKIAogLy8gcmVhZHkgc3RhdGUKLSAgICBlbnVtIFJlYWR5U3RhdGUgeyBI
QVZFX05PVEhJTkcsIEhBVkVfTUVUQURBVEEsIEhBVkVfQ1VSUkVOVF9EQVRBLCBIQVZFX0ZVVFVS
RV9EQVRBLCBIQVZFX0VOT1VHSF9EQVRBIH07CiAgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkg
Y29uc3Q7CiAgICAgYm9vbCBzZWVraW5nKCkgY29uc3Q7CiAKQEAgLTIzMCw2ICsyMzEsMTIgQEAg
cHVibGljOgogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKTsK
ICNlbmRpZgogCisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYpOworCisgICAgTWVkaWFDb250cm9sbGVyKiBj
b250cm9sbGVyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDb250cm9sbGVyKFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sbGVyPik7CisKIHByb3RlY3RlZDoKICAgICBIVE1MTWVkaWFFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkhUTUxNZWRpYUVsZW1l
bnQoKTsKQEAgLTM5NCw2ICs0MDEsOCBAQCBwcml2YXRlOgogICAgIC8vIFBhdXNlcyBwbGF5YmFj
ayB3aXRob3V0IGNoYW5naW5nIGFueSBzdGF0ZXMgb3IgZ2VuZXJhdGluZyBldmVudHMKICAgICB2
b2lkIHNldFBhdXNlZEludGVybmFsKGJvb2wpOwogCisgICAgdm9pZCBzZXRQbGF5YmFja1JhdGVJ
bnRlcm5hbChmbG9hdCk7CisKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFDYW5TdGFydCgpOwogCiAg
ICAgdm9pZCBzZXRTaG91bGREZWxheUxvYWRFdmVudChib29sKTsKQEAgLTQxMiw2ICs0MjEsMTIg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXRlbVZhbHVlVGV4dChjb25zdCBTdHJp
bmcmLCBFeGNlcHRpb25Db2RlJik7CiAjZW5kaWYKIAorICAgIHZvaWQgdXBkYXRlTWVkaWFDb250
cm9sbGVyKCk7CisgICAgYm9vbCBpc0Jsb2NrZWQoKSBjb25zdDsKKyAgICBib29sIGlzQmxvY2tl
ZE9uTWVkaWFDb250cm9sbGVyKCkgY29uc3Q7CisgICAgYm9vbCBoYXNTb3VyY2UoKSBjb25zdCB7
IHJldHVybiBtX25ldHdvcmtTdGF0ZSAhPSBORVRXT1JLX0VNUFRZIHx8IG1fbmV0d29ya1N0YXRl
ICE9IE5FVFdPUktfTk9fU09VUkNFOyB9CisgICAgYm9vbCBpc0xpdmVTdHJlYW0oKSBjb25zdCB7
IHJldHVybiBtb3ZpZUxvYWRUeXBlKCkgPT0gTWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW07IH0KKwog
ICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fbG9hZFRpbWVyOwogICAgIFRpbWVyPEhUTUxN
ZWRpYUVsZW1lbnQ+IG1fYXN5bmNFdmVudFRpbWVyOwogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1l
bnQ+IG1fcHJvZ3Jlc3NFdmVudFRpbWVyOwpAQCAtNTE2LDYgKzUzMSwxMCBAQCBwcml2YXRlOgog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBt
X3RleHRUcmFja3M7CiAjZW5kaWYKKworICAgIFN0cmluZyBtX21lZGlhR3JvdXA7CisgICAgZnJp
ZW5kIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBt
X21lZGlhQ29udHJvbGxlcjsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaWRsCmluZGV4IDMzMGFkYmFhZGU3MTAyNjljMmYyZGU1ZWVjNWNj
MWUxNjJiMGM5YjUuLjUyMWE1MjcyMTZmM2U4MThkNmQ3YWRiYTk1OTZlODk5YzdlOGVlZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbApAQCAtMTE0LDUgKzExNCw4
IEBAIG1vZHVsZSBodG1sIHsKICNpZiBkZWZpbmVkKEVOQUJMRV9WSURFT19UUkFDSykgJiYgRU5B
QkxFX1ZJREVPX1RSQUNLCiAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10g
VGV4dFRyYWNrIGFkZFRyYWNrKGluIERPTVN0cmluZyBraW5kLCBpbiBbT3B0aW9uYWxdIERPTVN0
cmluZyBsYWJlbCwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgbGFuZ3VhZ2UpOwogI2VuZGlmCisK
KyAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsIENvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBDb252ZXJ0
TnVsbFN0cmluZ1RvTnVsbF0gRE9NU3RyaW5nIG1lZGlhR3JvdXA7CisgICAgYXR0cmlidXRlIFtD
dXN0b21TZXR0ZXJdIE1lZGlhQ29udHJvbGxlciBjb250cm9sbGVyOwogfTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTdkNjAyZTQxNmUyMGJm
ZTBjMDM2ODcxNjAwNWFiOGQ0ZGE3YjU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsNTg3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIk1lZGlh
Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiQ2xvY2suaCIKKyNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIlRpbWVSYW5n
ZXMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNw
YWNlIHN0ZDsKKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IE1lZGlhQ29udHJvbGxlcjo6
Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbGxlcigpKTsK
K30KKworTWVkaWFDb250cm9sbGVyOjpNZWRpYUNvbnRyb2xsZXIoKQorICAgIDogbV9wYXVzZWQo
ZmFsc2UpCisgICAgLCBtX2RlZmF1bHRQbGF5YmFja1JhdGUoMSkKKyAgICAsIG1fdm9sdW1lKDEp
CisgICAgLCBtX211dGVkKGZhbHNlKQorICAgICwgbV9yZWFkeVN0YXRlKEhBVkVfTk9USElORykK
KyAgICAsIG1fcGxheWJhY2tTdGF0ZShXQUlUSU5HKQorICAgICwgbV9hc3luY0V2ZW50VGltZXIo
dGhpcywgJk1lZGlhQ29udHJvbGxlcjo6YXN5bmNFdmVudFRpbWVyRmlyZWQpCisgICAgLCBtX2Ns
b3NlZENhcHRpb25zVmlzaWJsZShmYWxzZSkKKyAgICAsIG1fY2xvY2soQ2xvY2s6OmNyZWF0ZSgp
KQoreworfQorCitNZWRpYUNvbnRyb2xsZXI6On5NZWRpYUNvbnRyb2xsZXIoKQoreworfQorCit2
b2lkIE1lZGlhQ29udHJvbGxlcjo6YWRkTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVs
ZW1lbnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIEFTU0VSVCghbV9tZWRpYUVsZW1l
bnRzLmNvbnRhaW5zKGVsZW1lbnQpKTsKKworICAgIG1fbWVkaWFFbGVtZW50cy5hcHBlbmQoZWxl
bWVudCk7CisgICAgYnJpbmdFbGVtZW50VXBUb1NwZWVkKGVsZW1lbnQpOworfQorCit2b2lkIE1l
ZGlhQ29udHJvbGxlcjo6cmVtb3ZlTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1l
bnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIEFTU0VSVChtX21lZGlhRWxlbWVudHMu
Y29udGFpbnMoZWxlbWVudCkpOworICAgIG1fbWVkaWFFbGVtZW50cy5yZW1vdmUobV9tZWRpYUVs
ZW1lbnRzLmZpbmQoZWxlbWVudCkpOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6Y29udGFp
bnNNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKGVsZW1lbnQpOworfQorCitQYXNzUmVmUHRy
PFRpbWVSYW5nZXM+IE1lZGlhQ29udHJvbGxlcjo6YnVmZmVyZWQoKSBjb25zdAoreworICAgIGlm
IChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gVGltZVJhbmdlczo6
Y3JlYXRlKCk7CisKKyAgICAvLyBUaGUgYnVmZmVyZWQgYXR0cmlidXRlIG11c3QgcmV0dXJuIGEg
bmV3IHN0YXRpYyBub3JtYWxpemVkIFRpbWVSYW5nZXMgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyAK
KyAgICAvLyB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSByYW5nZXMgb2YgdGhlIG1lZGlhIHJlc291
cmNlcyBvZiB0aGUgc2xhdmVkIG1lZGlhIGVsZW1lbnRzIHRoYXQgdGhlIAorICAgIC8vIHVzZXIg
YWdlbnQgaGFzIGJ1ZmZlcmVkLCBhdCB0aGUgdGltZSB0aGUgYXR0cmlidXRlIGlzIGV2YWx1YXRl
ZC4KKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWRSYW5nZXMgPSBtX21lZGlhRWxlbWVu
dHMuZmlyc3QoKS0+YnVmZmVyZWQoKTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4
IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgYnVmZmVyZWRSYW5n
ZXMtPmludGVyc2VjdFdpdGgobV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+YnVmZmVyZWQoKS5nZXQo
KSk7CisgICAgcmV0dXJuIGJ1ZmZlcmVkUmFuZ2VzOworfQorCitQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IE1lZGlhQ29udHJvbGxlcjo6c2Vla2FibGUoKSBjb25zdAoreworICAgIGlmIChtX21lZGlh
RWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7
CisKKyAgICAvLyBUaGUgc2Vla2FibGUgYXR0cmlidXRlIG11c3QgcmV0dXJuIGEgbmV3IHN0YXRp
YyBub3JtYWxpemVkIFRpbWVSYW5nZXMgb2JqZWN0IHRoYXQgcmVwcmVzZW50cworICAgIC8vIHRo
ZSBpbnRlcnNlY3Rpb24gb2YgdGhlIHJhbmdlcyBvZiB0aGUgbWVkaWEgcmVzb3VyY2VzIG9mIHRo
ZSBzbGF2ZWQgbWVkaWEgZWxlbWVudHMgdGhhdCB0aGUKKyAgICAvLyB1c2VyIGFnZW50IGlzIGFi
bGUgdG8gc2VlayB0bywgYXQgdGhlIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyBldmFsdWF0ZWQuCisg
ICAgUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlUmFuZ2VzID0gbV9tZWRpYUVsZW1lbnRzLmZp
cnN0KCktPnNlZWthYmxlKCk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAxOyBpbmRleCA8IG1f
bWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIHNlZWthYmxlUmFuZ2VzLT5p
bnRlcnNlY3RXaXRoKG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnNlZWthYmxlKCkuZ2V0KCkpOwor
ICAgIHJldHVybiBzZWVrYWJsZVJhbmdlczsKK30KKworUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBN
ZWRpYUNvbnRyb2xsZXI6OnBsYXllZCgpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKworICAgIC8vIFRo
ZSBwbGF5ZWQgYXR0cmlidXRlIG11c3QgcmV0dXJuIGEgbmV3IHN0YXRpYyBub3JtYWxpemVkIFRp
bWVSYW5nZXMgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyAKKyAgICAvLyB0aGUgdW5pb24gb2YgdGhl
IHJhbmdlcyBvZiB0aGUgbWVkaWEgcmVzb3VyY2VzIG9mIHRoZSBzbGF2ZWQgbWVkaWEgZWxlbWVu
dHMgdGhhdCB0aGUgCisgICAgLy8gdXNlciBhZ2VudCBoYXMgc28gZmFyIHJlbmRlcmVkLCBhdCB0
aGUgdGltZSB0aGUgYXR0cmlidXRlIGlzIGV2YWx1YXRlZC4KKyAgICBSZWZQdHI8VGltZVJhbmdl
cz4gcGxheWVkUmFuZ2VzID0gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPnBsYXllZCgpOworICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyAr
K2luZGV4KQorICAgICAgICBwbGF5ZWRSYW5nZXMtPnVuaW9uV2l0aChtX21lZGlhRWxlbWVudHNb
aW5kZXhdLT5wbGF5ZWQoKS5nZXQoKSk7CisgICAgcmV0dXJuIHBsYXllZFJhbmdlczsKK30KKwor
ZmxvYXQgTWVkaWFDb250cm9sbGVyOjpkdXJhdGlvbigpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6
IEludmVzdGlnYXRlIGNhY2hpbmcgdGhlIG1heGltdW0gZHVyYXRpb24gYW5kIG9ubHkgdXBkYXRp
bmcgdGhlIGNhY2hlZCB2YWx1ZQorICAgIC8vIHdoZW4gdGhlIHNsYXZlZCBtZWRpYSBlbGVtZW50
cycgZHVyYXRpb25zIGNoYW5nZS4KKyAgICBmbG9hdCBtYXhEdXJhdGlvbiA9IDA7CisgICAgZm9y
IChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5k
ZXgpIHsKKyAgICAgICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5k
dXJhdGlvbigpOworICAgICAgICBpZiAoaXNuYW4oZHVyYXRpb24pKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIG1heER1cmF0aW9uID0gbWF4KG1heER1cmF0aW9uLCBkdXJhdGlvbik7
CisgICAgfQorICAgIHJldHVybiBtYXhEdXJhdGlvbjsKK30KKworZmxvYXQgTWVkaWFDb250cm9s
bGVyOjpjdXJyZW50VGltZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBtX2Nsb2NrLT5jdXJy
ZW50VGltZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0Q3VycmVudFRpbWUoZmxv
YXQgdGltZSwgRXhjZXB0aW9uQ29kZSYgY29kZSkKK3sKKyAgICAvLyBXaGVuIHRoZSB1c2VyIGFn
ZW50IGlzIHRvIHNlZWsgdGhlIG1lZGlhIGNvbnRyb2xsZXIgdG8gYSBwYXJ0aWN1bGFyIG5ldyBw
bGF5YmFjayBwb3NpdGlvbiwgCisgICAgLy8gaXQgbXVzdCBmb2xsb3cgdGhlc2Ugc3RlcHM6Cisg
ICAgLy8gSWYgdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbiBpcyBsZXNzIHRoYW4gemVybywgdGhl
biBzZXQgaXQgdG8gemVyby4KKyAgICB0aW1lID0gbWF4KDAuMGYsIHRpbWUpOworICAgIAorICAg
IC8vIElmIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gaXMgZ3JlYXRlciB0aGFuIHRoZSBtZWRp
YSBjb250cm9sbGVyIGR1cmF0aW9uLCB0aGVuIHNldCBpdCAKKyAgICAvLyB0byB0aGUgbWVkaWEg
Y29udHJvbGxlciBkdXJhdGlvbi4KKyAgICB0aW1lID0gbWluKHRpbWUsIGR1cmF0aW9uKCkpOwor
ICAgIAorICAgIC8vIFNldCB0aGUgbWVkaWEgY29udHJvbGxlciBwb3NpdGlvbiB0byB0aGUgbmV3
IHBsYXliYWNrIHBvc2l0aW9uLgorICAgIG1fY2xvY2stPnNldEN1cnJlbnRUaW1lKHRpbWUpOwor
ICAgIAorICAgIC8vIFNlZWsgZWFjaCBzbGF2ZWQgbWVkaWEgZWxlbWVudCB0byB0aGUgbmV3IHBs
YXliYWNrIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBtZWRpYSBlbGVtZW50IHRpbWVsaW5lLgor
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgp
OyArK2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5zZWVrKHRpbWUsIGNv
ZGUpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6cGxheSgpCit7CisgICAgLy8gV2hlbiB0
aGUgcGxheSgpIG1ldGhvZCBpcyBpbnZva2VkLCBpZiB0aGUgTWVkaWFDb250cm9sbGVyIGlzIGEg
cGF1c2VkIG1lZGlhIGNvbnRyb2xsZXIsCisgICAgaWYgKCFtX3BhdXNlZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gdGhlIHVzZXIgYWdlbnQgbXVzdCBjaGFuZ2UgdGhlIE1lZGlhQ29udHJv
bGxlciBpbnRvIGEgcGxheWluZyBtZWRpYSBjb250cm9sbGVyLAorICAgIG1fcGF1c2VkID0gZmFs
c2U7CisgICAgLy8gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcGxh
eSBhdCB0aGUgTWVkaWFDb250cm9sbGVyLAorICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygp
LnBsYXlFdmVudCk7CisgICAgLy8gYW5kIHRoZW4gcmVwb3J0IHRoZSBjb250cm9sbGVyIHN0YXRl
IG9mIHRoZSBNZWRpYUNvbnRyb2xsZXIuCisgICAgcmVwb3J0Q29udHJvbGxlclN0YXRlKCk7Cit9
CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpwYXVzZSgpCit7CisgICAgLy8gV2hlbiB0aGUgcGF1
c2UoKSBtZXRob2QgaXMgaW52b2tlZCwgaWYgdGhlIE1lZGlhQ29udHJvbGxlciBpcyBhIHBsYXlp
bmcgbWVkaWEgY29udHJvbGxlciwKKyAgICBpZiAobV9wYXVzZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCBjaGFuZ2UgdGhlIE1lZGlhQ29udHJv
bGxlciBpbnRvIGEgcGF1c2VkIG1lZGlhIGNvbnRyb2xsZXIsCisgICAgbV9wYXVzZWQgPSB0cnVl
OworICAgIC8vIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHBhdXNl
IGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIsCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCku
cGF1c2VFdmVudCk7CisgICAgLy8gYW5kIHRoZW4gcmVwb3J0IHRoZSBjb250cm9sbGVyIHN0YXRl
IG9mIHRoZSBNZWRpYUNvbnRyb2xsZXIuCisgICAgcmVwb3J0Q29udHJvbGxlclN0YXRlKCk7Cit9
CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0IHJh
dGUpCit7CisgICAgaWYgKG1fZGVmYXVsdFBsYXliYWNrUmF0ZSA9PSByYXRlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBUaGUgZGVmYXVsdFBsYXliYWNrUmF0ZSBhdHRyaWJ1dGUsIG9uIHNl
dHRpbmcsIG11c3Qgc2V0IHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtZWRpYSBjb250cm9sbGVyCisg
ICAgLy8gZGVmYXVsdCBwbGF5YmFjayByYXRlIHRvIHRoZSBuZXcgdmFsdWUsCisgICAgbV9kZWZh
dWx0UGxheWJhY2tSYXRlID0gcmF0ZTsKKworICAgIC8vIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZp
cmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcmF0ZWNoYW5nZSBhdCB0aGUgTWVkaWFDb250cm9sbGVy
LgorICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCk7Cit9CisK
K2Zsb2F0IE1lZGlhQ29udHJvbGxlcjo6cGxheWJhY2tSYXRlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jbG9jay0+cGxheVJhdGUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldFBs
YXliYWNrUmF0ZShmbG9hdCByYXRlKQoreworICAgIGlmIChtX2Nsb2NrLT5wbGF5UmF0ZSgpID09
IHJhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBwbGF5YmFja1JhdGUgYXR0cmli
dXRlLCBvbiBzZXR0aW5nLCBtdXN0IHNldCB0aGUgTWVkaWFDb250cm9sbGVyJ3MgbWVkaWEgY29u
dHJvbGxlciAKKyAgICAvLyBwbGF5YmFjayByYXRlIHRvIHRoZSBuZXcgdmFsdWUsCisgICAgbV9j
bG9jay0+c2V0UGxheVJhdGUocmF0ZSk7CisKKyAgICAvLyB0aGVuIHF1ZXVlIGEgdGFzayB0byBm
aXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHJhdGVjaGFuZ2UgYXQgdGhlIE1lZGlhQ29udHJvbGxl
ci4KKyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpOworfQor
Cit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0Vm9sdW1lKGZsb2F0IGxldmVsLCBFeGNlcHRpb25D
b2RlJiBjb2RlKQoreworICAgIGlmIChtX3ZvbHVtZSA9PSBsZXZlbCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gSWYgdGhlIG5ldyB2YWx1ZSBpcyBvdXRzaWRlIHRoZSByYW5nZSAwLjAgdG8g
MS4wIGluY2x1c2l2ZSwgdGhlbiwgb24gc2V0dGluZywgYW4gCisgICAgLy8gSW5kZXhTaXplRXJy
b3IgZXhjZXB0aW9uIG11c3QgYmUgcmFpc2VkIGluc3RlYWQuCisgICAgaWYgKGxldmVsIDwgMCB8
fCBsZXZlbCA+IDEpIHsKKyAgICAgICAgY29kZSA9IElOREVYX1NJWkVfRVJSOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICAvLyBUaGUgdm9sdW1lIGF0dHJpYnV0ZSwgb24g
c2V0dGluZywgaWYgdGhlIG5ldyB2YWx1ZSBpcyBpbiB0aGUgcmFuZ2UgMC4wIHRvIDEuMCBpbmNs
dXNpdmUsCisgICAgLy8gbXVzdCBzZXQgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1lZGlhIGNvbnRy
b2xsZXIgdm9sdW1lIG11bHRpcGxpZXIgdG8gdGhlIG5ldyB2YWx1ZQorICAgIG1fdm9sdW1lID0g
bGV2ZWw7CisKKyAgICAvLyBhbmQgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQg
bmFtZWQgdm9sdW1lY2hhbmdlIGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIuCisgICAgc2NoZWR1bGVF
dmVudChldmVudE5hbWVzKCkudm9sdW1lY2hhbmdlRXZlbnQpOworCisgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAg
ICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnVwZGF0ZVZvbHVtZSgpOworfQorCit2b2lkIE1l
ZGlhQ29udHJvbGxlcjo6c2V0TXV0ZWQoYm9vbCBmbGFnKQoreworICAgIGlmIChtX211dGVkID09
IGZsYWcpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBtdXRlZCBhdHRyaWJ1dGUsIG9u
IHNldHRpbmcsIG11c3Qgc2V0IHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtZWRpYSBjb250cm9sbGVy
IG11dGUgb3ZlcnJpZGUKKyAgICAvLyB0byB0aGUgbmV3IHZhbHVlCisgICAgbV9tdXRlZCA9IGZs
YWc7CisKKyAgICAvLyBhbmQgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFt
ZWQgdm9sdW1lY2hhbmdlIGF0IHRoZSBNZWRpYUNvbnRyb2xsZXIuCisgICAgc2NoZWR1bGVFdmVu
dChldmVudE5hbWVzKCkudm9sdW1lY2hhbmdlRXZlbnQpOworCisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAg
IG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnVwZGF0ZVZvbHVtZSgpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbGxlcjo6cmVwb3J0Q29udHJvbGxlclN0YXRlKCkKK3sKKyAgICB1cGRhdGVSZWFkeVN0
YXRlKCk7CisgICAgdXBkYXRlUGxheWJhY2tTdGF0ZSgpOworfQorCitzdGF0aWMgQXRvbWljU3Ry
aW5nIGV2ZW50TmFtZUZvclJlYWR5U3RhdGUoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlOjpSZWFk
eVN0YXRlIHN0YXRlKQoreworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIE1lZGlhQ29u
dHJvbGxlckludGVyZmFjZTo6SEFWRV9OT1RISU5HOgorICAgICAgICByZXR1cm4gZXZlbnROYW1l
cygpLmVtcHRpZWRFdmVudDsKKyAgICBjYXNlIE1lZGlhQ29udHJvbGxlckludGVyZmFjZTo6SEFW
RV9NRVRBREFUQToKKyAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5sb2FkZWRtZXRhZGF0YUV2
ZW50OworICAgIGNhc2UgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlOjpIQVZFX0NVUlJFTlRfREFU
QToKKyAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5sb2FkZWRkYXRhRXZlbnQ7CisgICAgY2Fz
ZSBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U6OkhBVkVfRlVUVVJFX0RBVEE6CisgICAgICAgIHJl
dHVybiBldmVudE5hbWVzKCkuY2FucGxheUV2ZW50OworICAgIGNhc2UgTWVkaWFDb250cm9sbGVy
SW50ZXJmYWNlOjpIQVZFX0VOT1VHSF9EQVRBOgorICAgICAgICByZXR1cm4gZXZlbnROYW1lcygp
LmNhbnBsYXl0aHJvdWdoRXZlbnQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxsQXRvbTsKKyAgICB9Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sbGVyOjp1cGRhdGVSZWFkeVN0YXRlKCkKK3sKKyAgICBSZWFkeVN0YXRlIG9sZFJl
YWR5U3RhdGUgPSBtX3JlYWR5U3RhdGU7CisgICAgUmVhZHlTdGF0ZSBuZXdSZWFkeVN0YXRlOwor
ICAgIAorICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIElm
IHRoZSBNZWRpYUNvbnRyb2xsZXIgaGFzIG5vIHNsYXZlZCBtZWRpYSBlbGVtZW50cywgbGV0IG5l
dyByZWFkaW5lc3Mgc3RhdGUgYmUgMC4KKyAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IEhBVkVfTk9U
SElORzsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBPdGhlcndpc2UsIGxldCBpdCBoYXZlIHRo
ZSBsb3dlc3QgdmFsdWUgb2YgdGhlIHJlYWR5U3RhdGUgSURMIGF0dHJpYnV0ZXMgb2YgYWxsIG9m
IGl0cworICAgICAgICAvLyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMuCisgICAgICAgIG5ld1JlYWR5
U3RhdGUgPSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+cmVhZHlTdGF0ZSgpOworICAgICAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytp
bmRleCkKKyAgICAgICAgICAgIG5ld1JlYWR5U3RhdGUgPSBtaW4obmV3UmVhZHlTdGF0ZSwgbV9t
ZWRpYUVsZW1lbnRzW2luZGV4XS0+cmVhZHlTdGF0ZSgpKTsKKyAgICB9CisKKyAgICBpZiAobmV3
UmVhZHlTdGF0ZSA9PSBvbGRSZWFkeVN0YXRlKSAKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
SWYgdGhlIE1lZGlhQ29udHJvbGxlcidzIG1vc3QgcmVjZW50bHkgcmVwb3J0ZWQgcmVhZGluZXNz
IHN0YXRlIGlzIGdyZWF0ZXIgdGhhbiBuZXcgcmVhZGluZXNzIAorICAgIC8vIHN0YXRlIHRoZW4g
cXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgYXQgdGhlIE1lZGlhQ29udHJvbGxl
ciBvYmplY3QsIHdob3NlIG5hbWUgaXMgdGhlCisgICAgLy8gZXZlbnQgbmFtZSBjb3JyZXNwb25k
aW5nIHRvIHRoZSB2YWx1ZSBvZiBuZXcgcmVhZGluZXNzIHN0YXRlIGdpdmVuIGluIHRoZSB0YWJs
ZSBiZWxvdy4gW29taXR0ZWRdCisgICAgaWYgKG9sZFJlYWR5U3RhdGUgPiBuZXdSZWFkeVN0YXRl
KSB7CisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lRm9yUmVhZHlTdGF0ZShuZXdSZWFk
eVN0YXRlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBJZiB0aGUgTWVkaWFD
b250cm9sbGVyJ3MgbW9zdCByZWNlbnRseSByZXBvcnRlZCByZWFkaW5lc3Mgc3RhdGUgaXMgbGVz
cyB0aGFuIHRoZSBuZXcgcmVhZGluZXNzCisgICAgLy8gc3RhdGUsIHRoZW4gcnVuIHRoZXNlIHN1
YnN0ZXBzOgorICAgIC8vIDEuIExldCBuZXh0IHN0YXRlIGJlIHRoZSBNZWRpYUNvbnRyb2xsZXIn
cyBtb3N0IHJlY2VudGx5IHJlcG9ydGVkIHJlYWRpbmVzcyBzdGF0ZS4KKyAgICBSZWFkeVN0YXRl
IG5leHRTdGF0ZSA9IG9sZFJlYWR5U3RhdGU7CisgICAgZG8geworICAgICAgICAvLyAyLiBMb29w
OiBJbmNyZW1lbnQgbmV4dCBzdGF0ZSBieSBvbmUuCisgICAgICAgIG5leHRTdGF0ZSA9IHN0YXRp
Y19jYXN0PFJlYWR5U3RhdGU+KG5leHRTdGF0ZSArIDEpOworICAgICAgICAvLyAzLiBRdWV1ZSBh
IHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBhdCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVj
dCwgd2hvc2UgbmFtZSBpcyB0aGUKKyAgICAgICAgLy8gZXZlbnQgbmFtZSBjb3JyZXNwb25kaW5n
IHRvIHRoZSB2YWx1ZSBvZiBuZXh0IHN0YXRlIGdpdmVuIGluIHRoZSB0YWJsZSBiZWxvdy4gW29t
aXR0ZWRdCisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lRm9yUmVhZHlTdGF0ZShuZXh0
U3RhdGUpKTsgICAgICAgIAorICAgICAgICAvLyBJZiBuZXh0IHN0YXRlIGlzIGxlc3MgdGhhbiBu
ZXcgcmVhZGluZXNzIHN0YXRlLCB0aGVuIHJldHVybiB0byB0aGUgc3RlcCBsYWJlbGVkIGxvb3AK
KyAgICB9IHdoaWxlIChuZXh0U3RhdGUgPCBuZXdSZWFkeVN0YXRlKTsKKworICAgIC8vIExldCB0
aGUgTWVkaWFDb250cm9sbGVyJ3MgbW9zdCByZWNlbnRseSByZXBvcnRlZCByZWFkaW5lc3Mgc3Rh
dGUgYmUgbmV3IHJlYWRpbmVzcyBzdGF0ZS4KKyAgICBtX3JlYWR5U3RhdGUgPSBuZXdSZWFkeVN0
YXRlOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlUGxheWJhY2tTdGF0ZSgpCit7
CisgICAgUGxheWJhY2tTdGF0ZSBvbGRQbGF5YmFja1N0YXRlID0gbV9wbGF5YmFja1N0YXRlOwor
ICAgIFBsYXliYWNrU3RhdGUgbmV3UGxheWJhY2tTdGF0ZTsKKworICAgIC8vIEluaXRpYWxpemUg
bmV3IHBsYXliYWNrIHN0YXRlIGJ5IHNldHRpbmcgaXQgdG8gdGhlIHN0YXRlIGdpdmVuIGZvciB0
aGUgZmlyc3QgbWF0Y2hpbmcgCisgICAgLy8gY29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBs
aXN0OgorICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIElm
IHRoZSBNZWRpYUNvbnRyb2xsZXIgaGFzIG5vIHNsYXZlZCBtZWRpYSBlbGVtZW50cworICAgICAg
ICAvLyBMZXQgbmV3IHBsYXliYWNrIHN0YXRlIGJlIHdhaXRpbmcuCisgICAgICAgIG5ld1BsYXli
YWNrU3RhdGUgPSBXQUlUSU5HOworICAgIH0gZWxzZSBpZiAoaGFzRW5kZWQoKSkgeworICAgICAg
ICAvLyBJZiBhbGwgb2YgdGhlIE1lZGlhQ29udHJvbGxlcidzIHNsYXZlZCBtZWRpYSBlbGVtZW50
cyBoYXZlIGVuZGVkIHBsYXliYWNrIGFuZCB0aGUgbWVkaWEKKyAgICAgICAgLy8gY29udHJvbGxl
ciBwbGF5YmFjayByYXRlIGlzIHBvc2l0aXZlIG9yIHplcm8KKyAgICAgICAgLy8gTGV0IG5ldyBw
bGF5YmFjayBzdGF0ZSBiZSBlbmRlZC4KKyAgICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IEVOREVE
OworICAgIH0gZWxzZSBpZiAoaXNCbG9ja2VkKCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIE1lZGlh
Q29udHJvbGxlciBpcyBhIGJsb2NrZWQgbWVkaWEgY29udHJvbGxlcgorICAgICAgICAvLyBMZXQg
bmV3IHBsYXliYWNrIHN0YXRlIGJlIHdhaXRpbmcuCisgICAgICAgIG5ld1BsYXliYWNrU3RhdGUg
PSBXQUlUSU5HOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE90aGVyd2lzZQorICAgICAgICAv
LyBMZXQgbmV3IHBsYXliYWNrIHN0YXRlIGJlIHBsYXlpbmcuCisgICAgICAgIG5ld1BsYXliYWNr
U3RhdGUgPSBQTEFZSU5HOworICAgIH0KKworICAgIC8vIElmIHRoZSBNZWRpYUNvbnRyb2xsZXIn
cyBtb3N0IHJlY2VudGx5IHJlcG9ydGVkIHBsYXliYWNrIHN0YXRlIGlzIG5vdCBlcXVhbCB0byBu
ZXcgcGxheWJhY2sgc3RhdGUKKyAgICBpZiAobmV3UGxheWJhY2tTdGF0ZSA9PSBvbGRQbGF5YmFj
a1N0YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBhbmQgdGhlIG5ldyBwbGF5YmFjayBz
dGF0ZSBpcyBlbmRlZCwKKyAgICBpZiAobmV3UGxheWJhY2tTdGF0ZSA9PSBFTkRFRCkgeworICAg
ICAgICAvLyB0aGVuIHF1ZXVlIGEgdGFzayB0aGF0LCBpZiB0aGUgTWVkaWFDb250cm9sbGVyIG9i
amVjdCBpcyBhIHBsYXlpbmcgbWVkaWEgY29udHJvbGxlciwgYW5kIAorICAgICAgICAvLyBhbGwg
b2YgdGhlIE1lZGlhQ29udHJvbGxlcidzIHNsYXZlZCBtZWRpYSBlbGVtZW50cyBoYXZlIHN0aWxs
IGVuZGVkIHBsYXliYWNrLCBhbmQgdGhlIAorICAgICAgICAvLyBtZWRpYSBjb250cm9sbGVyIHBs
YXliYWNrIHJhdGUgaXMgc3RpbGwgcG9zaXRpdmUgb3IgemVybywgCisgICAgICAgIGlmICghbV9w
YXVzZWQgJiYgaGFzRW5kZWQoKSkgeworICAgICAgICAgICAgLy8gY2hhbmdlcyB0aGUgTWVkaWFD
b250cm9sbGVyIG9iamVjdCB0byBhIHBhdXNlZCBtZWRpYSBjb250cm9sbGVyCisgICAgICAgICAg
ICBtX3BhdXNlZCA9IHRydWU7CisgICAgICAgICAgICBtX2Nsb2NrLT5zdG9wKCk7CisKKyAgICAg
ICAgICAgIC8vIGFuZCB0aGVuIGZpcmVzIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHBhdXNlIGF0IHRo
ZSBNZWRpYUNvbnRyb2xsZXIgb2JqZWN0LgorICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVu
dE5hbWVzKCkucGF1c2VFdmVudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBJZiB0aGUg
TWVkaWFDb250cm9sbGVyJ3MgbW9zdCByZWNlbnRseSByZXBvcnRlZCBwbGF5YmFjayBzdGF0ZSBp
cyBub3QgZXF1YWwgdG8gbmV3IHBsYXliYWNrIHN0YXRlCisgICAgLy8gdGhlbiBxdWV1ZSBhIHRh
c2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBhdCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCwg
d2hvc2UgbmFtZSBpcyBwbGF5aW5nIAorICAgIC8vIGlmIG5ldyBwbGF5YmFjayBzdGF0ZSBpcyBw
bGF5aW5nLCBlbmRlZCBpZiBuZXcgcGxheWJhY2sgc3RhdGUgaXMgZW5kZWQsIGFuZCB3YWl0aW5n
IG90aGVyd2lzZS4KKyAgICBBdG9taWNTdHJpbmcgZXZlbnROYW1lOworICAgIHN3aXRjaCAobmV3
UGxheWJhY2tTdGF0ZSkgeworICAgIGNhc2UgV0FJVElORzoKKyAgICAgICAgZXZlbnROYW1lID0g
ZXZlbnROYW1lcygpLndhaXRpbmdFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFTkRF
RDoKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLmVuZGVkRXZlbnQ7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUExBWUlORzoKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1l
cygpLnBsYXlpbmdFdmVudDsKKyAgICAgICAgbV9jbG9jay0+c3RhcnQoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lKTsKKworICAgIC8vIExldCB0aGUgTWVkaWFDb250
cm9sbGVyJ3MgbW9zdCByZWNlbnRseSByZXBvcnRlZCBwbGF5YmFjayBzdGF0ZSBiZSBuZXcgcGxh
eWJhY2sgc3RhdGUuCisgICAgbV9wbGF5YmFja1N0YXRlID0gbmV3UGxheWJhY2tTdGF0ZTsKKwor
ICAgIHVwZGF0ZU1lZGlhRWxlbWVudHMoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVw
ZGF0ZU1lZGlhRWxlbWVudHMoKQoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXgg
PCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVu
dHNbaW5kZXhdLT51cGRhdGVQbGF5U3RhdGUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6
OmJyaW5nRWxlbWVudFVwVG9TcGVlZChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQoreworICAg
IEFTU0VSVChlbGVtZW50KTsKKyAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKGVs
ZW1lbnQpKTsKKworICAgIC8vIFdoZW4gdGhlIHVzZXIgYWdlbnQgaXMgdG8gYnJpbmcgYSBtZWRp
YSBlbGVtZW50IHVwIHRvIHNwZWVkIHdpdGggaXRzIG5ldyBtZWRpYSBjb250cm9sbGVyLAorICAg
IC8vIGl0IG11c3Qgc2VlayB0aGF0IG1lZGlhIGVsZW1lbnQgdG8gdGhlIE1lZGlhQ29udHJvbGxl
cidzIG1lZGlhIGNvbnRyb2xsZXIgcG9zaXRpb24gcmVsYXRpdmUKKyAgICAvLyB0byB0aGUgbWVk
aWEgZWxlbWVudCdzIHRpbWVsaW5lLgorICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZENvZGUgPSAw
OworICAgIGVsZW1lbnQtPnNlZWsoY3VycmVudFRpbWUoKSwgaWdub3JlZENvZGUpOworfQorCiti
b29sIE1lZGlhQ29udHJvbGxlcjo6aXNCbG9ja2VkKCkgY29uc3QKK3sKKyAgICAvLyBBIE1lZGlh
Q29udHJvbGxlciBpcyBhIGJsb2NrZWQgbWVkaWEgY29udHJvbGxlciBpZiB0aGUgTWVkaWFDb250
cm9sbGVyIGlzIGEgcGF1c2VkIG1lZGlhIAorICAgIC8vIGNvbnRyb2xsZXIsCisgICAgaWYgKG1f
cGF1c2VkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICBpZiAobV9tZWRpYUVsZW1l
bnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGJvb2wgYWxs
UGF1c2VkID0gdHJ1ZTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRp
YUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBl
bGVtZW50ID0gbV9tZWRpYUVsZW1lbnRzW2luZGV4XTsKKyAgICAgICAgLy8gIG9yIGlmIGFueSBv
ZiBpdHMgc2xhdmVkIG1lZGlhIGVsZW1lbnRzIGFyZSBibG9ja2VkIG1lZGlhIGVsZW1lbnRzLAor
ICAgICAgICBpZiAoZWxlbWVudC0+aXNCbG9ja2VkKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgCisgICAgICAgIC8vIG9yIGlmIGFueSBvZiBpdHMgc2xhdmVkIG1lZGlhIGVs
ZW1lbnRzIHdob3NlIGF1dG9wbGF5aW5nIGZsYWcgaXMgdHJ1ZSBzdGlsbCBoYXZlIHRoZWlyIAor
ICAgICAgICAvLyBwYXVzZWQgYXR0cmlidXRlIHNldCB0byB0cnVlLAorICAgICAgICBpZiAoZWxl
bWVudC0+YXV0b3BsYXkoKSAmJiBlbGVtZW50LT5wYXVzZWQoKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAKKyAgICAgICAgaWYgKCFlbGVtZW50LT5wYXVzZWQoKSkKKyAgICAg
ICAgICAgIGFsbFBhdXNlZCA9IGZhbHNlOworICAgIH0KKyAgICAKKyAgICAvLyBvciBpZiBhbGwg
b2YgaXRzIHNsYXZlZCBtZWRpYSBlbGVtZW50cyBoYXZlIHRoZWlyIHBhdXNlZCBhdHRyaWJ1dGUg
c2V0IHRvIHRydWUuCisgICAgcmV0dXJuIGFsbFBhdXNlZDsKK30KKworYm9vbCBNZWRpYUNvbnRy
b2xsZXI6Omhhc0VuZGVkKCkgY29uc3QKK3sKKyAgICBpZiAobV9jbG9jay0+cGxheVJhdGUoKSA8
PSAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKG1fbWVkaWFFbGVtZW50
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBib29sIGFsbEhh
dmVFbmRlZCA9IHRydWU7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVk
aWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVu
dHNbaW5kZXhdLT5lbmRlZCgpKQorICAgICAgICAgICAgYWxsSGF2ZUVuZGVkID0gZmFsc2U7Cisg
ICAgfQorICAgIHJldHVybiBhbGxIYXZlRW5kZWQ7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVy
OjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQoreworICAgIG1f
cGVuZGluZ0V2ZW50cy5hcHBlbmQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCB0cnVl
KSk7CisgICAgaWYgKCFtX2FzeW5jRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2Fz
eW5jRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVy
Ojphc3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xsZXI+KikKK3sKKyAgICBW
ZWN0b3I8UmVmUHRyPEV2ZW50PiA+IHBlbmRpbmdFdmVudHM7CisgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgCisgICAgbV9wZW5kaW5nRXZlbnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7Cisg
ICAgc2l6ZV90IGNvdW50ID0gcGVuZGluZ0V2ZW50cy5zaXplKCk7CisgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KQorICAgICAgICBkaXNwYXRjaEV2ZW50
KHBlbmRpbmdFdmVudHNbaW5kZXhdLnJlbGVhc2UoKSwgZWMpOworfQorCitTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBNZWRpYUNvbnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dAoreworICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPmRvY3VtZW50KCk7Cit9CisK
K2Jvb2wgTWVkaWFDb250cm9sbGVyOjpoYXNBdWRpbygpIGNvbnN0Cit7CisgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsK
KyAgICAgICAgaWYgKG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmhhc0F1ZGlvKCkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1l
ZGlhQ29udHJvbGxlcjo6aGFzVmlkZW8oKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGluZGV4
ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAg
IGlmIChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5oYXNWaWRlbygpKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnRy
b2xsZXI6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRl
eCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAg
ICBpZiAobV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQg
TWVkaWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCB2aXNpYmxlKQor
eworICAgIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlID0gdmlzaWJsZTsKKyAgICBmb3IgKHNpemVf
dCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAg
ICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKHZp
c2libGUpOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6c3VwcG9ydHNTY2FubmluZygpIGNv
bnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50
cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhd
LT5zdXBwb3J0c1NjYW5uaW5nKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6YmVnaW5TY3J1YmJp
bmcoKQoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVu
dHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5iZWdp
blNjcnViYmluZygpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6ZW5kU2NydWJiaW5nKCkK
K3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNp
emUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+ZW5kU2NydWJi
aW5nKCk7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpjYW5QbGF5KCkgY29uc3QKK3sKKyAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsg
KytpbmRleCkgeworICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmNhblBsYXko
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjppc0xpdmVTdHJlYW0oKSBjb25zdAoreworICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2lu
ZGV4KSB7CisgICAgICAgIGlmICghbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+aXNMaXZlU3RyZWFt
KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6aGFzU291cmNlKCkgY29uc3QKK3sKKyAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRl
eCkgeworICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmhhc1NvdXJjZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBNZWRpYUNvbnRyb2xsZXI6OnJldHVyblRvUmVhbHRpbWUoKQoreworICAgIGZvciAoc2l6
ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQor
ICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5yZXR1cm5Ub1JlYWx0aW1lKCk7Cit9CisK
K2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sbGVyOjppbnRlcmZhY2VOYW1lKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvck1lZGlhQ29udHJvbGxl
cjsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kMzBlMDAyNjA4NGI5MmJkMDhmYTAxNzRiMzRhNDFmNzJmN2U1M2I0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaApAQCAtMCwwICsx
LDE1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhQ29udHJvbGxlcl9oCisjZGVmaW5lIE1l
ZGlhQ29udHJvbGxlcl9oCisKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlICJBY3RpdmVE
T01PYmplY3QuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIu
aCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlcklu
dGVyZmFjZS5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDbG9jazsKK2NsYXNzIEhUTUxNZWRpYUVs
ZW1lbnQ7CitjbGFzcyBFdmVudDsKKworY2xhc3MgTWVkaWFDb250cm9sbGVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8TWVkaWFDb250cm9sbGVyPiwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFj
ZSwgcHVibGljIEV2ZW50VGFyZ2V0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xsZXI+IGNyZWF0ZSgpOworICAgIHZpcnR1YWwgfk1lZGlhQ29udHJvbGxlcigp
OworCisgICAgdm9pZCBhZGRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIHZv
aWQgcmVtb3ZlTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBib29sIGNvbnRh
aW5zTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKSBjb25zdDsKKworICAgIGNvbnN0IFN0
cmluZyYgbWVkaWFHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFHcm91cDsgfQorICAgIAor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0OworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBwbGF5ZWQoKTsKKyAgICAKKyAgICB2aXJ0dWFs
IGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCwgRXhjZXB0aW9u
Q29kZSYpOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBwYXVzZWQoKSBjb25zdCB7IHJldHVybiBt
X3BhdXNlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBwbGF5KCk7CisgICAgdmlydHVhbCB2b2lkIHBh
dXNlKCk7CisgICAgCisgICAgdmlydHVhbCBmbG9hdCBkZWZhdWx0UGxheWJhY2tSYXRlKCkgY29u
c3QgeyByZXR1cm4gbV9kZWZhdWx0UGxheWJhY2tSYXRlOyB9CisgICAgdmlydHVhbCB2b2lkIHNl
dERlZmF1bHRQbGF5YmFja1JhdGUoZmxvYXQpOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgcGxh
eWJhY2tSYXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFBsYXliYWNrUmF0ZShmbG9h
dCk7CisgICAgCisgICAgdmlydHVhbCBmbG9hdCB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3Zv
bHVtZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVk
OyB9CisgICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpOworICAgIAorICAgIHZpcnR1YWwg
UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9CisK
KyAgICBlbnVtIFBsYXliYWNrU3RhdGUgeyBXQUlUSU5HLCBQTEFZSU5HLCBFTkRFRCB9OworICAg
IHZpcnR1YWwgUGxheWJhY2tTdGF0ZSBwbGF5YmFja1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9w
bGF5YmFja1N0YXRlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNGdWxsc2NyZWVuKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVu
KCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQXVkaW8oKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgaGFzVmlkZW8oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ2xvc2VkQ2FwdGlv
bnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJv
b2wpOworICAgIHZpcnR1YWwgYm9vbCBjbG9zZWRDYXB0aW9uc1Zpc2libGUoKSBjb25zdCB7IHJl
dHVybiBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZTsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1NjYW5uaW5nKCkgY29uc3Q7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGJlZ2luU2Ny
dWJiaW5nKCk7CisgICAgdmlydHVhbCB2b2lkIGVuZFNjcnViYmluZygpOworICAgIAorICAgIHZp
cnR1YWwgYm9vbCBjYW5QbGF5KCkgY29uc3Q7CisgICAgCisgICAgdmlydHVhbCBib29sIGlzTGl2
ZVN0cmVhbSgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgYm9vbCBoYXNTb3VyY2UoKSBjb25z
dDsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuVG9SZWFsdGltZSgpOworCisgICAgYm9v
bCBpc0Jsb2NrZWQoKSBjb25zdDsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdXNpbmcgUmVm
Q291bnRlZDxNZWRpYUNvbnRyb2xsZXI+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRp
YUNvbnRyb2xsZXI+OjpkZXJlZjsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xsZXIoKTsK
KyAgICB2b2lkIHJlcG9ydENvbnRyb2xsZXJTdGF0ZSgpOworICAgIHZvaWQgdXBkYXRlUmVhZHlT
dGF0ZSgpOworICAgIHZvaWQgdXBkYXRlUGxheWJhY2tTdGF0ZSgpOworICAgIHZvaWQgdXBkYXRl
TWVkaWFFbGVtZW50cygpOworICAgIHZvaWQgYnJpbmdFbGVtZW50VXBUb1NwZWVkKEhUTUxNZWRp
YUVsZW1lbnQqKTsKKyAgICB2b2lkIHNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudE5hbWUpOworICAgIHZvaWQgYXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250
cm9sbGVyPiopOworICAgIGJvb2wgaGFzRW5kZWQoKSBjb25zdDsKKworICAgIC8vIEV2ZW50VGFy
Z2V0CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1f
ZXZlbnRUYXJnZXREYXRhOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2
ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIEV2ZW50
VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKworICAgIGZyaWVuZCBjbGFzcyBIVE1MTWVk
aWFFbGVtZW50OworICAgIGZyaWVuZCBjbGFzcyBNZWRpYUNvbnRyb2xsZXJFdmVudExpc3RlbmVy
OworICAgIFZlY3RvcjxIVE1MTWVkaWFFbGVtZW50Kj4gbV9tZWRpYUVsZW1lbnRzOworICAgIGJv
b2wgbV9wYXVzZWQ7CisgICAgZmxvYXQgbV9kZWZhdWx0UGxheWJhY2tSYXRlOworICAgIGZsb2F0
IG1fdm9sdW1lOworICAgIGJvb2wgbV9tdXRlZDsKKyAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0
ZTsKKyAgICBQbGF5YmFja1N0YXRlIG1fcGxheWJhY2tTdGF0ZTsKKyAgICBWZWN0b3I8UmVmUHRy
PEV2ZW50PiA+IG1fcGVuZGluZ0V2ZW50czsKKyAgICBUaW1lcjxNZWRpYUNvbnRyb2xsZXI+IG1f
YXN5bmNFdmVudFRpbWVyOworICAgIFN0cmluZyBtX21lZGlhR3JvdXA7CisgICAgYm9vbCBtX2Ns
b3NlZENhcHRpb25zVmlzaWJsZTsKKyAgICBQYXNzUmVmUHRyPENsb2NrPiBtX2Nsb2NrOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0YjJhMWZkOGNiOTQ0MDhhMzhk
YWJiOTU2M2ViZmE1ZjczOGZjNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhQ29udHJvbGxlci5pZGwKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVs
ZSBodG1sIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1WSURFTywKKyAg
ICAgICAgQ2FuQmVDb25zdHJ1Y3RlZCwKKyAgICAgICAgR2VuZXJhdGVUb0pTLAorICAgICAgICBF
dmVudFRhcmdldAorICAgIF0gTWVkaWFDb250cm9sbGVyIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFRpbWVSYW5nZXMgYnVmZmVyZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBU
aW1lUmFuZ2VzIHNlZWthYmxlOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUg
ZHVyYXRpb247CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgY3VycmVudFRpbWUKKyAgICAgICAg
ICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGJvb2xlYW4gcGF1c2VkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJh
bmdlcyBwbGF5ZWQ7CisgICAgICAgIHZvaWQgcGxheSgpOworICAgICAgICB2b2lkIHBhdXNlKCk7
CisKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBkZWZhdWx0UGxheWJhY2tSYXRlOworICAgICAg
ICBhdHRyaWJ1dGUgZG91YmxlIHBsYXliYWNrUmF0ZTsKKworICAgICAgICBhdHRyaWJ1dGUgZG91
YmxlIHZvbHVtZQorICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAg
ICAgICAgYXR0cmlidXRlIGJvb2xlYW4gbXV0ZWQ7CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQg
aW50ZXJmYWNlCisgICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlw
ZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3Rl
bmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVh
biB1c2VDYXB0dXJlKTsKKyAgICAgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0
cmluZyB0eXBlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlz
dGVuZXIgbGlzdGVuZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09w
dGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZl
bnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAg
ICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVySW50ZXJmYWNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzJjZDRkYTQxYWY0MmY1ZGEyYWU1ZGY5Nzc4YzRiODZiN2MzNTQwMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVySW50
ZXJmYWNlLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhQ29udHJv
bGxlckludGVyZmFjZV9oCisjZGVmaW5lIE1lZGlhQ29udHJvbGxlckludGVyZmFjZV9oCisKKyNp
ZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFRpbWVSYW5nZXM7CisKK3R5cGVkZWYgaW50IEV4Y2VwdGlv
bkNvZGU7CisKK2NsYXNzIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+TWVkaWFDb250cm9sbGVySW50ZXJmYWNlKCkgeyB9OworICAgIAorICAgIC8vIE1l
ZGlhQ29udHJvbGxlciBJREw6CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1
ZmZlcmVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBz
ZWVrYWJsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4g
cGxheWVkKCkgPSAwOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAg
CisgICAgdmlydHVhbCBib29sIHBhdXNlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cGxheSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKSA9IDA7CisgICAgCisgICAgdmly
dHVhbCBmbG9hdCBkZWZhdWx0UGxheWJhY2tSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0KSA9IDA7CisgICAgCisgICAgdmlydHVh
bCBmbG9hdCBwbGF5YmFja1JhdGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFBs
YXliYWNrUmF0ZShmbG9hdCkgPSAwOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgdm9sdW1lKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZmxvYXQsIEV4Y2VwdGlvbkNv
ZGUmKSA9IDA7CisgICAgCisgICAgdmlydHVhbCBib29sIG11dGVkKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29sKSA9IDA7CisgICAgCisgICAgZW51bSBSZWFkeVN0
YXRlIHsgSEFWRV9OT1RISU5HLCBIQVZFX01FVEFEQVRBLCBIQVZFX0NVUlJFTlRfREFUQSwgSEFW
RV9GVVRVUkVfREFUQSwgSEFWRV9FTk9VR0hfREFUQSB9OworICAgIHZpcnR1YWwgUmVhZHlTdGF0
ZSByZWFkeVN0YXRlKCkgY29uc3QgPSAwOworCisgICAgLy8gTWVkaWFDb250cm9sRWxlbWVudHM6
CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNGdWxsc2NyZWVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBl
bnRlckZ1bGxzY3JlZW4oKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQXVkaW8oKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1ZpZGVvKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2xv
c2VkQ2FwdGlvbnNWaXNpYmxlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzU2Nhbm5pbmcoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJp
bmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZFNjcnViYmluZygpID0gMDsKKworICAgIHZp
cnR1YWwgYm9vbCBjYW5QbGF5KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGlzTGl2
ZVN0cmVhbSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNTb3VyY2UoKSBjb25z
dCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuVG9SZWFsdGltZSgpID0gMDsKK307CisK
K30KKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGlt
ZVJhbmdlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwCmluZGV4IDk4
NGI2YmNhNDg1ODlmYjVkMjZhNDU5NDllM2ZmZTU2MTY2YjI1MzUuLmQ2OGVhMDM3MTgzMzJiZWU2
ZGI2ZjA3OTljMTI2MTUxN2JmMTVkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGltZVJhbmdlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcApA
QCAtMzEsMTMgKzMxLDE0IEBACiAjaW5jbHVkZSA8bWF0aC5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIFRpbWVSYW5nZXM6OlRpbWVSYW5nZXMo
ZmxvYXQgc3RhcnQsIGZsb2F0IGVuZCkKIHsKICAgICBhZGQoc3RhcnQsIGVuZCk7CiB9CiAKLVBh
c3NSZWZQdHI8VGltZVJhbmdlcz4gVGltZVJhbmdlczo6Y29weSgpCitQYXNzUmVmUHRyPFRpbWVS
YW5nZXM+IFRpbWVSYW5nZXM6OmNvcHkoKSBjb25zdAogewogICAgIFJlZlB0cjxUaW1lUmFuZ2Vz
PiBuZXdTZXNzaW9uID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7CiAgICAgCkBAIC00OCw2ICs0OSw1
MSBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IFRpbWVSYW5nZXM6OmNvcHkoKQogICAgIHJldHVy
biBuZXdTZXNzaW9uLnJlbGVhc2UoKTsKIH0KIAordm9pZCBUaW1lUmFuZ2VzOjppbnZlcnQoKQor
eworICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBpbnZlcnRlZCA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgp
OworICAgIGZsb2F0IHBvc0luZiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0
eSgpOworICAgIGZsb2F0IG5lZ0luZiA9IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5m
aW5pdHkoKTsKKworICAgIGlmICghbV9yYW5nZXMuc2l6ZSgpKQorICAgICAgICBpbnZlcnRlZC0+
YWRkKG5lZ0luZiwgcG9zSW5mKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGZsb2F0IHN0YXJ0
ID0gbV9yYW5nZXMuZmlyc3QoKS5tX3N0YXJ0ICE9IG5lZ0luZikKKyAgICAgICAgICAgIGludmVy
dGVkLT5hZGQobmVnSW5mLCBzdGFydCk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAw
OyBpbmRleCArIDEgPCBtX3Jhbmdlcy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBpbnZl
cnRlZC0+YWRkKG1fcmFuZ2VzW2luZGV4XS5tX2VuZCwgbV9yYW5nZXNbaW5kZXggKyAxXS5tX3N0
YXJ0KTsKKworICAgICAgICBpZiAoZmxvYXQgZW5kID0gbV9yYW5nZXMubGFzdCgpLm1fZW5kICE9
IHBvc0luZikKKyAgICAgICAgICAgIGludmVydGVkLT5hZGQoZW5kLCBwb3NJbmYpOworICAgIH0K
KworICAgIG1fcmFuZ2VzLnN3YXAoaW52ZXJ0ZWQtPm1fcmFuZ2VzKTsKK30KKwordm9pZCBUaW1l
UmFuZ2VzOjppbnRlcnNlY3RXaXRoKGNvbnN0IFRpbWVSYW5nZXMqIG90aGVyKQoreworICAgIEFT
U0VSVChvdGhlcik7CisgICAgUmVmUHRyPFRpbWVSYW5nZXM+IGludmVydGVkID0gY29weSgpOwor
ICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBpbnZlcnRlZE90aGVyID0gb3RoZXItPmNvcHkoKTsKKyAg
ICBpbnZlcnRlZC0+dW5pb25XaXRoKGludmVydGVkT3RoZXIuZ2V0KCkpOworICAgIGludmVydGVk
LT5pbnZlcnQoKTsKKworICAgIG1fcmFuZ2VzLnN3YXAoaW52ZXJ0ZWQtPm1fcmFuZ2VzKTsKK30K
Kwordm9pZCBUaW1lUmFuZ2VzOjp1bmlvbldpdGgoY29uc3QgVGltZVJhbmdlcyogb3RoZXIpCit7
CisgICAgQVNTRVJUKG90aGVyKTsKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gdW5pb25lZCA9IGNv
cHkoKTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3RoZXItPm1fcmFuZ2Vz
LnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBjb25zdCBSYW5nZSYgcmFuZ2UgPSBvdGhlci0+
bV9yYW5nZXNbaW5kZXhdOworICAgICAgICB1bmlvbmVkLT5hZGQocmFuZ2UubV9zdGFydCwgcmFu
Z2UubV9lbmQpOworICAgIH0KKworICAgIG1fcmFuZ2VzLnN3YXAodW5pb25lZC0+bV9yYW5nZXMp
OworfQorCiBmbG9hdCBUaW1lUmFuZ2VzOjpzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9u
Q29kZSYgZWMpIGNvbnN0IAogeyAKICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9UaW1lUmFuZ2VzLmgKaW5kZXggZDFkNTYzNzkyM2YwNzJmNzZjYjM3YmI2MWU3MjA2YmQw
NzM5MjEwZi4uNDI1NzY5MDM2YWM4ZWYyNzM4Nzg0N2YzMGFjNDFmZmU3MzA0YjU3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9UaW1lUmFuZ2VzLmgKQEAgLTQ2LDcgKzQ2LDEwIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBUaW1lUmFuZ2VzKHN0YXJ0LCBlbmQpKTsKICAgICB9CiAKLSAg
ICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGNvcHkoKTsKKyAgICBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IGNvcHkoKSBjb25zdDsKKyAgICB2b2lkIGludmVydCgpOworICAgIHZvaWQgaW50ZXJzZWN0
V2l0aChjb25zdCBUaW1lUmFuZ2VzKik7CisgICAgdm9pZCB1bmlvbldpdGgoY29uc3QgVGltZVJh
bmdlcyopOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZXMu
c2l6ZSgpOyB9CiAgICAgZmxvYXQgc3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUm
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCBiZDliMjM3Yzc1NDkxMDRj
ZjMxYzhjY2VjMjUyMTVmN2JiZGU1OTQxLi5mNzkyOGMwNmVkYzNkODY3OTdkOWJkNmUyM2ZkMTI0
MTZjYTAyZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC02MzQsNiArNjM0LDcg
QEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU8s
IEVuYWJsZWRBdFJ1bnRpbWVdIE1lZGlhRXJyb3JDb25zdHJ1Y3RvciBNZWRpYUVycm9yOwogICAg
ICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVZJREVPLCBFbmFibGVkQXRSdW50aW1lXSBUaW1l
UmFuZ2VzQ29uc3RydWN0b3IgVGltZVJhbmdlczsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRp
b25hbD1WSURFTywgRW5hYmxlZEF0UnVudGltZV0gSFRNTFNvdXJjZUVsZW1lbnRDb25zdHJ1Y3Rv
ciBIVE1MU291cmNlRWxlbWVudDsKKyAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1WSURF
TywgRW5hYmxlZEF0UnVudGltZV0gTWVkaWFDb250cm9sbGVyQ29uc3RydWN0b3IgTWVkaWFDb250
cm9sbGVyOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJiYgRU5BQkxFX0FO
SU1BVElPTl9BUEkKICAgICAgICAgYXR0cmlidXRlIFdlYktpdEFuaW1hdGlvbkNvbnN0cnVjdG9y
IFdlYktpdEFuaW1hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ns
b2NrR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9ja0dlbmVyaWMuY3Bw
CmluZGV4IDI4OTYwYzMwM2YxZmFlZDliYWUzMThjZjVkNjM3OWNkNmE1ZWVlN2YuLmFlYWY4Njc5
MTMzMWJlM2JiZWNjYjMwZjJlODRmM2NlNjA0ZjY3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0Nsb2NrR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ2xvY2tHZW5lcmljLmNwcApAQCAtMzYsMjcgKzM2LDI3IEBAIENsb2NrR2VuZXJpYzo6Q2xv
Y2tHZW5lcmljKCkKICAgICAsIG1fcmF0ZSgxKQogICAgICwgbV9vZmZzZXQoMCkKIHsKLSAgICBt
X3N0YXJ0VGltZSA9IG1fbGFzdFRpbWUgPSBjdXJyZW50VGltZSgpOworICAgIG1fc3RhcnRUaW1l
ID0gbV9sYXN0VGltZSA9IG5vdygpOwogfQogCiB2b2lkIENsb2NrR2VuZXJpYzo6c2V0Q3VycmVu
dFRpbWUoZmxvYXQgdGltZSkKIHsKLSAgICBtX3N0YXJ0VGltZSA9IG1fbGFzdFRpbWUgPSBjdXJy
ZW50VGltZSgpOworICAgIG1fc3RhcnRUaW1lID0gbV9sYXN0VGltZSA9IG5vdygpOwogICAgIG1f
b2Zmc2V0ID0gdGltZTsKIH0KIAogZmxvYXQgQ2xvY2tHZW5lcmljOjpjdXJyZW50VGltZSgpIGNv
bnN0CiB7CiAgICAgaWYgKG1fcnVubmluZykKLSAgICAgICAgbV9sYXN0VGltZSA9IGN1cnJlbnRU
aW1lKCk7CisgICAgICAgIG1fbGFzdFRpbWUgPSBub3coKTsKICAgICBmbG9hdCB0aW1lID0gKG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQobV9sYXN0VGltZSAtIG1fc3RhcnRUaW1lKSAqIG1fcmF0ZSkg
KyBtX29mZnNldDsKICAgICByZXR1cm4gdGltZTsKIH0KIAogdm9pZCBDbG9ja0dlbmVyaWM6OnNl
dFBsYXlSYXRlKGZsb2F0IHJhdGUpCiB7Ci0gICAgbV9vZmZzZXQgPSBjdXJyZW50VGltZSgpOwot
ICAgIG1fbGFzdFRpbWUgPSBtX3N0YXJ0VGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgbV9vZmZz
ZXQgPSBub3coKTsKKyAgICBtX2xhc3RUaW1lID0gbV9zdGFydFRpbWUgPSBub3coKTsKICAgICBt
X3JhdGUgPSByYXRlOwogfQogCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ2xvY2tHZW5lcmljOjpz
dGFydCgpCiAgICAgaWYgKG1fcnVubmluZykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9sYXN0
VGltZSA9IG1fc3RhcnRUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICBtX2xhc3RUaW1lID0gbV9z
dGFydFRpbWUgPSBub3coKTsKICAgICBtX3J1bm5pbmcgPSB0cnVlOwogfQogCkBAIC03NCw3ICs3
NCwxMyBAQCB2b2lkIENsb2NrR2VuZXJpYzo6c3RvcCgpCiAgICAgaWYgKCFtX3J1bm5pbmcpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fb2Zmc2V0ID0gY3VycmVudFRpbWUoKTsKLSAgICBtX2xh
c3RUaW1lID0gbV9zdGFydFRpbWUgPSBjdXJyZW50VGltZSgpOworICAgIG1fb2Zmc2V0ID0gbm93
KCk7CisgICAgbV9sYXN0VGltZSA9IG1fc3RhcnRUaW1lID0gbm93KCk7CiAgICAgbV9ydW5uaW5n
ID0gZmFsc2U7CiB9CisKK2Zsb2F0IENsb2NrR2VuZXJpYzo6bm93KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gV1RGOjpjdXJyZW50VGltZSgpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9DbG9ja0dlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2Nr
R2VuZXJpYy5oCmluZGV4IDcyYjBjYjAxYzBlYzEwMGFjM2ZhNzFmOWNlMTBkMjAwNGE1NTM0Yzcu
LjViNzViZjYzZjIyMmRjZTg3NTM5Mjk5ZDAwN2EyZDk3ZWMxMjc4Y2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0Nsb2NrR2VuZXJpYy5oCkBAIC00NSw2ICs0NSw4IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHN0b3AoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNSdW5uaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9ydW5uaW5nOyB9CiAKKyAgICBmbG9hdCBub3coKSBjb25zdDsKKwogICAgIGJv
b2wgbV9ydW5uaW5nOwogICAgIGZsb2F0IG1fcmF0ZTsKICAgICBmbG9hdCBtX29mZnNldDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRl
eCAwMThjN2RkMzNlMzhjMWI4Zjc3MzQ1YThjM2U0ZjgzNWZlYzYwYTczLi5mYzc3ZmYyODgzOGI3
YzA5NGFhNTNhNGZiZGYwNzE2ODBjYTIyMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC02MDksNiArNjA5LDExIEBAIFBhc3NS
ZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXI6OmJ1ZmZlcmVkKCkKICAgICByZXR1cm4gbV9w
cml2YXRlLT5idWZmZXJlZCgpOwogfQogCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxh
eWVyOjpzZWVrYWJsZSgpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2Vla2FibGUoKTsKK30K
KwogZmxvYXQgTWVkaWFQbGF5ZXI6Om1heFRpbWVTZWVrYWJsZSgpCiB7CiAgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+bWF4VGltZVNlZWthYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBjOTZiMDI1ZDgyZDAwNzA5MTY5ZWVhNTFjMDc4
MjZiNzQ1MDZjNDcxLi40NzczOWEwOGIwZTNkOWNjNzNjOTlhMTMxNDM0YTc4YWUwMzc0NTVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAg
LTI0MSw2ICsyNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmVzZXJ2ZXNQaXRjaChib29s
KTsKIAogICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKTsKKyAgICBQYXNzUmVm
UHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCk7CiAgICAgZmxvYXQgbWF4VGltZVNlZWthYmxlKCk7
CiAKICAgICB1bnNpZ25lZCBieXRlc0xvYWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCBmOGM3MGFiZTI4
YTdlZDAxZGZiOGEyY2I3ZjFjNjM2NjM3ZDM4NDQxLi42YzUyN2Q3ZTVjZDM4OTk5MTZiNDY1ZWY3
MmQ1NzE0NDA1NmVkN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJM
RShWSURFTykKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiVGltZVJhbmdl
cy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTkxLDYgKzkyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
dGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgPSAwOwogCisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gbWF4VGltZVNlZWthYmxl
KCkgPyBUaW1lUmFuZ2VzOjpjcmVhdGUoMCwgbWF4VGltZVNlZWthYmxlKCkpIDogVGltZVJhbmdl
czo6Y3JlYXRlKCk7IH0KICAgICB2aXJ0dWFsIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25z
dCA9IDA7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCAwNmU5YzE2ZTBmOTZjMDlkNzU0NmQyZjFlNDdjODZiNDNmMmVjZjkw
Li5kN2Q5NDU4ZGUyYzA1NDhkMDVmNzI1ODhlZmEwZjM1ODcwOGYxZjgyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzkgQEAKKzIwMTEtMTEtMDMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IE1lZGlhQ29udHJvbGxlci4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFj
ay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIt
cGxheWJhY2suaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci5o
dG1sOiBBZGRlZC4KKworMjAxMS0xMS0wMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgTWVkaWFDb250cm9sbGVyLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE0MDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBs
YXliYWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJv
bGxlci1wbGF5YmFjay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9s
bGVyLmh0bWw6IEFkZGVkLgorCisyMDExLTExLTAyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNvbnRyb2xsZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTQwOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJv
bGxlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xs
ZXItcGxheWJhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1j
b250cm9sbGVyLXBsYXliYWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLWNv
bnRyb2xsZXIuaHRtbDogQWRkZWQuCisKIDIwMTEtMTEtMTAgIE9qYW4gVmFmYWkgIDxvamFuQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBDaHJvbWl1bSByZWJhc2VsaW5lcyBhZnRlciByOTk5MDIu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmVjNjlkZDBjZjlmZTIxYzlmYWFhNWQyYTliOGNkODYyMzNmMzVhYTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDI1IEBACisgCitUZXN0IHByZXNlbmNlIG9mIE1lZGlhQ29udHJvbGxl
ciBjb25zdHJ1Y3RvciwgbWVkaWFDb250cm9sbGVyLCBhbmQgbWVkaWFHcm91cCBhdHRyaWJ1dGVz
OgorRVhQRUNURUQgKHR5cGVvZihNZWRpYUNvbnRyb2xsZXIpICE9ICd1bmRlZmluZWQnKSBPSwor
RVhQRUNURUQgKHZpZGVvLm1lZGlhQ29udHJvbGxlciA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAo
dmlkZW8ubWVkaWFHcm91cCA9PSAnJykgT0sKKworVGVzdCB0aGF0IHRoZSBwcmVzZW5jZSBvZiBh
IG1lZGlhR3JvdXAgYXR0cmlidXRlIGNyZWF0ZXMgYSBtZWRpYUNvbnRyb2xsZXI6CitFWFBFQ1RF
RCAodmlkZW8yLm1lZGlhR3JvdXAgPT0gJ2dyb3VwJykgT0sKK0VYUEVDVEVEICh2aWRlbzIubWVk
aWFDb250cm9sbGVyICE9ICdudWxsJykgT0sKKworVGVzdCB0aGF0IHNldHRpbmcgbWVkaWFHcm91
cCB0byBhbiBlbXB0eSBzdHJpbmcgcmVtb3ZlcyB0aGUgbWVkaWFDb250cm9sbGVyOgorUlVOKHZp
ZGVvLm1lZGlhR3JvdXAgPSAnJykKK0VYUEVDVEVEICh2aWRlby5tZWRpYUNvbnRyb2xsZXIgPT0g
J251bGwnKSBPSworCitUZXN0IG1hbnVhbGx5IGNyZWF0aW5nIGFuZCBhc3NpZ25pbmcgYSBtZWRp
YUNvbnRyb2xsZXIgdG8gYSBtZWRpYSBlbGVtZW50OgorUlVOKGNvbnRyb2xsZXIgPSBuZXcgTWVk
aWFDb250cm9sbGVyKCkpCitSVU4odmlkZW8ubWVkaWFDb250cm9sbGVyID0gY29udHJvbGxlcikK
K0VYUEVDVEVEICh2aWRlby5tZWRpYUNvbnRyb2xsZXIgPT0gJ1tvYmplY3QgTWVkaWFDb250cm9s
bGVyXScpIE9LCisKK1Rlc3QgdGhhdCB0d28gbWVkaWEgZWxlbWVudHMgd2l0aCB0aGUgc2FtZSBt
ZWRpYUdyb3VwIGhhdmUgdGhlIHNhbWUgbWVkaWFDb250cm9sbGVyOgorUlVOKHZpZGVvLm1lZGlh
R3JvdXAgPSAnZ3JvdXAnKQorUlVOKHZpZGVvMi5tZWRpYUdyb3VwID0gJ2dyb3VwJykKK0VYUEVD
VEVEICh2aWRlby5tZWRpYUNvbnRyb2xsZXIgPT09IHZpZGVvMi5tZWRpYUNvbnRyb2xsZXIgPT0g
J3RydWUnKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEv
bWVkaWEtY29udHJvbGxlci1wbGF5YmFjay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRp
YS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGE4
ZTA5MjEzZWUxYTcxMDdiODExYWI5Zjg4M2FkNDAxMmEzZmE2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorIAorUlVOKGNvbnRyb2xsZXIgPSB2aWRlby5tZWRpYUNvbnRyb2xs
ZXIpCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK1JVTihjb250cm9sbGVyLmN1cnJlbnRUaW1lID0g
NSkKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA9PSAnNScpIE9LCitFWFBFQ1RFRCAodmlk
ZW8yLmN1cnJlbnRUaW1lID09ICc1JykgT0sKK1JVTih2aWRlby5wbGF5KCkpCitSVU4odmlkZW8y
LnBsYXkoKSkKK1JVTihjb250cm9sbGVyLnBsYXkoKSkKK0VWRU5UKHBsYXlpbmcpCitFWFBFQ1RF
RCAoY29udHJvbGxlci5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKK0VWRU5UKGVuZGVkKQorRU5EIE9G
IFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1w
bGF5YmFjay5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFj
ay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdjMmI4M2VmMWFhODg5NmQ3YzIyMDdmN2E5NDY0OTBmM2NjZjVm
MmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVy
LXBsYXliYWNrLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9bWVkaWEtZmlsZS5qcz48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKworICAgICAgICA8
c2NyaXB0PgorICAgICAgICB2YXIgY29udHJvbGxlcjsKKyAgICAgICAgdmFyIHZpZGVvMjsKKwor
ICAgICAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgICAgIHZpZGVvID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF07CisgICAgICAgICAgICB2aWRlbzIgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8nKVsxXTsKKyAgICAgICAgICAgIHJ1
bignY29udHJvbGxlciA9IHZpZGVvLm1lZGlhQ29udHJvbGxlcicpOworICAgICAgICAgICAgY29u
dHJvbGxlci5hZGRFdmVudExpc3RlbmVyKCdjYW5wbGF5dGhyb3VnaCcsIGNhbnBsYXl0aHJvdWdo
LCB0cnVlKTsKKyAgICAgICAgICAgIHNldFNyY0J5VGFnTmFtZSgndmlkZW8nLCBmaW5kTWVkaWFG
aWxlKCd2aWRlbycsICdjb250ZW50L3Rlc3QnKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGZ1bmN0aW9uIGNhbnBsYXl0aHJvdWdoKCkgeworICAgICAgICAgICAgY29uc29sZVdyaXRl
KCJFVkVOVChjYW5wbGF5dGhyb3VnaCkiKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIucmVtb3Zl
RXZlbnRMaXN0ZW5lcignY2FucGxheXRocm91Z2gnLCBjYW5wbGF5dGhyb3VnaCwgdHJ1ZSk7Cisg
ICAgICAgICAgICBydW4oJ2NvbnRyb2xsZXIuY3VycmVudFRpbWUgPSA1Jyk7CisgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLmN1cnJlbnRUaW1lJywgNSk7CisgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoJ3ZpZGVvMi5jdXJyZW50VGltZScsIDUpOworICAgICAgICAgICAgcnVuKCd2aWRl
by5wbGF5KCknKTsKKyAgICAgICAgICAgIHJ1bigndmlkZW8yLnBsYXkoKScpOworICAgICAgICAg
ICAgY29udHJvbGxlci5hZGRFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgcGxheWluZywgdHJ1ZSk7
CisgICAgICAgICAgICBydW4oJ2NvbnRyb2xsZXIucGxheSgpJyk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGZ1bmN0aW9uIHBsYXlpbmcoKSB7IAorICAgICAgICAgICAgY29uc29sZVdy
aXRlKCJFVkVOVChwbGF5aW5nKSIpOworICAgICAgICAgICAgY29udHJvbGxlci5yZW1vdmVFdmVu
dExpc3RlbmVyKCdwbGF5aW5nJywgcGxheWluZywgdHJ1ZSk7CisgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ2NvbnRyb2xsZXIucGF1c2VkJywgZmFsc2UpOworICAgICAgICAgICAgY29udHJvbGxl
ci5hZGRFdmVudExpc3RlbmVyKCdlbmRlZCcsIGVuZGVkLCB0cnVlKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGVuZGVkKCkgeyAKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZF
TlQoZW5kZWQpIik7CisgICAgICAgICAgICBjb250cm9sbGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIo
J2VuZGVkJywgZW5kZWQsIHRydWUpOworICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0
KCkiPgorICAgICAgICA8dmlkZW8gbWVkaWFHcm91cD0iZ3JvdXAiIGNvbnRyb2xzPjwvdmlkZW8+
CisgICAgICAgIDx2aWRlbyBtZWRpYUdyb3VwPSJncm91cCIgY29udHJvbHM+PC92aWRlbz4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci5odG1sIGIvTGF5b3V0VGVzdHMv
bWVkaWEvbWVkaWEtY29udHJvbGxlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzMWM0OGRiMDQ3ODJjYTQ1
NGYyZjVhNDBkZmVjMjRiNzI1MmMxNGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9t
ZWRpYS9tZWRpYS1jb250cm9sbGVyLmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9bWVkaWEtZmlsZS5q
cz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4K
KworICAgICAgICA8c2NyaXB0PgorICAgICAgICB2YXIgY29udHJvbGxlcjsKKyAgICAgICAgdmFy
IHZpZGVvMjsKKworICAgICAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgICAgIHZpZGVv
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF07CisgICAgICAgICAg
ICB2aWRlbzIgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8nKVsxXTsKKwor
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IHByZXNlbmNlIG9mIE1lZGlhQ29udHJvbGxl
ciBjb25zdHJ1Y3RvciwgbWVkaWFDb250cm9sbGVyLCBhbmQgbWVkaWFHcm91cCBhdHRyaWJ1dGVz
OiIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0eXBlb2YoTWVkaWFDb250cm9sbGVyKSIs
ICJ1bmRlZmluZWQiLCAiIT0iKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubWVk
aWFDb250cm9sbGVyIiwgbnVsbCk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm1l
ZGlhR3JvdXAiLCAiIik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCJUZXN0IHRoYXQgdGhlIHByZXNlbmNlIG9mIGEgbWVkaWFHcm91cCBh
dHRyaWJ1dGUgY3JlYXRlcyBhIG1lZGlhQ29udHJvbGxlcjoiKQorICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJ2aWRlbzIubWVkaWFHcm91cCIsICdncm91cCcpOworICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJ2aWRlbzIubWVkaWFDb250cm9sbGVyIiwgbnVsbCwgIiE9Iik7CisgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IHRoYXQg
c2V0dGluZyBtZWRpYUdyb3VwIHRvIGFuIGVtcHR5IHN0cmluZyByZW1vdmVzIHRoZSBtZWRpYUNv
bnRyb2xsZXI6IikKKyAgICAgICAgICAgIHJ1bigidmlkZW8ubWVkaWFHcm91cCA9ICcnIik7Cisg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciIsIG51bGwpOwor
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
VGVzdCBtYW51YWxseSBjcmVhdGluZyBhbmQgYXNzaWduaW5nIGEgbWVkaWFDb250cm9sbGVyIHRv
IGEgbWVkaWEgZWxlbWVudDoiKQorICAgICAgICAgICAgcnVuKCJjb250cm9sbGVyID0gbmV3IE1l
ZGlhQ29udHJvbGxlcigpIik7CisgICAgICAgICAgICBydW4oInZpZGVvLm1lZGlhQ29udHJvbGxl
ciA9IGNvbnRyb2xsZXIiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubWVkaWFD
b250cm9sbGVyIiwgY29udHJvbGxlcik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwor
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IHRoYXQgdHdvIG1lZGlhIGVsZW1lbnRzIHdp
dGggdGhlIHNhbWUgbWVkaWFHcm91cCBoYXZlIHRoZSBzYW1lIG1lZGlhQ29udHJvbGxlcjoiKQor
ICAgICAgICAgICAgcnVuKCJ2aWRlby5tZWRpYUdyb3VwID0gJ2dyb3VwJyIpOworICAgICAgICAg
ICAgcnVuKCJ2aWRlbzIubWVkaWFHcm91cCA9ICdncm91cCciKTsKKyAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgidmlkZW8ubWVkaWFDb250cm9sbGVyID09PSB2aWRlbzIubWVkaWFDb250cm9sbGVy
IiwgdHJ1ZSk7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICAg
IDx2aWRlbz48L3ZpZGVvPgorICAgICAgICA8dmlkZW8gbWVkaWFncm91cD0iZ3JvdXAiPjwvdmlk
ZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLWxpb24vZmFzdC9yZWdpb25zL3JlbmRlci1yZWdpb24tY3VzdG9tLXN0eWxlLW1hcmst
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxpb24vZmFzdC9yZWdpb25z
L3JlbmRlci1yZWdpb24tY3VzdG9tLXN0eWxlLW1hcmstZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU2NzRlYTllNGZhODUwYTkzODQzZTNjZjhkYmJhNjU0ZGIzOTMwNDcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbi9mYXN0L3JlZ2lvbnMvcmVuZGVyLXJl
Z2lvbi1jdXN0b20tc3R5bGUtbWFyay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNCBAQAorbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHgxNjYKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0
ICgwLDApIHNpemUgODAweDE2NgorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUg
Nzg0eDE1MAorICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgMjAweDUwCisg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1MCkgc2l6ZSAyMDB4NTAKKyAgICAgIFJlbmRl
clJlZ2lvbiB7RElWfSBhdCAoMCwxMDApIHNpemUgMjAweDUwCitGbG93IFRocmVhZHMKKyAgVGhy
ZWFkIHdpdGggZmxvdy1uYW1lICdmbG93MScKKyAgICBsYXllciBhdCAoMCwwKSBzaXplIDIwMHgx
MDAKKyAgICAgIFJlbmRlckZsb3dUaHJlYWQgYXQgKDAsMCkgc2l6ZSAyMDB4MTAwCisgICAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDE2KSBzaXplIDIwMHgxODgKKyAgICAgICAgICBSZW5k
ZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSAyMDB4MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2OHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCAxNjg6ICJGaXJzdCBwYXJhIGdvZXMgaW50byByZWdpb24uIgorICAgICAgICAg
IFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDM0KSBzaXplIDIwMHgxOAorICAgICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTM0eDE4CisgICAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEzNDogIlRleHQgZ29lcyBpbnRvIHJlZ2lvbiIKKyAg
ICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNjgpIHNpemUgMjAweDE4CisgICAgICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxODd4MTgKKyAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTg3OiAiU2Vjb25kIHBhcmEgZ29lcyBpbnRvIHJlZ2lv
bi4iCisgICAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDEwMikgc2l6ZSAyMDB4MTgKKyAg
ICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE3NXgxOAorICAgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNzU6ICJUaGlyZCBwYXJhIGdvZXMgaW50
byByZWdpb24uIgorICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDEzNikg
c2l6ZSAyMDB4MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDEzNHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMzQ6ICJUZXh0
IGdvZXMgaW50byByZWdpb24iCisgICAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDE3MCkg
c2l6ZSAyMDB4MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDE4MngxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxODI6ICJGb3Vy
dGggcGFyYSBnb2VzIGludG8gcmVnaW9uLiIKKyAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvdzEnCisg
ICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdpb24xIHJlZ2lvbiBzdHlsZTogMQorICAgIFJlbmRl
clJlZ2lvbiB7RElWfSAjcmVnaW9uMyByZWdpb24gc3R5bGU6IDEK
</data>
<flag name="review"
          id="113334"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>