<?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>126530</bug_id>
          
          <creation_ts>2014-01-06 11:19:34 -0800</creation_ts>
          <short_desc>Teach MediaSessionManager to manage interruptions</short_desc>
          <delta_ts>2014-01-08 06:42:16 -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></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>964684</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-01-06 11:19:34 -0800</bug_when>
    <thetext>Create a mechanism for a platform to interrupt and optionally resume audio and video playback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964729</commentid>
    <comment_count>1</comment_count>
      <attachid>220451</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-01-06 13:07:35 -0800</bug_when>
    <thetext>Created attachment 220451
Patch for the bots to chew on</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964730</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-06 13:09:23 -0800</bug_when>
    <thetext>Attachment 220451 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/media/video-interruption-active-when-element-created-expected.txt&apos;, u&apos;LayoutTests/media/video-interruption-active-when-element-created.html&apos;, u&apos;LayoutTests/media/video-interruption-with-resume-allowing-play-expected.txt&apos;, u&apos;LayoutTests/media/video-interruption-with-resume-allowing-play.html&apos;, u&apos;LayoutTests/media/video-interruption-with-resume-not-allowing-play-expected.txt&apos;, u&apos;LayoutTests/media/video-interruption-with-resume-not-allowing-play.html&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.h&apos;, u&apos;Source/WebCore/html/HTMLVideoElement.cpp&apos;, u&apos;Source/WebCore/platform/audio/MediaSession.cpp&apos;, u&apos;Source/WebCore/platform/audio/MediaSession.h&apos;, u&apos;Source/WebCore/platform/audio/MediaSessionManager.cpp&apos;, u&apos;Source/WebCore/platform/audio/MediaSessionManager.h&apos;, u&apos;Source/WebCore/platform/audio/mac/AudioDestinationMac.cpp&apos;, u&apos;Source/WebCore/platform/audio/mac/AudioDestinationMac.h&apos;, u&apos;Source/WebCore/platform/audio/mac/MediaSessionManagerMac.cpp&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/testing/Internals.h&apos;, u&apos;Source/WebCore/testing/Internals.idl&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/html/HTMLMediaElement.cpp:62:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/html/HTMLMediaElement.cpp:4744:  More than one command on the same line in if  [whitespace/parens] [4]
Total errors found: 2 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964734</commentid>
    <comment_count>3</comment_count>
      <attachid>220452</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-01-06 13:18:46 -0800</bug_when>
    <thetext>Created attachment 220452
Fix style errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964747</commentid>
    <comment_count>4</comment_count>
      <attachid>220452</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2014-01-06 14:01:14 -0800</bug_when>
    <thetext>Comment on attachment 220452
Fix style errors

Attachment 220452 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/5040858160168960</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964766</commentid>
    <comment_count>5</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-01-06 14:41:27 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 220452 [details])
&gt; Attachment 220452 [details] did not pass efl-ews (efl):
&gt; Output: http://webkit-queues.appspot.com/results/5040858160168960

It looks you need to add a include path to efl-wk1 first. Please add &quot;${WEBCORE_DIR}/platform/audio&quot; to below line.

http://trac.webkit.org/browser/trunk/Source/WebKit/CMakeLists.txt#L40


If there is a similar build error on efl-wk2 as well, please add it(&quot;${WEBCORE_DIR}/platform/audio&quot;) to below as well.

http://trac.webkit.org/browser/trunk/Source/WebKit2/CMakeLists.txt#L96

Now I&apos;m verifying it locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964770</commentid>
    <comment_count>6</comment_count>
      <attachid>220452</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2014-01-06 15:04:32 -0800</bug_when>
    <thetext>Comment on attachment 220452
Fix style errors

Attachment 220452 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/4755002585251840</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964771</commentid>
    <comment_count>7</comment_count>
      <attachid>220459</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-01-06 15:05:49 -0800</bug_when>
    <thetext>Created attachment 220459
Updated patch

Patch updated with Gyuyoung&apos;s suggested fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964875</commentid>
    <comment_count>8</comment_count>
      <attachid>220459</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-06 21:25:52 -0800</bug_when>
    <thetext>Comment on attachment 220459
Updated patch

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

&gt; Source/WebCore/platform/audio/MediaSession.h:73
&gt; +    bool playbackPermitted(const HTMLMediaElement&amp;) const;
&gt; +    bool dataLoadingPermitted(const HTMLMediaElement&amp;) const;
&gt; +    bool fullscreenPermitted(const HTMLMediaElement&amp;) const;
&gt; +    bool pageAllowsDataLoading(const HTMLMediaElement&amp;) const;
&gt; +    bool pageAllowsPlaybackAfterResuming(const HTMLMediaElement&amp;) const;
&gt; +#if ENABLE(IOS_AIRPLAY)
&gt; +    bool showingPlaybackTargetPickerPermitted(const HTMLMediaElement&amp;) const;
&gt; +#endif

The platform layer is not allowed to know about HTMLMediaElements.  Is this really a platform layer concept? Is it wrapping an existing platform API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965097</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-01-07 11:47:54 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 220459 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=220459&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/audio/MediaSession.h:73
&gt; &gt; +    bool playbackPermitted(const HTMLMediaElement&amp;) const;
&gt; &gt; +    bool dataLoadingPermitted(const HTMLMediaElement&amp;) const;
&gt; &gt; +    bool fullscreenPermitted(const HTMLMediaElement&amp;) const;
&gt; &gt; +    bool pageAllowsDataLoading(const HTMLMediaElement&amp;) const;
&gt; &gt; +    bool pageAllowsPlaybackAfterResuming(const HTMLMediaElement&amp;) const;
&gt; &gt; +#if ENABLE(IOS_AIRPLAY)
&gt; &gt; +    bool showingPlaybackTargetPickerPermitted(const HTMLMediaElement&amp;) const;
&gt; &gt; +#endif
&gt; 
&gt; The platform layer is not allowed to know about HTMLMediaElements.  Is this really a platform layer concept? Is it wrapping an existing platform API?

Oops, good point. 

The session only uses an HTMLMediaElement to manage restrictions, which is tangential to the real purpose of this patch. I will move that logic back to HTMLMediaElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965098</commentid>
    <comment_count>10</comment_count>
      <attachid>220537</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-01-07 11:48:41 -0800</bug_when>
    <thetext>Created attachment 220537
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965099</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-07 11:49:32 -0800</bug_when>
    <thetext>Attachment 220537 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/media/video-interruption-active-when-element-created-expected.txt&apos;, u&apos;LayoutTests/media/video-interruption-active-when-element-created.html&apos;, u&apos;LayoutTests/media/video-interruption-with-resume-allowing-play-expected.txt&apos;, u&apos;LayoutTests/media/video-interruption-with-resume-allowing-play.html&apos;, u&apos;LayoutTests/media/video-interruption-with-resume-not-allowing-play-expected.txt&apos;, u&apos;LayoutTests/media/video-interruption-with-resume-not-allowing-play.html&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.h&apos;, u&apos;Source/WebCore/platform/audio/MediaSession.cpp&apos;, u&apos;Source/WebCore/platform/audio/MediaSession.h&apos;, u&apos;Source/WebCore/platform/audio/MediaSessionManager.cpp&apos;, u&apos;Source/WebCore/platform/audio/MediaSessionManager.h&apos;, u&apos;Source/WebCore/platform/audio/mac/AudioDestinationMac.cpp&apos;, u&apos;Source/WebCore/platform/audio/mac/AudioDestinationMac.h&apos;, u&apos;Source/WebCore/platform/audio/mac/MediaSessionManagerMac.cpp&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/testing/Internals.h&apos;, u&apos;Source/WebCore/testing/Internals.idl&apos;, u&apos;Source/WebKit/CMakeLists.txt&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit2/CMakeLists.txt&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/platform/audio/MediaSession.h:27:  MediaSession_h is incorrect. #defined constants should use all uppercase names with words separated by underscores.  [readability/naming/define/constants] [4]
Total errors found: 1 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965132</commentid>
    <comment_count>12</comment_count>
      <attachid>220537</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-07 13:18:58 -0800</bug_when>
    <thetext>Comment on attachment 220537
Updated patch

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

&gt; Source/WebCore/platform/audio/MediaSessionManager.cpp:52
&gt; +    for (auto it = m_sessions.begin(), end = m_sessions.end(); it != end; ++it) {
&gt;          if ((*it)-&gt;mediaType() == type)
&gt;              return true;
&gt;      }

for (auto* session : m_sessions) {
    if (session-&gt;mediaType() == type)
        return true;
}

&gt; Source/WebCore/platform/audio/MediaSessionManager.cpp:65
&gt; +    for (auto it = m_sessions.begin(), end = m_sessions.end(); it != end; ++it) {
&gt;          if ((*it)-&gt;mediaType() == type)
&gt;              ++count;
&gt;      }

Same here.

&gt; Source/WebCore/platform/audio/MediaSessionManager.cpp:76
&gt; +    for (auto it = m_sessions.begin(), end = m_sessions.end(); it != end; ++it)
&gt; +        (*it)-&gt;beginInterruption();

And here.

&gt; Source/WebCore/platform/audio/MediaSessionManager.cpp:86
&gt; +    for (auto it = m_sessions.begin(), end = m_sessions.end(); it != end; ++it)
&gt; +        (*it)-&gt;endInterruption(flags);

And here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965166</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-01-07 14:28:01 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Attachment 220537 [details] did not pass style-queue:
...
&gt; ERROR: Source/WebCore/platform/audio/MediaSession.h:27:  MediaSession_h is incorrect. #defined constants should use all uppercase names with words separated by underscores.  [readability/naming/define/constants] [4]
&gt; 
Huh?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965167</commentid>
    <comment_count>14</comment_count>
      <attachid>220548</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-01-07 14:28:38 -0800</bug_when>
    <thetext>Created attachment 220548
Updated to address Sam&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965169</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-07 14:29:55 -0800</bug_when>
    <thetext>Attachment 220548 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/media/video-interruption-active-when-element-created-expected.txt&apos;, u&apos;LayoutTests/media/video-interruption-active-when-element-created.html&apos;, u&apos;LayoutTests/media/video-interruption-with-resume-allowing-play-expected.txt&apos;, u&apos;LayoutTests/media/video-interruption-with-resume-allowing-play.html&apos;, u&apos;LayoutTests/media/video-interruption-with-resume-not-allowing-play-expected.txt&apos;, u&apos;LayoutTests/media/video-interruption-with-resume-not-allowing-play.html&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.h&apos;, u&apos;Source/WebCore/platform/audio/MediaSession.cpp&apos;, u&apos;Source/WebCore/platform/audio/MediaSession.h&apos;, u&apos;Source/WebCore/platform/audio/MediaSessionManager.cpp&apos;, u&apos;Source/WebCore/platform/audio/MediaSessionManager.h&apos;, u&apos;Source/WebCore/platform/audio/mac/AudioDestinationMac.cpp&apos;, u&apos;Source/WebCore/platform/audio/mac/AudioDestinationMac.h&apos;, u&apos;Source/WebCore/platform/audio/mac/MediaSessionManagerMac.cpp&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/testing/Internals.h&apos;, u&apos;Source/WebCore/testing/Internals.idl&apos;, u&apos;Source/WebKit/CMakeLists.txt&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit2/CMakeLists.txt&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/platform/audio/MediaSession.h:27:  MediaSession_h is incorrect. #defined constants should use all uppercase names with words separated by underscores.  [readability/naming/define/constants] [4]
Total errors found: 1 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965215</commentid>
    <comment_count>16</comment_count>
      <attachid>220548</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-01-07 15:43:23 -0800</bug_when>
    <thetext>Comment on attachment 220548
Updated to address Sam&apos;s comments

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

Even though this patch touches WebKit2 in only the most cursory way, you should probably get Sam or another OWNER to check off on it.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:4116
&gt;      bool pausedToBuffer = m_readyStateMaximum &gt;= HAVE_FUTURE_DATA &amp;&amp; m_readyState &lt; HAVE_FUTURE_DATA;
&gt; -    return (pausedToBuffer || m_readyState &gt;= HAVE_FUTURE_DATA) &amp;&amp; couldPlayIfEnoughData() &amp;&amp; !isBlockedOnMediaController();
&gt; +    
&gt; +    if (!(pausedToBuffer || m_readyState &gt;= HAVE_FUTURE_DATA))
&gt; +        return false;
&gt; +
&gt; +    return couldPlayIfEnoughData() &amp;&amp; !isBlockedOnMediaController();

If you&apos;re cleaning this up to be more understandable, the if-clause could be further cleaned up:

if (!pausedToBuffer &amp;&amp; m_readyState &lt; HAVE_FUTURE_DATA)
    return false;

&gt; Source/WebCore/platform/audio/MediaSessionManager.cpp:29
&gt; +#include &quot;HTMLMediaElement.h&quot;

You should remove this #include now that we don&apos;t pass in a HTMLMediaElement.

&gt; LayoutTests/media/video-interruption-active-when-element-created.html:34
&gt; +                setTimeout(checkState, 250);

250ms? Can we bring this down to something slightly smaller?

&gt; LayoutTests/media/video-interruption-active-when-element-created.html:39
&gt; +                if (window.internals) 

We should just fail the test immediately if window.internals isn&apos;t present.

&gt; LayoutTests/media/video-interruption-active-when-element-created.html:40
&gt; +                    run(&quot;window.internals.beginMediaSessionInterruption()&quot;);;

The &quot;window.&quot; is unnecessary.

&gt; LayoutTests/media/video-interruption-with-resume-allowing-play.html:10
&gt; +                consoleWrite(&quot;250ms timer fired...&quot;);

Ditto about 250ms.

&gt; LayoutTests/media/video-interruption-with-resume-allowing-play.html:34
&gt; +                if (window.internals) 

Ditto about failing early.

&gt; LayoutTests/media/video-interruption-with-resume-not-allowing-play.html:23
&gt; +                    setTimeout(checkState, 250);

Again with the 250ms.

&gt; LayoutTests/media/video-interruption-with-resume-not-allowing-play.html:38
&gt; +                if (window.internals) 

Again with the failing early.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965244</commentid>
    <comment_count>17</comment_count>
      <attachid>220567</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-01-07 16:33:10 -0800</bug_when>
    <thetext>Created attachment 220567
Another update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965246</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-07 16:36:06 -0800</bug_when>
    <thetext>Attachment 220567 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/media/video-interruption-active-when-element-created-expected.txt&apos;, u&apos;LayoutTests/media/video-interruption-active-when-element-created.html&apos;, u&apos;LayoutTests/media/video-interruption-with-resume-allowing-play-expected.txt&apos;, u&apos;LayoutTests/media/video-interruption-with-resume-allowing-play.html&apos;, u&apos;LayoutTests/media/video-interruption-with-resume-not-allowing-play-expected.txt&apos;, u&apos;LayoutTests/media/video-interruption-with-resume-not-allowing-play.html&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.h&apos;, u&apos;Source/WebCore/platform/audio/MediaSession.cpp&apos;, u&apos;Source/WebCore/platform/audio/MediaSession.h&apos;, u&apos;Source/WebCore/platform/audio/MediaSessionManager.cpp&apos;, u&apos;Source/WebCore/platform/audio/MediaSessionManager.h&apos;, u&apos;Source/WebCore/platform/audio/mac/AudioDestinationMac.cpp&apos;, u&apos;Source/WebCore/platform/audio/mac/AudioDestinationMac.h&apos;, u&apos;Source/WebCore/platform/audio/mac/MediaSessionManagerMac.cpp&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/testing/Internals.h&apos;, u&apos;Source/WebCore/testing/Internals.idl&apos;, u&apos;Source/WebKit/CMakeLists.txt&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit2/CMakeLists.txt&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/platform/audio/MediaSession.h:27:  MediaSession_h is incorrect. #defined constants should use all uppercase names with words separated by underscores.  [readability/naming/define/constants] [4]
Total errors found: 1 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965333</commentid>
    <comment_count>19</comment_count>
      <attachid>220567</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-07 21:41:58 -0800</bug_when>
    <thetext>Comment on attachment 220567
Another update.

Clearing flags on attachment: 220567

Committed r161481: &lt;http://trac.webkit.org/changeset/161481&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965334</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-07 21:42:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965449</commentid>
    <comment_count>21</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-01-08 06:42:16 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 220567 [details])
&gt; Clearing flags on attachment: 220567
&gt; 
&gt; Committed r161481: &lt;http://trac.webkit.org/changeset/161481&gt;

It broke the Windows build:

   1&gt;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Include\WebCore/HTMLMediaElement.h(36): fatal error C1083: Cannot open include file: &apos;MediaSession.h&apos;: No such file or directory (..\..\win\FullscreenVideoController.cpp)
     1&gt;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Include\WebCore/HTMLMediaElement.h(36): fatal error C1083: Cannot open include file: &apos;MediaSession.h&apos;: No such file or directory (..\..\win\WebView.cpp)
     1&gt;c:\cygwin\home\buildbot\slave\win-release\build\webkitbuild\release\include\webcore\HTMLMediaElement.h(36): fatal error C1083: Cannot open include file: &apos;MediaSession.h&apos;: No such file or directory (..\..\win\WebCoreSupport\WebChromeClient.cpp)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220451</attachid>
            <date>2014-01-06 13:07:35 -0800</date>
            <delta_ts>2014-01-06 13:18:46 -0800</delta_ts>
            <desc>Patch for the bots to chew on</desc>
            <filename>interruptions_patch_2.txt</filename>
            <type>text/plain</type>
            <size>66547</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBACisyMDE0LTAxLTA2ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFRlYWNoIE1lZGlhU2Vz
c2lvbk1hbmFnZXIgdG8gbWFuYWdlIGludGVycnVwdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjUzMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBtZWRpYS92aWRlby1pbnRlcnJ1cHRp
b24tYWN0aXZlLXdoZW4tZWxlbWVudC1jcmVhdGVkLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlh
L3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5Lmh0bWwKKyAgICAg
ICAgICAgICAgIG1lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1ub3QtYWxsb3dp
bmctcGxheS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IGZ1bmN0aW9u
cyBuZWVkZWQgYnkgSW50ZXJuYWxzLgorCisgICAgICAgIEFkZCBNZWRpYVNlc3Npb24gYW5kIE1l
ZGlhU2Vzc2lvbk1hbmFnZXIuCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAg
ICAgQXV0b21hdGljYWxseSBwYXVzZS9wbGF5IGZvciBpbnRlcnJ1cHRpb25zLiBNb3ZlIG1lZGlh
IHJlc3RyaWN0aW9uIG1hbmFnZW1lbnQgdG8gYSBNZWRpYVNlc3Npb24uCisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBVc2UgdGhlIG1lZGlhIHNlc3Npb24gdG8gbWFuYWdlIHJl
c3RyaWN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjppbnNl
cnRlZEludG8pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKTogRGl0dG8uIFJlbW92ZSByZWR1bmRhbnQgaU9TIGNvZGUuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkSW50ZXJuYWwpOiBVc2UgdGhlIG1lZGlhIHNlc3Np
b24gdG8gbWFuYWdlIHJlc3RyaWN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmxvYWRSZXNvdXJjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6YXV0b3BsYXkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnBsYXkpOiBEaXR0by4gUmVtb3ZlIHJlZHVuZGFudCBpT1MgY29kZS4gUG9zdHBv
bmUgcGxheWJhY2sgaWYgY2FsbGVkIAorICAgICAgICAgICAgZHVyaW5nIGFuIGludGVycnVwdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlKTogVXNlIHRoZSBt
ZWRpYSBzZXNzaW9uIHRvIG1hbmFnZSByZXN0cmljdGlvbnMuIElmIGNhbGxlZCBkdXJpbmcKKyAg
ICAgICAgICAgIGFuIGludGVycnVwdGlvbiwgcmVtZW1iZXIgdG8gbm90IHJlc3VtZSBwbGF5YmFj
ayB3aGVuIGl0IGVuZHMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVz
ZUludGVybmFsKTogVXNlIHRoZSBtZWRpYSBzZXNzaW9uIHRvIG1hbmFnZSByZXN0cmljdGlvbnMu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpwb3RlbnRpYWxseVBsYXlpbmcp
OiBSZWFycmFuZ2UgY29kZSB0byBtYWtlIGl0IGVhc2llciB0byB1bmRlcnN0YW5kLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y291bGRQbGF5SWZFbm91Z2hEYXRhKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVzZWRGb3JVc2VySW50
ZXJhY3Rpb24pOiBSZXR1cm4gdHJ1ZSBpZiBwYXVzZWQgYmVjYXVzZSBvZiBhbiBpbnRlcnJ1cHRp
b24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kKTogVXNlIHRo
ZSBtZWRpYSBzZXNzaW9uIHRvIG1hbmFnZSByZXN0cmljdGlvbnMuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmRlbGl2ZXJOb3RpZmljYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNob3dQbGF5YmFja1RhcmdldFBpY2tlcik6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJJ
c0Z1bGxzY3JlZW5QZXJtaXR0ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZUJlaGF2aW9yc1Jlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVy
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFUeXBl
KTogTWVkaWFTZXNzaW9uTWFuYWdlcjo6PFR5cGU+IC0+IE1lZGlhU2Vzc2lvbjo6PFR5cGU+Lgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YmVnaW5JbnRlcnJ1cHRpb24pOiBO
ZXcuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbmRJbnRlcnJ1cHRpb24p
OiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKworICAgICAgICAq
IGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50Ojp3ZWJraXRFbnRlckZ1bGxzY3JlZW4pOiBVc2UgdGhlIG1lZGlhIHNlc3Npb24gdG8g
bWFuYWdlIHJlc3RyaWN0aW9ucy4KKworICAgICAgICBQdWxsZWQgTWVkaWFTZXNzaW9uTWFuYWdl
clRva2VuIG91dCBvZiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCwgYWRkZWQgZnVuY3Rpb25hbGl0
eSB0byBtYW5hZ2UKKyAgICAgICAgbWVkaWEgZWxlbWVudCByZXN0cmljdGlvbnMgYW5kIGludGVy
cnVwdGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNlc3Npb246Ok1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb246On5NZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uOjpiZWdpbkludGVycnVwdGlvbik6IEluZm9ybSBjbGllbnQgb2YgaW50ZXJydXB0aW9uIHN0
YXRlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6ZW5kSW50ZXJydXB0
aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OnBsYXliYWNrUGVy
bWl0dGVkKTogQ2hlY2sgaWYgcGxheWJhY2sgaXMgYWxsb3dlZCBnaXZlbiB0aGUgY3VycmVudCBy
ZXN0cmljdGlvbnMgCisgICAgICAgICAgICBhbmQgdXNlciBnZXN0dXJlIHN0YXRlLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpkYXRhTG9hZGluZ1Blcm1pdHRlZCk6IERpdHRvIGZv
ciBkYXRhIGxvYWRpbmcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmZ1bGxzY3Jl
ZW5QZXJtaXR0ZWQpOiBEaXR0byBmb3IgZnVsbHNjcmVlbi4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbjo6c2hvd2luZ1BsYXliYWNrVGFyZ2V0UGlja2VyUGVybWl0dGVkKTogRGl0dG8g
Zm9yIHNob3dpbmcgdGhlIHBsYXliYWNrIHRhcmdldCBwaWNrZXIuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNlc3Npb246OnBhZ2VBbGxvd3NEYXRhTG9hZGluZyk6IENoZWNrIGlmIHBsYXliYWNr
IGlzIGFsbG93ZWQgZ2l2ZW4gdGhlIGN1cnJlbnQgcmVzdHJpY3Rpb25zIAorICAgICAgICAgICAg
YW5kIHBhZ2UgbWVkaWEgcmVzdHJpY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uOjpwYWdlQWxsb3dzUGxheWJhY2tBZnRlclJlc3VtaW5nKTogRGl0dG8gZm9yIHJlc3VtaW5n
IHBsYXliYWNrLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oOiBBZGRl
ZC4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFTZXNzaW9uTWFuYWdl
cik6IEluaXRpYWxpemUgaW50ZXJydXB0aW9uIGNvdW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb25NYW5hZ2VyOjpoYXMpOiBNZWRpYVR5cGUgaXMgZGVmaW5lZCBpbiBNZWRpYVNl
c3Npb24uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb3VudCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5JbnRlcnJ1
cHRpb24pOiBJbmZvcm0gYWxsIGNsaWVudHMgb2YgaW50ZXJydXB0aW9uIHN0YXJ0IGlmCisgICAg
ICAgICAgICBub3QgYWxyZWFkeSBpbiBhbiBpbnRlcnJ1cHRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1cHRpb24pOiBJbmZvcm0gYWxsIGNsaWVu
dHMgaWYgaW50ZXJydXB0aW9uIGhhcyBlbmRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbk1hbmFnZXI6OmFkZFNlc3Npb24pOiBSZW5hbWVkIGZyb20gYWRkVG9rZW4uCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVTZXNzaW9uKTogUmVuYW1lZCBm
cm9tIHJlbW92ZVRva2VuLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1h
bmFnZXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9u
TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25NYWM6OkF1ZGlvRGVz
dGluYXRpb25NYWMpOiBNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4gLT4gTWVkaWFTZXNzaW9uLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmg6CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHA6Cisg
ICAgICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUpOiBEaXR0by4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIGZvciB0ZXN0cyB0byBiZWdpbiBhbmQgZW5kIGlu
dGVycnVwdGlvbnMuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpiZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbik6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5pZGw6CisKIDIwMTQtMDEtMDYgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBw
bGUuY29tPgogCiAgICAgICAgIE1vdmUgVmlld1N0YXRlIHRvIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTg3Nyw2ICsxODc3LDggQEAgc2V0KFdlYkNvcmVf
U09VUkNFUwogICAgIHBsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCiAgICAgcGxhdGZv
cm0vYXVkaW8vSFJURktlcm5lbC5jcHAKICAgICBwbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNw
cAorICAgIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAKKyAgICBwbGF0Zm9ybS9hdWRp
by9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5l
bFJlc2FtcGxlci5jcHAKICAgICBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCiAgICAgcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShy
ZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3
b3JraW5nIGNvcHkpCkBAIC01MzUxLDYgKzUzNTEsMTAgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9NZWRpYVNlc3Npb24uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9N
ZWRpYVNlc3Npb24uaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNz
aW9uTWFuYWdlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vz
c2lvbk1hbmFnZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1
ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIFwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNzU2LDYgKzc1Niw5IEBAIF9fWk43V2ViQ29y
ZTE5TGF5ZXJGbHVzaFNjaGVkdWxlckMxRVBOU18KIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNj
aGVkdWxlckMyRVBOU18yNUxheWVyRmx1c2hTY2hlZHVsZXJDbGllbnRFCiBfX1pON1dlYkNvcmUx
OUxheWVyRmx1c2hTY2hlZHVsZXJEMUV2CiBfX1pON1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVs
ZXJEMkV2CitfX1pON1dlYkNvcmUxOU1lZGlhU2Vzc2lvbk1hbmFnZXIxM3NoYXJlZE1hbmFnZXJF
dgorX19aTjdXZWJDb3JlMTlNZWRpYVNlc3Npb25NYW5hZ2VyMTVlbmRJbnRlcnJ1cHRpb25FTlNf
MTJNZWRpYVNlc3Npb24yMEVuZEludGVycnVwdGlvbkZsYWdzRQorX19aTjdXZWJDb3JlMTlNZWRp
YVNlc3Npb25NYW5hZ2VyMTdiZWdpbkludGVycnVwdGlvbkV2CiBfX1pON1dlYkNvcmUxOVJlc291
cmNlUmVxdWVzdEJhc2UxMXNldEhUVFBCb2R5RU4zV1RGMTBQYXNzUmVmUHRySU5TXzhGb3JtRGF0
YUVFRQogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMTNzZXRIVFRQTWV0aG9kRVJL
TjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMThzZXRIVFRQ
SGVhZGVyRmllbGRFUEtjUktOM1dURjZTdHJpbmdFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTcyMjUsNiArNzIyNSw4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxGaWxlU3RyZWFtLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXEZpbGVTeXN0ZW0uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cYXVkaW9cQXVkaW9TZXNzaW9uLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEFOR0xFV2ViS2l0QnJpZGdl
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2
Zm91bmRhdGlvblxjZlxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cY2ZcSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuY3BwIiAvPgpAQCAtMTkwODgsNiArMTkwOTAs
OCBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cRmxvYXRDb252ZXJzaW9u
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xBdWRpb1Nl
c3Npb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXEF1
ZGlvU2Vzc2lvbkxpc3RlbmVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxhdWRpb1xNZWRpYVNlc3Npb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEFOR0xFV2ViS2l0QnJpZGdlLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xBdWRpb1RyYWNrUHJp
dmF0ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
YXZmb3VuZGF0aW9uXGNmXEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgiIC8+CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzCShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTE0NTk2LDYg
KzE0NTk2LDEyIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xB
dWRpb1Nlc3Npb25MaXN0ZW5lci5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cYXVkaW88L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbi5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cYXVkaW88
L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCI+CisgICAgICA8RmlsdGVyPnBsYXRm
b3JtXGF1ZGlvPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xBTkdMRVdlYktpdEJyaWRnZS5oIj4KICAgICAgIDxG
aWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTI5LDYgKzEyOSw4IEBACiAJCTA3MDc1
NkRGMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNzU2RDkxNDIzOUI0QzAwNDE0
MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5jcHAgKi87IH07CiAJCTA3MDc1NkUwMTQyMzlCNEUw
MDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDc1NkRBMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRU
cmFja0N1ZUxpc3QuaCAqLzsgfTsKIAkJMDcwOUZDNEUxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vz
c2liaWxpdHlTbGlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3MDlGQzREMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmgg
Ki87IH07CisJCTA3MEUwOTE5MTg3NUVFRkMwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MEUwOTE4MTg3NUVE
OTMwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwNzBFMDkxQjE4NzVFRjcxMDAzQTFEM0MgLyogTWVkaWFT
ZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3MEUwOTFBMTg3NUVGNzEwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uY3BwICovOyB9OwogCQkw
NzBGNTQ5ODE3RjEyRjZCMDAxNjlFMDQgLyogTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRp
b25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3MEY1NDk3MTdGMTJGNkIwMDE2OUUwNCAvKiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRh
dGlvbkNsaWVudC5oICovOyB9OwogCQkwNzBGNTQ5RTE3RjI0MDI3MDAxNjlFMDQgLyogQXVkaW9E
ZXN0aW5hdGlvbkNvbnN1bWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzBGNTQ5RDE3RjI0MDI3MDAxNjlFMDQgLyogQXVkaW9EZXN0aW5hdGlvbkNv
bnN1bWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMDcxMTU4OTExN0RGNkY2NjAwRURGRTJCIC8qIE1lZGlhU3RyZWFtUHJpdmF0ZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzExNTg4RjE3REY2
MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmNwcCAqLzsgfTsKQEAgLTY3MTUsNiAr
NjcxNyw4IEBACiAJCTA3MDc1NkRBMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxp
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUZXh0VHJhY2tDdWVMaXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDlGQzREMTAyNURFRTMwMDU5Q0RC
QSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFjY2Vzc2liaWxpdHlTbGlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDcwREQ4RjUwRjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IG1lZGlhQ29udHJvbHMuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwNzBFMDkxODE4NzVFRDkzMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzBFMDkxQTE4NzVFRjcxMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU2Vzc2lvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MEY1NDk3MTdGMTJGNkIwMDE2OUUwNCAv
KiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzBGNTQ5RDE3RjI0MDI3MDAxNjlF
MDQgLyogQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEF1ZGlvRGVzdGluYXRpb25Db25zdW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzExNTg4RjE3REY2MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Qcml2YXRl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtUHJp
dmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjA1MCw2ICsyMjA1NCw4
IEBACiAJCQkJQ0RBNzk4MjIxNzBBMjRGNDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbkxpc3RlbmVy
LmggKi8sCiAJCQkJQ0RBRThDMDcxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwICovLAogCQkJCUNEQUU4QzA4MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25N
YW5hZ2VyLmggKi8sCisJCQkJMDcwRTA5MTgxODc1RUQ5MzAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lv
bi5oICovLAorCQkJCTA3MEUwOTFBMTg3NUVGNzEwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uY3Bw
ICovLAogCQkJCUZEMzE2MDUzMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb1NvdXJjZVByb3ZpZGVy
LmggKi8sCiAJCQkJRkQ2MkY1MkQxNDU4OThEODAwOTRCMEVEIC8qIEF1ZGlvU291cmNlUHJvdmlk
ZXJDbGllbnQuaCAqLywKIAkJCQlGRDMxNjA1NDEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9VdGls
aXRpZXMuY3BwICovLApAQCAtMjQ1OTksNiArMjQ2MDUsNyBAQAogCQkJCTQzNjcwOEM3MTJEOUNB
NEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQzNjcwOEM5MTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdJbWFnZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDg1NEIwMTUxMjU1RTRFNjAwQjlDREQwIC8qIFJlbmRlclNWR0lubGluZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMDcwRTA5MTkxODc1RUVGQzAwM0ExRDNDIC8qIE1lZGlhU2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg1NEIwMTcxMjU1RTRFNjAwQjlDREQwIC8qIFJl
bmRlclNWR0lubGluZVRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTYyMTdBOUQwMUIw
MDI3NEU0MiAvKiBTb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcwOENCMTJE
OUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdNb2RlbE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yODA3Myw2ICsyODA4MCw3IEBACiAJCQkJOTMzMDlFMTEwOTlFNjQ5MjAwNTZFNTgxIC8qIFNw
bGl0RWxlbWVudENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMTMwOTlFNjQ5
MjAwNTZFNTgxIC8qIFNwbGl0VGV4dE5vZGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTA3OEUwOTRCMTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25O
b2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MEUwOTFCMTg3NUVGNzEwMDNBMUQzQyAvKiBN
ZWRpYVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMTUwOTlFNjQ5MjAwNTZF
NTgxIC8qIFNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudENvbW1hbmQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTFFMTE1NDgxMzAxNUM1RDAwNTRBQzhDIC8qIFNwb3RMaWdodFNvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0JDNkEzRTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMRXhj
ZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBACiAj
aW5jbHVkZSAiTWVkaWFLZXlFdmVudC5oIgogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1
ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKKyNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlBhZ2VBY3Rpdml0
eUFzc2VydGlvblRva2VuLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCkBAIC0xMzcsMTAgKzEz
OCw2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1UZXh0VHJhY2suaCIKICNlbmRpZgogCi0jaWYgVVNF
KEFVRElPX1NFU1NJT04pCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgotI2VuZGlm
Ci0KICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQogI2luY2x1ZGUgIkpTTWVkaWFD
b250cm9sc0hvc3QuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xzSG9zdC5oIgpAQCAtMjg0LDcg
KzI4MSw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QKICNpZiBF
TkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAgICAsIG1fcHJveHlXaWRnZXQoMCkKICNl
bmRpZgotICAgICwgbV9yZXN0cmljdGlvbnMoUmVxdWlyZVVzZXJHZXN0dXJlRm9yRnVsbHNjcmVl
blJlc3RyaWN0aW9uIHwgUmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWFSZXN0cmljdGlvbikK
ICAgICAsIG1fcHJlbG9hZChNZWRpYVBsYXllcjo6QXV0bykKICAgICAsIG1fZGlzcGxheU1vZGUo
VW5rbm93bikKICAgICAsIG1fcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soMCkKQEAgLTMx
Niw3ICszMTIsNiBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0CiAj
aWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgLCBtX25lZWRXaWRnZXRVcGRh
dGUoZmFsc2UpCiAjZW5kaWYKLSAgICAsIG1fbG9hZEluaXRpYXRlZEJ5VXNlckdlc3R1cmUoZmFs
c2UpCiAgICAgLCBtX2NvbXBsZXRlbHlMb2FkZWQoZmFsc2UpCiAgICAgLCBtX2hhdmVQcmVwYXJl
ZFRvUGxheShmYWxzZSkKICAgICAsIG1fcGFyc2luZ0luUHJvZ3Jlc3MoY3JlYXRlZEJ5UGFyc2Vy
KQpAQCAtMzI1LDcgKzMyMCw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQo
Y29uc3QKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1fcmVxdWVzdGluZ1BsYXko
ZmFsc2UpCi0gICAgLCBtX3VzZXJTdGFydGVkUGxheWJhY2soZmFsc2UpCiAjZW5kaWYKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCiAgICAgLCBtX3RyYWNrc0FyZVJlYWR5KHRydWUpCkBAIC0zNDEs
OSArMzM1LDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdAogI2lm
IEVOQUJMRShXRUJfQVVESU8pCiAgICAgLCBtX2F1ZGlvU291cmNlTm9kZSgwKQogI2VuZGlmCi0j
aWYgVVNFKEFVRElPX1NFU1NJT04pCi0gICAgLCBtX21lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbihN
ZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW46OmNyZWF0ZSgqdGhpcykpCi0jZW5kaWYKKyAgICAsIG1f
bWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fcmVwb3J0
ZWRFeHRyYU1lbW9yeUNvc3QoMCkKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwgbV9t
ZWRpYVN0cmVhbVNyY09iamVjdChudWxscHRyKQpAQCAtMzUyLDYgKzM0NCw5IEBAIEhUTUxNZWRp
YUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QKICAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50Iik7CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNv
bHZlQ2FsbGJhY2tzKCk7CiAKKyAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmlj
dGlvbihNZWRpYVNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW4pOworICAg
IG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6UmVx
dWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWEpOworCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBj
bGVhbiB1cCBhbmQgbG9vayB0byBiZXR0ZXIgbWVyZ2UgdGhlIGlPUyBhbmQgbm9uLWlPUyBjb2Rl
IGJlbG93LgogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50LnNldHRpbmdzKCk7CiAj
aWYgIVBMQVRGT1JNKElPUykKQEAgLTM2MywxOCArMzU4LDE3IEBAIEhUTUxNZWRpYUVsZW1lbnQ6
OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QKICNlbmRpZgogCiAgICAgaWYgKHNldHRpbmdzICYmIHNl
dHRpbmdzLT5tZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSgpKSB7Ci0gICAgICAgIGFk
ZEJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5nZVJlc3Ry
aWN0aW9uKTsKLSAgICAgICAgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlVXNlckdlc3R1
cmVGb3JMb2FkUmVzdHJpY3Rpb24pOworICAgICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZp
b3JSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFu
Z2UpOworICAgICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRp
YVNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWQpOwogICAgIH0KICNlbHNlCiAgICAg
bV9zZW5kUHJvZ3Jlc3NFdmVudHMgPSBmYWxzZTsKICAgICBpZiAoIXNldHRpbmdzIHx8IHNldHRp
bmdzLT5tZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSgpKSB7Ci0gICAgICAgIGFkZEJl
aGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5nZVJlc3RyaWN0
aW9uKTsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVk
aWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JSYXRlQ2hhbmdlKTsKICNpZiBFTkFCTEUo
SU9TX0FJUlBMQVkpCi0gICAgICAgIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJH
ZXN0dXJlVG9TaG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOworICAgICAgICBtX21lZGlhU2Vzc2lv
bi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVy
ZVRvU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKTsKICNlbmRpZgotICAgIH0gZWxzZQotICAgICAg
ICBtX3Jlc3RyaWN0aW9ucyA9IE5vUmVzdHJpY3Rpb25zOworICAgIH0KICNlbmRpZiAvLyAhUExB
VEZPUk0oSU9TKQogCiAgICAgYWRkRWxlbWVudFRvRG9jdW1lbnRNYXAoKnRoaXMsIGRvY3VtZW50
KTsKQEAgLTUyNCwxMSArNTE4LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjbwogewogICAgIGlmIChuYW1lID09IHNyY0F0dHIpIHsKICNpZiBQTEFURk9STShJT1Mp
Ci0gICAgICAgIC8vIE5vdGUsIHVubGVzcyB0aGUgcmVzdHJpY3Rpb24gb24gcmVxdWlyaW5nIHVz
ZXIgYWN0aW9uIGhhcyBiZWVuIHJlbW92ZWQsCi0gICAgICAgIC8vIGRvIG5vdCBiZWdpbiBkb3du
bG9hZGluZyBkYXRhIG9uIGlPUy4KLSAgICAgICAgaWYgKCF1c2VyR2VzdHVyZVJlcXVpcmVkRm9y
TG9hZCgpICYmICF2YWx1ZS5pc051bGwoKSkgeworICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgp
ICYmIG1fbWVkaWFTZXNzaW9uLT5kYXRhTG9hZGluZ1Blcm1pdHRlZCgqdGhpcykpIHsKICNlbHNl
Ci0gICAgICAgIC8vIFRyaWdnZXIgYSByZWxvYWQsIGFzIGxvbmcgYXMgdGhlICdzcmMnIGF0dHJp
YnV0ZSBpcyBwcmVzZW50LgogICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKSB7CiAjZW5kaWYK
ICAgICAgICAgICAgIGNsZWFyTWVkaWFQbGF5ZXIoTG9hZE1lZGlhUmVzb3VyY2UpOwpAQCAtNjkz
LDcgKzY4NCw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTE0KICAg
ICAgICAgbV9pbkFjdGl2ZURvY3VtZW50ID0gdHJ1ZTsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAg
ICAgICAgaWYgKCF1c2VyR2VzdHVyZVJlcXVpcmVkRm9yTG9hZCgpICYmIG1fbmV0d29ya1N0YXRl
ID09IE5FVFdPUktfRU1QVFkgJiYgIWZhc3RHZXRBdHRyaWJ1dGUoc3JjQXR0cikuaXNFbXB0eSgp
KQorICAgICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSAmJiAhZmFzdEdl
dEF0dHJpYnV0ZShzcmNBdHRyKS5pc0VtcHR5KCkgJiYgbV9tZWRpYVNlc3Npb24tPmRhdGFMb2Fk
aW5nUGVybWl0dGVkKCp0aGlzKSkKICNlbHNlCiAgICAgICAgIGlmIChtX25ldHdvcmtTdGF0ZSA9
PSBORVRXT1JLX0VNUFRZICYmICFmYXN0R2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSkK
ICNlbmRpZgpAQCAtODk5LDI0ICs4OTAsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2Fk
KCkKICAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdCgqdGhpcyk7IC8vIGxvYWRJbnRl
cm5hbCBtYXkgcmVzdWx0IGluIGEgJ2JlZm9yZWxvYWQnIGV2ZW50LCB3aGljaCBjYW4gbWFrZSBh
cmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KICAgICAKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFF
bGVtZW50Ojpsb2FkKCkiKTsKLSAgICAKLSAgICBpZiAodXNlckdlc3R1cmVSZXF1aXJlZEZvckxv
YWQoKSAmJiAhU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCisKKyAg
ICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5kYXRhTG9hZGluZ1Blcm1pdHRlZCgqdGhpcykpCiAgICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICBtX2xvYWRJbml0aWF0ZWRCeVVzZXJHZXN0dXJlID0gU2Ny
aXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7Ci0gICAgaWYgKG1fbG9hZElu
aXRpYXRlZEJ5VXNlckdlc3R1cmUpCisgICAgaWYgKFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3Np
bmdVc2VyR2VzdHVyZSgpKQogICAgICAgICByZW1vdmVCZWhhdmlvcnNSZXN0cmljdGlvbnNBZnRl
ckZpcnN0VXNlckdlc3R1cmUoKTsKKwogICAgIHByZXBhcmVGb3JMb2FkKCk7CiAgICAgbG9hZElu
dGVybmFsKCk7Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgLy8gVW5sZXNzIHRoaXMgbWV0aG9k
IHdhcyBjYWxsZWQgZGlyZWN0bHkgYnkgdGhlIHVzZXIgb3IgdGhlIGFwcGxpY2F0aW9uIGFsbG93
cyBhbnkgc2NyaXB0IHRvIHRyaWdnZXIgcGxheWJhY2ssCi0gICAgLy8gcmV0dXJuIG5vdyBiZWNh
dXNlIHByZXBhcmVUb1BsYXkoKSB0ZWxscyB0aGUgbWVkaWEgZW5naW5lIHRvIHN0YXJ0IGxvYWRp
bmcgZGF0YSBhcyBzb29uIGFzIHRoZSBtb3ZpZSB2YWxpZGF0ZXMuCi0gICAgU2V0dGluZ3MqIHNl
dHRpbmdzID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpOwotICAgIGlmICghbV9sb2FkSW5pdGlhdGVk
QnlVc2VyR2VzdHVyZSAmJiAoIXNldHRpbmdzIHx8IHNldHRpbmdzLT5tZWRpYVBsYXliYWNrUmVx
dWlyZXNVc2VyR2VzdHVyZSgpKSkKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0KICAgICBwcmVw
YXJlVG9QbGF5KCk7CiB9CiAKQEAgLTEwMjIsOCArMTAwMyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bG9hZEludGVybmFsKCkKICAgICBBU1NFUlQoIU5vRXZlbnREaXNwYXRjaEFzc2VydGlv
bjo6aXNFdmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOwogCiAgICAgLy8gSWYgd2UgY2FuJ3Qgc3Rh
cnQgYSBsb2FkIHJpZ2h0IGF3YXksIHN0YXJ0IGl0IGxhdGVyLgotICAgIFBhZ2UqIHBhZ2UgPSBk
b2N1bWVudCgpLnBhZ2UoKTsKLSAgICBpZiAocGFnZUNvbnNlbnRSZXF1aXJlZEZvckxvYWQoKSAm
JiBwYWdlICYmICFwYWdlLT5jYW5TdGFydE1lZGlhKCkpIHsKKyAgICBpZiAoIW1fbWVkaWFTZXNz
aW9uLT5wYWdlQWxsb3dzRGF0YUxvYWRpbmcoKnRoaXMpKSB7CiAgICAgICAgIHNldFNob3VsZERl
bGF5TG9hZEV2ZW50KGZhbHNlKTsKICAgICAgICAgaWYgKG1faXNXYWl0aW5nVW50aWxNZWRpYUNh
blN0YXJ0KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAzNiw4ICsxMDE2LDggQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojpsb2FkSW50ZXJuYWwoKQogCiAgICAgLy8gT25jZSB0aGUgcGFnZSBo
YXMgYWxsb3dlZCBhbiBlbGVtZW50IHRvIGxvYWQgbWVkaWEsIGl0IGlzIGZyZWUgdG8gbG9hZCBh
dCB3aWxsLiBUaGlzIGFsbG93cyBhIAogICAgIC8vIHBsYXlsaXN0IHRoYXQgc3RhcnRzIGluIGEg
Zm9yZWdyb3VuZCB0YWIgdG8gY29udGludWUgYXV0b21hdGljYWxseSBpZiB0aGUgdGFiIGlzIHN1
YnNlcXVlbnRseSAKLSAgICAvLyBwdXQgaW4gdGhlIHRoZSBiYWNrZ3JvdW5kLgotICAgIHJlbW92
ZUJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWFSZXN0cmlj
dGlvbik7CisgICAgLy8gcHV0IGludG8gdGhlIGJhY2tncm91bmQuCisgICAgbV9tZWRpYVNlc3Np
b24tPnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpSZXF1aXJlUGFnZUNv
bnNlbnRUb0xvYWRNZWRpYSk7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgaWYgKGhh
c01lZGlhQ29udHJvbHMoKSkKQEAgLTEyMTMsNyArMTE5Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bG9hZFJlc291cmNlKGNvbnMKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
aWYgKE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkubG9va3VwKHVybC5zdHJpbmcoKSkp
Ci0gICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlRm9y
UmF0ZUNoYW5nZVJlc3RyaWN0aW9uKTsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPnJlbW92ZUJl
aGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JSYXRl
Q2hhbmdlKTsKICNlbmRpZgogCiAgICAgaWYgKG1fc2VuZFByb2dyZXNzRXZlbnRzKSAKQEAgLTIw
NjQsNyArMjA0NCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWQK
ICAgICAgICAgaWYgKGlzUG90ZW50aWFsbHlQbGF5aW5nICYmIG9sZFN0YXRlIDw9IEhBVkVfQ1VS
UkVOVF9EQVRBKQogICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGxheWlu
Z0V2ZW50KTsKIAotICAgICAgICBpZiAobV9hdXRvcGxheWluZyAmJiBtX3BhdXNlZCAmJiBhdXRv
cGxheSgpICYmICFkb2N1bWVudCgpLmlzU2FuZGJveGVkKFNhbmRib3hBdXRvbWF0aWNGZWF0dXJl
cykgJiYgIXVzZXJHZXN0dXJlUmVxdWlyZWRGb3JSYXRlQ2hhbmdlKCkpIHsKKyAgICAgICAgaWYg
KG1fYXV0b3BsYXlpbmcgJiYgbV9wYXVzZWQgJiYgYXV0b3BsYXkoKSAmJiAhZG9jdW1lbnQoKS5p
c1NhbmRib3hlZChTYW5kYm94QXV0b21hdGljRmVhdHVyZXMpICYmIG1fbWVkaWFTZXNzaW9uLT5w
bGF5YmFja1Blcm1pdHRlZCgqdGhpcykpIHsKICAgICAgICAgICAgIG1fcGF1c2VkID0gZmFsc2U7
CiAgICAgICAgICAgICBpbnZhbGlkYXRlQ2FjaGVkVGltZSgpOwogICAgICAgICAgICAgc2NoZWR1
bGVFdmVudChldmVudE5hbWVzKCkucGxheUV2ZW50KTsKQEAgLTI2MTYsNyArMjU5Niw3IEBAIGJv
b2wgSFRNTE1lZGlhRWxlbWVudDo6YXV0b3BsYXkoKSBjb25zdAogICAgIC8vIGxpZnRlZCB0aHJv
dWdoIFNldHRpbmdzLCBvciBvbmNlIHRoZSB1c2VyIGV4cGxpY3RseSBjYWxscyBsb2FkKCkgb3Ig
cGxheSgpCiAgICAgLy8gYmVjYXVzZSB0aGV5IGhhdmUgT0snZWQgdXMgbG9hZGluZyBkYXRhLiBU
aGlzIGFsbG93cyBwbGF5YmFjayB0byBjb250aW51ZSBpZgogICAgIC8vIHRoZSBVUkwgaXMgY2hh
bmdlZCB3aGlsZSB0aGUgbW92aWUgaXMgcGxheWluZy4KLSAgICBpZiAodXNlckdlc3R1cmVSZXF1
aXJlZEZvclJhdGVDaGFuZ2UoKSB8fCB1c2VyR2VzdHVyZVJlcXVpcmVkRm9yTG9hZCgpKQorICAg
IGlmICghbV9tZWRpYVNlc3Npb24tPnBsYXliYWNrUGVybWl0dGVkKCp0aGlzKSB8fCAhbV9tZWRp
YVNlc3Npb24tPmRhdGFMb2FkaW5nUGVybWl0dGVkKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogI2VuZGlmCiAKQEAgLTI2NTEsMTUgKzI2MzEsMTYgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpwbGF5KCkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpwbGF5KCki
KTsKIAotICAgIGlmICh1c2VyR2VzdHVyZVJlcXVpcmVkRm9yUmF0ZUNoYW5nZSgpICYmICFTY3Jp
cHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKKyAgICBpZiAoIW1fbWVkaWFT
ZXNzaW9uLT5wbGF5YmFja1Blcm1pdHRlZCgqdGhpcykpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAoU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIHJl
bW92ZUJlaGF2aW9yc1Jlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZSgpOwogCi0jaWYg
UExBVEZPUk0oSU9TKQotICAgIHVzZXJSZXF1ZXN0c01lZGlhTG9hZGluZygpOwotI2VuZGlmCi0K
KyAgICBpZiAobV9tZWRpYVNlc3Npb24tPnN0YXRlKCkgPT0gTWVkaWFTZXNzaW9uOjpJbnRlcnJ1
cHRlZCkgeworICAgICAgICBtX3Jlc3VtZVBsYXliYWNrQWZ0ZXJJbnRlcnJ1cHRpb24gPSB0cnVl
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIHBsYXlJbnRlcm5hbCgpOwogfQog
CkBAIC0yNjk5LDkgKzI2ODAsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZSgpCiB7
CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cGF1c2UoKSIpOwogCi0gICAgaWYg
KHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JSYXRlQ2hhbmdlKCkgJiYgIVNjcmlwdENvbnRyb2xsZXI6
OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQorICAgIGlmICghbV9tZWRpYVNlc3Npb24tPnBsYXli
YWNrUGVybWl0dGVkKCp0aGlzKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fbWVkaWFT
ZXNzaW9uLT5zdGF0ZSgpID09IE1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQpIHsKKyAgICAgICAg
bV9yZXN1bWVQbGF5YmFja0FmdGVySW50ZXJydXB0aW9uID0gZmFsc2U7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCiAgICAgcGF1c2VJbnRlcm5hbCgpOwogfQogCkBAIC0yNzE1LDcgKzI3
MDEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwoKQogI2lmIFBMQVRG
T1JNKElPUykKICAgICAgICAgLy8gVW5sZXNzIHRoZSByZXN0cmljdGlvbiBvbiBtZWRpYSByZXF1
aXJpbmcgdXNlciBhY3Rpb24gaGFzIGJlZW4gbGlmdGVkCiAgICAgICAgIC8vIGRvbid0IHRyaWdn
ZXIgbG9hZGluZyBpZiBhIHNjcmlwdCBjYWxscyBwYXVzZSgpLgotICAgICAgICBpZiAodXNlckdl
c3R1cmVSZXF1aXJlZEZvclJhdGVDaGFuZ2UoKSkKKyAgICAgICAgaWYgKCFtX21lZGlhU2Vzc2lv
bi0+cGxheWJhY2tQZXJtaXR0ZWQoKnRoaXMpKQogICAgICAgICAgICAgcmV0dXJuOwogI2VuZGlm
CiAgICAgICAgIHNjaGVkdWxlRGVsYXllZEFjdGlvbihMb2FkTWVkaWFSZXNvdXJjZSk7CkBAIC00
MTIxLDEyICs0MTA3LDI4IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cG90ZW50aWFsbHlQbGF5
aW4KICAgICAvLyB3aGVuIGl0IHJhbiBvdXQgb2YgYnVmZmVyZWQgZGF0YS4gQSBtb3ZpZSBpcyB0
aGlzIHN0YXRlIGlzICJwb3RlbnRpYWxseSBwbGF5aW5nIiwgbW9kdWxvIHRoZQogICAgIC8vIGNo
ZWNrcyBpbiBjb3VsZFBsYXlJZkVub3VnaERhdGEoKS4KICAgICBib29sIHBhdXNlZFRvQnVmZmVy
ID0gbV9yZWFkeVN0YXRlTWF4aW11bSA+PSBIQVZFX0ZVVFVSRV9EQVRBICYmIG1fcmVhZHlTdGF0
ZSA8IEhBVkVfRlVUVVJFX0RBVEE7Ci0gICAgcmV0dXJuIChwYXVzZWRUb0J1ZmZlciB8fCBtX3Jl
YWR5U3RhdGUgPj0gSEFWRV9GVVRVUkVfREFUQSkgJiYgY291bGRQbGF5SWZFbm91Z2hEYXRhKCkg
JiYgIWlzQmxvY2tlZE9uTWVkaWFDb250cm9sbGVyKCk7CisgICAgCisgICAgaWYgKCEocGF1c2Vk
VG9CdWZmZXIgfHwgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gY291bGRQbGF5SWZFbm91Z2hEYXRhKCkgJiYgIWlz
QmxvY2tlZE9uTWVkaWFDb250cm9sbGVyKCk7CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6
Y291bGRQbGF5SWZFbm91Z2hEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIXBhdXNlZCgpICYm
ICFlbmRlZFBsYXliYWNrKCkgJiYgIXN0b3BwZWREdWVUb0Vycm9ycygpICYmICFwYXVzZWRGb3JV
c2VySW50ZXJhY3Rpb24oKTsKKyAgICBpZiAocGF1c2VkKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmIChlbmRlZFBsYXliYWNrKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmIChzdG9wcGVkRHVlVG9FcnJvcnMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKHBhdXNlZEZvclVzZXJJbnRlcmFjdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplbmRlZFBs
YXliYWNrKCkgY29uc3QKQEAgLTQxNzAsNyArNDE3Miw5IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVu
dDo6c3RvcHBlZER1ZVRvRXJyb3IKIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZWRGb3JV
c2VySW50ZXJhY3Rpb24oKSBjb25zdAogewotLy8gICAgcmV0dXJuICFwYXVzZWQoKSAmJiBtX3Jl
YWR5U3RhdGUgPj0gSEFWRV9GVVRVUkVfREFUQSAmJiBbVUEgcmVxdWlyZXMgYSBkZWNpdGlvbnMg
ZnJvbSB0aGUgdXNlcl0KKyAgICBpZiAobV9tZWRpYVNlc3Npb24tPnN0YXRlKCkgPT0gTWVkaWFT
ZXNzaW9uOjpJbnRlcnJ1cHRlZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKQEAgLTQ0NDQsNyArNDQ0OCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
c3VzcGVuZChSZWFzb25Gb3IKICAgICB7CiAgICAgICAgIGNhc2UgRG9jdW1lbnRXaWxsQmVjb21l
SW5hY3RpdmU6CiAgICAgICAgICAgICBzdG9wKCk7Ci0gICAgICAgICAgICBhZGRCZWhhdmlvclJl
c3RyaWN0aW9uKFJlcXVpcmVQYWdlQ29uc2VudFRvUmVzdW1lTWVkaWFSZXN0cmljdGlvbik7Cisg
ICAgICAgICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYVNl
c3Npb246OlJlcXVpcmVQYWdlQ29uc2VudFRvUmVzdW1lTWVkaWEpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgRG9jdW1lbnRXaWxsQmVQYXVzZWQ6CiAgICAgICAgIGNhc2UgSmF2
YVNjcmlwdERlYnVnZ2VyUGF1c2VkOgpAQCAtNDQ2MSwxMyArNDQ2NSwxMiBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnJlc3VtZSgpCiAKICAgICBtX2luQWN0aXZlRG9jdW1lbnQgPSB0cnVlOwog
Ci0gICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpOwotICAgIGlmIChwYWdlQ29uc2Vu
dFJlcXVpcmVkRm9yUmVzdW1lKCkgJiYgcGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKQor
ICAgIGlmICghbV9tZWRpYVNlc3Npb24tPnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmco
KnRoaXMpKQogICAgICAgICBkb2N1bWVudCgpLmFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcih0aGlz
KTsKICAgICBlbHNlCiAgICAgICAgIHNldFBhdXNlZEludGVybmFsKGZhbHNlKTsKIAotICAgIHJl
bW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVBhZ2VDb25zZW50VG9SZXN1bWVNZWRpYVJl
c3RyaWN0aW9uKTsKKyAgICBtX21lZGlhU2Vzc2lvbi0+cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlv
bihNZWRpYVNlc3Npb246OlJlcXVpcmVQYWdlQ29uc2VudFRvUmVzdW1lTWVkaWEpOwogCiAgICAg
aWYgKG1fZXJyb3IgJiYgbV9lcnJvci0+Y29kZSgpID09IE1lZGlhRXJyb3I6Ok1FRElBX0VSUl9B
Qk9SVEVEKSB7CiAgICAgICAgIC8vIFJlc3RhcnQgdGhlIGxvYWQgaWYgaXQgd2FzIGFib3J0ZWQg
aW4gdGhlIG1pZGRsZSBieSBtb3ZpbmcgdGhlIGRvY3VtZW50IHRvIHRoZSBwYWdlIGNhY2hlLgpA
QCAtNDU1Nyw3ICs0NTYwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkZWxpdmVyTm90aWZp
Y2F0aQogewogICAgIGlmIChub3RpZmljYXRpb24gPT0gTWVkaWFQbGF5ZXJOb3RpZmljYXRpb25Q
bGF5UGF1c2VCdXR0b25QcmVzc2VkKSB7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICB1c2Vy
UmVxdWVzdHNNZWRpYUxvYWRpbmcoKTsKKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JzUmVzdHJpY3Rp
b25zQWZ0ZXJGaXJzdFVzZXJHZXN0dXJlKCk7CiAjZW5kaWYKICAgICAgICAgdG9nZ2xlUGxheVN0
YXRlKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ3MzgsNyArNDc0MSw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6d2Via2l0U2hvd1BsYXliYWMKICAgICBpZiAoIW1fcGxheWVyKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAodXNlckdlc3R1cmVSZXF1aXJlZFRvU2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKCkgJiYgIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgp
KQorICAgIGlmICghbV9tZWRpYVNlc3Npb24tPnNob3dpbmdQbGF5YmFja1RhcmdldFBpY2tlclBl
cm1pdHRlZCgqdGhpcykpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZG9jdW1lbnQoKS5z
ZXR0aW5ncygpLT5tZWRpYVBsYXliYWNrQWxsb3dzQWlyUGxheSgpKQpAQCAtNTI5OCwxNiArNTMw
MSw2IEBAIEF1ZGlvU291cmNlUHJvdmlkZXIqIEhUTUxNZWRpYUVsZW1lbnQ6OmEKIH0KICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oSU9TKQotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VyUmVxdWVz
dHNNZWRpYUxvYWRpbmcoKQotewotICAgIC8vIFRoZSB1c2VyIGlzIHJlcXVlc3RpbmcgZGF0YSBs
b2FkaW5nIGFuZC9vciBwbGF5YmFjaywgc28gcmVtb3ZlIHRoZSAib25seSBjaGFuZ2UgcGxheWJh
Y2sgaW4gcmVzcG9uc2UKLSAgICAvLyB0byBhIHVzZXIgZ2VzdHVyZSIgcmVzdHJpY3Rpb24gb24g
dGhpcyBtb3ZpZS4KLSAgICBtX3VzZXJTdGFydGVkUGxheWJhY2sgPSB0cnVlOwotICAgIG1fcmVz
dHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7Ci19Ci0jZW5kaWYKLQogY29uc3QgU3RyaW5nJiBI
VE1MTWVkaWFFbGVtZW50OjptZWRpYUdyb3VwKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9tZWRp
YUdyb3VwOwpAQCAtNTUxNiw3ICs1NTA5LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllcklzRnVsbAogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVySXNGdWxs
c2NyZWVuUGVybWl0dGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIXVzZXJHZXN0dXJlUmVxdWly
ZWRGb3JGdWxsc2NyZWVuKCkgfHwgU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0
dXJlKCk7CisgICAgcmV0dXJuIG1fbWVkaWFTZXNzaW9uLT5mdWxsc2NyZWVuUGVybWl0dGVkKCp0
aGlzKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcklzVmlkZW8oKSBj
b25zdApAQCAtNTU3OSw3ICs1NTcyLDEyIEBAIENhY2hlZFJlc291cmNlTG9hZGVyKiBIVE1MTWVk
aWFFbGVtZW50OjoKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVCZWhhdmlvcnNSZXN0
cmljdGlvbnNBZnRlckZpcnN0VXNlckdlc3R1cmUoKQogewotICAgIG1fcmVzdHJpY3Rpb25zID0g
Tm9SZXN0cmljdGlvbnM7CisgICAgbV9tZWRpYVNlc3Npb24tPnJlbW92ZUJlaGF2aW9yUmVzdHJp
Y3Rpb24oTWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JMb2FkKTsKKyAgICBtX21l
ZGlhU2Vzc2lvbi0+cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OlJlcXVp
cmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2UpOworICAgIG1fbWVkaWFTZXNzaW9uLT5yZW1vdmVC
ZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yRnVs
bHNjcmVlbik7CisjaWYgRU5BQkxFKElPU19BSVJQTEFZKQorICAgIG1fbWVkaWFTZXNzaW9uLT5y
ZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJl
VG9TaG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOworI2VuZGlmCiB9CiAKICNpZiBFTkFCTEUoUExV
R0lOX1BST1hZX0ZPUl9WSURFTykKQEAgLTU3MDIsMTUgKzU3MDAsMzQgQEAgdW5zaWduZWQgbG9u
ZyBsb25nIEhUTUxNZWRpYUVsZW1lbnQ6OmZpbAogICAgIHJldHVybiAwOwogfQogCi0jaWYgVVNF
KEFVRElPX1NFU1NJT04pCi1NZWRpYVNlc3Npb25NYW5hZ2VyOjpNZWRpYVR5cGUgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFUeXBlKCkgY29uc3QKK01lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhVHlwZSgpIGNvbnN0CiB7CiAgICAgaWYgKGhhc1RhZ05hbWUoSFRN
TE5hbWVzOjp2aWRlb1RhZykpCi0gICAgICAgIHJldHVybiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpW
aWRlbzsKKyAgICAgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6VmlkZW87CiAKLSAgICByZXR1cm4g
TWVkaWFTZXNzaW9uTWFuYWdlcjo6QXVkaW87CisgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6QXVk
aW87Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YmVnaW5JbnRlcnJ1cHRpb24oKQorewor
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmJlZ2FuQXVkaW9JbnRlcnJ1cHRpb24i
KTsKKyAgICAKKyAgICBtX3Jlc3VtZVBsYXliYWNrQWZ0ZXJJbnRlcnJ1cHRpb24gPSAhcGF1c2Vk
KCk7CisgICAgaWYgKG1fcmVzdW1lUGxheWJhY2tBZnRlckludGVycnVwdGlvbikKKyAgICAgICAg
cGF1c2UoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbmRJbnRlcnJ1cHRpb24oTWVk
aWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncykKK3sKKyAgICBib29sIHNob3Vs
ZFJlc3VtZVBsYXliYWNrID0gbV9yZXN1bWVQbGF5YmFja0FmdGVySW50ZXJydXB0aW9uOworICAg
IG1fcmVzdW1lUGxheWJhY2tBZnRlckludGVycnVwdGlvbiA9IGZhbHNlOworCisgICAgaWYgKCFm
bGFncyAmIE1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKHNob3VsZFJlc3VtZVBsYXliYWNrKQorICAgICAgICBwbGF5KCk7CiB9Ci0jZW5k
aWYKIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2
aXNpb24gMTYxMzU4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogCiAjaWYgRU5B
QkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVt
ZW50LmgiCkBAIC01Myw5ICs1NCw2IEBACiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKICNlbmRp
ZgogCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdl
ci5oIgotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA1LDcgKzEwMyw3IEBA
IGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQKICNlbHNlCiAgICAgOiBwdWJsaWMgSFRNTEVsZW1lbnQK
ICNlbmRpZgotICAgICwgcHJpdmF0ZSBNZWRpYVBsYXllckNsaWVudCwgcHVibGljIE1lZGlhUGxh
eWVyU3VwcG9ydHNUeXBlQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVi
bGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZQorICAg
ICwgcHJpdmF0ZSBNZWRpYVBsYXllckNsaWVudCwgcHVibGljIE1lZGlhUGxheWVyU3VwcG9ydHNU
eXBlQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEFjdGl2ZURP
TU9iamVjdCwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSAsIHB1YmxpYyBNZWRpYVNl
c3Npb25DbGllbnQKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLCBwcml2YXRlIEF1ZGlv
VHJhY2tDbGllbnQKICAgICAsIHByaXZhdGUgVGV4dFRyYWNrQ2xpZW50CkBAIC0xMTQsOSArMTEy
LDYgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudAogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNL
X01FTlUpCiAgICAgLCBwdWJsaWMgUGxhdGZvcm1UZXh0VHJhY2tNZW51Q2xpZW50CiAjZW5kaWYK
LSNpZiBVU0UoQVVESU9fU0VTU0lPTikKLSAgICAsIHB1YmxpYyBNZWRpYVNlc3Npb25NYW5hZ2Vy
Q2xpZW50Ci0jZW5kaWYKIHsKIHB1YmxpYzoKICAgICBNZWRpYVBsYXllciogcGxheWVyKCkgY29u
c3QgeyByZXR1cm4gbV9wbGF5ZXIuZ2V0KCk7IH0KQEAgLTQ0NywzMiArNDQyLDYgQEAgcHJvdGVj
dGVkOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhRWxlbWVudCgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIC8vIFJlc3RyaWN0aW9ucyB0byBjaGFuZ2UgZGVm
YXVsdCBiZWhhdmlvcnMuCi0gICAgZW51bSBCZWhhdmlvclJlc3RyaWN0aW9uRmxhZ3MgewotICAg
ICAgICBOb1Jlc3RyaWN0aW9ucyA9IDAsCi0gICAgICAgIFJlcXVpcmVVc2VyR2VzdHVyZUZvckxv
YWRSZXN0cmljdGlvbiA9IDEgPDwgMCwKLSAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9yUmF0
ZUNoYW5nZVJlc3RyaWN0aW9uID0gMSA8PCAxLAotICAgICAgICBSZXF1aXJlVXNlckdlc3R1cmVG
b3JGdWxsc2NyZWVuUmVzdHJpY3Rpb24gPSAxIDw8IDIsCi0gICAgICAgIFJlcXVpcmVQYWdlQ29u
c2VudFRvTG9hZE1lZGlhUmVzdHJpY3Rpb24gPSAxIDw8IDMsCi0gICAgICAgIFJlcXVpcmVQYWdl
Q29uc2VudFRvUmVzdW1lTWVkaWFSZXN0cmljdGlvbiA9IDEgPDwgNCwKLSNpZiBFTkFCTEUoSU9T
X0FJUlBMQVkpCi0gICAgICAgIFJlcXVpcmVVc2VyR2VzdHVyZVRvU2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyID0gMSA8PCA1LAotI2VuZGlmCi0gICAgfTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIEJl
aGF2aW9yUmVzdHJpY3Rpb25zOwotICAgIAotICAgIGJvb2wgdXNlckdlc3R1cmVSZXF1aXJlZEZv
ckxvYWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVy
ZUZvckxvYWRSZXN0cmljdGlvbjsgfQotICAgIGJvb2wgdXNlckdlc3R1cmVSZXF1aXJlZEZvclJh
dGVDaGFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2Vz
dHVyZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlvbjsgfQotICAgIGJvb2wgdXNlckdlc3R1cmVSZXF1
aXJlZEZvckZ1bGxzY3JlZW4oKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0aW9ucyAmIFJlcXVp
cmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW5SZXN0cmljdGlvbjsgfQotICAgIGJvb2wgcGFnZUNv
bnNlbnRSZXF1aXJlZEZvckxvYWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0aW9ucyAmIFJl
cXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhUmVzdHJpY3Rpb247IH0KLSAgICBib29sIHBhZ2VD
b25zZW50UmVxdWlyZWRGb3JSZXN1bWUoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0aW9ucyAm
IFJlcXVpcmVQYWdlQ29uc2VudFRvUmVzdW1lTWVkaWFSZXN0cmljdGlvbjsgfQotI2lmIEVOQUJM
RShJT1NfQUlSUExBWSkKLSAgICBib29sIHVzZXJHZXN0dXJlUmVxdWlyZWRUb1Nob3dQbGF5YmFj
a1RhcmdldFBpY2tlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVz
ZXJHZXN0dXJlVG9TaG93UGxheWJhY2tUYXJnZXRQaWNrZXI7IH0KLSNlbmRpZgotICAgIAotICAg
IHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmlj
dGlvbikgeyBtX3Jlc3RyaWN0aW9ucyB8PSByZXN0cmljdGlvbjsgfQotICAgIHZvaWQgcmVtb3Zl
QmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBt
X3Jlc3RyaWN0aW9ucyAmPSB+cmVzdHJpY3Rpb247IH0KLQogI2lmIEVOQUJMRShWSURFT19UUkFD
SykKICAgICBib29sIGlnbm9yZVRyYWNrRGlzcGxheVVwZGF0ZVJlcXVlc3RzKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZ25vcmVUcmFja0Rpc3BsYXlVcGRhdGUgPiAwIHx8ICFtX3RleHRUcmFja3MgfHwg
IW1fY3VlVHJlZS5zaXplKCk7IH0KICAgICB2b2lkIGJlZ2luSWdub3JpbmdUcmFja0Rpc3BsYXlV
cGRhdGVSZXF1ZXN0cygpOwpAQCAtNDgxLDYgKzQ1MCw4IEBAIHByb3RlY3RlZDoKIAogICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNz
UmVmPFJlbmRlclN0eWxlPikgT1ZFUlJJREU7CiAKKyAgICBNZWRpYVNlc3Npb24mIG1lZGlhU2Vz
c2lvbigpIGNvbnN0IHsgcmV0dXJuICptX21lZGlhU2Vzc2lvbjsgfQorCiBwcml2YXRlOgogICAg
IHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXIoKTsKIApAQCAtNjUyLDcgKzYyMyw2IEBAIHByaXZhdGU6
CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgYm9vbCBwYXJzZU1lZGlhUGxheWVyQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICB2b2lkIHVz
ZXJSZXF1ZXN0c01lZGlhTG9hZGluZygpOwogI2VuZGlmCiAKICAgICAvLyBQYXVzZXMgcGxheWJh
Y2sgd2l0aG91dCBjaGFuZ2luZyBhbnkgc3RhdGVzIG9yIGdlbmVyYXRpbmcgZXZlbnRzCkBAIC02
OTUsOSArNjY1LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBlbnN1cmVNZWRpYUNvbnRyb2xzSW5q
ZWN0ZWRTY3JpcHQoKTsKICNlbmRpZgogCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCi0gICAgdmly
dHVhbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3QgT1ZF
UlJJREU7Ci0jZW5kaWYKKyAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlh
VHlwZSgpIGNvbnN0IE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIGJlZ2luSW50ZXJydXB0
aW9uKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGVuZEludGVycnVwdGlvbihNZWRpYVNl
c3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzKSBPVkVSUklERTsKIAogICAgIFRpbWVyPEhUTUxN
ZWRpYUVsZW1lbnQ+IG1fbG9hZFRpbWVyOwogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1f
cHJvZ3Jlc3NFdmVudFRpbWVyOwpAQCAtNzM5LDggKzcxMCw2IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPFdpZGdldD4gbV9wcm94eVdpZGdldDsKICNlbmRpZgogCi0gICAgQmVoYXZpb3JSZXN0cmlj
dGlvbnMgbV9yZXN0cmljdGlvbnM7Ci0gICAgCiAgICAgTWVkaWFQbGF5ZXI6OlByZWxvYWQgbV9w
cmVsb2FkOwogCiAgICAgRGlzcGxheU1vZGUgbV9kaXNwbGF5TW9kZTsKQEAgLTc5NCw3ICs3NjMs
NiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9uZWVkV2lkZ2V0VXBkYXRlIDogMTsKICNlbmRpZgog
Ci0gICAgYm9vbCBtX2xvYWRJbml0aWF0ZWRCeVVzZXJHZXN0dXJlIDogMTsKICAgICBib29sIG1f
Y29tcGxldGVseUxvYWRlZCA6IDE7CiAgICAgYm9vbCBtX2hhdmVQcmVwYXJlZFRvUGxheSA6IDE7
CiAgICAgYm9vbCBtX3BhcnNpbmdJblByb2dyZXNzIDogMTsKQEAgLTgwNCw5ICs3NzIsMTAgQEAg
cHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIG1fcmVxdWVzdGluZ1BsYXkg
OiAxOwotICAgIGJvb2wgbV91c2VyU3RhcnRlZFBsYXliYWNrIDogMTsKICNlbmRpZgogCisgICAg
Ym9vbCBtX3Jlc3VtZVBsYXliYWNrQWZ0ZXJJbnRlcnJ1cHRpb24gOiAxOworCiAjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQogICAgIGJvb2wgbV90cmFja3NBcmVSZWFkeSA6IDE7CiAgICAgYm9vbCBt
X2hhdmVWaXNpYmxlVGV4dFRyYWNrIDogMTsKQEAgLTg1MywxMCArODIyLDcgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2tNZW51SW50ZXJmYWNlPiBtX3BsYXRmb3JtTWVu
dTsKICNlbmRpZgogCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCi0gICAgc3RkOjp1bmlxdWVfcHRy
PE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbj4gbV9tZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW47Ci0j
ZW5kaWYKLQorICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNzaW9u
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbj4gbV9hY3Rp
dml0eVRva2VuOwogICAgIHNpemVfdCBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2MTM1
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdEVu
dGVyRnVsbHNjCiAKICAgICAvLyBHZW5lcmF0ZSBhbiBleGNlcHRpb24gaWYgdGhpcyBpc24ndCBj
YWxsZWQgaW4gcmVzcG9uc2UgdG8gYSB1c2VyIGdlc3R1cmUsIG9yIGlmIHRoZSAKICAgICAvLyBl
bGVtZW50IGRvZXMgbm90IHN1cHBvcnQgZnVsbHNjcmVlbi4KLSAgICBpZiAoKHVzZXJHZXN0dXJl
UmVxdWlyZWRGb3JGdWxsc2NyZWVuKCkgJiYgIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdV
c2VyR2VzdHVyZSgpKSB8fCAhc3VwcG9ydHNGdWxsc2NyZWVuKCkpIHsKKyAgICBpZiAoIW1lZGlh
U2Vzc2lvbigpLmZ1bGxzY3JlZW5QZXJtaXR0ZWQoKnRoaXMpIHx8ICFzdXBwb3J0c0Z1bGxzY3Jl
ZW4oKSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNl
c3Npb24uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
TWVkaWFTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKKwor
I2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5j
bHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlx
dWVfcHRyPE1lZGlhU2Vzc2lvbj4gTWVkaWFTZXNzaW9uOjpjcmVhdGUoTWVkaWFTZXNzaW9uQ2xp
ZW50JiBjbGllbnQpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFTZXNzaW9u
PihjbGllbnQpOworfQorCitNZWRpYVNlc3Npb246Ok1lZGlhU2Vzc2lvbihNZWRpYVNlc3Npb25D
bGllbnQmIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fcmVzdHJpY3Rp
b25zKE5vUmVzdHJpY3Rpb25zKQorICAgICwgbV9zdGF0ZShSdW5uaW5nKQoreworICAgIG1fdHlw
ZSA9IG1fY2xpZW50Lm1lZGlhVHlwZSgpOworICAgIEFTU0VSVChtX3R5cGUgPj0gTm9uZSAmJiBt
X3R5cGUgPD0gV2ViQXVkaW8pOworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFn
ZXIoKS5hZGRTZXNzaW9uKCp0aGlzKTsKK30KKworTWVkaWFTZXNzaW9uOjp+TWVkaWFTZXNzaW9u
KCkKK3sKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVtb3ZlU2Vz
c2lvbigqdGhpcyk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbigp
Cit7CisgICAgbV9zdGF0ZSA9IEludGVycnVwdGVkOworICAgIG1fY2xpZW50LmJlZ2luSW50ZXJy
dXB0aW9uKCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24oRW5kSW50
ZXJydXB0aW9uRmxhZ3MgZmxhZ3MpCit7CisgICAgbV9zdGF0ZSA9IFJ1bm5pbmc7CisgICAgbV9j
bGllbnQuZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKK30KKworYm9vbCBNZWRpYVNlc3Npb246OnBs
YXliYWNrUGVybWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdAoreworICAgIGlm
IChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2UgJiYgIVNj
cmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7CisgICAgICAgIExPRyhN
ZWRpYSwgIk1lZGlhU2Vzc2lvbjo6cGxheWJhY2tQZXJtaXR0ZWQgLSByZXR1cm5pbmcgRkFMU0Ui
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIE1lZGlhU2Vzc2lvbjo6ZGF0YUxvYWRpbmdQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlh
RWxlbWVudCYpIGNvbnN0Cit7CisgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJH
ZXN0dXJlRm9yTG9hZCAmJiAhU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uOjpkYXRhTG9hZGluZ1Blcm1p
dHRlZCAtIHJldHVybmluZyBGQUxTRSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFTZXNzaW9uOjpmdWxsc2NyZWVuUGVy
bWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdAoreworICAgIGlmIChtX3Jlc3Ry
aWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW4gJiYgIVNjcmlwdENvbnRy
b2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7CisgICAgICAgIExPRyhNZWRpYSwgIk1l
ZGlhU2Vzc2lvbjo6ZnVsbHNjcmVlblBlcm1pdHRlZCAtIHJldHVybmluZyBGQUxTRSIpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
TWVkaWFTZXNzaW9uOjpwYWdlQWxsb3dzRGF0YUxvYWRpbmcoY29uc3QgSFRNTE1lZGlhRWxlbWVu
dCYgZWxlbWVudCkgY29uc3QKK3sKKyAgICBQYWdlKiBwYWdlID0gZWxlbWVudC5kb2N1bWVudCgp
LnBhZ2UoKTsKKyAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlUGFnZUNvbnNlbnRUb0xv
YWRNZWRpYSAmJiBwYWdlICYmICFwYWdlLT5jYW5TdGFydE1lZGlhKCkpIHsKKyAgICAgICAgTE9H
KE1lZGlhLCAiTWVkaWFTZXNzaW9uOjpwYWdlQWxsb3dzRGF0YUxvYWRpbmcgLSByZXR1cm5pbmcg
RkFMU0UiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBNZWRpYVNlc3Npb246OnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVz
dW1pbmcoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkgY29uc3QKK3sKKyAgICBQYWdl
KiBwYWdlID0gZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKTsKKyAgICBpZiAobV9yZXN0cmljdGlv
bnMgJiBSZXF1aXJlUGFnZUNvbnNlbnRUb1Jlc3VtZU1lZGlhICYmIHBhZ2UgJiYgIXBhZ2UtPmNh
blN0YXJ0TWVkaWEoKSkgeworICAgICAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb246OnBhZ2VB
bGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcgLSByZXR1cm5pbmcgRkFMU0UiKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2lmIEVO
QUJMRShJT1NfQUlSUExBWSkKK2Jvb2wgTWVkaWFTZXNzaW9uOjpzaG93aW5nUGxheWJhY2tUYXJn
ZXRQaWNrZXJQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0Cit7CisgICAg
aWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlVG9TaG93UGxheWJhY2tUYXJn
ZXRQaWNrZXIgJiYgIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7
CisgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbjo6c2hvd2luZ1BsYXliYWNrVGFyZ2V0
UGlja2VyUGVybWl0dGVkIC0gcmV0dXJuaW5nIEZBTFNFIik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKworfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFT
ZXNzaW9uX2gKKyNkZWZpbmUgTWVkaWFTZXNzaW9uX2gKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU2Vzc2lvbkNsaWVu
dDsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CisKK2NsYXNzIE1lZGlhU2Vzc2lvbiB7CitwdWJs
aWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb24+IGNyZWF0ZShNZWRp
YVNlc3Npb25DbGllbnQmKTsKKworICAgIE1lZGlhU2Vzc2lvbihNZWRpYVNlc3Npb25DbGllbnQm
KTsKKyAgICB+TWVkaWFTZXNzaW9uKCk7CisKKyAgICBlbnVtIE1lZGlhVHlwZSB7CisgICAgICAg
IE5vbmUsCisgICAgICAgIFZpZGVvLAorICAgICAgICBBdWRpbywKKyAgICAgICAgV2ViQXVkaW8s
CisgICAgfTsKKyAgICAKKyAgICBNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CisKKyAgICBlbnVtIFN0YXRlIHsKKyAgICAgICAgUnVubmluZywKKyAgICAgICAg
SW50ZXJydXB0ZWQsCisgICAgfTsKKyAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGU7IH0KKyAgICB2b2lkIHNldFN0YXRlKFN0YXRlIHN0YXRlKSB7IG1fc3RhdGUgPSBzdGF0
ZTsgfQorCisgICAgZW51bSBFbmRJbnRlcnJ1cHRpb25GbGFncyB7CisgICAgICAgIE5vRmxhZ3Mg
PSAwLAorICAgICAgICBNYXlSZXN1bWVQbGF5aW5nID0gMSA8PCAwLAorICAgIH07CisgICAgdm9p
ZCBiZWdpbkludGVycnVwdGlvbigpOworICAgIHZvaWQgZW5kSW50ZXJydXB0aW9uKEVuZEludGVy
cnVwdGlvbkZsYWdzKTsKKworICAgIGJvb2wgcGxheWJhY2tQZXJtaXR0ZWQoY29uc3QgSFRNTE1l
ZGlhRWxlbWVudCYpIGNvbnN0OworICAgIGJvb2wgZGF0YUxvYWRpbmdQZXJtaXR0ZWQoY29uc3Qg
SFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OworICAgIGJvb2wgZnVsbHNjcmVlblBlcm1pdHRlZChj
b25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CisgICAgYm9vbCBwYWdlQWxsb3dzRGF0YUxv
YWRpbmcoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OworICAgIGJvb2wgcGFnZUFsbG93
c1BsYXliYWNrQWZ0ZXJSZXN1bWluZyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7Cisj
aWYgRU5BQkxFKElPU19BSVJQTEFZKQorICAgIGJvb2wgc2hvd2luZ1BsYXliYWNrVGFyZ2V0UGlj
a2VyUGVybWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKKyNlbmRpZgorCisg
ICAgLy8gUmVzdHJpY3Rpb25zIHRvIG1vZGlmeSBkZWZhdWx0IGJlaGF2aW9ycy4KKyAgICBlbnVt
IEJlaGF2aW9yUmVzdHJpY3Rpb25GbGFncyB7CisgICAgICAgIE5vUmVzdHJpY3Rpb25zID0gMCwK
KyAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9hZCA9IDEgPDwgMCwKKyAgICAgICAgUmVx
dWlyZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5nZSA9IDEgPDwgMSwKKyAgICAgICAgUmVxdWlyZVVz
ZXJHZXN0dXJlRm9yRnVsbHNjcmVlbiA9IDEgPDwgMiwKKyAgICAgICAgUmVxdWlyZVBhZ2VDb25z
ZW50VG9Mb2FkTWVkaWEgPSAxIDw8IDMsCisgICAgICAgIFJlcXVpcmVQYWdlQ29uc2VudFRvUmVz
dW1lTWVkaWEgPSAxIDw8IDQsCisjaWYgRU5BQkxFKElPU19BSVJQTEFZKQorICAgICAgICBSZXF1
aXJlVXNlckdlc3R1cmVUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tlciA9IDEgPDwgNSwKKyNlbmRp
ZgorICAgIH07CisgICAgdHlwZWRlZiB1bnNpZ25lZCBCZWhhdmlvclJlc3RyaWN0aW9uczsKKwor
ICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0
cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyB8PSByZXN0cmljdGlvbjsgfQorICAgIHZvaWQgcmVt
b3ZlQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikg
eyBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVzdHJpY3Rpb247IH0KKworcHJpdmF0ZToKKyAgICBNZWRp
YVNlc3Npb25DbGllbnQmIG1fY2xpZW50OworICAgIE1lZGlhVHlwZSBtX3R5cGU7CisgICAgQmVo
YXZpb3JSZXN0cmljdGlvbnMgbV9yZXN0cmljdGlvbnM7CisgICAgU3RhdGUgbV9zdGF0ZTsKK307
CisKK2NsYXNzIE1lZGlhU2Vzc2lvbkNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TWVkaWFTZXNzaW9uQ2xpZW50KTsKK3B1YmxpYzoKKyAgICBNZWRpYVNlc3Npb25DbGllbnQoKSB7
IH0KKyAgICAKKyAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgp
IGNvbnN0ID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZW5kSW50ZXJydXB0aW9uKE1lZGlhU2Vzc2lvbjo6RW5kSW50
ZXJydXB0aW9uRmxhZ3MpIHsgfQorICAgIAorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfk1lZGlh
U2Vzc2lvbkNsaWVudCgpIHsgfQorfTsKKworfQorCisjZW5kaWYgLy8gTWVkaWFTZXNzaW9uX2gK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
MjUgKzI2LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9u
TWFuYWdlci5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKyNpbmNsdWRlICJIVE1MTWVk
aWFFbGVtZW50LmgiCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCiAKLQotc3RkOjp1bmlxdWVf
cHRyPE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbj4gTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOjpj
cmVhdGUoTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xpZW50KQotewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbj4oY2xpZW50KTsKLX0KLQot
TWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOjpNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4oTWVkaWFT
ZXNzaW9uTWFuYWdlckNsaWVudCYgY2xpZW50KQotICAgIDogbV9jbGllbnQoY2xpZW50KQotewot
ICAgIG1fdHlwZSA9IG1fY2xpZW50Lm1lZGlhVHlwZSgpOwotICAgIE1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRUb2tlbigqdGhpcyk7Ci19Ci0KLU1lZGlhU2Vzc2lvbk1h
bmFnZXJUb2tlbjo6fk1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbigpCi17Ci0gICAgTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlbW92ZVRva2VuKCp0aGlzKTsKLX0KK25hbWVz
cGFjZSBXZWJDb3JlIHsKIAogTWVkaWFTZXNzaW9uTWFuYWdlciYgTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpCiB7CkBAIC01MywxNCArMzgsMTUgQEAgTWVkaWFTZXNzaW9uTWFu
YWdlciYgTWVkaWFTZXNzaW9uTWFuYWdlcgogfQogCiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZWRp
YVNlc3Npb25NYW5hZ2VyKCkKKyAgICA6IG1faW50ZXJydXB0aW9ucygwKQogewogfQogCi1ib29s
IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmhhcyhNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZWRpYVR5cGUg
dHlwZSkgY29uc3QKK2Jvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6aGFzKE1lZGlhU2Vzc2lvbjo6
TWVkaWFUeXBlIHR5cGUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHR5cGUgPj0gTWVkaWFTZXNzaW9u
TWFuYWdlcjo6Tm9uZSAmJiB0eXBlIDw9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OldlYkF1ZGlvKTsK
KyAgICBBU1NFUlQodHlwZSA+PSBNZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8PSBNZWRpYVNl
c3Npb246OldlYkF1ZGlvKTsKIAotICAgIGZvciAoYXV0byBpdCA9IG1fdG9rZW5zLmJlZ2luKCks
IGVuZCA9IG1fdG9rZW5zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBmb3IgKGF1dG8g
aXQgPSBtX3Nlc3Npb25zLmJlZ2luKCksIGVuZCA9IG1fc2Vzc2lvbnMuZW5kKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewogICAgICAgICBpZiAoKCppdCktPm1lZGlhVHlwZSgpID09IHR5cGUpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC02OCwxMiArNTQsMTIgQEAgYm9vbCBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpoYXMoTWVkaWFTZXNzaQogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
aW50IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvdW50KE1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1lZGlh
VHlwZSB0eXBlKSBjb25zdAoraW50IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvdW50KE1lZGlhU2Vz
c2lvbjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHR5cGUgPj0gTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6Tm9uZSAmJiB0eXBlIDw9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OldlYkF1
ZGlvKTsKKyAgICBBU1NFUlQodHlwZSA+PSBNZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8PSBN
ZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKICAgICAKICAgICBpbnQgY291bnQgPSAwOwotICAgIGZv
ciAoYXV0byBpdCA9IG1fdG9rZW5zLmJlZ2luKCksIGVuZCA9IG1fdG9rZW5zLmVuZCgpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKKyAgICBmb3IgKGF1dG8gaXQgPSBtX3Nlc3Npb25zLmJlZ2luKCksIGVu
ZCA9IG1fc2Vzc2lvbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBpZiAoKCpp
dCktPm1lZGlhVHlwZSgpID09IHR5cGUpCiAgICAgICAgICAgICArK2NvdW50OwogICAgIH0KQEAg
LTgxLDIwICs2Nyw0MCBAQCBpbnQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y291bnQoTWVkaWFTZXNz
CiAgICAgcmV0dXJuIGNvdW50OwogfQogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFRv
a2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbiYgdG9rZW4pCit2b2lkIE1lZGlhU2Vzc2lvbk1h
bmFnZXI6OmJlZ2luSW50ZXJydXB0aW9uKCkKIHsKLSAgICBtX3Rva2Vucy5hcHBlbmQoJnRva2Vu
KTsKKyAgICBpZiAoKyttX2ludGVycnVwdGlvbnMgPiAxKQorICAgICAgICByZXR1cm47CisKKyAg
ICBmb3IgKGF1dG8gaXQgPSBtX3Nlc3Npb25zLmJlZ2luKCksIGVuZCA9IG1fc2Vzc2lvbnMuZW5k
KCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgKCppdCktPmJlZ2luSW50ZXJydXB0aW9uKCk7
Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZW5kSW50ZXJydXB0aW9uKE1lZGlhU2Vz
c2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MpCit7CisgICAgQVNTRVJUKG1faW50ZXJy
dXB0aW9ucyA+IDApOworICAgIGlmICgtLW1faW50ZXJydXB0aW9ucykKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIGZvciAoYXV0byBpdCA9IG1fc2Vzc2lvbnMuYmVnaW4oKSwgZW5kID0gbV9z
ZXNzaW9ucy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAoKml0KS0+ZW5kSW50ZXJy
dXB0aW9uKGZsYWdzKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRTZXNzaW9u
KE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKK3sKKyAgICBtX3Nlc3Npb25zLmFwcGVuZCgmc2Vzc2lv
bik7CisgICAgc2Vzc2lvbi5zZXRTdGF0ZShtX2ludGVycnVwdGlvbnMgPyBNZWRpYVNlc3Npb246
OkludGVycnVwdGVkIDogTWVkaWFTZXNzaW9uOjpSdW5uaW5nKTsKICAgICB1cGRhdGVTZXNzaW9u
U3RhdGUoKTsKIH0KIAotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVUb2tlbihNZWRp
YVNlc3Npb25NYW5hZ2VyVG9rZW4mIHRva2VuKQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpy
ZW1vdmVTZXNzaW9uKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICBzaXplX3QgaW5kZXgg
PSBtX3Rva2Vucy5maW5kKCZ0b2tlbik7CisgICAgc2l6ZV90IGluZGV4ID0gbV9zZXNzaW9ucy5m
aW5kKCZzZXNzaW9uKTsKICAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwogICAgIGlmIChp
bmRleCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV90b2tlbnMucmVtb3Zl
KGluZGV4KTsKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShpbmRleCk7CiAgICAgdXBkYXRlU2Vzc2lv
blN0YXRlKCk7CiB9CiAKQEAgLTEwMywzICsxMDksNSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnVwZGF0ZVNlc3Npb25TCiB7CiB9CiAjZW5kaWYKKworfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAkocmV2aXNp
b24gMTYxMzU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9u
TWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2NCArMjYsMzcgQEAKICNpZm5kZWYgTWVk
aWFTZXNzaW9uTWFuYWdlcl9oCiAjZGVmaW5lIE1lZGlhU2Vzc2lvbk1hbmFnZXJfaAogCi0jaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKKyNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW47CitjbGFzcyBIVE1MTWVk
aWFFbGVtZW50OworY2xhc3MgTWVkaWFTZXNzaW9uOwogCiBjbGFzcyBNZWRpYVNlc3Npb25NYW5h
Z2VyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgTWVkaWFTZXNzaW9uTWFuYWdlciYgc2hhcmVkTWFu
YWdlcigpOwogCi0gICAgZW51bSBNZWRpYVR5cGUgewotICAgICAgICBOb25lLAotICAgICAgICBW
aWRlbywKLSAgICAgICAgQXVkaW8sCi0gICAgICAgIFdlYkF1ZGlvLAotICAgIH07CisgICAgYm9v
bCBoYXMoTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUpIGNvbnN0OworICAgIGludCBjb3VudChNZWRp
YVNlc3Npb246Ok1lZGlhVHlwZSkgY29uc3Q7CiAKLSAgICBib29sIGhhcyhNZWRpYVR5cGUpIGNv
bnN0OwotICAgIGludCBjb3VudChNZWRpYVR5cGUpIGNvbnN0OworICAgIHZvaWQgYmVnaW5JbnRl
cnJ1cHRpb24oKTsKKyAgICB2b2lkIGVuZEludGVycnVwdGlvbihNZWRpYVNlc3Npb246OkVuZElu
dGVycnVwdGlvbkZsYWdzKTsKIAogcHJvdGVjdGVkOgotICAgIGZyaWVuZCBjbGFzcyBNZWRpYVNl
c3Npb25NYW5hZ2VyVG9rZW47Ci0gICAgdm9pZCBhZGRUb2tlbihNZWRpYVNlc3Npb25NYW5hZ2Vy
VG9rZW4mKTsKLSAgICB2b2lkIHJlbW92ZVRva2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbiYp
OworICAgIGZyaWVuZCBjbGFzcyBNZWRpYVNlc3Npb247CisgICAgdm9pZCBhZGRTZXNzaW9uKE1l
ZGlhU2Vzc2lvbiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihNZWRpYVNlc3Npb24mKTsKIAog
cHJpdmF0ZToKICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyKCk7CiAKICAgICB2b2lkIHVwZGF0ZVNl
c3Npb25TdGF0ZSgpOwogCi0gICAgVmVjdG9yPE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbio+IG1f
dG9rZW5zOwotfTsKLQotY2xhc3MgTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCB7Ci0gICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCk7Ci1wdWJsaWM6Ci0g
ICAgTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCgpIHsgfQotCi0gICAgdmlydHVhbCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3QgPSAwOwotCi1wcm90ZWN0
ZWQ6Ci0gICAgdmlydHVhbCB+TWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCgpIHsgfQotfTsKLQot
Y2xhc3MgTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbj4gY3JlYXRlKE1lZGlhU2Vzc2lv
bk1hbmFnZXJDbGllbnQmKTsKLQotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbihNZWRpYVNl
c3Npb25NYW5hZ2VyQ2xpZW50Jik7Ci0gICAgfk1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbigpOwot
Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQotCi1wcml2YXRlOgotCi0gICAgTWVkaWFTZXNzaW9uTWFuYWdlckNs
aWVudCYgbV9jbGllbnQ7Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFUeXBlIG1fdHlw
ZTsKKyAgICBWZWN0b3I8TWVkaWFTZXNzaW9uKj4gbV9zZXNzaW9uczsKKyAgICBpbnQgbV9pbnRl
cnJ1cHRpb25zOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAkocmV2aXNpb24gMTYx
MzU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRp
b25NYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIEF1ZGlvRGVzdGluYXRp
b25NYWM6OkF1ZGlvRGVzdGluYXRpb25NYWMKICAgICAsIG1fcmVuZGVyQnVzKEF1ZGlvQnVzOjpj
cmVhdGUoMiwga0J1ZmZlclNpemUsIGZhbHNlKSkKICAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVS
YXRlKQogICAgICwgbV9pc1BsYXlpbmcoZmFsc2UpCi0gICAgLCBtX21lZGlhU2Vzc2lvbk1hbmFn
ZXJUb2tlbihNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW46OmNyZWF0ZSgqdGhpcykpCisgICAgLCBt
X21lZGlhU2Vzc2lvbihNZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgLy8gT3Bl
biBhbmQgaW5pdGlhbGl6ZSBEZWZhdWx0T3V0cHV0VW5pdAogICAgIEF1ZGlvQ29tcG9uZW50IGNv
bXA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5h
dGlvbk1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmgJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAi
QXVkaW9EZXN0aW5hdGlvbi5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKKyNp
bmNsdWRlICJNZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlIDxBdWRpb1VuaXQvQXVkaW9Vbml0Lmg+
CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQw
LDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBBbiBBdWRpb0Rlc3RpbmF0aW9u
IHVzaW5nIENvcmVBdWRpbydzIGRlZmF1bHQgb3V0cHV0IEF1ZGlvVW5pdAogCi1jbGFzcyBBdWRp
b0Rlc3RpbmF0aW9uTWFjIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBNZWRpYVNl
c3Npb25NYW5hZ2VyQ2xpZW50IHsKK2NsYXNzIEF1ZGlvRGVzdGluYXRpb25NYWMgOiBwdWJsaWMg
QXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIE1lZGlhU2Vzc2lvbkNsaWVudCB7CiBwdWJsaWM6CiAg
ICAgQXVkaW9EZXN0aW5hdGlvbk1hYyhBdWRpb0lPQ2FsbGJhY2smLCBmbG9hdCBzYW1wbGVSYXRl
KTsKICAgICB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9uTWFjKCk7CkBAIC01OSw3ICs1OSw3IEBA
IHByaXZhdGU6CiAKICAgICBPU1N0YXR1cyByZW5kZXIoVUludDMyIG51bWJlck9mRnJhbWVzLCBB
dWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CiAKLSAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbk1hbmFn
ZXI6Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpXZWJBdWRpbzsgfQorICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVk
aWFUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbzsgfQogCiAgICAg
QXVkaW9Vbml0IG1fb3V0cHV0VW5pdDsKICAgICBBdWRpb0lPQ2FsbGJhY2smIG1fY2FsbGJhY2s7
CkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzUGxheWluZzsKIAogI2lm
IFVTRShBVURJT19TRVNTSU9OKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb25NYW5h
Z2VyVG9rZW4+IG1fbWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxNZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNzaW9uOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vz
c2lvbk1hbmFnZXJNYWMuY3BwCShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDE0ICs0MiwxNCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGtMb3dQb3dlclZpZGVv
QnVmZmVyCiAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkK
IHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3Rh
dGUoKSAtIHR5cGVzOiBWaWRlbyglZCksIEF1ZGlvKCVkKSwgV2ViQXVkaW8oJWQpIiwgY291bnQo
VmlkZW8pLCBjb3VudChBdWRpbyksIGNvdW50KFdlYkF1ZGlvKSk7CisgICAgTE9HKE1lZGlhLCAi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkgLSB0eXBlczogVmlkZW8o
JWQpLCBBdWRpbyglZCksIFdlYkF1ZGlvKCVkKSIsIGNvdW50KE1lZGlhU2Vzc2lvbjo6VmlkZW8p
LCBjb3VudChNZWRpYVNlc3Npb246OkF1ZGlvKSwgY291bnQoTWVkaWFTZXNzaW9uOjpXZWJBdWRp
bykpOwogCi0gICAgaWYgKGhhcyhXZWJBdWRpbykpCisgICAgaWYgKGhhcyhNZWRpYVNlc3Npb246
OldlYkF1ZGlvKSkKICAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJl
ZmVycmVkQnVmZmVyU2l6ZShrV2ViQXVkaW9CdWZmZXJTaXplKTsKICAgICAvLyBGSVhNRTogPGh0
dHA6Ly93ZWJraXQub3JnL2IvMTE2NzI1PiBGaWd1cmUgb3V0IHdoeSBlbmFibGluZyB0aGUgY29k
ZSBiZWxvdwogICAgIC8vIGNhdXNlcyBtZWRpYSBMYXlvdXRUZXN0cyB0byBmYWlsIG9uIDEwLjgu
CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi0gICAgZWxzZSBp
ZiAoKGhhcyhWaWRlbykgfHwgaGFzKEF1ZGlvKSkgJiYgU2V0dGluZ3M6Omxvd1Bvd2VyVmlkZW9B
dWRpb0J1ZmZlclNpemVFbmFibGVkKCkpCisgICAgZWxzZSBpZiAoKGhhcyhNZWRpYVNlc3Npb246
OlZpZGVvKSB8fCBoYXMoTWVkaWFTZXNzaW9uOjpBdWRpbykpICYmIFNldHRpbmdzOjpsb3dQb3dl
clZpZGVvQXVkaW9CdWZmZXJTaXplRW5hYmxlZCgpKQogICAgICAgICBBdWRpb1Nlc3Npb246OnNo
YXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRCdWZmZXJTaXplKGtMb3dQb3dlclZpZGVvQnVmZmVy
U2l6ZSk7CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJ
KHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQAogI2luY2x1ZGUgIk1haW5GcmFtZS5o
IgogI2luY2x1ZGUgIk1hbGxvY1N0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5o
IgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNo
ZS5oIgogI2luY2x1ZGUgIk1lbW9yeUluZm8uaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0yMjcx
LDQgKzIyNzIsMTkgQEAgdm9pZCBJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrTWVkaWFTb3VyYwog
fQogI2VuZGlmCiAKK3ZvaWQgSW50ZXJuYWxzOjpiZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlv
bigpCit7CisgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmJlZ2luSW50
ZXJydXB0aW9uKCk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjplbmRNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb24oY29uc3QgU3RyaW5nJiBmbGFnc1N0cmluZykKK3sKKyAgICBNZWRpYVNlc3Npb246OkVu
ZEludGVycnVwdGlvbkZsYWdzIGZsYWdzID0gTWVkaWFTZXNzaW9uOjpOb0ZsYWdzOworCisgICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKGZsYWdzU3RyaW5nLCAiTWF5UmVzdW1lUGxheWluZyIpKQor
ICAgICAgICBmbGFncyA9IE1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZzsKKyAgICAKKyAg
ICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuZW5kSW50ZXJydXB0aW9uKGZs
YWdzKTsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lv
biAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMzIsNiArMzMyLDkgQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZU1v
Y2tNZWRpYVNvdXJjZSgpOwogI2VuZGlmCiAKKyAgICB2b2lkIGJlZ2luTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uKCk7CisgICAgdm9pZCBlbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oY29uc3Qg
U3RyaW5nJik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50Kik7
CiAgICAgRG9jdW1lbnQqIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMTYxMzU4KQorKysgU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNzgsNCArMjc4LDcg
QEAKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBDbGllbnRSZWN0IHNlbGVjdGlvbkJvdW5kcygpOwog
ICAgIAogICAgIFtDb25kaXRpb25hbD1NRURJQV9TT1VSQ0VdIHZvaWQgaW5pdGlhbGl6ZU1vY2tN
ZWRpYVNvdXJjZSgpOworCisgICAgdm9pZCBiZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigp
OworICAgIHZvaWQgZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKERPTVN0cmluZyBmbGFncyk7
CiB9OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxMzU4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDEtMDYgIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGVhY2ggTWVkaWFTZXNzaW9u
TWFuYWdlciB0byBtYW5hZ2UgaW50ZXJydXB0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2NTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS92aWRlby1pbnRlcnJ1cHRpb24tYWN0aXZl
LXdoZW4tZWxlbWVudC1jcmVhdGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVk
aWEvdmlkZW8taW50ZXJydXB0aW9uLWFjdGl2ZS13aGVuLWVsZW1lbnQtY3JlYXRlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBtZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtYWxs
b3dpbmctcGxheS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLWlu
dGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIG1lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1ub3QtYWxsb3dpbmctcGxh
eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLWludGVycnVwdGlv
bi13aXRoLXJlc3VtZS1ub3QtYWxsb3dpbmctcGxheS5odG1sOiBBZGRlZC4KKwogMjAxNC0wMS0w
NiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCBHVEsgZ2FyZGVuaW5nLgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJy
dXB0aW9uLWFjdGl2ZS13aGVuLWVsZW1lbnQtY3JlYXRlZC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLWFjdGl2ZS13aGVuLWVs
ZW1lbnQtY3JlYXRlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9t
ZWRpYS92aWRlby1pbnRlcnJ1cHRpb24tYWN0aXZlLXdoZW4tZWxlbWVudC1jcmVhdGVkLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1IEBACitUZXN0IGEgPHZpZGVvPiBl
bGVtZW50IGNyYXRlZCBkdXJpbmcgaW50ZXJydXB0aW9uIGJlaGF2ZXMgY29ycmVjdGx5LgorCitS
VU4od2luZG93LmludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpKQorUlVO
KHZpZGVvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKSkKK1JVTihkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKHZpZGVvKSkKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorCitSVU4odmlk
ZW8ucGxheSgpKQorMjUwbXMgdGltZXIgZmlyZWQuLi4KK0VYUEVDVEVEICh2aWRlby5wYXVzZWQg
PT0gJ3RydWUnKSBPSworUlVOKHdpbmRvdy5pbnRlcm5hbHMuZW5kTWVkaWFTZXNzaW9uSW50ZXJy
dXB0aW9uKCdNYXlSZXN1bWVQbGF5aW5nJykpCitFVkVOVChwbGF5aW5nKQorCitFTkQgT0YgVEVT
VAorCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24tYWN0aXZlLXdo
ZW4tZWxlbWVudC1jcmVhdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8taW50ZXJydXB0aW9uLWFjdGl2ZS13aGVuLWVsZW1lbnQtY3JlYXRlZC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLWFjdGl2ZS13
aGVuLWVsZW1lbnQtY3JlYXRlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAK
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz1tZWRpYS1maWxlLmpzPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFyIHN0YXRlID0gMDsKKworICAgICAgICAgICAg
ZnVuY3Rpb24gY2hlY2tTdGF0ZSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29u
c29sZVdyaXRlKCIyNTBtcyB0aW1lciBmaXJlZC4uLiIpOworICAgICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSAi
cmVzdW1pbmciOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSAKKyAgICAg
ICAgICAgICAgICAgICAgcnVuKCJ3aW5kb3cuaW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvbignTWF5UmVzdW1lUGxheWluZycpIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHBsYXlpbmcoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlm
IChzdGF0ZSAhPSAicmVzdW1pbmciKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIjxi
PlBsYXliYWNrIHN0YXJ0ZWQgZHVyaW5nIGludGVycnVwdGlvbi48L2I+Iik7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBj
b25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZnVuY3Rpb24gY2FucGxheXRocm91Z2goKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICAgICAgcnVu
KCJ2aWRlby5wbGF5KCkiKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGNoZWNrU3RhdGUs
IDI1MCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgCisgICAg
ICAgICAgICAgICAgICAgIHJ1bigid2luZG93LmludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbklu
dGVycnVwdGlvbigpIik7OworICAgICAgICAgICAgICAgIHJ1bigidmlkZW8gPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCd2aWRlbycpIik7CisgICAgICAgICAgICAgICAgcnVuKCJkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKHZpZGVvKSIpOworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgn
Y2FucGxheXRocm91Z2gnLCBjYW5wbGF5dGhyb3VnaCk7CisgICAgICAgICAgICAgICAgd2FpdEZv
ckV2ZW50KCdwbGF5aW5nJywgcGxheWluZyk7CisgICAgICAgICAgICAgICAgdmlkZW8uc3JjID0g
ZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0Iik7CisgICAgICAgICAgICAgICAg
c3RhdGUgPSAiaW50ZXJydXB0ZWQiOworICAgICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisKKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8cD5U
ZXN0IGEgJmx0O3ZpZGVvJmd0OyBlbGVtZW50IGNyYXRlZCBkdXJpbmcgaW50ZXJydXB0aW9uIGJl
aGF2ZXMgY29ycmVjdGx5LjwvcD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtYWxsb3dpbmctcGxheS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJy
dXB0aW9uLXdpdGgtcmVzdW1lLWFsbG93aW5nLXBsYXktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLXdpdGgtcmVzdW1lLWFs
bG93aW5nLXBsYXktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAK
KworVGVzdCB0aGF0IHBsYXkoKSBkdXJpbmcgaW50ZXJydXB0aW9uIGRvZXMgbm90aGluZywgZW5k
aW5nIGludGVycnVwdGlvbiBhbGxvd3MgcGxheWJhY2sgdG8gcmVzdW1lLgorCitFVkVOVChjYW5w
bGF5dGhyb3VnaCkKKworUlVOKHdpbmRvdy5pbnRlcm5hbHMuYmVnaW5NZWRpYVNlc3Npb25JbnRl
cnJ1cHRpb24oKSkKK1JVTih2aWRlby5wbGF5KCkpCisyNTBtcyB0aW1lciBmaXJlZC4uLgorRVhQ
RUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCitSVU4od2luZG93LmludGVybmFscy5l
bmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oJ01heVJlc3VtZVBsYXlpbmcnKSkKK0VWRU5UKHBs
YXlpbmcpCisKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWlu
dGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLXdpdGgtcmVzdW1lLWFsbG93aW5n
LXBsYXkuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWludGVy
cnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1NSBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPW1l
ZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2YXIgc3RhdGUgPSAwOwor
CisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja1N0YXRlKCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoIjI1MG1zIHRpbWVyIGZpcmVkLi4uIik7CisgICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCB0cnVlKTsKKyAgICAgICAgICAg
ICAgICBzdGF0ZSA9ICJyZXN1bWluZyI7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpIAorICAgICAgICAgICAgICAgICAgICBydW4oIndpbmRvdy5pbnRlcm5hbHMuZW5kTWVk
aWFTZXNzaW9uSW50ZXJydXB0aW9uKCdNYXlSZXN1bWVQbGF5aW5nJykiKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZnVuY3Rpb24gcGxheWluZygpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgaWYgKHN0YXRlICE9ICJyZXN1bWluZyIpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgICAgICAg
ICBmYWlsVGVzdCgiPGI+UGxheWJhY2sgc3RhcnRlZCBkdXJpbmcgaW50ZXJydXB0aW9uLjwvYj4i
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICAgICAgZW5kVGVzdCgp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBjYW5wbGF5dGhyb3VnaCgp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKworICAg
ICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSAKKyAgICAgICAgICAgICAgICAgICAg
cnVuKCJ3aW5kb3cuaW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCkiKTs7
CisgICAgICAgICAgICAgICAgc3RhdGUgPSAiaW50ZXJydXB0ZWQiOworICAgICAgICAgICAgICAg
IHJ1bigidmlkZW8ucGxheSgpIik7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChjaGVja1N0
YXRlLCAyNTApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworICAg
ICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBjYW5wbGF5dGhyb3Vn
aCk7CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywgcGxheWluZyk7Cisg
ICAgICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVu
dC90ZXN0Iik7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KworICAgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICAgIDx2aWRlbyBjb250cm9scyA+
PC92aWRlbz4KKyAgICAgICAgPHA+VGVzdCB0aGF0IHBsYXkoKSBkdXJpbmcgaW50ZXJydXB0aW9u
IGRvZXMgbm90aGluZywgZW5kaW5nIGludGVycnVwdGlvbiBhbGxvd3MgcGxheWJhY2sgdG8gcmVz
dW1lLjwvcD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtbm90LWFsbG93aW5nLXBsYXktZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13
aXRoLXJlc3VtZS1ub3QtYWxsb3dpbmctcGxheS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtbm90LWFs
bG93aW5nLXBsYXktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUgQEAK
KworVGVzdCB0aGF0IHBsYXkoKSBkdXJpbmcgaW50ZXJydXB0aW9uIGRvZXMgbm90aGluZywgZW5k
aW5nIGludGVycnVwdGlvbiBkb2VzIG5vdCBhbGxvdyBwbGF5YmFjayB0byByZXN1bWUuCisKK0VW
RU5UKGNhbnBsYXl0aHJvdWdoKQorCitSVU4od2luZG93LmludGVybmFscy5iZWdpbk1lZGlhU2Vz
c2lvbkludGVycnVwdGlvbigpKQorUlVOKHZpZGVvLnBsYXkoKSkKKzI1MG1zIHRpbWVyIGZpcmVk
Li4uCitFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKK1JVTih3aW5kb3cuaW50
ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbignJykpCisyNTBtcyB0aW1lciBmaXJl
ZC4uLgorRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCisKK0VORCBPRiBURVNU
CisKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3Vt
ZS1ub3QtYWxsb3dpbmctcGxheS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlh
L3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1ub3QtYWxsb3dpbmctcGxheS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLXdpdGgt
cmVzdW1lLW5vdC1hbGxvd2luZy1wbGF5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
OSBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPW1lZGlhLWZpbGUu
anM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2YXIgc3RhdGUgPSAwOworCisgICAgICAg
ICAgICBmdW5jdGlvbiBwbGF5aW5nKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBp
ZiAoc3RhdGUgPT0gInJlc3VtaW5nIikKKyAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIjxi
PlBsYXliYWNrIHN0YXJ0ZWQgYWZ0ZXIgaW50ZXJydXB0aW9uLjwvYj4iKTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCI8Yj5QbGF5YmFjayBzdGFy
dGVkIGR1cmluZyBpbnRlcnJ1cHRpb24uPC9iPiIpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBmdW5jdGlvbiBjaGVja1N0YXRlKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIjI1MG1zIHRpbWVyIGZpcmVkLi4uIik7CisgICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBzd2l0
Y2ggKHN0YXRlKSB7CisgICAgICAgICAgICAgICAgY2FzZSAiaW50ZXJydXB0ZWQiOgorICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9ICJyZXN1bWluZyI7CisgICAgICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoY2hlY2tTdGF0ZSwgMjUwKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpIAorICAgICAgICAgICAgICAgICAgICAgICAgcnVuKCJ3aW5kb3cuaW50ZXJu
YWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbignJykiKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAicmVzdW1pbmciOgorICAgICAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgICAgICAgICBlbmRUZXN0KCk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gY2FucGxheXRocm91Z2goKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisKKyAgICAgICAgICAgICAg
ICBpZiAod2luZG93LmludGVybmFscykgCisgICAgICAgICAgICAgICAgICAgIHJ1bigid2luZG93
LmludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpIik7OworICAgICAgICAg
ICAgICAgIHN0YXRlID0gImludGVycnVwdGVkIjsKKyAgICAgICAgICAgICAgICBydW4oInZpZGVv
LnBsYXkoKSIpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2tTdGF0ZSwgMjUwKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnQoKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAgICAgICAgICAgICAg
ICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgY2FucGxheXRocm91Z2gpOworICAgICAg
ICAgICAgICAgIHdhaXRGb3JFdmVudCgncGxheWluZycsIHBsYXlpbmcpOworICAgICAgICAgICAg
ICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpOwor
ICAgICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8Ym9k
eSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8dmlkZW8gY29udHJvbHMgPjwvdmlkZW8+Cisg
ICAgICAgIDxwPlRlc3QgdGhhdCBwbGF5KCkgZHVyaW5nIGludGVycnVwdGlvbiBkb2VzIG5vdGhp
bmcsIGVuZGluZyBpbnRlcnJ1cHRpb24gZG9lcyBub3QgYWxsb3cgcGxheWJhY2sgdG8gcmVzdW1l
LjwvcD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220452</attachid>
            <date>2014-01-06 13:18:46 -0800</date>
            <delta_ts>2014-01-06 15:05:49 -0800</delta_ts>
            <desc>Fix style errors</desc>
            <filename>interruptions_patch_3.txt</filename>
            <type>text/plain</type>
            <size>67261</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBACisyMDE0LTAxLTA2ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFRlYWNoIE1lZGlhU2Vz
c2lvbk1hbmFnZXIgdG8gbWFuYWdlIGludGVycnVwdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjUzMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBtZWRpYS92aWRlby1pbnRlcnJ1cHRp
b24tYWN0aXZlLXdoZW4tZWxlbWVudC1jcmVhdGVkLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlh
L3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5Lmh0bWwKKyAgICAg
ICAgICAgICAgIG1lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1ub3QtYWxsb3dp
bmctcGxheS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IGZ1bmN0aW9u
cyBuZWVkZWQgYnkgSW50ZXJuYWxzLgorCisgICAgICAgIEFkZCBNZWRpYVNlc3Npb24gYW5kIE1l
ZGlhU2Vzc2lvbk1hbmFnZXIuCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAg
ICAgQXV0b21hdGljYWxseSBwYXVzZS9wbGF5IGZvciBpbnRlcnJ1cHRpb25zLiBNb3ZlIG1lZGlh
IHJlc3RyaWN0aW9uIG1hbmFnZW1lbnQgdG8gYSBNZWRpYVNlc3Npb24uCisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBVc2UgdGhlIG1lZGlhIHNlc3Npb24gdG8gbWFuYWdlIHJl
c3RyaWN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjppbnNl
cnRlZEludG8pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKTogRGl0dG8uIFJlbW92ZSByZWR1bmRhbnQgaU9TIGNvZGUuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkSW50ZXJuYWwpOiBVc2UgdGhlIG1lZGlhIHNlc3Np
b24gdG8gbWFuYWdlIHJlc3RyaWN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmxvYWRSZXNvdXJjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6YXV0b3BsYXkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnBsYXkpOiBEaXR0by4gUmVtb3ZlIHJlZHVuZGFudCBpT1MgY29kZS4gUG9zdHBv
bmUgcGxheWJhY2sgaWYgY2FsbGVkIAorICAgICAgICAgICAgZHVyaW5nIGFuIGludGVycnVwdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlKTogVXNlIHRoZSBt
ZWRpYSBzZXNzaW9uIHRvIG1hbmFnZSByZXN0cmljdGlvbnMuIElmIGNhbGxlZCBkdXJpbmcKKyAg
ICAgICAgICAgIGFuIGludGVycnVwdGlvbiwgcmVtZW1iZXIgdG8gbm90IHJlc3VtZSBwbGF5YmFj
ayB3aGVuIGl0IGVuZHMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVz
ZUludGVybmFsKTogVXNlIHRoZSBtZWRpYSBzZXNzaW9uIHRvIG1hbmFnZSByZXN0cmljdGlvbnMu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpwb3RlbnRpYWxseVBsYXlpbmcp
OiBSZWFycmFuZ2UgY29kZSB0byBtYWtlIGl0IGVhc2llciB0byB1bmRlcnN0YW5kLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y291bGRQbGF5SWZFbm91Z2hEYXRhKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVzZWRGb3JVc2VySW50
ZXJhY3Rpb24pOiBSZXR1cm4gdHJ1ZSBpZiBwYXVzZWQgYmVjYXVzZSBvZiBhbiBpbnRlcnJ1cHRp
b24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kKTogVXNlIHRo
ZSBtZWRpYSBzZXNzaW9uIHRvIG1hbmFnZSByZXN0cmljdGlvbnMuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmRlbGl2ZXJOb3RpZmljYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNob3dQbGF5YmFja1RhcmdldFBpY2tlcik6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJJ
c0Z1bGxzY3JlZW5QZXJtaXR0ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZUJlaGF2aW9yc1Jlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVy
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFUeXBl
KTogTWVkaWFTZXNzaW9uTWFuYWdlcjo6PFR5cGU+IC0+IE1lZGlhU2Vzc2lvbjo6PFR5cGU+Lgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YmVnaW5JbnRlcnJ1cHRpb24pOiBO
ZXcuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbmRJbnRlcnJ1cHRpb24p
OiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKworICAgICAgICAq
IGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50Ojp3ZWJraXRFbnRlckZ1bGxzY3JlZW4pOiBVc2UgdGhlIG1lZGlhIHNlc3Npb24gdG8g
bWFuYWdlIHJlc3RyaWN0aW9ucy4KKworICAgICAgICBQdWxsZWQgTWVkaWFTZXNzaW9uTWFuYWdl
clRva2VuIG91dCBvZiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCwgYWRkZWQgZnVuY3Rpb25hbGl0
eSB0byBtYW5hZ2UKKyAgICAgICAgbWVkaWEgZWxlbWVudCByZXN0cmljdGlvbnMgYW5kIGludGVy
cnVwdGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNlc3Npb246Ok1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb246On5NZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uOjpiZWdpbkludGVycnVwdGlvbik6IEluZm9ybSBjbGllbnQgb2YgaW50ZXJydXB0aW9uIHN0
YXRlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6ZW5kSW50ZXJydXB0
aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OnBsYXliYWNrUGVy
bWl0dGVkKTogQ2hlY2sgaWYgcGxheWJhY2sgaXMgYWxsb3dlZCBnaXZlbiB0aGUgY3VycmVudCBy
ZXN0cmljdGlvbnMgCisgICAgICAgICAgICBhbmQgdXNlciBnZXN0dXJlIHN0YXRlLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpkYXRhTG9hZGluZ1Blcm1pdHRlZCk6IERpdHRvIGZv
ciBkYXRhIGxvYWRpbmcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmZ1bGxzY3Jl
ZW5QZXJtaXR0ZWQpOiBEaXR0byBmb3IgZnVsbHNjcmVlbi4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbjo6c2hvd2luZ1BsYXliYWNrVGFyZ2V0UGlja2VyUGVybWl0dGVkKTogRGl0dG8g
Zm9yIHNob3dpbmcgdGhlIHBsYXliYWNrIHRhcmdldCBwaWNrZXIuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNlc3Npb246OnBhZ2VBbGxvd3NEYXRhTG9hZGluZyk6IENoZWNrIGlmIHBsYXliYWNr
IGlzIGFsbG93ZWQgZ2l2ZW4gdGhlIGN1cnJlbnQgcmVzdHJpY3Rpb25zIAorICAgICAgICAgICAg
YW5kIHBhZ2UgbWVkaWEgcmVzdHJpY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uOjpwYWdlQWxsb3dzUGxheWJhY2tBZnRlclJlc3VtaW5nKTogRGl0dG8gZm9yIHJlc3VtaW5n
IHBsYXliYWNrLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oOiBBZGRl
ZC4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFTZXNzaW9uTWFuYWdl
cik6IEluaXRpYWxpemUgaW50ZXJydXB0aW9uIGNvdW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb25NYW5hZ2VyOjpoYXMpOiBNZWRpYVR5cGUgaXMgZGVmaW5lZCBpbiBNZWRpYVNl
c3Npb24uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb3VudCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5JbnRlcnJ1
cHRpb24pOiBJbmZvcm0gYWxsIGNsaWVudHMgb2YgaW50ZXJydXB0aW9uIHN0YXJ0IGlmCisgICAg
ICAgICAgICBub3QgYWxyZWFkeSBpbiBhbiBpbnRlcnJ1cHRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1cHRpb24pOiBJbmZvcm0gYWxsIGNsaWVu
dHMgaWYgaW50ZXJydXB0aW9uIGhhcyBlbmRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbk1hbmFnZXI6OmFkZFNlc3Npb24pOiBSZW5hbWVkIGZyb20gYWRkVG9rZW4uCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVTZXNzaW9uKTogUmVuYW1lZCBm
cm9tIHJlbW92ZVRva2VuLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1h
bmFnZXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9u
TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25NYWM6OkF1ZGlvRGVz
dGluYXRpb25NYWMpOiBNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4gLT4gTWVkaWFTZXNzaW9uLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmg6CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHA6Cisg
ICAgICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUpOiBEaXR0by4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIGZvciB0ZXN0cyB0byBiZWdpbiBhbmQgZW5kIGlu
dGVycnVwdGlvbnMuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpiZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbik6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5pZGw6CisKIDIwMTQtMDEtMDYgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBw
bGUuY29tPgogCiAgICAgICAgIE1vdmUgVmlld1N0YXRlIHRvIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTg3Nyw2ICsxODc3LDggQEAgc2V0KFdlYkNvcmVf
U09VUkNFUwogICAgIHBsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCiAgICAgcGxhdGZv
cm0vYXVkaW8vSFJURktlcm5lbC5jcHAKICAgICBwbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNw
cAorICAgIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAKKyAgICBwbGF0Zm9ybS9hdWRp
by9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5l
bFJlc2FtcGxlci5jcHAKICAgICBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCiAgICAgcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShy
ZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3
b3JraW5nIGNvcHkpCkBAIC01MzUxLDYgKzUzNTEsMTAgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9NZWRpYVNlc3Npb24uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9N
ZWRpYVNlc3Npb24uaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNz
aW9uTWFuYWdlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vz
c2lvbk1hbmFnZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1
ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIFwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNzU2LDYgKzc1Niw5IEBAIF9fWk43V2ViQ29y
ZTE5TGF5ZXJGbHVzaFNjaGVkdWxlckMxRVBOU18KIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNj
aGVkdWxlckMyRVBOU18yNUxheWVyRmx1c2hTY2hlZHVsZXJDbGllbnRFCiBfX1pON1dlYkNvcmUx
OUxheWVyRmx1c2hTY2hlZHVsZXJEMUV2CiBfX1pON1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVs
ZXJEMkV2CitfX1pON1dlYkNvcmUxOU1lZGlhU2Vzc2lvbk1hbmFnZXIxM3NoYXJlZE1hbmFnZXJF
dgorX19aTjdXZWJDb3JlMTlNZWRpYVNlc3Npb25NYW5hZ2VyMTVlbmRJbnRlcnJ1cHRpb25FTlNf
MTJNZWRpYVNlc3Npb24yMEVuZEludGVycnVwdGlvbkZsYWdzRQorX19aTjdXZWJDb3JlMTlNZWRp
YVNlc3Npb25NYW5hZ2VyMTdiZWdpbkludGVycnVwdGlvbkV2CiBfX1pON1dlYkNvcmUxOVJlc291
cmNlUmVxdWVzdEJhc2UxMXNldEhUVFBCb2R5RU4zV1RGMTBQYXNzUmVmUHRySU5TXzhGb3JtRGF0
YUVFRQogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMTNzZXRIVFRQTWV0aG9kRVJL
TjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMThzZXRIVFRQ
SGVhZGVyRmllbGRFUEtjUktOM1dURjZTdHJpbmdFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTcyMjUsNiArNzIyNSw4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxGaWxlU3RyZWFtLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXEZpbGVTeXN0ZW0uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cYXVkaW9cQXVkaW9TZXNzaW9uLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEFOR0xFV2ViS2l0QnJpZGdl
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2
Zm91bmRhdGlvblxjZlxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cY2ZcSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuY3BwIiAvPgpAQCAtMTkwODgsNiArMTkwOTAs
OCBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cRmxvYXRDb252ZXJzaW9u
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xBdWRpb1Nl
c3Npb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXEF1
ZGlvU2Vzc2lvbkxpc3RlbmVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxhdWRpb1xNZWRpYVNlc3Npb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEFOR0xFV2ViS2l0QnJpZGdlLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xBdWRpb1RyYWNrUHJp
dmF0ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
YXZmb3VuZGF0aW9uXGNmXEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgiIC8+CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzCShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTE0NTk2LDYg
KzE0NTk2LDEyIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xB
dWRpb1Nlc3Npb25MaXN0ZW5lci5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cYXVkaW88L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbi5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cYXVkaW88
L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCI+CisgICAgICA8RmlsdGVyPnBsYXRm
b3JtXGF1ZGlvPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xBTkdMRVdlYktpdEJyaWRnZS5oIj4KICAgICAgIDxG
aWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTI5LDYgKzEyOSw4IEBACiAJCTA3MDc1
NkRGMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNzU2RDkxNDIzOUI0QzAwNDE0
MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5jcHAgKi87IH07CiAJCTA3MDc1NkUwMTQyMzlCNEUw
MDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDc1NkRBMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRU
cmFja0N1ZUxpc3QuaCAqLzsgfTsKIAkJMDcwOUZDNEUxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vz
c2liaWxpdHlTbGlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3MDlGQzREMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmgg
Ki87IH07CisJCTA3MEUwOTE5MTg3NUVFRkMwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MEUwOTE4MTg3NUVE
OTMwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwNzBFMDkxQjE4NzVFRjcxMDAzQTFEM0MgLyogTWVkaWFT
ZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3MEUwOTFBMTg3NUVGNzEwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uY3BwICovOyB9OwogCQkw
NzBGNTQ5ODE3RjEyRjZCMDAxNjlFMDQgLyogTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRp
b25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3MEY1NDk3MTdGMTJGNkIwMDE2OUUwNCAvKiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRh
dGlvbkNsaWVudC5oICovOyB9OwogCQkwNzBGNTQ5RTE3RjI0MDI3MDAxNjlFMDQgLyogQXVkaW9E
ZXN0aW5hdGlvbkNvbnN1bWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzBGNTQ5RDE3RjI0MDI3MDAxNjlFMDQgLyogQXVkaW9EZXN0aW5hdGlvbkNv
bnN1bWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMDcxMTU4OTExN0RGNkY2NjAwRURGRTJCIC8qIE1lZGlhU3RyZWFtUHJpdmF0ZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzExNTg4RjE3REY2
MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmNwcCAqLzsgfTsKQEAgLTY3MTUsNiAr
NjcxNyw4IEBACiAJCTA3MDc1NkRBMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxp
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUZXh0VHJhY2tDdWVMaXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDlGQzREMTAyNURFRTMwMDU5Q0RC
QSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFjY2Vzc2liaWxpdHlTbGlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDcwREQ4RjUwRjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IG1lZGlhQ29udHJvbHMuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwNzBFMDkxODE4NzVFRDkzMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzBFMDkxQTE4NzVFRjcxMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU2Vzc2lvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MEY1NDk3MTdGMTJGNkIwMDE2OUUwNCAv
KiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzBGNTQ5RDE3RjI0MDI3MDAxNjlF
MDQgLyogQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEF1ZGlvRGVzdGluYXRpb25Db25zdW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzExNTg4RjE3REY2MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Qcml2YXRl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtUHJp
dmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjA1MCw2ICsyMjA1NCw4
IEBACiAJCQkJQ0RBNzk4MjIxNzBBMjRGNDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbkxpc3RlbmVy
LmggKi8sCiAJCQkJQ0RBRThDMDcxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwICovLAogCQkJCUNEQUU4QzA4MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25N
YW5hZ2VyLmggKi8sCisJCQkJMDcwRTA5MTgxODc1RUQ5MzAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lv
bi5oICovLAorCQkJCTA3MEUwOTFBMTg3NUVGNzEwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uY3Bw
ICovLAogCQkJCUZEMzE2MDUzMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb1NvdXJjZVByb3ZpZGVy
LmggKi8sCiAJCQkJRkQ2MkY1MkQxNDU4OThEODAwOTRCMEVEIC8qIEF1ZGlvU291cmNlUHJvdmlk
ZXJDbGllbnQuaCAqLywKIAkJCQlGRDMxNjA1NDEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9VdGls
aXRpZXMuY3BwICovLApAQCAtMjQ1OTksNiArMjQ2MDUsNyBAQAogCQkJCTQzNjcwOEM3MTJEOUNB
NEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQzNjcwOEM5MTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdJbWFnZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDg1NEIwMTUxMjU1RTRFNjAwQjlDREQwIC8qIFJlbmRlclNWR0lubGluZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMDcwRTA5MTkxODc1RUVGQzAwM0ExRDNDIC8qIE1lZGlhU2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg1NEIwMTcxMjU1RTRFNjAwQjlDREQwIC8qIFJl
bmRlclNWR0lubGluZVRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTYyMTdBOUQwMUIw
MDI3NEU0MiAvKiBTb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcwOENCMTJE
OUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdNb2RlbE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yODA3Myw2ICsyODA4MCw3IEBACiAJCQkJOTMzMDlFMTEwOTlFNjQ5MjAwNTZFNTgxIC8qIFNw
bGl0RWxlbWVudENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMTMwOTlFNjQ5
MjAwNTZFNTgxIC8qIFNwbGl0VGV4dE5vZGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTA3OEUwOTRCMTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25O
b2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MEUwOTFCMTg3NUVGNzEwMDNBMUQzQyAvKiBN
ZWRpYVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMTUwOTlFNjQ5MjAwNTZF
NTgxIC8qIFNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudENvbW1hbmQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTFFMTE1NDgxMzAxNUM1RDAwNTRBQzhDIC8qIFNwb3RMaWdodFNvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0JDNkEzRTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMRXhj
ZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMyArMzAsMTMgQEAK
ICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNTU1By
b3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAi
Q2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2xpZW50UmVjdC5oIgogI2luY2x1ZGUgIkNsaWVu
dFJlY3RMaXN0LmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVk
ZSAiQ29udGVudFR5cGUuaCIKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCi0jaW5jbHVk
ZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkRpYWdub3N0aWNMb2dnaW5nS2V5cy5o
IgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9y
LmgiCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiSlNIVE1MTWVkaWFFbGVtZW50LmgiCiAj
aW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTUlN
RVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lZGlh
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKQEAgLTU5LDcgKzYwLDcg
QEAKICNpbmNsdWRlICJNZWRpYUtleUV2ZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCiAj
aW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgotI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKKyNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGFnZUFj
dGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRl
ICJSZW5kZXJWaWRlby5oIgpAQCAtMTM3LDEwICsxMzgsNiBAQAogI2luY2x1ZGUgIlBsYXRmb3Jt
VGV4dFRyYWNrLmgiCiAjZW5kaWYKIAotI2lmIFVTRShBVURJT19TRVNTSU9OKQotI2luY2x1ZGUg
Ik1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRS
T0xTX1NDUklQVCkKICNpbmNsdWRlICJKU01lZGlhQ29udHJvbHNIb3N0LmgiCiAjaW5jbHVkZSAi
TWVkaWFDb250cm9sc0hvc3QuaCIKQEAgLTI4NCw3ICsyODEsNiBAQCBIVE1MTWVkaWFFbGVtZW50
OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklE
RU8pCiAgICAgLCBtX3Byb3h5V2lkZ2V0KDApCiAjZW5kaWYKLSAgICAsIG1fcmVzdHJpY3Rpb25z
KFJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW5SZXN0cmljdGlvbiB8IFJlcXVpcmVQYWdl
Q29uc2VudFRvTG9hZE1lZGlhUmVzdHJpY3Rpb24pCiAgICAgLCBtX3ByZWxvYWQoTWVkaWFQbGF5
ZXI6OkF1dG8pCiAgICAgLCBtX2Rpc3BsYXlNb2RlKFVua25vd24pCiAgICAgLCBtX3Byb2Nlc3Np
bmdNZWRpYVBsYXllckNhbGxiYWNrKDApCkBAIC0zMTYsNyArMzEyLDYgQEAgSFRNTE1lZGlhRWxl
bWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9S
X1ZJREVPKQogICAgICwgbV9uZWVkV2lkZ2V0VXBkYXRlKGZhbHNlKQogI2VuZGlmCi0gICAgLCBt
X2xvYWRJbml0aWF0ZWRCeVVzZXJHZXN0dXJlKGZhbHNlKQogICAgICwgbV9jb21wbGV0ZWx5TG9h
ZGVkKGZhbHNlKQogICAgICwgbV9oYXZlUHJlcGFyZWRUb1BsYXkoZmFsc2UpCiAgICAgLCBtX3Bh
cnNpbmdJblByb2dyZXNzKGNyZWF0ZWRCeVBhcnNlcikKQEAgLTMyNSw3ICszMjAsNiBAQCBIVE1M
TWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0CiAjZW5kaWYKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgLCBtX3JlcXVlc3RpbmdQbGF5KGZhbHNlKQotICAgICwgbV91c2VyU3RhcnRl
ZFBsYXliYWNrKGZhbHNlKQogI2VuZGlmCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwg
bV90cmFja3NBcmVSZWFkeSh0cnVlKQpAQCAtMzQxLDkgKzMzNSw3IEBAIEhUTUxNZWRpYUVsZW1l
bnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgICwg
bV9hdWRpb1NvdXJjZU5vZGUoMCkKICNlbmRpZgotI2lmIFVTRShBVURJT19TRVNTSU9OKQotICAg
ICwgbV9tZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4oTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOjpj
cmVhdGUoKnRoaXMpKQotI2VuZGlmCisgICAgLCBtX21lZGlhU2Vzc2lvbihNZWRpYVNlc3Npb246
OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0KDApCiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICAsIG1fbWVkaWFTdHJlYW1TcmNPYmplY3QobnVsbHB0
cikKQEAgLTM1Miw2ICszNDQsOSBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50
KGNvbnN0CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVu
dCIpOwogICAgIHNldEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwogCisgICAgbV9t
ZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpSZXF1aXJl
VXNlckdlc3R1cmVGb3JGdWxsc2NyZWVuKTsKKyAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZp
b3JSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OlJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlh
KTsKKwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2xlYW4gdXAgYW5kIGxvb2sgdG8gYmV0dGVy
IG1lcmdlIHRoZSBpT1MgYW5kIG5vbi1pT1MgY29kZSBiZWxvdy4KICAgICBTZXR0aW5ncyogc2V0
dGluZ3MgPSBkb2N1bWVudC5zZXR0aW5ncygpOwogI2lmICFQTEFURk9STShJT1MpCkBAIC0zNjMs
MTggKzM1OCwxNyBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0CiAj
ZW5kaWYKIAogICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+bWVkaWFQbGF5YmFja1JlcXVp
cmVzVXNlckdlc3R1cmUoKSkgewotICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVp
cmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlvbik7Ci0gICAgICAgIGFkZEJlaGF2
aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9hZFJlc3RyaWN0aW9uKTsKKyAg
ICAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9u
OjpSZXF1aXJlVXNlckdlc3R1cmVGb3JSYXRlQ2hhbmdlKTsKKyAgICAgICAgbV9tZWRpYVNlc3Np
b24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1
cmVGb3JMb2FkKTsKICAgICB9CiAjZWxzZQogICAgIG1fc2VuZFByb2dyZXNzRXZlbnRzID0gZmFs
c2U7CiAgICAgaWYgKCFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+bWVkaWFQbGF5YmFja1JlcXVpcmVz
VXNlckdlc3R1cmUoKSkgewotICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVV
c2VyR2VzdHVyZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlvbik7CisgICAgICAgIG1fbWVkaWFTZXNz
aW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0
dXJlRm9yUmF0ZUNoYW5nZSk7CiAjaWYgRU5BQkxFKElPU19BSVJQTEFZKQotICAgICAgICBhZGRC
ZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZVRvU2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKTsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24o
TWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tl
cik7CiAjZW5kaWYKLSAgICB9IGVsc2UKLSAgICAgICAgbV9yZXN0cmljdGlvbnMgPSBOb1Jlc3Ry
aWN0aW9uczsKKyAgICB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAogICAgIGFkZEVsZW1l
bnRUb0RvY3VtZW50TWFwKCp0aGlzLCBkb2N1bWVudCk7CkBAIC01MjQsMTEgKzUxOCw4IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY28KIHsKICAgICBpZiAobmFtZSA9
PSBzcmNBdHRyKSB7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICAvLyBOb3RlLCB1bmxlc3Mg
dGhlIHJlc3RyaWN0aW9uIG9uIHJlcXVpcmluZyB1c2VyIGFjdGlvbiBoYXMgYmVlbiByZW1vdmVk
LAotICAgICAgICAvLyBkbyBub3QgYmVnaW4gZG93bmxvYWRpbmcgZGF0YSBvbiBpT1MuCi0gICAg
ICAgIGlmICghdXNlckdlc3R1cmVSZXF1aXJlZEZvckxvYWQoKSAmJiAhdmFsdWUuaXNOdWxsKCkp
IHsKKyAgICAgICAgaWYgKCF2YWx1ZS5pc051bGwoKSAmJiBtX21lZGlhU2Vzc2lvbi0+ZGF0YUxv
YWRpbmdQZXJtaXR0ZWQoKnRoaXMpKSB7CiAjZWxzZQotICAgICAgICAvLyBUcmlnZ2VyIGEgcmVs
b2FkLCBhcyBsb25nIGFzIHRoZSAnc3JjJyBhdHRyaWJ1dGUgaXMgcHJlc2VudC4KICAgICAgICAg
aWYgKCF2YWx1ZS5pc051bGwoKSkgewogI2VuZGlmCiAgICAgICAgICAgICBjbGVhck1lZGlhUGxh
eWVyKExvYWRNZWRpYVJlc291cmNlKTsKQEAgLTY5Myw3ICs2ODQsNyBAQCBOb2RlOjpJbnNlcnRp
b25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxNCiAgICAgICAgIG1faW5BY3RpdmVEb2N1bWVudCA9
IHRydWU7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIGlmICghdXNlckdlc3R1cmVSZXF1
aXJlZEZvckxvYWQoKSAmJiBtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JLX0VNUFRZICYmICFmYXN0
R2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKG1fbmV0d29ya1N0
YXRlID09IE5FVFdPUktfRU1QVFkgJiYgIWZhc3RHZXRBdHRyaWJ1dGUoc3JjQXR0cikuaXNFbXB0
eSgpICYmIG1fbWVkaWFTZXNzaW9uLT5kYXRhTG9hZGluZ1Blcm1pdHRlZCgqdGhpcykpCiAjZWxz
ZQogICAgICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSAmJiAhZmFzdEdl
dEF0dHJpYnV0ZShzcmNBdHRyKS5pc0VtcHR5KCkpCiAjZW5kaWYKQEAgLTg5OSwyNCArODkwLDE0
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZCgpCiAgICAgUmVmPEhUTUxNZWRpYUVsZW1l
bnQ+IHByb3RlY3QoKnRoaXMpOyAvLyBsb2FkSW50ZXJuYWwgbWF5IHJlc3VsdCBpbiBhICdiZWZv
cmVsb2FkJyBldmVudCwgd2hpY2ggY2FuIG1ha2UgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCiAg
ICAgCiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bG9hZCgpIik7Ci0gICAgCi0g
ICAgaWYgKHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JMb2FkKCkgJiYgIVNjcmlwdENvbnRyb2xsZXI6
OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQorCisgICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+ZGF0
YUxvYWRpbmdQZXJtaXR0ZWQoKnRoaXMpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9s
b2FkSW5pdGlhdGVkQnlVc2VyR2VzdHVyZSA9IFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdV
c2VyR2VzdHVyZSgpOwotICAgIGlmIChtX2xvYWRJbml0aWF0ZWRCeVVzZXJHZXN0dXJlKQorICAg
IGlmIChTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKICAgICAgICAg
cmVtb3ZlQmVoYXZpb3JzUmVzdHJpY3Rpb25zQWZ0ZXJGaXJzdFVzZXJHZXN0dXJlKCk7CisKICAg
ICBwcmVwYXJlRm9yTG9hZCgpOwogICAgIGxvYWRJbnRlcm5hbCgpOwotCi0jaWYgUExBVEZPUk0o
SU9TKQotICAgIC8vIFVubGVzcyB0aGlzIG1ldGhvZCB3YXMgY2FsbGVkIGRpcmVjdGx5IGJ5IHRo
ZSB1c2VyIG9yIHRoZSBhcHBsaWNhdGlvbiBhbGxvd3MgYW55IHNjcmlwdCB0byB0cmlnZ2VyIHBs
YXliYWNrLAotICAgIC8vIHJldHVybiBub3cgYmVjYXVzZSBwcmVwYXJlVG9QbGF5KCkgdGVsbHMg
dGhlIG1lZGlhIGVuZ2luZSB0byBzdGFydCBsb2FkaW5nIGRhdGEgYXMgc29vbiBhcyB0aGUgbW92
aWUgdmFsaWRhdGVzLgotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCkuc2V0dGlu
Z3MoKTsKLSAgICBpZiAoIW1fbG9hZEluaXRpYXRlZEJ5VXNlckdlc3R1cmUgJiYgKCFzZXR0aW5n
cyB8fCBzZXR0aW5ncy0+bWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSkpCi0gICAg
ICAgIHJldHVybjsKLSNlbmRpZgotCiAgICAgcHJlcGFyZVRvUGxheSgpOwogfQogCkBAIC0xMDIy
LDggKzEwMDMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCgpCiAgICAg
QVNTRVJUKCFOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OmlzRXZlbnREaXNwYXRjaEZvcmJpZGRl
bigpKTsKIAogICAgIC8vIElmIHdlIGNhbid0IHN0YXJ0IGEgbG9hZCByaWdodCBhd2F5LCBzdGFy
dCBpdCBsYXRlci4KLSAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7Ci0gICAgaWYg
KHBhZ2VDb25zZW50UmVxdWlyZWRGb3JMb2FkKCkgJiYgcGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRN
ZWRpYSgpKSB7CisgICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+cGFnZUFsbG93c0RhdGFMb2FkaW5n
KCp0aGlzKSkgewogICAgICAgICBzZXRTaG91bGREZWxheUxvYWRFdmVudChmYWxzZSk7CiAgICAg
ICAgIGlmIChtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTEwMzYsOCArMTAxNiw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVy
bmFsKCkKIAogICAgIC8vIE9uY2UgdGhlIHBhZ2UgaGFzIGFsbG93ZWQgYW4gZWxlbWVudCB0byBs
b2FkIG1lZGlhLCBpdCBpcyBmcmVlIHRvIGxvYWQgYXQgd2lsbC4gVGhpcyBhbGxvd3MgYSAKICAg
ICAvLyBwbGF5bGlzdCB0aGF0IHN0YXJ0cyBpbiBhIGZvcmVncm91bmQgdGFiIHRvIGNvbnRpbnVl
IGF1dG9tYXRpY2FsbHkgaWYgdGhlIHRhYiBpcyBzdWJzZXF1ZW50bHkgCi0gICAgLy8gcHV0IGlu
IHRoZSB0aGUgYmFja2dyb3VuZC4KLSAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVp
cmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhUmVzdHJpY3Rpb24pOworICAgIC8vIHB1dCBpbnRvIHRo
ZSBiYWNrZ3JvdW5kLgorICAgIG1fbWVkaWFTZXNzaW9uLT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0
aW9uKE1lZGlhU2Vzc2lvbjo6UmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWEpOwogCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCkBAIC0xMjEz
LDcgKzExOTMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25zCiAK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGlmIChNZWRpYVN0cmVhbVJlZ2lzdHJ5Ojpy
ZWdpc3RyeSgpLmxvb2t1cCh1cmwuc3RyaW5nKCkpKQotICAgICAgICByZW1vdmVCZWhhdmlvclJl
c3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlvbik7Cisg
ICAgICAgIG1fbWVkaWFTZXNzaW9uLT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhU2Vz
c2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5nZSk7CiAjZW5kaWYKIAogICAgIGlm
IChtX3NlbmRQcm9ncmVzc0V2ZW50cykgCkBAIC0yMDY0LDcgKzIwNDQsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoTWVkCiAgICAgICAgIGlmIChpc1BvdGVudGlhbGx5
UGxheWluZyAmJiBvbGRTdGF0ZSA8PSBIQVZFX0NVUlJFTlRfREFUQSkKICAgICAgICAgICAgIHNj
aGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBsYXlpbmdFdmVudCk7CiAKLSAgICAgICAgaWYgKG1f
YXV0b3BsYXlpbmcgJiYgbV9wYXVzZWQgJiYgYXV0b3BsYXkoKSAmJiAhZG9jdW1lbnQoKS5pc1Nh
bmRib3hlZChTYW5kYm94QXV0b21hdGljRmVhdHVyZXMpICYmICF1c2VyR2VzdHVyZVJlcXVpcmVk
Rm9yUmF0ZUNoYW5nZSgpKSB7CisgICAgICAgIGlmIChtX2F1dG9wbGF5aW5nICYmIG1fcGF1c2Vk
ICYmIGF1dG9wbGF5KCkgJiYgIWRvY3VtZW50KCkuaXNTYW5kYm94ZWQoU2FuZGJveEF1dG9tYXRp
Y0ZlYXR1cmVzKSAmJiBtX21lZGlhU2Vzc2lvbi0+cGxheWJhY2tQZXJtaXR0ZWQoKnRoaXMpKSB7
CiAgICAgICAgICAgICBtX3BhdXNlZCA9IGZhbHNlOwogICAgICAgICAgICAgaW52YWxpZGF0ZUNh
Y2hlZFRpbWUoKTsKICAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBsYXlF
dmVudCk7CkBAIC0yNjE2LDcgKzI1OTYsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmF1dG9w
bGF5KCkgY29uc3QKICAgICAvLyBsaWZ0ZWQgdGhyb3VnaCBTZXR0aW5ncywgb3Igb25jZSB0aGUg
dXNlciBleHBsaWN0bHkgY2FsbHMgbG9hZCgpIG9yIHBsYXkoKQogICAgIC8vIGJlY2F1c2UgdGhl
eSBoYXZlIE9LJ2VkIHVzIGxvYWRpbmcgZGF0YS4gVGhpcyBhbGxvd3MgcGxheWJhY2sgdG8gY29u
dGludWUgaWYKICAgICAvLyB0aGUgVVJMIGlzIGNoYW5nZWQgd2hpbGUgdGhlIG1vdmllIGlzIHBs
YXlpbmcuCi0gICAgaWYgKHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JSYXRlQ2hhbmdlKCkgfHwgdXNl
ckdlc3R1cmVSZXF1aXJlZEZvckxvYWQoKSkKKyAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5wbGF5
YmFja1Blcm1pdHRlZCgqdGhpcykgfHwgIW1fbWVkaWFTZXNzaW9uLT5kYXRhTG9hZGluZ1Blcm1p
dHRlZCgqdGhpcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCkBAIC0yNjUxLDE1
ICsyNjMxLDE2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheSgpCiB7CiAgICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cGxheSgpIik7CiAKLSAgICBpZiAodXNlckdlc3R1cmVS
ZXF1aXJlZEZvclJhdGVDaGFuZ2UoKSAmJiAhU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKCkpCisgICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+cGxheWJhY2tQZXJtaXR0ZWQo
KnRoaXMpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKFNjcmlwdENvbnRyb2xsZXI6OnByb2Nl
c3NpbmdVc2VyR2VzdHVyZSgpKQogICAgICAgICByZW1vdmVCZWhhdmlvcnNSZXN0cmljdGlvbnNB
ZnRlckZpcnN0VXNlckdlc3R1cmUoKTsKIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICB1c2VyUmVx
dWVzdHNNZWRpYUxvYWRpbmcoKTsKLSNlbmRpZgotCisgICAgaWYgKG1fbWVkaWFTZXNzaW9uLT5z
dGF0ZSgpID09IE1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQpIHsKKyAgICAgICAgbV9yZXN1bWVQ
bGF5YmFja0FmdGVySW50ZXJydXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKICAgICBwbGF5SW50ZXJuYWwoKTsKIH0KIApAQCAtMjY5OSw5ICsyNjgwLDE0IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2UoKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRp
YUVsZW1lbnQ6OnBhdXNlKCkiKTsKIAotICAgIGlmICh1c2VyR2VzdHVyZVJlcXVpcmVkRm9yUmF0
ZUNoYW5nZSgpICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkK
KyAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5wbGF5YmFja1Blcm1pdHRlZCgqdGhpcykpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBNZWRpYVNl
c3Npb246OkludGVycnVwdGVkKSB7CisgICAgICAgIG1fcmVzdW1lUGxheWJhY2tBZnRlckludGVy
cnVwdGlvbiA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIHBhdXNl
SW50ZXJuYWwoKTsKIH0KIApAQCAtMjcxNSw3ICsyNzAxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpwYXVzZUludGVybmFsKCkKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIC8vIFVubGVz
cyB0aGUgcmVzdHJpY3Rpb24gb24gbWVkaWEgcmVxdWlyaW5nIHVzZXIgYWN0aW9uIGhhcyBiZWVu
IGxpZnRlZAogICAgICAgICAvLyBkb24ndCB0cmlnZ2VyIGxvYWRpbmcgaWYgYSBzY3JpcHQgY2Fs
bHMgcGF1c2UoKS4KLSAgICAgICAgaWYgKHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JSYXRlQ2hhbmdl
KCkpCisgICAgICAgIGlmICghbV9tZWRpYVNlc3Npb24tPnBsYXliYWNrUGVybWl0dGVkKCp0aGlz
KSkKICAgICAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgICAgICBzY2hlZHVsZURlbGF5ZWRB
Y3Rpb24oTG9hZE1lZGlhUmVzb3VyY2UpOwpAQCAtNDEyMSwxMiArNDEwNywyOCBAQCBib29sIEhU
TUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluCiAgICAgLy8gd2hlbiBpdCByYW4gb3V0
IG9mIGJ1ZmZlcmVkIGRhdGEuIEEgbW92aWUgaXMgdGhpcyBzdGF0ZSBpcyAicG90ZW50aWFsbHkg
cGxheWluZyIsIG1vZHVsbyB0aGUKICAgICAvLyBjaGVja3MgaW4gY291bGRQbGF5SWZFbm91Z2hE
YXRhKCkuCiAgICAgYm9vbCBwYXVzZWRUb0J1ZmZlciA9IG1fcmVhZHlTdGF0ZU1heGltdW0gPj0g
SEFWRV9GVVRVUkVfREFUQSAmJiBtX3JlYWR5U3RhdGUgPCBIQVZFX0ZVVFVSRV9EQVRBOwotICAg
IHJldHVybiAocGF1c2VkVG9CdWZmZXIgfHwgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RB
VEEpICYmIGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpICYmICFpc0Jsb2NrZWRPbk1lZGlhQ29udHJv
bGxlcigpOworICAgIAorICAgIGlmICghKHBhdXNlZFRvQnVmZmVyIHx8IG1fcmVhZHlTdGF0ZSA+
PSBIQVZFX0ZVVFVSRV9EQVRBKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpICYmICFpc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigp
OwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNvdWxkUGxheUlmRW5vdWdoRGF0YSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuICFwYXVzZWQoKSAmJiAhZW5kZWRQbGF5YmFjaygpICYmICFzdG9w
cGVkRHVlVG9FcnJvcnMoKSAmJiAhcGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCk7CisgICAgaWYg
KHBhdXNlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZW5kZWRQbGF5YmFj
aygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3RvcHBlZER1ZVRvRXJyb3Jz
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChwYXVzZWRGb3JVc2VySW50ZXJh
Y3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6ZW5kZWRQbGF5YmFjaygpIGNvbnN0CkBAIC00MTcwLDcg
KzQxNzIsOSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnN0b3BwZWREdWVUb0Vycm9yCiAKIGJv
b2wgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCkgY29uc3QKIHsK
LS8vICAgIHJldHVybiAhcGF1c2VkKCkgJiYgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RB
VEEgJiYgW1VBIHJlcXVpcmVzIGEgZGVjaXRpb25zIGZyb20gdGhlIHVzZXJdCisgICAgaWYgKG1f
bWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IE1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQpCisgICAg
ICAgIHJldHVybiB0cnVlOworCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC00NDQ0LDcgKzQ0
NDgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQoUmVhc29uRm9yCiAgICAgewog
ICAgICAgICBjYXNlIERvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlOgogICAgICAgICAgICAgc3Rv
cCgpOwotICAgICAgICAgICAgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlUGFnZUNvbnNl
bnRUb1Jlc3VtZU1lZGlhUmVzdHJpY3Rpb24pOworICAgICAgICAgICAgbV9tZWRpYVNlc3Npb24t
PmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpSZXF1aXJlUGFnZUNvbnNlbnRU
b1Jlc3VtZU1lZGlhKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERvY3VtZW50
V2lsbEJlUGF1c2VkOgogICAgICAgICBjYXNlIEphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZDoKQEAg
LTQ0NjEsMTMgKzQ0NjUsMTIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUoKQogCiAg
ICAgbV9pbkFjdGl2ZURvY3VtZW50ID0gdHJ1ZTsKIAotICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVu
dCgpLnBhZ2UoKTsKLSAgICBpZiAocGFnZUNvbnNlbnRSZXF1aXJlZEZvclJlc3VtZSgpICYmIHBh
Z2UgJiYgIXBhZ2UtPmNhblN0YXJ0TWVkaWEoKSkKKyAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5w
YWdlQWxsb3dzUGxheWJhY2tBZnRlclJlc3VtaW5nKCp0aGlzKSkKICAgICAgICAgZG9jdW1lbnQo
KS5hZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhpcyk7CiAgICAgZWxzZQogICAgICAgICBzZXRQ
YXVzZWRJbnRlcm5hbChmYWxzZSk7CiAKLSAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFJl
cXVpcmVQYWdlQ29uc2VudFRvUmVzdW1lTWVkaWFSZXN0cmljdGlvbik7CisgICAgbV9tZWRpYVNl
c3Npb24tPnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpSZXF1aXJlUGFn
ZUNvbnNlbnRUb1Jlc3VtZU1lZGlhKTsKIAogICAgIGlmIChtX2Vycm9yICYmIG1fZXJyb3ItPmNv
ZGUoKSA9PSBNZWRpYUVycm9yOjpNRURJQV9FUlJfQUJPUlRFRCkgewogICAgICAgICAvLyBSZXN0
YXJ0IHRoZSBsb2FkIGlmIGl0IHdhcyBhYm9ydGVkIGluIHRoZSBtaWRkbGUgYnkgbW92aW5nIHRo
ZSBkb2N1bWVudCB0byB0aGUgcGFnZSBjYWNoZS4KQEAgLTQ1NTcsNyArNDU2MCw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6ZGVsaXZlck5vdGlmaWNhdGkKIHsKICAgICBpZiAobm90aWZpY2F0
aW9uID09IE1lZGlhUGxheWVyTm90aWZpY2F0aW9uUGxheVBhdXNlQnV0dG9uUHJlc3NlZCkgewog
I2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgdXNlclJlcXVlc3RzTWVkaWFMb2FkaW5nKCk7Cisg
ICAgICAgIHJlbW92ZUJlaGF2aW9yc1Jlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZSgp
OwogI2VuZGlmCiAgICAgICAgIHRvZ2dsZVBsYXlTdGF0ZSgpOwogICAgICAgICByZXR1cm47CkBA
IC00NzM4LDcgKzQ3NDEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNob3dQbGF5
YmFjCiAgICAgaWYgKCFtX3BsYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHVzZXJH
ZXN0dXJlUmVxdWlyZWRUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tlcigpICYmICFTY3JpcHRDb250
cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKKyAgICBpZiAoIW1fbWVkaWFTZXNzaW9u
LT5zaG93aW5nUGxheWJhY2tUYXJnZXRQaWNrZXJQZXJtaXR0ZWQoKnRoaXMpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLT5tZWRpYVBsYXliYWNrQWxs
b3dzQWlyUGxheSgpKQpAQCAtNTI5OCwxNiArNTMwMSw2IEBAIEF1ZGlvU291cmNlUHJvdmlkZXIq
IEhUTUxNZWRpYUVsZW1lbnQ6OmEKIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQotdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VyUmVxdWVzdHNNZWRpYUxvYWRpbmcoKQotewotICAgIC8v
IFRoZSB1c2VyIGlzIHJlcXVlc3RpbmcgZGF0YSBsb2FkaW5nIGFuZC9vciBwbGF5YmFjaywgc28g
cmVtb3ZlIHRoZSAib25seSBjaGFuZ2UgcGxheWJhY2sgaW4gcmVzcG9uc2UKLSAgICAvLyB0byBh
IHVzZXIgZ2VzdHVyZSIgcmVzdHJpY3Rpb24gb24gdGhpcyBtb3ZpZS4KLSAgICBtX3VzZXJTdGFy
dGVkUGxheWJhY2sgPSB0cnVlOwotICAgIG1fcmVzdHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7
Ci19Ci0jZW5kaWYKLQogY29uc3QgU3RyaW5nJiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUdyb3Vw
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9tZWRpYUdyb3VwOwpAQCAtNTUxNiw3ICs1NTA5LDcg
QEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcklzRnVsbAogCiBib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVySXNGdWxsc2NyZWVuUGVybWl0dGVkKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gIXVzZXJHZXN0dXJlUmVxdWlyZWRGb3JGdWxsc2NyZWVuKCkgfHwgU2NyaXB0
Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CisgICAgcmV0dXJuIG1fbWVkaWFT
ZXNzaW9uLT5mdWxsc2NyZWVuUGVybWl0dGVkKCp0aGlzKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllcklzVmlkZW8oKSBjb25zdApAQCAtNTU3OSw3ICs1NTcyLDEyIEBA
IENhY2hlZFJlc291cmNlTG9hZGVyKiBIVE1MTWVkaWFFbGVtZW50OjoKIAogdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpyZW1vdmVCZWhhdmlvcnNSZXN0cmljdGlvbnNBZnRlckZpcnN0VXNlckdlc3R1
cmUoKQogewotICAgIG1fcmVzdHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7CisgICAgbV9tZWRp
YVNlc3Npb24tPnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpSZXF1aXJl
VXNlckdlc3R1cmVGb3JMb2FkKTsKKyAgICBtX21lZGlhU2Vzc2lvbi0+cmVtb3ZlQmVoYXZpb3JS
ZXN0cmljdGlvbihNZWRpYVNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2Up
OworICAgIG1fbWVkaWFTZXNzaW9uLT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhU2Vz
c2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yRnVsbHNjcmVlbik7CisjaWYgRU5BQkxFKElPU19B
SVJQTEFZKQorICAgIG1fbWVkaWFTZXNzaW9uLT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKE1l
ZGlhU2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlVG9TaG93UGxheWJhY2tUYXJnZXRQaWNrZXIp
OworI2VuZGlmCiB9CiAKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKQEAgLTU3
MDIsMTUgKzU3MDAsMzQgQEAgdW5zaWduZWQgbG9uZyBsb25nIEhUTUxNZWRpYUVsZW1lbnQ6OmZp
bAogICAgIHJldHVybiAwOwogfQogCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCi1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpNZWRpYVR5cGUgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFUeXBlKCkgY29uc3QK
K01lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhVHlwZSgpIGNv
bnN0CiB7CiAgICAgaWYgKGhhc1RhZ05hbWUoSFRNTE5hbWVzOjp2aWRlb1RhZykpCi0gICAgICAg
IHJldHVybiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpWaWRlbzsKKyAgICAgICAgcmV0dXJuIE1lZGlh
U2Vzc2lvbjo6VmlkZW87CiAKLSAgICByZXR1cm4gTWVkaWFTZXNzaW9uTWFuYWdlcjo6QXVkaW87
CisgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6QXVkaW87Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6YmVnaW5JbnRlcnJ1cHRpb24oKQoreworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVs
ZW1lbnQ6OmJlZ2FuQXVkaW9JbnRlcnJ1cHRpb24iKTsKKyAgICAKKyAgICBtX3Jlc3VtZVBsYXli
YWNrQWZ0ZXJJbnRlcnJ1cHRpb24gPSAhcGF1c2VkKCk7CisgICAgaWYgKG1fcmVzdW1lUGxheWJh
Y2tBZnRlckludGVycnVwdGlvbikKKyAgICAgICAgcGF1c2UoKTsKK30KKwordm9pZCBIVE1MTWVk
aWFFbGVtZW50OjplbmRJbnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25G
bGFncyBmbGFncykKK3sKKyAgICBib29sIHNob3VsZFJlc3VtZVBsYXliYWNrID0gbV9yZXN1bWVQ
bGF5YmFja0FmdGVySW50ZXJydXB0aW9uOworICAgIG1fcmVzdW1lUGxheWJhY2tBZnRlckludGVy
cnVwdGlvbiA9IGZhbHNlOworCisgICAgaWYgKCFmbGFncyAmIE1lZGlhU2Vzc2lvbjo6TWF5UmVz
dW1lUGxheWluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHNob3VsZFJlc3VtZVBsYXli
YWNrKQorICAgICAgICBwbGF5KCk7CiB9Ci0jZW5kaWYKIAogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMTYxMzU4KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZWRp
YUNvbnRyb2xsZXJJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1
ZGUgIk1lZGlhU2Vzc2lvbi5oIgogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8p
CiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCkBAIC01Myw5ICs1NCw2IEBACiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKICNlbmRpZgogCi0jaWYgVVNFKEFVRElPX1NFU1NJT04p
Ci0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgotI2VuZGlmCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMTA1LDcgKzEwMyw3IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQKICNl
bHNlCiAgICAgOiBwdWJsaWMgSFRNTEVsZW1lbnQKICNlbmRpZgotICAgICwgcHJpdmF0ZSBNZWRp
YVBsYXllckNsaWVudCwgcHVibGljIE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50LCBwcml2
YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGlj
IE1lZGlhQ29udHJvbGxlckludGVyZmFjZQorICAgICwgcHJpdmF0ZSBNZWRpYVBsYXllckNsaWVu
dCwgcHVibGljIE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIE1lZGlhQ29udHJv
bGxlckludGVyZmFjZSAsIHB1YmxpYyBNZWRpYVNlc3Npb25DbGllbnQKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAgICAgLCBwcml2YXRlIEF1ZGlvVHJhY2tDbGllbnQKICAgICAsIHByaXZhdGUg
VGV4dFRyYWNrQ2xpZW50CkBAIC0xMTQsOSArMTEyLDYgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVu
dAogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCiAgICAgLCBwdWJsaWMgUGxhdGZv
cm1UZXh0VHJhY2tNZW51Q2xpZW50CiAjZW5kaWYKLSNpZiBVU0UoQVVESU9fU0VTU0lPTikKLSAg
ICAsIHB1YmxpYyBNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50Ci0jZW5kaWYKIHsKIHB1YmxpYzoK
ICAgICBNZWRpYVBsYXllciogcGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXIuZ2V0KCk7
IH0KQEAgLTQ0NywzMiArNDQyLDYgQEAgcHJvdGVjdGVkOgogICAgIAogICAgIHZpcnR1YWwgYm9v
bCBpc01lZGlhRWxlbWVudCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAotICAg
IC8vIFJlc3RyaWN0aW9ucyB0byBjaGFuZ2UgZGVmYXVsdCBiZWhhdmlvcnMuCi0gICAgZW51bSBC
ZWhhdmlvclJlc3RyaWN0aW9uRmxhZ3MgewotICAgICAgICBOb1Jlc3RyaWN0aW9ucyA9IDAsCi0g
ICAgICAgIFJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWRSZXN0cmljdGlvbiA9IDEgPDwgMCwKLSAg
ICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5nZVJlc3RyaWN0aW9uID0gMSA8PCAx
LAotICAgICAgICBSZXF1aXJlVXNlckdlc3R1cmVGb3JGdWxsc2NyZWVuUmVzdHJpY3Rpb24gPSAx
IDw8IDIsCi0gICAgICAgIFJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhUmVzdHJpY3Rpb24g
PSAxIDw8IDMsCi0gICAgICAgIFJlcXVpcmVQYWdlQ29uc2VudFRvUmVzdW1lTWVkaWFSZXN0cmlj
dGlvbiA9IDEgPDwgNCwKLSNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCi0gICAgICAgIFJlcXVpcmVV
c2VyR2VzdHVyZVRvU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyID0gMSA8PCA1LAotI2VuZGlmCi0g
ICAgfTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIEJlaGF2aW9yUmVzdHJpY3Rpb25zOwotICAgIAot
ICAgIGJvb2wgdXNlckdlc3R1cmVSZXF1aXJlZEZvckxvYWQoKSBjb25zdCB7IHJldHVybiBtX3Jl
c3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWRSZXN0cmljdGlvbjsgfQotICAg
IGJvb2wgdXNlckdlc3R1cmVSZXF1aXJlZEZvclJhdGVDaGFuZ2UoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlv
bjsgfQotICAgIGJvb2wgdXNlckdlc3R1cmVSZXF1aXJlZEZvckZ1bGxzY3JlZW4oKSBjb25zdCB7
IHJldHVybiBtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW5S
ZXN0cmljdGlvbjsgfQotICAgIGJvb2wgcGFnZUNvbnNlbnRSZXF1aXJlZEZvckxvYWQoKSBjb25z
dCB7IHJldHVybiBtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlh
UmVzdHJpY3Rpb247IH0KLSAgICBib29sIHBhZ2VDb25zZW50UmVxdWlyZWRGb3JSZXN1bWUoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVQYWdlQ29uc2VudFRvUmVzdW1l
TWVkaWFSZXN0cmljdGlvbjsgfQotI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKLSAgICBib29sIHVz
ZXJHZXN0dXJlUmVxdWlyZWRUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tlcigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlVG9TaG93UGxheWJhY2tUYXJn
ZXRQaWNrZXI7IH0KLSNlbmRpZgotICAgIAotICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlv
bihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyB8PSBy
ZXN0cmljdGlvbjsgfQotICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlv
clJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVzdHJpY3Rp
b247IH0KLQogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBib29sIGlnbm9yZVRyYWNrRGlz
cGxheVVwZGF0ZVJlcXVlc3RzKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVUcmFja0Rpc3BsYXlV
cGRhdGUgPiAwIHx8ICFtX3RleHRUcmFja3MgfHwgIW1fY3VlVHJlZS5zaXplKCk7IH0KICAgICB2
b2lkIGJlZ2luSWdub3JpbmdUcmFja0Rpc3BsYXlVcGRhdGVSZXF1ZXN0cygpOwpAQCAtNDgxLDYg
KzQ1MCw4IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgT1ZFUlJJREU7
CiAKKyAgICBNZWRpYVNlc3Npb24mIG1lZGlhU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuICptX21l
ZGlhU2Vzc2lvbjsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXIoKTsK
IApAQCAtNjUyLDcgKzYyMyw2IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAg
Ym9vbCBwYXJzZU1lZGlhUGxheWVyQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmKTsKLSAgICB2b2lkIHVzZXJSZXF1ZXN0c01lZGlhTG9hZGluZygpOwog
I2VuZGlmCiAKICAgICAvLyBQYXVzZXMgcGxheWJhY2sgd2l0aG91dCBjaGFuZ2luZyBhbnkgc3Rh
dGVzIG9yIGdlbmVyYXRpbmcgZXZlbnRzCkBAIC02OTUsOSArNjY1LDEwIEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBlbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQoKTsKICNlbmRpZgogCi0j
aWYgVVNFKEFVRElPX1NFU1NJT04pCi0gICAgdmlydHVhbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpN
ZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3QgT1ZFUlJJREU7Ci0jZW5kaWYKKyAgICB2aXJ0dWFs
IE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IE9WRVJSSURFOworCisg
ICAgdmlydHVhbCB2b2lkIGJlZ2luSW50ZXJydXB0aW9uKCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGVuZEludGVycnVwdGlvbihNZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdz
KSBPVkVSUklERTsKIAogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fbG9hZFRpbWVyOwog
ICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fcHJvZ3Jlc3NFdmVudFRpbWVyOwpAQCAtNzM5
LDggKzcxMCw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdpZGdldD4gbV9wcm94eVdpZGdldDsK
ICNlbmRpZgogCi0gICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgbV9yZXN0cmljdGlvbnM7Ci0gICAg
CiAgICAgTWVkaWFQbGF5ZXI6OlByZWxvYWQgbV9wcmVsb2FkOwogCiAgICAgRGlzcGxheU1vZGUg
bV9kaXNwbGF5TW9kZTsKQEAgLTc5NCw3ICs3NjMsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9u
ZWVkV2lkZ2V0VXBkYXRlIDogMTsKICNlbmRpZgogCi0gICAgYm9vbCBtX2xvYWRJbml0aWF0ZWRC
eVVzZXJHZXN0dXJlIDogMTsKICAgICBib29sIG1fY29tcGxldGVseUxvYWRlZCA6IDE7CiAgICAg
Ym9vbCBtX2hhdmVQcmVwYXJlZFRvUGxheSA6IDE7CiAgICAgYm9vbCBtX3BhcnNpbmdJblByb2dy
ZXNzIDogMTsKQEAgLTgwNCw5ICs3NzIsMTAgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKElP
UykKICAgICBib29sIG1fcmVxdWVzdGluZ1BsYXkgOiAxOwotICAgIGJvb2wgbV91c2VyU3RhcnRl
ZFBsYXliYWNrIDogMTsKICNlbmRpZgogCisgICAgYm9vbCBtX3Jlc3VtZVBsYXliYWNrQWZ0ZXJJ
bnRlcnJ1cHRpb24gOiAxOworCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGJvb2wgbV90
cmFja3NBcmVSZWFkeSA6IDE7CiAgICAgYm9vbCBtX2hhdmVWaXNpYmxlVGV4dFRyYWNrIDogMTsK
QEAgLTg1MywxMCArODIyLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UGxhdGZvcm1UZXh0VHJh
Y2tNZW51SW50ZXJmYWNlPiBtX3BsYXRmb3JtTWVudTsKICNlbmRpZgogCi0jaWYgVVNFKEFVRElP
X1NFU1NJT04pCi0gICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbj4g
bV9tZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW47Ci0jZW5kaWYKLQorICAgIHN0ZDo6dW5pcXVlX3B0
cjxNZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNzaW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdl
QWN0aXZpdHlBc3NlcnRpb25Ub2tlbj4gbV9hY3Rpdml0eVRva2VuOwogICAgIHNpemVfdCBtX3Jl
cG9ydGVkRXh0cmFNZW1vcnlDb3N0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OSw3ICsyODksNyBAQCB2
b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdEVudGVyRnVsbHNjCiAKICAgICAvLyBHZW5lcmF0
ZSBhbiBleGNlcHRpb24gaWYgdGhpcyBpc24ndCBjYWxsZWQgaW4gcmVzcG9uc2UgdG8gYSB1c2Vy
IGdlc3R1cmUsIG9yIGlmIHRoZSAKICAgICAvLyBlbGVtZW50IGRvZXMgbm90IHN1cHBvcnQgZnVs
bHNjcmVlbi4KLSAgICBpZiAoKHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JGdWxsc2NyZWVuKCkgJiYg
IVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB8fCAhc3VwcG9ydHNG
dWxsc2NyZWVuKCkpIHsKKyAgICBpZiAoIW1lZGlhU2Vzc2lvbigpLmZ1bGxzY3JlZW5QZXJtaXR0
ZWQoKnRoaXMpIHx8ICFzdXBwb3J0c0Z1bGxzY3JlZW4oKSkgewogICAgICAgICBlYyA9IElOVkFM
SURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQu
aCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5o
IgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlxdWVfcHRyPE1lZGlhU2Vzc2lvbj4gTWVkaWFT
ZXNzaW9uOjpjcmVhdGUoTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQpCit7CisgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFTZXNzaW9uPihjbGllbnQpOworfQorCitNZWRpYVNlc3Np
b246Ok1lZGlhU2Vzc2lvbihNZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKKyAgICA6IG1fY2xp
ZW50KGNsaWVudCkKKyAgICAsIG1fcmVzdHJpY3Rpb25zKE5vUmVzdHJpY3Rpb25zKQorICAgICwg
bV9zdGF0ZShSdW5uaW5nKQoreworICAgIG1fdHlwZSA9IG1fY2xpZW50Lm1lZGlhVHlwZSgpOwor
ICAgIEFTU0VSVChtX3R5cGUgPj0gTm9uZSAmJiBtX3R5cGUgPD0gV2ViQXVkaW8pOworICAgIE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRTZXNzaW9uKCp0aGlzKTsKK30K
KworTWVkaWFTZXNzaW9uOjp+TWVkaWFTZXNzaW9uKCkKK3sKKyAgICBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVtb3ZlU2Vzc2lvbigqdGhpcyk7Cit9CisKK3ZvaWQgTWVk
aWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbigpCit7CisgICAgbV9zdGF0ZSA9IEludGVycnVw
dGVkOworICAgIG1fY2xpZW50LmJlZ2luSW50ZXJydXB0aW9uKCk7Cit9CisKK3ZvaWQgTWVkaWFT
ZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24oRW5kSW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MpCit7Cisg
ICAgbV9zdGF0ZSA9IFJ1bm5pbmc7CisgICAgbV9jbGllbnQuZW5kSW50ZXJydXB0aW9uKGZsYWdz
KTsKK30KKworYm9vbCBNZWRpYVNlc3Npb246OnBsYXliYWNrUGVybWl0dGVkKGNvbnN0IEhUTUxN
ZWRpYUVsZW1lbnQmKSBjb25zdAoreworICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVV
c2VyR2VzdHVyZUZvclJhdGVDaGFuZ2UgJiYgIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdV
c2VyR2VzdHVyZSgpKSB7CisgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbjo6cGxheWJh
Y2tQZXJtaXR0ZWQgLSByZXR1cm5pbmcgRkFMU0UiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIE1lZGlhU2Vzc2lvbjo6ZGF0YUxv
YWRpbmdQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0Cit7CisgICAgaWYg
KG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9hZCAmJiAhU2NyaXB0Q29u
dHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAi
TWVkaWFTZXNzaW9uOjpkYXRhTG9hZGluZ1Blcm1pdHRlZCAtIHJldHVybmluZyBGQUxTRSIpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgTWVkaWFTZXNzaW9uOjpmdWxsc2NyZWVuUGVybWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1l
bnQmKSBjb25zdAoreworICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVy
ZUZvckZ1bGxzY3JlZW4gJiYgIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSgpKSB7CisgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbjo6ZnVsbHNjcmVlblBlcm1p
dHRlZCAtIHJldHVybmluZyBGQUxTRSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFTZXNzaW9uOjpwYWdlQWxsb3dzRGF0
YUxvYWRpbmcoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkgY29uc3QKK3sKKyAgICBQ
YWdlKiBwYWdlID0gZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKTsKKyAgICBpZiAobV9yZXN0cmlj
dGlvbnMgJiBSZXF1aXJlUGFnZUNvbnNlbnRUb0xvYWRNZWRpYSAmJiBwYWdlICYmICFwYWdlLT5j
YW5TdGFydE1lZGlhKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uOjpwYWdl
QWxsb3dzRGF0YUxvYWRpbmcgLSByZXR1cm5pbmcgRkFMU0UiKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNZWRpYVNlc3Np
b246OnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcoY29uc3QgSFRNTE1lZGlhRWxlbWVu
dCYgZWxlbWVudCkgY29uc3QKK3sKKyAgICBQYWdlKiBwYWdlID0gZWxlbWVudC5kb2N1bWVudCgp
LnBhZ2UoKTsKKyAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlUGFnZUNvbnNlbnRUb1Jl
c3VtZU1lZGlhICYmIHBhZ2UgJiYgIXBhZ2UtPmNhblN0YXJ0TWVkaWEoKSkgeworICAgICAgICBM
T0coTWVkaWEsICJNZWRpYVNlc3Npb246OnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcg
LSByZXR1cm5pbmcgRkFMU0UiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKK2Jvb2wgTWVk
aWFTZXNzaW9uOjpzaG93aW5nUGxheWJhY2tUYXJnZXRQaWNrZXJQZXJtaXR0ZWQoY29uc3QgSFRN
TE1lZGlhRWxlbWVudCYpIGNvbnN0Cit7CisgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWly
ZVVzZXJHZXN0dXJlVG9TaG93UGxheWJhY2tUYXJnZXRQaWNrZXIgJiYgIVNjcmlwdENvbnRyb2xs
ZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7CisgICAgICAgIExPRyhNZWRpYSwgIk1lZGlh
U2Vzc2lvbjo6c2hvd2luZ1BsYXliYWNrVGFyZ2V0UGlja2VyUGVybWl0dGVkIC0gcmV0dXJuaW5n
IEZBTFNFIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJu
IHRydWU7Cit9CisjZW5kaWYKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vTWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vTWVkaWFTZXNzaW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFTZXNzaW9uX2gKKyNkZWZpbmUgTWVkaWFTZXNz
aW9uX2gKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIE1lZGlhU2Vzc2lvbkNsaWVudDsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7
CisKK2NsYXNzIE1lZGlhU2Vzc2lvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxNZWRpYVNlc3Npb24+IGNyZWF0ZShNZWRpYVNlc3Npb25DbGllbnQmKTsKKworICAgIE1l
ZGlhU2Vzc2lvbihNZWRpYVNlc3Npb25DbGllbnQmKTsKKyAgICB+TWVkaWFTZXNzaW9uKCk7CisK
KyAgICBlbnVtIE1lZGlhVHlwZSB7CisgICAgICAgIE5vbmUsCisgICAgICAgIFZpZGVvLAorICAg
ICAgICBBdWRpbywKKyAgICAgICAgV2ViQXVkaW8sCisgICAgfTsKKyAgICAKKyAgICBNZWRpYVR5
cGUgbWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAgICBlbnVtIFN0YXRl
IHsKKyAgICAgICAgUnVubmluZywKKyAgICAgICAgSW50ZXJydXB0ZWQsCisgICAgfTsKKyAgICBT
dGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICB2b2lkIHNldFN0YXRl
KFN0YXRlIHN0YXRlKSB7IG1fc3RhdGUgPSBzdGF0ZTsgfQorCisgICAgZW51bSBFbmRJbnRlcnJ1
cHRpb25GbGFncyB7CisgICAgICAgIE5vRmxhZ3MgPSAwLAorICAgICAgICBNYXlSZXN1bWVQbGF5
aW5nID0gMSA8PCAwLAorICAgIH07CisgICAgdm9pZCBiZWdpbkludGVycnVwdGlvbigpOworICAg
IHZvaWQgZW5kSW50ZXJydXB0aW9uKEVuZEludGVycnVwdGlvbkZsYWdzKTsKKworICAgIGJvb2wg
cGxheWJhY2tQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OworICAgIGJv
b2wgZGF0YUxvYWRpbmdQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0Owor
ICAgIGJvb2wgZnVsbHNjcmVlblBlcm1pdHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29u
c3Q7CisgICAgYm9vbCBwYWdlQWxsb3dzRGF0YUxvYWRpbmcoY29uc3QgSFRNTE1lZGlhRWxlbWVu
dCYpIGNvbnN0OworICAgIGJvb2wgcGFnZUFsbG93c1BsYXliYWNrQWZ0ZXJSZXN1bWluZyhjb25z
dCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CisjaWYgRU5BQkxFKElPU19BSVJQTEFZKQorICAg
IGJvb2wgc2hvd2luZ1BsYXliYWNrVGFyZ2V0UGlja2VyUGVybWl0dGVkKGNvbnN0IEhUTUxNZWRp
YUVsZW1lbnQmKSBjb25zdDsKKyNlbmRpZgorCisgICAgLy8gUmVzdHJpY3Rpb25zIHRvIG1vZGlm
eSBkZWZhdWx0IGJlaGF2aW9ycy4KKyAgICBlbnVtIEJlaGF2aW9yUmVzdHJpY3Rpb25GbGFncyB7
CisgICAgICAgIE5vUmVzdHJpY3Rpb25zID0gMCwKKyAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJl
Rm9yTG9hZCA9IDEgPDwgMCwKKyAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5n
ZSA9IDEgPDwgMSwKKyAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9yRnVsbHNjcmVlbiA9IDEg
PDwgMiwKKyAgICAgICAgUmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWEgPSAxIDw8IDMsCisg
ICAgICAgIFJlcXVpcmVQYWdlQ29uc2VudFRvUmVzdW1lTWVkaWEgPSAxIDw8IDQsCisjaWYgRU5B
QkxFKElPU19BSVJQTEFZKQorICAgICAgICBSZXF1aXJlVXNlckdlc3R1cmVUb1Nob3dQbGF5YmFj
a1RhcmdldFBpY2tlciA9IDEgPDwgNSwKKyNlbmRpZgorICAgIH07CisgICAgdHlwZWRlZiB1bnNp
Z25lZCBCZWhhdmlvclJlc3RyaWN0aW9uczsKKworICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmlj
dGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyB8
PSByZXN0cmljdGlvbjsgfQorICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihCZWhh
dmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVzdHJp
Y3Rpb247IH0KKworcHJpdmF0ZToKKyAgICBNZWRpYVNlc3Npb25DbGllbnQmIG1fY2xpZW50Owor
ICAgIE1lZGlhVHlwZSBtX3R5cGU7CisgICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgbV9yZXN0cmlj
dGlvbnM7CisgICAgU3RhdGUgbV9zdGF0ZTsKK307CisKK2NsYXNzIE1lZGlhU2Vzc2lvbkNsaWVu
dCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFTZXNzaW9uQ2xpZW50KTsKK3B1Ymxp
YzoKKyAgICBNZWRpYVNlc3Npb25DbGllbnQoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIE1lZGlh
U2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0ID0gMDsKKyAgICAKKyAgICB2aXJ0
dWFsIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZW5kSW50
ZXJydXB0aW9uKE1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MpIHsgfQorICAgIAor
cHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfk1lZGlhU2Vzc2lvbkNsaWVudCgpIHsgfQorfTsKKwor
fQorCisjZW5kaWYgLy8gTWVkaWFTZXNzaW9uX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAx
NjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMjUgKzI2LDEwIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogCi11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiTWVk
aWFTZXNzaW9uLmgiCiAKLQotc3RkOjp1bmlxdWVfcHRyPE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tl
bj4gTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOjpjcmVhdGUoTWVkaWFTZXNzaW9uTWFuYWdlckNs
aWVudCYgY2xpZW50KQotewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhU2Vzc2lv
bk1hbmFnZXJUb2tlbj4oY2xpZW50KTsKLX0KLQotTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOjpN
ZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4oTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xpZW50
KQotICAgIDogbV9jbGllbnQoY2xpZW50KQotewotICAgIG1fdHlwZSA9IG1fY2xpZW50Lm1lZGlh
VHlwZSgpOwotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRUb2tl
bigqdGhpcyk7Ci19Ci0KLU1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbjo6fk1lZGlhU2Vzc2lvbk1h
bmFnZXJUb2tlbigpCi17Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigp
LnJlbW92ZVRva2VuKCp0aGlzKTsKLX0KK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogTWVkaWFTZXNz
aW9uTWFuYWdlciYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpCiB7CkBAIC01
MywxNCArMzgsMTUgQEAgTWVkaWFTZXNzaW9uTWFuYWdlciYgTWVkaWFTZXNzaW9uTWFuYWdlcgog
fQogCiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZWRpYVNlc3Npb25NYW5hZ2VyKCkKKyAgICA6IG1f
aW50ZXJydXB0aW9ucygwKQogewogfQogCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmhhcyhN
ZWRpYVNlc3Npb25NYW5hZ2VyOjpNZWRpYVR5cGUgdHlwZSkgY29uc3QKK2Jvb2wgTWVkaWFTZXNz
aW9uTWFuYWdlcjo6aGFzKE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKHR5cGUgPj0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6Tm9uZSAmJiB0eXBlIDw9IE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OldlYkF1ZGlvKTsKKyAgICBBU1NFUlQodHlwZSA+PSBNZWRpYVNl
c3Npb246Ok5vbmUgJiYgdHlwZSA8PSBNZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKIAotICAgIGZv
ciAoYXV0byBpdCA9IG1fdG9rZW5zLmJlZ2luKCksIGVuZCA9IG1fdG9rZW5zLmVuZCgpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKKyAgICBmb3IgKGF1dG8gaXQgPSBtX3Nlc3Npb25zLmJlZ2luKCksIGVu
ZCA9IG1fc2Vzc2lvbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBpZiAoKCpp
dCktPm1lZGlhVHlwZSgpID09IHR5cGUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CkBAIC02OCwxMiArNTQsMTIgQEAgYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpoYXMoTWVkaWFT
ZXNzaQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW50IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNv
dW50KE1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1lZGlhVHlwZSB0eXBlKSBjb25zdAoraW50IE1lZGlh
U2Vzc2lvbk1hbmFnZXI6OmNvdW50KE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0
CiB7Ci0gICAgQVNTRVJUKHR5cGUgPj0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6Tm9uZSAmJiB0eXBl
IDw9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OldlYkF1ZGlvKTsKKyAgICBBU1NFUlQodHlwZSA+PSBN
ZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8PSBNZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKICAg
ICAKICAgICBpbnQgY291bnQgPSAwOwotICAgIGZvciAoYXV0byBpdCA9IG1fdG9rZW5zLmJlZ2lu
KCksIGVuZCA9IG1fdG9rZW5zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBmb3IgKGF1
dG8gaXQgPSBtX3Nlc3Npb25zLmJlZ2luKCksIGVuZCA9IG1fc2Vzc2lvbnMuZW5kKCk7IGl0ICE9
IGVuZDsgKytpdCkgewogICAgICAgICBpZiAoKCppdCktPm1lZGlhVHlwZSgpID09IHR5cGUpCiAg
ICAgICAgICAgICArK2NvdW50OwogICAgIH0KQEAgLTgxLDIwICs2Nyw0MCBAQCBpbnQgTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6Y291bnQoTWVkaWFTZXNzCiAgICAgcmV0dXJuIGNvdW50OwogfQogCi12
b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFRva2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tl
biYgdG9rZW4pCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmJlZ2luSW50ZXJydXB0aW9uKCkK
IHsKLSAgICBtX3Rva2Vucy5hcHBlbmQoJnRva2VuKTsKKyAgICBpZiAoKyttX2ludGVycnVwdGlv
bnMgPiAxKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8gaXQgPSBtX3Nlc3Npb25z
LmJlZ2luKCksIGVuZCA9IG1fc2Vzc2lvbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAg
ICAgKCppdCktPmJlZ2luSW50ZXJydXB0aW9uKCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6ZW5kSW50ZXJydXB0aW9uKE1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3Mg
ZmxhZ3MpCit7CisgICAgQVNTRVJUKG1faW50ZXJydXB0aW9ucyA+IDApOworICAgIGlmICgtLW1f
aW50ZXJydXB0aW9ucykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGZvciAoYXV0byBpdCA9
IG1fc2Vzc2lvbnMuYmVnaW4oKSwgZW5kID0gbV9zZXNzaW9ucy5lbmQoKTsgaXQgIT0gZW5kOyAr
K2l0KQorICAgICAgICAoKml0KS0+ZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKK30KKwordm9pZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRTZXNzaW9uKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKK3sK
KyAgICBtX3Nlc3Npb25zLmFwcGVuZCgmc2Vzc2lvbik7CisgICAgc2Vzc2lvbi5zZXRTdGF0ZSht
X2ludGVycnVwdGlvbnMgPyBNZWRpYVNlc3Npb246OkludGVycnVwdGVkIDogTWVkaWFTZXNzaW9u
OjpSdW5uaW5nKTsKICAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKIH0KIAotdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpyZW1vdmVUb2tlbihNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4mIHRva2Vu
KQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVTZXNzaW9uKE1lZGlhU2Vzc2lvbiYg
c2Vzc2lvbikKIHsKLSAgICBzaXplX3QgaW5kZXggPSBtX3Rva2Vucy5maW5kKCZ0b2tlbik7Cisg
ICAgc2l6ZV90IGluZGV4ID0gbV9zZXNzaW9ucy5maW5kKCZzZXNzaW9uKTsKICAgICBBU1NFUlQo
aW5kZXggIT0gbm90Rm91bmQpOwogICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV90b2tlbnMucmVtb3ZlKGluZGV4KTsKKyAgICBtX3Nlc3Npb25zLnJl
bW92ZShpbmRleCk7CiAgICAgdXBkYXRlU2Vzc2lvblN0YXRlKCk7CiB9CiAKQEAgLTEwMywzICsx
MDksNSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TCiB7CiB9CiAj
ZW5kaWYKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNz
aW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L01lZGlhU2Vzc2lvbk1hbmFnZXIuaAkocmV2aXNpb24gMTYxMzU4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2NCArMjYsMzcgQEAKICNpZm5kZWYgTWVkaWFTZXNzaW9uTWFuYWdlcl9oCiAjZGVmaW5l
IE1lZGlhU2Vzc2lvbk1hbmFnZXJfaAogCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNp
bmNsdWRlICJNZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNZWRpYVNlc3Np
b25NYW5hZ2VyVG9rZW47CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3MgTWVkaWFTZXNz
aW9uOwogCiBjbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
TWVkaWFTZXNzaW9uTWFuYWdlciYgc2hhcmVkTWFuYWdlcigpOwogCi0gICAgZW51bSBNZWRpYVR5
cGUgewotICAgICAgICBOb25lLAotICAgICAgICBWaWRlbywKLSAgICAgICAgQXVkaW8sCi0gICAg
ICAgIFdlYkF1ZGlvLAotICAgIH07CisgICAgYm9vbCBoYXMoTWVkaWFTZXNzaW9uOjpNZWRpYVR5
cGUpIGNvbnN0OworICAgIGludCBjb3VudChNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSkgY29uc3Q7
CiAKLSAgICBib29sIGhhcyhNZWRpYVR5cGUpIGNvbnN0OwotICAgIGludCBjb3VudChNZWRpYVR5
cGUpIGNvbnN0OworICAgIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oKTsKKyAgICB2b2lkIGVuZElu
dGVycnVwdGlvbihNZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzKTsKIAogcHJvdGVj
dGVkOgotICAgIGZyaWVuZCBjbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW47Ci0gICAgdm9p
ZCBhZGRUb2tlbihNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4mKTsKLSAgICB2b2lkIHJlbW92ZVRv
a2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbiYpOworICAgIGZyaWVuZCBjbGFzcyBNZWRpYVNl
c3Npb247CisgICAgdm9pZCBhZGRTZXNzaW9uKE1lZGlhU2Vzc2lvbiYpOworICAgIHZvaWQgcmVt
b3ZlU2Vzc2lvbihNZWRpYVNlc3Npb24mKTsKIAogcHJpdmF0ZToKICAgICBNZWRpYVNlc3Npb25N
YW5hZ2VyKCk7CiAKICAgICB2b2lkIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwogCi0gICAgVmVjdG9y
PE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbio+IG1fdG9rZW5zOwotfTsKLQotY2xhc3MgTWVkaWFT
ZXNzaW9uTWFuYWdlckNsaWVudCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFTZXNz
aW9uTWFuYWdlckNsaWVudCk7Ci1wdWJsaWM6Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVu
dCgpIHsgfQotCi0gICAgdmlydHVhbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZWRpYVR5cGUgbWVk
aWFUeXBlKCkgY29uc3QgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+TWVkaWFTZXNz
aW9uTWFuYWdlckNsaWVudCgpIHsgfQotfTsKLQotY2xhc3MgTWVkaWFTZXNzaW9uTWFuYWdlclRv
a2VuIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlhU2Vzc2lvbk1h
bmFnZXJUb2tlbj4gY3JlYXRlKE1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmKTsKLQotICAgIE1l
ZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbihNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50Jik7Ci0gICAg
fk1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbigpOwotCi0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6
TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotCi1wcml2YXRl
OgotCi0gICAgTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYgbV9jbGllbnQ7Ci0gICAgTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6TWVkaWFUeXBlIG1fdHlwZTsKKyAgICBWZWN0b3I8TWVkaWFTZXNzaW9u
Kj4gbV9zZXNzaW9uczsKKyAgICBpbnQgbV9pbnRlcnJ1cHRpb25zOwogfTsKIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rl
c3RpbmF0aW9uTWFjLmNwcAkocmV2aXNpb24gMTYxMzU4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04Myw3ICs4Myw3IEBAIEF1ZGlvRGVzdGluYXRpb25NYWM6OkF1ZGlvRGVzdGluYXRpb25NYWMK
ICAgICAsIG1fcmVuZGVyQnVzKEF1ZGlvQnVzOjpjcmVhdGUoMiwga0J1ZmZlclNpemUsIGZhbHNl
KSkKICAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogICAgICwgbV9pc1BsYXlpbmcoZmFs
c2UpCi0gICAgLCBtX21lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbihNZWRpYVNlc3Npb25NYW5hZ2Vy
VG9rZW46OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX21lZGlhU2Vzc2lvbihNZWRpYVNlc3Npb246
OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgLy8gT3BlbiBhbmQgaW5pdGlhbGl6ZSBEZWZhdWx0T3V0
cHV0VW5pdAogICAgIEF1ZGlvQ29tcG9uZW50IGNvbXA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmgJKHJl
dmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b0Rlc3RpbmF0aW9uTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2lu
Y2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgotI2luY2x1
ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKKyNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKICNp
bmNsdWRlIDxBdWRpb1VuaXQvQXVkaW9Vbml0Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAvLyBBbiBBdWRpb0Rlc3RpbmF0aW9uIHVzaW5nIENvcmVBdWRpbydzIGRlZmF1bHQg
b3V0cHV0IEF1ZGlvVW5pdAogCi1jbGFzcyBBdWRpb0Rlc3RpbmF0aW9uTWFjIDogcHVibGljIEF1
ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50IHsKK2NsYXNz
IEF1ZGlvRGVzdGluYXRpb25NYWMgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIE1l
ZGlhU2Vzc2lvbkNsaWVudCB7CiBwdWJsaWM6CiAgICAgQXVkaW9EZXN0aW5hdGlvbk1hYyhBdWRp
b0lPQ2FsbGJhY2smLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICB2aXJ0dWFsIH5BdWRpb0Rlc3Rp
bmF0aW9uTWFjKCk7CkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAKICAgICBPU1N0YXR1cyBy
ZW5kZXIoVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CiAK
LSAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBj
b25zdCB7IHJldHVybiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpXZWJBdWRpbzsgfQorICAgIHZpcnR1
YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVk
aWFTZXNzaW9uOjpXZWJBdWRpbzsgfQogCiAgICAgQXVkaW9Vbml0IG1fb3V0cHV0VW5pdDsKICAg
ICBBdWRpb0lPQ2FsbGJhY2smIG1fY2FsbGJhY2s7CkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2lzUGxheWluZzsKIAogI2lmIFVTRShBVURJT19TRVNTSU9OKQotICAgIHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4+IG1fbWVkaWFTZXNzaW9uTWFu
YWdlclRva2VuOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNz
aW9uOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCShyZXZpc2lv
biAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNz
aW9uTWFuYWdlck1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE0ICs0MiwxNCBAQCBzdGF0
aWMgY29uc3Qgc2l6ZV90IGtMb3dQb3dlclZpZGVvQnVmZmVyCiAKIHZvaWQgTWVkaWFTZXNzaW9u
TWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNl
c3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUoKSAtIHR5cGVzOiBWaWRlbyglZCksIEF1
ZGlvKCVkKSwgV2ViQXVkaW8oJWQpIiwgY291bnQoVmlkZW8pLCBjb3VudChBdWRpbyksIGNvdW50
KFdlYkF1ZGlvKSk7CisgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRl
U2Vzc2lvblN0YXRlKCkgLSB0eXBlczogVmlkZW8oJWQpLCBBdWRpbyglZCksIFdlYkF1ZGlvKCVk
KSIsIGNvdW50KE1lZGlhU2Vzc2lvbjo6VmlkZW8pLCBjb3VudChNZWRpYVNlc3Npb246OkF1ZGlv
KSwgY291bnQoTWVkaWFTZXNzaW9uOjpXZWJBdWRpbykpOwogCi0gICAgaWYgKGhhcyhXZWJBdWRp
bykpCisgICAgaWYgKGhhcyhNZWRpYVNlc3Npb246OldlYkF1ZGlvKSkKICAgICAgICAgQXVkaW9T
ZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShrV2ViQXVkaW9C
dWZmZXJTaXplKTsKICAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE2NzI1PiBG
aWd1cmUgb3V0IHdoeSBlbmFibGluZyB0aGUgY29kZSBiZWxvdwogICAgIC8vIGNhdXNlcyBtZWRp
YSBMYXlvdXRUZXN0cyB0byBmYWlsIG9uIDEwLjguCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDkwCi0gICAgZWxzZSBpZiAoKGhhcyhWaWRlbykgfHwgaGFzKEF1ZGlv
KSkgJiYgU2V0dGluZ3M6Omxvd1Bvd2VyVmlkZW9BdWRpb0J1ZmZlclNpemVFbmFibGVkKCkpCisg
ICAgZWxzZSBpZiAoKGhhcyhNZWRpYVNlc3Npb246OlZpZGVvKSB8fCBoYXMoTWVkaWFTZXNzaW9u
OjpBdWRpbykpICYmIFNldHRpbmdzOjpsb3dQb3dlclZpZGVvQXVkaW9CdWZmZXJTaXplRW5hYmxl
ZCgpKQogICAgICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRC
dWZmZXJTaXplKGtMb3dQb3dlclZpZGVvQnVmZmVyU2l6ZSk7CiAjZW5kaWYKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiAr
NzAsNyBAQAogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1hbGxvY1N0YXRpc3Rp
Y3MuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1h
bmFnZXIuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIk1lbW9yeUluZm8u
aCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0yMjcxLDQgKzIyNzIsMTkgQEAgdm9pZCBJbnRlcm5h
bHM6OmluaXRpYWxpemVNb2NrTWVkaWFTb3VyYwogfQogI2VuZGlmCiAKK3ZvaWQgSW50ZXJuYWxz
OjpiZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpCit7CisgICAgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2hhcmVkTWFuYWdlcigpLmJlZ2luSW50ZXJydXB0aW9uKCk7Cit9CisKK3ZvaWQgSW50
ZXJuYWxzOjplbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oY29uc3QgU3RyaW5nJiBmbGFnc1N0
cmluZykKK3sKKyAgICBNZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzID0g
TWVkaWFTZXNzaW9uOjpOb0ZsYWdzOworCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGZsYWdz
U3RyaW5nLCAiTWF5UmVzdW1lUGxheWluZyIpKQorICAgICAgICBmbGFncyA9IE1lZGlhU2Vzc2lv
bjo6TWF5UmVzdW1lUGxheWluZzsKKyAgICAKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkuZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKK30KKwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsNiArMzMyLDkgQEAg
cHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgpOwogI2VuZGlmCiAK
KyAgICB2b2lkIGJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCk7CisgICAgdm9pZCBlbmRN
ZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oY29uc3QgU3RyaW5nJik7CisKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50Kik7CiAgICAgRG9jdW1lbnQqIGNvbnRleHREb2N1
bWVudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2
aXNpb24gMTYxMzU4KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzgsNCArMjc4LDcgQEAKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBD
bGllbnRSZWN0IHNlbGVjdGlvbkJvdW5kcygpOwogICAgIAogICAgIFtDb25kaXRpb25hbD1NRURJ
QV9TT1VSQ0VdIHZvaWQgaW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgpOworCisgICAgdm9pZCBi
ZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpOworICAgIHZvaWQgZW5kTWVkaWFTZXNzaW9u
SW50ZXJydXB0aW9uKERPTVN0cmluZyBmbGFncyk7CiB9OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTYx
MzU4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTQtMDEtMDYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgVGVhY2ggTWVkaWFTZXNzaW9uTWFuYWdlciB0byBtYW5hZ2UgaW50ZXJydXB0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2
NTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBt
ZWRpYS92aWRlby1pbnRlcnJ1cHRpb24tYWN0aXZlLXdoZW4tZWxlbWVudC1jcmVhdGVkLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLWFjdGl2
ZS13aGVuLWVsZW1lbnQtY3JlYXRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS92aWRl
by1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtYWxsb3dpbmctcGxheS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxv
d2luZy1wbGF5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLWludGVycnVwdGlv
bi13aXRoLXJlc3VtZS1ub3QtYWxsb3dpbmctcGxheS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIG1lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1ub3QtYWxsb3dpbmct
cGxheS5odG1sOiBBZGRlZC4KKwogMjAxNC0wMS0wNiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsgZ2FyZGVuaW5nLgpJbmRleDog
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLWFjdGl2ZS13aGVuLWVsZW1lbnQt
Y3JlYXRlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8taW50ZXJydXB0aW9uLWFjdGl2ZS13aGVuLWVsZW1lbnQtY3JlYXRlZC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24tYWN0
aXZlLXdoZW4tZWxlbWVudC1jcmVhdGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE1IEBACitUZXN0IGEgPHZpZGVvPiBlbGVtZW50IGNyYXRlZCBkdXJpbmcgaW50ZXJy
dXB0aW9uIGJlaGF2ZXMgY29ycmVjdGx5LgorCitSVU4od2luZG93LmludGVybmFscy5iZWdpbk1l
ZGlhU2Vzc2lvbkludGVycnVwdGlvbigpKQorUlVOKHZpZGVvID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgndmlkZW8nKSkKK1JVTihkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHZpZGVvKSkKK0VW
RU5UKGNhbnBsYXl0aHJvdWdoKQorCitSVU4odmlkZW8ucGxheSgpKQorMjUwbXMgdGltZXIgZmly
ZWQuLi4KK0VYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSworUlVOKHdpbmRvdy5p
bnRlcm5hbHMuZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCdNYXlSZXN1bWVQbGF5aW5nJykp
CitFVkVOVChwbGF5aW5nKQorCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1pbnRlcnJ1cHRpb24tYWN0aXZlLXdoZW4tZWxlbWVudC1jcmVhdGVkLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLWFjdGl2ZS13
aGVuLWVsZW1lbnQtY3JlYXRlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVk
aWEvdmlkZW8taW50ZXJydXB0aW9uLWFjdGl2ZS13aGVuLWVsZW1lbnQtY3JlYXRlZC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8c2NyaXB0IHNyYz1tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNy
Yz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAg
dmFyIHN0YXRlID0gMDsKKworICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tTdGF0ZSgpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIyNTBtcyB0aW1lciBmaXJl
ZC4uLiIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgdHJ1
ZSk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSAicmVzdW1pbmciOworICAgICAgICAgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKSAKKyAgICAgICAgICAgICAgICAgICAgcnVuKCJ3aW5kb3cu
aW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbignTWF5UmVzdW1lUGxheWluZycp
Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHBsYXlpbmcoKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChzdGF0ZSAhPSAicmVzdW1pbmciKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAg
ICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIjxiPlBsYXliYWNrIHN0YXJ0ZWQgZHVyaW5nIGlu
dGVycnVwdGlvbi48L2I+Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAg
ICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24g
Y2FucGxheXRocm91Z2goKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiIik7CisgICAgICAgICAgICAgICAgcnVuKCJ2aWRlby5wbGF5KCkiKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGNoZWNrU3RhdGUsIDI1MCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBpZiAod2luZG93LmludGVybmFscykgCisgICAgICAgICAgICAgICAgICAgIHJ1bigid2luZG93
LmludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpIik7OworICAgICAgICAg
ICAgICAgIHJ1bigidmlkZW8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd2aWRlbycpIik7Cisg
ICAgICAgICAgICAgICAgcnVuKCJkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHZpZGVvKSIpOwor
ICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBjYW5wbGF5dGhy
b3VnaCk7CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywgcGxheWluZyk7
CisgICAgICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29u
dGVudC90ZXN0Iik7CisgICAgICAgICAgICAgICAgc3RhdGUgPSAiaW50ZXJydXB0ZWQiOworICAg
ICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8Ym9keSBv
bmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8cD5UZXN0IGEgJmx0O3ZpZGVvJmd0OyBlbGVtZW50
IGNyYXRlZCBkdXJpbmcgaW50ZXJydXB0aW9uIGJlaGF2ZXMgY29ycmVjdGx5LjwvcD4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRp
b24td2l0aC1yZXN1bWUtYWxsb3dpbmctcGxheS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLXdpdGgtcmVzdW1lLWFsbG93aW5n
LXBsYXktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8taW50ZXJydXB0aW9uLXdpdGgtcmVzdW1lLWFsbG93aW5nLXBsYXktZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKKworVGVzdCB0aGF0IHBsYXkoKSBkdXJpbmcg
aW50ZXJydXB0aW9uIGRvZXMgbm90aGluZywgZW5kaW5nIGludGVycnVwdGlvbiBhbGxvd3MgcGxh
eWJhY2sgdG8gcmVzdW1lLgorCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKKworUlVOKHdpbmRvdy5p
bnRlcm5hbHMuYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oKSkKK1JVTih2aWRlby5wbGF5
KCkpCisyNTBtcyB0aW1lciBmaXJlZC4uLgorRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1
ZScpIE9LCitSVU4od2luZG93LmludGVybmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24o
J01heVJlc3VtZVBsYXlpbmcnKSkKK0VWRU5UKHBsYXlpbmcpCisKK0VORCBPRiBURVNUCisKSW5k
ZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxv
d2luZy1wbGF5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50
ZXJydXB0aW9uLXdpdGgtcmVzdW1lLWFsbG93aW5nLXBsYXkuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2lu
Zy1wbGF5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgICAgICB2YXIgc3RhdGUgPSAwOworCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVj
a1N0YXRlKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjI1
MG1zIHRpbWVyIGZpcmVkLi4uIik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRl
by5wYXVzZWQiLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9ICJyZXN1bWluZyI7Cisg
ICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIAorICAgICAgICAgICAgICAgICAg
ICBydW4oIndpbmRvdy5pbnRlcm5hbHMuZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCdNYXlS
ZXN1bWVQbGF5aW5nJykiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24g
cGxheWluZygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlICE9ICJy
ZXN1bWluZyIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIiIpOworICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgiPGI+UGxheWJhY2sgc3Rh
cnRlZCBkdXJpbmcgaW50ZXJydXB0aW9uLjwvYj4iKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
Iik7CisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBmdW5jdGlvbiBjYW5wbGF5dGhyb3VnaCgpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCIiKTsKKworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKSAKKyAgICAgICAgICAgICAgICAgICAgcnVuKCJ3aW5kb3cuaW50ZXJuYWxzLmJlZ2lu
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCkiKTs7CisgICAgICAgICAgICAgICAgc3RhdGUgPSAi
aW50ZXJydXB0ZWQiOworICAgICAgICAgICAgICAgIHJ1bigidmlkZW8ucGxheSgpIik7CisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChjaGVja1N0YXRlLCAyNTApOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgn
Y2FucGxheXRocm91Z2gnLCBjYW5wbGF5dGhyb3VnaCk7CisgICAgICAgICAgICAgICAgd2FpdEZv
ckV2ZW50KCdwbGF5aW5nJywgcGxheWluZyk7CisgICAgICAgICAgICAgICAgdmlkZW8uc3JjID0g
ZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0Iik7CisgICAgICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKworICAgIDxib2R5IG9ubG9hZD0ic3RhcnQo
KSI+CisgICAgICAgIDx2aWRlbyBjb250cm9scyA+PC92aWRlbz4KKyAgICAgICAgPHA+VGVzdCB0
aGF0IHBsYXkoKSBkdXJpbmcgaW50ZXJydXB0aW9uIGRvZXMgbm90aGluZywgZW5kaW5nIGludGVy
cnVwdGlvbiBhbGxvd3MgcGxheWJhY2sgdG8gcmVzdW1lLjwvcD4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1
bWUtbm90LWFsbG93aW5nLXBsYXktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL21lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1ub3QtYWxsb3dpbmctcGxh
eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1p
bnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtbm90LWFsbG93aW5nLXBsYXktZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUgQEAKKworVGVzdCB0aGF0IHBsYXkoKSBkdXJpbmcg
aW50ZXJydXB0aW9uIGRvZXMgbm90aGluZywgZW5kaW5nIGludGVycnVwdGlvbiBkb2VzIG5vdCBh
bGxvdyBwbGF5YmFjayB0byByZXN1bWUuCisKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorCitSVU4o
d2luZG93LmludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpKQorUlVOKHZp
ZGVvLnBsYXkoKSkKKzI1MG1zIHRpbWVyIGZpcmVkLi4uCitFWFBFQ1RFRCAodmlkZW8ucGF1c2Vk
ID09ICd0cnVlJykgT0sKK1JVTih3aW5kb3cuaW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvbignJykpCisyNTBtcyB0aW1lciBmaXJlZC4uLgorRVhQRUNURUQgKHZpZGVvLnBhdXNl
ZCA9PSAndHJ1ZScpIE9LCisKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL21lZGlh
L3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1ub3QtYWxsb3dpbmctcGxheS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJl
c3VtZS1ub3QtYWxsb3dpbmctcGxheS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLXdpdGgtcmVzdW1lLW5vdC1hbGxvd2luZy1wbGF5Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
ICAgICB2YXIgc3RhdGUgPSAwOworCisgICAgICAgICAgICBmdW5jdGlvbiBwbGF5aW5nKCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gInJlc3VtaW5nIikKKyAg
ICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIjxiPlBsYXliYWNrIHN0YXJ0ZWQgYWZ0ZXIgaW50
ZXJydXB0aW9uLjwvYj4iKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGZhaWxUZXN0KCI8Yj5QbGF5YmFjayBzdGFydGVkIGR1cmluZyBpbnRlcnJ1cHRpb24uPC9i
PiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja1N0YXRlKCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjI1MG1zIHRpbWVy
IGZpcmVkLi4uIik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQi
LCB0cnVlKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgICAgICAg
ICAgY2FzZSAiaW50ZXJydXB0ZWQiOgorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9ICJyZXN1
bWluZyI7CisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2tTdGF0ZSwgMjUwKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIAorICAgICAgICAgICAg
ICAgICAgICAgICAgcnVuKCJ3aW5kb3cuaW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVw
dGlvbignJykiKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSAicmVzdW1pbmciOgorICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwor
ICAgICAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gY2FucGxheXRocm91Z2goKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiIik7CisKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgCisg
ICAgICAgICAgICAgICAgICAgIHJ1bigid2luZG93LmludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lv
bkludGVycnVwdGlvbigpIik7OworICAgICAgICAgICAgICAgIHN0YXRlID0gImludGVycnVwdGVk
IjsKKyAgICAgICAgICAgICAgICBydW4oInZpZGVvLnBsYXkoKSIpOworICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoY2hlY2tTdGF0ZSwgMjUwKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZnVuY3Rpb24gc3RhcnQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZpbmRN
ZWRpYUVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJv
dWdoJywgY2FucGxheXRocm91Z2gpOworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgncGxh
eWluZycsIHBsYXlpbmcpOworICAgICAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZp
bGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpOworICAgICAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAg
ICA8dmlkZW8gY29udHJvbHMgPjwvdmlkZW8+CisgICAgICAgIDxwPlRlc3QgdGhhdCBwbGF5KCkg
ZHVyaW5nIGludGVycnVwdGlvbiBkb2VzIG5vdGhpbmcsIGVuZGluZyBpbnRlcnJ1cHRpb24gZG9l
cyBub3QgYWxsb3cgcGxheWJhY2sgdG8gcmVzdW1lLjwvcD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>
<flag name="commit-queue"
          id="244161"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220459</attachid>
            <date>2014-01-06 15:05:49 -0800</date>
            <delta_ts>2014-01-07 11:48:41 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>interruptions_patch_4.txt</filename>
            <type>text/plain</type>
            <size>69640</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTM3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBACisyMDE0LTAxLTA2ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFRlYWNoIE1lZGlhU2Vz
c2lvbk1hbmFnZXIgdG8gbWFuYWdlIGludGVycnVwdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjUzMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBtZWRpYS92aWRlby1pbnRlcnJ1cHRp
b24tYWN0aXZlLXdoZW4tZWxlbWVudC1jcmVhdGVkLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlh
L3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5Lmh0bWwKKyAgICAg
ICAgICAgICAgIG1lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1ub3QtYWxsb3dp
bmctcGxheS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IGZ1bmN0aW9u
cyBuZWVkZWQgYnkgSW50ZXJuYWxzLgorCisgICAgICAgIEFkZCBNZWRpYVNlc3Npb24gYW5kIE1l
ZGlhU2Vzc2lvbk1hbmFnZXIuCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAg
ICAgQXV0b21hdGljYWxseSBwYXVzZS9wbGF5IGZvciBpbnRlcnJ1cHRpb25zLiBNb3ZlIG1lZGlh
IHJlc3RyaWN0aW9uIG1hbmFnZW1lbnQgdG8gYSBNZWRpYVNlc3Npb24uCisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBVc2UgdGhlIG1lZGlhIHNlc3Npb24gdG8gbWFuYWdlIHJl
c3RyaWN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjppbnNl
cnRlZEludG8pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKTogRGl0dG8uIFJlbW92ZSByZWR1bmRhbnQgaU9TIGNvZGUuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkSW50ZXJuYWwpOiBVc2UgdGhlIG1lZGlhIHNlc3Np
b24gdG8gbWFuYWdlIHJlc3RyaWN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmxvYWRSZXNvdXJjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6YXV0b3BsYXkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnBsYXkpOiBEaXR0by4gUmVtb3ZlIHJlZHVuZGFudCBpT1MgY29kZS4gUG9zdHBv
bmUgcGxheWJhY2sgaWYgY2FsbGVkIAorICAgICAgICAgICAgZHVyaW5nIGFuIGludGVycnVwdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlKTogVXNlIHRoZSBt
ZWRpYSBzZXNzaW9uIHRvIG1hbmFnZSByZXN0cmljdGlvbnMuIElmIGNhbGxlZCBkdXJpbmcKKyAg
ICAgICAgICAgIGFuIGludGVycnVwdGlvbiwgcmVtZW1iZXIgdG8gbm90IHJlc3VtZSBwbGF5YmFj
ayB3aGVuIGl0IGVuZHMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVz
ZUludGVybmFsKTogVXNlIHRoZSBtZWRpYSBzZXNzaW9uIHRvIG1hbmFnZSByZXN0cmljdGlvbnMu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpwb3RlbnRpYWxseVBsYXlpbmcp
OiBSZWFycmFuZ2UgY29kZSB0byBtYWtlIGl0IGVhc2llciB0byB1bmRlcnN0YW5kLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y291bGRQbGF5SWZFbm91Z2hEYXRhKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVzZWRGb3JVc2VySW50
ZXJhY3Rpb24pOiBSZXR1cm4gdHJ1ZSBpZiBwYXVzZWQgYmVjYXVzZSBvZiBhbiBpbnRlcnJ1cHRp
b24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kKTogVXNlIHRo
ZSBtZWRpYSBzZXNzaW9uIHRvIG1hbmFnZSByZXN0cmljdGlvbnMuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmRlbGl2ZXJOb3RpZmljYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNob3dQbGF5YmFja1RhcmdldFBpY2tlcik6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJJ
c0Z1bGxzY3JlZW5QZXJtaXR0ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZUJlaGF2aW9yc1Jlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVy
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFUeXBl
KTogTWVkaWFTZXNzaW9uTWFuYWdlcjo6PFR5cGU+IC0+IE1lZGlhU2Vzc2lvbjo6PFR5cGU+Lgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YmVnaW5JbnRlcnJ1cHRpb24pOiBO
ZXcuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbmRJbnRlcnJ1cHRpb24p
OiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKworICAgICAgICAq
IGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50Ojp3ZWJraXRFbnRlckZ1bGxzY3JlZW4pOiBVc2UgdGhlIG1lZGlhIHNlc3Npb24gdG8g
bWFuYWdlIHJlc3RyaWN0aW9ucy4KKworICAgICAgICBQdWxsZWQgTWVkaWFTZXNzaW9uTWFuYWdl
clRva2VuIG91dCBvZiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCwgYWRkZWQgZnVuY3Rpb25hbGl0
eSB0byBtYW5hZ2UKKyAgICAgICAgbWVkaWEgZWxlbWVudCByZXN0cmljdGlvbnMgYW5kIGludGVy
cnVwdGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNlc3Npb246Ok1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb246On5NZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uOjpiZWdpbkludGVycnVwdGlvbik6IEluZm9ybSBjbGllbnQgb2YgaW50ZXJydXB0aW9uIHN0
YXRlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6ZW5kSW50ZXJydXB0
aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OnBsYXliYWNrUGVy
bWl0dGVkKTogQ2hlY2sgaWYgcGxheWJhY2sgaXMgYWxsb3dlZCBnaXZlbiB0aGUgY3VycmVudCBy
ZXN0cmljdGlvbnMgCisgICAgICAgICAgICBhbmQgdXNlciBnZXN0dXJlIHN0YXRlLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpkYXRhTG9hZGluZ1Blcm1pdHRlZCk6IERpdHRvIGZv
ciBkYXRhIGxvYWRpbmcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmZ1bGxzY3Jl
ZW5QZXJtaXR0ZWQpOiBEaXR0byBmb3IgZnVsbHNjcmVlbi4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbjo6c2hvd2luZ1BsYXliYWNrVGFyZ2V0UGlja2VyUGVybWl0dGVkKTogRGl0dG8g
Zm9yIHNob3dpbmcgdGhlIHBsYXliYWNrIHRhcmdldCBwaWNrZXIuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNlc3Npb246OnBhZ2VBbGxvd3NEYXRhTG9hZGluZyk6IENoZWNrIGlmIHBsYXliYWNr
IGlzIGFsbG93ZWQgZ2l2ZW4gdGhlIGN1cnJlbnQgcmVzdHJpY3Rpb25zIAorICAgICAgICAgICAg
YW5kIHBhZ2UgbWVkaWEgcmVzdHJpY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uOjpwYWdlQWxsb3dzUGxheWJhY2tBZnRlclJlc3VtaW5nKTogRGl0dG8gZm9yIHJlc3VtaW5n
IHBsYXliYWNrLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oOiBBZGRl
ZC4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFTZXNzaW9uTWFuYWdl
cik6IEluaXRpYWxpemUgaW50ZXJydXB0aW9uIGNvdW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb25NYW5hZ2VyOjpoYXMpOiBNZWRpYVR5cGUgaXMgZGVmaW5lZCBpbiBNZWRpYVNl
c3Npb24uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb3VudCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5JbnRlcnJ1
cHRpb24pOiBJbmZvcm0gYWxsIGNsaWVudHMgb2YgaW50ZXJydXB0aW9uIHN0YXJ0IGlmCisgICAg
ICAgICAgICBub3QgYWxyZWFkeSBpbiBhbiBpbnRlcnJ1cHRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1cHRpb24pOiBJbmZvcm0gYWxsIGNsaWVu
dHMgaWYgaW50ZXJydXB0aW9uIGhhcyBlbmRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbk1hbmFnZXI6OmFkZFNlc3Npb24pOiBSZW5hbWVkIGZyb20gYWRkVG9rZW4uCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVTZXNzaW9uKTogUmVuYW1lZCBm
cm9tIHJlbW92ZVRva2VuLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1h
bmFnZXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9u
TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25NYWM6OkF1ZGlvRGVz
dGluYXRpb25NYWMpOiBNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4gLT4gTWVkaWFTZXNzaW9uLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmg6CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHA6Cisg
ICAgICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUpOiBEaXR0by4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIGZvciB0ZXN0cyB0byBiZWdpbiBhbmQgZW5kIGlu
dGVycnVwdGlvbnMuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpiZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbik6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5pZGw6CisKIDIwMTQtMDEtMDYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dlYkdMXSBGQk8gRGVwdGggQnVmZmVyIEF0dGFjaG1lbnQgRnVuY3Rpb24g
SW1wcm9wZXJseSBDbGVhcmluZyB3aXRoIDAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMTg3Nyw2ICsxODc3LDggQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCiAgICAgcGxhdGZvcm0vYXVkaW8vSFJURktlcm5l
bC5jcHAKICAgICBwbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcAorICAgIHBsYXRmb3JtL2F1
ZGlvL01lZGlhU2Vzc2lvbi5jcHAKKyAgICBwbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5h
Z2VyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKICAg
ICBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCiAgICAgcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNw
cApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNjEzNTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01
MzUxLDYgKzUzNTEsMTAgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1Bhbm5lci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24u
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaCBcCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShy
ZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtNzU2LDYgKzc1Niw5IEBAIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVk
dWxlckMxRVBOU18KIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlckMyRVBOU18yNUxh
eWVyRmx1c2hTY2hlZHVsZXJDbGllbnRFCiBfX1pON1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVs
ZXJEMUV2CiBfX1pON1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVsZXJEMkV2CitfX1pON1dlYkNv
cmUxOU1lZGlhU2Vzc2lvbk1hbmFnZXIxM3NoYXJlZE1hbmFnZXJFdgorX19aTjdXZWJDb3JlMTlN
ZWRpYVNlc3Npb25NYW5hZ2VyMTVlbmRJbnRlcnJ1cHRpb25FTlNfMTJNZWRpYVNlc3Npb24yMEVu
ZEludGVycnVwdGlvbkZsYWdzRQorX19aTjdXZWJDb3JlMTlNZWRpYVNlc3Npb25NYW5hZ2VyMTdi
ZWdpbkludGVycnVwdGlvbkV2CiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxMXNl
dEhUVFBCb2R5RU4zV1RGMTBQYXNzUmVmUHRySU5TXzhGb3JtRGF0YUVFRQogX19aTjdXZWJDb3Jl
MTlSZXNvdXJjZVJlcXVlc3RCYXNlMTNzZXRIVFRQTWV0aG9kRVJLTjNXVEY2U3RyaW5nRQogX19a
TjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMThzZXRIVFRQSGVhZGVyRmllbGRFUEtjUktO
M1dURjZTdHJpbmdFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcyMjUsNiArNzIy
NSw4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxGaWxlU3RyZWFtLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEZpbGVTeXN0ZW0uY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cYXVkaW9cQXVkaW9TZXNz
aW9uLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXE1l
ZGlhU2Vzc2lvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxh
dWRpb1xNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEFOR0xFV2ViS2l0QnJpZGdlLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlvblxjZlxJbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cY2ZcSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUxlZ2FjeUFWQ0YuY3BwIiAvPgpAQCAtMTkwODgsNiArMTkwOTAsOCBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cRmxvYXRDb252ZXJzaW9uLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xBdWRpb1Nlc3Npb24uaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXEF1ZGlvU2Vzc2lvbkxpc3RlbmVy
LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xNZWRpYVNl
c3Npb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXE1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXGdyYXBoaWNzXEFOR0xFV2ViS2l0QnJpZGdlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xBdWRpb1RyYWNrUHJpdmF0ZS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmXElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lv
biAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTE0NTk2LDYgKzE0NTk2LDEyIEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xBdWRpb1Nlc3Npb25MaXN0ZW5l
ci5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cYXVkaW88L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXE1lZGlhU2Vz
c2lvbi5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cYXVkaW88L0ZpbHRlcj4KKyAgICA8L0Ns
SW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXE1lZGlh
U2Vzc2lvbk1hbmFnZXIuaCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXGF1ZGlvPC9GaWx0ZXI+
CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xBTkdMRVdlYktpdEJyaWRnZS5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3Jh
cGhpY3M8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2MTM1OCkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTI5LDYgKzEyOSw4IEBACiAJCTA3MDc1NkRGMTQyMzlCNEUwMDQxNDE2
MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDcwNzU2RDkxNDIzOUI0QzAwNDE0MTYxIC8qIEpTVGV4dFRyYWNr
Q3VlTGlzdC5jcHAgKi87IH07CiAJCTA3MDc1NkUwMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRU
cmFja0N1ZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3MDc1NkRBMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuaCAqLzsg
fTsKIAkJMDcwOUZDNEUxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDlGQzREMTAy
NURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggKi87IH07CisJCTA3MEUwOTE5
MTg3NUVFRkMwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MEUwOTE4MTg3NUVEOTMwMDNBMUQzQyAvKiBNZWRp
YVNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwNzBFMDkxQjE4NzVFRjcxMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MEUwOTFBMTg3NUVGNzEw
MDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uY3BwICovOyB9OwogCQkwNzBGNTQ5ODE3RjEyRjZCMDAx
NjlFMDQgLyogTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MEY1NDk3MTdGMTJGNkIw
MDE2OUUwNCAvKiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oICovOyB9
OwogCQkwNzBGNTQ5RTE3RjI0MDI3MDAxNjlFMDQgLyogQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzBGNTQ5
RDE3RjI0MDI3MDAxNjlFMDQgLyogQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcxMTU4OTExN0RGNkY2
NjAwRURGRTJCIC8qIE1lZGlhU3RyZWFtUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzExNTg4RjE3REY2MzM3MDBFREZFMkIgLyogTWVk
aWFTdHJlYW1Qcml2YXRlLmNwcCAqLzsgfTsKQEAgLTY3MTUsNiArNjcxNyw4IEBACiAJCTA3MDc1
NkRBMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUZXh0VHJhY2tDdWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3MDlGQzREMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5
U2xpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlT
bGlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwREQ4RjUwRjAxODY4MDAw
NzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IG1lZGlh
Q29udHJvbHMuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzBFMDkxODE4NzVF
RDkzMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzBF
MDkxQTE4NzVFRjcxMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3MEY1NDk3MTdGMTJGNkIwMDE2OUUwNCAvKiBNZWRpYVN0cmVhbUNvbnN0
cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNzBGNTQ5RDE3RjI0MDI3MDAxNjlFMDQgLyogQXVkaW9EZXN0aW5h
dGlvbkNvbnN1bWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvRGVz
dGluYXRpb25Db25zdW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzExNTg4
RjE3REY2MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtUHJpdmF0ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjA1MCw2ICsyMjA1NCw4IEBACiAJCQkJQ0RBNzk4MjIx
NzBBMjRGNDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbkxpc3RlbmVyLmggKi8sCiAJCQkJQ0RBRThD
MDcxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwICovLAogCQkJCUNE
QUU4QzA4MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggKi8sCisJCQkJ
MDcwRTA5MTgxODc1RUQ5MzAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5oICovLAorCQkJCTA3MEUw
OTFBMTg3NUVGNzEwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uY3BwICovLAogCQkJCUZEMzE2MDUz
MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyLmggKi8sCiAJCQkJRkQ2MkY1
MkQxNDU4OThEODAwOTRCMEVEIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQuaCAqLywKIAkJ
CQlGRDMxNjA1NDEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9VdGlsaXRpZXMuY3BwICovLApAQCAt
MjQ1OTksNiArMjQ2MDUsNyBAQAogCQkJCTQzNjcwOEM3MTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5k
ZXJTVkdIaWRkZW5Db250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcwOEM5MTJEOUNB
NEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg1NEIw
MTUxMjU1RTRFNjAwQjlDREQwIC8qIFJlbmRlclNWR0lubGluZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMDcwRTA5MTkxODc1RUVGQzAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDg1NEIwMTcxMjU1RTRFNjAwQjlDREQwIC8qIFJlbmRlclNWR0lubGluZVRleHQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTYyMTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VC
dWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcwOENCMTJEOUNBNEIwMDA0NDIzNCAvKiBS
ZW5kZXJTVkdNb2RlbE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODA3Myw2ICsyODA4MCw3
IEBACiAJCQkJOTMzMDlFMTEwOTlFNjQ5MjAwNTZFNTgxIC8qIFNwbGl0RWxlbWVudENvbW1hbmQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMTMwOTlFNjQ5MjAwNTZFNTgxIC8qIFNwbGl0
VGV4dE5vZGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTRCMTdEMTcwOTYw
MDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTA3MEUwOTFCMTg3NUVGNzEwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMTUwOTlFNjQ5MjAwNTZFNTgxIC8qIFNwbGl0VGV4dE5v
ZGVDb250YWluaW5nRWxlbWVudENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFFMTE1
NDgxMzAxNUM1RDAwNTRBQzhDIC8qIFNwb3RMaWdodFNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5N0JDNkEzRTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMRXhjZXB0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMyArMzAsMTMgQEAKICNpbmNsdWRlICJBcHBsaWNh
dGlvbkNhY2hlSG9zdC5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oIgog
I2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNp
bmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAj
aW5jbHVkZSAiQ2xpZW50UmVjdC5oIgogI2luY2x1ZGUgIkNsaWVudFJlY3RMaXN0LmgiCiAjaW5j
bHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIK
LSNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCi0jaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jk
cy5oIgogI2luY2x1ZGUgIkRpYWdub3N0aWNMb2dnaW5nS2V5cy5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCkBAIC01MCw2ICs1MCw3
IEBACiAjaW5jbHVkZSAiSlNIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2Uu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKQEAgLTU5LDcgKzYwLDcgQEAKICNpbmNsdWRlICJNZWRp
YUtleUV2ZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVy
eUV2YWx1YXRvci5oIgotI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJN
ZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9r
ZW4uaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgpA
QCAtMTM3LDEwICsxMzgsNiBAQAogI2luY2x1ZGUgIlBsYXRmb3JtVGV4dFRyYWNrLmgiCiAjZW5k
aWYKIAotI2lmIFVTRShBVURJT19TRVNTSU9OKQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFn
ZXIuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKICNpbmNs
dWRlICJKU01lZGlhQ29udHJvbHNIb3N0LmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9sc0hvc3Qu
aCIKQEAgLTI4NCw3ICsyODEsNiBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50
KGNvbnN0CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgLCBtX3Byb3h5
V2lkZ2V0KDApCiAjZW5kaWYKLSAgICAsIG1fcmVzdHJpY3Rpb25zKFJlcXVpcmVVc2VyR2VzdHVy
ZUZvckZ1bGxzY3JlZW5SZXN0cmljdGlvbiB8IFJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlh
UmVzdHJpY3Rpb24pCiAgICAgLCBtX3ByZWxvYWQoTWVkaWFQbGF5ZXI6OkF1dG8pCiAgICAgLCBt
X2Rpc3BsYXlNb2RlKFVua25vd24pCiAgICAgLCBtX3Byb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxi
YWNrKDApCkBAIC0zMTYsNyArMzEyLDYgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxl
bWVudChjb25zdAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogICAgICwgbV9u
ZWVkV2lkZ2V0VXBkYXRlKGZhbHNlKQogI2VuZGlmCi0gICAgLCBtX2xvYWRJbml0aWF0ZWRCeVVz
ZXJHZXN0dXJlKGZhbHNlKQogICAgICwgbV9jb21wbGV0ZWx5TG9hZGVkKGZhbHNlKQogICAgICwg
bV9oYXZlUHJlcGFyZWRUb1BsYXkoZmFsc2UpCiAgICAgLCBtX3BhcnNpbmdJblByb2dyZXNzKGNy
ZWF0ZWRCeVBhcnNlcikKQEAgLTMyNSw3ICszMjAsNiBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1M
TWVkaWFFbGVtZW50KGNvbnN0CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCiAgICAgLCBtX3Jl
cXVlc3RpbmdQbGF5KGZhbHNlKQotICAgICwgbV91c2VyU3RhcnRlZFBsYXliYWNrKGZhbHNlKQog
I2VuZGlmCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgbV90cmFja3NBcmVSZWFkeSh0
cnVlKQpAQCAtMzQxLDkgKzMzNSw3IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1l
bnQoY29uc3QKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgICwgbV9hdWRpb1NvdXJjZU5vZGUo
MCkKICNlbmRpZgotI2lmIFVTRShBVURJT19TRVNTSU9OKQotICAgICwgbV9tZWRpYVNlc3Npb25N
YW5hZ2VyVG9rZW4oTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOjpjcmVhdGUoKnRoaXMpKQotI2Vu
ZGlmCisgICAgLCBtX21lZGlhU2Vzc2lvbihNZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCiAg
ICAgLCBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0KDApCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKICAgICAsIG1fbWVkaWFTdHJlYW1TcmNPYmplY3QobnVsbHB0cikKQEAgLTM1Miw2ICszNDQs
OSBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0CiAgICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCIpOwogICAgIHNldEhhc0N1
c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwogCisgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJl
aGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JGdWxs
c2NyZWVuKTsKKyAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRp
YVNlc3Npb246OlJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhKTsKKwogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgY2xlYW4gdXAgYW5kIGxvb2sgdG8gYmV0dGVyIG1lcmdlIHRoZSBpT1MgYW5k
IG5vbi1pT1MgY29kZSBiZWxvdy4KICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudC5z
ZXR0aW5ncygpOwogI2lmICFQTEFURk9STShJT1MpCkBAIC0zNjMsMTggKzM1OCwxNyBAQCBIVE1M
TWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0CiAjZW5kaWYKIAogICAgIGlmIChz
ZXR0aW5ncyAmJiBzZXR0aW5ncy0+bWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSkg
ewotICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZUZvclJh
dGVDaGFuZ2VSZXN0cmljdGlvbik7Ci0gICAgICAgIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oUmVx
dWlyZVVzZXJHZXN0dXJlRm9yTG9hZFJlc3RyaWN0aW9uKTsKKyAgICAgICAgbV9tZWRpYVNlc3Np
b24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1
cmVGb3JSYXRlQ2hhbmdlKTsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVz
dHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JMb2FkKTsKICAgICB9
CiAjZWxzZQogICAgIG1fc2VuZFByb2dyZXNzRXZlbnRzID0gZmFsc2U7CiAgICAgaWYgKCFzZXR0
aW5ncyB8fCBzZXR0aW5ncy0+bWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSkgewot
ICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVD
aGFuZ2VSZXN0cmljdGlvbik7CisgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJl
c3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5nZSk7
CiAjaWYgRU5BQkxFKElPU19BSVJQTEFZKQotICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9u
KFJlcXVpcmVVc2VyR2VzdHVyZVRvU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKTsKKyAgICAgICAg
bV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpSZXF1
aXJlVXNlckdlc3R1cmVUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tlcik7CiAjZW5kaWYKLSAgICB9
IGVsc2UKLSAgICAgICAgbV9yZXN0cmljdGlvbnMgPSBOb1Jlc3RyaWN0aW9uczsKKyAgICB9CiAj
ZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAogICAgIGFkZEVsZW1lbnRUb0RvY3VtZW50TWFwKCp0
aGlzLCBkb2N1bWVudCk7CkBAIC01MjQsMTEgKzUxOCw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY28KIHsKICAgICBpZiAobmFtZSA9PSBzcmNBdHRyKSB7CiAjaWYg
UExBVEZPUk0oSU9TKQotICAgICAgICAvLyBOb3RlLCB1bmxlc3MgdGhlIHJlc3RyaWN0aW9uIG9u
IHJlcXVpcmluZyB1c2VyIGFjdGlvbiBoYXMgYmVlbiByZW1vdmVkLAotICAgICAgICAvLyBkbyBu
b3QgYmVnaW4gZG93bmxvYWRpbmcgZGF0YSBvbiBpT1MuCi0gICAgICAgIGlmICghdXNlckdlc3R1
cmVSZXF1aXJlZEZvckxvYWQoKSAmJiAhdmFsdWUuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKCF2
YWx1ZS5pc051bGwoKSAmJiBtX21lZGlhU2Vzc2lvbi0+ZGF0YUxvYWRpbmdQZXJtaXR0ZWQoKnRo
aXMpKSB7CiAjZWxzZQotICAgICAgICAvLyBUcmlnZ2VyIGEgcmVsb2FkLCBhcyBsb25nIGFzIHRo
ZSAnc3JjJyBhdHRyaWJ1dGUgaXMgcHJlc2VudC4KICAgICAgICAgaWYgKCF2YWx1ZS5pc051bGwo
KSkgewogI2VuZGlmCiAgICAgICAgICAgICBjbGVhck1lZGlhUGxheWVyKExvYWRNZWRpYVJlc291
cmNlKTsKQEAgLTY5Myw3ICs2ODQsNyBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1
ZXN0IEhUTUxNCiAgICAgICAgIG1faW5BY3RpdmVEb2N1bWVudCA9IHRydWU7CiAKICNpZiBQTEFU
Rk9STShJT1MpCi0gICAgICAgIGlmICghdXNlckdlc3R1cmVSZXF1aXJlZEZvckxvYWQoKSAmJiBt
X25ldHdvcmtTdGF0ZSA9PSBORVRXT1JLX0VNUFRZICYmICFmYXN0R2V0QXR0cmlidXRlKHNyY0F0
dHIpLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKG1fbmV0d29ya1N0YXRlID09IE5FVFdPUktfRU1Q
VFkgJiYgIWZhc3RHZXRBdHRyaWJ1dGUoc3JjQXR0cikuaXNFbXB0eSgpICYmIG1fbWVkaWFTZXNz
aW9uLT5kYXRhTG9hZGluZ1Blcm1pdHRlZCgqdGhpcykpCiAjZWxzZQogICAgICAgICBpZiAobV9u
ZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSAmJiAhZmFzdEdldEF0dHJpYnV0ZShzcmNBdHRy
KS5pc0VtcHR5KCkpCiAjZW5kaWYKQEAgLTg5OSwyNCArODkwLDE0IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bG9hZCgpCiAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3QoKnRoaXMp
OyAvLyBsb2FkSW50ZXJuYWwgbWF5IHJlc3VsdCBpbiBhICdiZWZvcmVsb2FkJyBldmVudCwgd2hp
Y2ggY2FuIG1ha2UgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCiAgICAgCiAgICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6bG9hZCgpIik7Ci0gICAgCi0gICAgaWYgKHVzZXJHZXN0dXJl
UmVxdWlyZWRGb3JMb2FkKCkgJiYgIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSgpKQorCisgICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+ZGF0YUxvYWRpbmdQZXJtaXR0ZWQo
KnRoaXMpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9sb2FkSW5pdGlhdGVkQnlVc2Vy
R2VzdHVyZSA9IFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwotICAg
IGlmIChtX2xvYWRJbml0aWF0ZWRCeVVzZXJHZXN0dXJlKQorICAgIGlmIChTY3JpcHRDb250cm9s
bGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKICAgICAgICAgcmVtb3ZlQmVoYXZpb3JzUmVz
dHJpY3Rpb25zQWZ0ZXJGaXJzdFVzZXJHZXN0dXJlKCk7CisKICAgICBwcmVwYXJlRm9yTG9hZCgp
OwogICAgIGxvYWRJbnRlcm5hbCgpOwotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIC8vIFVubGVz
cyB0aGlzIG1ldGhvZCB3YXMgY2FsbGVkIGRpcmVjdGx5IGJ5IHRoZSB1c2VyIG9yIHRoZSBhcHBs
aWNhdGlvbiBhbGxvd3MgYW55IHNjcmlwdCB0byB0cmlnZ2VyIHBsYXliYWNrLAotICAgIC8vIHJl
dHVybiBub3cgYmVjYXVzZSBwcmVwYXJlVG9QbGF5KCkgdGVsbHMgdGhlIG1lZGlhIGVuZ2luZSB0
byBzdGFydCBsb2FkaW5nIGRhdGEgYXMgc29vbiBhcyB0aGUgbW92aWUgdmFsaWRhdGVzLgotICAg
IFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCkuc2V0dGluZ3MoKTsKLSAgICBpZiAoIW1f
bG9hZEluaXRpYXRlZEJ5VXNlckdlc3R1cmUgJiYgKCFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+bWVk
aWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSkpCi0gICAgICAgIHJldHVybjsKLSNlbmRp
ZgotCiAgICAgcHJlcGFyZVRvUGxheSgpOwogfQogCkBAIC0xMDIyLDggKzEwMDMsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCgpCiAgICAgQVNTRVJUKCFOb0V2ZW50RGlz
cGF0Y2hBc3NlcnRpb246OmlzRXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsKIAogICAgIC8vIElm
IHdlIGNhbid0IHN0YXJ0IGEgbG9hZCByaWdodCBhd2F5LCBzdGFydCBpdCBsYXRlci4KLSAgICBQ
YWdlKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7Ci0gICAgaWYgKHBhZ2VDb25zZW50UmVxdWly
ZWRGb3JMb2FkKCkgJiYgcGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7CisgICAgaWYg
KCFtX21lZGlhU2Vzc2lvbi0+cGFnZUFsbG93c0RhdGFMb2FkaW5nKCp0aGlzKSkgewogICAgICAg
ICBzZXRTaG91bGREZWxheUxvYWRFdmVudChmYWxzZSk7CiAgICAgICAgIGlmIChtX2lzV2FpdGlu
Z1VudGlsTWVkaWFDYW5TdGFydCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwMzYsOCArMTAx
Niw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKCkKIAogICAgIC8vIE9u
Y2UgdGhlIHBhZ2UgaGFzIGFsbG93ZWQgYW4gZWxlbWVudCB0byBsb2FkIG1lZGlhLCBpdCBpcyBm
cmVlIHRvIGxvYWQgYXQgd2lsbC4gVGhpcyBhbGxvd3MgYSAKICAgICAvLyBwbGF5bGlzdCB0aGF0
IHN0YXJ0cyBpbiBhIGZvcmVncm91bmQgdGFiIHRvIGNvbnRpbnVlIGF1dG9tYXRpY2FsbHkgaWYg
dGhlIHRhYiBpcyBzdWJzZXF1ZW50bHkgCi0gICAgLy8gcHV0IGluIHRoZSB0aGUgYmFja2dyb3Vu
ZC4KLSAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVQYWdlQ29uc2VudFRvTG9h
ZE1lZGlhUmVzdHJpY3Rpb24pOworICAgIC8vIHB1dCBpbnRvIHRoZSBiYWNrZ3JvdW5kLgorICAg
IG1fbWVkaWFTZXNzaW9uLT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6
UmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWEpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQogICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCkBAIC0xMjEzLDcgKzExOTMsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25zCiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogICAgIGlmIChNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLmxvb2t1cCh1
cmwuc3RyaW5nKCkpKQotICAgICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVV
c2VyR2VzdHVyZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlvbik7CisgICAgICAgIG1fbWVkaWFTZXNz
aW9uLT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6UmVxdWlyZVVzZXJH
ZXN0dXJlRm9yUmF0ZUNoYW5nZSk7CiAjZW5kaWYKIAogICAgIGlmIChtX3NlbmRQcm9ncmVzc0V2
ZW50cykgCkBAIC0yMDY0LDcgKzIwNDQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJl
YWR5U3RhdGUoTWVkCiAgICAgICAgIGlmIChpc1BvdGVudGlhbGx5UGxheWluZyAmJiBvbGRTdGF0
ZSA8PSBIQVZFX0NVUlJFTlRfREFUQSkKICAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnRO
YW1lcygpLnBsYXlpbmdFdmVudCk7CiAKLSAgICAgICAgaWYgKG1fYXV0b3BsYXlpbmcgJiYgbV9w
YXVzZWQgJiYgYXV0b3BsYXkoKSAmJiAhZG9jdW1lbnQoKS5pc1NhbmRib3hlZChTYW5kYm94QXV0
b21hdGljRmVhdHVyZXMpICYmICF1c2VyR2VzdHVyZVJlcXVpcmVkRm9yUmF0ZUNoYW5nZSgpKSB7
CisgICAgICAgIGlmIChtX2F1dG9wbGF5aW5nICYmIG1fcGF1c2VkICYmIGF1dG9wbGF5KCkgJiYg
IWRvY3VtZW50KCkuaXNTYW5kYm94ZWQoU2FuZGJveEF1dG9tYXRpY0ZlYXR1cmVzKSAmJiBtX21l
ZGlhU2Vzc2lvbi0+cGxheWJhY2tQZXJtaXR0ZWQoKnRoaXMpKSB7CiAgICAgICAgICAgICBtX3Bh
dXNlZCA9IGZhbHNlOwogICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKICAgICAg
ICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBsYXlFdmVudCk7CkBAIC0yNjE2LDcg
KzI1OTYsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmF1dG9wbGF5KCkgY29uc3QKICAgICAv
LyBsaWZ0ZWQgdGhyb3VnaCBTZXR0aW5ncywgb3Igb25jZSB0aGUgdXNlciBleHBsaWN0bHkgY2Fs
bHMgbG9hZCgpIG9yIHBsYXkoKQogICAgIC8vIGJlY2F1c2UgdGhleSBoYXZlIE9LJ2VkIHVzIGxv
YWRpbmcgZGF0YS4gVGhpcyBhbGxvd3MgcGxheWJhY2sgdG8gY29udGludWUgaWYKICAgICAvLyB0
aGUgVVJMIGlzIGNoYW5nZWQgd2hpbGUgdGhlIG1vdmllIGlzIHBsYXlpbmcuCi0gICAgaWYgKHVz
ZXJHZXN0dXJlUmVxdWlyZWRGb3JSYXRlQ2hhbmdlKCkgfHwgdXNlckdlc3R1cmVSZXF1aXJlZEZv
ckxvYWQoKSkKKyAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5wbGF5YmFja1Blcm1pdHRlZCgqdGhp
cykgfHwgIW1fbWVkaWFTZXNzaW9uLT5kYXRhTG9hZGluZ1Blcm1pdHRlZCgqdGhpcykpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCkBAIC0yNjUxLDE1ICsyNjMxLDE2IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6cGxheSgpCiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxl
bWVudDo6cGxheSgpIik7CiAKLSAgICBpZiAodXNlckdlc3R1cmVSZXF1aXJlZEZvclJhdGVDaGFu
Z2UoKSAmJiAhU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCisgICAg
aWYgKCFtX21lZGlhU2Vzc2lvbi0+cGxheWJhY2tQZXJtaXR0ZWQoKnRoaXMpKQogICAgICAgICBy
ZXR1cm47CiAgICAgaWYgKFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgp
KQogICAgICAgICByZW1vdmVCZWhhdmlvcnNSZXN0cmljdGlvbnNBZnRlckZpcnN0VXNlckdlc3R1
cmUoKTsKIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICB1c2VyUmVxdWVzdHNNZWRpYUxvYWRpbmco
KTsKLSNlbmRpZgotCisgICAgaWYgKG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IE1lZGlhU2Vz
c2lvbjo6SW50ZXJydXB0ZWQpIHsKKyAgICAgICAgbV9yZXN1bWVQbGF5YmFja0FmdGVySW50ZXJy
dXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBwbGF5SW50
ZXJuYWwoKTsKIH0KIApAQCAtMjY5OSw5ICsyNjgwLDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cGF1c2UoKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlKCki
KTsKIAotICAgIGlmICh1c2VyR2VzdHVyZVJlcXVpcmVkRm9yUmF0ZUNoYW5nZSgpICYmICFTY3Jp
cHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKKyAgICBpZiAoIW1fbWVkaWFT
ZXNzaW9uLT5wbGF5YmFja1Blcm1pdHRlZCgqdGhpcykpCiAgICAgICAgIHJldHVybjsKIAorICAg
IGlmIChtX21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBNZWRpYVNlc3Npb246OkludGVycnVwdGVk
KSB7CisgICAgICAgIG1fcmVzdW1lUGxheWJhY2tBZnRlckludGVycnVwdGlvbiA9IGZhbHNlOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIHBhdXNlSW50ZXJuYWwoKTsKIH0KIApA
QCAtMjcxNSw3ICsyNzAxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFs
KCkKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIC8vIFVubGVzcyB0aGUgcmVzdHJpY3Rpb24g
b24gbWVkaWEgcmVxdWlyaW5nIHVzZXIgYWN0aW9uIGhhcyBiZWVuIGxpZnRlZAogICAgICAgICAv
LyBkb24ndCB0cmlnZ2VyIGxvYWRpbmcgaWYgYSBzY3JpcHQgY2FsbHMgcGF1c2UoKS4KLSAgICAg
ICAgaWYgKHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JSYXRlQ2hhbmdlKCkpCisgICAgICAgIGlmICgh
bV9tZWRpYVNlc3Npb24tPnBsYXliYWNrUGVybWl0dGVkKCp0aGlzKSkKICAgICAgICAgICAgIHJl
dHVybjsKICNlbmRpZgogICAgICAgICBzY2hlZHVsZURlbGF5ZWRBY3Rpb24oTG9hZE1lZGlhUmVz
b3VyY2UpOwpAQCAtNDEyMSwxMiArNDEwNywyOCBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBv
dGVudGlhbGx5UGxheWluCiAgICAgLy8gd2hlbiBpdCByYW4gb3V0IG9mIGJ1ZmZlcmVkIGRhdGEu
IEEgbW92aWUgaXMgdGhpcyBzdGF0ZSBpcyAicG90ZW50aWFsbHkgcGxheWluZyIsIG1vZHVsbyB0
aGUKICAgICAvLyBjaGVja3MgaW4gY291bGRQbGF5SWZFbm91Z2hEYXRhKCkuCiAgICAgYm9vbCBw
YXVzZWRUb0J1ZmZlciA9IG1fcmVhZHlTdGF0ZU1heGltdW0gPj0gSEFWRV9GVVRVUkVfREFUQSAm
JiBtX3JlYWR5U3RhdGUgPCBIQVZFX0ZVVFVSRV9EQVRBOwotICAgIHJldHVybiAocGF1c2VkVG9C
dWZmZXIgfHwgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpICYmIGNvdWxkUGxheUlm
RW5vdWdoRGF0YSgpICYmICFpc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigpOworICAgIAorICAg
IGlmICghKHBhdXNlZFRvQnVmZmVyIHx8IG1fcmVhZHlTdGF0ZSA+PSBIQVZFX0ZVVFVSRV9EQVRB
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGNvdWxkUGxheUlmRW5vdWdo
RGF0YSgpICYmICFpc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigpOwogfQogCiBib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6OmNvdWxkUGxheUlmRW5vdWdoRGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
ICFwYXVzZWQoKSAmJiAhZW5kZWRQbGF5YmFjaygpICYmICFzdG9wcGVkRHVlVG9FcnJvcnMoKSAm
JiAhcGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCk7CisgICAgaWYgKHBhdXNlZCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZW5kZWRQbGF5YmFjaygpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoc3RvcHBlZER1ZVRvRXJyb3JzKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmIChwYXVzZWRGb3JVc2VySW50ZXJhY3Rpb24oKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxl
bWVudDo6ZW5kZWRQbGF5YmFjaygpIGNvbnN0CkBAIC00MTcwLDcgKzQxNzIsOSBAQCBib29sIEhU
TUxNZWRpYUVsZW1lbnQ6OnN0b3BwZWREdWVUb0Vycm9yCiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVu
dDo6cGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCkgY29uc3QKIHsKLS8vICAgIHJldHVybiAhcGF1
c2VkKCkgJiYgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEgJiYgW1VBIHJlcXVpcmVz
IGEgZGVjaXRpb25zIGZyb20gdGhlIHVzZXJdCisgICAgaWYgKG1fbWVkaWFTZXNzaW9uLT5zdGF0
ZSgpID09IE1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQpCisgICAgICAgIHJldHVybiB0cnVlOwor
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC00NDQ0LDcgKzQ0NDgsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnN1c3BlbmQoUmVhc29uRm9yCiAgICAgewogICAgICAgICBjYXNlIERvY3Vt
ZW50V2lsbEJlY29tZUluYWN0aXZlOgogICAgICAgICAgICAgc3RvcCgpOwotICAgICAgICAgICAg
YWRkQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlUGFnZUNvbnNlbnRUb1Jlc3VtZU1lZGlhUmVz
dHJpY3Rpb24pOworICAgICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJp
Y3Rpb24oTWVkaWFTZXNzaW9uOjpSZXF1aXJlUGFnZUNvbnNlbnRUb1Jlc3VtZU1lZGlhKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERvY3VtZW50V2lsbEJlUGF1c2VkOgogICAg
ICAgICBjYXNlIEphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZDoKQEAgLTQ0NjEsMTMgKzQ0NjUsMTIg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUoKQogCiAgICAgbV9pbkFjdGl2ZURvY3Vt
ZW50ID0gdHJ1ZTsKIAotICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKLSAgICBp
ZiAocGFnZUNvbnNlbnRSZXF1aXJlZEZvclJlc3VtZSgpICYmIHBhZ2UgJiYgIXBhZ2UtPmNhblN0
YXJ0TWVkaWEoKSkKKyAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5wYWdlQWxsb3dzUGxheWJhY2tB
ZnRlclJlc3VtaW5nKCp0aGlzKSkKICAgICAgICAgZG9jdW1lbnQoKS5hZGRNZWRpYUNhblN0YXJ0
TGlzdGVuZXIodGhpcyk7CiAgICAgZWxzZQogICAgICAgICBzZXRQYXVzZWRJbnRlcm5hbChmYWxz
ZSk7CiAKLSAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVQYWdlQ29uc2VudFRv
UmVzdW1lTWVkaWFSZXN0cmljdGlvbik7CisgICAgbV9tZWRpYVNlc3Npb24tPnJlbW92ZUJlaGF2
aW9yUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpSZXF1aXJlUGFnZUNvbnNlbnRUb1Jlc3VtZU1l
ZGlhKTsKIAogICAgIGlmIChtX2Vycm9yICYmIG1fZXJyb3ItPmNvZGUoKSA9PSBNZWRpYUVycm9y
OjpNRURJQV9FUlJfQUJPUlRFRCkgewogICAgICAgICAvLyBSZXN0YXJ0IHRoZSBsb2FkIGlmIGl0
IHdhcyBhYm9ydGVkIGluIHRoZSBtaWRkbGUgYnkgbW92aW5nIHRoZSBkb2N1bWVudCB0byB0aGUg
cGFnZSBjYWNoZS4KQEAgLTQ1NTcsNyArNDU2MCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
ZGVsaXZlck5vdGlmaWNhdGkKIHsKICAgICBpZiAobm90aWZpY2F0aW9uID09IE1lZGlhUGxheWVy
Tm90aWZpY2F0aW9uUGxheVBhdXNlQnV0dG9uUHJlc3NlZCkgewogI2lmIFBMQVRGT1JNKElPUykK
LSAgICAgICAgdXNlclJlcXVlc3RzTWVkaWFMb2FkaW5nKCk7CisgICAgICAgIHJlbW92ZUJlaGF2
aW9yc1Jlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZSgpOwogI2VuZGlmCiAgICAgICAg
IHRvZ2dsZVBsYXlTdGF0ZSgpOwogICAgICAgICByZXR1cm47CkBAIC00NzM4LDcgKzQ3NDEsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNob3dQbGF5YmFjCiAgICAgaWYgKCFtX3Bs
YXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHVzZXJHZXN0dXJlUmVxdWlyZWRUb1No
b3dQbGF5YmFja1RhcmdldFBpY2tlcigpICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5n
VXNlckdlc3R1cmUoKSkKKyAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5zaG93aW5nUGxheWJhY2tU
YXJnZXRQaWNrZXJQZXJtaXR0ZWQoKnRoaXMpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
ZG9jdW1lbnQoKS5zZXR0aW5ncygpLT5tZWRpYVBsYXliYWNrQWxsb3dzQWlyUGxheSgpKQpAQCAt
NTI5OCwxNiArNTMwMSw2IEBAIEF1ZGlvU291cmNlUHJvdmlkZXIqIEhUTUxNZWRpYUVsZW1lbnQ6
OmEKIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQotdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp1c2VyUmVxdWVzdHNNZWRpYUxvYWRpbmcoKQotewotICAgIC8vIFRoZSB1c2VyIGlzIHJlcXVl
c3RpbmcgZGF0YSBsb2FkaW5nIGFuZC9vciBwbGF5YmFjaywgc28gcmVtb3ZlIHRoZSAib25seSBj
aGFuZ2UgcGxheWJhY2sgaW4gcmVzcG9uc2UKLSAgICAvLyB0byBhIHVzZXIgZ2VzdHVyZSIgcmVz
dHJpY3Rpb24gb24gdGhpcyBtb3ZpZS4KLSAgICBtX3VzZXJTdGFydGVkUGxheWJhY2sgPSB0cnVl
OwotICAgIG1fcmVzdHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7Ci19Ci0jZW5kaWYKLQogY29u
c3QgU3RyaW5nJiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUdyb3VwKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9tZWRpYUdyb3VwOwpAQCAtNTUxNiw3ICs1NTA5LDcgQEAgYm9vbCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllcklzRnVsbAogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVySXNGdWxsc2NyZWVuUGVybWl0dGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIXVzZXJH
ZXN0dXJlUmVxdWlyZWRGb3JGdWxsc2NyZWVuKCkgfHwgU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKCk7CisgICAgcmV0dXJuIG1fbWVkaWFTZXNzaW9uLT5mdWxsc2NyZWVu
UGVybWl0dGVkKCp0aGlzKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
cklzVmlkZW8oKSBjb25zdApAQCAtNTU3OSw3ICs1NTcyLDEyIEBAIENhY2hlZFJlc291cmNlTG9h
ZGVyKiBIVE1MTWVkaWFFbGVtZW50OjoKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVC
ZWhhdmlvcnNSZXN0cmljdGlvbnNBZnRlckZpcnN0VXNlckdlc3R1cmUoKQogewotICAgIG1fcmVz
dHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7CisgICAgbV9tZWRpYVNlc3Npb24tPnJlbW92ZUJl
aGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JMb2Fk
KTsKKyAgICBtX21lZGlhU2Vzc2lvbi0+cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYVNl
c3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2UpOworICAgIG1fbWVkaWFTZXNz
aW9uLT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6UmVxdWlyZVVzZXJH
ZXN0dXJlRm9yRnVsbHNjcmVlbik7CisjaWYgRU5BQkxFKElPU19BSVJQTEFZKQorICAgIG1fbWVk
aWFTZXNzaW9uLT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6UmVxdWly
ZVVzZXJHZXN0dXJlVG9TaG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOworI2VuZGlmCiB9CiAKICNp
ZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKQEAgLTU3MDIsMTUgKzU3MDAsMzQgQEAg
dW5zaWduZWQgbG9uZyBsb25nIEhUTUxNZWRpYUVsZW1lbnQ6OmZpbAogICAgIHJldHVybiAwOwog
fQogCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCi1NZWRpYVNlc3Npb25NYW5hZ2VyOjpNZWRpYVR5
cGUgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFUeXBlKCkgY29uc3QKK01lZGlhU2Vzc2lvbjo6TWVk
aWFUeXBlIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhVHlwZSgpIGNvbnN0CiB7CiAgICAgaWYgKGhh
c1RhZ05hbWUoSFRNTE5hbWVzOjp2aWRlb1RhZykpCi0gICAgICAgIHJldHVybiBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpWaWRlbzsKKyAgICAgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6VmlkZW87CiAK
LSAgICByZXR1cm4gTWVkaWFTZXNzaW9uTWFuYWdlcjo6QXVkaW87CisgICAgcmV0dXJuIE1lZGlh
U2Vzc2lvbjo6QXVkaW87Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YmVnaW5JbnRlcnJ1
cHRpb24oKQoreworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmJlZ2luSW50ZXJy
dXB0aW9uIik7CisgICAgCisgICAgbV9yZXN1bWVQbGF5YmFja0FmdGVySW50ZXJydXB0aW9uID0g
IXBhdXNlZCgpOworICAgIGlmIChtX3Jlc3VtZVBsYXliYWNrQWZ0ZXJJbnRlcnJ1cHRpb24pCisg
ICAgICAgIHBhdXNlKCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW5kSW50ZXJydXB0
aW9uKE1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MpCit7CisgICAgYm9v
bCBzaG91bGRSZXN1bWVQbGF5YmFjayA9IG1fcmVzdW1lUGxheWJhY2tBZnRlckludGVycnVwdGlv
bjsKKyAgICBtX3Jlc3VtZVBsYXliYWNrQWZ0ZXJJbnRlcnJ1cHRpb24gPSBmYWxzZTsKKworICAg
IGlmICghZmxhZ3MgJiBNZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChzaG91bGRSZXN1bWVQbGF5YmFjaykKKyAgICAgICAgcGxheSgpOwog
fQotI2VuZGlmCiAKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTWVkaWFD
YW5TdGFydExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKIAog
I2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogI2luY2x1ZGUgIkhUTUxGcmFtZU93
bmVyRWxlbWVudC5oIgpAQCAtNTMsOSArNTQsNiBAQAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgi
CiAjZW5kaWYKIAotI2lmIFVTRShBVURJT19TRVNTSU9OKQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCIKLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwNSw3ICsx
MDMsNyBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50CiAjZWxzZQogICAgIDogcHVibGljIEhUTUxF
bGVtZW50CiAjZW5kaWYKLSAgICAsIHByaXZhdGUgTWVkaWFQbGF5ZXJDbGllbnQsIHB1YmxpYyBN
ZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UKKyAgICAsIHByaXZhdGUgTWVkaWFQbGF5ZXJDbGllbnQsIHB1YmxpYyBNZWRpYVBsYXllclN1
cHBvcnRzVHlwZUNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBB
Y3RpdmVET01PYmplY3QsIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UgLCBwdWJsaWMg
TWVkaWFTZXNzaW9uQ2xpZW50CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgcHJpdmF0
ZSBBdWRpb1RyYWNrQ2xpZW50CiAgICAgLCBwcml2YXRlIFRleHRUcmFja0NsaWVudApAQCAtMTE0
LDkgKzExMiw2IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQKICNpZiBVU0UoUExBVEZPUk1fVEVY
VF9UUkFDS19NRU5VKQogICAgICwgcHVibGljIFBsYXRmb3JtVGV4dFRyYWNrTWVudUNsaWVudAog
I2VuZGlmCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCi0gICAgLCBwdWJsaWMgTWVkaWFTZXNzaW9u
TWFuYWdlckNsaWVudAotI2VuZGlmCiB7CiBwdWJsaWM6CiAgICAgTWVkaWFQbGF5ZXIqIHBsYXll
cigpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWVyLmdldCgpOyB9CkBAIC00NDcsMzIgKzQ0Miw2IEBA
IHByb3RlY3RlZDoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYUVsZW1lbnQoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAvLyBSZXN0cmljdGlvbnMgdG8gY2hh
bmdlIGRlZmF1bHQgYmVoYXZpb3JzLgotICAgIGVudW0gQmVoYXZpb3JSZXN0cmljdGlvbkZsYWdz
IHsKLSAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLAotICAgICAgICBSZXF1aXJlVXNlckdlc3R1
cmVGb3JMb2FkUmVzdHJpY3Rpb24gPSAxIDw8IDAsCi0gICAgICAgIFJlcXVpcmVVc2VyR2VzdHVy
ZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlvbiA9IDEgPDwgMSwKLSAgICAgICAgUmVxdWlyZVVzZXJH
ZXN0dXJlRm9yRnVsbHNjcmVlblJlc3RyaWN0aW9uID0gMSA8PCAyLAotICAgICAgICBSZXF1aXJl
UGFnZUNvbnNlbnRUb0xvYWRNZWRpYVJlc3RyaWN0aW9uID0gMSA8PCAzLAotICAgICAgICBSZXF1
aXJlUGFnZUNvbnNlbnRUb1Jlc3VtZU1lZGlhUmVzdHJpY3Rpb24gPSAxIDw8IDQsCi0jaWYgRU5B
QkxFKElPU19BSVJQTEFZKQotICAgICAgICBSZXF1aXJlVXNlckdlc3R1cmVUb1Nob3dQbGF5YmFj
a1RhcmdldFBpY2tlciA9IDEgPDwgNSwKLSNlbmRpZgotICAgIH07Ci0gICAgdHlwZWRlZiB1bnNp
Z25lZCBCZWhhdmlvclJlc3RyaWN0aW9uczsKLSAgICAKLSAgICBib29sIHVzZXJHZXN0dXJlUmVx
dWlyZWRGb3JMb2FkKCkgY29uc3QgeyByZXR1cm4gbV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNl
ckdlc3R1cmVGb3JMb2FkUmVzdHJpY3Rpb247IH0KLSAgICBib29sIHVzZXJHZXN0dXJlUmVxdWly
ZWRGb3JSYXRlQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9yZXN0cmljdGlvbnMgJiBSZXF1aXJl
VXNlckdlc3R1cmVGb3JSYXRlQ2hhbmdlUmVzdHJpY3Rpb247IH0KLSAgICBib29sIHVzZXJHZXN0
dXJlUmVxdWlyZWRGb3JGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1cm4gbV9yZXN0cmljdGlvbnMg
JiBSZXF1aXJlVXNlckdlc3R1cmVGb3JGdWxsc2NyZWVuUmVzdHJpY3Rpb247IH0KLSAgICBib29s
IHBhZ2VDb25zZW50UmVxdWlyZWRGb3JMb2FkKCkgY29uc3QgeyByZXR1cm4gbV9yZXN0cmljdGlv
bnMgJiBSZXF1aXJlUGFnZUNvbnNlbnRUb0xvYWRNZWRpYVJlc3RyaWN0aW9uOyB9Ci0gICAgYm9v
bCBwYWdlQ29uc2VudFJlcXVpcmVkRm9yUmVzdW1lKCkgY29uc3QgeyByZXR1cm4gbV9yZXN0cmlj
dGlvbnMgJiBSZXF1aXJlUGFnZUNvbnNlbnRUb1Jlc3VtZU1lZGlhUmVzdHJpY3Rpb247IH0KLSNp
ZiBFTkFCTEUoSU9TX0FJUlBMQVkpCi0gICAgYm9vbCB1c2VyR2VzdHVyZVJlcXVpcmVkVG9TaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0aW9ucyAmIFJl
cXVpcmVVc2VyR2VzdHVyZVRvU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyOyB9Ci0jZW5kaWYKLSAg
ICAKLSAgICB2b2lkIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMg
cmVzdHJpY3Rpb24pIHsgbV9yZXN0cmljdGlvbnMgfD0gcmVzdHJpY3Rpb247IH0KLSAgICB2b2lk
IHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rp
b24pIHsgbV9yZXN0cmljdGlvbnMgJj0gfnJlc3RyaWN0aW9uOyB9Ci0KICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAgICAgYm9vbCBpZ25vcmVUcmFja0Rpc3BsYXlVcGRhdGVSZXF1ZXN0cygpIGNv
bnN0IHsgcmV0dXJuIG1faWdub3JlVHJhY2tEaXNwbGF5VXBkYXRlID4gMCB8fCAhbV90ZXh0VHJh
Y2tzIHx8ICFtX2N1ZVRyZWUuc2l6ZSgpOyB9CiAgICAgdm9pZCBiZWdpbklnbm9yaW5nVHJhY2tE
aXNwbGF5VXBkYXRlUmVxdWVzdHMoKTsKQEAgLTQ4MSw2ICs0NTAsOCBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIE9WRVJSSURFOwogCisgICAgTWVkaWFTZXNzaW9uJiBt
ZWRpYVNlc3Npb24oKSBjb25zdCB7IHJldHVybiAqbV9tZWRpYVNlc3Npb247IH0KKwogcHJpdmF0
ZToKICAgICB2b2lkIGNyZWF0ZU1lZGlhUGxheWVyKCk7CiAKQEAgLTY1Miw3ICs2MjMsNiBAQCBw
cml2YXRlOgogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgcGFyc2VNZWRpYVBsYXllckF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJik7Ci0gICAg
dm9pZCB1c2VyUmVxdWVzdHNNZWRpYUxvYWRpbmcoKTsKICNlbmRpZgogCiAgICAgLy8gUGF1c2Vz
IHBsYXliYWNrIHdpdGhvdXQgY2hhbmdpbmcgYW55IHN0YXRlcyBvciBnZW5lcmF0aW5nIGV2ZW50
cwpAQCAtNjk1LDkgKzY2NSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlTWVkaWFDb250
cm9sc0luamVjdGVkU2NyaXB0KCk7CiAjZW5kaWYKIAotI2lmIFVTRShBVURJT19TRVNTSU9OKQot
ICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNv
bnN0IE9WRVJSSURFOwotI2VuZGlmCisgICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlw
ZSBtZWRpYVR5cGUoKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBiZWdpbklu
dGVycnVwdGlvbigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBlbmRJbnRlcnJ1cHRpb24o
TWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncykgT1ZFUlJJREU7CiAKICAgICBUaW1l
cjxIVE1MTWVkaWFFbGVtZW50PiBtX2xvYWRUaW1lcjsKICAgICBUaW1lcjxIVE1MTWVkaWFFbGVt
ZW50PiBtX3Byb2dyZXNzRXZlbnRUaW1lcjsKQEAgLTczOSw4ICs3MTAsNiBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxXaWRnZXQ+IG1fcHJveHlXaWRnZXQ7CiAjZW5kaWYKIAotICAgIEJlaGF2aW9y
UmVzdHJpY3Rpb25zIG1fcmVzdHJpY3Rpb25zOwotICAgIAogICAgIE1lZGlhUGxheWVyOjpQcmVs
b2FkIG1fcHJlbG9hZDsKIAogICAgIERpc3BsYXlNb2RlIG1fZGlzcGxheU1vZGU7CkBAIC03OTQs
NyArNzYzLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbmVlZFdpZGdldFVwZGF0ZSA6IDE7CiAj
ZW5kaWYKIAotICAgIGJvb2wgbV9sb2FkSW5pdGlhdGVkQnlVc2VyR2VzdHVyZSA6IDE7CiAgICAg
Ym9vbCBtX2NvbXBsZXRlbHlMb2FkZWQgOiAxOwogICAgIGJvb2wgbV9oYXZlUHJlcGFyZWRUb1Bs
YXkgOiAxOwogICAgIGJvb2wgbV9wYXJzaW5nSW5Qcm9ncmVzcyA6IDE7CkBAIC04MDQsOSArNzcy
LDEwIEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgYm9vbCBtX3JlcXVlc3Rp
bmdQbGF5IDogMTsKLSAgICBib29sIG1fdXNlclN0YXJ0ZWRQbGF5YmFjayA6IDE7CiAjZW5kaWYK
IAorICAgIGJvb2wgbV9yZXN1bWVQbGF5YmFja0FmdGVySW50ZXJydXB0aW9uIDogMTsKKwogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKICAgICBib29sIG1fdHJhY2tzQXJlUmVhZHkgOiAxOwogICAg
IGJvb2wgbV9oYXZlVmlzaWJsZVRleHRUcmFjayA6IDE7CkBAIC04NTMsMTAgKzgyMiw3IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrTWVudUludGVyZmFjZT4gbV9wbGF0
Zm9ybU1lbnU7CiAjZW5kaWYKIAotI2lmIFVTRShBVURJT19TRVNTSU9OKQotICAgIHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4+IG1fbWVkaWFTZXNzaW9uTWFuYWdlclRv
a2VuOwotI2VuZGlmCi0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFTZXNzaW9uPiBtX21lZGlh
U2Vzc2lvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+
IG1fYWN0aXZpdHlUb2tlbjsKICAgICBzaXplX3QgbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdDsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCShyZXZpc2lv
biAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50Ojp3
ZWJraXRFbnRlckZ1bGxzYwogCiAgICAgLy8gR2VuZXJhdGUgYW4gZXhjZXB0aW9uIGlmIHRoaXMg
aXNuJ3QgY2FsbGVkIGluIHJlc3BvbnNlIHRvIGEgdXNlciBnZXN0dXJlLCBvciBpZiB0aGUgCiAg
ICAgLy8gZWxlbWVudCBkb2VzIG5vdCBzdXBwb3J0IGZ1bGxzY3JlZW4uCi0gICAgaWYgKCh1c2Vy
R2VzdHVyZVJlcXVpcmVkRm9yRnVsbHNjcmVlbigpICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9j
ZXNzaW5nVXNlckdlc3R1cmUoKSkgfHwgIXN1cHBvcnRzRnVsbHNjcmVlbigpKSB7CisgICAgaWYg
KCFtZWRpYVNlc3Npb24oKS5mdWxsc2NyZWVuUGVybWl0dGVkKCp0aGlzKSB8fCAhc3VwcG9ydHNG
dWxsc2NyZWVuKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlh
U2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
TWVkaWFTZXNzaW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9u
LmgiCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb24+IE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKE1lZGlhU2Vz
c2lvbkNsaWVudCYgY2xpZW50KQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlh
U2Vzc2lvbj4oY2xpZW50KTsKK30KKworTWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24oTWVkaWFT
ZXNzaW9uQ2xpZW50JiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3Jl
c3RyaWN0aW9ucyhOb1Jlc3RyaWN0aW9ucykKKyAgICAsIG1fc3RhdGUoUnVubmluZykKK3sKKyAg
ICBtX3R5cGUgPSBtX2NsaWVudC5tZWRpYVR5cGUoKTsKKyAgICBBU1NFUlQobV90eXBlID49IE5v
bmUgJiYgbV90eXBlIDw9IFdlYkF1ZGlvKTsKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkuYWRkU2Vzc2lvbigqdGhpcyk7Cit9CisKK01lZGlhU2Vzc2lvbjo6fk1lZGlh
U2Vzc2lvbigpCit7CisgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJl
bW92ZVNlc3Npb24oKnRoaXMpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1
cHRpb24oKQoreworICAgIG1fc3RhdGUgPSBJbnRlcnJ1cHRlZDsKKyAgICBtX2NsaWVudC5iZWdp
bkludGVycnVwdGlvbigpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9u
KEVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQoreworICAgIG1fc3RhdGUgPSBSdW5uaW5nOwor
ICAgIG1fY2xpZW50LmVuZEludGVycnVwdGlvbihmbGFncyk7Cit9CisKK2Jvb2wgTWVkaWFTZXNz
aW9uOjpwbGF5YmFja1Blcm1pdHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3QKK3sK
KyAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JSYXRlQ2hhbmdl
ICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgeworICAgICAg
ICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb246OnBsYXliYWNrUGVybWl0dGVkIC0gcmV0dXJuaW5n
IEZBTFNFIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBNZWRpYVNlc3Npb246OmRhdGFMb2FkaW5nUGVybWl0dGVkKGNvbnN0IEhU
TUxNZWRpYUVsZW1lbnQmKSBjb25zdAoreworICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVp
cmVVc2VyR2VzdHVyZUZvckxvYWQgJiYgIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2Vy
R2VzdHVyZSgpKSB7CisgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbjo6ZGF0YUxvYWRp
bmdQZXJtaXR0ZWQgLSByZXR1cm5pbmcgRkFMU0UiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIE1lZGlhU2Vzc2lvbjo6ZnVsbHNj
cmVlblBlcm1pdHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3QKK3sKKyAgICBpZiAo
bV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JGdWxsc2NyZWVuICYmICFTY3Jp
cHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgeworICAgICAgICBMT0coTWVk
aWEsICJNZWRpYVNlc3Npb246OmZ1bGxzY3JlZW5QZXJtaXR0ZWQgLSByZXR1cm5pbmcgRkFMU0Ui
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIE1lZGlhU2Vzc2lvbjo6cGFnZUFsbG93c0RhdGFMb2FkaW5nKGNvbnN0IEhUTUxNZWRp
YUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgUGFnZSogcGFnZSA9IGVsZW1lbnQuZG9j
dW1lbnQoKS5wYWdlKCk7CisgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBhZ2VDb25z
ZW50VG9Mb2FkTWVkaWEgJiYgcGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7CisgICAg
ICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbjo6cGFnZUFsbG93c0RhdGFMb2FkaW5nIC0gcmV0
dXJuaW5nIEZBTFNFIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFTZXNzaW9uOjpwYWdlQWxsb3dzUGxheWJhY2tB
ZnRlclJlc3VtaW5nKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Cit7Cisg
ICAgUGFnZSogcGFnZSA9IGVsZW1lbnQuZG9jdW1lbnQoKS5wYWdlKCk7CisgICAgaWYgKG1fcmVz
dHJpY3Rpb25zICYgUmVxdWlyZVBhZ2VDb25zZW50VG9SZXN1bWVNZWRpYSAmJiBwYWdlICYmICFw
YWdlLT5jYW5TdGFydE1lZGlhKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9u
OjpwYWdlQWxsb3dzUGxheWJhY2tBZnRlclJlc3VtaW5nIC0gcmV0dXJuaW5nIEZBTFNFIik7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisK
KyNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCitib29sIE1lZGlhU2Vzc2lvbjo6c2hvd2luZ1BsYXli
YWNrVGFyZ2V0UGlja2VyUGVybWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdAor
eworICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZVRvU2hvd1BsYXli
YWNrVGFyZ2V0UGlja2VyICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1
cmUoKSkgeworICAgICAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb246OnNob3dpbmdQbGF5YmFj
a1RhcmdldFBpY2tlclBlcm1pdHRlZCAtIHJldHVybmluZyBGQUxTRSIpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKK30K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IE1lZGlhU2Vzc2lvbl9oCisjZGVmaW5lIE1lZGlhU2Vzc2lvbl9oCisKKyNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVNlc3Np
b25DbGllbnQ7CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworCitjbGFzcyBNZWRpYVNlc3Npb24g
eworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFTZXNzaW9uPiBjcmVh
dGUoTWVkaWFTZXNzaW9uQ2xpZW50Jik7CisKKyAgICBNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9u
Q2xpZW50Jik7CisgICAgfk1lZGlhU2Vzc2lvbigpOworCisgICAgZW51bSBNZWRpYVR5cGUgewor
ICAgICAgICBOb25lLAorICAgICAgICBWaWRlbywKKyAgICAgICAgQXVkaW8sCisgICAgICAgIFdl
YkF1ZGlvLAorICAgIH07CisgICAgCisgICAgTWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQorCisgICAgZW51bSBTdGF0ZSB7CisgICAgICAgIFJ1bm5pbmcsCisg
ICAgICAgIEludGVycnVwdGVkLAorICAgIH07CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlOyB9CisgICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSBzdGF0ZSkgeyBtX3N0YXRl
ID0gc3RhdGU7IH0KKworICAgIGVudW0gRW5kSW50ZXJydXB0aW9uRmxhZ3MgeworICAgICAgICBO
b0ZsYWdzID0gMCwKKyAgICAgICAgTWF5UmVzdW1lUGxheWluZyA9IDEgPDwgMCwKKyAgICB9Owor
ICAgIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oKTsKKyAgICB2b2lkIGVuZEludGVycnVwdGlvbihF
bmRJbnRlcnJ1cHRpb25GbGFncyk7CisKKyAgICBib29sIHBsYXliYWNrUGVybWl0dGVkKGNvbnN0
IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKKyAgICBib29sIGRhdGFMb2FkaW5nUGVybWl0dGVk
KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKKyAgICBib29sIGZ1bGxzY3JlZW5QZXJt
aXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OworICAgIGJvb2wgcGFnZUFsbG93
c0RhdGFMb2FkaW5nKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKKyAgICBib29sIHBh
Z2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNv
bnN0OworI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKKyAgICBib29sIHNob3dpbmdQbGF5YmFja1Rh
cmdldFBpY2tlclBlcm1pdHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CisjZW5k
aWYKKworICAgIC8vIFJlc3RyaWN0aW9ucyB0byBtb2RpZnkgZGVmYXVsdCBiZWhhdmlvcnMuCisg
ICAgZW51bSBCZWhhdmlvclJlc3RyaWN0aW9uRmxhZ3MgeworICAgICAgICBOb1Jlc3RyaWN0aW9u
cyA9IDAsCisgICAgICAgIFJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWQgPSAxIDw8IDAsCisgICAg
ICAgIFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2UgPSAxIDw8IDEsCisgICAgICAgIFJl
cXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW4gPSAxIDw8IDIsCisgICAgICAgIFJlcXVpcmVQ
YWdlQ29uc2VudFRvTG9hZE1lZGlhID0gMSA8PCAzLAorICAgICAgICBSZXF1aXJlUGFnZUNvbnNl
bnRUb1Jlc3VtZU1lZGlhID0gMSA8PCA0LAorI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKKyAgICAg
ICAgUmVxdWlyZVVzZXJHZXN0dXJlVG9TaG93UGxheWJhY2tUYXJnZXRQaWNrZXIgPSAxIDw8IDUs
CisjZW5kaWYKKyAgICB9OworICAgIHR5cGVkZWYgdW5zaWduZWQgQmVoYXZpb3JSZXN0cmljdGlv
bnM7CisKKyAgICB2b2lkIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlv
bnMgcmVzdHJpY3Rpb24pIHsgbV9yZXN0cmljdGlvbnMgfD0gcmVzdHJpY3Rpb247IH0KKyAgICB2
b2lkIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJp
Y3Rpb24pIHsgbV9yZXN0cmljdGlvbnMgJj0gfnJlc3RyaWN0aW9uOyB9CisKK3ByaXZhdGU6Cisg
ICAgTWVkaWFTZXNzaW9uQ2xpZW50JiBtX2NsaWVudDsKKyAgICBNZWRpYVR5cGUgbV90eXBlOwor
ICAgIEJlaGF2aW9yUmVzdHJpY3Rpb25zIG1fcmVzdHJpY3Rpb25zOworICAgIFN0YXRlIG1fc3Rh
dGU7Cit9OworCitjbGFzcyBNZWRpYVNlc3Npb25DbGllbnQgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKE1lZGlhU2Vzc2lvbkNsaWVudCk7CitwdWJsaWM6CisgICAgTWVkaWFTZXNzaW9uQ2xp
ZW50KCkgeyB9CisgICAgCisgICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRp
YVR5cGUoKSBjb25zdCA9IDA7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGJlZ2luSW50ZXJydXB0
aW9uKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGVuZEludGVycnVwdGlvbihNZWRpYVNlc3Npb246
OkVuZEludGVycnVwdGlvbkZsYWdzKSB7IH0KKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IH5NZWRpYVNlc3Npb25DbGllbnQoKSB7IH0KK307CisKK30KKworI2VuZGlmIC8vIE1lZGlhU2Vz
c2lvbl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25N
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9N
ZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMTYxMzU4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDI1ICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lZGlh
U2Vzc2lvbk1hbmFnZXIuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisjaW5jbHVkZSAi
SFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogCi0KLXN0ZDo6
dW5pcXVlX3B0cjxNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4+IE1lZGlhU2Vzc2lvbk1hbmFnZXJU
b2tlbjo6Y3JlYXRlKE1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCkKLXsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4+KGNsaWVudCk7
Ci19Ci0KLU1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbjo6TWVkaWFTZXNzaW9uTWFuYWdlclRva2Vu
KE1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCkKLSAgICA6IG1fY2xpZW50KGNsaWVu
dCkKLXsKLSAgICBtX3R5cGUgPSBtX2NsaWVudC5tZWRpYVR5cGUoKTsKLSAgICBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkVG9rZW4oKnRoaXMpOwotfQotCi1NZWRpYVNl
c3Npb25NYW5hZ2VyVG9rZW46On5NZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4oKQotewotICAgIE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVUb2tlbigqdGhpcyk7Ci19
CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE1lZGlhU2Vzc2lvbk1hbmFnZXImIE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKQogewpAQCAtNTMsMTQgKzM4LDE1IEBAIE1lZGlhU2Vz
c2lvbk1hbmFnZXImIE1lZGlhU2Vzc2lvbk1hbmFnZXIKIH0KIAogTWVkaWFTZXNzaW9uTWFuYWdl
cjo6TWVkaWFTZXNzaW9uTWFuYWdlcigpCisgICAgOiBtX2ludGVycnVwdGlvbnMoMCkKIHsKIH0K
IAotYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpoYXMoTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVk
aWFUeXBlIHR5cGUpIGNvbnN0Citib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmhhcyhNZWRpYVNl
c3Npb246Ok1lZGlhVHlwZSB0eXBlKSBjb25zdAogewotICAgIEFTU0VSVCh0eXBlID49IE1lZGlh
U2Vzc2lvbk1hbmFnZXI6Ok5vbmUgJiYgdHlwZSA8PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpXZWJB
dWRpbyk7CisgICAgQVNTRVJUKHR5cGUgPj0gTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0g
TWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7CiAKLSAgICBmb3IgKGF1dG8gaXQgPSBtX3Rva2Vucy5i
ZWdpbigpLCBlbmQgPSBtX3Rva2Vucy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgZm9y
IChhdXRvIGl0ID0gbV9zZXNzaW9ucy5iZWdpbigpLCBlbmQgPSBtX3Nlc3Npb25zLmVuZCgpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKCgqaXQpLT5tZWRpYVR5cGUoKSA9PSB0eXBl
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNjgsMTIgKzU0LDEyIEBAIGJv
b2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6aGFzKE1lZGlhU2Vzc2kKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWludCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb3VudChNZWRpYVNlc3Npb25NYW5hZ2Vy
OjpNZWRpYVR5cGUgdHlwZSkgY29uc3QKK2ludCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb3VudChN
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBlKSBjb25zdAogewotICAgIEFTU0VSVCh0eXBlID49
IE1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok5vbmUgJiYgdHlwZSA8PSBNZWRpYVNlc3Npb25NYW5hZ2Vy
OjpXZWJBdWRpbyk7CisgICAgQVNTRVJUKHR5cGUgPj0gTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5
cGUgPD0gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7CiAgICAgCiAgICAgaW50IGNvdW50ID0gMDsK
LSAgICBmb3IgKGF1dG8gaXQgPSBtX3Rva2Vucy5iZWdpbigpLCBlbmQgPSBtX3Rva2Vucy5lbmQo
KTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgZm9yIChhdXRvIGl0ID0gbV9zZXNzaW9ucy5iZWdp
bigpLCBlbmQgPSBtX3Nlc3Npb25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAg
aWYgKCgqaXQpLT5tZWRpYVR5cGUoKSA9PSB0eXBlKQogICAgICAgICAgICAgKytjb3VudDsKICAg
ICB9CkBAIC04MSwyMCArNjcsNDAgQEAgaW50IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvdW50KE1l
ZGlhU2VzcwogICAgIHJldHVybiBjb3VudDsKIH0KIAotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2Vy
OjphZGRUb2tlbihNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4mIHRva2VuKQordm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpiZWdpbkludGVycnVwdGlvbigpCiB7Ci0gICAgbV90b2tlbnMuYXBwZW5k
KCZ0b2tlbik7CisgICAgaWYgKCsrbV9pbnRlcnJ1cHRpb25zID4gMSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgZm9yIChhdXRvIGl0ID0gbV9zZXNzaW9ucy5iZWdpbigpLCBlbmQgPSBtX3Nlc3Np
b25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICgqaXQpLT5iZWdpbkludGVycnVw
dGlvbigpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmVuZEludGVycnVwdGlvbihN
ZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQoreworICAgIEFTU0VSVCht
X2ludGVycnVwdGlvbnMgPiAwKTsKKyAgICBpZiAoLS1tX2ludGVycnVwdGlvbnMpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBmb3IgKGF1dG8gaXQgPSBtX3Nlc3Npb25zLmJlZ2luKCksIGVu
ZCA9IG1fc2Vzc2lvbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgKCppdCktPmVu
ZEludGVycnVwdGlvbihmbGFncyk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRk
U2Vzc2lvbihNZWRpYVNlc3Npb24mIHNlc3Npb24pCit7CisgICAgbV9zZXNzaW9ucy5hcHBlbmQo
JnNlc3Npb24pOworICAgIHNlc3Npb24uc2V0U3RhdGUobV9pbnRlcnJ1cHRpb25zID8gTWVkaWFT
ZXNzaW9uOjpJbnRlcnJ1cHRlZCA6IE1lZGlhU2Vzc2lvbjo6UnVubmluZyk7CiAgICAgdXBkYXRl
U2Vzc2lvblN0YXRlKCk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlVG9r
ZW4oTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuJiB0b2tlbikKK3ZvaWQgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6cmVtb3ZlU2Vzc2lvbihNZWRpYVNlc3Npb24mIHNlc3Npb24pCiB7Ci0gICAgc2l6ZV90
IGluZGV4ID0gbV90b2tlbnMuZmluZCgmdG9rZW4pOworICAgIHNpemVfdCBpbmRleCA9IG1fc2Vz
c2lvbnMuZmluZCgmc2Vzc2lvbik7CiAgICAgQVNTRVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKICAg
ICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdG9rZW5z
LnJlbW92ZShpbmRleCk7CisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaW5kZXgpOwogICAgIHVwZGF0
ZVNlc3Npb25TdGF0ZSgpOwogfQogCkBAIC0xMDMsMyArMTA5LDUgQEAgdm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uUwogewogfQogI2VuZGlmCisKK30KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgJ
KHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlh
U2Vzc2lvbk1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNjQgKzI2LDM3IEBACiAjaWZu
ZGVmIE1lZGlhU2Vzc2lvbk1hbmFnZXJfaAogI2RlZmluZSBNZWRpYVNlc3Npb25NYW5hZ2VyX2gK
IAotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgi
CisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOworY2xhc3Mg
SFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIE1lZGlhU2Vzc2lvbjsKIAogY2xhc3MgTWVkaWFTZXNz
aW9uTWFuYWdlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIE1lZGlhU2Vzc2lvbk1hbmFnZXImIHNo
YXJlZE1hbmFnZXIoKTsKIAotICAgIGVudW0gTWVkaWFUeXBlIHsKLSAgICAgICAgTm9uZSwKLSAg
ICAgICAgVmlkZW8sCi0gICAgICAgIEF1ZGlvLAotICAgICAgICBXZWJBdWRpbywKLSAgICB9Owor
ICAgIGJvb2wgaGFzKE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKSBjb25zdDsKKyAgICBpbnQgY291
bnQoTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUpIGNvbnN0OwogCi0gICAgYm9vbCBoYXMoTWVkaWFU
eXBlKSBjb25zdDsKLSAgICBpbnQgY291bnQoTWVkaWFUeXBlKSBjb25zdDsKKyAgICB2b2lkIGJl
Z2luSW50ZXJydXB0aW9uKCk7CisgICAgdm9pZCBlbmRJbnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9u
OjpFbmRJbnRlcnJ1cHRpb25GbGFncyk7CiAKIHByb3RlY3RlZDoKLSAgICBmcmllbmQgY2xhc3Mg
TWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOwotICAgIHZvaWQgYWRkVG9rZW4oTWVkaWFTZXNzaW9u
TWFuYWdlclRva2VuJik7Ci0gICAgdm9pZCByZW1vdmVUb2tlbihNZWRpYVNlc3Npb25NYW5hZ2Vy
VG9rZW4mKTsKKyAgICBmcmllbmQgY2xhc3MgTWVkaWFTZXNzaW9uOworICAgIHZvaWQgYWRkU2Vz
c2lvbihNZWRpYVNlc3Npb24mKTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb24oTWVkaWFTZXNzaW9u
Jik7CiAKIHByaXZhdGU6CiAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcigpOwogCiAgICAgdm9pZCB1
cGRhdGVTZXNzaW9uU3RhdGUoKTsKIAotICAgIFZlY3RvcjxNZWRpYVNlc3Npb25NYW5hZ2VyVG9r
ZW4qPiBtX3Rva2VuczsKLX07Ci0KLWNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQgewot
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQpOwotcHVi
bGljOgotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQoKSB7IH0KLQotICAgIHZpcnR1YWwg
TWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0ID0gMDsKLQot
cHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQoKSB7IH0K
LX07Ci0KLWNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbiB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4+IGNyZWF0ZShNZWRp
YVNlc3Npb25NYW5hZ2VyQ2xpZW50Jik7Ci0KLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4o
TWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYpOwotICAgIH5NZWRpYVNlc3Npb25NYW5hZ2VyVG9r
ZW4oKTsKLQotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBj
b25zdCB7IHJldHVybiBtX3R5cGU7IH0KLQotcHJpdmF0ZToKLQotICAgIE1lZGlhU2Vzc2lvbk1h
bmFnZXJDbGllbnQmIG1fY2xpZW50OwotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1lZGlhVHlw
ZSBtX3R5cGU7CisgICAgVmVjdG9yPE1lZGlhU2Vzc2lvbio+IG1fc2Vzc2lvbnM7CisgICAgaW50
IG1faW50ZXJydXB0aW9uczsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAJKHJldmlz
aW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rl
c3RpbmF0aW9uTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQCBBdWRpb0Rl
c3RpbmF0aW9uTWFjOjpBdWRpb0Rlc3RpbmF0aW9uTWFjCiAgICAgLCBtX3JlbmRlckJ1cyhBdWRp
b0J1czo6Y3JlYXRlKDIsIGtCdWZmZXJTaXplLCBmYWxzZSkpCiAgICAgLCBtX3NhbXBsZVJhdGUo
c2FtcGxlUmF0ZSkKICAgICAsIG1faXNQbGF5aW5nKGZhbHNlKQotICAgICwgbV9tZWRpYVNlc3Np
b25NYW5hZ2VyVG9rZW4oTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOjpjcmVhdGUoKnRoaXMpKQor
ICAgICwgbV9tZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQogewogICAg
IC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91dHB1dFVuaXQKICAgICBBdWRpb0NvbXBv
bmVudCBjb21wOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
RGVzdGluYXRpb25NYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oCShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgogI2lu
Y2x1ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2Vy
LmgiCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlv
VW5pdC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQW4gQXVkaW9EZXN0
aW5hdGlvbiB1c2luZyBDb3JlQXVkaW8ncyBkZWZhdWx0IG91dHB1dCBBdWRpb1VuaXQKIAotY2xh
c3MgQXVkaW9EZXN0aW5hdGlvbk1hYyA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uLCBwdWJsaWMg
TWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCB7CitjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uTWFjIDog
cHVibGljIEF1ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBNZWRpYVNlc3Npb25DbGllbnQgewogcHVi
bGljOgogICAgIEF1ZGlvRGVzdGluYXRpb25NYWMoQXVkaW9JT0NhbGxiYWNrJiwgZmxvYXQgc2Ft
cGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbk1hYygpOwpAQCAtNTksNyAr
NTksNyBAQCBwcml2YXRlOgogCiAgICAgT1NTdGF0dXMgcmVuZGVyKFVJbnQzMiBudW1iZXJPZkZy
YW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOwogCi0gICAgdmlydHVhbCBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFTZXNz
aW9uTWFuYWdlcjo6V2ViQXVkaW87IH0KKyAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFU
eXBlIG1lZGlhVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW87IH0K
IAogICAgIEF1ZGlvVW5pdCBtX291dHB1dFVuaXQ7CiAgICAgQXVkaW9JT0NhbGxiYWNrJiBtX2Nh
bGxiYWNrOwpAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1BsYXlpbmc7
CiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFTZXNz
aW9uTWFuYWdlclRva2VuPiBtX21lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbjsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lvbjsKICNlbmRpZgogfTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJN
YWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9N
ZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcAkocmV2aXNpb24gMTYxMzU4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MiwxNCArNDIsMTQgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBrTG93UG93
ZXJWaWRlb0J1ZmZlcgogCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25T
dGF0ZSgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vz
c2lvblN0YXRlKCkgLSB0eXBlczogVmlkZW8oJWQpLCBBdWRpbyglZCksIFdlYkF1ZGlvKCVkKSIs
IGNvdW50KFZpZGVvKSwgY291bnQoQXVkaW8pLCBjb3VudChXZWJBdWRpbykpOworICAgIExPRyhN
ZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpIC0gdHlwZXM6
IFZpZGVvKCVkKSwgQXVkaW8oJWQpLCBXZWJBdWRpbyglZCkiLCBjb3VudChNZWRpYVNlc3Npb246
OlZpZGVvKSwgY291bnQoTWVkaWFTZXNzaW9uOjpBdWRpbyksIGNvdW50KE1lZGlhU2Vzc2lvbjo6
V2ViQXVkaW8pKTsKIAotICAgIGlmIChoYXMoV2ViQXVkaW8pKQorICAgIGlmIChoYXMoTWVkaWFT
ZXNzaW9uOjpXZWJBdWRpbykpCiAgICAgICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigp
LnNldFByZWZlcnJlZEJ1ZmZlclNpemUoa1dlYkF1ZGlvQnVmZmVyU2l6ZSk7CiAgICAgLy8gRklY
TUU6IDxodHRwOi8vd2Via2l0Lm9yZy9iLzExNjcyNT4gRmlndXJlIG91dCB3aHkgZW5hYmxpbmcg
dGhlIGNvZGUgYmVsb3cKICAgICAvLyBjYXVzZXMgbWVkaWEgTGF5b3V0VGVzdHMgdG8gZmFpbCBv
biAxMC44LgogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAotICAg
IGVsc2UgaWYgKChoYXMoVmlkZW8pIHx8IGhhcyhBdWRpbykpICYmIFNldHRpbmdzOjpsb3dQb3dl
clZpZGVvQXVkaW9CdWZmZXJTaXplRW5hYmxlZCgpKQorICAgIGVsc2UgaWYgKChoYXMoTWVkaWFT
ZXNzaW9uOjpWaWRlbykgfHwgaGFzKE1lZGlhU2Vzc2lvbjo6QXVkaW8pKSAmJiBTZXR0aW5nczo6
bG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQoKSkKICAgICAgICAgQXVkaW9TZXNz
aW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShrTG93UG93ZXJWaWRl
b0J1ZmZlclNpemUpOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDcgQEAKICNpbmNsdWRlICJNYWlu
RnJhbWUuaCIKICNpbmNsdWRlICJNYWxsb2NTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiTWVkaWFQ
bGF5ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTWVt
b3J5Q2FjaGUuaCIKICNpbmNsdWRlICJNZW1vcnlJbmZvLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpA
QCAtMjI3MSw0ICsyMjcyLDE5IEBAIHZvaWQgSW50ZXJuYWxzOjppbml0aWFsaXplTW9ja01lZGlh
U291cmMKIH0KICNlbmRpZgogCit2b2lkIEludGVybmFsczo6YmVnaW5NZWRpYVNlc3Npb25JbnRl
cnJ1cHRpb24oKQoreworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5i
ZWdpbkludGVycnVwdGlvbigpOworfQorCit2b2lkIEludGVybmFsczo6ZW5kTWVkaWFTZXNzaW9u
SW50ZXJydXB0aW9uKGNvbnN0IFN0cmluZyYgZmxhZ3NTdHJpbmcpCit7CisgICAgTWVkaWFTZXNz
aW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncyA9IE1lZGlhU2Vzc2lvbjo6Tm9GbGFnczsK
KworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShmbGFnc1N0cmluZywgIk1heVJlc3VtZVBsYXlp
bmciKSkKKyAgICAgICAgZmxhZ3MgPSBNZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmc7Cisg
ICAgCisgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmVuZEludGVycnVw
dGlvbihmbGFncyk7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAko
cmV2aXNpb24gMTYxMzU4KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMyLDYgKzMzMiw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRp
YWxpemVNb2NrTWVkaWFTb3VyY2UoKTsKICNlbmRpZgogCisgICAgdm9pZCBiZWdpbk1lZGlhU2Vz
c2lvbkludGVycnVwdGlvbigpOworICAgIHZvaWQgZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
KGNvbnN0IFN0cmluZyYpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFscyhEb2N1
bWVudCopOwogICAgIERvY3VtZW50KiBjb250ZXh0RG9jdW1lbnQoKSBjb25zdDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjc4LDQg
KzI3OCw3IEBACiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gQ2xpZW50UmVjdCBzZWxlY3Rpb25Cb3Vu
ZHMoKTsKICAgICAKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU09VUkNFXSB2b2lkIGluaXRpYWxp
emVNb2NrTWVkaWFTb3VyY2UoKTsKKworICAgIHZvaWQgYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb24oKTsKKyAgICB2b2lkIGVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbihET01TdHJpbmcg
ZmxhZ3MpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTM3NikKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE0LTAx
LTA2ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFRl
YWNoIE1lZGlhU2Vzc2lvbk1hbmFnZXIgdG8gbWFuYWdlIGludGVycnVwdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjUzMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
IEFkZCAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9hbmltYXRpb24gdG8gV2ViQ29yZSBpbmNsdWRl
IGRpcmVjdG9yaWVzLgorCiAyMDE0LTAxLTA2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIEFub3RoZXIgYnVpbGQgZml4LgpJbmRleDogU291cmNlL1dl
YktpdDIvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw3IEBAIHNldChXZWJLaXQyX0lOQ0xVREVf
RElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0
ZWRncmFwaGljcyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0iCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L3BsYXRmb3JtL2FuaW1hdGlvbiIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
YXVkaW8iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzIgogICAgICIke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzIgogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6eiIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjEz
NzYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDEyIEBACisyMDE0LTAxLTA2ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29t
PgorCisgICAgICAgIFRlYWNoIE1lZGlhU2Vzc2lvbk1hbmFnZXIgdG8gbWFuYWdlIGludGVycnVw
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NjUzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6IEFkZCAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9hbmltYXRpb24gdG8g
V2ViQ29yZSBpbmNsdWRlIGRpcmVjdG9yaWVzLgorCiAyMDE0LTAxLTA2ICBNYXJ0aW4gUm9iaW5z
b24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBTbWFsbCBidWlsZCBmaXggZm9y
IHRoZSBHVEsrIENNYWtlIHBvcnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTYx
MzU4KQorKysgU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsNyBAQCBzZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJD
T1JFX0RJUn0vcGFnZS9zY3JvbGxpbmciCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtIgog
ICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9hbmltYXRpb24iCisgICAgIiR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL2F1ZGlvIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGlj
cyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycyIKICAgICAi
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enoiCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNjEzNzYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNyBAQAorMjAxNC0wMS0wNiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBUZWFjaCBNZWRpYVNlc3Npb25NYW5hZ2VyIHRvIG1hbmFnZSBp
bnRlcnJ1cHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjY1MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIG1lZGlhL3ZpZGVvLWludGVycnVwdGlvbi1hY3RpdmUtd2hlbi1lbGVtZW50LWNyZWF0
ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS92aWRlby1pbnRlcnJ1cHRp
b24tYWN0aXZlLXdoZW4tZWxlbWVudC1jcmVhdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLXdpdGgtcmVz
dW1lLWFsbG93aW5nLXBsYXkuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8taW50
ZXJydXB0aW9uLXdpdGgtcmVzdW1lLW5vdC1hbGxvd2luZy1wbGF5LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLXdpdGgtcmVzdW1lLW5vdC1h
bGxvd2luZy1wbGF5Lmh0bWw6IEFkZGVkLgorCiAyMDE0LTAxLTA2ICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxNjExOTUpOiBBY2lk
MiByZWdyZXNzaW9uIHRlc3RzIGZyZXF1ZW50bHkgZmFpbApJbmRleDogTGF5b3V0VGVzdHMvbWVk
aWEvdmlkZW8taW50ZXJydXB0aW9uLWFjdGl2ZS13aGVuLWVsZW1lbnQtY3JlYXRlZC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9u
LWFjdGl2ZS13aGVuLWVsZW1lbnQtY3JlYXRlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24tYWN0aXZlLXdoZW4tZWxlbWVu
dC1jcmVhdGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1IEBACitU
ZXN0IGEgPHZpZGVvPiBlbGVtZW50IGNyYXRlZCBkdXJpbmcgaW50ZXJydXB0aW9uIGJlaGF2ZXMg
Y29ycmVjdGx5LgorCitSVU4od2luZG93LmludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvbigpKQorUlVOKHZpZGVvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKSkK
K1JVTihkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHZpZGVvKSkKK0VWRU5UKGNhbnBsYXl0aHJv
dWdoKQorCitSVU4odmlkZW8ucGxheSgpKQorMjUwbXMgdGltZXIgZmlyZWQuLi4KK0VYUEVDVEVE
ICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSworUlVOKHdpbmRvdy5pbnRlcm5hbHMuZW5kTWVk
aWFTZXNzaW9uSW50ZXJydXB0aW9uKCdNYXlSZXN1bWVQbGF5aW5nJykpCitFVkVOVChwbGF5aW5n
KQorCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1
cHRpb24tYWN0aXZlLXdoZW4tZWxlbWVudC1jcmVhdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLWFjdGl2ZS13aGVuLWVsZW1lbnQtY3Jl
YXRlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJy
dXB0aW9uLWFjdGl2ZS13aGVuLWVsZW1lbnQtY3JlYXRlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTQgQEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz1t
ZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0Lmpz
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFyIHN0YXRlID0gMDsK
KworICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tTdGF0ZSgpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCIyNTBtcyB0aW1lciBmaXJlZC4uLiIpOworICAgICAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgdHJ1ZSk7CisgICAgICAgICAg
ICAgICAgc3RhdGUgPSAicmVzdW1pbmciOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKSAKKyAgICAgICAgICAgICAgICAgICAgcnVuKCJ3aW5kb3cuaW50ZXJuYWxzLmVuZE1l
ZGlhU2Vzc2lvbkludGVycnVwdGlvbignTWF5UmVzdW1lUGxheWluZycpIik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHBsYXlpbmcoKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGlmIChzdGF0ZSAhPSAicmVzdW1pbmciKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgICAgICAg
ICAgZmFpbFRlc3QoIjxiPlBsYXliYWNrIHN0YXJ0ZWQgZHVyaW5nIGludGVycnVwdGlvbi48L2I+
Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgICAgIGVuZFRlc3Qo
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gY2FucGxheXRocm91Z2go
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAg
ICAgICAgICAgICAgcnVuKCJ2aWRlby5wbGF5KCkiKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGNoZWNrU3RhdGUsIDI1MCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0
aW9uIHN0YXJ0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93Lmlu
dGVybmFscykgCisgICAgICAgICAgICAgICAgICAgIHJ1bigid2luZG93LmludGVybmFscy5iZWdp
bk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpIik7OworICAgICAgICAgICAgICAgIHJ1bigidmlk
ZW8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd2aWRlbycpIik7CisgICAgICAgICAgICAgICAg
cnVuKCJkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHZpZGVvKSIpOworICAgICAgICAgICAgICAg
IHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBjYW5wbGF5dGhyb3VnaCk7CisgICAgICAg
ICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywgcGxheWluZyk7CisgICAgICAgICAgICAg
ICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0Iik7Cisg
ICAgICAgICAgICAgICAgc3RhdGUgPSAiaW50ZXJydXB0ZWQiOworICAgICAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCki
PgorICAgICAgICA8cD5UZXN0IGEgJmx0O3ZpZGVvJmd0OyBlbGVtZW50IGNyYXRlZCBkdXJpbmcg
aW50ZXJydXB0aW9uIGJlaGF2ZXMgY29ycmVjdGx5LjwvcD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUt
YWxsb3dpbmctcGxheS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVk
aWEvdmlkZW8taW50ZXJydXB0aW9uLXdpdGgtcmVzdW1lLWFsbG93aW5nLXBsYXktZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9u
LXdpdGgtcmVzdW1lLWFsbG93aW5nLXBsYXktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTQgQEAKKworVGVzdCB0aGF0IHBsYXkoKSBkdXJpbmcgaW50ZXJydXB0aW9uIGRv
ZXMgbm90aGluZywgZW5kaW5nIGludGVycnVwdGlvbiBhbGxvd3MgcGxheWJhY2sgdG8gcmVzdW1l
LgorCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKKworUlVOKHdpbmRvdy5pbnRlcm5hbHMuYmVnaW5N
ZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oKSkKK1JVTih2aWRlby5wbGF5KCkpCisyNTBtcyB0aW1l
ciBmaXJlZC4uLgorRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCitSVU4od2lu
ZG93LmludGVybmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oJ01heVJlc3VtZVBsYXlp
bmcnKSkKK0VWRU5UKHBsYXlpbmcpCisKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLXdpdGgt
cmVzdW1lLWFsbG93aW5nLXBsYXkuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzY3JpcHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3Jj
PXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2
YXIgc3RhdGUgPSAwOworCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja1N0YXRlKCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjI1MG1zIHRpbWVyIGZpcmVk
Li4uIik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCB0cnVl
KTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9ICJyZXN1bWluZyI7CisgICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpIAorICAgICAgICAgICAgICAgICAgICBydW4oIndpbmRvdy5p
bnRlcm5hbHMuZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCdNYXlSZXN1bWVQbGF5aW5nJyki
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gcGxheWluZygpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlICE9ICJyZXN1bWluZyIpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAg
ICAgICAgICAgICAgICAgICBmYWlsVGVzdCgiPGI+UGxheWJhY2sgc3RhcnRlZCBkdXJpbmcgaW50
ZXJydXB0aW9uLjwvYj4iKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAg
ICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBj
YW5wbGF5dGhyb3VnaCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCIiKTsKKworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSAKKyAgICAg
ICAgICAgICAgICAgICAgcnVuKCJ3aW5kb3cuaW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uKCkiKTs7CisgICAgICAgICAgICAgICAgc3RhdGUgPSAiaW50ZXJydXB0ZWQiOwor
ICAgICAgICAgICAgICAgIHJ1bigidmlkZW8ucGxheSgpIik7CisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChjaGVja1N0YXRlLCAyNTApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
dW5jdGlvbiBzdGFydCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZmluZE1lZGlh
RWxlbWVudCgpOworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gn
LCBjYW5wbGF5dGhyb3VnaCk7CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5n
JywgcGxheWluZyk7CisgICAgICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgi
dmlkZW8iLCAiY29udGVudC90ZXN0Iik7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKworICAgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICAgIDx2
aWRlbyBjb250cm9scyA+PC92aWRlbz4KKyAgICAgICAgPHA+VGVzdCB0aGF0IHBsYXkoKSBkdXJp
bmcgaW50ZXJydXB0aW9uIGRvZXMgbm90aGluZywgZW5kaW5nIGludGVycnVwdGlvbiBhbGxvd3Mg
cGxheWJhY2sgdG8gcmVzdW1lLjwvcD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtbm90LWFsbG93aW5n
LXBsYXktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1ub3QtYWxsb3dpbmctcGxheS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0
aC1yZXN1bWUtbm90LWFsbG93aW5nLXBsYXktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTUgQEAKKworVGVzdCB0aGF0IHBsYXkoKSBkdXJpbmcgaW50ZXJydXB0aW9uIGRv
ZXMgbm90aGluZywgZW5kaW5nIGludGVycnVwdGlvbiBkb2VzIG5vdCBhbGxvdyBwbGF5YmFjayB0
byByZXN1bWUuCisKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorCitSVU4od2luZG93LmludGVybmFs
cy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpKQorUlVOKHZpZGVvLnBsYXkoKSkKKzI1
MG1zIHRpbWVyIGZpcmVkLi4uCitFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sK
K1JVTih3aW5kb3cuaW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbignJykpCisy
NTBtcyB0aW1lciBmaXJlZC4uLgorRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9L
CisKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWludGVycnVw
dGlvbi13aXRoLXJlc3VtZS1ub3QtYWxsb3dpbmctcGxheS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1ub3QtYWxsb3dp
bmctcGxheS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50
ZXJydXB0aW9uLXdpdGgtcmVzdW1lLW5vdC1hbGxvd2luZy1wbGF5Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1OSBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQg
c3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRl
c3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2YXIgc3RhdGUg
PSAwOworCisgICAgICAgICAgICBmdW5jdGlvbiBwbGF5aW5nKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gInJlc3VtaW5nIikKKyAgICAgICAgICAgICAgICAg
ICAgZmFpbFRlc3QoIjxiPlBsYXliYWNrIHN0YXJ0ZWQgYWZ0ZXIgaW50ZXJydXB0aW9uLjwvYj4i
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCI8
Yj5QbGF5YmFjayBzdGFydGVkIGR1cmluZyBpbnRlcnJ1cHRpb24uPC9iPiIpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja1N0YXRlKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjI1MG1zIHRpbWVyIGZpcmVkLi4uIik7Cisg
ICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCB0cnVlKTsKKyAgICAg
ICAgICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgICAgICAgICAgY2FzZSAiaW50ZXJy
dXB0ZWQiOgorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9ICJyZXN1bWluZyI7CisgICAgICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2tTdGF0ZSwgMjUwKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIAorICAgICAgICAgICAgICAgICAgICAgICAgcnVu
KCJ3aW5kb3cuaW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbignJykiKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAicmVzdW1pbmci
OgorICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgICAg
ICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gY2FucGxheXRocm91
Z2goKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisK
KyAgICAgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgCisgICAgICAgICAgICAgICAg
ICAgIHJ1bigid2luZG93LmludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigp
Iik7OworICAgICAgICAgICAgICAgIHN0YXRlID0gImludGVycnVwdGVkIjsKKyAgICAgICAgICAg
ICAgICBydW4oInZpZGVvLnBsYXkoKSIpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY2hl
Y2tTdGF0ZSwgMjUwKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3Rh
cnQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsK
KyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgY2FucGxheXRo
cm91Z2gpOworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgncGxheWluZycsIHBsYXlpbmcp
OworICAgICAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNv
bnRlbnQvdGVzdCIpOworICAgICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisKKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8dmlkZW8gY29udHJv
bHMgPjwvdmlkZW8+CisgICAgICAgIDxwPlRlc3QgdGhhdCBwbGF5KCkgZHVyaW5nIGludGVycnVw
dGlvbiBkb2VzIG5vdGhpbmcsIGVuZGluZyBpbnRlcnJ1cHRpb24gZG9lcyBub3QgYWxsb3cgcGxh
eWJhY2sgdG8gcmVzdW1lLjwvcD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220537</attachid>
            <date>2014-01-07 11:48:41 -0800</date>
            <delta_ts>2014-01-07 14:28:38 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>interruptions_patch_5.txt</filename>
            <type>text/plain</type>
            <size>53921</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTM3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc4IEBACisyMDE0LTAxLTA2ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFRlYWNoIE1lZGlhU2Vz
c2lvbk1hbmFnZXIgdG8gbWFuYWdlIGludGVycnVwdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjUzMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBtZWRpYS92aWRlby1pbnRlcnJ1cHRp
b24tYWN0aXZlLXdoZW4tZWxlbWVudC1jcmVhdGVkLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlh
L3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5Lmh0bWwKKyAgICAg
ICAgICAgICAgIG1lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1ub3QtYWxsb3dp
bmctcGxheS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IGZ1bmN0aW9u
cyBuZWVkZWQgYnkgSW50ZXJuYWxzLgorCisgICAgICAgIEFkZCBNZWRpYVNlc3Npb24gYW5kIE1l
ZGlhU2Vzc2lvbk1hbmFnZXIuCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAg
ICAgQXV0b21hdGljYWxseSBwYXVzZS9wbGF5IGZvciBpbnRlcnJ1cHRpb25zLiBNb3ZlIG1lZGlh
IHJlc3RyaWN0aW9uIG1hbmFnZW1lbnQgdG8gYSBNZWRpYVNlc3Npb24uCisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBHZXQgcmlkIG9mIG1fbG9hZEluaXRpYXRlZEJ5VXNlckdl
c3R1cmUgYW5kIG1fdXNlclN0YXJ0ZWRQbGF5YmFjaywKKyAgICAgICAgICAgIHRoZXkgYXJlbid0
IG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCk6IFVz
ZSB0aGUgbWVkaWEgc2Vzc2lvbiB0byBtYW5hZ2UgcmVzdHJpY3Rpb25zLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheSk6IFJlbW92ZSByZWR1bmRhbnQgaU9TIGNvZGUu
IFBvc3Rwb25lIHBsYXliYWNrIGlmIGNhbGxlZCAKKyAgICAgICAgICAgIGR1cmluZyBhbiBpbnRl
cnJ1cHRpb24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVzZSk6IFJl
bWVtYmVyIHRvIG5vdCByZXN1bWUgcGxheWJhY2sgd2hlbiBpdCBlbmRzIGlmIGNhbGxlZCBkdXJp
bmcKKyAgICAgICAgICAgIGFuIGludGVycnVwdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZyk6IFJlYXJyYW5nZSBjb2RlIHRvIG1ha2Ug
aXQgZWFzaWVyIHRvIHVuZGVyc3RhbmQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojpjb3VsZFBsYXlJZkVub3VnaERhdGEpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnBhdXNlZEZvclVzZXJJbnRlcmFjdGlvbik6IFJldHVybiB0cnVlIGlm
IHBhdXNlZCBiZWNhdXNlIG9mIGFuIGludGVycnVwdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUJlaGF2aW9yc1Jlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2Vy
R2VzdHVyZSk6IEJlIGV4cGxpY2l0IGFib3V0CisgICAgICAgICAgICB3aGljaCByZXN0cmljdGlv
bnMgYXJlIHJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVR5cGUpOiBNZWRpYVNlc3Npb25NYW5hZ2VyOjo8VHlwZT4gLT4gTWVkaWFTZXNzaW9uOjo8VHlw
ZT4uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpiZWdpbkludGVycnVwdGlv
bik6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuZEludGVycnVw
dGlvbik6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorCisgICAg
ICAgIFB1bGxlZCBNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4gb3V0IG9mIE1lZGlhU2Vzc2lvbk1h
bmFnZXIuY3BwLCBhZGRlZCBmdW5jdGlvbmFsaXR5IHRvIG1hbmFnZQorICAgICAgICBtZWRpYSBl
bGVtZW50IHJlc3RyaWN0aW9ucyBhbmQgaW50ZXJydXB0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9NZWRpYVNlc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6TWVkaWFT
ZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6fk1lZGlhU2Vzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmJlZ2luSW50ZXJydXB0aW9uKTogSW5m
b3JtIGNsaWVudCBvZiBpbnRlcnJ1cHRpb24gc3RhdGUgY2hhbmdlLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24pOiBEaXR0by4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaDogQWRkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbk1hbmFnZXI6Ok1lZGlhU2Vzc2lvbk1hbmFnZXIpOiBJbml0aWFsaXplIGludGVycnVwdGlv
biBjb3VudGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6aGFzKTog
TWVkaWFUeXBlIGlzIGRlZmluZWQgaW4gTWVkaWFTZXNzaW9uLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTZXNzaW9uTWFuYWdlcjo6Y291bnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmJlZ2luSW50ZXJydXB0aW9uKTogSW5mb3JtIGFsbCBjbGllbnRz
IG9mIGludGVycnVwdGlvbiBzdGFydCBpZgorICAgICAgICAgICAgbm90IGFscmVhZHkgaW4gYW4g
aW50ZXJydXB0aW9uLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6ZW5k
SW50ZXJydXB0aW9uKTogSW5mb3JtIGFsbCBjbGllbnRzIGlmIGludGVycnVwdGlvbiBoYXMgZW5k
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRTZXNzaW9uKTog
UmVuYW1lZCBmcm9tIGFkZFRva2VuLiBTZXQgc2Vzc2lvbiBpbnRlcnJ1cHRpb24gc3RhdGUuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVTZXNzaW9uKTogUmVu
YW1lZCBmcm9tIHJlbW92ZVRva2VuLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vz
c2lvbk1hbmFnZXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3Rp
bmF0aW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25NYWM6OkF1
ZGlvRGVzdGluYXRpb25NYWMpOiBNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4gLT4gTWVkaWFTZXNz
aW9uLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmg6
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5j
cHA6CisgICAgICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUpOiBE
aXR0by4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIGZvciB0ZXN0cyB0byBiZWdpbiBhbmQg
ZW5kIGludGVycnVwdGlvbnMuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpiZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlv
bik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5pZGw6CisKIDIwMTQtMDEtMDYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dlYkdMXSBGQk8gRGVwdGggQnVmZmVyIEF0dGFjaG1lbnQgRnVu
Y3Rpb24gSW1wcm9wZXJseSBDbGVhcmluZyB3aXRoIDAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMTg3Nyw2ICsxODc3LDggQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCiAgICAgcGxhdGZvcm0vYXVkaW8vSFJU
Rktlcm5lbC5jcHAKICAgICBwbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcAorICAgIHBsYXRm
b3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAKKyAgICBwbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5j
cHAKICAgICBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCiAgICAgcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNjEz
NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkp
CkBAIC01MzUxLDYgKzUzNTEsMTAgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1Bhbm5lci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNl
c3Npb24uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24u
aCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIu
aCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgko
d29ya2luZyBjb3B5KQpAQCAtNzU2LDYgKzc1Niw5IEBAIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVz
aFNjaGVkdWxlckMxRVBOU18KIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlckMyRVBO
U18yNUxheWVyRmx1c2hTY2hlZHVsZXJDbGllbnRFCiBfX1pON1dlYkNvcmUxOUxheWVyRmx1c2hT
Y2hlZHVsZXJEMUV2CiBfX1pON1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVsZXJEMkV2CitfX1pO
N1dlYkNvcmUxOU1lZGlhU2Vzc2lvbk1hbmFnZXIxM3NoYXJlZE1hbmFnZXJFdgorX19aTjdXZWJD
b3JlMTlNZWRpYVNlc3Npb25NYW5hZ2VyMTVlbmRJbnRlcnJ1cHRpb25FTlNfMTJNZWRpYVNlc3Np
b24yMEVuZEludGVycnVwdGlvbkZsYWdzRQorX19aTjdXZWJDb3JlMTlNZWRpYVNlc3Npb25NYW5h
Z2VyMTdiZWdpbkludGVycnVwdGlvbkV2CiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJh
c2UxMXNldEhUVFBCb2R5RU4zV1RGMTBQYXNzUmVmUHRySU5TXzhGb3JtRGF0YUVFRQogX19aTjdX
ZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMTNzZXRIVFRQTWV0aG9kRVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMThzZXRIVFRQSGVhZGVyRmllbGRF
UEtjUktOM1dURjZTdHJpbmdFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcyMjUs
NiArNzIyNSw4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxGaWxlU3Ry
ZWFtLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEZpbGVTeXN0
ZW0uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cYXVkaW9cQXVk
aW9TZXNzaW9uLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1
ZGlvXE1lZGlhU2Vzc2lvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxhdWRpb1xNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEFOR0xFV2ViS2l0QnJpZGdlLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlvblxj
ZlxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cY2ZcSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWQ0YuY3BwIiAvPgpAQCAtMTkwODgsNiArMTkwOTAsOCBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cRmxvYXRDb252ZXJzaW9uLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xBdWRpb1Nlc3Npb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXEF1ZGlvU2Vzc2lvbkxp
c3RlbmVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xN
ZWRpYVNlc3Npb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1
ZGlvXE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXEFOR0xFV2ViS2l0QnJpZGdlLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xBdWRpb1RyYWNrUHJpdmF0ZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9u
XGNmXEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCShy
ZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTE0NTk2LDYgKzE0NTk2LDEyIEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xBdWRpb1Nlc3Npb25M
aXN0ZW5lci5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cYXVkaW88L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXE1l
ZGlhU2Vzc2lvbi5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cYXVkaW88L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlv
XE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXGF1ZGlvPC9G
aWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxncmFwaGljc1xBTkdMRVdlYktpdEJyaWRnZS5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZv
cm1cZ3JhcGhpY3M8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2
MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTI5LDYgKzEyOSw4IEBACiAJCTA3MDc1NkRGMTQyMzlCNEUw
MDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNzU2RDkxNDIzOUI0QzAwNDE0MTYxIC8qIEpTVGV4
dFRyYWNrQ3VlTGlzdC5jcHAgKi87IH07CiAJCTA3MDc1NkUwMTQyMzlCNEUwMDQxNDE2MSAvKiBK
U1RleHRUcmFja0N1ZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MDc1NkRBMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3Qu
aCAqLzsgfTsKIAkJMDcwOUZDNEUxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDlG
QzREMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggKi87IH07CisJCTA3
MEUwOTE5MTg3NUVFRkMwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MEUwOTE4MTg3NUVEOTMwMDNBMUQzQyAv
KiBNZWRpYVNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwNzBFMDkxQjE4NzVFRjcxMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MEUwOTFBMTg3
NUVGNzEwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uY3BwICovOyB9OwogCQkwNzBGNTQ5ODE3RjEy
RjZCMDAxNjlFMDQgLyogTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MEY1NDk3MTdG
MTJGNkIwMDE2OUUwNCAvKiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5o
ICovOyB9OwogCQkwNzBGNTQ5RTE3RjI0MDI3MDAxNjlFMDQgLyogQXVkaW9EZXN0aW5hdGlvbkNv
bnN1bWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzBGNTQ5RDE3RjI0MDI3MDAxNjlFMDQgLyogQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcxMTU4OTEx
N0RGNkY2NjAwRURGRTJCIC8qIE1lZGlhU3RyZWFtUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzExNTg4RjE3REY2MzM3MDBFREZFMkIg
LyogTWVkaWFTdHJlYW1Qcml2YXRlLmNwcCAqLzsgfTsKQEAgLTY3MTUsNiArNjcxNyw4IEBACiAJ
CTA3MDc1NkRBMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUZXh0VHJhY2tDdWVMaXN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDlGQzREMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3Np
YmlsaXR5U2xpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2li
aWxpdHlTbGlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwREQ4RjUwRjAx
ODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IG1lZGlhQ29udHJvbHMuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzBFMDkx
ODE4NzVFRDkzMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwNzBFMDkxQTE4NzVFRjcxMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3MEY1NDk3MTdGMTJGNkIwMDE2OUUwNCAvKiBNZWRpYVN0cmVh
bUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzBGNTQ5RDE3RjI0MDI3MDAxNjlFMDQgLyogQXVkaW9E
ZXN0aW5hdGlvbkNvbnN1bWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1
ZGlvRGVzdGluYXRpb25Db25zdW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzExNTg4RjE3REY2MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtUHJpdmF0ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjA1MCw2ICsyMjA1NCw4IEBACiAJCQkJQ0RB
Nzk4MjIxNzBBMjRGNDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbkxpc3RlbmVyLmggKi8sCiAJCQkJ
Q0RBRThDMDcxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwICovLAog
CQkJCUNEQUU4QzA4MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggKi8s
CisJCQkJMDcwRTA5MTgxODc1RUQ5MzAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5oICovLAorCQkJ
CTA3MEUwOTFBMTg3NUVGNzEwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uY3BwICovLAogCQkJCUZE
MzE2MDUzMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyLmggKi8sCiAJCQkJ
RkQ2MkY1MkQxNDU4OThEODAwOTRCMEVEIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQuaCAq
LywKIAkJCQlGRDMxNjA1NDEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9VdGlsaXRpZXMuY3BwICov
LApAQCAtMjQ1OTksNiArMjQ2MDUsNyBAQAogCQkJCTQzNjcwOEM3MTJEOUNBNEIwMDA0NDIzNCAv
KiBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcwOEM5
MTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDg1NEIwMTUxMjU1RTRFNjAwQjlDREQwIC8qIFJlbmRlclNWR0lubGluZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMDcwRTA5MTkxODc1RUVGQzAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDg1NEIwMTcxMjU1RTRFNjAwQjlDREQwIC8qIFJlbmRlclNWR0lubGlu
ZVRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTYyMTdBOUQwMUIwMDI3NEU0MiAvKiBT
b3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcwOENCMTJEOUNBNEIwMDA0NDIz
NCAvKiBSZW5kZXJTVkdNb2RlbE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODA3Myw2ICsy
ODA4MCw3IEBACiAJCQkJOTMzMDlFMTEwOTlFNjQ5MjAwNTZFNTgxIC8qIFNwbGl0RWxlbWVudENv
bW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMTMwOTlFNjQ5MjAwNTZFNTgxIC8q
IFNwbGl0VGV4dE5vZGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTRCMTdE
MTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTA3MEUwOTFCMTg3NUVGNzEwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMTUwOTlFNjQ5MjAwNTZFNTgxIC8qIFNwbGl0
VGV4dE5vZGVDb250YWluaW5nRWxlbWVudENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTFFMTE1NDgxMzAxNUM1RDAwNTRBQzhDIC8qIFNwb3RMaWdodFNvdXJjZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5N0JDNkEzRTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMRXhjZXB0aW9uLmNwcCBp
biBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMyArMzAsMTMgQEAKICNpbmNsdWRlICJB
cHBsaWNhdGlvbkNhY2hlSG9zdC5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS5oIgogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMu
aCIKKyNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
LmgiCiAjaW5jbHVkZSAiQ2xpZW50UmVjdC5oIgogI2luY2x1ZGUgIkNsaWVudFJlY3RMaXN0Lmgi
CiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiQ29udGVudFR5
cGUuaCIKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCi0jaW5jbHVkZSAiQ1NTVmFsdWVL
ZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkRpYWdub3N0aWNMb2dnaW5nS2V5cy5oIgogI2luY2x1ZGUg
IkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCkBAIC01MCw2
ICs1MCw3IEBACiAjaW5jbHVkZSAiSlNIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGFu
Z3VhZ2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKQEAgLTU5LDcgKzYwLDcgQEAKICNpbmNsdWRl
ICJNZWRpYUtleUV2ZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCiAjaW5jbHVkZSAiTWVk
aWFRdWVyeUV2YWx1YXRvci5oIgotI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNs
dWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGFnZUFjdGl2aXR5QXNzZXJ0
aW9uVG9rZW4uaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJSZW5kZXJWaWRl
by5oIgpAQCAtMTM3LDEwICsxMzgsNiBAQAogI2luY2x1ZGUgIlBsYXRmb3JtVGV4dFRyYWNrLmgi
CiAjZW5kaWYKIAotI2lmIFVTRShBVURJT19TRVNTSU9OKQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkK
ICNpbmNsdWRlICJKU01lZGlhQ29udHJvbHNIb3N0LmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9s
c0hvc3QuaCIKQEAgLTMxNiw3ICszMTMsNiBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFF
bGVtZW50KGNvbnN0CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgLCBt
X25lZWRXaWRnZXRVcGRhdGUoZmFsc2UpCiAjZW5kaWYKLSAgICAsIG1fbG9hZEluaXRpYXRlZEJ5
VXNlckdlc3R1cmUoZmFsc2UpCiAgICAgLCBtX2NvbXBsZXRlbHlMb2FkZWQoZmFsc2UpCiAgICAg
LCBtX2hhdmVQcmVwYXJlZFRvUGxheShmYWxzZSkKICAgICAsIG1fcGFyc2luZ0luUHJvZ3Jlc3Mo
Y3JlYXRlZEJ5UGFyc2VyKQpAQCAtMzI1LDcgKzMyMSw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhU
TUxNZWRpYUVsZW1lbnQoY29uc3QKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1f
cmVxdWVzdGluZ1BsYXkoZmFsc2UpCi0gICAgLCBtX3VzZXJTdGFydGVkUGxheWJhY2soZmFsc2Up
CiAjZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLCBtX3RyYWNrc0FyZVJlYWR5
KHRydWUpCkBAIC0zNDEsOSArMzM2LDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxl
bWVudChjb25zdAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAgICAgLCBtX2F1ZGlvU291cmNlTm9k
ZSgwKQogI2VuZGlmCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCi0gICAgLCBtX21lZGlhU2Vzc2lv
bk1hbmFnZXJUb2tlbihNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW46OmNyZWF0ZSgqdGhpcykpCi0j
ZW5kaWYKKyAgICAsIG1fbWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkK
ICAgICAsIG1fcmVwb3J0ZWRFeHRyYU1lbW9yeUNvc3QoMCkKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogICAgICwgbV9tZWRpYVN0cmVhbVNyY09iamVjdChudWxscHRyKQpAQCAtMzczLDggKzM2
Niw3IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QKICNpZiBFTkFC
TEUoSU9TX0FJUlBMQVkpCiAgICAgICAgIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVz
ZXJHZXN0dXJlVG9TaG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOwogI2VuZGlmCi0gICAgfSBlbHNl
Ci0gICAgICAgIG1fcmVzdHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7CisgICAgfQogI2VuZGlm
IC8vICFQTEFURk9STShJT1MpCiAKICAgICBhZGRFbGVtZW50VG9Eb2N1bWVudE1hcCgqdGhpcywg
ZG9jdW1lbnQpOwpAQCAtOTAyLDIxICs4OTQsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojps
b2FkKCkKICAgICAKICAgICBpZiAodXNlckdlc3R1cmVSZXF1aXJlZEZvckxvYWQoKSAmJiAhU2Ny
aXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICAKLSAgICBtX2xvYWRJbml0aWF0ZWRCeVVzZXJHZXN0dXJlID0gU2NyaXB0Q29udHJvbGxl
cjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7Ci0gICAgaWYgKG1fbG9hZEluaXRpYXRlZEJ5VXNl
ckdlc3R1cmUpCisgICAgaWYgKFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSgpKQogICAgICAgICByZW1vdmVCZWhhdmlvcnNSZXN0cmljdGlvbnNBZnRlckZpcnN0VXNlckdl
c3R1cmUoKTsKKwogICAgIHByZXBhcmVGb3JMb2FkKCk7CiAgICAgbG9hZEludGVybmFsKCk7Ci0K
LSNpZiBQTEFURk9STShJT1MpCi0gICAgLy8gVW5sZXNzIHRoaXMgbWV0aG9kIHdhcyBjYWxsZWQg
ZGlyZWN0bHkgYnkgdGhlIHVzZXIgb3IgdGhlIGFwcGxpY2F0aW9uIGFsbG93cyBhbnkgc2NyaXB0
IHRvIHRyaWdnZXIgcGxheWJhY2ssCi0gICAgLy8gcmV0dXJuIG5vdyBiZWNhdXNlIHByZXBhcmVU
b1BsYXkoKSB0ZWxscyB0aGUgbWVkaWEgZW5naW5lIHRvIHN0YXJ0IGxvYWRpbmcgZGF0YSBhcyBz
b29uIGFzIHRoZSBtb3ZpZSB2YWxpZGF0ZXMuCi0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9j
dW1lbnQoKS5zZXR0aW5ncygpOwotICAgIGlmICghbV9sb2FkSW5pdGlhdGVkQnlVc2VyR2VzdHVy
ZSAmJiAoIXNldHRpbmdzIHx8IHNldHRpbmdzLT5tZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2Vz
dHVyZSgpKSkKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0KICAgICBwcmVwYXJlVG9QbGF5KCk7
CiB9CiAKQEAgLTI2NTYsMTAgKzI2MzgsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5
KCkKICAgICBpZiAoU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAg
ICAgICAgIHJlbW92ZUJlaGF2aW9yc1Jlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZSgp
OwogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIHVzZXJSZXF1ZXN0c01lZGlhTG9hZGluZygpOwot
I2VuZGlmCi0KKyAgICBpZiAobV9tZWRpYVNlc3Npb24tPnN0YXRlKCkgPT0gTWVkaWFTZXNzaW9u
OjpJbnRlcnJ1cHRlZCkgeworICAgICAgICBtX3Jlc3VtZVBsYXliYWNrQWZ0ZXJJbnRlcnJ1cHRp
b24gPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIHBsYXlJbnRlcm5h
bCgpOwogfQogCkBAIC0yNzAyLDYgKzI2ODUsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpw
YXVzZSgpCiAgICAgaWYgKHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JSYXRlQ2hhbmdlKCkgJiYgIVNj
cmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQogICAgICAgICByZXR1cm47
CiAKKyAgICBpZiAobV9tZWRpYVNlc3Npb24tPnN0YXRlKCkgPT0gTWVkaWFTZXNzaW9uOjpJbnRl
cnJ1cHRlZCkgeworICAgICAgICBtX3Jlc3VtZVBsYXliYWNrQWZ0ZXJJbnRlcnJ1cHRpb24gPSBm
YWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBwYXVzZUludGVybmFsKCk7
CiB9CiAKQEAgLTQxMjEsMTIgKzQxMDksMjggQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpwb3Rl
bnRpYWxseVBsYXlpbgogICAgIC8vIHdoZW4gaXQgcmFuIG91dCBvZiBidWZmZXJlZCBkYXRhLiBB
IG1vdmllIGlzIHRoaXMgc3RhdGUgaXMgInBvdGVudGlhbGx5IHBsYXlpbmciLCBtb2R1bG8gdGhl
CiAgICAgLy8gY2hlY2tzIGluIGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpLgogICAgIGJvb2wgcGF1
c2VkVG9CdWZmZXIgPSBtX3JlYWR5U3RhdGVNYXhpbXVtID49IEhBVkVfRlVUVVJFX0RBVEEgJiYg
bV9yZWFkeVN0YXRlIDwgSEFWRV9GVVRVUkVfREFUQTsKLSAgICByZXR1cm4gKHBhdXNlZFRvQnVm
ZmVyIHx8IG1fcmVhZHlTdGF0ZSA+PSBIQVZFX0ZVVFVSRV9EQVRBKSAmJiBjb3VsZFBsYXlJZkVu
b3VnaERhdGEoKSAmJiAhaXNCbG9ja2VkT25NZWRpYUNvbnRyb2xsZXIoKTsKKyAgICAKKyAgICBp
ZiAoIShwYXVzZWRUb0J1ZmZlciB8fCBtX3JlYWR5U3RhdGUgPj0gSEFWRV9GVVRVUkVfREFUQSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBjb3VsZFBsYXlJZkVub3VnaERh
dGEoKSAmJiAhaXNCbG9ja2VkT25NZWRpYUNvbnRyb2xsZXIoKTsKIH0KIAogYm9vbCBIVE1MTWVk
aWFFbGVtZW50Ojpjb3VsZFBsYXlJZkVub3VnaERhdGEoKSBjb25zdAogewotICAgIHJldHVybiAh
cGF1c2VkKCkgJiYgIWVuZGVkUGxheWJhY2soKSAmJiAhc3RvcHBlZER1ZVRvRXJyb3JzKCkgJiYg
IXBhdXNlZEZvclVzZXJJbnRlcmFjdGlvbigpOworICAgIGlmIChwYXVzZWQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKGVuZGVkUGxheWJhY2soKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKHN0b3BwZWREdWVUb0Vycm9ycygpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAocGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1l
bnQ6OmVuZGVkUGxheWJhY2soKSBjb25zdApAQCAtNDE3MCw3ICs0MTc0LDkgQEAgYm9vbCBIVE1M
TWVkaWFFbGVtZW50OjpzdG9wcGVkRHVlVG9FcnJvcgogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OnBhdXNlZEZvclVzZXJJbnRlcmFjdGlvbigpIGNvbnN0CiB7Ci0vLyAgICByZXR1cm4gIXBhdXNl
ZCgpICYmIG1fcmVhZHlTdGF0ZSA+PSBIQVZFX0ZVVFVSRV9EQVRBICYmIFtVQSByZXF1aXJlcyBh
IGRlY2l0aW9ucyBmcm9tIHRoZSB1c2VyXQorICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+c3RhdGUo
KSA9PSBNZWRpYVNlc3Npb246OkludGVycnVwdGVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNDU1Nyw3ICs0NTYzLDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpkZWxpdmVyTm90aWZpY2F0aQogewogICAgIGlmIChub3RpZmljYXRpb24gPT0g
TWVkaWFQbGF5ZXJOb3RpZmljYXRpb25QbGF5UGF1c2VCdXR0b25QcmVzc2VkKSB7CiAjaWYgUExB
VEZPUk0oSU9TKQotICAgICAgICB1c2VyUmVxdWVzdHNNZWRpYUxvYWRpbmcoKTsKKyAgICAgICAg
cmVtb3ZlQmVoYXZpb3JzUmVzdHJpY3Rpb25zQWZ0ZXJGaXJzdFVzZXJHZXN0dXJlKCk7CiAjZW5k
aWYKICAgICAgICAgdG9nZ2xlUGxheVN0YXRlKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTUyOTgs
MTYgKzUzMDQsNiBAQCBBdWRpb1NvdXJjZVByb3ZpZGVyKiBIVE1MTWVkaWFFbGVtZW50OjphCiB9
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXNl
clJlcXVlc3RzTWVkaWFMb2FkaW5nKCkKLXsKLSAgICAvLyBUaGUgdXNlciBpcyByZXF1ZXN0aW5n
IGRhdGEgbG9hZGluZyBhbmQvb3IgcGxheWJhY2ssIHNvIHJlbW92ZSB0aGUgIm9ubHkgY2hhbmdl
IHBsYXliYWNrIGluIHJlc3BvbnNlCi0gICAgLy8gdG8gYSB1c2VyIGdlc3R1cmUiIHJlc3RyaWN0
aW9uIG9uIHRoaXMgbW92aWUuCi0gICAgbV91c2VyU3RhcnRlZFBsYXliYWNrID0gdHJ1ZTsKLSAg
ICBtX3Jlc3RyaWN0aW9ucyA9IE5vUmVzdHJpY3Rpb25zOwotfQotI2VuZGlmCi0KIGNvbnN0IFN0
cmluZyYgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFHcm91cCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fbWVkaWFHcm91cDsKQEAgLTU1NzksNyArNTU3NSwxMiBAQCBDYWNoZWRSZXNvdXJjZUxvYWRl
ciogSFRNTE1lZGlhRWxlbWVudDo6CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQmVo
YXZpb3JzUmVzdHJpY3Rpb25zQWZ0ZXJGaXJzdFVzZXJHZXN0dXJlKCkKIHsKLSAgICBtX3Jlc3Ry
aWN0aW9ucyA9IE5vUmVzdHJpY3Rpb25zOworICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24o
UmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9hZFJlc3RyaWN0aW9uKTsKKyAgICByZW1vdmVCZWhhdmlv
clJlc3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlvbik7
CisgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlVXNlckdlc3R1cmVGb3JGdWxs
c2NyZWVuUmVzdHJpY3Rpb24pOworI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKKyAgICByZW1vdmVC
ZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZVRvU2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyUmVzdHJpY3Rpb24pOworI2VuZGlmCiB9CiAKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZ
X0ZPUl9WSURFTykKQEAgLTU3MDIsMTUgKzU3MDMsMzQgQEAgdW5zaWduZWQgbG9uZyBsb25nIEhU
TUxNZWRpYUVsZW1lbnQ6OmZpbAogICAgIHJldHVybiAwOwogfQogCi0jaWYgVVNFKEFVRElPX1NF
U1NJT04pCi1NZWRpYVNlc3Npb25NYW5hZ2VyOjpNZWRpYVR5cGUgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFUeXBlKCkgY29uc3QKK01lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIEhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhVHlwZSgpIGNvbnN0CiB7CiAgICAgaWYgKGhhc1RhZ05hbWUoSFRNTE5hbWVzOjp2
aWRlb1RhZykpCi0gICAgICAgIHJldHVybiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpWaWRlbzsKKyAg
ICAgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6VmlkZW87CiAKLSAgICByZXR1cm4gTWVkaWFTZXNz
aW9uTWFuYWdlcjo6QXVkaW87CisgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6QXVkaW87Cit9CisK
K3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YmVnaW5JbnRlcnJ1cHRpb24oKQoreworICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmJlZ2luSW50ZXJydXB0aW9uIik7CisgICAgCisgICAg
bV9yZXN1bWVQbGF5YmFja0FmdGVySW50ZXJydXB0aW9uID0gIXBhdXNlZCgpOworICAgIGlmICht
X3Jlc3VtZVBsYXliYWNrQWZ0ZXJJbnRlcnJ1cHRpb24pCisgICAgICAgIHBhdXNlKCk7Cit9CisK
K3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW5kSW50ZXJydXB0aW9uKE1lZGlhU2Vzc2lvbjo6RW5k
SW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MpCit7CisgICAgYm9vbCBzaG91bGRSZXN1bWVQbGF5YmFj
ayA9IG1fcmVzdW1lUGxheWJhY2tBZnRlckludGVycnVwdGlvbjsKKyAgICBtX3Jlc3VtZVBsYXli
YWNrQWZ0ZXJJbnRlcnJ1cHRpb24gPSBmYWxzZTsKKworICAgIGlmICghZmxhZ3MgJiBNZWRpYVNl
c3Npb246Ok1heVJlc3VtZVBsYXlpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChzaG91
bGRSZXN1bWVQbGF5YmFjaykKKyAgICAgICAgcGxheSgpOwogfQotI2VuZGlmCiAKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDE2MTM1OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCiAj
aW5jbHVkZSAiTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5
ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJP
WFlfRk9SX1ZJREVPKQogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgpAQCAtNTMs
OSArNTQsNiBAQAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjZW5kaWYKIAotI2lmIFVTRShB
VURJT19TRVNTSU9OKQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKLSNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwNSw3ICsxMDMsNyBAQCBjbGFzcyBIVE1MTWVk
aWFFbGVtZW50CiAjZWxzZQogICAgIDogcHVibGljIEhUTUxFbGVtZW50CiAjZW5kaWYKLSAgICAs
IHByaXZhdGUgTWVkaWFQbGF5ZXJDbGllbnQsIHB1YmxpYyBNZWRpYVBsYXllclN1cHBvcnRzVHlw
ZUNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVET01P
YmplY3QsIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UKKyAgICAsIHByaXZhdGUgTWVk
aWFQbGF5ZXJDbGllbnQsIHB1YmxpYyBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCwgcHJp
dmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1Ymxp
YyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UgLCBwdWJsaWMgTWVkaWFTZXNzaW9uQ2xpZW50CiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgcHJpdmF0ZSBBdWRpb1RyYWNrQ2xpZW50CiAg
ICAgLCBwcml2YXRlIFRleHRUcmFja0NsaWVudApAQCAtMTE0LDkgKzExMiw2IEBAIGNsYXNzIEhU
TUxNZWRpYUVsZW1lbnQKICNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQogICAgICwg
cHVibGljIFBsYXRmb3JtVGV4dFRyYWNrTWVudUNsaWVudAogI2VuZGlmCi0jaWYgVVNFKEFVRElP
X1NFU1NJT04pCi0gICAgLCBwdWJsaWMgTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudAotI2VuZGlm
CiB7CiBwdWJsaWM6CiAgICAgTWVkaWFQbGF5ZXIqIHBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1f
cGxheWVyLmdldCgpOyB9CkBAIC00ODEsNiArNDc2LDggQEAgcHJvdGVjdGVkOgogCiAgICAgdmly
dHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NS
ZWY8UmVuZGVyU3R5bGU+KSBPVkVSUklERTsKIAorICAgIE1lZGlhU2Vzc2lvbiYgbWVkaWFTZXNz
aW9uKCkgY29uc3QgeyByZXR1cm4gKm1fbWVkaWFTZXNzaW9uOyB9CisKIHByaXZhdGU6CiAgICAg
dm9pZCBjcmVhdGVNZWRpYVBsYXllcigpOwogCkBAIC02NTIsNyArNjQ5LDYgQEAgcHJpdmF0ZToK
IAogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIHBhcnNlTWVkaWFQbGF5ZXJBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpOwotICAgIHZvaWQgdXNl
clJlcXVlc3RzTWVkaWFMb2FkaW5nKCk7CiAjZW5kaWYKIAogICAgIC8vIFBhdXNlcyBwbGF5YmFj
ayB3aXRob3V0IGNoYW5naW5nIGFueSBzdGF0ZXMgb3IgZ2VuZXJhdGluZyBldmVudHMKQEAgLTY5
NSw5ICs2OTEsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIGVuc3VyZU1lZGlhQ29udHJvbHNJbmpl
Y3RlZFNjcmlwdCgpOwogI2VuZGlmCiAKLSNpZiBVU0UoQVVESU9fU0VTU0lPTikKLSAgICB2aXJ0
dWFsIE1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBPVkVS
UklERTsKLSNlbmRpZgorICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFU
eXBlKCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5JbnRlcnJ1cHRp
b24oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kSW50ZXJydXB0aW9uKE1lZGlhU2Vz
c2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MpIE9WRVJSSURFOwogCiAgICAgVGltZXI8SFRNTE1l
ZGlhRWxlbWVudD4gbV9sb2FkVGltZXI7CiAgICAgVGltZXI8SFRNTE1lZGlhRWxlbWVudD4gbV9w
cm9ncmVzc0V2ZW50VGltZXI7CkBAIC03OTQsNyArNzkxLDYgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fbmVlZFdpZGdldFVwZGF0ZSA6IDE7CiAjZW5kaWYKIAotICAgIGJvb2wgbV9sb2FkSW5pdGlh
dGVkQnlVc2VyR2VzdHVyZSA6IDE7CiAgICAgYm9vbCBtX2NvbXBsZXRlbHlMb2FkZWQgOiAxOwog
ICAgIGJvb2wgbV9oYXZlUHJlcGFyZWRUb1BsYXkgOiAxOwogICAgIGJvb2wgbV9wYXJzaW5nSW5Q
cm9ncmVzcyA6IDE7CkBAIC04MDQsOSArODAwLDEwIEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgYm9vbCBtX3JlcXVlc3RpbmdQbGF5IDogMTsKLSAgICBib29sIG1fdXNlclN0
YXJ0ZWRQbGF5YmFjayA6IDE7CiAjZW5kaWYKIAorICAgIGJvb2wgbV9yZXN1bWVQbGF5YmFja0Fm
dGVySW50ZXJydXB0aW9uIDogMTsKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBib29s
IG1fdHJhY2tzQXJlUmVhZHkgOiAxOwogICAgIGJvb2wgbV9oYXZlVmlzaWJsZVRleHRUcmFjayA6
IDE7CkBAIC04NTMsMTAgKzg1MCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFBsYXRmb3JtVGV4
dFRyYWNrTWVudUludGVyZmFjZT4gbV9wbGF0Zm9ybU1lbnU7CiAjZW5kaWYKIAotI2lmIFVTRShB
VURJT19TRVNTSU9OKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb25NYW5hZ2VyVG9r
ZW4+IG1fbWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOwotI2VuZGlmCi0KKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8TWVkaWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IG1fYWN0aXZpdHlUb2tlbjsKICAgICBzaXplX3Qg
bV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik1lZGlhU2Vzc2lvbi5oIgorCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiUGFnZS5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFTZXNzaW9uPiBNZWRpYVNlc3Npb246OmNy
ZWF0ZShNZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxNZWRpYVNlc3Npb24+KGNsaWVudCk7Cit9CisKK01lZGlhU2Vzc2lvbjo6TWVkaWFT
ZXNzaW9uKE1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50
KQorICAgICwgbV9zdGF0ZShSdW5uaW5nKQoreworICAgIG1fdHlwZSA9IG1fY2xpZW50Lm1lZGlh
VHlwZSgpOworICAgIEFTU0VSVChtX3R5cGUgPj0gTm9uZSAmJiBtX3R5cGUgPD0gV2ViQXVkaW8p
OworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRTZXNzaW9uKCp0
aGlzKTsKK30KKworTWVkaWFTZXNzaW9uOjp+TWVkaWFTZXNzaW9uKCkKK3sKKyAgICBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVtb3ZlU2Vzc2lvbigqdGhpcyk7Cit9CisK
K3ZvaWQgTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbigpCit7CisgICAgbV9zdGF0ZSA9
IEludGVycnVwdGVkOworICAgIG1fY2xpZW50LmJlZ2luSW50ZXJydXB0aW9uKCk7Cit9CisKK3Zv
aWQgTWVkaWFTZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24oRW5kSW50ZXJydXB0aW9uRmxhZ3MgZmxh
Z3MpCit7CisgICAgbV9zdGF0ZSA9IFJ1bm5pbmc7CisgICAgbV9jbGllbnQuZW5kSW50ZXJydXB0
aW9uKGZsYWdzKTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
TWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vTWVkaWFTZXNzaW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9NZWRpYVNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVNlc3Npb25faAorI2RlZmluZSBNZWRpYVNlc3Npb25f
aAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgTWVkaWFTZXNzaW9uQ2xpZW50OworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKKwor
Y2xhc3MgTWVkaWFTZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PE1lZGlhU2Vzc2lvbj4gY3JlYXRlKE1lZGlhU2Vzc2lvbkNsaWVudCYpOworCisgICAgTWVkaWFT
ZXNzaW9uKE1lZGlhU2Vzc2lvbkNsaWVudCYpOworICAgIH5NZWRpYVNlc3Npb24oKTsKKworICAg
IGVudW0gTWVkaWFUeXBlIHsKKyAgICAgICAgTm9uZSwKKyAgICAgICAgVmlkZW8sCisgICAgICAg
IEF1ZGlvLAorICAgICAgICBXZWJBdWRpbywKKyAgICB9OworICAgIAorICAgIE1lZGlhVHlwZSBt
ZWRpYVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKworICAgIGVudW0gU3RhdGUgewor
ICAgICAgICBSdW5uaW5nLAorICAgICAgICBJbnRlcnJ1cHRlZCwKKyAgICB9OworICAgIFN0YXRl
IHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQorICAgIHZvaWQgc2V0U3RhdGUoU3Rh
dGUgc3RhdGUpIHsgbV9zdGF0ZSA9IHN0YXRlOyB9CisKKyAgICBlbnVtIEVuZEludGVycnVwdGlv
bkZsYWdzIHsKKyAgICAgICAgTm9GbGFncyA9IDAsCisgICAgICAgIE1heVJlc3VtZVBsYXlpbmcg
PSAxIDw8IDAsCisgICAgfTsKKyAgICB2b2lkIGJlZ2luSW50ZXJydXB0aW9uKCk7CisgICAgdm9p
ZCBlbmRJbnRlcnJ1cHRpb24oRW5kSW50ZXJydXB0aW9uRmxhZ3MpOworCitwcml2YXRlOgorICAg
IE1lZGlhU2Vzc2lvbkNsaWVudCYgbV9jbGllbnQ7CisgICAgTWVkaWFUeXBlIG1fdHlwZTsKKyAg
ICBTdGF0ZSBtX3N0YXRlOworfTsKKworY2xhc3MgTWVkaWFTZXNzaW9uQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYVNlc3Npb25DbGllbnQpOworcHVibGljOgorICAgIE1l
ZGlhU2Vzc2lvbkNsaWVudCgpIHsgfQorICAgIAorICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpN
ZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3QgPSAwOworICAgIAorICAgIHZpcnR1YWwgdm9pZCBi
ZWdpbkludGVycnVwdGlvbigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBlbmRJbnRlcnJ1cHRpb24o
TWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncykgeyB9CisgICAgCitwcm90ZWN0ZWQ6
CisgICAgdmlydHVhbCB+TWVkaWFTZXNzaW9uQ2xpZW50KCkgeyB9Cit9OworCit9CisKKyNlbmRp
ZiAvLyBNZWRpYVNlc3Npb25faApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
TWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDE2MTM1OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiwyNSArMjYsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJNZWRpYVNlc3Npb24u
aCIKIAotCi1zdGQ6OnVuaXF1ZV9wdHI8TWVkaWFTZXNzaW9uTWFuYWdlclRva2VuPiBNZWRpYVNl
c3Npb25NYW5hZ2VyVG9rZW46OmNyZWF0ZShNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGll
bnQpCi17Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFTZXNzaW9uTWFuYWdlclRv
a2VuPihjbGllbnQpOwotfQotCi1NZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW46Ok1lZGlhU2Vzc2lv
bk1hbmFnZXJUb2tlbihNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQpCi0gICAgOiBt
X2NsaWVudChjbGllbnQpCi17Ci0gICAgbV90eXBlID0gbV9jbGllbnQubWVkaWFUeXBlKCk7Ci0g
ICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZFRva2VuKCp0aGlzKTsK
LX0KLQotTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOjp+TWVkaWFTZXNzaW9uTWFuYWdlclRva2Vu
KCkKLXsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVtb3ZlVG9r
ZW4oKnRoaXMpOwotfQorbmFtZXNwYWNlIFdlYkNvcmUgewogCiBNZWRpYVNlc3Npb25NYW5hZ2Vy
JiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkKIHsKQEAgLTUzLDE0ICszOCwx
NSBAQCBNZWRpYVNlc3Npb25NYW5hZ2VyJiBNZWRpYVNlc3Npb25NYW5hZ2VyCiB9CiAKIE1lZGlh
U2Vzc2lvbk1hbmFnZXI6Ok1lZGlhU2Vzc2lvbk1hbmFnZXIoKQorICAgIDogbV9pbnRlcnJ1cHRp
b25zKDApCiB7CiB9CiAKLWJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6aGFzKE1lZGlhU2Vzc2lv
bk1hbmFnZXI6Ok1lZGlhVHlwZSB0eXBlKSBjb25zdAorYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2Vy
OjpoYXMoTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSkgY29uc3QKIHsKLSAgICBBU1NFUlQo
dHlwZSA+PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpOb25lICYmIHR5cGUgPD0gTWVkaWFTZXNzaW9u
TWFuYWdlcjo6V2ViQXVkaW8pOworICAgIEFTU0VSVCh0eXBlID49IE1lZGlhU2Vzc2lvbjo6Tm9u
ZSAmJiB0eXBlIDw9IE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pOwogCi0gICAgZm9yIChhdXRvIGl0
ID0gbV90b2tlbnMuYmVnaW4oKSwgZW5kID0gbV90b2tlbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytp
dCkgeworICAgIGZvciAoYXV0byBpdCA9IG1fc2Vzc2lvbnMuYmVnaW4oKSwgZW5kID0gbV9zZXNz
aW9ucy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGlmICgoKml0KS0+bWVkaWFU
eXBlKCkgPT0gdHlwZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTY4LDEy
ICs1NCwxMiBAQCBib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmhhcyhNZWRpYVNlc3NpCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1pbnQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y291bnQoTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0CitpbnQgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6Y291bnQoTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSkgY29uc3QKIHsKLSAgICBB
U1NFUlQodHlwZSA+PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpOb25lICYmIHR5cGUgPD0gTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6V2ViQXVkaW8pOworICAgIEFTU0VSVCh0eXBlID49IE1lZGlhU2Vzc2lv
bjo6Tm9uZSAmJiB0eXBlIDw9IE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pOwogICAgIAogICAgIGlu
dCBjb3VudCA9IDA7Ci0gICAgZm9yIChhdXRvIGl0ID0gbV90b2tlbnMuYmVnaW4oKSwgZW5kID0g
bV90b2tlbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIGZvciAoYXV0byBpdCA9IG1f
c2Vzc2lvbnMuYmVnaW4oKSwgZW5kID0gbV9zZXNzaW9ucy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0
KSB7CiAgICAgICAgIGlmICgoKml0KS0+bWVkaWFUeXBlKCkgPT0gdHlwZSkKICAgICAgICAgICAg
ICsrY291bnQ7CiAgICAgfQpAQCAtODEsMjAgKzY3LDQwIEBAIGludCBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpjb3VudChNZWRpYVNlc3MKICAgICByZXR1cm4gY291bnQ7CiB9CiAKLXZvaWQgTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6YWRkVG9rZW4oTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuJiB0b2tlbikK
K3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5JbnRlcnJ1cHRpb24oKQogewotICAgIG1f
dG9rZW5zLmFwcGVuZCgmdG9rZW4pOworICAgIGlmICgrK21faW50ZXJydXB0aW9ucyA+IDEpCisg
ICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byBpdCA9IG1fc2Vzc2lvbnMuYmVnaW4oKSwg
ZW5kID0gbV9zZXNzaW9ucy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAoKml0KS0+
YmVnaW5JbnRlcnJ1cHRpb24oKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJ
bnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncykKK3sK
KyAgICBBU1NFUlQobV9pbnRlcnJ1cHRpb25zID4gMCk7CisgICAgaWYgKC0tbV9pbnRlcnJ1cHRp
b25zKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZm9yIChhdXRvIGl0ID0gbV9zZXNzaW9u
cy5iZWdpbigpLCBlbmQgPSBtX3Nlc3Npb25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAg
ICAgICgqaXQpLT5lbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOworfQorCit2b2lkIE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmFkZFNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQoreworICAgIG1fc2Vz
c2lvbnMuYXBwZW5kKCZzZXNzaW9uKTsKKyAgICBzZXNzaW9uLnNldFN0YXRlKG1faW50ZXJydXB0
aW9ucyA/IE1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQgOiBNZWRpYVNlc3Npb246OlJ1bm5pbmcp
OwogICAgIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwogfQogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnJlbW92ZVRva2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbiYgdG9rZW4pCit2b2lkIE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQog
ewotICAgIHNpemVfdCBpbmRleCA9IG1fdG9rZW5zLmZpbmQoJnRva2VuKTsKKyAgICBzaXplX3Qg
aW5kZXggPSBtX3Nlc3Npb25zLmZpbmQoJnNlc3Npb24pOwogICAgIEFTU0VSVChpbmRleCAhPSBu
b3RGb3VuZCk7CiAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Rva2Vucy5yZW1vdmUoaW5kZXgpOworICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGluZGV4
KTsKICAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKIH0KIApAQCAtMTAzLDMgKzEwOSw1IEBAIHZv
aWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblMKIHsKIH0KICNlbmRpZgorCit9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNz
aW9uTWFuYWdlci5oCShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDY0ICsy
NiwzNyBAQAogI2lmbmRlZiBNZWRpYVNlc3Npb25NYW5hZ2VyX2gKICNkZWZpbmUgTWVkaWFTZXNz
aW9uTWFuYWdlcl9oCiAKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgIk1l
ZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJU
b2tlbjsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBNZWRpYVNlc3Npb247CiAKIGNs
YXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXIgewogcHVibGljOgogICAgIHN0YXRpYyBNZWRpYVNlc3Np
b25NYW5hZ2VyJiBzaGFyZWRNYW5hZ2VyKCk7CiAKLSAgICBlbnVtIE1lZGlhVHlwZSB7Ci0gICAg
ICAgIE5vbmUsCi0gICAgICAgIFZpZGVvLAotICAgICAgICBBdWRpbywKLSAgICAgICAgV2ViQXVk
aW8sCi0gICAgfTsKKyAgICBib29sIGhhcyhNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSkgY29uc3Q7
CisgICAgaW50IGNvdW50KE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKSBjb25zdDsKIAotICAgIGJv
b2wgaGFzKE1lZGlhVHlwZSkgY29uc3Q7Ci0gICAgaW50IGNvdW50KE1lZGlhVHlwZSkgY29uc3Q7
CisgICAgdm9pZCBiZWdpbkludGVycnVwdGlvbigpOworICAgIHZvaWQgZW5kSW50ZXJydXB0aW9u
KE1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MpOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
ZnJpZW5kIGNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbjsKLSAgICB2b2lkIGFkZFRva2Vu
KE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbiYpOwotICAgIHZvaWQgcmVtb3ZlVG9rZW4oTWVkaWFT
ZXNzaW9uTWFuYWdlclRva2VuJik7CisgICAgZnJpZW5kIGNsYXNzIE1lZGlhU2Vzc2lvbjsKKyAg
ICB2b2lkIGFkZFNlc3Npb24oTWVkaWFTZXNzaW9uJik7CisgICAgdm9pZCByZW1vdmVTZXNzaW9u
KE1lZGlhU2Vzc2lvbiYpOwogCiBwcml2YXRlOgogICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsK
IAogICAgIHZvaWQgdXBkYXRlU2Vzc2lvblN0YXRlKCk7CiAKLSAgICBWZWN0b3I8TWVkaWFTZXNz
aW9uTWFuYWdlclRva2VuKj4gbV90b2tlbnM7Ci19OwotCi1jbGFzcyBNZWRpYVNlc3Npb25NYW5h
Z2VyQ2xpZW50IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYVNlc3Npb25NYW5hZ2Vy
Q2xpZW50KTsKLXB1YmxpYzoKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50KCkgeyB9Ci0K
LSAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBj
b25zdCA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25NYW5hZ2Vy
Q2xpZW50KCkgeyB9Ci19OwotCi1jbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4gewotcHVi
bGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFTZXNzaW9uTWFuYWdlclRva2Vu
PiBjcmVhdGUoTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYpOwotCi0gICAgTWVkaWFTZXNzaW9u
TWFuYWdlclRva2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmKTsKLSAgICB+TWVkaWFTZXNz
aW9uTWFuYWdlclRva2VuKCk7Ci0KLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZWRpYVR5cGUg
bWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KLXByaXZhdGU6Ci0KLSAgICBN
ZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBtX2NsaWVudDsKLSAgICBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpNZWRpYVR5cGUgbV90eXBlOworICAgIFZlY3RvcjxNZWRpYVNlc3Npb24qPiBtX3Nlc3Np
b25zOworICAgIGludCBtX2ludGVycnVwdGlvbnM7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25N
YWMuY3BwCShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgz
LDcgQEAgQXVkaW9EZXN0aW5hdGlvbk1hYzo6QXVkaW9EZXN0aW5hdGlvbk1hYwogICAgICwgbV9y
ZW5kZXJCdXMoQXVkaW9CdXM6OmNyZWF0ZSgyLCBrQnVmZmVyU2l6ZSwgZmFsc2UpKQogICAgICwg
bV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCiAgICAgLCBtX2lzUGxheWluZyhmYWxzZSkKLSAgICAs
IG1fbWVkaWFTZXNzaW9uTWFuYWdlclRva2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbjo6Y3Jl
YXRlKCp0aGlzKSkKKyAgICAsIG1fbWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0
aGlzKSkKIHsKICAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRwdXRVbml0CiAg
ICAgQXVkaW9Db21wb25lbnQgY29tcDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaAkocmV2aXNpb24gMTYx
MzU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRp
b25NYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSAiQXVk
aW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uLmgiCi0jaW5jbHVkZSAiTWVkaWFT
ZXNzaW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgPEF1
ZGlvVW5pdC9BdWRpb1VuaXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8v
IEFuIEF1ZGlvRGVzdGluYXRpb24gdXNpbmcgQ29yZUF1ZGlvJ3MgZGVmYXVsdCBvdXRwdXQgQXVk
aW9Vbml0CiAKLWNsYXNzIEF1ZGlvRGVzdGluYXRpb25NYWMgOiBwdWJsaWMgQXVkaW9EZXN0aW5h
dGlvbiwgcHVibGljIE1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQgeworY2xhc3MgQXVkaW9EZXN0
aW5hdGlvbk1hYyA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uLCBwdWJsaWMgTWVkaWFTZXNzaW9u
Q2xpZW50IHsKIHB1YmxpYzoKICAgICBBdWRpb0Rlc3RpbmF0aW9uTWFjKEF1ZGlvSU9DYWxsYmFj
ayYsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25NYWMo
KTsKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKIAogICAgIE9TU3RhdHVzIHJlbmRlcihVSW50
MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKTsKIAotICAgIHZpcnR1
YWwgTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OldlYkF1ZGlvOyB9CisgICAgdmlydHVhbCBNZWRpYVNl
c3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVNlc3Npb246
OldlYkF1ZGlvOyB9CiAKICAgICBBdWRpb1VuaXQgbV9vdXRwdXRVbml0OwogICAgIEF1ZGlvSU9D
YWxsYmFjayYgbV9jYWxsYmFjazsKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faXNQbGF5aW5nOwogCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCi0gICAgc3RkOjp1bmlxdWVf
cHRyPE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbj4gbV9tZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW47
CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Npb247CiAjZW5k
aWYKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNl
c3Npb25NYW5hZ2VyTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAJKHJldmlzaW9uIDE2MTM1OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2Vy
TWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTQgKzQyLDE0IEBAIHN0YXRpYyBjb25zdCBz
aXplX3Qga0xvd1Bvd2VyVmlkZW9CdWZmZXIKIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjp1
cGRhdGVTZXNzaW9uU3RhdGUoKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpIC0gdHlwZXM6IFZpZGVvKCVkKSwgQXVkaW8oJWQpLCBX
ZWJBdWRpbyglZCkiLCBjb3VudChWaWRlbyksIGNvdW50KEF1ZGlvKSwgY291bnQoV2ViQXVkaW8p
KTsKKyAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3Rh
dGUoKSAtIHR5cGVzOiBWaWRlbyglZCksIEF1ZGlvKCVkKSwgV2ViQXVkaW8oJWQpIiwgY291bnQo
TWVkaWFTZXNzaW9uOjpWaWRlbyksIGNvdW50KE1lZGlhU2Vzc2lvbjo6QXVkaW8pLCBjb3VudChN
ZWRpYVNlc3Npb246OldlYkF1ZGlvKSk7CiAKLSAgICBpZiAoaGFzKFdlYkF1ZGlvKSkKKyAgICBp
ZiAoaGFzKE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pKQogICAgICAgICBBdWRpb1Nlc3Npb246OnNo
YXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRCdWZmZXJTaXplKGtXZWJBdWRpb0J1ZmZlclNpemUp
OwogICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTY3MjU+IEZpZ3VyZSBvdXQg
d2h5IGVuYWJsaW5nIHRoZSBjb2RlIGJlbG93CiAgICAgLy8gY2F1c2VzIG1lZGlhIExheW91dFRl
c3RzIHRvIGZhaWwgb24gMTAuOC4KICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwOTAKLSAgICBlbHNlIGlmICgoaGFzKFZpZGVvKSB8fCBoYXMoQXVkaW8pKSAmJiBTZXR0
aW5nczo6bG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQoKSkKKyAgICBlbHNlIGlm
ICgoaGFzKE1lZGlhU2Vzc2lvbjo6VmlkZW8pIHx8IGhhcyhNZWRpYVNlc3Npb246OkF1ZGlvKSkg
JiYgU2V0dGluZ3M6Omxvd1Bvd2VyVmlkZW9BdWRpb0J1ZmZlclNpemVFbmFibGVkKCkpCiAgICAg
ICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemUo
a0xvd1Bvd2VyVmlkZW9CdWZmZXJTaXplKTsKICNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMTYxMzU4KQorKysgU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw3IEBACiAj
aW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTWFsbG9jU3RhdGlzdGljcy5oIgogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgog
I2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiTWVtb3J5SW5mby5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKQEAgLTIyNzEsNCArMjI3MiwxOSBAQCB2b2lkIEludGVybmFsczo6aW5pdGlh
bGl6ZU1vY2tNZWRpYVNvdXJjCiB9CiAjZW5kaWYKIAordm9pZCBJbnRlcm5hbHM6OmJlZ2luTWVk
aWFTZXNzaW9uSW50ZXJydXB0aW9uKCkKK3sKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkuYmVnaW5JbnRlcnJ1cHRpb24oKTsKK30KKwordm9pZCBJbnRlcm5hbHM6OmVu
ZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbihjb25zdCBTdHJpbmcmIGZsYWdzU3RyaW5nKQorewor
ICAgIE1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MgPSBNZWRpYVNlc3Np
b246Ok5vRmxhZ3M7CisKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZmxhZ3NTdHJpbmcsICJN
YXlSZXN1bWVQbGF5aW5nIikpCisgICAgICAgIGZsYWdzID0gTWVkaWFTZXNzaW9uOjpNYXlSZXN1
bWVQbGF5aW5nOworICAgIAorICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIo
KS5lbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzMiw2ICszMzIsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CiAjZW5kaWYKIAorICAgIHZvaWQg
YmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oKTsKKyAgICB2b2lkIGVuZE1lZGlhU2Vzc2lv
bkludGVycnVwdGlvbihjb25zdCBTdHJpbmcmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJ
bnRlcm5hbHMoRG9jdW1lbnQqKTsKICAgICBEb2N1bWVudCogY29udGV4dERvY3VtZW50KCkgY29u
c3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAxNjEz
NTgpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTI3OCw0ICsyNzgsNyBAQAogICAgIFtSYWlzZXNFeGNlcHRpb25dIENsaWVudFJlY3Qg
c2VsZWN0aW9uQm91bmRzKCk7CiAgICAgCiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NPVVJDRV0g
dm9pZCBpbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CisKKyAgICB2b2lkIGJlZ2luTWVkaWFT
ZXNzaW9uSW50ZXJydXB0aW9uKCk7CisgICAgdm9pZCBlbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRp
b24oRE9NU3RyaW5nIGZsYWdzKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjEzNzYp
CisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MiBAQAorMjAxNC0wMS0wNiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBUZWFjaCBNZWRpYVNlc3Npb25NYW5hZ2VyIHRvIG1hbmFnZSBpbnRlcnJ1cHRp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY1
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OiBBZGQgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vYW5pbWF0aW9uIHRvIFdl
YkNvcmUgaW5jbHVkZSBkaXJlY3Rvcmllcy4KKwogMjAxNC0wMS0wNiAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBbm90aGVyIGJ1aWxkIGZpeC4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsNyBAQCBzZXQoV2Vi
S2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2Uvc2Nyb2xs
aW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtIgog
ICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9hbmltYXRpb24iCisgICAgIiR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL2F1ZGlvIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGlj
cyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycyIKICAgICAi
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enoiCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gMTYxMzc2KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMiBAQAorMjAxNC0wMS0wNiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJs
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBUZWFjaCBNZWRpYVNlc3Npb25NYW5hZ2VyIHRvIG1h
bmFnZSBpbnRlcnJ1cHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjY1MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
YW5pbWF0aW9uIHRvIFdlYkNvcmUgaW5jbHVkZSBkaXJlY3Rvcmllcy4KKwogMjAxNC0wMS0wNiAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgU21hbGwg
YnVpbGQgZml4IGZvciB0aGUgR1RLKyBDTWFrZSBwb3J0CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJ
KHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2Uvc2Nyb2xsaW5nIgogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vYW5pbWF0aW9uIgorICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9hdWRpbyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxh
dGZvcm0vZ3JhcGhpY3MiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6IgpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMTYxMzc2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDEtMDYgIEVyaWMgQ2FybHNvbiAgPGVy
aWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGVhY2ggTWVkaWFTZXNzaW9uTWFuYWdl
ciB0byBtYW5hZ2UgaW50ZXJydXB0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI2NTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBtZWRpYS92aWRlby1pbnRlcnJ1cHRpb24tYWN0aXZlLXdoZW4t
ZWxlbWVudC1jcmVhdGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlk
ZW8taW50ZXJydXB0aW9uLWFjdGl2ZS13aGVuLWVsZW1lbnQtY3JlYXRlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtYWxsb3dpbmct
cGxheS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLWludGVycnVw
dGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1ub3QtYWxsb3dpbmctcGxheS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRo
LXJlc3VtZS1ub3QtYWxsb3dpbmctcGxheS5odG1sOiBBZGRlZC4KKwogMjAxNC0wMS0wNiAgQWxl
eGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChy
MTYxMTk1KTogQWNpZDIgcmVncmVzc2lvbiB0ZXN0cyBmcmVxdWVudGx5IGZhaWwKSW5kZXg6IExh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLWludGVycnVwdGlvbi1hY3RpdmUtd2hlbi1lbGVtZW50LWNy
ZWF0ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LWludGVycnVwdGlvbi1hY3RpdmUtd2hlbi1lbGVtZW50LWNyZWF0ZWQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLWFjdGl2
ZS13aGVuLWVsZW1lbnQtY3JlYXRlZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNSBAQAorVGVzdCBhIDx2aWRlbz4gZWxlbWVudCBjcmF0ZWQgZHVyaW5nIGludGVycnVw
dGlvbiBiZWhhdmVzIGNvcnJlY3RseS4KKworUlVOKHdpbmRvdy5pbnRlcm5hbHMuYmVnaW5NZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb24oKSkKK1JVTih2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3ZpZGVvJykpCitSVU4oZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh2aWRlbykpCitFVkVO
VChjYW5wbGF5dGhyb3VnaCkKKworUlVOKHZpZGVvLnBsYXkoKSkKKzI1MG1zIHRpbWVyIGZpcmVk
Li4uCitFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKK1JVTih3aW5kb3cuaW50
ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbignTWF5UmVzdW1lUGxheWluZycpKQor
RVZFTlQocGxheWluZykKKworRU5EIE9GIFRFU1QKKwpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8taW50ZXJydXB0aW9uLWFjdGl2ZS13aGVuLWVsZW1lbnQtY3JlYXRlZC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWludGVycnVwdGlvbi1hY3RpdmUtd2hl
bi1lbGVtZW50LWNyZWF0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlh
L3ZpZGVvLWludGVycnVwdGlvbi1hY3RpdmUtd2hlbi1lbGVtZW50LWNyZWF0ZWQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9bWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9
dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZh
ciBzdGF0ZSA9IDA7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrU3RhdGUoKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiMjUwbXMgdGltZXIgZmlyZWQu
Li4iKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnBhdXNlZCIsIHRydWUp
OworICAgICAgICAgICAgICAgIHN0YXRlID0gInJlc3VtaW5nIjsKKyAgICAgICAgICAgICAgICBp
ZiAod2luZG93LmludGVybmFscykgCisgICAgICAgICAgICAgICAgICAgIHJ1bigid2luZG93Lmlu
dGVybmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oJ01heVJlc3VtZVBsYXlpbmcnKSIp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBwbGF5aW5nKCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUgIT0gInJlc3VtaW5nIikKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAg
ICAgICAgICAgICAgICAgIGZhaWxUZXN0KCI8Yj5QbGF5YmFjayBzdGFydGVkIGR1cmluZyBpbnRl
cnJ1cHRpb24uPC9iPiIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAg
ICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNh
bnBsYXl0aHJvdWdoKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIiIpOworICAgICAgICAgICAgICAgIHJ1bigidmlkZW8ucGxheSgpIik7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChjaGVja1N0YXRlLCAyNTApOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBmdW5jdGlvbiBzdGFydCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpIAorICAgICAgICAgICAgICAgICAgICBydW4oIndpbmRvdy5p
bnRlcm5hbHMuYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oKSIpOzsKKyAgICAgICAgICAg
ICAgICBydW4oInZpZGVvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKSIpOworICAg
ICAgICAgICAgICAgIHJ1bigiZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh2aWRlbykiKTsKKyAg
ICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgY2FucGxheXRocm91
Z2gpOworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgncGxheWluZycsIHBsYXlpbmcpOwor
ICAgICAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRl
bnQvdGVzdCIpOworICAgICAgICAgICAgICAgIHN0YXRlID0gImludGVycnVwdGVkIjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorCisgICAgPGJvZHkgb25s
b2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHA+VGVzdCBhICZsdDt2aWRlbyZndDsgZWxlbWVudCBj
cmF0ZWQgZHVyaW5nIGludGVycnVwdGlvbiBiZWhhdmVzIGNvcnJlY3RseS48L3A+CisgICAgPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9u
LXdpdGgtcmVzdW1lLWFsbG93aW5nLXBsYXktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1w
bGF5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACisKK1Rlc3QgdGhhdCBwbGF5KCkgZHVyaW5nIGlu
dGVycnVwdGlvbiBkb2VzIG5vdGhpbmcsIGVuZGluZyBpbnRlcnJ1cHRpb24gYWxsb3dzIHBsYXli
YWNrIHRvIHJlc3VtZS4KKworRVZFTlQoY2FucGxheXRocm91Z2gpCisKK1JVTih3aW5kb3cuaW50
ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCkpCitSVU4odmlkZW8ucGxheSgp
KQorMjUwbXMgdGltZXIgZmlyZWQuLi4KK0VYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUn
KSBPSworUlVOKHdpbmRvdy5pbnRlcm5hbHMuZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCdN
YXlSZXN1bWVQbGF5aW5nJykpCitFVkVOVChwbGF5aW5nKQorCitFTkQgT0YgVEVTVAorCkluZGV4
OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtYWxsb3dp
bmctcGxheS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWludGVy
cnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtYWxsb3dpbmct
cGxheS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz1tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICAgICAgdmFyIHN0YXRlID0gMDsKKworICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tT
dGF0ZSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIyNTBt
cyB0aW1lciBmaXJlZC4uLiIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8u
cGF1c2VkIiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSAicmVzdW1pbmciOworICAg
ICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSAKKyAgICAgICAgICAgICAgICAgICAg
cnVuKCJ3aW5kb3cuaW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbignTWF5UmVz
dW1lUGxheWluZycpIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHBs
YXlpbmcoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChzdGF0ZSAhPSAicmVz
dW1pbmciKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCIiKTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIjxiPlBsYXliYWNrIHN0YXJ0
ZWQgZHVyaW5nIGludGVycnVwdGlvbi48L2I+Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIp
OworICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZnVuY3Rpb24gY2FucGxheXRocm91Z2goKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiIik7CisKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykgCisgICAgICAgICAgICAgICAgICAgIHJ1bigid2luZG93LmludGVybmFscy5iZWdpbk1l
ZGlhU2Vzc2lvbkludGVycnVwdGlvbigpIik7OworICAgICAgICAgICAgICAgIHN0YXRlID0gImlu
dGVycnVwdGVkIjsKKyAgICAgICAgICAgICAgICBydW4oInZpZGVvLnBsYXkoKSIpOworICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2tTdGF0ZSwgMjUwKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2Nh
bnBsYXl0aHJvdWdoJywgY2FucGxheXRocm91Z2gpOworICAgICAgICAgICAgICAgIHdhaXRGb3JF
dmVudCgncGxheWluZycsIHBsYXlpbmcpOworICAgICAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZp
bmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpOworICAgICAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCki
PgorICAgICAgICA8dmlkZW8gY29udHJvbHMgPjwvdmlkZW8+CisgICAgICAgIDxwPlRlc3QgdGhh
dCBwbGF5KCkgZHVyaW5nIGludGVycnVwdGlvbiBkb2VzIG5vdGhpbmcsIGVuZGluZyBpbnRlcnJ1
cHRpb24gYWxsb3dzIHBsYXliYWNrIHRvIHJlc3VtZS48L3A+CisgICAgPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLXdpdGgtcmVzdW1l
LW5vdC1hbGxvd2luZy1wbGF5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtbm90LWFsbG93aW5nLXBsYXkt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50
ZXJydXB0aW9uLXdpdGgtcmVzdW1lLW5vdC1hbGxvd2luZy1wbGF5LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE1IEBACisKK1Rlc3QgdGhhdCBwbGF5KCkgZHVyaW5nIGlu
dGVycnVwdGlvbiBkb2VzIG5vdGhpbmcsIGVuZGluZyBpbnRlcnJ1cHRpb24gZG9lcyBub3QgYWxs
b3cgcGxheWJhY2sgdG8gcmVzdW1lLgorCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKKworUlVOKHdp
bmRvdy5pbnRlcm5hbHMuYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oKSkKK1JVTih2aWRl
by5wbGF5KCkpCisyNTBtcyB0aW1lciBmaXJlZC4uLgorRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9
PSAndHJ1ZScpIE9LCitSVU4od2luZG93LmludGVybmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb24oJycpKQorMjUwbXMgdGltZXIgZmlyZWQuLi4KK0VYUEVDVEVEICh2aWRlby5wYXVzZWQg
PT0gJ3RydWUnKSBPSworCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtbm90LWFsbG93aW5nLXBsYXkuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1
bWUtbm90LWFsbG93aW5nLXBsYXkuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1ub3QtYWxsb3dpbmctcGxheS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c2NyaXB0IHNyYz1tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAg
ICAgdmFyIHN0YXRlID0gMDsKKworICAgICAgICAgICAgZnVuY3Rpb24gcGxheWluZygpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlID09ICJyZXN1bWluZyIpCisgICAg
ICAgICAgICAgICAgICAgIGZhaWxUZXN0KCI8Yj5QbGF5YmFjayBzdGFydGVkIGFmdGVyIGludGVy
cnVwdGlvbi48L2I+Iik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBmYWlsVGVzdCgiPGI+UGxheWJhY2sgc3RhcnRlZCBkdXJpbmcgaW50ZXJydXB0aW9uLjwvYj4i
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tTdGF0ZSgpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIyNTBtcyB0aW1lciBm
aXJlZC4uLiIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAgICAgICAgICAgICAg
IGNhc2UgImludGVycnVwdGVkIjoKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAicmVzdW1p
bmciOworICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGNoZWNrU3RhdGUsIDI1MCk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJ1bigid2luZG93LmludGVybmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRp
b24oJycpIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgInJlc3VtaW5nIjoKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAg
ICAgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IGNhbnBsYXl0aHJvdWdoKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIiIpOworCisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIAorICAg
ICAgICAgICAgICAgICAgICBydW4oIndpbmRvdy5pbnRlcm5hbHMuYmVnaW5NZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb24oKSIpOzsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9ICJpbnRlcnJ1cHRlZCI7
CisgICAgICAgICAgICAgICAgcnVuKCJ2aWRlby5wbGF5KCkiKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGNoZWNrU3RhdGUsIDI1MCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmaW5kTWVk
aWFFbGVtZW50KCk7CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3Vn
aCcsIGNhbnBsYXl0aHJvdWdoKTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BsYXlp
bmcnLCBwbGF5aW5nKTsKKyAgICAgICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxl
KCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorCisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAg
PHZpZGVvIGNvbnRyb2xzID48L3ZpZGVvPgorICAgICAgICA8cD5UZXN0IHRoYXQgcGxheSgpIGR1
cmluZyBpbnRlcnJ1cHRpb24gZG9lcyBub3RoaW5nLCBlbmRpbmcgaW50ZXJydXB0aW9uIGRvZXMg
bm90IGFsbG93IHBsYXliYWNrIHRvIHJlc3VtZS48L3A+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220548</attachid>
            <date>2014-01-07 14:28:38 -0800</date>
            <delta_ts>2014-01-07 16:33:10 -0800</delta_ts>
            <desc>Updated to address Sam&apos;s comments</desc>
            <filename>interruptions_patch_6.txt</filename>
            <type>text/plain</type>
            <size>53693</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTM3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBACisyMDE0LTAxLTA2ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFRlYWNoIE1lZGlhU2Vz
c2lvbk1hbmFnZXIgdG8gbWFuYWdlIGludGVycnVwdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjUzMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBtZWRpYS92aWRlby1pbnRlcnJ1cHRp
b24tYWN0aXZlLXdoZW4tZWxlbWVudC1jcmVhdGVkLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlh
L3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5Lmh0bWwKKyAgICAg
ICAgICAgICAgIG1lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1ub3QtYWxsb3dp
bmctcGxheS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IGZ1bmN0aW9u
cyBuZWVkZWQgYnkgSW50ZXJuYWxzLgorCisgICAgICAgIEFkZCBNZWRpYVNlc3Npb24gYW5kIE1l
ZGlhU2Vzc2lvbk1hbmFnZXIuCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAg
ICAgQXV0b21hdGljYWxseSBwYXVzZS9wbGF5IGZvciBpbnRlcnJ1cHRpb25zLiBNb3ZlIG1lZGlh
IHJlc3RyaWN0aW9uIG1hbmFnZW1lbnQgdG8gYSBNZWRpYVNlc3Npb24uCisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBHZXQgcmlkIG9mIG1fbG9hZEluaXRpYXRlZEJ5VXNlckdl
c3R1cmUgYW5kIG1fdXNlclN0YXJ0ZWRQbGF5YmFjaywKKyAgICAgICAgICAgIHRoZXkgYXJlbid0
IG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCk6IFVz
ZSB0aGUgbWVkaWEgc2Vzc2lvbiB0byBtYW5hZ2UgcmVzdHJpY3Rpb25zLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheSk6IFJlbW92ZSByZWR1bmRhbnQgaU9TIGNvZGUu
IFBvc3Rwb25lIHBsYXliYWNrIGlmIGNhbGxlZCAKKyAgICAgICAgICAgIGR1cmluZyBhbiBpbnRl
cnJ1cHRpb24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVzZSk6IFJl
bWVtYmVyIHRvIG5vdCByZXN1bWUgcGxheWJhY2sgd2hlbiBpdCBlbmRzIGlmIGNhbGxlZCBkdXJp
bmcKKyAgICAgICAgICAgIGFuIGludGVycnVwdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZyk6IFJlYXJyYW5nZSBjb2RlIHRvIG1ha2Ug
aXQgZWFzaWVyIHRvIHVuZGVyc3RhbmQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojpjb3VsZFBsYXlJZkVub3VnaERhdGEpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnBhdXNlZEZvclVzZXJJbnRlcmFjdGlvbik6IFJldHVybiB0cnVlIGlm
IHBhdXNlZCBiZWNhdXNlIG9mIGFuIGludGVycnVwdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUJlaGF2aW9yc1Jlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2Vy
R2VzdHVyZSk6IEJlIGV4cGxpY2l0IGFib3V0CisgICAgICAgICAgICB3aGljaCByZXN0cmljdGlv
bnMgYXJlIHJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVR5cGUpOiBNZWRpYVNlc3Npb25NYW5hZ2VyOjo8VHlwZT4gLT4gTWVkaWFTZXNzaW9uOjo8VHlw
ZT4uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpiZWdpbkludGVycnVwdGlv
bik6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuZEludGVycnVw
dGlvbik6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorCisgICAg
ICAgIFB1bGxlZCBNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4gb3V0IG9mIE1lZGlhU2Vzc2lvbk1h
bmFnZXIuY3BwLCBhZGRlZCBmdW5jdGlvbmFsaXR5IHRvIG1hbmFnZSBpbnRlcnJ1cHRpb25zLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTZXNzaW9uOjpNZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
Ojp+TWVkaWFTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6YmVnaW5J
bnRlcnJ1cHRpb24pOiBJbmZvcm0gY2xpZW50IG9mIGludGVycnVwdGlvbiBzdGF0ZSBjaGFuZ2Uu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbik6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oOiBBZGRlZC4KKworICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFTZXNzaW9uTWFuYWdlcik6IEluaXRp
YWxpemUgaW50ZXJydXB0aW9uIGNvdW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Np
b25NYW5hZ2VyOjpoYXMpOiBNZWRpYVR5cGUgaXMgZGVmaW5lZCBpbiBNZWRpYVNlc3Npb24uCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb3VudCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5JbnRlcnJ1cHRpb24pOiBJ
bmZvcm0gYWxsIGNsaWVudHMgb2YgaW50ZXJydXB0aW9uIHN0YXJ0IGlmCisgICAgICAgICAgICBu
b3QgYWxyZWFkeSBpbiBhbiBpbnRlcnJ1cHRpb24uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNl
c3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1cHRpb24pOiBJbmZvcm0gYWxsIGNsaWVudHMgaWYgaW50
ZXJydXB0aW9uIGhhcyBlbmRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmFkZFNlc3Npb24pOiBSZW5hbWVkIGZyb20gYWRkVG9rZW4uIFNldCBzZXNzaW9uIGludGVy
cnVwdGlvbiBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJl
bW92ZVNlc3Npb24pOiBSZW5hbWVkIGZyb20gcmVtb3ZlVG9rZW4uCisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorCisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbk1hYzo6QXVkaW9EZXN0aW5hdGlvbk1hYyk6IE1lZGlhU2Vzc2lvbk1hbmFnZXJU
b2tlbiAtPiBNZWRpYVNlc3Npb24uCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
RGVzdGluYXRpb25NYWMuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNl
c3Npb25NYW5hZ2VyTWFjLmNwcDoKKyAgICAgICAgKE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0
ZVNlc3Npb25TdGF0ZSk6IERpdHRvLgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgZm9yIHRl
c3RzIHRvIGJlZ2luIGFuZCBlbmQgaW50ZXJydXB0aW9ucy4KKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmJlZ2luTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZW5kTWVkaWFT
ZXNzaW9uSW50ZXJydXB0aW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxNC0wMS0wNiAgQnJlbnQgRnVsZ2hh
bSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR0xdIEZCTyBEZXB0aCBCdWZm
ZXIgQXR0YWNobWVudCBGdW5jdGlvbiBJbXByb3Blcmx5IENsZWFyaW5nIHdpdGggMApJbmRleDog
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xODc3LDYgKzE4NzcsOCBAQCBzZXQoV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKICAgICBw
bGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL0hSVEZQYW5u
ZXIuY3BwCisgICAgcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcAorICAgIHBsYXRmb3Jt
L2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCiAgICAgcGxhdGZvcm0vYXVkaW8vTXVsdGlD
aGFubmVsUmVzYW1wbGVyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAKICAgICBw
bGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTUzNTEsNiArNTM1MSwxMCBAQCB3ZWJjb3JlX3BsYXRmb3Jt
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIu
aCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL01lZGlhU2Vzc2lvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRp
YVNlc3Npb25NYW5hZ2VyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVk
aWFTZXNzaW9uTWFuYWdlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlv
blZhbHVlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAgXApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC03NTYsNiArNzU2LDkgQEAgX19aTjdX
ZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1bGVyQzFFUE5TXwogX19aTjdXZWJDb3JlMTlMYXllckZs
dXNoU2NoZWR1bGVyQzJFUE5TXzI1TGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudEUKIF9fWk43V2Vi
Q29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlckQxRXYKIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNj
aGVkdWxlckQyRXYKK19fWk43V2ViQ29yZTE5TWVkaWFTZXNzaW9uTWFuYWdlcjEzc2hhcmVkTWFu
YWdlckV2CitfX1pON1dlYkNvcmUxOU1lZGlhU2Vzc2lvbk1hbmFnZXIxNWVuZEludGVycnVwdGlv
bkVOU18xMk1lZGlhU2Vzc2lvbjIwRW5kSW50ZXJydXB0aW9uRmxhZ3NFCitfX1pON1dlYkNvcmUx
OU1lZGlhU2Vzc2lvbk1hbmFnZXIxN2JlZ2luSW50ZXJydXB0aW9uRXYKIF9fWk43V2ViQ29yZTE5
UmVzb3VyY2VSZXF1ZXN0QmFzZTExc2V0SFRUUEJvZHlFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOEZv
cm1EYXRhRUVFCiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxM3NldEhUVFBNZXRo
b2RFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxOHNl
dEhUVFBIZWFkZXJGaWVsZEVQS2NSS04zV1RGNlN0cmluZ0UKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNpb24gMTYxMzU4KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNzIyNSw2ICs3MjI1LDggQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXEZpbGVTdHJlYW0uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cRmlsZVN5c3RlbS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxhdWRpb1xBdWRpb1Nlc3Npb24uY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cYXVkaW9cTWVkaWFTZXNzaW9uLmNwcCIgLz4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcQU5HTEVXZWJLaXRC
cmlkZ2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcYXZmb3VuZGF0aW9uXGNmXEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlvblxj
ZlxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5jcHAiIC8+CkBAIC0xOTA4OCw2ICsx
OTA5MCw4IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxGbG9hdENvbnZl
cnNpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXEF1
ZGlvU2Vzc2lvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cYXVk
aW9cQXVkaW9TZXNzaW9uTGlzdGVuZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cYXVkaW9cTWVkaWFTZXNzaW9uTWFuYWdlci5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcQU5HTEVXZWJLaXRCcmlkZ2UuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEF1ZGlvVHJh
Y2tQcml2YXRlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xhdmZvdW5kYXRpb25cY2ZcSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaCIgLz4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMTQ1
OTYsNiArMTQ1OTYsMTIgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1
ZGlvXEF1ZGlvU2Vzc2lvbkxpc3RlbmVyLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxhdWRp
bzwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cYXVkaW9cTWVkaWFTZXNzaW9uLmgiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxh
dWRpbzwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cYXVkaW9cTWVkaWFTZXNzaW9uTWFuYWdlci5oIj4KKyAgICAgIDxGaWx0ZXI+
cGxhdGZvcm1cYXVkaW88L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEFOR0xFV2ViS2l0QnJpZGdlLmgiPgogICAg
ICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTYxMzU4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNiArMTI5LDggQEAKIAkJ
MDcwNzU2REYxNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA3NTZEOTE0MjM5QjRD
MDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmNwcCAqLzsgfTsKIAkJMDcwNzU2RTAxNDIz
OUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNzU2REExNDIzOUI0RTAwNDE0MTYxIC8qIEpT
VGV4dFRyYWNrQ3VlTGlzdC5oICovOyB9OwogCQkwNzA5RkM0RTEwMjVERUUzMDA1OUNEQkEgLyog
QWNjZXNzaWJpbGl0eVNsaWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDcwOUZDNEQxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlk
ZXIuaCAqLzsgfTsKKwkJMDcwRTA5MTkxODc1RUVGQzAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwRTA5MTgx
ODc1RUQ5MzAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTA3MEUwOTFCMTg3NUVGNzEwMDNBMUQzQyAvKiBN
ZWRpYVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDcwRTA5MUExODc1RUY3MTAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5jcHAgKi87IH07
CiAJCTA3MEY1NDk4MTdGMTJGNkIwMDE2OUUwNCAvKiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFs
aWRhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDcwRjU0OTcxN0YxMkY2QjAwMTY5RTA0IC8qIE1lZGlhU3RyZWFtQ29uc3RyYWludHNW
YWxpZGF0aW9uQ2xpZW50LmggKi87IH07CiAJCTA3MEY1NDlFMTdGMjQwMjcwMDE2OUUwNCAvKiBB
dWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3MEY1NDlEMTdGMjQwMjcwMDE2OUUwNCAvKiBBdWRpb0Rlc3RpbmF0
aW9uQ29uc3VtZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwNzExNTg5MTE3REY2RjY2MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MTE1ODhG
MTdERjYzMzcwMEVERkUyQiAvKiBNZWRpYVN0cmVhbVByaXZhdGUuY3BwICovOyB9OwpAQCAtNjcx
NSw2ICs2NzE3LDggQEAKIAkJMDcwNzU2REExNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNr
Q3VlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RleHRUcmFja0N1
ZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwOUZDNEQxMDI1REVFMzAw
NTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQWNjZXNzaWJpbGl0eVNsaWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwNzBERDhGNTBGMDE4NjgwMDA3MjdERUIgLyogbWVkaWFDb250cm9scy5jc3MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gbWVkaWFDb250cm9scy5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA3MEUwOTE4MTg3NUVEOTMwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTZXNzaW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3MEUwOTFBMTg3NUVGNzEwMDNBMUQzQyAvKiBNZWRpYVNlc3Np
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwRjU0OTcxN0YxMkY2QjAwMTY5
RTA0IC8qIE1lZGlhU3RyZWFtQ29uc3RyYWludHNWYWxpZGF0aW9uQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtQ29uc3RyYWludHNWYWxpZGF0aW9u
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MEY1NDlEMTdGMjQwMjcw
MDE2OUUwNCAvKiBBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3MTE1ODhGMTdERjYzMzcwMEVERkUyQiAvKiBNZWRpYVN0cmVhbVBy
aXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJl
YW1Qcml2YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMDUwLDYgKzIy
MDU0LDggQEAKIAkJCQlDREE3OTgyMjE3MEEyNEY0MDBENDVDNTUgLyogQXVkaW9TZXNzaW9uTGlz
dGVuZXIuaCAqLywKIAkJCQlDREFFOEMwNzE3NDZCOTU3MDA1MzJENzggLyogTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHAgKi8sCiAJCQkJQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vz
c2lvbk1hbmFnZXIuaCAqLywKKwkJCQkwNzBFMDkxODE4NzVFRDkzMDAzQTFEM0MgLyogTWVkaWFT
ZXNzaW9uLmggKi8sCisJCQkJMDcwRTA5MUExODc1RUY3MTAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lv
bi5jcHAgKi8sCiAJCQkJRkQzMTYwNTMxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvU291cmNlUHJv
dmlkZXIuaCAqLywKIAkJCQlGRDYyRjUyRDE0NTg5OEQ4MDA5NEIwRUQgLyogQXVkaW9Tb3VyY2VQ
cm92aWRlckNsaWVudC5oICovLAogCQkJCUZEMzE2MDU0MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRp
b1V0aWxpdGllcy5jcHAgKi8sCkBAIC0yNDU5OSw2ICsyNDYwNSw3IEBACiAJCQkJNDM2NzA4Qzcx
MkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDM2NzA4QzkxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR0ltYWdlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwODU0QjAxNTEyNTVFNEU2MDBCOUNERDAgLyogUmVuZGVyU1ZHSW5s
aW5lLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzBFMDkxOTE4NzVFRUZDMDAzQTFEM0MgLyogTWVk
aWFTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODU0QjAxNzEyNTVFNEU2MDBCOUNERDAg
LyogUmVuZGVyU1ZHSW5saW5lVGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzQTQ5NjIxN0E5
RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM2NzA4
Q0IxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR01vZGVsT2JqZWN0LmggaW4gSGVhZGVycyAq
LywKQEAgLTI4MDczLDYgKzI4MDgwLDcgQEAKIAkJCQk5MzMwOUUxMTA5OUU2NDkyMDA1NkU1ODEg
LyogU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxMzA5
OUU2NDkyMDA1NkU1ODEgLyogU3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDc4RTA5NEIxN0QxNzA5NjAwNDIwQUExIC8qIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcwRTA5MUIxODc1RUY3MTAwM0ExRDND
IC8qIE1lZGlhU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxNTA5OUU2NDky
MDA1NkU1ODEgLyogU3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMUUxMTU0ODEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291
cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QkM2QTNFMTUwNUYwODEwMDFCNzRBQyAvKiBT
UUxFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEzICszMCwx
MyBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCiAjaW5jbHVkZSAiQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSAi
Q1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNs
dWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDbGllbnRSZWN0LmgiCiAjaW5jbHVkZSAi
Q2xpZW50UmVjdExpc3QuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNp
bmNsdWRlICJDb250ZW50VHlwZS5oIgotI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNp
bmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJFbGVtZW50SXRl
cmF0b3IuaCIKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJKU0hUTUxNZWRpYUVsZW1lbnQu
aCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAi
TWVkaWFDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9scy5oIgpAQCAtNTksNyAr
NjAsNyBAQAogI2luY2x1ZGUgIk1lZGlhS2V5RXZlbnQuaCIKICNpbmNsdWRlICJNZWRpYUxpc3Qu
aCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCi0jaW5jbHVkZSAiTUlNRVR5cGVS
ZWdpc3RyeS5oIgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJQ
YWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclZpZGVvLmgiCkBAIC0xMzcsMTAgKzEzOCw2IEBACiAjaW5jbHVkZSAiUGxh
dGZvcm1UZXh0VHJhY2suaCIKICNlbmRpZgogCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCi0jaW5j
bHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoTUVESUFf
Q09OVFJPTFNfU0NSSVBUKQogI2luY2x1ZGUgIkpTTWVkaWFDb250cm9sc0hvc3QuaCIKICNpbmNs
dWRlICJNZWRpYUNvbnRyb2xzSG9zdC5oIgpAQCAtMzE2LDcgKzMxMyw2IEBAIEhUTUxNZWRpYUVs
ZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZP
Ul9WSURFTykKICAgICAsIG1fbmVlZFdpZGdldFVwZGF0ZShmYWxzZSkKICNlbmRpZgotICAgICwg
bV9sb2FkSW5pdGlhdGVkQnlVc2VyR2VzdHVyZShmYWxzZSkKICAgICAsIG1fY29tcGxldGVseUxv
YWRlZChmYWxzZSkKICAgICAsIG1faGF2ZVByZXBhcmVkVG9QbGF5KGZhbHNlKQogICAgICwgbV9w
YXJzaW5nSW5Qcm9ncmVzcyhjcmVhdGVkQnlQYXJzZXIpCkBAIC0zMjUsNyArMzIxLDYgQEAgSFRN
TE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdAogI2VuZGlmCiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgICwgbV9yZXF1ZXN0aW5nUGxheShmYWxzZSkKLSAgICAsIG1fdXNlclN0YXJ0
ZWRQbGF5YmFjayhmYWxzZSkKICNlbmRpZgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICAs
IG1fdHJhY2tzQXJlUmVhZHkodHJ1ZSkKQEAgLTM0MSw5ICszMzYsNyBAQCBIVE1MTWVkaWFFbGVt
ZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0CiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICAs
IG1fYXVkaW9Tb3VyY2VOb2RlKDApCiAjZW5kaWYKLSNpZiBVU0UoQVVESU9fU0VTU0lPTikKLSAg
ICAsIG1fbWVkaWFTZXNzaW9uTWFuYWdlclRva2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbjo6
Y3JlYXRlKCp0aGlzKSkKLSNlbmRpZgorICAgICwgbV9tZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9u
OjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCgwKQogI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgLCBtX21lZGlhU3RyZWFtU3JjT2JqZWN0KG51bGxw
dHIpCkBAIC0zNzMsOCArMzY2LDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVu
dChjb25zdAogI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKICAgICAgICAgYWRkQmVoYXZpb3JSZXN0
cmljdGlvbihSZXF1aXJlVXNlckdlc3R1cmVUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tlcik7CiAj
ZW5kaWYKLSAgICB9IGVsc2UKLSAgICAgICAgbV9yZXN0cmljdGlvbnMgPSBOb1Jlc3RyaWN0aW9u
czsKKyAgICB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAogICAgIGFkZEVsZW1lbnRUb0Rv
Y3VtZW50TWFwKCp0aGlzLCBkb2N1bWVudCk7CkBAIC05MDIsMjEgKzg5NCwxMSBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmxvYWQoKQogICAgIAogICAgIGlmICh1c2VyR2VzdHVyZVJlcXVpcmVk
Rm9yTG9hZCgpICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1fbG9hZEluaXRpYXRlZEJ5VXNlckdlc3R1cmUg
PSBTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKLSAgICBpZiAobV9s
b2FkSW5pdGlhdGVkQnlVc2VyR2VzdHVyZSkKKyAgICBpZiAoU2NyaXB0Q29udHJvbGxlcjo6cHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIHJlbW92ZUJlaGF2aW9yc1Jlc3RyaWN0aW9u
c0FmdGVyRmlyc3RVc2VyR2VzdHVyZSgpOworCiAgICAgcHJlcGFyZUZvckxvYWQoKTsKICAgICBs
b2FkSW50ZXJuYWwoKTsKLQotI2lmIFBMQVRGT1JNKElPUykKLSAgICAvLyBVbmxlc3MgdGhpcyBt
ZXRob2Qgd2FzIGNhbGxlZCBkaXJlY3RseSBieSB0aGUgdXNlciBvciB0aGUgYXBwbGljYXRpb24g
YWxsb3dzIGFueSBzY3JpcHQgdG8gdHJpZ2dlciBwbGF5YmFjaywKLSAgICAvLyByZXR1cm4gbm93
IGJlY2F1c2UgcHJlcGFyZVRvUGxheSgpIHRlbGxzIHRoZSBtZWRpYSBlbmdpbmUgdG8gc3RhcnQg
bG9hZGluZyBkYXRhIGFzIHNvb24gYXMgdGhlIG1vdmllIHZhbGlkYXRlcy4KLSAgICBTZXR0aW5n
cyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLnNldHRpbmdzKCk7Ci0gICAgaWYgKCFtX2xvYWRJbml0
aWF0ZWRCeVVzZXJHZXN0dXJlICYmICghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPm1lZGlhUGxheWJh
Y2tSZXF1aXJlc1VzZXJHZXN0dXJlKCkpKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLQogICAg
IHByZXBhcmVUb1BsYXkoKTsKIH0KIApAQCAtMjY1NiwxMCArMjYzOCwxMSBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXkoKQogICAgIGlmIChTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5n
VXNlckdlc3R1cmUoKSkKICAgICAgICAgcmVtb3ZlQmVoYXZpb3JzUmVzdHJpY3Rpb25zQWZ0ZXJG
aXJzdFVzZXJHZXN0dXJlKCk7CiAKLSNpZiBQTEFURk9STShJT1MpCi0gICAgdXNlclJlcXVlc3Rz
TWVkaWFMb2FkaW5nKCk7Ci0jZW5kaWYKLQorICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+c3RhdGUo
KSA9PSBNZWRpYVNlc3Npb246OkludGVycnVwdGVkKSB7CisgICAgICAgIG1fcmVzdW1lUGxheWJh
Y2tBZnRlckludGVycnVwdGlvbiA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CiAgICAgcGxheUludGVybmFsKCk7CiB9CiAKQEAgLTI3MDIsNiArMjY4NSwxMSBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnBhdXNlKCkKICAgICBpZiAodXNlckdlc3R1cmVSZXF1aXJlZEZvclJh
dGVDaGFuZ2UoKSAmJiAhU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkp
CiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBN
ZWRpYVNlc3Npb246OkludGVycnVwdGVkKSB7CisgICAgICAgIG1fcmVzdW1lUGxheWJhY2tBZnRl
ckludGVycnVwdGlvbiA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAg
IHBhdXNlSW50ZXJuYWwoKTsKIH0KIApAQCAtNDEyMSwxMiArNDEwOSwyOCBAQCBib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluCiAgICAgLy8gd2hlbiBpdCByYW4gb3V0IG9m
IGJ1ZmZlcmVkIGRhdGEuIEEgbW92aWUgaXMgdGhpcyBzdGF0ZSBpcyAicG90ZW50aWFsbHkgcGxh
eWluZyIsIG1vZHVsbyB0aGUKICAgICAvLyBjaGVja3MgaW4gY291bGRQbGF5SWZFbm91Z2hEYXRh
KCkuCiAgICAgYm9vbCBwYXVzZWRUb0J1ZmZlciA9IG1fcmVhZHlTdGF0ZU1heGltdW0gPj0gSEFW
RV9GVVRVUkVfREFUQSAmJiBtX3JlYWR5U3RhdGUgPCBIQVZFX0ZVVFVSRV9EQVRBOwotICAgIHJl
dHVybiAocGF1c2VkVG9CdWZmZXIgfHwgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEp
ICYmIGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpICYmICFpc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxl
cigpOworICAgIAorICAgIGlmICghKHBhdXNlZFRvQnVmZmVyIHx8IG1fcmVhZHlTdGF0ZSA+PSBI
QVZFX0ZVVFVSRV9EQVRBKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGNv
dWxkUGxheUlmRW5vdWdoRGF0YSgpICYmICFpc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigpOwog
fQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNvdWxkUGxheUlmRW5vdWdoRGF0YSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuICFwYXVzZWQoKSAmJiAhZW5kZWRQbGF5YmFjaygpICYmICFzdG9wcGVk
RHVlVG9FcnJvcnMoKSAmJiAhcGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCk7CisgICAgaWYgKHBh
dXNlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZW5kZWRQbGF5YmFjaygp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3RvcHBlZER1ZVRvRXJyb3JzKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChwYXVzZWRGb3JVc2VySW50ZXJhY3Rp
b24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJv
b2wgSFRNTE1lZGlhRWxlbWVudDo6ZW5kZWRQbGF5YmFjaygpIGNvbnN0CkBAIC00MTcwLDcgKzQx
NzQsOSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnN0b3BwZWREdWVUb0Vycm9yCiAKIGJvb2wg
SFRNTE1lZGlhRWxlbWVudDo6cGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCkgY29uc3QKIHsKLS8v
ICAgIHJldHVybiAhcGF1c2VkKCkgJiYgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEg
JiYgW1VBIHJlcXVpcmVzIGEgZGVjaXRpb25zIGZyb20gdGhlIHVzZXJdCisgICAgaWYgKG1fbWVk
aWFTZXNzaW9uLT5zdGF0ZSgpID09IE1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQpCisgICAgICAg
IHJldHVybiB0cnVlOworCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC00NTU3LDcgKzQ1NjMs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRlbGl2ZXJOb3RpZmljYXRpCiB7CiAgICAgaWYg
KG5vdGlmaWNhdGlvbiA9PSBNZWRpYVBsYXllck5vdGlmaWNhdGlvblBsYXlQYXVzZUJ1dHRvblBy
ZXNzZWQpIHsKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIHVzZXJSZXF1ZXN0c01lZGlhTG9h
ZGluZygpOworICAgICAgICByZW1vdmVCZWhhdmlvcnNSZXN0cmljdGlvbnNBZnRlckZpcnN0VXNl
ckdlc3R1cmUoKTsKICNlbmRpZgogICAgICAgICB0b2dnbGVQbGF5U3RhdGUoKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtNTI5OCwxNiArNTMwNCw2IEBAIEF1ZGlvU291cmNlUHJvdmlkZXIqIEhUTUxN
ZWRpYUVsZW1lbnQ6OmEKIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQotdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp1c2VyUmVxdWVzdHNNZWRpYUxvYWRpbmcoKQotewotICAgIC8vIFRoZSB1
c2VyIGlzIHJlcXVlc3RpbmcgZGF0YSBsb2FkaW5nIGFuZC9vciBwbGF5YmFjaywgc28gcmVtb3Zl
IHRoZSAib25seSBjaGFuZ2UgcGxheWJhY2sgaW4gcmVzcG9uc2UKLSAgICAvLyB0byBhIHVzZXIg
Z2VzdHVyZSIgcmVzdHJpY3Rpb24gb24gdGhpcyBtb3ZpZS4KLSAgICBtX3VzZXJTdGFydGVkUGxh
eWJhY2sgPSB0cnVlOwotICAgIG1fcmVzdHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7Ci19Ci0j
ZW5kaWYKLQogY29uc3QgU3RyaW5nJiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUdyb3VwKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9tZWRpYUdyb3VwOwpAQCAtNTU3OSw3ICs1NTc1LDEyIEBAIENh
Y2hlZFJlc291cmNlTG9hZGVyKiBIVE1MTWVkaWFFbGVtZW50OjoKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpyZW1vdmVCZWhhdmlvcnNSZXN0cmljdGlvbnNBZnRlckZpcnN0VXNlckdlc3R1cmUo
KQogewotICAgIG1fcmVzdHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7CisgICAgcmVtb3ZlQmVo
YXZpb3JSZXN0cmljdGlvbihSZXF1aXJlVXNlckdlc3R1cmVGb3JMb2FkUmVzdHJpY3Rpb24pOwor
ICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlRm9yUmF0ZUNo
YW5nZVJlc3RyaWN0aW9uKTsKKyAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVV
c2VyR2VzdHVyZUZvckZ1bGxzY3JlZW5SZXN0cmljdGlvbik7CisjaWYgRU5BQkxFKElPU19BSVJQ
TEFZKQorICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlVG9T
aG93UGxheWJhY2tUYXJnZXRQaWNrZXJSZXN0cmljdGlvbik7CisjZW5kaWYKIH0KIAogI2lmIEVO
QUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQpAQCAtNTcwMiwxNSArNTcwMywzNCBAQCB1bnNp
Z25lZCBsb25nIGxvbmcgSFRNTE1lZGlhRWxlbWVudDo6ZmlsCiAgICAgcmV0dXJuIDA7CiB9CiAK
LSNpZiBVU0UoQVVESU9fU0VTU0lPTikKLU1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1lZGlhVHlwZSBI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVR5cGUoKSBjb25zdAorTWVkaWFTZXNzaW9uOjpNZWRpYVR5
cGUgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFUeXBlKCkgY29uc3QKIHsKICAgICBpZiAoaGFzVGFn
TmFtZShIVE1MTmFtZXM6OnZpZGVvVGFnKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbk1h
bmFnZXI6OlZpZGVvOworICAgICAgICByZXR1cm4gTWVkaWFTZXNzaW9uOjpWaWRlbzsKIAotICAg
IHJldHVybiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpBdWRpbzsKKyAgICByZXR1cm4gTWVkaWFTZXNz
aW9uOjpBdWRpbzsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpiZWdpbkludGVycnVwdGlv
bigpCit7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6YmVnaW5JbnRlcnJ1cHRp
b24iKTsKKyAgICAKKyAgICBtX3Jlc3VtZVBsYXliYWNrQWZ0ZXJJbnRlcnJ1cHRpb24gPSAhcGF1
c2VkKCk7CisgICAgaWYgKG1fcmVzdW1lUGxheWJhY2tBZnRlckludGVycnVwdGlvbikKKyAgICAg
ICAgcGF1c2UoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbmRJbnRlcnJ1cHRpb24o
TWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncykKK3sKKyAgICBib29sIHNo
b3VsZFJlc3VtZVBsYXliYWNrID0gbV9yZXN1bWVQbGF5YmFja0FmdGVySW50ZXJydXB0aW9uOwor
ICAgIG1fcmVzdW1lUGxheWJhY2tBZnRlckludGVycnVwdGlvbiA9IGZhbHNlOworCisgICAgaWYg
KCFmbGFncyAmIE1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZykKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKHNob3VsZFJlc3VtZVBsYXliYWNrKQorICAgICAgICBwbGF5KCk7CiB9Ci0j
ZW5kaWYKIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAko
cmV2aXNpb24gMTYxMzU4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJNZWRpYUNhblN0
YXJ0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCIKICNp
bmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogCiAjaWYg
RU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJF
bGVtZW50LmgiCkBAIC01Myw5ICs1NCw2IEBACiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKICNl
bmRpZgogCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFu
YWdlci5oIgotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA1LDcgKzEwMyw3
IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQKICNlbHNlCiAgICAgOiBwdWJsaWMgSFRNTEVsZW1l
bnQKICNlbmRpZgotICAgICwgcHJpdmF0ZSBNZWRpYVBsYXllckNsaWVudCwgcHVibGljIE1lZGlh
UGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwg
cHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZQor
ICAgICwgcHJpdmF0ZSBNZWRpYVBsYXllckNsaWVudCwgcHVibGljIE1lZGlhUGxheWVyU3VwcG9y
dHNUeXBlQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEFjdGl2
ZURPTU9iamVjdCwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSAsIHB1YmxpYyBNZWRp
YVNlc3Npb25DbGllbnQKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLCBwcml2YXRlIEF1
ZGlvVHJhY2tDbGllbnQKICAgICAsIHByaXZhdGUgVGV4dFRyYWNrQ2xpZW50CkBAIC0xMTQsOSAr
MTEyLDYgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudAogI2lmIFVTRShQTEFURk9STV9URVhUX1RS
QUNLX01FTlUpCiAgICAgLCBwdWJsaWMgUGxhdGZvcm1UZXh0VHJhY2tNZW51Q2xpZW50CiAjZW5k
aWYKLSNpZiBVU0UoQVVESU9fU0VTU0lPTikKLSAgICAsIHB1YmxpYyBNZWRpYVNlc3Npb25NYW5h
Z2VyQ2xpZW50Ci0jZW5kaWYKIHsKIHB1YmxpYzoKICAgICBNZWRpYVBsYXllciogcGxheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9wbGF5ZXIuZ2V0KCk7IH0KQEAgLTQ4MSw2ICs0NzYsOCBAQCBwcm90
ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIE9WRVJSSURFOwogCisgICAgTWVkaWFT
ZXNzaW9uJiBtZWRpYVNlc3Npb24oKSBjb25zdCB7IHJldHVybiAqbV9tZWRpYVNlc3Npb247IH0K
KwogcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZU1lZGlhUGxheWVyKCk7CiAKQEAgLTY1Miw3ICs2
NDksNiBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgcGFyc2VNZWRp
YVBsYXllckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
Jik7Ci0gICAgdm9pZCB1c2VyUmVxdWVzdHNNZWRpYUxvYWRpbmcoKTsKICNlbmRpZgogCiAgICAg
Ly8gUGF1c2VzIHBsYXliYWNrIHdpdGhvdXQgY2hhbmdpbmcgYW55IHN0YXRlcyBvciBnZW5lcmF0
aW5nIGV2ZW50cwpAQCAtNjk1LDkgKzY5MSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJl
TWVkaWFDb250cm9sc0luamVjdGVkU2NyaXB0KCk7CiAjZW5kaWYKIAotI2lmIFVTRShBVURJT19T
RVNTSU9OKQotICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFUeXBlIG1lZGlh
VHlwZSgpIGNvbnN0IE9WRVJSSURFOwotI2VuZGlmCisgICAgdmlydHVhbCBNZWRpYVNlc3Npb246
Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9p
ZCBiZWdpbkludGVycnVwdGlvbigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBlbmRJbnRl
cnJ1cHRpb24oTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncykgT1ZFUlJJREU7CiAK
ICAgICBUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiBtX2xvYWRUaW1lcjsKICAgICBUaW1lcjxIVE1M
TWVkaWFFbGVtZW50PiBtX3Byb2dyZXNzRXZlbnRUaW1lcjsKQEAgLTc5NCw3ICs3OTEsNiBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9uZWVkV2lkZ2V0VXBkYXRlIDogMTsKICNlbmRpZgogCi0gICAg
Ym9vbCBtX2xvYWRJbml0aWF0ZWRCeVVzZXJHZXN0dXJlIDogMTsKICAgICBib29sIG1fY29tcGxl
dGVseUxvYWRlZCA6IDE7CiAgICAgYm9vbCBtX2hhdmVQcmVwYXJlZFRvUGxheSA6IDE7CiAgICAg
Ym9vbCBtX3BhcnNpbmdJblByb2dyZXNzIDogMTsKQEAgLTgwNCw5ICs4MDAsMTAgQEAgcHJpdmF0
ZToKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIG1fcmVxdWVzdGluZ1BsYXkgOiAxOwot
ICAgIGJvb2wgbV91c2VyU3RhcnRlZFBsYXliYWNrIDogMTsKICNlbmRpZgogCisgICAgYm9vbCBt
X3Jlc3VtZVBsYXliYWNrQWZ0ZXJJbnRlcnJ1cHRpb24gOiAxOworCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogICAgIGJvb2wgbV90cmFja3NBcmVSZWFkeSA6IDE7CiAgICAgYm9vbCBtX2hhdmVW
aXNpYmxlVGV4dFRyYWNrIDogMTsKQEAgLTg1MywxMCArODUwLDcgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2tNZW51SW50ZXJmYWNlPiBtX3BsYXRmb3JtTWVudTsKICNl
bmRpZgogCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCi0gICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlh
U2Vzc2lvbk1hbmFnZXJUb2tlbj4gbV9tZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW47Ci0jZW5kaWYK
LQorICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNzaW9uOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbj4gbV9hY3Rpdml0eVRv
a2VuOwogICAgIHNpemVfdCBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCisKKyNpbmNsdWRlICJIVE1MTWVkaWFF
bGVtZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1h
bmFnZXIuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb24+
IE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKE1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQoreworICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhU2Vzc2lvbj4oY2xpZW50KTsKK30KKworTWVk
aWFTZXNzaW9uOjpNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQpCisgICAg
OiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3N0YXRlKFJ1bm5pbmcpCit7CisgICAgbV90eXBl
ID0gbV9jbGllbnQubWVkaWFUeXBlKCk7CisgICAgQVNTRVJUKG1fdHlwZSA+PSBOb25lICYmIG1f
dHlwZSA8PSBXZWJBdWRpbyk7CisgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdl
cigpLmFkZFNlc3Npb24oKnRoaXMpOworfQorCitNZWRpYVNlc3Npb246On5NZWRpYVNlc3Npb24o
KQoreworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVTZXNz
aW9uKCp0aGlzKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb246OmJlZ2luSW50ZXJydXB0aW9uKCkK
K3sKKyAgICBtX3N0YXRlID0gSW50ZXJydXB0ZWQ7CisgICAgbV9jbGllbnQuYmVnaW5JbnRlcnJ1
cHRpb24oKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbihFbmRJbnRl
cnJ1cHRpb25GbGFncyBmbGFncykKK3sKKyAgICBtX3N0YXRlID0gUnVubmluZzsKKyAgICBtX2Ns
aWVudC5lbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhU2Vzc2lvbl9oCisjZGVm
aW5lIE1lZGlhU2Vzc2lvbl9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVNlc3Npb25DbGllbnQ7CitjbGFzcyBIVE1M
TWVkaWFFbGVtZW50OworCitjbGFzcyBNZWRpYVNlc3Npb24geworcHVibGljOgorICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFTZXNzaW9uPiBjcmVhdGUoTWVkaWFTZXNzaW9uQ2xpZW50
Jik7CisKKyAgICBNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uQ2xpZW50Jik7CisgICAgfk1lZGlh
U2Vzc2lvbigpOworCisgICAgZW51bSBNZWRpYVR5cGUgeworICAgICAgICBOb25lLAorICAgICAg
ICBWaWRlbywKKyAgICAgICAgQXVkaW8sCisgICAgICAgIFdlYkF1ZGlvLAorICAgIH07CisgICAg
CisgICAgTWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisg
ICAgZW51bSBTdGF0ZSB7CisgICAgICAgIFJ1bm5pbmcsCisgICAgICAgIEludGVycnVwdGVkLAor
ICAgIH07CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CisgICAg
dm9pZCBzZXRTdGF0ZShTdGF0ZSBzdGF0ZSkgeyBtX3N0YXRlID0gc3RhdGU7IH0KKworICAgIGVu
dW0gRW5kSW50ZXJydXB0aW9uRmxhZ3MgeworICAgICAgICBOb0ZsYWdzID0gMCwKKyAgICAgICAg
TWF5UmVzdW1lUGxheWluZyA9IDEgPDwgMCwKKyAgICB9OworICAgIHZvaWQgYmVnaW5JbnRlcnJ1
cHRpb24oKTsKKyAgICB2b2lkIGVuZEludGVycnVwdGlvbihFbmRJbnRlcnJ1cHRpb25GbGFncyk7
CisKK3ByaXZhdGU6CisgICAgTWVkaWFTZXNzaW9uQ2xpZW50JiBtX2NsaWVudDsKKyAgICBNZWRp
YVR5cGUgbV90eXBlOworICAgIFN0YXRlIG1fc3RhdGU7Cit9OworCitjbGFzcyBNZWRpYVNlc3Np
b25DbGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhU2Vzc2lvbkNsaWVudCk7
CitwdWJsaWM6CisgICAgTWVkaWFTZXNzaW9uQ2xpZW50KCkgeyB9CisgICAgCisgICAgdmlydHVh
bCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCA9IDA7CisgICAgCisg
ICAgdmlydHVhbCB2b2lkIGJlZ2luSW50ZXJydXB0aW9uKCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGVuZEludGVycnVwdGlvbihNZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzKSB7IH0K
KyAgICAKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25DbGllbnQoKSB7IH0K
K307CisKK30KKworI2VuZGlmIC8vIE1lZGlhU2Vzc2lvbl9oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkocmV2
aXNpb24gMTYxMzU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNz
aW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDI1ICsyNiwxMCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKIAotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1
ZGUgIk1lZGlhU2Vzc2lvbi5oIgogCi0KLXN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb25NYW5h
Z2VyVG9rZW4+IE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbjo6Y3JlYXRlKE1lZGlhU2Vzc2lvbk1h
bmFnZXJDbGllbnQmIGNsaWVudCkKLXsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRp
YVNlc3Npb25NYW5hZ2VyVG9rZW4+KGNsaWVudCk7Ci19Ci0KLU1lZGlhU2Vzc2lvbk1hbmFnZXJU
b2tlbjo6TWVkaWFTZXNzaW9uTWFuYWdlclRva2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQm
IGNsaWVudCkKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKLXsKLSAgICBtX3R5cGUgPSBtX2NsaWVu
dC5tZWRpYVR5cGUoKTsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCku
YWRkVG9rZW4oKnRoaXMpOwotfQotCi1NZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW46On5NZWRpYVNl
c3Npb25NYW5hZ2VyVG9rZW4oKQotewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKS5yZW1vdmVUb2tlbigqdGhpcyk7Ci19CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE1l
ZGlhU2Vzc2lvbk1hbmFnZXImIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKQog
ewpAQCAtNTMsNDggKzM4LDY5IEBAIE1lZGlhU2Vzc2lvbk1hbmFnZXImIE1lZGlhU2Vzc2lvbk1h
bmFnZXIKIH0KIAogTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFTZXNzaW9uTWFuYWdlcigpCisg
ICAgOiBtX2ludGVycnVwdGlvbnMoMCkKIHsKIH0KIAotYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2Vy
OjpoYXMoTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0Citib29sIE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmhhcyhNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBlKSBjb25z
dAogewotICAgIEFTU0VSVCh0eXBlID49IE1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok5vbmUgJiYgdHlw
ZSA8PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpXZWJBdWRpbyk7CisgICAgQVNTRVJUKHR5cGUgPj0g
TWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7CiAK
LSAgICBmb3IgKGF1dG8gaXQgPSBtX3Rva2Vucy5iZWdpbigpLCBlbmQgPSBtX3Rva2Vucy5lbmQo
KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmICgoKml0KS0+bWVkaWFUeXBlKCkgPT0g
dHlwZSkKKyAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBtX3Nlc3Npb25zKSB7CisgICAgICAgIGlm
IChzZXNzaW9uLT5tZWRpYVR5cGUoKSA9PSB0eXBlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbnQgTWVkaWFTZXNzaW9u
TWFuYWdlcjo6Y291bnQoTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0
CitpbnQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y291bnQoTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUg
dHlwZSkgY29uc3QKIHsKLSAgICBBU1NFUlQodHlwZSA+PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpO
b25lICYmIHR5cGUgPD0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6V2ViQXVkaW8pOworICAgIEFTU0VS
VCh0eXBlID49IE1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9IE1lZGlhU2Vzc2lvbjo6V2Vi
QXVkaW8pOwogICAgIAogICAgIGludCBjb3VudCA9IDA7Ci0gICAgZm9yIChhdXRvIGl0ID0gbV90
b2tlbnMuYmVnaW4oKSwgZW5kID0gbV90b2tlbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewot
ICAgICAgICBpZiAoKCppdCktPm1lZGlhVHlwZSgpID09IHR5cGUpCisgICAgZm9yIChhdXRvKiBz
ZXNzaW9uIDogbV9zZXNzaW9ucykgeworICAgICAgICBpZiAoc2Vzc2lvbi0+bWVkaWFUeXBlKCkg
PT0gdHlwZSkKICAgICAgICAgICAgICsrY291bnQ7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJu
IGNvdW50OwogfQogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFRva2VuKE1lZGlhU2Vz
c2lvbk1hbmFnZXJUb2tlbiYgdG9rZW4pCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmJlZ2lu
SW50ZXJydXB0aW9uKCkKIHsKLSAgICBtX3Rva2Vucy5hcHBlbmQoJnRva2VuKTsKKyAgICBpZiAo
KyttX2ludGVycnVwdGlvbnMgPiAxKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8q
IHNlc3Npb24gOiBtX3Nlc3Npb25zKQorICAgICAgICBzZXNzaW9uLT5iZWdpbkludGVycnVwdGlv
bigpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmVuZEludGVycnVwdGlvbihNZWRp
YVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQoreworICAgIEFTU0VSVChtX2lu
dGVycnVwdGlvbnMgPiAwKTsKKyAgICBpZiAoLS1tX2ludGVycnVwdGlvbnMpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBtX3Nlc3Npb25zKQorICAgICAg
ICBzZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOworfQorCit2b2lkIE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmFkZFNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQoreworICAgIG1fc2Vz
c2lvbnMuYXBwZW5kKCZzZXNzaW9uKTsKKyAgICBzZXNzaW9uLnNldFN0YXRlKG1faW50ZXJydXB0
aW9ucyA/IE1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQgOiBNZWRpYVNlc3Npb246OlJ1bm5pbmcp
OwogICAgIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwogfQogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnJlbW92ZVRva2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbiYgdG9rZW4pCit2b2lkIE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQog
ewotICAgIHNpemVfdCBpbmRleCA9IG1fdG9rZW5zLmZpbmQoJnRva2VuKTsKKyAgICBzaXplX3Qg
aW5kZXggPSBtX3Nlc3Npb25zLmZpbmQoJnNlc3Npb24pOwogICAgIEFTU0VSVChpbmRleCAhPSBu
b3RGb3VuZCk7CiAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Rva2Vucy5yZW1vdmUoaW5kZXgpOworICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGluZGV4
KTsKICAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKIH0KIApAQCAtMTAzLDMgKzEwOSw1IEBAIHZv
aWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblMKIHsKIH0KICNlbmRpZgorCit9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNz
aW9uTWFuYWdlci5oCShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDY0ICsy
NiwzNyBAQAogI2lmbmRlZiBNZWRpYVNlc3Npb25NYW5hZ2VyX2gKICNkZWZpbmUgTWVkaWFTZXNz
aW9uTWFuYWdlcl9oCiAKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgIk1l
ZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJU
b2tlbjsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBNZWRpYVNlc3Npb247CiAKIGNs
YXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXIgewogcHVibGljOgogICAgIHN0YXRpYyBNZWRpYVNlc3Np
b25NYW5hZ2VyJiBzaGFyZWRNYW5hZ2VyKCk7CiAKLSAgICBlbnVtIE1lZGlhVHlwZSB7Ci0gICAg
ICAgIE5vbmUsCi0gICAgICAgIFZpZGVvLAotICAgICAgICBBdWRpbywKLSAgICAgICAgV2ViQXVk
aW8sCi0gICAgfTsKKyAgICBib29sIGhhcyhNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSkgY29uc3Q7
CisgICAgaW50IGNvdW50KE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKSBjb25zdDsKIAotICAgIGJv
b2wgaGFzKE1lZGlhVHlwZSkgY29uc3Q7Ci0gICAgaW50IGNvdW50KE1lZGlhVHlwZSkgY29uc3Q7
CisgICAgdm9pZCBiZWdpbkludGVycnVwdGlvbigpOworICAgIHZvaWQgZW5kSW50ZXJydXB0aW9u
KE1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MpOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
ZnJpZW5kIGNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbjsKLSAgICB2b2lkIGFkZFRva2Vu
KE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbiYpOwotICAgIHZvaWQgcmVtb3ZlVG9rZW4oTWVkaWFT
ZXNzaW9uTWFuYWdlclRva2VuJik7CisgICAgZnJpZW5kIGNsYXNzIE1lZGlhU2Vzc2lvbjsKKyAg
ICB2b2lkIGFkZFNlc3Npb24oTWVkaWFTZXNzaW9uJik7CisgICAgdm9pZCByZW1vdmVTZXNzaW9u
KE1lZGlhU2Vzc2lvbiYpOwogCiBwcml2YXRlOgogICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsK
IAogICAgIHZvaWQgdXBkYXRlU2Vzc2lvblN0YXRlKCk7CiAKLSAgICBWZWN0b3I8TWVkaWFTZXNz
aW9uTWFuYWdlclRva2VuKj4gbV90b2tlbnM7Ci19OwotCi1jbGFzcyBNZWRpYVNlc3Npb25NYW5h
Z2VyQ2xpZW50IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYVNlc3Npb25NYW5hZ2Vy
Q2xpZW50KTsKLXB1YmxpYzoKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50KCkgeyB9Ci0K
LSAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBj
b25zdCA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25NYW5hZ2Vy
Q2xpZW50KCkgeyB9Ci19OwotCi1jbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4gewotcHVi
bGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFTZXNzaW9uTWFuYWdlclRva2Vu
PiBjcmVhdGUoTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYpOwotCi0gICAgTWVkaWFTZXNzaW9u
TWFuYWdlclRva2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmKTsKLSAgICB+TWVkaWFTZXNz
aW9uTWFuYWdlclRva2VuKCk7Ci0KLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZWRpYVR5cGUg
bWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KLXByaXZhdGU6Ci0KLSAgICBN
ZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBtX2NsaWVudDsKLSAgICBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpNZWRpYVR5cGUgbV90eXBlOworICAgIFZlY3RvcjxNZWRpYVNlc3Npb24qPiBtX3Nlc3Np
b25zOworICAgIGludCBtX2ludGVycnVwdGlvbnM7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25N
YWMuY3BwCShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgz
LDcgQEAgQXVkaW9EZXN0aW5hdGlvbk1hYzo6QXVkaW9EZXN0aW5hdGlvbk1hYwogICAgICwgbV9y
ZW5kZXJCdXMoQXVkaW9CdXM6OmNyZWF0ZSgyLCBrQnVmZmVyU2l6ZSwgZmFsc2UpKQogICAgICwg
bV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCiAgICAgLCBtX2lzUGxheWluZyhmYWxzZSkKLSAgICAs
IG1fbWVkaWFTZXNzaW9uTWFuYWdlclRva2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbjo6Y3Jl
YXRlKCp0aGlzKSkKKyAgICAsIG1fbWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0
aGlzKSkKIHsKICAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRwdXRVbml0CiAg
ICAgQXVkaW9Db21wb25lbnQgY29tcDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaAkocmV2aXNpb24gMTYx
MzU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRp
b25NYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSAiQXVk
aW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uLmgiCi0jaW5jbHVkZSAiTWVkaWFT
ZXNzaW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgPEF1
ZGlvVW5pdC9BdWRpb1VuaXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8v
IEFuIEF1ZGlvRGVzdGluYXRpb24gdXNpbmcgQ29yZUF1ZGlvJ3MgZGVmYXVsdCBvdXRwdXQgQXVk
aW9Vbml0CiAKLWNsYXNzIEF1ZGlvRGVzdGluYXRpb25NYWMgOiBwdWJsaWMgQXVkaW9EZXN0aW5h
dGlvbiwgcHVibGljIE1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQgeworY2xhc3MgQXVkaW9EZXN0
aW5hdGlvbk1hYyA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uLCBwdWJsaWMgTWVkaWFTZXNzaW9u
Q2xpZW50IHsKIHB1YmxpYzoKICAgICBBdWRpb0Rlc3RpbmF0aW9uTWFjKEF1ZGlvSU9DYWxsYmFj
ayYsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25NYWMo
KTsKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKIAogICAgIE9TU3RhdHVzIHJlbmRlcihVSW50
MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKTsKIAotICAgIHZpcnR1
YWwgTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OldlYkF1ZGlvOyB9CisgICAgdmlydHVhbCBNZWRpYVNl
c3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVNlc3Npb246
OldlYkF1ZGlvOyB9CiAKICAgICBBdWRpb1VuaXQgbV9vdXRwdXRVbml0OwogICAgIEF1ZGlvSU9D
YWxsYmFjayYgbV9jYWxsYmFjazsKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faXNQbGF5aW5nOwogCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCi0gICAgc3RkOjp1bmlxdWVf
cHRyPE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbj4gbV9tZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW47
CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Npb247CiAjZW5k
aWYKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNl
c3Npb25NYW5hZ2VyTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAJKHJldmlzaW9uIDE2MTM1OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2Vy
TWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTQgKzQyLDE0IEBAIHN0YXRpYyBjb25zdCBz
aXplX3Qga0xvd1Bvd2VyVmlkZW9CdWZmZXIKIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjp1
cGRhdGVTZXNzaW9uU3RhdGUoKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpIC0gdHlwZXM6IFZpZGVvKCVkKSwgQXVkaW8oJWQpLCBX
ZWJBdWRpbyglZCkiLCBjb3VudChWaWRlbyksIGNvdW50KEF1ZGlvKSwgY291bnQoV2ViQXVkaW8p
KTsKKyAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3Rh
dGUoKSAtIHR5cGVzOiBWaWRlbyglZCksIEF1ZGlvKCVkKSwgV2ViQXVkaW8oJWQpIiwgY291bnQo
TWVkaWFTZXNzaW9uOjpWaWRlbyksIGNvdW50KE1lZGlhU2Vzc2lvbjo6QXVkaW8pLCBjb3VudChN
ZWRpYVNlc3Npb246OldlYkF1ZGlvKSk7CiAKLSAgICBpZiAoaGFzKFdlYkF1ZGlvKSkKKyAgICBp
ZiAoaGFzKE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pKQogICAgICAgICBBdWRpb1Nlc3Npb246OnNo
YXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRCdWZmZXJTaXplKGtXZWJBdWRpb0J1ZmZlclNpemUp
OwogICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTY3MjU+IEZpZ3VyZSBvdXQg
d2h5IGVuYWJsaW5nIHRoZSBjb2RlIGJlbG93CiAgICAgLy8gY2F1c2VzIG1lZGlhIExheW91dFRl
c3RzIHRvIGZhaWwgb24gMTAuOC4KICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwOTAKLSAgICBlbHNlIGlmICgoaGFzKFZpZGVvKSB8fCBoYXMoQXVkaW8pKSAmJiBTZXR0
aW5nczo6bG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQoKSkKKyAgICBlbHNlIGlm
ICgoaGFzKE1lZGlhU2Vzc2lvbjo6VmlkZW8pIHx8IGhhcyhNZWRpYVNlc3Npb246OkF1ZGlvKSkg
JiYgU2V0dGluZ3M6Omxvd1Bvd2VyVmlkZW9BdWRpb0J1ZmZlclNpemVFbmFibGVkKCkpCiAgICAg
ICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemUo
a0xvd1Bvd2VyVmlkZW9CdWZmZXJTaXplKTsKICNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMTYxMzU4KQorKysgU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw3IEBACiAj
aW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTWFsbG9jU3RhdGlzdGljcy5oIgogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgog
I2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiTWVtb3J5SW5mby5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKQEAgLTIyNzEsNCArMjI3MiwxOSBAQCB2b2lkIEludGVybmFsczo6aW5pdGlh
bGl6ZU1vY2tNZWRpYVNvdXJjCiB9CiAjZW5kaWYKIAordm9pZCBJbnRlcm5hbHM6OmJlZ2luTWVk
aWFTZXNzaW9uSW50ZXJydXB0aW9uKCkKK3sKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkuYmVnaW5JbnRlcnJ1cHRpb24oKTsKK30KKwordm9pZCBJbnRlcm5hbHM6OmVu
ZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbihjb25zdCBTdHJpbmcmIGZsYWdzU3RyaW5nKQorewor
ICAgIE1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MgPSBNZWRpYVNlc3Np
b246Ok5vRmxhZ3M7CisKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZmxhZ3NTdHJpbmcsICJN
YXlSZXN1bWVQbGF5aW5nIikpCisgICAgICAgIGZsYWdzID0gTWVkaWFTZXNzaW9uOjpNYXlSZXN1
bWVQbGF5aW5nOworICAgIAorICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIo
KS5lbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzMiw2ICszMzIsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CiAjZW5kaWYKIAorICAgIHZvaWQg
YmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oKTsKKyAgICB2b2lkIGVuZE1lZGlhU2Vzc2lv
bkludGVycnVwdGlvbihjb25zdCBTdHJpbmcmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJ
bnRlcm5hbHMoRG9jdW1lbnQqKTsKICAgICBEb2N1bWVudCogY29udGV4dERvY3VtZW50KCkgY29u
c3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAxNjEz
NTgpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTI3OCw0ICsyNzgsNyBAQAogICAgIFtSYWlzZXNFeGNlcHRpb25dIENsaWVudFJlY3Qg
c2VsZWN0aW9uQm91bmRzKCk7CiAgICAgCiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NPVVJDRV0g
dm9pZCBpbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CisKKyAgICB2b2lkIGJlZ2luTWVkaWFT
ZXNzaW9uSW50ZXJydXB0aW9uKCk7CisgICAgdm9pZCBlbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRp
b24oRE9NU3RyaW5nIGZsYWdzKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjEzNzYp
CisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MiBAQAorMjAxNC0wMS0wNiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBUZWFjaCBNZWRpYVNlc3Npb25NYW5hZ2VyIHRvIG1hbmFnZSBpbnRlcnJ1cHRp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY1
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OiBBZGQgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vYW5pbWF0aW9uIHRvIFdl
YkNvcmUgaW5jbHVkZSBkaXJlY3Rvcmllcy4KKwogMjAxNC0wMS0wNiAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBbm90aGVyIGJ1aWxkIGZpeC4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsNyBAQCBzZXQoV2Vi
S2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2Uvc2Nyb2xs
aW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtIgog
ICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9hbmltYXRpb24iCisgICAgIiR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL2F1ZGlvIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGlj
cyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycyIKICAgICAi
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enoiCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gMTYxMzc2KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMiBAQAorMjAxNC0wMS0wNiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJs
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBUZWFjaCBNZWRpYVNlc3Npb25NYW5hZ2VyIHRvIG1h
bmFnZSBpbnRlcnJ1cHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjY1MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
YW5pbWF0aW9uIHRvIFdlYkNvcmUgaW5jbHVkZSBkaXJlY3Rvcmllcy4KKwogMjAxNC0wMS0wNiAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgU21hbGwg
YnVpbGQgZml4IGZvciB0aGUgR1RLKyBDTWFrZSBwb3J0CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJ
KHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2Uvc2Nyb2xsaW5nIgogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vYW5pbWF0aW9uIgorICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9hdWRpbyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxh
dGZvcm0vZ3JhcGhpY3MiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6IgpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMTYxMzc2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDEtMDYgIEVyaWMgQ2FybHNvbiAgPGVy
aWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGVhY2ggTWVkaWFTZXNzaW9uTWFuYWdl
ciB0byBtYW5hZ2UgaW50ZXJydXB0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI2NTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBtZWRpYS92aWRlby1pbnRlcnJ1cHRpb24tYWN0aXZlLXdoZW4t
ZWxlbWVudC1jcmVhdGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlk
ZW8taW50ZXJydXB0aW9uLWFjdGl2ZS13aGVuLWVsZW1lbnQtY3JlYXRlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtYWxsb3dpbmct
cGxheS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLWludGVycnVw
dGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1ub3QtYWxsb3dpbmctcGxheS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRo
LXJlc3VtZS1ub3QtYWxsb3dpbmctcGxheS5odG1sOiBBZGRlZC4KKwogMjAxNC0wMS0wNiAgQWxl
eGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChy
MTYxMTk1KTogQWNpZDIgcmVncmVzc2lvbiB0ZXN0cyBmcmVxdWVudGx5IGZhaWwKSW5kZXg6IExh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLWludGVycnVwdGlvbi1hY3RpdmUtd2hlbi1lbGVtZW50LWNy
ZWF0ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LWludGVycnVwdGlvbi1hY3RpdmUtd2hlbi1lbGVtZW50LWNyZWF0ZWQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLWFjdGl2
ZS13aGVuLWVsZW1lbnQtY3JlYXRlZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNSBAQAorVGVzdCBhIDx2aWRlbz4gZWxlbWVudCBjcmF0ZWQgZHVyaW5nIGludGVycnVw
dGlvbiBiZWhhdmVzIGNvcnJlY3RseS4KKworUlVOKHdpbmRvdy5pbnRlcm5hbHMuYmVnaW5NZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb24oKSkKK1JVTih2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3ZpZGVvJykpCitSVU4oZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh2aWRlbykpCitFVkVO
VChjYW5wbGF5dGhyb3VnaCkKKworUlVOKHZpZGVvLnBsYXkoKSkKKzI1MG1zIHRpbWVyIGZpcmVk
Li4uCitFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKK1JVTih3aW5kb3cuaW50
ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbignTWF5UmVzdW1lUGxheWluZycpKQor
RVZFTlQocGxheWluZykKKworRU5EIE9GIFRFU1QKKwpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8taW50ZXJydXB0aW9uLWFjdGl2ZS13aGVuLWVsZW1lbnQtY3JlYXRlZC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWludGVycnVwdGlvbi1hY3RpdmUtd2hl
bi1lbGVtZW50LWNyZWF0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlh
L3ZpZGVvLWludGVycnVwdGlvbi1hY3RpdmUtd2hlbi1lbGVtZW50LWNyZWF0ZWQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9bWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9
dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZh
ciBzdGF0ZSA9IDA7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrU3RhdGUoKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiMjUwbXMgdGltZXIgZmlyZWQu
Li4iKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnBhdXNlZCIsIHRydWUp
OworICAgICAgICAgICAgICAgIHN0YXRlID0gInJlc3VtaW5nIjsKKyAgICAgICAgICAgICAgICBp
ZiAod2luZG93LmludGVybmFscykgCisgICAgICAgICAgICAgICAgICAgIHJ1bigid2luZG93Lmlu
dGVybmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oJ01heVJlc3VtZVBsYXlpbmcnKSIp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBwbGF5aW5nKCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUgIT0gInJlc3VtaW5nIikKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAg
ICAgICAgICAgICAgICAgIGZhaWxUZXN0KCI8Yj5QbGF5YmFjayBzdGFydGVkIGR1cmluZyBpbnRl
cnJ1cHRpb24uPC9iPiIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAg
ICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNh
bnBsYXl0aHJvdWdoKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIiIpOworICAgICAgICAgICAgICAgIHJ1bigidmlkZW8ucGxheSgpIik7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChjaGVja1N0YXRlLCAyNTApOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBmdW5jdGlvbiBzdGFydCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpIAorICAgICAgICAgICAgICAgICAgICBydW4oIndpbmRvdy5p
bnRlcm5hbHMuYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oKSIpOzsKKyAgICAgICAgICAg
ICAgICBydW4oInZpZGVvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKSIpOworICAg
ICAgICAgICAgICAgIHJ1bigiZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh2aWRlbykiKTsKKyAg
ICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgY2FucGxheXRocm91
Z2gpOworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgncGxheWluZycsIHBsYXlpbmcpOwor
ICAgICAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRl
bnQvdGVzdCIpOworICAgICAgICAgICAgICAgIHN0YXRlID0gImludGVycnVwdGVkIjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorCisgICAgPGJvZHkgb25s
b2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHA+VGVzdCBhICZsdDt2aWRlbyZndDsgZWxlbWVudCBj
cmF0ZWQgZHVyaW5nIGludGVycnVwdGlvbiBiZWhhdmVzIGNvcnJlY3RseS48L3A+CisgICAgPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9u
LXdpdGgtcmVzdW1lLWFsbG93aW5nLXBsYXktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1w
bGF5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACisKK1Rlc3QgdGhhdCBwbGF5KCkgZHVyaW5nIGlu
dGVycnVwdGlvbiBkb2VzIG5vdGhpbmcsIGVuZGluZyBpbnRlcnJ1cHRpb24gYWxsb3dzIHBsYXli
YWNrIHRvIHJlc3VtZS4KKworRVZFTlQoY2FucGxheXRocm91Z2gpCisKK1JVTih3aW5kb3cuaW50
ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCkpCitSVU4odmlkZW8ucGxheSgp
KQorMjUwbXMgdGltZXIgZmlyZWQuLi4KK0VYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUn
KSBPSworUlVOKHdpbmRvdy5pbnRlcm5hbHMuZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCdN
YXlSZXN1bWVQbGF5aW5nJykpCitFVkVOVChwbGF5aW5nKQorCitFTkQgT0YgVEVTVAorCkluZGV4
OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtYWxsb3dp
bmctcGxheS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWludGVy
cnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtYWxsb3dpbmct
cGxheS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz1tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICAgICAgdmFyIHN0YXRlID0gMDsKKworICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tT
dGF0ZSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIyNTBt
cyB0aW1lciBmaXJlZC4uLiIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8u
cGF1c2VkIiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSAicmVzdW1pbmciOworICAg
ICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSAKKyAgICAgICAgICAgICAgICAgICAg
cnVuKCJ3aW5kb3cuaW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbignTWF5UmVz
dW1lUGxheWluZycpIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHBs
YXlpbmcoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChzdGF0ZSAhPSAicmVz
dW1pbmciKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCIiKTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIjxiPlBsYXliYWNrIHN0YXJ0
ZWQgZHVyaW5nIGludGVycnVwdGlvbi48L2I+Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIp
OworICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZnVuY3Rpb24gY2FucGxheXRocm91Z2goKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiIik7CisKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykgCisgICAgICAgICAgICAgICAgICAgIHJ1bigid2luZG93LmludGVybmFscy5iZWdpbk1l
ZGlhU2Vzc2lvbkludGVycnVwdGlvbigpIik7OworICAgICAgICAgICAgICAgIHN0YXRlID0gImlu
dGVycnVwdGVkIjsKKyAgICAgICAgICAgICAgICBydW4oInZpZGVvLnBsYXkoKSIpOworICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2tTdGF0ZSwgMjUwKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2Nh
bnBsYXl0aHJvdWdoJywgY2FucGxheXRocm91Z2gpOworICAgICAgICAgICAgICAgIHdhaXRGb3JF
dmVudCgncGxheWluZycsIHBsYXlpbmcpOworICAgICAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZp
bmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpOworICAgICAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCki
PgorICAgICAgICA8dmlkZW8gY29udHJvbHMgPjwvdmlkZW8+CisgICAgICAgIDxwPlRlc3QgdGhh
dCBwbGF5KCkgZHVyaW5nIGludGVycnVwdGlvbiBkb2VzIG5vdGhpbmcsIGVuZGluZyBpbnRlcnJ1
cHRpb24gYWxsb3dzIHBsYXliYWNrIHRvIHJlc3VtZS48L3A+CisgICAgPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLXdpdGgtcmVzdW1l
LW5vdC1hbGxvd2luZy1wbGF5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtbm90LWFsbG93aW5nLXBsYXkt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50
ZXJydXB0aW9uLXdpdGgtcmVzdW1lLW5vdC1hbGxvd2luZy1wbGF5LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE1IEBACisKK1Rlc3QgdGhhdCBwbGF5KCkgZHVyaW5nIGlu
dGVycnVwdGlvbiBkb2VzIG5vdGhpbmcsIGVuZGluZyBpbnRlcnJ1cHRpb24gZG9lcyBub3QgYWxs
b3cgcGxheWJhY2sgdG8gcmVzdW1lLgorCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKKworUlVOKHdp
bmRvdy5pbnRlcm5hbHMuYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oKSkKK1JVTih2aWRl
by5wbGF5KCkpCisyNTBtcyB0aW1lciBmaXJlZC4uLgorRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9
PSAndHJ1ZScpIE9LCitSVU4od2luZG93LmludGVybmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb24oJycpKQorMjUwbXMgdGltZXIgZmlyZWQuLi4KK0VYUEVDVEVEICh2aWRlby5wYXVzZWQg
PT0gJ3RydWUnKSBPSworCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtbm90LWFsbG93aW5nLXBsYXkuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1
bWUtbm90LWFsbG93aW5nLXBsYXkuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1ub3QtYWxsb3dpbmctcGxheS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c2NyaXB0IHNyYz1tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAg
ICAgdmFyIHN0YXRlID0gMDsKKworICAgICAgICAgICAgZnVuY3Rpb24gcGxheWluZygpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlID09ICJyZXN1bWluZyIpCisgICAg
ICAgICAgICAgICAgICAgIGZhaWxUZXN0KCI8Yj5QbGF5YmFjayBzdGFydGVkIGFmdGVyIGludGVy
cnVwdGlvbi48L2I+Iik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBmYWlsVGVzdCgiPGI+UGxheWJhY2sgc3RhcnRlZCBkdXJpbmcgaW50ZXJydXB0aW9uLjwvYj4i
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tTdGF0ZSgpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIyNTBtcyB0aW1lciBm
aXJlZC4uLiIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAgICAgICAgICAgICAg
IGNhc2UgImludGVycnVwdGVkIjoKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAicmVzdW1p
bmciOworICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGNoZWNrU3RhdGUsIDI1MCk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJ1bigid2luZG93LmludGVybmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRp
b24oJycpIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgInJlc3VtaW5nIjoKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAg
ICAgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IGNhbnBsYXl0aHJvdWdoKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIiIpOworCisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIAorICAg
ICAgICAgICAgICAgICAgICBydW4oIndpbmRvdy5pbnRlcm5hbHMuYmVnaW5NZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb24oKSIpOzsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9ICJpbnRlcnJ1cHRlZCI7
CisgICAgICAgICAgICAgICAgcnVuKCJ2aWRlby5wbGF5KCkiKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGNoZWNrU3RhdGUsIDI1MCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmaW5kTWVk
aWFFbGVtZW50KCk7CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3Vn
aCcsIGNhbnBsYXl0aHJvdWdoKTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BsYXlp
bmcnLCBwbGF5aW5nKTsKKyAgICAgICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxl
KCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorCisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAg
PHZpZGVvIGNvbnRyb2xzID48L3ZpZGVvPgorICAgICAgICA8cD5UZXN0IHRoYXQgcGxheSgpIGR1
cmluZyBpbnRlcnJ1cHRpb24gZG9lcyBub3RoaW5nLCBlbmRpbmcgaW50ZXJydXB0aW9uIGRvZXMg
bm90IGFsbG93IHBsYXliYWNrIHRvIHJlc3VtZS48L3A+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="244282"
          type_id="1"
          status="+"
          setter="jer.noble"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220567</attachid>
            <date>2014-01-07 16:33:10 -0800</date>
            <delta_ts>2014-01-07 21:41:58 -0800</delta_ts>
            <desc>Another update.</desc>
            <filename>interruptions_patch_7.txt</filename>
            <type>text/plain</type>
            <size>53793</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTM3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBACisyMDE0LTAxLTA2ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFRlYWNoIE1lZGlhU2Vz
c2lvbk1hbmFnZXIgdG8gbWFuYWdlIGludGVycnVwdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjUzMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBtZWRpYS92aWRlby1pbnRlcnJ1cHRp
b24tYWN0aXZlLXdoZW4tZWxlbWVudC1jcmVhdGVkLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlh
L3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5Lmh0bWwKKyAgICAg
ICAgICAgICAgIG1lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1ub3QtYWxsb3dp
bmctcGxheS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IGZ1bmN0aW9u
cyBuZWVkZWQgYnkgSW50ZXJuYWxzLgorCisgICAgICAgIEFkZCBNZWRpYVNlc3Npb24gYW5kIE1l
ZGlhU2Vzc2lvbk1hbmFnZXIuCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAg
ICAgQXV0b21hdGljYWxseSBwYXVzZS9wbGF5IGZvciBpbnRlcnJ1cHRpb25zLiBNb3ZlIG1lZGlh
IHJlc3RyaWN0aW9uIG1hbmFnZW1lbnQgdG8gYSBNZWRpYVNlc3Npb24uCisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBHZXQgcmlkIG9mIG1fbG9hZEluaXRpYXRlZEJ5VXNlckdl
c3R1cmUgYW5kIG1fdXNlclN0YXJ0ZWRQbGF5YmFjaywKKyAgICAgICAgICAgIHRoZXkgYXJlbid0
IG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCk6IFVz
ZSB0aGUgbWVkaWEgc2Vzc2lvbiB0byBtYW5hZ2UgcmVzdHJpY3Rpb25zLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheSk6IFJlbW92ZSByZWR1bmRhbnQgaU9TIGNvZGUu
IFBvc3Rwb25lIHBsYXliYWNrIGlmIGNhbGxlZCAKKyAgICAgICAgICAgIGR1cmluZyBhbiBpbnRl
cnJ1cHRpb24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVzZSk6IFJl
bWVtYmVyIHRvIG5vdCByZXN1bWUgcGxheWJhY2sgd2hlbiBpdCBlbmRzIGlmIGNhbGxlZCBkdXJp
bmcKKyAgICAgICAgICAgIGFuIGludGVycnVwdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZyk6IFJlYXJyYW5nZSBjb2RlIHRvIG1ha2Ug
aXQgZWFzaWVyIHRvIHVuZGVyc3RhbmQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojpjb3VsZFBsYXlJZkVub3VnaERhdGEpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnBhdXNlZEZvclVzZXJJbnRlcmFjdGlvbik6IFJldHVybiB0cnVlIGlm
IHBhdXNlZCBiZWNhdXNlIG9mIGFuIGludGVycnVwdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUJlaGF2aW9yc1Jlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2Vy
R2VzdHVyZSk6IEJlIGV4cGxpY2l0IGFib3V0CisgICAgICAgICAgICB3aGljaCByZXN0cmljdGlv
bnMgYXJlIHJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVR5cGUpOiBNZWRpYVNlc3Npb25NYW5hZ2VyOjo8VHlwZT4gLT4gTWVkaWFTZXNzaW9uOjo8VHlw
ZT4uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpiZWdpbkludGVycnVwdGlv
bik6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuZEludGVycnVw
dGlvbik6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorCisgICAg
ICAgIFB1bGxlZCBNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4gb3V0IG9mIE1lZGlhU2Vzc2lvbk1h
bmFnZXIuY3BwLCBhZGRlZCBmdW5jdGlvbmFsaXR5IHRvIG1hbmFnZSBpbnRlcnJ1cHRpb25zLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTZXNzaW9uOjpNZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
Ojp+TWVkaWFTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6YmVnaW5J
bnRlcnJ1cHRpb24pOiBJbmZvcm0gY2xpZW50IG9mIGludGVycnVwdGlvbiBzdGF0ZSBjaGFuZ2Uu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbik6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oOiBBZGRlZC4KKworICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFTZXNzaW9uTWFuYWdlcik6IEluaXRp
YWxpemUgaW50ZXJydXB0aW9uIGNvdW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Np
b25NYW5hZ2VyOjpoYXMpOiBNZWRpYVR5cGUgaXMgZGVmaW5lZCBpbiBNZWRpYVNlc3Npb24uCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb3VudCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5JbnRlcnJ1cHRpb24pOiBJ
bmZvcm0gYWxsIGNsaWVudHMgb2YgaW50ZXJydXB0aW9uIHN0YXJ0IGlmCisgICAgICAgICAgICBu
b3QgYWxyZWFkeSBpbiBhbiBpbnRlcnJ1cHRpb24uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNl
c3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1cHRpb24pOiBJbmZvcm0gYWxsIGNsaWVudHMgaWYgaW50
ZXJydXB0aW9uIGhhcyBlbmRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmFkZFNlc3Npb24pOiBSZW5hbWVkIGZyb20gYWRkVG9rZW4uIFNldCBzZXNzaW9uIGludGVy
cnVwdGlvbiBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJl
bW92ZVNlc3Npb24pOiBSZW5hbWVkIGZyb20gcmVtb3ZlVG9rZW4uCisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorCisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbk1hYzo6QXVkaW9EZXN0aW5hdGlvbk1hYyk6IE1lZGlhU2Vzc2lvbk1hbmFnZXJU
b2tlbiAtPiBNZWRpYVNlc3Npb24uCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
RGVzdGluYXRpb25NYWMuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNl
c3Npb25NYW5hZ2VyTWFjLmNwcDoKKyAgICAgICAgKE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0
ZVNlc3Npb25TdGF0ZSk6IERpdHRvLgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgZm9yIHRl
c3RzIHRvIGJlZ2luIGFuZCBlbmQgaW50ZXJydXB0aW9ucy4KKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmJlZ2luTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZW5kTWVkaWFT
ZXNzaW9uSW50ZXJydXB0aW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxNC0wMS0wNiAgQnJlbnQgRnVsZ2hh
bSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR0xdIEZCTyBEZXB0aCBCdWZm
ZXIgQXR0YWNobWVudCBGdW5jdGlvbiBJbXByb3Blcmx5IENsZWFyaW5nIHdpdGggMApJbmRleDog
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xODc3LDYgKzE4NzcsOCBAQCBzZXQoV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKICAgICBw
bGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL0hSVEZQYW5u
ZXIuY3BwCisgICAgcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcAorICAgIHBsYXRmb3Jt
L2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCiAgICAgcGxhdGZvcm0vYXVkaW8vTXVsdGlD
aGFubmVsUmVzYW1wbGVyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAKICAgICBw
bGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTUzNTEsNiArNTM1MSwxMCBAQCB3ZWJjb3JlX3BsYXRmb3Jt
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIu
aCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL01lZGlhU2Vzc2lvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRp
YVNlc3Npb25NYW5hZ2VyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVk
aWFTZXNzaW9uTWFuYWdlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlv
blZhbHVlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAgXApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC03NTYsNiArNzU2LDkgQEAgX19aTjdX
ZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1bGVyQzFFUE5TXwogX19aTjdXZWJDb3JlMTlMYXllckZs
dXNoU2NoZWR1bGVyQzJFUE5TXzI1TGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudEUKIF9fWk43V2Vi
Q29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlckQxRXYKIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNj
aGVkdWxlckQyRXYKK19fWk43V2ViQ29yZTE5TWVkaWFTZXNzaW9uTWFuYWdlcjEzc2hhcmVkTWFu
YWdlckV2CitfX1pON1dlYkNvcmUxOU1lZGlhU2Vzc2lvbk1hbmFnZXIxNWVuZEludGVycnVwdGlv
bkVOU18xMk1lZGlhU2Vzc2lvbjIwRW5kSW50ZXJydXB0aW9uRmxhZ3NFCitfX1pON1dlYkNvcmUx
OU1lZGlhU2Vzc2lvbk1hbmFnZXIxN2JlZ2luSW50ZXJydXB0aW9uRXYKIF9fWk43V2ViQ29yZTE5
UmVzb3VyY2VSZXF1ZXN0QmFzZTExc2V0SFRUUEJvZHlFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOEZv
cm1EYXRhRUVFCiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxM3NldEhUVFBNZXRo
b2RFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxOHNl
dEhUVFBIZWFkZXJGaWVsZEVQS2NSS04zV1RGNlN0cmluZ0UKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNpb24gMTYxMzU4KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNzIyNSw2ICs3MjI1LDggQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXEZpbGVTdHJlYW0uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cRmlsZVN5c3RlbS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxhdWRpb1xBdWRpb1Nlc3Npb24uY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cYXVkaW9cTWVkaWFTZXNzaW9uLmNwcCIgLz4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcQU5HTEVXZWJLaXRC
cmlkZ2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcYXZmb3VuZGF0aW9uXGNmXEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlvblxj
ZlxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5jcHAiIC8+CkBAIC0xOTA4OCw2ICsx
OTA5MCw4IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxGbG9hdENvbnZl
cnNpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXEF1
ZGlvU2Vzc2lvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cYXVk
aW9cQXVkaW9TZXNzaW9uTGlzdGVuZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cYXVkaW9cTWVkaWFTZXNzaW9uTWFuYWdlci5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcQU5HTEVXZWJLaXRCcmlkZ2UuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEF1ZGlvVHJh
Y2tQcml2YXRlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xhdmZvdW5kYXRpb25cY2ZcSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaCIgLz4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMTQ1
OTYsNiArMTQ1OTYsMTIgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1
ZGlvXEF1ZGlvU2Vzc2lvbkxpc3RlbmVyLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxhdWRp
bzwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cYXVkaW9cTWVkaWFTZXNzaW9uLmgiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxh
dWRpbzwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cYXVkaW9cTWVkaWFTZXNzaW9uTWFuYWdlci5oIj4KKyAgICAgIDxGaWx0ZXI+
cGxhdGZvcm1cYXVkaW88L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEFOR0xFV2ViS2l0QnJpZGdlLmgiPgogICAg
ICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTYxMzU4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNiArMTI5LDggQEAKIAkJ
MDcwNzU2REYxNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA3NTZEOTE0MjM5QjRD
MDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmNwcCAqLzsgfTsKIAkJMDcwNzU2RTAxNDIz
OUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNzU2REExNDIzOUI0RTAwNDE0MTYxIC8qIEpT
VGV4dFRyYWNrQ3VlTGlzdC5oICovOyB9OwogCQkwNzA5RkM0RTEwMjVERUUzMDA1OUNEQkEgLyog
QWNjZXNzaWJpbGl0eVNsaWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDcwOUZDNEQxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlk
ZXIuaCAqLzsgfTsKKwkJMDcwRTA5MTkxODc1RUVGQzAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwRTA5MTgx
ODc1RUQ5MzAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTA3MEUwOTFCMTg3NUVGNzEwMDNBMUQzQyAvKiBN
ZWRpYVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDcwRTA5MUExODc1RUY3MTAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5jcHAgKi87IH07
CiAJCTA3MEY1NDk4MTdGMTJGNkIwMDE2OUUwNCAvKiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFs
aWRhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDcwRjU0OTcxN0YxMkY2QjAwMTY5RTA0IC8qIE1lZGlhU3RyZWFtQ29uc3RyYWludHNW
YWxpZGF0aW9uQ2xpZW50LmggKi87IH07CiAJCTA3MEY1NDlFMTdGMjQwMjcwMDE2OUUwNCAvKiBB
dWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3MEY1NDlEMTdGMjQwMjcwMDE2OUUwNCAvKiBBdWRpb0Rlc3RpbmF0
aW9uQ29uc3VtZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwNzExNTg5MTE3REY2RjY2MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MTE1ODhG
MTdERjYzMzcwMEVERkUyQiAvKiBNZWRpYVN0cmVhbVByaXZhdGUuY3BwICovOyB9OwpAQCAtNjcx
NSw2ICs2NzE3LDggQEAKIAkJMDcwNzU2REExNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNr
Q3VlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RleHRUcmFja0N1
ZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwOUZDNEQxMDI1REVFMzAw
NTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQWNjZXNzaWJpbGl0eVNsaWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwNzBERDhGNTBGMDE4NjgwMDA3MjdERUIgLyogbWVkaWFDb250cm9scy5jc3MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gbWVkaWFDb250cm9scy5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA3MEUwOTE4MTg3NUVEOTMwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTZXNzaW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3MEUwOTFBMTg3NUVGNzEwMDNBMUQzQyAvKiBNZWRpYVNlc3Np
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwRjU0OTcxN0YxMkY2QjAwMTY5
RTA0IC8qIE1lZGlhU3RyZWFtQ29uc3RyYWludHNWYWxpZGF0aW9uQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtQ29uc3RyYWludHNWYWxpZGF0aW9u
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MEY1NDlEMTdGMjQwMjcw
MDE2OUUwNCAvKiBBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3MTE1ODhGMTdERjYzMzcwMEVERkUyQiAvKiBNZWRpYVN0cmVhbVBy
aXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJl
YW1Qcml2YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMDUwLDYgKzIy
MDU0LDggQEAKIAkJCQlDREE3OTgyMjE3MEEyNEY0MDBENDVDNTUgLyogQXVkaW9TZXNzaW9uTGlz
dGVuZXIuaCAqLywKIAkJCQlDREFFOEMwNzE3NDZCOTU3MDA1MzJENzggLyogTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHAgKi8sCiAJCQkJQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vz
c2lvbk1hbmFnZXIuaCAqLywKKwkJCQkwNzBFMDkxODE4NzVFRDkzMDAzQTFEM0MgLyogTWVkaWFT
ZXNzaW9uLmggKi8sCisJCQkJMDcwRTA5MUExODc1RUY3MTAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lv
bi5jcHAgKi8sCiAJCQkJRkQzMTYwNTMxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvU291cmNlUHJv
dmlkZXIuaCAqLywKIAkJCQlGRDYyRjUyRDE0NTg5OEQ4MDA5NEIwRUQgLyogQXVkaW9Tb3VyY2VQ
cm92aWRlckNsaWVudC5oICovLAogCQkJCUZEMzE2MDU0MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRp
b1V0aWxpdGllcy5jcHAgKi8sCkBAIC0yNDU5OSw2ICsyNDYwNSw3IEBACiAJCQkJNDM2NzA4Qzcx
MkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDM2NzA4QzkxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR0ltYWdlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwODU0QjAxNTEyNTVFNEU2MDBCOUNERDAgLyogUmVuZGVyU1ZHSW5s
aW5lLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzBFMDkxOTE4NzVFRUZDMDAzQTFEM0MgLyogTWVk
aWFTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODU0QjAxNzEyNTVFNEU2MDBCOUNERDAg
LyogUmVuZGVyU1ZHSW5saW5lVGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzQTQ5NjIxN0E5
RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM2NzA4
Q0IxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR01vZGVsT2JqZWN0LmggaW4gSGVhZGVycyAq
LywKQEAgLTI4MDczLDYgKzI4MDgwLDcgQEAKIAkJCQk5MzMwOUUxMTA5OUU2NDkyMDA1NkU1ODEg
LyogU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxMzA5
OUU2NDkyMDA1NkU1ODEgLyogU3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDc4RTA5NEIxN0QxNzA5NjAwNDIwQUExIC8qIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcwRTA5MUIxODc1RUY3MTAwM0ExRDND
IC8qIE1lZGlhU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxNTA5OUU2NDky
MDA1NkU1ODEgLyogU3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMUUxMTU0ODEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291
cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QkM2QTNFMTUwNUYwODEwMDFCNzRBQyAvKiBT
UUxFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEzICszMCwx
MyBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCiAjaW5jbHVkZSAiQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSAi
Q1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNs
dWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDbGllbnRSZWN0LmgiCiAjaW5jbHVkZSAi
Q2xpZW50UmVjdExpc3QuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNp
bmNsdWRlICJDb250ZW50VHlwZS5oIgotI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNp
bmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJFbGVtZW50SXRl
cmF0b3IuaCIKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJKU0hUTUxNZWRpYUVsZW1lbnQu
aCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAi
TWVkaWFDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9scy5oIgpAQCAtNTksNyAr
NjAsNyBAQAogI2luY2x1ZGUgIk1lZGlhS2V5RXZlbnQuaCIKICNpbmNsdWRlICJNZWRpYUxpc3Qu
aCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCi0jaW5jbHVkZSAiTUlNRVR5cGVS
ZWdpc3RyeS5oIgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJQ
YWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclZpZGVvLmgiCkBAIC0xMzcsMTAgKzEzOCw2IEBACiAjaW5jbHVkZSAiUGxh
dGZvcm1UZXh0VHJhY2suaCIKICNlbmRpZgogCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCi0jaW5j
bHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoTUVESUFf
Q09OVFJPTFNfU0NSSVBUKQogI2luY2x1ZGUgIkpTTWVkaWFDb250cm9sc0hvc3QuaCIKICNpbmNs
dWRlICJNZWRpYUNvbnRyb2xzSG9zdC5oIgpAQCAtMzE2LDcgKzMxMyw2IEBAIEhUTUxNZWRpYUVs
ZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZP
Ul9WSURFTykKICAgICAsIG1fbmVlZFdpZGdldFVwZGF0ZShmYWxzZSkKICNlbmRpZgotICAgICwg
bV9sb2FkSW5pdGlhdGVkQnlVc2VyR2VzdHVyZShmYWxzZSkKICAgICAsIG1fY29tcGxldGVseUxv
YWRlZChmYWxzZSkKICAgICAsIG1faGF2ZVByZXBhcmVkVG9QbGF5KGZhbHNlKQogICAgICwgbV9w
YXJzaW5nSW5Qcm9ncmVzcyhjcmVhdGVkQnlQYXJzZXIpCkBAIC0zMjUsNyArMzIxLDYgQEAgSFRN
TE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdAogI2VuZGlmCiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgICwgbV9yZXF1ZXN0aW5nUGxheShmYWxzZSkKLSAgICAsIG1fdXNlclN0YXJ0
ZWRQbGF5YmFjayhmYWxzZSkKICNlbmRpZgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICAs
IG1fdHJhY2tzQXJlUmVhZHkodHJ1ZSkKQEAgLTM0MSw5ICszMzYsNyBAQCBIVE1MTWVkaWFFbGVt
ZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0CiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICAs
IG1fYXVkaW9Tb3VyY2VOb2RlKDApCiAjZW5kaWYKLSNpZiBVU0UoQVVESU9fU0VTU0lPTikKLSAg
ICAsIG1fbWVkaWFTZXNzaW9uTWFuYWdlclRva2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbjo6
Y3JlYXRlKCp0aGlzKSkKLSNlbmRpZgorICAgICwgbV9tZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9u
OjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCgwKQogI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgLCBtX21lZGlhU3RyZWFtU3JjT2JqZWN0KG51bGxw
dHIpCkBAIC0zNzMsOCArMzY2LDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVu
dChjb25zdAogI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKICAgICAgICAgYWRkQmVoYXZpb3JSZXN0
cmljdGlvbihSZXF1aXJlVXNlckdlc3R1cmVUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tlcik7CiAj
ZW5kaWYKLSAgICB9IGVsc2UKLSAgICAgICAgbV9yZXN0cmljdGlvbnMgPSBOb1Jlc3RyaWN0aW9u
czsKKyAgICB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAogICAgIGFkZEVsZW1lbnRUb0Rv
Y3VtZW50TWFwKCp0aGlzLCBkb2N1bWVudCk7CkBAIC05MDIsMjEgKzg5NCwxMSBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmxvYWQoKQogICAgIAogICAgIGlmICh1c2VyR2VzdHVyZVJlcXVpcmVk
Rm9yTG9hZCgpICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1fbG9hZEluaXRpYXRlZEJ5VXNlckdlc3R1cmUg
PSBTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKLSAgICBpZiAobV9s
b2FkSW5pdGlhdGVkQnlVc2VyR2VzdHVyZSkKKyAgICBpZiAoU2NyaXB0Q29udHJvbGxlcjo6cHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIHJlbW92ZUJlaGF2aW9yc1Jlc3RyaWN0aW9u
c0FmdGVyRmlyc3RVc2VyR2VzdHVyZSgpOworCiAgICAgcHJlcGFyZUZvckxvYWQoKTsKICAgICBs
b2FkSW50ZXJuYWwoKTsKLQotI2lmIFBMQVRGT1JNKElPUykKLSAgICAvLyBVbmxlc3MgdGhpcyBt
ZXRob2Qgd2FzIGNhbGxlZCBkaXJlY3RseSBieSB0aGUgdXNlciBvciB0aGUgYXBwbGljYXRpb24g
YWxsb3dzIGFueSBzY3JpcHQgdG8gdHJpZ2dlciBwbGF5YmFjaywKLSAgICAvLyByZXR1cm4gbm93
IGJlY2F1c2UgcHJlcGFyZVRvUGxheSgpIHRlbGxzIHRoZSBtZWRpYSBlbmdpbmUgdG8gc3RhcnQg
bG9hZGluZyBkYXRhIGFzIHNvb24gYXMgdGhlIG1vdmllIHZhbGlkYXRlcy4KLSAgICBTZXR0aW5n
cyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLnNldHRpbmdzKCk7Ci0gICAgaWYgKCFtX2xvYWRJbml0
aWF0ZWRCeVVzZXJHZXN0dXJlICYmICghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPm1lZGlhUGxheWJh
Y2tSZXF1aXJlc1VzZXJHZXN0dXJlKCkpKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLQogICAg
IHByZXBhcmVUb1BsYXkoKTsKIH0KIApAQCAtMjY1NiwxMCArMjYzOCwxMSBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXkoKQogICAgIGlmIChTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5n
VXNlckdlc3R1cmUoKSkKICAgICAgICAgcmVtb3ZlQmVoYXZpb3JzUmVzdHJpY3Rpb25zQWZ0ZXJG
aXJzdFVzZXJHZXN0dXJlKCk7CiAKLSNpZiBQTEFURk9STShJT1MpCi0gICAgdXNlclJlcXVlc3Rz
TWVkaWFMb2FkaW5nKCk7Ci0jZW5kaWYKLQorICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+c3RhdGUo
KSA9PSBNZWRpYVNlc3Npb246OkludGVycnVwdGVkKSB7CisgICAgICAgIG1fcmVzdW1lUGxheWJh
Y2tBZnRlckludGVycnVwdGlvbiA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CiAgICAgcGxheUludGVybmFsKCk7CiB9CiAKQEAgLTI3MDIsNiArMjY4NSwxMSBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnBhdXNlKCkKICAgICBpZiAodXNlckdlc3R1cmVSZXF1aXJlZEZvclJh
dGVDaGFuZ2UoKSAmJiAhU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkp
CiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBN
ZWRpYVNlc3Npb246OkludGVycnVwdGVkKSB7CisgICAgICAgIG1fcmVzdW1lUGxheWJhY2tBZnRl
ckludGVycnVwdGlvbiA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAg
IHBhdXNlSW50ZXJuYWwoKTsKIH0KIApAQCAtNDEyMSwxMiArNDEwOSwyOCBAQCBib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluCiAgICAgLy8gd2hlbiBpdCByYW4gb3V0IG9m
IGJ1ZmZlcmVkIGRhdGEuIEEgbW92aWUgaXMgdGhpcyBzdGF0ZSBpcyAicG90ZW50aWFsbHkgcGxh
eWluZyIsIG1vZHVsbyB0aGUKICAgICAvLyBjaGVja3MgaW4gY291bGRQbGF5SWZFbm91Z2hEYXRh
KCkuCiAgICAgYm9vbCBwYXVzZWRUb0J1ZmZlciA9IG1fcmVhZHlTdGF0ZU1heGltdW0gPj0gSEFW
RV9GVVRVUkVfREFUQSAmJiBtX3JlYWR5U3RhdGUgPCBIQVZFX0ZVVFVSRV9EQVRBOwotICAgIHJl
dHVybiAocGF1c2VkVG9CdWZmZXIgfHwgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEp
ICYmIGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpICYmICFpc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxl
cigpOworICAgIAorICAgIGlmICghcGF1c2VkVG9CdWZmZXIgJiYgbV9yZWFkeVN0YXRlIDwgSEFW
RV9GVVRVUkVfREFUQSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGNvdWxk
UGxheUlmRW5vdWdoRGF0YSgpICYmICFpc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigpOwogfQog
CiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNvdWxkUGxheUlmRW5vdWdoRGF0YSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuICFwYXVzZWQoKSAmJiAhZW5kZWRQbGF5YmFjaygpICYmICFzdG9wcGVkRHVl
VG9FcnJvcnMoKSAmJiAhcGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCk7CisgICAgaWYgKHBhdXNl
ZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZW5kZWRQbGF5YmFjaygpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3RvcHBlZER1ZVRvRXJyb3JzKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChwYXVzZWRGb3JVc2VySW50ZXJhY3Rpb24o
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wg
SFRNTE1lZGlhRWxlbWVudDo6ZW5kZWRQbGF5YmFjaygpIGNvbnN0CkBAIC00MTcwLDcgKzQxNzQs
OSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnN0b3BwZWREdWVUb0Vycm9yCiAKIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6cGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCkgY29uc3QKIHsKLS8vICAg
IHJldHVybiAhcGF1c2VkKCkgJiYgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEgJiYg
W1VBIHJlcXVpcmVzIGEgZGVjaXRpb25zIGZyb20gdGhlIHVzZXJdCisgICAgaWYgKG1fbWVkaWFT
ZXNzaW9uLT5zdGF0ZSgpID09IE1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQpCisgICAgICAgIHJl
dHVybiB0cnVlOworCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC00NTU3LDcgKzQ1NjMsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRlbGl2ZXJOb3RpZmljYXRpCiB7CiAgICAgaWYgKG5v
dGlmaWNhdGlvbiA9PSBNZWRpYVBsYXllck5vdGlmaWNhdGlvblBsYXlQYXVzZUJ1dHRvblByZXNz
ZWQpIHsKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIHVzZXJSZXF1ZXN0c01lZGlhTG9hZGlu
ZygpOworICAgICAgICByZW1vdmVCZWhhdmlvcnNSZXN0cmljdGlvbnNBZnRlckZpcnN0VXNlckdl
c3R1cmUoKTsKICNlbmRpZgogICAgICAgICB0b2dnbGVQbGF5U3RhdGUoKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtNTI5OCwxNiArNTMwNCw2IEBAIEF1ZGlvU291cmNlUHJvdmlkZXIqIEhUTUxNZWRp
YUVsZW1lbnQ6OmEKIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQotdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojp1c2VyUmVxdWVzdHNNZWRpYUxvYWRpbmcoKQotewotICAgIC8vIFRoZSB1c2Vy
IGlzIHJlcXVlc3RpbmcgZGF0YSBsb2FkaW5nIGFuZC9vciBwbGF5YmFjaywgc28gcmVtb3ZlIHRo
ZSAib25seSBjaGFuZ2UgcGxheWJhY2sgaW4gcmVzcG9uc2UKLSAgICAvLyB0byBhIHVzZXIgZ2Vz
dHVyZSIgcmVzdHJpY3Rpb24gb24gdGhpcyBtb3ZpZS4KLSAgICBtX3VzZXJTdGFydGVkUGxheWJh
Y2sgPSB0cnVlOwotICAgIG1fcmVzdHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7Ci19Ci0jZW5k
aWYKLQogY29uc3QgU3RyaW5nJiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUdyb3VwKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9tZWRpYUdyb3VwOwpAQCAtNTU3OSw3ICs1NTc1LDEyIEBAIENhY2hl
ZFJlc291cmNlTG9hZGVyKiBIVE1MTWVkaWFFbGVtZW50OjoKIAogdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpyZW1vdmVCZWhhdmlvcnNSZXN0cmljdGlvbnNBZnRlckZpcnN0VXNlckdlc3R1cmUoKQog
ewotICAgIG1fcmVzdHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7CisgICAgcmVtb3ZlQmVoYXZp
b3JSZXN0cmljdGlvbihSZXF1aXJlVXNlckdlc3R1cmVGb3JMb2FkUmVzdHJpY3Rpb24pOworICAg
IHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5n
ZVJlc3RyaWN0aW9uKTsKKyAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2Vy
R2VzdHVyZUZvckZ1bGxzY3JlZW5SZXN0cmljdGlvbik7CisjaWYgRU5BQkxFKElPU19BSVJQTEFZ
KQorICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlVG9TaG93
UGxheWJhY2tUYXJnZXRQaWNrZXJSZXN0cmljdGlvbik7CisjZW5kaWYKIH0KIAogI2lmIEVOQUJM
RShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQpAQCAtNTcwMiwxNSArNTcwMywzNCBAQCB1bnNpZ25l
ZCBsb25nIGxvbmcgSFRNTE1lZGlhRWxlbWVudDo6ZmlsCiAgICAgcmV0dXJuIDA7CiB9CiAKLSNp
ZiBVU0UoQVVESU9fU0VTU0lPTikKLU1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1lZGlhVHlwZSBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVR5cGUoKSBjb25zdAorTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFUeXBlKCkgY29uc3QKIHsKICAgICBpZiAoaGFzVGFnTmFt
ZShIVE1MTmFtZXM6OnZpZGVvVGFnKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OlZpZGVvOworICAgICAgICByZXR1cm4gTWVkaWFTZXNzaW9uOjpWaWRlbzsKIAotICAgIHJl
dHVybiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpBdWRpbzsKKyAgICByZXR1cm4gTWVkaWFTZXNzaW9u
OjpBdWRpbzsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpiZWdpbkludGVycnVwdGlvbigp
Cit7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6YmVnaW5JbnRlcnJ1cHRpb24i
KTsKKyAgICAKKyAgICBtX3Jlc3VtZVBsYXliYWNrQWZ0ZXJJbnRlcnJ1cHRpb24gPSAhcGF1c2Vk
KCk7CisgICAgaWYgKG1fcmVzdW1lUGxheWJhY2tBZnRlckludGVycnVwdGlvbikKKyAgICAgICAg
cGF1c2UoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbmRJbnRlcnJ1cHRpb24oTWVk
aWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncykKK3sKKyAgICBib29sIHNob3Vs
ZFJlc3VtZVBsYXliYWNrID0gbV9yZXN1bWVQbGF5YmFja0FmdGVySW50ZXJydXB0aW9uOworICAg
IG1fcmVzdW1lUGxheWJhY2tBZnRlckludGVycnVwdGlvbiA9IGZhbHNlOworCisgICAgaWYgKCFm
bGFncyAmIE1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKHNob3VsZFJlc3VtZVBsYXliYWNrKQorICAgICAgICBwbGF5KCk7CiB9Ci0jZW5k
aWYKIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2
aXNpb24gMTYxMzU4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogCiAjaWYgRU5B
QkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVt
ZW50LmgiCkBAIC01Myw5ICs1NCw2IEBACiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKICNlbmRp
ZgogCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdl
ci5oIgotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA1LDcgKzEwMyw3IEBA
IGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQKICNlbHNlCiAgICAgOiBwdWJsaWMgSFRNTEVsZW1lbnQK
ICNlbmRpZgotICAgICwgcHJpdmF0ZSBNZWRpYVBsYXllckNsaWVudCwgcHVibGljIE1lZGlhUGxh
eWVyU3VwcG9ydHNUeXBlQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVi
bGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZQorICAg
ICwgcHJpdmF0ZSBNZWRpYVBsYXllckNsaWVudCwgcHVibGljIE1lZGlhUGxheWVyU3VwcG9ydHNU
eXBlQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEFjdGl2ZURP
TU9iamVjdCwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSAsIHB1YmxpYyBNZWRpYVNl
c3Npb25DbGllbnQKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLCBwcml2YXRlIEF1ZGlv
VHJhY2tDbGllbnQKICAgICAsIHByaXZhdGUgVGV4dFRyYWNrQ2xpZW50CkBAIC0xMTQsOSArMTEy
LDYgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudAogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNL
X01FTlUpCiAgICAgLCBwdWJsaWMgUGxhdGZvcm1UZXh0VHJhY2tNZW51Q2xpZW50CiAjZW5kaWYK
LSNpZiBVU0UoQVVESU9fU0VTU0lPTikKLSAgICAsIHB1YmxpYyBNZWRpYVNlc3Npb25NYW5hZ2Vy
Q2xpZW50Ci0jZW5kaWYKIHsKIHB1YmxpYzoKICAgICBNZWRpYVBsYXllciogcGxheWVyKCkgY29u
c3QgeyByZXR1cm4gbV9wbGF5ZXIuZ2V0KCk7IH0KQEAgLTQ4MSw2ICs0NzYsOCBAQCBwcm90ZWN0
ZWQ6CiAKICAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIE9WRVJSSURFOwogCisgICAgTWVkaWFTZXNz
aW9uJiBtZWRpYVNlc3Npb24oKSBjb25zdCB7IHJldHVybiAqbV9tZWRpYVNlc3Npb247IH0KKwog
cHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZU1lZGlhUGxheWVyKCk7CiAKQEAgLTY1Miw3ICs2NDks
NiBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgcGFyc2VNZWRpYVBs
YXllckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJik7
Ci0gICAgdm9pZCB1c2VyUmVxdWVzdHNNZWRpYUxvYWRpbmcoKTsKICNlbmRpZgogCiAgICAgLy8g
UGF1c2VzIHBsYXliYWNrIHdpdGhvdXQgY2hhbmdpbmcgYW55IHN0YXRlcyBvciBnZW5lcmF0aW5n
IGV2ZW50cwpAQCAtNjk1LDkgKzY5MSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlTWVk
aWFDb250cm9sc0luamVjdGVkU2NyaXB0KCk7CiAjZW5kaWYKIAotI2lmIFVTRShBVURJT19TRVNT
SU9OKQotICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFUeXBlIG1lZGlhVHlw
ZSgpIGNvbnN0IE9WRVJSSURFOwotI2VuZGlmCisgICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1l
ZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBi
ZWdpbkludGVycnVwdGlvbigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBlbmRJbnRlcnJ1
cHRpb24oTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncykgT1ZFUlJJREU7CiAKICAg
ICBUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiBtX2xvYWRUaW1lcjsKICAgICBUaW1lcjxIVE1MTWVk
aWFFbGVtZW50PiBtX3Byb2dyZXNzRXZlbnRUaW1lcjsKQEAgLTc5NCw3ICs3OTEsNiBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9uZWVkV2lkZ2V0VXBkYXRlIDogMTsKICNlbmRpZgogCi0gICAgYm9v
bCBtX2xvYWRJbml0aWF0ZWRCeVVzZXJHZXN0dXJlIDogMTsKICAgICBib29sIG1fY29tcGxldGVs
eUxvYWRlZCA6IDE7CiAgICAgYm9vbCBtX2hhdmVQcmVwYXJlZFRvUGxheSA6IDE7CiAgICAgYm9v
bCBtX3BhcnNpbmdJblByb2dyZXNzIDogMTsKQEAgLTgwNCw5ICs4MDAsMTAgQEAgcHJpdmF0ZToK
IAogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIG1fcmVxdWVzdGluZ1BsYXkgOiAxOwotICAg
IGJvb2wgbV91c2VyU3RhcnRlZFBsYXliYWNrIDogMTsKICNlbmRpZgogCisgICAgYm9vbCBtX3Jl
c3VtZVBsYXliYWNrQWZ0ZXJJbnRlcnJ1cHRpb24gOiAxOworCiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQogICAgIGJvb2wgbV90cmFja3NBcmVSZWFkeSA6IDE7CiAgICAgYm9vbCBtX2hhdmVWaXNp
YmxlVGV4dFRyYWNrIDogMTsKQEAgLTg1MywxMCArODUwLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8UGxhdGZvcm1UZXh0VHJhY2tNZW51SW50ZXJmYWNlPiBtX3BsYXRmb3JtTWVudTsKICNlbmRp
ZgogCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCi0gICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhU2Vz
c2lvbk1hbmFnZXJUb2tlbj4gbV9tZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW47Ci0jZW5kaWYKLQor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNzaW9uOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbj4gbV9hY3Rpdml0eVRva2Vu
OwogICAgIHNpemVfdCBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0OwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVt
ZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFn
ZXIuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb24+IE1l
ZGlhU2Vzc2lvbjo6Y3JlYXRlKE1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQoreworICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhU2Vzc2lvbj4oY2xpZW50KTsKK30KKworTWVkaWFT
ZXNzaW9uOjpNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQpCisgICAgOiBt
X2NsaWVudChjbGllbnQpCisgICAgLCBtX3N0YXRlKFJ1bm5pbmcpCit7CisgICAgbV90eXBlID0g
bV9jbGllbnQubWVkaWFUeXBlKCk7CisgICAgQVNTRVJUKG1fdHlwZSA+PSBOb25lICYmIG1fdHlw
ZSA8PSBXZWJBdWRpbyk7CisgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigp
LmFkZFNlc3Npb24oKnRoaXMpOworfQorCitNZWRpYVNlc3Npb246On5NZWRpYVNlc3Npb24oKQor
eworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVTZXNzaW9u
KCp0aGlzKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb246OmJlZ2luSW50ZXJydXB0aW9uKCkKK3sK
KyAgICBtX3N0YXRlID0gSW50ZXJydXB0ZWQ7CisgICAgbV9jbGllbnQuYmVnaW5JbnRlcnJ1cHRp
b24oKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbihFbmRJbnRlcnJ1
cHRpb25GbGFncyBmbGFncykKK3sKKyAgICBtX3N0YXRlID0gUnVubmluZzsKKyAgICBtX2NsaWVu
dC5lbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhU2Vzc2lvbl9oCisjZGVmaW5l
IE1lZGlhU2Vzc2lvbl9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVNlc3Npb25DbGllbnQ7CitjbGFzcyBIVE1MTWVk
aWFFbGVtZW50OworCitjbGFzcyBNZWRpYVNlc3Npb24geworcHVibGljOgorICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8TWVkaWFTZXNzaW9uPiBjcmVhdGUoTWVkaWFTZXNzaW9uQ2xpZW50Jik7
CisKKyAgICBNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uQ2xpZW50Jik7CisgICAgfk1lZGlhU2Vz
c2lvbigpOworCisgICAgZW51bSBNZWRpYVR5cGUgeworICAgICAgICBOb25lLAorICAgICAgICBW
aWRlbywKKyAgICAgICAgQXVkaW8sCisgICAgICAgIFdlYkF1ZGlvLAorICAgIH07CisgICAgCisg
ICAgTWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAg
ZW51bSBTdGF0ZSB7CisgICAgICAgIFJ1bm5pbmcsCisgICAgICAgIEludGVycnVwdGVkLAorICAg
IH07CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CisgICAgdm9p
ZCBzZXRTdGF0ZShTdGF0ZSBzdGF0ZSkgeyBtX3N0YXRlID0gc3RhdGU7IH0KKworICAgIGVudW0g
RW5kSW50ZXJydXB0aW9uRmxhZ3MgeworICAgICAgICBOb0ZsYWdzID0gMCwKKyAgICAgICAgTWF5
UmVzdW1lUGxheWluZyA9IDEgPDwgMCwKKyAgICB9OworICAgIHZvaWQgYmVnaW5JbnRlcnJ1cHRp
b24oKTsKKyAgICB2b2lkIGVuZEludGVycnVwdGlvbihFbmRJbnRlcnJ1cHRpb25GbGFncyk7CisK
K3ByaXZhdGU6CisgICAgTWVkaWFTZXNzaW9uQ2xpZW50JiBtX2NsaWVudDsKKyAgICBNZWRpYVR5
cGUgbV90eXBlOworICAgIFN0YXRlIG1fc3RhdGU7Cit9OworCitjbGFzcyBNZWRpYVNlc3Npb25D
bGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhU2Vzc2lvbkNsaWVudCk7Citw
dWJsaWM6CisgICAgTWVkaWFTZXNzaW9uQ2xpZW50KCkgeyB9CisgICAgCisgICAgdmlydHVhbCBN
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCA9IDA7CisgICAgCisgICAg
dmlydHVhbCB2b2lkIGJlZ2luSW50ZXJydXB0aW9uKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGVu
ZEludGVycnVwdGlvbihNZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzKSB7IH0KKyAg
ICAKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25DbGllbnQoKSB7IH0KK307
CisKK30KKworI2VuZGlmIC8vIE1lZGlhU2Vzc2lvbl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkocmV2aXNp
b24gMTYxMzU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDI1ICsyNiw5IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKyNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKIAotCi1zdGQ6OnVuaXF1
ZV9wdHI8TWVkaWFTZXNzaW9uTWFuYWdlclRva2VuPiBNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW46
OmNyZWF0ZShNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQpCi17Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFTZXNzaW9uTWFuYWdlclRva2VuPihjbGllbnQpOwotfQot
Ci1NZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW46Ok1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbihNZWRp
YVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCi17
Ci0gICAgbV90eXBlID0gbV9jbGllbnQubWVkaWFUeXBlKCk7Ci0gICAgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZFRva2VuKCp0aGlzKTsKLX0KLQotTWVkaWFTZXNzaW9u
TWFuYWdlclRva2VuOjp+TWVkaWFTZXNzaW9uTWFuYWdlclRva2VuKCkKLXsKLSAgICBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVtb3ZlVG9rZW4oKnRoaXMpOwotfQorbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBNZWRpYVNlc3Npb25NYW5hZ2VyJiBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkKIHsKQEAgLTUzLDQ4ICszNyw2OSBAQCBNZWRpYVNlc3Npb25N
YW5hZ2VyJiBNZWRpYVNlc3Npb25NYW5hZ2VyCiB9CiAKIE1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXIoKQorICAgIDogbV9pbnRlcnJ1cHRpb25zKDApCiB7CiB9CiAKLWJv
b2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6aGFzKE1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1lZGlhVHlw
ZSB0eXBlKSBjb25zdAorYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpoYXMoTWVkaWFTZXNzaW9u
OjpNZWRpYVR5cGUgdHlwZSkgY29uc3QKIHsKLSAgICBBU1NFUlQodHlwZSA+PSBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpOb25lICYmIHR5cGUgPD0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6V2ViQXVkaW8p
OworICAgIEFTU0VSVCh0eXBlID49IE1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9IE1lZGlh
U2Vzc2lvbjo6V2ViQXVkaW8pOwogCi0gICAgZm9yIChhdXRvIGl0ID0gbV90b2tlbnMuYmVnaW4o
KSwgZW5kID0gbV90b2tlbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAo
KCppdCktPm1lZGlhVHlwZSgpID09IHR5cGUpCisgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogbV9z
ZXNzaW9ucykgeworICAgICAgICBpZiAoc2Vzc2lvbi0+bWVkaWFUeXBlKCkgPT0gdHlwZSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotaW50IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvdW50KE1lZGlhU2Vzc2lvbk1hbmFnZXI6
Ok1lZGlhVHlwZSB0eXBlKSBjb25zdAoraW50IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvdW50KE1l
ZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHR5cGUgPj0g
TWVkaWFTZXNzaW9uTWFuYWdlcjo6Tm9uZSAmJiB0eXBlIDw9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OldlYkF1ZGlvKTsKKyAgICBBU1NFUlQodHlwZSA+PSBNZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlw
ZSA8PSBNZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKICAgICAKICAgICBpbnQgY291bnQgPSAwOwot
ICAgIGZvciAoYXV0byBpdCA9IG1fdG9rZW5zLmJlZ2luKCksIGVuZCA9IG1fdG9rZW5zLmVuZCgp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKCgqaXQpLT5tZWRpYVR5cGUoKSA9PSB0
eXBlKQorICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpIHsKKyAgICAgICAgaWYg
KHNlc3Npb24tPm1lZGlhVHlwZSgpID09IHR5cGUpCiAgICAgICAgICAgICArK2NvdW50OwogICAg
IH0KLSAgICAKKwogICAgIHJldHVybiBjb3VudDsKIH0KIAotdm9pZCBNZWRpYVNlc3Npb25NYW5h
Z2VyOjphZGRUb2tlbihNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4mIHRva2VuKQordm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpiZWdpbkludGVycnVwdGlvbigpCiB7Ci0gICAgbV90b2tlbnMuYXBw
ZW5kKCZ0b2tlbik7CisgICAgaWYgKCsrbV9pbnRlcnJ1cHRpb25zID4gMSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykKKyAgICAgICAgc2Vz
c2lvbi0+YmVnaW5JbnRlcnJ1cHRpb24oKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2Vy
OjplbmRJbnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFn
cykKK3sKKyAgICBBU1NFUlQobV9pbnRlcnJ1cHRpb25zID4gMCk7CisgICAgaWYgKC0tbV9pbnRl
cnJ1cHRpb25zKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZm9yIChhdXRvKiBzZXNzaW9u
IDogbV9zZXNzaW9ucykKKyAgICAgICAgc2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsK
K30KKwordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRTZXNzaW9uKE1lZGlhU2Vzc2lvbiYg
c2Vzc2lvbikKK3sKKyAgICBtX3Nlc3Npb25zLmFwcGVuZCgmc2Vzc2lvbik7CisgICAgc2Vzc2lv
bi5zZXRTdGF0ZShtX2ludGVycnVwdGlvbnMgPyBNZWRpYVNlc3Npb246OkludGVycnVwdGVkIDog
TWVkaWFTZXNzaW9uOjpSdW5uaW5nKTsKICAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKIH0KIAot
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVUb2tlbihNZWRpYVNlc3Npb25NYW5hZ2Vy
VG9rZW4mIHRva2VuKQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVTZXNzaW9uKE1l
ZGlhU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICBzaXplX3QgaW5kZXggPSBtX3Rva2Vucy5maW5k
KCZ0b2tlbik7CisgICAgc2l6ZV90IGluZGV4ID0gbV9zZXNzaW9ucy5maW5kKCZzZXNzaW9uKTsK
ICAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwogICAgIGlmIChpbmRleCA9PSBub3RGb3Vu
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV90b2tlbnMucmVtb3ZlKGluZGV4KTsKKyAgICBt
X3Nlc3Npb25zLnJlbW92ZShpbmRleCk7CiAgICAgdXBkYXRlU2Vzc2lvblN0YXRlKCk7CiB9CiAK
QEAgLTEwMywzICsxMDgsNSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Np
b25TCiB7CiB9CiAjZW5kaWYKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAkocmV2aXNpb24gMTYxMzU4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw2NCArMjYsMzcgQEAKICNpZm5kZWYgTWVkaWFTZXNzaW9uTWFuYWdl
cl9oCiAjZGVmaW5lIE1lZGlhU2Vzc2lvbk1hbmFnZXJfaAogCi0jaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KKyNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5o
IgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW47CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xh
c3MgTWVkaWFTZXNzaW9uOwogCiBjbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgTWVkaWFTZXNzaW9uTWFuYWdlciYgc2hhcmVkTWFuYWdlcigpOwogCi0gICAg
ZW51bSBNZWRpYVR5cGUgewotICAgICAgICBOb25lLAotICAgICAgICBWaWRlbywKLSAgICAgICAg
QXVkaW8sCi0gICAgICAgIFdlYkF1ZGlvLAotICAgIH07CisgICAgYm9vbCBoYXMoTWVkaWFTZXNz
aW9uOjpNZWRpYVR5cGUpIGNvbnN0OworICAgIGludCBjb3VudChNZWRpYVNlc3Npb246Ok1lZGlh
VHlwZSkgY29uc3Q7CiAKLSAgICBib29sIGhhcyhNZWRpYVR5cGUpIGNvbnN0OwotICAgIGludCBj
b3VudChNZWRpYVR5cGUpIGNvbnN0OworICAgIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oKTsKKyAg
ICB2b2lkIGVuZEludGVycnVwdGlvbihNZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdz
KTsKIAogcHJvdGVjdGVkOgotICAgIGZyaWVuZCBjbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyVG9r
ZW47Ci0gICAgdm9pZCBhZGRUb2tlbihNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4mKTsKLSAgICB2
b2lkIHJlbW92ZVRva2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbiYpOworICAgIGZyaWVuZCBj
bGFzcyBNZWRpYVNlc3Npb247CisgICAgdm9pZCBhZGRTZXNzaW9uKE1lZGlhU2Vzc2lvbiYpOwor
ICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihNZWRpYVNlc3Npb24mKTsKIAogcHJpdmF0ZToKICAgICBN
ZWRpYVNlc3Npb25NYW5hZ2VyKCk7CiAKICAgICB2b2lkIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwog
Ci0gICAgVmVjdG9yPE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbio+IG1fdG9rZW5zOwotfTsKLQot
Y2xhc3MgTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCk7Ci1wdWJsaWM6Ci0gICAgTWVkaWFTZXNzaW9u
TWFuYWdlckNsaWVudCgpIHsgfQotCi0gICAgdmlydHVhbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpN
ZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3QgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVh
bCB+TWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCgpIHsgfQotfTsKLQotY2xhc3MgTWVkaWFTZXNz
aW9uTWFuYWdlclRva2VuIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1l
ZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbj4gY3JlYXRlKE1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQm
KTsKLQotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbihNZWRpYVNlc3Npb25NYW5hZ2VyQ2xp
ZW50Jik7Ci0gICAgfk1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbigpOwotCi0gICAgTWVkaWFTZXNz
aW9uTWFuYWdlcjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsg
fQotCi1wcml2YXRlOgotCi0gICAgTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYgbV9jbGllbnQ7
Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFUeXBlIG1fdHlwZTsKKyAgICBWZWN0b3I8
TWVkaWFTZXNzaW9uKj4gbV9zZXNzaW9uczsKKyAgICBpbnQgbV9pbnRlcnJ1cHRpb25zOwogfTsK
IAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGlu
YXRpb25NYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAkocmV2aXNpb24gMTYxMzU4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIEF1ZGlvRGVzdGluYXRpb25NYWM6OkF1ZGlvRGVz
dGluYXRpb25NYWMKICAgICAsIG1fcmVuZGVyQnVzKEF1ZGlvQnVzOjpjcmVhdGUoMiwga0J1ZmZl
clNpemUsIGZhbHNlKSkKICAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogICAgICwgbV9p
c1BsYXlpbmcoZmFsc2UpCi0gICAgLCBtX21lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbihNZWRpYVNl
c3Npb25NYW5hZ2VyVG9rZW46OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX21lZGlhU2Vzc2lvbihN
ZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgLy8gT3BlbiBhbmQgaW5pdGlhbGl6
ZSBEZWZhdWx0T3V0cHV0VW5pdAogICAgIEF1ZGlvQ29tcG9uZW50IGNvbXA7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0
aW9uTWFjLmgJKHJldmlzaW9uIDE2MTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMx
LDcgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlv
bi5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKKyNpbmNsdWRlICJNZWRpYVNl
c3Npb24uaCIKICNpbmNsdWRlIDxBdWRpb1VuaXQvQXVkaW9Vbml0Lmg+CiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQwLDcgKzQwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAvLyBBbiBBdWRpb0Rlc3RpbmF0aW9uIHVzaW5nIENvcmVBdWRp
bydzIGRlZmF1bHQgb3V0cHV0IEF1ZGlvVW5pdAogCi1jbGFzcyBBdWRpb0Rlc3RpbmF0aW9uTWFj
IDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBNZWRpYVNlc3Npb25NYW5hZ2VyQ2xp
ZW50IHsKK2NsYXNzIEF1ZGlvRGVzdGluYXRpb25NYWMgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlv
biwgcHVibGljIE1lZGlhU2Vzc2lvbkNsaWVudCB7CiBwdWJsaWM6CiAgICAgQXVkaW9EZXN0aW5h
dGlvbk1hYyhBdWRpb0lPQ2FsbGJhY2smLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICB2aXJ0dWFs
IH5BdWRpb0Rlc3RpbmF0aW9uTWFjKCk7CkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAKICAg
ICBPU1N0YXR1cyByZW5kZXIoVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3Qq
IGlvRGF0YSk7CiAKLSAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1lZGlhVHlwZSBt
ZWRpYVR5cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpXZWJBdWRpbzsg
fQorICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3Qg
eyByZXR1cm4gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbzsgfQogCiAgICAgQXVkaW9Vbml0IG1fb3V0
cHV0VW5pdDsKICAgICBBdWRpb0lPQ2FsbGJhY2smIG1fY2FsbGJhY2s7CkBAIC02OSw3ICs2OSw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzUGxheWluZzsKIAogI2lmIFVTRShBVURJT19TRVNT
SU9OKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4+IG1fbWVk
aWFTZXNzaW9uTWFuYWdlclRva2VuOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb24+
IG1fbWVkaWFTZXNzaW9uOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMu
Y3BwCShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE0ICs0
MiwxNCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGtMb3dQb3dlclZpZGVvQnVmZmVyCiAKIHZvaWQg
TWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkKIHsKLSAgICBMT0coTWVk
aWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUoKSAtIHR5cGVzOiBW
aWRlbyglZCksIEF1ZGlvKCVkKSwgV2ViQXVkaW8oJWQpIiwgY291bnQoVmlkZW8pLCBjb3VudChB
dWRpbyksIGNvdW50KFdlYkF1ZGlvKSk7CisgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFu
YWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkgLSB0eXBlczogVmlkZW8oJWQpLCBBdWRpbyglZCks
IFdlYkF1ZGlvKCVkKSIsIGNvdW50KE1lZGlhU2Vzc2lvbjo6VmlkZW8pLCBjb3VudChNZWRpYVNl
c3Npb246OkF1ZGlvKSwgY291bnQoTWVkaWFTZXNzaW9uOjpXZWJBdWRpbykpOwogCi0gICAgaWYg
KGhhcyhXZWJBdWRpbykpCisgICAgaWYgKGhhcyhNZWRpYVNlc3Npb246OldlYkF1ZGlvKSkKICAg
ICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6
ZShrV2ViQXVkaW9CdWZmZXJTaXplKTsKICAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3Jn
L2IvMTE2NzI1PiBGaWd1cmUgb3V0IHdoeSBlbmFibGluZyB0aGUgY29kZSBiZWxvdwogICAgIC8v
IGNhdXNlcyBtZWRpYSBMYXlvdXRUZXN0cyB0byBmYWlsIG9uIDEwLjguCiAjaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi0gICAgZWxzZSBpZiAoKGhhcyhWaWRlbykg
fHwgaGFzKEF1ZGlvKSkgJiYgU2V0dGluZ3M6Omxvd1Bvd2VyVmlkZW9BdWRpb0J1ZmZlclNpemVF
bmFibGVkKCkpCisgICAgZWxzZSBpZiAoKGhhcyhNZWRpYVNlc3Npb246OlZpZGVvKSB8fCBoYXMo
TWVkaWFTZXNzaW9uOjpBdWRpbykpICYmIFNldHRpbmdzOjpsb3dQb3dlclZpZGVvQXVkaW9CdWZm
ZXJTaXplRW5hYmxlZCgpKQogICAgICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5z
ZXRQcmVmZXJyZWRCdWZmZXJTaXplKGtMb3dQb3dlclZpZGVvQnVmZmVyU2l6ZSk7CiAjZW5kaWYK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDE2MTM1
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzAsNiArNzAsNyBAQAogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1h
bGxvY1N0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUg
Ik1lbW9yeUluZm8uaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0yMjcxLDQgKzIyNzIsMTkgQEAg
dm9pZCBJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrTWVkaWFTb3VyYwogfQogI2VuZGlmCiAKK3Zv
aWQgSW50ZXJuYWxzOjpiZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpCit7CisgICAgTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmJlZ2luSW50ZXJydXB0aW9uKCk7Cit9
CisKK3ZvaWQgSW50ZXJuYWxzOjplbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oY29uc3QgU3Ry
aW5nJiBmbGFnc1N0cmluZykKK3sKKyAgICBNZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZs
YWdzIGZsYWdzID0gTWVkaWFTZXNzaW9uOjpOb0ZsYWdzOworCisgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGZsYWdzU3RyaW5nLCAiTWF5UmVzdW1lUGxheWluZyIpKQorICAgICAgICBmbGFncyA9
IE1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZzsKKyAgICAKKyAgICBNZWRpYVNlc3Npb25N
YW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKK30KKwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAxNjEzNTgpCisrKyBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIs
NiArMzMyLDkgQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgp
OwogI2VuZGlmCiAKKyAgICB2b2lkIGJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCk7Cisg
ICAgdm9pZCBlbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oY29uc3QgU3RyaW5nJik7CisKIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50Kik7CiAgICAgRG9jdW1lbnQq
IGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbAkocmV2aXNpb24gMTYxMzU4KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNzgsNCArMjc4LDcgQEAKICAgICBbUmFpc2Vz
RXhjZXB0aW9uXSBDbGllbnRSZWN0IHNlbGVjdGlvbkJvdW5kcygpOwogICAgIAogICAgIFtDb25k
aXRpb25hbD1NRURJQV9TT1VSQ0VdIHZvaWQgaW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgpOwor
CisgICAgdm9pZCBiZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpOworICAgIHZvaWQgZW5k
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKERPTVN0cmluZyBmbGFncyk7CiB9OwpJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTYxMzc2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMDEtMDYgIEVyaWMgQ2FybHNvbiAgPGVy
aWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGVhY2ggTWVkaWFTZXNzaW9uTWFuYWdl
ciB0byBtYW5hZ2UgaW50ZXJydXB0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI2NTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkICR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2FuaW1hdGlvbiB0byBXZWJDb3JlIGluY2x1ZGUgZGlyZWN0b3JpZXMuCisKIDIwMTQt
MDEtMDYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
QW5vdGhlciBidWlsZCBmaXguCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTYx
MzU4KQorKysgU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTkzLDYgKzkzLDcgQEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dF
QkNPUkVfRElSfS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzIgogICAgICIke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vYW5pbWF0
aW9uIgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9hdWRpbyIKICAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hh
cmZidXp6IgpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTM3NikKKysrIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMDEtMDYgIEVy
aWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGVhY2ggTWVk
aWFTZXNzaW9uTWFuYWdlciB0byBtYW5hZ2UgaW50ZXJydXB0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2NTMwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkICR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2FuaW1hdGlvbiB0byBXZWJDb3JlIGluY2x1ZGUgZGlyZWN0
b3JpZXMuCisKIDIwMTQtMDEtMDYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFNtYWxsIGJ1aWxkIGZpeCBmb3IgdGhlIEdUSysgQ01ha2UgcG9ydApJ
bmRleDogU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNjEzNTgpCisrKyBTb3VyY2UvV2ViS2l0
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIHNldChXZWJL
aXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wYWdlL3Njcm9sbGlu
ZyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2FuaW1hdGlvbiIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vYXVkaW8iCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzIgogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9ncmFwaGljcy9oYXJmYnV6eiIKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTM3NikKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAx
LTA2ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFRl
YWNoIE1lZGlhU2Vzc2lvbk1hbmFnZXIgdG8gbWFuYWdlIGludGVycnVwdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjUzMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvdmlkZW8taW50
ZXJydXB0aW9uLWFjdGl2ZS13aGVuLWVsZW1lbnQtY3JlYXRlZC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIG1lZGlhL3ZpZGVvLWludGVycnVwdGlvbi1hY3RpdmUtd2hlbi1lbGVtZW50
LWNyZWF0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8taW50ZXJydXB0aW9u
LXdpdGgtcmVzdW1lLWFsbG93aW5nLXBsYXktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBtZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtYWxsb3dpbmctcGxheS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUt
bm90LWFsbG93aW5nLXBsYXktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS92
aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtbm90LWFsbG93aW5nLXBsYXkuaHRtbDogQWRk
ZWQuCisKIDIwMTQtMDEtMDYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTiAocjE2MTE5NSk6IEFjaWQyIHJlZ3Jlc3Npb24gdGVzdHMgZnJl
cXVlbnRseSBmYWlsCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24t
YWN0aXZlLXdoZW4tZWxlbWVudC1jcmVhdGVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24tYWN0aXZlLXdoZW4tZWxlbWVudC1j
cmVhdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3Zp
ZGVvLWludGVycnVwdGlvbi1hY3RpdmUtd2hlbi1lbGVtZW50LWNyZWF0ZWQtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3QgYSA8dmlkZW8+IGVsZW1lbnQg
Y3JhdGVkIGR1cmluZyBpbnRlcnJ1cHRpb24gYmVoYXZlcyBjb3JyZWN0bHkuCisKK1JVTihpbnRl
cm5hbHMuYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oKSkKK1JVTih2aWRlbyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJykpCitSVU4oZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZCh2aWRlbykpCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKKworUlVOKHZpZGVvLnBsYXkoKSkKKzEw
MG1zIHRpbWVyIGZpcmVkLi4uCitFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sK
K1JVTihpbnRlcm5hbHMuZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCdNYXlSZXN1bWVQbGF5
aW5nJykpCitFVkVOVChwbGF5aW5nKQorCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0
cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24tYWN0aXZlLXdoZW4tZWxlbWVudC1jcmVhdGVkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLWFj
dGl2ZS13aGVuLWVsZW1lbnQtY3JlYXRlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLWFjdGl2ZS13aGVuLWVsZW1lbnQtY3JlYXRlZC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c2NyaXB0IHNyYz1tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICAgICAgdmFyIHN0YXRlID0gMDsKKworICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tTdGF0ZSgp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIxMDBtcyB0aW1l
ciBmaXJlZC4uLiIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2Vk
IiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSAicmVzdW1pbmciOworICAgICAgICAg
ICAgICAgIHJ1bigiaW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbignTWF5UmVz
dW1lUGxheWluZycpIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHBs
YXlpbmcoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChzdGF0ZSAhPSAicmVz
dW1pbmciKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCIiKTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIjxiPlBsYXliYWNrIHN0YXJ0
ZWQgZHVyaW5nIGludGVycnVwdGlvbi48L2I+Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIp
OworICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZnVuY3Rpb24gY2FucGxheXRocm91Z2goKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICAgICAgcnVuKCJ2aWRlby5wbGF5KCki
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGNoZWNrU3RhdGUsIDEwMCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgZmFpbFRlc3QoJ1RoaXMgdGVzdCByZXF1aXJlcyB3aW5kb3cuaW50ZXJuYWxzLicpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIHJ1bigiaW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCkiKTs7Cisg
ICAgICAgICAgICAgICAgcnVuKCJ2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVv
JykiKTsKKyAgICAgICAgICAgICAgICBydW4oImRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodmlk
ZW8pIik7CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGNh
bnBsYXl0aHJvdWdoKTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BsYXlpbmcnLCBw
bGF5aW5nKTsKKyAgICAgICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRl
byIsICJjb250ZW50L3Rlc3QiKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9ICJpbnRlcnJ1cHRl
ZCI7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKworICAg
IDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICAgIDxwPlRlc3QgYSAmbHQ7dmlkZW8mZ3Q7
IGVsZW1lbnQgY3JhdGVkIGR1cmluZyBpbnRlcnJ1cHRpb24gYmVoYXZlcyBjb3JyZWN0bHkuPC9w
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWlu
dGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUt
YWxsb3dpbmctcGxheS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9t
ZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtYWxsb3dpbmctcGxheS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorCitUZXN0IHRoYXQgcGxheSgp
IGR1cmluZyBpbnRlcnJ1cHRpb24gZG9lcyBub3RoaW5nLCBlbmRpbmcgaW50ZXJydXB0aW9uIGFs
bG93cyBwbGF5YmFjayB0byByZXN1bWUuCisKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorCitSVU4o
aW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCkpCitSVU4odmlkZW8ucGxh
eSgpKQorMTAwbXMgdGltZXIgZmlyZWQuLi4KK0VYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3Ry
dWUnKSBPSworUlVOKGludGVybmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oJ01heVJl
c3VtZVBsYXlpbmcnKSkKK0VWRU5UKHBsYXlpbmcpCisKK0VORCBPRiBURVNUCisKSW5kZXg6IExh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1w
bGF5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0
aW9uLXdpdGgtcmVzdW1lLWFsbG93aW5nLXBsYXkuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL21lZGlhL3ZpZGVvLWludGVycnVwdGlvbi13aXRoLXJlc3VtZS1hbGxvd2luZy1wbGF5
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OCBAQAorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzY3JpcHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgICAgICB2YXIgc3RhdGUgPSAwOworCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja1N0YXRl
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjEwMG1zIHRp
bWVyIGZpcmVkLi4uIik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVz
ZWQiLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9ICJyZXN1bWluZyI7CisgICAgICAg
ICAgICAgICAgcnVuKCJpbnRlcm5hbHMuZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCdNYXlS
ZXN1bWVQbGF5aW5nJykiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24g
cGxheWluZygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlICE9ICJy
ZXN1bWluZyIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIiIpOworICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgiPGI+UGxheWJhY2sgc3Rh
cnRlZCBkdXJpbmcgaW50ZXJydXB0aW9uLjwvYj4iKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
Iik7CisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBmdW5jdGlvbiBjYW5wbGF5dGhyb3VnaCgpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCIiKTsKKworICAgICAgICAgICAgICAgIHJ1bigiaW50ZXJuYWxz
LmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCkiKTs7CisgICAgICAgICAgICAgICAgc3Rh
dGUgPSAiaW50ZXJydXB0ZWQiOworICAgICAgICAgICAgICAgIHJ1bigidmlkZW8ucGxheSgpIik7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChjaGVja1N0YXRlLCAxMDApOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgICAg
IGZhaWxUZXN0KCdUaGlzIHRlc3QgcmVxdWlyZXMgd2luZG93LmludGVybmFscy4nKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2Nh
bnBsYXl0aHJvdWdoJywgY2FucGxheXRocm91Z2gpOworICAgICAgICAgICAgICAgIHdhaXRGb3JF
dmVudCgncGxheWluZycsIHBsYXlpbmcpOworICAgICAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZp
bmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpOworICAgICAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCki
PgorICAgICAgICA8dmlkZW8gY29udHJvbHMgPjwvdmlkZW8+CisgICAgICAgIDxwPlRlc3QgdGhh
dCBwbGF5KCkgZHVyaW5nIGludGVycnVwdGlvbiBkb2VzIG5vdGhpbmcsIGVuZGluZyBpbnRlcnJ1
cHRpb24gYWxsb3dzIHBsYXliYWNrIHRvIHJlc3VtZS48L3A+CisgICAgPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLXdpdGgtcmVzdW1l
LW5vdC1hbGxvd2luZy1wbGF5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9tZWRpYS92aWRlby1pbnRlcnJ1cHRpb24td2l0aC1yZXN1bWUtbm90LWFsbG93aW5nLXBsYXkt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50
ZXJydXB0aW9uLXdpdGgtcmVzdW1lLW5vdC1hbGxvd2luZy1wbGF5LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE1IEBACisKK1Rlc3QgdGhhdCBwbGF5KCkgZHVyaW5nIGlu
dGVycnVwdGlvbiBkb2VzIG5vdGhpbmcsIGVuZGluZyBpbnRlcnJ1cHRpb24gZG9lcyBub3QgYWxs
b3cgcGxheWJhY2sgdG8gcmVzdW1lLgorCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKKworUlVOKGlu
dGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpKQorUlVOKHZpZGVvLnBsYXko
KSkKKzEwMG1zIHRpbWVyIGZpcmVkLi4uCitFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVl
JykgT0sKK1JVTihpbnRlcm5hbHMuZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCcnKSkKKzEw
MG1zIHRpbWVyIGZpcmVkLi4uCitFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sK
KworRU5EIE9GIFRFU1QKKwpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0
aW9uLXdpdGgtcmVzdW1lLW5vdC1hbGxvd2luZy1wbGF5Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8taW50ZXJydXB0aW9uLXdpdGgtcmVzdW1lLW5vdC1hbGxvd2lu
Zy1wbGF5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1pbnRl
cnJ1cHRpb24td2l0aC1yZXN1bWUtbm90LWFsbG93aW5nLXBsYXkuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDYyIEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBz
cmM9bWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVz
dC5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZhciBzdGF0ZSA9
IDA7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHBsYXlpbmcoKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAicmVzdW1pbmciKQorICAgICAgICAgICAgICAgICAg
ICBmYWlsVGVzdCgiPGI+UGxheWJhY2sgc3RhcnRlZCBhZnRlciBpbnRlcnJ1cHRpb24uPC9iPiIp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIjxi
PlBsYXliYWNrIHN0YXJ0ZWQgZHVyaW5nIGludGVycnVwdGlvbi48L2I+Iik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrU3RhdGUoKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiMTAwbXMgdGltZXIgZmlyZWQuLi4iKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnBhdXNlZCIsIHRydWUpOworICAgICAg
ICAgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlICJpbnRlcnJ1
cHRlZCI6CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gInJlc3VtaW5nIjsKKyAgICAgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChjaGVja1N0YXRlLCAxMDApOworICAgICAgICAgICAgICAg
ICAgICBydW4oImludGVybmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oJycpIik7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgInJlc3VtaW5n
IjoKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgICAg
ICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNhbnBsYXl0aHJv
dWdoKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwor
CisgICAgICAgICAgICAgICAgcnVuKCJpbnRlcm5hbHMuYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb24oKSIpOzsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9ICJpbnRlcnJ1cHRlZCI7CisgICAg
ICAgICAgICAgICAgcnVuKCJ2aWRlby5wbGF5KCkiKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGNoZWNrU3RhdGUsIDEwMCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0
aW9uIHN0YXJ0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdpbmRvdy5p
bnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoJ1RoaXMgdGVzdCByZXF1
aXJlcyB3aW5kb3cuaW50ZXJuYWxzLicpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwor
ICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBjYW5wbGF5dGhy
b3VnaCk7CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywgcGxheWluZyk7
CisgICAgICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29u
dGVudC90ZXN0Iik7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKworICAgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICAgIDx2aWRlbyBjb250cm9s
cyA+PC92aWRlbz4KKyAgICAgICAgPHA+VGVzdCB0aGF0IHBsYXkoKSBkdXJpbmcgaW50ZXJydXB0
aW9uIGRvZXMgbm90aGluZywgZW5kaW5nIGludGVycnVwdGlvbiBkb2VzIG5vdCBhbGxvdyBwbGF5
YmFjayB0byByZXN1bWUuPC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>