<?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>156564</bug_id>
          
          <creation_ts>2016-04-13 17:18:01 -0700</creation_ts>
          <short_desc>Allow WebVideoFullscreenManager and Proxy to be used by audio elements.</short_desc>
          <delta_ts>2016-04-15 10:50:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1183592</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-04-13 17:18:01 -0700</bug_when>
    <thetext>Allow WebVideoFullscreenManager and Proxy to be used by audio elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183840</commentid>
    <comment_count>1</comment_count>
      <attachid>276421</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-04-14 13:56:36 -0700</bug_when>
    <thetext>Created attachment 276421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183842</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-14 13:58:31 -0700</bug_when>
    <thetext>Attachment 276421 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm:245:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm:274:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.mm:101:  *SoftLink.h header should be included after all other headers.  [build/include_order] [4]
ERROR: Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.mm:219:  *SoftLink.h header should be included after all other headers.  [build/include_order] [4]
Total errors found: 4 in 43 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>1183867</commentid>
    <comment_count>3</comment_count>
      <attachid>276431</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-04-14 14:34:57 -0700</bug_when>
    <thetext>Created attachment 276431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183871</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-14 14:36:06 -0700</bug_when>
    <thetext>Attachment 276431 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm:245:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm:274:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.mm:101:  *SoftLink.h header should be included after all other headers.  [build/include_order] [4]
ERROR: Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.mm:219:  *SoftLink.h header should be included after all other headers.  [build/include_order] [4]
Total errors found: 4 in 43 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>1183877</commentid>
    <comment_count>5</comment_count>
      <attachid>276434</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-04-14 14:43:58 -0700</bug_when>
    <thetext>Created attachment 276434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183878</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-14 14:45:35 -0700</bug_when>
    <thetext>Attachment 276434 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm:245:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm:274:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.mm:101:  *SoftLink.h header should be included after all other headers.  [build/include_order] [4]
ERROR: Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.mm:219:  *SoftLink.h header should be included after all other headers.  [build/include_order] [4]
Total errors found: 4 in 43 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>1183893</commentid>
    <comment_count>7</comment_count>
      <attachid>276436</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-04-14 15:12:38 -0700</bug_when>
    <thetext>Created attachment 276436
Patch

Once more to un-break the EFL and GTK EWS bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183896</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-14 15:13:52 -0700</bug_when>
    <thetext>Attachment 276436 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm:245:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm:274:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.mm:101:  *SoftLink.h header should be included after all other headers.  [build/include_order] [4]
ERROR: Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.mm:219:  *SoftLink.h header should be included after all other headers.  [build/include_order] [4]
Total errors found: 4 in 43 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>1183904</commentid>
    <comment_count>9</comment_count>
      <attachid>276436</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-04-14 15:30:17 -0700</bug_when>
    <thetext>Comment on attachment 276436
Patch

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

Overall, this looks good. You should get all the bots green, and it would be good if Eric took a look too. He&apos;s more familiar than I am with a lot of this code. The WK2 changes look good.

&gt; Source/WebCore/ChangeLog:24


Through composition? This sentence does not parse for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183970</commentid>
    <comment_count>10</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-04-14 17:42:01 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 276436 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=276436&amp;action=review
&gt; 
&gt; Overall, this looks good. You should get all the bots green,

The EFL And GTK bits should be ok. They&apos;re backed against a general build failure in ToT. BCD that clears up, I&apos;ll resubmit to give them a chance to chew on the patch. 

&gt; and it would be
&gt; good if Eric took a look too. He&apos;s more familiar than I am with a lot of
&gt; this code. The WK2 changes look good.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:24
&gt; 
&gt; 
&gt; Through composition? This sentence does not parse for me.

Composition rather than inheritance. Each WebVideoFullscreen object owns a WebPlaybackSession object that it uses to fulfil its interface requirements (rather than inheriting from those objects&apos; classes).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183972</commentid>
    <comment_count>11</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-04-14 17:45:03 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; bits … backed … BCD 

Bots … blocked … once.

(Typing on a bus)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184084</commentid>
    <comment_count>12</comment_count>
      <attachid>276436</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-04-15 09:32:13 -0700</bug_when>
    <thetext>Comment on attachment 276436
Patch

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

Nice cleanup! Looks good to me modulo the nits noted, but a WK2 reviewer will have to give it the official review.

&gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.h:43
&gt; +class WebPlaybackSessionModelMediaElement : public WebPlaybackSessionModel, public EventListener {

Can this class be marked final?

&gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.h:69
&gt; +    WEBCORE_EXPORT void play() override;
&gt; +    WEBCORE_EXPORT void pause() override;
&gt; +    WEBCORE_EXPORT void togglePlayState() override;
&gt; +    WEBCORE_EXPORT void beginScrubbing() override;
&gt; +    WEBCORE_EXPORT void endScrubbing() override;
&gt; +    WEBCORE_EXPORT void seekToTime(double time) override;
&gt; +    WEBCORE_EXPORT void fastSeek(double time) override;
&gt; +    WEBCORE_EXPORT void beginScanningForward() override;
&gt; +    WEBCORE_EXPORT void beginScanningBackward() override;
&gt; +    WEBCORE_EXPORT void endScanning() override;
&gt; +    WEBCORE_EXPORT void selectAudioMediaOption(uint64_t index) override;
&gt; +    WEBCORE_EXPORT void selectLegibleMediaOption(uint64_t index) override;

All of these &quot;override&quot;s can be &quot;final&quot;

&gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:227
&gt; +void WebPlaybackSessionModelMediaElement::selectAudioMediaOption(uint64_t selectedAudioIndex)
&gt; +{
&gt; +    AudioTrack* selectedAudioTrack = nullptr;

nit: this isn&apos;t new, but you could assert that selectedAudioIndex fits in a size_t

&gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:240
&gt; +{

Ditto.

&gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:259
&gt; +    WTF::AtomicString displayMode = m_mediaElement-&gt;mediaControlsHost()-&gt;captionDisplayMode();

&quot;WTF::&quot; isn&apos;t necessary.

&gt; Source/WebCore/platform/cocoa/WebVideoFullscreenModelVideoElement.mm:233
&gt;      if (!sEventNames.get().size()) {

Nit: it doesn&apos;t look like you need the braces.

&gt; Source/WebCore/platform/ios/WebPlaybackSessionInterfaceAVKit.h:64
&gt; +class WEBCORE_EXPORT WebPlaybackSessionInterfaceAVKit

final

&gt; Source/WebCore/platform/ios/WebPlaybackSessionInterfaceAVKit.h:87
&gt; +    WEBCORE_EXPORT void resetMediaState() override;
&gt; +    WEBCORE_EXPORT void setDuration(double) override;
&gt; +    WEBCORE_EXPORT void setCurrentTime(double currentTime, double anchorTime) override;
&gt; +    WEBCORE_EXPORT void setBufferedTime(double) override;
&gt; +    WEBCORE_EXPORT void setRate(bool isPlaying, float playbackRate) override;
&gt; +    WEBCORE_EXPORT void setSeekableRanges(const TimeRanges&amp;) override;
&gt; +    WEBCORE_EXPORT void setCanPlayFastReverse(bool) override;
&gt; +    WEBCORE_EXPORT void setAudioMediaSelectionOptions(const Vector&lt;WTF::String&gt;&amp; options, uint64_t selectedIndex) override;
&gt; +    WEBCORE_EXPORT void setLegibleMediaSelectionOptions(const Vector&lt;WTF::String&gt;&amp; options, uint64_t selectedIndex) override;
&gt; +    WEBCORE_EXPORT void setExternalPlayback(bool enabled, ExternalPlaybackTargetType, WTF::String localizedDeviceName) override;
&gt; +    WEBCORE_EXPORT void setWirelessVideoPlaybackDisabled(bool) override;

&quot;override&quot; -&gt; &quot;final&quot;

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:560
&gt; +        auto playbackSessionInterface = WebPlaybackSessionInterfaceAVKit::create();
&gt; +        m_interface = WebVideoFullscreenInterfaceAVKit::create(playbackSessionInterface.get());

Nit: the local variable isn&apos;t necessary.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:568
&gt; +            auto playbackSessionModel = WebPlaybackSessionModelMediaElement::create();
&gt; +            m_model = WebVideoFullscreenModelVideoElement::create(playbackSessionModel.get());

Ditto.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.h:60
&gt; +class WebPlaybackSessionInterfaceAVKit;

Is this necessary, you include &quot;WebPlaybackSessionInterfaceAVKit.h&quot; above.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.h:130
&gt; +    void externalPlaybackEnabledChanged(bool) override;

final

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:297
&gt; +        _fullscreenInterface-&gt;model()-&gt;setVideoLayerFrame(self.modelVideoLayerFrame);

Nit: it might be worth asserting &quot;fullscreenInterface-&gt;model()&quot;

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:329
&gt; +    _fullscreenInterface-&gt;model()-&gt;setVideoLayerFrame(self.modelVideoLayerFrame);

Ditto

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:352
&gt; +    _fullscreenInterface-&gt;model()-&gt;setVideoLayerGravity(gravity);

Ditto

&gt; Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.h:43
&gt; +class WEBCORE_EXPORT WebPlaybackSessionInterfaceMac

final

&gt; Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.h:65
&gt; +    WEBCORE_EXPORT void resetMediaState() override { }
&gt; +    WEBCORE_EXPORT void setDuration(double) override;
&gt; +    WEBCORE_EXPORT void setCurrentTime(double /*currentTime*/, double /*anchorTime*/) override;
&gt; +    WEBCORE_EXPORT void setBufferedTime(double) override { }
&gt; +    WEBCORE_EXPORT void setRate(bool /*isPlaying*/, float /*playbackRate*/) override;
&gt; +    WEBCORE_EXPORT void setSeekableRanges(const TimeRanges&amp;) override;
&gt; +    WEBCORE_EXPORT void setCanPlayFastReverse(bool) override { }
&gt; +    WEBCORE_EXPORT void setAudioMediaSelectionOptions(const Vector&lt;String&gt;&amp; /*options*/, uint64_t /*selectedIndex*/) override;
&gt; +    WEBCORE_EXPORT void setLegibleMediaSelectionOptions(const Vector&lt;String&gt;&amp; /*options*/, uint64_t /*selectedIndex*/) override;
&gt; +    WEBCORE_EXPORT void setExternalPlayback(bool, ExternalPlaybackTargetType, String) override { }
&gt; +    WEBCORE_EXPORT void setWirelessVideoPlaybackDisabled(bool) override { }

&quot;override&quot; -&gt; &quot;final&quot;

&gt; Source/WebKit2/UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:87
&gt; +    void play() override;
&gt; +    void pause() override;
&gt; +    void togglePlayState() override;
&gt; +    void beginScrubbing() override;
&gt; +    void endScrubbing() override;
&gt; +    void seekToTime(double) override;
&gt; +    void fastSeek(double time) override;
&gt; +    void beginScanningForward() override;
&gt; +    void beginScanningBackward() override;
&gt; +    void endScanning() override;
&gt; +    void selectAudioMediaOption(uint64_t) override;
&gt; +    void selectLegibleMediaOption(uint64_t) override;

&quot;override&quot; -&gt; &quot;final&quot;

&gt; Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.h:57
&gt; +class WebPlaybackSessionInterfaceContext : public RefCounted&lt;WebPlaybackSessionInterfaceContext&gt;, public WebCore::WebPlaybackSessionInterface {

final

&gt; Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.h:81
&gt; +    void resetMediaState() override;
&gt; +    void setDuration(double) override;
&gt; +    void setCurrentTime(double currentTime, double anchorTime) override;
&gt; +    void setBufferedTime(double) override;
&gt; +    void setRate(bool isPlaying, float playbackRate) override;
&gt; +    void setSeekableRanges(const WebCore::TimeRanges&amp;) override;
&gt; +    void setCanPlayFastReverse(bool value) override;
&gt; +    void setAudioMediaSelectionOptions(const Vector&lt;WTF::String&gt;&amp; options, uint64_t selectedIndex) override;
&gt; +    void setLegibleMediaSelectionOptions(const Vector&lt;WTF::String&gt;&amp; options, uint64_t selectedIndex) override;
&gt; +    void setExternalPlayback(bool enabled, ExternalPlaybackTargetType, WTF::String localizedDeviceName) override;
&gt; +    void setWirelessVideoPlaybackDisabled(bool) override;

&quot;override&quot; -&gt; &quot;final&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184101</commentid>
    <comment_count>13</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-04-15 10:10:15 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 276436 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=276436&amp;action=review
&gt; 
&gt; Nice cleanup! Looks good to me modulo the nits noted, but a WK2 reviewer
&gt; will have to give it the official review.
&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.h:43
&gt; &gt; +class WebPlaybackSessionModelMediaElement : public WebPlaybackSessionModel, public EventListener {
&gt; 
&gt; Can this class be marked final?

Sure.

&gt; &gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.h:69
&gt; &gt; +    WEBCORE_EXPORT void play() override;
&gt; &gt; +    WEBCORE_EXPORT void pause() override;
&gt; &gt; +    WEBCORE_EXPORT void togglePlayState() override;
&gt; &gt; +    WEBCORE_EXPORT void beginScrubbing() override;
&gt; &gt; +    WEBCORE_EXPORT void endScrubbing() override;
&gt; &gt; +    WEBCORE_EXPORT void seekToTime(double time) override;
&gt; &gt; +    WEBCORE_EXPORT void fastSeek(double time) override;
&gt; &gt; +    WEBCORE_EXPORT void beginScanningForward() override;
&gt; &gt; +    WEBCORE_EXPORT void beginScanningBackward() override;
&gt; &gt; +    WEBCORE_EXPORT void endScanning() override;
&gt; &gt; +    WEBCORE_EXPORT void selectAudioMediaOption(uint64_t index) override;
&gt; &gt; +    WEBCORE_EXPORT void selectLegibleMediaOption(uint64_t index) override;
&gt; 
&gt; All of these &quot;override&quot;s can be &quot;final&quot;

Sure.

&gt; &gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:227
&gt; &gt; +void WebPlaybackSessionModelMediaElement::selectAudioMediaOption(uint64_t selectedAudioIndex)
&gt; &gt; +{
&gt; &gt; +    AudioTrack* selectedAudioTrack = nullptr;
&gt; 
&gt; nit: this isn&apos;t new, but you could assert that selectedAudioIndex fits in a
&gt; size_t

Sure, but wouldn&apos;t the comparison &quot;index == static_cast&lt;size_t&gt;(selectedAudioIndex)&quot; just fail?

&gt; &gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:240
&gt; &gt; +{
&gt; 
&gt; Ditto.

Ok.

&gt; &gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:259
&gt; &gt; +    WTF::AtomicString displayMode = m_mediaElement-&gt;mediaControlsHost()-&gt;captionDisplayMode();
&gt; 
&gt; &quot;WTF::&quot; isn&apos;t necessary.

Ok.

&gt; &gt; Source/WebCore/platform/cocoa/WebVideoFullscreenModelVideoElement.mm:233
&gt; &gt;      if (!sEventNames.get().size()) {
&gt; 
&gt; Nit: it doesn&apos;t look like you need the braces.

Ok.

&gt; &gt; Source/WebCore/platform/ios/WebPlaybackSessionInterfaceAVKit.h:64
&gt; &gt; +class WEBCORE_EXPORT WebPlaybackSessionInterfaceAVKit
&gt; 
&gt; final

Ok.

&gt; &gt; Source/WebCore/platform/ios/WebPlaybackSessionInterfaceAVKit.h:87
&gt; &gt; +    WEBCORE_EXPORT void resetMediaState() override;
&gt; &gt; +    WEBCORE_EXPORT void setDuration(double) override;
&gt; &gt; +    WEBCORE_EXPORT void setCurrentTime(double currentTime, double anchorTime) override;
&gt; &gt; +    WEBCORE_EXPORT void setBufferedTime(double) override;
&gt; &gt; +    WEBCORE_EXPORT void setRate(bool isPlaying, float playbackRate) override;
&gt; &gt; +    WEBCORE_EXPORT void setSeekableRanges(const TimeRanges&amp;) override;
&gt; &gt; +    WEBCORE_EXPORT void setCanPlayFastReverse(bool) override;
&gt; &gt; +    WEBCORE_EXPORT void setAudioMediaSelectionOptions(const Vector&lt;WTF::String&gt;&amp; options, uint64_t selectedIndex) override;
&gt; &gt; +    WEBCORE_EXPORT void setLegibleMediaSelectionOptions(const Vector&lt;WTF::String&gt;&amp; options, uint64_t selectedIndex) override;
&gt; &gt; +    WEBCORE_EXPORT void setExternalPlayback(bool enabled, ExternalPlaybackTargetType, WTF::String localizedDeviceName) override;
&gt; &gt; +    WEBCORE_EXPORT void setWirelessVideoPlaybackDisabled(bool) override;
&gt; 
&gt; &quot;override&quot; -&gt; &quot;final&quot;

Ok.

&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:560
&gt; &gt; +        auto playbackSessionInterface = WebPlaybackSessionInterfaceAVKit::create();
&gt; &gt; +        m_interface = WebVideoFullscreenInterfaceAVKit::create(playbackSessionInterface.get());
&gt; 
&gt; Nit: the local variable isn&apos;t necessary.

Ok.

&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:568
&gt; &gt; +            auto playbackSessionModel = WebPlaybackSessionModelMediaElement::create();
&gt; &gt; +            m_model = WebVideoFullscreenModelVideoElement::create(playbackSessionModel.get());
&gt; 
&gt; Ditto.

Ok.

&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.h:60
&gt; &gt; +class WebPlaybackSessionInterfaceAVKit;
&gt; 
&gt; Is this necessary, you include &quot;WebPlaybackSessionInterfaceAVKit.h&quot; above.

Nope!

&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.h:130
&gt; &gt; +    void externalPlaybackEnabledChanged(bool) override;
&gt; 
&gt; final

Ok.

&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:297
&gt; &gt; +        _fullscreenInterface-&gt;model()-&gt;setVideoLayerFrame(self.modelVideoLayerFrame);
&gt; 
&gt; Nit: it might be worth asserting &quot;fullscreenInterface-&gt;model()&quot;

Ok.

&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:329
&gt; &gt; +    _fullscreenInterface-&gt;model()-&gt;setVideoLayerFrame(self.modelVideoLayerFrame);
&gt; 
&gt; Ditto

Ok.

&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:352
&gt; &gt; +    _fullscreenInterface-&gt;model()-&gt;setVideoLayerGravity(gravity);
&gt; 
&gt; Ditto

Ok.

&gt; &gt; Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.h:43
&gt; &gt; +class WEBCORE_EXPORT WebPlaybackSessionInterfaceMac
&gt; 
&gt; final

Ok.

&gt; &gt; Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.h:65
&gt; &gt; +    WEBCORE_EXPORT void resetMediaState() override { }
&gt; &gt; +    WEBCORE_EXPORT void setDuration(double) override;
&gt; &gt; +    WEBCORE_EXPORT void setCurrentTime(double /*currentTime*/, double /*anchorTime*/) override;
&gt; &gt; +    WEBCORE_EXPORT void setBufferedTime(double) override { }
&gt; &gt; +    WEBCORE_EXPORT void setRate(bool /*isPlaying*/, float /*playbackRate*/) override;
&gt; &gt; +    WEBCORE_EXPORT void setSeekableRanges(const TimeRanges&amp;) override;
&gt; &gt; +    WEBCORE_EXPORT void setCanPlayFastReverse(bool) override { }
&gt; &gt; +    WEBCORE_EXPORT void setAudioMediaSelectionOptions(const Vector&lt;String&gt;&amp; /*options*/, uint64_t /*selectedIndex*/) override;
&gt; &gt; +    WEBCORE_EXPORT void setLegibleMediaSelectionOptions(const Vector&lt;String&gt;&amp; /*options*/, uint64_t /*selectedIndex*/) override;
&gt; &gt; +    WEBCORE_EXPORT void setExternalPlayback(bool, ExternalPlaybackTargetType, String) override { }
&gt; &gt; +    WEBCORE_EXPORT void setWirelessVideoPlaybackDisabled(bool) override { }
&gt; 
&gt; &quot;override&quot; -&gt; &quot;final&quot;

Ok.

&gt; &gt; Source/WebKit2/UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:87
&gt; &gt; +    void play() override;
&gt; &gt; +    void pause() override;
&gt; &gt; +    void togglePlayState() override;
&gt; &gt; +    void beginScrubbing() override;
&gt; &gt; +    void endScrubbing() override;
&gt; &gt; +    void seekToTime(double) override;
&gt; &gt; +    void fastSeek(double time) override;
&gt; &gt; +    void beginScanningForward() override;
&gt; &gt; +    void beginScanningBackward() override;
&gt; &gt; +    void endScanning() override;
&gt; &gt; +    void selectAudioMediaOption(uint64_t) override;
&gt; &gt; +    void selectLegibleMediaOption(uint64_t) override;
&gt; 
&gt; &quot;override&quot; -&gt; &quot;final&quot;

Ok.

&gt; &gt; Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.h:57
&gt; &gt; +class WebPlaybackSessionInterfaceContext : public RefCounted&lt;WebPlaybackSessionInterfaceContext&gt;, public WebCore::WebPlaybackSessionInterface {
&gt; 
&gt; final

Ok.

&gt; &gt; Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.h:81
&gt; &gt; +    void resetMediaState() override;
&gt; &gt; +    void setDuration(double) override;
&gt; &gt; +    void setCurrentTime(double currentTime, double anchorTime) override;
&gt; &gt; +    void setBufferedTime(double) override;
&gt; &gt; +    void setRate(bool isPlaying, float playbackRate) override;
&gt; &gt; +    void setSeekableRanges(const WebCore::TimeRanges&amp;) override;
&gt; &gt; +    void setCanPlayFastReverse(bool value) override;
&gt; &gt; +    void setAudioMediaSelectionOptions(const Vector&lt;WTF::String&gt;&amp; options, uint64_t selectedIndex) override;
&gt; &gt; +    void setLegibleMediaSelectionOptions(const Vector&lt;WTF::String&gt;&amp; options, uint64_t selectedIndex) override;
&gt; &gt; +    void setExternalPlayback(bool enabled, ExternalPlaybackTargetType, WTF::String localizedDeviceName) override;
&gt; &gt; +    void setWirelessVideoPlaybackDisabled(bool) override;
&gt; 
&gt; &quot;override&quot; -&gt; &quot;final&quot;

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184102</commentid>
    <comment_count>14</comment_count>
      <attachid>276482</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-04-15 10:13:35 -0700</bug_when>
    <thetext>Created attachment 276482
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184103</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-15 10:15:27 -0700</bug_when>
    <thetext>Attachment 276482 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm:245:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm:274:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.mm:101:  *SoftLink.h header should be included after all other headers.  [build/include_order] [4]
ERROR: Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.mm:219:  *SoftLink.h header should be included after all other headers.  [build/include_order] [4]
Total errors found: 4 in 43 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>1184122</commentid>
    <comment_count>16</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-04-15 10:50:21 -0700</bug_when>
    <thetext>Committed r199593: &lt;http://trac.webkit.org/changeset/199593&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276421</attachid>
            <date>2016-04-14 13:56:36 -0700</date>
            <delta_ts>2016-04-14 14:34:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156564-20160414135648.patch</filename>
            <type>text/plain</type>
            <size>307901</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5Mjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFmZjVmNDQ4NDE3YTc1
ZjRkNTQ4ZjE4MjFhYTE2ZGFlODU1NGM3NC4uYTQ4NjZiMzE3YjI2OWZiMDA4MGYzZDYwY2NkZDZm
YTNjNGEwNzQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyOCBAQAorMjAxNi0wNC0xNCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyIGFuZCBQcm94eSB0byBiZSB1c2VkIGJ5IGF1ZGlvIGVsZW1lbnRzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NTY0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzOyB0aGlzIHJlZmFjdG9ycyBleGlzdGluZyBmdW5jdGlvbmFsaXR5IGludG8gbmV3IGNsYXNz
ZXMuCisKKyAgICAgICAgVGVhc2UgYXBhcnQgdGhlIHZhcmlvdXMgV2ViVmlkZW9GdWxsc2NyZWVu
e0ludGVyZmFjZSxNb2RlbH17QVZLaXQsTWFjLFZpZGVvRWxlbWVudH0gaW50byBuZXcKKyAgICAg
ICAgV2ViUGxheWJhY2tTZXNzaW9u4oCmIGNsYXNzZXMgZGVhbGluZyBleGNsdXNpdmVseSB3aXRo
IHBsYXliYWNrIHN0YXRlIGFuZCBjb21tYW5kcywgbGVhdmluZworICAgICAgICBmdWxsc2NyZWVu
IHN0YXRlIGFuZCBjb21tYW5kcyBpbiB0aGUgV2ViVmlkZW9GdWxsc2NyZWVu4oCmIGNsYXNzZXMu
IFNwZWNpZmljYWxseSwgY3JlYXRlIHRoZQorICAgICAgICBmb2xsb3dpbmcgbmV3IGNsYXNzZXM6
CisKKyAgICAgICAgLSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgKGNvcGllZCBmcm9tIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSkKKyAgICAgICAgLSBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudCAoY29waWVkIGZyb20gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRp
YUVsZW1lbnQpCisgICAgICAgIC0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwgKGNvcGllZCBmcm9t
IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICAtIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0IChjb3BpZWQgZnJvbSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dCkKKyAgICAgICAgLSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMgKGNvcGllZCBmcm9t
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYykKKworICAgICAgICBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UgYW5kIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsIG5vdyBpbmhlcml0IGZy
b20KKyAgICAgICAgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlIGFuZCBXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbCwgcmVzcGVjdGl2ZWx5LiBUaGUgY29uY3JldGUKKyAgICAgICAgV2ViVmlkZW9G
dWxsc2NyZWVu4oCmIHN1YmNsYXNzZXMgZWFjaCB0YWtlIHRoZWlyIHJlc3BlY3RpdmUgV2ViUGxh
eWJhY2tTZXNzaW9u4oCmIHN1YmNsYXNzZXMgYW5kCisgICAgICAgIGZ1bGZpbGwgdGhlaXIgV2Vi
UGxheWJhY2tTZXNzaW9uIGludGVyZmFjZXMgdGhyb3VnaCBjb21wb3NpdGlvbi4KKworICAgICAg
ICBBcyBwYXJ0IG9mIHRoaXMgYmlnIHRlYXNlLWFwYXJ0LCB0aGUgV2ViQVZQbGF5ZXJDb250cm9s
bGVyIGNsYXNzIG5lZWRzIHRvIGJlIGV4cG9zZWQgaW4gYQorICAgICAgICBoZWFkZXIgKGFzIGl0
J3MgYWNjZXNzZWQgYnkgdHdvIGRpZmZlcmVudCBjbGFzc2VzIG5vdyksIHNvIHRoYXQgY2xhc3Mg
aXMgbW92ZWQgaW50byBpdHMgb3duCisgICAgICAgIGltcGxlbWVudGF0aW9uIGFuZCBoZWFkZXIg
ZmlsZXMuCisKKyAgICAgICAgVGhlIG9uZSBjYXNlIHdoZXJlIGEgY2hhbmdlIGluIGEgV2ViUGxh
eWJhY2tTZXNzaW9u4oCmIGNsYXNzIG5lZWRzIHRvIGJlIHJlZmxlY3RlZCBpbiBhCisgICAgICAg
IFdlYlZpZGVvRnVsbHNjcmVlbuKApiBjbGFzcyBpcyBpbiBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdCwgd2hlcmUKKyAgICAgICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQgbmVlZHMgdG8gYmUgbm90aWZpZWQgd2hlbiBleHRlcm5hbCBwbGF5YmFjayBiZWNvbWVzIGRp
cy9lbi0KKyAgICAgICAgYWJsZWQsIHNvIGEgbmV3IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0Q2xpZW50IGludGVyZmFjZSBoYXMgYmVlbiBhZGRlZCB0byBhbGxvdyB0aGUKKyAgICAg
ICAgV2ViUGxheWJhY2tTZXNzaW9u4oCmIHRvIG5vdGlmeSB0aGUgV2ViVmlkZW9GdWxsc2NyZWVu
4oCmLgorCisgICAgICAgIFRoZSByZXNwb25zaWJpbGl0eSBmb3IgdGhlICJjb250cm9scyBtYW5h
Z2VyIiBoYXMgbW92ZWQgZnJvbSB0aGUgV2ViVmlkZW9GdWxsc2NyZWVu4oCmIGNsYXNzZXMKKyAg
ICAgICAgdG8gdGhlIFdlYlBsYXliYWNrU2Vzc2lvbuKApiBjbGFzc2VzLCBzbyB0aGUgQ2hyb21l
Q2xpZW50IGludGVyZmFjZSBmb3IgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcKKyAgICAgICAgdGhv
c2UgY29udHJvbHMgaXMgc2ltaWxhcmx5IHJlbmFtZWQgZnJvbSBzZXRVcFZpZGVvQ29udHJvbHNN
YW5hZ2VyKCkgdG8KKyAgICAgICAgc2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpLgorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZS5oLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlOjp+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjp+V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudDo6bWVkaWFFbGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbTogQWRkZWQuCisgICAgICAg
IChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6V2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxNZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQ6On5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCk6CisgICAgICAg
IChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2V0V2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50OjpzZXRNZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUpOgorICAgICAgICAoV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnBsYXkpOgorICAgICAgICAoV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnBhdXNlKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp0b2dnbGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmJlZ2luU2NydWJiaW5nKToKKyAgICAgICAg
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjplbmRTY3J1YmJpbmcpOgorICAg
ICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnNlZWtUb1RpbWUpOgor
ICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmZhc3RTZWVrKToK
KyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpiZWdpblNjYW5u
aW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50OjplbmRTY2FubmluZyk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbik6CisgICAgICAgIChX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0
aW9uKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRh
dGVMZWdpYmxlT3B0aW9ucyk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50OjpldmVudE5hbWVBbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50LmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQubW0uCisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVu
dDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6On5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZp
ZGVvRWxlbWVudCk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVu
dDo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OmhhbmRsZUV2ZW50KToKKyAgICAgICAg
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUp
OgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OnBsYXkpOgor
ICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OnBhdXNlKToKKyAg
ICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50Ojp0b2dnbGVQbGF5U3Rh
dGUpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OmJlZ2lu
U2NydWJiaW5nKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50
OjplbmRTY3J1YmJpbmcpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0Vs
ZW1lbnQ6OnNlZWtUb1RpbWUpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRl
b0VsZW1lbnQ6OmZhc3RTZWVrKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlk
ZW9FbGVtZW50OjpiZWdpblNjYW5uaW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKToKKyAgICAgICAg
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50OjplbmRTY2FubmluZyk6CisgICAg
ICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6c2VsZWN0QXVkaW9NZWRp
YU9wdGlvbik6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6
c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsVmlkZW9FbGVtZW50Ojp1cGRhdGVMZWdpYmxlT3B0aW9ucyk6CisgICAgICAgIChXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKToKKyAgICAg
ICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50OjpldmVudE5hbWVBbGwpOgor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmg6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6fldlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSk6CisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpwbGF5KToKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpwYXVzZSk6CisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6dG9nZ2xlUGxheVN0YXRlKToKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpiZWdpblNjcnViYmluZyk6Cisg
ICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZW5kU2NydWJiaW5n
KToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZWVrVG9U
aW1lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpmYXN0
U2Vlayk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6YmVn
aW5TY2FubmluZ0ZvcndhcmQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQ6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZW5kU2Nhbm5pbmcpOgorICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24pOgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNlbGVjdExlZ2libGVN
ZWRpYU9wdGlvbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6aGFuZGxlRXZlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0xheWVyRnJh
bWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpvYnNlcnZlZEV2ZW50TmFtZXMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmV2ZW50TmFtZUFs
bCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojppc1Zpc2libGUpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbTogQWRkZWQuCisgICAgICAgICgt
W1dlYkFWUGxheWVyQ29udHJvbGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVy
Q29udHJvbGxlciByZXNldFN0YXRlXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxl
ciBwbGF5ZXJdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGZvcndhcmRpbmdU
YXJnZXRGb3JTZWxlY3RvcjpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHBs
YXk6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBwYXVzZTpdKToKKyAgICAg
ICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHRvZ2dsZVBsYXliYWNrOl0pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckNvbnRyb2xsZXIgdG9nZ2xlUGxheWJhY2tFdmVuV2hlbkluQmFja2dyb3Vu
ZDpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGlzUGxheWluZ10pOgorICAg
ICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0UGxheWluZzpdKToKKyAgICAgICAgKCtb
V2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nUGxheWluZ10p
OgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgYmVnaW5TY3J1YmJpbmc6XSk6Cisg
ICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBlbmRTY3J1YmJpbmc6XSk6CisgICAgICAg
ICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBzZWVrVG9UaW1lOl0pOgorICAgICAgICAoLVtXZWJB
VlBsYXllckNvbnRyb2xsZXIgY3VycmVudFRpbWVXaXRoaW5FbmRUaW1lc10pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0Q3VycmVudFRpbWVXaXRoaW5FbmRUaW1lczpdKToK
KyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0
aW5nQ3VycmVudFRpbWVXaXRoaW5FbmRUaW1lc10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNv
bnRyb2xsZXIgaGFzTGl2ZVN0cmVhbWluZ0NvbnRlbnRdKToKKyAgICAgICAgKCtbV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nSGFzTGl2ZVN0cmVhbWluZ0Nv
bnRlbnRdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHNraXBCYWNrd2FyZFRo
aXJ0eVNlY29uZHM6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBnb3RvRW5k
T2ZTZWVrYWJsZVJhbmdlczpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGNh
blNjYW5Gb3J3YXJkXSk6CisgICAgICAgICgrW1dlYkFWUGxheWVyQ29udHJvbGxlciBrZXlQYXRo
c0ZvclZhbHVlc0FmZmVjdGluZ0NhblNjYW5Gb3J3YXJkXSk6CisgICAgICAgICgtW1dlYkFWUGxh
eWVyQ29udHJvbGxlciBiZWdpblNjYW5uaW5nRm9yd2FyZDpdKToKKyAgICAgICAgKC1bV2ViQVZQ
bGF5ZXJDb250cm9sbGVyIGVuZFNjYW5uaW5nRm9yd2FyZDpdKToKKyAgICAgICAgKC1bV2ViQVZQ
bGF5ZXJDb250cm9sbGVyIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZDpdKToKKyAgICAgICAgKC1bV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIGVuZFNjYW5uaW5nQmFja3dhcmQ6XSk6CisgICAgICAgICgtW1dl
YkFWUGxheWVyQ29udHJvbGxlciBjYW5TZWVrVG9CZWdpbm5pbmddKToKKyAgICAgICAgKCtbV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nQ2FuU2Vla1RvQmVn
aW5uaW5nXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBzZWVrVG9CZWdpbm5p
bmc6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBzZWVrQ2hhcHRlckJhY2t3
YXJkOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgY2FuU2Vla1RvRW5kXSk6
CisgICAgICAgICgrW1dlYkFWUGxheWVyQ29udHJvbGxlciBrZXlQYXRoc0ZvclZhbHVlc0FmZmVj
dGluZ0NhblNlZWtUb0VuZF0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2Vl
a1RvRW5kOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2Vla0NoYXB0ZXJG
b3J3YXJkOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgaGFzTWVkaWFTZWxl
Y3Rpb25PcHRpb25zXSk6CisgICAgICAgICgrW1dlYkFWUGxheWVyQ29udHJvbGxlciBrZXlQYXRo
c0ZvclZhbHVlc0FmZmVjdGluZ0hhc01lZGlhU2VsZWN0aW9uT3B0aW9uc10pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckNvbnRyb2xsZXIgaGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNdKToK
KyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0
aW5nSGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGhhc0xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNdKToKKyAgICAgICAg
KCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nSGFzTGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRy
b2xsZXIgY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25dKToKKyAgICAgICAgKC1bV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIHNldEN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOl0p
OgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgY3VycmVudExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0Q3Vy
cmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGlzUGxheWluZ09uRXh0ZXJuYWxTY3JlZW5dKToKKyAgICAgICAgKCtbV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nUGxheWluZ09uRXh0
ZXJuYWxTY3JlZW5dKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGlzUGljdHVy
ZUluUGljdHVyZUludGVycnVwdGVkXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxl
ciBzZXRQaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ6XSk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXRDbGllbnQ6On5XZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdENsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdDo6fldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpyZXNldE1lZGlh
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQ6OnNldFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXREdXJhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0Q3VycmVudFRpbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEJ1
ZmZlcmVkVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdDo6c2V0UmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdDo6c2V0U2Vla2FibGVSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjptZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRFeHRlcm5hbFBsYXliYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojpz
ZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6
OmludmFsaWRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgICgtW1dlYkFWUGxheWVy
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBmdWxsc2NyZWVuSW50ZXJmYWNlXSk6CisgICAgICAgICgt
W1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBzZXRGdWxsc2NyZWVuSW50ZXJmYWNl
Ol0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGZ1bGxzY3JlZW5JbnRlcmZhY2VdKToK
KyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOl0pOgor
ICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGxheW91dFN1YmxheWVyc10pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckxheWVyIHJlc29sdmVCb3VuZHNdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJMYXllciBzZXRWaWRlb0dyYXZpdHk6XSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCk6CisgICAgICAgIChX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6fldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0KToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpw
bGF5ZXJDb250cm9sbGVyKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpyZXNldE1lZGlhU3RhdGUpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OnNldER1cmF0aW9uKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6c2V0QnVmZmVyZWRUaW1lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpzZXRSYXRlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMpOgorICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFNlZWthYmxlUmFuZ2VzKToKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UpOgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRFeHRlcm5hbFBsYXliYWNrKToKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleHRlcm5hbFBsYXliYWNrRW5hYmxl
ZENoYW5nZWQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNl
dFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBGdWxsc2NyZWVuKToK
KyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNj
cmVlbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6bWF5QXV0
b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUpOgorICAgICAgICAoLVtXZWJBVlBs
YXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGxheWVyVmlld0NvbnRyb2xsZXJXaWxsU3RhcnRQ
aWN0dXJlSW5QaWN0dXJlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdD
b250cm9sbGVyRGVsZWdhdGUgcGxheWVyVmlld0NvbnRyb2xsZXJEaWRTdGFydFBpY3R1cmVJblBp
Y3R1cmU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZSBwbGF5ZXJWaWV3Q29udHJvbGxlckZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJl
OndpdGhFcnJvcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJv
bGxlckRlbGVnYXRlIHBsYXllclZpZXdDb250cm9sbGVyV2lsbFN0b3BQaWN0dXJlSW5QaWN0dXJl
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdh
dGUgcGxheWVyVmlld0NvbnRyb2xsZXJEaWRTdG9wUGljdHVyZUluUGljdHVyZTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKGNvbnZlcnRUb0V4aXRGdWxsU2NyZWVuUmVhc29uKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlIHBsYXllclZpZXdDb250
cm9sbGVyOnNob3VsZEV4aXRGdWxsU2NyZWVuV2l0aFJlYXNvbjpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlIHBsYXllclZpZXdDb250cm9s
bGVyOnJlc3RvcmVVc2VySW50ZXJmYWNlRm9yUGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgaW5p
dF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGRlYWxsb2NdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciB2aWRlb0dyYXZpdHldKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciB2aWRlb1JlY3RdKTogRGVsZXRlZC4KKyAg
ICAgICAgKCtbV2ViQVZQbGF5ZXJMYXllciBrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ1ZpZGVv
UmVjdF0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5
ZXJWaWV3X2xheWVyQ2xhc3MpOiBEZWxldGVkLgorICAgICAgICAoZ2V0V2ViQVZQaWN0dXJlSW5Q
aWN0dXJlUGxheWVyTGF5ZXJWaWV3Q2xhc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQVZQbGF5
ZXJMYXllclZpZXdfbGF5ZXJDbGFzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJBVlBsYXllckxh
eWVyVmlld19wbGF5ZXJDb250cm9sbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3NldFBsYXllckNvbnRyb2xsZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQVZQ
bGF5ZXJMYXllclZpZXdfdmlkZW9WaWV3KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3NldFZpZGVvVmlldyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJBVlBsYXllckxh
eWVyVmlld19zdGFydFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmll
dyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld19zdG9wUm91dGluZ1Zp
ZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkFWUGxheWVyTGF5ZXJWaWV3X3BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfZGVhbGxvYyk6IERlbGV0ZWQu
CisgICAgICAgIChnZXRXZWJBVlBsYXllckxheWVyVmlld0NsYXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFwcGxpY2F0aW9uRGlkQmVj
b21lQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjplbnRlckZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlblN0YW5kYXJkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVl
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
ZGlkU3RhcnRQaWN0dXJlSW5QaWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpmYWlsZWRUb1N0YXJ0UGljdHVyZUluUGljdHVyZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6d2lsbFN0
b3BQaWN0dXJlSW5QaWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpkaWRTdG9wUGljdHVyZUluUGljdHVyZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZUZvclBpY3R1cmVJ
blBpY3R1cmVTdG9wV2l0aENvbXBsZXRpb25IYW5kbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzaG91bGRFeGl0RnVsbHNjcmVlbldpdGhS
ZWFzb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OndhdGNoZG9nVGltZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0TW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y2xlYXJNb2RlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjLm1tLgorICAgICAgICAoLVtXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uTWFj
IGxvY2FsaXplZERpc3BsYXlOYW1lXSk6CisgICAgICAgICgtW1dlYkFWTWVkaWFTZWxlY3Rpb25P
cHRpb25NYWMgc2V0TG9jYWxpemVkRGlzcGxheU5hbWU6XSk6CisgICAgICAgICgtW1dlYlBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyIGluaXRXaXRoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
Ol0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciB0aW1pbmddKToKKyAg
ICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2V0VGltaW5nOl0pOgorICAgICAg
ICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBzZWVrYWJsZVRpbWVSYW5nZXNdKToKKyAg
ICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2Vz
Ol0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBpc1NlZWtpbmddKToK
KyAgICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2Vla1RvVGltZTp0b2xlcmFu
Y2VCZWZvcmU6dG9sZXJhbmNlQWZ0ZXI6XSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zXSk6CisgICAgICAgICgtW1dlYlBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOl0pOgor
ICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBjdXJyZW50QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbl0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBz
ZXRDdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAgKC1bV2ViUGxh
eWJhY2tDb250cm9sc01hbmFnZXIgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc10pOgorICAg
ICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb25zOl0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBjdXJy
ZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNr
Q29udHJvbHNNYW5hZ2VyIHNldEN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb246XSk6
CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIGNhbmNlbFRodW1ibmFpbEFu
ZEF1ZGlvQW1wbGl0dWRlU2FtcGxlR2VuZXJhdGlvbl0pOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjp+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6
c2V0V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXREdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0UmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldFNlZWthYmxl
UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldEF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYzo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmludmFsaWRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjplbnN1cmVD
b250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjOjpwbGF5QmFja0NvbnRyb2xzTWFuYWdlcik6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM6OnNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRDdXJyZW50VGltZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFJhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRTZWVr
YWJsZVJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VNYWM6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM6OmVuc3VyZUNvbnRyb2xzTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWM6On5XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
OjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldE1vZGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpj
bGVhck1vZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjOjpzZXR1cEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjplbnRlckZ1bGxzY3JlZW4pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpl
eGl0RnVsbHNjcmVlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWM6OmV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM6OmNsZWFudXBGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6aW52YWxpZGF0ZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnByZXBhcmVkVG9SZXR1
cm5Ub0lubGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OnNldFZpZGVvRGltZW5zaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUpOiBEZWxldGVkLgorCiAyMDE2LTA0LTEx
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRE9NVG9rZW5MaXN0
LmNvbnRhaW5zKCkgc2hvdWxkIG5vdCB0aHJvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM3Nzk3ZDUxZTMzNTFl
MDc4YWQzYzM0NmY1YTFkNjJmYTU4ZTdjZTEuLjVmMWI0ZmZjOWNlMjQ1ZjRjNDgyMmZhOWQ5Yzli
YWYyMzFmYTU1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMTcgQEAKKzIwMTYtMDQtMTQgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlciBhbmQgUHJveHkgdG8gYmUgdXNlZCBieSBhdWRpbyBlbGVtZW50cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjU2NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYXNlIGFw
YXJ0IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgYW5kIOKAplByb3h5IGludG8gV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlciBhbmQg4oCmUHJveHkKKyAgICAgICAgY2xhc3NlcyBkZWFsaW5nIGV4
Y2x1c2l2ZWx5IHdpdGggcGxheWJhY2sgc3RhdGUgYW5kIGNvbW1hbmRzLCBsZWF2aW5nIGZ1bGxz
Y3JlZW4gc3RhdGUgYW5kCisgICAgICAgIGNvbW1hbmRzIGluIHRoZSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2Vy4oCmIGNsYXNzZXMuCisKKyAgICAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ciBhbmQg4oCmUHJveHkgd2lsbCBub3cgcmVxdWlyZSBhbiBhc3NvY2lhdGVkCisgICAgICAgIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIgYW5kIOKAplByb3h5IGNsYXNzLiBUaGUgV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlciBjbGFzc2VzIGNhbiBiZQorICAgICAgICB1c2VkIHNlcGFyYXRlbHkg
YW5kIHdpdGhvdXQgdGhlIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgY2xhc3Nlcy4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5QXV0b21hdGljYWxseVNo
b3dWaWRlb1BpY3R1cmVJblBpY3R1cmVdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW06IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnBsYXkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnBhdXNlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0Ojp0b2dnbGVQbGF5U3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OmJl
Z2luU2NydWJiaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxD
b250ZXh0OjplbmRTY3J1YmJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbENvbnRleHQ6OnNlZWtUb1RpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbENvbnRleHQ6OmZhc3RTZWVrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpiZWdpblNjYW5uaW5nRm9yd2FyZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6YmVnaW5TY2FubmluZ0Jh
Y2t3YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0
OjplbmRTY2FubmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q29udGV4dDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OldlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6fldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y3JlYXRl
TW9kZWxBbmRJbnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OmVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjplbnN1cmVNb2RlbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5zdXJlSW50ZXJmYWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjphZGRDbGll
bnRGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpyZW1vdmVDbGllbnRGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0
aElEKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpj
bGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZXNldE1lZGlhU3RhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEN1cnJlbnRUaW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRCdWZmZXJlZFRp
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNl
dFNlZWthYmxlUmFuZ2VzVmVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0
V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldER1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRSYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpwbGF5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpwYXVzZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6dG9nZ2xlUGxheVN0YXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjcnVi
YmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
ZW5kU2NydWJiaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpzZWVrVG9UaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpmYXN0U2Vlayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0ZvcndhcmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5kU2Nh
bm5pbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y29udHJvbHNNYW5hZ2VySW50
ZXJmYWNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6fldlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dDo6cGxheSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dDo6cGF1c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6YmVnaW5TY3J1YmJpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmVuZFNjcnViYmluZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2Vla1Rv
VGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6
ZmFzdFNlZWspOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQ6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxDb250ZXh0OjpiZWdpblNjYW5uaW5nQmFja3dhcmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmVuZFNjYW5uaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpzZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250
ZXh0OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVh
dGVNb2RlbEFuZEludGVyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6c2V0dXBGdWxsc2NyZWVuV2l0aElEKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0RpbWVuc2lv
bnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmVudGVyRnVsbHNjcmVlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmV4aXRGdWxsc2Ny
ZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y2xlYW51cEZ1bGxzY3JlZW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnByZXBh
cmVkVG9SZXR1cm5Ub0lubGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRTZXR1
cEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4p
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmRpZENsZWFudXBGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0xheWVyRnJhbWUpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhhc0FjdGl2
ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojppc1BsYXlpbmdNZWRpYURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c3VwcG9ydHNWaWRlb0Z1
bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnNldFVwUGxheWJh
Y2tDb250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNs
ZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ2hyb21lQ2xpZW50OjpleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpleGl0VmlkZW9GdWxsc2NyZWVu
VG9Nb2RlV2l0aG91dEFuaW1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4
dDo6aW52YWxpZGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpuZXh0Q29udGV4dElkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQ29udGV4dDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6On5XZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6cmVzZXRNZWRpYVN0YXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0RHVyYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRD
dXJyZW50VGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQ6OnNldEJ1ZmZlcmVkVGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldFJhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRTZWVrYWJsZVJhbmdlcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldENhblBs
YXlGYXN0UmV2ZXJzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUNvbnRleHQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0TGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUNvbnRleHQ6OnNldEV4dGVybmFsUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Oldl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjp+V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5zdXJlTW9kZWxB
bmRJbnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjplbnN1cmVNb2RlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OmVuc3VyZUludGVyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OnJlbW92ZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjphZGRDbGllbnRGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlQ2xpZW50Rm9yQ29udGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFVwUGxheWJhY2tDb250cm9s
c01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpj
bGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6Y29udGV4dElkRm9yTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVzZXRNZWRpYVN0YXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0RHVyYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50VGltZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldEJ1ZmZlcmVk
VGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFJh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRTZWVr
YWJsZVJhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNl
dEV4dGVybmFsUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnBsYXkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpwYXVzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJlZ2luU2NydWJiaW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5kU2NydWJiaW5nKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2Vla1RvVGltZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmZhc3RTZWVrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YmVnaW5TY2FubmluZ0ZvcndhcmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpiZWdpblNjYW5u
aW5nQmFja3dhcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjplbmRTY2FubmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6
OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpyZXNldE1lZGlhU3RhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXREdXJh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRl
eHQ6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQ29udGV4dDo6c2V0QnVmZmVyZWRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0UmF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFNlZWthYmxlUmFuZ2Vz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6
c2V0Q2FuUGxheUZhc3RSZXZlcnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRMZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0RXh0ZXJuYWxQbGF5YmFjayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFdpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5G
b3JWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VDb250ZXh0OjpzZXRWaWRlb0RpbWVuc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp+V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRB
bmltYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpzZXRWaWRlb0RpbWVuc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVu
TW9kZUNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVs
bHNjcmVlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXllckdyYXZpdHlFbnVtKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZnVsbHNj
cmVlbk1heVJldHVyblRvSW5saW5lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKTogRGVsZXRlZC4K
KwogMjAxNi0wNC0xMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5OTI5MC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NWY2Mjg2YjYz
NDlkMmY5NDc1OWUyYTNiNGUwMzcwMmUyOTdiMDBjLi45OWU4Y2FiMDZjNmQ2NjE2YzViNTQwN2I3
OWY2MmE0YzYzYzZhMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MDg2LDYgKzYwODYsMTUgQEAKIAkJQ0RBMDdGQkUxOEUw
QTE2QTAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTA3RkJDMThFMEExNkEwMDQ2OTlGQSAvKiBT
eXN0ZW1TbGVlcExpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQ0RBMDdGQzExOEUwQTIyQjAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlz
dGVuZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREEwN0ZCRjE4RTBBMjJCMDA0Njk5RkEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1hYy5tbSAq
LzsgfTsKIAkJQ0RBMDdGQzIxOEUwQTIyQjAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXJN
YWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTA3
RkMwMThFMEEyMkIwMDQ2OTlGQSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLmggKi87IH07CisJ
CUNEQTI5QTA5MUNCRDk5RjQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTA4
MUNCRDk5RjQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREEyOUEwQjFDQkQ5
QTc0MDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTBBMUNCRDlBNzQwMDkwMUNDRiAv
KiBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUNEQTI5QTBFMUNCRDlDRkUwMDkwMUNDRiAvKiBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTBDMUNCRDlDRkUwMDkwMUNDRiAvKiBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSAqLzsgfTsKKwkJQ0RBMjlBMEYxQ0JEOUNG
RTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEyOUEwRDFDQkQ5Q0ZF
MDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREEyOUExNjFDQkRB
NTZDMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMTQxQ0JEQTU2QzAw
OTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbSAqLzsgfTsKKwkJQ0RB
MjlBMTcxQ0JEQTU2QzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMTUx
Q0JEQTU2QzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEQTI5QTMwMUNC
Rjc0RDQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTJGMUNCRjcz
RkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSAqLzsgfTsK
KwkJQ0RBMjlBMzExQ0JGNzREQTAwOTAxQ0NGIC8qIFdlYkFWUGxheWVyQ29udHJvbGxlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTJEMUNC
RjczRkMwMDkwMUNDRiAvKiBXZWJBVlBsYXllckNvbnRyb2xsZXIubW0gKi87IH07CisJCUNEQTI5
QTMyMUNDMDFBOTUwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMkUx
Q0JGNzNGQzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RBNzk4MjQx
NzBBMjU4MzAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE3OTgyMzE3MEEyNTgzMDBENDVDNTUgLyogQXVk
aW9TZXNzaW9uLmNwcCAqLzsgfTsKIAkJQ0RBNzk4MjcxNzBBMjc5MTAwRDQ1QzU1IC8qIEF1ZGlv
U2Vzc2lvbklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQTc5ODI1MTcwQTI3OTAwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25JT1MubW0gKi87IH07
CiAJCUNEQTc5ODJBMTcwQTNEMDAwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTc5ODIxMTcwQTIyREMwMEQ0
NUM1NSAvKiBBdWRpb1Nlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTQwNTUsNiArMTQwNjQsMTYgQEAKIAkJQ0RBMDdGQkMxOEUwQTE2
QTAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3lzdGVtU2xlZXBMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREEwN0ZCRjE4RTBBMjJCMDA0Njk5RkEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5c3RlbVNsZWVw
TGlzdGVuZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQTA3RkMwMThF
MEEyMkIwMDQ2OTlGQSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbVNsZWVwTGlzdGVuZXJNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMDgxQ0JEOTlGNDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBMjlBMEExQ0JEOUE3NDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTI5QTBDMUNCRDlDRkUwMDkwMUNDRiAv
KiBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREEyOUEwRDFDQkQ5Q0ZFMDA5
MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMTQxQ0JEQTU2QzAwOTAx
Q0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMTUxQ0JEQTU2QzAwOTAxQ0NG
IC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMkMxQ0JGNzNGQzAwOTAxQ0NGIC8qIFdlYkFWUGxh
eWVyQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBVlBs
YXllckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMkQx
Q0JGNzNGQzAwOTAxQ0NGIC8qIFdlYkFWUGxheWVyQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkFWUGxheWVyQ29udHJvbGxlci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMkUxQ0JGNzNGQzAwOTAxQ0NGIC8qIFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQTI5QTJGMUNCRjczRkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREE3OTgyMTE3MEEyMkRDMDBENDVDNTUgLyogQXVkaW9TZXNz
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDREE3OTgyMzE3MEEyNTgzMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQTc5ODI1MTcwQTI3OTAwMEQ0NUM1NSAvKiBB
dWRpb1Nlc3Npb25JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBBdWRpb1Nlc3Npb25JT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzg3
Myw2ICsxNzg5Miw4IEBACiAJCQkJQkU4NTYwNTEwNzAxRjkxMTAwMjM5NzY5IC8qIFdlYkNvcmVW
aWV3Lm0gKi8sCiAJCQkJRTFBMzE2MkIxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRl
ZFN0cmluZ0V4dHJhcy5oICovLAogCQkJCUUxQTMxNjJDMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJO
U0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0gKi8sCisJCQkJQ0RBMjlBMTUxQ0JEQTU2QzAwOTAx
Q0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oICovLAorCQkJCUNEQTI5QTE0
MUNCREE1NkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gKi8s
CiAJCQkJQ0Q4MjAzMDYxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIuaCAqLywKIAkJCQlDRDgyMDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlci5tbSAqLywKIAkJCQlDRDgyMDMwODEzOTVBQjZBMDBGOTU2QzYgLyog
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oICovLApAQCAtMTk5NTcsMTEg
KzE5OTc4LDE1IEBACiAJCQkJNDRDOTkxOUUwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLm1t
ICovLAogCQkJCTFGNzJCRjA4MTg3RkQ0MjcwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9y
eUhhbmRsZXJJT1MuY3BwICovLAogCQkJCTFGNzJCRjA5MTg3RkQ0MjcwMDA5QkNCMyAvKiBUaWxl
Q29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCAqLywKKwkJCQlDREEyOUEyQzFDQkY3M0ZDMDA5
MDFDQ0YgLyogV2ViQVZQbGF5ZXJDb250cm9sbGVyLmggKi8sCisJCQkJQ0RBMjlBMkQxQ0JGNzNG
QzAwOTAxQ0NGIC8qIFdlYkFWUGxheWVyQ29udHJvbGxlci5tbSAqLywKIAkJCQkzMTQwMzc5NzEy
NEJFQTdGMDBBRjQwRTQgLyogV2ViQ29yZU1vdGlvbk1hbmFnZXIuaCAqLywKIAkJCQkzMTQwMzc5
ODEyNEJFQTdGMDBBRjQwRTQgLyogV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0gKi8sCiAJCQkJRTQ1
MzkwMzgwRUFGRDYzNzAwMzY5NUM4IC8qIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0gKi8s
CiAJCQkJRkUwRDg0RTgxMDQ4NDM0ODAwMUExNzlFIC8qIFdlYkV2ZW50LmggKi8sCiAJCQkJRkUw
RDg0RUExMDQ4NDM2RTAwMUExNzlFIC8qIFdlYkV2ZW50Lm1tICovLAorCQkJCUNEQTI5QTJFMUNC
RjczRkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oICovLAor
CQkJCUNEQTI5QTJGMUNCRjczRkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdC5tbSAqLywKIAkJCQlBNTAyQzVERDEzMDQ5QjM1MDBGQzdENTMgLyogV2ViU2FmZUdD
QWN0aXZpdHlDYWxsYmFja0lPUy5oICovLAogCQkJCUMyQzRDQjFEMTYxQTEzMTIwMEQyMTREQSAv
KiBXZWJTYWZlSW5jcmVtZW50YWxTd2VlcGVySU9TLmggKi8sCiAJCQkJM0Y0MkIzMUIxODgxMTkx
QjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oICovLApAQCAt
MjAwMTAsNiArMjAwMzUsMTAgQEAKIAkJCQlDREM5NzlGMzFDNDk4QzA5MDBEQjUwRDQgLyogV2Vi
Q29yZU5TRXJyb3JFeHRyYXMuaCAqLywKIAkJCQlDREM5NzlGMjFDNDk4QzA5MDBEQjUwRDQgLyog
V2ViQ29yZU5TRXJyb3JFeHRyYXMubW0gKi8sCiAJCQkJMUE3RTE5NDQxQzU4NjNCRTAwQ0NEREYz
IC8qIFdlYktpdEFkZGl0aW9ucy5tbSAqLywKKwkJCQlDREEyOUEwODFDQkQ5OUY0MDA5MDFDQ0Yg
LyogV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmggKi8sCisJCQkJQ0RBMjlBMEExQ0JEOUE3
NDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmggKi8sCisJCQkJQ0RBMjlBMEMx
Q0JEOUNGRTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1t
ICovLAorCQkJCUNEQTI5QTBEMUNCRDlDRkUwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudC5oICovLAogCQkJCTUyQjBENEJGMUM1N0ZENjYwMDc3Q0U1MyAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oICovLAogCQkJCTUyMTMxRTU4MUM0RjE1
MjIwMDMzRjgwMiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuaCAqLywKIAkJCQk1MkQ1
QTFBNDFDNTc0ODg5MDBERTM0QTMgLyogV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCAqLywKQEAg
LTI1MjI4LDYgKzI1MjU3LDcgQEAKIAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyogQ29s
b3JDaG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCNDEyNTFGMTJEMDAz
RUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUVERTNBNTAwMEM3
QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBMjlBMEYx
Q0JEOUNGRTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzgyREY1ODEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNERDQ1NEUxMjM2Qzk1QzAwOUE3OTg1IC8qIENvbHVt
bkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTQzRURENjdGMUI0ODVEQkYwMDY0MEU3NSAvKiBD
b21iaW5lZEZpbHRlcnNBbHBoYWJldC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTM4Miw2ICsyNTQx
Miw3IEBACiAJCQkJQTgwRTZDRkEwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0ltYWdlVmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0Y2MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbXBvcnRS
dWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkQwMTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NT
SW5oZXJpdGVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQTI5QTA5MUNCRDk5RjQwMDkw
MUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4MEU2RDA4MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbml0aWFsVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTMxMjg4RTczMEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZVJ1bGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTMxMjg4RTc1MEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFt
ZXNSdWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NDk5LDYgKzI3NTMwLDcgQEAKIAkJCQk0QTBG
RkFBNjFBQUY1RUY2MDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzQxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdDMUMwRTUxQkZCNjBFRDAw
QkQyMjU2IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQ0RBMjlBMEIxQ0JEOUE3NDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQzNjhFODBDMjI2RTMyMDA1RUZCNUYg
LyogUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NTgxNzVENDE0QzAwQzIxRUM4IC8q
IFJlY3RhbmdsZVNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5ODMxQUU0QTE1NDIyNUM5MDBG
RTI2NDQgLyogUmVmZXJyZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovLApAQCAtMjgyNjgsNiArMjgz
MDAsNyBAQAogCQkJCUIyQzNEQTQwMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWNVc2VyRGVm
aW5lZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNDIwRDAwNkMxRDAwRUY2RjI2IC8qIFRl
eHRDb2RlY1VURjE2LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzQzQ0I4MjEyRjI1RTUxMDAzM0M1
RUUgLyogVGV4dENvZGVjVVRGOC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBMjlBMTcxQ0JEQTU2
QzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQyQjk3Q0ExMzEzODk0MzAwOEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTgyREUzMjUxQzMwQzg1NDAwQkUwMkE4IC8qIFRl
eHREZWNvcmF0aW9uUGFpbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzg0QjQxMjM3MTE4
MDAwMEM2MTYxIC8qIFRleHREb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODU0NSw2ICsy
ODU3OCw3IEBACiAJCQkJMUNBRjM0ODEwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBRjM0ODMwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNj
cmlwdE9iamVjdFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDFCMEQ3RTJCODIw
MDdDMzk4MyAvKiBXZWJTY3JpcHRPYmplY3RQcm90b2NvbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
Q0RBMjlBMzIxQ0MwMUE5NTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQxQjE0RkEwOUQ1MDA3NDU3QUUgLyogV2Vi
U29ja2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQxRTE0RkEwOUQ1MDA3NDU3QUUgLyog
V2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMUYxNEZBMDlENTAw
NzQ1N0FFIC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjg5
NjksNiArMjkwMDMsNyBAQAogCQkJCTMxQTc5NUM4MTg4OEJDQjUwMDM4MkY5MCAvKiBBTkdMRUlu
c3RhbmNlZEFycmF5cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTA3MDdFNjEyMTlDMDQzMDBE
OTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFOTEy
QUEwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlD
REEyOUEwRTFDQkQ5Q0ZFMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExMTBFNkUxREE3MDBCRjYwODggLyog
QW5pbWF0aW9uQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExMzBFNkUxREE3MDBC
RjYwODggLyogQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTk4
NDgwMjFBMUQ4MTgxMDBBMTMzMTggLyogQW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0zMTA0Myw2ICszMTA3OCw3IEBACiAJCQkJRkU5RTg5RkIxNkUyREMwNTAwQTkwOEY4IC8q
IE9yaWdpbkxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1ODFGQUUxNTIwRjkxRjAwM0E3
QTc1IC8qIE9zY2lsbGF0b3JOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMEQ1NzM2MEE1
Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNE
QTI5QTMwMUNCRjc0RDQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTY1RkVBODY5MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzdFNzc2MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdl
Q2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1RTVCNjExQTE1RjE1NjAwMEM2MDlFIC8q
IFBhZ2VDb25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE2NjEsNiArMzE2OTcs
NyBAQAogCQkJCUIyMjI3QTE0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGb250RmFjZUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMTcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0Zv
bnRGYWNlRm9ybWF0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0ExQTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRm9udEZhY2VOYW1lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDREEyOUExNjFDQkRBNTZDMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMUQwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0ZvbnRGYWNlU3JjRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0EyMDBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyMjI3QTIzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxNzk1LDYgKzMxODMyLDcgQEAKIAkJCQk5NzU5RTkz
RjE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
NjEwM0IwMUNBREJBN0EwMDE2QjRDNyAvKiBJREJWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NzU5RTk0MjE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUNEQTI5QTMxMUNCRjc0REEwMDkwMUNDRiAvKiBXZWJBVlBsYXllckNvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzFBOUVDMjE2OEZCQzQzMDAyNjI5RjkgLyogVGV4
dFRyYWNrQ3VlR2VuZXJpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzU5RTk0NTE0RUYxQ0Y4
MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzY5
NzA4NjE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGE3Mjc3OWZiYjhl
Nzg4ODNmMzI2ODk5MmM2YjY2ZjEzYWEzNjQzNzIuLjgzMTdmZWEyZDE1NTljNjZiNjFlN2ZjYTA3
NmFkNDFjYTFhYzYwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtNDgyMSw3ICs0ODIxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5
U3RhdGUoKQogICAgIGlmIChzaG91bGRCZVBsYXlpbmcpIHsKICAgICAgICAgaWYgKGRvY3VtZW50
KCkucGFnZSgpICYmIG1fbWVkaWFTZXNzaW9uLT5jYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyKCp0
aGlzKSkgewogICAgICAgICAgICAgSFRNTFZpZGVvRWxlbWVudCYgYXNWaWRlbyA9IGRvd25jYXN0
PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKTsKLSAgICAgICAgICAgIGRvY3VtZW50KCkucGFnZSgp
LT5jaHJvbWUoKS5jbGllbnQoKS5zZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyKGFzVmlkZW8pOwor
ICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnNldFVwUGxh
eWJhY2tDb250cm9sc01hbmFnZXIoYXNWaWRlbyk7CiAgICAgICAgIH0KIAogICAgICAgICBzZXRE
aXNwbGF5TW9kZShWaWRlbyk7CkBAIC00ODU3LDcgKzQ4NTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSgpCiAgICAgICAgIHNldFBsYXlpbmcodHJ1ZSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgaWYgKGVuZGVkUGxheWJhY2soKSAmJiBkb2N1bWVudCgpLnBhZ2Uo
KSAmJiBpczxIVE1MVmlkZW9FbGVtZW50PigqdGhpcykpCi0gICAgICAgICAgICBkb2N1bWVudCgp
LnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuY2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpOwor
ICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmNsZWFyUGxh
eWJhY2tDb250cm9sc01hbmFnZXIoKnRoaXMpOwogCiAgICAgICAgIGlmICghcGxheWVyUGF1c2Vk
KQogICAgICAgICAgICAgbV9wbGF5ZXItPnBhdXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAppbmRleCBjMDI3Mzg4YWJlZmI0MWZlOTk2ZWRhODJhY2E2M2RhNzQyZGQxMGZhLi43ZDk2
ODA5YzU1ZTgxZjc0YWEwOGMwMWE5YjNmMTlkY2Y4NjZmYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgKQEAgLTM0MSw4ICszNDEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSkgeyByZXR1cm4gZmFsc2U7IH0KICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmly
dHVhbCB2b2lkIGVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KEhUTUxWaWRlb0Vs
ZW1lbnQmLCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBzZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyKEhUTUxWaWRlb0VsZW1l
bnQmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKEhUTUxNZWRp
YUVsZW1lbnQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJQbGF5YmFja0NvbnRyb2xzTWFu
YWdlcihIVE1MTWVkaWFFbGVtZW50JikgeyB9CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZXhp
dFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0
QW5pbWF0aW9uKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmLCBIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgLyp0YXJnZXRNb2RlKi8pIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44ZmZhMGNhZGQwODY5Y2YxNGVjNDAyMmI1YjAyY2EwZGJkZjhm
ODlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlX2gKKyNkZWZpbmUgV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlX2gKKworI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKworI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgVGltZVJhbmdlczsKKworY2xhc3MgV2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICBlbnVtIEV4dGVybmFsUGxheWJhY2tUYXJnZXRU
eXBlIHsgVGFyZ2V0VHlwZU5vbmUsIFRhcmdldFR5cGVBaXJQbGF5LCBUYXJnZXRUeXBlVFZPdXQg
fTsKKworICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSgpIHsgfTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXREdXJhdGlvbihkb3VibGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUo
ZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFJh
dGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+
JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5n
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1Rhcmdl
dFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgPSAwOworfTsKKwor
fQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdmOTRmMGJkNTFmNGI0YjA5NzUyODNiZDA2Yjk4ZGZkMTk2NGRkN2EKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25N
b2RlbC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsX2gKKyNkZWZpbmUgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxfaAorCisjaWYg
UExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFU
SU9OX01PREUpKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bCgpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxheSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cGF1c2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVu
ZFNjcnViYmluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2Vla1RvVGltZShkb3VibGUgdGlt
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmYXN0U2Vlayhkb3VibGUgdGltZSkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBiZWdpblNjYW5uaW5nRm9yd2FyZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRTY2Fu
bmluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50
NjRfdCBpbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRp
b24odWludDY0X3QgaW5kZXgpID0gMDsKK307CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMjViNzEwZDFmMWNkMTVmMDJjYzQ4NjEyZWYyNzYxZDEwNzJjYzJmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudF9oCisjZGVmaW5lIFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50X2gKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKKyNpbmNsdWRlICJF
dmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudEVudW1zLmgiCisjaW5j
bHVkZSAiV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQXVkaW9UcmFjazsKK2NsYXNzIEhUTUxNZWRpYUVs
ZW1lbnQ7CitjbGFzcyBUZXh0VHJhY2s7CitjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2U7CisKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50IDogcHVibGlj
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLCBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gY3Jl
YXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50KCkpOworICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZSopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWVkaWFFbGVtZW50
KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBIVE1MTWVkaWFFbGVtZW50
KiBtZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX21lZGlhRWxlbWVudC5nZXQoKTsgfQor
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0
ZUZvckV2ZW50TmFtZShjb25zdCBXVEY6OkF0b21pY1N0cmluZyYpOworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiByaHMpIG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzOyB9CisKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHBsYXkoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHBhdXNlKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVQbGF5U3Rh
dGUoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luU2NydWJiaW5nKCkg
b3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmRTY3J1YmJpbmcoKSBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlZWtUb1RpbWUoZG91YmxlIHRpbWUpIG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmFzdFNlZWsoZG91YmxlIHRpbWUpIG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYmVnaW5TY2FubmluZ0ZvcndhcmQoKSBvdmVy
cmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpIG92
ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5kU2Nhbm5pbmcoKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3Qg
aW5kZXgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2VsZWN0TGVnaWJsZU1l
ZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKKworcHJvdGVjdGVkOgorICAgIFdF
QkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50KCk7CisKK3By
aXZhdGU6CisgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxXVEY6OkF0b21pY1N0cmluZz4mIG9ic2Vy
dmVkRXZlbnROYW1lcygpOworICAgIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBldmVudE5hbWVB
bGwoKTsKKworICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBtX21lZGlhRWxlbWVudDsKKyAg
ICBib29sIG1faXNMaXN0ZW5pbmcgeyBmYWxzZSB9OworICAgIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZSogbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgeyBudWxscHRyIH07CisgICAgVmVj
dG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBtX2xlZ2libGVUcmFja3NGb3JNZW51OworICAgIFZlY3Rv
cjxSZWZQdHI8QXVkaW9UcmFjaz4+IG1fYXVkaW9UcmFja3NGb3JNZW51OworICAgIAorICAgIHZv
aWQgdXBkYXRlTGVnaWJsZU9wdGlvbnMoKTsKK307CisgICAgCit9CisKKyNlbmRpZgorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMw
OTVjNzQ5NGNkM2JlMjQ1NjU0MzAwNmRhNjhhNzkwZDJjN2M0NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50Lm1tCkBAIC0wLDAgKzEsMzM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIgor
CisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJF
U0VOVEFUSU9OX01PREUpKQorCisjaW1wb3J0ICJET01FdmVudEludGVybmFsLmgiCisjaW1wb3J0
ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJNZWRpYUNvbnRyb2xzSG9zdC5oIgorI2ltcG9ydCAiV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmgiCisjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVBbmlt
YXRpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRXZlbnRMaXN0ZW5lci5oPgorI2ltcG9ydCA8
V2ViQ29yZS9FdmVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9FdmVudExpc3RlbmVyLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0V2ZW50TmFtZXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTEVsZW1lbnQu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BhZ2VHcm91cC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0VHJhY2tMaXN0Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL1RpbWVSYW5nZXMuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OldlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50KCkKKyAgICA6IEV2ZW50TGlzdGVuZXIoRXZlbnRMaXN0ZW5lcjo6
Q1BQRXZlbnRMaXN0ZW5lclR5cGUpCit7Cit9CisKK1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50Ojp+V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQoKQoreworfQor
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpzZXRXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2UoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKiBpbnRlcmZhY2Up
Cit7CisgICAgaWYgKGludGVyZmFjZSA9PSBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgPSBpbnRlcmZh
Y2U7CisKKyAgICBpZiAobV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpIHsKKyAgICAgICAgbV9w
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnJlc2V0TWVkaWFTdGF0ZSgpOworICAgICAgICBpZiAo
bV9tZWRpYUVsZW1lbnQpCisgICAgICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQobV9tZWRpYUVsZW1lbnQtPm1lZGlhU2Vz
c2lvbigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX21lZGlhRWxlbWVudCkpOwor
ICAgIH0KK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2V0
TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK3sKKyAgICBpZiAo
bV9tZWRpYUVsZW1lbnQgPT0gbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAobV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCisgICAgICAgIG1fcGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlLT5yZXNldE1lZGlhU3RhdGUoKTsKKworICAgIGlmIChtX21lZGlhRWxlbWVudCAm
JiBtX2lzTGlzdGVuaW5nKSB7CisgICAgICAgIGZvciAoYXV0byYgZXZlbnROYW1lIDogb2JzZXJ2
ZWRFdmVudE5hbWVzKCkpCisgICAgICAgICAgICBtX21lZGlhRWxlbWVudC0+cmVtb3ZlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWUsIHRoaXMsIGZhbHNlKTsKKyAgICB9CisgICAgbV9pc0xpc3Rlbmlu
ZyA9IGZhbHNlOworCisgICAgbV9tZWRpYUVsZW1lbnQgPSBtZWRpYUVsZW1lbnQ7CisKKyAgICBp
ZiAoIW1fbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIGV2
ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1lcygpKQorICAgICAgICBtX21lZGlhRWxlbWVudC0+
YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRoaXMsIGZhbHNlKTsKKyAgICBtX2lzTGlzdGVu
aW5nID0gdHJ1ZTsKKworICAgIHVwZGF0ZUZvckV2ZW50TmFtZShldmVudE5hbWVBbGwoKSk7CisK
KyAgICBpZiAobV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCisgICAgICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChtX21lZGlh
RWxlbWVudC0+bWVkaWFTZXNzaW9uKCkud2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKm1f
bWVkaWFFbGVtZW50KSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQ6OmhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJD
b3JlOjpFdmVudCogZXZlbnQpCit7CisgICAgdXBkYXRlRm9yRXZlbnROYW1lKGV2ZW50LT50eXBl
KCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRh
dGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKK3sKKyAg
ICBpZiAoIW1fbWVkaWFFbGVtZW50IHx8ICFtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYm9vbCBhbGwgPSBldmVudE5hbWUgPT0gZXZlbnROYW1lQWxs
KCk7CisKKyAgICBpZiAoYWxsCisgICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCku
ZHVyYXRpb25jaGFuZ2VFdmVudCkgeworICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS0+c2V0RHVyYXRpb24obV9tZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCkpOworICAgICAgICAvLyBU
aGVzZSBpcyBubyBzdGFuZGFyZCBldmVudCBmb3IgbWluRmFzdFJldmVyc2VSYXRlQ2hhbmdlOyBk
dXJhdGlvbiBjaGFuZ2UgaXMgYSByZWFzb25hYmxlIHByb3h5IGZvciBpdC4KKyAgICAgICAgLy8g
SXQgaGFwcGVucyBldmVyeSB0aW1lIGEgbmV3IGl0ZW0gYmVjb21lcyByZWFkeSB0byBwbGF5Lgor
ICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0Q2FuUGxheUZhc3RSZXZlcnNl
KG1fbWVkaWFFbGVtZW50LT5taW5GYXN0UmV2ZXJzZVJhdGUoKSA8IDAuMCk7CisgICAgfQorCisg
ICAgaWYgKGFsbAorICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnBhdXNlRXZl
bnQKKyAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQKKyAgICAg
ICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpCisgICAgICAg
IG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRSYXRlKCFtX21lZGlhRWxlbWVudC0+cGF1
c2VkKCksIG1fbWVkaWFFbGVtZW50LT5wbGF5YmFja1JhdGUoKSk7CisKKyAgICBpZiAoYWxsCisg
ICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50KSB7Cisg
ICAgICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDdXJyZW50VGltZShtX21lZGlh
RWxlbWVudC0+Y3VycmVudFRpbWUoKSwgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBzeXN0
ZW1VcHRpbWVdKTsKKyAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEJ1ZmZl
cmVkVGltZShtX21lZGlhRWxlbWVudC0+bWF4QnVmZmVyZWRUaW1lKCkpOworICAgICAgICAvLyBG
SVhNRTogMTMwNzg4IC0gZmluZCBhIGJldHRlciBldmVudCB0byB1cGRhdGUgc2Vla2FibGUgcmFu
Z2VzIGZyb20uCisgICAgICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRTZWVrYWJs
ZVJhbmdlcygqbV9tZWRpYUVsZW1lbnQtPnNlZWthYmxlKCkpOworICAgIH0KKworICAgIGlmIChh
bGwKKyAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50Cisg
ICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkucmVtb3ZldHJhY2tFdmVudCkKKyAg
ICAgICAgdXBkYXRlTGVnaWJsZU9wdGlvbnMoKTsKKworICAgIGlmIChhbGwKKyAgICAgICAgfHwg
ZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS53ZWJraXRjdXJyZW50cGxheWJhY2t0YXJnZXRpc3dp
cmVsZXNzY2hhbmdlZEV2ZW50KSB7CisgICAgICAgIGJvb2wgZW5hYmxlZCA9IG1fbWVkaWFFbGVt
ZW50LT53ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKCk7CisgICAgICAgIFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFy
Z2V0VHlwZSA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZU5vbmU7Cisg
ICAgICAgIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lOworCisgICAgICAgIGlmIChtX21lZGlh
RWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKSkgeworICAgICAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gYWlycGxheShBU0NJSUxpdGVyYWwoImFpcnBsYXkiKSk7CisgICAg
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB0dm91dChBU0NJSUxpdGVyYWwo
InR2b3V0IikpOworCisgICAgICAgICAgICBTdHJpbmcgdHlwZSA9IG1fbWVkaWFFbGVtZW50LT5t
ZWRpYUNvbnRyb2xzSG9zdCgpLT5leHRlcm5hbERldmljZVR5cGUoKTsKKyAgICAgICAgICAgIGlm
ICh0eXBlID09IGFpcnBsYXkpCisgICAgICAgICAgICAgICAgdGFyZ2V0VHlwZSA9IFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZUFpclBsYXk7CisgICAgICAgICAgICBlbHNl
IGlmICh0eXBlID09IHR2b3V0KQorICAgICAgICAgICAgICAgIHRhcmdldFR5cGUgPSBXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2U6OlRhcmdldFR5cGVUVk91dDsKKyAgICAgICAgICAgIGxvY2Fs
aXplZERldmljZU5hbWUgPSBtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+ZXh0
ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZSgpOworICAgICAgICB9CisgICAgICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRFeHRlcm5hbFBsYXliYWNrKGVuYWJsZWQsIHRhcmdldFR5cGUs
IGxvY2FsaXplZERldmljZU5hbWUpOworICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQobV9tZWRpYUVsZW1lbnQtPm1lZGlh
U2Vzc2lvbigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX21lZGlhRWxlbWVudCkp
OworICAgIH0KK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6
cGxheSgpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVu
dC0+cGxheSgpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
OjpwYXVzZSgpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxl
bWVudC0+cGF1c2UoKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudDo6dG9nZ2xlUGxheVN0YXRlKCkKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpCisgICAg
ICAgIG1fbWVkaWFFbGVtZW50LT50b2dnbGVQbGF5U3RhdGUoKTsKK30KKwordm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6YmVnaW5TY3J1YmJpbmcoKQoreworICAgIGlm
IChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmJlZ2luU2NydWJiaW5n
KCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmVuZFNj
cnViYmluZygpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxl
bWVudC0+ZW5kU2NydWJiaW5nKCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OnNlZWtUb1RpbWUoZG91YmxlIHRpbWUpCit7CisgICAgaWYgKG1fbWVkaWFF
bGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+c2V0Q3VycmVudFRpbWUodGltZSk7Cit9
CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmZhc3RTZWVrKGRv
dWJsZSB0aW1lKQoreworICAgIGlmIChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVs
ZW1lbnQtPmZhc3RTZWVrKHRpbWUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50OjpiZWdpblNjYW5uaW5nRm9yd2FyZCgpCit7CisgICAgaWYgKG1fbWVkaWFF
bGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+YmVnaW5TY2FubmluZyhNZWRpYUNvbnRy
b2xsZXJJbnRlcmZhY2U6OkZvcndhcmQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50OjpiZWdpblNjYW5uaW5nQmFja3dhcmQoKQoreworICAgIGlmIChtX21l
ZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmJlZ2luU2Nhbm5pbmcoTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlOjpCYWNrd2FyZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmVuZFNjYW5uaW5nKCkKK3sKKyAgICBpZiAobV9tZWRpYUVs
ZW1lbnQpCisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5lbmRTY2FubmluZygpOworfQorCit2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpzZWxlY3RBdWRpb01lZGlhT3B0
aW9uKHVpbnQ2NF90IHNlbGVjdGVkQXVkaW9JbmRleCkKK3sKKyAgICBBdWRpb1RyYWNrKiBzZWxl
Y3RlZEF1ZGlvVHJhY2sgPSBudWxscHRyOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBp
bmRleCA8IG1fYXVkaW9UcmFja3NGb3JNZW51LnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBh
dXRvJiBhdWRpb1RyYWNrID0gbV9hdWRpb1RyYWNrc0Zvck1lbnVbaW5kZXhdOworICAgICAgICBh
dWRpb1RyYWNrLT5zZXRFbmFibGVkKGluZGV4ID09IHN0YXRpY19jYXN0PHNpemVfdD4oc2VsZWN0
ZWRBdWRpb0luZGV4KSk7CisgICAgICAgIGlmIChhdWRpb1RyYWNrLT5lbmFibGVkKCkpCisgICAg
ICAgICAgICBzZWxlY3RlZEF1ZGlvVHJhY2sgPSBhdWRpb1RyYWNrLmdldCgpOworICAgIH0KKwor
ICAgIG1fbWVkaWFFbGVtZW50LT5hdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoc2VsZWN0ZWRBdWRp
b1RyYWNrKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6
c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KQoreworICAgIFRleHRUcmFj
ayogdGV4dFRyYWNrID0gbnVsbHB0cjsKKworICAgIGlmIChpbmRleCA8IG1fbGVnaWJsZVRyYWNr
c0Zvck1lbnUuc2l6ZSgpKQorICAgICAgICB0ZXh0VHJhY2sgPSBtX2xlZ2libGVUcmFja3NGb3JN
ZW51W3N0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpXS5nZXQoKTsKKyAgICBlbHNlCisgICAgICAg
IHRleHRUcmFjayA9IFRleHRUcmFjazo6Y2FwdGlvbk1lbnVPZmZJdGVtKCk7CisKKyAgICBtX21l
ZGlhRWxlbWVudC0+c2V0U2VsZWN0ZWRUZXh0VHJhY2sodGV4dFRyYWNrKTsKK30KKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlTGVnaWJsZU9wdGlvbnMo
KQoreworICAgIEF1ZGlvVHJhY2tMaXN0KiBhdWRpb1RyYWNrTGlzdCA9IG1fbWVkaWFFbGVtZW50
LT5hdWRpb1RyYWNrcygpOworICAgIFRleHRUcmFja0xpc3QqIHRyYWNrTGlzdCA9IG1fbWVkaWFF
bGVtZW50LT50ZXh0VHJhY2tzKCk7CisKKyAgICBpZiAoKCF0cmFja0xpc3QgJiYgIWF1ZGlvVHJh
Y2tMaXN0KSB8fCAhbV9tZWRpYUVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpIHx8ICFtX21lZGlh
RWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV1RG
OjpBdG9taWNTdHJpbmcgZGlzcGxheU1vZGUgPSBtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9s
c0hvc3QoKS0+Y2FwdGlvbkRpc3BsYXlNb2RlKCk7CisgICAgVGV4dFRyYWNrKiBvZmZJdGVtID0g
bV9tZWRpYUVsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCktPmNhcHRpb25NZW51T2ZmSXRlbSgp
OworICAgIFRleHRUcmFjayogYXV0b21hdGljSXRlbSA9IG1fbWVkaWFFbGVtZW50LT5tZWRpYUNv
bnRyb2xzSG9zdCgpLT5jYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKTsKKworICAgIGF1dG8mIGNh
cHRpb25QcmVmZXJlbmNlcyA9IG1fbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+Z3Jv
dXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKKyAgICBtX2xlZ2libGVUcmFja3NGb3JNZW51ID0g
Y2FwdGlvblByZWZlcmVuY2VzLnNvcnRlZFRyYWNrTGlzdEZvck1lbnUodHJhY2tMaXN0KTsKKyAg
ICBtX2F1ZGlvVHJhY2tzRm9yTWVudSA9IGNhcHRpb25QcmVmZXJlbmNlcy5zb3J0ZWRUcmFja0xp
c3RGb3JNZW51KGF1ZGlvVHJhY2tMaXN0KTsKKworICAgIFZlY3RvcjxTdHJpbmc+IGF1ZGlvVHJh
Y2tEaXNwbGF5TmFtZXM7CisgICAgdWludDY0X3Qgc2VsZWN0ZWRBdWRpb0luZGV4ID0gMDsKKwor
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2F1ZGlvVHJhY2tzRm9yTWVudS5z
aXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgYXV0byYgdHJhY2sgPSBtX2F1ZGlvVHJhY2tzRm9y
TWVudVtpbmRleF07CisgICAgICAgIGF1ZGlvVHJhY2tEaXNwbGF5TmFtZXMuYXBwZW5kKGNhcHRp
b25QcmVmZXJlbmNlcy5kaXNwbGF5TmFtZUZvclRyYWNrKHRyYWNrLmdldCgpKSk7CisKKyAgICAg
ICAgaWYgKHRyYWNrLT5lbmFibGVkKCkpCisgICAgICAgICAgICBzZWxlY3RlZEF1ZGlvSW5kZXgg
PSBpbmRleDsKKyAgICB9CisKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoYXVkaW9UcmFja0Rpc3BsYXlOYW1lcywgc2VsZWN0ZWRB
dWRpb0luZGV4KTsKKworICAgIFZlY3RvcjxTdHJpbmc+IHRyYWNrRGlzcGxheU5hbWVzOworICAg
IHVpbnQ2NF90IHNlbGVjdGVkSW5kZXggPSAwOworICAgIHVpbnQ2NF90IG9mZkluZGV4ID0gMDsK
KyAgICBib29sIHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IGZhbHNlOworCisgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbGVnaWJsZVRyYWNrc0Zvck1lbnUuc2l6ZSgpOyBpbmRl
eCsrKSB7CisgICAgICAgIGF1dG8mIHRyYWNrID0gbV9sZWdpYmxlVHJhY2tzRm9yTWVudVtpbmRl
eF07CisgICAgICAgIHRyYWNrRGlzcGxheU5hbWVzLmFwcGVuZChjYXB0aW9uUHJlZmVyZW5jZXMu
ZGlzcGxheU5hbWVGb3JUcmFjayh0cmFjay5nZXQoKSkpOworCisgICAgICAgIGlmICh0cmFjayA9
PSBvZmZJdGVtKQorICAgICAgICAgICAgb2ZmSW5kZXggPSBpbmRleDsKKworICAgICAgICBpZiAo
dHJhY2sgPT0gYXV0b21hdGljSXRlbSAmJiBkaXNwbGF5TW9kZSA9PSBNZWRpYUNvbnRyb2xzSG9z
dDo6YXV0b21hdGljS2V5d29yZCgpKSB7CisgICAgICAgICAgICBzZWxlY3RlZEluZGV4ID0gaW5k
ZXg7CisgICAgICAgICAgICB0cmFja01lbnVJdGVtU2VsZWN0ZWQgPSB0cnVlOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKGRpc3BsYXlNb2RlICE9IE1lZGlhQ29udHJvbHNIb3N0OjphdXRvbWF0
aWNLZXl3b3JkKCkgJiYgdHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3Jk
KCkpIHsKKyAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPSBpbmRleDsKKyAgICAgICAgICAgIHRy
YWNrTWVudUl0ZW1TZWxlY3RlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
b2ZmSW5kZXggJiYgIXRyYWNrTWVudUl0ZW1TZWxlY3RlZCAmJiBkaXNwbGF5TW9kZSA9PSBNZWRp
YUNvbnRyb2xzSG9zdDo6Zm9yY2VkT25seUtleXdvcmQoKSkgeworICAgICAgICBzZWxlY3RlZElu
ZGV4ID0gb2ZmSW5kZXg7CisgICAgICAgIHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IHRydWU7Cisg
ICAgfQorCisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnModHJhY2tEaXNwbGF5TmFtZXMsIHNlbGVjdGVkSW5kZXgpOworfQorCitj
b25zdCBWZWN0b3I8QXRvbWljU3RyaW5nPiYgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50OjpvYnNlcnZlZEV2ZW50TmFtZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxWZWN0b3I8QXRvbWljU3RyaW5nPj4gc0V2ZW50TmFtZXM7CisKKyAgICBpZiAoIXNFdmVudE5h
bWVzLmdldCgpLnNpemUoKSkgeworICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZl
bnROYW1lcygpLmR1cmF0aW9uY2hhbmdlRXZlbnQpOworICAgICAgICBzRXZlbnROYW1lcy5nZXQo
KS5hcHBlbmQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQpOworICAgICAgICBzRXZlbnROYW1lcy5n
ZXQoKS5hcHBlbmQoZXZlbnROYW1lcygpLnBsYXlFdmVudCk7CisgICAgICAgIHNFdmVudE5hbWVz
LmdldCgpLmFwcGVuZChldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50KTsKKyAgICAgICAgc0V2
ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQpOworICAg
ICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnROYW1lcygpLmFkZHRyYWNrRXZlbnQp
OworICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnROYW1lcygpLnJlbW92ZXRy
YWNrRXZlbnQpOworICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnROYW1lcygp
LndlYmtpdGN1cnJlbnRwbGF5YmFja3RhcmdldGlzd2lyZWxlc3NjaGFuZ2VkRXZlbnQpOworICAg
IH0KKyAgICByZXR1cm4gc0V2ZW50TmFtZXMuZ2V0KCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpldmVudE5hbWVBbGwoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNFdmVudE5hbWVBbGwg
PSAiYWxsRXZlbnRzIjsKKyAgICByZXR1cm4gc0V2ZW50TmFtZUFsbDsKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZS5oCmluZGV4IGM2ZDliZmYyNzY5OTk2YTk4MjZjM2RkNjYzMGEwNDEy
YjIxNDUyODIuLmE4ZWYyOTUwYWI4ZTdhYWZlNDQwNDc0OGIxNjM3NWNjY2ZiZjNlMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZS5oCkBAIC0yOCwxMSArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9T
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQog
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLWNsYXNzIFN0cmlu
ZzsKLX0KKyNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00MCwyMyArMzYsMTAgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
dXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKTsKIAogY2xhc3MgVGltZVJhbmdlczsKIAotY2xhc3Mg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlIHsKK2NsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZSA6IHB1YmxpYyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgewogcHVibGljOgot
ICAgIGVudW0gRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgeyBUYXJnZXRUeXBlTm9uZSwgVGFy
Z2V0VHlwZUFpclBsYXksIFRhcmdldFR5cGVUVk91dCB9OwotICAgIAogICAgIHZpcnR1YWwgfldl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSgpIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRN
ZWRpYVN0YXRlKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBk
b3VibGUgYW5jaG9yVGltZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCdWZmZXJlZFRpbWUo
ZG91YmxlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZs
b2F0IHBsYXliYWNrUmF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0RpbWVuc2lv
bnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6
U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFj
a1RhcmdldFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgPSAwOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsLmgKaW5kZXggMzViYmVlNGRmMDJjMTRmY2Q4N2YwZDBkMTFhY2Qw
NDkzNzYzMjIzNS4uZTU5OGZkMzU5NTg3YzllNjYzM2JkYzUyZTBjMmVjZmE5ZDU3OWMyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbC5oCkBAIC0zMSwyOCArMzEsMTcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgorI2luY2x1ZGUgIldlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWwgeworY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwgOiBwdWJs
aWMgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsKCkgeyB9OwotICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlUGxh
eVN0YXRlKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjcnViYmluZygpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZW5kU2NydWJiaW5nKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZWVr
VG9UaW1lKGRvdWJsZSB0aW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZhc3RTZWVrKGRvdWJs
ZSB0aW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjYW5uaW5nQmFja3dhcmQoKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGVuZFNjYW5uaW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnVs
bHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpID0gMDsK
ICAgICBlbnVtIFZpZGVvR3Jhdml0eSB7IFZpZGVvR3Jhdml0eVJlc2l6ZSwgVmlkZW9HcmF2aXR5
UmVzaXplQXNwZWN0LCBWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsIH07CiAgICAgdmlydHVh
bCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFZpZGVvR3Jhdml0eSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBpbmRleCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVmlz
aWJsZSgpIGNvbnN0ID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQu
aAppbmRleCA1ZDQ2NjcwYmM1N2Q5MzYyMjUzYjgwYWNkZTc1NjhhYzliNGIyZGFkLi5iMzY4Zjk2
NTNlNDIyYTdkNjUzMGZlODc4ZmI0ZDAwODVjNjNmZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50LmgKQEAgLTQyLDEzICs0MiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBBdWRpb1RyYWNrOwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIFRleHRU
cmFjazsKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OwogY2xhc3Mg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOwogCiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudCA6IHB1YmxpYyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCwgcHVibGlj
IEV2ZW50TGlzdGVuZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gY3JlYXRlKFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50JiBwbGF5YmFja1Nlc3Npb25Nb2RlbCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
KCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudChwbGF5YmFja1Nlc3Npb25Nb2RlbCkpOwogICAgIH0KICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudCgpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSopOwpAQCAtODAsMTIgKzgxLDEzIEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCYpOwogCiBwcml2
YXRlOgogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8V1RGOjpBdG9taWNTdHJpbmc+JiBvYnNlcnZl
ZEV2ZW50TmFtZXMoKTsKICAgICBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgZXZlbnROYW1lQWxs
KCk7Ci0gICAgCisKKyAgICBSZWY8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+
IG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7CiAgICAgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IG1f
dmlkZW9FbGVtZW50OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNj
cmVlbkxheWVyOwogICAgIGJvb2wgbV9pc0xpc3RlbmluZyB7IGZhbHNlIH07CkBAIC05Myw4ICs5
NSw2IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fdmlkZW9GcmFtZTsKICAgICBWZWN0b3I8
UmVmUHRyPFRleHRUcmFjaz4+IG1fbGVnaWJsZVRyYWNrc0Zvck1lbnU7CiAgICAgVmVjdG9yPFJl
ZlB0cjxBdWRpb1RyYWNrPj4gbV9hdWRpb1RyYWNrc0Zvck1lbnU7Ci0KLSAgICB2b2lkIHVwZGF0
ZUxlZ2libGVPcHRpb25zKCk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Lm1tCmluZGV4IGY4OWYxNzU4ODYyZWNjODBmNmM2ZDkwMTE0MTViNGIwOThhMjUwMDUu
LjcyMDVjMzNiOGNkYTJjM2FmYmYzMWViMmE0OGQxNGJhMjA5NjI4OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJE
T01FdmVudEludGVybmFsLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYUNv
bnRyb2xzSG9zdC5oIgorI2ltcG9ydCAiV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS5oIgogI2ltcG9ydCA8
UXVhcnR6Q29yZS9Db3JlQW5pbWF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUV2ZW50TGlz
dGVuZXIuaD4KQEAgLTUwLDggKzUxLDkgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
LVdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudCgpCitXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQoV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQmIHBsYXliYWNrU2Vzc2lvbk1vZGVsKQogICAgIDogRXZlbnRMaXN0ZW5l
cihFdmVudExpc3RlbmVyOjpDUFBFdmVudExpc3RlbmVyVHlwZSkKKyAgICAsIG1fcGxheWJhY2tT
ZXNzaW9uTW9kZWwocGxheWJhY2tTZXNzaW9uTW9kZWwpCiB7CiB9CiAKQEAgLTY1LDI0ICs2Nywx
OCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2UoV2ViVmlkZQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Zp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZSA9IGludGVyZmFjZTsKKyAgICBtX3BsYXliYWNrU2Vzc2lv
bk1vZGVsLT5zZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UoaW50ZXJmYWNlKTsKIAotICAg
IGlmIChtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSkgewotICAgICAgICBtX3ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZS0+cmVzZXRNZWRpYVN0YXRlKCk7Ci0gICAgICAgIGlmIChtX3ZpZGVvRWxl
bWVudCkgewotICAgICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldFZpZGVv
RGltZW5zaW9ucyh0cnVlLCBtX3ZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCBtX3ZpZGVvRWxl
bWVudC0+dmlkZW9IZWlnaHQoKSk7Ci0gICAgICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZS0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQobV92aWRlb0VsZW1lbnQtPm1l
ZGlhU2Vzc2lvbigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX3ZpZGVvRWxlbWVu
dCkpOwotICAgICAgICB9Ci0gICAgfQorICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZSAmJiBtX3ZpZGVvRWxlbWVudCkKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Ut
PnNldFZpZGVvRGltZW5zaW9ucyh0cnVlLCBtX3ZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCBt
X3ZpZGVvRWxlbWVudC0+dmlkZW9IZWlnaHQoKSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50KiB2
aWRlb0VsZW1lbnQpCiB7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+c2V0TWVkaWFFbGVt
ZW50KHZpZGVvRWxlbWVudCk7CiAgICAgaWYgKG1fdmlkZW9FbGVtZW50ID09IHZpZGVvRWxlbWVu
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
KQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+cmVzZXRNZWRpYVN0YXRlKCk7
Ci0KICAgICBpZiAobV92aWRlb0VsZW1lbnQgJiYgbV92aWRlb0VsZW1lbnQtPnZpZGVvRnVsbHNj
cmVlbkxheWVyKCkpCiAgICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihudWxscHRyKTsKIApAQCAtMTAzLDEwICs5OSw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50KiB2
aWRlCiAKICAgICB1cGRhdGVGb3JFdmVudE5hbWUoZXZlbnROYW1lQWxsKCkpOwogCi0gICAgaWYg
KG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKSB7CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlKQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0VmlkZW9E
aW1lbnNpb25zKHRydWUsIHZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCB2aWRlb0VsZW1lbnQt
PnZpZGVvSGVpZ2h0KCkpOwotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0
V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQobV92aWRlb0VsZW1lbnQtPm1lZGlhU2Vzc2lv
bigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX3ZpZGVvRWxlbWVudCkpOwotICAg
IH0KIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6aGFuZGxl
RXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50KiBl
dmVudCkKQEAgLTEyMiw1NiArMTE2LDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3QKICAgICBi
b29sIGFsbCA9IGV2ZW50TmFtZSA9PSBldmVudE5hbWVBbGwoKTsKIAogICAgIGlmIChhbGwKLSAg
ICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50KSB7
Ci0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5zZXREdXJhdGlvbihtX3ZpZGVv
RWxlbWVudC0+ZHVyYXRpb24oKSk7Ci0gICAgICAgIC8vIFRoZXNlIGlzIG5vIHN0YW5kYXJkIGV2
ZW50IGZvciBtaW5GYXN0UmV2ZXJzZVJhdGVDaGFuZ2U7IGR1cmF0aW9uIGNoYW5nZSBpcyBhIHJl
YXNvbmFibGUgcHJveHkgZm9yIGl0LgotICAgICAgICAvLyBJdCBoYXBwZW5zIGV2ZXJ5IHRpbWUg
YSBuZXcgaXRlbSBiZWNvbWVzIHJlYWR5IHRvIHBsYXkuCi0gICAgICAgIG1fdmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlLT5zZXRDYW5QbGF5RmFzdFJldmVyc2UobV92aWRlb0VsZW1lbnQtPm1pbkZh
c3RSZXZlcnNlUmF0ZSgpIDwgMC4wKTsKLSAgICB9Ci0KLSAgICBpZiAoYWxsCi0gICAgICAgIHx8
IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkucGF1c2VFdmVudAotICAgICAgICB8fCBldmVudE5h
bWUgPT0gZXZlbnROYW1lcygpLnBsYXlFdmVudAotICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZl
bnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCkKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2UtPnNldFJhdGUoIW1fdmlkZW9FbGVtZW50LT5wYXVzZWQoKSwgbV92aWRlb0VsZW1lbnQt
PnBsYXliYWNrUmF0ZSgpKTsKLQotICAgIGlmIChhbGwKLSAgICAgICAgfHwgZXZlbnROYW1lID09
IGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQpIHsKLSAgICAgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UtPnNldEN1cnJlbnRUaW1lKG1fdmlkZW9FbGVtZW50LT5jdXJyZW50VGltZSgp
LCBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHN5c3RlbVVwdGltZV0pOwotICAgICAgICBt
X3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0QnVmZmVyZWRUaW1lKG1fdmlkZW9FbGVtZW50
LT5tYXhCdWZmZXJlZFRpbWUoKSk7Ci0gICAgICAgIC8vIEZJWE1FOiAxMzA3ODggLSBmaW5kIGEg
YmV0dGVyIGV2ZW50IHRvIHVwZGF0ZSBzZWVrYWJsZSByYW5nZXMgZnJvbS4KLSAgICAgICAgbV92
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldFNlZWthYmxlUmFuZ2VzKCptX3ZpZGVvRWxlbWVu
dC0+c2Vla2FibGUoKSk7Ci0gICAgfQotCi0gICAgaWYgKGFsbAotICAgICAgICB8fCBldmVudE5h
bWUgPT0gZXZlbnROYW1lcygpLmFkZHRyYWNrRXZlbnQKLSAgICAgICAgfHwgZXZlbnROYW1lID09
IGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50KQotICAgICAgICB1cGRhdGVMZWdpYmxlT3B0
aW9ucygpOwotICAgIAotICAgIGlmIChhbGwKICAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50
TmFtZXMoKS5yZXNpemVFdmVudCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Ut
PnNldFZpZGVvRGltZW5zaW9ucyh0cnVlLCBtX3ZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCBt
X3ZpZGVvRWxlbWVudC0+dmlkZW9IZWlnaHQoKSk7Ci0KLSAgICBpZiAoYWxsCi0gICAgICAgIHx8
IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkud2Via2l0Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3
aXJlbGVzc2NoYW5nZWRFdmVudCkgewotICAgICAgICBib29sIGVuYWJsZWQgPSBtX3ZpZGVvRWxl
bWVudC0+d2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcygpOwotICAgICAgICBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRh
cmdldFR5cGUgPSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U6OlRhcmdldFR5cGVOb25lOwot
ICAgICAgICBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZTsKLQotICAgICAgICBpZiAobV92aWRl
b0VsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCkpIHsKLSAgICAgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IGFpcnBsYXkoQVNDSUlMaXRlcmFsKCJhaXJwbGF5IikpOwotICAg
ICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdHZvdXQoQVNDSUlMaXRlcmFs
KCJ0dm91dCIpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgU3RyaW5nIHR5cGUgPSBtX3Zp
ZGVvRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+ZXh0ZXJuYWxEZXZpY2VUeXBlKCk7Ci0g
ICAgICAgICAgICBpZiAodHlwZSA9PSBhaXJwbGF5KQotICAgICAgICAgICAgICAgIHRhcmdldFR5
cGUgPSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U6OlRhcmdldFR5cGVBaXJQbGF5OwotICAg
ICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSB0dm91dCkKLSAgICAgICAgICAgICAgICB0YXJnZXRU
eXBlID0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpUYXJnZXRUeXBlVFZPdXQ7Ci0gICAg
ICAgICAgICBsb2NhbGl6ZWREZXZpY2VOYW1lID0gbV92aWRlb0VsZW1lbnQtPm1lZGlhQ29udHJv
bHNIb3N0KCktPmV4dGVybmFsRGV2aWNlRGlzcGxheU5hbWUoKTsKLSAgICAgICAgfQotICAgICAg
ICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0RXh0ZXJuYWxQbGF5YmFjayhlbmFibGVk
LCB0YXJnZXRUeXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLSAgICAgICAgbV92aWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UtPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKG1fdmlkZW9F
bGVtZW50LT5tZWRpYVNlc3Npb24oKS53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgqbV92
aWRlb0VsZW1lbnQpKTsKLSAgICB9CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVv
TGF5ZXIpCkBAIC0xOTMsNjIgKzEzOSw1MiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKgogCiB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpwbGF5KCkKIHsKLSAgICBp
ZiAobV92aWRlb0VsZW1lbnQpCi0gICAgICAgIG1fdmlkZW9FbGVtZW50LT5wbGF5KCk7CisgICAg
bV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+cGxheSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpwYXVzZSgpCiB7Ci0gICAgaWYgKG1fdmlkZW9FbGVtZW50
KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+cGF1c2UoKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lv
bk1vZGVsLT5wYXVzZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Ojp0b2dnbGVQbGF5U3RhdGUoKQogewotICAgIGlmIChtX3ZpZGVvRWxlbWVudCkKLSAg
ICAgICAgbV92aWRlb0VsZW1lbnQtPnRvZ2dsZVBsYXlTdGF0ZSgpOworICAgIG1fcGxheWJhY2tT
ZXNzaW9uTW9kZWwtPnRvZ2dsZVBsYXlTdGF0ZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpiZWdpblNjcnViYmluZygpCiB7Ci0gICAgaWYgKG1fdmlk
ZW9FbGVtZW50KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+YmVnaW5TY3J1YmJpbmcoKTsKKyAg
ICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5iZWdpblNjcnViYmluZygpOwogfQogCiB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjplbmRTY3J1YmJpbmcoKQogewotICAg
IGlmIChtX3ZpZGVvRWxlbWVudCkKLSAgICAgICAgbV92aWRlb0VsZW1lbnQtPmVuZFNjcnViYmlu
ZygpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmVuZFNjcnViYmluZygpOwogfQogCiB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZWVrVG9UaW1lKGRvdWJs
ZSB0aW1lKQogewotICAgIGlmIChtX3ZpZGVvRWxlbWVudCkKLSAgICAgICAgbV92aWRlb0VsZW1l
bnQtPnNldEN1cnJlbnRUaW1lKHRpbWUpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPnNl
ZWtUb1RpbWUodGltZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6OmZhc3RTZWVrKGRvdWJsZSB0aW1lKQogewotICAgIGlmIChtX3ZpZGVvRWxlbWVudCkK
LSAgICAgICAgbV92aWRlb0VsZW1lbnQtPmZhc3RTZWVrKHRpbWUpOworICAgIG1fcGxheWJhY2tT
ZXNzaW9uTW9kZWwtPmZhc3RTZWVrKHRpbWUpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50OjpiZWdpblNjYW5uaW5nRm9yd2FyZCgpCiB7Ci0gICAgaWYgKG1f
dmlkZW9FbGVtZW50KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+YmVnaW5TY2FubmluZyhNZWRp
YUNvbnRyb2xsZXJJbnRlcmZhY2U6OkZvcndhcmQpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9k
ZWwtPmJlZ2luU2Nhbm5pbmdGb3J3YXJkKCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQ6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpCiB7Ci0gICAgaWYgKG1f
dmlkZW9FbGVtZW50KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+YmVnaW5TY2FubmluZyhNZWRp
YUNvbnRyb2xsZXJJbnRlcmZhY2U6OkJhY2t3YXJkKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1v
ZGVsLT5iZWdpblNjYW5uaW5nQmFja3dhcmQoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZW5kU2Nhbm5pbmcoKQogewotICAgIGlmIChtX3ZpZGVvRWxl
bWVudCkKLSAgICAgICAgbV92aWRlb0VsZW1lbnQtPmVuZFNjYW5uaW5nKCk7CisgICAgbV9wbGF5
YmFja1Nlc3Npb25Nb2RlbC0+ZW5kU2Nhbm5pbmcoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQpAQCAtMjgyLDg4ICsyMTgsMTIg
QEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9MYXll
ckdyYXZpdHkoV2ViVmlkZW9GdWxsc2NyZWUKIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBzZWxlY3RlZEF1
ZGlvSW5kZXgpCiB7Ci0gICAgQXVkaW9UcmFjayogc2VsZWN0ZWRBdWRpb1RyYWNrID0gbnVsbHB0
cjsKLQotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2F1ZGlvVHJhY2tzRm9y
TWVudS5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byYgYXVkaW9UcmFjayA9IG1fYXVk
aW9UcmFja3NGb3JNZW51W2luZGV4XTsKLSAgICAgICAgYXVkaW9UcmFjay0+c2V0RW5hYmxlZChp
bmRleCA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNlbGVjdGVkQXVkaW9JbmRleCkpOwotICAgICAg
ICBpZiAoYXVkaW9UcmFjay0+ZW5hYmxlZCgpKQotICAgICAgICAgICAgc2VsZWN0ZWRBdWRpb1Ry
YWNrID0gYXVkaW9UcmFjay5nZXQoKTsKLSAgICB9Ci0KLSAgICBtX3ZpZGVvRWxlbWVudC0+YXVk
aW9UcmFja0VuYWJsZWRDaGFuZ2VkKHNlbGVjdGVkQXVkaW9UcmFjayk7CisgICAgbV9wbGF5YmFj
a1Nlc3Npb25Nb2RlbC0+c2VsZWN0QXVkaW9NZWRpYU9wdGlvbihzZWxlY3RlZEF1ZGlvSW5kZXgp
OwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZWxlY3RM
ZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpCiB7Ci0gICAgVGV4dFRyYWNrKiB0ZXh0
VHJhY2sgPSBudWxscHRyOwotICAgIAotICAgIGlmIChpbmRleCA8IG1fbGVnaWJsZVRyYWNrc0Zv
ck1lbnUuc2l6ZSgpKQotICAgICAgICB0ZXh0VHJhY2sgPSBtX2xlZ2libGVUcmFja3NGb3JNZW51
W3N0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpXS5nZXQoKTsKLSAgICBlbHNlCi0gICAgICAgIHRl
eHRUcmFjayA9IFRleHRUcmFjazo6Y2FwdGlvbk1lbnVPZmZJdGVtKCk7Ci0gICAgCi0gICAgbV92
aWRlb0VsZW1lbnQtPnNldFNlbGVjdGVkVGV4dFRyYWNrKHRleHRUcmFjayk7Ci19Ci0KLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnVwZGF0ZUxlZ2libGVPcHRpb25z
KCkKLXsKLSAgICBBdWRpb1RyYWNrTGlzdCogYXVkaW9UcmFja0xpc3QgPSBtX3ZpZGVvRWxlbWVu
dC0+YXVkaW9UcmFja3MoKTsKLSAgICBUZXh0VHJhY2tMaXN0KiB0cmFja0xpc3QgPSBtX3ZpZGVv
RWxlbWVudC0+dGV4dFRyYWNrcygpOwotCi0gICAgaWYgKCghdHJhY2tMaXN0ICYmICFhdWRpb1Ry
YWNrTGlzdCkgfHwgIW1fdmlkZW9FbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKSB8fCAhbV92aWRl
b0VsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBXVEY6OkF0b21pY1N0cmluZyBkaXNwbGF5TW9kZSA9IG1fdmlkZW9FbGVtZW50LT5tZWRpYUNv
bnRyb2xzSG9zdCgpLT5jYXB0aW9uRGlzcGxheU1vZGUoKTsKLSAgICBUZXh0VHJhY2sqIG9mZkl0
ZW0gPSBtX3ZpZGVvRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+Y2FwdGlvbk1lbnVPZmZJ
dGVtKCk7Ci0gICAgVGV4dFRyYWNrKiBhdXRvbWF0aWNJdGVtID0gbV92aWRlb0VsZW1lbnQtPm1l
ZGlhQ29udHJvbHNIb3N0KCktPmNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpOwotCi0gICAgYXV0
byYgY2FwdGlvblByZWZlcmVuY2VzID0gbV92aWRlb0VsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgp
LT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpOwotICAgIG1fbGVnaWJsZVRyYWNrc0Zvck1l
bnUgPSBjYXB0aW9uUHJlZmVyZW5jZXMuc29ydGVkVHJhY2tMaXN0Rm9yTWVudSh0cmFja0xpc3Qp
OwotICAgIG1fYXVkaW9UcmFja3NGb3JNZW51ID0gY2FwdGlvblByZWZlcmVuY2VzLnNvcnRlZFRy
YWNrTGlzdEZvck1lbnUoYXVkaW9UcmFja0xpc3QpOwotCi0gICAgVmVjdG9yPFN0cmluZz4gYXVk
aW9UcmFja0Rpc3BsYXlOYW1lczsKLSAgICB1aW50NjRfdCBzZWxlY3RlZEF1ZGlvSW5kZXggPSAw
OwotICAgIAotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2F1ZGlvVHJhY2tz
Rm9yTWVudS5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byYgdHJhY2sgPSBtX2F1ZGlv
VHJhY2tzRm9yTWVudVtpbmRleF07Ci0gICAgICAgIGF1ZGlvVHJhY2tEaXNwbGF5TmFtZXMuYXBw
ZW5kKGNhcHRpb25QcmVmZXJlbmNlcy5kaXNwbGF5TmFtZUZvclRyYWNrKHRyYWNrLmdldCgpKSk7
Ci0gICAgICAgIAotICAgICAgICBpZiAodHJhY2stPmVuYWJsZWQoKSkKLSAgICAgICAgICAgIHNl
bGVjdGVkQXVkaW9JbmRleCA9IGluZGV4OwotICAgIH0KLSAgICAKLSAgICBtX3ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZS0+c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoYXVkaW9UcmFja0Rp
c3BsYXlOYW1lcywgc2VsZWN0ZWRBdWRpb0luZGV4KTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHRy
YWNrRGlzcGxheU5hbWVzOwotICAgIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXggPSAwOwotICAgIHVp
bnQ2NF90IG9mZkluZGV4ID0gMDsKLSAgICBib29sIHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IGZh
bHNlOwotICAgIAotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2xlZ2libGVU
cmFja3NGb3JNZW51LnNpemUoKTsgaW5kZXgrKykgewotICAgICAgICBhdXRvJiB0cmFjayA9IG1f
bGVnaWJsZVRyYWNrc0Zvck1lbnVbaW5kZXhdOwotICAgICAgICB0cmFja0Rpc3BsYXlOYW1lcy5h
cHBlbmQoY2FwdGlvblByZWZlcmVuY2VzLmRpc3BsYXlOYW1lRm9yVHJhY2sodHJhY2suZ2V0KCkp
KTsKLSAgICAgICAgCi0gICAgICAgIGlmICh0cmFjayA9PSBvZmZJdGVtKQotICAgICAgICAgICAg
b2ZmSW5kZXggPSBpbmRleDsKLSAgICAgICAgCi0gICAgICAgIGlmICh0cmFjayA9PSBhdXRvbWF0
aWNJdGVtICYmIGRpc3BsYXlNb2RlID09IE1lZGlhQ29udHJvbHNIb3N0OjphdXRvbWF0aWNLZXl3
b3JkKCkpIHsKLSAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPSBpbmRleDsKLSAgICAgICAgICAg
IHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIGlmIChkaXNwbGF5TW9kZSAhPSBNZWRpYUNvbnRyb2xzSG9zdDo6YXV0b21hdGljS2V5d29y
ZCgpICYmIHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpKSB7Ci0g
ICAgICAgICAgICBzZWxlY3RlZEluZGV4ID0gaW5kZXg7Ci0gICAgICAgICAgICB0cmFja01lbnVJ
dGVtU2VsZWN0ZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmIChvZmZJ
bmRleCAmJiAhdHJhY2tNZW51SXRlbVNlbGVjdGVkICYmIGRpc3BsYXlNb2RlID09IE1lZGlhQ29u
dHJvbHNIb3N0Ojpmb3JjZWRPbmx5S2V5d29yZCgpKSB7Ci0gICAgICAgIHNlbGVjdGVkSW5kZXgg
PSBvZmZJbmRleDsKLSAgICAgICAgdHJhY2tNZW51SXRlbVNlbGVjdGVkID0gdHJ1ZTsKLSAgICB9
Ci0gICAgCi0gICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnModHJhY2tEaXNwbGF5TmFtZXMsIHNlbGVjdGVkSW5kZXgpOworICAgIG1f
cGxheWJhY2tTZXNzaW9uTW9kZWwtPnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihpbmRleCk7CiB9
CiAKIGNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+JiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKCkKQEAgLTM3MSwxNSArMjMxLDcgQEAgY29u
c3QgVmVjdG9yPEF0b21pY1N0cmluZz4mIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50OjpvYnNlcnZlZEV2ZW50TmEKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPEF0
b21pY1N0cmluZz4+IHNFdmVudE5hbWVzOwogCiAgICAgaWYgKCFzRXZlbnROYW1lcy5nZXQoKS5z
aXplKCkpIHsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5k
dXJhdGlvbmNoYW5nZUV2ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2
ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5k
KGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQpOwotICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBl
bmQoZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCk7Ci0gICAgICAgIHNFdmVudE5hbWVzLmdl
dCgpLmFwcGVuZChldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50KTsKLSAgICAgICAgc0V2ZW50
TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50KTsKLSAgICAgICAg
c0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50KTsK
ICAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5yZXNpemVFdmVu
dCk7Ci0gICAgICAgIHNFdmVudE5hbWVzLmdldCgpLmFwcGVuZChldmVudE5hbWVzKCkud2Via2l0
Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWRFdmVudCk7CiAgICAgfQogICAg
IHJldHVybiBzRXZlbnROYW1lcy5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMGY5ZWU2MzFm
NmMwNjUxOTg3NGQxODAyOWRkODY2NmZkOTA2NTg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5oCkBAIC0wLDAgKzEs
OTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYg
UExBVEZPUk0oSU9TKQorCisjaW1wb3J0IDxBVktpdC9BVlBsYXllckNvbnRyb2xsZXIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw7CitjbGFz
cyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDsKK30KKworQGludGVyZmFjZSBXZWJB
Vk1lZGlhU2VsZWN0aW9uT3B0aW9uIDogTlNPYmplY3QKK0Bwcm9wZXJ0eSAocmV0YWluKSBOU1N0
cmluZyAqbG9jYWxpemVkRGlzcGxheU5hbWU7CitAZW5kCisKK0BpbnRlcmZhY2UgV2ViQVZQbGF5
ZXJDb250cm9sbGVyIDogTlNPYmplY3QgeworICAgIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24g
Kl9jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjsKKyAgICBXZWJBVk1lZGlhU2VsZWN0
aW9uT3B0aW9uICpfY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjsKKyAgICBCT09M
IF9waWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ7Cit9CisKKy0gKHZvaWQpcmVzZXRTdGF0ZTsK
KworQHByb3BlcnR5IChyZXRhaW4pIEFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxl
clByb3h5OworQHByb3BlcnR5IChhc3NpZ24pIFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsKiBkZWxlZ2F0ZTsKK0Bwcm9wZXJ0eSAoYXNzaWduKSBXZWJDb3JlOjpXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VBVktpdCogcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOworCitAcHJvcGVy
dHkgKHJlYWRvbmx5KSBCT09MIGNhblNjYW5Gb3J3YXJkOworQHByb3BlcnR5IEJPT0wgY2FuU2Nh
bkJhY2t3YXJkOworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5TZWVrVG9CZWdpbm5pbmc7
CitAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGNhblNlZWtUb0VuZDsKKworQHByb3BlcnR5IEJP
T0wgY2FuUGxheTsKK0Bwcm9wZXJ0eSAoZ2V0dGVyPWlzUGxheWluZykgQk9PTCBwbGF5aW5nOwor
QHByb3BlcnR5IEJPT0wgY2FuUGF1c2U7CitAcHJvcGVydHkgQk9PTCBjYW5Ub2dnbGVQbGF5YmFj
azsKK0Bwcm9wZXJ0eSBkb3VibGUgcmF0ZTsKK0Bwcm9wZXJ0eSBCT09MIGNhblNlZWs7CitAcHJv
cGVydHkgTlNUaW1lSW50ZXJ2YWwgY29udGVudER1cmF0aW9uOworQHByb3BlcnR5IENHU2l6ZSBj
b250ZW50RGltZW5zaW9uczsKK0Bwcm9wZXJ0eSBCT09MIGhhc0VuYWJsZWRBdWRpbzsKK0Bwcm9w
ZXJ0eSBCT09MIGhhc0VuYWJsZWRWaWRlbzsKK0Bwcm9wZXJ0eSBOU1RpbWVJbnRlcnZhbCBtaW5U
aW1lOworQHByb3BlcnR5IE5TVGltZUludGVydmFsIG1heFRpbWU7CitAcHJvcGVydHkgTlNUaW1l
SW50ZXJ2YWwgY29udGVudER1cmF0aW9uV2l0aGluRW5kVGltZXM7CitAcHJvcGVydHkgKHJldGFp
bikgTlNBcnJheSAqbG9hZGVkVGltZVJhbmdlczsKK0Bwcm9wZXJ0eSBBVlBsYXllckNvbnRyb2xs
ZXJTdGF0dXMgc3RhdHVzOworQHByb3BlcnR5IChyZXRhaW4pIEFWVmFsdWVUaW1pbmcgKnRpbWlu
ZzsKK0Bwcm9wZXJ0eSAocmV0YWluKSBOU0FycmF5ICpzZWVrYWJsZVRpbWVSYW5nZXM7CisKK0Bw
cm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaGFzTWVkaWFTZWxlY3Rpb25PcHRpb25zOworQHByb3Bl
cnR5IChyZWFkb25seSkgQk9PTCBoYXNBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczsKK0Bwcm9w
ZXJ0eSAocmV0YWluKSBOU0FycmF5ICphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczsKK0Bwcm9w
ZXJ0eSAocmV0YWluKSBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpjdXJyZW50QXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbjsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaGFzTGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9uczsKK0Bwcm9wZXJ0eSAocmV0YWluKSBOU0FycmF5ICpsZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zOworQHByb3BlcnR5IChyZXRhaW4pIFdlYkFWTWVkaWFTZWxl
Y3Rpb25PcHRpb24gKmN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb247CisKK0Bwcm9w
ZXJ0eSAocmVhZG9ubHksIGdldHRlcj1pc1BsYXlpbmdPbkV4dGVybmFsU2NyZWVuKSBCT09MIHBs
YXlpbmdPbkV4dGVybmFsU2NyZWVuOworQHByb3BlcnR5IChyZWFkb25seSwgZ2V0dGVyPWlzUGxh
eWluZ09uU2Vjb25kU2NyZWVuKSBCT09MIHBsYXlpbmdPblNlY29uZFNjcmVlbjsKK0Bwcm9wZXJ0
eSAoZ2V0dGVyPWlzRXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSkgQk9PTCBleHRlcm5hbFBsYXliYWNr
QWN0aXZlOworQHByb3BlcnR5IEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBl
IGV4dGVybmFsUGxheWJhY2tUeXBlOworQHByb3BlcnR5IChyZXRhaW4pIE5TU3RyaW5nICpleHRl
cm5hbFBsYXliYWNrQWlyUGxheURldmljZUxvY2FsaXplZE5hbWU7CitAcHJvcGVydHkgQk9PTCBh
bGxvd3NFeHRlcm5hbFBsYXliYWNrOworQHByb3BlcnR5IChnZXR0ZXI9aXNQaWN0dXJlSW5QaWN0
dXJlUG9zc2libGUpIEJPT0wgcGljdHVyZUluUGljdHVyZVBvc3NpYmxlOworQHByb3BlcnR5IChn
ZXR0ZXI9aXNQaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQpIEJPT0wgcGljdHVyZUluUGljdHVy
ZUludGVycnVwdGVkOworQGVuZAorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFjZjE4
MWE0YTdmMjdiODliMjY4MWRmODg4NjI0ZmQzY2I0YjQ5MQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIubW0KQEAgLTAs
MCArMSw0NTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViQVZQbGF5ZXJDb250cm9s
bGVyLmgiCisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgIkFWS2l0U1BJLmgiCisjaW1w
b3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIgorI2ltcG9ydCAiV2ViUGxheWJhY2tTZXNzaW9u
TW9kZWwuaCIKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbXBvcnQgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCisjaW1wb3J0ICJDb3JlTWVkaWFTb2Z0TGluay5oIgorCitTT0ZU
X0xJTktfRlJBTUVXT1JLKEFWS2l0KQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBsYXllckNv
bnRyb2xsZXIpCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW1wbGVtZW50YXRpb24g
V2ViQVZQbGF5ZXJDb250cm9sbGVyCisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBzZWxmOworCisgICAgaW5p
dEFWUGxheWVyQ29udHJvbGxlcigpOworICAgIHNlbGYucGxheWVyQ29udHJvbGxlclByb3h5ID0g
W1thbGxvY0FWUGxheWVyQ29udHJvbGxlckluc3RhbmNlKCkgaW5pdF0gYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX3BsYXllckNv
bnRyb2xsZXJQcm94eSByZWxlYXNlXTsKKyAgICBbX2xvYWRlZFRpbWVSYW5nZXMgcmVsZWFzZV07
CisgICAgW19zZWVrYWJsZVRpbWVSYW5nZXMgcmVsZWFzZV07CisgICAgW190aW1pbmcgcmVsZWFz
ZV07CisgICAgW19hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyByZWxlYXNlXTsKKyAgICBbX2xl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgcmVsZWFzZV07CisgICAgW19jdXJyZW50QXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbiByZWxlYXNlXTsKKyAgICBbX2N1cnJlbnRMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb24gcmVsZWFzZV07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2
b2lkKXJlc2V0U3RhdGUKK3sKKyAgICBzZWxmLmNvbnRlbnREdXJhdGlvbiA9IDA7CisgICAgc2Vs
Zi5tYXhUaW1lID0gMDsKKyAgICBzZWxmLmNvbnRlbnREdXJhdGlvbldpdGhpbkVuZFRpbWVzID0g
MDsKKyAgICBzZWxmLmxvYWRlZFRpbWVSYW5nZXMgPSBAW107CisKKyAgICBzZWxmLmNhblBsYXkg
PSBOTzsKKyAgICBzZWxmLmNhblBhdXNlID0gTk87CisgICAgc2VsZi5jYW5Ub2dnbGVQbGF5YmFj
ayA9IE5POworICAgIHNlbGYuaGFzRW5hYmxlZEF1ZGlvID0gTk87CisgICAgc2VsZi5jYW5TZWVr
ID0gTk87CisgICAgc2VsZi5taW5UaW1lID0gMDsKKyAgICBzZWxmLnN0YXR1cyA9IEFWUGxheWVy
Q29udHJvbGxlclN0YXR1c1Vua25vd247CisKKyAgICBzZWxmLnRpbWluZyA9IG5pbDsKKyAgICBz
ZWxmLnJhdGUgPSAwOworCisgICAgc2VsZi5oYXNFbmFibGVkVmlkZW8gPSBOTzsKKyAgICBzZWxm
LmNvbnRlbnREaW1lbnNpb25zID0gQ0dTaXplTWFrZSgwLCAwKTsKKworICAgIHNlbGYuc2Vla2Fi
bGVUaW1lUmFuZ2VzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKworICAgIHNlbGYuY2FuU2Nh
bkJhY2t3YXJkID0gTk87CisKKyAgICBzZWxmLmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zID0g
bmlsOworICAgIHNlbGYuY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24gPSBuaWw7CisK
KyAgICBzZWxmLmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBuaWw7CisgICAgc2VsZi5j
dXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uID0gbmlsOworfQorCistIChBVlBsYXll
ciAqKXBsYXllcgoreworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKGlkKWZvcndhcmRpbmdUYXJn
ZXRGb3JTZWxlY3RvcjooU0VMKXNlbGVjdG9yCit7CisgICAgVU5VU0VEX1BBUkFNKHNlbGVjdG9y
KTsKKyAgICByZXR1cm4gc2VsZi5wbGF5ZXJDb250cm9sbGVyUHJveHk7Cit9CisKKy0gKHZvaWQp
cGxheTooaWQpc2VuZGVyCit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgaWYgKCFz
ZWxmLmRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisgICAgc2VsZi5kZWxlZ2F0ZS0+cGxheSgp
OworfQorCistICh2b2lkKXBhdXNlOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURfUEFSQU0oc2Vu
ZGVyKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBzZWxm
LmRlbGVnYXRlLT5wYXVzZSgpOworfQorCistICh2b2lkKXRvZ2dsZVBsYXliYWNrOihpZClzZW5k
ZXIKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUp
CisgICAgICAgIHJldHVybjsKKyAgICBzZWxmLmRlbGVnYXRlLT50b2dnbGVQbGF5U3RhdGUoKTsK
K30KKworLSAodm9pZCl0b2dnbGVQbGF5YmFja0V2ZW5XaGVuSW5CYWNrZ3JvdW5kOihpZClzZW5k
ZXIKK3sKKyAgICBbc2VsZiB0b2dnbGVQbGF5YmFjazpzZW5kZXJdOworfQorCistIChCT09MKWlz
UGxheWluZworeworICAgIHJldHVybiBbc2VsZiByYXRlXTsKK30KKworLSAodm9pZClzZXRQbGF5
aW5nOihCT09MKXBsYXlpbmcKK3sKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAocGxheWluZykKKyAgICAgICAgc2VsZi5kZWxlZ2F0ZS0+cGxheSgpOwor
ICAgIGVsc2UKKyAgICAgICAgc2VsZi5kZWxlZ2F0ZS0+cGF1c2UoKTsKK30KKworKyAoTlNTZXQg
KilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ1BsYXlpbmcKK3sKKyAgICByZXR1cm4gW05TU2V0
IHNldFdpdGhPYmplY3Q6QCJyYXRlIl07Cit9CisKKy0gKHZvaWQpYmVnaW5TY3J1YmJpbmc6KGlk
KXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOworICAgIGlmICghc2VsZi5kZWxl
Z2F0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIHNlbGYuZGVsZWdhdGUtPmJlZ2luU2NydWJiaW5n
KCk7Cit9CisKKy0gKHZvaWQpZW5kU2NydWJiaW5nOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURf
UEFSQU0oc2VuZGVyKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsK
KyAgICBzZWxmLmRlbGVnYXRlLT5lbmRTY3J1YmJpbmcoKTsKK30KKworLSAodm9pZClzZWVrVG9U
aW1lOihOU1RpbWVJbnRlcnZhbCl0aW1lCit7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAg
ICAgICByZXR1cm47CisgICAgc2VsZi5kZWxlZ2F0ZS0+ZmFzdFNlZWsodGltZSk7Cit9CisKKy0g
KE5TVGltZUludGVydmFsKWN1cnJlbnRUaW1lV2l0aGluRW5kVGltZXMKK3sKKyAgICByZXR1cm4g
c2VsZi50aW1pbmcuY3VycmVudFZhbHVlOworfQorCistICh2b2lkKXNldEN1cnJlbnRUaW1lV2l0
aGluRW5kVGltZXM6KE5TVGltZUludGVydmFsKWN1cnJlbnRUaW1lV2l0aGluRW5kVGltZXMKK3sK
KyAgICBbc2VsZiBzZWVrVG9UaW1lOmN1cnJlbnRUaW1lV2l0aGluRW5kVGltZXNdOworfQorCisr
IChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nQ3VycmVudFRpbWVXaXRoaW5FbmRU
aW1lcworeworICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdDpAInRpbWluZyJdOworfQor
CistIChCT09MKWhhc0xpdmVTdHJlYW1pbmdDb250ZW50Cit7CisgICAgaWYgKFtzZWxmIHN0YXR1
c10gPT0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzUmVhZHlUb1BsYXkpCisgICAgICAgIHJldHVy
biBbc2VsZiBjb250ZW50RHVyYXRpb25dID09IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpp
bmZpbml0eSgpOworICAgIHJldHVybiBOTzsKK30KKworKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZh
bHVlc0FmZmVjdGluZ0hhc0xpdmVTdHJlYW1pbmdDb250ZW50Cit7CisgICAgcmV0dXJuIFtOU1Nl
dCBzZXRXaXRoT2JqZWN0czpAImNvbnRlbnREdXJhdGlvbiIsIEAic3RhdHVzIiwgbmlsXTsKK30K
KworLSAodm9pZClza2lwQmFja3dhcmRUaGlydHlTZWNvbmRzOihpZClzZW5kZXIKK3sKKyAgICBV
TlVTRURfUEFSQU0oc2VuZGVyKTsKKyAgICBCT09MIGlzVGltZVdpdGhpblNlZWthYmxlVGltZVJh
bmdlcyA9IE5POworICAgIENNVGltZSBjdXJyZW50VGltZSA9IENNVGltZU1ha2VXaXRoU2Vjb25k
cyhbW3NlbGYgdGltaW5nXSBjdXJyZW50VmFsdWVdLCAxMDAwKTsKKyAgICBDTVRpbWUgdGhpcnR5
U2Vjb25kc0JlZm9yZUN1cnJlbnRUaW1lID0gQ01UaW1lU3VidHJhY3QoY3VycmVudFRpbWUsIENN
VGltZU1ha2UoMzAsIDEpKTsKKworICAgIGZvciAoTlNWYWx1ZSAqc2Vla2FibGVUaW1lUmFuZ2VW
YWx1ZSBpbiBbc2VsZiBzZWVrYWJsZVRpbWVSYW5nZXNdKSB7CisgICAgICAgIGlmIChDTVRpbWVS
YW5nZUNvbnRhaW5zVGltZShbc2Vla2FibGVUaW1lUmFuZ2VWYWx1ZSBDTVRpbWVSYW5nZVZhbHVl
XSwgdGhpcnR5U2Vjb25kc0JlZm9yZUN1cnJlbnRUaW1lKSkgeworICAgICAgICAgICAgaXNUaW1l
V2l0aGluU2Vla2FibGVUaW1lUmFuZ2VzID0gWUVTOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAoaXNUaW1lV2l0aGluU2Vla2FibGVUaW1lUmFuZ2VzKQor
ICAgICAgICBbc2VsZiBzZWVrVG9UaW1lOkNNVGltZUdldFNlY29uZHModGhpcnR5U2Vjb25kc0Jl
Zm9yZUN1cnJlbnRUaW1lKV07Cit9CisKKy0gKHZvaWQpZ290b0VuZE9mU2Vla2FibGVSYW5nZXM6
KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOworICAgIE5TVGltZUludGVy
dmFsIHRpbWVBdEVuZE9mU2Vla2FibGVUaW1lUmFuZ2VzID0gTkFOOworCisgICAgZm9yIChOU1Zh
bHVlICpzZWVrYWJsZVRpbWVSYW5nZVZhbHVlIGluIFtzZWxmIHNlZWthYmxlVGltZVJhbmdlc10p
IHsKKyAgICAgICAgQ01UaW1lUmFuZ2Ugc2Vla2FibGVUaW1lUmFuZ2UgPSBbc2Vla2FibGVUaW1l
UmFuZ2VWYWx1ZSBDTVRpbWVSYW5nZVZhbHVlXTsKKyAgICAgICAgTlNUaW1lSW50ZXJ2YWwgZW5k
T2ZTZWVrYWJsZVRpbWVSYW5nZSA9IENNVGltZUdldFNlY29uZHMoQ01UaW1lUmFuZ2VHZXRFbmQo
c2Vla2FibGVUaW1lUmFuZ2UpKTsKKyAgICAgICAgaWYgKGlzbmFuKHRpbWVBdEVuZE9mU2Vla2Fi
bGVUaW1lUmFuZ2VzKSB8fCBlbmRPZlNlZWthYmxlVGltZVJhbmdlID4gdGltZUF0RW5kT2ZTZWVr
YWJsZVRpbWVSYW5nZXMpCisgICAgICAgICAgICB0aW1lQXRFbmRPZlNlZWthYmxlVGltZVJhbmdl
cyA9IGVuZE9mU2Vla2FibGVUaW1lUmFuZ2U7CisgICAgfQorCisgICAgaWYgKCFpc25hbih0aW1l
QXRFbmRPZlNlZWthYmxlVGltZVJhbmdlcykpCisgICAgICAgIFtzZWxmIHNlZWtUb1RpbWU6dGlt
ZUF0RW5kT2ZTZWVrYWJsZVRpbWVSYW5nZXNdOworfQorCistIChCT09MKWNhblNjYW5Gb3J3YXJk
Cit7CisgICAgcmV0dXJuIFtzZWxmIGNhblBsYXldOworfQorCisrIChOU1NldCAqKWtleVBhdGhz
Rm9yVmFsdWVzQWZmZWN0aW5nQ2FuU2NhbkZvcndhcmQKK3sKKyAgICByZXR1cm4gW05TU2V0IHNl
dFdpdGhPYmplY3Q6QCJjYW5QbGF5Il07Cit9CisKKy0gKHZvaWQpYmVnaW5TY2FubmluZ0Zvcndh
cmQ6KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOworICAgIGlmICghc2Vs
Zi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIHNlbGYuZGVsZWdhdGUtPmJlZ2luU2Nh
bm5pbmdGb3J3YXJkKCk7Cit9CisKKy0gKHZvaWQpZW5kU2Nhbm5pbmdGb3J3YXJkOihpZClzZW5k
ZXIKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUp
CisgICAgICAgIHJldHVybjsKKyAgICBzZWxmLmRlbGVnYXRlLT5lbmRTY2FubmluZygpOworfQor
CistICh2b2lkKWJlZ2luU2Nhbm5pbmdCYWNrd2FyZDooaWQpc2VuZGVyCit7CisgICAgVU5VU0VE
X1BBUkFNKHNlbmRlcik7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAgICAgICByZXR1cm47
CisgICAgc2VsZi5kZWxlZ2F0ZS0+YmVnaW5TY2FubmluZ0JhY2t3YXJkKCk7Cit9CisKKy0gKHZv
aWQpZW5kU2Nhbm5pbmdCYWNrd2FyZDooaWQpc2VuZGVyCit7CisgICAgVU5VU0VEX1BBUkFNKHNl
bmRlcik7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisgICAgc2Vs
Zi5kZWxlZ2F0ZS0+ZW5kU2Nhbm5pbmcoKTsKK30KKworLSAoQk9PTCljYW5TZWVrVG9CZWdpbm5p
bmcKK3sKKyAgICBDTVRpbWUgbWluaW11bVRpbWUgPSBrQ01UaW1lSW5kZWZpbml0ZTsKKworICAg
IGZvciAoTlNWYWx1ZSAqdmFsdWUgaW4gW3NlbGYgc2Vla2FibGVUaW1lUmFuZ2VzXSkKKyAgICAg
ICAgbWluaW11bVRpbWUgPSBDTVRpbWVNaW5pbXVtKFt2YWx1ZSBDTVRpbWVSYW5nZVZhbHVlXS5z
dGFydCwgbWluaW11bVRpbWUpOworCisgICAgcmV0dXJuIENNVElNRV9JU19OVU1FUklDKG1pbmlt
dW1UaW1lKTsKK30KKworKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ0NhblNl
ZWtUb0JlZ2lubmluZworeworICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdDpAInNlZWth
YmxlVGltZVJhbmdlcyJdOworfQorCistICh2b2lkKXNlZWtUb0JlZ2lubmluZzooaWQpc2VuZGVy
Cit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQor
ICAgICAgICByZXR1cm47CisgICAgc2VsZi5kZWxlZ2F0ZS0+c2Vla1RvVGltZSgtSU5GSU5JVFkp
OworfQorCistICh2b2lkKXNlZWtDaGFwdGVyQmFja3dhcmQ6KGlkKXNlbmRlcgoreworICAgIFtz
ZWxmIHNlZWtUb0JlZ2lubmluZzpzZW5kZXJdOworfQorCistIChCT09MKWNhblNlZWtUb0VuZAor
eworICAgIENNVGltZSBtYXhpbXVtVGltZSA9IGtDTVRpbWVJbmRlZmluaXRlOworCisgICAgZm9y
IChOU1ZhbHVlICp2YWx1ZSBpbiBbc2VsZiBzZWVrYWJsZVRpbWVSYW5nZXNdKQorICAgICAgICBt
YXhpbXVtVGltZSA9IENNVGltZU1heGltdW0oQ01UaW1lUmFuZ2VHZXRFbmQoW3ZhbHVlIENNVGlt
ZVJhbmdlVmFsdWVdKSwgbWF4aW11bVRpbWUpOworCisgICAgcmV0dXJuIENNVElNRV9JU19OVU1F
UklDKG1heGltdW1UaW1lKTsKK30KKworKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVj
dGluZ0NhblNlZWtUb0VuZAoreworICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdDpAInNl
ZWthYmxlVGltZVJhbmdlcyJdOworfQorCistICh2b2lkKXNlZWtUb0VuZDooaWQpc2VuZGVyCit7
CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAg
ICAgICByZXR1cm47CisgICAgc2VsZi5kZWxlZ2F0ZS0+c2Vla1RvVGltZShJTkZJTklUWSk7Cit9
CisKKy0gKHZvaWQpc2Vla0NoYXB0ZXJGb3J3YXJkOihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBz
ZWVrVG9FbmQ6c2VuZGVyXTsKK30KKworLSAoQk9PTCloYXNNZWRpYVNlbGVjdGlvbk9wdGlvbnMK
K3sKKyAgICByZXR1cm4gW3NlbGYgaGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNdIHx8IFtz
ZWxmIGhhc0xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNdOworfQorCisrIChOU1NldCAqKWtl
eVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nSGFzTWVkaWFTZWxlY3Rpb25PcHRpb25zCit7CisgICAg
cmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0czpAImhhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zIiwgQCJoYXNMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zIiwgbmlsXTsKK30KKworLSAo
Qk9PTCloYXNBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucworeworICAgIHJldHVybiBbW3NlbGYg
YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNdIGNvdW50XSA+IDE7Cit9CisKKysgKE5TU2V0ICop
a2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdIYXNBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucwor
eworICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdDpAImF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zIl07Cit9CisKKy0gKEJPT0wpaGFzTGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucwor
eworICAgIGNvbnN0IE5TVUludGVnZXIgbnVtRGVmYXVsdExlZ2libGVPcHRpb25zID0gMjsKKyAg
ICByZXR1cm4gW1tzZWxmIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNdIGNvdW50XSA+IG51
bURlZmF1bHRMZWdpYmxlT3B0aW9uczsKK30KKworKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVl
c0FmZmVjdGluZ0hhc0xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMKK3sKKyAgICByZXR1cm4g
W05TU2V0IHNldFdpdGhPYmplY3Q6QCJsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zIl07Cit9
CisKKy0gKFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKiljdXJyZW50QXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbgoreworICAgIHJldHVybiBfY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b247Cit9CisKKy0gKHZvaWQpc2V0Q3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb246KFdl
YkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKilvcHRpb24KK3sKKyAgICBpZiAob3B0aW9uID09IF9j
dXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
W19jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbiByZWxlYXNlXTsKKyAgICBfY3VycmVu
dEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24gPSBbb3B0aW9uIHJldGFpbl07CisKKyAgICBpZiAo
IXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIE5TSW50ZWdlciBpbmRleCA9
IE5TTm90Rm91bmQ7CisKKyAgICBpZiAob3B0aW9uICYmIHNlbGYuYXVkaW9NZWRpYVNlbGVjdGlv
bk9wdGlvbnMpCisgICAgICAgIGluZGV4ID0gW3NlbGYuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bnMgaW5kZXhPZk9iamVjdDpvcHRpb25dOworCisgICAgc2VsZi5kZWxlZ2F0ZS0+c2VsZWN0QXVk
aW9NZWRpYU9wdGlvbihpbmRleCAhPSBOU05vdEZvdW5kID8gaW5kZXggOiBVSU5UNjRfTUFYKTsK
K30KKworLSAoV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb24KK3sKKyAgICByZXR1cm4gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb247Cit9CisKKy0gKHZvaWQpc2V0Q3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbjooV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKW9wdGlvbgoreworICAgIGlmIChvcHRp
b24gPT0gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24pCisgICAgICAgIHJldHVy
bjsKKworICAgIFtfY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbiByZWxlYXNlXTsK
KyAgICBfY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbiA9IFtvcHRpb24gcmV0YWlu
XTsKKworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNJ
bnRlZ2VyIGluZGV4ID0gTlNOb3RGb3VuZDsKKworICAgIGlmIChvcHRpb24gJiYgc2VsZi5sZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKQorICAgICAgICBpbmRleCA9IFtzZWxmLmxlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMgaW5kZXhPZk9iamVjdDpvcHRpb25dOworCisgICAgc2VsZi5k
ZWxlZ2F0ZS0+c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKGluZGV4ICE9IE5TTm90Rm91bmQgPyBp
bmRleCA6IFVJTlQ2NF9NQVgpOworfQorCistIChCT09MKWlzUGxheWluZ09uRXh0ZXJuYWxTY3Jl
ZW4KK3sKKyAgICByZXR1cm4gW3NlbGYgaXNFeHRlcm5hbFBsYXliYWNrQWN0aXZlXSB8fCBbc2Vs
ZiBpc1BsYXlpbmdPblNlY29uZFNjcmVlbl07Cit9CisKKysgKE5TU2V0ICopa2V5UGF0aHNGb3JW
YWx1ZXNBZmZlY3RpbmdQbGF5aW5nT25FeHRlcm5hbFNjcmVlbgoreworICAgIHJldHVybiBbTlNT
ZXQgc2V0V2l0aE9iamVjdHM6QCJleHRlcm5hbFBsYXliYWNrQWN0aXZlIiwgQCJwbGF5aW5nT25T
ZWNvbmRTY3JlZW4iLCBuaWxdOworfQorCistIChCT09MKWlzUGljdHVyZUluUGljdHVyZUludGVy
cnVwdGVkCit7CisgICAgcmV0dXJuIF9waWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ7Cit9CisK
Ky0gKHZvaWQpc2V0UGljdHVyZUluUGljdHVyZUludGVycnVwdGVkOihCT09MKXBpY3R1cmVJblBp
Y3R1cmVJbnRlcnJ1cHRlZAoreworICAgIGlmIChfcGljdHVyZUluUGljdHVyZUludGVycnVwdGVk
ICE9IHBpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZCkgeworICAgICAgICBfcGljdHVyZUluUGlj
dHVyZUludGVycnVwdGVkID0gcGljdHVyZUluUGljdHVyZUludGVycnVwdGVkOworICAgICAgICBp
ZiAocGljdHVyZUluUGljdHVyZUludGVycnVwdGVkKQorICAgICAgICAgICAgW3NlbGYgc2V0UGxh
eWluZzpOT107CisgICAgfQorfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQVZNZWRpYVNl
bGVjdGlvbk9wdGlvbgorQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmNmJiNTAxYmI4M2M0ZDhlMmFhNTk1NDY2
Mjc2ZjBkNTdjODZlZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaApAQCAtMCwwICsxLDEwOCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRl
ZiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdF9oCisjZGVmaW5lIFdlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUFWS2l0X2gKKworI2lmIFBMQVRGT1JNKElPUykKKworI2luY2x1ZGUg
IkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMuaCIKKyNp
bmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5o
IgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8b2JqYy9vYmpjLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIFdlYkFWUGxheWVyQ29udHJvbGxlcjsKK09C
SkNfQ0xBU1MgQVZQbGF5ZXJWaWV3Q29udHJvbGxlcjsKK09CSkNfQ0xBU1MgVUlWaWV3Q29udHJv
bGxlcjsKK09CSkNfQ0xBU1MgVUlXaW5kb3c7CitPQkpDX0NMQVNTIFVJVmlldzsKKworbmFtZXNw
YWNlIFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IEludFJlY3Q7CitjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDsKK2NsYXNzIFdlYlBsYXli
YWNrU2Vzc2lvbkNoYW5nZU9ic2VydmVyOworCitjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdENsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQVZLaXRDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBleHRlcm5h
bFBsYXliYWNrRW5hYmxlZENoYW5nZWQoYm9vbCkgPSAwOworfTsKKworY2xhc3MgV0VCQ09SRV9F
WFBPUlQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQKKyAgICA6IHB1YmxpYyBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UKKyAgICAsIHB1YmxpYyBSZWZDb3VudGVkPFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiB7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQoKSk7
CisgICAgfQorICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbChXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbCopOworICAgIHZvaWQgc2V0Q2xpZW50KFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0Q2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0K
KworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgb3ZlcnJpZGU7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpIG92ZXJyaWRlOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBk
b3VibGUgYW5jaG9yVGltZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRC
dWZmZXJlZFRpbWUoZG91YmxlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgb3ZlcnJpZGU7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikg
b3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2Uo
Ym9vbCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRf
dCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0
aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFj
a1RhcmdldFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpIG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQo
Ym9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgp
IGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKTsK
KworICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciAqcGxheWVyQ29udHJvbGxlcigpIGNvbnN0IHsg
cmV0dXJuIG1fcGxheWVyQ29udHJvbGxlci5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgV0VC
Q09SRV9FWFBPUlQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQoKTsKKworICAgIFJl
dGFpblB0cjxXZWJBVlBsYXllckNvbnRyb2xsZXI+IG1fcGxheWVyQ29udHJvbGxlcjsKKyAgICBX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCogbV9wbGF5YmFja1Nlc3Npb25Nb2RlbCB7IG51bGxwdHIg
fTsKKyAgICBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdENsaWVudCogbV9jbGllbnQg
eyBudWxscHRyfTsKKworICAgIGJvb2wgbV93aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCB7
IHRydWUgfTsKK307CisKK30KKworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlZGNiODEzNGY3NzI2NmE1MTBjNGQ1ODUwYWVjMjgzZmZk
NzY5ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0KQEAgLTAsMCArMSwyMDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaCIK
KworI2lmIFBMQVRGT1JNKElPUykKKyNpZiBIQVZFKEFWS0lUKQorCisjaW1wb3J0ICJBVktpdFNQ
SS5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiVGltZVJhbmdlcy5oIgorI2ltcG9y
dCAiV2ViQVZQbGF5ZXJDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbC5oIgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWVGltZS5oPgorI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKKyNpbXBvcnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCisKK1NPRlRf
TElOS19GUkFNRVdPUksoQVZLaXQpCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWVmFsdWVUaW1p
bmcpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
QVZLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KCkKKyAgICA6IG1fcGxheWVy
Q29udHJvbGxlcihhZG9wdE5TKFtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0XSkp
Cit7CisgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6
dGhpc107Cit9CisKK1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojp+V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQoKQoreworICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciog
cGxheWVyQ29udHJvbGxlciA9IG1fcGxheWVyQ29udHJvbGxlci5nZXQoKTsKKyAgICBpZiAocGxh
eWVyQ29udHJvbGxlciAmJiBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tBY3RpdmUp
CisgICAgICAgIHNldEV4dGVybmFsUGxheWJhY2soZmFsc2UsIFRhcmdldFR5cGVOb25lLCAiIik7
Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnJlc2V0TWVkaWFT
dGF0ZSgpCit7CisgICAgW21fcGxheWVyQ29udHJvbGxlciByZXNldFN0YXRlXTsKK30KKwordm9p
ZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0V2ViUGxheWJhY2tTZXNzaW9u
TW9kZWwoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwqIG1vZGVsKQoreworICAgIG1fcGxheWJhY2tT
ZXNzaW9uTW9kZWwgPSBtb2RlbDsKKyAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldERlbGVnYXRl
Om1fcGxheWJhY2tTZXNzaW9uTW9kZWxdOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0OjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCit7CisgICAgV2ViQVZQ
bGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gbV9wbGF5ZXJDb250cm9sbGVyLmdl
dCgpOworCisgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjcwMTcgdXNlIGNvcnJlY3QgdmFsdWVzIGluc3RlYWQgb2YgZHVyYXRpb24gZm9yIGFs
bCB0aGVzZQorICAgIHBsYXllckNvbnRyb2xsZXIuY29udGVudER1cmF0aW9uID0gZHVyYXRpb247
CisgICAgcGxheWVyQ29udHJvbGxlci5tYXhUaW1lID0gZHVyYXRpb247CisgICAgcGxheWVyQ29u
dHJvbGxlci5jb250ZW50RHVyYXRpb25XaXRoaW5FbmRUaW1lcyA9IGR1cmF0aW9uOworCisgICAg
Ly8gRklYTUU6IHdlIHRha2UgdGhpcyBhcyBhbiBpbmRpY2F0aW9uIHRoYXQgcGxheWJhY2sgaXMg
cmVhZHkuCisgICAgcGxheWVyQ29udHJvbGxlci5jYW5QbGF5ID0gWUVTOworICAgIHBsYXllckNv
bnRyb2xsZXIuY2FuUGF1c2UgPSBZRVM7CisgICAgcGxheWVyQ29udHJvbGxlci5jYW5Ub2dnbGVQ
bGF5YmFjayA9IFlFUzsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmhhc0VuYWJsZWRBdWRpbyA9IFlF
UzsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmNhblNlZWsgPSBZRVM7CisgICAgcGxheWVyQ29udHJv
bGxlci5taW5UaW1lID0gMDsKKyAgICBwbGF5ZXJDb250cm9sbGVyLnN0YXR1cyA9IEFWUGxheWVy
Q29udHJvbGxlclN0YXR1c1JlYWR5VG9QbGF5OworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0OjpzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJs
ZSBhbmNob3JUaW1lKQoreworICAgIE5TVGltZUludGVydmFsIGFuY2hvclRpbWVTdGFtcCA9ICFb
bV9wbGF5ZXJDb250cm9sbGVyIHJhdGVdID8gTkFOIDogYW5jaG9yVGltZTsKKyAgICBBVlZhbHVl
VGltaW5nICp0aW1pbmcgPSBbZ2V0QVZWYWx1ZVRpbWluZ0NsYXNzKCkgdmFsdWVUaW1pbmdXaXRo
QW5jaG9yVmFsdWU6Y3VycmVudFRpbWUKKyAgICAgICAgYW5jaG9yVGltZVN0YW1wOmFuY2hvclRp
bWVTdGFtcCByYXRlOjBdOworCisgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRUaW1pbmc6dGlt
aW5nXTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0QnVm
ZmVyZWRUaW1lKGRvdWJsZSBidWZmZXJlZFRpbWUpCit7CisgICAgV2ViQVZQbGF5ZXJDb250cm9s
bGVyKiBwbGF5ZXJDb250cm9sbGVyID0gbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpOworICAgIGRv
dWJsZSBkdXJhdGlvbiA9IHBsYXllckNvbnRyb2xsZXIuY29udGVudER1cmF0aW9uOworICAgIGRv
dWJsZSBub3JtYWxpemVkQnVmZmVyZWRUaW1lOworICAgIGlmICghZHVyYXRpb24pCisgICAgICAg
IG5vcm1hbGl6ZWRCdWZmZXJlZFRpbWUgPSAwOworICAgIGVsc2UKKyAgICAgICAgbm9ybWFsaXpl
ZEJ1ZmZlcmVkVGltZSA9IGJ1ZmZlcmVkVGltZSAvIGR1cmF0aW9uOworICAgIHBsYXllckNvbnRy
b2xsZXIubG9hZGVkVGltZVJhbmdlcyA9IEBbQDAsIEAobm9ybWFsaXplZEJ1ZmZlcmVkVGltZSld
OworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRSYXRlKGJv
b2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCit7CisgICAgW21fcGxheWVyQ29udHJv
bGxlciBzZXRSYXRlOmlzUGxheWluZyA/IHBsYXliYWNrUmF0ZSA6IDAuXTsKK30KKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0U2Vla2FibGVSYW5nZXMoY29uc3Qg
VGltZVJhbmdlcyYgdGltZVJhbmdlcykKK3sKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+
IHNlZWthYmxlUmFuZ2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7
CisgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlOworCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHRpbWVSYW5nZXMubGVuZ3RoKCk7IGkrKykgeworICAgICAgICBkb3VibGUgc3Rh
cnQgPSB0aW1lUmFuZ2VzLnN0YXJ0KGksIGV4Y2VwdGlvbkNvZGUpOworICAgICAgICBkb3VibGUg
ZW5kID0gdGltZVJhbmdlcy5lbmQoaSwgZXhjZXB0aW9uQ29kZSk7CisKKyAgICAgICAgQ01UaW1l
UmFuZ2UgcmFuZ2UgPSBDTVRpbWVSYW5nZU1ha2UoQ01UaW1lTWFrZVdpdGhTZWNvbmRzKHN0YXJ0
LCAxMDAwKSwgQ01UaW1lTWFrZVdpdGhTZWNvbmRzKGVuZC1zdGFydCwgMTAwMCkpOworICAgICAg
ICBbc2Vla2FibGVSYW5nZXMgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aENNVGltZVJhbmdl
OnJhbmdlXV07CisgICAgfQorCisgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRTZWVrYWJsZVRp
bWVSYW5nZXM6c2Vla2FibGVSYW5nZXMuZ2V0KCldOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCBjYW5QbGF5RmFz
dFJldmVyc2UpCit7CisgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRDYW5TY2FuQmFja3dhcmQ6
Y2FuUGxheUZhc3RSZXZlcnNlXTsKK30KKworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJh
eT4gbWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zKQor
eworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUoKV0pOwor
ICAgIGZvciAoYXV0byYgbmFtZSA6IG9wdGlvbnMpIHsKKyAgICAgICAgUmV0YWluUHRyPFdlYkFW
TWVkaWFTZWxlY3Rpb25PcHRpb24+IHdlYk9wdGlvbiA9IGFkb3B0TlMoW1tXZWJBVk1lZGlhU2Vs
ZWN0aW9uT3B0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFt3ZWJPcHRpb24gc2V0TG9jYWxp
emVkRGlzcGxheU5hbWU6bmFtZV07CisgICAgICAgIFt3ZWJPcHRpb25zIGFkZE9iamVjdDp3ZWJP
cHRpb24uZ2V0KCldOworICAgIH0KKyAgICByZXR1cm4gd2ViT3B0aW9uczsKK30KKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5k
ZXgpCit7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gbWVkaWFT
ZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMpOworICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07CisgICAgaWYgKHNlbGVj
dGVkSW5kZXggPCBbd2ViT3B0aW9ucyBjb3VudF0pCisgICAgICAgIFttX3BsYXllckNvbnRyb2xs
ZXIgc2V0Q3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2JqZWN0
QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOworfQorCit2
b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxl
Y3RlZEluZGV4KQoreworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9
IG1lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zKTsKKyAgICBbbV9wbGF5ZXJDb250cm9sbGVy
IHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07CisgICAg
aWYgKHNlbGVjdGVkSW5kZXggPCBbd2ViT3B0aW9ucyBjb3VudF0pCisgICAgICAgIFttX3BsYXll
ckNvbnRyb2xsZXIgc2V0Q3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjpbd2ViT3B0
aW9ucyBvYmplY3RBdEluZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgp
XV07Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEV4dGVy
bmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJn
ZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKK3sKKyAgICBBVlBsYXllckNvbnRy
b2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZSBleHRlcm5hbFBsYXliYWNrVHlwZSA9IEFWUGxheWVy
Q29udHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBlTm9uZTsKKyAgICBpZiAodGFyZ2V0VHlwZSA9
PSBUYXJnZXRUeXBlQWlyUGxheSkKKyAgICAgICAgZXh0ZXJuYWxQbGF5YmFja1R5cGUgPSBBVlBs
YXllckNvbnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZUFpclBsYXk7CisgICAgZWxzZSBpZiAo
dGFyZ2V0VHlwZSA9PSBUYXJnZXRUeXBlVFZPdXQpCisgICAgICAgIGV4dGVybmFsUGxheWJhY2tU
eXBlID0gQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVUVk91dDsKKworICAg
IFdlYkFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlciA9IG1fcGxheWVyQ29udHJv
bGxlci5nZXQoKTsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tBaXJQbGF5
RGV2aWNlTG9jYWxpemVkTmFtZSA9IGxvY2FsaXplZERldmljZU5hbWU7CisgICAgcGxheWVyQ29u
dHJvbGxlci5leHRlcm5hbFBsYXliYWNrVHlwZSA9IGV4dGVybmFsUGxheWJhY2tUeXBlOworICAg
IHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSA9IGVuYWJsZWQ7CisKKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5leHRlcm5hbFBsYXliYWNrRW5hYmxl
ZENoYW5nZWQoZW5hYmxlZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
QVZLaXQ6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wgZGlzYWJsZWQpCit7
CisgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRBbGxvd3NFeHRlcm5hbFBsYXliYWNrOiFkaXNh
YmxlZF07Cit9CisKK2Jvb2wgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OndpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fcGxheWVy
Q29udHJvbGxlciBhbGxvd3NFeHRlcm5hbFBsYXliYWNrXTsKK30KKwordm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6aW52YWxpZGF0ZSgpCit7CisgICAgbV9wbGF5YmFja1Nl
c3Npb25Nb2RlbCA9IG5pbDsKK30KKworfQorCisjZW5kaWYgLy8gSEFWRShBVktJVCkKKyNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCA5
OWQxYzA3ZWRjN2M5YjllMDJmZGZiYzZmYjdiN2YyMTU2NTkzNWRjLi5iNjljYzEyY2JiZGZhMGFl
ZTM0NzRhZDI3MzYxNzI4OWVkMGRiZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
bW0KQEAgLTMzLDYgKzMzLDggQEAKICNpbXBvcnQgIlF1YXJ0ekNvcmVTUEkuaCIKICNpbXBvcnQg
IlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIgorI2ltcG9ydCAiV2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxNZWRpYUVsZW1lbnQuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9i
c2VydmVyLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIgog
I2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaCIKQEAgLTU1NCwx
NCArNTU2LDE2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNl
dFVwRnVsbHNjcmVlbihIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMsIHZpZXdSZWYsIG1v
ZGVdIHsKICAgICAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAKLSAgICAgICAgbV9pbnRlcmZh
Y2UgPSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y3JlYXRlKCk7CisgICAgICAg
IGF1dG8gcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlID0gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQ6OmNyZWF0ZSgpOworICAgICAgICBtX2ludGVyZmFjZSA9IFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpjcmVhdGUocGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmdldCgp
KTsKICAgICAgICAgbV9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyKHRoaXMpOwogICAgICAgICBtX2ludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWwodGhpcyk7CiAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuVmlldyA9IGFkb3B0TlMoW1tnZXRV
SVZpZXdDbGFzcygpIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIAogICAgICAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CiAgICAg
ICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhpcywgdGhpcywgdmlld1JlZiwgbW9kZV0gewotICAg
ICAgICAgICAgbV9tb2RlbCA9IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojpj
cmVhdGUoKTsKKyAgICAgICAgICAgIGF1dG8gcGxheWJhY2tTZXNzaW9uTW9kZWwgPSBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX21v
ZGVsID0gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZShwbGF5YmFj
a1Nlc3Npb25Nb2RlbC5nZXQoKSk7CiAgICAgICAgICAgICBtX21vZGVsLT5zZXRXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2UodGhpcyk7CiAgICAgICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0Vs
ZW1lbnQobV92aWRlb0VsZW1lbnQuZ2V0KCkpOwogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdC5oCmluZGV4IGMwNzQwMGExODUwOGI0M2EzYjk0MjBlYWRmZWViZThiYjgzOTlh
ZWIuLmNlMWRmMTMzYzFiOWU5ODBiMDUxZTBmNzY0MDM2MTdkN2RjYjM1YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSFRNTE1lZGlh
RWxlbWVudEVudW1zLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCisjaW5jbHVkZSAiV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaCIKICNp
bmNsdWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuaCIKICNpbmNsdWRlIDxmdW5jdGlv
bmFsPgogI2luY2x1ZGUgPG9iamMvb2JqYy5oPgpAQCAtNDAsMTQgKzQxLDE1IEBACiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotT0JKQ19DTEFT
UyBXZWJBVlBsYXllckNvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIEFWUGxheWVyVmlld0NvbnRyb2xs
ZXI7CiBPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFVJV2luZG93Owog
T0JKQ19DTEFTUyBVSVZpZXc7CiBPQkpDX0NMQVNTIENBTGF5ZXI7CitPQkpDX0NMQVNTIFdlYkFW
UGxheWVyQ29udHJvbGxlcjsKIE9CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJMYXllclZpZXc7CiBPQkpD
X0NMQVNTIFdlYkFWUGxheWVyTGF5ZXI7CitPQkpDX0NMQVNTIFdlYkFWUGxheWVyVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZTsKIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBTdHJpbmc7CkBAIC01NSwx
OCArNTcsMTcgQEAgY2xhc3MgU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJ
bnRSZWN0OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ7CiBjbGFzcyBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDsKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9i
c2VydmVyOwogICAgIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQKICAgICA6IHB1YmxpYyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UKKyAg
ICAsIHB1YmxpYyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdENsaWVudAogICAgICwg
cHVibGljIFJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHsKIAog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+
IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpKTsKLSAgICB9CisgICAgc3RhdGljIFJlZjxXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gY3JlYXRlKFdlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0Jik7CiAgICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRX
ZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcihXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlciopOwpAQCAtODMsNyArODQsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0
cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVy
bmFsUGxheWJhY2tUYXJnZXRUeXBlLCBXVEY6OlN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKSBv
dmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkKGJvb2wpIG92ZXJyaWRlOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIHNldHVwRnVsbHNjcmVlbihVSVZpZXcmLCBjb25zdCBJbnRSZWN0JiBpbml0aWFsUmVjdCwg
VUlWaWV3ICosIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9v
bCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2spOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgZXhpdEZ1bGxzY3JlZW4oY29uc3QgSW50UmVjdCYgZmluYWxSZWN0KTsKQEAgLTEwMCw2
ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIFBpY3R1cmVJblBpY3R1cmVTdGFydGVkCiAgICAg
fTsKIAorICAgIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBtb2RlbCgpIGNvbnN0IHsgcmV0dXJu
IG1fdmlkZW9GdWxsc2NyZWVuTW9kZWw7IH0KICAgICBib29sIHNob3VsZEV4aXRGdWxsc2NyZWVu
V2l0aFJlYXNvbihFeGl0RnVsbFNjcmVlblJlYXNvbik7CiAgICAgSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0K
ICAgICBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjaygpIGNvbnN0IHsgcmV0dXJu
IG1fYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrOyB9CkBAIC0xMjEsMTMgKzEyMiwxNiBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc01vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlIG1vZGUpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZSA9PSBtb2RlOyB9CiAKIHBy
b3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdCgpOworICAgIFdFQkNPUkVfRVhQT1JUIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0KFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Jik7CiAgICAgdm9pZCBiZWdpblNl
c3Npb24oKTsKICAgICB2b2lkIGVudGVyUGljdHVyZUluUGljdHVyZSgpOwogICAgIHZvaWQgZW50
ZXJGdWxsc2NyZWVuU3RhbmRhcmQoKTsKICAgICB2b2lkIHdhdGNoZG9nVGltZXJGaXJlZCgpOwor
ICAgIHZvaWQgZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWRDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlOwor
ICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciAqcGxheWVyQ29udHJvbGxlcigpIGNvbnN0OwogCi0g
ICAgUmV0YWluUHRyPFdlYkFWUGxheWVyQ29udHJvbGxlcj4gbV9wbGF5ZXJDb250cm9sbGVyOwor
ICAgIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdD4gbV9wbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2U7CisgICAgUmV0YWluUHRyPFdlYkFWUGxheWVyVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZT4gbV9wbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlOwogICAgIFJldGFpblB0cjxBVlBs
YXllclZpZXdDb250cm9sbGVyPiBtX3BsYXllclZpZXdDb250cm9sbGVyOwogICAgIFdlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsKiBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsIHsgbnVsbHB0ciB9OwogICAg
IFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKiBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNl
cnZlciB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQppbmRleCA2OWRi
ZGY4MTRkODQzODEzODYzOTA1MWUyOGI4OWQwOWJjM2E5M2JlLi4zZDU4ZDhlMzk2NTRhZjkzNDhm
OWM1ZTNjNDk2MmQ4OTBkMzY4MjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBA
IC0zNyw3ICszNyw5IEBACiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBw
bGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKKyNpbXBvcnQgIldlYkFW
UGxheWVyQ29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgor
I2ltcG9ydCAiV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaCIKICNpbXBvcnQgIldl
YlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbC5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWVGltZS5oPgpAQCAtNjEsOSAr
NjMsNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2
aXR5UmVzaXplQXNwZWN0RmlsbCwgTlNTdHJpbmcgKgogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKEFW
S2l0KQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBpY3R1cmVJblBpY3R1cmVDb250cm9sbGVy
KQotU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBsYXllckNvbnRyb2xsZXIpCiBTT0ZUX0xJTktf
Q0xBU1MoQVZLaXQsIEFWUGxheWVyVmlld0NvbnRyb2xsZXIpCi1TT0ZUX0xJTktfQ0xBU1MoQVZL
aXQsIEFWVmFsdWVUaW1pbmcpCiBTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIF9fQVZQbGF5ZXJMYXll
clZpZXcpCiAKIFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCkBAIC0xMjUsMTI2ICsxMjUsMjIg
QEAgc3RhdGljIGNvbnN0IGRvdWJsZSBEZWZhdWx0V2F0Y2hkb2dUaW1lckludGVydmFsID0gMTsK
IAogQGNsYXNzIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb247CiAKLUBpbnRlcmZhY2UgV2ViQVZQ
bGF5ZXJDb250cm9sbGVyIDogTlNPYmplY3QgPEFWUGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZV9XZWJLaXRPbmx5PiB7Ci0gICAgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqX2N1cnJlbnRB
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOwotICAgIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24g
Kl9jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOwotICAgIEJPT0wgX3BpY3R1cmVJ
blBpY3R1cmVJbnRlcnJ1cHRlZDsKK0BpbnRlcmZhY2UgV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxl
ckRlbGVnYXRlIDogTlNPYmplY3QgPEFWUGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZV9XZWJL
aXRPbmx5PiB7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBf
ZnVsbHNjcmVlbkludGVyZmFjZTsKIH0KLQotLSAodm9pZClyZXNldFN0YXRlOwotCi1AcHJvcGVy
dHkgKHJldGFpbikgQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyUHJveHk7Ci1A
cHJvcGVydHkgKGFzc2lnbikgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwqIGRlbGVnYXRlOwogQHBy
b3BlcnR5IChhc3NpZ24pIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KiBmdWxsc2Ny
ZWVuSW50ZXJmYWNlOwotCi1AcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGNhblNjYW5Gb3J3YXJk
OwotQHByb3BlcnR5IEJPT0wgY2FuU2NhbkJhY2t3YXJkOwotQHByb3BlcnR5IChyZWFkb25seSkg
Qk9PTCBjYW5TZWVrVG9CZWdpbm5pbmc7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGNhblNl
ZWtUb0VuZDsKLQotQHByb3BlcnR5IEJPT0wgY2FuUGxheTsKLUBwcm9wZXJ0eSAoZ2V0dGVyPWlz
UGxheWluZykgQk9PTCBwbGF5aW5nOwotQHByb3BlcnR5IEJPT0wgY2FuUGF1c2U7Ci1AcHJvcGVy
dHkgQk9PTCBjYW5Ub2dnbGVQbGF5YmFjazsKLUBwcm9wZXJ0eSBkb3VibGUgcmF0ZTsKLUBwcm9w
ZXJ0eSBCT09MIGNhblNlZWs7Ci1AcHJvcGVydHkgTlNUaW1lSW50ZXJ2YWwgY29udGVudER1cmF0
aW9uOwotQHByb3BlcnR5IE5TU2l6ZSBjb250ZW50RGltZW5zaW9uczsKLUBwcm9wZXJ0eSBCT09M
IGhhc0VuYWJsZWRBdWRpbzsKLUBwcm9wZXJ0eSBCT09MIGhhc0VuYWJsZWRWaWRlbzsKLUBwcm9w
ZXJ0eSBOU1RpbWVJbnRlcnZhbCBtaW5UaW1lOwotQHByb3BlcnR5IE5TVGltZUludGVydmFsIG1h
eFRpbWU7Ci1AcHJvcGVydHkgTlNUaW1lSW50ZXJ2YWwgY29udGVudER1cmF0aW9uV2l0aGluRW5k
VGltZXM7Ci1AcHJvcGVydHkgKHJldGFpbikgTlNBcnJheSAqbG9hZGVkVGltZVJhbmdlczsKLUBw
cm9wZXJ0eSBBVlBsYXllckNvbnRyb2xsZXJTdGF0dXMgc3RhdHVzOwotQHByb3BlcnR5IChyZXRh
aW4pIEFWVmFsdWVUaW1pbmcgKnRpbWluZzsKLUBwcm9wZXJ0eSAocmV0YWluKSBOU0FycmF5ICpz
ZWVrYWJsZVRpbWVSYW5nZXM7Ci0KLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaGFzTWVkaWFT
ZWxlY3Rpb25PcHRpb25zOwotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBoYXNBdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9uczsKLUBwcm9wZXJ0eSAocmV0YWluKSBOU0FycmF5ICphdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9uczsKLUBwcm9wZXJ0eSAocmV0YWluKSBXZWJBVk1lZGlhU2VsZWN0aW9u
T3B0aW9uICpjdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjsKLUBwcm9wZXJ0eSAocmVh
ZG9ubHkpIEJPT0wgaGFzTGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczsKLUBwcm9wZXJ0eSAo
cmV0YWluKSBOU0FycmF5ICpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOwotQHByb3BlcnR5
IChyZXRhaW4pIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKmN1cnJlbnRMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb247Ci0KLUBwcm9wZXJ0eSAocmVhZG9ubHksIGdldHRlcj1pc1BsYXlpbmdP
bkV4dGVybmFsU2NyZWVuKSBCT09MIHBsYXlpbmdPbkV4dGVybmFsU2NyZWVuOwotQHByb3BlcnR5
IChyZWFkb25seSwgZ2V0dGVyPWlzUGxheWluZ09uU2Vjb25kU2NyZWVuKSBCT09MIHBsYXlpbmdP
blNlY29uZFNjcmVlbjsKLUBwcm9wZXJ0eSAoZ2V0dGVyPWlzRXh0ZXJuYWxQbGF5YmFja0FjdGl2
ZSkgQk9PTCBleHRlcm5hbFBsYXliYWNrQWN0aXZlOwotQHByb3BlcnR5IEFWUGxheWVyQ29udHJv
bGxlckV4dGVybmFsUGxheWJhY2tUeXBlIGV4dGVybmFsUGxheWJhY2tUeXBlOwotQHByb3BlcnR5
IChyZXRhaW4pIE5TU3RyaW5nICpleHRlcm5hbFBsYXliYWNrQWlyUGxheURldmljZUxvY2FsaXpl
ZE5hbWU7Ci1AcHJvcGVydHkgQk9PTCBhbGxvd3NFeHRlcm5hbFBsYXliYWNrOwotCiAtIChCT09M
KXBsYXllclZpZXdDb250cm9sbGVyOihBVlBsYXllclZpZXdDb250cm9sbGVyICopcGxheWVyVmll
d0NvbnRyb2xsZXIgc2hvdWxkRXhpdEZ1bGxTY3JlZW5XaXRoUmVhc29uOihBVlBsYXllclZpZXdD
b250cm9sbGVyRXhpdEZ1bGxTY3JlZW5SZWFzb24pcmVhc29uOwogQGVuZAogCi1AaW1wbGVtZW50
YXRpb24gV2ViQVZQbGF5ZXJDb250cm9sbGVyCi0KLS0gKGluc3RhbmNldHlwZSlpbml0Ci17Ci0g
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCi0gICAgICAgIHJldHVybiBzZWxmOwotICAg
IAotICAgIF9waWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQgPSBOTzsKLSAgICBpbml0QVZQbGF5
ZXJDb250cm9sbGVyKCk7Ci0gICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyUHJveHkgPSBbW2FsbG9j
QVZQbGF5ZXJDb250cm9sbGVySW5zdGFuY2UoKSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgcmV0
dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtfcGxheWVyQ29udHJvbGxl
clByb3h5IHJlbGVhc2VdOwotICAgIFtfbG9hZGVkVGltZVJhbmdlcyByZWxlYXNlXTsKLSAgICBb
X3NlZWthYmxlVGltZVJhbmdlcyByZWxlYXNlXTsKLSAgICBbX3RpbWluZyByZWxlYXNlXTsKLSAg
ICBbX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zIHJlbGVhc2VdOwotICAgIFtfbGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9ucyByZWxlYXNlXTsKLSAgICBbX2N1cnJlbnRBdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9uIHJlbGVhc2VdOwotICAgIFtfY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbiByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpcmVz
ZXRTdGF0ZQorQGltcGxlbWVudGF0aW9uIFdlYkFWUGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZQorLSAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQqKWZ1bGxzY3JlZW5JbnRlcmZh
Y2UKIHsKLSAgICBzZWxmLmNvbnRlbnREdXJhdGlvbiA9IDA7Ci0gICAgc2VsZi5tYXhUaW1lID0g
MDsKLSAgICBzZWxmLmNvbnRlbnREdXJhdGlvbldpdGhpbkVuZFRpbWVzID0gMDsKLSAgICBzZWxm
LmxvYWRlZFRpbWVSYW5nZXMgPSBAW107Ci0gICAgCi0gICAgc2VsZi5jYW5QbGF5ID0gTk87Ci0g
ICAgc2VsZi5jYW5QYXVzZSA9IE5POwotICAgIHNlbGYuY2FuVG9nZ2xlUGxheWJhY2sgPSBOTzsK
LSAgICBzZWxmLmhhc0VuYWJsZWRBdWRpbyA9IE5POwotICAgIHNlbGYuY2FuU2VlayA9IE5POwot
ICAgIHNlbGYubWluVGltZSA9IDA7Ci0gICAgc2VsZi5zdGF0dXMgPSBBVlBsYXllckNvbnRyb2xs
ZXJTdGF0dXNVbmtub3duOwotICAgIAotICAgIHNlbGYudGltaW5nID0gbmlsOwotICAgIHNlbGYu
cmF0ZSA9IDA7Ci0gICAgCi0gICAgc2VsZi5oYXNFbmFibGVkVmlkZW8gPSBOTzsKLSAgICBzZWxm
LmNvbnRlbnREaW1lbnNpb25zID0gQ0dTaXplTWFrZSgwLCAwKTsKLSAgICAKLSAgICBzZWxmLnNl
ZWthYmxlVGltZVJhbmdlcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0gICAgCi0gICAgc2Vs
Zi5jYW5TY2FuQmFja3dhcmQgPSBOTzsKLSAgICAKLSAgICBzZWxmLmF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zID0gbmlsOwotICAgIHNlbGYuY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b24gPSBuaWw7Ci0gICAgCi0gICAgc2VsZi5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zID0g
bmlsOwotICAgIHNlbGYuY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsK
LX0KLQotLSAoQVZQbGF5ZXIgKikgcGxheWVyCi17Ci0gICAgcmV0dXJuIG5pbDsKKyAgICByZXR1
cm4gX2Z1bGxzY3JlZW5JbnRlcmZhY2UuZ2V0KCk7CiB9CiAKLS0gKGlkKWZvcndhcmRpbmdUYXJn
ZXRGb3JTZWxlY3RvcjooU0VMKXNlbGVjdG9yCistICh2b2lkKXNldEZ1bGxzY3JlZW5JbnRlcmZh
Y2U6KFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KilmdWxsc2NyZWVuSW50ZXJmYWNl
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNlbGVjdG9yKTsKLSAgICByZXR1cm4gc2VsZi5wbGF5ZXJD
b250cm9sbGVyUHJveHk7CisgICAgX2Z1bGxzY3JlZW5JbnRlcmZhY2UgPSBmdWxsc2NyZWVuSW50
ZXJmYWNlOwogfQogCiAtICh2b2lkKXBsYXllclZpZXdDb250cm9sbGVyV2lsbFN0YXJ0UGljdHVy
ZUluUGljdHVyZTooQVZQbGF5ZXJWaWV3Q29udHJvbGxlciAqKXBsYXllclZpZXdDb250cm9sbGVy
CkBAIC0zMDUsMzU4ICsyMDEsMTIgQEAgLSAodm9pZClwbGF5ZXJWaWV3Q29udHJvbGxlcjooQVZQ
bGF5ZXJWaWV3Q29udHJvbGxlciAqKXBsYXllclZpZXdDb250cm9sbGVyIHJlc3QKICAgICBVTlVT
RURfUEFSQU0ocGxheWVyVmlld0NvbnRyb2xsZXIpOwogICAgIHNlbGYuZnVsbHNjcmVlbkludGVy
ZmFjZS0+cHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVTdG9wV2l0aENvbXBsZXRpb25IYW5kbGVy
KGNvbXBsZXRpb25IYW5kbGVyKTsKIH0KLQotLSAodm9pZClwbGF5OihpZClzZW5kZXIKLXsKLSAg
ICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCi0gICAgICAg
IHJldHVybjsKLSAgICBzZWxmLmRlbGVnYXRlLT5wbGF5KCk7Ci19Ci0KLS0gKHZvaWQpcGF1c2U6
KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIGlmICghc2VsZi5k
ZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNlbGYuZGVsZWdhdGUtPnBhdXNlKCk7Ci19
Ci0KLS0gKHZvaWQpdG9nZ2xlUGxheWJhY2s6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJB
TShzZW5kZXIpOwotICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAg
IHNlbGYuZGVsZWdhdGUtPnRvZ2dsZVBsYXlTdGF0ZSgpOwotfQotCi0tICh2b2lkKXRvZ2dsZVBs
YXliYWNrRXZlbldoZW5JbkJhY2tncm91bmQ6KGlkKXNlbmRlcgotewotICAgIFtzZWxmIHRvZ2ds
ZVBsYXliYWNrOnNlbmRlcl07Ci19Ci0KLS0gKEJPT0wpaXNQbGF5aW5nCi17Ci0gICAgcmV0dXJu
IFtzZWxmIHJhdGVdICE9IDA7Ci19Ci0KLS0gKHZvaWQpc2V0UGxheWluZzooQk9PTClwbGF5aW5n
Ci17Ci0gICAgaWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKHBs
YXlpbmcpCi0gICAgICAgIHNlbGYuZGVsZWdhdGUtPnBsYXkoKTsKLSAgICBlbHNlCi0gICAgICAg
IHNlbGYuZGVsZWdhdGUtPnBhdXNlKCk7Ci19Ci0KLSsgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1
ZXNBZmZlY3RpbmdQbGF5aW5nCi17Ci0gICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAi
cmF0ZSJdOwotfQotCi0tICh2b2lkKWJlZ2luU2NydWJiaW5nOihpZClzZW5kZXIKLXsKLSAgICBV
TlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCi0gICAgICAgIHJl
dHVybjsKLSAgICBzZWxmLmRlbGVnYXRlLT5iZWdpblNjcnViYmluZygpOwotfQotCi0tICh2b2lk
KWVuZFNjcnViYmluZzooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0g
ICAgaWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgc2VsZi5kZWxlZ2F0
ZS0+ZW5kU2NydWJiaW5nKCk7Ci19Ci0KLS0gKHZvaWQpc2Vla1RvVGltZTooTlNUaW1lSW50ZXJ2
YWwpdGltZQotewotICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAg
IHNlbGYuZGVsZWdhdGUtPmZhc3RTZWVrKHRpbWUpOwotfQotCi0tIChOU1RpbWVJbnRlcnZhbClj
dXJyZW50VGltZVdpdGhpbkVuZFRpbWVzCi17Ci0gICAgcmV0dXJuIHNlbGYudGltaW5nLmN1cnJl
bnRWYWx1ZTsKLX0KLQotLSAodm9pZClzZXRDdXJyZW50VGltZVdpdGhpbkVuZFRpbWVzOihOU1Rp
bWVJbnRlcnZhbCljdXJyZW50VGltZVdpdGhpbkVuZFRpbWVzCi17Ci0gICAgW3NlbGYgc2Vla1Rv
VGltZTpjdXJyZW50VGltZVdpdGhpbkVuZFRpbWVzXTsKLX0KLQotKyAoTlNTZXQgKilrZXlQYXRo
c0ZvclZhbHVlc0FmZmVjdGluZ0N1cnJlbnRUaW1lV2l0aGluRW5kVGltZXMKLXsKLSAgICByZXR1
cm4gW05TU2V0IHNldFdpdGhPYmplY3Q6QCJ0aW1pbmciXTsKLX0KLQotLSAoQk9PTCloYXNMaXZl
U3RyZWFtaW5nQ29udGVudAotewotICAgIGlmIChbc2VsZiBzdGF0dXNdID09IEFWUGxheWVyQ29u
dHJvbGxlclN0YXR1c1JlYWR5VG9QbGF5KQotICAgICAgICByZXR1cm4gW3NlbGYgY29udGVudER1
cmF0aW9uXSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKLSAgICBy
ZXR1cm4gTk87Ci19Ci0KLSsgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdIYXNM
aXZlU3RyZWFtaW5nQ29udGVudAotewotICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdHM6
QCJjb250ZW50RHVyYXRpb24iLCBAInN0YXR1cyIsIG5pbF07Ci19Ci0KLS0gKHZvaWQpc2tpcEJh
Y2t3YXJkVGhpcnR5U2Vjb25kczooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRl
cik7Ci0gICAgQk9PTCBpc1RpbWVXaXRoaW5TZWVrYWJsZVRpbWVSYW5nZXMgPSBOTzsKLSAgICBD
TVRpbWUgY3VycmVudFRpbWUgPSBDTVRpbWVNYWtlV2l0aFNlY29uZHMoW1tzZWxmIHRpbWluZ10g
Y3VycmVudFZhbHVlXSwgMTAwMCk7Ci0gICAgQ01UaW1lIHRoaXJ0eVNlY29uZHNCZWZvcmVDdXJy
ZW50VGltZSA9IENNVGltZVN1YnRyYWN0KGN1cnJlbnRUaW1lLCBDTVRpbWVNYWtlKDMwLCAxKSk7
Ci0gICAgCi0gICAgZm9yIChOU1ZhbHVlICpzZWVrYWJsZVRpbWVSYW5nZVZhbHVlIGluIFtzZWxm
IHNlZWthYmxlVGltZVJhbmdlc10pIHsKLSAgICAgICAgaWYgKENNVGltZVJhbmdlQ29udGFpbnNU
aW1lKFtzZWVrYWJsZVRpbWVSYW5nZVZhbHVlIENNVGltZVJhbmdlVmFsdWVdLCB0aGlydHlTZWNv
bmRzQmVmb3JlQ3VycmVudFRpbWUpKSB7Ci0gICAgICAgICAgICBpc1RpbWVXaXRoaW5TZWVrYWJs
ZVRpbWVSYW5nZXMgPSBZRVM7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0K
LSAgICAKLSAgICBpZiAoaXNUaW1lV2l0aGluU2Vla2FibGVUaW1lUmFuZ2VzKQotICAgICAgICBb
c2VsZiBzZWVrVG9UaW1lOkNNVGltZUdldFNlY29uZHModGhpcnR5U2Vjb25kc0JlZm9yZUN1cnJl
bnRUaW1lKV07Ci19Ci0KLS0gKHZvaWQpZ290b0VuZE9mU2Vla2FibGVSYW5nZXM6KGlkKXNlbmRl
cgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIE5TVGltZUludGVydmFsIHRpbWVB
dEVuZE9mU2Vla2FibGVUaW1lUmFuZ2VzID0gTkFOOwotICAgIAotICAgIGZvciAoTlNWYWx1ZSAq
c2Vla2FibGVUaW1lUmFuZ2VWYWx1ZSBpbiBbc2VsZiBzZWVrYWJsZVRpbWVSYW5nZXNdKSB7Ci0g
ICAgICAgIENNVGltZVJhbmdlIHNlZWthYmxlVGltZVJhbmdlID0gW3NlZWthYmxlVGltZVJhbmdl
VmFsdWUgQ01UaW1lUmFuZ2VWYWx1ZV07Ci0gICAgICAgIE5TVGltZUludGVydmFsIGVuZE9mU2Vl
a2FibGVUaW1lUmFuZ2UgPSBDTVRpbWVHZXRTZWNvbmRzKENNVGltZVJhbmdlR2V0RW5kKHNlZWth
YmxlVGltZVJhbmdlKSk7Ci0gICAgICAgIGlmIChpc25hbih0aW1lQXRFbmRPZlNlZWthYmxlVGlt
ZVJhbmdlcykgfHwgZW5kT2ZTZWVrYWJsZVRpbWVSYW5nZSA+IHRpbWVBdEVuZE9mU2Vla2FibGVU
aW1lUmFuZ2VzKQotICAgICAgICAgICAgdGltZUF0RW5kT2ZTZWVrYWJsZVRpbWVSYW5nZXMgPSBl
bmRPZlNlZWthYmxlVGltZVJhbmdlOwotICAgIH0KLSAgICAKLSAgICBpZiAoIWlzbmFuKHRpbWVB
dEVuZE9mU2Vla2FibGVUaW1lUmFuZ2VzKSkKLSAgICAgICAgW3NlbGYgc2Vla1RvVGltZTp0aW1l
QXRFbmRPZlNlZWthYmxlVGltZVJhbmdlc107Ci19Ci0KLS0gKEJPT0wpY2FuU2NhbkZvcndhcmQK
LXsKLSAgICByZXR1cm4gW3NlbGYgY2FuUGxheV07Ci19Ci0KLSsgKE5TU2V0ICopa2V5UGF0aHNG
b3JWYWx1ZXNBZmZlY3RpbmdDYW5TY2FuRm9yd2FyZAotewotICAgIHJldHVybiBbTlNTZXQgc2V0
V2l0aE9iamVjdDpAImNhblBsYXkiXTsKLX0KLQotLSAodm9pZCliZWdpblNjYW5uaW5nRm9yd2Fy
ZDooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgaWYgKCFzZWxm
LmRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgc2VsZi5kZWxlZ2F0ZS0+YmVnaW5TY2Fu
bmluZ0ZvcndhcmQoKTsKLX0KLQotLSAodm9pZCllbmRTY2FubmluZ0ZvcndhcmQ6KGlkKXNlbmRl
cgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkK
LSAgICAgICAgcmV0dXJuOwotICAgIHNlbGYuZGVsZWdhdGUtPmVuZFNjYW5uaW5nKCk7Ci19Ci0K
LS0gKHZvaWQpYmVnaW5TY2FubmluZ0JhY2t3YXJkOihpZClzZW5kZXIKLXsKLSAgICBVTlVTRURf
UEFSQU0oc2VuZGVyKTsKLSAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsK
LSAgICBzZWxmLmRlbGVnYXRlLT5iZWdpblNjYW5uaW5nQmFja3dhcmQoKTsKLX0KLQotLSAodm9p
ZCllbmRTY2FubmluZ0JhY2t3YXJkOihpZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2Vu
ZGVyKTsKLSAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBzZWxm
LmRlbGVnYXRlLT5lbmRTY2FubmluZygpOwotfQotCi0tIChCT09MKWNhblNlZWtUb0JlZ2lubmlu
ZwotewotICAgIENNVGltZSBtaW5pbXVtVGltZSA9IGtDTVRpbWVJbmRlZmluaXRlOwotCi0gICAg
Zm9yIChOU1ZhbHVlICp2YWx1ZSBpbiBbc2VsZiBzZWVrYWJsZVRpbWVSYW5nZXNdKQotICAgICAg
ICBtaW5pbXVtVGltZSA9IENNVGltZU1pbmltdW0oW3ZhbHVlIENNVGltZVJhbmdlVmFsdWVdLnN0
YXJ0LCBtaW5pbXVtVGltZSk7Ci0KLSAgICByZXR1cm4gQ01USU1FX0lTX05VTUVSSUMobWluaW11
bVRpbWUpOwotfQotCi0rIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nQ2FuU2Vl
a1RvQmVnaW5uaW5nCi17Ci0gICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAic2Vla2Fi
bGVUaW1lUmFuZ2VzIl07Ci19Ci0KLS0gKHZvaWQpc2Vla1RvQmVnaW5uaW5nOihpZClzZW5kZXIK
LXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCi0g
ICAgICAgIHJldHVybjsKLSAgICBzZWxmLmRlbGVnYXRlLT5zZWVrVG9UaW1lKC1JTkZJTklUWSk7
Ci19Ci0KLS0gKHZvaWQpc2Vla0NoYXB0ZXJCYWNrd2FyZDooaWQpc2VuZGVyCi17Ci0gICAgW3Nl
bGYgc2Vla1RvQmVnaW5uaW5nOnNlbmRlcl07Ci19Ci0KLS0gKEJPT0wpY2FuU2Vla1RvRW5kCi17
Ci0gICAgQ01UaW1lIG1heGltdW1UaW1lID0ga0NNVGltZUluZGVmaW5pdGU7Ci0KLSAgICBmb3Ig
KE5TVmFsdWUgKnZhbHVlIGluIFtzZWxmIHNlZWthYmxlVGltZVJhbmdlc10pCi0gICAgICAgIG1h
eGltdW1UaW1lID0gQ01UaW1lTWF4aW11bShDTVRpbWVSYW5nZUdldEVuZChbdmFsdWUgQ01UaW1l
UmFuZ2VWYWx1ZV0pLCBtYXhpbXVtVGltZSk7Ci0KLSAgICByZXR1cm4gQ01USU1FX0lTX05VTUVS
SUMobWF4aW11bVRpbWUpOwotfQotCi0rIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0
aW5nQ2FuU2Vla1RvRW5kCi17Ci0gICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAic2Vl
a2FibGVUaW1lUmFuZ2VzIl07Ci19Ci0KLS0gKHZvaWQpc2Vla1RvRW5kOihpZClzZW5kZXIKLXsK
LSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCi0gICAg
ICAgIHJldHVybjsKLSAgICBzZWxmLmRlbGVnYXRlLT5zZWVrVG9UaW1lKElORklOSVRZKTsKLX0K
LQotLSAodm9pZClzZWVrQ2hhcHRlckZvcndhcmQ6KGlkKXNlbmRlcgotewotICAgIFtzZWxmIHNl
ZWtUb0VuZDpzZW5kZXJdOwotfQotCi0tIChCT09MKWhhc01lZGlhU2VsZWN0aW9uT3B0aW9ucwot
ewotICAgIHJldHVybiBbc2VsZiBoYXNBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc10gfHwgW3Nl
bGYgaGFzTGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc107Ci19Ci0KLSsgKE5TU2V0ICopa2V5
UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdIYXNNZWRpYVNlbGVjdGlvbk9wdGlvbnMKLXsKLSAgICBy
ZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3RzOkAiaGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bnMiLCBAImhhc0xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMiLCBuaWxdOwotfQotCi0tIChC
T09MKWhhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zCi17Ci0gICAgcmV0dXJuIFtbc2VsZiBh
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc10gY291bnRdID4gMTsKLX0KLQotKyAoTlNTZXQgKilr
ZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ0hhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zCi17
Ci0gICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAiYXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnMiXTsKLX0KLQotLSAoQk9PTCloYXNMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zCi17
Ci0gICAgY29uc3QgTlNVSW50ZWdlciBudW1EZWZhdWx0TGVnaWJsZU9wdGlvbnMgPSAyOwotICAg
IHJldHVybiBbW3NlbGYgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc10gY291bnRdID4gbnVt
RGVmYXVsdExlZ2libGVPcHRpb25zOwotfQotCi0rIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVz
QWZmZWN0aW5nSGFzTGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucwotewotICAgIHJldHVybiBb
TlNTZXQgc2V0V2l0aE9iamVjdDpAImxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMiXTsKLX0K
LQotLSAoV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRBdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9uCi17Ci0gICAgcmV0dXJuIF9jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bjsKLX0KLQotLSAodm9pZClzZXRDdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjooV2Vi
QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKW9wdGlvbgotewotICAgIGlmIChvcHRpb24gPT0gX2N1
cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgW19jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbiByZWxlYXNlXTsKLSAgICBfY3Vy
cmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24gPSBbb3B0aW9uIHJldGFpbl07Ci0gICAgCi0g
ICAgaWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgTlNJbnRl
Z2VyIGluZGV4ID0gTlNOb3RGb3VuZDsKLSAgICAKLSAgICBpZiAob3B0aW9uICYmIHNlbGYuYXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpCi0gICAgICAgIGluZGV4ID0gW3NlbGYuYXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnMgaW5kZXhPZk9iamVjdDpvcHRpb25dOwotICAgIAotICAgIHNlbGYu
ZGVsZWdhdGUtPnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oaW5kZXggIT0gTlNOb3RGb3VuZCA/IGlu
ZGV4IDogVUlOVDY0X01BWCk7Ci19Ci0KLS0gKFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKilj
dXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uCi17Ci0gICAgcmV0dXJuIF9jdXJyZW50
TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOwotfQotCi0tICh2b2lkKXNldEN1cnJlbnRMZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb246KFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKilvcHRp
b24KLXsKLSAgICBpZiAob3B0aW9uID09IF9jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgW19jdXJyZW50TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9uIHJlbGVhc2VdOwotICAgIF9jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9uID0gW29wdGlvbiByZXRhaW5dOwotICAgIAotICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkK
LSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIE5TSW50ZWdlciBpbmRleCA9IE5TTm90Rm91bmQ7
Ci0gICAgCi0gICAgaWYgKG9wdGlvbiAmJiBzZWxmLmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
bnMpCi0gICAgICAgIGluZGV4ID0gW3NlbGYubGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyBp
bmRleE9mT2JqZWN0Om9wdGlvbl07Ci0gICAgCi0gICAgc2VsZi5kZWxlZ2F0ZS0+c2VsZWN0TGVn
aWJsZU1lZGlhT3B0aW9uKGluZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgp
OwotfQotCi0tIChCT09MKWlzUGxheWluZ09uRXh0ZXJuYWxTY3JlZW4KLXsKLSAgICByZXR1cm4g
W3NlbGYgaXNFeHRlcm5hbFBsYXliYWNrQWN0aXZlXSB8fCBbc2VsZiBpc1BsYXlpbmdPblNlY29u
ZFNjcmVlbl07Ci19Ci0KLSsgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdQbGF5
aW5nT25FeHRlcm5hbFNjcmVlbgotewotICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdHM6
QCJleHRlcm5hbFBsYXliYWNrQWN0aXZlIiwgQCJwbGF5aW5nT25TZWNvbmRTY3JlZW4iLCBuaWxd
OwotfQotCi0tIChCT09MKWlzUGljdHVyZUluUGljdHVyZVBvc3NpYmxlCi17Ci0gICAgcmV0dXJu
IHNlbGYuZnVsbHNjcmVlbkludGVyZmFjZS0+YWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNr
KCk7Ci19Ci0KLS0gKEJPT0wpaXNQaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQKLXsKLSAgICBy
ZXR1cm4gX3BpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZDsKLX0KLQotLSAodm9pZClzZXRQaWN0
dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ6KEJPT0wpcGljdHVyZUluUGljdHVyZUludGVycnVwdGVk
Ci17Ci0gICAgaWYgKF9waWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQgIT0gcGljdHVyZUluUGlj
dHVyZUludGVycnVwdGVkKSB7Ci0gICAgICAgIF9waWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQg
PSBwaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ7Ci0gICAgICAgIGlmIChwaWN0dXJlSW5QaWN0
dXJlSW50ZXJydXB0ZWQpCi0gICAgICAgICAgICBbc2VsZiBzZXRQbGF5aW5nOk5PXTsKLSAgICB9
Ci19Ci0KLUBlbmQKLQotQGludGVyZmFjZSBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uIDogTlNP
YmplY3QKLUBwcm9wZXJ0eSAocmV0YWluKSBOU1N0cmluZyAqbG9jYWxpemVkRGlzcGxheU5hbWU7
Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uCiBAZW5k
CiAKIEBpbnRlcmZhY2UgV2ViQVZQbGF5ZXJMYXllciA6IENBTGF5ZXIKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZXRhaW4pIE5TU3RyaW5nICp2aWRlb0dyYXZpdHk7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgZ2V0dGVyPWlzUmVhZHlGb3JEaXNwbGF5KSBCT09MIHJlYWR5Rm9yRGlzcGxheTsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0KiBmdWxsc2NyZWVuSW50ZXJmYWNlOwogQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikg
QVZQbGF5ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHJldGFpbikgQ0FMYXllciAqdmlkZW9TdWJsYXllcjsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5LCBudWxsYWJsZSkgTlNEaWN0aW9uYXJ5ICpwaXhlbEJ1ZmZlckF0dHJpYnV0ZXM7CkBA
IC02NjUsNiArMjE1LDcgQEAgQHByb3BlcnR5IENHUmVjdCBtb2RlbFZpZGVvTGF5ZXJGcmFtZTsK
IEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkFWUGxheWVyTGF5ZXIgeworICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gX2Z1bGxzY3JlZW5JbnRlcmZhY2U7CiAg
ICAgUmV0YWluUHRyPFdlYkFWUGxheWVyQ29udHJvbGxlcj4gX2F2UGxheWVyQ29udHJvbGxlcjsK
ICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gX3ZpZGVvU3VibGF5ZXI7CiAgICAgUmV0YWluUHRyPE5T
U3RyaW5nPiBfdmlkZW9HcmF2aXR5OwpAQCAtNjg2LDYgKzIzNywxNiBAQCAtICh2b2lkKWRlYWxs
b2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKKy0gKFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0KilmdWxsc2NyZWVuSW50ZXJmYWNlCit7CisgICAgcmV0dXJuIF9mdWxsc2NyZWVu
SW50ZXJmYWNlLmdldCgpOworfQorCistICh2b2lkKXNldEZ1bGxzY3JlZW5JbnRlcmZhY2U6KFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KilmdWxsc2NyZWVuSW50ZXJmYWNlCit7Cisg
ICAgX2Z1bGxzY3JlZW5JbnRlcmZhY2UgPSBmdWxsc2NyZWVuSW50ZXJmYWNlOworfQorCiAtIChB
VlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9sbGVyCiB7CiAgICAgcmV0dXJuIChBVlBs
YXllckNvbnRyb2xsZXIgKilfYXZQbGF5ZXJDb250cm9sbGVyLmdldCgpOwpAQCAtNzMzLDcgKzI5
NCw3IEBAIC0gKHZvaWQpbGF5b3V0U3VibGF5ZXJzCiAgICAgfSBlbHNlIGlmIChbZ2V0QVZMYXll
clZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwoKSBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRl
b0dyYXZpdHldKSB7CiAgICAgICAgIHNvdXJjZVZpZGVvRnJhbWUgPSBzbWFsbGVzdFJlY3RXaXRo
QXNwZWN0UmF0aW9Bcm91bmRSZWN0KHZpZGVvQXNwZWN0UmF0aW8sIHNlbGYubW9kZWxWaWRlb0xh
eWVyRnJhbWUpOwogICAgICAgICBzZWxmLm1vZGVsVmlkZW9MYXllckZyYW1lID0gQ0dSZWN0TWFr
ZSgwLCAwLCBzb3VyY2VWaWRlb0ZyYW1lLndpZHRoKCksIHNvdXJjZVZpZGVvRnJhbWUuaGVpZ2h0
KCkpOwotICAgICAgICBbX2F2UGxheWVyQ29udHJvbGxlciBkZWxlZ2F0ZV0tPnNldFZpZGVvTGF5
ZXJGcmFtZShzZWxmLm1vZGVsVmlkZW9MYXllckZyYW1lKTsKKyAgICAgICAgX2Z1bGxzY3JlZW5J
bnRlcmZhY2UtPm1vZGVsKCktPnNldFZpZGVvTGF5ZXJGcmFtZShzZWxmLm1vZGVsVmlkZW9MYXll
ckZyYW1lKTsKICAgICAgICAgdGFyZ2V0VmlkZW9GcmFtZSA9IHNtYWxsZXN0UmVjdFdpdGhBc3Bl
Y3RSYXRpb0Fyb3VuZFJlY3QodmlkZW9Bc3BlY3RSYXRpbywgc2VsZi5ib3VuZHMpOwogICAgIH0g
ZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTc2NSw3ICszMjYsNyBAQCAt
ICh2b2lkKXJlc29sdmVCb3VuZHMKICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9u
czpZRVNdOwogICAgIAogICAgIHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUgPSBbc2VsZiBib3Vu
ZHNdOwotICAgIFtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXS0+c2V0VmlkZW9MYXllckZy
YW1lKHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUpOworICAgIF9mdWxsc2NyZWVuSW50ZXJmYWNl
LT5tb2RlbCgpLT5zZXRWaWRlb0xheWVyRnJhbWUoc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSk7
CiAgICAgWyhVSVZpZXcgKilbX3ZpZGVvU3VibGF5ZXIgZGVsZWdhdGVdIHNldFRyYW5zZm9ybTpD
R0FmZmluZVRyYW5zZm9ybUlkZW50aXR5XTsKICAgICAKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21t
aXRdOwpAQCAtNzg4LDcgKzM0OSw3IEBAIC0gKHZvaWQpc2V0VmlkZW9HcmF2aXR5OihOU1N0cmlu
ZyAqKXZpZGVvR3Jhdml0eQogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgCi0gICAgW19hdlBsYXllckNvbnRyb2xsZXIgZGVsZWdhdGVdLT5zZXRWaWRlb0xheWVy
R3Jhdml0eShncmF2aXR5KTsKKyAgICBfZnVsbHNjcmVlbkludGVyZmFjZS0+bW9kZWwoKS0+c2V0
VmlkZW9MYXllckdyYXZpdHkoZ3Jhdml0eSk7CiB9CiAKIC0gKE5TU3RyaW5nICopdmlkZW9HcmF2
aXR5CkBAIC05NTQsMzUgKzUxNSw0MCBAQCBzdGF0aWMgQ2xhc3MgZ2V0V2ViQVZQbGF5ZXJMYXll
clZpZXdDbGFzcygpCiAgICAgcmV0dXJuIHRoZUNsYXNzOwogfQogCi1XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQotICAg
IDogbV9wbGF5ZXJDb250cm9sbGVyKGFkb3B0TlMoW1tXZWJBVlBsYXllckNvbnRyb2xsZXIgYWxs
b2NdIGluaXRdKSkKK1JlZjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNyZWF0ZShXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdCYgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQoreworICAgIFJlZjxXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gaW50ZXJmYWNlID0gYWRvcHRSZWYoKm5ldyBXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdChwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpKTsK
KyAgICBbaW50ZXJmYWNlLT5tX3BsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUgc2V0RnVsbHNj
cmVlbkludGVyZmFjZTppbnRlcmZhY2UucHRyKCldOworICAgIHJldHVybiBpbnRlcmZhY2U7Cit9
CisKK1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdChXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCYgcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlKQorICAgIDogbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UocGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlKQorICAgICwgbV9wbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRl
KGFkb3B0TlMoW1tXZWJBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUgYWxsb2NdIGluaXRd
KSkKICAgICAsIG1fd2F0Y2hkb2dUaW1lcigqdGhpcywgJldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0Ojp3YXRjaGRvZ1RpbWVyRmlyZWQpCiB7Ci0gICAgW21fcGxheWVyQ29udHJvbGxl
ciBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOnRoaXNdOwogfQogCiBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6fldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KCkKIHsKLSAg
ICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSBtX3BsYXllckNvbnRy
b2xsZXIuZ2V0KCk7CisgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVy
ID0gdGhpcy0+cGxheWVyQ29udHJvbGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYm
IHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSkKICAgICAgICAgc2V0RXh0
ZXJuYWxQbGF5YmFjayhmYWxzZSwgVGFyZ2V0VHlwZU5vbmUsICIiKTsKIH0KIAorV2ViQVZQbGF5
ZXJDb250cm9sbGVyICpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cGxheWVyQ29u
dHJvbGxlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
LT5wbGF5ZXJDb250cm9sbGVyKCk7Cit9CisKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OnJlc2V0TWVkaWFTdGF0ZSgpCiB7Ci0gICAgaWYgKCFtX3BsYXllckNvbnRyb2xs
ZXIpIHsKLSAgICAgICAgbV9wbGF5ZXJDb250cm9sbGVyID0gYWRvcHROUyhbW1dlYkFWUGxheWVy
Q29udHJvbGxlciBhbGxvY10gaW5pdF0pOwotICAgICAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNl
dERlbGVnYXRlOm1fdmlkZW9GdWxsc2NyZWVuTW9kZWxdOwotICAgICAgICBbbV9wbGF5ZXJDb250
cm9sbGVyIHNldEZ1bGxzY3JlZW5JbnRlcmZhY2U6dGhpc107Ci0gICAgICAgIAotICAgIH0gZWxz
ZQotICAgICAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHJlc2V0U3RhdGVdOworICAgIG1fcGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlLT5yZXNldE1lZGlhU3RhdGUoKTsKIH0KIAogdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWwqIG1vZGVsKQogewogICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9k
ZWwgPSBtb2RlbDsKLSAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldERlbGVnYXRlOm1fdmlkZW9G
dWxsc2NyZWVuTW9kZWxdOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcihXZWJWaWRlb0Z1bGxzY3Jl
ZW5DaGFuZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCkBAIC05OTIsNDcgKzU1OCwyMiBAQCB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlcihXZWJWaQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCiB7Ci0gICAgV2ViQVZQbGF5ZXJDb250cm9s
bGVyKiBwbGF5ZXJDb250cm9sbGVyID0gbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpOwotCi0gICAg
Ly8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcwMTcg
dXNlIGNvcnJlY3QgdmFsdWVzIGluc3RlYWQgb2YgZHVyYXRpb24gZm9yIGFsbCB0aGVzZQotICAg
IHBsYXllckNvbnRyb2xsZXIuY29udGVudER1cmF0aW9uID0gZHVyYXRpb247Ci0gICAgcGxheWVy
Q29udHJvbGxlci5tYXhUaW1lID0gZHVyYXRpb247Ci0gICAgcGxheWVyQ29udHJvbGxlci5jb250
ZW50RHVyYXRpb25XaXRoaW5FbmRUaW1lcyA9IGR1cmF0aW9uOwotCi0gICAgLy8gRklYTUU6IHdl
IHRha2UgdGhpcyBhcyBhbiBpbmRpY2F0aW9uIHRoYXQgcGxheWJhY2sgaXMgcmVhZHkuCi0gICAg
cGxheWVyQ29udHJvbGxlci5jYW5QbGF5ID0gWUVTOwotICAgIHBsYXllckNvbnRyb2xsZXIuY2Fu
UGF1c2UgPSBZRVM7Ci0gICAgcGxheWVyQ29udHJvbGxlci5jYW5Ub2dnbGVQbGF5YmFjayA9IFlF
UzsKLSAgICBwbGF5ZXJDb250cm9sbGVyLmhhc0VuYWJsZWRBdWRpbyA9IFlFUzsKLSAgICBwbGF5
ZXJDb250cm9sbGVyLmNhblNlZWsgPSBZRVM7Ci0gICAgcGxheWVyQ29udHJvbGxlci5taW5UaW1l
ID0gMDsKLSAgICBwbGF5ZXJDb250cm9sbGVyLnN0YXR1cyA9IEFWUGxheWVyQ29udHJvbGxlclN0
YXR1c1JlYWR5VG9QbGF5OworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXREdXJh
dGlvbihkdXJhdGlvbik7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OnNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUp
CiB7Ci0gICAgTlNUaW1lSW50ZXJ2YWwgYW5jaG9yVGltZVN0YW1wID0gIVttX3BsYXllckNvbnRy
b2xsZXIgcmF0ZV0gPyBOQU4gOiBhbmNob3JUaW1lOwotICAgIEFWVmFsdWVUaW1pbmcgKnRpbWlu
ZyA9IFtnZXRBVlZhbHVlVGltaW5nQ2xhc3MoKSB2YWx1ZVRpbWluZ1dpdGhBbmNob3JWYWx1ZTpj
dXJyZW50VGltZQotICAgICAgICBhbmNob3JUaW1lU3RhbXA6YW5jaG9yVGltZVN0YW1wIHJhdGU6
MF07Ci0gICAgCi0gICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRUaW1pbmc6dGltaW5nXTsKKyAg
ICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0Q3VycmVudFRpbWUoY3VycmVudFRpbWUs
IGFuY2hvclRpbWUpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpzZXRCdWZmZXJlZFRpbWUoZG91YmxlIGJ1ZmZlcmVkVGltZSkKIHsKLSAgICBXZWJBVlBsYXll
ckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7
Ci0gICAgZG91YmxlIGR1cmF0aW9uID0gcGxheWVyQ29udHJvbGxlci5jb250ZW50RHVyYXRpb247
Ci0gICAgZG91YmxlIG5vcm1hbGl6ZWRCdWZmZXJlZFRpbWU7Ci0gICAgaWYgKCFkdXJhdGlvbikK
LSAgICAgICAgbm9ybWFsaXplZEJ1ZmZlcmVkVGltZSA9IDA7Ci0gICAgZWxzZQotICAgICAgICBu
b3JtYWxpemVkQnVmZmVyZWRUaW1lID0gYnVmZmVyZWRUaW1lIC8gZHVyYXRpb247Ci0gICAgcGxh
eWVyQ29udHJvbGxlci5sb2FkZWRUaW1lUmFuZ2VzID0gQFtAMCwgQChub3JtYWxpemVkQnVmZmVy
ZWRUaW1lKV07CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEJ1ZmZlcmVkVGlt
ZShidWZmZXJlZFRpbWUpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCiB7Ci0gICAg
W21fcGxheWVyQ29udHJvbGxlciBzZXRSYXRlOmlzUGxheWluZyA/IHBsYXliYWNrUmF0ZSA6IDAu
XTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0UmF0ZShpc1BsYXlpbmcsIHBs
YXliYWNrUmF0ZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6
OnNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVp
Z2h0KQpAQCAtMTA0MCw4ICs1ODEsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgdwogICAgIFdl
YkFWUGxheWVyTGF5ZXIgKnBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbbV9wbGF5
ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJdOwogCiAgICAgW3BsYXllckxheWVyIHNldFZpZGVvRGlt
ZW5zaW9uczpDR1NpemVNYWtlKHdpZHRoLCBoZWlnaHQpXTsKLSAgICBbbV9wbGF5ZXJDb250cm9s
bGVyIHNldEhhc0VuYWJsZWRWaWRlbzpoYXNWaWRlb107Ci0gICAgW21fcGxheWVyQ29udHJvbGxl
ciBzZXRDb250ZW50RGltZW5zaW9uczpDR1NpemVNYWtlKHdpZHRoLCBoZWlnaHQpXTsKKyAgICBb
cGxheWVyQ29udHJvbGxlcigpIHNldEhhc0VuYWJsZWRWaWRlbzpoYXNWaWRlb107CisgICAgW3Bs
YXllckNvbnRyb2xsZXIoKSBzZXRDb250ZW50RGltZW5zaW9uczpDR1NpemVNYWtlKHdpZHRoLCBo
ZWlnaHQpXTsKICAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0TmVlZHNMYXlvdXRdOwogCiAgICAg
V2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3ICpwaXBWaWV3ID0gKFdlYkFWUGlj
dHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqKVttX3BsYXllckxheWVyVmlldyBwaWN0dXJl
SW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3XTsKQEAgLTEwNTIsNzUgKzU5Myw0MiBAQCB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBo
YXNWaWRlbywgZmxvYXQgdwogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQogewotICAg
IFJldGFpblB0cjxOU011dGFibGVBcnJheT4gc2Vla2FibGVSYW5nZXMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNv
ZGU7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGltZVJhbmdlcy5sZW5ndGgoKTsg
aSsrKSB7Ci0gICAgICAgIGRvdWJsZSBzdGFydCA9IHRpbWVSYW5nZXMuc3RhcnQoaSwgZXhjZXB0
aW9uQ29kZSk7Ci0gICAgICAgIGRvdWJsZSBlbmQgPSB0aW1lUmFuZ2VzLmVuZChpLCBleGNlcHRp
b25Db2RlKTsKLSAgICAgICAgCi0gICAgICAgIENNVGltZVJhbmdlIHJhbmdlID0gQ01UaW1lUmFu
Z2VNYWtlKENNVGltZU1ha2VXaXRoU2Vjb25kcyhzdGFydCwgMTAwMCksIENNVGltZU1ha2VXaXRo
U2Vjb25kcyhlbmQtc3RhcnQsIDEwMDApKTsKLSAgICAgICAgW3NlZWthYmxlUmFuZ2VzIGFkZE9i
amVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWVSYW5nZTpyYW5nZV1dOwotICAgIH0KLSAgICAK
LSAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldFNlZWthYmxlVGltZVJhbmdlczpzZWVrYWJsZVJh
bmdlcy5nZXQoKV07CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldFNlZWthYmxl
UmFuZ2VzKHRpbWVSYW5nZXMpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UpCiB7
Ci0gICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRDYW5TY2FuQmFja3dhcmQ6Y2FuUGxheUZhc3RS
ZXZlcnNlXTsKLX0KLQotc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbWVkaWFTZWxl
Y3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zKQotewotICAgIFJldGFp
blB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUoKV0pOwotICAgIGZvciAoYXV0
byYgbmFtZSA6IG9wdGlvbnMpIHsKLSAgICAgICAgUmV0YWluUHRyPFdlYkFWTWVkaWFTZWxlY3Rp
b25PcHRpb24+IHdlYk9wdGlvbiA9IGFkb3B0TlMoW1tXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9u
IGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIFt3ZWJPcHRpb24gc2V0TG9jYWxpemVkRGlzcGxheU5h
bWU6bmFtZV07Ci0gICAgICAgIFt3ZWJPcHRpb25zIGFkZE9iamVjdDp3ZWJPcHRpb24uZ2V0KCld
OwotICAgIH0KLSAgICByZXR1cm4gd2ViT3B0aW9uczsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZS0+c2V0Q2FuUGxheUZhc3RSZXZlcnNlKGNhblBsYXlGYXN0UmV2ZXJzZSk7CiB9CiAK
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxl
Y3RlZEluZGV4KQogewotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9
IG1lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zKTsKLSAgICBbbV9wbGF5ZXJDb250cm9sbGVy
IHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOndlYk9wdGlvbnMuZ2V0KCldOwotICAgIGlm
IChzZWxlY3RlZEluZGV4IDwgW3dlYk9wdGlvbnMgY291bnRdKQotICAgICAgICBbbV9wbGF5ZXJD
b250cm9sbGVyIHNldEN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOlt3ZWJPcHRpb25z
IG9iamVjdEF0SW5kZXg6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc2VsZWN0ZWRJbmRleCldXTsK
KyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gbWVkaWFTZWxlY3Rpb25PcHRp
b25zKG9wdGlvbnMpOwotICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9uczp3ZWJPcHRpb25zLmdldCgpXTsKLSAgICBpZiAoc2VsZWN0ZWRJbmRleCA8
IFt3ZWJPcHRpb25zIGNvdW50XSkKLSAgICAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRDdXJy
ZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOlt3ZWJPcHRpb25zIG9iamVjdEF0SW5kZXg6
c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc2VsZWN0ZWRJbmRleCldXTsKKyAgICBtX3BsYXliYWNr
U2Vzc2lvbkludGVyZmFjZS0+c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25z
LCBzZWxlY3RlZEluZGV4KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6c2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tU
YXJnZXRUeXBlIHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKQogewotICAg
IEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBlIGV4dGVybmFsUGxheWJhY2tU
eXBlID0gQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVOb25lOwotICAgIGlm
ICh0YXJnZXRUeXBlID09IFRhcmdldFR5cGVBaXJQbGF5KQotICAgICAgICBleHRlcm5hbFBsYXli
YWNrVHlwZSA9IEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBlQWlyUGxheTsK
LSAgICBlbHNlIGlmICh0YXJnZXRUeXBlID09IFRhcmdldFR5cGVUVk91dCkKLSAgICAgICAgZXh0
ZXJuYWxQbGF5YmFja1R5cGUgPSBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlw
ZVRWT3V0OworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRFeHRlcm5hbFBsYXli
YWNrKGVuYWJsZWQsIHRhcmdldFR5cGUsIGxvY2FsaXplZERldmljZU5hbWUpOworfQogCi0gICAg
V2ViQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gbV9wbGF5ZXJDb250cm9s
bGVyLmdldCgpOwotICAgIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FpclBsYXlE
ZXZpY2VMb2NhbGl6ZWROYW1lID0gbG9jYWxpemVkRGV2aWNlTmFtZTsKLSAgICBwbGF5ZXJDb250
cm9sbGVyLmV4dGVybmFsUGxheWJhY2tUeXBlID0gZXh0ZXJuYWxQbGF5YmFja1R5cGU7Ci0gICAg
cGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrQWN0aXZlID0gZW5hYmxlZDsKK3ZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmV4dGVybmFsUGxheWJhY2tFbmFibGVk
Q2hhbmdlZChib29sIGVuYWJsZWQpCit7CiAgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEhpZGRl
bjplbmFibGVkXTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKIHsKLSAgICBb
bV9wbGF5ZXJDb250cm9sbGVyIHNldEFsbG93c0V4dGVybmFsUGxheWJhY2s6IWRpc2FibGVkXTsK
KyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQoZGlzYWJsZWQpOwogfQogCiBib29sIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIFttX3BsYXllckNvbnRyb2xsZXIgYWxsb3dzRXh0ZXJuYWxQbGF5YmFja107CisgICAgcmV0
dXJuIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZCgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjphcHBs
aWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCkBAIC0xMTc4LDcgKzY4Niw3IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbihVSVZpZXcmIHZpZGVv
VmlldywgY29uc3QKIAogICAgIGlmICghbV9wbGF5ZXJMYXllclZpZXcpCiAgICAgICAgIG1fcGxh
eWVyTGF5ZXJWaWV3ID0gYWRvcHROUyhbW2dldFdlYkFWUGxheWVyTGF5ZXJWaWV3Q2xhc3MoKSBh
bGxvY10gaW5pdF0pOwotICAgIFttX3BsYXllckxheWVyVmlldyBzZXRIaWRkZW46W21fcGxheWVy
Q29udHJvbGxlciBpc0V4dGVybmFsUGxheWJhY2tBY3RpdmVdXTsKKyAgICBbbV9wbGF5ZXJMYXll
clZpZXcgc2V0SGlkZGVuOltwbGF5ZXJDb250cm9sbGVyKCkgaXNFeHRlcm5hbFBsYXliYWNrQWN0
aXZlXV07CiAgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEJhY2tncm91bmRDb2xvcjpbZ2V0VUlD
b2xvckNsYXNzKCkgY2xlYXJDb2xvcl1dOwogCiAgICAgaWYgKCFpc0luUGljdHVyZUluUGljdHVy
ZU1vZGUpIHsKQEAgLTExODksMTYgKzY5NywxOSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4oVUlWaWV3JiB2aWRlb1ZpZXcsIGNvbnN0CiAg
ICAgV2ViQVZQbGF5ZXJMYXllciAqcGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVtt
X3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07CiAKICAgICBbcGxheWVyTGF5ZXIgc2V0TW9k
ZWxWaWRlb0xheWVyRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBpbml0aWFsUmVjdC53aWR0aCgpLCBp
bml0aWFsUmVjdC5oZWlnaHQoKSldOwotICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0RpbWVuc2lv
bnM6W21fcGxheWVyQ29udHJvbGxlciBjb250ZW50RGltZW5zaW9uc11dOworICAgIFtwbGF5ZXJM
YXllciBzZXRWaWRlb0RpbWVuc2lvbnM6W3BsYXllckNvbnRyb2xsZXIoKSBjb250ZW50RGltZW5z
aW9uc11dOworICAgIHBsYXllckxheWVyLmZ1bGxzY3JlZW5JbnRlcmZhY2UgPSB0aGlzOwogCiAg
ICAgaWYgKCFtX3BsYXllclZpZXdDb250cm9sbGVyKQogICAgICAgICBtX3BsYXllclZpZXdDb250
cm9sbGVyID0gYWRvcHROUyhbYWxsb2NBVlBsYXllclZpZXdDb250cm9sbGVySW5zdGFuY2UoKSBp
bml0V2l0aFBsYXllckxheWVyVmlldzptX3BsYXllckxheWVyVmlldy5nZXQoKV0pOwogCiAgICAg
W21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0U2hvd3NQbGF5YmFja0NvbnRyb2xzOk5PXTsKLSAg
ICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRQbGF5ZXJDb250cm9sbGVyOihBVlBsYXllckNv
bnRyb2xsZXIgKiltX3BsYXllckNvbnRyb2xsZXIuZ2V0KCldOwotICAgIFttX3BsYXllclZpZXdD
b250cm9sbGVyIHNldERlbGVnYXRlOm1fcGxheWVyQ29udHJvbGxlci5nZXQoKV07CisgICAgW21f
cGxheWVyVmlld0NvbnRyb2xsZXIgc2V0UGxheWVyQ29udHJvbGxlcjooQVZQbGF5ZXJDb250cm9s
bGVyICopcGxheWVyQ29udHJvbGxlcigpXTsKKyAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBz
ZXREZWxlZ2F0ZTptX3BsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCldOwogICAgIFtt
X3BsYXllclZpZXdDb250cm9sbGVyIHNldEFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjazpt
X2FsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFja107CiAKKyAgICBbcGxheWVyQ29udHJvbGxl
cigpIHNldFBpY3R1cmVJblBpY3R1cmVQb3NzaWJsZTptX2FsbG93c1BpY3R1cmVJblBpY3R1cmVQ
bGF5YmFja107CisKICAgICBpZiAobV92aWV3Q29udHJvbGxlcikgewogICAgICAgICBbbV92aWV3
Q29udHJvbGxlciBhZGRDaGlsZFZpZXdDb250cm9sbGVyOm1fcGxheWVyVmlld0NvbnRyb2xsZXIu
Z2V0KCldOwogICAgICAgICBbW21fdmlld0NvbnRyb2xsZXIgdmlld10gYWRkU3VidmlldzpbbV9w
bGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XV07CkBAIC0xMzM5LDggKzg1MCw3IEBAIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNsZWFudXBGdWxsc2NyZWVuKCkKICAgICAg
ICAgICAgIFtbZ2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgc2hhcmVkQXBwbGljYXRpb25dIF9zZXRT
dGF0dXNCYXJPcmllbnRhdGlvbjpbbV9wYXJlbnRXaW5kb3cgaW50ZXJmYWNlT3JpZW50YXRpb25d
XTsKICAgICB9CiAgICAgCi0gICAgW21fcGxheWVyQ29udHJvbGxlciBzZXREZWxlZ2F0ZTpuaWxd
OwotICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0RnVsbHNjcmVlbkludGVyZmFjZTpuaWxdOwor
ICAgIFtwbGF5ZXJDb250cm9sbGVyKCkgc2V0RGVsZWdhdGU6bmlsXTsKICAgICAKICAgICBbbV9w
bGF5ZXJWaWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTpuaWxdOwogICAgIFttX3BsYXllclZpZXdD
b250cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6bmlsXTsKQEAgLTEzNTksOCArODY5LDYgQEAg
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y2xlYW51cEZ1bGxzY3JlZW4o
KQogCiAgICAgbV9wbGF5ZXJMYXllclZpZXcgPSBuaWw7CiAgICAgbV9wbGF5ZXJWaWV3Q29udHJv
bGxlciA9IG5pbDsKLSAgICBtX3BsYXllckNvbnRyb2xsZXIgPSBuaWw7Ci0gICAgbV92aWV3Q29u
dHJvbGxlciA9IG5pbDsKICAgICBtX3dpbmRvdyA9IG5pbDsKICAgICBtX3BhcmVudFZpZXcgPSBu
aWw7CiAgICAgbV9wYXJlbnRXaW5kb3cgPSBuaWw7CkBAIC0xNDEyLDcgKzkyMCw3IEBAIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVkVG9SZXR1cm5Ub0lubGlu
ZShib29sIHZpc2libGUsIGNvCiAKIGJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6Om1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gW21fcGxheWVyQ29udHJvbGxlciBpc1BsYXlpbmddICYmIG1fbW9kZSA9PSBI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCAmJiBzdXBw
b3J0c1BpY3R1cmVJblBpY3R1cmUoKTsKKyAgICByZXR1cm4gW3BsYXllckNvbnRyb2xsZXIoKSBp
c1BsYXlpbmddICYmIG1fbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGVTdGFuZGFyZCAmJiBzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKTsKIH0KIAogdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZnVsbHNjcmVlbk1heVJldHVyblRv
SW5saW5lKHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gY2FsbGJhY2spCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTUzMWFjMWI4MGYyMjZhZGM5MmM1MTNkOWFjNTg5ZmFmN2Fj
NTAwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWNfaAorI2RlZmluZSBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWNfaAorCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50
RW51bXMuaCIKKyNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaCIKKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworT0JKQ19DTEFTUyBXZWJQbGF5YmFja0NvbnRy
b2xzTWFuYWdlcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW50UmVjdDsKK2NsYXNz
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMKKyAgICA6IHB1YmxpYyBXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UKKyAgICAsIHB1YmxpYyBSZWZDb3VudGVkPFdlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZU1hYz4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5X
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMoKTsKKyAgICBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbCogd2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3BsYXliYWNr
U2Vzc2lvbk1vZGVsOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCopOworCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXNldE1lZGlhU3RhdGUoKSBvdmVycmlkZSB7IH0KKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUgLypjdXJyZW50VGltZSovLCBkb3VibGUgLyphbmNo
b3JUaW1lKi8pIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QnVmZmVyZWRU
aW1lKGRvdWJsZSkgb3ZlcnJpZGUgeyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSYXRl
KGJvb2wgLyppc1BsYXlpbmcqLywgZmxvYXQgLypwbGF5YmFja1JhdGUqLykgb3ZlcnJpZGU7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2Vz
Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVy
c2UoYm9vbCkgb3ZlcnJpZGUgeyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypvcHRpb25zKi8sIHVp
bnQ2NF90IC8qc2VsZWN0ZWRJbmRleCovKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IC8qb3B0aW9ucyovLCB1aW50NjRfdCAvKnNlbGVjdGVkSW5kZXgqLykgb3ZlcnJpZGU7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wsIEV4dGVybmFsUGxh
eWJhY2tUYXJnZXRUeXBlLCBTdHJpbmcpIG92ZXJyaWRlIHsgfQorICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgb3ZlcnJpZGUgeyB9
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBlbnN1cmVDb250cm9sc01hbmFnZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBXZWJQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlciAqcGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKKworcHJp
dmF0ZToKKyAgICBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCogbV9wbGF5YmFja1Nlc3Npb25Nb2Rl
bCB7IG51bGxwdHIgfTsKKyAgICBSZXRhaW5QdHI8V2ViUGxheWJhY2tDb250cm9sc01hbmFnZXI+
IG1fcGxheWJhY2tDb250cm9sc01hbmFnZXI7Cit9OworCit9CisKKyNlbmRpZiAvLyBQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYmVkZTAzZGE2NzIyNjU5MGNlZWNkNTdh
ZWIwMGFkNWI2MzZjNjMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbQpAQCAtMCwwICsxLDMzMiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VNYWMuaCIKKworI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKQorCisjaW1wb3J0ICJBVktpdFNQSS5oIgorI2ltcG9ydCAi
SW50UmVjdC5oIgorI2ltcG9ydCAiTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgiCisjaW1wb3J0ICJU
aW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oIgorI2ltcG9y
dCA8QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5oPgorCisjaW1wb3J0ICJDb3JlTWVkaWFTb2Z0
TGluay5oIgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKEFWS2l0KQorU09GVF9MSU5LX0NMQVNTKEFW
S2l0LCBBVlZhbHVlVGltaW5nKQorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQGludGVy
ZmFjZSBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uTWFjIDogTlNPYmplY3QgeworICAgIFJldGFp
blB0cjxOU1N0cmluZz4gX2xvY2FsaXplZERpc3BsYXlOYW1lOworfQorQHByb3BlcnR5IChyZXRh
aW4pIE5TU3RyaW5nICpsb2NhbGl6ZWREaXNwbGF5TmFtZTsKK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb25NYWMKKworLSAoTlNTdHJpbmcgKilsb2NhbGl6
ZWREaXNwbGF5TmFtZQoreworICAgIHJldHVybiBfbG9jYWxpemVkRGlzcGxheU5hbWUuZ2V0KCk7
Cit9CisKKy0gKHZvaWQpc2V0TG9jYWxpemVkRGlzcGxheU5hbWU6KE5TU3RyaW5nICopbmFtZQor
eworICAgIF9sb2NhbGl6ZWREaXNwbGF5TmFtZSA9IG5hbWU7Cit9CisKK0BlbmQKKworQGludGVy
ZmFjZSBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciA6IE5TT2JqZWN0IHsKKyAgICBOU1RpbWVJ
bnRlcnZhbCBfY29udGVudER1cmF0aW9uOworICAgIFJldGFpblB0cjxBVlZhbHVlVGltaW5nPiBf
dGltaW5nOworICAgIE5TVGltZUludGVydmFsIF9zZWVrVG9UaW1lOworICAgIFJldGFpblB0cjxO
U0FycmF5PiBfc2Vla2FibGVUaW1lUmFuZ2VzOworICAgIEJPT0wgX2hhc0VuYWJsZWRBdWRpbzsK
KyAgICBCT09MIF9oYXNFbmFibGVkVmlkZW87CisgICAgUmV0YWluUHRyPE5TQXJyYXk8QVZNZWRp
YVNlbGVjdGlvbk9wdGlvbiAqPj4gX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOworICAgIFJl
dGFpblB0cjxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uPiBfY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb247CisgICAgUmV0YWluUHRyPE5TQXJyYXk8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAq
Pj4gX2xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7CisgICAgUmV0YWluUHRyPEFWTWVkaWFT
ZWxlY3Rpb25PcHRpb24+IF9jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOworCisg
ICAgZmxvYXQgX3JhdGU7CisKK0Bwcml2YXRlCisgICAgV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlTWFjKiBfd2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOworfQorCitA
cHJvcGVydHkgKHJlYWR3cml0ZSkgTlNUaW1lSW50ZXJ2YWwgY29udGVudER1cmF0aW9uOworQHBy
b3BlcnR5IChub25hdG9taWMsIHJldGFpbiwgcmVhZHdyaXRlKSBBVlZhbHVlVGltaW5nICp0aW1p
bmc7CitAcHJvcGVydHkgTlNUaW1lSW50ZXJ2YWwgc2Vla1RvVGltZTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZXRhaW4sIHJlYWR3cml0ZSkgTlNBcnJheSAqc2Vla2FibGVUaW1lUmFuZ2VzOwor
QHByb3BlcnR5IChyZWFkd3JpdGUpIEJPT0wgaGFzRW5hYmxlZEF1ZGlvOworQHByb3BlcnR5IChy
ZWFkd3JpdGUpIEJPT0wgaGFzRW5hYmxlZFZpZGVvOworQHByb3BlcnR5IChub25hdG9taWMsIHJl
dGFpbiwgcmVhZHdyaXRlKSBOU0FycmF5PEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKmF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zOworQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbiwgcmVh
ZHdyaXRlKSBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpjdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlv
bk9wdGlvbjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4sIHJlYWR3cml0ZSkgTlNBcnJh
eTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICo+ICpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25z
OworQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbiwgcmVhZHdyaXRlKSBBVk1lZGlhU2VsZWN0
aW9uT3B0aW9uICpjdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOworCitAcHJvcGVy
dHkgKG5vbmF0b21pYykgZmxvYXQgcmF0ZTsKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOihXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VNYWMqKXdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzsKKworQGVuZAorCisj
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJQ
bGF5YmFja0NvbnRyb2xzQ29udHJvbGxlckFkZGl0aW9ucy5tbT4KKyNlbmRpZgorCitAaW1wbGVt
ZW50YXRpb24gV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIKKworQHN5bnRoZXNpemUgY29udGVu
dER1cmF0aW9uPV9jb250ZW50RHVyYXRpb247CitAc3ludGhlc2l6ZSBzZWVrVG9UaW1lPV9zZWVr
VG9UaW1lOworQHN5bnRoZXNpemUgaGFzRW5hYmxlZEF1ZGlvPV9oYXNFbmFibGVkQXVkaW87CitA
c3ludGhlc2l6ZSBoYXNFbmFibGVkVmlkZW89X2hhc0VuYWJsZWRWaWRlbzsKK0BzeW50aGVzaXpl
IHJhdGU9X3JhdGU7CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYzooV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKil3
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF93ZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VNYWMgPSB3ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM7CisKKyAgICByZXR1
cm4gc2VsZjsKK30KKworLSAoQVZWYWx1ZVRpbWluZyAqKXRpbWluZworeworICAgIHJldHVybiBf
dGltaW5nLmdldCgpOworfQorCistICh2b2lkKXNldFRpbWluZzooQVZWYWx1ZVRpbWluZyAqKXRp
bWluZworeworICAgIF90aW1pbmcgPSB0aW1pbmc7Cit9CisKKy0gKE5TQXJyYXkgKilzZWVrYWJs
ZVRpbWVSYW5nZXMKK3sKKyAgICByZXR1cm4gX3NlZWthYmxlVGltZVJhbmdlcy5nZXQoKTsKK30K
KworLSAodm9pZClzZXRTZWVrYWJsZVRpbWVSYW5nZXM6KE5TQXJyYXkgKil0aW1lUmFuZ2VzCit7
CisgICAgX3NlZWthYmxlVGltZVJhbmdlcyA9IHRpbWVSYW5nZXM7Cit9CisKKy0gKEJPT0wpaXNT
ZWVraW5nCit7CisgICAgcmV0dXJuIE5POworfQorCistICh2b2lkKXNlZWtUb1RpbWU6KE5TVGlt
ZUludGVydmFsKXRpbWUgdG9sZXJhbmNlQmVmb3JlOihOU1RpbWVJbnRlcnZhbCl0b2xlcmFuY2VC
ZWZvcmUgdG9sZXJhbmNlQWZ0ZXI6KE5TVGltZUludGVydmFsKXRvbGVyYW5jZUFmdGVyCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHRvbGVyYW5jZUJlZm9yZSk7CisgICAgVU5VU0VEX1BBUkFNKHRvbGVy
YW5jZUFmdGVyKTsKKyAgICBfd2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLT53ZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbCgpLT5zZWVrVG9UaW1lKHRpbWUpOworfQorCistIChOU0FycmF5PEFW
TWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucworewor
ICAgIHJldHVybiBfYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMuZ2V0KCk7Cit9CisKKy0gKHZv
aWQpc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM6KE5TQXJyYXk8QVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiAqPiAqKWF1ZGlvT3B0aW9ucworeworICAgIF9hdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9ucyA9IGF1ZGlvT3B0aW9uczsKK30KKworLSAoQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1
cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uCit7CisgICAgcmV0dXJuIF9jdXJyZW50QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbi5nZXQoKTsKK30KKworLSAodm9pZClzZXRDdXJyZW50QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbjooQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb24KK3sKKyAgICBpZiAoYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbiA9
PSBfY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIF9jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbiA9IGF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb247CisKKyAgICBOU0ludGVnZXIgaW5kZXggPSBOU05vdEZvdW5kOworCisgICAgaWYg
KGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24gJiYgc2VsZi5hdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9ucykKKyAgICAgICAgaW5kZXggPSBbc2VsZi5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyBp
bmRleE9mT2JqZWN0OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25dOworCisgICAgX3dlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZU1hYy0+d2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoKS0+c2VsZWN0
QXVkaW9NZWRpYU9wdGlvbihpbmRleCAhPSBOU05vdEZvdW5kID8gaW5kZXggOiBVSU5UNjRfTUFY
KTsKK30KKworLSAoTlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICo+ICopbGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9ucworeworICAgIHJldHVybiBfbGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucy5nZXQoKTsKK30KKworLSAodm9pZClzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zOihOU0FycmF5PEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilsZWdpYmxlT3B0aW9ucwor
eworICAgIF9sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zID0gbGVnaWJsZU9wdGlvbnM7Cit9
CisKKy0gKEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKiljdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9uCit7CisgICAgcmV0dXJuIF9jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9uLmdldCgpOworfQorCistICh2b2lkKXNldEN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb246KEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKilsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b24KK3sKKyAgICBpZiAobGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uID09IF9jdXJyZW50TGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBfY3VycmVu
dExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbiA9IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
bjsKKworICAgIE5TSW50ZWdlciBpbmRleCA9IE5TTm90Rm91bmQ7CisKKyAgICBpZiAobGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9uICYmIHNlbGYubGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9u
cykKKyAgICAgICAgaW5kZXggPSBbc2VsZi5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zIGlu
ZGV4T2ZPYmplY3Q6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uXTsKKworICAgIF93ZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMtPndlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKCktPnNlbGVj
dExlZ2libGVNZWRpYU9wdGlvbihpbmRleCAhPSBOU05vdEZvdW5kID8gaW5kZXggOiBVSU5UNjRf
TUFYKTsKK30KKworLSAodm9pZCljYW5jZWxUaHVtYm5haWxBbmRBdWRpb0FtcGxpdHVkZVNhbXBs
ZUdlbmVyYXRpb24KK3sKK30KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0
IDxXZWJLaXRBZGRpdGlvbnMvV2ViUGxheWJhY2tDb250cm9sc0NvbnRyb2xsZXJUaHVtYm5haWxB
ZGRpdGlvbnMubW0+CisjZW5kaWYKKworQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6fldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYygpCit7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXRX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCogbW9kZWwpCit7
CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbCA9IG1vZGVsOworfQorCit2b2lkIFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQorewor
ICAgIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFj
a0NvbnRyb2xzTWFuYWdlcigpOworCisgICAgY29udHJvbHNNYW5hZ2VyLmNvbnRlbnREdXJhdGlv
biA9IGR1cmF0aW9uOworCisgICAgLy8gRklYTUU6IFdlIHRha2UgdGhpcyBhcyBhbiBpbmRpY2F0
aW9uIHRoYXQgcGxheWJhY2sgaXMgcmVhZHksIGJ1dCB0aGF0IGlzIG5vdCBuZWNlc3NhcmlseSB0
cnVlLgorICAgIGNvbnRyb2xzTWFuYWdlci5oYXNFbmFibGVkQXVkaW8gPSBZRVM7CisgICAgY29u
dHJvbHNNYW5hZ2VyLmhhc0VuYWJsZWRWaWRlbyA9IFlFUzsKK30KKwordm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwg
ZG91YmxlIGFuY2hvclRpbWUpCit7CisgICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIqIGNv
bnRyb2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7CisKKyAgICBOU1RpbWVJ
bnRlcnZhbCBhbmNob3JUaW1lU3RhbXAgPSAhW2NvbnRyb2xzTWFuYWdlciByYXRlXSA/IE5BTiA6
IGFuY2hvclRpbWU7CisgICAgQVZWYWx1ZVRpbWluZyAqdGltaW5nID0gW2dldEFWVmFsdWVUaW1p
bmdDbGFzcygpIHZhbHVlVGltaW5nV2l0aEFuY2hvclZhbHVlOmN1cnJlbnRUaW1lCisgICAgICAg
IGFuY2hvclRpbWVTdGFtcDphbmNob3JUaW1lU3RhbXAgcmF0ZTowXTsKKworICAgIFtjb250cm9s
c01hbmFnZXIgc2V0VGltaW5nOnRpbWluZ107Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjOjpzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUp
Cit7CisgICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIqIGNvbnRyb2xzTWFuYWdlciA9IHBs
YXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7CisKKyAgICBbY29udHJvbHNNYW5hZ2VyIHNldFJhdGU6
aXNQbGF5aW5nID8gcGxheWJhY2tSYXRlIDogMC5dOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYzo6c2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYgdGlt
ZVJhbmdlcykKK3sKKyAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5h
Z2VyID0gcGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKKworICAgIFJldGFpblB0cjxOU011dGFi
bGVBcnJheT4gc2Vla2FibGVSYW5nZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRdKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aW1lUmFuZ2VzLmxlbmd0
aCgpOyBpKyspIHsKKyAgICAgICAgY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiByYW5nZXMgPSB0
aW1lUmFuZ2VzLnJhbmdlcygpOworICAgICAgICBDTVRpbWVSYW5nZSByYW5nZSA9IENNVGltZVJh
bmdlTWFrZSh0b0NNVGltZShyYW5nZXMuc3RhcnQoaSkpLCB0b0NNVGltZShyYW5nZXMuZW5kKGkp
KSk7CisgICAgICAgIFtzZWVrYWJsZVJhbmdlcyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRo
Q01UaW1lUmFuZ2U6cmFuZ2VdXTsKKyAgICB9CisKKyAgICBbY29udHJvbHNNYW5hZ2VyIHNldFNl
ZWthYmxlVGltZVJhbmdlczpzZWVrYWJsZVJhbmdlcy5nZXQoKV07Cit9CisKK3N0YXRpYyBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IG1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgb3B0aW9ucykKK3sKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHdlYk9w
dGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6
b3B0aW9ucy5zaXplKCldKTsKKyAgICBmb3IgKGF1dG8mIG5hbWUgOiBvcHRpb25zKSB7CisgICAg
ICAgIFJldGFpblB0cjxXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uTWFjPiB3ZWJPcHRpb24gPSBh
ZG9wdE5TKFtbV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbk1hYyBhbGxvY10gaW5pdF0pOworICAg
ICAgICBbd2ViT3B0aW9uIHNldExvY2FsaXplZERpc3BsYXlOYW1lOm5hbWVdOworICAgICAgICBb
d2ViT3B0aW9ucyBhZGRPYmplY3Q6d2ViT3B0aW9uLmdldCgpXTsKKyAgICB9CisgICAgcmV0dXJu
IHdlYk9wdGlvbnM7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpz
ZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQoreworICAgIFdlYlBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpOwor
CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gbWVkaWFTZWxlY3Rp
b25PcHRpb25zKG9wdGlvbnMpOworICAgIFtjb250cm9sc01hbmFnZXIgc2V0QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07CisgICAgaWYgKHNlbGVjdGVkSW5kZXgg
PCBbd2ViT3B0aW9ucyBjb3VudF0pCisgICAgICAgIFtjb250cm9sc01hbmFnZXIgc2V0Q3VycmVu
dEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2JqZWN0QXRJbmRleDpzdGF0
aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOworfQorCit2b2lkIFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhj
b25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4
KQoreworICAgIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBw
bGF5QmFja0NvbnRyb2xzTWFuYWdlcigpOworCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5
PiB3ZWJPcHRpb25zID0gbWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMpOworICAgIFtjb250
cm9sc01hbmFnZXIgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczp3ZWJPcHRpb25zLmdl
dCgpXTsKKyAgICBpZiAoc2VsZWN0ZWRJbmRleCA8IFt3ZWJPcHRpb25zIGNvdW50XSkKKyAgICAg
ICAgW2NvbnRyb2xzTWFuYWdlciBzZXRDdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9u
Olt3ZWJPcHRpb25zIG9iamVjdEF0SW5kZXg6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc2VsZWN0
ZWRJbmRleCldXTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6Omlu
dmFsaWRhdGUoKQoreworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6
ZW5zdXJlQ29udHJvbHNNYW5hZ2VyKCkKK3sKKyAgICBwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigp
OworfQorCitXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciAqV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjOjpwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpCit7CisjaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKKyAgICBpZiAoIW1fcGxheWJhY2tDb250cm9s
c01hbmFnZXIpCisgICAgICAgIG1fcGxheWJhY2tDb250cm9sc01hbmFnZXIgPSBhZG9wdE5TKFtb
V2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgYWxsb2NdIGluaXRXaXRoV2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlTWFjOnRoaXNdKTsKKyAgICByZXR1cm4gbV9wbGF5YmFja0NvbnRyb2xzTWFu
YWdlci5nZXQoKTsKKyNlbHNlCisgICAgcmV0dXJuIG5pbDsKKyNlbmRpZgorfQorICAgIAorfQor
CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01P
REUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmgKaW5kZXggMmIyYTdmYzdjZDViNTU5ZmUzNDM5ZjRj
NGRiZjNmYjI1NzUzZjVkNC4uZmI4Y2M4Zjc1ZGNiOWNjZjIwYzBiZGI0Mzk3NjZkYmYyN2VkNDUw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBPQkpDX0NMQVNTIE5TV2luZG93OwotT0JKQ19DTEFT
UyBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcjsKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCiBPQkpDX0NMQVNTIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hY09iakM7CkBAIC00
Myw2ICs0Miw3IEBAIE9CSkNfQ0xBU1MgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2Jq
QzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW50UmVjdDsKK2NsYXNzIFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZU1hYzsKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9i
c2VydmVyOwogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw7CiAKQEAgLTUxLDkgKzUxLDkg
QEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjCiAg
ICAgLCBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM+IHsK
IAogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
PiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
PiBjcmVhdGUoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjJiBwbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWMoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyhwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpKTsK
ICAgICB9CiAgICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKCk7CiAg
ICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwqIHdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKCkgY29u
c3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbDsgfQpAQCAtOTMsMTIgKzkzLDEzIEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heUF1dG9tYXRpY2FsbHlTaG93Vmlk
ZW9QaWN0dXJlSW5QaWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGFw
cGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkgeyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBXZWJQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlciAqcGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKICNpZiBV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQogICAgIFdFQkNPUkVfRVhQT1JUIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hY09iakMgKnZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU9iakMoKTsKICNl
bmRpZgogCiBwcml2YXRlOgorICAgIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyhXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMmKTsKKyAgICBSZWY8V2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjPiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKICAgICBXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbCogbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCB7IG51bGxwdHIgfTsKICAgICBX
ZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciogbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2
ZXIgeyBudWxscHRyIH07CiAgICAgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlIG1fbW9kZSB7IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZU5vbmUgfTsKQEAgLTEwNiw3ICsxMDcsNiBAQCBwcml2YXRlOgogI2lmIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCiAgICAgUmV0YWluUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hY09i
akM+IG1fd2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlT2JqQzsKICNlbmRpZgotICAgIFJldGFp
blB0cjxXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcj4gbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdl
cjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCmluZGV4IGI4OTBhYjM4ZjA1MDcz
YzVmYjJlZjVkNmM5YzE3ZDQ5NGJiOGFmZmEuLmZlNzg5MTYyNzM3MTI5NDQ5YjU1OTE1YmFjZGRh
NGFmNjljM2FiOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQpAQCAtMjksMTUgKzI5LDE1
IEBACiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUp
CiAKICNpbXBvcnQgIkFWS2l0U1BJLmgiCi0jaW1wb3J0ICJDb3JlTWVkaWFTb2Z0TGluay5oIgog
I2ltcG9ydCAiSW50UmVjdC5oIgogI2ltcG9ydCAiTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgiCiAj
aW1wb3J0ICJUaW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VNYWMuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmgiCiAj
aW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9u
L0FWVGltZS5oPgogCi0jaW1wb3J0ICJTb2Z0TGlua2luZy5oIgorI2ltcG9ydCAiQ29yZU1lZGlh
U29mdExpbmsuaCIKIAogU09GVF9MSU5LX0ZSQU1FV09SSyhBVktpdCkKIFNPRlRfTElOS19DTEFT
UyhBVktpdCwgQVZWYWx1ZVRpbWluZykKQEAgLTQ2LDE4OSArNDYsMTMgQEAgU09GVF9MSU5LX0NM
QVNTKEFWS2l0LCBBVlZhbHVlVGltaW5nKQogI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9XZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWNBZGRpdGlvbnMubW0+CiAjZW5kaWYKIAotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7Ci0KLUBpbnRlcmZhY2UgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlv
bk1hYyA6IE5TT2JqZWN0IHsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9sb2NhbGl6ZWREaXNw
bGF5TmFtZTsKLX0KLUBwcm9wZXJ0eSAocmV0YWluKSBOU1N0cmluZyAqbG9jYWxpemVkRGlzcGxh
eU5hbWU7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9u
TWFjCi0KLS0gKE5TU3RyaW5nICopbG9jYWxpemVkRGlzcGxheU5hbWUKLXsKLSAgICByZXR1cm4g
X2xvY2FsaXplZERpc3BsYXlOYW1lLmdldCgpOwotfQotCi0tICh2b2lkKXNldExvY2FsaXplZERp
c3BsYXlOYW1lOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBfbG9jYWxpemVkRGlzcGxheU5hbWUg
PSBuYW1lOwotfQotCi1AZW5kCi0KLUBpbnRlcmZhY2UgV2ViUGxheWJhY2tDb250cm9sc01hbmFn
ZXIgOiBOU09iamVjdCB7Ci0gICAgTlNUaW1lSW50ZXJ2YWwgX2NvbnRlbnREdXJhdGlvbjsKLSAg
ICBSZXRhaW5QdHI8QVZWYWx1ZVRpbWluZz4gX3RpbWluZzsKLSAgICBOU1RpbWVJbnRlcnZhbCBf
c2Vla1RvVGltZTsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gX3NlZWthYmxlVGltZVJhbmdlczsK
LSAgICBCT09MIF9oYXNFbmFibGVkQXVkaW87Ci0gICAgQk9PTCBfaGFzRW5hYmxlZFZpZGVvOwot
ICAgIFJldGFpblB0cjxOU0FycmF5PEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4+IF9hdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9uczsKLSAgICBSZXRhaW5QdHI8QVZNZWRpYVNlbGVjdGlvbk9wdGlv
bj4gX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOwotICAgIFJldGFpblB0cjxOU0Fy
cmF5PEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4+IF9sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zOwotICAgIFJldGFpblB0cjxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uPiBfY3VycmVudExlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbjsKLSAgICAKLSAgICBmbG9hdCBfcmF0ZTsKLQotQHByaXZh
dGUKLSAgICBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMqIF93ZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM7Ci19Ci0KLUBwcm9wZXJ0eSAocmVhZHdyaXRlKSBOU1Rp
bWVJbnRlcnZhbCBjb250ZW50RHVyYXRpb247Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWlu
LCByZWFkd3JpdGUpIEFWVmFsdWVUaW1pbmcgKnRpbWluZzsKLUBwcm9wZXJ0eSBOU1RpbWVJbnRl
cnZhbCBzZWVrVG9UaW1lOwotQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbiwgcmVhZHdyaXRl
KSBOU0FycmF5ICpzZWVrYWJsZVRpbWVSYW5nZXM7Ci1AcHJvcGVydHkgKHJlYWR3cml0ZSkgQk9P
TCBoYXNFbmFibGVkQXVkaW87Ci1AcHJvcGVydHkgKHJlYWR3cml0ZSkgQk9PTCBoYXNFbmFibGVk
VmlkZW87Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCByZWFkd3JpdGUpIE5TQXJyYXk8
QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM7Ci1A
cHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCByZWFkd3JpdGUpIEFWTWVkaWFTZWxlY3Rpb25P
cHRpb24gKmN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOwotQHByb3BlcnR5IChub25h
dG9taWMsIHJldGFpbiwgcmVhZHdyaXRlKSBOU0FycmF5PEFWTWVkaWFTZWxlY3Rpb25PcHRpb24g
Kj4gKmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywg
cmV0YWluLCByZWFkd3JpdGUpIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKmN1cnJlbnRMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb247Ci0KLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBmbG9hdCByYXRl
OwotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM6KFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyopd2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjOwotCi1AZW5kCi0KLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYlBsYXliYWNrQ29udHJvbHNDb250cm9sbGVy
QWRkaXRpb25zLm1tPgotI2VuZGlmCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJQbGF5YmFja0NvbnRy
b2xzTWFuYWdlcgotCi1Ac3ludGhlc2l6ZSBjb250ZW50RHVyYXRpb249X2NvbnRlbnREdXJhdGlv
bjsKLUBzeW50aGVzaXplIHNlZWtUb1RpbWU9X3NlZWtUb1RpbWU7Ci1Ac3ludGhlc2l6ZSBoYXNF
bmFibGVkQXVkaW89X2hhc0VuYWJsZWRBdWRpbzsKLUBzeW50aGVzaXplIGhhc0VuYWJsZWRWaWRl
bz1faGFzRW5hYmxlZFZpZGVvOwotQHN5bnRoZXNpemUgcmF0ZT1fcmF0ZTsKLQotLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOihXZWJDb3JlOjpX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMqKXdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYwotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAgICByZXR1cm4g
bmlsOwotCi0gICAgX3dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyA9IHdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZU1hYzsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChBVlZhbHVl
VGltaW5nICopdGltaW5nCi17Ci0gICAgcmV0dXJuIF90aW1pbmcuZ2V0KCk7Ci19Ci0KLS0gKHZv
aWQpc2V0VGltaW5nOihBVlZhbHVlVGltaW5nICopdGltaW5nCi17Ci0gICAgX3RpbWluZyA9IHRp
bWluZzsKLX0KLQotLSAoTlNBcnJheSAqKXNlZWthYmxlVGltZVJhbmdlcwotewotICAgIHJldHVy
biBfc2Vla2FibGVUaW1lUmFuZ2VzLmdldCgpOwotfQotCi0tICh2b2lkKXNldFNlZWthYmxlVGlt
ZVJhbmdlczooTlNBcnJheSAqKXRpbWVSYW5nZXMKLXsKLSAgICBfc2Vla2FibGVUaW1lUmFuZ2Vz
ID0gdGltZVJhbmdlczsKLX0KLQotLSAoQk9PTClpc1NlZWtpbmcKLXsKLSAgICByZXR1cm4gTk87
Ci19Ci0KLS0gKHZvaWQpc2Vla1RvVGltZTooTlNUaW1lSW50ZXJ2YWwpdGltZSB0b2xlcmFuY2VC
ZWZvcmU6KE5TVGltZUludGVydmFsKXRvbGVyYW5jZUJlZm9yZSB0b2xlcmFuY2VBZnRlcjooTlNU
aW1lSW50ZXJ2YWwpdG9sZXJhbmNlQWZ0ZXIKLXsKLSAgICBVTlVTRURfUEFSQU0odG9sZXJhbmNl
QmVmb3JlKTsKLSAgICBVTlVTRURfUEFSQU0odG9sZXJhbmNlQWZ0ZXIpOwotICAgIF93ZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPndlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKCktPnNlZWtU
b1RpbWUodGltZSk7Ci19Ci0KLS0gKE5TQXJyYXk8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAq
KWF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zCi17Ci0gICAgcmV0dXJuIF9hdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9ucy5nZXQoKTsKLX0KLQotLSAodm9pZClzZXRBdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9uczooTlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICo+ICopYXVkaW9PcHRpb25z
Ci17Ci0gICAgX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zID0gYXVkaW9PcHRpb25zOwotfQot
Ci0tIChBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb24KLXsKLSAgICByZXR1cm4gX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uLmdl
dCgpOwotfQotCi0tICh2b2lkKXNldEN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOihB
Vk1lZGlhU2VsZWN0aW9uT3B0aW9uICopYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbgotewotICAg
IGlmIChhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uID09IF9jdXJyZW50QXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbikKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIF9jdXJyZW50QXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbiA9IGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb247Ci0gICAgCi0gICAg
TlNJbnRlZ2VyIGluZGV4ID0gTlNOb3RGb3VuZDsKLSAgICAKLSAgICBpZiAoYXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbiAmJiBzZWxmLmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKQotICAgICAg
ICBpbmRleCA9IFtzZWxmLmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zIGluZGV4T2ZPYmplY3Q6
YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbl07Ci0gICAgCi0gICAgX3dlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYy0+d2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+c2VsZWN0QXVkaW9NZWRp
YU9wdGlvbihpbmRleCAhPSBOU05vdEZvdW5kID8gaW5kZXggOiBVSU5UNjRfTUFYKTsKLX0KLQot
LSAoTlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICo+ICopbGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9ucwotewotICAgIHJldHVybiBfbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucy5n
ZXQoKTsKLX0KLQotLSAodm9pZClzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOihOU0Fy
cmF5PEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilsZWdpYmxlT3B0aW9ucwotewotICAgIF9s
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zID0gbGVnaWJsZU9wdGlvbnM7Ci19Ci0KLS0gKEFW
TWVkaWFTZWxlY3Rpb25PcHRpb24gKiljdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9u
Ci17Ci0gICAgcmV0dXJuIF9jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uLmdldCgp
OwotfQotCi0tICh2b2lkKXNldEN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb246KEFW
TWVkaWFTZWxlY3Rpb25PcHRpb24gKilsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24KLXsKLSAg
ICBpZiAobGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uID09IF9jdXJyZW50TGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgX2N1cnJlbnRMZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gPSBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb247Ci0g
ICAgCi0gICAgTlNJbnRlZ2VyIGluZGV4ID0gTlNOb3RGb3VuZDsKLSAgICAKLSAgICBpZiAobGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uICYmIHNlbGYubGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9ucykKLSAgICAgICAgaW5kZXggPSBbc2VsZi5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25z
IGluZGV4T2ZPYmplY3Q6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uXTsKLSAgICAKLSAgICBf
d2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT53ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCgp
LT5zZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oaW5kZXggIT0gTlNOb3RGb3VuZCA/IGluZGV4IDog
VUlOVDY0X01BWCk7Ci19CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS0gKHZvaWQpY2FuY2VsVGh1
bWJuYWlsQW5kQXVkaW9BbXBsaXR1ZGVTYW1wbGVHZW5lcmF0aW9uCitXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyhXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VNYWMmIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKKyAgICA6IG1f
cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKIHsKIH0K
IAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMv
V2ViUGxheWJhY2tDb250cm9sc0NvbnRyb2xsZXJUaHVtYm5haWxBZGRpdGlvbnMubW0+Ci0jZW5k
aWYKLQotQGVuZAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYzo6fldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYygpCiB7CiB9CkBAIC0y
MzYsNiArNjAsNyBAQCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6On5XZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWMoKQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM6OnNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBt
b2RlbCkKIHsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsID0gbW9kZWw7CisgICAgbV9wbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKG1vZGVsKTsK
IH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFdlYlZpZGVvRnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyKFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKiBv
YnNlcnZlcikKQEAgLTI2NywzMSArOTIsMTcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWM6OmNsZWFyTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHMKIAog
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldER1cmF0aW9uKGRvdWJsZSBk
dXJhdGlvbikKIHsKLSAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5h
Z2VyID0gcGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKLQotICAgIGNvbnRyb2xzTWFuYWdlci5j
b250ZW50RHVyYXRpb24gPSBkdXJhdGlvbjsKLQotICAgIC8vIEZJWE1FOiBXZSB0YWtlIHRoaXMg
YXMgYW4gaW5kaWNhdGlvbiB0aGF0IHBsYXliYWNrIGlzIHJlYWR5LCBidXQgdGhhdCBpcyBub3Qg
bmVjZXNzYXJpbHkgdHJ1ZS4KLSAgICBjb250cm9sc01hbmFnZXIuaGFzRW5hYmxlZEF1ZGlvID0g
WUVTOwotICAgIGNvbnRyb2xzTWFuYWdlci5oYXNFbmFibGVkVmlkZW8gPSBZRVM7CisgICAgbV9w
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKIH0KIAogdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldEN1cnJlbnRUaW1lKGRvdWJsZSBj
dXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCiB7Ci0gICAgV2ViUGxheWJhY2tDb250cm9s
c01hbmFnZXIqIGNvbnRyb2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7Ci0K
LSAgICBOU1RpbWVJbnRlcnZhbCBhbmNob3JUaW1lU3RhbXAgPSAhW2NvbnRyb2xzTWFuYWdlciBy
YXRlXSA/IE5BTiA6IGFuY2hvclRpbWU7Ci0gICAgQVZWYWx1ZVRpbWluZyAqdGltaW5nID0gW2dl
dEFWVmFsdWVUaW1pbmdDbGFzcygpIHZhbHVlVGltaW5nV2l0aEFuY2hvclZhbHVlOmN1cnJlbnRU
aW1lCi0gICAgICAgIGFuY2hvclRpbWVTdGFtcDphbmNob3JUaW1lU3RhbXAgcmF0ZTowXTsKLSAg
ICAKLSAgICBbY29udHJvbHNNYW5hZ2VyIHNldFRpbWluZzp0aW1pbmddOworICAgIG1fcGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDdXJyZW50VGltZShjdXJyZW50VGltZSwgYW5jaG9yVGlt
ZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRSYXRlKGJv
b2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCiB7Ci0gICAgV2ViUGxheWJhY2tDb250
cm9sc01hbmFnZXIqIGNvbnRyb2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7
Ci0KLSAgICBbY29udHJvbHNNYW5hZ2VyIHNldFJhdGU6aXNQbGF5aW5nID8gcGxheWJhY2tSYXRl
IDogMC5dOworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRSYXRlKGlzUGxheWlu
ZywgcGxheWJhY2tSYXRlKTsKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAgICAgW3Zp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU9iakMoKSBzZXRSYXRlOmlzUGxheWluZyA/IHBsYXliYWNr
UmF0ZSA6IDAuXTsKQEAgLTMwMCw2NCArMTExLDIyIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjOjpzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUp
CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRTZWVrYWJsZVJhbmdl
cyhjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQogewotICAgIFdlYlBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpOwot
Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBzZWVrYWJsZVJhbmdlcyA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHRpbWVSYW5nZXMubGVuZ3RoKCk7IGkrKykgewotICAgICAgICBjb25zdCBQbGF0Zm9y
bVRpbWVSYW5nZXMmIHJhbmdlcyA9IHRpbWVSYW5nZXMucmFuZ2VzKCk7Ci0gICAgICAgIENNVGlt
ZVJhbmdlIHJhbmdlID0gQ01UaW1lUmFuZ2VNYWtlKHRvQ01UaW1lKHJhbmdlcy5zdGFydChpKSks
IHRvQ01UaW1lKHJhbmdlcy5lbmQoaSkpKTsKLSAgICAgICAgW3NlZWthYmxlUmFuZ2VzIGFkZE9i
amVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWVSYW5nZTpyYW5nZV1dOwotICAgIH0KLSAgICAK
LSAgICBbY29udHJvbHNNYW5hZ2VyIHNldFNlZWthYmxlVGltZVJhbmdlczpzZWVrYWJsZVJhbmdl
cy5nZXQoKV07Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG1lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucykKLXsKLSAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6b3B0aW9ucy5zaXplKCldKTsKLSAgICBmb3IgKGF1
dG8mIG5hbWUgOiBvcHRpb25zKSB7Ci0gICAgICAgIFJldGFpblB0cjxXZWJBVk1lZGlhU2VsZWN0
aW9uT3B0aW9uTWFjPiB3ZWJPcHRpb24gPSBhZG9wdE5TKFtbV2ViQVZNZWRpYVNlbGVjdGlvbk9w
dGlvbk1hYyBhbGxvY10gaW5pdF0pOwotICAgICAgICBbd2ViT3B0aW9uIHNldExvY2FsaXplZERp
c3BsYXlOYW1lOm5hbWVdOwotICAgICAgICBbd2ViT3B0aW9ucyBhZGRPYmplY3Q6d2ViT3B0aW9u
LmdldCgpXTsKLSAgICB9Ci0gICAgcmV0dXJuIHdlYk9wdGlvbnM7CisgICAgbV9wbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UtPnNldFNlZWthYmxlUmFuZ2VzKHRpbWVSYW5nZXMpOwogfQogCiB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0
ZWRJbmRleCkKIHsKLSAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5h
Z2VyID0gcGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKLQotICAgIFJldGFpblB0cjxOU011dGFi
bGVBcnJheT4gd2ViT3B0aW9ucyA9IG1lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zKTsKLSAg
ICBbY29udHJvbHNNYW5hZ2VyIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOndlYk9wdGlv
bnMuZ2V0KCldOwotICAgIGlmIChzZWxlY3RlZEluZGV4IDwgW3dlYk9wdGlvbnMgY291bnRdKQot
ICAgICAgICBbY29udHJvbHNNYW5hZ2VyIHNldEN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9uOlt3ZWJPcHRpb25zIG9iamVjdEF0SW5kZXg6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc2Vs
ZWN0ZWRJbmRleCldXTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0QXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiB9CiAKIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVj
dGVkSW5kZXgpCiB7Ci0gICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIqIGNvbnRyb2xzTWFu
YWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7Ci0KLSAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBtZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucyk7Ci0g
ICAgW2NvbnRyb2xzTWFuYWdlciBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOndlYk9w
dGlvbnMuZ2V0KCldOwotICAgIGlmIChzZWxlY3RlZEluZGV4IDwgW3dlYk9wdGlvbnMgY291bnRd
KQotICAgICAgICBbY29udHJvbHNNYW5hZ2VyIHNldEN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb246W3dlYk9wdGlvbnMgb2JqZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2Vy
PihzZWxlY3RlZEluZGV4KV1dOworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRM
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOwogfQog
CiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6ZW5zdXJlQ29udHJvbHNNYW5h
Z2VyKCkKIHsKLSAgICBwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpOwotfQotCi1XZWJQbGF5YmFj
a0NvbnRyb2xzTWFuYWdlciAqV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpwbGF5QmFj
a0NvbnRyb2xzTWFuYWdlcigpCi17Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEyMDAKLSAgICBpZiAoIW1fcGxheWJhY2tDb250cm9sc01hbmFnZXIpCi0gICAgICAg
IG1fcGxheWJhY2tDb250cm9sc01hbmFnZXIgPSBhZG9wdE5TKFtbV2ViUGxheWJhY2tDb250cm9s
c01hbmFnZXIgYWxsb2NdIGluaXRXaXRoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOnRo
aXNdKTsKLSAgICByZXR1cm4gbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlci5nZXQoKTsKLSNlbHNl
Ci0gICAgcmV0dXJuIG5pbDsKLSNlbmRpZgorICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
LT5lbnN1cmVDb250cm9sc01hbmFnZXIoKTsKIH0KIAogI2lmICFVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMTQwNzljYWNlMWRjMTRmMjhl
N2FlNTExOTNhMDdjYWU4MWZhZTE4OC4uYTYyODE3MzEyOTYyODNiN2FhNTJjMjdkZjQ3NGVmMjcz
OGNiYTFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMzgsNiArMTM4LDgg
QEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgV2ViUGFnZSBcCiAgICAgV2ViUGFnZVByb3h5
IFwKICAgICBXZWJQYXN0ZWJvYXJkUHJveHkgXAorICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXIgXAorICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSBcCiAgICAgV2ViUHJvY2Vz
cyBcCiAgICAgV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gXAogICAgIFdlYlByb2Nlc3NQb29sIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXgg
M2I3YmFkMzU4Y2I1Mjk0ZTk3MDViZWNkYjI2ZTA3OGI5MWVlZTFkNi4uOWFmMmQwOWFkNjZiZjU1
M2IyYTY4Y2U0OWU4MGU1OWJiZDE4YTQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTMwMyw3ICszMDMsNyBAQCAtIChCT09MKV9t
YXlBdXRvbWF0aWNhbGx5U2hvd1ZpZGVvUGljdHVyZUluUGljdHVyZQogI2lmICFIQVZFKEFWS0lU
KQogICAgIHJldHVybiBmYWxzZTsKICNlbHNlCi0gICAgaWYgKCFfcGFnZSB8fCAhX3BhZ2UtPnZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIoKSkKKyAgICBpZiAoIV9wYWdlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICByZXR1cm4gX3BhZ2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKS0+bWF5
QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODRhNDc3ZTg2NGQzOTg5ZjUyMTE1NmIzZGMyOTZm
NTA5ZTE0YWEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCkBAIC0wLDAgKzEsMTU2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlfaAorI2Rl
ZmluZSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlfaAorI2lmIFBMQVRGT1JNKElPUykg
fHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKwor
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NM
YXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1WaWV3Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRl
IDxXZWJDb3JlL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lmg+CisjZWxzZQorI2lu
Y2x1ZGUgPFdlYkNvcmUvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmg+CisjZW5kaWYK
KworI2lmIFBMQVRGT1JNKElPUykKK3R5cGVkZWYgV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQVZLaXQgUGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U7CisjZWxz
ZQordHlwZWRlZiBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMgUGxhdGZv
cm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTsKKworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0IGZpbmFsOiBw
dWJsaWMgUmVmQ291bnRlZDxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+LCBwdWJsaWMg
V2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwgIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4gY3JlYXRlKFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0
KG1hbmFnZXIsIGNvbnRleHRJZCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbENvbnRleHQoKSB7IH0KKworICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgbV9tYW5h
Z2VyID0gbnVsbHB0cjsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENvbnRleHQ7CisKKyAgICBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRl
eHQoV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCBjb250
ZXh0SWQpCisgICAgICAgIDogbV9tYW5hZ2VyKCZtYW5hZ2VyKQorICAgICAgICAsIG1fY29udGV4
dElkKGNvbnRleHRJZCkKKyAgICB7CisgICAgfQorCisgICAgLy8gV2ViUGxheWJhY2tTZXNzaW9u
TW9kZWwKKyAgICB2b2lkIHBsYXkoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhdXNlKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCB0b2dnbGVQbGF5U3RhdGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGJlZ2lu
U2NydWJiaW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmRTY3J1YmJpbmcoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNlZWtUb1RpbWUoZG91YmxlKSBvdmVycmlkZTsKKyAgICB2b2lkIGZhc3RTZWVr
KGRvdWJsZSB0aW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpblNjYW5uaW5nQmFja3dhcmQoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGVuZFNjYW5uaW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZWxlY3RBdWRpb01lZGlh
T3B0aW9uKHVpbnQ2NF90KSBvdmVycmlkZTsKKyAgICB2b2lkIHNlbGVjdExlZ2libGVNZWRpYU9w
dGlvbih1aW50NjRfdCkgb3ZlcnJpZGU7CisKKyAgICBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHkqIG1fbWFuYWdlcjsKKyAgICB1aW50NjRfdCBtX2NvbnRleHRJZDsKK307CisKK2NsYXNz
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIg
eworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5Jik7CisgICAgdmlydHVhbCB+V2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5KCk7CisKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKworICAgIFBsYXRm
b3JtV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKiBjb250cm9sc01hbmFnZXJJbnRlcmZhY2Uo
KTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxD
b250ZXh0OworICAgIGZyaWVuZCBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk7
CisKKyAgICBleHBsaWNpdCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkoV2ViUGFnZVBy
b3h5Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CisKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8UmVm
UHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4sIFJlZlB0cjxQbGF0Zm9ybVdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZT4+IE1vZGVsSW50ZXJmYWNlVHVwbGU7CisgICAgTW9kZWxJ
bnRlcmZhY2VUdXBsZSBjcmVhdGVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQp
OworICAgIE1vZGVsSW50ZXJmYWNlVHVwbGUmIGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2
NF90IGNvbnRleHRJZCk7CisgICAgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0JiBlbnN1
cmVNb2RlbCh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIFBsYXRmb3JtV2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlJiBlbnN1cmVJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2
b2lkIGFkZENsaWVudEZvckNvbnRleHQodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHJl
bW92ZUNsaWVudEZvckNvbnRleHQodWludDY0X3QgY29udGV4dElkKTsKKworICAgIC8vIE1lc3Nh
Z2VzIGZyb20gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcgorICAgIHZvaWQgc2V0VXBQbGF5YmFj
a0NvbnRyb2xzTWFuYWdlcldpdGhJRCh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgY2xl
YXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpOworICAgIHZvaWQgcmVzZXRNZWRpYVN0YXRlKHVp
bnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBzZXRDdXJyZW50VGltZSh1aW50NjRfdCBjb250
ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGhvc3RUaW1lKTsKKyAgICB2b2lkIHNl
dEJ1ZmZlcmVkVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBidWZmZXJlZFRpbWUpOwor
ICAgIHZvaWQgc2V0U2Vla2FibGVSYW5nZXNWZWN0b3IodWludDY0X3QgY29udGV4dElkLCBWZWN0
b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2VzKTsKKyAgICB2b2lkIHNldENhblBs
YXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpOworICAgIHZvaWQg
c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8
U3RyaW5nPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2b2lkIHNldExl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8U3Ry
aW5nPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2b2lkIHNldEV4dGVy
bmFsUGxheWJhY2tQcm9wZXJ0aWVzKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBlbmFibGVkLCB1
aW50MzJfdCB0YXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSk7CisgICAgdm9p
ZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJv
b2wpOworICAgIHZvaWQgc2V0RHVyYXRpb24odWludDY0X3QgY29udGV4dElkLCBkb3VibGUgZHVy
YXRpb24pOworICAgIHZvaWQgc2V0UmF0ZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5
aW5nLCBkb3VibGUgcmF0ZSk7CisKKyAgICAvLyBNZXNzYWdlcyB0byBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyCisgICAgdm9pZCBwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBw
YXVzZSh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgdG9nZ2xlUGxheVN0YXRlKHVpbnQ2
NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBiZWdpblNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0
SWQpOworICAgIHZvaWQgZW5kU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9p
ZCBzZWVrVG9UaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpOworICAgIHZvaWQg
ZmFzdFNlZWsodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSk7CisgICAgdm9pZCBiZWdp
blNjYW5uaW5nRm9yd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgYmVnaW5TY2Fu
bmluZ0JhY2t3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBlbmRTY2FubmluZyh1
aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50
NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KTsKKyAgICB2b2lkIHNlbGVjdExlZ2libGVN
ZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KTsKKworICAgIFdl
YlBhZ2VQcm94eSogbV9wYWdlOworICAgIEhhc2hNYXA8dWludDY0X3QsIE1vZGVsSW50ZXJmYWNl
VHVwbGU+IG1fY29udGV4dE1hcDsKKyAgICB1aW50NjRfdCBtX2NvbnRyb2xzTWFuYWdlckNvbnRl
eHRJZCB7IDAgfTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBpbnQ+IG1fY2xpZW50Q291bnRzOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpIHx8
IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKKyNl
bmRpZiAvLyBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQwM2E0YjRjNjAx
NTk3MjgzMDgzZWJmYzMwMDYyZDkyMjE1NGZkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4KQEAgLTAsMCArMSwzOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorbWVzc2FnZXMgLT4gV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5IHsKKyAgICBSZXNldE1lZGlhU3RhdGUodWludDY0X3QgY29udGV4dElkKQor
ICAgIFNldEN1cnJlbnRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1l
LCBkb3VibGUgaG9zdFRpbWUpCisgICAgU2V0QnVmZmVyZWRUaW1lKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSkKKyAgICBTZXRTZWVrYWJsZVJhbmdlc1ZlY3Rvcih1aW50
NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiByYW5nZXMp
CisgICAgU2V0Q2FuUGxheUZhc3RSZXZlcnNlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1
ZSkKKyAgICBTZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQs
IFZlY3RvcjxTdHJpbmc+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCisgICAgU2V0
TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxT
dHJpbmc+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCisgICAgU2V0RXh0ZXJuYWxQ
bGF5YmFja1Byb3BlcnRpZXModWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIHVpbnQz
Ml90IHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKQorICAgIFNldFdpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBkaXNhYmxl
ZCkKKyAgICBTZXREdXJhdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbikK
KyAgICBTZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsIGRvdWJsZSBy
YXRlKQorICAgIFNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXJXaXRoSUQodWludDY0X3QgY29u
dGV4dElkKQorICAgIENsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKQorfQorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjI4YTc0ZDU3YTExNjRm
YWVkNjU5OGJhMzkyOTYwNTIzMGM2Nzk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQpAQCAt
MCwwICsxLDM3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgiCisKKyNpZiBQTEFURk9STShJT1MpIHx8
IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKKyNp
bXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
ck1lc3NhZ2VzLmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNz
YWdlcy5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1wb3J0IDxXZWJDb3JlL1Rp
bWVSYW5nZXMuaD4KKyNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNwcmFnbWEgbWFyayAt
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dAorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsQ29udGV4dDo6cGxheSgpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9t
YW5hZ2VyLT5wbGF5KG1fY29udGV4dElkKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbENvbnRleHQ6OnBhdXNlKCkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21h
bmFnZXItPnBhdXNlKG1fY29udGV4dElkKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbENvbnRleHQ6OnRvZ2dsZVBsYXlTdGF0ZSgpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAg
ICAgICAgbV9tYW5hZ2VyLT50b2dnbGVQbGF5U3RhdGUobV9jb250ZXh0SWQpOworfQorCit2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6YmVnaW5TY3J1YmJpbmcoKQoreworICAg
IGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+YmVnaW5TY3J1YmJpbmcobV9jb250
ZXh0SWQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6ZW5kU2Ny
dWJiaW5nKCkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPmVuZFNj
cnViYmluZyhtX2NvbnRleHRJZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxD
b250ZXh0OjpzZWVrVG9UaW1lKGRvdWJsZSB0aW1lKQoreworICAgIGlmIChtX21hbmFnZXIpCisg
ICAgICAgIG1fbWFuYWdlci0+c2Vla1RvVGltZShtX2NvbnRleHRJZCwgdGltZSk7Cit9CisKK3Zv
aWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpmYXN0U2Vlayhkb3VibGUgdGltZSkK
K3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPmZhc3RTZWVrKG1fY29u
dGV4dElkLCB0aW1lKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6
OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKCkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBt
X21hbmFnZXItPmJlZ2luU2Nhbm5pbmdGb3J3YXJkKG1fY29udGV4dElkKTsKK30KKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpCit7
CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT5iZWdpblNjYW5uaW5nQmFj
a3dhcmQobV9jb250ZXh0SWQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29u
dGV4dDo6ZW5kU2Nhbm5pbmcoKQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFu
YWdlci0+ZW5kU2Nhbm5pbmcobV9jb250ZXh0SWQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsQ29udGV4dDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBvcHRpb25J
ZCkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnNlbGVjdEF1ZGlv
TWVkaWFPcHRpb24obV9jb250ZXh0SWQsIG9wdGlvbklkKTsKK30KKwordm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBv
cHRpb25JZCkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnNlbGVj
dExlZ2libGVNZWRpYU9wdGlvbihtX2NvbnRleHRJZCwgb3B0aW9uSWQpOworfQorCisjcHJhZ21h
IG1hcmsgLSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkKKworUmVmUHRyPFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpj
cmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KHBhZ2UpKTsKK30KKworV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkoV2ViUGFnZVBy
b3h5JiBwYWdlKQorICAgIDogbV9wYWdlKCZwYWdlKQoreworICAgIG1fcGFnZS0+cHJvY2Vzcygp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCksICp0aGlzKTsKK30K
KworV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp+V2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5KCkKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlu
dmFsaWRhdGUoKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Omlu
dmFsaWRhdGUoKQoreworICAgIG1fcGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZSA9IG51bGxwdHI7CisKKyAg
ICBmb3IgKGF1dG8mIHR1cGxlIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7CisgICAgICAgIFJl
ZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+IG1vZGVsOworICAgICAgICBSZWZQ
dHI8UGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+IGludGVyZmFjZTsKKyAgICAg
ICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSB0dXBsZTsKKworICAgICAgICBpbnRlcmZh
Y2UtPmludmFsaWRhdGUoKTsKKyAgICB9CisKKyAgICBtX2NvbnRleHRNYXAuY2xlYXIoKTsKKyAg
ICBtX2NsaWVudENvdW50cy5jbGVhcigpOworfQorCitXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgUmVm
PFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4gbW9kZWwgPSBXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbENvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKKyAgICBSZWY8UGxhdGZv
cm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+IGludGVyZmFjZSA9IFBsYXRmb3JtV2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpjcmVhdGUoKTsKKworICAgIGludGVyZmFjZS0+c2V0V2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWwoJm1vZGVsLmdldCgpKTsKKworICAgIHJldHVybiBzdGQ6Om1h
a2VfdHVwbGUoV1RGTW92ZShtb2RlbCksIFdURk1vdmUoaW50ZXJmYWNlKSk7Cit9CisKK1dlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TW9kZWxJbnRlcmZhY2VUdXBsZSYgV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjplbnN1cmVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBj
b250ZXh0SWQpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2NvbnRleHRNYXAuYWRkKGNvbnRl
eHRJZCwgTW9kZWxJbnRlcmZhY2VUdXBsZSgpKTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50
cnkpCisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBjcmVhdGVNb2RlbEFuZElu
dGVyZmFjZShjb250ZXh0SWQpOworICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
OworfQorCitXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQmIFdlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6ZW5zdXJlTW9kZWwodWludDY0X3QgY29udGV4dElkKQoreworICAgIHJl
dHVybiAqc3RkOjpnZXQ8MD4oZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKSk7Cit9
CisKK1BsYXRmb3JtV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlJiBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OmVuc3VyZUludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCit7Cisg
ICAgcmV0dXJuICpzdGQ6OmdldDwxPihlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQp
KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmFkZENsaWVudEZv
ckNvbnRleHQodWludDY0X3QgY29udGV4dElkKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9j
bGllbnRDb3VudHMuYWRkKGNvbnRleHRJZCwgMSk7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdF
bnRyeSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSsrOworfQorCit2b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cmVtb3ZlQ2xpZW50Rm9yQ29udGV4dCh1aW50
NjRfdCBjb250ZXh0SWQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50Q291bnRzLmNvbnRhaW5zKGNv
bnRleHRJZCkpOworCisgICAgaW50IGNsaWVudENvdW50ID0gbV9jbGllbnRDb3VudHMuZ2V0KGNv
bnRleHRJZCk7CisgICAgQVNTRVJUKGNsaWVudENvdW50ID4gMCk7CisgICAgY2xpZW50Q291bnQt
LTsKKworICAgIGlmIChjbGllbnRDb3VudCA8PSAwKSB7CisgICAgICAgIG1fY2xpZW50Q291bnRz
LnJlbW92ZShjb250ZXh0SWQpOworICAgICAgICBtX2NvbnRleHRNYXAucmVtb3ZlKGNvbnRleHRJ
ZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NsaWVudENvdW50cy5zZXQoY29u
dGV4dElkLCBjbGllbnRDb3VudCk7Cit9CisKKyNwcmFnbWEgbWFyayBNZXNzYWdlcyBmcm9tIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIKKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OnNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXJXaXRoSUQodWludDY0X3QgY29udGV4
dElkKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAobV9jb250cm9sc01hbmFnZXJDb250
ZXh0SWQgPT0gY29udGV4dElkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jb250cm9s
c01hbmFnZXJDb250ZXh0SWQpCisgICAgICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQobV9jb250
cm9sc01hbmFnZXJDb250ZXh0SWQpOworCisgICAgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQg
PSBjb250ZXh0SWQ7CisgICAgZW5zdXJlSW50ZXJmYWNlKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4
dElkKS5lbnN1cmVDb250cm9sc01hbmFnZXIoKTsKKyAgICBhZGRDbGllbnRGb3JDb250ZXh0KG1f
Y29udHJvbHNNYW5hZ2VyQ29udGV4dElkKTsKKworICAgIG1fcGFnZS0+dmlkZW9Db250cm9sc01h
bmFnZXJEaWRDaGFuZ2UoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHRJZCk7Cisj
ZW5kaWYKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNsZWFyUGxh
eWJhY2tDb250cm9sc01hbmFnZXIoKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIW1f
Y29udHJvbHNNYW5hZ2VyQ29udGV4dElkKQorICAgICAgICByZXR1cm47CisKKyAgICByZW1vdmVD
bGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKTsKKyAgICBtX2NvbnRy
b2xzTWFuYWdlckNvbnRleHRJZCA9IDA7CisgICAgbV9wYWdlLT52aWRlb0NvbnRyb2xzTWFuYWdl
ckRpZENoYW5nZSgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpyZXNldE1lZGlhU3RhdGUodWludDY0X3QgY29udGV4dElkKQoreworICAgIGVuc3Vy
ZUludGVyZmFjZShjb250ZXh0SWQpLnJlc2V0TWVkaWFTdGF0ZSgpOworfQorCit2b2lkIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0Q3VycmVudFRpbWUodWludDY0X3QgY29udGV4
dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBob3N0VGltZSkKK3sKKyAgICBlbnN1cmVJ
bnRlcmZhY2UoY29udGV4dElkKS5zZXRDdXJyZW50VGltZShjdXJyZW50VGltZSwgaG9zdFRpbWUp
OworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0QnVmZmVyZWRU
aW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSkKK3sKKyAgICBlbnN1
cmVJbnRlcmZhY2UoY29udGV4dElkKS5zZXRCdWZmZXJlZFRpbWUoYnVmZmVyZWRUaW1lKTsKK30K
Kwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldFNlZWthYmxlUmFuZ2Vz
VmVjdG9yKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJs
ZT4+IHJhbmdlcykKK3sKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gdGltZVJhbmdlcyA9IFRpbWVS
YW5nZXM6OmNyZWF0ZSgpOworICAgIGZvciAoY29uc3QgYXV0byYgcmFuZ2UgOiByYW5nZXMpIHsK
KyAgICAgICAgQVNTRVJUKGlzZmluaXRlKHJhbmdlLmZpcnN0KSk7CisgICAgICAgIEFTU0VSVChp
c2Zpbml0ZShyYW5nZS5zZWNvbmQpKTsKKyAgICAgICAgQVNTRVJUKHJhbmdlLnNlY29uZCA+PSBy
YW5nZS5maXJzdCk7CisgICAgICAgIHRpbWVSYW5nZXMtPmFkZChyYW5nZS5maXJzdCwgcmFuZ2Uu
c2Vjb25kKTsKKyAgICB9CisKKyAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4dElkKS5zZXRTZWVr
YWJsZVJhbmdlcygqdGltZVJhbmdlcyk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UodWludDY0X3QgY29udGV4dElkLCBib29s
IHZhbHVlKQoreworICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldENhblBsYXlGYXN0
UmV2ZXJzZSh2YWx1ZSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3Rv
cjxTdHJpbmc+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit7CisgICAgZW5zdXJl
SW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9u
cywgc2VsZWN0ZWRJbmRleCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwg
VmVjdG9yPFN0cmluZz4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBl
bnN1cmVJbnRlcmZhY2UoY29udGV4dElkKS5zZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25z
KG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6c2V0RXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRpZXModWludDY0X3QgY29udGV4
dElkLCBib29sIGVuYWJsZWQsIHVpbnQzMl90IHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWRE
ZXZpY2VOYW1lKQoreworICAgIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6RXh0ZXJuYWxQ
bGF5YmFja1RhcmdldFR5cGUgdHlwZSA9IHN0YXRpY19jYXN0PFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZTo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGU+KHRhcmdldFR5cGUpOworICAgIEFT
U0VSVCh0eXBlID09IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZUFpclBs
YXkgfHwgdHlwZSA9PSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OlRhcmdldFR5cGVUVk91
dCB8fCB0eXBlID09IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZU5vbmUp
OworCisgICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0RXh0ZXJuYWxQbGF5YmFjayhl
bmFibGVkLCB0eXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKK30KKwordm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHVp
bnQ2NF90IGNvbnRleHRJZCwgYm9vbCBkaXNhYmxlZCkKK3sKKyAgICBlbnN1cmVJbnRlcmZhY2Uo
Y29udGV4dElkKS5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChkaXNhYmxlZCk7Cit9
CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXREdXJhdGlvbih1aW50
NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBlbnN1cmVJbnRlcmZhY2Uo
Y29udGV4dElkKS5zZXREdXJhdGlvbihkdXJhdGlvbik7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpzZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1Bs
YXlpbmcsIGRvdWJsZSByYXRlKQoreworICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNl
dFJhdGUoaXNQbGF5aW5nLCByYXRlKTsKK30KKworI3ByYWdtYSBtYXJrIE1lc3NhZ2VzIHRvIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIKKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OnBsYXkodWludDY0X3QgY29udGV4dElkKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6UGxheShjb250ZXh0SWQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnBh
dXNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlBhdXNlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlE
KCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6dG9nZ2xlUGxh
eVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZVBsYXlTdGF0ZShjb250ZXh0SWQpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OmJlZ2luU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2NydWJiaW5nKGNv
bnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6ZW5kU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVuZFNjcnVi
YmluZyhjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNlZWtUb1RpbWUodWludDY0X3QgY29udGV4dElkLCBkb3Vi
bGUgdGltZSkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OlNlZWtUb1RpbWUoY29udGV4dElkLCB0aW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7
Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpmYXN0U2Vlayh1aW50
NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RmFzdFNlZWsoY29udGV4dElkLCB0aW1lKSwg
bV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpiZWdpblNjYW5uaW5nRm9yd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjYW5u
aW5nRm9yd2FyZChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCh1aW50NjRf
dCBjb250ZXh0SWQpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5nQmFja3dhcmQoY29udGV4dElkKSwgbV9wYWdlLT5w
YWdlSUQoKSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjplbmRT
Y2FubmluZyh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY2FubmluZyhjb250ZXh0SWQpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRl
eCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OlNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCksIG1fcGFnZS0+cGFn
ZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2VsZWN0
TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCit7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpT
ZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCksIG1fcGFnZS0+cGFnZUlE
KCkpOworfQorCitQbGF0Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSogV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Ojpjb250cm9sc01hbmFnZXJJbnRlcmZhY2UoKQoreworICAg
IGlmICghbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIAorICAgIGF1dG8mIGludGVyZmFjZSA9IGVuc3VyZUludGVyZmFjZShtX2NvbnRyb2xz
TWFuYWdlckNvbnRleHRJZCk7CisgICAgcmV0dXJuICZpbnRlcmZhY2U7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5oCmluZGV4IGNkMGQyYmYyMTlmZTk4NTM4ZWNmNzQ4N2E3ODhjMzY2OGU4ODE2Nzcu
LmU0YjcyZWQ1MTFiYTA0ZjlkN2YzNzA5YjMzZTlmNWU3ODllMDczZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5LmgKQEAgLTUzLDE1ICs1MywxNyBAQCB0eXBlZGVmIFdlYkNvcmU6Oldl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyBQbGF0Zm9ybVdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZgogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTsKK2NsYXNzIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTsKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsQ29udGV4dDsKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTsKIAogY2xh
c3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0IGZpbmFsOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+LCBwdWJsaWMgV2ViQ29yZTo6V2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWwsIHB1YmxpYyBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlciAgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxDb250ZXh0PiBjcmVhdGUoV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5JiBtYW5h
Z2VyLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgc3RhdGljIFJlZjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ+IGNyZWF0ZShXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkmIG1h
bmFnZXIsIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dCYgcGxheWJhY2tTZXNzaW9uTW9k
ZWwsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dChtYW5hZ2VyLCBjb250ZXh0SWQpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250
ZXh0KG1hbmFnZXIsIHBsYXliYWNrU2Vzc2lvbk1vZGVsLCBjb250ZXh0SWQpKTsKICAgICB9Ci0g
ICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0KCkgeyB9CisgICAgdmly
dHVhbCB+V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0KCk7CiAKICAgICB2b2lkIGludmFs
aWRhdGUoKSB7IG1fbWFuYWdlciA9IG51bGxwdHI7IH0KIApAQCAtNjksMTEgKzcxLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0TGF5ZXJIb3N0VmlldyhSZXRhaW5QdHI8UGxhdGZvcm1WaWV3PiYm
IGxheWVySG9zdFZpZXcpIHsgbV9sYXllckhvc3RWaWV3ID0gV1RGTW92ZShsYXllckhvc3RWaWV3
KTsgfQogCiBwcml2YXRlOgotICAgIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dChXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkK
LSAgICAgICAgOiBtX21hbmFnZXIoJm1hbmFnZXIpCi0gICAgICAgICwgbV9jb250ZXh0SWQoY29u
dGV4dElkKQotICAgIHsKLSAgICB9CisgICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0
KFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSYsIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q29udGV4dCYsIHVpbnQ2NF90KTsKIAogICAgIC8vIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsCiAg
ICAgdm9pZCBwbGF5KCkgb3ZlcnJpZGU7CkBAIC0xMDIsMTMgKzEwMCwxNCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKCkgb3ZlcnJpZGU7CiAKICAgICBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkqIG1fbWFuYWdlcjsKKyAgICBSZWY8V2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsOwogICAgIHVp
bnQ2NF90IG1fY29udGV4dElkOwogICAgIFJldGFpblB0cjxQbGF0Zm9ybVZpZXcgKj4gbV9sYXll
ckhvc3RWaWV3OwogfTsKIAogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IDog
cHVibGljIFJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiwgcHJpdmF0
ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmKTsKKyAgICBz
dGF0aWMgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBh
Z2VQcm94eSYsIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYpOwogICAgIHZpcnR1YWwg
fldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRl
KCk7CkBAIC0xMTksMTIgKzExOCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZSgpOwogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Q7CiAKLSAgICBQbGF0
Zm9ybVdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSogY29udHJvbHNNYW5hZ2VySW50ZXJmYWNl
KCk7Ci0KIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dDsKIAotICAgIGV4cGxpY2l0IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShX
ZWJQYWdlUHJveHkmKTsKKyAgICBleHBsaWNpdCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkoV2ViUGFnZVByb3h5JiwgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Jik7CiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJikgb3ZlcnJpZGU7CiAKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8UmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsQ29udGV4dD4sIFJlZlB0cjxQbGF0Zm9ybVdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZT4+IE1vZGVsSW50ZXJmYWNlVHVwbGU7CkBAIC0xMzcsMjAgKzEzNCw3IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBNZXNzYWdlcyBmcm9tIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIK
ICAgICB2b2lkIHNldHVwRnVsbHNjcmVlbldpdGhJRCh1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQz
Ml90IHZpZGVvTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5pdGlhbFJlY3QsIGZs
b2F0IGhvc3RpbmdTY2FsZUZhY3RvciwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmUpOwotICAgIHZv
aWQgc2V0VXBWaWRlb0NvbnRyb2xzTWFuYWdlcldpdGhJRCh1aW50NjRfdCBjb250ZXh0SWQpOwot
ICAgIHZvaWQgY2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpOwotICAgIHZvaWQgcmVzZXRNZWRp
YVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBzZXRDdXJyZW50VGltZSh1aW50
NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGhvc3RUaW1lKTsKLSAg
ICB2b2lkIHNldEJ1ZmZlcmVkVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBidWZmZXJl
ZFRpbWUpOwogICAgIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwg
Ym9vbCBoYXNWaWRlbywgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7Ci0gICAgdm9p
ZCBzZXRTZWVrYWJsZVJhbmdlc1ZlY3Rvcih1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxzdGQ6
OnBhaXI8ZG91YmxlLCBkb3VibGU+PiByYW5nZXMpOwotICAgIHZvaWQgc2V0Q2FuUGxheUZhc3RS
ZXZlcnNlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSk7Ci0gICAgdm9pZCBzZXRBdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxTdHJpbmc+
IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOwotICAgIHZvaWQgc2V0TGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxTdHJpbmc+IG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOwotICAgIHZvaWQgc2V0RXh0ZXJuYWxQbGF5
YmFja1Byb3BlcnRpZXModWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIHVpbnQzMl90
IHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLSAgICB2b2lkIHNldFdp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCk7Ci0g
ICAgdm9pZCBzZXREdXJhdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbik7
Ci0gICAgdm9pZCBzZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsIGRv
dWJsZSByYXRlKTsKICAgICB2b2lkIGVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQp
OwogICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpJ
bnRSZWN0IGZpbmFsUmVjdCk7CiAgICAgdm9pZCBjbGVhbnVwRnVsbHNjcmVlbih1aW50NjRfdCBj
b250ZXh0SWQpOwpAQCAtMTYwLDE2ICsxNDQsNiBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICAv
LyBNZXNzYWdlcyB0byBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCi0gICAgdm9pZCBwbGF5KHVp
bnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBwYXVzZSh1aW50NjRfdCBjb250ZXh0SWQpOwot
ICAgIHZvaWQgdG9nZ2xlUGxheVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBi
ZWdpblNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgZW5kU2NydWJiaW5n
KHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBzZWVrVG9UaW1lKHVpbnQ2NF90IGNvbnRl
eHRJZCwgZG91YmxlIHRpbWUpOwotICAgIHZvaWQgZmFzdFNlZWsodWludDY0X3QgY29udGV4dElk
LCBkb3VibGUgdGltZSk7Ci0gICAgdm9pZCBiZWdpblNjYW5uaW5nRm9yd2FyZCh1aW50NjRfdCBj
b250ZXh0SWQpOwotICAgIHZvaWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKHVpbnQ2NF90IGNvbnRl
eHRJZCk7Ci0gICAgdm9pZCBlbmRTY2FubmluZyh1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZv
aWQgcmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICB2b2lkIGRpZFNl
dHVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgZGlkRXhpdEZ1bGxz
Y3JlZW4odWludDY0X3QgY29udGV4dElkKTsKQEAgLTE3NywxMiArMTUxLDExIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpOwogICAg
IHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6Rmxv
YXRSZWN0KTsKICAgICB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KHVpbnQ2NF90IGNvbnRleHRJ
ZCwgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSk7Ci0gICAg
dm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qg
aW5kZXgpOwotICAgIHZvaWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRl
eHRJZCwgdWludDY0X3QgaW5kZXgpOwogICAgIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHVp
bnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlKTsKICAgICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSh1aW50
NjRfdCBjb250ZXh0SWQpOwogCiAgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7CisgICAgUmVmPFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgTW9kZWxJbnRlcmZhY2VUdXBsZT4gbV9jb250ZXh0
TWFwOwogICAgIHVpbnQ2NF90IG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkIHsgMCB9OwogICAg
IEhhc2hNYXA8dWludDY0X3QsIGludD4gbV9jbGllbnRDb3VudHM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCAwMzA2ZTMxZjc4YTA1MDE4OGJh
NDk0NzA0NDJhYzllYTY3ZWJiNDVmLi4xOTNhNTM4MTg5NGUwYzdhYjY0MmNmNjE3ZDM4YzhiMTJl
MGJmYjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW4KQEAgLTIyLDI1ICsyMiwxMiBAQAogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogbWVzc2FnZXMgLT4gV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IHsKLSAgICBSZXNldE1lZGlhU3RhdGUodWludDY0
X3QgY29udGV4dElkKQotICAgIFNldEN1cnJlbnRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91
YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgaG9zdFRpbWUpCi0gICAgU2V0QnVmZmVyZWRUaW1lKHVp
bnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSkKICAgICBTZXRWaWRlb0RpbWVu
c2lvbnModWludDY0X3QgY29udGV4dElkLCBib29sIGhhc1ZpZGVvLCB1bnNpZ25lZCB3aWR0aCwg
dW5zaWduZWQgaGVpZ2h0KQotICAgIFNldFNlZWthYmxlUmFuZ2VzVmVjdG9yKHVpbnQ2NF90IGNv
bnRleHRJZCwgVmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IHJhbmdlcykKLSAgICBT
ZXRDYW5QbGF5RmFzdFJldmVyc2UodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQotICAg
IFNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9y
PFN0cmluZz4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKLSAgICBTZXRMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4g
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKLSAgICBTZXRFeHRlcm5hbFBsYXliYWNr
UHJvcGVydGllcyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgdWludDMyX3QgdGFy
Z2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCi0gICAgU2V0V2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGRpc2FibGVkKQotICAg
IFNldER1cmF0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKQotICAgIFNl
dFJhdGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZG91YmxlIHJhdGUpCiAg
ICAgU2V0dXBGdWxsc2NyZWVuV2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDMyX3Qgdmlk
ZW9MYXllcklELCBXZWJDb3JlOjpJbnRSZWN0IGluaXRpYWxSZWN0LCBmbG9hdCBob3N0aW5nU2Nh
bGVGYWN0b3IsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmUpCiAg
ICAgRW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBFeGl0RnVsbHNjcmVl
bih1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkludFJlY3QgZmluYWxSZWN0KQogICAgIENs
ZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBQcmVwYXJlZFRvUmV0dXJu
VG9JbmxpbmUodWludDY0X3QgY29udGV4dElkLCBib29sIHZpc2libGUsIFdlYkNvcmU6OkludFJl
Y3QgaW5saW5lUmVjdCkKLSAgICBTZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyV2l0aElEKHVpbnQ2
NF90IGNvbnRleHRJZCkKLSAgICBDbGVhclZpZGVvQ29udHJvbHNNYW5hZ2VyKCkKICNpZiBQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICBFeGl0RnVs
bHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2Ny
ZWVuTW9kZSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggYWM5
M2Y4M2Q2NTJiNmY1NzJlMTVhNDE5NWMwMGEyODM5YjM1YTUxYi4uNTU2NTgzMDIzNGI3YThiZjRh
YTY0ODQxODk0MGFiYzg1NzNkYzE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1t
CkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogCiAjaW1wb3J0ICJXZWJQYWdlUHJv
eHkuaCIKKyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oIgogI2ltcG9y
dCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
TWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmgiCkBAIC0xMTEsNjQgKzExMiw2NSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogCiAjcHJhZ21hIG1hcmsgLSBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQKIAorV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxD
b250ZXh0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQoV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5JiBtYW5hZ2VyLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQmIHBs
YXliYWNrU2Vzc2lvbk1vZGVsLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgOiBtX21hbmFnZXIo
Jm1hbmFnZXIpCisgICAgLCBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsKHBsYXliYWNrU2Vzc2lvbk1v
ZGVsKQorICAgICwgbV9jb250ZXh0SWQoY29udGV4dElkKQoreworfQorCitXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENvbnRleHQ6On5XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQoKQorewor
fQorCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6cGxheSgpCiB7Ci0gICAg
aWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5wbGF5KG1fY29udGV4dElkKTsKKyAg
ICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5wbGF5KCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxDb250ZXh0OjpwYXVzZSgpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAg
ICAgbV9tYW5hZ2VyLT5wYXVzZShtX2NvbnRleHRJZCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25N
b2RlbC0+cGF1c2UoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6
OnRvZ2dsZVBsYXlTdGF0ZSgpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5h
Z2VyLT50b2dnbGVQbGF5U3RhdGUobV9jb250ZXh0SWQpOworICAgIG1fcGxheWJhY2tTZXNzaW9u
TW9kZWwtPnRvZ2dsZVBsYXlTdGF0ZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ29udGV4dDo6YmVnaW5TY3J1YmJpbmcoKQogewotICAgIGlmIChtX21hbmFnZXIpCi0gICAg
ICAgIG1fbWFuYWdlci0+YmVnaW5TY3J1YmJpbmcobV9jb250ZXh0SWQpOworICAgIG1fcGxheWJh
Y2tTZXNzaW9uTW9kZWwtPmJlZ2luU2NydWJiaW5nKCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxDb250ZXh0OjplbmRTY3J1YmJpbmcoKQogewotICAgIGlmIChtX21hbmFnZXIp
Ci0gICAgICAgIG1fbWFuYWdlci0+ZW5kU2NydWJiaW5nKG1fY29udGV4dElkKTsKKyAgICBtX3Bs
YXliYWNrU2Vzc2lvbk1vZGVsLT5lbmRTY3J1YmJpbmcoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnNlZWtUb1RpbWUoZG91YmxlIHRpbWUpCiB7Ci0gICAgaWYg
KG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5zZWVrVG9UaW1lKG1fY29udGV4dElkLCB0
aW1lKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5zZWVrVG9UaW1lKHRpbWUpOwogfQog
CiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZmFzdFNlZWsoZG91YmxlIHRp
bWUpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5mYXN0U2Vlayht
X2NvbnRleHRJZCwgdGltZSk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+ZmFzdFNlZWso
dGltZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpiZWdpblNj
YW5uaW5nRm9yd2FyZCgpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2Vy
LT5iZWdpblNjYW5uaW5nRm9yd2FyZChtX2NvbnRleHRJZCk7CisgICAgbV9wbGF5YmFja1Nlc3Np
b25Nb2RlbC0+YmVnaW5TY2FubmluZ0ZvcndhcmQoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENvbnRleHQ6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpCiB7Ci0gICAgaWYgKG1f
bWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5iZWdpblNjYW5uaW5nQmFja3dhcmQobV9jb250
ZXh0SWQpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmJlZ2luU2Nhbm5pbmdCYWNrd2Fy
ZCgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZW5kU2Nhbm5p
bmcoKQogewotICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+ZW5kU2Nhbm5p
bmcobV9jb250ZXh0SWQpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmVuZFNjYW5uaW5n
KCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpyZXF1ZXN0RnVs
bHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1v
ZGUpCkBAIC0xOTEsMTQgKzE5MywxMiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dDo6c2V0VmlkZW9MYXllckdyYXZpdHkoV2ViQ29yZTo6V2ViVmlkZW9GdWxscwogCiB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1
aW50NjRfdCBvcHRpb25JZCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFn
ZXItPnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24obV9jb250ZXh0SWQsIG9wdGlvbklkKTsKKyAgICBt
X3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9uKG9wdGlvbklkKTsK
IH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnNlbGVjdExlZ2libGVN
ZWRpYU9wdGlvbih1aW50NjRfdCBvcHRpb25JZCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAg
ICAgICBtX21hbmFnZXItPnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihtX2NvbnRleHRJZCwgb3B0
aW9uSWQpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPnNlbGVjdExlZ2libGVNZWRpYU9w
dGlvbihvcHRpb25JZCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0
OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCkBAIC0yNDQsMTMgKzI0NCwxNCBAQCB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKCkK
IAogI3ByYWdtYSBtYXJrIC0gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5CiAKLVJlZlB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSkKK1JlZlB0cjxXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk+IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRl
KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5JiBwbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkocGFnZSkpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KHBhZ2UsIHBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eSkpOwogfQogCi1XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UpCitXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYgcGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5KQogICAgIDogbV9wYWdlKCZwYWdlKQorICAgICwgbV9wbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkocGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KQogewogICAg
IG1fcGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFn
ZUlEKCksICp0aGlzKTsKIH0KQEAgLTMxMyw4ICszMTQsMTAgQEAgdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKIAogV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpNb2RlbEludGVyZmFjZVR1cGxlIFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29u
dGV4dElkKQogewotICAgIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+IG1vZGVs
ID0gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJ
ZCk7Ci0gICAgUmVmPFBsYXRmb3JtV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlPiBpbnRlcmZh
Y2UgPSBQbGF0Zm9ybVdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZTo6Y3JlYXRlKCk7CisgICAg
YXV0byYgcGxheWJhY2tTZXNzaW9uTW9kZWwgPSBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS0+ZW5zdXJlTW9kZWwoY29udGV4dElkKTsKKyAgICBSZWY8V2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDb250ZXh0PiBtb2RlbCA9IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6Y3JlYXRl
KCp0aGlzLCBwbGF5YmFja1Nlc3Npb25Nb2RlbCwgY29udGV4dElkKTsKKyAgICBhdXRvJiBwbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2UgPSBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS0+ZW5z
dXJlSW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAgUmVmPFBsYXRmb3JtV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlPiBpbnRlcmZhY2UgPSBQbGF0Zm9ybVdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZTo6Y3JlYXRlKHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSk7CiAKICAgICBpbnRlcmZhY2Ut
PnNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKCZtb2RlbC5nZXQoKSk7CiAgICAgaW50ZXJmYWNl
LT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcigmbW9kZWwuZ2V0KCkpOwpAQCAt
NDAwLDEwOCArNDAzLDExIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpz
ZXR1cEZ1bGxzY3JlZW5XaXRoSUQodWludDY0X3QgY29udGV4dElkLCB1CiAjZW5kaWYKIH0KIAot
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFVwVmlkZW9Db250cm9sc01h
bmFnZXJXaXRoSUQodWludDY0X3QgY29udGV4dElkKQotewotI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICBpZiAobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgPT0gY29udGV4dElkKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpCi0gICAgICAgIHJl
bW92ZUNsaWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOwotCi0gICAg
bV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgPSBjb250ZXh0SWQ7Ci0gICAgZW5zdXJlSW50ZXJm
YWNlKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKS5lbnN1cmVDb250cm9sc01hbmFnZXIoKTsK
LSAgICBhZGRDbGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKTsKLQot
ICAgIG1fcGFnZS0+dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKTsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKGNvbnRleHRJZCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OmNsZWFyVmlkZW9Db250cm9sc01hbmFnZXIoKQotewotI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBpZiAoIW1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICByZW1vdmVDbGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2Vy
Q29udGV4dElkKTsKLSAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IDA7Ci0gICAgbV9w
YWdlLT52aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOwotI2VuZGlmCi19Ci0KLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXNldE1lZGlhU3RhdGUodWludDY0X3Qg
Y29udGV4dElkKQotewotICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnJlc2V0TWVkaWFT
dGF0ZSgpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0Q3Vy
cmVudFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBo
b3N0VGltZSkKLXsKLSAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4dElkKS5zZXRDdXJyZW50VGlt
ZShjdXJyZW50VGltZSwgaG9zdFRpbWUpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6c2V0QnVmZmVyZWRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1
ZmZlcmVkVGltZSkKLXsKLSAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4dElkKS5zZXRCdWZmZXJl
ZFRpbWUoYnVmZmVyZWRUaW1lKTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OnNldFZpZGVvRGltZW5zaW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFzVmlk
ZW8sIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCiB7CiAgICAgZW5zdXJlSW50ZXJm
YWNlKGNvbnRleHRJZCkuc2V0VmlkZW9EaW1lbnNpb25zKGhhc1ZpZGVvLCB3aWR0aCwgaGVpZ2h0
KTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFNlZWthYmxl
UmFuZ2VzVmVjdG9yKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUs
IGRvdWJsZT4+IHJhbmdlcykKLXsKLSAgICBSZWZQdHI8VGltZVJhbmdlcz4gdGltZVJhbmdlcyA9
IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwotICAgIGZvciAoY29uc3QgYXV0byYgcmFuZ2UgOiByYW5n
ZXMpIHsKLSAgICAgICAgQVNTRVJUKGlzZmluaXRlKHJhbmdlLmZpcnN0KSk7Ci0gICAgICAgIEFT
U0VSVChpc2Zpbml0ZShyYW5nZS5zZWNvbmQpKTsKLSAgICAgICAgQVNTRVJUKHJhbmdlLnNlY29u
ZCA+PSByYW5nZS5maXJzdCk7Ci0gICAgICAgIHRpbWVSYW5nZXMtPmFkZChyYW5nZS5maXJzdCwg
cmFuZ2Uuc2Vjb25kKTsKLSAgICB9Ci0KLSAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4dElkKS5z
ZXRTZWVrYWJsZVJhbmdlcygqdGltZVJhbmdlcyk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UodWludDY0X3QgY29udGV4dElk
LCBib29sIHZhbHVlKQotewotICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldENhblBs
YXlGYXN0UmV2ZXJzZSh2YWx1ZSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQs
IFZlY3RvcjxTdHJpbmc+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCi17Ci0gICAg
ZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMo
b3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRl
eHRJZCwgVmVjdG9yPFN0cmluZz4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKLXsK
LSAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4dElkKS5zZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb25zKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6c2V0RXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRpZXModWludDY0X3Qg
Y29udGV4dElkLCBib29sIGVuYWJsZWQsIHVpbnQzMl90IHRhcmdldFR5cGUsIFN0cmluZyBsb2Nh
bGl6ZWREZXZpY2VOYW1lKQotewotICAgIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZTo6RXh0
ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdHlwZSA9IHN0YXRpY19jYXN0PFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZTo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGU+KHRhcmdldFR5cGUpOwot
ICAgIEFTU0VSVCh0eXBlID09IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZTo6VGFyZ2V0VHlw
ZUFpclBsYXkgfHwgdHlwZSA9PSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U6OlRhcmdldFR5
cGVUVk91dCB8fCB0eXBlID09IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZTo6VGFyZ2V0VHlw
ZU5vbmUpOwotICAgIAotICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldEV4dGVybmFs
UGxheWJhY2soZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7Ci19Ci0KLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZGlzYWJsZWQpCi17Ci0gICAgZW5zdXJl
SW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoZGlz
YWJsZWQpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0RHVy
YXRpb24odWludDY0X3QgY29udGV4dElkLCBkb3VibGUgZHVyYXRpb24pCi17Ci0gICAgZW5zdXJl
SW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0RHVyYXRpb24oZHVyYXRpb24pOwotfQotCi12b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0UmF0ZSh1aW50NjRfdCBjb250ZXh0SWQs
IGJvb2wgaXNQbGF5aW5nLCBkb3VibGUgcmF0ZSkKLXsKLSAgICBlbnN1cmVJbnRlcmZhY2UoY29u
dGV4dElkKS5zZXRSYXRlKGlzUGxheWluZywgcmF0ZSk7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjplbnRlckZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQog
ewogICAgIGF1dG8mIGludGVyZmFjZSA9IGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpOwpAQCAt
NTU3LDU2ICs0NjMsNiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cHJl
cGFyZWRUb1JldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZAogCiAjcHJhZ21hIG1hcmsg
TWVzc2FnZXMgdG8gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcgogCi12b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6cGxheSh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpQbGF5KGNvbnRl
eHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6cGF1c2UodWludDY0X3QgY29udGV4dElkKQotewotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UGF1c2UoY29udGV4dElkKSwg
bV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Ojp0b2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKQotewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRl
KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6YmVnaW5TY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQotewot
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6QmVn
aW5TY3J1YmJpbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjplbmRTY3J1YmJpbmcodWludDY0X3QgY29udGV4
dElkKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6RW5kU2NydWJiaW5nKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2Vla1RvVGltZSh1aW50NjRfdCBj
b250ZXh0SWQsIGRvdWJsZSB0aW1lKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2Vla1RvVGltZShjb250ZXh0SWQsIHRpbWUpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OmZhc3RTZWVrKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpCi17Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpGYXN0U2Vlayhjb250
ZXh0SWQsIHRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OkJlZ2luU2Nhbm5pbmdGb3J3YXJkKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOwot
fQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0Jh
Y2t3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNrd2FyZChjb250ZXh0
SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OmVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkVuZFNjYW5uaW5nKGNv
bnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKHVpbnQ2NF90IGNvbnRleHRJZCwg
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUp
CiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpSZXF1ZXN0RnVsbHNjcmVlbk1vZGUoY29udGV4dElkLCBtb2RlKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CkBAIC02NjMsMTYgKzUxOSw2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpzZXRWaWRlb0xheWVyR3Jhdml0eSh1aW50NjRfdCBjb250ZXh0SWQsIFdlCiAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xh
eWVyR3Jhdml0eUVudW0oY29udGV4dElkLCAodW5zaWduZWQpZ3Jhdml0eSksIG1fcGFnZS0+cGFn
ZUlEKCkpOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2VsZWN0
QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQotewot
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2Vs
ZWN0QXVkaW9NZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7
Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZWxlY3RMZWdpYmxl
TWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKLXsKLSAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlNlbGVjdExl
Z2libGVNZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19
Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmdWxsc2NyZWVuTW9kZUNo
YW5nZWQodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChjb250ZXh0
SWQsIG1vZGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKQEAgLTY4MywxNSArNTI5LDYgQEAgYm9vbCBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmlzVmlzaWJsZSgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fcGFnZS0+aXNWaWV3VmlzaWJsZSgpICYmIG1fcGFnZS0+aXNJbldpbmRvdygpOwogfQog
Ci1QbGF0Zm9ybVdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSogV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Ojpjb250cm9sc01hbmFnZXJJbnRlcmZhY2UoKQotewotICAgIGlmICghbV9j
b250cm9sc01hbmFnZXJDb250ZXh0SWQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
YXV0byYgaW50ZXJmYWNlID0gZW5zdXJlSW50ZXJmYWNlKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4
dElkKTsKLSAgICByZXR1cm4gJmludGVyZmFjZTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSh1aW50NjRfdCBjb250
ZXh0SWQpCiB7CiAgICAgYm9vbCBpc1ZpZXdWaXNpYmxlID0gbV9wYWdlLT5pc1ZpZXdWaXNpYmxl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGI5YTFj
Y2RhN2EzZjEwY2JhMGI5Mjg0OTFiNzQ2NzUwNzkzZWY3ZjAuLjg5NGFlY2QwNDQ4NjYxOWQxMzkz
NWE4OGVjOTdiNTY5ZGYxZDk5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC05Nyw2ICs5Nyw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwRGF0YS5o
IgogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgiCiAj
aW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHkuaCIK
ICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgpAQCAtNDcxLDcgKzQ3Miw4IEBAIFdlYlBhZ2VQ
cm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcywgdWluCiAgICAgbV9mdWxsU2NyZWVuTWFuYWdlciA9IFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9wYWdlQ2xpZW50LmZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHlDbGllbnQoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShN
QUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi0gICAgbV92aWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyID0gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoKnRo
aXMpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlciA9IFdlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6Y3JlYXRlKCp0aGlzKTsKKyAgICBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIg
PSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZSgqdGhpcywgKm1fcGxheWJh
Y2tTZXNzaW9uTWFuYWdlcik7CiAjZW5kaWYKICNpZiBFTkFCTEUoVklCUkFUSU9OKQogICAgIG1f
dmlicmF0aW9uID0gV2ViVmlicmF0aW9uUHJveHk6OmNyZWF0ZSh0aGlzKTsKQEAgLTcwOCw3ICs3
MTAsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MoKQogICAgIG1f
ZnVsbFNjcmVlbk1hbmFnZXIgPSBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoKnRo
aXMsIG1fcGFnZUNsaWVudC5mdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KCkpOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJF
U0VOVEFUSU9OX01PREUpKQotICAgIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IFdlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKCp0aGlzKTsKKyAgICBtX3BsYXliYWNrU2Vz
c2lvbk1hbmFnZXIgPSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZSgqdGhp
cyk7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpjcmVhdGUoKnRoaXMsICptX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOwogI2Vu
ZGlmCiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpAQCAtNDAyOCw5ICs0MDMxLDE0IEBA
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqIFdlYlBhZ2VQcm94eTo6ZnVsbFNjcmVlbk1hbmFn
ZXIoKQogI2VuZGlmCiAgICAgCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQotUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eT4gV2ViUGFnZVByb3h5Ojp2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkK
K1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSogV2ViUGFnZVByb3h5OjpwbGF5YmFja1Nl
c3Npb25NYW5hZ2VyKCkKIHsKLSAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOwor
ICAgIHJldHVybiBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIuZ2V0KCk7Cit9CisKK1dlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eSogV2ViUGFnZVByb3h5Ojp2aWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyKCkKK3sKKyAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmdldCgpOwogfQog
I2VuZGlmCiAKQEAgLTUwNjMsNiArNTA3MSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRT
dGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0U3RhdGVSZWFzb24pCiAgICAgbV92aXNpYmxlU2Ny
b2xsZXJUaHVtYlJlY3QgPSBJbnRSZWN0KCk7CiAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisgICAgaWYgKG1f
cGxheWJhY2tTZXNzaW9uTWFuYWdlcikgeworICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbk1hbmFn
ZXItPmludmFsaWRhdGUoKTsKKyAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyID0gbnVs
bHB0cjsKKyAgICB9CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlcikgewogICAgICAg
ICBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmludmFsaWRhdGUoKTsKICAgICAgICAgbV92aWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyID0gbnVsbHB0cjsKQEAgLTYwMzksNyArNjA1MSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojp2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpCiBib29sIFdlYlBh
Z2VQcm94eTo6aGFzQWN0aXZlVmlkZW9Gb3JDb250cm9sc01hbmFnZXIoKSBjb25zdAogewogI2lm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKLSAgICByZXR1cm4gbV92aWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyICYmIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlci0+Y29udHJvbHNNYW5hZ2Vy
SW50ZXJmYWNlKCkgJiYgbV9tZWRpYVN0YXRlICYgTWVkaWFQcm9kdWNlcjo6SGFzQXVkaW9PclZp
ZGVvOworICAgIHJldHVybiBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIgJiYgbV9wbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLT5jb250cm9sc01hbmFnZXJJbnRlcmZhY2UoKSAmJiBtX21lZGlhU3RhdGUg
JiBNZWRpYVByb2R1Y2VyOjpIYXNBdWRpb09yVmlkZW87CiAjZWxzZQogICAgIHJldHVybiBmYWxz
ZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGVi
YTE1MTBmZjViOWE3MDcxNDZiNzQyMWEwZDQyMmQ5YWUzYWVmNTQuLmFkMjAxNDg3MGY1MTU3MGNk
NmJkMDJiNWU5OTFiNTY5YzQwNzVjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTE5Miw2ICsxOTIsNyBAQCBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
OwogY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eTsKIGNsYXNzIFdlYkVkaXRDb21tYW5kUHJveHk7
CiBjbGFzcyBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OworY2xhc3MgV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OwogY2xhc3MgV2ViTmF2aWdhdGlvblN0YXRlOwogY2xhc3MgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKQEAgLTMy
OCw3ICszMjksOCBAQCBwdWJsaWM6CiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSogZnVs
bFNjcmVlbk1hbmFnZXIoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKLSAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCk7Cisg
ICAgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KiBwbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
KCk7CisgICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KiB2aWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyKCk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTE1NDcsNiArMTU0OSw3
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk+IG1fZnVs
bFNjcmVlbk1hbmFnZXI7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShN
QUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisgICAgUmVmUHRyPFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyOwogICAg
IFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IG1fdmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ZGE1NzFlYTA2NGM0NDky
OTkyZGQzOGY4ODdmZTU1MjQwYTlmYWIyLi43ODFmMTE0YjVjNmJiOGMzYTBiNjRiNmNjMmVjOTE5
NDczMmQ4YzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNzA1LDYgKzE3MDUsMTQgQEAKIAkJQ0Q3M0JBNEUxMzFBQ0RCNzAw
RUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENzNCQTQ4MTMxQUNEOEUw
MEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07
CiAJCUNENzNCQTUzMTMxQjY0NUIwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDczQkEzNzEz
MUEyOUZFMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwICovOyB9OwogCQlDREEw
NDFGNDFBQ0UyMTA1MDA0QTEzRUMgLyogQmFja0JvYXJkU2VydmljZXNTUEkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTA0MUYzMUFDRTIxMDUwMDRB
MTNFQyAvKiBCYWNrQm9hcmRTZXJ2aWNlc1NQSS5oICovOyB9OworCQlDREEyOUExQTFDQkRCRjQx
MDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTE4MUNCREJGNDEwMDkwMUNDRiAv
KiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tICovOyB9OworCQlDREEyOUExQjFDQkRCRjQx
MDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMTkxQ0JEQkY0MTAwOTAxQ0NGIC8q
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCAqLzsgfTsKKwkJQ0RBMjlBMjAxQ0JFQjVGQjAw
OTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMUUxQ0JFQjVGQjAwOTAxQ0NG
IC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oICovOyB9OworCQlDREEyOUEyMTFD
QkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMUYxQ0JFQjVG
QjAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSAqLzsgfTsKKwkJ
Q0RBMjlBMjgxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RBMjlBMjQxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlDREEyOUEyOTFDQkVCNjdBMDA5MDFDQ0Yg
LyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEyOUEyNTFDQkVCNjdBMDA5MDFDQ0YgLyog
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VzLmggKi87IH07CisJCUNEQTI5QTJBMUNC
RUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RBMjlBMjYxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCUNEQTI5QTJCMUNCRUI2N0EwMDkwMUNDRiAv
KiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMjcxQ0JFQjY3QTAwOTAxQ0NG
IC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi87IH07CiAJCUNE
QzM4MkZFMTcyMTE3OTkwMDhBMkZDMyAvKiBTZWNJdGVtU2hpbUxpYnJhcnkubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGOEE3ODEzOEI0NjA5MDBB
OTVGNDQgLyogU2VjSXRlbVNoaW1MaWJyYXJ5Lm1tICovOyB9OwogCQlDREMzODMwNzE3MjExN0RE
MDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzM4MkY5MTcyMTE2RDMwMDhBMkZDMyAv
KiBDb29raWVTdG9yYWdlU2hpbUxpYnJhcnkuY3BwICovOyB9OwogCQlDREMzODMwQzE3MjEyMjgy
MDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMzODMwQjE3MjEyMUNFMDA4QTJGQzMgLyog
Q29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmggKi87IH07CkBAIC0zNzc2LDYgKzM3ODQsMTYgQEAK
IAkJQ0Q3M0JBNDkxMzFBQ0Q4RTAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2Fn
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRnVsbFNjcmVlbk1hbmFn
ZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDczQkE0QTEzMUFD
RDhGMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNz
YWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREEwNDFGMzFBQ0UyMTA1MDA0
QTEzRUMgLyogQmFja0JvYXJkU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQmFja0JvYXJkU2VydmljZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBMjlBMTgxQ0JEQkY0MTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREEyOUEx
OTFDQkRCRjQxMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTI5QTFDMUNCREJGNUIwMDkwMUNDRiAvKiBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQTI5QTFFMUNCRUI1RkIwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQTI5QTFGMUNCRUI1RkIwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQTI5QTIyMUNCRUI2MUEwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REEyOUEyNDFDQkVCNjdBMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMjUxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBMjlBMjYxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREEyOUEyNzFDQkVCNjdBMDA5MDFD
Q0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVz
c2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDMzgyRjcxNzIxMTUwNjAw
OEEyRkMzIC8qIENGTmV0d29yay5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENGTmV0d29y
ay5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DRk5ldHdvcmsu
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQlDREMzODJGOTE3MjEx
NkQzMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNEQzM4MzA2MTcyMTE3OTkwMDhBMkZDMyAvKiBXZWJQcm9jZXNzU2hpbS5keWxp
YiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBp
bGVkLm1hY2gtby5keWxpYiI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFdlYlByb2Nlc3NT
aGltLmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNDYzNiw2
ICs0NjU0LDkgQEAKIAkJCQk5OTg2QkRENjFDQTlBMjIyMDA0ODAwQUEgLyogV2ViQXV0b21hdGlv
blNlc3Npb25Db2NvYS5tbSAqLywKIAkJCQkxQUMwMjczRTE5NjYyMkQ2MDBDMTJCNzUgLyogV2Vi
UGFnZVByb3h5Q29jb2EubW0gKi8sCiAJCQkJN0M0Njk0Q0IxQTRCNTEwQTAwQUQ1ODQ1IC8qIFdl
YlBhc3RlYm9hcmRQcm94eUNvY29hLm1tICovLAorCQkJCUNEQTI5QTFFMUNCRUI1RkIwMDkwMUND
RiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCAqLywKKwkJCQlDREEyOUEyMjFD
QkVCNjFBMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluICovLAorCQkJCUNEQTI5QTFGMUNCRUI1RkIwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHkubW0gKi8sCiAJCQkJN0NFNEQyMTUxQTQ5MTQ4NDAwQzdGMTUyIC8qIFdl
YlByb2Nlc3NQb29sQ29jb2EubW0gKi8sCiAJCQkJMUEwNEY2MTcxQTRBM0E3QTAwQTIxQjZFIC8q
IFdlYlByb2Nlc3NQcm94eUNvY29hLm1tICovLAogCQkJCTUyRDVBMUFBMUM1NzQ5NEUwMERFMzRB
MyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCAqLywKQEAgLTU1NzcsNiArNTU5
OCw5IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdDNkU3MEY5
MThCMkQ0QTAwMEYyNEUyRSAvKiBXZWJQcm9jZXNzQ29jb2EubW0gKi8sCisJCQkJQ0RBMjlBMTkx
Q0JEQkY0MTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCAqLywKKwkJCQlD
REEyOUExQzFDQkRCRjVCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNz
YWdlcy5pbiAqLywKKwkJCQlDREEyOUExODFDQkRCRjQxMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5tbSAqLywKIAkJCQk1MkQ1QTFCMjFDNTc0OUYyMDBERTM0QTMgLyogV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oICovLAogCQkJCTUyRDVBMUIzMUM1NzQ5RjIwMERFMzRB
MyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluICovLAogCQkJCTUyRDVB
MUI0MUM1NzQ5RjIwMERFMzRBMyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tICovLApA
QCAtNjk0OSw2ICs2OTczLDEwIEBACiAJCQkJQkNCRDM5MTMxMjVCQjFBODAwRDJDMjlGIC8qIFdl
YlBhZ2VQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJN0M0Njk0QzcxQTRCNEVBMDAwQUQ1ODQ1IC8q
IFdlYlBhc3RlYm9hcmRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJN0M0Njk0Qzgx
QTRCNEVBMTAwQUQ1ODQ1IC8qIFdlYlBhc3RlYm9hcmRQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJ
Q0RBMjlBMjQxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNEQTI5QTI1MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZXMuaCAqLywKKwkJCQlDREEyOUEyNjFDQkVCNjdB
MDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKKwkJCQlDREEyOUEyNzFDQkVCNjdBMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLywKIAkJCQkxQTA0M0Y2NzEyNTE0RDhCMDBGRkJG
QjUgLyogV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFB
MDQzRjY4MTI1MTREOEIwMEZGQkZCNSAvKiBXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgg
Ki8sCiAJCQkJQkMzMDY2QkMxMjVBNDQyMTAwRTcxMjc4IC8qIFdlYlByb2Nlc3NNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLApAQCAtNzU1OCw2ICs3NTg2LDcgQEAKIAkJCQk1MTREOUY1NzE5MTE5RDM1
MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZE
RTY1QTE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTAwMkQ0OTE5NkIzNDVEMDBCOUFENDQgLyogU2Vzc2lvblN0YXRlQ29kaW5nLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDREEyOUEyMDFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTNFM0UwRTE4ODczOTg5MDAx
ODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5QzgxRDVBMUMy
MEU3RTIwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5
OTU1QTZFQzFDNzk4MEMyMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uaCBpbiBIZWFk
ZXJzICovLApAQCAtNzk4Miw2ICs4MDExLDcgQEAKIAkJCQlBNUVGRDM4QzE2QjBFODhDMDBCMkYw
RTggLyogV0tQYWdlVmlzaWJpbGl0eVR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZBQjU0
MTE5MkIxQzRBMDAzQTlGRDEgLyogV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyREExRTRGRTE4QzAyQjZBMDBEQkM5MjkgLyogV0tQREZWaWV3LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDREEyOUEyOTFDQkVCNjdBMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzEzNUFBOTE3M0IwQkNB
MDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRB
QkE3NzQxQTgxN0VFNjAwRUYwRjFBIC8qIFdLUGx1Z2luTG9hZFBvbGljeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFGREQzMTcxODkxQzk0NzAwMTUzOTcwIC8qIFdLUHJlZmVyZW5jZXMuaCBpbiBI
ZWFkZXJzICovLApAQCAtODA0Miw2ICs4MDcyLDcgQEAKIAkJCQkzNzdFQUQ0ODE3RTJDNzdCMDAy
RDE5M0QgLyogV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGNjExM0UyOTEyNkNFMTlCMDA1N0QwQTcgLyogV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBp
biBIZWFkZXJzICovLAogCQkJCTRBM0NDMThGMTlCMDdCOEEwMEQxNEFFRiAvKiBXS1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREEyOUExQjFDQkRCRjQx
MDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFBRjA4OUIxOTI2N0VFNTAwQjYzOTBDIC8qIFdLVXNlclNjcmlwdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzc3RUFENDkxN0UyQzc3QjAwMkQxOTNEIC8qIFdLVXNlclNjcmlwdEluamVjdGlv
blRpbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUYwODlEMTkyNjdGQzgwMEI2MzkwQyAvKiBX
S1VzZXJTY3JpcHRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDgzLDYgKzgxMTQsNyBA
QAogCQkJCTFBNTcxMDlGMUFCQTAwMjcwMDJGQUJCRSAvKiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzQTI1M0YzMUM5MjQxMTIwMEY5RjY4RCAvKiBXS1ByZXZp
ZXdBY3Rpb25JdGVtSWRlbnRpZmllcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0NDMTY3MTg5
MDZBQ0YwMDFFNkVEOCAvKiBXS1dlYlZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQTI5QTJC
MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFERjU5MUIxODkwNTI4RTAwNDNDMTQ1IC8qIFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJEN0FBRkQ2MThDOTU2QUYw
MEE3QUNENCAvKiBXS1dlYlZpZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQzE0MTUxMThBQzQ3RUUwMDZDNjAyQyAvKiBXS1dlYlZpZXdDb25maWd1cmF0aW9u
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NzEwLDYgKzg3NDIsNyBAQAogCQkJCTdDMUJB
MzNEMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBQjQwRUU1MUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnMubW0g
aW4gU291cmNlcyAqLywKIAkJCQlCQzU3NTYxMzEyNkUwMTM4MDA2RjBGMTIgLyogQVBJRXJyb3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBMjlBMkExQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQUMxMzM3MTE4NTY2QzdDMDBGM0VDMDUgLyogQVBJRnJhbWVIYW5kbGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkRGOUVFRTUxQTc4MUZCNDAwQjZDRkJFIC8qIEFQSUZyYW1lSW5m
by5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUMxMzM3NDE4NTdDMjFFMDBGM0VDMDUgLyogQVBJ
R2VvbWV0cnkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04ODUzLDYgKzg4ODYsNyBAQAogCQkJCTJE
NUFCNjMwMUE2OUQ2RkIwMDE0QTlDQiAvKiBNZXNzYWdlUmVjb3JkZXJQcm9iZXMuZCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBQUIwMzc5MTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUMwRTNBQTdCMTIwOUU4MzUwMEE0OUQwMSAvKiBNb2R1bGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBMjlBMjgxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQzBFM0FBN0ExMjA5RTgzMDAwQTQ5RDAxIC8qIE1vZHVsZUNGLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJENTAzNjVFMUJDQzc5M0YwMEUyMEJCMyAvKiBOYXRpdmVXZWJHZXN0dXJlRXZlbnRN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyREE5NDQ5RTE4ODRFNEYwMDBFRDg2REIgLyogTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudElPUy5tbSBpbiBTb3VyY2VzICovLApAQCAtODk1NSw2ICs4OTg5
LDcgQEAKIAkJCQk3QzEzNUFBQzE3M0IwQ0ZGMDA1ODZBRTIgLyogUGx1Z2luSW5mb3JtYXRpb25N
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUVGQ0MxMzExRDAxRjk2MDA4MjE5RDMgLyogUGx1
Z2luSW5mb1N0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRUZDQ0JEMTFEMDJDNUUwMDgy
MTlEMyAvKiBQbHVnaW5JbmZvU3RvcmVNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlDREEyOUEx
QTFDQkRCRjQxMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBMDQzOTc3MTI0RDAzNDgwMEZGQkZCNSAvKiBQbHVnaW5Qcm9jZXNzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBMEVDOTA3MTI0QzBBQjgwMDdFRjRBNSAvKiBQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTBFQzkxMDEyNEMwQUY1
MDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtOTAwOCw2ICs5MDQzLDcgQEAKIAkJCQkwRjU5NDc5QTE4N0IzQjYwMDA0Mzc4NTcg
LyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjBDMzY1QzE4QzA1Q0ExMDBGNjA3RDcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGNTk0N0EzMTg3QjNCN0QwMDQzNzg1NyAv
KiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUNEQTI5QTIxMUNCRUI1RkIwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjU5NDc5QzE4N0IzQjYwMDA0Mzc4NTcg
LyogUmVtb3RlU2Nyb2xsaW5nVHJlZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzExMUIwOTEx
MkY1RTNDMDAzMzdCQUIgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQUFCNEFBQTEyOTZGMTU0MDAyMzk1MkYgLyogU2FuZGJveEV4dGVuc2lvbk1hYy5tbSBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDI3ZDA5MjhhMTY5OTgx
N2U2ZTM2YjFjNjE1NDA5M2U0NTY4NzQzOTguLjU2ZDc0YTAyZmNiMjljYTk5MWY5ZDhlNjdmMGYx
ODhlZTlhMGMyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAK
ICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlci5oIiAKICNpbmNsdWRlICJXZWJQb3B1cE1lbnUuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIK
QEAgLTg1MywzNCArODU0LDM0IEBAIFBhc3NSZWZQdHI8U2Nyb2xsaW5nQ29vcmRpbmF0b3I+IFdl
YkNocm9tZUNsaWVudDo6Y3JlYXRlU2Nyb2xsaW5nQ29vcmRpbmF0b3IoUGFnCiAjaWYgUExBVEZP
Uk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01P
REUpKQogYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewot
ICAgIHJldHVybiBtX3BhZ2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKS0+c3VwcG9ydHNWaWRl
b0Z1bGxzY3JlZW4obW9kZSk7CisgICAgcmV0dXJuIG1fcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFu
YWdlcigpLnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKG1vZGUpOwogfQogCi12b2lkIFdlYkNocm9t
ZUNsaWVudDo6c2V0VXBWaWRlb0NvbnRyb2xzTWFuYWdlcihXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50JiB2aWRlb0VsZW1lbnQpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0VXBQbGF5YmFja0Nv
bnRyb2xzTWFuYWdlcihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCiB7
Ci0gICAgbV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCktPnNldFVwVmlkZW9Db250cm9s
c01hbmFnZXIodmlkZW9FbGVtZW50KTsKKyAgICBtX3BhZ2UtPnBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXIoKS5zZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKG1lZGlhRWxlbWVudCk7CiB9CiAKLXZv
aWQgV2ViQ2hyb21lQ2xpZW50OjpjbGVhclZpZGVvQ29udHJvbHNNYW5hZ2VyKCkKK3ZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpjbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKIHsKLSAgICBtX3BhZ2UtPnZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIoKS0+Y2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpOworICAgIG1fcGFnZS0+cGxh
eWJhY2tTZXNzaW9uTWFuYWdlcigpLmNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIobWVkaWFF
bGVtZW50KTsKIH0KIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmVudGVyVmlkZW9GdWxsc2NyZWVu
Rm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCwg
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUp
CiB7CiAgICAgQVNTRVJUKG1vZGUgIT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlTm9uZSk7Ci0gICAgbV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCktPmVu
dGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KHZpZGVvRWxlbWVudCwgbW9kZSk7Cisg
ICAgbV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkuZW50ZXJWaWRlb0Z1bGxzY3JlZW5G
b3JWaWRlb0VsZW1lbnQodmlkZW9FbGVtZW50LCBtb2RlKTsKIH0KIAogdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZp
ZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50KQogewotICAgIG1fcGFnZS0+dmlkZW9GdWxsc2NyZWVu
TWFuYWdlcigpLT5leGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KHZpZGVvRWxlbWVu
dCk7CisgICAgbV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkuZXhpdFZpZGVvRnVsbHNj
cmVlbkZvclZpZGVvRWxlbWVudCh2aWRlb0VsZW1lbnQpOwogfQogCiAjaWYgUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiB2b2lkIFdlYkNocm9tZUNsaWVu
dDo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yZTo6SFRN
TFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50LCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGUgdGFyZ2V0TW9kZSkKIHsKLSAgICBtX3BhZ2UtPnZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIoKS0+ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24odmlk
ZW9FbGVtZW50LCB0YXJnZXRNb2RlKTsKKyAgICBtX3BhZ2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIoKS5leGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbih2aWRlb0VsZW1l
bnQsIHRhcmdldE1vZGUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGRh
NjZmMTUxMGU1ZjgxNGZjY2JmMDMzMzBjM2JjMmM5NWE3NDJjOWIuLjFlZWE2ODczNmZhZTkwY2Iy
N2Q4YTVhZjNiOTU3ODVmMWZkYjAwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjQ0LDgg
KzI0NCw4IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMp
ICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAgICAgYm9vbCBzdXBwb3J0c1Zp
ZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGUpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0VXBWaWRlb0NvbnRyb2xzTWFuYWdlcihX
ZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGVhclZpZGVv
Q29udHJvbHNNYW5hZ2VyKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRVcFBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQo
V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBleGl0VmlkZW9GdWxs
c2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmKSBvdmVycmlk
ZTsKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBk
MWRiNjJmOTg2NTkwMDhiN2VkZThiYTE3MzljM2ZjNzZjMTZiMjI0Li5mODU4OTIyOGFiZjE1OGY2
NWYwNzA0NTA1ZjkzNmVmYmI1ZGNhMzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC05MSw2ICs5MSw3IEBACiAjaW5jbHVkZSAiV2ViUGFn
ZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU92ZXJsYXkuaCIKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIu
aCIKICNpbmNsdWRlICJXZWJQbHVnSW5DbGllbnQuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnUu
aCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgiCkBAIC0zMTg4LDExICsz
MTg5LDE4IEBAIFdlYkluc3BlY3RvclVJKiBXZWJQYWdlOjppbnNwZWN0b3JVSSgpCiB9CiAKICNp
ZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkpCi1XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKiBXZWJQYWdlOjp2aWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyKCkKK1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXImIFdlYlBhZ2U6OnBs
YXliYWNrU2Vzc2lvbk1hbmFnZXIoKQoreworICAgIGlmICghbV9wbGF5YmFja1Nlc3Npb25NYW5h
Z2VyKQorICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIgPSBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiAqbV9wbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOworfQorCitXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyJiBXZWJQYWdlOjp2aWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyKCkKIHsKICAgICBpZiAoIW1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlcikK
LSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6Y3JlYXRlKHRoaXMpOwotICAgIHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
Z2V0KCk7CisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmNyZWF0ZSgqdGhpcywgcGxheWJhY2tTZXNzaW9uTWFuYWdlcigpKTsKKyAg
ICByZXR1cm4gKm1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlcjsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBkNTkxOWNjODI4ODM4
YTJhNmZhMTViNDc4MzFkMzY0MDA4ZjY2ZDFmLi4wYzQ4NGVkOWI0ZDcwZDNjMDU0NDM1N2VjNTVk
YTY1YjI3NDAzY2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKQEAgLTE4MCw2ICsxODAsNyBAQCBjbGFzcyBXZWJOb3RpZmljYXRpb25DbGllbnQ7CiBj
bGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjsKIGNsYXNzIFdlYlBhZ2VHcm91cFByb3h5
OwogY2xhc3MgV2ViUGFnZU92ZXJsYXk7CitjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OwogY2xhc3MgV2ViUG9wdXBNZW51OwogY2xhc3MgV2ViVW5kb1N0ZXA7CiBjbGFzcyBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI7CkBAIC0yNTEsNyArMjUyLDggQEAgcHVibGljOgogICAgIGJvb2wg
aXNJbnNwZWN0b3JQYWdlKCkgeyByZXR1cm4gISFtX2luc3BlY3RvclVJOyB9CiAKICNpZiBQTEFU
Rk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05f
TU9ERSkpCi0gICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciogdmlkZW9GdWxsc2NyZWVuTWFu
YWdlcigpOworICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXImIHBsYXliYWNrU2Vzc2lvbk1h
bmFnZXIoKTsKKyAgICBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyJiB2aWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCiAgICAgdm9pZCBzZXRBbGxvd3NN
ZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2soYm9vbCk7CkBAIC0xMzA4LDYgKzEzMTAsNyBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxXZWJJbnNwZWN0b3I+IG1faW5zcGVjdG9yOwogICAgIFJlZlB0
cjxXZWJJbnNwZWN0b3JVST4gbV9pbnNwZWN0b3JVSTsKICNpZiBQTEFURk9STShJT1MpIHx8IChQ
TEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisgICAgUmVm
UHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI+IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlcjsK
ICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4gbV92aWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YWY1ZDg2ZDBkYmQ1MGIxMDlhMTZlZTU4OGI0Mjg0ZTlhZTExYWU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLmgKQEAgLTAsMCArMSwxNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJfaAorI2RlZmluZSBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyX2gKKworI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRMaXN0ZW5lci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
SFRNTE1lZGlhRWxlbWVudEVudW1zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIEF0dGFjaG1l
bnQ7CitjbGFzcyBDb25uZWN0aW9uOworY2xhc3MgTWVzc2FnZURlY29kZXI7CitjbGFzcyBNZXNz
YWdlUmVjZWl2ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE5vZGU7Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworY2xhc3MgV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjsKKworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4
dCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+
LCBwdWJsaWMgV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IGNyZWF0
ZShXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJiBtYW5hZ2VyLCB1aW50NjRfdCBjb250ZXh0SWQp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VDb250ZXh0KG1hbmFnZXIsIGNvbnRleHRJZCkpOworICAgIH0KKyAgICB2aXJ0dWFs
IH5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KCk7CisKKyAgICB2b2lkIGludmFs
aWRhdGUoKSB7IG1fbWFuYWdlciA9IG51bGxwdHI7IH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQg
Y2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDsKKworICAgIC8vIFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZQorICAgIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCB2YWx1ZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdU
Rjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFj
a1RhcmdldFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgb3ZlcnJpZGU7
CisKKyAgICBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXImLCB1aW50NjRfdCBjb250ZXh0SWQpOworCisgICAgV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlciogbV9tYW5hZ2VyOworICAgIHVpbnQ2NF90IG1fY29udGV4dElkOworfTsKKwor
Y2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI+IGNyZWF0ZShX
ZWJQYWdlJik7CisgICAgdmlydHVhbCB+V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcigpOworCisg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldFVwUGxheWJhY2tDb250cm9sc01hbmFn
ZXIoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCYpOworICAgIHZvaWQgY2xlYXJQbGF5YmFja0Nv
bnRyb2xzTWFuYWdlcihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Jik7CisgICAgdWludDY0X3Qg
Y29udGV4dElkRm9yTWVkaWFFbGVtZW50KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQmKTsKKwor
cHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VD
b250ZXh0OworICAgIGZyaWVuZCBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOworCisg
ICAgZXhwbGljaXQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcihXZWJQYWdlJik7CisKKyAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8UmVmUHRyPFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50PiwgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+
PiBNb2RlbEludGVyZmFjZVR1cGxlOworICAgIE1vZGVsSW50ZXJmYWNlVHVwbGUgY3JlYXRlTW9k
ZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKTsKKyAgICBNb2RlbEludGVyZmFjZVR1
cGxlJiBlbnN1cmVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIFdl
YkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50JiBlbnN1cmVNb2RlbCh1
aW50NjRfdCBjb250ZXh0SWQpOworICAgIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRl
eHQmIGVuc3VyZUludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgcmVtb3Zl
Q29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgYWRkQ2xpZW50Rm9yQ29udGV4
dCh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dCh1
aW50NjRfdCBjb250ZXh0SWQpOworCisgICAgLy8gSW50ZXJmYWNlIHRvIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUNvbnRleHQKKyAgICB2b2lkIHJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBj
b250ZXh0SWQpOworICAgIHZvaWQgc2V0RHVyYXRpb24odWludDY0X3QgY29udGV4dElkLCBkb3Vi
bGUpOworICAgIHZvaWQgc2V0Q3VycmVudFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUg
Y3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKTsKKyAgICB2b2lkIHNldEJ1ZmZlcmVkVGlt
ZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBidWZmZXJlZFRpbWUpOworICAgIHZvaWQgc2V0
UmF0ZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1Jh
dGUpOworICAgIHZvaWQgc2V0U2Vla2FibGVSYW5nZXModWludDY0X3QgY29udGV4dElkLCBjb25z
dCBXZWJDb3JlOjpUaW1lUmFuZ2VzJik7CisgICAgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2Uo
dWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKTsKKyAgICB2b2lkIHNldEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOworICAgIHZvaWQgc2V0TGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2b2lkIHNldEV4dGVy
bmFsUGxheWJhY2sodWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIFdlYkNvcmU6Oldl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIFN0
cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKKyAgICB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5
YmFja0Rpc2FibGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCk7CisKKyAgICAvLyBNZXNzYWdl
cyBmcm9tIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eQorICAgIHZvaWQgcGxheSh1aW50
NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgcGF1c2UodWludDY0X3QgY29udGV4dElkKTsKKyAg
ICB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgYmVn
aW5TY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGVuZFNjcnViYmluZyh1
aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgc2Vla1RvVGltZSh1aW50NjRfdCBjb250ZXh0
SWQsIGRvdWJsZSB0aW1lKTsKKyAgICB2b2lkIGZhc3RTZWVrKHVpbnQ2NF90IGNvbnRleHRJZCwg
ZG91YmxlIHRpbWUpOworICAgIHZvaWQgYmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29u
dGV4dElkKTsKKyAgICB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCh1aW50NjRfdCBjb250ZXh0
SWQpOworICAgIHZvaWQgZW5kU2Nhbm5pbmcodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lk
IHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRl
eCk7CisgICAgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElk
LCB1aW50NjRfdCBpbmRleCk7CisKKyAgICBXZWJQYWdlKiBtX3BhZ2U7CisgICAgSGFzaE1hcDxX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiwgdWludDY0X3Q+IG1fbWVkaWFFbGVtZW50czsKKyAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBNb2RlbEludGVyZmFjZVR1cGxlPiBtX2NvbnRleHRNYXA7Cisg
ICAgdWludDY0X3QgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgeyAwIH07CisgICAgSGFzaE1h
cDx1aW50NjRfdCwgaW50PiBtX2NsaWVudENvdW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorCisjZW5kaWYgLy8gV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29h
L1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjU2YzU5ZTMxNDM0YTY3OWQ1NGQ4YTM2MDM3OWMzYTdmZjNmZDU1NgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM5IEBACisjIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorbWVzc2FnZXMgLT4gV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlciB7CisgICAgUGxheSh1aW50NjRfdCBjb250ZXh0SWQpCisg
ICAgUGF1c2UodWludDY0X3QgY29udGV4dElkKQorICAgIFRvZ2dsZVBsYXlTdGF0ZSh1aW50NjRf
dCBjb250ZXh0SWQpCisgICAgQmVnaW5TY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQorICAg
IEVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCisgICAgU2Vla1RvVGltZSh1aW50NjRf
dCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKQorICAgIEZhc3RTZWVrKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgZG91YmxlIHRpbWUpCisgICAgQmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29udGV4
dElkKQorICAgIEJlZ2luU2Nhbm5pbmdCYWNrd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCisgICAg
RW5kU2Nhbm5pbmcodWludDY0X3QgY29udGV4dElkKQorICAgIFNlbGVjdEF1ZGlvTWVkaWFPcHRp
b24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKKyAgICBTZWxlY3RMZWdpYmxl
TWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKK30KKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzODRiMjIzMjM2MTY4OWRhOWQy
NDBiZjljZWNmMWRmZWM5NDI4NjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KQEAgLTAsMCArMSw0
MDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlci5oIgorCisKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKKyNpbXBvcnQgIkF0
dGFjaG1lbnQuaCIKKyNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2ltcG9ydCAi
V2ViUGFnZS5oIgorI2ltcG9ydCAiV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VzLmgi
CisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2lt
cG9ydCAiV2ViUHJvY2Vzcy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgorI2ltcG9ydCA8
V2ViQ29yZS9FdmVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9FdmVudE5hbWVzLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3Mu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvVGltZVJhbmdlcy5oPgorI2ltcG9ydCA8bWFjaC9tYWNoX3Bv
cnQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitzdGF0aWMgdWludDY0X3QgbmV4dENvbnRleHRJZCgpCit7CisgICAgc3RhdGljIHVpbnQ2NF90
IGNvbnRleHRJZCA9IDA7CisgICAgcmV0dXJuICsrY29udGV4dElkOworfQorCisjcHJhZ21hIG1h
cmsgLSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0CisKK1dlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUNvbnRleHQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQo
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQor
ICAgIDogbV9tYW5hZ2VyKCZtYW5hZ2VyKQorICAgICwgbV9jb250ZXh0SWQoY29udGV4dElkKQor
eworfQorCitXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0Ojp+V2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQ29udGV4dCgpCit7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQ29udGV4dDo6cmVzZXRNZWRpYVN0YXRlKCkKK3sKKyAgICBpZiAobV9tYW5hZ2Vy
KQorICAgICAgICBtX21hbmFnZXItPnJlc2V0TWVkaWFTdGF0ZShtX2NvbnRleHRJZCk7Cit9CisK
K3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0RHVyYXRpb24oZG91
YmxlIGR1cmF0aW9uKQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+
c2V0RHVyYXRpb24obV9jb250ZXh0SWQsIGR1cmF0aW9uKTsKK30KKwordm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRp
bWUsIGRvdWJsZSBhbmNob3JUaW1lKQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1f
bWFuYWdlci0+c2V0Q3VycmVudFRpbWUobV9jb250ZXh0SWQsIGN1cnJlbnRUaW1lLCBhbmNob3JU
aW1lKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRC
dWZmZXJlZFRpbWUoZG91YmxlIGJ1ZmZlcmVkVGltZSkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQor
ICAgICAgICBtX21hbmFnZXItPnNldEJ1ZmZlcmVkVGltZShtX2NvbnRleHRJZCwgYnVmZmVyZWRU
aW1lKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRS
YXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCit7CisgICAgaWYgKG1fbWFu
YWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT5zZXRSYXRlKG1fY29udGV4dElkLCBpc1BsYXlpbmcs
IHBsYXliYWNrUmF0ZSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29u
dGV4dDo6c2V0U2Vla2FibGVSYW5nZXMoY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYgcmFuZ2Vz
KQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+c2V0U2Vla2FibGVS
YW5nZXMobV9jb250ZXh0SWQsIHJhbmdlcyk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQ29udGV4dDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wgdmFsdWUpCit7Cisg
ICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT5zZXRDYW5QbGF5RmFzdFJldmVy
c2UobV9jb250ZXh0SWQsIHZhbHVlKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VDb250ZXh0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQoreworICAgIGlm
IChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnMobV9jb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOworfQorCit2b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2Vs
ZWN0ZWRJbmRleCkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnNl
dExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMobV9jb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVj
dGVkSW5kZXgpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6
OnNldEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0
VHlwZSB0eXBlLCBXVEY6OlN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKQoreworICAgIGlmICht
X21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+c2V0RXh0ZXJuYWxQbGF5YmFjayhtX2NvbnRl
eHRJZCwgZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7Cit9CisKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBt
X21hbmFnZXItPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKG1fY29udGV4dElkLCBk
aXNhYmxlZCk7Cit9CisKKyNwcmFnbWEgbWFyayAtIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIK
KworUmVmPFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI+IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OmNyZWF0ZShXZWJQYWdlJiBwYWdlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIocGFnZSkpOworfQorCitXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyKFdlYlBhZ2UmIHBhZ2UpCisgICAgOiBt
X3BhZ2UoJnBhZ2UpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIHBhZ2UucGFnZUlEKCksICp0aGlzKTsKK30KKworV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6fldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIoKQoreworICAgIGZvciAoYXV0byYg
dHVwbGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgUmVmUHRyPFdlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50PiBtb2RlbDsKKyAgICAgICAgUmVmUHRyPFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKKyAgICAgICAgc3RkOjp0
aWUobW9kZWwsIGludGVyZmFjZSkgPSB0dXBsZTsKKworICAgICAgICBtb2RlbC0+c2V0V2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlKG51bGxwdHIpOworICAgICAgICBtb2RlbC0+c2V0TWVkaWFF
bGVtZW50KG51bGxwdHIpOworCisgICAgICAgIGludGVyZmFjZS0+aW52YWxpZGF0ZSgpOworICAg
IH0KKworICAgIG1fY29udGV4dE1hcC5jbGVhcigpOworICAgIG1fbWVkaWFFbGVtZW50cy5jbGVh
cigpOworICAgIG1fY2xpZW50Q291bnRzLmNsZWFyKCk7CisKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisK
K1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4
dElkKQoreworICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4g
bW9kZWwgPSBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6Y3JlYXRlKCk7Cisg
ICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4
dElkKTsKKworICAgIG1vZGVsLT5zZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UoaW50ZXJm
YWNlLmdldCgpKTsKKworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoV1RGTW92ZShtb2RlbCks
IFdURk1vdmUoaW50ZXJmYWNlKSk7Cit9CisKK1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Ok1v
ZGVsSW50ZXJmYWNlVHVwbGUmIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmVuc3VyZU1vZGVs
QW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fY29udGV4dE1hcC5hZGQoY29udGV4dElkLCBNb2RlbEludGVyZmFjZVR1cGxlKCkpOworICAg
IGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IGNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAgcmV0dXJuIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cit9CisKK1dlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50JiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjplbnN1cmVNb2Rl
bCh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgcmV0dXJuICpzdGQ6OmdldDwwPihlbnN1cmVN
b2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpKTsKK30KKworV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQ29udGV4dCYgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5zdXJlSW50ZXJmYWNl
KHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICByZXR1cm4gKnN0ZDo6Z2V0PDE+KGVuc3VyZU1v
ZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OnJlbW92ZUNvbnRleHQodWludDY0X3QgY29udGV4dElkKQoreworICAgIFJlZlB0
cjxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gbW9kZWw7CisgICAgUmVmUHRy
PFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKKyAgICBzdGQ6
OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJ
ZCk7CisKKyAgICBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gbWVkaWFFbGVtZW50ID0gbW9kZWwt
Pm1lZGlhRWxlbWVudCgpOworICAgIG1vZGVsLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7Cisg
ICAgbW9kZWwtPnNldFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZShudWxscHRyKTsKKyAgICBp
bnRlcmZhY2UtPmludmFsaWRhdGUoKTsKKyAgICBtX21lZGlhRWxlbWVudHMucmVtb3ZlKG1lZGlh
RWxlbWVudC5nZXQoKSk7CisgICAgbV9jb250ZXh0TWFwLnJlbW92ZShjb250ZXh0SWQpOworfQor
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmFkZENsaWVudEZvckNvbnRleHQodWlu
dDY0X3QgY29udGV4dElkKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jbGllbnRDb3VudHMu
YWRkKGNvbnRleHRJZCwgMSk7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAg
ICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSsrOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OnJlbW92ZUNsaWVudEZvckNvbnRleHQodWludDY0X3QgY29udGV4dElkKQor
eworICAgIEFTU0VSVChtX2NsaWVudENvdW50cy5jb250YWlucyhjb250ZXh0SWQpKTsKKworICAg
IGludCBjbGllbnRDb3VudCA9IG1fY2xpZW50Q291bnRzLmdldChjb250ZXh0SWQpOworICAgIEFT
U0VSVChjbGllbnRDb3VudCA+IDApOworICAgIGNsaWVudENvdW50LS07CisKKyAgICBpZiAoY2xp
ZW50Q291bnQgPD0gMCkgeworICAgICAgICBtX2NsaWVudENvdW50cy5yZW1vdmUoY29udGV4dElk
KTsKKyAgICAgICAgcmVtb3ZlQ29udGV4dChjb250ZXh0SWQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbV9jbGllbnRDb3VudHMuc2V0KGNvbnRleHRJZCwgY2xpZW50Q291bnQpOwor
fQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFVwUGxheWJhY2tDb250cm9s
c01hbmFnZXIoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQoreworI2lm
IFBMQVRGT1JNKE1BQykKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKCZtZWRpYUVs
ZW1lbnQpKSB7CisgICAgICAgIHVpbnQ2NF90IGNvbnRleHRJZCA9IG1fbWVkaWFFbGVtZW50cy5n
ZXQoJm1lZGlhRWxlbWVudCk7CisgICAgICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJ
ZCA9PSBjb250ZXh0SWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG1fY29u
dHJvbHNNYW5hZ2VyQ29udGV4dElkKQorICAgICAgICAgICAgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4
dChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCk7CisgICAgICAgIG1fY29udHJvbHNNYW5hZ2Vy
Q29udGV4dElkID0gY29udGV4dElkOworICAgIH0gZWxzZSB7CisgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9tZWRpYUVsZW1lbnRzLmVuc3VyZSgmbWVkaWFFbGVtZW50LCBbJl0geyByZXR1cm4g
bmV4dENvbnRleHRJZCgpOyB9KTsKKyAgICAgICAgYXV0byBjb250ZXh0SWQgPSBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlOworICAgICAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IGNv
bnRleHRJZDsKKyAgICAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZXRNZWRpYUVsZW1lbnQo
Jm1lZGlhRWxlbWVudCk7CisgICAgfQorCisgICAgYWRkQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRy
b2xzTWFuYWdlckNvbnRleHRJZCk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXJXaXRo
SUQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyNlbmRp
ZgorfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNsZWFyUGxheWJhY2tDb250
cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQorewor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKCZtZWRp
YUVsZW1lbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICB1aW50NjRfdCBjb250ZXh0SWQgPSBt
X21lZGlhRWxlbWVudHMuZ2V0KCZtZWRpYUVsZW1lbnQpOworICAgIGlmIChtX2NvbnRyb2xzTWFu
YWdlckNvbnRleHRJZCAhPSBjb250ZXh0SWQpCisgICAgICAgIHJldHVybjsKKworICAgIHJlbW92
ZUNsaWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOworICAgIG1fY29u
dHJvbHNNYW5hZ2VyQ29udGV4dElkID0gMDsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Q2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdl
cigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyNlbmRpZgorfQorCit1aW50NjRfdCBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpjb250ZXh0SWRGb3JNZWRpYUVsZW1lbnQoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9tZWRp
YUVsZW1lbnRzLmVuc3VyZSgmbWVkaWFFbGVtZW50LCBbJl0geyByZXR1cm4gbmV4dENvbnRleHRJ
ZCgpOyB9KTsKKyAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKK30KKworI3By
YWdtYSBtYXJrIEludGVyZmFjZSB0byBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0
OgorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnJlc2V0TWVkaWFTdGF0ZSh1aW50
NjRfdCBjb250ZXh0SWQpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OlJlc2V0TWVkaWFTdGF0ZShjb250ZXh0SWQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXREdXJh
dGlvbih1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0RHVyYXRp
b24oY29udGV4dElkLCBkdXJhdGlvbiksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldEN1cnJlbnRUaW1lKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKK3sKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0Q3VycmVu
dFRpbWUoY29udGV4dElkLCBjdXJyZW50VGltZSwgYW5jaG9yVGltZSksIG1fcGFnZS0+cGFnZUlE
KCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldEJ1ZmZlcmVkVGlt
ZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBidWZmZXJlZFRpbWUpCit7CisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldEJ1ZmZl
cmVkVGltZShjb250ZXh0SWQsIGJ1ZmZlcmVkVGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOworfQor
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFJhdGUodWludDY0X3QgY29udGV4
dElkLCBib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKQoreworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRSYXRlKGNv
bnRleHRJZCwgaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30K
Kwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRTZWVrYWJsZVJhbmdlcyh1aW50
NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCit7
CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IHJhbmdlc1ZlY3RvcjsKKwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aW1lUmFuZ2VzLmxlbmd0aCgpOyBpKyspIHsK
KyAgICAgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlOworICAgICAgICBkb3VibGUgc3Rh
cnQgPSB0aW1lUmFuZ2VzLnN0YXJ0KGksIGV4Y2VwdGlvbkNvZGUpOworICAgICAgICBkb3VibGUg
ZW5kID0gdGltZVJhbmdlcy5lbmQoaSwgZXhjZXB0aW9uQ29kZSk7CisgICAgICAgIHJhbmdlc1Zl
Y3Rvci5hcHBlbmQoc3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPihzdGFydCwgZW5kKSk7CisgICAg
fQorCisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OlNldFNlZWthYmxlUmFuZ2VzVmVjdG9yKGNvbnRleHRJZCwgV1RGTW92ZShyYW5nZXNW
ZWN0b3IpKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2
YWx1ZSkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6U2V0Q2FuUGxheUZhc3RSZXZlcnNlKGNvbnRleHRJZCwgdmFsdWUpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRB
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQoreworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRBdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OlNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29udGV4dElkLCBvcHRpb25zLCBzZWxl
Y3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6c2V0RXh0ZXJuYWxQbGF5YmFjayh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wg
ZW5hYmxlZCwgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpFeHRlcm5hbFBsYXliYWNrVGFy
Z2V0VHlwZSB0YXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKK3sKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0
RXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRpZXMoY29udGV4dElkLCBlbmFibGVkLCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4odGFyZ2V0VHlwZSksIGxvY2FsaXplZERldmljZU5hbWUpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRXaXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZGlzYWJsZWQp
Cit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OlNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGNvbnRleHRJZCwgZGlzYWJs
ZWQpKTsKK30KKworI3ByYWdtYSBtYXJrIE1lc3NhZ2VzIGZyb20gV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OgorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnBsYXkodWlu
dDY0X3QgY29udGV4dElkKQoreworICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkucGxheSgpOwor
fQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnBhdXNlKHVpbnQ2NF90IGNvbnRl
eHRJZCkKK3sKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnBhdXNlKCk7Cit9CisKK3ZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6dG9nZ2xlUGxheVN0YXRlKHVpbnQ2NF90IGNvbnRl
eHRJZCkKK3sKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnRvZ2dsZVBsYXlTdGF0ZSgpOwor
fQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJlZ2luU2NydWJiaW5nKHVpbnQ2
NF90IGNvbnRleHRJZCkKK3sKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmJlZ2luU2NydWJi
aW5nKCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5kU2NydWJiaW5n
KHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmVuZFNj
cnViYmluZygpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNlZWtUb1Rp
bWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSkKK3sKKyAgICBlbnN1cmVNb2RlbChj
b250ZXh0SWQpLnNlZWtUb1RpbWUodGltZSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6ZmFzdFNlZWsodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSkKK3sKKyAg
ICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmZhc3RTZWVrKHRpbWUpOworfQorCit2b2lkIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRl
eHRJZCkKK3sKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmJlZ2luU2Nhbm5pbmdGb3J3YXJk
KCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YmVnaW5TY2FubmluZ0Jh
Y2t3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQp
LmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OmVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBlbnN1cmVNb2Rl
bChjb250ZXh0SWQpLmVuZFNjYW5uaW5nKCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2
NF90IGluZGV4KQoreworICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2VsZWN0QXVkaW9NZWRp
YU9wdGlvbihpbmRleCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2Vs
ZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgp
Cit7CisgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24o
aW5kZXgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKaW5kZXggNjZkMzBmNTI5YTg0NGQ1YTI2NTFkN2VlZTJh
ODgxZGYxOGY3MTY5OC4uMjc2NWI4ZWQzY2MyY2RlYWQ2YzZkMTUzNDg2M2ZjMzFjZmQ5MWQ1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKQEAgLTUyLDEzICs1MiwxNSBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgTGF5ZXJIb3N0aW5nQ29udGV4dDsKIGNsYXNzIFdlYlBhZ2U7CitjbGFz
cyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OworY2xhc3MgV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjsKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI7CiAKIGNsYXNz
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiwgcHVibGljIFdlYkNvcmU6OldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBjcmVhdGUoV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlciYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQorICAgIHN0YXRpYyBSZWY8V2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gY3JlYXRlKFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXImIG1hbmFnZXIsIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQmIHBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZSwgdWludDY0X3QgY29udGV4dElkKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dCht
YW5hZ2VyLCBjb250ZXh0SWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dChtYW5hZ2VyLCBwbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UsIGNvbnRleHRJZCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VDb250ZXh0KCk7CiAKQEAgLTgwLDEzICs4MiwxMiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRJc0Z1bGxzY3JlZW4oYm9vbCBmbGFnKSB7IG1faXNGdWxsc2NyZWVuID0gZmxhZzsg
fQogCiBwcml2YXRlOgotICAgIC8vIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZQorICAgIC8v
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZQogICAgIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpIG92ZXJyaWRlOwogICAgIHZv
aWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lk
dGgsIGZsb2F0IGhlaWdodCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhj
b25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDYW5QbGF5
RmFzdFJldmVyc2UoYm9vbCB2YWx1ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRBdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50
NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKQEAgLTk0LDkgKzk1LDEzIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5
YmFja1RhcmdldFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgb3ZlcnJp
ZGU7CiAKLSAgICBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0KFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXImLCB1aW50NjRfdCBjb250ZXh0SWQpOworICAgIC8vIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZQorICAgIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlk
ZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpIG92ZXJyaWRlOworCisgICAgV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dChXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyJiwgV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dCYsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAK
ICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKiBtX21hbmFnZXI7CisgICAgUmVmPFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
OwogICAgIHVpbnQ2NF90IG1fY29udGV4dElkOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhv
c3RpbmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgYm9vbCBtX2lzQW5pbWF0
aW5nIHsgZmFsc2UgfTsKQEAgLTEwNyw3ICsxMTIsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcj4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4gY3JlYXRlKFBhc3NSZWZQdHI8
V2ViUGFnZT4pOworICAgIHN0YXRpYyBSZWY8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4gY3Jl
YXRlKFdlYlBhZ2UmLCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJik7CiAgICAgdmlydHVhbCB+
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpOwogICAgIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwpA
QCAtMTE3LDEzICsxMjIsMTEgQEAgcHVibGljOgogICAgIHZvaWQgZW50ZXJWaWRlb0Z1bGxzY3Jl
ZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYsIFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAgICAgdm9pZCBleGl0
VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQm
KTsKICAgICB2b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdl
YkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwotICAgIHZvaWQgc2V0VXBWaWRlb0NvbnRyb2xzTWFuYWdl
cihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Jik7Ci0gICAgdm9pZCBjbGVhclZpZGVvQ29udHJv
bHNNYW5hZ2VyKCk7Ci0gICAgCisKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDsKIAotICAgIGV4cGxpY2l0IFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIoUGFzc1JlZlB0cjxXZWJQYWdlPik7CisgICAgZXhwbGljaXQgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcihXZWJQYWdlJiwgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciYp
OwogCiAgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFJlZlB0cjxXZWJDb3JlOjpXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4sIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VDb250ZXh0Pj4gTW9kZWxJbnRlcmZhY2VUdXBsZTsKICAgICBNb2RlbEludGVyZmFjZVR1cGxl
IGNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCk7CkBAIC0xMzUsMzAg
KzEzOCw5IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHJlbW92ZUNsaWVudEZvckNvbnRleHQodWlu
dDY0X3QgY29udGV4dElkKTsKIAogICAgIC8vIEludGVyZmFjZSB0byBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VDb250ZXh0Ci0gICAgdm9pZCByZXNldE1lZGlhU3RhdGUodWludDY0X3QgY29u
dGV4dElkKTsKLSAgICB2b2lkIHNldER1cmF0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91Ymxl
KTsKLSAgICB2b2lkIHNldEN1cnJlbnRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1
cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSk7Ci0gICAgdm9pZCBzZXRCdWZmZXJlZFRpbWUo
dWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKTsKLSAgICB2b2lkIHNldFJh
dGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRl
KTsKICAgICB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wg
aGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwotICAgIHZvaWQgc2V0U2Vla2Fi
bGVSYW5nZXModWludDY0X3QgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJik7
Ci0gICAgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UodWludDY0X3QgY29udGV4dElkLCBib29s
IHZhbHVlKTsKLSAgICB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90
IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVj
dGVkSW5kZXgpOwotICAgIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50
NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBz
ZWxlY3RlZEluZGV4KTsKLSAgICB2b2lkIHNldEV4dGVybmFsUGxheWJhY2sodWludDY0X3QgY29u
dGV4dElkLCBib29sIGVuYWJsZWQsIFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZTo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1l
KTsKLSAgICB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90IGNv
bnRleHRJZCwgYm9vbCk7CiAKICAgICAvLyBNZXNzYWdlcyBmcm9tIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eQotICAgIHZvaWQgcGxheSh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZv
aWQgcGF1c2UodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSh1
aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgYmVnaW5TY3J1YmJpbmcodWludDY0X3QgY29u
dGV4dElkKTsKLSAgICB2b2lkIGVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpOwotICAg
IHZvaWQgc2Vla1RvVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKTsKLSAgICB2
b2lkIGZhc3RTZWVrKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpOwotICAgIHZvaWQg
YmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGJlZ2lu
U2Nhbm5pbmdCYWNrd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgZW5kU2Nhbm5p
bmcodWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZSh1
aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZSk7CiAgICAgdm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29u
dGV4dElkKTsKICAgICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7
CkBAIC0xNjYsMTIgKzE0OCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaWRDbGVhbnVwRnVs
bHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckZyYW1l
RmVuY2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcywgSVBD
OjpBdHRhY2htZW50IGZlbmNlUG9ydCk7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eUVu
dW0odWludDY0X3QgY29udGV4dElkLCB1bnNpZ25lZCBncmF2aXR5KTsKLSAgICB2b2lkIHNlbGVj
dEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCk7Ci0g
ICAgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50
NjRfdCBpbmRleCk7CiAgICAgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQodWludDY0X3QgY29u
dGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUpOwogICAgIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRl
eHRJZCwgYm9vbCBpc1BhZ2VWaXNpYmxlKTsKICAgICAKICAgICBXZWJQYWdlKiBtX3BhZ2U7Cisg
ICAgUmVmPFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI+IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdl
cjsKICAgICBIYXNoTWFwPFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQqLCB1aW50NjRfdD4gbV92
aWRlb0VsZW1lbnRzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIE1vZGVsSW50ZXJmYWNlVHVwbGU+
IG1fY29udGV4dE1hcDsKICAgICB1aW50NjRfdCBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCB7
IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA4M2Rk
ZmUyMGIwNjk1ZWRmNzQ2ZTk0OGZhYjNlMzhmNmMwMGY3NTk1Li43YmZjMTFhMzkxZDFkNmNmZTdj
OGMyOWY1ZmUyMmRiZDk2MjliYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1l
c3NhZ2VzLmluCkBAIC0yMiwxNiArMjIsNiBAQAogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogbWVzc2FnZXMg
LT4gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciB7Ci0gICAgUGxheSh1aW50NjRfdCBjb250ZXh0
SWQpCi0gICAgUGF1c2UodWludDY0X3QgY29udGV4dElkKQotICAgIFRvZ2dsZVBsYXlTdGF0ZSh1
aW50NjRfdCBjb250ZXh0SWQpCi0gICAgQmVnaW5TY3J1YmJpbmcodWludDY0X3QgY29udGV4dElk
KQotICAgIEVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgU2Vla1RvVGltZSh1
aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKQotICAgIEZhc3RTZWVrKHVpbnQ2NF90IGNv
bnRleHRJZCwgZG91YmxlIHRpbWUpCi0gICAgQmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3Qg
Y29udGV4dElkKQotICAgIEJlZ2luU2Nhbm5pbmdCYWNrd2FyZCh1aW50NjRfdCBjb250ZXh0SWQp
Ci0gICAgRW5kU2Nhbm5pbmcodWludDY0X3QgY29udGV4dElkKQogICAgIFJlcXVlc3RGdWxsc2Ny
ZWVuTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQogICAgIERpZFNldHVw
RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgRGlkRXhpdEZ1bGxzY3JlZW4odWlu
dDY0X3QgY29udGV4dElkKQpAQCAtMzksOCArMjksNiBAQCBtZXNzYWdlcyAtPiBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyIHsKICAgICBEaWRDbGVhbnVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250
ZXh0SWQpCiAgICAgU2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKHVpbnQ2NF90IGNvbnRleHRJZCwg
V2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcywgSVBDOjpBdHRhY2htZW50IGZlbmNlUG9ydCkKICAg
ICBTZXRWaWRlb0xheWVyR3Jhdml0eUVudW0odWludDY0X3QgY29udGV4dElkLCB1bnNpZ25lZCBn
cmF2aXR5KQotICAgIFNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1
aW50NjRfdCBpbmRleCkKLSAgICBTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29u
dGV4dElkLCB1aW50NjRfdCBpbmRleCkKICAgICBGdWxsc2NyZWVuTW9kZUNoYW5nZWQodWludDY0
X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKICAgICBGdWxsc2NyZWVuTWF5UmV0dXJuVG9J
bmxpbmUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGFnZVZpc2libGUpCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0KaW5kZXggNjkzY2NmYzBhZTM0Njc5ZWQwNzAxMzc3ZjAwOGU0ZDNhM2Yy
YmJiZS4uYWJiMDkxNTliYjU3YzFiNGQ3MTBiYzRhZTk5NjYxZjcwMTlmZTdmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiQXR0YWNobWVudC5o
IgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0ICJXZWJQYWdlLmgi
CisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgiCiAjaW1wb3J0ICJXZWJQcm9j
ZXNzLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyTWVzc2FnZXMuaCIKICNp
bXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCkBAIC01OSwx
NiArNjAsMTEgQEAgc3RhdGljIEludFJlY3QgY2xpZW50UmVjdEZvckVsZW1lbnQoSFRNTEVsZW1l
bnQqIGVsZW1lbnQpCiAgICAgcmV0dXJuIGVsZW1lbnQtPmNsaWVudFJlY3QoKTsKIH0KIAotc3Rh
dGljIHVpbnQ2NF90IG5leHRDb250ZXh0SWQoKQotewotICAgIHN0YXRpYyB1aW50NjRfdCBjb250
ZXh0SWQgPSAwOwotICAgIHJldHVybiArK2NvbnRleHRJZDsKLX0KLQogI3ByYWdtYSBtYXJrIC0g
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dAogCi1XZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VDb250ZXh0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0KFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXImIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKK1dlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUNvbnRleHQoV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYgbWFuYWdlciwgV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQ29udGV4dCYgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLCB1aW50NjRf
dCBjb250ZXh0SWQpCiAgICAgOiBtX21hbmFnZXIoJm1hbmFnZXIpCisgICAgLCBtX3BsYXliYWNr
U2Vzc2lvbkludGVyZmFjZShwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCiAgICAgLCBtX2NvbnRl
eHRJZChjb250ZXh0SWQpCiB7CiB9CkBAIC04NCwzMiArODAsMjcgQEAgdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRMYXllckhvc3RpbmdDb250ZXh0KHN0ZDo6dW5p
cXVlX3B0cjwKIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpyZXNl
dE1lZGlhU3RhdGUoKQogewotICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+
cmVzZXRNZWRpYVN0YXRlKG1fY29udGV4dElkKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZS0+cmVzZXRNZWRpYVN0YXRlKCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQ29udGV4dDo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQogewotICAgIGlmICht
X21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0RHVyYXRpb24obV9jb250ZXh0SWQsIGR1
cmF0aW9uKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0RHVyYXRpb24oZHVy
YXRpb24pOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNl
dEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCiB7Ci0g
ICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5zZXRDdXJyZW50VGltZShtX2Nv
bnRleHRJZCwgY3VycmVudFRpbWUsIGFuY2hvclRpbWUpOworICAgIG1fcGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlLT5zZXRDdXJyZW50VGltZShjdXJyZW50VGltZSwgYW5jaG9yVGltZSk7CiB9CiAK
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0QnVmZmVyZWRUaW1l
KGRvdWJsZSBidWZmZXJlZFRpbWUpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9t
YW5hZ2VyLT5zZXRCdWZmZXJlZFRpbWUobV9jb250ZXh0SWQsIGJ1ZmZlcmVkVGltZSk7CisgICAg
bV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEJ1ZmZlcmVkVGltZShidWZmZXJlZFRpbWUp
OwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFJhdGUo
Ym9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKLSAgICBpZiAobV9tYW5hZ2Vy
KQotICAgICAgICBtX21hbmFnZXItPnNldFJhdGUobV9jb250ZXh0SWQsIGlzUGxheWluZywgcGxh
eWJhY2tSYXRlKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0UmF0ZShpc1Bs
YXlpbmcsIHBsYXliYWNrUmF0ZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQ29udGV4dDo6c2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRo
LCBmbG9hdCBoZWlnaHQpCkBAIC0xMjAsNTEgKzExMSw0NiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBm
bG9hdAogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFNlZWth
YmxlUmFuZ2VzKGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmIHJhbmdlcykKIHsKLSAgICBpZiAo
bV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnNldFNlZWthYmxlUmFuZ2VzKG1fY29udGV4
dElkLCByYW5nZXMpOworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRTZWVrYWJs
ZVJhbmdlcyhyYW5nZXMpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNv
bnRleHQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIHZhbHVlKQogewotICAgIGlmIChtX21h
bmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0Q2FuUGxheUZhc3RSZXZlcnNlKG1fY29udGV4
dElkLCB2YWx1ZSk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldENhblBsYXlG
YXN0UmV2ZXJzZSh2YWx1ZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
Q29udGV4dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6
U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBpZiAobV9t
YW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
KG1fY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKKyAgICBtX3BsYXliYWNrU2Vz
c2lvbkludGVyZmFjZS0+c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywgc2Vs
ZWN0ZWRJbmRleCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4
dDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIGlmIChtX21hbmFn
ZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyht
X2NvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CisgICAgbV9wbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UtPnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywgc2Vs
ZWN0ZWRJbmRleCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4
dDo6c2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJn
ZXRUeXBlIHR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCiB7Ci0gICAgaWYg
KG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5zZXRFeHRlcm5hbFBsYXliYWNrKG1fY29u
dGV4dElkLCBlbmFibGVkLCB0eXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKKyAgICBtX3BsYXli
YWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0RXh0ZXJuYWxQbGF5YmFjayhlbmFibGVkLCB0eXBlLCBs
b2NhbGl6ZWREZXZpY2VOYW1lKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VDb250ZXh0OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVk
KQogewotICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0V2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQobV9jb250ZXh0SWQsIGRpc2FibGVkKTsKKyAgICBtX3BsYXli
YWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoZGlz
YWJsZWQpOwogfQogCiAjcHJhZ21hIG1hcmsgLSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCiAK
LVJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpjcmVhdGUoUGFzc1JlZlB0cjxXZWJQYWdlPiBwYWdlKQorUmVmPFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI+IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNyZWF0ZShXZWJQYWdlJiBwYWdl
LCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIocGFnZSkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIocGFn
ZSwgcGxheWJhY2tTZXNzaW9uTWFuYWdlcikpOwogfQogCi1XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKFBhc3NSZWZQdHI8V2ViUGFnZT4gcGFnZSkK
LSAgICA6IG1fcGFnZShwYWdlLmdldCgpKQorV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcihXZWJQYWdlJiBwYWdlLCBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyJiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyKQorICAgIDogbV9wYWdlKCZwYWdlKQorICAg
ICwgbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyKHBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpCiB7Ci0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHBhZ2UtPnBh
Z2VJRCgpLCAqdGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIHBhZ2UucGFnZUlEKCksICp0aGlzKTsKIH0KIAogV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6fldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKQpAQCAtMTg5LDggKzE3NSwxMCBA
QCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp+V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcigp
CiAKIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29u
dGV4dElkKQogewotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dD4gbW9kZWwgPSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKCk7
Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFj
ZSA9IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29u
dGV4dElkKTsKKyAgICBhdXRvJiBwbGF5YmFja1Nlc3Npb25Nb2RlbCA9IG1fcGxheWJhY2tTZXNz
aW9uTWFuYWdlci0+ZW5zdXJlTW9kZWwoY29udGV4dElkKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsID0gV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZShwbGF5YmFja1Nlc3Npb25Nb2RlbCk7CisgICAgYXV0byYg
cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlID0gbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5lbnN1
cmVJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlID0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dDo6Y3JlYXRlKCp0aGlzLCBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UsIGNvbnRleHRJZCk7
CiAKICAgICBpbnRlcmZhY2UtPnNldExheWVySG9zdGluZ0NvbnRleHQoTGF5ZXJIb3N0aW5nQ29u
dGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2VzcygpKTsKICAgICBtb2RlbC0+c2V0
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKGludGVyZmFjZS5nZXQoKSk7CkBAIC0yNzIsMTIg
KzI2MCw5IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxz
Y3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlCiB7CiAgICAgQVNTRVJUKG1vZGUgIT0g
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiAKLSAgICB1
aW50NjRfdCBjb250ZXh0SWQ7Ci0KLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdmlkZW9FbGVtZW50
cy5hZGQoJnZpZGVvRWxlbWVudCwgMCk7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQot
ICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbmV4dENvbnRleHRJZCgpOwotICAg
IGNvbnRleHRJZCA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgdWludDY0X3QgY29u
dGV4dElkID0gbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5jb250ZXh0SWRGb3JNZWRpYUVsZW1l
bnQodmlkZW9FbGVtZW50KTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdmlkZW9FbGVtZW50cy5h
ZGQoJnZpZGVvRWxlbWVudCwgY29udGV4dElkKTsKKyAgICBBU1NFUlQoYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9PSBjb250ZXh0SWQpOwogCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwpAQCAtMzIxLDQxICszMDYsNiBAQCB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1l
bnQoV2ViQ29yZTo6SFRNTAogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQsIGNsaWVudFJlY3RG
b3JFbGVtZW50KCZ2aWRlb0VsZW1lbnQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VXBWaWRlb0NvbnRyb2xzTWFuYWdlcihXZWJD
b3JlOjpIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQpCi17Ci0jaWYgUExBVEZPUk0oTUFD
KQotICAgIGlmIChtX3ZpZGVvRWxlbWVudHMuY29udGFpbnMoJnZpZGVvRWxlbWVudCkpIHsKLSAg
ICAgICAgdWludDY0X3QgY29udGV4dElkID0gbV92aWRlb0VsZW1lbnRzLmdldCgmdmlkZW9FbGVt
ZW50KTsKLSAgICAgICAgaWYgKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkID09IGNvbnRleHRJ
ZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAobV9jb250cm9sc01hbmFnZXJD
b250ZXh0SWQpCi0gICAgICAgICAgICByZW1vdmVDbGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNN
YW5hZ2VyQ29udGV4dElkKTsKLSAgICAgICAgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgPSBj
b250ZXh0SWQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3ZpZGVv
RWxlbWVudHMuZW5zdXJlKCZ2aWRlb0VsZW1lbnQsIFsmXSB7IHJldHVybiBuZXh0Q29udGV4dElk
KCk7IH0pOwotICAgICAgICBhdXRvIGNvbnRleHRJZCA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7Ci0gICAgICAgIG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkID0gY29udGV4dElkOwotICAg
ICAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNldFZpZGVvRWxlbWVudCgmdmlkZW9FbGVtZW50
KTsKLSAgICB9Ci0KLSAgICBhZGRDbGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29u
dGV4dElkKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6U2V0VXBWaWRlb0NvbnRyb2xzTWFuYWdlcldpdGhJRChtX2NvbnRyb2xzTWFu
YWdlckNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOwotI2VuZGlmCi19Ci0KLXZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6Y2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpCi17Ci0j
aWYgUExBVEZPUk0oTUFDKQotICAgIGlmICghbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQobV9jb250cm9sc01h
bmFnZXJDb250ZXh0SWQpOwotICAgIG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkID0gMDsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
Q2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSNlbmRpZgot
fQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5U
b01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxl
bWVudCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
IHRhcmdldE1vZGUpCiB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpCkBAIC0zNzUsMTQ5ICszMjUsMjMgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihXZWJD
b3IKIAogI3ByYWdtYSBtYXJrIEludGVyZmFjZSB0byBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VDb250ZXh0OgogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlc2V0TWVkaWFT
dGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlJlc2V0TWVkaWFTdGF0ZShjb250ZXh0SWQp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLSAgICAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6c2V0RHVyYXRpb24odWludDY0X3QgY29udGV4dElkLCBkb3VibGUgZHVyYXRpb24pCi17
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlNldER1cmF0aW9uKGNvbnRleHRJZCwgZHVyYXRpb24pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
LX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRDdXJyZW50VGltZSh1aW50
NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCi17
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlNldEN1cnJlbnRUaW1lKGNvbnRleHRJZCwgY3VycmVudFRpbWUsIGFuY2hvclRpbWUpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpz
ZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQot
ewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpTZXRCdWZmZXJlZFRpbWUoY29udGV4dElkLCBidWZmZXJlZFRpbWUpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRSYXRlKHVp
bnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKLXsK
LSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6U2V0UmF0ZShjb250ZXh0SWQsIGlzUGxheWluZywgcGxheWJhY2tSYXRlKSwgbV9wYWdlLT5w
YWdlSUQoKSk7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9E
aW1lbnNpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgs
IGZsb2F0IGhlaWdodCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0VmlkZW9EaW1lbnNpb25zKGNvbnRleHRJZCwgaGFzVmlk
ZW8sIHdpZHRoLCBoZWlnaHQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KLSAgICAKLXZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0U2Vla2FibGVSYW5nZXModWludDY0X3QgY29udGV4
dElkLCBjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQotewotICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiByYW5nZXNWZWN0b3I7Ci0gICAgCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHRpbWVSYW5nZXMubGVuZ3RoKCk7IGkrKykgewotICAgICAg
ICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGU7Ci0gICAgICAgIGRvdWJsZSBzdGFydCA9IHRp
bWVSYW5nZXMuc3RhcnQoaSwgZXhjZXB0aW9uQ29kZSk7Ci0gICAgICAgIGRvdWJsZSBlbmQgPSB0
aW1lUmFuZ2VzLmVuZChpLCBleGNlcHRpb25Db2RlKTsKLSAgICAgICAgcmFuZ2VzVmVjdG9yLmFw
cGVuZChzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+KHN0YXJ0LCBlbmQpKTsKLSAgICB9Ci0KLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
U2V0U2Vla2FibGVSYW5nZXNWZWN0b3IoY29udGV4dElkLCBXVEZNb3ZlKHJhbmdlc1ZlY3Rvcikp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQot
ewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpTZXRDYW5QbGF5RmFzdFJldmVyc2UoY29udGV4dElkLCB2YWx1ZSksIG1fcGFnZS0+cGFn
ZUlEKCkpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldEF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCi17Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCksIG1fcGFn
ZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldExl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKLXsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0TGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5k
ZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpzZXRFeHRlcm5hbFBsYXliYWNrKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBlbmFibGVk
LCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBl
IHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKQotewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRFeHRlcm5h
bFBsYXliYWNrUHJvcGVydGllcyhjb250ZXh0SWQsIGVuYWJsZWQsIHN0YXRpY19jYXN0PHVpbnQz
Ml90Pih0YXJnZXRUeXBlKSwgbG9jYWxpemVkRGV2aWNlTmFtZSksIG1fcGFnZS0+cGFnZUlEKCkp
OwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFdpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBkaXNhYmxlZCkKLXsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
U2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoY29udGV4dElkLCBkaXNhYmxlZCkpOwot
fQogCiAjcHJhZ21hIG1hcmsgTWVzc2FnZXMgZnJvbSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cGxheSh1aW50NjRfdCBj
b250ZXh0SWQpCi17Ci0gICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5wbGF5KCk7Ci19Ci0KLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cGF1c2UodWludDY0X3QgY29udGV4dElkKQot
ewotICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkucGF1c2UoKTsKLX0KLQotdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjp0b2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKQot
ewotICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkudG9nZ2xlUGxheVN0YXRlKCk7Ci19Ci0KLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6YmVnaW5TY3J1YmJpbmcodWludDY0X3QgY29u
dGV4dElkKQotewotICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuYmVnaW5TY3J1YmJpbmcoKTsK
LX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbmRTY3J1YmJpbmcodWludDY0
X3QgY29udGV4dElkKQotewotICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuZW5kU2NydWJiaW5n
KCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2Vla1RvVGltZSh1aW50
NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKQotewotICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJ
ZCkuc2Vla1RvVGltZSh0aW1lKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpmYXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKQotewotICAgIGVuc3Vy
ZU1vZGVsKGNvbnRleHRJZCkuZmFzdFNlZWsodGltZSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6YmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29udGV4dElkKQot
ewotICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuYmVnaW5TY2FubmluZ0ZvcndhcmQoKTsKLX0K
LQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpiZWdpblNjYW5uaW5nQmFja3dhcmQo
dWludDY0X3QgY29udGV4dElkKQotewotICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuYmVnaW5T
Y2FubmluZ0JhY2t3YXJkKCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
ZW5kU2Nhbm5pbmcodWludDY0X3QgY29udGV4dElkKQotewotICAgIGVuc3VyZU1vZGVsKGNvbnRl
eHRJZCkuZW5kU2Nhbm5pbmcoKTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBlbnN1
cmVNb2RlbChjb250ZXh0SWQpLnJlcXVlc3RGdWxsc2NyZWVuTW9kZShtb2RlKTsKIH0KIAotdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2
NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCi17Ci0gICAgZW5zdXJlTW9kZWwoY29udGV4
dElkKS5zZWxlY3RBdWRpb01lZGlhT3B0aW9uKGluZGV4KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4
dElkLCB1aW50NjRfdCBpbmRleCkKLXsKLSAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNlbGVj
dExlZ2libGVNZWRpYU9wdGlvbihpbmRleCk7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNj
cmVlbk1vZGUpCiB7CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5mdWxsc2NyZWVuTW9kZUNo
YW5nZWQodmlkZW9GdWxsc2NyZWVuTW9kZSk7CiB9CiAKLSNwcmFnbWEgbWFyayBNZXNzYWdlcyBm
cm9tIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKICAgICBQ
bGF0Zm9ybUxheWVyKiB2aWRlb0xheWVyID0gW0NBTGF5ZXIgbGF5ZXJdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276431</attachid>
            <date>2016-04-14 14:34:57 -0700</date>
            <delta_ts>2016-04-14 14:43:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156564-20160414143509.patch</filename>
            <type>text/plain</type>
            <size>307947</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5Mjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFmZjVmNDQ4NDE3YTc1
ZjRkNTQ4ZjE4MjFhYTE2ZGFlODU1NGM3NC4uYTQ4NjZiMzE3YjI2OWZiMDA4MGYzZDYwY2NkZDZm
YTNjNGEwNzQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyOCBAQAorMjAxNi0wNC0xNCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyIGFuZCBQcm94eSB0byBiZSB1c2VkIGJ5IGF1ZGlvIGVsZW1lbnRzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NTY0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzOyB0aGlzIHJlZmFjdG9ycyBleGlzdGluZyBmdW5jdGlvbmFsaXR5IGludG8gbmV3IGNsYXNz
ZXMuCisKKyAgICAgICAgVGVhc2UgYXBhcnQgdGhlIHZhcmlvdXMgV2ViVmlkZW9GdWxsc2NyZWVu
e0ludGVyZmFjZSxNb2RlbH17QVZLaXQsTWFjLFZpZGVvRWxlbWVudH0gaW50byBuZXcKKyAgICAg
ICAgV2ViUGxheWJhY2tTZXNzaW9u4oCmIGNsYXNzZXMgZGVhbGluZyBleGNsdXNpdmVseSB3aXRo
IHBsYXliYWNrIHN0YXRlIGFuZCBjb21tYW5kcywgbGVhdmluZworICAgICAgICBmdWxsc2NyZWVu
IHN0YXRlIGFuZCBjb21tYW5kcyBpbiB0aGUgV2ViVmlkZW9GdWxsc2NyZWVu4oCmIGNsYXNzZXMu
IFNwZWNpZmljYWxseSwgY3JlYXRlIHRoZQorICAgICAgICBmb2xsb3dpbmcgbmV3IGNsYXNzZXM6
CisKKyAgICAgICAgLSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgKGNvcGllZCBmcm9tIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSkKKyAgICAgICAgLSBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudCAoY29waWVkIGZyb20gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRp
YUVsZW1lbnQpCisgICAgICAgIC0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwgKGNvcGllZCBmcm9t
IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICAtIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0IChjb3BpZWQgZnJvbSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dCkKKyAgICAgICAgLSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMgKGNvcGllZCBmcm9t
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYykKKworICAgICAgICBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UgYW5kIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsIG5vdyBpbmhlcml0IGZy
b20KKyAgICAgICAgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlIGFuZCBXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbCwgcmVzcGVjdGl2ZWx5LiBUaGUgY29uY3JldGUKKyAgICAgICAgV2ViVmlkZW9G
dWxsc2NyZWVu4oCmIHN1YmNsYXNzZXMgZWFjaCB0YWtlIHRoZWlyIHJlc3BlY3RpdmUgV2ViUGxh
eWJhY2tTZXNzaW9u4oCmIHN1YmNsYXNzZXMgYW5kCisgICAgICAgIGZ1bGZpbGwgdGhlaXIgV2Vi
UGxheWJhY2tTZXNzaW9uIGludGVyZmFjZXMgdGhyb3VnaCBjb21wb3NpdGlvbi4KKworICAgICAg
ICBBcyBwYXJ0IG9mIHRoaXMgYmlnIHRlYXNlLWFwYXJ0LCB0aGUgV2ViQVZQbGF5ZXJDb250cm9s
bGVyIGNsYXNzIG5lZWRzIHRvIGJlIGV4cG9zZWQgaW4gYQorICAgICAgICBoZWFkZXIgKGFzIGl0
J3MgYWNjZXNzZWQgYnkgdHdvIGRpZmZlcmVudCBjbGFzc2VzIG5vdyksIHNvIHRoYXQgY2xhc3Mg
aXMgbW92ZWQgaW50byBpdHMgb3duCisgICAgICAgIGltcGxlbWVudGF0aW9uIGFuZCBoZWFkZXIg
ZmlsZXMuCisKKyAgICAgICAgVGhlIG9uZSBjYXNlIHdoZXJlIGEgY2hhbmdlIGluIGEgV2ViUGxh
eWJhY2tTZXNzaW9u4oCmIGNsYXNzIG5lZWRzIHRvIGJlIHJlZmxlY3RlZCBpbiBhCisgICAgICAg
IFdlYlZpZGVvRnVsbHNjcmVlbuKApiBjbGFzcyBpcyBpbiBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdCwgd2hlcmUKKyAgICAgICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQgbmVlZHMgdG8gYmUgbm90aWZpZWQgd2hlbiBleHRlcm5hbCBwbGF5YmFjayBiZWNvbWVzIGRp
cy9lbi0KKyAgICAgICAgYWJsZWQsIHNvIGEgbmV3IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0Q2xpZW50IGludGVyZmFjZSBoYXMgYmVlbiBhZGRlZCB0byBhbGxvdyB0aGUKKyAgICAg
ICAgV2ViUGxheWJhY2tTZXNzaW9u4oCmIHRvIG5vdGlmeSB0aGUgV2ViVmlkZW9GdWxsc2NyZWVu
4oCmLgorCisgICAgICAgIFRoZSByZXNwb25zaWJpbGl0eSBmb3IgdGhlICJjb250cm9scyBtYW5h
Z2VyIiBoYXMgbW92ZWQgZnJvbSB0aGUgV2ViVmlkZW9GdWxsc2NyZWVu4oCmIGNsYXNzZXMKKyAg
ICAgICAgdG8gdGhlIFdlYlBsYXliYWNrU2Vzc2lvbuKApiBjbGFzc2VzLCBzbyB0aGUgQ2hyb21l
Q2xpZW50IGludGVyZmFjZSBmb3IgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcKKyAgICAgICAgdGhv
c2UgY29udHJvbHMgaXMgc2ltaWxhcmx5IHJlbmFtZWQgZnJvbSBzZXRVcFZpZGVvQ29udHJvbHNN
YW5hZ2VyKCkgdG8KKyAgICAgICAgc2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpLgorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZS5oLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlOjp+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjp+V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudDo6bWVkaWFFbGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbTogQWRkZWQuCisgICAgICAg
IChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6V2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxNZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQ6On5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCk6CisgICAgICAg
IChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2V0V2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50OjpzZXRNZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUpOgorICAgICAgICAoV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnBsYXkpOgorICAgICAgICAoV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnBhdXNlKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp0b2dnbGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmJlZ2luU2NydWJiaW5nKToKKyAgICAgICAg
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjplbmRTY3J1YmJpbmcpOgorICAg
ICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnNlZWtUb1RpbWUpOgor
ICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmZhc3RTZWVrKToK
KyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpiZWdpblNjYW5u
aW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50OjplbmRTY2FubmluZyk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbik6CisgICAgICAgIChX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0
aW9uKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRh
dGVMZWdpYmxlT3B0aW9ucyk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50OjpldmVudE5hbWVBbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50LmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQubW0uCisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVu
dDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6On5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZp
ZGVvRWxlbWVudCk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVu
dDo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OmhhbmRsZUV2ZW50KToKKyAgICAgICAg
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUp
OgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OnBsYXkpOgor
ICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OnBhdXNlKToKKyAg
ICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50Ojp0b2dnbGVQbGF5U3Rh
dGUpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OmJlZ2lu
U2NydWJiaW5nKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50
OjplbmRTY3J1YmJpbmcpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0Vs
ZW1lbnQ6OnNlZWtUb1RpbWUpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRl
b0VsZW1lbnQ6OmZhc3RTZWVrKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlk
ZW9FbGVtZW50OjpiZWdpblNjYW5uaW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKToKKyAgICAgICAg
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50OjplbmRTY2FubmluZyk6CisgICAg
ICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6c2VsZWN0QXVkaW9NZWRp
YU9wdGlvbik6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6
c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsVmlkZW9FbGVtZW50Ojp1cGRhdGVMZWdpYmxlT3B0aW9ucyk6CisgICAgICAgIChXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKToKKyAgICAg
ICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50OjpldmVudE5hbWVBbGwpOgor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmg6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6fldlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSk6CisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpwbGF5KToKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpwYXVzZSk6CisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6dG9nZ2xlUGxheVN0YXRlKToKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpiZWdpblNjcnViYmluZyk6Cisg
ICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZW5kU2NydWJiaW5n
KToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZWVrVG9U
aW1lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpmYXN0
U2Vlayk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6YmVn
aW5TY2FubmluZ0ZvcndhcmQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQ6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZW5kU2Nhbm5pbmcpOgorICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24pOgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNlbGVjdExlZ2libGVN
ZWRpYU9wdGlvbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6aGFuZGxlRXZlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0xheWVyRnJh
bWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpvYnNlcnZlZEV2ZW50TmFtZXMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmV2ZW50TmFtZUFs
bCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojppc1Zpc2libGUpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbTogQWRkZWQuCisgICAgICAgICgt
W1dlYkFWUGxheWVyQ29udHJvbGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVy
Q29udHJvbGxlciByZXNldFN0YXRlXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxl
ciBwbGF5ZXJdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGZvcndhcmRpbmdU
YXJnZXRGb3JTZWxlY3RvcjpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHBs
YXk6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBwYXVzZTpdKToKKyAgICAg
ICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHRvZ2dsZVBsYXliYWNrOl0pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckNvbnRyb2xsZXIgdG9nZ2xlUGxheWJhY2tFdmVuV2hlbkluQmFja2dyb3Vu
ZDpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGlzUGxheWluZ10pOgorICAg
ICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0UGxheWluZzpdKToKKyAgICAgICAgKCtb
V2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nUGxheWluZ10p
OgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgYmVnaW5TY3J1YmJpbmc6XSk6Cisg
ICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBlbmRTY3J1YmJpbmc6XSk6CisgICAgICAg
ICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBzZWVrVG9UaW1lOl0pOgorICAgICAgICAoLVtXZWJB
VlBsYXllckNvbnRyb2xsZXIgY3VycmVudFRpbWVXaXRoaW5FbmRUaW1lc10pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0Q3VycmVudFRpbWVXaXRoaW5FbmRUaW1lczpdKToK
KyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0
aW5nQ3VycmVudFRpbWVXaXRoaW5FbmRUaW1lc10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNv
bnRyb2xsZXIgaGFzTGl2ZVN0cmVhbWluZ0NvbnRlbnRdKToKKyAgICAgICAgKCtbV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nSGFzTGl2ZVN0cmVhbWluZ0Nv
bnRlbnRdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHNraXBCYWNrd2FyZFRo
aXJ0eVNlY29uZHM6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBnb3RvRW5k
T2ZTZWVrYWJsZVJhbmdlczpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGNh
blNjYW5Gb3J3YXJkXSk6CisgICAgICAgICgrW1dlYkFWUGxheWVyQ29udHJvbGxlciBrZXlQYXRo
c0ZvclZhbHVlc0FmZmVjdGluZ0NhblNjYW5Gb3J3YXJkXSk6CisgICAgICAgICgtW1dlYkFWUGxh
eWVyQ29udHJvbGxlciBiZWdpblNjYW5uaW5nRm9yd2FyZDpdKToKKyAgICAgICAgKC1bV2ViQVZQ
bGF5ZXJDb250cm9sbGVyIGVuZFNjYW5uaW5nRm9yd2FyZDpdKToKKyAgICAgICAgKC1bV2ViQVZQ
bGF5ZXJDb250cm9sbGVyIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZDpdKToKKyAgICAgICAgKC1bV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIGVuZFNjYW5uaW5nQmFja3dhcmQ6XSk6CisgICAgICAgICgtW1dl
YkFWUGxheWVyQ29udHJvbGxlciBjYW5TZWVrVG9CZWdpbm5pbmddKToKKyAgICAgICAgKCtbV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nQ2FuU2Vla1RvQmVn
aW5uaW5nXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBzZWVrVG9CZWdpbm5p
bmc6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBzZWVrQ2hhcHRlckJhY2t3
YXJkOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgY2FuU2Vla1RvRW5kXSk6
CisgICAgICAgICgrW1dlYkFWUGxheWVyQ29udHJvbGxlciBrZXlQYXRoc0ZvclZhbHVlc0FmZmVj
dGluZ0NhblNlZWtUb0VuZF0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2Vl
a1RvRW5kOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2Vla0NoYXB0ZXJG
b3J3YXJkOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgaGFzTWVkaWFTZWxl
Y3Rpb25PcHRpb25zXSk6CisgICAgICAgICgrW1dlYkFWUGxheWVyQ29udHJvbGxlciBrZXlQYXRo
c0ZvclZhbHVlc0FmZmVjdGluZ0hhc01lZGlhU2VsZWN0aW9uT3B0aW9uc10pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckNvbnRyb2xsZXIgaGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNdKToK
KyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0
aW5nSGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGhhc0xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNdKToKKyAgICAgICAg
KCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nSGFzTGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRy
b2xsZXIgY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25dKToKKyAgICAgICAgKC1bV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIHNldEN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOl0p
OgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgY3VycmVudExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0Q3Vy
cmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGlzUGxheWluZ09uRXh0ZXJuYWxTY3JlZW5dKToKKyAgICAgICAgKCtbV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nUGxheWluZ09uRXh0
ZXJuYWxTY3JlZW5dKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGlzUGljdHVy
ZUluUGljdHVyZUludGVycnVwdGVkXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxl
ciBzZXRQaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ6XSk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXRDbGllbnQ6On5XZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdENsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdDo6fldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpyZXNldE1lZGlh
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQ6OnNldFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXREdXJhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0Q3VycmVudFRpbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEJ1
ZmZlcmVkVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdDo6c2V0UmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdDo6c2V0U2Vla2FibGVSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjptZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRFeHRlcm5hbFBsYXliYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojpz
ZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6
OmludmFsaWRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgICgtW1dlYkFWUGxheWVy
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBmdWxsc2NyZWVuSW50ZXJmYWNlXSk6CisgICAgICAgICgt
W1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBzZXRGdWxsc2NyZWVuSW50ZXJmYWNl
Ol0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGZ1bGxzY3JlZW5JbnRlcmZhY2VdKToK
KyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOl0pOgor
ICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGxheW91dFN1YmxheWVyc10pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckxheWVyIHJlc29sdmVCb3VuZHNdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJMYXllciBzZXRWaWRlb0dyYXZpdHk6XSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCk6CisgICAgICAgIChX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6fldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0KToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpw
bGF5ZXJDb250cm9sbGVyKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpyZXNldE1lZGlhU3RhdGUpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OnNldER1cmF0aW9uKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6c2V0QnVmZmVyZWRUaW1lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpzZXRSYXRlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMpOgorICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFNlZWthYmxlUmFuZ2VzKToKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UpOgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRFeHRlcm5hbFBsYXliYWNrKToKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleHRlcm5hbFBsYXliYWNrRW5hYmxl
ZENoYW5nZWQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNl
dFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBGdWxsc2NyZWVuKToK
KyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNj
cmVlbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6bWF5QXV0
b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUpOgorICAgICAgICAoLVtXZWJBVlBs
YXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGxheWVyVmlld0NvbnRyb2xsZXJXaWxsU3RhcnRQ
aWN0dXJlSW5QaWN0dXJlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdD
b250cm9sbGVyRGVsZWdhdGUgcGxheWVyVmlld0NvbnRyb2xsZXJEaWRTdGFydFBpY3R1cmVJblBp
Y3R1cmU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZSBwbGF5ZXJWaWV3Q29udHJvbGxlckZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJl
OndpdGhFcnJvcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJv
bGxlckRlbGVnYXRlIHBsYXllclZpZXdDb250cm9sbGVyV2lsbFN0b3BQaWN0dXJlSW5QaWN0dXJl
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdh
dGUgcGxheWVyVmlld0NvbnRyb2xsZXJEaWRTdG9wUGljdHVyZUluUGljdHVyZTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKGNvbnZlcnRUb0V4aXRGdWxsU2NyZWVuUmVhc29uKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlIHBsYXllclZpZXdDb250
cm9sbGVyOnNob3VsZEV4aXRGdWxsU2NyZWVuV2l0aFJlYXNvbjpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlIHBsYXllclZpZXdDb250cm9s
bGVyOnJlc3RvcmVVc2VySW50ZXJmYWNlRm9yUGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgaW5p
dF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGRlYWxsb2NdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciB2aWRlb0dyYXZpdHldKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciB2aWRlb1JlY3RdKTogRGVsZXRlZC4KKyAg
ICAgICAgKCtbV2ViQVZQbGF5ZXJMYXllciBrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ1ZpZGVv
UmVjdF0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5
ZXJWaWV3X2xheWVyQ2xhc3MpOiBEZWxldGVkLgorICAgICAgICAoZ2V0V2ViQVZQaWN0dXJlSW5Q
aWN0dXJlUGxheWVyTGF5ZXJWaWV3Q2xhc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQVZQbGF5
ZXJMYXllclZpZXdfbGF5ZXJDbGFzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJBVlBsYXllckxh
eWVyVmlld19wbGF5ZXJDb250cm9sbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3NldFBsYXllckNvbnRyb2xsZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQVZQ
bGF5ZXJMYXllclZpZXdfdmlkZW9WaWV3KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3NldFZpZGVvVmlldyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJBVlBsYXllckxh
eWVyVmlld19zdGFydFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmll
dyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld19zdG9wUm91dGluZ1Zp
ZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkFWUGxheWVyTGF5ZXJWaWV3X3BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfZGVhbGxvYyk6IERlbGV0ZWQu
CisgICAgICAgIChnZXRXZWJBVlBsYXllckxheWVyVmlld0NsYXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFwcGxpY2F0aW9uRGlkQmVj
b21lQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjplbnRlckZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlblN0YW5kYXJkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVl
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
ZGlkU3RhcnRQaWN0dXJlSW5QaWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpmYWlsZWRUb1N0YXJ0UGljdHVyZUluUGljdHVyZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6d2lsbFN0
b3BQaWN0dXJlSW5QaWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpkaWRTdG9wUGljdHVyZUluUGljdHVyZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZUZvclBpY3R1cmVJ
blBpY3R1cmVTdG9wV2l0aENvbXBsZXRpb25IYW5kbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzaG91bGRFeGl0RnVsbHNjcmVlbldpdGhS
ZWFzb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OndhdGNoZG9nVGltZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0TW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y2xlYXJNb2RlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjLm1tLgorICAgICAgICAoLVtXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uTWFj
IGxvY2FsaXplZERpc3BsYXlOYW1lXSk6CisgICAgICAgICgtW1dlYkFWTWVkaWFTZWxlY3Rpb25P
cHRpb25NYWMgc2V0TG9jYWxpemVkRGlzcGxheU5hbWU6XSk6CisgICAgICAgICgtW1dlYlBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyIGluaXRXaXRoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
Ol0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciB0aW1pbmddKToKKyAg
ICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2V0VGltaW5nOl0pOgorICAgICAg
ICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBzZWVrYWJsZVRpbWVSYW5nZXNdKToKKyAg
ICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2Vz
Ol0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBpc1NlZWtpbmddKToK
KyAgICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2Vla1RvVGltZTp0b2xlcmFu
Y2VCZWZvcmU6dG9sZXJhbmNlQWZ0ZXI6XSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zXSk6CisgICAgICAgICgtW1dlYlBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOl0pOgor
ICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBjdXJyZW50QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbl0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBz
ZXRDdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAgKC1bV2ViUGxh
eWJhY2tDb250cm9sc01hbmFnZXIgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc10pOgorICAg
ICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb25zOl0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBjdXJy
ZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNr
Q29udHJvbHNNYW5hZ2VyIHNldEN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb246XSk6
CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIGNhbmNlbFRodW1ibmFpbEFu
ZEF1ZGlvQW1wbGl0dWRlU2FtcGxlR2VuZXJhdGlvbl0pOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjp+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6
c2V0V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXREdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0UmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldFNlZWthYmxl
UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldEF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYzo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmludmFsaWRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjplbnN1cmVD
b250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjOjpwbGF5QmFja0NvbnRyb2xzTWFuYWdlcik6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM6OnNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRDdXJyZW50VGltZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFJhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRTZWVr
YWJsZVJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VNYWM6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM6OmVuc3VyZUNvbnRyb2xzTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWM6On5XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
OjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldE1vZGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpj
bGVhck1vZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjOjpzZXR1cEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjplbnRlckZ1bGxzY3JlZW4pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpl
eGl0RnVsbHNjcmVlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWM6OmV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM6OmNsZWFudXBGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6aW52YWxpZGF0ZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnByZXBhcmVkVG9SZXR1
cm5Ub0lubGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OnNldFZpZGVvRGltZW5zaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUpOiBEZWxldGVkLgorCiAyMDE2LTA0LTEx
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRE9NVG9rZW5MaXN0
LmNvbnRhaW5zKCkgc2hvdWxkIG5vdCB0aHJvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM3Nzk3ZDUxZTMzNTFl
MDc4YWQzYzM0NmY1YTFkNjJmYTU4ZTdjZTEuLjVmMWI0ZmZjOWNlMjQ1ZjRjNDgyMmZhOWQ5Yzli
YWYyMzFmYTU1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMTcgQEAKKzIwMTYtMDQtMTQgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlciBhbmQgUHJveHkgdG8gYmUgdXNlZCBieSBhdWRpbyBlbGVtZW50cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjU2NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYXNlIGFw
YXJ0IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgYW5kIOKAplByb3h5IGludG8gV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlciBhbmQg4oCmUHJveHkKKyAgICAgICAgY2xhc3NlcyBkZWFsaW5nIGV4
Y2x1c2l2ZWx5IHdpdGggcGxheWJhY2sgc3RhdGUgYW5kIGNvbW1hbmRzLCBsZWF2aW5nIGZ1bGxz
Y3JlZW4gc3RhdGUgYW5kCisgICAgICAgIGNvbW1hbmRzIGluIHRoZSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2Vy4oCmIGNsYXNzZXMuCisKKyAgICAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ciBhbmQg4oCmUHJveHkgd2lsbCBub3cgcmVxdWlyZSBhbiBhc3NvY2lhdGVkCisgICAgICAgIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIgYW5kIOKAplByb3h5IGNsYXNzLiBUaGUgV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlciBjbGFzc2VzIGNhbiBiZQorICAgICAgICB1c2VkIHNlcGFyYXRlbHkg
YW5kIHdpdGhvdXQgdGhlIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgY2xhc3Nlcy4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5QXV0b21hdGljYWxseVNo
b3dWaWRlb1BpY3R1cmVJblBpY3R1cmVdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW06IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnBsYXkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnBhdXNlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0Ojp0b2dnbGVQbGF5U3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OmJl
Z2luU2NydWJiaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxD
b250ZXh0OjplbmRTY3J1YmJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbENvbnRleHQ6OnNlZWtUb1RpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbENvbnRleHQ6OmZhc3RTZWVrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpiZWdpblNjYW5uaW5nRm9yd2FyZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6YmVnaW5TY2FubmluZ0Jh
Y2t3YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0
OjplbmRTY2FubmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q29udGV4dDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OldlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6fldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y3JlYXRl
TW9kZWxBbmRJbnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OmVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjplbnN1cmVNb2RlbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5zdXJlSW50ZXJmYWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjphZGRDbGll
bnRGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpyZW1vdmVDbGllbnRGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0
aElEKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpj
bGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZXNldE1lZGlhU3RhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEN1cnJlbnRUaW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRCdWZmZXJlZFRp
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNl
dFNlZWthYmxlUmFuZ2VzVmVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0
V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldER1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRSYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpwbGF5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpwYXVzZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6dG9nZ2xlUGxheVN0YXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjcnVi
YmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
ZW5kU2NydWJiaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpzZWVrVG9UaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpmYXN0U2Vlayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0ZvcndhcmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5kU2Nh
bm5pbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y29udHJvbHNNYW5hZ2VySW50
ZXJmYWNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6fldlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dDo6cGxheSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dDo6cGF1c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6YmVnaW5TY3J1YmJpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmVuZFNjcnViYmluZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2Vla1Rv
VGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6
ZmFzdFNlZWspOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQ6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxDb250ZXh0OjpiZWdpblNjYW5uaW5nQmFja3dhcmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmVuZFNjYW5uaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpzZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250
ZXh0OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVh
dGVNb2RlbEFuZEludGVyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6c2V0dXBGdWxsc2NyZWVuV2l0aElEKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0RpbWVuc2lv
bnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmVudGVyRnVsbHNjcmVlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmV4aXRGdWxsc2Ny
ZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y2xlYW51cEZ1bGxzY3JlZW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnByZXBh
cmVkVG9SZXR1cm5Ub0lubGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRTZXR1
cEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4p
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmRpZENsZWFudXBGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0xheWVyRnJhbWUpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhhc0FjdGl2
ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojppc1BsYXlpbmdNZWRpYURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c3VwcG9ydHNWaWRlb0Z1
bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnNldFVwUGxheWJh
Y2tDb250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNs
ZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ2hyb21lQ2xpZW50OjpleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpleGl0VmlkZW9GdWxsc2NyZWVu
VG9Nb2RlV2l0aG91dEFuaW1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4
dDo6aW52YWxpZGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpuZXh0Q29udGV4dElkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQ29udGV4dDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6On5XZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6cmVzZXRNZWRpYVN0YXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0RHVyYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRD
dXJyZW50VGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQ6OnNldEJ1ZmZlcmVkVGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldFJhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRTZWVrYWJsZVJhbmdlcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldENhblBs
YXlGYXN0UmV2ZXJzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUNvbnRleHQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0TGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUNvbnRleHQ6OnNldEV4dGVybmFsUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Oldl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjp+V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5zdXJlTW9kZWxB
bmRJbnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjplbnN1cmVNb2RlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OmVuc3VyZUludGVyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OnJlbW92ZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjphZGRDbGllbnRGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlQ2xpZW50Rm9yQ29udGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFVwUGxheWJhY2tDb250cm9s
c01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpj
bGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6Y29udGV4dElkRm9yTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVzZXRNZWRpYVN0YXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0RHVyYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50VGltZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldEJ1ZmZlcmVk
VGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFJh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRTZWVr
YWJsZVJhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNl
dEV4dGVybmFsUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnBsYXkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpwYXVzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJlZ2luU2NydWJiaW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5kU2NydWJiaW5nKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2Vla1RvVGltZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmZhc3RTZWVrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YmVnaW5TY2FubmluZ0ZvcndhcmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpiZWdpblNjYW5u
aW5nQmFja3dhcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjplbmRTY2FubmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6
OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpyZXNldE1lZGlhU3RhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXREdXJh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRl
eHQ6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQ29udGV4dDo6c2V0QnVmZmVyZWRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0UmF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFNlZWthYmxlUmFuZ2Vz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6
c2V0Q2FuUGxheUZhc3RSZXZlcnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRMZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0RXh0ZXJuYWxQbGF5YmFjayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFdpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5G
b3JWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VDb250ZXh0OjpzZXRWaWRlb0RpbWVuc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp+V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRB
bmltYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpzZXRWaWRlb0RpbWVuc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVu
TW9kZUNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVs
bHNjcmVlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXllckdyYXZpdHlFbnVtKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZnVsbHNj
cmVlbk1heVJldHVyblRvSW5saW5lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKTogRGVsZXRlZC4K
KwogMjAxNi0wNC0xMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5OTI5MC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NWY2Mjg2YjYz
NDlkMmY5NDc1OWUyYTNiNGUwMzcwMmUyOTdiMDBjLi45OWU4Y2FiMDZjNmQ2NjE2YzViNTQwN2I3
OWY2MmE0YzYzYzZhMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MDg2LDYgKzYwODYsMTUgQEAKIAkJQ0RBMDdGQkUxOEUw
QTE2QTAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTA3RkJDMThFMEExNkEwMDQ2OTlGQSAvKiBT
eXN0ZW1TbGVlcExpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQ0RBMDdGQzExOEUwQTIyQjAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlz
dGVuZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREEwN0ZCRjE4RTBBMjJCMDA0Njk5RkEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1hYy5tbSAq
LzsgfTsKIAkJQ0RBMDdGQzIxOEUwQTIyQjAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXJN
YWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTA3
RkMwMThFMEEyMkIwMDQ2OTlGQSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLmggKi87IH07CisJ
CUNEQTI5QTA5MUNCRDk5RjQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTA4
MUNCRDk5RjQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREEyOUEwQjFDQkQ5
QTc0MDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTBBMUNCRDlBNzQwMDkwMUNDRiAv
KiBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUNEQTI5QTBFMUNCRDlDRkUwMDkwMUNDRiAvKiBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTBDMUNCRDlDRkUwMDkwMUNDRiAvKiBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSAqLzsgfTsKKwkJQ0RBMjlBMEYxQ0JEOUNG
RTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEyOUEwRDFDQkQ5Q0ZF
MDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREEyOUExNjFDQkRB
NTZDMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMTQxQ0JEQTU2QzAw
OTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbSAqLzsgfTsKKwkJQ0RB
MjlBMTcxQ0JEQTU2QzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMTUx
Q0JEQTU2QzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEQTI5QTMwMUNC
Rjc0RDQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTJGMUNCRjcz
RkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSAqLzsgfTsK
KwkJQ0RBMjlBMzExQ0JGNzREQTAwOTAxQ0NGIC8qIFdlYkFWUGxheWVyQ29udHJvbGxlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTJEMUNC
RjczRkMwMDkwMUNDRiAvKiBXZWJBVlBsYXllckNvbnRyb2xsZXIubW0gKi87IH07CisJCUNEQTI5
QTMyMUNDMDFBOTUwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMkUx
Q0JGNzNGQzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RBNzk4MjQx
NzBBMjU4MzAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE3OTgyMzE3MEEyNTgzMDBENDVDNTUgLyogQXVk
aW9TZXNzaW9uLmNwcCAqLzsgfTsKIAkJQ0RBNzk4MjcxNzBBMjc5MTAwRDQ1QzU1IC8qIEF1ZGlv
U2Vzc2lvbklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQTc5ODI1MTcwQTI3OTAwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25JT1MubW0gKi87IH07
CiAJCUNEQTc5ODJBMTcwQTNEMDAwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTc5ODIxMTcwQTIyREMwMEQ0
NUM1NSAvKiBBdWRpb1Nlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTQwNTUsNiArMTQwNjQsMTYgQEAKIAkJQ0RBMDdGQkMxOEUwQTE2
QTAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3lzdGVtU2xlZXBMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREEwN0ZCRjE4RTBBMjJCMDA0Njk5RkEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5c3RlbVNsZWVw
TGlzdGVuZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQTA3RkMwMThF
MEEyMkIwMDQ2OTlGQSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbVNsZWVwTGlzdGVuZXJNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMDgxQ0JEOTlGNDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBMjlBMEExQ0JEOUE3NDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTI5QTBDMUNCRDlDRkUwMDkwMUNDRiAv
KiBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREEyOUEwRDFDQkQ5Q0ZFMDA5
MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMTQxQ0JEQTU2QzAwOTAx
Q0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMTUxQ0JEQTU2QzAwOTAxQ0NG
IC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMkMxQ0JGNzNGQzAwOTAxQ0NGIC8qIFdlYkFWUGxh
eWVyQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBVlBs
YXllckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMkQx
Q0JGNzNGQzAwOTAxQ0NGIC8qIFdlYkFWUGxheWVyQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkFWUGxheWVyQ29udHJvbGxlci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMkUxQ0JGNzNGQzAwOTAxQ0NGIC8qIFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQTI5QTJGMUNCRjczRkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREE3OTgyMTE3MEEyMkRDMDBENDVDNTUgLyogQXVkaW9TZXNz
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDREE3OTgyMzE3MEEyNTgzMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQTc5ODI1MTcwQTI3OTAwMEQ0NUM1NSAvKiBB
dWRpb1Nlc3Npb25JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBBdWRpb1Nlc3Npb25JT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzg3
Myw2ICsxNzg5Miw4IEBACiAJCQkJQkU4NTYwNTEwNzAxRjkxMTAwMjM5NzY5IC8qIFdlYkNvcmVW
aWV3Lm0gKi8sCiAJCQkJRTFBMzE2MkIxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRl
ZFN0cmluZ0V4dHJhcy5oICovLAogCQkJCUUxQTMxNjJDMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJO
U0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0gKi8sCisJCQkJQ0RBMjlBMTUxQ0JEQTU2QzAwOTAx
Q0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oICovLAorCQkJCUNEQTI5QTE0
MUNCREE1NkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gKi8s
CiAJCQkJQ0Q4MjAzMDYxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIuaCAqLywKIAkJCQlDRDgyMDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlci5tbSAqLywKIAkJCQlDRDgyMDMwODEzOTVBQjZBMDBGOTU2QzYgLyog
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oICovLApAQCAtMTk5NTcsMTEg
KzE5OTc4LDE1IEBACiAJCQkJNDRDOTkxOUUwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLm1t
ICovLAogCQkJCTFGNzJCRjA4MTg3RkQ0MjcwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9y
eUhhbmRsZXJJT1MuY3BwICovLAogCQkJCTFGNzJCRjA5MTg3RkQ0MjcwMDA5QkNCMyAvKiBUaWxl
Q29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCAqLywKKwkJCQlDREEyOUEyQzFDQkY3M0ZDMDA5
MDFDQ0YgLyogV2ViQVZQbGF5ZXJDb250cm9sbGVyLmggKi8sCisJCQkJQ0RBMjlBMkQxQ0JGNzNG
QzAwOTAxQ0NGIC8qIFdlYkFWUGxheWVyQ29udHJvbGxlci5tbSAqLywKIAkJCQkzMTQwMzc5NzEy
NEJFQTdGMDBBRjQwRTQgLyogV2ViQ29yZU1vdGlvbk1hbmFnZXIuaCAqLywKIAkJCQkzMTQwMzc5
ODEyNEJFQTdGMDBBRjQwRTQgLyogV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0gKi8sCiAJCQkJRTQ1
MzkwMzgwRUFGRDYzNzAwMzY5NUM4IC8qIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0gKi8s
CiAJCQkJRkUwRDg0RTgxMDQ4NDM0ODAwMUExNzlFIC8qIFdlYkV2ZW50LmggKi8sCiAJCQkJRkUw
RDg0RUExMDQ4NDM2RTAwMUExNzlFIC8qIFdlYkV2ZW50Lm1tICovLAorCQkJCUNEQTI5QTJFMUNC
RjczRkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oICovLAor
CQkJCUNEQTI5QTJGMUNCRjczRkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdC5tbSAqLywKIAkJCQlBNTAyQzVERDEzMDQ5QjM1MDBGQzdENTMgLyogV2ViU2FmZUdD
QWN0aXZpdHlDYWxsYmFja0lPUy5oICovLAogCQkJCUMyQzRDQjFEMTYxQTEzMTIwMEQyMTREQSAv
KiBXZWJTYWZlSW5jcmVtZW50YWxTd2VlcGVySU9TLmggKi8sCiAJCQkJM0Y0MkIzMUIxODgxMTkx
QjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oICovLApAQCAt
MjAwMTAsNiArMjAwMzUsMTAgQEAKIAkJCQlDREM5NzlGMzFDNDk4QzA5MDBEQjUwRDQgLyogV2Vi
Q29yZU5TRXJyb3JFeHRyYXMuaCAqLywKIAkJCQlDREM5NzlGMjFDNDk4QzA5MDBEQjUwRDQgLyog
V2ViQ29yZU5TRXJyb3JFeHRyYXMubW0gKi8sCiAJCQkJMUE3RTE5NDQxQzU4NjNCRTAwQ0NEREYz
IC8qIFdlYktpdEFkZGl0aW9ucy5tbSAqLywKKwkJCQlDREEyOUEwODFDQkQ5OUY0MDA5MDFDQ0Yg
LyogV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmggKi8sCisJCQkJQ0RBMjlBMEExQ0JEOUE3
NDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmggKi8sCisJCQkJQ0RBMjlBMEMx
Q0JEOUNGRTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1t
ICovLAorCQkJCUNEQTI5QTBEMUNCRDlDRkUwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudC5oICovLAogCQkJCTUyQjBENEJGMUM1N0ZENjYwMDc3Q0U1MyAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oICovLAogCQkJCTUyMTMxRTU4MUM0RjE1
MjIwMDMzRjgwMiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuaCAqLywKIAkJCQk1MkQ1
QTFBNDFDNTc0ODg5MDBERTM0QTMgLyogV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCAqLywKQEAg
LTI1MjI4LDYgKzI1MjU3LDcgQEAKIAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyogQ29s
b3JDaG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCNDEyNTFGMTJEMDAz
RUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUVERTNBNTAwMEM3
QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBMjlBMEYx
Q0JEOUNGRTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzgyREY1ODEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNERDQ1NEUxMjM2Qzk1QzAwOUE3OTg1IC8qIENvbHVt
bkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTQzRURENjdGMUI0ODVEQkYwMDY0MEU3NSAvKiBD
b21iaW5lZEZpbHRlcnNBbHBoYWJldC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTM4Miw2ICsyNTQx
Miw3IEBACiAJCQkJQTgwRTZDRkEwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0ltYWdlVmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0Y2MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbXBvcnRS
dWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkQwMTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NT
SW5oZXJpdGVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQTI5QTA5MUNCRDk5RjQwMDkw
MUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4MEU2RDA4MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbml0aWFsVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTMxMjg4RTczMEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZVJ1bGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTMxMjg4RTc1MEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFt
ZXNSdWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NDk5LDYgKzI3NTMwLDcgQEAKIAkJCQk0QTBG
RkFBNjFBQUY1RUY2MDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzQxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdDMUMwRTUxQkZCNjBFRDAw
QkQyMjU2IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQ0RBMjlBMEIxQ0JEOUE3NDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQzNjhFODBDMjI2RTMyMDA1RUZCNUYg
LyogUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NTgxNzVENDE0QzAwQzIxRUM4IC8q
IFJlY3RhbmdsZVNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5ODMxQUU0QTE1NDIyNUM5MDBG
RTI2NDQgLyogUmVmZXJyZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovLApAQCAtMjgyNjgsNiArMjgz
MDAsNyBAQAogCQkJCUIyQzNEQTQwMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWNVc2VyRGVm
aW5lZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNDIwRDAwNkMxRDAwRUY2RjI2IC8qIFRl
eHRDb2RlY1VURjE2LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzQzQ0I4MjEyRjI1RTUxMDAzM0M1
RUUgLyogVGV4dENvZGVjVVRGOC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBMjlBMTcxQ0JEQTU2
QzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQyQjk3Q0ExMzEzODk0MzAwOEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTgyREUzMjUxQzMwQzg1NDAwQkUwMkE4IC8qIFRl
eHREZWNvcmF0aW9uUGFpbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzg0QjQxMjM3MTE4
MDAwMEM2MTYxIC8qIFRleHREb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODU0NSw2ICsy
ODU3OCw3IEBACiAJCQkJMUNBRjM0ODEwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBRjM0ODMwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNj
cmlwdE9iamVjdFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDFCMEQ3RTJCODIw
MDdDMzk4MyAvKiBXZWJTY3JpcHRPYmplY3RQcm90b2NvbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
Q0RBMjlBMzIxQ0MwMUE5NTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQxQjE0RkEwOUQ1MDA3NDU3QUUgLyogV2Vi
U29ja2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQxRTE0RkEwOUQ1MDA3NDU3QUUgLyog
V2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMUYxNEZBMDlENTAw
NzQ1N0FFIC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjg5
NjksNiArMjkwMDMsNyBAQAogCQkJCTMxQTc5NUM4MTg4OEJDQjUwMDM4MkY5MCAvKiBBTkdMRUlu
c3RhbmNlZEFycmF5cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTA3MDdFNjEyMTlDMDQzMDBE
OTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFOTEy
QUEwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlD
REEyOUEwRTFDQkQ5Q0ZFMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExMTBFNkUxREE3MDBCRjYwODggLyog
QW5pbWF0aW9uQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExMzBFNkUxREE3MDBC
RjYwODggLyogQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTk4
NDgwMjFBMUQ4MTgxMDBBMTMzMTggLyogQW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0zMTA0Myw2ICszMTA3OCw3IEBACiAJCQkJRkU5RTg5RkIxNkUyREMwNTAwQTkwOEY4IC8q
IE9yaWdpbkxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1ODFGQUUxNTIwRjkxRjAwM0E3
QTc1IC8qIE9zY2lsbGF0b3JOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMEQ1NzM2MEE1
Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNE
QTI5QTMwMUNCRjc0RDQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTY1RkVBODY5MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzdFNzc2MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdl
Q2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1RTVCNjExQTE1RjE1NjAwMEM2MDlFIC8q
IFBhZ2VDb25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE2NjEsNiArMzE2OTcs
NyBAQAogCQkJCUIyMjI3QTE0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGb250RmFjZUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMTcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0Zv
bnRGYWNlRm9ybWF0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0ExQTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRm9udEZhY2VOYW1lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDREEyOUExNjFDQkRBNTZDMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMUQwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0ZvbnRGYWNlU3JjRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0EyMDBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyMjI3QTIzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxNzk1LDYgKzMxODMyLDcgQEAKIAkJCQk5NzU5RTkz
RjE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
NjEwM0IwMUNBREJBN0EwMDE2QjRDNyAvKiBJREJWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NzU5RTk0MjE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUNEQTI5QTMxMUNCRjc0REEwMDkwMUNDRiAvKiBXZWJBVlBsYXllckNvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzFBOUVDMjE2OEZCQzQzMDAyNjI5RjkgLyogVGV4
dFRyYWNrQ3VlR2VuZXJpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzU5RTk0NTE0RUYxQ0Y4
MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzY5
NzA4NjE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGE3Mjc3OWZiYjhl
Nzg4ODNmMzI2ODk5MmM2YjY2ZjEzYWEzNjQzNzIuLjgzMTdmZWEyZDE1NTljNjZiNjFlN2ZjYTA3
NmFkNDFjYTFhYzYwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtNDgyMSw3ICs0ODIxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5
U3RhdGUoKQogICAgIGlmIChzaG91bGRCZVBsYXlpbmcpIHsKICAgICAgICAgaWYgKGRvY3VtZW50
KCkucGFnZSgpICYmIG1fbWVkaWFTZXNzaW9uLT5jYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyKCp0
aGlzKSkgewogICAgICAgICAgICAgSFRNTFZpZGVvRWxlbWVudCYgYXNWaWRlbyA9IGRvd25jYXN0
PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKTsKLSAgICAgICAgICAgIGRvY3VtZW50KCkucGFnZSgp
LT5jaHJvbWUoKS5jbGllbnQoKS5zZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyKGFzVmlkZW8pOwor
ICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnNldFVwUGxh
eWJhY2tDb250cm9sc01hbmFnZXIoYXNWaWRlbyk7CiAgICAgICAgIH0KIAogICAgICAgICBzZXRE
aXNwbGF5TW9kZShWaWRlbyk7CkBAIC00ODU3LDcgKzQ4NTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSgpCiAgICAgICAgIHNldFBsYXlpbmcodHJ1ZSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgaWYgKGVuZGVkUGxheWJhY2soKSAmJiBkb2N1bWVudCgpLnBhZ2Uo
KSAmJiBpczxIVE1MVmlkZW9FbGVtZW50PigqdGhpcykpCi0gICAgICAgICAgICBkb2N1bWVudCgp
LnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuY2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpOwor
ICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmNsZWFyUGxh
eWJhY2tDb250cm9sc01hbmFnZXIoKnRoaXMpOwogCiAgICAgICAgIGlmICghcGxheWVyUGF1c2Vk
KQogICAgICAgICAgICAgbV9wbGF5ZXItPnBhdXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAppbmRleCBjMDI3Mzg4YWJlZmI0MWZlOTk2ZWRhODJhY2E2M2RhNzQyZGQxMGZhLi43ZDk2
ODA5YzU1ZTgxZjc0YWEwOGMwMWE5YjNmMTlkY2Y4NjZmYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgKQEAgLTM0MSw4ICszNDEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSkgeyByZXR1cm4gZmFsc2U7IH0KICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmly
dHVhbCB2b2lkIGVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KEhUTUxWaWRlb0Vs
ZW1lbnQmLCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBzZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyKEhUTUxWaWRlb0VsZW1l
bnQmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKEhUTUxNZWRp
YUVsZW1lbnQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJQbGF5YmFja0NvbnRyb2xzTWFu
YWdlcihIVE1MTWVkaWFFbGVtZW50JikgeyB9CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZXhp
dFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0
QW5pbWF0aW9uKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmLCBIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgLyp0YXJnZXRNb2RlKi8pIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44ZmZhMGNhZGQwODY5Y2YxNGVjNDAyMmI1YjAyY2EwZGJkZjhm
ODlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlX2gKKyNkZWZpbmUgV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlX2gKKworI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKworI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgVGltZVJhbmdlczsKKworY2xhc3MgV2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICBlbnVtIEV4dGVybmFsUGxheWJhY2tUYXJnZXRU
eXBlIHsgVGFyZ2V0VHlwZU5vbmUsIFRhcmdldFR5cGVBaXJQbGF5LCBUYXJnZXRUeXBlVFZPdXQg
fTsKKworICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSgpIHsgfTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXREdXJhdGlvbihkb3VibGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUo
ZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFJh
dGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+
JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5n
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1Rhcmdl
dFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgPSAwOworfTsKKwor
fQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdmOTRmMGJkNTFmNGI0YjA5NzUyODNiZDA2Yjk4ZGZkMTk2NGRkN2EKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25N
b2RlbC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsX2gKKyNkZWZpbmUgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxfaAorCisjaWYg
UExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFU
SU9OX01PREUpKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bCgpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxheSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cGF1c2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVu
ZFNjcnViYmluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2Vla1RvVGltZShkb3VibGUgdGlt
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmYXN0U2Vlayhkb3VibGUgdGltZSkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBiZWdpblNjYW5uaW5nRm9yd2FyZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRTY2Fu
bmluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50
NjRfdCBpbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRp
b24odWludDY0X3QgaW5kZXgpID0gMDsKK307CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMjViNzEwZDFmMWNkMTVmMDJjYzQ4NjEyZWYyNzYxZDEwNzJjYzJmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudF9oCisjZGVmaW5lIFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50X2gKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKKyNpbmNsdWRlICJF
dmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudEVudW1zLmgiCisjaW5j
bHVkZSAiV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQXVkaW9UcmFjazsKK2NsYXNzIEhUTUxNZWRpYUVs
ZW1lbnQ7CitjbGFzcyBUZXh0VHJhY2s7CitjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2U7CisKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50IDogcHVibGlj
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLCBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gY3Jl
YXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50KCkpOworICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZSopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWVkaWFFbGVtZW50
KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBIVE1MTWVkaWFFbGVtZW50
KiBtZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX21lZGlhRWxlbWVudC5nZXQoKTsgfQor
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0
ZUZvckV2ZW50TmFtZShjb25zdCBXVEY6OkF0b21pY1N0cmluZyYpOworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiByaHMpIG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzOyB9CisKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHBsYXkoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHBhdXNlKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVQbGF5U3Rh
dGUoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luU2NydWJiaW5nKCkg
b3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmRTY3J1YmJpbmcoKSBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlZWtUb1RpbWUoZG91YmxlIHRpbWUpIG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmFzdFNlZWsoZG91YmxlIHRpbWUpIG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYmVnaW5TY2FubmluZ0ZvcndhcmQoKSBvdmVy
cmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpIG92
ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5kU2Nhbm5pbmcoKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3Qg
aW5kZXgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2VsZWN0TGVnaWJsZU1l
ZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKKworcHJvdGVjdGVkOgorICAgIFdF
QkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50KCk7CisKK3By
aXZhdGU6CisgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxXVEY6OkF0b21pY1N0cmluZz4mIG9ic2Vy
dmVkRXZlbnROYW1lcygpOworICAgIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBldmVudE5hbWVB
bGwoKTsKKworICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBtX21lZGlhRWxlbWVudDsKKyAg
ICBib29sIG1faXNMaXN0ZW5pbmcgeyBmYWxzZSB9OworICAgIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZSogbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgeyBudWxscHRyIH07CisgICAgVmVj
dG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBtX2xlZ2libGVUcmFja3NGb3JNZW51OworICAgIFZlY3Rv
cjxSZWZQdHI8QXVkaW9UcmFjaz4+IG1fYXVkaW9UcmFja3NGb3JNZW51OworICAgIAorICAgIHZv
aWQgdXBkYXRlTGVnaWJsZU9wdGlvbnMoKTsKK307CisgICAgCit9CisKKyNlbmRpZgorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMw
OTVjNzQ5NGNkM2JlMjQ1NjU0MzAwNmRhNjhhNzkwZDJjN2M0NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50Lm1tCkBAIC0wLDAgKzEsMzM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIgor
CisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJF
U0VOVEFUSU9OX01PREUpKQorCisjaW1wb3J0ICJET01FdmVudEludGVybmFsLmgiCisjaW1wb3J0
ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJNZWRpYUNvbnRyb2xzSG9zdC5oIgorI2ltcG9ydCAiV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmgiCisjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVBbmlt
YXRpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRXZlbnRMaXN0ZW5lci5oPgorI2ltcG9ydCA8
V2ViQ29yZS9FdmVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9FdmVudExpc3RlbmVyLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0V2ZW50TmFtZXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTEVsZW1lbnQu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BhZ2VHcm91cC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0VHJhY2tMaXN0Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL1RpbWVSYW5nZXMuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OldlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50KCkKKyAgICA6IEV2ZW50TGlzdGVuZXIoRXZlbnRMaXN0ZW5lcjo6
Q1BQRXZlbnRMaXN0ZW5lclR5cGUpCit7Cit9CisKK1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50Ojp+V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQoKQoreworfQor
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpzZXRXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2UoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKiBpbnRlcmZhY2Up
Cit7CisgICAgaWYgKGludGVyZmFjZSA9PSBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgPSBpbnRlcmZh
Y2U7CisKKyAgICBpZiAobV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpIHsKKyAgICAgICAgbV9w
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnJlc2V0TWVkaWFTdGF0ZSgpOworICAgICAgICBpZiAo
bV9tZWRpYUVsZW1lbnQpCisgICAgICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQobV9tZWRpYUVsZW1lbnQtPm1lZGlhU2Vz
c2lvbigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX21lZGlhRWxlbWVudCkpOwor
ICAgIH0KK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2V0
TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK3sKKyAgICBpZiAo
bV9tZWRpYUVsZW1lbnQgPT0gbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAobV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCisgICAgICAgIG1fcGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlLT5yZXNldE1lZGlhU3RhdGUoKTsKKworICAgIGlmIChtX21lZGlhRWxlbWVudCAm
JiBtX2lzTGlzdGVuaW5nKSB7CisgICAgICAgIGZvciAoYXV0byYgZXZlbnROYW1lIDogb2JzZXJ2
ZWRFdmVudE5hbWVzKCkpCisgICAgICAgICAgICBtX21lZGlhRWxlbWVudC0+cmVtb3ZlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWUsIHRoaXMsIGZhbHNlKTsKKyAgICB9CisgICAgbV9pc0xpc3Rlbmlu
ZyA9IGZhbHNlOworCisgICAgbV9tZWRpYUVsZW1lbnQgPSBtZWRpYUVsZW1lbnQ7CisKKyAgICBp
ZiAoIW1fbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIGV2
ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1lcygpKQorICAgICAgICBtX21lZGlhRWxlbWVudC0+
YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRoaXMsIGZhbHNlKTsKKyAgICBtX2lzTGlzdGVu
aW5nID0gdHJ1ZTsKKworICAgIHVwZGF0ZUZvckV2ZW50TmFtZShldmVudE5hbWVBbGwoKSk7CisK
KyAgICBpZiAobV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCisgICAgICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChtX21lZGlh
RWxlbWVudC0+bWVkaWFTZXNzaW9uKCkud2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKm1f
bWVkaWFFbGVtZW50KSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQ6OmhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJD
b3JlOjpFdmVudCogZXZlbnQpCit7CisgICAgdXBkYXRlRm9yRXZlbnROYW1lKGV2ZW50LT50eXBl
KCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRh
dGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKK3sKKyAg
ICBpZiAoIW1fbWVkaWFFbGVtZW50IHx8ICFtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYm9vbCBhbGwgPSBldmVudE5hbWUgPT0gZXZlbnROYW1lQWxs
KCk7CisKKyAgICBpZiAoYWxsCisgICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCku
ZHVyYXRpb25jaGFuZ2VFdmVudCkgeworICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS0+c2V0RHVyYXRpb24obV9tZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCkpOworICAgICAgICAvLyBU
aGVzZSBpcyBubyBzdGFuZGFyZCBldmVudCBmb3IgbWluRmFzdFJldmVyc2VSYXRlQ2hhbmdlOyBk
dXJhdGlvbiBjaGFuZ2UgaXMgYSByZWFzb25hYmxlIHByb3h5IGZvciBpdC4KKyAgICAgICAgLy8g
SXQgaGFwcGVucyBldmVyeSB0aW1lIGEgbmV3IGl0ZW0gYmVjb21lcyByZWFkeSB0byBwbGF5Lgor
ICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0Q2FuUGxheUZhc3RSZXZlcnNl
KG1fbWVkaWFFbGVtZW50LT5taW5GYXN0UmV2ZXJzZVJhdGUoKSA8IDAuMCk7CisgICAgfQorCisg
ICAgaWYgKGFsbAorICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnBhdXNlRXZl
bnQKKyAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQKKyAgICAg
ICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpCisgICAgICAg
IG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRSYXRlKCFtX21lZGlhRWxlbWVudC0+cGF1
c2VkKCksIG1fbWVkaWFFbGVtZW50LT5wbGF5YmFja1JhdGUoKSk7CisKKyAgICBpZiAoYWxsCisg
ICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50KSB7Cisg
ICAgICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDdXJyZW50VGltZShtX21lZGlh
RWxlbWVudC0+Y3VycmVudFRpbWUoKSwgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBzeXN0
ZW1VcHRpbWVdKTsKKyAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEJ1ZmZl
cmVkVGltZShtX21lZGlhRWxlbWVudC0+bWF4QnVmZmVyZWRUaW1lKCkpOworICAgICAgICAvLyBG
SVhNRTogMTMwNzg4IC0gZmluZCBhIGJldHRlciBldmVudCB0byB1cGRhdGUgc2Vla2FibGUgcmFu
Z2VzIGZyb20uCisgICAgICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRTZWVrYWJs
ZVJhbmdlcygqbV9tZWRpYUVsZW1lbnQtPnNlZWthYmxlKCkpOworICAgIH0KKworICAgIGlmIChh
bGwKKyAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50Cisg
ICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkucmVtb3ZldHJhY2tFdmVudCkKKyAg
ICAgICAgdXBkYXRlTGVnaWJsZU9wdGlvbnMoKTsKKworICAgIGlmIChhbGwKKyAgICAgICAgfHwg
ZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS53ZWJraXRjdXJyZW50cGxheWJhY2t0YXJnZXRpc3dp
cmVsZXNzY2hhbmdlZEV2ZW50KSB7CisgICAgICAgIGJvb2wgZW5hYmxlZCA9IG1fbWVkaWFFbGVt
ZW50LT53ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKCk7CisgICAgICAgIFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFy
Z2V0VHlwZSA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZU5vbmU7Cisg
ICAgICAgIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lOworCisgICAgICAgIGlmIChtX21lZGlh
RWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKSkgeworICAgICAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gYWlycGxheShBU0NJSUxpdGVyYWwoImFpcnBsYXkiKSk7CisgICAg
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB0dm91dChBU0NJSUxpdGVyYWwo
InR2b3V0IikpOworCisgICAgICAgICAgICBTdHJpbmcgdHlwZSA9IG1fbWVkaWFFbGVtZW50LT5t
ZWRpYUNvbnRyb2xzSG9zdCgpLT5leHRlcm5hbERldmljZVR5cGUoKTsKKyAgICAgICAgICAgIGlm
ICh0eXBlID09IGFpcnBsYXkpCisgICAgICAgICAgICAgICAgdGFyZ2V0VHlwZSA9IFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZUFpclBsYXk7CisgICAgICAgICAgICBlbHNl
IGlmICh0eXBlID09IHR2b3V0KQorICAgICAgICAgICAgICAgIHRhcmdldFR5cGUgPSBXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2U6OlRhcmdldFR5cGVUVk91dDsKKyAgICAgICAgICAgIGxvY2Fs
aXplZERldmljZU5hbWUgPSBtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+ZXh0
ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZSgpOworICAgICAgICB9CisgICAgICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRFeHRlcm5hbFBsYXliYWNrKGVuYWJsZWQsIHRhcmdldFR5cGUs
IGxvY2FsaXplZERldmljZU5hbWUpOworICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQobV9tZWRpYUVsZW1lbnQtPm1lZGlh
U2Vzc2lvbigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX21lZGlhRWxlbWVudCkp
OworICAgIH0KK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6
cGxheSgpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVu
dC0+cGxheSgpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
OjpwYXVzZSgpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxl
bWVudC0+cGF1c2UoKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudDo6dG9nZ2xlUGxheVN0YXRlKCkKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpCisgICAg
ICAgIG1fbWVkaWFFbGVtZW50LT50b2dnbGVQbGF5U3RhdGUoKTsKK30KKwordm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6YmVnaW5TY3J1YmJpbmcoKQoreworICAgIGlm
IChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmJlZ2luU2NydWJiaW5n
KCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmVuZFNj
cnViYmluZygpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxl
bWVudC0+ZW5kU2NydWJiaW5nKCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OnNlZWtUb1RpbWUoZG91YmxlIHRpbWUpCit7CisgICAgaWYgKG1fbWVkaWFF
bGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+c2V0Q3VycmVudFRpbWUodGltZSk7Cit9
CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmZhc3RTZWVrKGRv
dWJsZSB0aW1lKQoreworICAgIGlmIChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVs
ZW1lbnQtPmZhc3RTZWVrKHRpbWUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50OjpiZWdpblNjYW5uaW5nRm9yd2FyZCgpCit7CisgICAgaWYgKG1fbWVkaWFF
bGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+YmVnaW5TY2FubmluZyhNZWRpYUNvbnRy
b2xsZXJJbnRlcmZhY2U6OkZvcndhcmQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50OjpiZWdpblNjYW5uaW5nQmFja3dhcmQoKQoreworICAgIGlmIChtX21l
ZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmJlZ2luU2Nhbm5pbmcoTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlOjpCYWNrd2FyZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmVuZFNjYW5uaW5nKCkKK3sKKyAgICBpZiAobV9tZWRpYUVs
ZW1lbnQpCisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5lbmRTY2FubmluZygpOworfQorCit2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpzZWxlY3RBdWRpb01lZGlhT3B0
aW9uKHVpbnQ2NF90IHNlbGVjdGVkQXVkaW9JbmRleCkKK3sKKyAgICBBdWRpb1RyYWNrKiBzZWxl
Y3RlZEF1ZGlvVHJhY2sgPSBudWxscHRyOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBp
bmRleCA8IG1fYXVkaW9UcmFja3NGb3JNZW51LnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBh
dXRvJiBhdWRpb1RyYWNrID0gbV9hdWRpb1RyYWNrc0Zvck1lbnVbaW5kZXhdOworICAgICAgICBh
dWRpb1RyYWNrLT5zZXRFbmFibGVkKGluZGV4ID09IHN0YXRpY19jYXN0PHNpemVfdD4oc2VsZWN0
ZWRBdWRpb0luZGV4KSk7CisgICAgICAgIGlmIChhdWRpb1RyYWNrLT5lbmFibGVkKCkpCisgICAg
ICAgICAgICBzZWxlY3RlZEF1ZGlvVHJhY2sgPSBhdWRpb1RyYWNrLmdldCgpOworICAgIH0KKwor
ICAgIG1fbWVkaWFFbGVtZW50LT5hdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoc2VsZWN0ZWRBdWRp
b1RyYWNrKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6
c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KQoreworICAgIFRleHRUcmFj
ayogdGV4dFRyYWNrID0gbnVsbHB0cjsKKworICAgIGlmIChpbmRleCA8IG1fbGVnaWJsZVRyYWNr
c0Zvck1lbnUuc2l6ZSgpKQorICAgICAgICB0ZXh0VHJhY2sgPSBtX2xlZ2libGVUcmFja3NGb3JN
ZW51W3N0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpXS5nZXQoKTsKKyAgICBlbHNlCisgICAgICAg
IHRleHRUcmFjayA9IFRleHRUcmFjazo6Y2FwdGlvbk1lbnVPZmZJdGVtKCk7CisKKyAgICBtX21l
ZGlhRWxlbWVudC0+c2V0U2VsZWN0ZWRUZXh0VHJhY2sodGV4dFRyYWNrKTsKK30KKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlTGVnaWJsZU9wdGlvbnMo
KQoreworICAgIEF1ZGlvVHJhY2tMaXN0KiBhdWRpb1RyYWNrTGlzdCA9IG1fbWVkaWFFbGVtZW50
LT5hdWRpb1RyYWNrcygpOworICAgIFRleHRUcmFja0xpc3QqIHRyYWNrTGlzdCA9IG1fbWVkaWFF
bGVtZW50LT50ZXh0VHJhY2tzKCk7CisKKyAgICBpZiAoKCF0cmFja0xpc3QgJiYgIWF1ZGlvVHJh
Y2tMaXN0KSB8fCAhbV9tZWRpYUVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpIHx8ICFtX21lZGlh
RWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV1RG
OjpBdG9taWNTdHJpbmcgZGlzcGxheU1vZGUgPSBtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9s
c0hvc3QoKS0+Y2FwdGlvbkRpc3BsYXlNb2RlKCk7CisgICAgVGV4dFRyYWNrKiBvZmZJdGVtID0g
bV9tZWRpYUVsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCktPmNhcHRpb25NZW51T2ZmSXRlbSgp
OworICAgIFRleHRUcmFjayogYXV0b21hdGljSXRlbSA9IG1fbWVkaWFFbGVtZW50LT5tZWRpYUNv
bnRyb2xzSG9zdCgpLT5jYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKTsKKworICAgIGF1dG8mIGNh
cHRpb25QcmVmZXJlbmNlcyA9IG1fbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+Z3Jv
dXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKKyAgICBtX2xlZ2libGVUcmFja3NGb3JNZW51ID0g
Y2FwdGlvblByZWZlcmVuY2VzLnNvcnRlZFRyYWNrTGlzdEZvck1lbnUodHJhY2tMaXN0KTsKKyAg
ICBtX2F1ZGlvVHJhY2tzRm9yTWVudSA9IGNhcHRpb25QcmVmZXJlbmNlcy5zb3J0ZWRUcmFja0xp
c3RGb3JNZW51KGF1ZGlvVHJhY2tMaXN0KTsKKworICAgIFZlY3RvcjxTdHJpbmc+IGF1ZGlvVHJh
Y2tEaXNwbGF5TmFtZXM7CisgICAgdWludDY0X3Qgc2VsZWN0ZWRBdWRpb0luZGV4ID0gMDsKKwor
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2F1ZGlvVHJhY2tzRm9yTWVudS5z
aXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgYXV0byYgdHJhY2sgPSBtX2F1ZGlvVHJhY2tzRm9y
TWVudVtpbmRleF07CisgICAgICAgIGF1ZGlvVHJhY2tEaXNwbGF5TmFtZXMuYXBwZW5kKGNhcHRp
b25QcmVmZXJlbmNlcy5kaXNwbGF5TmFtZUZvclRyYWNrKHRyYWNrLmdldCgpKSk7CisKKyAgICAg
ICAgaWYgKHRyYWNrLT5lbmFibGVkKCkpCisgICAgICAgICAgICBzZWxlY3RlZEF1ZGlvSW5kZXgg
PSBpbmRleDsKKyAgICB9CisKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoYXVkaW9UcmFja0Rpc3BsYXlOYW1lcywgc2VsZWN0ZWRB
dWRpb0luZGV4KTsKKworICAgIFZlY3RvcjxTdHJpbmc+IHRyYWNrRGlzcGxheU5hbWVzOworICAg
IHVpbnQ2NF90IHNlbGVjdGVkSW5kZXggPSAwOworICAgIHVpbnQ2NF90IG9mZkluZGV4ID0gMDsK
KyAgICBib29sIHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IGZhbHNlOworCisgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbGVnaWJsZVRyYWNrc0Zvck1lbnUuc2l6ZSgpOyBpbmRl
eCsrKSB7CisgICAgICAgIGF1dG8mIHRyYWNrID0gbV9sZWdpYmxlVHJhY2tzRm9yTWVudVtpbmRl
eF07CisgICAgICAgIHRyYWNrRGlzcGxheU5hbWVzLmFwcGVuZChjYXB0aW9uUHJlZmVyZW5jZXMu
ZGlzcGxheU5hbWVGb3JUcmFjayh0cmFjay5nZXQoKSkpOworCisgICAgICAgIGlmICh0cmFjayA9
PSBvZmZJdGVtKQorICAgICAgICAgICAgb2ZmSW5kZXggPSBpbmRleDsKKworICAgICAgICBpZiAo
dHJhY2sgPT0gYXV0b21hdGljSXRlbSAmJiBkaXNwbGF5TW9kZSA9PSBNZWRpYUNvbnRyb2xzSG9z
dDo6YXV0b21hdGljS2V5d29yZCgpKSB7CisgICAgICAgICAgICBzZWxlY3RlZEluZGV4ID0gaW5k
ZXg7CisgICAgICAgICAgICB0cmFja01lbnVJdGVtU2VsZWN0ZWQgPSB0cnVlOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKGRpc3BsYXlNb2RlICE9IE1lZGlhQ29udHJvbHNIb3N0OjphdXRvbWF0
aWNLZXl3b3JkKCkgJiYgdHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3Jk
KCkpIHsKKyAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPSBpbmRleDsKKyAgICAgICAgICAgIHRy
YWNrTWVudUl0ZW1TZWxlY3RlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
b2ZmSW5kZXggJiYgIXRyYWNrTWVudUl0ZW1TZWxlY3RlZCAmJiBkaXNwbGF5TW9kZSA9PSBNZWRp
YUNvbnRyb2xzSG9zdDo6Zm9yY2VkT25seUtleXdvcmQoKSkgeworICAgICAgICBzZWxlY3RlZElu
ZGV4ID0gb2ZmSW5kZXg7CisgICAgICAgIHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IHRydWU7Cisg
ICAgfQorCisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnModHJhY2tEaXNwbGF5TmFtZXMsIHNlbGVjdGVkSW5kZXgpOworfQorCitj
b25zdCBWZWN0b3I8QXRvbWljU3RyaW5nPiYgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50OjpvYnNlcnZlZEV2ZW50TmFtZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxWZWN0b3I8QXRvbWljU3RyaW5nPj4gc0V2ZW50TmFtZXM7CisKKyAgICBpZiAoIXNFdmVudE5h
bWVzLmdldCgpLnNpemUoKSkgeworICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZl
bnROYW1lcygpLmR1cmF0aW9uY2hhbmdlRXZlbnQpOworICAgICAgICBzRXZlbnROYW1lcy5nZXQo
KS5hcHBlbmQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQpOworICAgICAgICBzRXZlbnROYW1lcy5n
ZXQoKS5hcHBlbmQoZXZlbnROYW1lcygpLnBsYXlFdmVudCk7CisgICAgICAgIHNFdmVudE5hbWVz
LmdldCgpLmFwcGVuZChldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50KTsKKyAgICAgICAgc0V2
ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQpOworICAg
ICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnROYW1lcygpLmFkZHRyYWNrRXZlbnQp
OworICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnROYW1lcygpLnJlbW92ZXRy
YWNrRXZlbnQpOworICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnROYW1lcygp
LndlYmtpdGN1cnJlbnRwbGF5YmFja3RhcmdldGlzd2lyZWxlc3NjaGFuZ2VkRXZlbnQpOworICAg
IH0KKyAgICByZXR1cm4gc0V2ZW50TmFtZXMuZ2V0KCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpldmVudE5hbWVBbGwoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNFdmVudE5hbWVBbGwg
PSAiYWxsRXZlbnRzIjsKKyAgICByZXR1cm4gc0V2ZW50TmFtZUFsbDsKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZS5oCmluZGV4IGM2ZDliZmYyNzY5OTk2YTk4MjZjM2RkNjYzMGEwNDEy
YjIxNDUyODIuLmE4ZWYyOTUwYWI4ZTdhYWZlNDQwNDc0OGIxNjM3NWNjY2ZiZjNlMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZS5oCkBAIC0yOCwxMSArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9T
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQog
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLWNsYXNzIFN0cmlu
ZzsKLX0KKyNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00MCwyMyArMzYsMTAgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
dXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKTsKIAogY2xhc3MgVGltZVJhbmdlczsKIAotY2xhc3Mg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlIHsKK2NsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZSA6IHB1YmxpYyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgewogcHVibGljOgot
ICAgIGVudW0gRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgeyBUYXJnZXRUeXBlTm9uZSwgVGFy
Z2V0VHlwZUFpclBsYXksIFRhcmdldFR5cGVUVk91dCB9OwotICAgIAogICAgIHZpcnR1YWwgfldl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSgpIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRN
ZWRpYVN0YXRlKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBk
b3VibGUgYW5jaG9yVGltZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCdWZmZXJlZFRpbWUo
ZG91YmxlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZs
b2F0IHBsYXliYWNrUmF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0RpbWVuc2lv
bnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6
U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFj
a1RhcmdldFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgPSAwOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsLmgKaW5kZXggMzViYmVlNGRmMDJjMTRmY2Q4N2YwZDBkMTFhY2Qw
NDkzNzYzMjIzNS4uZTU5OGZkMzU5NTg3YzllNjYzM2JkYzUyZTBjMmVjZmE5ZDU3OWMyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbC5oCkBAIC0zMSwyOCArMzEsMTcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgorI2luY2x1ZGUgIldlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWwgeworY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwgOiBwdWJs
aWMgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsKCkgeyB9OwotICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlUGxh
eVN0YXRlKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjcnViYmluZygpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZW5kU2NydWJiaW5nKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZWVr
VG9UaW1lKGRvdWJsZSB0aW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZhc3RTZWVrKGRvdWJs
ZSB0aW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjYW5uaW5nQmFja3dhcmQoKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGVuZFNjYW5uaW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnVs
bHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpID0gMDsK
ICAgICBlbnVtIFZpZGVvR3Jhdml0eSB7IFZpZGVvR3Jhdml0eVJlc2l6ZSwgVmlkZW9HcmF2aXR5
UmVzaXplQXNwZWN0LCBWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsIH07CiAgICAgdmlydHVh
bCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFZpZGVvR3Jhdml0eSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBpbmRleCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVmlz
aWJsZSgpIGNvbnN0ID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQu
aAppbmRleCA1ZDQ2NjcwYmM1N2Q5MzYyMjUzYjgwYWNkZTc1NjhhYzliNGIyZGFkLi5iMzY4Zjk2
NTNlNDIyYTdkNjUzMGZlODc4ZmI0ZDAwODVjNjNmZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50LmgKQEAgLTQyLDEzICs0MiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBBdWRpb1RyYWNrOwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIFRleHRU
cmFjazsKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OwogY2xhc3Mg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOwogCiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudCA6IHB1YmxpYyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCwgcHVibGlj
IEV2ZW50TGlzdGVuZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gY3JlYXRlKFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50JiBwbGF5YmFja1Nlc3Npb25Nb2RlbCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
KCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudChwbGF5YmFja1Nlc3Npb25Nb2RlbCkpOwogICAgIH0KICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudCgpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSopOwpAQCAtODAsMTIgKzgxLDEzIEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCYpOwogCiBwcml2
YXRlOgogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8V1RGOjpBdG9taWNTdHJpbmc+JiBvYnNlcnZl
ZEV2ZW50TmFtZXMoKTsKICAgICBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgZXZlbnROYW1lQWxs
KCk7Ci0gICAgCisKKyAgICBSZWY8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+
IG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7CiAgICAgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IG1f
dmlkZW9FbGVtZW50OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNj
cmVlbkxheWVyOwogICAgIGJvb2wgbV9pc0xpc3RlbmluZyB7IGZhbHNlIH07CkBAIC05Myw4ICs5
NSw2IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fdmlkZW9GcmFtZTsKICAgICBWZWN0b3I8
UmVmUHRyPFRleHRUcmFjaz4+IG1fbGVnaWJsZVRyYWNrc0Zvck1lbnU7CiAgICAgVmVjdG9yPFJl
ZlB0cjxBdWRpb1RyYWNrPj4gbV9hdWRpb1RyYWNrc0Zvck1lbnU7Ci0KLSAgICB2b2lkIHVwZGF0
ZUxlZ2libGVPcHRpb25zKCk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Lm1tCmluZGV4IGY4OWYxNzU4ODYyZWNjODBmNmM2ZDkwMTE0MTViNGIwOThhMjUwMDUu
LjcyMDVjMzNiOGNkYTJjM2FmYmYzMWViMmE0OGQxNGJhMjA5NjI4OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJE
T01FdmVudEludGVybmFsLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYUNv
bnRyb2xzSG9zdC5oIgorI2ltcG9ydCAiV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS5oIgogI2ltcG9ydCA8
UXVhcnR6Q29yZS9Db3JlQW5pbWF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUV2ZW50TGlz
dGVuZXIuaD4KQEAgLTUwLDggKzUxLDkgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
LVdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudCgpCitXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQoV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQmIHBsYXliYWNrU2Vzc2lvbk1vZGVsKQogICAgIDogRXZlbnRMaXN0ZW5l
cihFdmVudExpc3RlbmVyOjpDUFBFdmVudExpc3RlbmVyVHlwZSkKKyAgICAsIG1fcGxheWJhY2tT
ZXNzaW9uTW9kZWwocGxheWJhY2tTZXNzaW9uTW9kZWwpCiB7CiB9CiAKQEAgLTY1LDI0ICs2Nywx
OCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2UoV2ViVmlkZQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Zp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZSA9IGludGVyZmFjZTsKKyAgICBtX3BsYXliYWNrU2Vzc2lv
bk1vZGVsLT5zZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UoaW50ZXJmYWNlKTsKIAotICAg
IGlmIChtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSkgewotICAgICAgICBtX3ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZS0+cmVzZXRNZWRpYVN0YXRlKCk7Ci0gICAgICAgIGlmIChtX3ZpZGVvRWxl
bWVudCkgewotICAgICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldFZpZGVv
RGltZW5zaW9ucyh0cnVlLCBtX3ZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCBtX3ZpZGVvRWxl
bWVudC0+dmlkZW9IZWlnaHQoKSk7Ci0gICAgICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZS0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQobV92aWRlb0VsZW1lbnQtPm1l
ZGlhU2Vzc2lvbigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX3ZpZGVvRWxlbWVu
dCkpOwotICAgICAgICB9Ci0gICAgfQorICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZSAmJiBtX3ZpZGVvRWxlbWVudCkKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Ut
PnNldFZpZGVvRGltZW5zaW9ucyh0cnVlLCBtX3ZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCBt
X3ZpZGVvRWxlbWVudC0+dmlkZW9IZWlnaHQoKSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50KiB2
aWRlb0VsZW1lbnQpCiB7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+c2V0TWVkaWFFbGVt
ZW50KHZpZGVvRWxlbWVudCk7CiAgICAgaWYgKG1fdmlkZW9FbGVtZW50ID09IHZpZGVvRWxlbWVu
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
KQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+cmVzZXRNZWRpYVN0YXRlKCk7
Ci0KICAgICBpZiAobV92aWRlb0VsZW1lbnQgJiYgbV92aWRlb0VsZW1lbnQtPnZpZGVvRnVsbHNj
cmVlbkxheWVyKCkpCiAgICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihudWxscHRyKTsKIApAQCAtMTAzLDEwICs5OSw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50KiB2
aWRlCiAKICAgICB1cGRhdGVGb3JFdmVudE5hbWUoZXZlbnROYW1lQWxsKCkpOwogCi0gICAgaWYg
KG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKSB7CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlKQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0VmlkZW9E
aW1lbnNpb25zKHRydWUsIHZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCB2aWRlb0VsZW1lbnQt
PnZpZGVvSGVpZ2h0KCkpOwotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0
V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQobV92aWRlb0VsZW1lbnQtPm1lZGlhU2Vzc2lv
bigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX3ZpZGVvRWxlbWVudCkpOwotICAg
IH0KIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6aGFuZGxl
RXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50KiBl
dmVudCkKQEAgLTEyMiw1NiArMTE2LDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3QKICAgICBi
b29sIGFsbCA9IGV2ZW50TmFtZSA9PSBldmVudE5hbWVBbGwoKTsKIAogICAgIGlmIChhbGwKLSAg
ICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50KSB7
Ci0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5zZXREdXJhdGlvbihtX3ZpZGVv
RWxlbWVudC0+ZHVyYXRpb24oKSk7Ci0gICAgICAgIC8vIFRoZXNlIGlzIG5vIHN0YW5kYXJkIGV2
ZW50IGZvciBtaW5GYXN0UmV2ZXJzZVJhdGVDaGFuZ2U7IGR1cmF0aW9uIGNoYW5nZSBpcyBhIHJl
YXNvbmFibGUgcHJveHkgZm9yIGl0LgotICAgICAgICAvLyBJdCBoYXBwZW5zIGV2ZXJ5IHRpbWUg
YSBuZXcgaXRlbSBiZWNvbWVzIHJlYWR5IHRvIHBsYXkuCi0gICAgICAgIG1fdmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlLT5zZXRDYW5QbGF5RmFzdFJldmVyc2UobV92aWRlb0VsZW1lbnQtPm1pbkZh
c3RSZXZlcnNlUmF0ZSgpIDwgMC4wKTsKLSAgICB9Ci0KLSAgICBpZiAoYWxsCi0gICAgICAgIHx8
IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkucGF1c2VFdmVudAotICAgICAgICB8fCBldmVudE5h
bWUgPT0gZXZlbnROYW1lcygpLnBsYXlFdmVudAotICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZl
bnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCkKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2UtPnNldFJhdGUoIW1fdmlkZW9FbGVtZW50LT5wYXVzZWQoKSwgbV92aWRlb0VsZW1lbnQt
PnBsYXliYWNrUmF0ZSgpKTsKLQotICAgIGlmIChhbGwKLSAgICAgICAgfHwgZXZlbnROYW1lID09
IGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQpIHsKLSAgICAgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UtPnNldEN1cnJlbnRUaW1lKG1fdmlkZW9FbGVtZW50LT5jdXJyZW50VGltZSgp
LCBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHN5c3RlbVVwdGltZV0pOwotICAgICAgICBt
X3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0QnVmZmVyZWRUaW1lKG1fdmlkZW9FbGVtZW50
LT5tYXhCdWZmZXJlZFRpbWUoKSk7Ci0gICAgICAgIC8vIEZJWE1FOiAxMzA3ODggLSBmaW5kIGEg
YmV0dGVyIGV2ZW50IHRvIHVwZGF0ZSBzZWVrYWJsZSByYW5nZXMgZnJvbS4KLSAgICAgICAgbV92
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldFNlZWthYmxlUmFuZ2VzKCptX3ZpZGVvRWxlbWVu
dC0+c2Vla2FibGUoKSk7Ci0gICAgfQotCi0gICAgaWYgKGFsbAotICAgICAgICB8fCBldmVudE5h
bWUgPT0gZXZlbnROYW1lcygpLmFkZHRyYWNrRXZlbnQKLSAgICAgICAgfHwgZXZlbnROYW1lID09
IGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50KQotICAgICAgICB1cGRhdGVMZWdpYmxlT3B0
aW9ucygpOwotICAgIAotICAgIGlmIChhbGwKICAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50
TmFtZXMoKS5yZXNpemVFdmVudCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Ut
PnNldFZpZGVvRGltZW5zaW9ucyh0cnVlLCBtX3ZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCBt
X3ZpZGVvRWxlbWVudC0+dmlkZW9IZWlnaHQoKSk7Ci0KLSAgICBpZiAoYWxsCi0gICAgICAgIHx8
IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkud2Via2l0Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3
aXJlbGVzc2NoYW5nZWRFdmVudCkgewotICAgICAgICBib29sIGVuYWJsZWQgPSBtX3ZpZGVvRWxl
bWVudC0+d2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcygpOwotICAgICAgICBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRh
cmdldFR5cGUgPSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U6OlRhcmdldFR5cGVOb25lOwot
ICAgICAgICBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZTsKLQotICAgICAgICBpZiAobV92aWRl
b0VsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCkpIHsKLSAgICAgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IGFpcnBsYXkoQVNDSUlMaXRlcmFsKCJhaXJwbGF5IikpOwotICAg
ICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdHZvdXQoQVNDSUlMaXRlcmFs
KCJ0dm91dCIpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgU3RyaW5nIHR5cGUgPSBtX3Zp
ZGVvRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+ZXh0ZXJuYWxEZXZpY2VUeXBlKCk7Ci0g
ICAgICAgICAgICBpZiAodHlwZSA9PSBhaXJwbGF5KQotICAgICAgICAgICAgICAgIHRhcmdldFR5
cGUgPSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U6OlRhcmdldFR5cGVBaXJQbGF5OwotICAg
ICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSB0dm91dCkKLSAgICAgICAgICAgICAgICB0YXJnZXRU
eXBlID0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpUYXJnZXRUeXBlVFZPdXQ7Ci0gICAg
ICAgICAgICBsb2NhbGl6ZWREZXZpY2VOYW1lID0gbV92aWRlb0VsZW1lbnQtPm1lZGlhQ29udHJv
bHNIb3N0KCktPmV4dGVybmFsRGV2aWNlRGlzcGxheU5hbWUoKTsKLSAgICAgICAgfQotICAgICAg
ICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0RXh0ZXJuYWxQbGF5YmFjayhlbmFibGVk
LCB0YXJnZXRUeXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLSAgICAgICAgbV92aWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UtPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKG1fdmlkZW9F
bGVtZW50LT5tZWRpYVNlc3Npb24oKS53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgqbV92
aWRlb0VsZW1lbnQpKTsKLSAgICB9CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVv
TGF5ZXIpCkBAIC0xOTMsNjIgKzEzOSw1MiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKgogCiB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpwbGF5KCkKIHsKLSAgICBp
ZiAobV92aWRlb0VsZW1lbnQpCi0gICAgICAgIG1fdmlkZW9FbGVtZW50LT5wbGF5KCk7CisgICAg
bV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+cGxheSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpwYXVzZSgpCiB7Ci0gICAgaWYgKG1fdmlkZW9FbGVtZW50
KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+cGF1c2UoKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lv
bk1vZGVsLT5wYXVzZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Ojp0b2dnbGVQbGF5U3RhdGUoKQogewotICAgIGlmIChtX3ZpZGVvRWxlbWVudCkKLSAg
ICAgICAgbV92aWRlb0VsZW1lbnQtPnRvZ2dsZVBsYXlTdGF0ZSgpOworICAgIG1fcGxheWJhY2tT
ZXNzaW9uTW9kZWwtPnRvZ2dsZVBsYXlTdGF0ZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpiZWdpblNjcnViYmluZygpCiB7Ci0gICAgaWYgKG1fdmlk
ZW9FbGVtZW50KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+YmVnaW5TY3J1YmJpbmcoKTsKKyAg
ICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5iZWdpblNjcnViYmluZygpOwogfQogCiB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjplbmRTY3J1YmJpbmcoKQogewotICAg
IGlmIChtX3ZpZGVvRWxlbWVudCkKLSAgICAgICAgbV92aWRlb0VsZW1lbnQtPmVuZFNjcnViYmlu
ZygpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmVuZFNjcnViYmluZygpOwogfQogCiB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZWVrVG9UaW1lKGRvdWJs
ZSB0aW1lKQogewotICAgIGlmIChtX3ZpZGVvRWxlbWVudCkKLSAgICAgICAgbV92aWRlb0VsZW1l
bnQtPnNldEN1cnJlbnRUaW1lKHRpbWUpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPnNl
ZWtUb1RpbWUodGltZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6OmZhc3RTZWVrKGRvdWJsZSB0aW1lKQogewotICAgIGlmIChtX3ZpZGVvRWxlbWVudCkK
LSAgICAgICAgbV92aWRlb0VsZW1lbnQtPmZhc3RTZWVrKHRpbWUpOworICAgIG1fcGxheWJhY2tT
ZXNzaW9uTW9kZWwtPmZhc3RTZWVrKHRpbWUpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50OjpiZWdpblNjYW5uaW5nRm9yd2FyZCgpCiB7Ci0gICAgaWYgKG1f
dmlkZW9FbGVtZW50KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+YmVnaW5TY2FubmluZyhNZWRp
YUNvbnRyb2xsZXJJbnRlcmZhY2U6OkZvcndhcmQpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9k
ZWwtPmJlZ2luU2Nhbm5pbmdGb3J3YXJkKCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQ6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpCiB7Ci0gICAgaWYgKG1f
dmlkZW9FbGVtZW50KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+YmVnaW5TY2FubmluZyhNZWRp
YUNvbnRyb2xsZXJJbnRlcmZhY2U6OkJhY2t3YXJkKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1v
ZGVsLT5iZWdpblNjYW5uaW5nQmFja3dhcmQoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZW5kU2Nhbm5pbmcoKQogewotICAgIGlmIChtX3ZpZGVvRWxl
bWVudCkKLSAgICAgICAgbV92aWRlb0VsZW1lbnQtPmVuZFNjYW5uaW5nKCk7CisgICAgbV9wbGF5
YmFja1Nlc3Npb25Nb2RlbC0+ZW5kU2Nhbm5pbmcoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQpAQCAtMjgyLDg4ICsyMTgsMTIg
QEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9MYXll
ckdyYXZpdHkoV2ViVmlkZW9GdWxsc2NyZWUKIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBzZWxlY3RlZEF1
ZGlvSW5kZXgpCiB7Ci0gICAgQXVkaW9UcmFjayogc2VsZWN0ZWRBdWRpb1RyYWNrID0gbnVsbHB0
cjsKLQotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2F1ZGlvVHJhY2tzRm9y
TWVudS5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byYgYXVkaW9UcmFjayA9IG1fYXVk
aW9UcmFja3NGb3JNZW51W2luZGV4XTsKLSAgICAgICAgYXVkaW9UcmFjay0+c2V0RW5hYmxlZChp
bmRleCA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNlbGVjdGVkQXVkaW9JbmRleCkpOwotICAgICAg
ICBpZiAoYXVkaW9UcmFjay0+ZW5hYmxlZCgpKQotICAgICAgICAgICAgc2VsZWN0ZWRBdWRpb1Ry
YWNrID0gYXVkaW9UcmFjay5nZXQoKTsKLSAgICB9Ci0KLSAgICBtX3ZpZGVvRWxlbWVudC0+YXVk
aW9UcmFja0VuYWJsZWRDaGFuZ2VkKHNlbGVjdGVkQXVkaW9UcmFjayk7CisgICAgbV9wbGF5YmFj
a1Nlc3Npb25Nb2RlbC0+c2VsZWN0QXVkaW9NZWRpYU9wdGlvbihzZWxlY3RlZEF1ZGlvSW5kZXgp
OwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZWxlY3RM
ZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpCiB7Ci0gICAgVGV4dFRyYWNrKiB0ZXh0
VHJhY2sgPSBudWxscHRyOwotICAgIAotICAgIGlmIChpbmRleCA8IG1fbGVnaWJsZVRyYWNrc0Zv
ck1lbnUuc2l6ZSgpKQotICAgICAgICB0ZXh0VHJhY2sgPSBtX2xlZ2libGVUcmFja3NGb3JNZW51
W3N0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpXS5nZXQoKTsKLSAgICBlbHNlCi0gICAgICAgIHRl
eHRUcmFjayA9IFRleHRUcmFjazo6Y2FwdGlvbk1lbnVPZmZJdGVtKCk7Ci0gICAgCi0gICAgbV92
aWRlb0VsZW1lbnQtPnNldFNlbGVjdGVkVGV4dFRyYWNrKHRleHRUcmFjayk7Ci19Ci0KLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnVwZGF0ZUxlZ2libGVPcHRpb25z
KCkKLXsKLSAgICBBdWRpb1RyYWNrTGlzdCogYXVkaW9UcmFja0xpc3QgPSBtX3ZpZGVvRWxlbWVu
dC0+YXVkaW9UcmFja3MoKTsKLSAgICBUZXh0VHJhY2tMaXN0KiB0cmFja0xpc3QgPSBtX3ZpZGVv
RWxlbWVudC0+dGV4dFRyYWNrcygpOwotCi0gICAgaWYgKCghdHJhY2tMaXN0ICYmICFhdWRpb1Ry
YWNrTGlzdCkgfHwgIW1fdmlkZW9FbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKSB8fCAhbV92aWRl
b0VsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBXVEY6OkF0b21pY1N0cmluZyBkaXNwbGF5TW9kZSA9IG1fdmlkZW9FbGVtZW50LT5tZWRpYUNv
bnRyb2xzSG9zdCgpLT5jYXB0aW9uRGlzcGxheU1vZGUoKTsKLSAgICBUZXh0VHJhY2sqIG9mZkl0
ZW0gPSBtX3ZpZGVvRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+Y2FwdGlvbk1lbnVPZmZJ
dGVtKCk7Ci0gICAgVGV4dFRyYWNrKiBhdXRvbWF0aWNJdGVtID0gbV92aWRlb0VsZW1lbnQtPm1l
ZGlhQ29udHJvbHNIb3N0KCktPmNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpOwotCi0gICAgYXV0
byYgY2FwdGlvblByZWZlcmVuY2VzID0gbV92aWRlb0VsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgp
LT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpOwotICAgIG1fbGVnaWJsZVRyYWNrc0Zvck1l
bnUgPSBjYXB0aW9uUHJlZmVyZW5jZXMuc29ydGVkVHJhY2tMaXN0Rm9yTWVudSh0cmFja0xpc3Qp
OwotICAgIG1fYXVkaW9UcmFja3NGb3JNZW51ID0gY2FwdGlvblByZWZlcmVuY2VzLnNvcnRlZFRy
YWNrTGlzdEZvck1lbnUoYXVkaW9UcmFja0xpc3QpOwotCi0gICAgVmVjdG9yPFN0cmluZz4gYXVk
aW9UcmFja0Rpc3BsYXlOYW1lczsKLSAgICB1aW50NjRfdCBzZWxlY3RlZEF1ZGlvSW5kZXggPSAw
OwotICAgIAotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2F1ZGlvVHJhY2tz
Rm9yTWVudS5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byYgdHJhY2sgPSBtX2F1ZGlv
VHJhY2tzRm9yTWVudVtpbmRleF07Ci0gICAgICAgIGF1ZGlvVHJhY2tEaXNwbGF5TmFtZXMuYXBw
ZW5kKGNhcHRpb25QcmVmZXJlbmNlcy5kaXNwbGF5TmFtZUZvclRyYWNrKHRyYWNrLmdldCgpKSk7
Ci0gICAgICAgIAotICAgICAgICBpZiAodHJhY2stPmVuYWJsZWQoKSkKLSAgICAgICAgICAgIHNl
bGVjdGVkQXVkaW9JbmRleCA9IGluZGV4OwotICAgIH0KLSAgICAKLSAgICBtX3ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZS0+c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoYXVkaW9UcmFja0Rp
c3BsYXlOYW1lcywgc2VsZWN0ZWRBdWRpb0luZGV4KTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHRy
YWNrRGlzcGxheU5hbWVzOwotICAgIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXggPSAwOwotICAgIHVp
bnQ2NF90IG9mZkluZGV4ID0gMDsKLSAgICBib29sIHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IGZh
bHNlOwotICAgIAotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2xlZ2libGVU
cmFja3NGb3JNZW51LnNpemUoKTsgaW5kZXgrKykgewotICAgICAgICBhdXRvJiB0cmFjayA9IG1f
bGVnaWJsZVRyYWNrc0Zvck1lbnVbaW5kZXhdOwotICAgICAgICB0cmFja0Rpc3BsYXlOYW1lcy5h
cHBlbmQoY2FwdGlvblByZWZlcmVuY2VzLmRpc3BsYXlOYW1lRm9yVHJhY2sodHJhY2suZ2V0KCkp
KTsKLSAgICAgICAgCi0gICAgICAgIGlmICh0cmFjayA9PSBvZmZJdGVtKQotICAgICAgICAgICAg
b2ZmSW5kZXggPSBpbmRleDsKLSAgICAgICAgCi0gICAgICAgIGlmICh0cmFjayA9PSBhdXRvbWF0
aWNJdGVtICYmIGRpc3BsYXlNb2RlID09IE1lZGlhQ29udHJvbHNIb3N0OjphdXRvbWF0aWNLZXl3
b3JkKCkpIHsKLSAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPSBpbmRleDsKLSAgICAgICAgICAg
IHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIGlmIChkaXNwbGF5TW9kZSAhPSBNZWRpYUNvbnRyb2xzSG9zdDo6YXV0b21hdGljS2V5d29y
ZCgpICYmIHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpKSB7Ci0g
ICAgICAgICAgICBzZWxlY3RlZEluZGV4ID0gaW5kZXg7Ci0gICAgICAgICAgICB0cmFja01lbnVJ
dGVtU2VsZWN0ZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmIChvZmZJ
bmRleCAmJiAhdHJhY2tNZW51SXRlbVNlbGVjdGVkICYmIGRpc3BsYXlNb2RlID09IE1lZGlhQ29u
dHJvbHNIb3N0Ojpmb3JjZWRPbmx5S2V5d29yZCgpKSB7Ci0gICAgICAgIHNlbGVjdGVkSW5kZXgg
PSBvZmZJbmRleDsKLSAgICAgICAgdHJhY2tNZW51SXRlbVNlbGVjdGVkID0gdHJ1ZTsKLSAgICB9
Ci0gICAgCi0gICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnModHJhY2tEaXNwbGF5TmFtZXMsIHNlbGVjdGVkSW5kZXgpOworICAgIG1f
cGxheWJhY2tTZXNzaW9uTW9kZWwtPnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihpbmRleCk7CiB9
CiAKIGNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+JiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKCkKQEAgLTM3MSwxNSArMjMxLDcgQEAgY29u
c3QgVmVjdG9yPEF0b21pY1N0cmluZz4mIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50OjpvYnNlcnZlZEV2ZW50TmEKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPEF0
b21pY1N0cmluZz4+IHNFdmVudE5hbWVzOwogCiAgICAgaWYgKCFzRXZlbnROYW1lcy5nZXQoKS5z
aXplKCkpIHsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5k
dXJhdGlvbmNoYW5nZUV2ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2
ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5k
KGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQpOwotICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBl
bmQoZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCk7Ci0gICAgICAgIHNFdmVudE5hbWVzLmdl
dCgpLmFwcGVuZChldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50KTsKLSAgICAgICAgc0V2ZW50
TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50KTsKLSAgICAgICAg
c0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50KTsK
ICAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5yZXNpemVFdmVu
dCk7Ci0gICAgICAgIHNFdmVudE5hbWVzLmdldCgpLmFwcGVuZChldmVudE5hbWVzKCkud2Via2l0
Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWRFdmVudCk7CiAgICAgfQogICAg
IHJldHVybiBzRXZlbnROYW1lcy5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmFmZTAxY2Zh
MDQ0MGNhNWEzNDUzNzkzYWE3ODlhNGNiOGZmMjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5oCkBAIC0wLDAgKzEs
OTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYg
UExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJBVktpdFNQSS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDsKK2NsYXNzIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0OworfQorCitAaW50ZXJmYWNlIFdlYkFWTWVkaWFTZWxlY3Rpb25P
cHRpb24gOiBOU09iamVjdAorQHByb3BlcnR5IChyZXRhaW4pIE5TU3RyaW5nICpsb2NhbGl6ZWRE
aXNwbGF5TmFtZTsKK0BlbmQKKworQGludGVyZmFjZSBXZWJBVlBsYXllckNvbnRyb2xsZXIgOiBO
U09iamVjdCB7CisgICAgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqX2N1cnJlbnRBdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9uOworICAgIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKl9jdXJy
ZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOworICAgIEJPT0wgX3BpY3R1cmVJblBpY3R1
cmVJbnRlcnJ1cHRlZDsKK30KKworLSAodm9pZClyZXNldFN0YXRlOworCitAcHJvcGVydHkgKHJl
dGFpbikgQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyUHJveHk7CitAcHJvcGVy
dHkgKGFzc2lnbikgV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwqIGRlbGVnYXRlOwor
QHByb3BlcnR5IChhc3NpZ24pIFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0KiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U7CisKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJP
T0wgY2FuU2NhbkZvcndhcmQ7CitAcHJvcGVydHkgQk9PTCBjYW5TY2FuQmFja3dhcmQ7CitAcHJv
cGVydHkgKHJlYWRvbmx5KSBCT09MIGNhblNlZWtUb0JlZ2lubmluZzsKK0Bwcm9wZXJ0eSAocmVh
ZG9ubHkpIEJPT0wgY2FuU2Vla1RvRW5kOworCitAcHJvcGVydHkgQk9PTCBjYW5QbGF5OworQHBy
b3BlcnR5IChnZXR0ZXI9aXNQbGF5aW5nKSBCT09MIHBsYXlpbmc7CitAcHJvcGVydHkgQk9PTCBj
YW5QYXVzZTsKK0Bwcm9wZXJ0eSBCT09MIGNhblRvZ2dsZVBsYXliYWNrOworQHByb3BlcnR5IGRv
dWJsZSByYXRlOworQHByb3BlcnR5IEJPT0wgY2FuU2VlazsKK0Bwcm9wZXJ0eSBOU1RpbWVJbnRl
cnZhbCBjb250ZW50RHVyYXRpb247CitAcHJvcGVydHkgQ0dTaXplIGNvbnRlbnREaW1lbnNpb25z
OworQHByb3BlcnR5IEJPT0wgaGFzRW5hYmxlZEF1ZGlvOworQHByb3BlcnR5IEJPT0wgaGFzRW5h
YmxlZFZpZGVvOworQHByb3BlcnR5IE5TVGltZUludGVydmFsIG1pblRpbWU7CitAcHJvcGVydHkg
TlNUaW1lSW50ZXJ2YWwgbWF4VGltZTsKK0Bwcm9wZXJ0eSBOU1RpbWVJbnRlcnZhbCBjb250ZW50
RHVyYXRpb25XaXRoaW5FbmRUaW1lczsKK0Bwcm9wZXJ0eSAocmV0YWluKSBOU0FycmF5ICpsb2Fk
ZWRUaW1lUmFuZ2VzOworQHByb3BlcnR5IEFWUGxheWVyQ29udHJvbGxlclN0YXR1cyBzdGF0dXM7
CitAcHJvcGVydHkgKHJldGFpbikgQVZWYWx1ZVRpbWluZyAqdGltaW5nOworQHByb3BlcnR5IChy
ZXRhaW4pIE5TQXJyYXkgKnNlZWthYmxlVGltZVJhbmdlczsKKworQHByb3BlcnR5IChyZWFkb25s
eSkgQk9PTCBoYXNNZWRpYVNlbGVjdGlvbk9wdGlvbnM7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBC
T09MIGhhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOworQHByb3BlcnR5IChyZXRhaW4pIE5T
QXJyYXkgKmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOworQHByb3BlcnR5IChyZXRhaW4pIFdl
YkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKmN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
OworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBoYXNMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zOworQHByb3BlcnR5IChyZXRhaW4pIE5TQXJyYXkgKmxlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnM7CitAcHJvcGVydHkgKHJldGFpbikgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqY3Vy
cmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjsKKworQHByb3BlcnR5IChyZWFkb25seSwg
Z2V0dGVyPWlzUGxheWluZ09uRXh0ZXJuYWxTY3JlZW4pIEJPT0wgcGxheWluZ09uRXh0ZXJuYWxT
Y3JlZW47CitAcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0ZXI9aXNQbGF5aW5nT25TZWNvbmRTY3Jl
ZW4pIEJPT0wgcGxheWluZ09uU2Vjb25kU2NyZWVuOworQHByb3BlcnR5IChnZXR0ZXI9aXNFeHRl
cm5hbFBsYXliYWNrQWN0aXZlKSBCT09MIGV4dGVybmFsUGxheWJhY2tBY3RpdmU7CitAcHJvcGVy
dHkgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUgZXh0ZXJuYWxQbGF5YmFj
a1R5cGU7CitAcHJvcGVydHkgKHJldGFpbikgTlNTdHJpbmcgKmV4dGVybmFsUGxheWJhY2tBaXJQ
bGF5RGV2aWNlTG9jYWxpemVkTmFtZTsKK0Bwcm9wZXJ0eSBCT09MIGFsbG93c0V4dGVybmFsUGxh
eWJhY2s7CitAcHJvcGVydHkgKGdldHRlcj1pc1BpY3R1cmVJblBpY3R1cmVQb3NzaWJsZSkgQk9P
TCBwaWN0dXJlSW5QaWN0dXJlUG9zc2libGU7CitAcHJvcGVydHkgKGdldHRlcj1pc1BpY3R1cmVJ
blBpY3R1cmVJbnRlcnJ1cHRlZCkgQk9PTCBwaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ7CitA
ZW5kCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YkFWUGxheWVyQ29udHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWNmMTgxYTRhN2YyN2I4OWIyNjgx
ZGY4ODg2MjRmZDNjYjRiNDkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbQpAQCAtMCwwICsxLDQ1NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJBVlBsYXllckNvbnRyb2xsZXIuaCIKKworI2lmIFBM
QVRGT1JNKElPUykKKworI2ltcG9ydCAiQVZLaXRTUEkuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIK
KyNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKKyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0LmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oIgorI2ltcG9y
dCA8QVZGb3VuZGF0aW9uL0FWVGltZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2lt
cG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKKyNpbXBvcnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCisKK1NPRlRfTElOS19GUkFNRVdPUkso
QVZLaXQpCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWUGxheWVyQ29udHJvbGxlcikKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVlBsYXllckNvbnRy
b2xsZXIKKworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKKyAgICAgICAgcmV0dXJuIHNlbGY7CisKKyAgICBpbml0QVZQbGF5ZXJDb250cm9s
bGVyKCk7CisgICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyUHJveHkgPSBbW2FsbG9jQVZQbGF5ZXJD
b250cm9sbGVySW5zdGFuY2UoKSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHNlbGY7
Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtfcGxheWVyQ29udHJvbGxlclByb3h5IHJl
bGVhc2VdOworICAgIFtfbG9hZGVkVGltZVJhbmdlcyByZWxlYXNlXTsKKyAgICBbX3NlZWthYmxl
VGltZVJhbmdlcyByZWxlYXNlXTsKKyAgICBbX3RpbWluZyByZWxlYXNlXTsKKyAgICBbX2F1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zIHJlbGVhc2VdOworICAgIFtfbGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9ucyByZWxlYXNlXTsKKyAgICBbX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9uIHJlbGVhc2VdOworICAgIFtfY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbiBy
ZWxlYXNlXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpcmVzZXRTdGF0ZQor
eworICAgIHNlbGYuY29udGVudER1cmF0aW9uID0gMDsKKyAgICBzZWxmLm1heFRpbWUgPSAwOwor
ICAgIHNlbGYuY29udGVudER1cmF0aW9uV2l0aGluRW5kVGltZXMgPSAwOworICAgIHNlbGYubG9h
ZGVkVGltZVJhbmdlcyA9IEBbXTsKKworICAgIHNlbGYuY2FuUGxheSA9IE5POworICAgIHNlbGYu
Y2FuUGF1c2UgPSBOTzsKKyAgICBzZWxmLmNhblRvZ2dsZVBsYXliYWNrID0gTk87CisgICAgc2Vs
Zi5oYXNFbmFibGVkQXVkaW8gPSBOTzsKKyAgICBzZWxmLmNhblNlZWsgPSBOTzsKKyAgICBzZWxm
Lm1pblRpbWUgPSAwOworICAgIHNlbGYuc3RhdHVzID0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVz
VW5rbm93bjsKKworICAgIHNlbGYudGltaW5nID0gbmlsOworICAgIHNlbGYucmF0ZSA9IDA7CisK
KyAgICBzZWxmLmhhc0VuYWJsZWRWaWRlbyA9IE5POworICAgIHNlbGYuY29udGVudERpbWVuc2lv
bnMgPSBDR1NpemVNYWtlKDAsIDApOworCisgICAgc2VsZi5zZWVrYWJsZVRpbWVSYW5nZXMgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXldOworCisgICAgc2VsZi5jYW5TY2FuQmFja3dhcmQgPSBOTzsK
KworICAgIHNlbGYuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBuaWw7CisgICAgc2VsZi5j
dXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsKKworICAgIHNlbGYubGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IG5pbDsKKyAgICBzZWxmLmN1cnJlbnRMZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb24gPSBuaWw7Cit9CisKKy0gKEFWUGxheWVyICopcGxheWVyCit7Cisg
ICAgcmV0dXJuIG5pbDsKK30KKworLSAoaWQpZm9yd2FyZGluZ1RhcmdldEZvclNlbGVjdG9yOihT
RUwpc2VsZWN0b3IKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VsZWN0b3IpOworICAgIHJldHVybiBz
ZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eTsKK30KKworLSAodm9pZClwbGF5OihpZClzZW5kZXIK
K3sKKyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisg
ICAgICAgIHJldHVybjsKKyAgICBzZWxmLmRlbGVnYXRlLT5wbGF5KCk7Cit9CisKKy0gKHZvaWQp
cGF1c2U6KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOworICAgIGlmICgh
c2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIHNlbGYuZGVsZWdhdGUtPnBhdXNl
KCk7Cit9CisKKy0gKHZvaWQpdG9nZ2xlUGxheWJhY2s6KGlkKXNlbmRlcgoreworICAgIFVOVVNF
RF9QQVJBTShzZW5kZXIpOworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJu
OworICAgIHNlbGYuZGVsZWdhdGUtPnRvZ2dsZVBsYXlTdGF0ZSgpOworfQorCistICh2b2lkKXRv
Z2dsZVBsYXliYWNrRXZlbldoZW5JbkJhY2tncm91bmQ6KGlkKXNlbmRlcgoreworICAgIFtzZWxm
IHRvZ2dsZVBsYXliYWNrOnNlbmRlcl07Cit9CisKKy0gKEJPT0wpaXNQbGF5aW5nCit7CisgICAg
cmV0dXJuIFtzZWxmIHJhdGVdOworfQorCistICh2b2lkKXNldFBsYXlpbmc6KEJPT0wpcGxheWlu
ZworeworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChw
bGF5aW5nKQorICAgICAgICBzZWxmLmRlbGVnYXRlLT5wbGF5KCk7CisgICAgZWxzZQorICAgICAg
ICBzZWxmLmRlbGVnYXRlLT5wYXVzZSgpOworfQorCisrIChOU1NldCAqKWtleVBhdGhzRm9yVmFs
dWVzQWZmZWN0aW5nUGxheWluZworeworICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdDpA
InJhdGUiXTsKK30KKworLSAodm9pZCliZWdpblNjcnViYmluZzooaWQpc2VuZGVyCit7CisgICAg
VU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAgICAgICBy
ZXR1cm47CisgICAgc2VsZi5kZWxlZ2F0ZS0+YmVnaW5TY3J1YmJpbmcoKTsKK30KKworLSAodm9p
ZCllbmRTY3J1YmJpbmc6KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwor
ICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIHNlbGYuZGVsZWdh
dGUtPmVuZFNjcnViYmluZygpOworfQorCistICh2b2lkKXNlZWtUb1RpbWU6KE5TVGltZUludGVy
dmFsKXRpbWUKK3sKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAg
ICBzZWxmLmRlbGVnYXRlLT5mYXN0U2Vlayh0aW1lKTsKK30KKworLSAoTlNUaW1lSW50ZXJ2YWwp
Y3VycmVudFRpbWVXaXRoaW5FbmRUaW1lcworeworICAgIHJldHVybiBzZWxmLnRpbWluZy5jdXJy
ZW50VmFsdWU7Cit9CisKKy0gKHZvaWQpc2V0Q3VycmVudFRpbWVXaXRoaW5FbmRUaW1lczooTlNU
aW1lSW50ZXJ2YWwpY3VycmVudFRpbWVXaXRoaW5FbmRUaW1lcworeworICAgIFtzZWxmIHNlZWtU
b1RpbWU6Y3VycmVudFRpbWVXaXRoaW5FbmRUaW1lc107Cit9CisKKysgKE5TU2V0ICopa2V5UGF0
aHNGb3JWYWx1ZXNBZmZlY3RpbmdDdXJyZW50VGltZVdpdGhpbkVuZFRpbWVzCit7CisgICAgcmV0
dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAidGltaW5nIl07Cit9CisKKy0gKEJPT0wpaGFzTGl2
ZVN0cmVhbWluZ0NvbnRlbnQKK3sKKyAgICBpZiAoW3NlbGYgc3RhdHVzXSA9PSBBVlBsYXllckNv
bnRyb2xsZXJTdGF0dXNSZWFkeVRvUGxheSkKKyAgICAgICAgcmV0dXJuIFtzZWxmIGNvbnRlbnRE
dXJhdGlvbl0gPT0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CisgICAg
cmV0dXJuIE5POworfQorCisrIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nSGFz
TGl2ZVN0cmVhbWluZ0NvbnRlbnQKK3sKKyAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3Rz
OkAiY29udGVudER1cmF0aW9uIiwgQCJzdGF0dXMiLCBuaWxdOworfQorCistICh2b2lkKXNraXBC
YWNrd2FyZFRoaXJ0eVNlY29uZHM6KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5k
ZXIpOworICAgIEJPT0wgaXNUaW1lV2l0aGluU2Vla2FibGVUaW1lUmFuZ2VzID0gTk87CisgICAg
Q01UaW1lIGN1cnJlbnRUaW1lID0gQ01UaW1lTWFrZVdpdGhTZWNvbmRzKFtbc2VsZiB0aW1pbmdd
IGN1cnJlbnRWYWx1ZV0sIDEwMDApOworICAgIENNVGltZSB0aGlydHlTZWNvbmRzQmVmb3JlQ3Vy
cmVudFRpbWUgPSBDTVRpbWVTdWJ0cmFjdChjdXJyZW50VGltZSwgQ01UaW1lTWFrZSgzMCwgMSkp
OworCisgICAgZm9yIChOU1ZhbHVlICpzZWVrYWJsZVRpbWVSYW5nZVZhbHVlIGluIFtzZWxmIHNl
ZWthYmxlVGltZVJhbmdlc10pIHsKKyAgICAgICAgaWYgKENNVGltZVJhbmdlQ29udGFpbnNUaW1l
KFtzZWVrYWJsZVRpbWVSYW5nZVZhbHVlIENNVGltZVJhbmdlVmFsdWVdLCB0aGlydHlTZWNvbmRz
QmVmb3JlQ3VycmVudFRpbWUpKSB7CisgICAgICAgICAgICBpc1RpbWVXaXRoaW5TZWVrYWJsZVRp
bWVSYW5nZXMgPSBZRVM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGlmIChpc1RpbWVXaXRoaW5TZWVrYWJsZVRpbWVSYW5nZXMpCisgICAgICAgIFtzZWxmIHNl
ZWtUb1RpbWU6Q01UaW1lR2V0U2Vjb25kcyh0aGlydHlTZWNvbmRzQmVmb3JlQ3VycmVudFRpbWUp
XTsKK30KKworLSAodm9pZClnb3RvRW5kT2ZTZWVrYWJsZVJhbmdlczooaWQpc2VuZGVyCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgTlNUaW1lSW50ZXJ2YWwgdGltZUF0RW5kT2ZT
ZWVrYWJsZVRpbWVSYW5nZXMgPSBOQU47CisKKyAgICBmb3IgKE5TVmFsdWUgKnNlZWthYmxlVGlt
ZVJhbmdlVmFsdWUgaW4gW3NlbGYgc2Vla2FibGVUaW1lUmFuZ2VzXSkgeworICAgICAgICBDTVRp
bWVSYW5nZSBzZWVrYWJsZVRpbWVSYW5nZSA9IFtzZWVrYWJsZVRpbWVSYW5nZVZhbHVlIENNVGlt
ZVJhbmdlVmFsdWVdOworICAgICAgICBOU1RpbWVJbnRlcnZhbCBlbmRPZlNlZWthYmxlVGltZVJh
bmdlID0gQ01UaW1lR2V0U2Vjb25kcyhDTVRpbWVSYW5nZUdldEVuZChzZWVrYWJsZVRpbWVSYW5n
ZSkpOworICAgICAgICBpZiAoaXNuYW4odGltZUF0RW5kT2ZTZWVrYWJsZVRpbWVSYW5nZXMpIHx8
IGVuZE9mU2Vla2FibGVUaW1lUmFuZ2UgPiB0aW1lQXRFbmRPZlNlZWthYmxlVGltZVJhbmdlcykK
KyAgICAgICAgICAgIHRpbWVBdEVuZE9mU2Vla2FibGVUaW1lUmFuZ2VzID0gZW5kT2ZTZWVrYWJs
ZVRpbWVSYW5nZTsKKyAgICB9CisKKyAgICBpZiAoIWlzbmFuKHRpbWVBdEVuZE9mU2Vla2FibGVU
aW1lUmFuZ2VzKSkKKyAgICAgICAgW3NlbGYgc2Vla1RvVGltZTp0aW1lQXRFbmRPZlNlZWthYmxl
VGltZVJhbmdlc107Cit9CisKKy0gKEJPT0wpY2FuU2NhbkZvcndhcmQKK3sKKyAgICByZXR1cm4g
W3NlbGYgY2FuUGxheV07Cit9CisKKysgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3Rp
bmdDYW5TY2FuRm9yd2FyZAoreworICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdDpAImNh
blBsYXkiXTsKK30KKworLSAodm9pZCliZWdpblNjYW5uaW5nRm9yd2FyZDooaWQpc2VuZGVyCit7
CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAg
ICAgICByZXR1cm47CisgICAgc2VsZi5kZWxlZ2F0ZS0+YmVnaW5TY2FubmluZ0ZvcndhcmQoKTsK
K30KKworLSAodm9pZCllbmRTY2FubmluZ0ZvcndhcmQ6KGlkKXNlbmRlcgoreworICAgIFVOVVNF
RF9QQVJBTShzZW5kZXIpOworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJu
OworICAgIHNlbGYuZGVsZWdhdGUtPmVuZFNjYW5uaW5nKCk7Cit9CisKKy0gKHZvaWQpYmVnaW5T
Y2FubmluZ0JhY2t3YXJkOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsK
KyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBzZWxmLmRlbGVn
YXRlLT5iZWdpblNjYW5uaW5nQmFja3dhcmQoKTsKK30KKworLSAodm9pZCllbmRTY2FubmluZ0Jh
Y2t3YXJkOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKKyAgICBpZiAo
IXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBzZWxmLmRlbGVnYXRlLT5lbmRT
Y2FubmluZygpOworfQorCistIChCT09MKWNhblNlZWtUb0JlZ2lubmluZworeworICAgIENNVGlt
ZSBtaW5pbXVtVGltZSA9IGtDTVRpbWVJbmRlZmluaXRlOworCisgICAgZm9yIChOU1ZhbHVlICp2
YWx1ZSBpbiBbc2VsZiBzZWVrYWJsZVRpbWVSYW5nZXNdKQorICAgICAgICBtaW5pbXVtVGltZSA9
IENNVGltZU1pbmltdW0oW3ZhbHVlIENNVGltZVJhbmdlVmFsdWVdLnN0YXJ0LCBtaW5pbXVtVGlt
ZSk7CisKKyAgICByZXR1cm4gQ01USU1FX0lTX05VTUVSSUMobWluaW11bVRpbWUpOworfQorCisr
IChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nQ2FuU2Vla1RvQmVnaW5uaW5nCit7
CisgICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAic2Vla2FibGVUaW1lUmFuZ2VzIl07
Cit9CisKKy0gKHZvaWQpc2Vla1RvQmVnaW5uaW5nOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURf
UEFSQU0oc2VuZGVyKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsK
KyAgICBzZWxmLmRlbGVnYXRlLT5zZWVrVG9UaW1lKC1JTkZJTklUWSk7Cit9CisKKy0gKHZvaWQp
c2Vla0NoYXB0ZXJCYWNrd2FyZDooaWQpc2VuZGVyCit7CisgICAgW3NlbGYgc2Vla1RvQmVnaW5u
aW5nOnNlbmRlcl07Cit9CisKKy0gKEJPT0wpY2FuU2Vla1RvRW5kCit7CisgICAgQ01UaW1lIG1h
eGltdW1UaW1lID0ga0NNVGltZUluZGVmaW5pdGU7CisKKyAgICBmb3IgKE5TVmFsdWUgKnZhbHVl
IGluIFtzZWxmIHNlZWthYmxlVGltZVJhbmdlc10pCisgICAgICAgIG1heGltdW1UaW1lID0gQ01U
aW1lTWF4aW11bShDTVRpbWVSYW5nZUdldEVuZChbdmFsdWUgQ01UaW1lUmFuZ2VWYWx1ZV0pLCBt
YXhpbXVtVGltZSk7CisKKyAgICByZXR1cm4gQ01USU1FX0lTX05VTUVSSUMobWF4aW11bVRpbWUp
OworfQorCisrIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nQ2FuU2Vla1RvRW5k
Cit7CisgICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAic2Vla2FibGVUaW1lUmFuZ2Vz
Il07Cit9CisKKy0gKHZvaWQpc2Vla1RvRW5kOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURfUEFS
QU0oc2VuZGVyKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAg
ICBzZWxmLmRlbGVnYXRlLT5zZWVrVG9UaW1lKElORklOSVRZKTsKK30KKworLSAodm9pZClzZWVr
Q2hhcHRlckZvcndhcmQ6KGlkKXNlbmRlcgoreworICAgIFtzZWxmIHNlZWtUb0VuZDpzZW5kZXJd
OworfQorCistIChCT09MKWhhc01lZGlhU2VsZWN0aW9uT3B0aW9ucworeworICAgIHJldHVybiBb
c2VsZiBoYXNBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc10gfHwgW3NlbGYgaGFzTGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9uc107Cit9CisKKysgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNB
ZmZlY3RpbmdIYXNNZWRpYVNlbGVjdGlvbk9wdGlvbnMKK3sKKyAgICByZXR1cm4gW05TU2V0IHNl
dFdpdGhPYmplY3RzOkAiaGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMiLCBAImhhc0xlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMiLCBuaWxdOworfQorCistIChCT09MKWhhc0F1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zCit7CisgICAgcmV0dXJuIFtbc2VsZiBhdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9uc10gY291bnRdID4gMTsKK30KKworKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVl
c0FmZmVjdGluZ0hhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zCit7CisgICAgcmV0dXJuIFtO
U1NldCBzZXRXaXRoT2JqZWN0OkAiYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMiXTsKK30KKwor
LSAoQk9PTCloYXNMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zCit7CisgICAgY29uc3QgTlNV
SW50ZWdlciBudW1EZWZhdWx0TGVnaWJsZU9wdGlvbnMgPSAyOworICAgIHJldHVybiBbW3NlbGYg
bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc10gY291bnRdID4gbnVtRGVmYXVsdExlZ2libGVP
cHRpb25zOworfQorCisrIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nSGFzTGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucworeworICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9i
amVjdDpAImxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMiXTsKK30KKworLSAoV2ViQVZNZWRp
YVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uCit7Cisg
ICAgcmV0dXJuIF9jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjsKK30KKworLSAodm9p
ZClzZXRDdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjooV2ViQVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiAqKW9wdGlvbgoreworICAgIGlmIChvcHRpb24gPT0gX2N1cnJlbnRBdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBbX2N1cnJlbnRBdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9uIHJlbGVhc2VdOworICAgIF9jdXJyZW50QXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbiA9IFtvcHRpb24gcmV0YWluXTsKKworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgTlNJbnRlZ2VyIGluZGV4ID0gTlNOb3RGb3VuZDsKKwor
ICAgIGlmIChvcHRpb24gJiYgc2VsZi5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucykKKyAgICAg
ICAgaW5kZXggPSBbc2VsZi5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyBpbmRleE9mT2JqZWN0
Om9wdGlvbl07CisKKyAgICBzZWxmLmRlbGVnYXRlLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9uKGlu
ZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOworfQorCistIChXZWJBVk1l
ZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbgor
eworICAgIHJldHVybiBfY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjsKK30KKwor
LSAodm9pZClzZXRDdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOihXZWJBVk1lZGlh
U2VsZWN0aW9uT3B0aW9uICopb3B0aW9uCit7CisgICAgaWYgKG9wdGlvbiA9PSBfY3VycmVudExl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgW19jdXJy
ZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uIHJlbGVhc2VdOworICAgIF9jdXJyZW50TGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uID0gW29wdGlvbiByZXRhaW5dOworCisgICAgaWYgKCFz
ZWxmLmRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBOU0ludGVnZXIgaW5kZXggPSBO
U05vdEZvdW5kOworCisgICAgaWYgKG9wdGlvbiAmJiBzZWxmLmxlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnMpCisgICAgICAgIGluZGV4ID0gW3NlbGYubGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9ucyBpbmRleE9mT2JqZWN0Om9wdGlvbl07CisKKyAgICBzZWxmLmRlbGVnYXRlLT5zZWxlY3RM
ZWdpYmxlTWVkaWFPcHRpb24oaW5kZXggIT0gTlNOb3RGb3VuZCA/IGluZGV4IDogVUlOVDY0X01B
WCk7Cit9CisKKy0gKEJPT0wpaXNQbGF5aW5nT25FeHRlcm5hbFNjcmVlbgoreworICAgIHJldHVy
biBbc2VsZiBpc0V4dGVybmFsUGxheWJhY2tBY3RpdmVdIHx8IFtzZWxmIGlzUGxheWluZ09uU2Vj
b25kU2NyZWVuXTsKK30KKworKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ1Bs
YXlpbmdPbkV4dGVybmFsU2NyZWVuCit7CisgICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0
czpAImV4dGVybmFsUGxheWJhY2tBY3RpdmUiLCBAInBsYXlpbmdPblNlY29uZFNjcmVlbiIsIG5p
bF07Cit9CisKKy0gKEJPT0wpaXNQaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQKK3sKKyAgICBy
ZXR1cm4gX3BpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZDsKK30KKworLSAodm9pZClzZXRQaWN0
dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ6KEJPT0wpcGljdHVyZUluUGljdHVyZUludGVycnVwdGVk
Cit7CisgICAgaWYgKF9waWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQgIT0gcGljdHVyZUluUGlj
dHVyZUludGVycnVwdGVkKSB7CisgICAgICAgIF9waWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQg
PSBwaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ7CisgICAgICAgIGlmIChwaWN0dXJlSW5QaWN0
dXJlSW50ZXJydXB0ZWQpCisgICAgICAgICAgICBbc2VsZiBzZXRQbGF5aW5nOk5PXTsKKyAgICB9
Cit9CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uCitA
ZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmY2YmI1MDFiYjgzYzRkOGUyYWE1OTU0NjYyNzZmMGQ1N2M4NmVmNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0X2gKKyNkZWZpbmUgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
QVZLaXRfaAorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5o
IgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgorI2luY2x1ZGUgIlRpbWVyLmgi
CisjaW5jbHVkZSAiV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmgiCisjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KKyNpbmNsdWRlIDxvYmpjL29iamMuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisKK09CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJDb250cm9sbGVyOworT0JKQ19DTEFTUyBBVlBsYXll
clZpZXdDb250cm9sbGVyOworT0JKQ19DTEFTUyBVSVZpZXdDb250cm9sbGVyOworT0JKQ19DTEFT
UyBVSVdpbmRvdzsKK09CSkNfQ0xBU1MgVUlWaWV3OworCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IFN0cmluZzsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW50UmVjdDsKK2NsYXNz
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uQ2hhbmdl
T2JzZXJ2ZXI7CisKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Q2xpZW50
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dENsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGV4dGVybmFsUGxheWJhY2tFbmFibGVk
Q2hhbmdlZChib29sKSA9IDA7Cit9OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdAorICAgIDogcHVibGljIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZQorICAgICwgcHVibGljIFJlZkNvdW50ZWQ8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQ+IHsKKworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQVZLaXQ+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCgpKTsKKyAgICB9CisgICAgdmly
dHVhbCB+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsKik7CisgICAgdm9pZCBzZXRDbGllbnQoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXRDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQorCisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZXNldE1lZGlhU3RhdGUoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1l
KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEJ1ZmZlcmVkVGltZShkb3Vi
bGUpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmF0ZShib29sIGlzUGxh
eWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5nZXMmKSBvdmVycmlkZTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZShib29sKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgp
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBz
ZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4dGVy
bmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgV1RG
OjpTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSBvdmVycmlkZTsK
KyAgICBib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3Q7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpOworCisgICAgV2ViQVZQbGF5
ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXJD
b250cm9sbGVyLmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBXRUJDT1JFX0VYUE9SVCBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCgpOworCisgICAgUmV0YWluUHRyPFdlYkFWUGxh
eWVyQ29udHJvbGxlcj4gbV9wbGF5ZXJDb250cm9sbGVyOworICAgIFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsKiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsIHsgbnVsbHB0ciB9OworICAgIFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Q2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHJ9OworCisg
ICAgYm9vbCBtX3dpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIHsgdHJ1ZSB9OworfTsKKwor
fQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2VkY2I4MTM0Zjc3MjY2YTUxMGM0ZDU4NTBhZWMyODNmZmQ3NjllNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdC5tbQpAQCAtMCwwICsxLDIwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIgorCisjaWYgUExBVEZPUk0o
SU9TKQorI2lmIEhBVkUoQVZLSVQpCisKKyNpbXBvcnQgIkFWS2l0U1BJLmgiCisjaW1wb3J0ICJM
b2dnaW5nLmgiCisjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJXZWJBVlBsYXllckNv
bnRyb2xsZXIuaCIKKyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmgiCisjaW1wb3J0
IDxBVkZvdW5kYXRpb24vQVZUaW1lLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1w
b3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworI2ltcG9ydCAiQ29yZU1lZGlhU29mdExpbmsuaCIKKworU09GVF9MSU5LX0ZSQU1FV09SSyhB
VktpdCkKK1NPRlRfTElOS19DTEFTUyhBVktpdCwgQVZWYWx1ZVRpbWluZykKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQoKQorICAgIDogbV9wbGF5ZXJDb250cm9sbGVyKGFkb3B0
TlMoW1tXZWJBVlBsYXllckNvbnRyb2xsZXIgYWxsb2NdIGluaXRdKSkKK3sKKyAgICBbbV9wbGF5
ZXJDb250cm9sbGVyIHNldFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTp0aGlzXTsKK30KKworV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6On5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdCgpCit7CisgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVy
ID0gbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpOworICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYm
IHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSkKKyAgICAgICAgc2V0RXh0
ZXJuYWxQbGF5YmFjayhmYWxzZSwgVGFyZ2V0VHlwZU5vbmUsICIiKTsKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6cmVzZXRNZWRpYVN0YXRlKCkKK3sKKyAgICBb
bV9wbGF5ZXJDb250cm9sbGVyIHJlc2V0U3RhdGVdOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0OjpzZXRXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbChXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbCogbW9kZWwpCit7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbCA9IG1v
ZGVsOworICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV9wbGF5YmFja1Nlc3Np
b25Nb2RlbF07Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNl
dER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIq
IHBsYXllckNvbnRyb2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7CisKKyAgICAvLyBG
SVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzAxNyB1c2Ug
Y29ycmVjdCB2YWx1ZXMgaW5zdGVhZCBvZiBkdXJhdGlvbiBmb3IgYWxsIHRoZXNlCisgICAgcGxh
eWVyQ29udHJvbGxlci5jb250ZW50RHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICBwbGF5ZXJDb250
cm9sbGVyLm1heFRpbWUgPSBkdXJhdGlvbjsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmNvbnRlbnRE
dXJhdGlvbldpdGhpbkVuZFRpbWVzID0gZHVyYXRpb247CisKKyAgICAvLyBGSVhNRTogd2UgdGFr
ZSB0aGlzIGFzIGFuIGluZGljYXRpb24gdGhhdCBwbGF5YmFjayBpcyByZWFkeS4KKyAgICBwbGF5
ZXJDb250cm9sbGVyLmNhblBsYXkgPSBZRVM7CisgICAgcGxheWVyQ29udHJvbGxlci5jYW5QYXVz
ZSA9IFlFUzsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmNhblRvZ2dsZVBsYXliYWNrID0gWUVTOwor
ICAgIHBsYXllckNvbnRyb2xsZXIuaGFzRW5hYmxlZEF1ZGlvID0gWUVTOworICAgIHBsYXllckNv
bnRyb2xsZXIuY2FuU2VlayA9IFlFUzsKKyAgICBwbGF5ZXJDb250cm9sbGVyLm1pblRpbWUgPSAw
OworICAgIHBsYXllckNvbnRyb2xsZXIuc3RhdHVzID0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVz
UmVhZHlUb1BsYXk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6
OnNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCit7
CisgICAgTlNUaW1lSW50ZXJ2YWwgYW5jaG9yVGltZVN0YW1wID0gIVttX3BsYXllckNvbnRyb2xs
ZXIgcmF0ZV0gPyBOQU4gOiBhbmNob3JUaW1lOworICAgIEFWVmFsdWVUaW1pbmcgKnRpbWluZyA9
IFtnZXRBVlZhbHVlVGltaW5nQ2xhc3MoKSB2YWx1ZVRpbWluZ1dpdGhBbmNob3JWYWx1ZTpjdXJy
ZW50VGltZQorICAgICAgICBhbmNob3JUaW1lU3RhbXA6YW5jaG9yVGltZVN0YW1wIHJhdGU6MF07
CisKKyAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldFRpbWluZzp0aW1pbmddOworfQorCit2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRCdWZmZXJlZFRpbWUoZG91Ymxl
IGJ1ZmZlcmVkVGltZSkKK3sKKyAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRy
b2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7CisgICAgZG91YmxlIGR1cmF0aW9uID0g
cGxheWVyQ29udHJvbGxlci5jb250ZW50RHVyYXRpb247CisgICAgZG91YmxlIG5vcm1hbGl6ZWRC
dWZmZXJlZFRpbWU7CisgICAgaWYgKCFkdXJhdGlvbikKKyAgICAgICAgbm9ybWFsaXplZEJ1ZmZl
cmVkVGltZSA9IDA7CisgICAgZWxzZQorICAgICAgICBub3JtYWxpemVkQnVmZmVyZWRUaW1lID0g
YnVmZmVyZWRUaW1lIC8gZHVyYXRpb247CisgICAgcGxheWVyQ29udHJvbGxlci5sb2FkZWRUaW1l
UmFuZ2VzID0gQFtAMCwgQChub3JtYWxpemVkQnVmZmVyZWRUaW1lKV07Cit9CisKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZs
b2F0IHBsYXliYWNrUmF0ZSkKK3sKKyAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldFJhdGU6aXNQ
bGF5aW5nID8gcGxheWJhY2tSYXRlIDogMC5dOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0OjpzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJiB0aW1l
UmFuZ2VzKQoreworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gc2Vla2FibGVSYW5nZXMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBFeGNlcHRpb25D
b2RlIGV4Y2VwdGlvbkNvZGU7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGltZVJh
bmdlcy5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIGRvdWJsZSBzdGFydCA9IHRpbWVSYW5nZXMu
c3RhcnQoaSwgZXhjZXB0aW9uQ29kZSk7CisgICAgICAgIGRvdWJsZSBlbmQgPSB0aW1lUmFuZ2Vz
LmVuZChpLCBleGNlcHRpb25Db2RlKTsKKworICAgICAgICBDTVRpbWVSYW5nZSByYW5nZSA9IENN
VGltZVJhbmdlTWFrZShDTVRpbWVNYWtlV2l0aFNlY29uZHMoc3RhcnQsIDEwMDApLCBDTVRpbWVN
YWtlV2l0aFNlY29uZHMoZW5kLXN0YXJ0LCAxMDAwKSk7CisgICAgICAgIFtzZWVrYWJsZVJhbmdl
cyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ01UaW1lUmFuZ2U6cmFuZ2VdXTsKKyAgICB9
CisKKyAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldFNlZWthYmxlVGltZVJhbmdlczpzZWVrYWJs
ZVJhbmdlcy5nZXQoKV07Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIGNhblBsYXlGYXN0UmV2ZXJzZSkKK3sKKyAg
ICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldENhblNjYW5CYWNrd2FyZDpjYW5QbGF5RmFzdFJldmVy
c2VdOworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBtZWRpYVNlbGVjdGlv
bk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMpCit7CisgICAgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aENhcGFjaXR5Om9wdGlvbnMuc2l6ZSgpXSk7CisgICAgZm9yIChhdXRvJiBu
YW1lIDogb3B0aW9ucykgeworICAgICAgICBSZXRhaW5QdHI8V2ViQVZNZWRpYVNlbGVjdGlvbk9w
dGlvbj4gd2ViT3B0aW9uID0gYWRvcHROUyhbW1dlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gYWxs
b2NdIGluaXRdKTsKKyAgICAgICAgW3dlYk9wdGlvbiBzZXRMb2NhbGl6ZWREaXNwbGF5TmFtZTpu
YW1lXTsKKyAgICAgICAgW3dlYk9wdGlvbnMgYWRkT2JqZWN0OndlYk9wdGlvbi5nZXQoKV07Cisg
ICAgfQorICAgIHJldHVybiB3ZWJPcHRpb25zOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBtZWRpYVNlbGVjdGlvbk9wdGlvbnMo
b3B0aW9ucyk7CisgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRBdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9uczp3ZWJPcHRpb25zLmdldCgpXTsKKyAgICBpZiAoc2VsZWN0ZWRJbmRleCA8IFt3ZWJP
cHRpb25zIGNvdW50XSkKKyAgICAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRDdXJyZW50QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbjpbd2ViT3B0aW9ucyBvYmplY3RBdEluZGV4OnN0YXRpY19j
YXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgpXV07Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit7Cisg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gbWVkaWFTZWxlY3Rpb25P
cHRpb25zKG9wdGlvbnMpOworICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0TGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9uczp3ZWJPcHRpb25zLmdldCgpXTsKKyAgICBpZiAoc2VsZWN0ZWRJbmRl
eCA8IFt3ZWJPcHRpb25zIGNvdW50XSkKKyAgICAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRD
dXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOlt3ZWJPcHRpb25zIG9iamVjdEF0SW5k
ZXg6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc2VsZWN0ZWRJbmRleCldXTsKK30KKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0RXh0ZXJuYWxQbGF5YmFjayhib29s
IGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRhcmdldFR5cGUsIFN0cmluZyBs
b2NhbGl6ZWREZXZpY2VOYW1lKQoreworICAgIEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxh
eWJhY2tUeXBlIGV4dGVybmFsUGxheWJhY2tUeXBlID0gQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJu
YWxQbGF5YmFja1R5cGVOb25lOworICAgIGlmICh0YXJnZXRUeXBlID09IFRhcmdldFR5cGVBaXJQ
bGF5KQorICAgICAgICBleHRlcm5hbFBsYXliYWNrVHlwZSA9IEFWUGxheWVyQ29udHJvbGxlckV4
dGVybmFsUGxheWJhY2tUeXBlQWlyUGxheTsKKyAgICBlbHNlIGlmICh0YXJnZXRUeXBlID09IFRh
cmdldFR5cGVUVk91dCkKKyAgICAgICAgZXh0ZXJuYWxQbGF5YmFja1R5cGUgPSBBVlBsYXllckNv
bnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZVRWT3V0OworCisgICAgV2ViQVZQbGF5ZXJDb250
cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpOworICAg
IHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FpclBsYXlEZXZpY2VMb2NhbGl6ZWRO
YW1lID0gbG9jYWxpemVkRGV2aWNlTmFtZTsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFs
UGxheWJhY2tUeXBlID0gZXh0ZXJuYWxQbGF5YmFja1R5cGU7CisgICAgcGxheWVyQ29udHJvbGxl
ci5leHRlcm5hbFBsYXliYWNrQWN0aXZlID0gZW5hYmxlZDsKKworICAgIGlmIChtX2NsaWVudCkK
KyAgICAgICAgbV9jbGllbnQtPmV4dGVybmFsUGxheWJhY2tFbmFibGVkQ2hhbmdlZChlbmFibGVk
KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0V2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKK3sKKyAgICBbbV9wbGF5ZXJD
b250cm9sbGVyIHNldEFsbG93c0V4dGVybmFsUGxheWJhY2s6IWRpc2FibGVkXTsKK30KKworYm9v
bCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6d2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9wbGF5ZXJDb250cm9sbGVyIGFsbG93
c0V4dGVybmFsUGxheWJhY2tdOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0OjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsID0gbmls
OworfQorCit9CisKKyNlbmRpZiAvLyBIQVZFKEFWS0lUKQorI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IDk5ZDFjMDdlZGM3YzliOWUw
MmZkZmJjNmZiN2I3ZjIxNTY1OTM1ZGMuLmI2OWNjMTJjYmJkZmEwYWVlMzQ3NGFkMjczNjE3Mjg5
ZWQwZGJkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMzMsNiArMzMs
OCBAQAogI2ltcG9ydCAiUXVhcnR6Q29yZVNQSS5oIgogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIK
ICNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKKyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0LmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dC5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCIKICNpbXBv
cnQgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgiCiAjaW1wb3J0ICJXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIgpAQCAtNTU0LDE0ICs1NTYsMTYgQEAgdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKEhU
TUxWaWRlb0VsZW1lbnQmIHZpZGUKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywgdmlld1JlZiwgbW9kZV0gewogICAgICAgICBB
U1NFUlQoaXNVSVRocmVhZCgpKTsKIAotICAgICAgICBtX2ludGVyZmFjZSA9IFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBwbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UgPSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6Y3JlYXRl
KCk7CisgICAgICAgIG1faW50ZXJmYWNlID0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmNyZWF0ZShwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuZ2V0KCkpOwogICAgICAgICBtX2lu
dGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIodGhpcyk7CiAgICAg
ICAgIG1faW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCh0aGlzKTsKICAgICAg
ICAgbV92aWRlb0Z1bGxzY3JlZW5WaWV3ID0gYWRvcHROUyhbW2dldFVJVmlld0NsYXNzKCkgYWxs
b2NdIGluaXRdKTsKICAgICAgICAgCiAgICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICAgICAgV2ViVGhyZWFkUnVu
KFtzdHJvbmdUaGlzLCB0aGlzLCB2aWV3UmVmLCBtb2RlXSB7Ci0gICAgICAgICAgICBtX21vZGVs
ID0gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSgpOworICAgICAg
ICAgICAgYXV0byBwbGF5YmFja1Nlc3Npb25Nb2RlbCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fbW9kZWwgPSBXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKHBsYXliYWNrU2Vzc2lvbk1vZGVsLmdl
dCgpKTsKICAgICAgICAgICAgIG1fbW9kZWwtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZSh0aGlzKTsKICAgICAgICAgICAgIG1fbW9kZWwtPnNldFZpZGVvRWxlbWVudChtX3ZpZGVvRWxl
bWVudC5nZXQoKSk7CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKaW5k
ZXggYzA3NDAwYTE4NTA4YjQzYTNiOTQyMGVhZGZlZWJlOGJiODM5OWFlYi4uY2UxZGYxMzNjMWI5
ZTk4MGIwNTFlMGY3NjQwMzYxN2Q3ZGNiMzViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRl
ICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIgogI2luY2x1ZGUgIldlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZS5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8
b2JqYy9vYmpjLmg+CkBAIC00MCwxNCArNDEsMTUgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi1PQkpDX0NMQVNTIFdlYkFWUGxheWVyQ29u
dHJvbGxlcjsKIE9CSkNfQ0xBU1MgQVZQbGF5ZXJWaWV3Q29udHJvbGxlcjsKIE9CSkNfQ0xBU1Mg
VUlWaWV3Q29udHJvbGxlcjsKIE9CSkNfQ0xBU1MgVUlXaW5kb3c7CiBPQkpDX0NMQVNTIFVJVmll
dzsKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKK09CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJDb250cm9sbGVy
OwogT0JKQ19DTEFTUyBXZWJBVlBsYXllckxheWVyVmlldzsKIE9CSkNfQ0xBU1MgV2ViQVZQbGF5
ZXJMYXllcjsKK09CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlOwog
CiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFN0cmluZzsKQEAgLTU1LDE4ICs1NywxNyBAQCBjbGFz
cyBTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEludFJlY3Q7CitjbGFzcyBX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDsKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsOwogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI7CiAgICAgCiBj
bGFzcyBXRUJDT1JFX0VYUE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdAogICAg
IDogcHVibGljIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZQorICAgICwgcHVibGljIFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Q2xpZW50CiAgICAgLCBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gewogCiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gY3JlYXRlKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0KCkpOwotICAgIH0KKyAgICBzdGF0aWMgUmVmPFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0PiBjcmVhdGUoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQmKTsKICAg
ICB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWwqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdlYlZpZGVvRnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyKFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKik7CkBAIC04
Myw3ICs4NCw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywg
dWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1Rhcmdl
dFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpIG92ZXJyaWRlOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkg
b3ZlcnJpZGU7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0dXBGdWxsc2Ny
ZWVuKFVJVmlldyYsIGNvbnN0IEludFJlY3QmIGluaXRpYWxSZWN0LCBVSVZpZXcgKiwgSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1cmVJ
blBpY3R1cmVQbGF5YmFjayk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGVudGVy
RnVsbHNjcmVlbigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNj
cmVlbihjb25zdCBJbnRSZWN0JiBmaW5hbFJlY3QpOwpAQCAtMTAwLDYgKzEwMCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgUGljdHVyZUluUGljdHVyZVN0YXJ0ZWQKICAgICB9OwogCisgICAgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWwqIG1vZGVsKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbDsgfQogICAgIGJvb2wgc2hvdWxkRXhpdEZ1bGxzY3JlZW5XaXRoUmVhc29uKEV4aXRG
dWxsU2NyZWVuUmVhc29uKTsKICAgICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgIGJvb2wgYWxsb3dz
UGljdHVyZUluUGljdHVyZVBsYXliYWNrKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NQaWN0dXJl
SW5QaWN0dXJlUGxheWJhY2s7IH0KQEAgLTEyMSwxMyArMTIyLDE2IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9k
ZSkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IG1vZGU7IH0KIAogcHJvdGVjdGVkOgotICAgIFdF
QkNPUkVfRVhQT1JUIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQVZLaXQmKTsKICAgICB2b2lkIGJlZ2luU2Vzc2lvbigpOwogICAgIHZv
aWQgZW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW5TdGFu
ZGFyZCgpOwogICAgIHZvaWQgd2F0Y2hkb2dUaW1lckZpcmVkKCk7CisgICAgdm9pZCBleHRlcm5h
bFBsYXliYWNrRW5hYmxlZENoYW5nZWQoYm9vbCkgb3ZlcnJpZGU7CisgICAgV2ViQVZQbGF5ZXJD
b250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyKCkgY29uc3Q7CiAKLSAgICBSZXRhaW5QdHI8V2Vi
QVZQbGF5ZXJDb250cm9sbGVyPiBtX3BsYXllckNvbnRyb2xsZXI7CisgICAgUmVmPFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKKyAg
ICBSZXRhaW5QdHI8V2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBtX3BsYXllclZp
ZXdDb250cm9sbGVyRGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPEFWUGxheWVyVmlld0NvbnRyb2xs
ZXI+IG1fcGxheWVyVmlld0NvbnRyb2xsZXI7CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwq
IG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgeyBudWxscHRyIH07CiAgICAgV2ViVmlkZW9GdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXIqIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyIHsgbnVsbHB0ciB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDY5ZGJkZjgxNGQ4NDM4MTM4NjM5
MDUxZTI4Yjg5ZDA5YmMzYTkzYmUuLjNkNThkOGUzOTY1NGFmOTM0OGY5YzVlM2M0OTYyZDg5MGQz
NjgyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTM3LDcgKzM3LDkgQEAK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5o
IgogI2ltcG9ydCAiVGltZVJhbmdlcy5oIgorI2ltcG9ydCAiV2ViQVZQbGF5ZXJDb250cm9sbGVy
LmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0ICJXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgiCiAj
aW1wb3J0IDxBVkZvdW5kYXRpb24vQVZUaW1lLmg+CkBAIC02MSw5ICs2Myw3IEBAIFNPRlRfTElO
S19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RG
aWxsLCBOU1N0cmluZyAqCiAKIFNPRlRfTElOS19GUkFNRVdPUksoQVZLaXQpCiBTT0ZUX0xJTktf
Q0xBU1MoQVZLaXQsIEFWUGljdHVyZUluUGljdHVyZUNvbnRyb2xsZXIpCi1TT0ZUX0xJTktfQ0xB
U1MoQVZLaXQsIEFWUGxheWVyQ29udHJvbGxlcikKIFNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZQ
bGF5ZXJWaWV3Q29udHJvbGxlcikKLVNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZWYWx1ZVRpbWlu
ZykKIFNPRlRfTElOS19DTEFTUyhBVktpdCwgX19BVlBsYXllckxheWVyVmlldykKIAogU09GVF9M
SU5LX0ZSQU1FV09SSyhVSUtpdCkKQEAgLTEyNSwxMjYgKzEyNSwyMiBAQCBzdGF0aWMgY29uc3Qg
ZG91YmxlIERlZmF1bHRXYXRjaGRvZ1RpbWVySW50ZXJ2YWwgPSAxOwogCiBAY2xhc3MgV2ViQVZN
ZWRpYVNlbGVjdGlvbk9wdGlvbjsKIAotQGludGVyZmFjZSBXZWJBVlBsYXllckNvbnRyb2xsZXIg
OiBOU09iamVjdCA8QVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlX1dlYktpdE9ubHk+IHsK
LSAgICBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpfY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb247Ci0gICAgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqX2N1cnJlbnRMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb247Ci0gICAgQk9PTCBfcGljdHVyZUluUGljdHVyZUludGVycnVw
dGVkOworQGludGVyZmFjZSBXZWJBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUgOiBOU09i
amVjdCA8QVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlX1dlYktpdE9ubHk+IHsKKyAgICBS
ZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IF9mdWxsc2NyZWVuSW50ZXJm
YWNlOwogfQotCi0tICh2b2lkKXJlc2V0U3RhdGU7Ci0KLUBwcm9wZXJ0eSAocmV0YWluKSBBVlBs
YXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXJQcm94eTsKLUBwcm9wZXJ0eSAoYXNzaWdu
KSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCogZGVsZWdhdGU7CiBAcHJvcGVydHkgKGFzc2lnbikg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQqIGZ1bGxzY3JlZW5JbnRlcmZhY2U7Ci0K
LUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY2FuU2NhbkZvcndhcmQ7Ci1AcHJvcGVydHkgQk9P
TCBjYW5TY2FuQmFja3dhcmQ7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGNhblNlZWtUb0Jl
Z2lubmluZzsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY2FuU2Vla1RvRW5kOwotCi1AcHJv
cGVydHkgQk9PTCBjYW5QbGF5OwotQHByb3BlcnR5IChnZXR0ZXI9aXNQbGF5aW5nKSBCT09MIHBs
YXlpbmc7Ci1AcHJvcGVydHkgQk9PTCBjYW5QYXVzZTsKLUBwcm9wZXJ0eSBCT09MIGNhblRvZ2ds
ZVBsYXliYWNrOwotQHByb3BlcnR5IGRvdWJsZSByYXRlOwotQHByb3BlcnR5IEJPT0wgY2FuU2Vl
azsKLUBwcm9wZXJ0eSBOU1RpbWVJbnRlcnZhbCBjb250ZW50RHVyYXRpb247Ci1AcHJvcGVydHkg
TlNTaXplIGNvbnRlbnREaW1lbnNpb25zOwotQHByb3BlcnR5IEJPT0wgaGFzRW5hYmxlZEF1ZGlv
OwotQHByb3BlcnR5IEJPT0wgaGFzRW5hYmxlZFZpZGVvOwotQHByb3BlcnR5IE5TVGltZUludGVy
dmFsIG1pblRpbWU7Ci1AcHJvcGVydHkgTlNUaW1lSW50ZXJ2YWwgbWF4VGltZTsKLUBwcm9wZXJ0
eSBOU1RpbWVJbnRlcnZhbCBjb250ZW50RHVyYXRpb25XaXRoaW5FbmRUaW1lczsKLUBwcm9wZXJ0
eSAocmV0YWluKSBOU0FycmF5ICpsb2FkZWRUaW1lUmFuZ2VzOwotQHByb3BlcnR5IEFWUGxheWVy
Q29udHJvbGxlclN0YXR1cyBzdGF0dXM7Ci1AcHJvcGVydHkgKHJldGFpbikgQVZWYWx1ZVRpbWlu
ZyAqdGltaW5nOwotQHByb3BlcnR5IChyZXRhaW4pIE5TQXJyYXkgKnNlZWthYmxlVGltZVJhbmdl
czsKLQotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBoYXNNZWRpYVNlbGVjdGlvbk9wdGlvbnM7
Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGhhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
OwotQHByb3BlcnR5IChyZXRhaW4pIE5TQXJyYXkgKmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
OwotQHByb3BlcnR5IChyZXRhaW4pIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKmN1cnJlbnRB
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOwotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBoYXNM
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOwotQHByb3BlcnR5IChyZXRhaW4pIE5TQXJyYXkg
KmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7Ci1AcHJvcGVydHkgKHJldGFpbikgV2ViQVZN
ZWRpYVNlbGVjdGlvbk9wdGlvbiAqY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjsK
LQotQHByb3BlcnR5IChyZWFkb25seSwgZ2V0dGVyPWlzUGxheWluZ09uRXh0ZXJuYWxTY3JlZW4p
IEJPT0wgcGxheWluZ09uRXh0ZXJuYWxTY3JlZW47Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0
ZXI9aXNQbGF5aW5nT25TZWNvbmRTY3JlZW4pIEJPT0wgcGxheWluZ09uU2Vjb25kU2NyZWVuOwot
QHByb3BlcnR5IChnZXR0ZXI9aXNFeHRlcm5hbFBsYXliYWNrQWN0aXZlKSBCT09MIGV4dGVybmFs
UGxheWJhY2tBY3RpdmU7Ci1AcHJvcGVydHkgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5
YmFja1R5cGUgZXh0ZXJuYWxQbGF5YmFja1R5cGU7Ci1AcHJvcGVydHkgKHJldGFpbikgTlNTdHJp
bmcgKmV4dGVybmFsUGxheWJhY2tBaXJQbGF5RGV2aWNlTG9jYWxpemVkTmFtZTsKLUBwcm9wZXJ0
eSBCT09MIGFsbG93c0V4dGVybmFsUGxheWJhY2s7Ci0KIC0gKEJPT0wpcGxheWVyVmlld0NvbnRy
b2xsZXI6KEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKilwbGF5ZXJWaWV3Q29udHJvbGxlciBzaG91
bGRFeGl0RnVsbFNjcmVlbldpdGhSZWFzb246KEFWUGxheWVyVmlld0NvbnRyb2xsZXJFeGl0RnVs
bFNjcmVlblJlYXNvbilyZWFzb247CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJBVlBsYXll
ckNvbnRyb2xsZXIKLQotLSAoaW5zdGFuY2V0eXBlKWluaXQKLXsKLSAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIHNlbGY7Ci0gICAgCi0gICAgX3BpY3R1cmVJ
blBpY3R1cmVJbnRlcnJ1cHRlZCA9IE5POwotICAgIGluaXRBVlBsYXllckNvbnRyb2xsZXIoKTsK
LSAgICBzZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eSA9IFtbYWxsb2NBVlBsYXllckNvbnRyb2xs
ZXJJbnN0YW5jZSgpIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQot
LSAodm9pZClkZWFsbG9jCi17Ci0gICAgW19wbGF5ZXJDb250cm9sbGVyUHJveHkgcmVsZWFzZV07
Ci0gICAgW19sb2FkZWRUaW1lUmFuZ2VzIHJlbGVhc2VdOwotICAgIFtfc2Vla2FibGVUaW1lUmFu
Z2VzIHJlbGVhc2VdOwotICAgIFtfdGltaW5nIHJlbGVhc2VdOwotICAgIFtfYXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnMgcmVsZWFzZV07Ci0gICAgW19sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zIHJlbGVhc2VdOwotICAgIFtfY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24gcmVs
ZWFzZV07Ci0gICAgW19jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uIHJlbGVhc2Vd
OwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClyZXNldFN0YXRlCitAaW1wbGVt
ZW50YXRpb24gV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlCistIChXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdCopZnVsbHNjcmVlbkludGVyZmFjZQogewotICAgIHNlbGYu
Y29udGVudER1cmF0aW9uID0gMDsKLSAgICBzZWxmLm1heFRpbWUgPSAwOwotICAgIHNlbGYuY29u
dGVudER1cmF0aW9uV2l0aGluRW5kVGltZXMgPSAwOwotICAgIHNlbGYubG9hZGVkVGltZVJhbmdl
cyA9IEBbXTsKLSAgICAKLSAgICBzZWxmLmNhblBsYXkgPSBOTzsKLSAgICBzZWxmLmNhblBhdXNl
ID0gTk87Ci0gICAgc2VsZi5jYW5Ub2dnbGVQbGF5YmFjayA9IE5POwotICAgIHNlbGYuaGFzRW5h
YmxlZEF1ZGlvID0gTk87Ci0gICAgc2VsZi5jYW5TZWVrID0gTk87Ci0gICAgc2VsZi5taW5UaW1l
ID0gMDsKLSAgICBzZWxmLnN0YXR1cyA9IEFWUGxheWVyQ29udHJvbGxlclN0YXR1c1Vua25vd247
Ci0gICAgCi0gICAgc2VsZi50aW1pbmcgPSBuaWw7Ci0gICAgc2VsZi5yYXRlID0gMDsKLSAgICAK
LSAgICBzZWxmLmhhc0VuYWJsZWRWaWRlbyA9IE5POwotICAgIHNlbGYuY29udGVudERpbWVuc2lv
bnMgPSBDR1NpemVNYWtlKDAsIDApOwotICAgIAotICAgIHNlbGYuc2Vla2FibGVUaW1lUmFuZ2Vz
ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAgICAKLSAgICBzZWxmLmNhblNjYW5CYWNrd2Fy
ZCA9IE5POwotICAgIAotICAgIHNlbGYuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBuaWw7
Ci0gICAgc2VsZi5jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsKLSAgICAK
LSAgICBzZWxmLmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBuaWw7Ci0gICAgc2VsZi5j
dXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uID0gbmlsOwotfQotCi0tIChBVlBsYXll
ciAqKSBwbGF5ZXIKLXsKLSAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBfZnVsbHNjcmVlbklu
dGVyZmFjZS5nZXQoKTsKIH0KIAotLSAoaWQpZm9yd2FyZGluZ1RhcmdldEZvclNlbGVjdG9yOihT
RUwpc2VsZWN0b3IKKy0gKHZvaWQpc2V0RnVsbHNjcmVlbkludGVyZmFjZTooV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQqKWZ1bGxzY3JlZW5JbnRlcmZhY2UKIHsKLSAgICBVTlVTRURf
UEFSQU0oc2VsZWN0b3IpOwotICAgIHJldHVybiBzZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eTsK
KyAgICBfZnVsbHNjcmVlbkludGVyZmFjZSA9IGZ1bGxzY3JlZW5JbnRlcmZhY2U7CiB9CiAKIC0g
KHZvaWQpcGxheWVyVmlld0NvbnRyb2xsZXJXaWxsU3RhcnRQaWN0dXJlSW5QaWN0dXJlOihBVlBs
YXllclZpZXdDb250cm9sbGVyICopcGxheWVyVmlld0NvbnRyb2xsZXIKQEAgLTMwNSwzNTggKzIw
MSwxMiBAQCAtICh2b2lkKXBsYXllclZpZXdDb250cm9sbGVyOihBVlBsYXllclZpZXdDb250cm9s
bGVyICopcGxheWVyVmlld0NvbnRyb2xsZXIgcmVzdAogICAgIFVOVVNFRF9QQVJBTShwbGF5ZXJW
aWV3Q29udHJvbGxlcik7CiAgICAgc2VsZi5mdWxsc2NyZWVuSW50ZXJmYWNlLT5wcmVwYXJlRm9y
UGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXIoY29tcGxldGlvbkhhbmRs
ZXIpOwogfQotCi0tICh2b2lkKXBsYXk6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShz
ZW5kZXIpOwotICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNl
bGYuZGVsZWdhdGUtPnBsYXkoKTsKLX0KLQotLSAodm9pZClwYXVzZTooaWQpc2VuZGVyCi17Ci0g
ICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgaWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAg
ICByZXR1cm47Ci0gICAgc2VsZi5kZWxlZ2F0ZS0+cGF1c2UoKTsKLX0KLQotLSAodm9pZCl0b2dn
bGVQbGF5YmFjazooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAg
aWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgc2VsZi5kZWxlZ2F0ZS0+
dG9nZ2xlUGxheVN0YXRlKCk7Ci19Ci0KLS0gKHZvaWQpdG9nZ2xlUGxheWJhY2tFdmVuV2hlbklu
QmFja2dyb3VuZDooaWQpc2VuZGVyCi17Ci0gICAgW3NlbGYgdG9nZ2xlUGxheWJhY2s6c2VuZGVy
XTsKLX0KLQotLSAoQk9PTClpc1BsYXlpbmcKLXsKLSAgICByZXR1cm4gW3NlbGYgcmF0ZV0gIT0g
MDsKLX0KLQotLSAodm9pZClzZXRQbGF5aW5nOihCT09MKXBsYXlpbmcKLXsKLSAgICBpZiAoIXNl
bGYuZGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAocGxheWluZykKLSAgICAgICAg
c2VsZi5kZWxlZ2F0ZS0+cGxheSgpOwotICAgIGVsc2UKLSAgICAgICAgc2VsZi5kZWxlZ2F0ZS0+
cGF1c2UoKTsKLX0KLQotKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ1BsYXlp
bmcKLXsKLSAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3Q6QCJyYXRlIl07Ci19Ci0KLS0g
KHZvaWQpYmVnaW5TY3J1YmJpbmc6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5k
ZXIpOwotICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNlbGYu
ZGVsZWdhdGUtPmJlZ2luU2NydWJiaW5nKCk7Ci19Ci0KLS0gKHZvaWQpZW5kU2NydWJiaW5nOihp
ZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBpZiAoIXNlbGYuZGVs
ZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBzZWxmLmRlbGVnYXRlLT5lbmRTY3J1YmJpbmco
KTsKLX0KLQotLSAodm9pZClzZWVrVG9UaW1lOihOU1RpbWVJbnRlcnZhbCl0aW1lCi17Ci0gICAg
aWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgc2VsZi5kZWxlZ2F0ZS0+
ZmFzdFNlZWsodGltZSk7Ci19Ci0KLS0gKE5TVGltZUludGVydmFsKWN1cnJlbnRUaW1lV2l0aGlu
RW5kVGltZXMKLXsKLSAgICByZXR1cm4gc2VsZi50aW1pbmcuY3VycmVudFZhbHVlOwotfQotCi0t
ICh2b2lkKXNldEN1cnJlbnRUaW1lV2l0aGluRW5kVGltZXM6KE5TVGltZUludGVydmFsKWN1cnJl
bnRUaW1lV2l0aGluRW5kVGltZXMKLXsKLSAgICBbc2VsZiBzZWVrVG9UaW1lOmN1cnJlbnRUaW1l
V2l0aGluRW5kVGltZXNdOwotfQotCi0rIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0
aW5nQ3VycmVudFRpbWVXaXRoaW5FbmRUaW1lcwotewotICAgIHJldHVybiBbTlNTZXQgc2V0V2l0
aE9iamVjdDpAInRpbWluZyJdOwotfQotCi0tIChCT09MKWhhc0xpdmVTdHJlYW1pbmdDb250ZW50
Ci17Ci0gICAgaWYgKFtzZWxmIHN0YXR1c10gPT0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzUmVh
ZHlUb1BsYXkpCi0gICAgICAgIHJldHVybiBbc2VsZiBjb250ZW50RHVyYXRpb25dID09IHN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOwotICAgIHJldHVybiBOTzsKLX0KLQot
KyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ0hhc0xpdmVTdHJlYW1pbmdDb250
ZW50Ci17Ci0gICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0czpAImNvbnRlbnREdXJhdGlv
biIsIEAic3RhdHVzIiwgbmlsXTsKLX0KLQotLSAodm9pZClza2lwQmFja3dhcmRUaGlydHlTZWNv
bmRzOihpZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBCT09MIGlz
VGltZVdpdGhpblNlZWthYmxlVGltZVJhbmdlcyA9IE5POwotICAgIENNVGltZSBjdXJyZW50VGlt
ZSA9IENNVGltZU1ha2VXaXRoU2Vjb25kcyhbW3NlbGYgdGltaW5nXSBjdXJyZW50VmFsdWVdLCAx
MDAwKTsKLSAgICBDTVRpbWUgdGhpcnR5U2Vjb25kc0JlZm9yZUN1cnJlbnRUaW1lID0gQ01UaW1l
U3VidHJhY3QoY3VycmVudFRpbWUsIENNVGltZU1ha2UoMzAsIDEpKTsKLSAgICAKLSAgICBmb3Ig
KE5TVmFsdWUgKnNlZWthYmxlVGltZVJhbmdlVmFsdWUgaW4gW3NlbGYgc2Vla2FibGVUaW1lUmFu
Z2VzXSkgewotICAgICAgICBpZiAoQ01UaW1lUmFuZ2VDb250YWluc1RpbWUoW3NlZWthYmxlVGlt
ZVJhbmdlVmFsdWUgQ01UaW1lUmFuZ2VWYWx1ZV0sIHRoaXJ0eVNlY29uZHNCZWZvcmVDdXJyZW50
VGltZSkpIHsKLSAgICAgICAgICAgIGlzVGltZVdpdGhpblNlZWthYmxlVGltZVJhbmdlcyA9IFlF
UzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmIChp
c1RpbWVXaXRoaW5TZWVrYWJsZVRpbWVSYW5nZXMpCi0gICAgICAgIFtzZWxmIHNlZWtUb1RpbWU6
Q01UaW1lR2V0U2Vjb25kcyh0aGlydHlTZWNvbmRzQmVmb3JlQ3VycmVudFRpbWUpXTsKLX0KLQot
LSAodm9pZClnb3RvRW5kT2ZTZWVrYWJsZVJhbmdlczooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VE
X1BBUkFNKHNlbmRlcik7Ci0gICAgTlNUaW1lSW50ZXJ2YWwgdGltZUF0RW5kT2ZTZWVrYWJsZVRp
bWVSYW5nZXMgPSBOQU47Ci0gICAgCi0gICAgZm9yIChOU1ZhbHVlICpzZWVrYWJsZVRpbWVSYW5n
ZVZhbHVlIGluIFtzZWxmIHNlZWthYmxlVGltZVJhbmdlc10pIHsKLSAgICAgICAgQ01UaW1lUmFu
Z2Ugc2Vla2FibGVUaW1lUmFuZ2UgPSBbc2Vla2FibGVUaW1lUmFuZ2VWYWx1ZSBDTVRpbWVSYW5n
ZVZhbHVlXTsKLSAgICAgICAgTlNUaW1lSW50ZXJ2YWwgZW5kT2ZTZWVrYWJsZVRpbWVSYW5nZSA9
IENNVGltZUdldFNlY29uZHMoQ01UaW1lUmFuZ2VHZXRFbmQoc2Vla2FibGVUaW1lUmFuZ2UpKTsK
LSAgICAgICAgaWYgKGlzbmFuKHRpbWVBdEVuZE9mU2Vla2FibGVUaW1lUmFuZ2VzKSB8fCBlbmRP
ZlNlZWthYmxlVGltZVJhbmdlID4gdGltZUF0RW5kT2ZTZWVrYWJsZVRpbWVSYW5nZXMpCi0gICAg
ICAgICAgICB0aW1lQXRFbmRPZlNlZWthYmxlVGltZVJhbmdlcyA9IGVuZE9mU2Vla2FibGVUaW1l
UmFuZ2U7Ci0gICAgfQotICAgIAotICAgIGlmICghaXNuYW4odGltZUF0RW5kT2ZTZWVrYWJsZVRp
bWVSYW5nZXMpKQotICAgICAgICBbc2VsZiBzZWVrVG9UaW1lOnRpbWVBdEVuZE9mU2Vla2FibGVU
aW1lUmFuZ2VzXTsKLX0KLQotLSAoQk9PTCljYW5TY2FuRm9yd2FyZAotewotICAgIHJldHVybiBb
c2VsZiBjYW5QbGF5XTsKLX0KLQotKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGlu
Z0NhblNjYW5Gb3J3YXJkCi17Ci0gICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAiY2Fu
UGxheSJdOwotfQotCi0tICh2b2lkKWJlZ2luU2Nhbm5pbmdGb3J3YXJkOihpZClzZW5kZXIKLXsK
LSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCi0gICAg
ICAgIHJldHVybjsKLSAgICBzZWxmLmRlbGVnYXRlLT5iZWdpblNjYW5uaW5nRm9yd2FyZCgpOwot
fQotCi0tICh2b2lkKWVuZFNjYW5uaW5nRm9yd2FyZDooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VE
X1BBUkFNKHNlbmRlcik7Ci0gICAgaWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47
Ci0gICAgc2VsZi5kZWxlZ2F0ZS0+ZW5kU2Nhbm5pbmcoKTsKLX0KLQotLSAodm9pZCliZWdpblNj
YW5uaW5nQmFja3dhcmQ6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwot
ICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNlbGYuZGVsZWdh
dGUtPmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpOwotfQotCi0tICh2b2lkKWVuZFNjYW5uaW5nQmFj
a3dhcmQ6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIGlmICgh
c2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNlbGYuZGVsZWdhdGUtPmVuZFNj
YW5uaW5nKCk7Ci19Ci0KLS0gKEJPT0wpY2FuU2Vla1RvQmVnaW5uaW5nCi17Ci0gICAgQ01UaW1l
IG1pbmltdW1UaW1lID0ga0NNVGltZUluZGVmaW5pdGU7Ci0KLSAgICBmb3IgKE5TVmFsdWUgKnZh
bHVlIGluIFtzZWxmIHNlZWthYmxlVGltZVJhbmdlc10pCi0gICAgICAgIG1pbmltdW1UaW1lID0g
Q01UaW1lTWluaW11bShbdmFsdWUgQ01UaW1lUmFuZ2VWYWx1ZV0uc3RhcnQsIG1pbmltdW1UaW1l
KTsKLQotICAgIHJldHVybiBDTVRJTUVfSVNfTlVNRVJJQyhtaW5pbXVtVGltZSk7Ci19Ci0KLSsg
KE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdDYW5TZWVrVG9CZWdpbm5pbmcKLXsK
LSAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3Q6QCJzZWVrYWJsZVRpbWVSYW5nZXMiXTsK
LX0KLQotLSAodm9pZClzZWVrVG9CZWdpbm5pbmc6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9Q
QVJBTShzZW5kZXIpOwotICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIHNlbGYuZGVsZWdhdGUtPnNlZWtUb1RpbWUoLUlORklOSVRZKTsKLX0KLQotLSAodm9pZClz
ZWVrQ2hhcHRlckJhY2t3YXJkOihpZClzZW5kZXIKLXsKLSAgICBbc2VsZiBzZWVrVG9CZWdpbm5p
bmc6c2VuZGVyXTsKLX0KLQotLSAoQk9PTCljYW5TZWVrVG9FbmQKLXsKLSAgICBDTVRpbWUgbWF4
aW11bVRpbWUgPSBrQ01UaW1lSW5kZWZpbml0ZTsKLQotICAgIGZvciAoTlNWYWx1ZSAqdmFsdWUg
aW4gW3NlbGYgc2Vla2FibGVUaW1lUmFuZ2VzXSkKLSAgICAgICAgbWF4aW11bVRpbWUgPSBDTVRp
bWVNYXhpbXVtKENNVGltZVJhbmdlR2V0RW5kKFt2YWx1ZSBDTVRpbWVSYW5nZVZhbHVlXSksIG1h
eGltdW1UaW1lKTsKLQotICAgIHJldHVybiBDTVRJTUVfSVNfTlVNRVJJQyhtYXhpbXVtVGltZSk7
Ci19Ci0KLSsgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdDYW5TZWVrVG9FbmQK
LXsKLSAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3Q6QCJzZWVrYWJsZVRpbWVSYW5nZXMi
XTsKLX0KLQotLSAodm9pZClzZWVrVG9FbmQ6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJB
TShzZW5kZXIpOwotICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAg
IHNlbGYuZGVsZWdhdGUtPnNlZWtUb1RpbWUoSU5GSU5JVFkpOwotfQotCi0tICh2b2lkKXNlZWtD
aGFwdGVyRm9yd2FyZDooaWQpc2VuZGVyCi17Ci0gICAgW3NlbGYgc2Vla1RvRW5kOnNlbmRlcl07
Ci19Ci0KLS0gKEJPT0wpaGFzTWVkaWFTZWxlY3Rpb25PcHRpb25zCi17Ci0gICAgcmV0dXJuIFtz
ZWxmIGhhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zXSB8fCBbc2VsZiBoYXNMZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb25zXTsKLX0KLQotKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0Fm
ZmVjdGluZ0hhc01lZGlhU2VsZWN0aW9uT3B0aW9ucwotewotICAgIHJldHVybiBbTlNTZXQgc2V0
V2l0aE9iamVjdHM6QCJoYXNBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyIsIEAiaGFzTGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyIsIG5pbF07Ci19Ci0KLS0gKEJPT0wpaGFzQXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnMKLXsKLSAgICByZXR1cm4gW1tzZWxmIGF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zXSBjb3VudF0gPiAxOwotfQotCi0rIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVz
QWZmZWN0aW5nSGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMKLXsKLSAgICByZXR1cm4gW05T
U2V0IHNldFdpdGhPYmplY3Q6QCJhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyJdOwotfQotCi0t
IChCT09MKWhhc0xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMKLXsKLSAgICBjb25zdCBOU1VJ
bnRlZ2VyIG51bURlZmF1bHRMZWdpYmxlT3B0aW9ucyA9IDI7Ci0gICAgcmV0dXJuIFtbc2VsZiBs
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zXSBjb3VudF0gPiBudW1EZWZhdWx0TGVnaWJsZU9w
dGlvbnM7Ci19Ci0KLSsgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdIYXNMZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zCi17Ci0gICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2Jq
ZWN0OkAibGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyJdOwotfQotCi0tIChXZWJBVk1lZGlh
U2VsZWN0aW9uT3B0aW9uICopY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24KLXsKLSAg
ICByZXR1cm4gX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOwotfQotCi0tICh2b2lk
KXNldEN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOihXZWJBVk1lZGlhU2VsZWN0aW9u
T3B0aW9uICopb3B0aW9uCi17Ci0gICAgaWYgKG9wdGlvbiA9PSBfY3VycmVudEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb24pCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBbX2N1cnJlbnRBdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9uIHJlbGVhc2VdOwotICAgIF9jdXJyZW50QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbiA9IFtvcHRpb24gcmV0YWluXTsKLSAgICAKLSAgICBpZiAoIXNlbGYuZGVs
ZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBOU0ludGVnZXIgaW5kZXggPSBOU05v
dEZvdW5kOwotICAgIAotICAgIGlmIChvcHRpb24gJiYgc2VsZi5hdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9ucykKLSAgICAgICAgaW5kZXggPSBbc2VsZi5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
cyBpbmRleE9mT2JqZWN0Om9wdGlvbl07Ci0gICAgCi0gICAgc2VsZi5kZWxlZ2F0ZS0+c2VsZWN0
QXVkaW9NZWRpYU9wdGlvbihpbmRleCAhPSBOU05vdEZvdW5kID8gaW5kZXggOiBVSU5UNjRfTUFY
KTsKLX0KLQotLSAoV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb24KLXsKLSAgICByZXR1cm4gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb247Ci19Ci0KLS0gKHZvaWQpc2V0Q3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbjooV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKW9wdGlvbgotewotICAgIGlmIChv
cHRpb24gPT0gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24pCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBbX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gcmVs
ZWFzZV07Ci0gICAgX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gPSBbb3B0aW9u
IHJldGFpbl07Ci0gICAgCi0gICAgaWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgTlNJbnRlZ2VyIGluZGV4ID0gTlNOb3RGb3VuZDsKLSAgICAKLSAgICBpZiAo
b3B0aW9uICYmIHNlbGYubGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucykKLSAgICAgICAgaW5k
ZXggPSBbc2VsZi5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zIGluZGV4T2ZPYmplY3Q6b3B0
aW9uXTsKLSAgICAKLSAgICBzZWxmLmRlbGVnYXRlLT5zZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24o
aW5kZXggIT0gTlNOb3RGb3VuZCA/IGluZGV4IDogVUlOVDY0X01BWCk7Ci19Ci0KLS0gKEJPT0wp
aXNQbGF5aW5nT25FeHRlcm5hbFNjcmVlbgotewotICAgIHJldHVybiBbc2VsZiBpc0V4dGVybmFs
UGxheWJhY2tBY3RpdmVdIHx8IFtzZWxmIGlzUGxheWluZ09uU2Vjb25kU2NyZWVuXTsKLX0KLQot
KyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ1BsYXlpbmdPbkV4dGVybmFsU2Ny
ZWVuCi17Ci0gICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0czpAImV4dGVybmFsUGxheWJh
Y2tBY3RpdmUiLCBAInBsYXlpbmdPblNlY29uZFNjcmVlbiIsIG5pbF07Ci19Ci0KLS0gKEJPT0wp
aXNQaWN0dXJlSW5QaWN0dXJlUG9zc2libGUKLXsKLSAgICByZXR1cm4gc2VsZi5mdWxsc2NyZWVu
SW50ZXJmYWNlLT5hbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2soKTsKLX0KLQotLSAoQk9P
TClpc1BpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZAotewotICAgIHJldHVybiBfcGljdHVyZUlu
UGljdHVyZUludGVycnVwdGVkOwotfQotCi0tICh2b2lkKXNldFBpY3R1cmVJblBpY3R1cmVJbnRl
cnJ1cHRlZDooQk9PTClwaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQKLXsKLSAgICBpZiAoX3Bp
Y3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZCAhPSBwaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQp
IHsKLSAgICAgICAgX3BpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZCA9IHBpY3R1cmVJblBpY3R1
cmVJbnRlcnJ1cHRlZDsKLSAgICAgICAgaWYgKHBpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZCkK
LSAgICAgICAgICAgIFtzZWxmIHNldFBsYXlpbmc6Tk9dOwotICAgIH0KLX0KLQotQGVuZAotCi1A
aW50ZXJmYWNlIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gOiBOU09iamVjdAotQHByb3BlcnR5
IChyZXRhaW4pIE5TU3RyaW5nICpsb2NhbGl6ZWREaXNwbGF5TmFtZTsKLUBlbmQKLQotQGltcGxl
bWVudGF0aW9uIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24KIEBlbmQKIAogQGludGVyZmFjZSBX
ZWJBVlBsYXllckxheWVyIDogQ0FMYXllcgogQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikg
TlNTdHJpbmcgKnZpZGVvR3Jhdml0eTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNS
ZWFkeUZvckRpc3BsYXkpIEJPT0wgcmVhZHlGb3JEaXNwbGF5OworQHByb3BlcnR5IChub25hdG9t
aWMsIGFzc2lnbikgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQqIGZ1bGxzY3JlZW5J
bnRlcmZhY2U7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBBVlBsYXllckNvbnRyb2xs
ZXIgKnBsYXllckNvbnRyb2xsZXI7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBDQUxh
eWVyICp2aWRlb1N1YmxheWVyOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxl
KSBOU0RpY3Rpb25hcnkgKnBpeGVsQnVmZmVyQXR0cmlidXRlczsKQEAgLTY2NSw2ICsyMTUsNyBA
QCBAcHJvcGVydHkgQ0dSZWN0IG1vZGVsVmlkZW9MYXllckZyYW1lOwogQGVuZAogCiBAaW1wbGVt
ZW50YXRpb24gV2ViQVZQbGF5ZXJMYXllciB7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0PiBfZnVsbHNjcmVlbkludGVyZmFjZTsKICAgICBSZXRhaW5QdHI8V2Vi
QVZQbGF5ZXJDb250cm9sbGVyPiBfYXZQbGF5ZXJDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxD
QUxheWVyPiBfdmlkZW9TdWJsYXllcjsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF92aWRlb0dy
YXZpdHk7CkBAIC02ODYsNiArMjM3LDE2IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBk
ZWFsbG9jXTsKIH0KIAorLSAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQqKWZ1bGxz
Y3JlZW5JbnRlcmZhY2UKK3sKKyAgICByZXR1cm4gX2Z1bGxzY3JlZW5JbnRlcmZhY2UuZ2V0KCk7
Cit9CisKKy0gKHZvaWQpc2V0RnVsbHNjcmVlbkludGVyZmFjZTooV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQqKWZ1bGxzY3JlZW5JbnRlcmZhY2UKK3sKKyAgICBfZnVsbHNjcmVlbklu
dGVyZmFjZSA9IGZ1bGxzY3JlZW5JbnRlcmZhY2U7Cit9CisKIC0gKEFWUGxheWVyQ29udHJvbGxl
ciAqKXBsYXllckNvbnRyb2xsZXIKIHsKICAgICByZXR1cm4gKEFWUGxheWVyQ29udHJvbGxlciAq
KV9hdlBsYXllckNvbnRyb2xsZXIuZ2V0KCk7CkBAIC03MzMsNyArMjk0LDcgQEAgLSAodm9pZCls
YXlvdXRTdWJsYXllcnMKICAgICB9IGVsc2UgaWYgKFtnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVz
aXplQXNwZWN0RmlsbCgpIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pIHsKICAg
ICAgICAgc291cmNlVmlkZW9GcmFtZSA9IHNtYWxsZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0Fyb3Vu
ZFJlY3QodmlkZW9Bc3BlY3RSYXRpbywgc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSk7CiAgICAg
ICAgIHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUgPSBDR1JlY3RNYWtlKDAsIDAsIHNvdXJjZVZp
ZGVvRnJhbWUud2lkdGgoKSwgc291cmNlVmlkZW9GcmFtZS5oZWlnaHQoKSk7Ci0gICAgICAgIFtf
YXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXS0+c2V0VmlkZW9MYXllckZyYW1lKHNlbGYubW9k
ZWxWaWRlb0xheWVyRnJhbWUpOworICAgICAgICBfZnVsbHNjcmVlbkludGVyZmFjZS0+bW9kZWwo
KS0+c2V0VmlkZW9MYXllckZyYW1lKHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUpOwogICAgICAg
ICB0YXJnZXRWaWRlb0ZyYW1lID0gc21hbGxlc3RSZWN0V2l0aEFzcGVjdFJhdGlvQXJvdW5kUmVj
dCh2aWRlb0FzcGVjdFJhdGlvLCBzZWxmLmJvdW5kcyk7CiAgICAgfSBlbHNlCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNzY1LDcgKzMyNiw3IEBAIC0gKHZvaWQpcmVzb2x2ZUJv
dW5kcwogICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CiAgICAgCiAg
ICAgc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSA9IFtzZWxmIGJvdW5kc107Ci0gICAgW19hdlBs
YXllckNvbnRyb2xsZXIgZGVsZWdhdGVdLT5zZXRWaWRlb0xheWVyRnJhbWUoc2VsZi5tb2RlbFZp
ZGVvTGF5ZXJGcmFtZSk7CisgICAgX2Z1bGxzY3JlZW5JbnRlcmZhY2UtPm1vZGVsKCktPnNldFZp
ZGVvTGF5ZXJGcmFtZShzZWxmLm1vZGVsVmlkZW9MYXllckZyYW1lKTsKICAgICBbKFVJVmlldyAq
KVtfdmlkZW9TdWJsYXllciBkZWxlZ2F0ZV0gc2V0VHJhbnNmb3JtOkNHQWZmaW5lVHJhbnNmb3Jt
SWRlbnRpdHldOwogICAgIAogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CkBAIC03ODgsNyAr
MzQ5LDcgQEAgLSAodm9pZClzZXRWaWRlb0dyYXZpdHk6KE5TU3RyaW5nICopdmlkZW9HcmF2aXR5
CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAKLSAgICBbX2F2
UGxheWVyQ29udHJvbGxlciBkZWxlZ2F0ZV0tPnNldFZpZGVvTGF5ZXJHcmF2aXR5KGdyYXZpdHkp
OworICAgIF9mdWxsc2NyZWVuSW50ZXJmYWNlLT5tb2RlbCgpLT5zZXRWaWRlb0xheWVyR3Jhdml0
eShncmF2aXR5KTsKIH0KIAogLSAoTlNTdHJpbmcgKil2aWRlb0dyYXZpdHkKQEAgLTk1NCwzNSAr
NTE1LDQwIEBAIHN0YXRpYyBDbGFzcyBnZXRXZWJBVlBsYXllckxheWVyVmlld0NsYXNzKCkKICAg
ICByZXR1cm4gdGhlQ2xhc3M7CiB9CiAKLVdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCi0gICAgOiBtX3BsYXllckNvbnRy
b2xsZXIoYWRvcHROUyhbW1dlYkFWUGxheWVyQ29udHJvbGxlciBhbGxvY10gaW5pdF0pKQorUmVm
PFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6Y3JlYXRlKFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0JiBwbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2UpCit7CisgICAgUmVmPFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0PiBpbnRlcmZhY2UgPSBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0KHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkpOworICAgIFtpbnRlcmZhY2Ut
Pm1fcGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOmlu
dGVyZmFjZS5wdHIoKV07CisgICAgcmV0dXJuIGludGVyZmFjZTsKK30KKworV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0JiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Up
CisgICAgOiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZShwbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UpCisgICAgLCBtX3BsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUoYWRvcHROUyhbW1dlYkFW
UGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pKQogICAgICwgbV93YXRj
aGRvZ1RpbWVyKCp0aGlzLCAmV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OndhdGNo
ZG9nVGltZXJGaXJlZCkKIHsKLSAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldEZ1bGxzY3JlZW5J
bnRlcmZhY2U6dGhpc107CiB9CiAKIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp+
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogewotICAgIFdlYkFWUGxheWVyQ29u
dHJvbGxlciogcGxheWVyQ29udHJvbGxlciA9IG1fcGxheWVyQ29udHJvbGxlci5nZXQoKTsKKyAg
ICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSB0aGlzLT5wbGF5ZXJD
b250cm9sbGVyKCk7CiAgICAgaWYgKHBsYXllckNvbnRyb2xsZXIgJiYgcGxheWVyQ29udHJvbGxl
ci5leHRlcm5hbFBsYXliYWNrQWN0aXZlKQogICAgICAgICBzZXRFeHRlcm5hbFBsYXliYWNrKGZh
bHNlLCBUYXJnZXRUeXBlTm9uZSwgIiIpOwogfQogCitXZWJBVlBsYXllckNvbnRyb2xsZXIgKldl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwbGF5ZXJDb250cm9sbGVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnBsYXllckNvbnRyb2xs
ZXIoKTsKK30KKwogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cmVzZXRN
ZWRpYVN0YXRlKCkKIHsKLSAgICBpZiAoIW1fcGxheWVyQ29udHJvbGxlcikgewotICAgICAgICBt
X3BsYXllckNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGFsbG9j
XSBpbml0XSk7Ci0gICAgICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV92aWRl
b0Z1bGxzY3JlZW5Nb2RlbF07Ci0gICAgICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0RnVsbHNj
cmVlbkludGVyZmFjZTp0aGlzXTsKLSAgICAgICAgCi0gICAgfSBlbHNlCi0gICAgICAgIFttX3Bs
YXllckNvbnRyb2xsZXIgcmVzZXRTdGF0ZV07CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UtPnJlc2V0TWVkaWFTdGF0ZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbChXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbCogbW9kZWwpCiB7CiAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCA9IG1vZGVsOwotICAg
IFttX3BsYXllckNvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbF07
CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFdlYlZpZGVv
RnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVy
KiBvYnNlcnZlcikKQEAgLTk5Miw0NyArNTU4LDIyIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKFdlYlZp
CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldER1cmF0aW9uKGRv
dWJsZSBkdXJhdGlvbikKIHsKLSAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRy
b2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7Ci0KLSAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzAxNyB1c2UgY29ycmVjdCB2YWx1
ZXMgaW5zdGVhZCBvZiBkdXJhdGlvbiBmb3IgYWxsIHRoZXNlCi0gICAgcGxheWVyQ29udHJvbGxl
ci5jb250ZW50RHVyYXRpb24gPSBkdXJhdGlvbjsKLSAgICBwbGF5ZXJDb250cm9sbGVyLm1heFRp
bWUgPSBkdXJhdGlvbjsKLSAgICBwbGF5ZXJDb250cm9sbGVyLmNvbnRlbnREdXJhdGlvbldpdGhp
bkVuZFRpbWVzID0gZHVyYXRpb247Ci0KLSAgICAvLyBGSVhNRTogd2UgdGFrZSB0aGlzIGFzIGFu
IGluZGljYXRpb24gdGhhdCBwbGF5YmFjayBpcyByZWFkeS4KLSAgICBwbGF5ZXJDb250cm9sbGVy
LmNhblBsYXkgPSBZRVM7Ci0gICAgcGxheWVyQ29udHJvbGxlci5jYW5QYXVzZSA9IFlFUzsKLSAg
ICBwbGF5ZXJDb250cm9sbGVyLmNhblRvZ2dsZVBsYXliYWNrID0gWUVTOwotICAgIHBsYXllckNv
bnRyb2xsZXIuaGFzRW5hYmxlZEF1ZGlvID0gWUVTOwotICAgIHBsYXllckNvbnRyb2xsZXIuY2Fu
U2VlayA9IFlFUzsKLSAgICBwbGF5ZXJDb250cm9sbGVyLm1pblRpbWUgPSAwOwotICAgIHBsYXll
ckNvbnRyb2xsZXIuc3RhdHVzID0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzUmVhZHlUb1BsYXk7
CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsK
IH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0Q3VycmVudFRp
bWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKIHsKLSAgICBOU1RpbWVJ
bnRlcnZhbCBhbmNob3JUaW1lU3RhbXAgPSAhW21fcGxheWVyQ29udHJvbGxlciByYXRlXSA/IE5B
TiA6IGFuY2hvclRpbWU7Ci0gICAgQVZWYWx1ZVRpbWluZyAqdGltaW5nID0gW2dldEFWVmFsdWVU
aW1pbmdDbGFzcygpIHZhbHVlVGltaW5nV2l0aEFuY2hvclZhbHVlOmN1cnJlbnRUaW1lCi0gICAg
ICAgIGFuY2hvclRpbWVTdGFtcDphbmNob3JUaW1lU3RhbXAgcmF0ZTowXTsKLSAgICAKLSAgICBb
bV9wbGF5ZXJDb250cm9sbGVyIHNldFRpbWluZzp0aW1pbmddOworICAgIG1fcGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlLT5zZXRDdXJyZW50VGltZShjdXJyZW50VGltZSwgYW5jaG9yVGltZSk7CiB9
CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEJ1ZmZlcmVkVGlt
ZShkb3VibGUgYnVmZmVyZWRUaW1lKQogewotICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciogcGxh
eWVyQ29udHJvbGxlciA9IG1fcGxheWVyQ29udHJvbGxlci5nZXQoKTsKLSAgICBkb3VibGUgZHVy
YXRpb24gPSBwbGF5ZXJDb250cm9sbGVyLmNvbnRlbnREdXJhdGlvbjsKLSAgICBkb3VibGUgbm9y
bWFsaXplZEJ1ZmZlcmVkVGltZTsKLSAgICBpZiAoIWR1cmF0aW9uKQotICAgICAgICBub3JtYWxp
emVkQnVmZmVyZWRUaW1lID0gMDsKLSAgICBlbHNlCi0gICAgICAgIG5vcm1hbGl6ZWRCdWZmZXJl
ZFRpbWUgPSBidWZmZXJlZFRpbWUgLyBkdXJhdGlvbjsKLSAgICBwbGF5ZXJDb250cm9sbGVyLmxv
YWRlZFRpbWVSYW5nZXMgPSBAW0AwLCBAKG5vcm1hbGl6ZWRCdWZmZXJlZFRpbWUpXTsKKyAgICBt
X3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0QnVmZmVyZWRUaW1lKGJ1ZmZlcmVkVGltZSk7
CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFJhdGUoYm9v
bCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKLSAgICBbbV9wbGF5ZXJDb250cm9s
bGVyIHNldFJhdGU6aXNQbGF5aW5nID8gcGxheWJhY2tSYXRlIDogMC5dOworICAgIG1fcGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRSYXRlKGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsKIH0K
IAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0VmlkZW9EaW1lbnNp
b25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCkBAIC0xMDQwLDgg
KzU4MSw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFZpZGVv
RGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3CiAgICAgV2ViQVZQbGF5ZXJMYXllciAq
cGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVttX3BsYXllckxheWVyVmlldyBwbGF5
ZXJMYXllcl07CiAKICAgICBbcGxheWVyTGF5ZXIgc2V0VmlkZW9EaW1lbnNpb25zOkNHU2l6ZU1h
a2Uod2lkdGgsIGhlaWdodCldOwotICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0SGFzRW5hYmxl
ZFZpZGVvOmhhc1ZpZGVvXTsKLSAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldENvbnRlbnREaW1l
bnNpb25zOkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCldOworICAgIFtwbGF5ZXJDb250cm9sbGVy
KCkgc2V0SGFzRW5hYmxlZFZpZGVvOmhhc1ZpZGVvXTsKKyAgICBbcGxheWVyQ29udHJvbGxlcigp
IHNldENvbnRlbnREaW1lbnNpb25zOkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCldOwogICAgIFtt
X3BsYXllckxheWVyVmlldyBzZXROZWVkc0xheW91dF07CiAKICAgICBXZWJBVlBpY3R1cmVJblBp
Y3R1cmVQbGF5ZXJMYXllclZpZXcgKnBpcFZpZXcgPSAoV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxh
eWVyTGF5ZXJWaWV3ICopW21fcGxheWVyTGF5ZXJWaWV3IHBpY3R1cmVJblBpY3R1cmVQbGF5ZXJM
YXllclZpZXddOwpAQCAtMTA1Miw3NSArNTkzLDQyIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3
CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFNlZWthYmxlUmFu
Z2VzKGNvbnN0IFRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCiB7Ci0gICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiBzZWVrYWJsZVJhbmdlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdF0pOwotICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZTsKLQotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB0aW1lUmFuZ2VzLmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAg
ZG91YmxlIHN0YXJ0ID0gdGltZVJhbmdlcy5zdGFydChpLCBleGNlcHRpb25Db2RlKTsKLSAgICAg
ICAgZG91YmxlIGVuZCA9IHRpbWVSYW5nZXMuZW5kKGksIGV4Y2VwdGlvbkNvZGUpOwotICAgICAg
ICAKLSAgICAgICAgQ01UaW1lUmFuZ2UgcmFuZ2UgPSBDTVRpbWVSYW5nZU1ha2UoQ01UaW1lTWFr
ZVdpdGhTZWNvbmRzKHN0YXJ0LCAxMDAwKSwgQ01UaW1lTWFrZVdpdGhTZWNvbmRzKGVuZC1zdGFy
dCwgMTAwMCkpOwotICAgICAgICBbc2Vla2FibGVSYW5nZXMgYWRkT2JqZWN0OltOU1ZhbHVlIHZh
bHVlV2l0aENNVGltZVJhbmdlOnJhbmdlXV07Ci0gICAgfQotICAgIAotICAgIFttX3BsYXllckNv
bnRyb2xsZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2VzOnNlZWthYmxlUmFuZ2VzLmdldCgpXTsKKyAg
ICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0U2Vla2FibGVSYW5nZXModGltZVJhbmdl
cyk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldENhblBs
YXlGYXN0UmV2ZXJzZShib29sIGNhblBsYXlGYXN0UmV2ZXJzZSkKIHsKLSAgICBbbV9wbGF5ZXJD
b250cm9sbGVyIHNldENhblNjYW5CYWNrd2FyZDpjYW5QbGF5RmFzdFJldmVyc2VdOwotfQotCi1z
dGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBtZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMpCi17Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiB3ZWJPcHRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aENhcGFjaXR5Om9wdGlvbnMuc2l6ZSgpXSk7Ci0gICAgZm9yIChhdXRvJiBuYW1lIDogb3B0aW9u
cykgewotICAgICAgICBSZXRhaW5QdHI8V2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbj4gd2ViT3B0
aW9uID0gYWRvcHROUyhbW1dlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gYWxsb2NdIGluaXRdKTsK
LSAgICAgICAgW3dlYk9wdGlvbiBzZXRMb2NhbGl6ZWREaXNwbGF5TmFtZTpuYW1lXTsKLSAgICAg
ICAgW3dlYk9wdGlvbnMgYWRkT2JqZWN0OndlYk9wdGlvbi5nZXQoKV07Ci0gICAgfQotICAgIHJl
dHVybiB3ZWJPcHRpb25zOworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDYW5Q
bGF5RmFzdFJldmVyc2UoY2FuUGxheUZhc3RSZXZlcnNlKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0g
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gbWVkaWFTZWxlY3Rpb25P
cHRpb25zKG9wdGlvbnMpOwotICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07Ci0gICAgaWYgKHNlbGVjdGVkSW5kZXgg
PCBbd2ViT3B0aW9ucyBjb3VudF0pCi0gICAgICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0Q3Vy
cmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2JqZWN0QXRJbmRleDpz
dGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOworICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBz
ZWxlY3RlZEluZGV4KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBtZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucyk7Ci0g
ICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOndl
Yk9wdGlvbnMuZ2V0KCldOwotICAgIGlmIChzZWxlY3RlZEluZGV4IDwgW3dlYk9wdGlvbnMgY291
bnRdKQotICAgICAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldEN1cnJlbnRMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2JqZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJ
bnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
LT5zZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgp
OwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRFeHRlcm5h
bFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFyZ2V0
VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCiB7Ci0gICAgQVZQbGF5ZXJDb250cm9s
bGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUgZXh0ZXJuYWxQbGF5YmFja1R5cGUgPSBBVlBsYXllckNv
bnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZU5vbmU7Ci0gICAgaWYgKHRhcmdldFR5cGUgPT0g
VGFyZ2V0VHlwZUFpclBsYXkpCi0gICAgICAgIGV4dGVybmFsUGxheWJhY2tUeXBlID0gQVZQbGF5
ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVBaXJQbGF5OwotICAgIGVsc2UgaWYgKHRh
cmdldFR5cGUgPT0gVGFyZ2V0VHlwZVRWT3V0KQotICAgICAgICBleHRlcm5hbFBsYXliYWNrVHlw
ZSA9IEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBlVFZPdXQ7CisgICAgbV9w
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEV4dGVybmFsUGxheWJhY2soZW5hYmxlZCwgdGFy
Z2V0VHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7Cit9CiAKLSAgICBXZWJBVlBsYXllckNvbnRy
b2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7Ci0gICAg
cGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrQWlyUGxheURldmljZUxvY2FsaXplZE5h
bWUgPSBsb2NhbGl6ZWREZXZpY2VOYW1lOwotICAgIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQ
bGF5YmFja1R5cGUgPSBleHRlcm5hbFBsYXliYWNrVHlwZTsKLSAgICBwbGF5ZXJDb250cm9sbGVy
LmV4dGVybmFsUGxheWJhY2tBY3RpdmUgPSBlbmFibGVkOwordm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6ZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWRDaGFuZ2VkKGJvb2wgZW5h
YmxlZCkKK3sKICAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0SGlkZGVuOmVuYWJsZWRdOwogfQog
CiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXaXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVkKQogewotICAgIFttX3BsYXllckNvbnRyb2xs
ZXIgc2V0QWxsb3dzRXh0ZXJuYWxQbGF5YmFjazohZGlzYWJsZWRdOworICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChkaXNhYmxl
ZCk7CiB9CiAKIGJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OndpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gW21fcGxheWVyQ29u
dHJvbGxlciBhbGxvd3NFeHRlcm5hbFBsYXliYWNrXTsKKyAgICByZXR1cm4gbV9wbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UtPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCk7CiB9CiAKIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFwcGxpY2F0aW9uRGlkQmVjb21l
QWN0aXZlKCkKQEAgLTExNzgsNyArNjg2LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6c2V0dXBGdWxsc2NyZWVuKFVJVmlldyYgdmlkZW9WaWV3LCBjb25zdAogCiAg
ICAgaWYgKCFtX3BsYXllckxheWVyVmlldykKICAgICAgICAgbV9wbGF5ZXJMYXllclZpZXcgPSBh
ZG9wdE5TKFtbZ2V0V2ViQVZQbGF5ZXJMYXllclZpZXdDbGFzcygpIGFsbG9jXSBpbml0XSk7Ci0g
ICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEhpZGRlbjpbbV9wbGF5ZXJDb250cm9sbGVyIGlzRXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZV1dOworICAgIFttX3BsYXllckxheWVyVmlldyBzZXRIaWRkZW46
W3BsYXllckNvbnRyb2xsZXIoKSBpc0V4dGVybmFsUGxheWJhY2tBY3RpdmVdXTsKICAgICBbbV9w
bGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBjbGVh
ckNvbG9yXV07CiAKICAgICBpZiAoIWlzSW5QaWN0dXJlSW5QaWN0dXJlTW9kZSkgewpAQCAtMTE4
OSwxNiArNjk3LDE5IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNl
dHVwRnVsbHNjcmVlbihVSVZpZXcmIHZpZGVvVmlldywgY29uc3QKICAgICBXZWJBVlBsYXllckxh
eWVyICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW21fcGxheWVyTGF5ZXJWaWV3
IHBsYXllckxheWVyXTsKIAogICAgIFtwbGF5ZXJMYXllciBzZXRNb2RlbFZpZGVvTGF5ZXJGcmFt
ZTpDR1JlY3RNYWtlKDAsIDAsIGluaXRpYWxSZWN0LndpZHRoKCksIGluaXRpYWxSZWN0LmhlaWdo
dCgpKV07Ci0gICAgW3BsYXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpbbV9wbGF5ZXJDb250
cm9sbGVyIGNvbnRlbnREaW1lbnNpb25zXV07CisgICAgW3BsYXllckxheWVyIHNldFZpZGVvRGlt
ZW5zaW9uczpbcGxheWVyQ29udHJvbGxlcigpIGNvbnRlbnREaW1lbnNpb25zXV07CisgICAgcGxh
eWVyTGF5ZXIuZnVsbHNjcmVlbkludGVyZmFjZSA9IHRoaXM7CiAKICAgICBpZiAoIW1fcGxheWVy
Vmlld0NvbnRyb2xsZXIpCiAgICAgICAgIG1fcGxheWVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5T
KFthbGxvY0FWUGxheWVyVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoUGxheWVyTGF5
ZXJWaWV3Om1fcGxheWVyTGF5ZXJWaWV3LmdldCgpXSk7CiAKICAgICBbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6Tk9dOwotICAgIFttX3BsYXllclZpZXdD
b250cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKW1fcGxh
eWVyQ29udHJvbGxlci5nZXQoKV07Ci0gICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0RGVs
ZWdhdGU6bV9wbGF5ZXJDb250cm9sbGVyLmdldCgpXTsKKyAgICBbbV9wbGF5ZXJWaWV3Q29udHJv
bGxlciBzZXRQbGF5ZXJDb250cm9sbGVyOihBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250
cm9sbGVyKCldOworICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm1fcGxh
eWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKV07CiAgICAgW21fcGxheWVyVmlld0NvbnRy
b2xsZXIgc2V0QWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrOm1fYWxsb3dzUGljdHVyZUlu
UGljdHVyZVBsYXliYWNrXTsKIAorICAgIFtwbGF5ZXJDb250cm9sbGVyKCkgc2V0UGljdHVyZUlu
UGljdHVyZVBvc3NpYmxlOm1fYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrXTsKKwogICAg
IGlmIChtX3ZpZXdDb250cm9sbGVyKSB7CiAgICAgICAgIFttX3ZpZXdDb250cm9sbGVyIGFkZENo
aWxkVmlld0NvbnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKV07CiAgICAgICAg
IFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBhZGRTdWJ2aWV3OlttX3BsYXllclZpZXdDb250cm9s
bGVyIHZpZXddXTsKQEAgLTEzMzksOCArODUwLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6Y2xlYW51cEZ1bGxzY3JlZW4oKQogICAgICAgICAgICAgW1tnZXRVSUFw
cGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRBcHBsaWNhdGlvbl0gX3NldFN0YXR1c0Jhck9yaWVudGF0
aW9uOlttX3BhcmVudFdpbmRvdyBpbnRlcmZhY2VPcmllbnRhdGlvbl1dOwogICAgIH0KICAgICAK
LSAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW21fcGxheWVy
Q29udHJvbGxlciBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOm5pbF07CisgICAgW3BsYXllckNvbnRy
b2xsZXIoKSBzZXREZWxlZ2F0ZTpuaWxdOwogICAgIAogICAgIFttX3BsYXllclZpZXdDb250cm9s
bGVyIHNldERlbGVnYXRlOm5pbF07CiAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0UGxh
eWVyQ29udHJvbGxlcjpuaWxdOwpAQCAtMTM1OSw4ICs4NjksNiBAQCB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbigpCiAKICAgICBtX3BsYXll
ckxheWVyVmlldyA9IG5pbDsKICAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0gbmlsOwotICAg
IG1fcGxheWVyQ29udHJvbGxlciA9IG5pbDsKLSAgICBtX3ZpZXdDb250cm9sbGVyID0gbmlsOwog
ICAgIG1fd2luZG93ID0gbmlsOwogICAgIG1fcGFyZW50VmlldyA9IG5pbDsKICAgICBtX3BhcmVu
dFdpbmRvdyA9IG5pbDsKQEAgLTE0MTIsNyArOTIwLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGJvb2wgdmlzaWJsZSwg
Y28KIAogYm9vbCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6bWF5QXV0b21hdGlj
YWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUoKSBjb25zdAogewotICAgIHJldHVybiBbbV9w
bGF5ZXJDb250cm9sbGVyIGlzUGxheWluZ10gJiYgbV9tb2RlID09IEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkICYmIHN1cHBvcnRzUGljdHVyZUluUGlj
dHVyZSgpOworICAgIHJldHVybiBbcGxheWVyQ29udHJvbGxlcigpIGlzUGxheWluZ10gJiYgbV9t
b2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJk
ICYmIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoc3RkOjpmdW5j
dGlvbjx2b2lkKGJvb2wpPiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNTMxYWMxYjgwZjIyNmFkYzkyYzUxM2Q5YWM1ODlmYWY3YWM1MDA4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZU1hYy5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZU1hY19oCisjZGVmaW5lIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZU1hY19oCisKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgorI2luY2x1
ZGUgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCitPQkpDX0NMQVNTIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWw7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZU1hYworICAgIDogcHVibGljIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZQorICAgICwg
cHVibGljIFJlZkNvdW50ZWQ8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM+IGNyZWF0
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VNYWMoKSk7CisgICAgfQorICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYygpOworICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKiB3ZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7IH0K
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsKik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0TWVk
aWFTdGF0ZSgpIG92ZXJyaWRlIHsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RHVyYXRp
b24oZG91YmxlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnJlbnRU
aW1lKGRvdWJsZSAvKmN1cnJlbnRUaW1lKi8sIGRvdWJsZSAvKmFuY2hvclRpbWUqLykgb3ZlcnJp
ZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlKSBvdmVy
cmlkZSB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJhdGUoYm9vbCAvKmlzUGxheWlu
ZyovLCBmbG9hdCAvKnBsYXliYWNrUmF0ZSovKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5nZXMmKSBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZShib29sKSBvdmVycmlk
ZSB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKm9wdGlvbnMqLywgdWludDY0X3QgLypzZWxlY3Rl
ZEluZGV4Ki8pIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypvcHRpb25zKi8sIHVp
bnQ2NF90IC8qc2VsZWN0ZWRJbmRleCovKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUs
IFN0cmluZykgb3ZlcnJpZGUgeyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXaXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSBvdmVycmlkZSB7IH0KKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGludmFsaWRhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuc3VyZUNv
bnRyb2xzTWFuYWdlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyICpwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpOworCitwcml2YXRlOgorICAgIFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsKiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsIHsgbnVsbHB0ciB9Owor
ICAgIFJldGFpblB0cjxXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcj4gbV9wbGF5YmFja0NvbnRy
b2xzTWFuYWdlcjsKK307CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmViZWRlMDNkYTY3MjI2NTkwY2VlY2Q1N2FlYjAwYWQ1YjYzNmM2MzEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tCkBAIC0wLDAgKzEsMzMyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYy5oIgorCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpCisKKyNpbXBvcnQgIkFWS2l0U1BJLmgiCisjaW1wb3J0ICJJbnRSZWN0LmgiCisjaW1w
b3J0ICJNZWRpYVRpbWVBVkZvdW5kYXRpb24uaCIKKyNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKKyNp
bXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmgiCisjaW1wb3J0IDxBVkZvdW5kYXRpb24v
QVZGb3VuZGF0aW9uLmg+CisKKyNpbXBvcnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCisKK1NPRlRf
TElOS19GUkFNRVdPUksoQVZLaXQpCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWVmFsdWVUaW1p
bmcpCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW50ZXJmYWNlIFdlYkFWTWVkaWFT
ZWxlY3Rpb25PcHRpb25NYWMgOiBOU09iamVjdCB7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBf
bG9jYWxpemVkRGlzcGxheU5hbWU7Cit9CitAcHJvcGVydHkgKHJldGFpbikgTlNTdHJpbmcgKmxv
Y2FsaXplZERpc3BsYXlOYW1lOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQVZNZWRpYVNl
bGVjdGlvbk9wdGlvbk1hYworCistIChOU1N0cmluZyAqKWxvY2FsaXplZERpc3BsYXlOYW1lCit7
CisgICAgcmV0dXJuIF9sb2NhbGl6ZWREaXNwbGF5TmFtZS5nZXQoKTsKK30KKworLSAodm9pZClz
ZXRMb2NhbGl6ZWREaXNwbGF5TmFtZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgX2xvY2FsaXpl
ZERpc3BsYXlOYW1lID0gbmFtZTsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIFdlYlBsYXliYWNr
Q29udHJvbHNNYW5hZ2VyIDogTlNPYmplY3QgeworICAgIE5TVGltZUludGVydmFsIF9jb250ZW50
RHVyYXRpb247CisgICAgUmV0YWluUHRyPEFWVmFsdWVUaW1pbmc+IF90aW1pbmc7CisgICAgTlNU
aW1lSW50ZXJ2YWwgX3NlZWtUb1RpbWU7CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9zZWVrYWJs
ZVRpbWVSYW5nZXM7CisgICAgQk9PTCBfaGFzRW5hYmxlZEF1ZGlvOworICAgIEJPT0wgX2hhc0Vu
YWJsZWRWaWRlbzsKKyAgICBSZXRhaW5QdHI8TlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9u
ICo+PiBfYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM7CisgICAgUmV0YWluUHRyPEFWTWVkaWFT
ZWxlY3Rpb25PcHRpb24+IF9jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjsKKyAgICBS
ZXRhaW5QdHI8TlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICo+PiBfbGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9uczsKKyAgICBSZXRhaW5QdHI8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbj4g
X2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb247CisKKyAgICBmbG9hdCBfcmF0ZTsK
KworQHByaXZhdGUKKyAgICBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMq
IF93ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM7Cit9CisKK0Bwcm9wZXJ0eSAocmVhZHdy
aXRlKSBOU1RpbWVJbnRlcnZhbCBjb250ZW50RHVyYXRpb247CitAcHJvcGVydHkgKG5vbmF0b21p
YywgcmV0YWluLCByZWFkd3JpdGUpIEFWVmFsdWVUaW1pbmcgKnRpbWluZzsKK0Bwcm9wZXJ0eSBO
U1RpbWVJbnRlcnZhbCBzZWVrVG9UaW1lOworQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbiwg
cmVhZHdyaXRlKSBOU0FycmF5ICpzZWVrYWJsZVRpbWVSYW5nZXM7CitAcHJvcGVydHkgKHJlYWR3
cml0ZSkgQk9PTCBoYXNFbmFibGVkQXVkaW87CitAcHJvcGVydHkgKHJlYWR3cml0ZSkgQk9PTCBo
YXNFbmFibGVkVmlkZW87CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCByZWFkd3JpdGUp
IE5TQXJyYXk8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqYXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnM7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCByZWFkd3JpdGUpIEFWTWVkaWFT
ZWxlY3Rpb25PcHRpb24gKmN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOworQHByb3Bl
cnR5IChub25hdG9taWMsIHJldGFpbiwgcmVhZHdyaXRlKSBOU0FycmF5PEFWTWVkaWFTZWxlY3Rp
b25PcHRpb24gKj4gKmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmV0YWluLCByZWFkd3JpdGUpIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKmN1cnJl
bnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb247CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBm
bG9hdCByYXRlOworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VNYWM6KFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyopd2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOworCitAZW5kCisKKyNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQorI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYlBsYXliYWNrQ29udHJvbHND
b250cm9sbGVyQWRkaXRpb25zLm1tPgorI2VuZGlmCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlcgorCitAc3ludGhlc2l6ZSBjb250ZW50RHVyYXRpb249X2NvbnRl
bnREdXJhdGlvbjsKK0BzeW50aGVzaXplIHNlZWtUb1RpbWU9X3NlZWtUb1RpbWU7CitAc3ludGhl
c2l6ZSBoYXNFbmFibGVkQXVkaW89X2hhc0VuYWJsZWRBdWRpbzsKK0BzeW50aGVzaXplIGhhc0Vu
YWJsZWRWaWRlbz1faGFzRW5hYmxlZFZpZGVvOworQHN5bnRoZXNpemUgcmF0ZT1fcmF0ZTsKKwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOihX
ZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMqKXdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYworeworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgX3dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyA9IHdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzsKKworICAgIHJldHVybiBzZWxmOworfQorCist
IChBVlZhbHVlVGltaW5nICopdGltaW5nCit7CisgICAgcmV0dXJuIF90aW1pbmcuZ2V0KCk7Cit9
CisKKy0gKHZvaWQpc2V0VGltaW5nOihBVlZhbHVlVGltaW5nICopdGltaW5nCit7CisgICAgX3Rp
bWluZyA9IHRpbWluZzsKK30KKworLSAoTlNBcnJheSAqKXNlZWthYmxlVGltZVJhbmdlcworewor
ICAgIHJldHVybiBfc2Vla2FibGVUaW1lUmFuZ2VzLmdldCgpOworfQorCistICh2b2lkKXNldFNl
ZWthYmxlVGltZVJhbmdlczooTlNBcnJheSAqKXRpbWVSYW5nZXMKK3sKKyAgICBfc2Vla2FibGVU
aW1lUmFuZ2VzID0gdGltZVJhbmdlczsKK30KKworLSAoQk9PTClpc1NlZWtpbmcKK3sKKyAgICBy
ZXR1cm4gTk87Cit9CisKKy0gKHZvaWQpc2Vla1RvVGltZTooTlNUaW1lSW50ZXJ2YWwpdGltZSB0
b2xlcmFuY2VCZWZvcmU6KE5TVGltZUludGVydmFsKXRvbGVyYW5jZUJlZm9yZSB0b2xlcmFuY2VB
ZnRlcjooTlNUaW1lSW50ZXJ2YWwpdG9sZXJhbmNlQWZ0ZXIKK3sKKyAgICBVTlVTRURfUEFSQU0o
dG9sZXJhbmNlQmVmb3JlKTsKKyAgICBVTlVTRURfUEFSQU0odG9sZXJhbmNlQWZ0ZXIpOworICAg
IF93ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMtPndlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
KCktPnNlZWtUb1RpbWUodGltZSk7Cit9CisKKy0gKE5TQXJyYXk8QVZNZWRpYVNlbGVjdGlvbk9w
dGlvbiAqPiAqKWF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zCit7CisgICAgcmV0dXJuIF9hdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9ucy5nZXQoKTsKK30KKworLSAodm9pZClzZXRBdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9uczooTlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICo+ICopYXVk
aW9PcHRpb25zCit7CisgICAgX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zID0gYXVkaW9PcHRp
b25zOworfQorCistIChBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVudEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb24KK3sKKyAgICByZXR1cm4gX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9uLmdldCgpOworfQorCistICh2b2lkKXNldEN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9uOihBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICopYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bgoreworICAgIGlmIChhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uID09IF9jdXJyZW50QXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgX2N1cnJlbnRBdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9uID0gYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjsKKworICAg
IE5TSW50ZWdlciBpbmRleCA9IE5TTm90Rm91bmQ7CisKKyAgICBpZiAoYXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbiAmJiBzZWxmLmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKQorICAgICAgICBp
bmRleCA9IFtzZWxmLmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zIGluZGV4T2ZPYmplY3Q6YXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbl07CisKKyAgICBfd2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLT53ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9u
KGluZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOworfQorCistIChOU0Fy
cmF5PEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zCit7CisgICAgcmV0dXJuIF9sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zLmdldCgpOwor
fQorCistICh2b2lkKXNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KE5TQXJyYXk8QVZN
ZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqKWxlZ2libGVPcHRpb25zCit7CisgICAgX2xlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBsZWdpYmxlT3B0aW9uczsKK30KKworLSAoQVZNZWRpYVNl
bGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24KK3sKKyAg
ICByZXR1cm4gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24uZ2V0KCk7Cit9CisK
Ky0gKHZvaWQpc2V0Q3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjooQVZNZWRpYVNl
bGVjdGlvbk9wdGlvbiAqKWxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbgoreworICAgIGlmIChs
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gPT0gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIF9jdXJyZW50TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9uID0gbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOworCisgICAgTlNJbnRl
Z2VyIGluZGV4ID0gTlNOb3RGb3VuZDsKKworICAgIGlmIChsZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb24gJiYgc2VsZi5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKQorICAgICAgICBpbmRl
eCA9IFtzZWxmLmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgaW5kZXhPZk9iamVjdDpsZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25dOworCisgICAgX3dlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZU1hYy0+d2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoKS0+c2VsZWN0TGVnaWJsZU1lZGlhT3B0
aW9uKGluZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOworfQorCistICh2
b2lkKWNhbmNlbFRodW1ibmFpbEFuZEF1ZGlvQW1wbGl0dWRlU2FtcGxlR2VuZXJhdGlvbgorewor
fQorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9u
cy9XZWJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxlclRodW1ibmFpbEFkZGl0aW9ucy5tbT4KKyNl
bmRpZgorCitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjOjp+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKCkKK3sKK30KKwor
dm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKiBtb2RlbCkKK3sKKyAgICBtX3BsYXliYWNr
U2Vzc2lvbk1vZGVsID0gbW9kZWw7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCit7CisgICAgV2ViUGxheWJhY2tD
b250cm9sc01hbmFnZXIqIGNvbnRyb2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2Vy
KCk7CisKKyAgICBjb250cm9sc01hbmFnZXIuY29udGVudER1cmF0aW9uID0gZHVyYXRpb247CisK
KyAgICAvLyBGSVhNRTogV2UgdGFrZSB0aGlzIGFzIGFuIGluZGljYXRpb24gdGhhdCBwbGF5YmFj
ayBpcyByZWFkeSwgYnV0IHRoYXQgaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUuCisgICAgY29udHJv
bHNNYW5hZ2VyLmhhc0VuYWJsZWRBdWRpbyA9IFlFUzsKKyAgICBjb250cm9sc01hbmFnZXIuaGFz
RW5hYmxlZFZpZGVvID0gWUVTOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYzo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGlt
ZSkKK3sKKyAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5hZ2VyID0g
cGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKKworICAgIE5TVGltZUludGVydmFsIGFuY2hvclRp
bWVTdGFtcCA9ICFbY29udHJvbHNNYW5hZ2VyIHJhdGVdID8gTkFOIDogYW5jaG9yVGltZTsKKyAg
ICBBVlZhbHVlVGltaW5nICp0aW1pbmcgPSBbZ2V0QVZWYWx1ZVRpbWluZ0NsYXNzKCkgdmFsdWVU
aW1pbmdXaXRoQW5jaG9yVmFsdWU6Y3VycmVudFRpbWUKKyAgICAgICAgYW5jaG9yVGltZVN0YW1w
OmFuY2hvclRpbWVTdGFtcCByYXRlOjBdOworCisgICAgW2NvbnRyb2xzTWFuYWdlciBzZXRUaW1p
bmc6dGltaW5nXTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNl
dFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKK3sKKyAgICBXZWJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5hZ2VyID0gcGxheUJhY2tDb250cm9sc01h
bmFnZXIoKTsKKworICAgIFtjb250cm9sc01hbmFnZXIgc2V0UmF0ZTppc1BsYXlpbmcgPyBwbGF5
YmFja1JhdGUgOiAwLl07Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
OjpzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQoreworICAg
IFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0Nv
bnRyb2xzTWFuYWdlcigpOworCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBzZWVrYWJs
ZVJhbmdlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRpbWVSYW5nZXMubGVuZ3RoKCk7IGkrKykgeworICAg
ICAgICBjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmIHJhbmdlcyA9IHRpbWVSYW5nZXMucmFuZ2Vz
KCk7CisgICAgICAgIENNVGltZVJhbmdlIHJhbmdlID0gQ01UaW1lUmFuZ2VNYWtlKHRvQ01UaW1l
KHJhbmdlcy5zdGFydChpKSksIHRvQ01UaW1lKHJhbmdlcy5lbmQoaSkpKTsKKyAgICAgICAgW3Nl
ZWthYmxlUmFuZ2VzIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWVSYW5nZTpyYW5n
ZV1dOworICAgIH0KKworICAgIFtjb250cm9sc01hbmFnZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2Vz
OnNlZWthYmxlUmFuZ2VzLmdldCgpXTsKK30KKworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4gbWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25z
KQoreworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUoKV0p
OworICAgIGZvciAoYXV0byYgbmFtZSA6IG9wdGlvbnMpIHsKKyAgICAgICAgUmV0YWluUHRyPFdl
YkFWTWVkaWFTZWxlY3Rpb25PcHRpb25NYWM+IHdlYk9wdGlvbiA9IGFkb3B0TlMoW1tXZWJBVk1l
ZGlhU2VsZWN0aW9uT3B0aW9uTWFjIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFt3ZWJPcHRpb24g
c2V0TG9jYWxpemVkRGlzcGxheU5hbWU6bmFtZV07CisgICAgICAgIFt3ZWJPcHRpb25zIGFkZE9i
amVjdDp3ZWJPcHRpb24uZ2V0KCldOworICAgIH0KKyAgICByZXR1cm4gd2ViT3B0aW9uczsKK30K
Kwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldEF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90
IHNlbGVjdGVkSW5kZXgpCit7CisgICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIqIGNvbnRy
b2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7CisKKyAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBtZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9u
cyk7CisgICAgW2NvbnRyb2xzTWFuYWdlciBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczp3
ZWJPcHRpb25zLmdldCgpXTsKKyAgICBpZiAoc2VsZWN0ZWRJbmRleCA8IFt3ZWJPcHRpb25zIGNv
dW50XSkKKyAgICAgICAgW2NvbnRyb2xzTWFuYWdlciBzZXRDdXJyZW50QXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbjpbd2ViT3B0aW9ucyBvYmplY3RBdEluZGV4OnN0YXRpY19jYXN0PE5TVUludGVn
ZXI+KHNlbGVjdGVkSW5kZXgpXV07Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjOjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6
OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit7CisgICAgV2ViUGxh
eWJhY2tDb250cm9sc01hbmFnZXIqIGNvbnRyb2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNN
YW5hZ2VyKCk7CisKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBt
ZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucyk7CisgICAgW2NvbnRyb2xzTWFuYWdlciBzZXRM
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOndlYk9wdGlvbnMuZ2V0KCldOworICAgIGlmIChz
ZWxlY3RlZEluZGV4IDwgW3dlYk9wdGlvbnMgY291bnRdKQorICAgICAgICBbY29udHJvbHNNYW5h
Z2VyIHNldEN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2Jq
ZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOworfQor
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6aW52YWxpZGF0ZSgpCit7Cit9
CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjplbnN1cmVDb250cm9sc01h
bmFnZXIoKQoreworICAgIHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7Cit9CisKK1dlYlBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyICpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnBsYXlC
YWNrQ29udHJvbHNNYW5hZ2VyKCkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTIwMAorICAgIGlmICghbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlcikKKyAgICAg
ICAgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlciA9IGFkb3B0TlMoW1tXZWJQbGF5YmFja0NvbnRy
b2xzTWFuYWdlciBhbGxvY10gaW5pdFdpdGhXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6
dGhpc10pOworICAgIHJldHVybiBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmdldCgpOworI2Vs
c2UKKyAgICByZXR1cm4gbmlsOworI2VuZGlmCit9CisgICAgCit9CisKKyNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMuaAppbmRleCAyYjJhN2ZjN2NkNWI1NTlmZTM0MzlmNGM0ZGJmM2ZiMjU3NTNmNWQ0
Li5mYjhjYzhmNzVkY2I5Y2NmMjBjMGJkYjQzOTc2NmRiZjI3ZWQ0NTAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYy5oCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIE9CSkNfQ0xBU1MgTlNXaW5kb3c7Ci1PQkpDX0NMQVNTIFdlYlBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyOwogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIE9CSkNfQ0xBU1Mg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2JqQzsKQEAgLTQzLDYgKzQyLDcgQEAgT0JK
Q19DTEFTUyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWNPYmpDOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjOwogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI7CiBjbGFzcyBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDsKIApAQCAtNTEsOSArNTEsOSBAQCBjbGFzcyBXRUJDT1JF
X0VYUE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMKICAgICAsIHB1YmxpYyBSZWZD
b3VudGVkPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYz4gewogCiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM+IGNyZWF0ZSgpCisgICAg
c3RhdGljIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM+IGNyZWF0ZShXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMmIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYygpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjKHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkpOwogICAgIH0KICAgICB2aXJ0
dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMoKTsKICAgICBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbCogd2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3Zp
ZGVvRnVsbHNjcmVlbk1vZGVsOyB9CkBAIC05MywxMiArOTMsMTMgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgbWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1
cmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmUoKSB7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyICpwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpOwogI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCiAgICAgV0VCQ09SRV9FWFBPUlQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
T2JqQyAqdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlT2JqQygpOwogI2VuZGlmCiAKIHByaXZhdGU6
CisgICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZU1hYyYpOworICAgIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM+IG1f
cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOwogICAgIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBt
X3ZpZGVvRnVsbHNjcmVlbk1vZGVsIHsgbnVsbHB0ciB9OwogICAgIFdlYlZpZGVvRnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyKiBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciB7IG51bGxwdHIgfTsK
ICAgICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbV9tb2RlIHsg
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSB9OwpAQCAtMTA2
LDcgKzEwNyw2IEBAIHByaXZhdGU6CiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICBS
ZXRhaW5QdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2JqQz4gbV93ZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VPYmpDOwogI2VuZGlmCi0gICAgUmV0YWluUHRyPFdlYlBsYXliYWNr
Q29udHJvbHNNYW5hZ2VyPiBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWMubW0KaW5kZXggYjg5MGFiMzhmMDUwNzNjNWZiMmVmNWQ2YzljMTdk
NDk0YmI4YWZmYS4uZmU3ODkxNjI3MzcxMjk0NDliNTU5MTViYWNkZGE0YWY2OWMzYWI5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCkBAIC0yOSwxNSArMjksMTUgQEAKICNpZiBQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKIAogI2ltcG9ydCAiQVZL
aXRTUEkuaCIKLSNpbXBvcnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCiAjaW1wb3J0ICJJbnRSZWN0
LmgiCiAjaW1wb3J0ICJNZWRpYVRpbWVBVkZvdW5kYXRpb24uaCIKICNpbXBvcnQgIlRpbWVSYW5n
ZXMuaCIKKyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oIgogI2ltcG9y
dCAiV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCIKICNpbXBvcnQgIldlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZUaW1lLmg+CiAKLSNp
bXBvcnQgIlNvZnRMaW5raW5nLmgiCisjaW1wb3J0ICJDb3JlTWVkaWFTb2Z0TGluay5oIgogCiBT
T0ZUX0xJTktfRlJBTUVXT1JLKEFWS2l0KQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlZhbHVl
VGltaW5nKQpAQCAtNDYsMTg5ICs0NiwxMyBAQCBTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWVmFs
dWVUaW1pbmcpCiAjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hY0FkZGl0aW9ucy5tbT4KICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLQotQGludGVyZmFjZSBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uTWFjIDogTlNPYmplY3Qg
ewotICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2xvY2FsaXplZERpc3BsYXlOYW1lOwotfQotQHBy
b3BlcnR5IChyZXRhaW4pIE5TU3RyaW5nICpsb2NhbGl6ZWREaXNwbGF5TmFtZTsKLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb25NYWMKLQotLSAoTlNTdHJp
bmcgKilsb2NhbGl6ZWREaXNwbGF5TmFtZQotewotICAgIHJldHVybiBfbG9jYWxpemVkRGlzcGxh
eU5hbWUuZ2V0KCk7Ci19Ci0KLS0gKHZvaWQpc2V0TG9jYWxpemVkRGlzcGxheU5hbWU6KE5TU3Ry
aW5nICopbmFtZQotewotICAgIF9sb2NhbGl6ZWREaXNwbGF5TmFtZSA9IG5hbWU7Ci19Ci0KLUBl
bmQKLQotQGludGVyZmFjZSBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciA6IE5TT2JqZWN0IHsK
LSAgICBOU1RpbWVJbnRlcnZhbCBfY29udGVudER1cmF0aW9uOwotICAgIFJldGFpblB0cjxBVlZh
bHVlVGltaW5nPiBfdGltaW5nOwotICAgIE5TVGltZUludGVydmFsIF9zZWVrVG9UaW1lOwotICAg
IFJldGFpblB0cjxOU0FycmF5PiBfc2Vla2FibGVUaW1lUmFuZ2VzOwotICAgIEJPT0wgX2hhc0Vu
YWJsZWRBdWRpbzsKLSAgICBCT09MIF9oYXNFbmFibGVkVmlkZW87Ci0gICAgUmV0YWluUHRyPE5T
QXJyYXk8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPj4gX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zOwotICAgIFJldGFpblB0cjxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uPiBfY3VycmVudEF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb247Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk8QVZNZWRpYVNlbGVj
dGlvbk9wdGlvbiAqPj4gX2xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7Ci0gICAgUmV0YWlu
UHRyPEFWTWVkaWFTZWxlY3Rpb25PcHRpb24+IF9jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9uOwotICAgIAotICAgIGZsb2F0IF9yYXRlOwotCi1AcHJpdmF0ZQotICAgIFdlYkNvcmU6
OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyogX3dlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYzsKLX0KLQotQHByb3BlcnR5IChyZWFkd3JpdGUpIE5TVGltZUludGVydmFsIGNvbnRl
bnREdXJhdGlvbjsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4sIHJlYWR3cml0ZSkgQVZW
YWx1ZVRpbWluZyAqdGltaW5nOwotQHByb3BlcnR5IE5TVGltZUludGVydmFsIHNlZWtUb1RpbWU7
Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCByZWFkd3JpdGUpIE5TQXJyYXkgKnNlZWth
YmxlVGltZVJhbmdlczsKLUBwcm9wZXJ0eSAocmVhZHdyaXRlKSBCT09MIGhhc0VuYWJsZWRBdWRp
bzsKLUBwcm9wZXJ0eSAocmVhZHdyaXRlKSBCT09MIGhhc0VuYWJsZWRWaWRlbzsKLUBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZXRhaW4sIHJlYWR3cml0ZSkgTlNBcnJheTxBVk1lZGlhU2VsZWN0aW9u
T3B0aW9uICo+ICphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczsKLUBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZXRhaW4sIHJlYWR3cml0ZSkgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqY3VycmVudEF1
ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb247Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCBy
ZWFkd3JpdGUpIE5TQXJyYXk8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqbGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9uczsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4sIHJlYWR3cml0
ZSkgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbjsKLQotQHByb3BlcnR5IChub25hdG9taWMpIGZsb2F0IHJhdGU7Ci0KLS0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzooV2ViQ29yZTo6V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKil3ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM7Ci0KLUBlbmQKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJL
aXRBZGRpdGlvbnMvV2ViUGxheWJhY2tDb250cm9sc0NvbnRyb2xsZXJBZGRpdGlvbnMubW0+Ci0j
ZW5kaWYKLQotQGltcGxlbWVudGF0aW9uIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyCi0KLUBz
eW50aGVzaXplIGNvbnRlbnREdXJhdGlvbj1fY29udGVudER1cmF0aW9uOwotQHN5bnRoZXNpemUg
c2Vla1RvVGltZT1fc2Vla1RvVGltZTsKLUBzeW50aGVzaXplIGhhc0VuYWJsZWRBdWRpbz1faGFz
RW5hYmxlZEF1ZGlvOwotQHN5bnRoZXNpemUgaGFzRW5hYmxlZFZpZGVvPV9oYXNFbmFibGVkVmlk
ZW87Ci1Ac3ludGhlc2l6ZSByYXRlPV9yYXRlOwotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6KFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYyopd2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjCi17Ci0gICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfd2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjID0gd2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKEFWVmFsdWVUaW1pbmcgKil0aW1pbmcK
LXsKLSAgICByZXR1cm4gX3RpbWluZy5nZXQoKTsKLX0KLQotLSAodm9pZClzZXRUaW1pbmc6KEFW
VmFsdWVUaW1pbmcgKil0aW1pbmcKLXsKLSAgICBfdGltaW5nID0gdGltaW5nOwotfQotCi0tIChO
U0FycmF5ICopc2Vla2FibGVUaW1lUmFuZ2VzCi17Ci0gICAgcmV0dXJuIF9zZWVrYWJsZVRpbWVS
YW5nZXMuZ2V0KCk7Ci19Ci0KLS0gKHZvaWQpc2V0U2Vla2FibGVUaW1lUmFuZ2VzOihOU0FycmF5
ICopdGltZVJhbmdlcwotewotICAgIF9zZWVrYWJsZVRpbWVSYW5nZXMgPSB0aW1lUmFuZ2VzOwot
fQotCi0tIChCT09MKWlzU2Vla2luZwotewotICAgIHJldHVybiBOTzsKLX0KLQotLSAodm9pZClz
ZWVrVG9UaW1lOihOU1RpbWVJbnRlcnZhbCl0aW1lIHRvbGVyYW5jZUJlZm9yZTooTlNUaW1lSW50
ZXJ2YWwpdG9sZXJhbmNlQmVmb3JlIHRvbGVyYW5jZUFmdGVyOihOU1RpbWVJbnRlcnZhbCl0b2xl
cmFuY2VBZnRlcgotewotICAgIFVOVVNFRF9QQVJBTSh0b2xlcmFuY2VCZWZvcmUpOwotICAgIFVO
VVNFRF9QQVJBTSh0b2xlcmFuY2VBZnRlcik7Ci0gICAgX3dlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYy0+d2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+c2Vla1RvVGltZSh0aW1lKTsKLX0K
LQotLSAoTlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICo+ICopYXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbnMKLXsKLSAgICByZXR1cm4gX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zLmdl
dCgpOwotfQotCi0tICh2b2lkKXNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOihOU0FycmF5
PEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilhdWRpb09wdGlvbnMKLXsKLSAgICBfYXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBhdWRpb09wdGlvbnM7Ci19Ci0KLS0gKEFWTWVkaWFTZWxl
Y3Rpb25PcHRpb24gKiljdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbgotewotICAgIHJl
dHVybiBfY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24uZ2V0KCk7Ci19Ci0KLS0gKHZv
aWQpc2V0Q3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb246KEFWTWVkaWFTZWxlY3Rpb25P
cHRpb24gKilhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uCi17Ci0gICAgaWYgKGF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb24gPT0gX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uKQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
ID0gYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjsKLSAgICAKLSAgICBOU0ludGVnZXIgaW5kZXgg
PSBOU05vdEZvdW5kOwotICAgIAotICAgIGlmIChhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uICYm
IHNlbGYuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpCi0gICAgICAgIGluZGV4ID0gW3NlbGYu
YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMgaW5kZXhPZk9iamVjdDphdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9uXTsKLSAgICAKLSAgICBfd2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT53
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9uKGluZGV4ICE9
IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOwotfQotCi0tIChOU0FycmF5PEFWTWVk
aWFTZWxlY3Rpb25PcHRpb24gKj4gKilsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zCi17Ci0g
ICAgcmV0dXJuIF9sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zLmdldCgpOwotfQotCi0tICh2
b2lkKXNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KE5TQXJyYXk8QVZNZWRpYVNlbGVj
dGlvbk9wdGlvbiAqPiAqKWxlZ2libGVPcHRpb25zCi17Ci0gICAgX2xlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnMgPSBsZWdpYmxlT3B0aW9uczsKLX0KLQotLSAoQVZNZWRpYVNlbGVjdGlvbk9w
dGlvbiAqKWN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24KLXsKLSAgICByZXR1cm4g
X2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24uZ2V0KCk7Ci19Ci0KLS0gKHZvaWQp
c2V0Q3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjooQVZNZWRpYVNlbGVjdGlvbk9w
dGlvbiAqKWxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbgotewotICAgIGlmIChsZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb24gPT0gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24p
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBfY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbiA9IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjsKLSAgICAKLSAgICBOU0ludGVn
ZXIgaW5kZXggPSBOU05vdEZvdW5kOwotICAgIAotICAgIGlmIChsZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb24gJiYgc2VsZi5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKQotICAgICAgICBp
bmRleCA9IFtzZWxmLmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgaW5kZXhPZk9iamVjdDps
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25dOwotICAgIAotICAgIF93ZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWMtPndlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKCktPnNlbGVjdExlZ2libGVN
ZWRpYU9wdGlvbihpbmRleCAhPSBOU05vdEZvdW5kID8gaW5kZXggOiBVSU5UNjRfTUFYKTsKLX0K
K25hbWVzcGFjZSBXZWJDb3JlIHsKIAotLSAodm9pZCljYW5jZWxUaHVtYm5haWxBbmRBdWRpb0Ft
cGxpdHVkZVNhbXBsZUdlbmVyYXRpb24KK1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYyYgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQorICAgIDogbV9wbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UocGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQogewogfQogCi0jaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJQbGF5YmFja0NvbnRy
b2xzQ29udHJvbGxlclRodW1ibmFpbEFkZGl0aW9ucy5tbT4KLSNlbmRpZgotCi1AZW5kCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQogV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjp+V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKCkKIHsKIH0KQEAgLTIzNiw2ICs2MCw3IEBAIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6fldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYygpCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0V2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWwoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwqIG1vZGVsKQogewogICAgIG1f
dmlkZW9GdWxsc2NyZWVuTW9kZWwgPSBtb2RlbDsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZS0+c2V0V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwobW9kZWwpOwogfQogCiB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIoV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqIG9ic2VydmVyKQpAQCAtMjY3
LDMxICs5MiwxNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6Y2xlYXJN
b2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxscwogCiB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZU1hYzo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQogewotICAg
IFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0Nv
bnRyb2xzTWFuYWdlcigpOwotCi0gICAgY29udHJvbHNNYW5hZ2VyLmNvbnRlbnREdXJhdGlvbiA9
IGR1cmF0aW9uOwotCi0gICAgLy8gRklYTUU6IFdlIHRha2UgdGhpcyBhcyBhbiBpbmRpY2F0aW9u
IHRoYXQgcGxheWJhY2sgaXMgcmVhZHksIGJ1dCB0aGF0IGlzIG5vdCBuZWNlc3NhcmlseSB0cnVl
LgotICAgIGNvbnRyb2xzTWFuYWdlci5oYXNFbmFibGVkQXVkaW8gPSBZRVM7Ci0gICAgY29udHJv
bHNNYW5hZ2VyLmhhc0VuYWJsZWRWaWRlbyA9IFlFUzsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZS0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYzo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3Vi
bGUgYW5jaG9yVGltZSkKIHsKLSAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJv
bHNNYW5hZ2VyID0gcGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKLQotICAgIE5TVGltZUludGVy
dmFsIGFuY2hvclRpbWVTdGFtcCA9ICFbY29udHJvbHNNYW5hZ2VyIHJhdGVdID8gTkFOIDogYW5j
aG9yVGltZTsKLSAgICBBVlZhbHVlVGltaW5nICp0aW1pbmcgPSBbZ2V0QVZWYWx1ZVRpbWluZ0Ns
YXNzKCkgdmFsdWVUaW1pbmdXaXRoQW5jaG9yVmFsdWU6Y3VycmVudFRpbWUKLSAgICAgICAgYW5j
aG9yVGltZVN0YW1wOmFuY2hvclRpbWVTdGFtcCByYXRlOjBdOwotICAgIAotICAgIFtjb250cm9s
c01hbmFnZXIgc2V0VGltaW5nOnRpbWluZ107CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UtPnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKTsKIH0KIAogdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZs
b2F0IHBsYXliYWNrUmF0ZSkKIHsKLSAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29u
dHJvbHNNYW5hZ2VyID0gcGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKLQotICAgIFtjb250cm9s
c01hbmFnZXIgc2V0UmF0ZTppc1BsYXlpbmcgPyBwbGF5YmFja1JhdGUgOiAwLl07CisgICAgbV9w
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldFJhdGUoaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUp
OwogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICBbdmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlT2JqQygpIHNldFJhdGU6aXNQbGF5aW5nID8gcGxheWJhY2tSYXRlIDogMC5dOwpAQCAt
MzAwLDY0ICsxMTEsMjIgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNl
dFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIAogdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5n
ZXMmIHRpbWVSYW5nZXMpCiB7Ci0gICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIqIGNvbnRy
b2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7Ci0KLSAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IHNlZWthYmxlUmFuZ2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGltZVJhbmdl
cy5sZW5ndGgoKTsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgcmFu
Z2VzID0gdGltZVJhbmdlcy5yYW5nZXMoKTsKLSAgICAgICAgQ01UaW1lUmFuZ2UgcmFuZ2UgPSBD
TVRpbWVSYW5nZU1ha2UodG9DTVRpbWUocmFuZ2VzLnN0YXJ0KGkpKSwgdG9DTVRpbWUocmFuZ2Vz
LmVuZChpKSkpOwotICAgICAgICBbc2Vla2FibGVSYW5nZXMgYWRkT2JqZWN0OltOU1ZhbHVlIHZh
bHVlV2l0aENNVGltZVJhbmdlOnJhbmdlXV07Ci0gICAgfQotICAgIAotICAgIFtjb250cm9sc01h
bmFnZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2VzOnNlZWthYmxlUmFuZ2VzLmdldCgpXTsKLX0KLQot
c3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbWVkaWFTZWxlY3Rpb25PcHRpb25zKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zKQotewotICAgIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4gd2ViT3B0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpvcHRpb25zLnNpemUoKV0pOwotICAgIGZvciAoYXV0byYgbmFtZSA6IG9wdGlv
bnMpIHsKLSAgICAgICAgUmV0YWluUHRyPFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb25NYWM+IHdl
Yk9wdGlvbiA9IGFkb3B0TlMoW1tXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uTWFjIGFsbG9jXSBp
bml0XSk7Ci0gICAgICAgIFt3ZWJPcHRpb24gc2V0TG9jYWxpemVkRGlzcGxheU5hbWU6bmFtZV07
Ci0gICAgICAgIFt3ZWJPcHRpb25zIGFkZE9iamVjdDp3ZWJPcHRpb24uZ2V0KCldOwotICAgIH0K
LSAgICByZXR1cm4gd2ViT3B0aW9uczsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
c2V0U2Vla2FibGVSYW5nZXModGltZVJhbmdlcyk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjOjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0
b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAg
IFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0Nv
bnRyb2xzTWFuYWdlcigpOwotCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRp
b25zID0gbWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMpOwotICAgIFtjb250cm9sc01hbmFn
ZXIgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07Ci0gICAg
aWYgKHNlbGVjdGVkSW5kZXggPCBbd2ViT3B0aW9ucyBjb3VudF0pCi0gICAgICAgIFtjb250cm9s
c01hbmFnZXIgc2V0Q3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMg
b2JqZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOwor
ICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9ucyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVj
dG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAg
ICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5hZ2VyID0gcGxheUJhY2tD
b250cm9sc01hbmFnZXIoKTsKLQotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0
aW9ucyA9IG1lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zKTsKLSAgICBbY29udHJvbHNNYW5h
Z2VyIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07Ci0g
ICAgaWYgKHNlbGVjdGVkSW5kZXggPCBbd2ViT3B0aW9ucyBjb3VudF0pCi0gICAgICAgIFtjb250
cm9sc01hbmFnZXIgc2V0Q3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjpbd2ViT3B0
aW9ucyBvYmplY3RBdEluZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgp
XV07CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldExlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlTWFjOjplbnN1cmVDb250cm9sc01hbmFnZXIoKQogewotICAgIHBs
YXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7Ci19Ci0KLVdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
ICpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnBsYXlCYWNrQ29udHJvbHNNYW5hZ2Vy
KCkKLXsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAotICAg
IGlmICghbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlcikKLSAgICAgICAgbV9wbGF5YmFja0NvbnRy
b2xzTWFuYWdlciA9IGFkb3B0TlMoW1tXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBhbGxvY10g
aW5pdFdpdGhXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6dGhpc10pOwotICAgIHJldHVy
biBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmdldCgpOwotI2Vsc2UKLSAgICByZXR1cm4gbmls
OwotI2VuZGlmCisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPmVuc3VyZUNvbnRyb2xz
TWFuYWdlcigpOwogfQogCiAjaWYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdDIvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCAxNDA3OWNhY2UxZGMxNGYyOGU3YWU1MTE5M2EwN2NhZTgx
ZmFlMTg4Li5hNjI4MTczMTI5NjI4M2I3YWE1MmMyN2RmNDc0ZWYyNzM4Y2JhMWE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEzOCw2ICsxMzgsOCBAQCBNRVNTQUdFX1JFQ0VJ
VkVSUyA9IFwKICAgICBXZWJQYWdlIFwKICAgICBXZWJQYWdlUHJveHkgXAogICAgIFdlYlBhc3Rl
Ym9hcmRQcm94eSBcCisgICAgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciBcCisgICAgV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IFwKICAgICBXZWJQcm9jZXNzIFwKICAgICBXZWJQcm9j
ZXNzQ29ubmVjdGlvbiBcCiAgICAgV2ViUHJvY2Vzc1Bvb2wgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAzYjdiYWQzNThjYjUyOTRl
OTcwNWJlY2RiMjZlMDc4YjkxZWVlMWQ2Li45YWYyZDA5YWQ2NmJmNTUzYjJhNjhjZTQ5ZTgwZTU5
YmJkMThhNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQpAQCAtMzAzLDcgKzMwMyw3IEBAIC0gKEJPT0wpX21heUF1dG9tYXRpY2FsbHlT
aG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlCiAjaWYgIUhBVkUoQVZLSVQpCiAgICAgcmV0dXJuIGZh
bHNlOwogI2Vsc2UKLSAgICBpZiAoIV9wYWdlIHx8ICFfcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFu
YWdlcigpKQorICAgIGlmICghX3BhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJl
dHVybiBfcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpLT5tYXlBdXRvbWF0aWNhbGx5U2hv
d1ZpZGVvUGljdHVyZUluUGljdHVyZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY4NGE0NzdlODY0ZDM5ODlmNTIxMTU2YjNkYzI5NmY1MDllMTRhYTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5LmgKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eV9oCisjZGVmaW5lIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eV9oCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorCisjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybVZpZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgPFdlYkNvcmUvV2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaD4KKyNlbHNlCisjaW5jbHVkZSA8V2ViQ29yZS9X
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaD4KKyNlbmRpZgorCisjaWYgUExBVEZPUk0o
SU9TKQordHlwZWRlZiBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCBQ
bGF0Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKKyNlbHNlCit0eXBlZGVmIFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyBQbGF0Zm9ybVdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
UGFnZVByb3h5OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OworCitjbGFz
cyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQgZmluYWw6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4sIHB1YmxpYyBXZWJDb3JlOjpXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbCAgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxDb250ZXh0PiBjcmVhdGUoV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
JiBtYW5hZ2VyLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQobWFuYWdlciwgY29udGV4
dElkKSk7CisgICAgfQorICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4
dCgpIHsgfQorCisgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBtX21hbmFnZXIgPSBudWxscHRyOyB9
CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dDsKKworICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dChXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICAgICAg
OiBtX21hbmFnZXIoJm1hbmFnZXIpCisgICAgICAgICwgbV9jb250ZXh0SWQoY29udGV4dElkKQor
ICAgIHsKKyAgICB9CisKKyAgICAvLyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbAorICAgIHZvaWQg
cGxheSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGF1c2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIHRv
Z2dsZVBsYXlTdGF0ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5TY3J1YmJpbmcoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGVuZFNjcnViYmluZygpIG92ZXJyaWRlOworICAgIHZvaWQgc2Vla1Rv
VGltZShkb3VibGUpIG92ZXJyaWRlOworICAgIHZvaWQgZmFzdFNlZWsoZG91YmxlIHRpbWUpIG92
ZXJyaWRlOworICAgIHZvaWQgYmVnaW5TY2FubmluZ0ZvcndhcmQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZW5kU2Nhbm5p
bmcoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3Qp
IG92ZXJyaWRlOworICAgIHZvaWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90KSBv
dmVycmlkZTsKKworICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSogbV9tYW5hZ2Vy
OworICAgIHVpbnQ2NF90IG1fY29udGV4dElkOworfTsKKworY2xhc3MgV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQ
YWdlUHJveHkmKTsKKyAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHko
KTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCisgICAgUGxhdGZvcm1XZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UqIGNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgpOworCitwcml2YXRlOgor
ICAgIGZyaWVuZCBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ7CisgICAgZnJp
ZW5kIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTsKKworICAgIGV4cGxpY2l0
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXIm
KSBvdmVycmlkZTsKKworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxSZWZQdHI8V2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxDb250ZXh0PiwgUmVmUHRyPFBsYXRmb3JtV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlPj4gTW9kZWxJbnRlcmZhY2VUdXBsZTsKKyAgICBNb2RlbEludGVyZmFjZVR1cGxlIGNy
ZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgTW9kZWxJbnRl
cmZhY2VUdXBsZSYgZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKTsK
KyAgICBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQmIGVuc3VyZU1vZGVsKHVpbnQ2NF90
IGNvbnRleHRJZCk7CisgICAgUGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UmIGVu
c3VyZUludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgYWRkQ2xpZW50Rm9y
Q29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50Rm9yQ29u
dGV4dCh1aW50NjRfdCBjb250ZXh0SWQpOworCisgICAgLy8gTWVzc2FnZXMgZnJvbSBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyCisgICAgdm9pZCBzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
V2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBjbGVhclBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyKCk7CisgICAgdm9pZCByZXNldE1lZGlhU3RhdGUodWludDY0X3QgY29udGV4dElk
KTsKKyAgICB2b2lkIHNldEN1cnJlbnRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1
cnJlbnRUaW1lLCBkb3VibGUgaG9zdFRpbWUpOworICAgIHZvaWQgc2V0QnVmZmVyZWRUaW1lKHVp
bnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSk7CisgICAgdm9pZCBzZXRTZWVr
YWJsZVJhbmdlc1ZlY3Rvcih1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxzdGQ6OnBhaXI8ZG91
YmxlLCBkb3VibGU+PiByYW5nZXMpOworICAgIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKHVp
bnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSk7CisgICAgdm9pZCBzZXRBdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxTdHJpbmc+IG9wdGlvbnMs
IHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOworICAgIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxTdHJpbmc+IG9wdGlvbnMsIHVp
bnQ2NF90IHNlbGVjdGVkSW5kZXgpOworICAgIHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFja1Byb3Bl
cnRpZXModWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIHVpbnQzMl90IHRhcmdldFR5
cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKKyAgICB2b2lkIHNldFdpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCk7CisgICAgdm9pZCBz
ZXREdXJhdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbik7CisgICAgdm9p
ZCBzZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsIGRvdWJsZSByYXRl
KTsKKworICAgIC8vIE1lc3NhZ2VzIHRvIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIKKyAgICB2
b2lkIHBsYXkodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHBhdXNlKHVpbnQ2NF90IGNv
bnRleHRJZCk7CisgICAgdm9pZCB0b2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKTsK
KyAgICB2b2lkIGJlZ2luU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBl
bmRTY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHNlZWtUb1RpbWUodWlu
dDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSk7CisgICAgdm9pZCBmYXN0U2Vlayh1aW50NjRf
dCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKTsKKyAgICB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJk
KHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBiZWdpblNjYW5uaW5nQmFja3dhcmQodWlu
dDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJ
ZCk7CisgICAgdm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwg
dWludDY0X3QgaW5kZXgpOworICAgIHZvaWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2
NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpOworCisgICAgV2ViUGFnZVByb3h5KiBtX3Bh
Z2U7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgTW9kZWxJbnRlcmZhY2VUdXBsZT4gbV9jb250ZXh0
TWFwOworICAgIHVpbnQ2NF90IG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkIHsgMCB9OworICAg
IEhhc2hNYXA8dWludDY0X3QsIGludD4gbV9jbGllbnRDb3VudHM7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKworI2VuZGlmIC8vIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDAzYTRiNGM2MDE1OTcyODMwODNlYmZjMzAw
NjJkOTIyMTU0ZmRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCww
ICsxLDM5IEBACisjIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBQ
TEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJ
T05fTU9ERSkpCittZXNzYWdlcyAtPiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkgewor
ICAgIFJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCisgICAgU2V0Q3VycmVudFRp
bWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBob3N0VGlt
ZSkKKyAgICBTZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVy
ZWRUaW1lKQorICAgIFNldFNlZWthYmxlUmFuZ2VzVmVjdG9yKHVpbnQ2NF90IGNvbnRleHRJZCwg
VmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IHJhbmdlcykKKyAgICBTZXRDYW5QbGF5
RmFzdFJldmVyc2UodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQorICAgIFNldEF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4g
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKKyAgICBTZXRMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4gb3B0aW9ucywg
dWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKKyAgICBTZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGll
cyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgdWludDMyX3QgdGFyZ2V0VHlwZSwg
U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCisgICAgU2V0V2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGRpc2FibGVkKQorICAgIFNldER1cmF0
aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKQorICAgIFNldFJhdGUodWlu
dDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZG91YmxlIHJhdGUpCisgICAgU2V0VXBQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlcldpdGhJRCh1aW50NjRfdCBjb250ZXh0SWQpCisgICAgQ2xl
YXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHku
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyMjhhNzRkNTdhMTE2NGZhZWQ2NTk4YmEzOTI5NjA1
MjMwYzY3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCkBAIC0wLDAgKzEsMzc3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHkuaCIKKworI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKworI2ltcG9ydCAiV2ViUGFnZVBy
b3h5LmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZXMuaCIKKyNp
bXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW1wb3J0
ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBvcnQgPFdlYkNvcmUvVGltZVJhbmdlcy5oPgorI2lt
cG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworI3ByYWdtYSBtYXJrIC0gV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxDb250ZXh0CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0Ojpw
bGF5KCkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnBsYXkobV9j
b250ZXh0SWQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6cGF1
c2UoKQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+cGF1c2UobV9j
b250ZXh0SWQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6dG9n
Z2xlUGxheVN0YXRlKCkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXIt
PnRvZ2dsZVBsYXlTdGF0ZShtX2NvbnRleHRJZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxDb250ZXh0OjpiZWdpblNjcnViYmluZygpCit7CisgICAgaWYgKG1fbWFuYWdlcikK
KyAgICAgICAgbV9tYW5hZ2VyLT5iZWdpblNjcnViYmluZyhtX2NvbnRleHRJZCk7Cit9CisKK3Zv
aWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjplbmRTY3J1YmJpbmcoKQoreworICAg
IGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+ZW5kU2NydWJiaW5nKG1fY29udGV4
dElkKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNlZWtUb1Rp
bWUoZG91YmxlIHRpbWUpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2Vy
LT5zZWVrVG9UaW1lKG1fY29udGV4dElkLCB0aW1lKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbENvbnRleHQ6OmZhc3RTZWVrKGRvdWJsZSB0aW1lKQoreworICAgIGlmIChtX21h
bmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+ZmFzdFNlZWsobV9jb250ZXh0SWQsIHRpbWUpOwor
fQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6YmVnaW5TY2FubmluZ0Zv
cndhcmQoKQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+YmVnaW5T
Y2FubmluZ0ZvcndhcmQobV9jb250ZXh0SWQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsQ29udGV4dDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKCkKK3sKKyAgICBpZiAobV9tYW5h
Z2VyKQorICAgICAgICBtX21hbmFnZXItPmJlZ2luU2Nhbm5pbmdCYWNrd2FyZChtX2NvbnRleHRJ
ZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjplbmRTY2Fubmlu
ZygpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT5lbmRTY2Fubmlu
ZyhtX2NvbnRleHRJZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0
OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IG9wdGlvbklkKQoreworICAgIGlmICht
X21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+c2VsZWN0QXVkaW9NZWRpYU9wdGlvbihtX2Nv
bnRleHRJZCwgb3B0aW9uSWQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29u
dGV4dDo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IG9wdGlvbklkKQoreworICAg
IGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+c2VsZWN0TGVnaWJsZU1lZGlhT3B0
aW9uKG1fY29udGV4dElkLCBvcHRpb25JZCk7Cit9CisKKyNwcmFnbWEgbWFyayAtIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eQorCitSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5PiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJv
eHkmIHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkocGFnZSkpOworfQorCitXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UpCisgICAg
OiBtX3BhZ2UoJnBhZ2UpCit7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworfQorCitXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6On5XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkoKQorewor
ICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisgICAgaW52YWxpZGF0ZSgpOworfQor
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCit7Cisg
ICAgbV9wYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlID0gbnVsbHB0cjsKKworICAgIGZvciAoYXV0byYgdHVw
bGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgUmVmUHRyPFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsQ29udGV4dD4gbW9kZWw7CisgICAgICAgIFJlZlB0cjxQbGF0Zm9ybVdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZT4gaW50ZXJmYWNlOworICAgICAgICBzdGQ6OnRpZShtb2Rl
bCwgaW50ZXJmYWNlKSA9IHR1cGxlOworCisgICAgICAgIGludGVyZmFjZS0+aW52YWxpZGF0ZSgp
OworICAgIH0KKworICAgIG1fY29udGV4dE1hcC5jbGVhcigpOworICAgIG1fY2xpZW50Q291bnRz
LmNsZWFyKCk7Cit9CisKK1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TW9kZWxJbnRl
cmZhY2VUdXBsZSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZU1vZGVsQW5k
SW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBSZWY8V2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxDb250ZXh0PiBtb2RlbCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6
Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQpOworICAgIFJlZjxQbGF0Zm9ybVdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZT4gaW50ZXJmYWNlID0gUGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2U6OmNyZWF0ZSgpOworCisgICAgaW50ZXJmYWNlLT5zZXRXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbCgmbW9kZWwuZ2V0KCkpOworCisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShXVEZNb3Zl
KG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKK30KKworV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpNb2RlbEludGVyZmFjZVR1cGxlJiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OmVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fY29udGV4dE1hcC5hZGQoY29udGV4dElkLCBNb2RlbEludGVy
ZmFjZVR1cGxlKCkpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJ
ZCk7CisgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cit9CisKK1dlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsQ29udGV4dCYgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpl
bnN1cmVNb2RlbCh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgcmV0dXJuICpzdGQ6OmdldDww
PihlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpKTsKK30KKworUGxhdGZvcm1XZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UmIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
ZW5zdXJlSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICByZXR1cm4gKnN0ZDo6
Z2V0PDE+KGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCkpOworfQorCit2b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YWRkQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRf
dCBjb250ZXh0SWQpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2NsaWVudENvdW50cy5hZGQo
Y29udGV4dElkLCAxKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKys7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpyZW1vdmVDbGllbnRGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkK
K3sKKyAgICBBU1NFUlQobV9jbGllbnRDb3VudHMuY29udGFpbnMoY29udGV4dElkKSk7CisKKyAg
ICBpbnQgY2xpZW50Q291bnQgPSBtX2NsaWVudENvdW50cy5nZXQoY29udGV4dElkKTsKKyAgICBB
U1NFUlQoY2xpZW50Q291bnQgPiAwKTsKKyAgICBjbGllbnRDb3VudC0tOworCisgICAgaWYgKGNs
aWVudENvdW50IDw9IDApIHsKKyAgICAgICAgbV9jbGllbnRDb3VudHMucmVtb3ZlKGNvbnRleHRJ
ZCk7CisgICAgICAgIG1fY29udGV4dE1hcC5yZW1vdmUoY29udGV4dElkKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIG1fY2xpZW50Q291bnRzLnNldChjb250ZXh0SWQsIGNsaWVudENv
dW50KTsKK30KKworI3ByYWdtYSBtYXJrIE1lc3NhZ2VzIGZyb20gV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlcgorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0VXBQbGF5
YmFja0NvbnRyb2xzTWFuYWdlcldpdGhJRCh1aW50NjRfdCBjb250ZXh0SWQpCit7CisjaWYgUExB
VEZPUk0oTUFDKQorICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9PSBjb250ZXh0
SWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJ
ZCkKKyAgICAgICAgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRyb2xzTWFuYWdlckNvbnRl
eHRJZCk7CisKKyAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IGNvbnRleHRJZDsKKyAg
ICBlbnN1cmVJbnRlcmZhY2UobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpLmVuc3VyZUNvbnRy
b2xzTWFuYWdlcigpOworICAgIGFkZENsaWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJD
b250ZXh0SWQpOworCisgICAgbV9wYWdlLT52aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dElkKTsKKyNlbmRpZgorfQorCit2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y2xlYXJQbGF5YmFja0NvbnRyb2xzTWFu
YWdlcigpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICghbV9jb250cm9sc01hbmFnZXJD
b250ZXh0SWQpCisgICAgICAgIHJldHVybjsKKworICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQo
bV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOworICAgIG1fY29udHJvbHNNYW5hZ2VyQ29udGV4
dElkID0gMDsKKyAgICBtX3BhZ2UtPnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCk7Cisj
ZW5kaWYKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnJlc2V0TWVk
aWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRl
eHRJZCkucmVzZXRNZWRpYVN0YXRlKCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpzZXRDdXJyZW50VGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBjdXJy
ZW50VGltZSwgZG91YmxlIGhvc3RUaW1lKQoreworICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0
SWQpLnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lLCBob3N0VGltZSk7Cit9CisKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29u
dGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQoreworICAgIGVuc3VyZUludGVyZmFjZShjb250
ZXh0SWQpLnNldEJ1ZmZlcmVkVGltZShidWZmZXJlZFRpbWUpOworfQorCit2b2lkIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0U2Vla2FibGVSYW5nZXNWZWN0b3IodWludDY0X3Qg
Y29udGV4dElkLCBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2VzKQorewor
ICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiB0aW1lUmFuZ2VzID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7
CisgICAgZm9yIChjb25zdCBhdXRvJiByYW5nZSA6IHJhbmdlcykgeworICAgICAgICBBU1NFUlQo
aXNmaW5pdGUocmFuZ2UuZmlyc3QpKTsKKyAgICAgICAgQVNTRVJUKGlzZmluaXRlKHJhbmdlLnNl
Y29uZCkpOworICAgICAgICBBU1NFUlQocmFuZ2Uuc2Vjb25kID49IHJhbmdlLmZpcnN0KTsKKyAg
ICAgICAgdGltZVJhbmdlcy0+YWRkKHJhbmdlLmZpcnN0LCByYW5nZS5zZWNvbmQpOworICAgIH0K
KworICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldFNlZWthYmxlUmFuZ2VzKCp0aW1l
UmFuZ2VzKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldENh
blBsYXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCit7CisgICAg
ZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0Q2FuUGxheUZhc3RSZXZlcnNlKHZhbHVlKTsK
K30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4gb3B0aW9u
cywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4
dElkKS5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxlY3RlZEluZGV4
KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldExlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8U3RyaW5nPiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQoreworICAgIGVuc3VyZUludGVyZmFjZShj
b250ZXh0SWQpLnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywgc2VsZWN0
ZWRJbmRleCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRF
eHRlcm5hbFBsYXliYWNrUHJvcGVydGllcyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxl
ZCwgdWludDMyX3QgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCit7Cisg
ICAgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlw
ZSB0eXBlID0gc3RhdGljX2Nhc3Q8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpFeHRlcm5h
bFBsYXliYWNrVGFyZ2V0VHlwZT4odGFyZ2V0VHlwZSk7CisgICAgQVNTRVJUKHR5cGUgPT0gV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpUYXJnZXRUeXBlQWlyUGxheSB8fCB0eXBlID09IFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZVRWT3V0IHx8IHR5cGUgPT0gV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpUYXJnZXRUeXBlTm9uZSk7CisKKyAgICBlbnN1cmVJ
bnRlcmZhY2UoY29udGV4dElkKS5zZXRFeHRlcm5hbFBsYXliYWNrKGVuYWJsZWQsIHR5cGUsIGxv
Y2FsaXplZERldmljZU5hbWUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQodWludDY0X3QgY29udGV4dElk
LCBib29sIGRpc2FibGVkKQoreworICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldFdp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGRpc2FibGVkKTsKK30KKwordm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldER1cmF0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwg
ZG91YmxlIGR1cmF0aW9uKQoreworICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldER1
cmF0aW9uKGR1cmF0aW9uKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OnNldFJhdGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZG91YmxlIHJh
dGUpCit7CisgICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0UmF0ZShpc1BsYXlpbmcs
IHJhdGUpOworfQorCisjcHJhZ21hIG1hcmsgTWVzc2FnZXMgdG8gV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlcgorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cGxheSh1aW50
NjRfdCBjb250ZXh0SWQpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQor
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cGF1c2UodWludDY0X3QgY29u
dGV4dElkKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6UGF1c2UoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp0b2dnbGVQbGF5U3RhdGUodWludDY0X3Qg
Y29udGV4dElkKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkp
OworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY3J1YmJp
bmcodWludDY0X3QgY29udGV4dElkKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY3J1YmJpbmcoY29udGV4dElkKSwgbV9wYWdl
LT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpl
bmRTY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5kU2NydWJiaW5nKGNvbnRleHRJZCks
IG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6c2Vla1RvVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKQoreworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2Vla1Rv
VGltZShjb250ZXh0SWQsIHRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmZhc3RTZWVrKHVpbnQ2NF90IGNvbnRleHRJZCwg
ZG91YmxlIHRpbWUpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpGYXN0U2Vlayhjb250ZXh0SWQsIHRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJlZ2luU2Nhbm5p
bmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdGb3J3YXJkKGNvbnRl
eHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJl
Z2luU2Nhbm5pbmdCYWNrd2FyZChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwor
dm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjYW5uaW5nKHVpbnQ2NF90
IGNvbnRleHRJZCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OkVuZFNjYW5uaW5nKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOwor
fQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2VsZWN0QXVkaW9NZWRp
YU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQoreworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2VsZWN0QXVkaW9N
ZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK3Zv
aWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRp
b24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKK3sKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdExlZ2libGVNZWRp
YU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK1BsYXRm
b3JtV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgpCit7CisgICAgaWYgKCFtX2NvbnRyb2xz
TWFuYWdlckNvbnRleHRJZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgYXV0
byYgaW50ZXJmYWNlID0gZW5zdXJlSW50ZXJmYWNlKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElk
KTsKKyAgICByZXR1cm4gJmludGVyZmFjZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURF
T19QUkVTRU5UQVRJT05fTU9ERSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXgg
Y2QwZDJiZjIxOWZlOTg1MzhlY2Y3NDg3YTc4OGMzNjY4ZTg4MTY3Ny4uZTRiNzJlZDUxMWJhMDRm
OWQ3ZjM3MDliMzNlOWY1ZTc4OWUwNzNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
aApAQCAtNTMsMTUgKzUzLDE3IEBAIHR5cGVkZWYgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjIFBsYXRmb3JtV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OwogY2xh
c3MgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OwogCiBjbGFzcyBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENvbnRleHQgZmluYWw6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsQ29udGV4dD4sIHB1YmxpYyBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bCwgcHVibGljIFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyICB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+IGNy
ZWF0ZShXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IGNv
bnRleHRJZCkKKyAgICBzdGF0aWMgUmVmPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4g
Y3JlYXRlKFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSYgbWFuYWdlciwgV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxDb250ZXh0JiBwbGF5YmFja1Nlc3Npb25Nb2RlbCwgdWludDY0X3QgY29u
dGV4dElkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxDb250ZXh0KG1hbmFnZXIsIGNvbnRleHRJZCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQobWFuYWdlciwgcGxh
eWJhY2tTZXNzaW9uTW9kZWwsIGNvbnRleHRJZCkpOwogICAgIH0KLSAgICB2aXJ0dWFsIH5XZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQoKSB7IH0KKyAgICB2aXJ0dWFsIH5XZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENvbnRleHQoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgbV9tYW5h
Z2VyID0gbnVsbHB0cjsgfQogCkBAIC02OSwxMSArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRMYXllckhvc3RWaWV3KFJldGFpblB0cjxQbGF0Zm9ybVZpZXc+JiYgbGF5ZXJIb3N0Vmlldykg
eyBtX2xheWVySG9zdFZpZXcgPSBXVEZNb3ZlKGxheWVySG9zdFZpZXcpOyB9CiAKIHByaXZhdGU6
Ci0gICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0KFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQotICAgICAgICA6IG1fbWFu
YWdlcigmbWFuYWdlcikKLSAgICAgICAgLCBtX2NvbnRleHRJZChjb250ZXh0SWQpCi0gICAgewot
ICAgIH0KKyAgICBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQoV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5JiwgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0JiwgdWludDY0
X3QpOwogCiAgICAgLy8gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwKICAgICB2b2lkIHBsYXkoKSBv
dmVycmlkZTsKQEAgLTEwMiwxMyArMTAwLDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmdWxsc2Ny
ZWVuTWF5UmV0dXJuVG9JbmxpbmUoKSBvdmVycmlkZTsKIAogICAgIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eSogbV9tYW5hZ2VyOworICAgIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bENvbnRleHQ+IG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7CiAgICAgdWludDY0X3QgbV9jb250ZXh0
SWQ7CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtVmlldyAqPiBtX2xheWVySG9zdFZpZXc7CiB9Owog
CiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYpOworICAgIHN0YXRpYyBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5JiwgV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Jik7CiAgICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5KCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKQEAgLTExOSwxMiAr
MTE4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7
CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdDsKIAotICAgIFBsYXRmb3JtV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlKiBjb250cm9sc01hbmFnZXJJbnRlcmZhY2UoKTsKLQogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OwogCi0gICAg
ZXhwbGljaXQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYpOwor
ICAgIGV4cGxpY2l0IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkm
LCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsK
IAogICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxD
b250ZXh0PiwgUmVmUHRyPFBsYXRmb3JtV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlPj4gTW9k
ZWxJbnRlcmZhY2VUdXBsZTsKQEAgLTEzNywyMCArMTM0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8v
IE1lc3NhZ2VzIGZyb20gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcgogICAgIHZvaWQgc2V0dXBG
dWxsc2NyZWVuV2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDMyX3QgdmlkZW9MYXllcklE
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsUmVjdCwgZmxvYXQgaG9zdGluZ1NjYWxl
RmFjdG9yLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUsIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZSk7Ci0gICAgdm9pZCBzZXRVcFZpZGVvQ29u
dHJvbHNNYW5hZ2VyV2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBjbGVhclZp
ZGVvQ29udHJvbHNNYW5hZ2VyKCk7Ci0gICAgdm9pZCByZXNldE1lZGlhU3RhdGUodWludDY0X3Qg
Y29udGV4dElkKTsKLSAgICB2b2lkIHNldEN1cnJlbnRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwg
ZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgaG9zdFRpbWUpOwotICAgIHZvaWQgc2V0QnVmZmVy
ZWRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSk7CiAgICAgdm9p
ZCBzZXRWaWRlb0RpbWVuc2lvbnModWludDY0X3QgY29udGV4dElkLCBib29sIGhhc1ZpZGVvLCB1
bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKLSAgICB2b2lkIHNldFNlZWthYmxlUmFu
Z2VzVmVjdG9yKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRv
dWJsZT4+IHJhbmdlcyk7Ci0gICAgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UodWludDY0X3Qg
Y29udGV4dElkLCBib29sIHZhbHVlKTsKLSAgICB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4gb3B0aW9ucywgdWludDY0
X3Qgc2VsZWN0ZWRJbmRleCk7Ci0gICAgdm9pZCBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4gb3B0aW9ucywgdWludDY0X3Qg
c2VsZWN0ZWRJbmRleCk7Ci0gICAgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllcyh1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgdWludDMyX3QgdGFyZ2V0VHlwZSwgU3Ry
aW5nIGxvY2FsaXplZERldmljZU5hbWUpOwotICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQodWludDY0X3QgY29udGV4dElkLCBib29sKTsKLSAgICB2b2lkIHNldER1cmF0
aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKTsKLSAgICB2b2lkIHNldFJh
dGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZG91YmxlIHJhdGUpOwogICAg
IHZvaWQgZW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBleGl0
RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkludFJlY3QgZmluYWxSZWN0
KTsKICAgICB2b2lkIGNsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CkBAIC0x
NjAsMTYgKzE0NCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIC8vIE1lc3NhZ2VzIHRvIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIKLSAgICB2b2lkIHBsYXkodWludDY0X3QgY29udGV4dElk
KTsKLSAgICB2b2lkIHBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCB0b2dnbGVQ
bGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGJlZ2luU2NydWJiaW5nKHVp
bnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBlbmRTY3J1YmJpbmcodWludDY0X3QgY29udGV4
dElkKTsKLSAgICB2b2lkIHNlZWtUb1RpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGlt
ZSk7Ci0gICAgdm9pZCBmYXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKTsK
LSAgICB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAg
dm9pZCBiZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lk
IGVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCByZXF1ZXN0RnVsbHNj
cmVlbk1vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwogICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKHVp
bnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBj
b250ZXh0SWQpOwpAQCAtMTc3LDEyICsxNTEsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENs
ZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBzZXRWaWRlb0xh
eWVyRnJhbWUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpGbG9hdFJlY3QpOwogICAgIHZv
aWQgc2V0VmlkZW9MYXllckdyYXZpdHkodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5KTsKLSAgICB2b2lkIHNlbGVjdEF1ZGlv
TWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCk7Ci0gICAgdm9p
ZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBp
bmRleCk7CiAgICAgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQodWludDY0X3QgY29udGV4dElk
LCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwog
ICAgIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZCk7
CiAKICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKKyAgICBSZWY8V2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5PiBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTsKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBNb2RlbEludGVyZmFjZVR1cGxlPiBtX2NvbnRleHRNYXA7CiAgICAgdWludDY0
X3QgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgeyAwIH07CiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgaW50PiBtX2NsaWVudENvdW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDAzMDZlMzFmNzhhMDUwMTg4YmE0OTQ3MDQ0MmFjOWVhNjdl
YmI0NWYuLjE5M2E1MzgxODk0ZTBjN2FiNjQyY2Y2MTdkMzhjOGIxMmUwYmZiOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjIsMjUgKzIy
LDEyIEBACiAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiBtZXNzYWdlcyAtPiBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkgewotICAgIFJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCi0g
ICAgU2V0Q3VycmVudFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUs
IGRvdWJsZSBob3N0VGltZSkKLSAgICBTZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4dElk
LCBkb3VibGUgYnVmZmVyZWRUaW1lKQogICAgIFNldFZpZGVvRGltZW5zaW9ucyh1aW50NjRfdCBj
b250ZXh0SWQsIGJvb2wgaGFzVmlkZW8sIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQp
Ci0gICAgU2V0U2Vla2FibGVSYW5nZXNWZWN0b3IodWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8
c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2VzKQotICAgIFNldENhblBsYXlGYXN0UmV2
ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCi0gICAgU2V0QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8U3RyaW5nPiBvcHRpb25z
LCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQotICAgIFNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8U3RyaW5nPiBvcHRpb25zLCB1aW50NjRf
dCBzZWxlY3RlZEluZGV4KQotICAgIFNldEV4dGVybmFsUGxheWJhY2tQcm9wZXJ0aWVzKHVpbnQ2
NF90IGNvbnRleHRJZCwgYm9vbCBlbmFibGVkLCB1aW50MzJfdCB0YXJnZXRUeXBlLCBTdHJpbmcg
bG9jYWxpemVkRGV2aWNlTmFtZSkKLSAgICBTZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZGlzYWJsZWQpCi0gICAgU2V0RHVyYXRpb24odWlu
dDY0X3QgY29udGV4dElkLCBkb3VibGUgZHVyYXRpb24pCi0gICAgU2V0UmF0ZSh1aW50NjRfdCBj
b250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBkb3VibGUgcmF0ZSkKICAgICBTZXR1cEZ1bGxzY3Jl
ZW5XaXRoSUQodWludDY0X3QgY29udGV4dElkLCB1aW50MzJfdCB2aWRlb0xheWVySUQsIFdlYkNv
cmU6OkludFJlY3QgaW5pdGlhbFJlY3QsIGZsb2F0IGhvc3RpbmdTY2FsZUZhY3RvciwgV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNj
cmVlbk1vZGUsIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZSkKICAgICBFbnRlckZ1bGxzY3Jl
ZW4odWludDY0X3QgY29udGV4dElkKQogICAgIEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRl
eHRJZCwgV2ViQ29yZTo6SW50UmVjdCBmaW5hbFJlY3QpCiAgICAgQ2xlYW51cEZ1bGxzY3JlZW4o
dWludDY0X3QgY29udGV4dElkKQogICAgIFByZXBhcmVkVG9SZXR1cm5Ub0lubGluZSh1aW50NjRf
dCBjb250ZXh0SWQsIGJvb2wgdmlzaWJsZSwgV2ViQ29yZTo6SW50UmVjdCBpbmxpbmVSZWN0KQot
ICAgIFNldFVwVmlkZW9Db250cm9sc01hbmFnZXJXaXRoSUQodWludDY0X3QgY29udGV4dElkKQot
ICAgIENsZWFyVmlkZW9Db250cm9sc01hbmFnZXIoKQogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIEV4aXRGdWxsc2NyZWVuV2l0aG91dEFu
aW1hdGlvblRvTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCBhYzkzZjgzZDY1MmI2ZjU3MmUx
NWE0MTk1YzAwYTI4MzliMzVhNTFiLi41NTY1ODMwMjM0YjdhOGJmNGFhNjQ4NDE4OTQwYWJjODU3
M2RjMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KQEAgLTI5LDYgKzI5LDcg
QEAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19Q
UkVTRU5UQVRJT05fTU9ERSkpCiAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAi
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJv
eHkuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJNZXNzYWdlcy5oIgogI2lt
cG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKQEAgLTExMSw2
NCArMTEyLDY1IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjphcHBsaWNh
dGlvbkRpZEJlY29tZUFjdGl2ZSgpCiAKICNwcmFnbWEgbWFyayAtIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsQ29udGV4dAogCitXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OldlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsQ29udGV4dChXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkmIG1h
bmFnZXIsIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dCYgcGxheWJhY2tTZXNzaW9uTW9k
ZWwsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICA6IG1fbWFuYWdlcigmbWFuYWdlcikKKyAgICAs
IG1fcGxheWJhY2tTZXNzaW9uTW9kZWwocGxheWJhY2tTZXNzaW9uTW9kZWwpCisgICAgLCBtX2Nv
bnRleHRJZChjb250ZXh0SWQpCit7Cit9CisKK1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4
dDo6fldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCgpCit7Cit9CisKIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpwbGF5KCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQot
ICAgICAgICBtX21hbmFnZXItPnBsYXkobV9jb250ZXh0SWQpOworICAgIG1fcGxheWJhY2tTZXNz
aW9uTW9kZWwtPnBsYXkoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQ6OnBhdXNlKCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnBh
dXNlKG1fY29udGV4dElkKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5wYXVzZSgpOwog
fQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6dG9nZ2xlUGxheVN0YXRl
KCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnRvZ2dsZVBsYXlT
dGF0ZShtX2NvbnRleHRJZCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+dG9nZ2xlUGxh
eVN0YXRlKCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpiZWdp
blNjcnViYmluZygpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5i
ZWdpblNjcnViYmluZyhtX2NvbnRleHRJZCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+
YmVnaW5TY3J1YmJpbmcoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQ6OmVuZFNjcnViYmluZygpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5h
Z2VyLT5lbmRTY3J1YmJpbmcobV9jb250ZXh0SWQpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9k
ZWwtPmVuZFNjcnViYmluZygpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dDo6c2Vla1RvVGltZShkb3VibGUgdGltZSkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAg
ICAgICBtX21hbmFnZXItPnNlZWtUb1RpbWUobV9jb250ZXh0SWQsIHRpbWUpOworICAgIG1fcGxh
eWJhY2tTZXNzaW9uTW9kZWwtPnNlZWtUb1RpbWUodGltZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxDb250ZXh0OjpmYXN0U2Vlayhkb3VibGUgdGltZSkKIHsKLSAgICBpZiAo
bV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPmZhc3RTZWVrKG1fY29udGV4dElkLCB0aW1l
KTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5mYXN0U2Vlayh0aW1lKTsKIH0KIAogdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKCkK
IHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPmJlZ2luU2Nhbm5pbmdG
b3J3YXJkKG1fY29udGV4dElkKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5iZWdpblNj
YW5uaW5nRm9yd2FyZCgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4
dDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAg
ICBtX21hbmFnZXItPmJlZ2luU2Nhbm5pbmdCYWNrd2FyZChtX2NvbnRleHRJZCk7CisgICAgbV9w
bGF5YmFja1Nlc3Npb25Nb2RlbC0+YmVnaW5TY2FubmluZ0JhY2t3YXJkKCk7CiB9CiAKIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjplbmRTY2FubmluZygpCiB7Ci0gICAgaWYg
KG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5lbmRTY2FubmluZyhtX2NvbnRleHRJZCk7
CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+ZW5kU2Nhbm5pbmcoKTsKIH0KIAogdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKQEAgLTE5MSwxNCAr
MTkzLDEyIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpzZXRWaWRlb0xh
eWVyR3Jhdml0eShXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzCiAKIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxDb250ZXh0OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IG9wdGlvbklk
KQogewotICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2VsZWN0QXVkaW9N
ZWRpYU9wdGlvbihtX2NvbnRleHRJZCwgb3B0aW9uSWQpOworICAgIG1fcGxheWJhY2tTZXNzaW9u
TW9kZWwtPnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24ob3B0aW9uSWQpOwogfQogCiB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2
NF90IG9wdGlvbklkKQogewotICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+
c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKG1fY29udGV4dElkLCBvcHRpb25JZCk7CisgICAgbV9w
bGF5YmFja1Nlc3Npb25Nb2RlbC0+c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKG9wdGlvbklkKTsK
IH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUgbW9kZSkKQEAgLTI0NCwxMyArMjQ0LDE0IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDb250ZXh0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKQogCiAjcHJhZ21hIG1hcmsg
LSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkKIAotUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eT4gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUo
V2ViUGFnZVByb3h5JiBwYWdlKQorUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eT4gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBw
YWdlLCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmIHBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eShwYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkocGFnZSwgcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KSk7CiB9
CiAKLVdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSkKK1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwg
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkpCiAgICAgOiBtX3BhZ2UoJnBhZ2UpCisgICAgLCBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eShwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCiB7CiAgICAgbV9wYWdlLT5wcm9jZXNz
KCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOwog
fQpAQCAtMzEzLDggKzMxNCwxMCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogCiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAg
UmVmPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4gbW9kZWwgPSBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKLSAgICBSZWY8UGxh
dGZvcm1XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U+IGludGVyZmFjZSA9IFBsYXRmb3JtV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpjcmVhdGUoKTsKKyAgICBhdXRvJiBwbGF5YmFja1Nl
c3Npb25Nb2RlbCA9IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LT5lbnN1cmVNb2RlbChj
b250ZXh0SWQpOworICAgIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+IG1vZGVs
ID0gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpjcmVhdGUoKnRoaXMsIHBsYXliYWNr
U2Vzc2lvbk1vZGVsLCBjb250ZXh0SWQpOworICAgIGF1dG8mIHBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZSA9IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LT5lbnN1cmVJbnRlcmZhY2UoY29u
dGV4dElkKTsKKyAgICBSZWY8UGxhdGZvcm1XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U+IGlu
dGVyZmFjZSA9IFBsYXRmb3JtV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpjcmVhdGUocGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlKTsKIAogICAgIGludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWwoJm1vZGVsLmdldCgpKTsKICAgICBpbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyKCZtb2RlbC5nZXQoKSk7CkBAIC00MDAsMTA4ICs0MDMsMTEg
QEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldHVwRnVsbHNjcmVlbldp
dGhJRCh1aW50NjRfdCBjb250ZXh0SWQsIHUKICNlbmRpZgogfQogCi12b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VXBWaWRlb0NvbnRyb2xzTWFuYWdlcldpdGhJRCh1aW50
NjRfdCBjb250ZXh0SWQpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChtX2NvbnRyb2xz
TWFuYWdlckNvbnRleHRJZCA9PSBjb250ZXh0SWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
IChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKLSAgICAgICAgcmVtb3ZlQ2xpZW50Rm9yQ29u
dGV4dChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCk7Ci0KLSAgICBtX2NvbnRyb2xzTWFuYWdl
ckNvbnRleHRJZCA9IGNvbnRleHRJZDsKLSAgICBlbnN1cmVJbnRlcmZhY2UobV9jb250cm9sc01h
bmFnZXJDb250ZXh0SWQpLmVuc3VyZUNvbnRyb2xzTWFuYWdlcigpOwotICAgIGFkZENsaWVudEZv
ckNvbnRleHQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOwotCi0gICAgbV9wYWdlLT52aWRl
b0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29u
dGV4dElkKTsKLSNlbmRpZgotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6Y2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAg
IGlmICghbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IHJlbW92ZUNsaWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOwotICAg
IG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkID0gMDsKLSAgICBtX3BhZ2UtPnZpZGVvQ29udHJv
bHNNYW5hZ2VyRGlkQ2hhbmdlKCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OnJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0g
ICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkucmVzZXRNZWRpYVN0YXRlKCk7Ci19Ci0KLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRDdXJyZW50VGltZSh1aW50NjRf
dCBjb250ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGhvc3RUaW1lKQotewotICAg
IGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lLCBo
b3N0VGltZSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRC
dWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQotewot
ICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldEJ1ZmZlcmVkVGltZShidWZmZXJlZFRp
bWUpOwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9E
aW1lbnNpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBoYXNWaWRlbywgdW5zaWduZWQgd2lk
dGgsIHVuc2lnbmVkIGhlaWdodCkKIHsKICAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4dElkKS5z
ZXRWaWRlb0RpbWVuc2lvbnMoaGFzVmlkZW8sIHdpZHRoLCBoZWlnaHQpOwogfQogCi12b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0U2Vla2FibGVSYW5nZXNWZWN0b3IodWlu
dDY0X3QgY29udGV4dElkLCBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2Vz
KQotewotICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiB0aW1lUmFuZ2VzID0gVGltZVJhbmdlczo6Y3Jl
YXRlKCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiByYW5nZSA6IHJhbmdlcykgewotICAgICAgICBB
U1NFUlQoaXNmaW5pdGUocmFuZ2UuZmlyc3QpKTsKLSAgICAgICAgQVNTRVJUKGlzZmluaXRlKHJh
bmdlLnNlY29uZCkpOwotICAgICAgICBBU1NFUlQocmFuZ2Uuc2Vjb25kID49IHJhbmdlLmZpcnN0
KTsKLSAgICAgICAgdGltZVJhbmdlcy0+YWRkKHJhbmdlLmZpcnN0LCByYW5nZS5zZWNvbmQpOwot
ICAgIH0KLQotICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldFNlZWthYmxlUmFuZ2Vz
KCp0aW1lUmFuZ2VzKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OnNldENhblBsYXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCi17
Ci0gICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0Q2FuUGxheUZhc3RSZXZlcnNlKHZh
bHVlKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldEF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4g
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKLXsKLSAgICBlbnN1cmVJbnRlcmZhY2Uo
Y29udGV4dElkKS5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxlY3Rl
ZEluZGV4KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldExl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8U3Ry
aW5nPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQotewotICAgIGVuc3VyZUludGVy
ZmFjZShjb250ZXh0SWQpLnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywg
c2VsZWN0ZWRJbmRleCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpzZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllcyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wg
ZW5hYmxlZCwgdWludDMyX3QgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUp
Ci17Ci0gICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpFeHRlcm5hbFBsYXliYWNrVGFy
Z2V0VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpF
eHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZT4odGFyZ2V0VHlwZSk7Ci0gICAgQVNTRVJUKHR5cGUg
PT0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpUYXJnZXRUeXBlQWlyUGxheSB8fCB0eXBl
ID09IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZTo6VGFyZ2V0VHlwZVRWT3V0IHx8IHR5cGUg
PT0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpUYXJnZXRUeXBlTm9uZSk7Ci0gICAgCi0g
ICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0RXh0ZXJuYWxQbGF5YmFjayhlbmFibGVk
LCB0eXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90
IGNvbnRleHRJZCwgYm9vbCBkaXNhYmxlZCkKLXsKLSAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4
dElkKS5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChkaXNhYmxlZCk7Ci19Ci0KLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXREdXJhdGlvbih1aW50NjRfdCBj
b250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbikKLXsKLSAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4
dElkKS5zZXREdXJhdGlvbihkdXJhdGlvbik7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpzZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcs
IGRvdWJsZSByYXRlKQotewotICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldFJhdGUo
aXNQbGF5aW5nLCByYXRlKTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiB7CiAgICAgYXV0byYgaW50
ZXJmYWNlID0gZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCk7CkBAIC01NTcsNTYgKzQ2Myw2IEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpwcmVwYXJlZFRvUmV0dXJuVG9J
bmxpbmUodWludDY0X3QgY29udGV4dElkCiAKICNwcmFnbWEgbWFyayBNZXNzYWdlcyB0byBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlBsYXkoY29udGV4dElkKSwgbV9wYWdlLT5w
YWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpwYXVz
ZSh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpQYXVzZShjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnRvZ2dsZVBsYXlT
dGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpUb2dnbGVQbGF5U3RhdGUoY29udGV4dElkKSwgbV9w
YWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpiZWdpblNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpCZWdpblNjcnViYmluZyhjb250
ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OmVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpFbmRTY3J1YmJp
bmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpzZWVrVG9UaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91Ymxl
IHRpbWUpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpTZWVrVG9UaW1lKGNvbnRleHRJZCwgdGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOwot
fQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZmFzdFNlZWsodWludDY0
X3QgY29udGV4dElkLCBkb3VibGUgdGltZSkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkZhc3RTZWVrKGNvbnRleHRJZCwgdGltZSksIG1f
cGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6YmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29udGV4dElkKQotewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6QmVnaW5TY2Fubmlu
Z0ZvcndhcmQoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpiZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3Qg
Y29udGV4dElkKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6QmVnaW5TY2FubmluZ0JhY2t3YXJkKGNvbnRleHRJZCksIG1fcGFnZS0+cGFn
ZUlEKCkpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW5kU2Nh
bm5pbmcodWludDY0X3QgY29udGV4dElkKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RW5kU2Nhbm5pbmcoY29udGV4dElkKSwgbV9wYWdl
LT5wYWdlSUQoKSk7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpy
ZXF1ZXN0RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RGdWxsc2Ny
ZWVuTW9kZShjb250ZXh0SWQsIG1vZGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKQEAgLTY2MywxNiAr
NTE5LDYgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVvTGF5
ZXJHcmF2aXR5KHVpbnQ2NF90IGNvbnRleHRJZCwgV2UKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bShj
b250ZXh0SWQsICh1bnNpZ25lZClncmF2aXR5KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9u
KHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCi17Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZWxlY3RBdWRpb01lZGlhT3B0
aW9uKGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50
NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQotewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9u
KGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQogdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh1aW50NjRfdCBj
b250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSBtb2RlKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1vZGVDaGFuZ2VkKGNvbnRleHRJZCwgbW9kZSksIG1fcGFn
ZS0+cGFnZUlEKCkpOwpAQCAtNjgzLDE1ICs1MjksNiBAQCBib29sIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6aXNWaXNpYmxlKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdlLT5pc1Zp
ZXdWaXNpYmxlKCkgJiYgbV9wYWdlLT5pc0luV2luZG93KCk7CiB9CiAKLVBsYXRmb3JtV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNv
bnRyb2xzTWFuYWdlckludGVyZmFjZSgpCi17Ci0gICAgaWYgKCFtX2NvbnRyb2xzTWFuYWdlckNv
bnRleHRJZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvJiBpbnRlcmZhY2Ug
PSBlbnN1cmVJbnRlcmZhY2UobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOwotICAgIHJldHVy
biAmaW50ZXJmYWNlOwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKICAgICBi
b29sIGlzVmlld1Zpc2libGUgPSBtX3BhZ2UtPmlzVmlld1Zpc2libGUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYjlhMWNjZGE3YTNmMTBjYmEwYjky
ODQ5MWI3NDY3NTA3OTNlZjdmMC4uZDQ5ZDNjZGMwNzM2NjIyYTA3YmViNzM4ZmFkMGE4N2UzNDI4
ZGE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE3
MCw2ICsxNzAsMTAgQEAKICNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViUGFnZVByb3h5SW5j
bHVkZXMuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2luY2x1ZGUgIldlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eS5oIgorI2VuZGlmCisKIC8vIFRoaXMgY29udHJvbHMgd2hhdCBz
dHJhdGVneSB3ZSB1c2UgZm9yIG1vdXNlIHdoZWVsIGNvYWxlc2NpbmcuCiAjZGVmaW5lIE1FUkdF
X1dIRUVMX0VWRU5UUyAxCiAKQEAgLTQ3MSw3ICs0NzUsOCBAQCBXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Ms
IHVpbgogICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjpjcmVhdGUoKnRoaXMsIG1fcGFnZUNsaWVudC5mdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50
KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQotICAgIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdl
ciA9IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKCp0aGlzKTsKKyAgICBt
X3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIgPSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OmNyZWF0ZSgqdGhpcyk7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoKnRoaXMsICptX3BsYXliYWNrU2Vzc2lvbk1h
bmFnZXIpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZJQlJBVElPTikKICAgICBtX3ZpYnJhdGlvbiA9
IFdlYlZpYnJhdGlvblByb3h5OjpjcmVhdGUodGhpcyk7CkBAIC03MDgsNyArNzEzLDggQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKCkKICAgICBtX2Z1bGxTY3JlZW5N
YW5hZ2VyID0gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX3BhZ2VD
bGllbnQuZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpKTsKICNlbmRpZgogI2lmIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgPSBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OmNyZWF0ZSgqdGhpcyk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
ID0gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUoKnRoaXMpOworICAgIG1f
dmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
Y3JlYXRlKCp0aGlzLCAqbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyKTsKICNlbmRpZgogCiAjaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKQEAgLTQwMjgsOSArNDAzNCwxNCBAQCBXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5KiBXZWJQYWdlUHJveHk6OmZ1bGxTY3JlZW5NYW5hZ2VyKCkKICNlbmRp
ZgogICAgIAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKLVJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk+IFdlYlBhZ2VQcm94eTo6dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpCitXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkqIFdlYlBhZ2VQcm94eTo6cGxheWJhY2tTZXNzaW9uTWFuYWdl
cigpCiB7Ci0gICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlcjsKKyAgICByZXR1cm4g
bV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmdldCgpOworfQorCitXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkqIFdlYlBhZ2VQcm94eTo6dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpCit7Cisg
ICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlci5nZXQoKTsKIH0KICNlbmRpZgogCkBA
IC01MDYzLDYgKzUwNzQsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRT
dGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29uKQogICAgIG1fdmlzaWJsZVNjcm9sbGVyVGh1bWJS
ZWN0ID0gSW50UmVjdCgpOwogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAgIGlmIChtX3BsYXliYWNrU2Vz
c2lvbk1hbmFnZXIpIHsKKyAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5pbnZhbGlk
YXRlKCk7CisgICAgICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlciA9IG51bGxwdHI7CisgICAg
fQogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIpIHsKICAgICAgICAgbV92aWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVu
TWFuYWdlciA9IG51bGxwdHI7CkBAIC02MDM5LDcgKzYwNTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKQogYm9vbCBXZWJQYWdlUHJveHk6Omhh
c0FjdGl2ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdl
ciAmJiBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgp
ICYmIG1fbWVkaWFTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6Okhhc0F1ZGlvT3JWaWRlbzsKKyAgICBy
ZXR1cm4gbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyICYmIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdl
ci0+Y29udHJvbHNNYW5hZ2VySW50ZXJmYWNlKCkgJiYgbV9tZWRpYVN0YXRlICYgTWVkaWFQcm9k
dWNlcjo6SGFzQXVkaW9PclZpZGVvOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBlYmExNTEwZmY1Yjlh
NzA3MTQ2Yjc0MjFhMGQ0MjJkOWFlM2FlZjU0Li5hZDIwMTQ4NzBmNTE1NzBjZDZiZDAyYjVlOTkx
YjU2OWM0MDc1YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC0xOTIsNiArMTkyLDcgQEAgY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdl
YkNvbnRleHRNZW51UHJveHk7CiBjbGFzcyBXZWJFZGl0Q29tbWFuZFByb3h5OwogY2xhc3MgV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eTsKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTsKIGNsYXNzIFdlYk5hdmlnYXRpb25TdGF0ZTsKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTsKIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7CkBAIC0zMjgsNyArMzI5LDgg
QEAgcHVibGljOgogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqIGZ1bGxTY3JlZW5NYW5h
Z2VyKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eT4gdmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpOworICAgIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSogcGxheWJhY2tTZXNzaW9uTWFuYWdlcigpOworICAgIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSogdmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xNTQ3LDYgKzE1NDksNyBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5PiBtX2Z1bGxTY3JlZW5NYW5h
Z2VyOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk+IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlcjsKICAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXI7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGRhNTcxZWEwNjRjNDQ5Mjk5MmRkMzhmODg3
ZmU1NTI0MGE5ZmFiMi4uNzgxZjExNGI1YzZiYjhjM2EwYjY0YjZjYzJlYzkxOTQ3MzJkOGM3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTcwNSw2ICsxNzA1LDE0IEBACiAJCUNENzNCQTRFMTMxQUNEQjcwMEVFREVEMiAvKiBX
ZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDczQkE0ODEzMUFDRDhFMDBFRURFRDIgLyog
V2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlDRDczQkE1
MzEzMUI2NDVCMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q3M0JBMzcxMzFBMjlGRTAwRUVE
RUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCAqLzsgfTsKIAkJQ0RBMDQxRjQxQUNFMjEw
NTAwNEExM0VDIC8qIEJhY2tCb2FyZFNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEwNDFGMzFBQ0UyMTA1MDA0QTEzRUMgLyogQmFj
a0JvYXJkU2VydmljZXNTUEkuaCAqLzsgfTsKKwkJQ0RBMjlBMUExQ0JEQkY0MTAwOTAxQ0NGIC8q
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREEyOUExODFDQkRCRjQxMDA5MDFDQ0YgLyogV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlci5tbSAqLzsgfTsKKwkJQ0RBMjlBMUIxQ0JEQkY0MTAwOTAxQ0NGIC8q
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTE5MUNCREJGNDEwMDkwMUNDRiAvKiBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLmggKi87IH07CisJCUNEQTI5QTIwMUNCRUI1RkIwMDkwMUNDRiAvKiBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTFFMUNCRUI1RkIwMDkwMUNDRiAvKiBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCAqLzsgfTsKKwkJQ0RBMjlBMjExQ0JFQjVGQjAwOTAx
Q0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTFGMUNCRUI1RkIwMDkwMUNDRiAv
KiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gKi87IH07CisJCUNEQTI5QTI4MUNC
RUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5
QTI0MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RBMjlBMjkxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMjUxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJNZXNzYWdlcy5oICovOyB9OworCQlDREEyOUEyQTFDQkVCNjdBMDA5MDFD
Q0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTI2MUNC
RUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OworCQlDREEyOUEyQjFDQkVCNjdBMDA5MDFDQ0YgLyogV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTI3MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovOyB9OwogCQlDREMzODJGRTE3MjEx
Nzk5MDA4QTJGQzMgLyogU2VjSXRlbVNoaW1MaWJyYXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjhBNzgxMzhCNDYwOTAwQTk1RjQ0IC8qIFNl
Y0l0ZW1TaGltTGlicmFyeS5tbSAqLzsgfTsKIAkJQ0RDMzgzMDcxNzIxMTdERDAwOEEyRkMzIC8q
IENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREMzODJGOTE3MjExNkQzMDA4QTJGQzMgLyogQ29va2llU3Rv
cmFnZVNoaW1MaWJyYXJ5LmNwcCAqLzsgfTsKIAkJQ0RDMzgzMEMxNzIxMjI4MjAwOEEyRkMzIC8q
IENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RDMzgzMEIxNzIxMjFDRTAwOEEyRkMzIC8qIENvb2tpZVN0b3Jh
Z2VTaGltTGlicmFyeS5oICovOyB9OwpAQCAtMzc3Niw2ICszNzg0LDE2IEBACiAJCUNENzNCQTQ5
MTMxQUNEOEUwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q3M0JBNEExMzFBQ0Q4RjAwRUVERUQy
IC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBMDQxRjMxQUNFMjEwNTAwNEExM0VDIC8qIEJh
Y2tCb2FyZFNlcnZpY2VzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJh
Y2tCb2FyZFNlcnZpY2VzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTI5
QTE4MUNCREJGNDEwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMTkxQ0JEQkY0MTAw
OTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREEyOUExQzFDQkRCRjVCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREEyOUExRTFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREEyOUEx
RjFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREEyOUEyMjFD
QkVCNjFBMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMjQxQ0JF
QjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQTI5QTI1MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QTI5QTI2MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMjcxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzM4MkY3MTcyMTE1MDYwMDhBMkZDMyAvKiBD
Rk5ldHdvcmsuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDRk5ldHdvcmsuZnJhbWV3b3Jr
OyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yazsg
c291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJQ0RDMzgyRjkxNzIxMTZEMzAwOEEyRkMz
IC8qIENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb29r
aWVTdG9yYWdlU2hpbUxpYnJhcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
REMzODMwNjE3MjExNzk5MDA4QTJGQzMgLyogV2ViUHJvY2Vzc1NoaW0uZHlsaWIgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8u
ZHlsaWIiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBXZWJQcm9jZXNzU2hpbS5keWxpYjsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTQ2MzYsNiArNDY1NCw5IEBA
CiAJCQkJOTk4NkJERDYxQ0E5QTIyMjAwNDgwMEFBIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uQ29j
b2EubW0gKi8sCiAJCQkJMUFDMDI3M0UxOTY2MjJENjAwQzEyQjc1IC8qIFdlYlBhZ2VQcm94eUNv
Y29hLm1tICovLAogCQkJCTdDNDY5NENCMUE0QjUxMEEwMEFENTg0NSAvKiBXZWJQYXN0ZWJvYXJk
UHJveHlDb2NvYS5tbSAqLywKKwkJCQlDREEyOUExRTFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmggKi8sCisJCQkJQ0RBMjlBMjIxQ0JFQjYxQTAwOTAx
Q0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJ
CQlDREEyOUExRjFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5Lm1tICovLAogCQkJCTdDRTREMjE1MUE0OTE0ODQwMEM3RjE1MiAvKiBXZWJQcm9jZXNzUG9v
bENvY29hLm1tICovLAogCQkJCTFBMDRGNjE3MUE0QTNBN0EwMEEyMUI2RSAvKiBXZWJQcm9jZXNz
UHJveHlDb2NvYS5tbSAqLywKIAkJCQk1MkQ1QTFBQTFDNTc0OTRFMDBERTM0QTMgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggKi8sCkBAIC01NTc3LDYgKzU1OTgsOSBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3QzZFNzBGOTE4QjJENEEwMDBG
MjRFMkUgLyogV2ViUHJvY2Vzc0NvY29hLm1tICovLAorCQkJCUNEQTI5QTE5MUNCREJGNDEwMDkw
MUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmggKi8sCisJCQkJQ0RBMjlBMUMxQ0JE
QkY1QjAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8s
CisJCQkJQ0RBMjlBMTgxQ0JEQkY0MTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXIubW0gKi8sCiAJCQkJNTJENUExQjIxQzU3NDlGMjAwREUzNEEzIC8qIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIuaCAqLywKIAkJCQk1MkQ1QTFCMzFDNTc0OUYyMDBERTM0QTMgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk1MkQ1QTFCNDFDNTc0OUYy
MDBERTM0QTMgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSAqLywKQEAgLTY5NDksNiAr
Njk3MywxMCBAQAogCQkJCUJDQkQzOTEzMTI1QkIxQTgwMEQyQzI5RiAvKiBXZWJQYWdlUHJveHlN
ZXNzYWdlcy5oICovLAogCQkJCTdDNDY5NEM3MUE0QjRFQTAwMEFENTg0NSAvKiBXZWJQYXN0ZWJv
YXJkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTdDNDY5NEM4MUE0QjRFQTEwMEFE
NTg0NSAvKiBXZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQTI5QTI0MUNC
RUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKKwkJCQlDREEyOUEyNTFDQkVCNjdBMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlck1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBMjlBMjYxQ0JFQjY3QTAwOTAxQ0NGIC8q
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJ
CQkJQ0RBMjlBMjcxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMUEwNDNGNjcxMjUxNEQ4QjAwRkZCRkI1IC8qIFdlYlBy
b2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQTA0M0Y2ODEyNTE0
RDhCMDBGRkJGQjUgLyogV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovLAogCQkJCUJD
MzA2NkJDMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKQEAgLTc1NTgsNiArNzU4Niw3IEBACiAJCQkJNTE0RDlGNTcxOTExOUQzNTAwMDA2M0E3IC8q
IFNlcnZpY2VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGREU2NUExOTU0QTQy
QjAwQzQ4RkZBIC8qIFNlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwMDJENDkx
OTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0RBMjlBMjAxQ0JFQjVGQjAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzUzRTNFMEUxODg3Mzk4OTAwMTg4NDk2IC8qIFNl
c3Npb25UcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUM4MUQ1QTFDMjBFN0UyMDA1QzRD
ODIgLyogQXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk1NUE2RUMxQzc5
ODBDMjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKQEAg
LTc5ODIsNiArODAxMSw3IEBACiAJCQkJQTVFRkQzOEMxNkIwRTg4QzAwQjJGMEU4IC8qIFdLUGFn
ZVZpc2liaWxpdHlUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2QUI1NDExOTJCMUM0QTAw
M0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkRBMUU0RkUxOEMwMkI2QTAwREJDOTI5IC8qIFdLUERGVmlldy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0RBMjlBMjkxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8q
IFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQUJBNzc0MUE4MTdF
RTYwMEVGMEYxQSAvKiBXS1BsdWdpbkxvYWRQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
RkREMzE3MTg5MUM5NDcwMDE1Mzk3MCAvKiBXS1ByZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywK
QEAgLTgwNDIsNiArODA3Miw3IEBACiAJCQkJMzc3RUFENDgxN0UyQzc3QjAwMkQxOTNEIC8qIFdL
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYxMTNFMjkx
MjZDRTE5QjAwNTdEMEE3IC8qIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0QTNDQzE4RjE5QjA3QjhBMDBEMTRBRUYgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBMjlBMUIxQ0JEQkY0MTAwOTAxQ0NGIC8q
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUYwODlC
MTkyNjdFRTUwMEI2MzkwQyAvKiBXS1VzZXJTY3JpcHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
N0VBRDQ5MTdFMkM3N0IwMDJEMTkzRCAvKiBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUFGMDg5RDE5MjY3RkM4MDBCNjM5MEMgLyogV0tVc2VyU2NyaXB0
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtODA4Myw2ICs4MTE0LDcgQEAKIAkJCQkxQTU3
MTA5RjFBQkEwMDI3MDAyRkFCQkUgLyogV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0EyNTNGMzFDOTI0MTEyMDBGOUY2OEQgLyogV0tQcmV2aWV3QWN0aW9uSXRl
bUlkZW50aWZpZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNDQzE2NzE4OTA2QUNGMDAxRTZF
RDggLyogV0tXZWJWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREEyOUEyQjFDQkVCNjdBMDA5
MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBREY1OTFCMTg5MDUyOEUwMDQzQzE0NSAvKiBXS1dlYlZpZXdDb25maWd1
cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDdBQUZENjE4Qzk1NkFGMDBBN0FDRDQgLyog
V0tXZWJWaWV3Q29uZmlndXJhdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUMx
NDE1MTE4QUM0N0VFMDA2QzYwMkMgLyogV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaCBp
biBIZWFkZXJzICovLApAQCAtODcxMCw2ICs4NzQyLDcgQEAKIAkJCQk3QzFCQTMzRDFBNEEwRTYw
MDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI0MEVF
NTFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM1NzU2MTMxMjZFMDEzODAwNkYwRjEyIC8qIEFQSUVycm9yLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUNEQTI5QTJBMUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFD
MTMzNzExODU2NkM3QzAwRjNFQzA1IC8qIEFQSUZyYW1lSGFuZGxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJERjlFRUU1MUE3ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUFDMTMzNzQxODU3QzIxRTAwRjNFQzA1IC8qIEFQSUdlb21ldHJ5LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtODg1Myw2ICs4ODg2LDcgQEAKIAkJCQkyRDVBQjYzMDFBNjlE
NkZCMDAxNEE5Q0IgLyogTWVzc2FnZVJlY29yZGVyUHJvYmVzLmQgaW4gU291cmNlcyAqLywKIAkJ
CQkxQUFCMDM3OTE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDMEUzQUE3QjEyMDlFODM1MDBBNDlEMDEgLyogTW9kdWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUNEQTI5QTI4MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMwRTNBQTdB
MTIwOUU4MzAwMEE0OUQwMSAvKiBNb2R1bGVDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDUw
MzY1RTFCQ0M3OTNGMDBFMjBCQjMgLyogTmF0aXZlV2ViR2VzdHVyZUV2ZW50TWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkRBOTQ0OUUxODg0RTRGMDAwRUQ4NkRCIC8qIE5hdGl2ZVdlYktleWJv
YXJkRXZlbnRJT1MubW0gaW4gU291cmNlcyAqLywKQEAgLTg5NTUsNiArODk4OSw3IEBACiAJCQkJ
N0MxMzVBQUMxNzNCMENGRjAwNTg2QUUyIC8qIFBsdWdpbkluZm9ybWF0aW9uTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUFFRkNDMTMxMUQwMUY5NjAwODIxOUQzIC8qIFBsdWdpbkluZm9TdG9y
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUVGQ0NCRDExRDAyQzVFMDA4MjE5RDMgLyogUGx1
Z2luSW5mb1N0b3JlTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBMjlBMUExQ0JEQkY0MTAw
OTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkxQTA0Mzk3NzEyNEQwMzQ4MDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTBFQzkwNzEyNEMwQUI4MDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEwRUM5MTAxMjRDMEFGNTAwN0VGNEE1IC8q
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkw
MDgsNiArOTA0Myw3IEBACiAJCQkJMEY1OTQ3OUExODdCM0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQzM2NUMx
OEMwNUNBMTAwRjYwN0Q3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0g
aW4gU291cmNlcyAqLywKIAkJCQkwRjU5NDdBMzE4N0IzQjdEMDA0Mzc4NTcgLyogUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREEy
OUEyMTFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1OTQ3OUMxODdCM0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNj
cm9sbGluZ1RyZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFCMDkxMTJGNUUzQzAwMzM3
QkFCIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBQjRB
QUExMjk2RjE1NDAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb25NYWMubW0gaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAyN2QwOTI4YTE2OTk4MTdlNmUzNmIxYzYx
NTQwOTNlNDU2ODc0Mzk4Li41NmQ3NGEwMmZjYjI5Y2E5OTFmOWQ4ZTY3ZjBmMTg4ZWU5YTBjMmUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAi
V2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXIuaCIgCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCkBAIC04NTMsMzQg
Kzg1NCwzNCBAQCBQYXNzUmVmUHRyPFNjcm9sbGluZ0Nvb3JkaW5hdG9yPiBXZWJDaHJvbWVDbGll
bnQ6OmNyZWF0ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZwogI2lmIFBMQVRGT1JNKElPUykgfHwg
KFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIGJvb2wg
V2ViQ2hyb21lQ2xpZW50OjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKLSAgICByZXR1cm4g
bV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCktPnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVu
KG1vZGUpOworICAgIHJldHVybiBtX3BhZ2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKS5zdXBw
b3J0c1ZpZGVvRnVsbHNjcmVlbihtb2RlKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNl
dFVwVmlkZW9Db250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9F
bGVtZW50KQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldFVwUGxheWJhY2tDb250cm9sc01hbmFn
ZXIoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQogewotICAgIG1fcGFn
ZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpLT5zZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyKHZp
ZGVvRWxlbWVudCk7CisgICAgbV9wYWdlLT5wbGF5YmFja1Nlc3Npb25NYW5hZ2VyKCkuc2V0VXBQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlcihtZWRpYUVsZW1lbnQpOwogfQogCi12b2lkIFdlYkNocm9t
ZUNsaWVudDo6Y2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpCit2b2lkIFdlYkNocm9tZUNsaWVu
dDo6Y2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
JiBtZWRpYUVsZW1lbnQpCiB7Ci0gICAgbV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkt
PmNsZWFyVmlkZW9Db250cm9sc01hbmFnZXIoKTsKKyAgICBtX3BhZ2UtPnBsYXliYWNrU2Vzc2lv
bk1hbmFnZXIoKS5jbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKG1lZGlhRWxlbWVudCk7CiB9
CiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxl
bWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQsIFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIEFT
U0VSVChtb2RlICE9IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5v
bmUpOwotICAgIG1fcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpLT5lbnRlclZpZGVvRnVs
bHNjcmVlbkZvclZpZGVvRWxlbWVudCh2aWRlb0VsZW1lbnQsIG1vZGUpOworICAgIG1fcGFnZS0+
dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpLmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVt
ZW50KHZpZGVvRWxlbWVudCwgbW9kZSk7CiB9CiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGl0
VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQm
IHZpZGVvRWxlbWVudCkKIHsKLSAgICBtX3BhZ2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKS0+
ZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCh2aWRlb0VsZW1lbnQpOworICAgIG1f
cGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpLmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRl
b0VsZW1lbnQodmlkZW9FbGVtZW50KTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4aXRWaWRl
b0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1l
bnQmIHZpZGVvRWxlbWVudCwgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlIHRhcmdldE1vZGUpCiB7Ci0gICAgbV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkt
PmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKHZpZGVvRWxlbWVudCwg
dGFyZ2V0TW9kZSk7CisgICAgbV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkuZXhpdFZp
ZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24odmlkZW9FbGVtZW50LCB0YXJnZXRN
b2RlKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBkYTY2ZjE1MTBlNWY4
MTRmY2NiZjAzMzMwYzNiYzJjOTVhNzQyYzliLi4xZWVhNjg3MzZmYWU5MGNiMjdkOGE1YWYzYjk1
Nzg1ZjFmZGIwMGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTI0NCw4ICsyNDQsOCBAQCBw
cml2YXRlOgogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIGJvb2wgc3VwcG9ydHNWaWRlb0Z1bGxzY3Jl
ZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBv
dmVycmlkZTsKLSAgICB2b2lkIHNldFVwVmlkZW9Db250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRN
TFZpZGVvRWxlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xlYXJWaWRlb0NvbnRyb2xzTWFu
YWdlcigpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVhclBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQmLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZp
ZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Jikgb3ZlcnJpZGU7CiAjaWYgUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZDFkYjYyZjk4NjU5
MDA4YjdlZGU4YmExNzM5YzNmYzc2YzE2YjIyNC4uZjg1ODkyMjhhYmYxNThmNjVmMDcwNDUwNWY5
MzZlZmJiNWRjYTM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtOTEsNiArOTEsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlBhZ2VPdmVybGF5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiV2ViUGx1Z0luQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51LmgiCiAjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oIgpAQCAtMzE4OCwxMSArMzE4OSwxOCBAQCBX
ZWJJbnNwZWN0b3JVSSogV2ViUGFnZTo6aW5zcGVjdG9yVUkoKQogfQogCiAjaWYgUExBVEZPUk0o
SU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUp
KQotV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciogV2ViUGFnZTo6dmlkZW9GdWxsc2NyZWVuTWFu
YWdlcigpCitXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJiBXZWJQYWdlOjpwbGF5YmFja1Nlc3Np
b25NYW5hZ2VyKCkKK3sKKyAgICBpZiAoIW1fcGxheWJhY2tTZXNzaW9uTWFuYWdlcikKKyAgICAg
ICAgbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyID0gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1cm4gKm1fcGxheWJhY2tTZXNzaW9uTWFuYWdlcjsKK30K
KworV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYgV2ViUGFnZTo6dmlkZW9GdWxsc2NyZWVuTWFu
YWdlcigpCiB7CiAgICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIpCi0gICAgICAgIG1f
dmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNyZWF0
ZSh0aGlzKTsKLSAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmdldCgpOworICAg
ICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgPSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpjcmVhdGUoKnRoaXMsIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXIoKSk7CisgICAgcmV0dXJuICpt
X3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXI7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZDU5MTljYzgyODgzOGEyYTZmYTE1YjQ3
ODMxZDM2NDAwOGY2NmQxZi4uMGM0ODRlZDliNGQ3MGQzYzA1NDQzNTdlYzU1ZGE2NWIyNzQwM2Nl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0x
ODAsNiArMTgwLDcgQEAgY2xhc3MgV2ViTm90aWZpY2F0aW9uQ2xpZW50OwogY2xhc3MgV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXI7CiBjbGFzcyBXZWJQYWdlR3JvdXBQcm94eTsKIGNsYXNzIFdl
YlBhZ2VPdmVybGF5OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjsKIGNsYXNzIFdl
YlBvcHVwTWVudTsKIGNsYXNzIFdlYlVuZG9TdGVwOwogY2xhc3MgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOwpAQCAtMjUxLDcgKzI1Miw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5zcGVjdG9y
UGFnZSgpIHsgcmV0dXJuICEhbV9pbnNwZWN0b3JVSTsgfQogCiAjaWYgUExBVEZPUk0oSU9TKSB8
fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQotICAg
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIqIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKTsKKyAg
ICBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyKCk7Cisg
ICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYgdmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpOwog
I2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQgc2V0QWxsb3dzTWVkaWFEb2N1bWVu
dElubGluZVBsYXliYWNrKGJvb2wpOwpAQCAtMTMwOCw2ICsxMzEwLDcgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8V2ViSW5zcGVjdG9yPiBtX2luc3BlY3RvcjsKICAgICBSZWZQdHI8V2ViSW5zcGVj
dG9yVUk+IG1faW5zcGVjdG9yVUk7CiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAgIFJlZlB0cjxXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyPiBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXI7CiAgICAgUmVmUHRy
PFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+IG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlcjsKICNl
bmRpZgogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGFmNWQ4NmQwZGJkNTBiMTA5YTE2ZWU1ODhiNDI4NGU5YWUxMWFlNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5oCkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyX2gKKyNkZWZpbmUgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcl9oCisK
KyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0V2ZW50TGlzdGVuZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZWRpYUVs
ZW1lbnRFbnVtcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBBdHRhY2htZW50OworY2xhc3Mg
Q29ubmVjdGlvbjsKK2NsYXNzIE1lc3NhZ2VEZWNvZGVyOworY2xhc3MgTWVzc2FnZVJlY2VpdmVy
OworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBOb2RlOworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI7CisKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQgOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiwgcHVibGljIFdl
YkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBjcmVhdGUoV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlciYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29u
dGV4dChtYW5hZ2VyLCBjb250ZXh0SWQpKTsKKyAgICB9CisgICAgdmlydHVhbCB+V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dCgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBt
X21hbmFnZXIgPSBudWxscHRyOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ7CisKKyAgICAvLyBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UKKyAgICB2b2lkIHJlc2V0TWVkaWFTdGF0ZSgpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0RHVyYXRpb24oZG91YmxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEN1cnJlbnRUaW1l
KGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0QnVmZmVyZWRUaW1lKGRvdWJsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRSYXRlKGJv
b2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
U2Vla2FibGVSYW5nZXMoY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYpIG92ZXJyaWRlOworICAg
IHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wgdmFsdWUpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5n
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4m
IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBl
LCBXVEY6OlN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpIG92ZXJyaWRlOworCisgICAgV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dChXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
JiwgdWludDY0X3QgY29udGV4dElkKTsKKworICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIq
IG1fbWFuYWdlcjsKKyAgICB1aW50NjRfdCBtX2NvbnRleHRJZDsKK307CisKK2NsYXNzIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyPiBjcmVhdGUoV2ViUGFnZSYpOwor
ICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIoKTsKKworICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92
ZXJyaWRlOworCisgICAgdm9pZCBzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQmKTsKKyAgICB2b2lkIGNsZWFyUGxheWJhY2tDb250cm9sc01hbmFn
ZXIoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCYpOworICAgIHVpbnQ2NF90IGNvbnRleHRJZEZv
ck1lZGlhRWxlbWVudChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Jik7CisKK3Byb3RlY3RlZDoK
KyAgICBmcmllbmQgY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDsKKyAg
ICBmcmllbmQgY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjsKKworICAgIGV4cGxpY2l0
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIoV2ViUGFnZSYpOworCisgICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPFJlZlB0cjxXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dD4sIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0Pj4gTW9kZWxJbnRl
cmZhY2VUdXBsZTsKKyAgICBNb2RlbEludGVyZmFjZVR1cGxlIGNyZWF0ZU1vZGVsQW5kSW50ZXJm
YWNlKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgTW9kZWxJbnRlcmZhY2VUdXBsZSYgZW5zdXJl
TW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKTsKKyAgICBXZWJDb3JlOjpXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCYgZW5zdXJlTW9kZWwodWludDY0X3QgY29u
dGV4dElkKTsKKyAgICBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0JiBlbnN1cmVJ
bnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHJlbW92ZUNvbnRleHQodWlu
dDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGFkZENsaWVudEZvckNvbnRleHQodWludDY0X3Qg
Y29udGV4dElkKTsKKyAgICB2b2lkIHJlbW92ZUNsaWVudEZvckNvbnRleHQodWludDY0X3QgY29u
dGV4dElkKTsKKworICAgIC8vIEludGVyZmFjZSB0byBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VDb250ZXh0CisgICAgdm9pZCByZXNldE1lZGlhU3RhdGUodWludDY0X3QgY29udGV4dElkKTsK
KyAgICB2b2lkIHNldER1cmF0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlKTsKKyAgICB2
b2lkIHNldEN1cnJlbnRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1l
LCBkb3VibGUgYW5jaG9yVGltZSk7CisgICAgdm9pZCBzZXRCdWZmZXJlZFRpbWUodWludDY0X3Qg
Y29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKTsKKyAgICB2b2lkIHNldFJhdGUodWludDY0
X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKTsKKyAgICB2
b2lkIHNldFNlZWthYmxlUmFuZ2VzKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6
VGltZVJhbmdlcyYpOworICAgIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKHVpbnQ2NF90IGNv
bnRleHRJZCwgYm9vbCB2YWx1ZSk7CisgICAgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1
aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9u
cywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCk7CisgICAgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNr
KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBlbmFibGVkLCBXZWJDb3JlOjpXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2U6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxp
emVkRGV2aWNlTmFtZSk7CisgICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wpOworCisgICAgLy8gTWVzc2FnZXMgZnJvbSBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkKKyAgICB2b2lkIHBsYXkodWludDY0X3QgY29udGV4
dElkKTsKKyAgICB2b2lkIHBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCB0b2dn
bGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGJlZ2luU2NydWJiaW5n
KHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBlbmRTY3J1YmJpbmcodWludDY0X3QgY29u
dGV4dElkKTsKKyAgICB2b2lkIHNlZWtUb1RpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUg
dGltZSk7CisgICAgdm9pZCBmYXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1l
KTsKKyAgICB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCk7Cisg
ICAgdm9pZCBiZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2
b2lkIGVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBzZWxlY3RBdWRp
b01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpOworICAgIHZv
aWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qg
aW5kZXgpOworCisgICAgV2ViUGFnZSogbV9wYWdlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudCosIHVpbnQ2NF90PiBtX21lZGlhRWxlbWVudHM7CisgICAgSGFzaE1hcDx1
aW50NjRfdCwgTW9kZWxJbnRlcmZhY2VUdXBsZT4gbV9jb250ZXh0TWFwOworICAgIHVpbnQ2NF90
IG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkIHsgMCB9OworICAgIEhhc2hNYXA8dWludDY0X3Qs
IGludD4gbV9jbGllbnRDb3VudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKSkKKworI2VuZGlmIC8vIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1
NmM1OWUzMTQzNGE2NzlkNTRkOGEzNjAzNzljM2E3ZmYzZmQ1NTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKK21lc3NhZ2VzIC0+IFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXIgeworICAgIFBsYXkodWludDY0X3QgY29udGV4dElkKQorICAgIFBhdXNlKHVp
bnQ2NF90IGNvbnRleHRJZCkKKyAgICBUb2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElk
KQorICAgIEJlZ2luU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBFbmRTY3J1YmJp
bmcodWludDY0X3QgY29udGV4dElkKQorICAgIFNlZWtUb1RpbWUodWludDY0X3QgY29udGV4dElk
LCBkb3VibGUgdGltZSkKKyAgICBGYXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0
aW1lKQorICAgIEJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBC
ZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKQorICAgIEVuZFNjYW5uaW5n
KHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBTZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90
IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCisgICAgU2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9u
KHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCit9CisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzg0YjIyMzIzNjE2ODlkYTlkMjQwYmY5Y2VjZjFk
ZmVjOTQyODYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCkBAIC0wLDAgKzEsNDA4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXIuaCIKKworCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBF
TkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorCisjaW1wb3J0ICJBdHRhY2htZW50Lmgi
CisjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbXBvcnQgIldlYlBhZ2UuaCIK
KyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlcy5oIgorI2ltcG9ydCAi
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbXBvcnQgIldlYlBy
b2Nlc3MuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRXZl
bnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRXZlbnROYW1lcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9I
VE1MTWVkaWFFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW1wb3J0
IDxXZWJDb3JlL1RpbWVSYW5nZXMuaD4KKyNpbXBvcnQgPG1hY2gvbWFjaF9wb3J0Lmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHVp
bnQ2NF90IG5leHRDb250ZXh0SWQoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBjb250ZXh0SWQg
PSAwOworICAgIHJldHVybiArK2NvbnRleHRJZDsKK30KKworI3ByYWdtYSBtYXJrIC0gV2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dAorCitXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VDb250ZXh0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXImIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICA6IG1fbWFu
YWdlcigmbWFuYWdlcikKKyAgICAsIG1fY29udGV4dElkKGNvbnRleHRJZCkKK3sKK30KKworV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6fldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUNvbnRleHQoKQoreworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNv
bnRleHQ6OnJlc2V0TWVkaWFTdGF0ZSgpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAg
bV9tYW5hZ2VyLT5yZXNldE1lZGlhU3RhdGUobV9jb250ZXh0SWQpOworfQorCit2b2lkIFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlv
bikKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnNldER1cmF0aW9u
KG1fY29udGV4dElkLCBkdXJhdGlvbik7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQ29udGV4dDo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUg
YW5jaG9yVGltZSkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnNl
dEN1cnJlbnRUaW1lKG1fY29udGV4dElkLCBjdXJyZW50VGltZSwgYW5jaG9yVGltZSk7Cit9CisK
K3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0QnVmZmVyZWRUaW1l
KGRvdWJsZSBidWZmZXJlZFRpbWUpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9t
YW5hZ2VyLT5zZXRCdWZmZXJlZFRpbWUobV9jb250ZXh0SWQsIGJ1ZmZlcmVkVGltZSk7Cit9CisK
K3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0UmF0ZShib29sIGlz
UGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAg
ICAgIG1fbWFuYWdlci0+c2V0UmF0ZShtX2NvbnRleHRJZCwgaXNQbGF5aW5nLCBwbGF5YmFja1Jh
dGUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldFNl
ZWthYmxlUmFuZ2VzKGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmIHJhbmdlcykKK3sKKyAgICBp
ZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnNldFNlZWthYmxlUmFuZ2VzKG1fY29u
dGV4dElkLCByYW5nZXMpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNv
bnRleHQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIHZhbHVlKQoreworICAgIGlmIChtX21h
bmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+c2V0Q2FuUGxheUZhc3RSZXZlcnNlKG1fY29udGV4
dElkLCB2YWx1ZSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4
dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5n
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBpZiAobV9tYW5hZ2Vy
KQorICAgICAgICBtX21hbmFnZXItPnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKG1fY29u
dGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgp
Cit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT5zZXRMZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb25zKG1fY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsK
K30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRFeHRlcm5h
bFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdHlwZSwg
V1RGOjpTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQor
ICAgICAgICBtX21hbmFnZXItPnNldEV4dGVybmFsUGxheWJhY2sobV9jb250ZXh0SWQsIGVuYWJs
ZWQsIHR5cGUsIGxvY2FsaXplZERldmljZU5hbWUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUNvbnRleHQ6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJv
b2wgZGlzYWJsZWQpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT5z
ZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChtX2NvbnRleHRJZCwgZGlzYWJsZWQpOwor
fQorCisjcHJhZ21hIG1hcmsgLSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyCisKK1JlZjxXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyPiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGUo
V2ViUGFnZSYgcGFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyKHBhZ2UpKTsKK30KKworV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcihXZWJQYWdlJiBwYWdlKQorICAgIDogbV9wYWdlKCZwYWdl
KQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBw
YWdlLnBhZ2VJRCgpLCAqdGhpcyk7Cit9CisKK1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6On5X
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyKCkKK3sKKyAgICBmb3IgKGF1dG8mIHR1cGxlIDogbV9j
b250ZXh0TWFwLnZhbHVlcygpKSB7CisgICAgICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudD4gbW9kZWw7CisgICAgICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7CisgICAgICAgIHN0ZDo6dGllKG1vZGVsLCBp
bnRlcmZhY2UpID0gdHVwbGU7CisKKyAgICAgICAgbW9kZWwtPnNldFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZShudWxscHRyKTsKKyAgICAgICAgbW9kZWwtPnNldE1lZGlhRWxlbWVudChudWxs
cHRyKTsKKworICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKKyAgICB9CisKKyAgICBt
X2NvbnRleHRNYXAuY2xlYXIoKTsKKyAgICBtX21lZGlhRWxlbWVudHMuY2xlYXIoKTsKKyAgICBt
X2NsaWVudENvdW50cy5jbGVhcigpOworCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCitXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlIFdlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAg
ICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1vZGVsID0gV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOworICAgIFJlZlB0cjxX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2UgPSBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7CisKKyAg
ICBtb2RlbC0+c2V0V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKGludGVyZmFjZS5nZXQoKSk7
CisKKyAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1vdmUobW9kZWwpLCBXVEZNb3ZlKGlu
dGVyZmFjZSkpOworfQorCitXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpNb2RlbEludGVyZmFj
ZVR1cGxlJiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjplbnN1cmVNb2RlbEFuZEludGVyZmFj
ZSh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2NvbnRleHRN
YXAuYWRkKGNvbnRleHRJZCwgTW9kZWxJbnRlcmZhY2VUdXBsZSgpKTsKKyAgICBpZiAoYWRkUmVz
dWx0LmlzTmV3RW50cnkpCisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBjcmVh
dGVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworICAgIHJldHVybiBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlOworfQorCitXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudCYgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5zdXJlTW9kZWwodWludDY0X3Qg
Y29udGV4dElkKQoreworICAgIHJldHVybiAqc3RkOjpnZXQ8MD4oZW5zdXJlTW9kZWxBbmRJbnRl
cmZhY2UoY29udGV4dElkKSk7Cit9CisKK1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRl
eHQmIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmVuc3VyZUludGVyZmFjZSh1aW50NjRfdCBj
b250ZXh0SWQpCit7CisgICAgcmV0dXJuICpzdGQ6OmdldDwxPihlbnN1cmVNb2RlbEFuZEludGVy
ZmFjZShjb250ZXh0SWQpKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpy
ZW1vdmVDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBSZWZQdHI8V2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1vZGVsOworICAgIFJlZlB0cjxXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7CisgICAgc3RkOjp0aWUobW9kZWws
IGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworCisgICAg
UmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IG1lZGlhRWxlbWVudCA9IG1vZGVsLT5tZWRpYUVsZW1l
bnQoKTsKKyAgICBtb2RlbC0+c2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOworICAgIG1vZGVsLT5z
ZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UobnVsbHB0cik7CisgICAgaW50ZXJmYWNlLT5p
bnZhbGlkYXRlKCk7CisgICAgbV9tZWRpYUVsZW1lbnRzLnJlbW92ZShtZWRpYUVsZW1lbnQuZ2V0
KCkpOworICAgIG1fY29udGV4dE1hcC5yZW1vdmUoY29udGV4dElkKTsKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjphZGRDbGllbnRGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRl
eHRJZCkKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fY2xpZW50Q291bnRzLmFkZChjb250ZXh0
SWQsIDEpOworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUrKzsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpyZW1vdmVDbGllbnRGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBBU1NF
UlQobV9jbGllbnRDb3VudHMuY29udGFpbnMoY29udGV4dElkKSk7CisKKyAgICBpbnQgY2xpZW50
Q291bnQgPSBtX2NsaWVudENvdW50cy5nZXQoY29udGV4dElkKTsKKyAgICBBU1NFUlQoY2xpZW50
Q291bnQgPiAwKTsKKyAgICBjbGllbnRDb3VudC0tOworCisgICAgaWYgKGNsaWVudENvdW50IDw9
IDApIHsKKyAgICAgICAgbV9jbGllbnRDb3VudHMucmVtb3ZlKGNvbnRleHRJZCk7CisgICAgICAg
IHJlbW92ZUNvbnRleHQoY29udGV4dElkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fY2xpZW50Q291bnRzLnNldChjb250ZXh0SWQsIGNsaWVudENvdW50KTsKK30KKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKK3sKKyNpZiBQTEFURk9STShN
QUMpCisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5jb250YWlucygmbWVkaWFFbGVtZW50KSkgewor
ICAgICAgICB1aW50NjRfdCBjb250ZXh0SWQgPSBtX21lZGlhRWxlbWVudHMuZ2V0KCZtZWRpYUVs
ZW1lbnQpOworICAgICAgICBpZiAobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgPT0gY29udGV4
dElkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChtX2NvbnRyb2xzTWFuYWdl
ckNvbnRleHRJZCkKKyAgICAgICAgICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQobV9jb250cm9s
c01hbmFnZXJDb250ZXh0SWQpOworICAgICAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9
IGNvbnRleHRJZDsKKyAgICB9IGVsc2UgeworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbWVk
aWFFbGVtZW50cy5lbnN1cmUoJm1lZGlhRWxlbWVudCwgWyZdIHsgcmV0dXJuIG5leHRDb250ZXh0
SWQoKTsgfSk7CisgICAgICAgIGF1dG8gY29udGV4dElkID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZTsKKyAgICAgICAgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgPSBjb250ZXh0SWQ7Cisg
ICAgICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2V0TWVkaWFFbGVtZW50KCZtZWRpYUVsZW1l
bnQpOworICAgIH0KKworICAgIGFkZENsaWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJD
b250ZXh0SWQpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpTZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0aElEKG1fY29udHJv
bHNNYW5hZ2VyQ29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisjZW5kaWYKK30KKwordm9p
ZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKK3sKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5jb250YWlucygmbWVkaWFFbGVtZW50KSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgdWludDY0X3QgY29udGV4dElkID0gbV9tZWRpYUVsZW1l
bnRzLmdldCgmbWVkaWFFbGVtZW50KTsKKyAgICBpZiAobV9jb250cm9sc01hbmFnZXJDb250ZXh0
SWQgIT0gY29udGV4dElkKQorICAgICAgICByZXR1cm47CisKKyAgICByZW1vdmVDbGllbnRGb3JD
b250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKTsKKyAgICBtX2NvbnRyb2xzTWFuYWdl
ckNvbnRleHRJZCA9IDA7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OkNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisjZW5kaWYKK30KKwordWludDY0X3QgV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6Y29udGV4dElkRm9yTWVkaWFFbGVtZW50KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQm
IG1lZGlhRWxlbWVudCkKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbWVkaWFFbGVtZW50cy5l
bnN1cmUoJm1lZGlhRWxlbWVudCwgWyZdIHsgcmV0dXJuIG5leHRDb250ZXh0SWQoKTsgfSk7Cisg
ICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cit9CisKKyNwcmFnbWEgbWFyayBJ
bnRlcmZhY2UgdG8gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDoKKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpyZXNldE1lZGlhU3RhdGUodWludDY0X3QgY29udGV4
dElkKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpSZXNldE1lZGlhU3RhdGUoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7
Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0RHVyYXRpb24odWludDY0
X3QgY29udGV4dElkLCBkb3VibGUgZHVyYXRpb24pCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldER1cmF0aW9uKGNvbnRleHRJ
ZCwgZHVyYXRpb24pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50VGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBj
dXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldEN1cnJlbnRUaW1lKGNvbnRl
eHRJZCwgY3VycmVudFRpbWUsIGFuY2hvclRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwor
dm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRCdWZmZXJlZFRpbWUodWludDY0X3Qg
Y29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRCdWZmZXJlZFRpbWUoY29u
dGV4dElkLCBidWZmZXJlZFRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBp
c1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0UmF0ZShjb250ZXh0SWQsIGlz
UGxheWluZywgcGxheWJhY2tSYXRlKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0U2Vla2FibGVSYW5nZXModWludDY0X3QgY29udGV4
dElkLCBjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQoreworICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiByYW5nZXNWZWN0b3I7CisKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdGltZVJhbmdlcy5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIEV4
Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZTsKKyAgICAgICAgZG91YmxlIHN0YXJ0ID0gdGltZVJh
bmdlcy5zdGFydChpLCBleGNlcHRpb25Db2RlKTsKKyAgICAgICAgZG91YmxlIGVuZCA9IHRpbWVS
YW5nZXMuZW5kKGksIGV4Y2VwdGlvbkNvZGUpOworICAgICAgICByYW5nZXNWZWN0b3IuYXBwZW5k
KHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4oc3RhcnQsIGVuZCkpOworICAgIH0KKworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRT
ZWVrYWJsZVJhbmdlc1ZlY3Rvcihjb250ZXh0SWQsIFdURk1vdmUocmFuZ2VzVmVjdG9yKSksIG1f
cGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNl
dENhblBsYXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCit7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OlNldENhblBsYXlGYXN0UmV2ZXJzZShjb250ZXh0SWQsIHZhbHVlKSwgbV9wYWdlLT5wYWdlSUQo
KSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0QXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbnMoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5w
YWdlSUQoKSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0TGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQoreworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCks
IG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OnNldEV4dGVybmFsUGxheWJhY2sodWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFy
Z2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCit7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldEV4dGVybmFsUGxh
eWJhY2tQcm9wZXJ0aWVzKGNvbnRleHRJZCwgZW5hYmxlZCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHRhcmdldFR5cGUpLCBsb2NhbGl6ZWREZXZpY2VOYW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9
CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0V2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGRpc2FibGVkKQoreworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRX
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChjb250ZXh0SWQsIGRpc2FibGVkKSk7Cit9CisK
KyNwcmFnbWEgbWFyayBNZXNzYWdlcyBmcm9tIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eToKKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpwbGF5KHVpbnQ2NF90IGNvbnRl
eHRJZCkKK3sKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnBsYXkoKTsKK30KKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpwYXVzZSh1aW50NjRfdCBjb250ZXh0SWQpCit7Cisg
ICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5wYXVzZSgpOworfQorCit2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OnRvZ2dsZVBsYXlTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCit7Cisg
ICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS50b2dnbGVQbGF5U3RhdGUoKTsKK30KKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpiZWdpblNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0
SWQpCit7CisgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5iZWdpblNjcnViYmluZygpOworfQor
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmVuZFNjcnViYmluZyh1aW50NjRfdCBj
b250ZXh0SWQpCit7CisgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5lbmRTY3J1YmJpbmcoKTsK
K30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWVrVG9UaW1lKHVpbnQ2NF90
IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpCit7CisgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5z
ZWVrVG9UaW1lKHRpbWUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmZh
c3RTZWVrKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpCit7CisgICAgZW5zdXJlTW9k
ZWwoY29udGV4dElkKS5mYXN0U2Vlayh0aW1lKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpiZWdpblNjYW5uaW5nRm9yd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCit7Cisg
ICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5iZWdpblNjYW5uaW5nRm9yd2FyZCgpOworfQorCit2
b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCh1aW50
NjRfdCBjb250ZXh0SWQpCit7CisgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5iZWdpblNjYW5u
aW5nQmFja3dhcmQoKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjplbmRT
Y2FubmluZyh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgZW5zdXJlTW9kZWwoY29udGV4dElk
KS5lbmRTY2FubmluZygpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNl
bGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkK
K3sKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oaW5k
ZXgpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNlbGVjdExlZ2libGVN
ZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQoreworICAgIGVu
c3VyZU1vZGVsKGNvbnRleHRJZCkuc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKGluZGV4KTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpIHx8IChQ
TEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5oCmluZGV4IDY2ZDMwZjUyOWE4NDRkNWEyNjUxZDdlZWUyYTg4MWRmMThmNzE2
OTguLjI3NjViOGVkM2NjMmNkZWFkNmM2ZDE1MzQ4NjNmYzMxY2ZkOTFkNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5oCkBAIC01MiwxMyArNTIsMTUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIExheWVySG9zdGluZ0NvbnRleHQ7CiBjbGFzcyBXZWJQYWdlOworY2xhc3MgV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDsKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI7CiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOwogCiBjbGFzcyBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQ29udGV4dD4sIHB1YmxpYyBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQ29udGV4dD4gY3JlYXRlKFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXImIG1hbmFn
ZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBzdGF0aWMgUmVmPFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUNvbnRleHQ+IGNyZWF0ZShXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyJiBtYW5h
Z2VyLCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0JiBwbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQobWFuYWdlciwgY29u
dGV4dElkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUNvbnRleHQobWFuYWdlciwgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLCBjb250
ZXh0SWQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
Q29udGV4dCgpOwogCkBAIC04MCwxMyArODIsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNG
dWxsc2NyZWVuKGJvb2wgZmxhZykgeyBtX2lzRnVsbHNjcmVlbiA9IGZsYWc7IH0KIAogcHJpdmF0
ZToKLSAgICAvLyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UKKyAgICAvLyBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2UKICAgICB2b2lkIHJlc2V0TWVkaWFTdGF0ZSgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2V0RHVyYXRpb24oZG91YmxlKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEN1cnJl
bnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2V0QnVmZmVyZWRUaW1lKGRvdWJsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRS
YXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOwotICAgIHZv
aWQgc2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoY29uc3QgV2ViQ29y
ZTo6VGltZVJhbmdlcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNl
KGJvb2wgdmFsdWUpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0
ZWRJbmRleCkgb3ZlcnJpZGU7CkBAIC05NCw5ICs5NSwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRU
eXBlLCBXVEY6OlN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKICAgICB2b2lk
IHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpIG92ZXJyaWRlOwogCi0gICAg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dChXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyJiwgdWludDY0X3QgY29udGV4dElkKTsKKyAgICAvLyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2UKKyAgICB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3
aWR0aCwgZmxvYXQgaGVpZ2h0KSBvdmVycmlkZTsKKworICAgIFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUNvbnRleHQoV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYsIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUNvbnRleHQmLCB1aW50NjRfdCBjb250ZXh0SWQpOwogCiAgICAgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlciogbV9tYW5hZ2VyOworICAgIFJlZjxXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VDb250ZXh0PiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKICAgICB1aW50
NjRfdCBtX2NvbnRleHRJZDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4
dD4gbV9sYXllckhvc3RpbmdDb250ZXh0OwogICAgIGJvb2wgbV9pc0FuaW1hdGluZyB7IGZhbHNl
IH07CkBAIC0xMDcsNyArMTEyLDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+
LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYlBhZ2U+KTsK
KyAgICBzdGF0aWMgUmVmPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+IGNyZWF0ZShXZWJQYWdl
JiwgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciYpOwogICAgIHZpcnR1YWwgfldlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIoKTsKICAgICAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKQEAgLTExNywxMyAr
MTIyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9F
bGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwogICAgIHZvaWQgZXhpdFZpZGVvRnVsbHNj
cmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Jik7CiAgICAgdm9p
ZCBleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50JiwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlKTsKLSAgICB2b2lkIHNldFVwVmlkZW9Db250cm9sc01hbmFnZXIoV2ViQ29yZTo6
SFRNTFZpZGVvRWxlbWVudCYpOwotICAgIHZvaWQgY2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigp
OwotICAgIAorCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUNvbnRleHQ7CiAKLSAgICBleHBsaWNpdCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyKFBhc3NSZWZQdHI8V2ViUGFnZT4pOworICAgIGV4cGxpY2l0IFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIoV2ViUGFnZSYsIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXImKTsKIAogICAgIHR5
cGVkZWYgc3RkOjp0dXBsZTxSZWZQdHI8V2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ+LCBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4+
IE1vZGVsSW50ZXJmYWNlVHVwbGU7CiAgICAgTW9kZWxJbnRlcmZhY2VUdXBsZSBjcmVhdGVNb2Rl
bEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpOwpAQCAtMTM1LDMwICsxMzgsOSBAQCBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCByZW1vdmVDbGllbnRGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRl
eHRJZCk7CiAKICAgICAvLyBJbnRlcmZhY2UgdG8gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
Q29udGV4dAotICAgIHZvaWQgcmVzZXRNZWRpYVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0g
ICAgdm9pZCBzZXREdXJhdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSk7Ci0gICAgdm9p
ZCBzZXRDdXJyZW50VGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGltZSwg
ZG91YmxlIGFuY2hvclRpbWUpOwotICAgIHZvaWQgc2V0QnVmZmVyZWRUaW1lKHVpbnQ2NF90IGNv
bnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSk7Ci0gICAgdm9pZCBzZXRSYXRlKHVpbnQ2NF90
IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSk7CiAgICAgdm9p
ZCBzZXRWaWRlb0RpbWVuc2lvbnModWludDY0X3QgY29udGV4dElkLCBib29sIGhhc1ZpZGVvLCBm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKLSAgICB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKHVp
bnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYpOwotICAgIHZvaWQg
c2V0Q2FuUGxheUZhc3RSZXZlcnNlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSk7Ci0g
ICAgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsK
LSAgICB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4
dElkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCk7Ci0gICAgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9v
bCBlbmFibGVkLCBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U6OkV4dGVybmFs
UGxheWJhY2tUYXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSk7Ci0gICAgdm9p
ZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJv
b2wpOwogCiAgICAgLy8gTWVzc2FnZXMgZnJvbSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkKLSAgICB2b2lkIHBsYXkodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHBhdXNlKHVp
bnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCB0b2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29u
dGV4dElkKTsKLSAgICB2b2lkIGJlZ2luU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0g
ICAgdm9pZCBlbmRTY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHNlZWtU
b1RpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSk7Ci0gICAgdm9pZCBmYXN0U2Vl
ayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKTsKLSAgICB2b2lkIGJlZ2luU2Nhbm5p
bmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBiZWdpblNjYW5uaW5nQmFj
a3dhcmQodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGVuZFNjYW5uaW5nKHVpbnQ2NF90
IGNvbnRleHRJZCk7CiAgICAgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29u
dGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUpOwogICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAg
ICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpOwpAQCAtMTY2LDEy
ICsxNDgsMTEgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4odWlu
dDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZCh1aW50
NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZHMsIElQQzo6QXR0YWNobWVu
dCBmZW5jZVBvcnQpOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHlFbnVtKHVpbnQ2NF90
IGNvbnRleHRJZCwgdW5zaWduZWQgZ3Jhdml0eSk7Ci0gICAgdm9pZCBzZWxlY3RBdWRpb01lZGlh
T3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpOwotICAgIHZvaWQgc2Vs
ZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgp
OwogICAgIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICB2
b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wg
aXNQYWdlVmlzaWJsZSk7CiAgICAgCiAgICAgV2ViUGFnZSogbV9wYWdlOworICAgIFJlZjxXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyPiBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXI7CiAgICAgSGFz
aE1hcDxXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50KiwgdWludDY0X3Q+IG1fdmlkZW9FbGVtZW50
czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBNb2RlbEludGVyZmFjZVR1cGxlPiBtX2NvbnRleHRN
YXA7CiAgICAgdWludDY0X3QgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgeyAwIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggODNkZGZlMjBiMDY5NWVk
Zjc0NmU5NDhmYWIzZTM4ZjZjMDBmNzU5NS4uN2JmYzExYTM5MWQxZDZjZmU3YzhjMjlmNWZlMjJk
YmQ5NjI5YmJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgpA
QCAtMjIsMTYgKzIyLDYgQEAKIAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIG1lc3NhZ2VzIC0+IFdlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIgewotICAgIFBsYXkodWludDY0X3QgY29udGV4dElkKQotICAgIFBh
dXNlKHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBUb2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29u
dGV4dElkKQotICAgIEJlZ2luU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBFbmRT
Y3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQotICAgIFNlZWtUb1RpbWUodWludDY0X3QgY29u
dGV4dElkLCBkb3VibGUgdGltZSkKLSAgICBGYXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRv
dWJsZSB0aW1lKQotICAgIEJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkK
LSAgICBCZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKQotICAgIEVuZFNj
YW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBSZXF1ZXN0RnVsbHNjcmVlbk1vZGUodWlu
dDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKICAgICBEaWRTZXR1cEZ1bGxzY3JlZW4o
dWludDY0X3QgY29udGV4dElkKQogICAgIERpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRl
eHRJZCkKQEAgLTM5LDggKzI5LDYgQEAgbWVzc2FnZXMgLT4gV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlciB7CiAgICAgRGlkQ2xlYW51cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAg
IFNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZCh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkZs
b2F0UmVjdCBib3VuZHMsIElQQzo6QXR0YWNobWVudCBmZW5jZVBvcnQpCiAgICAgU2V0VmlkZW9M
YXllckdyYXZpdHlFbnVtKHVpbnQ2NF90IGNvbnRleHRJZCwgdW5zaWduZWQgZ3Jhdml0eSkKLSAg
ICBTZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5k
ZXgpCi0gICAgU2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWlu
dDY0X3QgaW5kZXgpCiAgICAgRnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZp
ZGVvRnVsbHNjcmVlbk1vZGUpCiAgICAgRnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2
NF90IGNvbnRleHRJZCwgYm9vbCBpc1BhZ2VWaXNpYmxlKQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCmluZGV4IDY5M2NjZmMwYWUzNDY3OWVkMDcwMTM3N2YwMDhlNGQzYTNmMmJiYmUuLmFiYjA5
MTU5YmI1N2MxYjRkNzEwYmM0YWU5OTY2MWY3MDE5ZmU3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIkF0dGFjaG1lbnQuaCIKICNpbXBvcnQg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCAiV2ViUGFnZS5oIgorI2ltcG9ydCAi
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2lt
cG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgpAQCAtNTksMTYgKzYwLDExIEBA
IHN0YXRpYyBJbnRSZWN0IGNsaWVudFJlY3RGb3JFbGVtZW50KEhUTUxFbGVtZW50KiBlbGVtZW50
KQogICAgIHJldHVybiBlbGVtZW50LT5jbGllbnRSZWN0KCk7CiB9CiAKLXN0YXRpYyB1aW50NjRf
dCBuZXh0Q29udGV4dElkKCkKLXsKLSAgICBzdGF0aWMgdWludDY0X3QgY29udGV4dElkID0gMDsK
LSAgICByZXR1cm4gKytjb250ZXh0SWQ7Ci19Ci0KICNwcmFnbWEgbWFyayAtIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUNvbnRleHQKIAotV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dChXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyJiBtYW5hZ2VyLCB1aW50NjRfdCBjb250ZXh0SWQpCitXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VDb250ZXh0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0KFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXImIG1hbmFnZXIsIFdlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUNvbnRleHQmIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSwgdWludDY0X3QgY29udGV4dElk
KQogICAgIDogbV9tYW5hZ2VyKCZtYW5hZ2VyKQorICAgICwgbV9wbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UocGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQogICAgICwgbV9jb250ZXh0SWQoY29udGV4
dElkKQogewogfQpAQCAtODQsMzIgKzgwLDI3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQ29udGV4dDo6c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChzdGQ6OnVuaXF1ZV9wdHI8CiAK
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6cmVzZXRNZWRpYVN0YXRl
KCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnJlc2V0TWVkaWFT
dGF0ZShtX2NvbnRleHRJZCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnJlc2V0
TWVkaWFTdGF0ZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRl
eHQ6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQot
ICAgICAgICBtX21hbmFnZXItPnNldER1cmF0aW9uKG1fY29udGV4dElkLCBkdXJhdGlvbik7Cisg
ICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKIH0K
IAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRDdXJyZW50VGlt
ZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQogewotICAgIGlmIChtX21h
bmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0Q3VycmVudFRpbWUobV9jb250ZXh0SWQsIGN1
cnJlbnRUaW1lLCBhbmNob3JUaW1lKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
c2V0Q3VycmVudFRpbWUoY3VycmVudFRpbWUsIGFuY2hvclRpbWUpOwogfQogCiB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldEJ1ZmZlcmVkVGltZShkb3VibGUgYnVm
ZmVyZWRUaW1lKQogewotICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0
QnVmZmVyZWRUaW1lKG1fY29udGV4dElkLCBidWZmZXJlZFRpbWUpOworICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRCdWZmZXJlZFRpbWUoYnVmZmVyZWRUaW1lKTsKIH0KIAogdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRSYXRlKGJvb2wgaXNQbGF5
aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAg
bV9tYW5hZ2VyLT5zZXRSYXRlKG1fY29udGV4dElkLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSk7
CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldFJhdGUoaXNQbGF5aW5nLCBwbGF5
YmFja1JhdGUpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6
OnNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVp
Z2h0KQpAQCAtMTIwLDUxICsxMTEsNDYgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VDb250ZXh0OjpzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQKIAogdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRTZWVrYWJsZVJhbmdlcyhj
b25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJiByYW5nZXMpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikK
LSAgICAgICAgbV9tYW5hZ2VyLT5zZXRTZWVrYWJsZVJhbmdlcyhtX2NvbnRleHRJZCwgcmFuZ2Vz
KTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0U2Vla2FibGVSYW5nZXMocmFu
Z2VzKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRD
YW5QbGF5RmFzdFJldmVyc2UoYm9vbCB2YWx1ZSkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAg
ICAgICBtX21hbmFnZXItPnNldENhblBsYXlGYXN0UmV2ZXJzZShtX2NvbnRleHRJZCwgdmFsdWUp
OworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDYW5QbGF5RmFzdFJldmVyc2Uo
dmFsdWUpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNl
dEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAg
ICAgICAgbV9tYW5hZ2VyLT5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhtX2NvbnRleHRJ
ZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UtPnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgp
OwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldExlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9u
cywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAg
ICBtX21hbmFnZXItPnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMobV9jb250ZXh0SWQs
IG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
LT5zZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgp
OwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldEV4dGVy
bmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0eXBl
LCBXVEY6OlN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKQogewotICAgIGlmIChtX21hbmFnZXIp
Ci0gICAgICAgIG1fbWFuYWdlci0+c2V0RXh0ZXJuYWxQbGF5YmFjayhtX2NvbnRleHRJZCwgZW5h
YmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UtPnNldEV4dGVybmFsUGxheWJhY2soZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2
aWNlTmFtZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6
c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKIHsKLSAgICBp
ZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkKG1fY29udGV4dElkLCBkaXNhYmxlZCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UtPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGRpc2FibGVkKTsKIH0K
IAogI3ByYWdtYSBtYXJrIC0gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcgogCi1SZWY8V2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcj4gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6Y3JlYXRlKFBh
c3NSZWZQdHI8V2ViUGFnZT4gcGFnZSkKK1JlZjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGUoV2ViUGFnZSYgcGFnZSwgV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlciYgcGxheWJhY2tTZXNzaW9uTWFuYWdlcikKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKHBhZ2UpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKHBhZ2UsIHBsYXliYWNr
U2Vzc2lvbk1hbmFnZXIpKTsKIH0KIAotV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6V2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcihQYXNzUmVmUHRyPFdlYlBhZ2U+IHBhZ2UpCi0gICAgOiBtX3Bh
Z2UocGFnZS5nZXQoKSkKK1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OldlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIoV2ViUGFnZSYgcGFnZSwgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciYgcGxh
eWJhY2tTZXNzaW9uTWFuYWdlcikKKyAgICA6IG1fcGFnZSgmcGFnZSkKKyAgICAsIG1fcGxheWJh
Y2tTZXNzaW9uTWFuYWdlcihwbGF5YmFja1Nlc3Npb25NYW5hZ2VyKQogewotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBwYWdlLT5wYWdlSUQoKSwgKnRo
aXMpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBw
YWdlLnBhZ2VJRCgpLCAqdGhpcyk7CiB9CiAKIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6On5X
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkKQEAgLTE4OSw4ICsxNzUsMTAgQEAgV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6fldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKQogCiBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsK
LSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsID0g
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSgpOwotICAgIFJlZlB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2UgPSBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7Cisg
ICAgYXV0byYgcGxheWJhY2tTZXNzaW9uTW9kZWwgPSBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIt
PmVuc3VyZU1vZGVsKGNvbnRleHRJZCk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50PiBtb2RlbCA9IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50OjpjcmVhdGUocGxheWJhY2tTZXNzaW9uTW9kZWwpOworICAgIGF1dG8mIHBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZSA9IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlci0+ZW5zdXJlSW50ZXJmYWNl
KGNvbnRleHRJZCk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRl
eHQ+IGludGVyZmFjZSA9IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0
ZSgqdGhpcywgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLCBjb250ZXh0SWQpOwogCiAgICAgaW50
ZXJmYWNlLT5zZXRMYXllckhvc3RpbmdDb250ZXh0KExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0
ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKSk7CiAgICAgbW9kZWwtPnNldFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZShpbnRlcmZhY2UuZ2V0KCkpOwpAQCAtMjcyLDEyICsyNjAsOSBAQCB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlk
ZW9FbGVtZW50KEhUTUxWaWRlb0VsZQogewogICAgIEFTU0VSVChtb2RlICE9IEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogCi0gICAgdWludDY0X3QgY29u
dGV4dElkOwotCi0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3ZpZGVvRWxlbWVudHMuYWRkKCZ2aWRl
b0VsZW1lbnQsIDApOwotICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG5leHRDb250ZXh0SWQoKTsKLSAgICBjb250ZXh0SWQg
PSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgIHVpbnQ2NF90IGNvbnRleHRJZCA9IG1f
cGxheWJhY2tTZXNzaW9uTWFuYWdlci0+Y29udGV4dElkRm9yTWVkaWFFbGVtZW50KHZpZGVvRWxl
bWVudCk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3ZpZGVvRWxlbWVudHMuYWRkKCZ2aWRlb0Vs
ZW1lbnQsIGNvbnRleHRJZCk7CisgICAgQVNTRVJUKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PT0gY29udGV4dElkKTsKIAogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudD4gbW9kZWw7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNv
bnRleHQ+IGludGVyZmFjZTsKQEAgLTMyMSw0MSArMzA2LDYgQEAgdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6
OkhUTUwKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW4oY29udGV4dElkLCBjbGllbnRSZWN0Rm9yRWxlbWVudCgm
dmlkZW9FbGVtZW50KSksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCi12b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OnNldFVwVmlkZW9Db250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRNTFZp
ZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50KQotewotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAo
bV92aWRlb0VsZW1lbnRzLmNvbnRhaW5zKCZ2aWRlb0VsZW1lbnQpKSB7Ci0gICAgICAgIHVpbnQ2
NF90IGNvbnRleHRJZCA9IG1fdmlkZW9FbGVtZW50cy5nZXQoJnZpZGVvRWxlbWVudCk7Ci0gICAg
ICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9PSBjb250ZXh0SWQpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKQot
ICAgICAgICAgICAgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRyb2xzTWFuYWdlckNvbnRl
eHRJZCk7Ci0gICAgICAgIG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkID0gY29udGV4dElkOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV92aWRlb0VsZW1lbnRzLmVu
c3VyZSgmdmlkZW9FbGVtZW50LCBbJl0geyByZXR1cm4gbmV4dENvbnRleHRJZCgpOyB9KTsKLSAg
ICAgICAgYXV0byBjb250ZXh0SWQgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgICAg
ICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IGNvbnRleHRJZDsKLSAgICAgICAgZW5zdXJl
TW9kZWwoY29udGV4dElkKS5zZXRWaWRlb0VsZW1lbnQoJnZpZGVvRWxlbWVudCk7Ci0gICAgfQot
Ci0gICAgYWRkQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCk7Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OlNldFVwVmlkZW9Db250cm9sc01hbmFnZXJXaXRoSUQobV9jb250cm9sc01hbmFnZXJDb250ZXh0
SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSNlbmRpZgotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmNsZWFyVmlkZW9Db250cm9sc01hbmFnZXIoKQotewotI2lmIFBMQVRGT1JN
KE1BQykKLSAgICBpZiAoIW1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICByZW1vdmVDbGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4
dElkKTsKLSAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IDA7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFyVmlkZW9D
b250cm9sc01hbmFnZXIoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91
dEFuaW1hdGlvbihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQsIFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB0YXJnZXRNb2Rl
KQogewogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KQpAQCAtMzc1LDE0OSArMzI1LDIzIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yCiAKICNwcmFn
bWEgbWFyayBJbnRlcmZhY2UgdG8gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDoK
IAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXNldE1lZGlhU3RhdGUodWludDY0
X3QgY29udGV4dElkKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpSZXNldE1lZGlhU3RhdGUoY29udGV4dElkKSwgbV9wYWdlLT5w
YWdlSUQoKSk7Ci19Ci0gICAgCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldER1
cmF0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKQotewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXREdXJh
dGlvbihjb250ZXh0SWQsIGR1cmF0aW9uKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0Q3VycmVudFRpbWUodWludDY0X3QgY29udGV4
dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQotewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRDdXJy
ZW50VGltZShjb250ZXh0SWQsIGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKSwgbV9wYWdlLT5wYWdl
SUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0QnVmZmVyZWRU
aW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSkKLXsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0QnVm
ZmVyZWRUaW1lKGNvbnRleHRJZCwgYnVmZmVyZWRUaW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19
Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0UmF0ZSh1aW50NjRfdCBjb250
ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCi17Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldFJhdGUo
Y29udGV4dElkLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSksIG1fcGFnZS0+cGFnZUlEKCkpOwot
fQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvRGltZW5zaW9ucyh1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWln
aHQpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OlNldFZpZGVvRGltZW5zaW9ucyhjb250ZXh0SWQsIGhhc1ZpZGVvLCB3aWR0aCwg
aGVpZ2h0KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9Ci0gICAgCi12b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnNldFNlZWthYmxlUmFuZ2VzKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3Qg
V2ViQ29yZTo6VGltZVJhbmdlcyYgdGltZVJhbmdlcykKLXsKLSAgICBWZWN0b3I8c3RkOjpwYWly
PGRvdWJsZSwgZG91YmxlPj4gcmFuZ2VzVmVjdG9yOwotICAgIAotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB0aW1lUmFuZ2VzLmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgRXhjZXB0aW9u
Q29kZSBleGNlcHRpb25Db2RlOwotICAgICAgICBkb3VibGUgc3RhcnQgPSB0aW1lUmFuZ2VzLnN0
YXJ0KGksIGV4Y2VwdGlvbkNvZGUpOwotICAgICAgICBkb3VibGUgZW5kID0gdGltZVJhbmdlcy5l
bmQoaSwgZXhjZXB0aW9uQ29kZSk7Ci0gICAgICAgIHJhbmdlc1ZlY3Rvci5hcHBlbmQoc3RkOjpw
YWlyPGRvdWJsZSwgZG91YmxlPihzdGFydCwgZW5kKSk7Ci0gICAgfQotCi0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldFNlZWthYmxl
UmFuZ2VzVmVjdG9yKGNvbnRleHRJZCwgV1RGTW92ZShyYW5nZXNWZWN0b3IpKSwgbV9wYWdlLT5w
YWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0Q2FuUGxh
eUZhc3RSZXZlcnNlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSkKLXsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0Q2Fu
UGxheUZhc3RSZXZlcnNlKGNvbnRleHRJZCwgdmFsdWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0K
LQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRBdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25z
LCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9ucyhjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnMoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdl
LT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0RXh0
ZXJuYWxQbGF5YmFjayh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRUeXBl
LCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0RXh0ZXJuYWxQbGF5YmFja1By
b3BlcnRpZXMoY29udGV4dElkLCBlbmFibGVkLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odGFyZ2V0
VHlwZSksIGxvY2FsaXplZERldmljZU5hbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZGlzYWJsZWQpCi17Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldFdpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKGNvbnRleHRJZCwgZGlzYWJsZWQpKTsKLX0KIAogI3ByYWdt
YSBtYXJrIE1lc3NhZ2VzIGZyb20gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OgogCi12
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnBsYXkodWludDY0X3QgY29udGV4dElkKQot
ewotICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkucGxheSgpOwotfQotCi12b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OnBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBlbnN1
cmVNb2RlbChjb250ZXh0SWQpLnBhdXNlKCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6dG9nZ2xlUGxheVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBlbnN1
cmVNb2RlbChjb250ZXh0SWQpLnRvZ2dsZVBsYXlTdGF0ZSgpOwotfQotCi12b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OmJlZ2luU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKLXsK
LSAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmJlZ2luU2NydWJiaW5nKCk7Ci19Ci0KLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW5kU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKLXsKLSAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmVuZFNjcnViYmluZygpOwotfQotCi12
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNlZWtUb1RpbWUodWludDY0X3QgY29udGV4
dElkLCBkb3VibGUgdGltZSkKLXsKLSAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNlZWtUb1Rp
bWUodGltZSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZmFzdFNlZWso
dWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSkKLXsKLSAgICBlbnN1cmVNb2RlbChjb250
ZXh0SWQpLmZhc3RTZWVrKHRpbWUpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBlbnN1
cmVNb2RlbChjb250ZXh0SWQpLmJlZ2luU2Nhbm5pbmdGb3J3YXJkKCk7Ci19Ci0KLXZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKHVpbnQ2NF90IGNv
bnRleHRJZCkKLXsKLSAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmJlZ2luU2Nhbm5pbmdCYWNr
d2FyZCgpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVuZFNjYW5uaW5n
KHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmVuZFNj
YW5uaW5nKCk7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdEZ1
bGxzY3JlZW5Nb2RlKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CiAgICAgZW5zdXJlTW9kZWwoY29u
dGV4dElkKS5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUobW9kZSk7CiB9CiAKLXZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0
SWQsIHVpbnQ2NF90IGluZGV4KQotewotICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2VsZWN0
QXVkaW9NZWRpYU9wdGlvbihpbmRleCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0
X3QgaW5kZXgpCi17Ci0gICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZWxlY3RMZWdpYmxlTWVk
aWFPcHRpb24oaW5kZXgpOwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1
bGxzY3JlZW5Nb2RlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQog
ewogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHZpZGVv
RnVsbHNjcmVlbk1vZGUpOwogfQogCi0jcHJhZ21hIG1hcmsgTWVzc2FnZXMgZnJvbSBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOgotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRp
ZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiB7CiAgICAgUGxhdGZvcm1MYXll
ciogdmlkZW9MYXllciA9IFtDQUxheWVyIGxheWVyXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276434</attachid>
            <date>2016-04-14 14:43:58 -0700</date>
            <delta_ts>2016-04-14 15:12:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156564-20160414144411.patch</filename>
            <type>text/plain</type>
            <size>307978</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5Mjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFmZjVmNDQ4NDE3YTc1
ZjRkNTQ4ZjE4MjFhYTE2ZGFlODU1NGM3NC4uYTQ4NjZiMzE3YjI2OWZiMDA4MGYzZDYwY2NkZDZm
YTNjNGEwNzQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyOCBAQAorMjAxNi0wNC0xNCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyIGFuZCBQcm94eSB0byBiZSB1c2VkIGJ5IGF1ZGlvIGVsZW1lbnRzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NTY0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzOyB0aGlzIHJlZmFjdG9ycyBleGlzdGluZyBmdW5jdGlvbmFsaXR5IGludG8gbmV3IGNsYXNz
ZXMuCisKKyAgICAgICAgVGVhc2UgYXBhcnQgdGhlIHZhcmlvdXMgV2ViVmlkZW9GdWxsc2NyZWVu
e0ludGVyZmFjZSxNb2RlbH17QVZLaXQsTWFjLFZpZGVvRWxlbWVudH0gaW50byBuZXcKKyAgICAg
ICAgV2ViUGxheWJhY2tTZXNzaW9u4oCmIGNsYXNzZXMgZGVhbGluZyBleGNsdXNpdmVseSB3aXRo
IHBsYXliYWNrIHN0YXRlIGFuZCBjb21tYW5kcywgbGVhdmluZworICAgICAgICBmdWxsc2NyZWVu
IHN0YXRlIGFuZCBjb21tYW5kcyBpbiB0aGUgV2ViVmlkZW9GdWxsc2NyZWVu4oCmIGNsYXNzZXMu
IFNwZWNpZmljYWxseSwgY3JlYXRlIHRoZQorICAgICAgICBmb2xsb3dpbmcgbmV3IGNsYXNzZXM6
CisKKyAgICAgICAgLSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgKGNvcGllZCBmcm9tIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSkKKyAgICAgICAgLSBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudCAoY29waWVkIGZyb20gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRp
YUVsZW1lbnQpCisgICAgICAgIC0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwgKGNvcGllZCBmcm9t
IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICAtIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0IChjb3BpZWQgZnJvbSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dCkKKyAgICAgICAgLSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMgKGNvcGllZCBmcm9t
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYykKKworICAgICAgICBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UgYW5kIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsIG5vdyBpbmhlcml0IGZy
b20KKyAgICAgICAgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlIGFuZCBXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbCwgcmVzcGVjdGl2ZWx5LiBUaGUgY29uY3JldGUKKyAgICAgICAgV2ViVmlkZW9G
dWxsc2NyZWVu4oCmIHN1YmNsYXNzZXMgZWFjaCB0YWtlIHRoZWlyIHJlc3BlY3RpdmUgV2ViUGxh
eWJhY2tTZXNzaW9u4oCmIHN1YmNsYXNzZXMgYW5kCisgICAgICAgIGZ1bGZpbGwgdGhlaXIgV2Vi
UGxheWJhY2tTZXNzaW9uIGludGVyZmFjZXMgdGhyb3VnaCBjb21wb3NpdGlvbi4KKworICAgICAg
ICBBcyBwYXJ0IG9mIHRoaXMgYmlnIHRlYXNlLWFwYXJ0LCB0aGUgV2ViQVZQbGF5ZXJDb250cm9s
bGVyIGNsYXNzIG5lZWRzIHRvIGJlIGV4cG9zZWQgaW4gYQorICAgICAgICBoZWFkZXIgKGFzIGl0
J3MgYWNjZXNzZWQgYnkgdHdvIGRpZmZlcmVudCBjbGFzc2VzIG5vdyksIHNvIHRoYXQgY2xhc3Mg
aXMgbW92ZWQgaW50byBpdHMgb3duCisgICAgICAgIGltcGxlbWVudGF0aW9uIGFuZCBoZWFkZXIg
ZmlsZXMuCisKKyAgICAgICAgVGhlIG9uZSBjYXNlIHdoZXJlIGEgY2hhbmdlIGluIGEgV2ViUGxh
eWJhY2tTZXNzaW9u4oCmIGNsYXNzIG5lZWRzIHRvIGJlIHJlZmxlY3RlZCBpbiBhCisgICAgICAg
IFdlYlZpZGVvRnVsbHNjcmVlbuKApiBjbGFzcyBpcyBpbiBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdCwgd2hlcmUKKyAgICAgICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQgbmVlZHMgdG8gYmUgbm90aWZpZWQgd2hlbiBleHRlcm5hbCBwbGF5YmFjayBiZWNvbWVzIGRp
cy9lbi0KKyAgICAgICAgYWJsZWQsIHNvIGEgbmV3IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0Q2xpZW50IGludGVyZmFjZSBoYXMgYmVlbiBhZGRlZCB0byBhbGxvdyB0aGUKKyAgICAg
ICAgV2ViUGxheWJhY2tTZXNzaW9u4oCmIHRvIG5vdGlmeSB0aGUgV2ViVmlkZW9GdWxsc2NyZWVu
4oCmLgorCisgICAgICAgIFRoZSByZXNwb25zaWJpbGl0eSBmb3IgdGhlICJjb250cm9scyBtYW5h
Z2VyIiBoYXMgbW92ZWQgZnJvbSB0aGUgV2ViVmlkZW9GdWxsc2NyZWVu4oCmIGNsYXNzZXMKKyAg
ICAgICAgdG8gdGhlIFdlYlBsYXliYWNrU2Vzc2lvbuKApiBjbGFzc2VzLCBzbyB0aGUgQ2hyb21l
Q2xpZW50IGludGVyZmFjZSBmb3IgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcKKyAgICAgICAgdGhv
c2UgY29udHJvbHMgaXMgc2ltaWxhcmx5IHJlbmFtZWQgZnJvbSBzZXRVcFZpZGVvQ29udHJvbHNN
YW5hZ2VyKCkgdG8KKyAgICAgICAgc2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpLgorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZS5oLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlOjp+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjp+V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudDo6bWVkaWFFbGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbTogQWRkZWQuCisgICAgICAg
IChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6V2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxNZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQ6On5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCk6CisgICAgICAg
IChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2V0V2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50OjpzZXRNZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUpOgorICAgICAgICAoV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnBsYXkpOgorICAgICAgICAoV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnBhdXNlKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp0b2dnbGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmJlZ2luU2NydWJiaW5nKToKKyAgICAgICAg
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjplbmRTY3J1YmJpbmcpOgorICAg
ICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnNlZWtUb1RpbWUpOgor
ICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmZhc3RTZWVrKToK
KyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpiZWdpblNjYW5u
aW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50OjplbmRTY2FubmluZyk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbik6CisgICAgICAgIChX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0
aW9uKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRh
dGVMZWdpYmxlT3B0aW9ucyk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50OjpldmVudE5hbWVBbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50LmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQubW0uCisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVu
dDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6On5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZp
ZGVvRWxlbWVudCk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVu
dDo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OmhhbmRsZUV2ZW50KToKKyAgICAgICAg
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUp
OgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OnBsYXkpOgor
ICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OnBhdXNlKToKKyAg
ICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50Ojp0b2dnbGVQbGF5U3Rh
dGUpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OmJlZ2lu
U2NydWJiaW5nKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50
OjplbmRTY3J1YmJpbmcpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0Vs
ZW1lbnQ6OnNlZWtUb1RpbWUpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRl
b0VsZW1lbnQ6OmZhc3RTZWVrKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlk
ZW9FbGVtZW50OjpiZWdpblNjYW5uaW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKToKKyAgICAgICAg
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50OjplbmRTY2FubmluZyk6CisgICAg
ICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6c2VsZWN0QXVkaW9NZWRp
YU9wdGlvbik6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6
c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsVmlkZW9FbGVtZW50Ojp1cGRhdGVMZWdpYmxlT3B0aW9ucyk6CisgICAgICAgIChXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKToKKyAgICAg
ICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50OjpldmVudE5hbWVBbGwpOgor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmg6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6fldlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSk6CisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpwbGF5KToKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpwYXVzZSk6CisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6dG9nZ2xlUGxheVN0YXRlKToKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpiZWdpblNjcnViYmluZyk6Cisg
ICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZW5kU2NydWJiaW5n
KToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZWVrVG9U
aW1lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpmYXN0
U2Vlayk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6YmVn
aW5TY2FubmluZ0ZvcndhcmQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQ6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZW5kU2Nhbm5pbmcpOgorICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24pOgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNlbGVjdExlZ2libGVN
ZWRpYU9wdGlvbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6aGFuZGxlRXZlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0xheWVyRnJh
bWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpvYnNlcnZlZEV2ZW50TmFtZXMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmV2ZW50TmFtZUFs
bCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojppc1Zpc2libGUpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbTogQWRkZWQuCisgICAgICAgICgt
W1dlYkFWUGxheWVyQ29udHJvbGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVy
Q29udHJvbGxlciByZXNldFN0YXRlXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxl
ciBwbGF5ZXJdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGZvcndhcmRpbmdU
YXJnZXRGb3JTZWxlY3RvcjpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHBs
YXk6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBwYXVzZTpdKToKKyAgICAg
ICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHRvZ2dsZVBsYXliYWNrOl0pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckNvbnRyb2xsZXIgdG9nZ2xlUGxheWJhY2tFdmVuV2hlbkluQmFja2dyb3Vu
ZDpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGlzUGxheWluZ10pOgorICAg
ICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0UGxheWluZzpdKToKKyAgICAgICAgKCtb
V2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nUGxheWluZ10p
OgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgYmVnaW5TY3J1YmJpbmc6XSk6Cisg
ICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBlbmRTY3J1YmJpbmc6XSk6CisgICAgICAg
ICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBzZWVrVG9UaW1lOl0pOgorICAgICAgICAoLVtXZWJB
VlBsYXllckNvbnRyb2xsZXIgY3VycmVudFRpbWVXaXRoaW5FbmRUaW1lc10pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0Q3VycmVudFRpbWVXaXRoaW5FbmRUaW1lczpdKToK
KyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0
aW5nQ3VycmVudFRpbWVXaXRoaW5FbmRUaW1lc10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNv
bnRyb2xsZXIgaGFzTGl2ZVN0cmVhbWluZ0NvbnRlbnRdKToKKyAgICAgICAgKCtbV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nSGFzTGl2ZVN0cmVhbWluZ0Nv
bnRlbnRdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHNraXBCYWNrd2FyZFRo
aXJ0eVNlY29uZHM6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBnb3RvRW5k
T2ZTZWVrYWJsZVJhbmdlczpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGNh
blNjYW5Gb3J3YXJkXSk6CisgICAgICAgICgrW1dlYkFWUGxheWVyQ29udHJvbGxlciBrZXlQYXRo
c0ZvclZhbHVlc0FmZmVjdGluZ0NhblNjYW5Gb3J3YXJkXSk6CisgICAgICAgICgtW1dlYkFWUGxh
eWVyQ29udHJvbGxlciBiZWdpblNjYW5uaW5nRm9yd2FyZDpdKToKKyAgICAgICAgKC1bV2ViQVZQ
bGF5ZXJDb250cm9sbGVyIGVuZFNjYW5uaW5nRm9yd2FyZDpdKToKKyAgICAgICAgKC1bV2ViQVZQ
bGF5ZXJDb250cm9sbGVyIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZDpdKToKKyAgICAgICAgKC1bV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIGVuZFNjYW5uaW5nQmFja3dhcmQ6XSk6CisgICAgICAgICgtW1dl
YkFWUGxheWVyQ29udHJvbGxlciBjYW5TZWVrVG9CZWdpbm5pbmddKToKKyAgICAgICAgKCtbV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nQ2FuU2Vla1RvQmVn
aW5uaW5nXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBzZWVrVG9CZWdpbm5p
bmc6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBzZWVrQ2hhcHRlckJhY2t3
YXJkOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgY2FuU2Vla1RvRW5kXSk6
CisgICAgICAgICgrW1dlYkFWUGxheWVyQ29udHJvbGxlciBrZXlQYXRoc0ZvclZhbHVlc0FmZmVj
dGluZ0NhblNlZWtUb0VuZF0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2Vl
a1RvRW5kOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2Vla0NoYXB0ZXJG
b3J3YXJkOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgaGFzTWVkaWFTZWxl
Y3Rpb25PcHRpb25zXSk6CisgICAgICAgICgrW1dlYkFWUGxheWVyQ29udHJvbGxlciBrZXlQYXRo
c0ZvclZhbHVlc0FmZmVjdGluZ0hhc01lZGlhU2VsZWN0aW9uT3B0aW9uc10pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckNvbnRyb2xsZXIgaGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNdKToK
KyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0
aW5nSGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGhhc0xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNdKToKKyAgICAgICAg
KCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nSGFzTGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRy
b2xsZXIgY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25dKToKKyAgICAgICAgKC1bV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIHNldEN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOl0p
OgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgY3VycmVudExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0Q3Vy
cmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGlzUGxheWluZ09uRXh0ZXJuYWxTY3JlZW5dKToKKyAgICAgICAgKCtbV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nUGxheWluZ09uRXh0
ZXJuYWxTY3JlZW5dKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGlzUGljdHVy
ZUluUGljdHVyZUludGVycnVwdGVkXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxl
ciBzZXRQaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ6XSk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXRDbGllbnQ6On5XZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdENsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdDo6fldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpyZXNldE1lZGlh
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQ6OnNldFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXREdXJhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0Q3VycmVudFRpbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEJ1
ZmZlcmVkVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdDo6c2V0UmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdDo6c2V0U2Vla2FibGVSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjptZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRFeHRlcm5hbFBsYXliYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojpz
ZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6
OmludmFsaWRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgICgtW1dlYkFWUGxheWVy
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBmdWxsc2NyZWVuSW50ZXJmYWNlXSk6CisgICAgICAgICgt
W1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBzZXRGdWxsc2NyZWVuSW50ZXJmYWNl
Ol0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGZ1bGxzY3JlZW5JbnRlcmZhY2VdKToK
KyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOl0pOgor
ICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGxheW91dFN1YmxheWVyc10pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckxheWVyIHJlc29sdmVCb3VuZHNdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJMYXllciBzZXRWaWRlb0dyYXZpdHk6XSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCk6CisgICAgICAgIChX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6fldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0KToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpw
bGF5ZXJDb250cm9sbGVyKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpyZXNldE1lZGlhU3RhdGUpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OnNldER1cmF0aW9uKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6c2V0QnVmZmVyZWRUaW1lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpzZXRSYXRlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMpOgorICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFNlZWthYmxlUmFuZ2VzKToKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UpOgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRFeHRlcm5hbFBsYXliYWNrKToKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleHRlcm5hbFBsYXliYWNrRW5hYmxl
ZENoYW5nZWQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNl
dFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBGdWxsc2NyZWVuKToK
KyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNj
cmVlbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6bWF5QXV0
b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUpOgorICAgICAgICAoLVtXZWJBVlBs
YXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGxheWVyVmlld0NvbnRyb2xsZXJXaWxsU3RhcnRQ
aWN0dXJlSW5QaWN0dXJlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdD
b250cm9sbGVyRGVsZWdhdGUgcGxheWVyVmlld0NvbnRyb2xsZXJEaWRTdGFydFBpY3R1cmVJblBp
Y3R1cmU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZSBwbGF5ZXJWaWV3Q29udHJvbGxlckZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJl
OndpdGhFcnJvcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJv
bGxlckRlbGVnYXRlIHBsYXllclZpZXdDb250cm9sbGVyV2lsbFN0b3BQaWN0dXJlSW5QaWN0dXJl
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdh
dGUgcGxheWVyVmlld0NvbnRyb2xsZXJEaWRTdG9wUGljdHVyZUluUGljdHVyZTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKGNvbnZlcnRUb0V4aXRGdWxsU2NyZWVuUmVhc29uKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlIHBsYXllclZpZXdDb250
cm9sbGVyOnNob3VsZEV4aXRGdWxsU2NyZWVuV2l0aFJlYXNvbjpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlIHBsYXllclZpZXdDb250cm9s
bGVyOnJlc3RvcmVVc2VySW50ZXJmYWNlRm9yUGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgaW5p
dF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGRlYWxsb2NdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciB2aWRlb0dyYXZpdHldKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciB2aWRlb1JlY3RdKTogRGVsZXRlZC4KKyAg
ICAgICAgKCtbV2ViQVZQbGF5ZXJMYXllciBrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ1ZpZGVv
UmVjdF0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5
ZXJWaWV3X2xheWVyQ2xhc3MpOiBEZWxldGVkLgorICAgICAgICAoZ2V0V2ViQVZQaWN0dXJlSW5Q
aWN0dXJlUGxheWVyTGF5ZXJWaWV3Q2xhc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQVZQbGF5
ZXJMYXllclZpZXdfbGF5ZXJDbGFzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJBVlBsYXllckxh
eWVyVmlld19wbGF5ZXJDb250cm9sbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3NldFBsYXllckNvbnRyb2xsZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQVZQ
bGF5ZXJMYXllclZpZXdfdmlkZW9WaWV3KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3NldFZpZGVvVmlldyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJBVlBsYXllckxh
eWVyVmlld19zdGFydFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmll
dyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld19zdG9wUm91dGluZ1Zp
ZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkFWUGxheWVyTGF5ZXJWaWV3X3BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfZGVhbGxvYyk6IERlbGV0ZWQu
CisgICAgICAgIChnZXRXZWJBVlBsYXllckxheWVyVmlld0NsYXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFwcGxpY2F0aW9uRGlkQmVj
b21lQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjplbnRlckZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlblN0YW5kYXJkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVl
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
ZGlkU3RhcnRQaWN0dXJlSW5QaWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpmYWlsZWRUb1N0YXJ0UGljdHVyZUluUGljdHVyZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6d2lsbFN0
b3BQaWN0dXJlSW5QaWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpkaWRTdG9wUGljdHVyZUluUGljdHVyZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZUZvclBpY3R1cmVJ
blBpY3R1cmVTdG9wV2l0aENvbXBsZXRpb25IYW5kbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzaG91bGRFeGl0RnVsbHNjcmVlbldpdGhS
ZWFzb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OndhdGNoZG9nVGltZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0TW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y2xlYXJNb2RlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjLm1tLgorICAgICAgICAoLVtXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uTWFj
IGxvY2FsaXplZERpc3BsYXlOYW1lXSk6CisgICAgICAgICgtW1dlYkFWTWVkaWFTZWxlY3Rpb25P
cHRpb25NYWMgc2V0TG9jYWxpemVkRGlzcGxheU5hbWU6XSk6CisgICAgICAgICgtW1dlYlBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyIGluaXRXaXRoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
Ol0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciB0aW1pbmddKToKKyAg
ICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2V0VGltaW5nOl0pOgorICAgICAg
ICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBzZWVrYWJsZVRpbWVSYW5nZXNdKToKKyAg
ICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2Vz
Ol0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBpc1NlZWtpbmddKToK
KyAgICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2Vla1RvVGltZTp0b2xlcmFu
Y2VCZWZvcmU6dG9sZXJhbmNlQWZ0ZXI6XSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zXSk6CisgICAgICAgICgtW1dlYlBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOl0pOgor
ICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBjdXJyZW50QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbl0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBz
ZXRDdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAgKC1bV2ViUGxh
eWJhY2tDb250cm9sc01hbmFnZXIgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc10pOgorICAg
ICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb25zOl0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBjdXJy
ZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNr
Q29udHJvbHNNYW5hZ2VyIHNldEN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb246XSk6
CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIGNhbmNlbFRodW1ibmFpbEFu
ZEF1ZGlvQW1wbGl0dWRlU2FtcGxlR2VuZXJhdGlvbl0pOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjp+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6
c2V0V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXREdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0UmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldFNlZWthYmxl
UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldEF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYzo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmludmFsaWRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjplbnN1cmVD
b250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjOjpwbGF5QmFja0NvbnRyb2xzTWFuYWdlcik6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM6OnNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRDdXJyZW50VGltZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFJhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRTZWVr
YWJsZVJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VNYWM6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM6OmVuc3VyZUNvbnRyb2xzTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWM6On5XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
OjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldE1vZGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpj
bGVhck1vZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjOjpzZXR1cEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjplbnRlckZ1bGxzY3JlZW4pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpl
eGl0RnVsbHNjcmVlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWM6OmV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM6OmNsZWFudXBGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6aW52YWxpZGF0ZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnByZXBhcmVkVG9SZXR1
cm5Ub0lubGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OnNldFZpZGVvRGltZW5zaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUpOiBEZWxldGVkLgorCiAyMDE2LTA0LTEx
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRE9NVG9rZW5MaXN0
LmNvbnRhaW5zKCkgc2hvdWxkIG5vdCB0aHJvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM3Nzk3ZDUxZTMzNTFl
MDc4YWQzYzM0NmY1YTFkNjJmYTU4ZTdjZTEuLjVmMWI0ZmZjOWNlMjQ1ZjRjNDgyMmZhOWQ5Yzli
YWYyMzFmYTU1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMTcgQEAKKzIwMTYtMDQtMTQgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlciBhbmQgUHJveHkgdG8gYmUgdXNlZCBieSBhdWRpbyBlbGVtZW50cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjU2NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYXNlIGFw
YXJ0IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgYW5kIOKAplByb3h5IGludG8gV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlciBhbmQg4oCmUHJveHkKKyAgICAgICAgY2xhc3NlcyBkZWFsaW5nIGV4
Y2x1c2l2ZWx5IHdpdGggcGxheWJhY2sgc3RhdGUgYW5kIGNvbW1hbmRzLCBsZWF2aW5nIGZ1bGxz
Y3JlZW4gc3RhdGUgYW5kCisgICAgICAgIGNvbW1hbmRzIGluIHRoZSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2Vy4oCmIGNsYXNzZXMuCisKKyAgICAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ciBhbmQg4oCmUHJveHkgd2lsbCBub3cgcmVxdWlyZSBhbiBhc3NvY2lhdGVkCisgICAgICAgIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIgYW5kIOKAplByb3h5IGNsYXNzLiBUaGUgV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlciBjbGFzc2VzIGNhbiBiZQorICAgICAgICB1c2VkIHNlcGFyYXRlbHkg
YW5kIHdpdGhvdXQgdGhlIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgY2xhc3Nlcy4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5QXV0b21hdGljYWxseVNo
b3dWaWRlb1BpY3R1cmVJblBpY3R1cmVdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW06IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnBsYXkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnBhdXNlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0Ojp0b2dnbGVQbGF5U3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OmJl
Z2luU2NydWJiaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxD
b250ZXh0OjplbmRTY3J1YmJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbENvbnRleHQ6OnNlZWtUb1RpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbENvbnRleHQ6OmZhc3RTZWVrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpiZWdpblNjYW5uaW5nRm9yd2FyZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6YmVnaW5TY2FubmluZ0Jh
Y2t3YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0
OjplbmRTY2FubmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q29udGV4dDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OldlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6fldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y3JlYXRl
TW9kZWxBbmRJbnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OmVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjplbnN1cmVNb2RlbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5zdXJlSW50ZXJmYWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjphZGRDbGll
bnRGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpyZW1vdmVDbGllbnRGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0
aElEKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpj
bGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZXNldE1lZGlhU3RhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEN1cnJlbnRUaW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRCdWZmZXJlZFRp
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNl
dFNlZWthYmxlUmFuZ2VzVmVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0
V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldER1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRSYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpwbGF5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpwYXVzZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6dG9nZ2xlUGxheVN0YXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjcnVi
YmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
ZW5kU2NydWJiaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpzZWVrVG9UaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpmYXN0U2Vlayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0ZvcndhcmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5kU2Nh
bm5pbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y29udHJvbHNNYW5hZ2VySW50
ZXJmYWNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6fldlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dDo6cGxheSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dDo6cGF1c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6YmVnaW5TY3J1YmJpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmVuZFNjcnViYmluZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2Vla1Rv
VGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6
ZmFzdFNlZWspOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQ6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxDb250ZXh0OjpiZWdpblNjYW5uaW5nQmFja3dhcmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmVuZFNjYW5uaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpzZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250
ZXh0OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVh
dGVNb2RlbEFuZEludGVyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6c2V0dXBGdWxsc2NyZWVuV2l0aElEKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0RpbWVuc2lv
bnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmVudGVyRnVsbHNjcmVlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmV4aXRGdWxsc2Ny
ZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y2xlYW51cEZ1bGxzY3JlZW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnByZXBh
cmVkVG9SZXR1cm5Ub0lubGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRTZXR1
cEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4p
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmRpZENsZWFudXBGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0xheWVyRnJhbWUpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhhc0FjdGl2
ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojppc1BsYXlpbmdNZWRpYURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c3VwcG9ydHNWaWRlb0Z1
bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnNldFVwUGxheWJh
Y2tDb250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNs
ZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ2hyb21lQ2xpZW50OjpleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpleGl0VmlkZW9GdWxsc2NyZWVu
VG9Nb2RlV2l0aG91dEFuaW1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4
dDo6aW52YWxpZGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpuZXh0Q29udGV4dElkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQ29udGV4dDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6On5XZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6cmVzZXRNZWRpYVN0YXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0RHVyYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRD
dXJyZW50VGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQ6OnNldEJ1ZmZlcmVkVGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldFJhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRTZWVrYWJsZVJhbmdlcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldENhblBs
YXlGYXN0UmV2ZXJzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUNvbnRleHQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0TGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUNvbnRleHQ6OnNldEV4dGVybmFsUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Oldl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjp+V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5zdXJlTW9kZWxB
bmRJbnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjplbnN1cmVNb2RlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OmVuc3VyZUludGVyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OnJlbW92ZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjphZGRDbGllbnRGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlQ2xpZW50Rm9yQ29udGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFVwUGxheWJhY2tDb250cm9s
c01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpj
bGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6Y29udGV4dElkRm9yTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVzZXRNZWRpYVN0YXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0RHVyYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50VGltZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldEJ1ZmZlcmVk
VGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFJh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRTZWVr
YWJsZVJhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNl
dEV4dGVybmFsUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnBsYXkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpwYXVzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJlZ2luU2NydWJiaW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5kU2NydWJiaW5nKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2Vla1RvVGltZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmZhc3RTZWVrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YmVnaW5TY2FubmluZ0ZvcndhcmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpiZWdpblNjYW5u
aW5nQmFja3dhcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjplbmRTY2FubmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6
OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpyZXNldE1lZGlhU3RhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXREdXJh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRl
eHQ6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQ29udGV4dDo6c2V0QnVmZmVyZWRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0UmF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFNlZWthYmxlUmFuZ2Vz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6
c2V0Q2FuUGxheUZhc3RSZXZlcnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRMZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0RXh0ZXJuYWxQbGF5YmFjayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFdpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5G
b3JWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VDb250ZXh0OjpzZXRWaWRlb0RpbWVuc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp+V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRB
bmltYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpzZXRWaWRlb0RpbWVuc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVu
TW9kZUNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVs
bHNjcmVlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXllckdyYXZpdHlFbnVtKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZnVsbHNj
cmVlbk1heVJldHVyblRvSW5saW5lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKTogRGVsZXRlZC4K
KwogMjAxNi0wNC0xMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5OTI5MC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NWY2Mjg2YjYz
NDlkMmY5NDc1OWUyYTNiNGUwMzcwMmUyOTdiMDBjLi45OWU4Y2FiMDZjNmQ2NjE2YzViNTQwN2I3
OWY2MmE0YzYzYzZhMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MDg2LDYgKzYwODYsMTUgQEAKIAkJQ0RBMDdGQkUxOEUw
QTE2QTAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTA3RkJDMThFMEExNkEwMDQ2OTlGQSAvKiBT
eXN0ZW1TbGVlcExpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQ0RBMDdGQzExOEUwQTIyQjAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlz
dGVuZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREEwN0ZCRjE4RTBBMjJCMDA0Njk5RkEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1hYy5tbSAq
LzsgfTsKIAkJQ0RBMDdGQzIxOEUwQTIyQjAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXJN
YWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTA3
RkMwMThFMEEyMkIwMDQ2OTlGQSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLmggKi87IH07CisJ
CUNEQTI5QTA5MUNCRDk5RjQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTA4
MUNCRDk5RjQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREEyOUEwQjFDQkQ5
QTc0MDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTBBMUNCRDlBNzQwMDkwMUNDRiAv
KiBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUNEQTI5QTBFMUNCRDlDRkUwMDkwMUNDRiAvKiBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTBDMUNCRDlDRkUwMDkwMUNDRiAvKiBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSAqLzsgfTsKKwkJQ0RBMjlBMEYxQ0JEOUNG
RTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEyOUEwRDFDQkQ5Q0ZF
MDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREEyOUExNjFDQkRB
NTZDMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMTQxQ0JEQTU2QzAw
OTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbSAqLzsgfTsKKwkJQ0RB
MjlBMTcxQ0JEQTU2QzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMTUx
Q0JEQTU2QzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEQTI5QTMwMUNC
Rjc0RDQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTJGMUNCRjcz
RkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSAqLzsgfTsK
KwkJQ0RBMjlBMzExQ0JGNzREQTAwOTAxQ0NGIC8qIFdlYkFWUGxheWVyQ29udHJvbGxlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTJEMUNC
RjczRkMwMDkwMUNDRiAvKiBXZWJBVlBsYXllckNvbnRyb2xsZXIubW0gKi87IH07CisJCUNEQTI5
QTMyMUNDMDFBOTUwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMkUx
Q0JGNzNGQzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RBNzk4MjQx
NzBBMjU4MzAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE3OTgyMzE3MEEyNTgzMDBENDVDNTUgLyogQXVk
aW9TZXNzaW9uLmNwcCAqLzsgfTsKIAkJQ0RBNzk4MjcxNzBBMjc5MTAwRDQ1QzU1IC8qIEF1ZGlv
U2Vzc2lvbklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQTc5ODI1MTcwQTI3OTAwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25JT1MubW0gKi87IH07
CiAJCUNEQTc5ODJBMTcwQTNEMDAwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTc5ODIxMTcwQTIyREMwMEQ0
NUM1NSAvKiBBdWRpb1Nlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTQwNTUsNiArMTQwNjQsMTYgQEAKIAkJQ0RBMDdGQkMxOEUwQTE2
QTAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3lzdGVtU2xlZXBMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREEwN0ZCRjE4RTBBMjJCMDA0Njk5RkEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5c3RlbVNsZWVw
TGlzdGVuZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQTA3RkMwMThF
MEEyMkIwMDQ2OTlGQSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbVNsZWVwTGlzdGVuZXJNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMDgxQ0JEOTlGNDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBMjlBMEExQ0JEOUE3NDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTI5QTBDMUNCRDlDRkUwMDkwMUNDRiAv
KiBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREEyOUEwRDFDQkQ5Q0ZFMDA5
MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMTQxQ0JEQTU2QzAwOTAx
Q0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMTUxQ0JEQTU2QzAwOTAxQ0NG
IC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMkMxQ0JGNzNGQzAwOTAxQ0NGIC8qIFdlYkFWUGxh
eWVyQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBVlBs
YXllckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMkQx
Q0JGNzNGQzAwOTAxQ0NGIC8qIFdlYkFWUGxheWVyQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkFWUGxheWVyQ29udHJvbGxlci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMkUxQ0JGNzNGQzAwOTAxQ0NGIC8qIFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQTI5QTJGMUNCRjczRkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREE3OTgyMTE3MEEyMkRDMDBENDVDNTUgLyogQXVkaW9TZXNz
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDREE3OTgyMzE3MEEyNTgzMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQTc5ODI1MTcwQTI3OTAwMEQ0NUM1NSAvKiBB
dWRpb1Nlc3Npb25JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBBdWRpb1Nlc3Npb25JT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzg3
Myw2ICsxNzg5Miw4IEBACiAJCQkJQkU4NTYwNTEwNzAxRjkxMTAwMjM5NzY5IC8qIFdlYkNvcmVW
aWV3Lm0gKi8sCiAJCQkJRTFBMzE2MkIxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRl
ZFN0cmluZ0V4dHJhcy5oICovLAogCQkJCUUxQTMxNjJDMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJO
U0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0gKi8sCisJCQkJQ0RBMjlBMTUxQ0JEQTU2QzAwOTAx
Q0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oICovLAorCQkJCUNEQTI5QTE0
MUNCREE1NkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gKi8s
CiAJCQkJQ0Q4MjAzMDYxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIuaCAqLywKIAkJCQlDRDgyMDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlci5tbSAqLywKIAkJCQlDRDgyMDMwODEzOTVBQjZBMDBGOTU2QzYgLyog
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oICovLApAQCAtMTk5NTcsMTEg
KzE5OTc4LDE1IEBACiAJCQkJNDRDOTkxOUUwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLm1t
ICovLAogCQkJCTFGNzJCRjA4MTg3RkQ0MjcwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9y
eUhhbmRsZXJJT1MuY3BwICovLAogCQkJCTFGNzJCRjA5MTg3RkQ0MjcwMDA5QkNCMyAvKiBUaWxl
Q29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCAqLywKKwkJCQlDREEyOUEyQzFDQkY3M0ZDMDA5
MDFDQ0YgLyogV2ViQVZQbGF5ZXJDb250cm9sbGVyLmggKi8sCisJCQkJQ0RBMjlBMkQxQ0JGNzNG
QzAwOTAxQ0NGIC8qIFdlYkFWUGxheWVyQ29udHJvbGxlci5tbSAqLywKIAkJCQkzMTQwMzc5NzEy
NEJFQTdGMDBBRjQwRTQgLyogV2ViQ29yZU1vdGlvbk1hbmFnZXIuaCAqLywKIAkJCQkzMTQwMzc5
ODEyNEJFQTdGMDBBRjQwRTQgLyogV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0gKi8sCiAJCQkJRTQ1
MzkwMzgwRUFGRDYzNzAwMzY5NUM4IC8qIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0gKi8s
CiAJCQkJRkUwRDg0RTgxMDQ4NDM0ODAwMUExNzlFIC8qIFdlYkV2ZW50LmggKi8sCiAJCQkJRkUw
RDg0RUExMDQ4NDM2RTAwMUExNzlFIC8qIFdlYkV2ZW50Lm1tICovLAorCQkJCUNEQTI5QTJFMUNC
RjczRkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oICovLAor
CQkJCUNEQTI5QTJGMUNCRjczRkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdC5tbSAqLywKIAkJCQlBNTAyQzVERDEzMDQ5QjM1MDBGQzdENTMgLyogV2ViU2FmZUdD
QWN0aXZpdHlDYWxsYmFja0lPUy5oICovLAogCQkJCUMyQzRDQjFEMTYxQTEzMTIwMEQyMTREQSAv
KiBXZWJTYWZlSW5jcmVtZW50YWxTd2VlcGVySU9TLmggKi8sCiAJCQkJM0Y0MkIzMUIxODgxMTkx
QjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oICovLApAQCAt
MjAwMTAsNiArMjAwMzUsMTAgQEAKIAkJCQlDREM5NzlGMzFDNDk4QzA5MDBEQjUwRDQgLyogV2Vi
Q29yZU5TRXJyb3JFeHRyYXMuaCAqLywKIAkJCQlDREM5NzlGMjFDNDk4QzA5MDBEQjUwRDQgLyog
V2ViQ29yZU5TRXJyb3JFeHRyYXMubW0gKi8sCiAJCQkJMUE3RTE5NDQxQzU4NjNCRTAwQ0NEREYz
IC8qIFdlYktpdEFkZGl0aW9ucy5tbSAqLywKKwkJCQlDREEyOUEwODFDQkQ5OUY0MDA5MDFDQ0Yg
LyogV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmggKi8sCisJCQkJQ0RBMjlBMEExQ0JEOUE3
NDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmggKi8sCisJCQkJQ0RBMjlBMEMx
Q0JEOUNGRTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1t
ICovLAorCQkJCUNEQTI5QTBEMUNCRDlDRkUwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudC5oICovLAogCQkJCTUyQjBENEJGMUM1N0ZENjYwMDc3Q0U1MyAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oICovLAogCQkJCTUyMTMxRTU4MUM0RjE1
MjIwMDMzRjgwMiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuaCAqLywKIAkJCQk1MkQ1
QTFBNDFDNTc0ODg5MDBERTM0QTMgLyogV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCAqLywKQEAg
LTI1MjI4LDYgKzI1MjU3LDcgQEAKIAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyogQ29s
b3JDaG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCNDEyNTFGMTJEMDAz
RUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUVERTNBNTAwMEM3
QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBMjlBMEYx
Q0JEOUNGRTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzgyREY1ODEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNERDQ1NEUxMjM2Qzk1QzAwOUE3OTg1IC8qIENvbHVt
bkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTQzRURENjdGMUI0ODVEQkYwMDY0MEU3NSAvKiBD
b21iaW5lZEZpbHRlcnNBbHBoYWJldC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTM4Miw2ICsyNTQx
Miw3IEBACiAJCQkJQTgwRTZDRkEwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0ltYWdlVmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0Y2MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbXBvcnRS
dWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkQwMTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NT
SW5oZXJpdGVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQTI5QTA5MUNCRDk5RjQwMDkw
MUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4MEU2RDA4MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbml0aWFsVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTMxMjg4RTczMEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZVJ1bGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTMxMjg4RTc1MEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFt
ZXNSdWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NDk5LDYgKzI3NTMwLDcgQEAKIAkJCQk0QTBG
RkFBNjFBQUY1RUY2MDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzQxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdDMUMwRTUxQkZCNjBFRDAw
QkQyMjU2IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQ0RBMjlBMEIxQ0JEOUE3NDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQzNjhFODBDMjI2RTMyMDA1RUZCNUYg
LyogUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NTgxNzVENDE0QzAwQzIxRUM4IC8q
IFJlY3RhbmdsZVNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5ODMxQUU0QTE1NDIyNUM5MDBG
RTI2NDQgLyogUmVmZXJyZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovLApAQCAtMjgyNjgsNiArMjgz
MDAsNyBAQAogCQkJCUIyQzNEQTQwMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWNVc2VyRGVm
aW5lZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNDIwRDAwNkMxRDAwRUY2RjI2IC8qIFRl
eHRDb2RlY1VURjE2LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzQzQ0I4MjEyRjI1RTUxMDAzM0M1
RUUgLyogVGV4dENvZGVjVVRGOC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBMjlBMTcxQ0JEQTU2
QzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQyQjk3Q0ExMzEzODk0MzAwOEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTgyREUzMjUxQzMwQzg1NDAwQkUwMkE4IC8qIFRl
eHREZWNvcmF0aW9uUGFpbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzg0QjQxMjM3MTE4
MDAwMEM2MTYxIC8qIFRleHREb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODU0NSw2ICsy
ODU3OCw3IEBACiAJCQkJMUNBRjM0ODEwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBRjM0ODMwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNj
cmlwdE9iamVjdFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDFCMEQ3RTJCODIw
MDdDMzk4MyAvKiBXZWJTY3JpcHRPYmplY3RQcm90b2NvbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
Q0RBMjlBMzIxQ0MwMUE5NTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQxQjE0RkEwOUQ1MDA3NDU3QUUgLyogV2Vi
U29ja2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQxRTE0RkEwOUQ1MDA3NDU3QUUgLyog
V2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMUYxNEZBMDlENTAw
NzQ1N0FFIC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjg5
NjksNiArMjkwMDMsNyBAQAogCQkJCTMxQTc5NUM4MTg4OEJDQjUwMDM4MkY5MCAvKiBBTkdMRUlu
c3RhbmNlZEFycmF5cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTA3MDdFNjEyMTlDMDQzMDBE
OTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFOTEy
QUEwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlD
REEyOUEwRTFDQkQ5Q0ZFMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExMTBFNkUxREE3MDBCRjYwODggLyog
QW5pbWF0aW9uQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExMzBFNkUxREE3MDBC
RjYwODggLyogQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTk4
NDgwMjFBMUQ4MTgxMDBBMTMzMTggLyogQW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0zMTA0Myw2ICszMTA3OCw3IEBACiAJCQkJRkU5RTg5RkIxNkUyREMwNTAwQTkwOEY4IC8q
IE9yaWdpbkxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1ODFGQUUxNTIwRjkxRjAwM0E3
QTc1IC8qIE9zY2lsbGF0b3JOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMEQ1NzM2MEE1
Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNE
QTI5QTMwMUNCRjc0RDQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTY1RkVBODY5MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzdFNzc2MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdl
Q2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1RTVCNjExQTE1RjE1NjAwMEM2MDlFIC8q
IFBhZ2VDb25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE2NjEsNiArMzE2OTcs
NyBAQAogCQkJCUIyMjI3QTE0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGb250RmFjZUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMTcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0Zv
bnRGYWNlRm9ybWF0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0ExQTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRm9udEZhY2VOYW1lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDREEyOUExNjFDQkRBNTZDMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMUQwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0ZvbnRGYWNlU3JjRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0EyMDBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyMjI3QTIzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxNzk1LDYgKzMxODMyLDcgQEAKIAkJCQk5NzU5RTkz
RjE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
NjEwM0IwMUNBREJBN0EwMDE2QjRDNyAvKiBJREJWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NzU5RTk0MjE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUNEQTI5QTMxMUNCRjc0REEwMDkwMUNDRiAvKiBXZWJBVlBsYXllckNvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzFBOUVDMjE2OEZCQzQzMDAyNjI5RjkgLyogVGV4
dFRyYWNrQ3VlR2VuZXJpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzU5RTk0NTE0RUYxQ0Y4
MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzY5
NzA4NjE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGE3Mjc3OWZiYjhl
Nzg4ODNmMzI2ODk5MmM2YjY2ZjEzYWEzNjQzNzIuLjgzMTdmZWEyZDE1NTljNjZiNjFlN2ZjYTA3
NmFkNDFjYTFhYzYwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtNDgyMSw3ICs0ODIxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5
U3RhdGUoKQogICAgIGlmIChzaG91bGRCZVBsYXlpbmcpIHsKICAgICAgICAgaWYgKGRvY3VtZW50
KCkucGFnZSgpICYmIG1fbWVkaWFTZXNzaW9uLT5jYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyKCp0
aGlzKSkgewogICAgICAgICAgICAgSFRNTFZpZGVvRWxlbWVudCYgYXNWaWRlbyA9IGRvd25jYXN0
PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKTsKLSAgICAgICAgICAgIGRvY3VtZW50KCkucGFnZSgp
LT5jaHJvbWUoKS5jbGllbnQoKS5zZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyKGFzVmlkZW8pOwor
ICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnNldFVwUGxh
eWJhY2tDb250cm9sc01hbmFnZXIoYXNWaWRlbyk7CiAgICAgICAgIH0KIAogICAgICAgICBzZXRE
aXNwbGF5TW9kZShWaWRlbyk7CkBAIC00ODU3LDcgKzQ4NTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSgpCiAgICAgICAgIHNldFBsYXlpbmcodHJ1ZSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgaWYgKGVuZGVkUGxheWJhY2soKSAmJiBkb2N1bWVudCgpLnBhZ2Uo
KSAmJiBpczxIVE1MVmlkZW9FbGVtZW50PigqdGhpcykpCi0gICAgICAgICAgICBkb2N1bWVudCgp
LnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuY2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpOwor
ICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmNsZWFyUGxh
eWJhY2tDb250cm9sc01hbmFnZXIoKnRoaXMpOwogCiAgICAgICAgIGlmICghcGxheWVyUGF1c2Vk
KQogICAgICAgICAgICAgbV9wbGF5ZXItPnBhdXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAppbmRleCBjMDI3Mzg4YWJlZmI0MWZlOTk2ZWRhODJhY2E2M2RhNzQyZGQxMGZhLi43ZDk2
ODA5YzU1ZTgxZjc0YWEwOGMwMWE5YjNmMTlkY2Y4NjZmYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgKQEAgLTM0MSw4ICszNDEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSkgeyByZXR1cm4gZmFsc2U7IH0KICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmly
dHVhbCB2b2lkIGVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KEhUTUxWaWRlb0Vs
ZW1lbnQmLCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBzZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyKEhUTUxWaWRlb0VsZW1l
bnQmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKEhUTUxNZWRp
YUVsZW1lbnQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJQbGF5YmFja0NvbnRyb2xzTWFu
YWdlcihIVE1MTWVkaWFFbGVtZW50JikgeyB9CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZXhp
dFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0
QW5pbWF0aW9uKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmLCBIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgLyp0YXJnZXRNb2RlKi8pIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44ZmZhMGNhZGQwODY5Y2YxNGVjNDAyMmI1YjAyY2EwZGJkZjhm
ODlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlX2gKKyNkZWZpbmUgV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlX2gKKworI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKworI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgVGltZVJhbmdlczsKKworY2xhc3MgV2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICBlbnVtIEV4dGVybmFsUGxheWJhY2tUYXJnZXRU
eXBlIHsgVGFyZ2V0VHlwZU5vbmUsIFRhcmdldFR5cGVBaXJQbGF5LCBUYXJnZXRUeXBlVFZPdXQg
fTsKKworICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSgpIHsgfTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXREdXJhdGlvbihkb3VibGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUo
ZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFJh
dGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+
JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5n
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1Rhcmdl
dFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgPSAwOworfTsKKwor
fQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdmOTRmMGJkNTFmNGI0YjA5NzUyODNiZDA2Yjk4ZGZkMTk2NGRkN2EKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25N
b2RlbC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsX2gKKyNkZWZpbmUgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxfaAorCisjaWYg
UExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFU
SU9OX01PREUpKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bCgpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxheSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cGF1c2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVu
ZFNjcnViYmluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2Vla1RvVGltZShkb3VibGUgdGlt
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmYXN0U2Vlayhkb3VibGUgdGltZSkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBiZWdpblNjYW5uaW5nRm9yd2FyZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRTY2Fu
bmluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50
NjRfdCBpbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRp
b24odWludDY0X3QgaW5kZXgpID0gMDsKK307CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMjViNzEwZDFmMWNkMTVmMDJjYzQ4NjEyZWYyNzYxZDEwNzJjYzJmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudF9oCisjZGVmaW5lIFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50X2gKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKKyNpbmNsdWRlICJF
dmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudEVudW1zLmgiCisjaW5j
bHVkZSAiV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQXVkaW9UcmFjazsKK2NsYXNzIEhUTUxNZWRpYUVs
ZW1lbnQ7CitjbGFzcyBUZXh0VHJhY2s7CitjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2U7CisKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50IDogcHVibGlj
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLCBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gY3Jl
YXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50KCkpOworICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZSopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWVkaWFFbGVtZW50
KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBIVE1MTWVkaWFFbGVtZW50
KiBtZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX21lZGlhRWxlbWVudC5nZXQoKTsgfQor
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0
ZUZvckV2ZW50TmFtZShjb25zdCBXVEY6OkF0b21pY1N0cmluZyYpOworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiByaHMpIG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzOyB9CisKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHBsYXkoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHBhdXNlKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVQbGF5U3Rh
dGUoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luU2NydWJiaW5nKCkg
b3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmRTY3J1YmJpbmcoKSBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlZWtUb1RpbWUoZG91YmxlIHRpbWUpIG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmFzdFNlZWsoZG91YmxlIHRpbWUpIG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYmVnaW5TY2FubmluZ0ZvcndhcmQoKSBvdmVy
cmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpIG92
ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5kU2Nhbm5pbmcoKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3Qg
aW5kZXgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2VsZWN0TGVnaWJsZU1l
ZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKKworcHJvdGVjdGVkOgorICAgIFdF
QkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50KCk7CisKK3By
aXZhdGU6CisgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxXVEY6OkF0b21pY1N0cmluZz4mIG9ic2Vy
dmVkRXZlbnROYW1lcygpOworICAgIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBldmVudE5hbWVB
bGwoKTsKKworICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBtX21lZGlhRWxlbWVudDsKKyAg
ICBib29sIG1faXNMaXN0ZW5pbmcgeyBmYWxzZSB9OworICAgIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZSogbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgeyBudWxscHRyIH07CisgICAgVmVj
dG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBtX2xlZ2libGVUcmFja3NGb3JNZW51OworICAgIFZlY3Rv
cjxSZWZQdHI8QXVkaW9UcmFjaz4+IG1fYXVkaW9UcmFja3NGb3JNZW51OworICAgIAorICAgIHZv
aWQgdXBkYXRlTGVnaWJsZU9wdGlvbnMoKTsKK307CisgICAgCit9CisKKyNlbmRpZgorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMw
OTVjNzQ5NGNkM2JlMjQ1NjU0MzAwNmRhNjhhNzkwZDJjN2M0NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50Lm1tCkBAIC0wLDAgKzEsMzM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIgor
CisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJF
U0VOVEFUSU9OX01PREUpKQorCisjaW1wb3J0ICJET01FdmVudEludGVybmFsLmgiCisjaW1wb3J0
ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJNZWRpYUNvbnRyb2xzSG9zdC5oIgorI2ltcG9ydCAiV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmgiCisjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVBbmlt
YXRpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRXZlbnRMaXN0ZW5lci5oPgorI2ltcG9ydCA8
V2ViQ29yZS9FdmVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9FdmVudExpc3RlbmVyLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0V2ZW50TmFtZXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTEVsZW1lbnQu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BhZ2VHcm91cC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0VHJhY2tMaXN0Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL1RpbWVSYW5nZXMuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OldlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50KCkKKyAgICA6IEV2ZW50TGlzdGVuZXIoRXZlbnRMaXN0ZW5lcjo6
Q1BQRXZlbnRMaXN0ZW5lclR5cGUpCit7Cit9CisKK1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50Ojp+V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQoKQoreworfQor
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpzZXRXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2UoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKiBpbnRlcmZhY2Up
Cit7CisgICAgaWYgKGludGVyZmFjZSA9PSBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgPSBpbnRlcmZh
Y2U7CisKKyAgICBpZiAobV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpIHsKKyAgICAgICAgbV9w
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnJlc2V0TWVkaWFTdGF0ZSgpOworICAgICAgICBpZiAo
bV9tZWRpYUVsZW1lbnQpCisgICAgICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQobV9tZWRpYUVsZW1lbnQtPm1lZGlhU2Vz
c2lvbigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX21lZGlhRWxlbWVudCkpOwor
ICAgIH0KK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2V0
TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK3sKKyAgICBpZiAo
bV9tZWRpYUVsZW1lbnQgPT0gbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAobV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCisgICAgICAgIG1fcGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlLT5yZXNldE1lZGlhU3RhdGUoKTsKKworICAgIGlmIChtX21lZGlhRWxlbWVudCAm
JiBtX2lzTGlzdGVuaW5nKSB7CisgICAgICAgIGZvciAoYXV0byYgZXZlbnROYW1lIDogb2JzZXJ2
ZWRFdmVudE5hbWVzKCkpCisgICAgICAgICAgICBtX21lZGlhRWxlbWVudC0+cmVtb3ZlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWUsIHRoaXMsIGZhbHNlKTsKKyAgICB9CisgICAgbV9pc0xpc3Rlbmlu
ZyA9IGZhbHNlOworCisgICAgbV9tZWRpYUVsZW1lbnQgPSBtZWRpYUVsZW1lbnQ7CisKKyAgICBp
ZiAoIW1fbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIGV2
ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1lcygpKQorICAgICAgICBtX21lZGlhRWxlbWVudC0+
YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRoaXMsIGZhbHNlKTsKKyAgICBtX2lzTGlzdGVu
aW5nID0gdHJ1ZTsKKworICAgIHVwZGF0ZUZvckV2ZW50TmFtZShldmVudE5hbWVBbGwoKSk7CisK
KyAgICBpZiAobV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCisgICAgICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChtX21lZGlh
RWxlbWVudC0+bWVkaWFTZXNzaW9uKCkud2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKm1f
bWVkaWFFbGVtZW50KSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQ6OmhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJD
b3JlOjpFdmVudCogZXZlbnQpCit7CisgICAgdXBkYXRlRm9yRXZlbnROYW1lKGV2ZW50LT50eXBl
KCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRh
dGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKK3sKKyAg
ICBpZiAoIW1fbWVkaWFFbGVtZW50IHx8ICFtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYm9vbCBhbGwgPSBldmVudE5hbWUgPT0gZXZlbnROYW1lQWxs
KCk7CisKKyAgICBpZiAoYWxsCisgICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCku
ZHVyYXRpb25jaGFuZ2VFdmVudCkgeworICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS0+c2V0RHVyYXRpb24obV9tZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCkpOworICAgICAgICAvLyBU
aGVzZSBpcyBubyBzdGFuZGFyZCBldmVudCBmb3IgbWluRmFzdFJldmVyc2VSYXRlQ2hhbmdlOyBk
dXJhdGlvbiBjaGFuZ2UgaXMgYSByZWFzb25hYmxlIHByb3h5IGZvciBpdC4KKyAgICAgICAgLy8g
SXQgaGFwcGVucyBldmVyeSB0aW1lIGEgbmV3IGl0ZW0gYmVjb21lcyByZWFkeSB0byBwbGF5Lgor
ICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0Q2FuUGxheUZhc3RSZXZlcnNl
KG1fbWVkaWFFbGVtZW50LT5taW5GYXN0UmV2ZXJzZVJhdGUoKSA8IDAuMCk7CisgICAgfQorCisg
ICAgaWYgKGFsbAorICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnBhdXNlRXZl
bnQKKyAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQKKyAgICAg
ICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpCisgICAgICAg
IG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRSYXRlKCFtX21lZGlhRWxlbWVudC0+cGF1
c2VkKCksIG1fbWVkaWFFbGVtZW50LT5wbGF5YmFja1JhdGUoKSk7CisKKyAgICBpZiAoYWxsCisg
ICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50KSB7Cisg
ICAgICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDdXJyZW50VGltZShtX21lZGlh
RWxlbWVudC0+Y3VycmVudFRpbWUoKSwgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBzeXN0
ZW1VcHRpbWVdKTsKKyAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEJ1ZmZl
cmVkVGltZShtX21lZGlhRWxlbWVudC0+bWF4QnVmZmVyZWRUaW1lKCkpOworICAgICAgICAvLyBG
SVhNRTogMTMwNzg4IC0gZmluZCBhIGJldHRlciBldmVudCB0byB1cGRhdGUgc2Vla2FibGUgcmFu
Z2VzIGZyb20uCisgICAgICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRTZWVrYWJs
ZVJhbmdlcygqbV9tZWRpYUVsZW1lbnQtPnNlZWthYmxlKCkpOworICAgIH0KKworICAgIGlmIChh
bGwKKyAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50Cisg
ICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkucmVtb3ZldHJhY2tFdmVudCkKKyAg
ICAgICAgdXBkYXRlTGVnaWJsZU9wdGlvbnMoKTsKKworICAgIGlmIChhbGwKKyAgICAgICAgfHwg
ZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS53ZWJraXRjdXJyZW50cGxheWJhY2t0YXJnZXRpc3dp
cmVsZXNzY2hhbmdlZEV2ZW50KSB7CisgICAgICAgIGJvb2wgZW5hYmxlZCA9IG1fbWVkaWFFbGVt
ZW50LT53ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKCk7CisgICAgICAgIFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFy
Z2V0VHlwZSA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZU5vbmU7Cisg
ICAgICAgIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lOworCisgICAgICAgIGlmIChtX21lZGlh
RWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKSkgeworICAgICAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gYWlycGxheShBU0NJSUxpdGVyYWwoImFpcnBsYXkiKSk7CisgICAg
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB0dm91dChBU0NJSUxpdGVyYWwo
InR2b3V0IikpOworCisgICAgICAgICAgICBTdHJpbmcgdHlwZSA9IG1fbWVkaWFFbGVtZW50LT5t
ZWRpYUNvbnRyb2xzSG9zdCgpLT5leHRlcm5hbERldmljZVR5cGUoKTsKKyAgICAgICAgICAgIGlm
ICh0eXBlID09IGFpcnBsYXkpCisgICAgICAgICAgICAgICAgdGFyZ2V0VHlwZSA9IFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZUFpclBsYXk7CisgICAgICAgICAgICBlbHNl
IGlmICh0eXBlID09IHR2b3V0KQorICAgICAgICAgICAgICAgIHRhcmdldFR5cGUgPSBXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2U6OlRhcmdldFR5cGVUVk91dDsKKyAgICAgICAgICAgIGxvY2Fs
aXplZERldmljZU5hbWUgPSBtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+ZXh0
ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZSgpOworICAgICAgICB9CisgICAgICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRFeHRlcm5hbFBsYXliYWNrKGVuYWJsZWQsIHRhcmdldFR5cGUs
IGxvY2FsaXplZERldmljZU5hbWUpOworICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQobV9tZWRpYUVsZW1lbnQtPm1lZGlh
U2Vzc2lvbigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX21lZGlhRWxlbWVudCkp
OworICAgIH0KK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6
cGxheSgpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVu
dC0+cGxheSgpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
OjpwYXVzZSgpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxl
bWVudC0+cGF1c2UoKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudDo6dG9nZ2xlUGxheVN0YXRlKCkKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpCisgICAg
ICAgIG1fbWVkaWFFbGVtZW50LT50b2dnbGVQbGF5U3RhdGUoKTsKK30KKwordm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6YmVnaW5TY3J1YmJpbmcoKQoreworICAgIGlm
IChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmJlZ2luU2NydWJiaW5n
KCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmVuZFNj
cnViYmluZygpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxl
bWVudC0+ZW5kU2NydWJiaW5nKCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OnNlZWtUb1RpbWUoZG91YmxlIHRpbWUpCit7CisgICAgaWYgKG1fbWVkaWFF
bGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+c2V0Q3VycmVudFRpbWUodGltZSk7Cit9
CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmZhc3RTZWVrKGRv
dWJsZSB0aW1lKQoreworICAgIGlmIChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVs
ZW1lbnQtPmZhc3RTZWVrKHRpbWUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50OjpiZWdpblNjYW5uaW5nRm9yd2FyZCgpCit7CisgICAgaWYgKG1fbWVkaWFF
bGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+YmVnaW5TY2FubmluZyhNZWRpYUNvbnRy
b2xsZXJJbnRlcmZhY2U6OkZvcndhcmQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50OjpiZWdpblNjYW5uaW5nQmFja3dhcmQoKQoreworICAgIGlmIChtX21l
ZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmJlZ2luU2Nhbm5pbmcoTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlOjpCYWNrd2FyZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmVuZFNjYW5uaW5nKCkKK3sKKyAgICBpZiAobV9tZWRpYUVs
ZW1lbnQpCisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5lbmRTY2FubmluZygpOworfQorCit2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpzZWxlY3RBdWRpb01lZGlhT3B0
aW9uKHVpbnQ2NF90IHNlbGVjdGVkQXVkaW9JbmRleCkKK3sKKyAgICBBdWRpb1RyYWNrKiBzZWxl
Y3RlZEF1ZGlvVHJhY2sgPSBudWxscHRyOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBp
bmRleCA8IG1fYXVkaW9UcmFja3NGb3JNZW51LnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBh
dXRvJiBhdWRpb1RyYWNrID0gbV9hdWRpb1RyYWNrc0Zvck1lbnVbaW5kZXhdOworICAgICAgICBh
dWRpb1RyYWNrLT5zZXRFbmFibGVkKGluZGV4ID09IHN0YXRpY19jYXN0PHNpemVfdD4oc2VsZWN0
ZWRBdWRpb0luZGV4KSk7CisgICAgICAgIGlmIChhdWRpb1RyYWNrLT5lbmFibGVkKCkpCisgICAg
ICAgICAgICBzZWxlY3RlZEF1ZGlvVHJhY2sgPSBhdWRpb1RyYWNrLmdldCgpOworICAgIH0KKwor
ICAgIG1fbWVkaWFFbGVtZW50LT5hdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoc2VsZWN0ZWRBdWRp
b1RyYWNrKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6
c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KQoreworICAgIFRleHRUcmFj
ayogdGV4dFRyYWNrID0gbnVsbHB0cjsKKworICAgIGlmIChpbmRleCA8IG1fbGVnaWJsZVRyYWNr
c0Zvck1lbnUuc2l6ZSgpKQorICAgICAgICB0ZXh0VHJhY2sgPSBtX2xlZ2libGVUcmFja3NGb3JN
ZW51W3N0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpXS5nZXQoKTsKKyAgICBlbHNlCisgICAgICAg
IHRleHRUcmFjayA9IFRleHRUcmFjazo6Y2FwdGlvbk1lbnVPZmZJdGVtKCk7CisKKyAgICBtX21l
ZGlhRWxlbWVudC0+c2V0U2VsZWN0ZWRUZXh0VHJhY2sodGV4dFRyYWNrKTsKK30KKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlTGVnaWJsZU9wdGlvbnMo
KQoreworICAgIEF1ZGlvVHJhY2tMaXN0KiBhdWRpb1RyYWNrTGlzdCA9IG1fbWVkaWFFbGVtZW50
LT5hdWRpb1RyYWNrcygpOworICAgIFRleHRUcmFja0xpc3QqIHRyYWNrTGlzdCA9IG1fbWVkaWFF
bGVtZW50LT50ZXh0VHJhY2tzKCk7CisKKyAgICBpZiAoKCF0cmFja0xpc3QgJiYgIWF1ZGlvVHJh
Y2tMaXN0KSB8fCAhbV9tZWRpYUVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpIHx8ICFtX21lZGlh
RWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV1RG
OjpBdG9taWNTdHJpbmcgZGlzcGxheU1vZGUgPSBtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9s
c0hvc3QoKS0+Y2FwdGlvbkRpc3BsYXlNb2RlKCk7CisgICAgVGV4dFRyYWNrKiBvZmZJdGVtID0g
bV9tZWRpYUVsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCktPmNhcHRpb25NZW51T2ZmSXRlbSgp
OworICAgIFRleHRUcmFjayogYXV0b21hdGljSXRlbSA9IG1fbWVkaWFFbGVtZW50LT5tZWRpYUNv
bnRyb2xzSG9zdCgpLT5jYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKTsKKworICAgIGF1dG8mIGNh
cHRpb25QcmVmZXJlbmNlcyA9IG1fbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+Z3Jv
dXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKKyAgICBtX2xlZ2libGVUcmFja3NGb3JNZW51ID0g
Y2FwdGlvblByZWZlcmVuY2VzLnNvcnRlZFRyYWNrTGlzdEZvck1lbnUodHJhY2tMaXN0KTsKKyAg
ICBtX2F1ZGlvVHJhY2tzRm9yTWVudSA9IGNhcHRpb25QcmVmZXJlbmNlcy5zb3J0ZWRUcmFja0xp
c3RGb3JNZW51KGF1ZGlvVHJhY2tMaXN0KTsKKworICAgIFZlY3RvcjxTdHJpbmc+IGF1ZGlvVHJh
Y2tEaXNwbGF5TmFtZXM7CisgICAgdWludDY0X3Qgc2VsZWN0ZWRBdWRpb0luZGV4ID0gMDsKKwor
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2F1ZGlvVHJhY2tzRm9yTWVudS5z
aXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgYXV0byYgdHJhY2sgPSBtX2F1ZGlvVHJhY2tzRm9y
TWVudVtpbmRleF07CisgICAgICAgIGF1ZGlvVHJhY2tEaXNwbGF5TmFtZXMuYXBwZW5kKGNhcHRp
b25QcmVmZXJlbmNlcy5kaXNwbGF5TmFtZUZvclRyYWNrKHRyYWNrLmdldCgpKSk7CisKKyAgICAg
ICAgaWYgKHRyYWNrLT5lbmFibGVkKCkpCisgICAgICAgICAgICBzZWxlY3RlZEF1ZGlvSW5kZXgg
PSBpbmRleDsKKyAgICB9CisKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoYXVkaW9UcmFja0Rpc3BsYXlOYW1lcywgc2VsZWN0ZWRB
dWRpb0luZGV4KTsKKworICAgIFZlY3RvcjxTdHJpbmc+IHRyYWNrRGlzcGxheU5hbWVzOworICAg
IHVpbnQ2NF90IHNlbGVjdGVkSW5kZXggPSAwOworICAgIHVpbnQ2NF90IG9mZkluZGV4ID0gMDsK
KyAgICBib29sIHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IGZhbHNlOworCisgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbGVnaWJsZVRyYWNrc0Zvck1lbnUuc2l6ZSgpOyBpbmRl
eCsrKSB7CisgICAgICAgIGF1dG8mIHRyYWNrID0gbV9sZWdpYmxlVHJhY2tzRm9yTWVudVtpbmRl
eF07CisgICAgICAgIHRyYWNrRGlzcGxheU5hbWVzLmFwcGVuZChjYXB0aW9uUHJlZmVyZW5jZXMu
ZGlzcGxheU5hbWVGb3JUcmFjayh0cmFjay5nZXQoKSkpOworCisgICAgICAgIGlmICh0cmFjayA9
PSBvZmZJdGVtKQorICAgICAgICAgICAgb2ZmSW5kZXggPSBpbmRleDsKKworICAgICAgICBpZiAo
dHJhY2sgPT0gYXV0b21hdGljSXRlbSAmJiBkaXNwbGF5TW9kZSA9PSBNZWRpYUNvbnRyb2xzSG9z
dDo6YXV0b21hdGljS2V5d29yZCgpKSB7CisgICAgICAgICAgICBzZWxlY3RlZEluZGV4ID0gaW5k
ZXg7CisgICAgICAgICAgICB0cmFja01lbnVJdGVtU2VsZWN0ZWQgPSB0cnVlOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKGRpc3BsYXlNb2RlICE9IE1lZGlhQ29udHJvbHNIb3N0OjphdXRvbWF0
aWNLZXl3b3JkKCkgJiYgdHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3Jk
KCkpIHsKKyAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPSBpbmRleDsKKyAgICAgICAgICAgIHRy
YWNrTWVudUl0ZW1TZWxlY3RlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
b2ZmSW5kZXggJiYgIXRyYWNrTWVudUl0ZW1TZWxlY3RlZCAmJiBkaXNwbGF5TW9kZSA9PSBNZWRp
YUNvbnRyb2xzSG9zdDo6Zm9yY2VkT25seUtleXdvcmQoKSkgeworICAgICAgICBzZWxlY3RlZElu
ZGV4ID0gb2ZmSW5kZXg7CisgICAgICAgIHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IHRydWU7Cisg
ICAgfQorCisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnModHJhY2tEaXNwbGF5TmFtZXMsIHNlbGVjdGVkSW5kZXgpOworfQorCitj
b25zdCBWZWN0b3I8QXRvbWljU3RyaW5nPiYgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50OjpvYnNlcnZlZEV2ZW50TmFtZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxWZWN0b3I8QXRvbWljU3RyaW5nPj4gc0V2ZW50TmFtZXM7CisKKyAgICBpZiAoIXNFdmVudE5h
bWVzLmdldCgpLnNpemUoKSkgeworICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZl
bnROYW1lcygpLmR1cmF0aW9uY2hhbmdlRXZlbnQpOworICAgICAgICBzRXZlbnROYW1lcy5nZXQo
KS5hcHBlbmQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQpOworICAgICAgICBzRXZlbnROYW1lcy5n
ZXQoKS5hcHBlbmQoZXZlbnROYW1lcygpLnBsYXlFdmVudCk7CisgICAgICAgIHNFdmVudE5hbWVz
LmdldCgpLmFwcGVuZChldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50KTsKKyAgICAgICAgc0V2
ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQpOworICAg
ICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnROYW1lcygpLmFkZHRyYWNrRXZlbnQp
OworICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnROYW1lcygpLnJlbW92ZXRy
YWNrRXZlbnQpOworICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnROYW1lcygp
LndlYmtpdGN1cnJlbnRwbGF5YmFja3RhcmdldGlzd2lyZWxlc3NjaGFuZ2VkRXZlbnQpOworICAg
IH0KKyAgICByZXR1cm4gc0V2ZW50TmFtZXMuZ2V0KCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpldmVudE5hbWVBbGwoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNFdmVudE5hbWVBbGwg
PSAiYWxsRXZlbnRzIjsKKyAgICByZXR1cm4gc0V2ZW50TmFtZUFsbDsKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZS5oCmluZGV4IGM2ZDliZmYyNzY5OTk2YTk4MjZjM2RkNjYzMGEwNDEy
YjIxNDUyODIuLmE4ZWYyOTUwYWI4ZTdhYWZlNDQwNDc0OGIxNjM3NWNjY2ZiZjNlMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZS5oCkBAIC0yOCwxMSArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9T
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQog
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLWNsYXNzIFN0cmlu
ZzsKLX0KKyNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00MCwyMyArMzYsMTAgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
dXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKTsKIAogY2xhc3MgVGltZVJhbmdlczsKIAotY2xhc3Mg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlIHsKK2NsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZSA6IHB1YmxpYyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgewogcHVibGljOgot
ICAgIGVudW0gRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgeyBUYXJnZXRUeXBlTm9uZSwgVGFy
Z2V0VHlwZUFpclBsYXksIFRhcmdldFR5cGVUVk91dCB9OwotICAgIAogICAgIHZpcnR1YWwgfldl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSgpIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRN
ZWRpYVN0YXRlKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBk
b3VibGUgYW5jaG9yVGltZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCdWZmZXJlZFRpbWUo
ZG91YmxlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZs
b2F0IHBsYXliYWNrUmF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0RpbWVuc2lv
bnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6
U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFj
a1RhcmdldFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgPSAwOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsLmgKaW5kZXggMzViYmVlNGRmMDJjMTRmY2Q4N2YwZDBkMTFhY2Qw
NDkzNzYzMjIzNS4uZTU5OGZkMzU5NTg3YzllNjYzM2JkYzUyZTBjMmVjZmE5ZDU3OWMyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbC5oCkBAIC0zMSwyOCArMzEsMTcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgorI2luY2x1ZGUgIldlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWwgeworY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwgOiBwdWJs
aWMgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsKCkgeyB9OwotICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlUGxh
eVN0YXRlKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjcnViYmluZygpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZW5kU2NydWJiaW5nKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZWVr
VG9UaW1lKGRvdWJsZSB0aW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZhc3RTZWVrKGRvdWJs
ZSB0aW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjYW5uaW5nQmFja3dhcmQoKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGVuZFNjYW5uaW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnVs
bHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpID0gMDsK
ICAgICBlbnVtIFZpZGVvR3Jhdml0eSB7IFZpZGVvR3Jhdml0eVJlc2l6ZSwgVmlkZW9HcmF2aXR5
UmVzaXplQXNwZWN0LCBWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsIH07CiAgICAgdmlydHVh
bCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFZpZGVvR3Jhdml0eSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBpbmRleCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVmlz
aWJsZSgpIGNvbnN0ID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQu
aAppbmRleCA1ZDQ2NjcwYmM1N2Q5MzYyMjUzYjgwYWNkZTc1NjhhYzliNGIyZGFkLi5iMzY4Zjk2
NTNlNDIyYTdkNjUzMGZlODc4ZmI0ZDAwODVjNjNmZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50LmgKQEAgLTQyLDEzICs0MiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBBdWRpb1RyYWNrOwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIFRleHRU
cmFjazsKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OwogY2xhc3Mg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOwogCiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudCA6IHB1YmxpYyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCwgcHVibGlj
IEV2ZW50TGlzdGVuZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gY3JlYXRlKFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50JiBwbGF5YmFja1Nlc3Npb25Nb2RlbCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
KCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudChwbGF5YmFja1Nlc3Npb25Nb2RlbCkpOwogICAgIH0KICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudCgpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSopOwpAQCAtODAsMTIgKzgxLDEzIEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCYpOwogCiBwcml2
YXRlOgogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8V1RGOjpBdG9taWNTdHJpbmc+JiBvYnNlcnZl
ZEV2ZW50TmFtZXMoKTsKICAgICBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgZXZlbnROYW1lQWxs
KCk7Ci0gICAgCisKKyAgICBSZWY8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+
IG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7CiAgICAgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IG1f
dmlkZW9FbGVtZW50OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNj
cmVlbkxheWVyOwogICAgIGJvb2wgbV9pc0xpc3RlbmluZyB7IGZhbHNlIH07CkBAIC05Myw4ICs5
NSw2IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fdmlkZW9GcmFtZTsKICAgICBWZWN0b3I8
UmVmUHRyPFRleHRUcmFjaz4+IG1fbGVnaWJsZVRyYWNrc0Zvck1lbnU7CiAgICAgVmVjdG9yPFJl
ZlB0cjxBdWRpb1RyYWNrPj4gbV9hdWRpb1RyYWNrc0Zvck1lbnU7Ci0KLSAgICB2b2lkIHVwZGF0
ZUxlZ2libGVPcHRpb25zKCk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Lm1tCmluZGV4IGY4OWYxNzU4ODYyZWNjODBmNmM2ZDkwMTE0MTViNGIwOThhMjUwMDUu
LjcyMDVjMzNiOGNkYTJjM2FmYmYzMWViMmE0OGQxNGJhMjA5NjI4OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJE
T01FdmVudEludGVybmFsLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYUNv
bnRyb2xzSG9zdC5oIgorI2ltcG9ydCAiV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS5oIgogI2ltcG9ydCA8
UXVhcnR6Q29yZS9Db3JlQW5pbWF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUV2ZW50TGlz
dGVuZXIuaD4KQEAgLTUwLDggKzUxLDkgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
LVdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudCgpCitXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQoV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQmIHBsYXliYWNrU2Vzc2lvbk1vZGVsKQogICAgIDogRXZlbnRMaXN0ZW5l
cihFdmVudExpc3RlbmVyOjpDUFBFdmVudExpc3RlbmVyVHlwZSkKKyAgICAsIG1fcGxheWJhY2tT
ZXNzaW9uTW9kZWwocGxheWJhY2tTZXNzaW9uTW9kZWwpCiB7CiB9CiAKQEAgLTY1LDI0ICs2Nywx
OCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2UoV2ViVmlkZQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Zp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZSA9IGludGVyZmFjZTsKKyAgICBtX3BsYXliYWNrU2Vzc2lv
bk1vZGVsLT5zZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UoaW50ZXJmYWNlKTsKIAotICAg
IGlmIChtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSkgewotICAgICAgICBtX3ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZS0+cmVzZXRNZWRpYVN0YXRlKCk7Ci0gICAgICAgIGlmIChtX3ZpZGVvRWxl
bWVudCkgewotICAgICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldFZpZGVv
RGltZW5zaW9ucyh0cnVlLCBtX3ZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCBtX3ZpZGVvRWxl
bWVudC0+dmlkZW9IZWlnaHQoKSk7Ci0gICAgICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZS0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQobV92aWRlb0VsZW1lbnQtPm1l
ZGlhU2Vzc2lvbigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX3ZpZGVvRWxlbWVu
dCkpOwotICAgICAgICB9Ci0gICAgfQorICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZSAmJiBtX3ZpZGVvRWxlbWVudCkKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Ut
PnNldFZpZGVvRGltZW5zaW9ucyh0cnVlLCBtX3ZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCBt
X3ZpZGVvRWxlbWVudC0+dmlkZW9IZWlnaHQoKSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50KiB2
aWRlb0VsZW1lbnQpCiB7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+c2V0TWVkaWFFbGVt
ZW50KHZpZGVvRWxlbWVudCk7CiAgICAgaWYgKG1fdmlkZW9FbGVtZW50ID09IHZpZGVvRWxlbWVu
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
KQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+cmVzZXRNZWRpYVN0YXRlKCk7
Ci0KICAgICBpZiAobV92aWRlb0VsZW1lbnQgJiYgbV92aWRlb0VsZW1lbnQtPnZpZGVvRnVsbHNj
cmVlbkxheWVyKCkpCiAgICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihudWxscHRyKTsKIApAQCAtMTAzLDEwICs5OSw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50KiB2
aWRlCiAKICAgICB1cGRhdGVGb3JFdmVudE5hbWUoZXZlbnROYW1lQWxsKCkpOwogCi0gICAgaWYg
KG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKSB7CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlKQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0VmlkZW9E
aW1lbnNpb25zKHRydWUsIHZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCB2aWRlb0VsZW1lbnQt
PnZpZGVvSGVpZ2h0KCkpOwotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0
V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQobV92aWRlb0VsZW1lbnQtPm1lZGlhU2Vzc2lv
bigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX3ZpZGVvRWxlbWVudCkpOwotICAg
IH0KIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6aGFuZGxl
RXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50KiBl
dmVudCkKQEAgLTEyMiw1NiArMTE2LDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3QKICAgICBi
b29sIGFsbCA9IGV2ZW50TmFtZSA9PSBldmVudE5hbWVBbGwoKTsKIAogICAgIGlmIChhbGwKLSAg
ICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50KSB7
Ci0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5zZXREdXJhdGlvbihtX3ZpZGVv
RWxlbWVudC0+ZHVyYXRpb24oKSk7Ci0gICAgICAgIC8vIFRoZXNlIGlzIG5vIHN0YW5kYXJkIGV2
ZW50IGZvciBtaW5GYXN0UmV2ZXJzZVJhdGVDaGFuZ2U7IGR1cmF0aW9uIGNoYW5nZSBpcyBhIHJl
YXNvbmFibGUgcHJveHkgZm9yIGl0LgotICAgICAgICAvLyBJdCBoYXBwZW5zIGV2ZXJ5IHRpbWUg
YSBuZXcgaXRlbSBiZWNvbWVzIHJlYWR5IHRvIHBsYXkuCi0gICAgICAgIG1fdmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlLT5zZXRDYW5QbGF5RmFzdFJldmVyc2UobV92aWRlb0VsZW1lbnQtPm1pbkZh
c3RSZXZlcnNlUmF0ZSgpIDwgMC4wKTsKLSAgICB9Ci0KLSAgICBpZiAoYWxsCi0gICAgICAgIHx8
IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkucGF1c2VFdmVudAotICAgICAgICB8fCBldmVudE5h
bWUgPT0gZXZlbnROYW1lcygpLnBsYXlFdmVudAotICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZl
bnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCkKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2UtPnNldFJhdGUoIW1fdmlkZW9FbGVtZW50LT5wYXVzZWQoKSwgbV92aWRlb0VsZW1lbnQt
PnBsYXliYWNrUmF0ZSgpKTsKLQotICAgIGlmIChhbGwKLSAgICAgICAgfHwgZXZlbnROYW1lID09
IGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQpIHsKLSAgICAgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UtPnNldEN1cnJlbnRUaW1lKG1fdmlkZW9FbGVtZW50LT5jdXJyZW50VGltZSgp
LCBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHN5c3RlbVVwdGltZV0pOwotICAgICAgICBt
X3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0QnVmZmVyZWRUaW1lKG1fdmlkZW9FbGVtZW50
LT5tYXhCdWZmZXJlZFRpbWUoKSk7Ci0gICAgICAgIC8vIEZJWE1FOiAxMzA3ODggLSBmaW5kIGEg
YmV0dGVyIGV2ZW50IHRvIHVwZGF0ZSBzZWVrYWJsZSByYW5nZXMgZnJvbS4KLSAgICAgICAgbV92
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldFNlZWthYmxlUmFuZ2VzKCptX3ZpZGVvRWxlbWVu
dC0+c2Vla2FibGUoKSk7Ci0gICAgfQotCi0gICAgaWYgKGFsbAotICAgICAgICB8fCBldmVudE5h
bWUgPT0gZXZlbnROYW1lcygpLmFkZHRyYWNrRXZlbnQKLSAgICAgICAgfHwgZXZlbnROYW1lID09
IGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50KQotICAgICAgICB1cGRhdGVMZWdpYmxlT3B0
aW9ucygpOwotICAgIAotICAgIGlmIChhbGwKICAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50
TmFtZXMoKS5yZXNpemVFdmVudCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Ut
PnNldFZpZGVvRGltZW5zaW9ucyh0cnVlLCBtX3ZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCBt
X3ZpZGVvRWxlbWVudC0+dmlkZW9IZWlnaHQoKSk7Ci0KLSAgICBpZiAoYWxsCi0gICAgICAgIHx8
IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkud2Via2l0Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3
aXJlbGVzc2NoYW5nZWRFdmVudCkgewotICAgICAgICBib29sIGVuYWJsZWQgPSBtX3ZpZGVvRWxl
bWVudC0+d2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcygpOwotICAgICAgICBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRh
cmdldFR5cGUgPSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U6OlRhcmdldFR5cGVOb25lOwot
ICAgICAgICBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZTsKLQotICAgICAgICBpZiAobV92aWRl
b0VsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCkpIHsKLSAgICAgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IGFpcnBsYXkoQVNDSUlMaXRlcmFsKCJhaXJwbGF5IikpOwotICAg
ICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdHZvdXQoQVNDSUlMaXRlcmFs
KCJ0dm91dCIpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgU3RyaW5nIHR5cGUgPSBtX3Zp
ZGVvRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+ZXh0ZXJuYWxEZXZpY2VUeXBlKCk7Ci0g
ICAgICAgICAgICBpZiAodHlwZSA9PSBhaXJwbGF5KQotICAgICAgICAgICAgICAgIHRhcmdldFR5
cGUgPSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U6OlRhcmdldFR5cGVBaXJQbGF5OwotICAg
ICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSB0dm91dCkKLSAgICAgICAgICAgICAgICB0YXJnZXRU
eXBlID0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpUYXJnZXRUeXBlVFZPdXQ7Ci0gICAg
ICAgICAgICBsb2NhbGl6ZWREZXZpY2VOYW1lID0gbV92aWRlb0VsZW1lbnQtPm1lZGlhQ29udHJv
bHNIb3N0KCktPmV4dGVybmFsRGV2aWNlRGlzcGxheU5hbWUoKTsKLSAgICAgICAgfQotICAgICAg
ICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0RXh0ZXJuYWxQbGF5YmFjayhlbmFibGVk
LCB0YXJnZXRUeXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLSAgICAgICAgbV92aWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UtPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKG1fdmlkZW9F
bGVtZW50LT5tZWRpYVNlc3Npb24oKS53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgqbV92
aWRlb0VsZW1lbnQpKTsKLSAgICB9CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVv
TGF5ZXIpCkBAIC0xOTMsNjIgKzEzOSw1MiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKgogCiB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpwbGF5KCkKIHsKLSAgICBp
ZiAobV92aWRlb0VsZW1lbnQpCi0gICAgICAgIG1fdmlkZW9FbGVtZW50LT5wbGF5KCk7CisgICAg
bV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+cGxheSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpwYXVzZSgpCiB7Ci0gICAgaWYgKG1fdmlkZW9FbGVtZW50
KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+cGF1c2UoKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lv
bk1vZGVsLT5wYXVzZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Ojp0b2dnbGVQbGF5U3RhdGUoKQogewotICAgIGlmIChtX3ZpZGVvRWxlbWVudCkKLSAg
ICAgICAgbV92aWRlb0VsZW1lbnQtPnRvZ2dsZVBsYXlTdGF0ZSgpOworICAgIG1fcGxheWJhY2tT
ZXNzaW9uTW9kZWwtPnRvZ2dsZVBsYXlTdGF0ZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpiZWdpblNjcnViYmluZygpCiB7Ci0gICAgaWYgKG1fdmlk
ZW9FbGVtZW50KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+YmVnaW5TY3J1YmJpbmcoKTsKKyAg
ICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5iZWdpblNjcnViYmluZygpOwogfQogCiB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjplbmRTY3J1YmJpbmcoKQogewotICAg
IGlmIChtX3ZpZGVvRWxlbWVudCkKLSAgICAgICAgbV92aWRlb0VsZW1lbnQtPmVuZFNjcnViYmlu
ZygpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmVuZFNjcnViYmluZygpOwogfQogCiB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZWVrVG9UaW1lKGRvdWJs
ZSB0aW1lKQogewotICAgIGlmIChtX3ZpZGVvRWxlbWVudCkKLSAgICAgICAgbV92aWRlb0VsZW1l
bnQtPnNldEN1cnJlbnRUaW1lKHRpbWUpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPnNl
ZWtUb1RpbWUodGltZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6OmZhc3RTZWVrKGRvdWJsZSB0aW1lKQogewotICAgIGlmIChtX3ZpZGVvRWxlbWVudCkK
LSAgICAgICAgbV92aWRlb0VsZW1lbnQtPmZhc3RTZWVrKHRpbWUpOworICAgIG1fcGxheWJhY2tT
ZXNzaW9uTW9kZWwtPmZhc3RTZWVrKHRpbWUpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50OjpiZWdpblNjYW5uaW5nRm9yd2FyZCgpCiB7Ci0gICAgaWYgKG1f
dmlkZW9FbGVtZW50KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+YmVnaW5TY2FubmluZyhNZWRp
YUNvbnRyb2xsZXJJbnRlcmZhY2U6OkZvcndhcmQpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9k
ZWwtPmJlZ2luU2Nhbm5pbmdGb3J3YXJkKCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQ6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpCiB7Ci0gICAgaWYgKG1f
dmlkZW9FbGVtZW50KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+YmVnaW5TY2FubmluZyhNZWRp
YUNvbnRyb2xsZXJJbnRlcmZhY2U6OkJhY2t3YXJkKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1v
ZGVsLT5iZWdpblNjYW5uaW5nQmFja3dhcmQoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZW5kU2Nhbm5pbmcoKQogewotICAgIGlmIChtX3ZpZGVvRWxl
bWVudCkKLSAgICAgICAgbV92aWRlb0VsZW1lbnQtPmVuZFNjYW5uaW5nKCk7CisgICAgbV9wbGF5
YmFja1Nlc3Npb25Nb2RlbC0+ZW5kU2Nhbm5pbmcoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQpAQCAtMjgyLDg4ICsyMTgsMTIg
QEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9MYXll
ckdyYXZpdHkoV2ViVmlkZW9GdWxsc2NyZWUKIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBzZWxlY3RlZEF1
ZGlvSW5kZXgpCiB7Ci0gICAgQXVkaW9UcmFjayogc2VsZWN0ZWRBdWRpb1RyYWNrID0gbnVsbHB0
cjsKLQotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2F1ZGlvVHJhY2tzRm9y
TWVudS5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byYgYXVkaW9UcmFjayA9IG1fYXVk
aW9UcmFja3NGb3JNZW51W2luZGV4XTsKLSAgICAgICAgYXVkaW9UcmFjay0+c2V0RW5hYmxlZChp
bmRleCA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNlbGVjdGVkQXVkaW9JbmRleCkpOwotICAgICAg
ICBpZiAoYXVkaW9UcmFjay0+ZW5hYmxlZCgpKQotICAgICAgICAgICAgc2VsZWN0ZWRBdWRpb1Ry
YWNrID0gYXVkaW9UcmFjay5nZXQoKTsKLSAgICB9Ci0KLSAgICBtX3ZpZGVvRWxlbWVudC0+YXVk
aW9UcmFja0VuYWJsZWRDaGFuZ2VkKHNlbGVjdGVkQXVkaW9UcmFjayk7CisgICAgbV9wbGF5YmFj
a1Nlc3Npb25Nb2RlbC0+c2VsZWN0QXVkaW9NZWRpYU9wdGlvbihzZWxlY3RlZEF1ZGlvSW5kZXgp
OwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZWxlY3RM
ZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpCiB7Ci0gICAgVGV4dFRyYWNrKiB0ZXh0
VHJhY2sgPSBudWxscHRyOwotICAgIAotICAgIGlmIChpbmRleCA8IG1fbGVnaWJsZVRyYWNrc0Zv
ck1lbnUuc2l6ZSgpKQotICAgICAgICB0ZXh0VHJhY2sgPSBtX2xlZ2libGVUcmFja3NGb3JNZW51
W3N0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpXS5nZXQoKTsKLSAgICBlbHNlCi0gICAgICAgIHRl
eHRUcmFjayA9IFRleHRUcmFjazo6Y2FwdGlvbk1lbnVPZmZJdGVtKCk7Ci0gICAgCi0gICAgbV92
aWRlb0VsZW1lbnQtPnNldFNlbGVjdGVkVGV4dFRyYWNrKHRleHRUcmFjayk7Ci19Ci0KLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnVwZGF0ZUxlZ2libGVPcHRpb25z
KCkKLXsKLSAgICBBdWRpb1RyYWNrTGlzdCogYXVkaW9UcmFja0xpc3QgPSBtX3ZpZGVvRWxlbWVu
dC0+YXVkaW9UcmFja3MoKTsKLSAgICBUZXh0VHJhY2tMaXN0KiB0cmFja0xpc3QgPSBtX3ZpZGVv
RWxlbWVudC0+dGV4dFRyYWNrcygpOwotCi0gICAgaWYgKCghdHJhY2tMaXN0ICYmICFhdWRpb1Ry
YWNrTGlzdCkgfHwgIW1fdmlkZW9FbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKSB8fCAhbV92aWRl
b0VsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBXVEY6OkF0b21pY1N0cmluZyBkaXNwbGF5TW9kZSA9IG1fdmlkZW9FbGVtZW50LT5tZWRpYUNv
bnRyb2xzSG9zdCgpLT5jYXB0aW9uRGlzcGxheU1vZGUoKTsKLSAgICBUZXh0VHJhY2sqIG9mZkl0
ZW0gPSBtX3ZpZGVvRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+Y2FwdGlvbk1lbnVPZmZJ
dGVtKCk7Ci0gICAgVGV4dFRyYWNrKiBhdXRvbWF0aWNJdGVtID0gbV92aWRlb0VsZW1lbnQtPm1l
ZGlhQ29udHJvbHNIb3N0KCktPmNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpOwotCi0gICAgYXV0
byYgY2FwdGlvblByZWZlcmVuY2VzID0gbV92aWRlb0VsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgp
LT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpOwotICAgIG1fbGVnaWJsZVRyYWNrc0Zvck1l
bnUgPSBjYXB0aW9uUHJlZmVyZW5jZXMuc29ydGVkVHJhY2tMaXN0Rm9yTWVudSh0cmFja0xpc3Qp
OwotICAgIG1fYXVkaW9UcmFja3NGb3JNZW51ID0gY2FwdGlvblByZWZlcmVuY2VzLnNvcnRlZFRy
YWNrTGlzdEZvck1lbnUoYXVkaW9UcmFja0xpc3QpOwotCi0gICAgVmVjdG9yPFN0cmluZz4gYXVk
aW9UcmFja0Rpc3BsYXlOYW1lczsKLSAgICB1aW50NjRfdCBzZWxlY3RlZEF1ZGlvSW5kZXggPSAw
OwotICAgIAotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2F1ZGlvVHJhY2tz
Rm9yTWVudS5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byYgdHJhY2sgPSBtX2F1ZGlv
VHJhY2tzRm9yTWVudVtpbmRleF07Ci0gICAgICAgIGF1ZGlvVHJhY2tEaXNwbGF5TmFtZXMuYXBw
ZW5kKGNhcHRpb25QcmVmZXJlbmNlcy5kaXNwbGF5TmFtZUZvclRyYWNrKHRyYWNrLmdldCgpKSk7
Ci0gICAgICAgIAotICAgICAgICBpZiAodHJhY2stPmVuYWJsZWQoKSkKLSAgICAgICAgICAgIHNl
bGVjdGVkQXVkaW9JbmRleCA9IGluZGV4OwotICAgIH0KLSAgICAKLSAgICBtX3ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZS0+c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoYXVkaW9UcmFja0Rp
c3BsYXlOYW1lcywgc2VsZWN0ZWRBdWRpb0luZGV4KTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHRy
YWNrRGlzcGxheU5hbWVzOwotICAgIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXggPSAwOwotICAgIHVp
bnQ2NF90IG9mZkluZGV4ID0gMDsKLSAgICBib29sIHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IGZh
bHNlOwotICAgIAotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2xlZ2libGVU
cmFja3NGb3JNZW51LnNpemUoKTsgaW5kZXgrKykgewotICAgICAgICBhdXRvJiB0cmFjayA9IG1f
bGVnaWJsZVRyYWNrc0Zvck1lbnVbaW5kZXhdOwotICAgICAgICB0cmFja0Rpc3BsYXlOYW1lcy5h
cHBlbmQoY2FwdGlvblByZWZlcmVuY2VzLmRpc3BsYXlOYW1lRm9yVHJhY2sodHJhY2suZ2V0KCkp
KTsKLSAgICAgICAgCi0gICAgICAgIGlmICh0cmFjayA9PSBvZmZJdGVtKQotICAgICAgICAgICAg
b2ZmSW5kZXggPSBpbmRleDsKLSAgICAgICAgCi0gICAgICAgIGlmICh0cmFjayA9PSBhdXRvbWF0
aWNJdGVtICYmIGRpc3BsYXlNb2RlID09IE1lZGlhQ29udHJvbHNIb3N0OjphdXRvbWF0aWNLZXl3
b3JkKCkpIHsKLSAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPSBpbmRleDsKLSAgICAgICAgICAg
IHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIGlmIChkaXNwbGF5TW9kZSAhPSBNZWRpYUNvbnRyb2xzSG9zdDo6YXV0b21hdGljS2V5d29y
ZCgpICYmIHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpKSB7Ci0g
ICAgICAgICAgICBzZWxlY3RlZEluZGV4ID0gaW5kZXg7Ci0gICAgICAgICAgICB0cmFja01lbnVJ
dGVtU2VsZWN0ZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmIChvZmZJ
bmRleCAmJiAhdHJhY2tNZW51SXRlbVNlbGVjdGVkICYmIGRpc3BsYXlNb2RlID09IE1lZGlhQ29u
dHJvbHNIb3N0Ojpmb3JjZWRPbmx5S2V5d29yZCgpKSB7Ci0gICAgICAgIHNlbGVjdGVkSW5kZXgg
PSBvZmZJbmRleDsKLSAgICAgICAgdHJhY2tNZW51SXRlbVNlbGVjdGVkID0gdHJ1ZTsKLSAgICB9
Ci0gICAgCi0gICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnModHJhY2tEaXNwbGF5TmFtZXMsIHNlbGVjdGVkSW5kZXgpOworICAgIG1f
cGxheWJhY2tTZXNzaW9uTW9kZWwtPnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihpbmRleCk7CiB9
CiAKIGNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+JiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKCkKQEAgLTM3MSwxNSArMjMxLDcgQEAgY29u
c3QgVmVjdG9yPEF0b21pY1N0cmluZz4mIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50OjpvYnNlcnZlZEV2ZW50TmEKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPEF0
b21pY1N0cmluZz4+IHNFdmVudE5hbWVzOwogCiAgICAgaWYgKCFzRXZlbnROYW1lcy5nZXQoKS5z
aXplKCkpIHsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5k
dXJhdGlvbmNoYW5nZUV2ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2
ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5k
KGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQpOwotICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBl
bmQoZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCk7Ci0gICAgICAgIHNFdmVudE5hbWVzLmdl
dCgpLmFwcGVuZChldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50KTsKLSAgICAgICAgc0V2ZW50
TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50KTsKLSAgICAgICAg
c0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50KTsK
ICAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5yZXNpemVFdmVu
dCk7Ci0gICAgICAgIHNFdmVudE5hbWVzLmdldCgpLmFwcGVuZChldmVudE5hbWVzKCkud2Via2l0
Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWRFdmVudCk7CiAgICAgfQogICAg
IHJldHVybiBzRXZlbnROYW1lcy5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmFmZTAxY2Zh
MDQ0MGNhNWEzNDUzNzkzYWE3ODlhNGNiOGZmMjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5oCkBAIC0wLDAgKzEs
OTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYg
UExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJBVktpdFNQSS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDsKK2NsYXNzIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0OworfQorCitAaW50ZXJmYWNlIFdlYkFWTWVkaWFTZWxlY3Rpb25P
cHRpb24gOiBOU09iamVjdAorQHByb3BlcnR5IChyZXRhaW4pIE5TU3RyaW5nICpsb2NhbGl6ZWRE
aXNwbGF5TmFtZTsKK0BlbmQKKworQGludGVyZmFjZSBXZWJBVlBsYXllckNvbnRyb2xsZXIgOiBO
U09iamVjdCB7CisgICAgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqX2N1cnJlbnRBdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9uOworICAgIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKl9jdXJy
ZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOworICAgIEJPT0wgX3BpY3R1cmVJblBpY3R1
cmVJbnRlcnJ1cHRlZDsKK30KKworLSAodm9pZClyZXNldFN0YXRlOworCitAcHJvcGVydHkgKHJl
dGFpbikgQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyUHJveHk7CitAcHJvcGVy
dHkgKGFzc2lnbikgV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwqIGRlbGVnYXRlOwor
QHByb3BlcnR5IChhc3NpZ24pIFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0KiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U7CisKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJP
T0wgY2FuU2NhbkZvcndhcmQ7CitAcHJvcGVydHkgQk9PTCBjYW5TY2FuQmFja3dhcmQ7CitAcHJv
cGVydHkgKHJlYWRvbmx5KSBCT09MIGNhblNlZWtUb0JlZ2lubmluZzsKK0Bwcm9wZXJ0eSAocmVh
ZG9ubHkpIEJPT0wgY2FuU2Vla1RvRW5kOworCitAcHJvcGVydHkgQk9PTCBjYW5QbGF5OworQHBy
b3BlcnR5IChnZXR0ZXI9aXNQbGF5aW5nKSBCT09MIHBsYXlpbmc7CitAcHJvcGVydHkgQk9PTCBj
YW5QYXVzZTsKK0Bwcm9wZXJ0eSBCT09MIGNhblRvZ2dsZVBsYXliYWNrOworQHByb3BlcnR5IGRv
dWJsZSByYXRlOworQHByb3BlcnR5IEJPT0wgY2FuU2VlazsKK0Bwcm9wZXJ0eSBOU1RpbWVJbnRl
cnZhbCBjb250ZW50RHVyYXRpb247CitAcHJvcGVydHkgQ0dTaXplIGNvbnRlbnREaW1lbnNpb25z
OworQHByb3BlcnR5IEJPT0wgaGFzRW5hYmxlZEF1ZGlvOworQHByb3BlcnR5IEJPT0wgaGFzRW5h
YmxlZFZpZGVvOworQHByb3BlcnR5IE5TVGltZUludGVydmFsIG1pblRpbWU7CitAcHJvcGVydHkg
TlNUaW1lSW50ZXJ2YWwgbWF4VGltZTsKK0Bwcm9wZXJ0eSBOU1RpbWVJbnRlcnZhbCBjb250ZW50
RHVyYXRpb25XaXRoaW5FbmRUaW1lczsKK0Bwcm9wZXJ0eSAocmV0YWluKSBOU0FycmF5ICpsb2Fk
ZWRUaW1lUmFuZ2VzOworQHByb3BlcnR5IEFWUGxheWVyQ29udHJvbGxlclN0YXR1cyBzdGF0dXM7
CitAcHJvcGVydHkgKHJldGFpbikgQVZWYWx1ZVRpbWluZyAqdGltaW5nOworQHByb3BlcnR5IChy
ZXRhaW4pIE5TQXJyYXkgKnNlZWthYmxlVGltZVJhbmdlczsKKworQHByb3BlcnR5IChyZWFkb25s
eSkgQk9PTCBoYXNNZWRpYVNlbGVjdGlvbk9wdGlvbnM7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBC
T09MIGhhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOworQHByb3BlcnR5IChyZXRhaW4pIE5T
QXJyYXkgKmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOworQHByb3BlcnR5IChyZXRhaW4pIFdl
YkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKmN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
OworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBoYXNMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zOworQHByb3BlcnR5IChyZXRhaW4pIE5TQXJyYXkgKmxlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnM7CitAcHJvcGVydHkgKHJldGFpbikgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqY3Vy
cmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjsKKworQHByb3BlcnR5IChyZWFkb25seSwg
Z2V0dGVyPWlzUGxheWluZ09uRXh0ZXJuYWxTY3JlZW4pIEJPT0wgcGxheWluZ09uRXh0ZXJuYWxT
Y3JlZW47CitAcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0ZXI9aXNQbGF5aW5nT25TZWNvbmRTY3Jl
ZW4pIEJPT0wgcGxheWluZ09uU2Vjb25kU2NyZWVuOworQHByb3BlcnR5IChnZXR0ZXI9aXNFeHRl
cm5hbFBsYXliYWNrQWN0aXZlKSBCT09MIGV4dGVybmFsUGxheWJhY2tBY3RpdmU7CitAcHJvcGVy
dHkgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUgZXh0ZXJuYWxQbGF5YmFj
a1R5cGU7CitAcHJvcGVydHkgKHJldGFpbikgTlNTdHJpbmcgKmV4dGVybmFsUGxheWJhY2tBaXJQ
bGF5RGV2aWNlTG9jYWxpemVkTmFtZTsKK0Bwcm9wZXJ0eSBCT09MIGFsbG93c0V4dGVybmFsUGxh
eWJhY2s7CitAcHJvcGVydHkgKGdldHRlcj1pc1BpY3R1cmVJblBpY3R1cmVQb3NzaWJsZSkgQk9P
TCBwaWN0dXJlSW5QaWN0dXJlUG9zc2libGU7CitAcHJvcGVydHkgKGdldHRlcj1pc1BpY3R1cmVJ
blBpY3R1cmVJbnRlcnJ1cHRlZCkgQk9PTCBwaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ7CitA
ZW5kCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YkFWUGxheWVyQ29udHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWNmMTgxYTRhN2YyN2I4OWIyNjgx
ZGY4ODg2MjRmZDNjYjRiNDkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbQpAQCAtMCwwICsxLDQ1NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJBVlBsYXllckNvbnRyb2xsZXIuaCIKKworI2lmIFBM
QVRGT1JNKElPUykKKworI2ltcG9ydCAiQVZLaXRTUEkuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIK
KyNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKKyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0LmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oIgorI2ltcG9y
dCA8QVZGb3VuZGF0aW9uL0FWVGltZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2lt
cG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKKyNpbXBvcnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCisKK1NPRlRfTElOS19GUkFNRVdPUkso
QVZLaXQpCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWUGxheWVyQ29udHJvbGxlcikKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVlBsYXllckNvbnRy
b2xsZXIKKworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKKyAgICAgICAgcmV0dXJuIHNlbGY7CisKKyAgICBpbml0QVZQbGF5ZXJDb250cm9s
bGVyKCk7CisgICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyUHJveHkgPSBbW2FsbG9jQVZQbGF5ZXJD
b250cm9sbGVySW5zdGFuY2UoKSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHNlbGY7
Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtfcGxheWVyQ29udHJvbGxlclByb3h5IHJl
bGVhc2VdOworICAgIFtfbG9hZGVkVGltZVJhbmdlcyByZWxlYXNlXTsKKyAgICBbX3NlZWthYmxl
VGltZVJhbmdlcyByZWxlYXNlXTsKKyAgICBbX3RpbWluZyByZWxlYXNlXTsKKyAgICBbX2F1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zIHJlbGVhc2VdOworICAgIFtfbGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9ucyByZWxlYXNlXTsKKyAgICBbX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9uIHJlbGVhc2VdOworICAgIFtfY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbiBy
ZWxlYXNlXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpcmVzZXRTdGF0ZQor
eworICAgIHNlbGYuY29udGVudER1cmF0aW9uID0gMDsKKyAgICBzZWxmLm1heFRpbWUgPSAwOwor
ICAgIHNlbGYuY29udGVudER1cmF0aW9uV2l0aGluRW5kVGltZXMgPSAwOworICAgIHNlbGYubG9h
ZGVkVGltZVJhbmdlcyA9IEBbXTsKKworICAgIHNlbGYuY2FuUGxheSA9IE5POworICAgIHNlbGYu
Y2FuUGF1c2UgPSBOTzsKKyAgICBzZWxmLmNhblRvZ2dsZVBsYXliYWNrID0gTk87CisgICAgc2Vs
Zi5oYXNFbmFibGVkQXVkaW8gPSBOTzsKKyAgICBzZWxmLmNhblNlZWsgPSBOTzsKKyAgICBzZWxm
Lm1pblRpbWUgPSAwOworICAgIHNlbGYuc3RhdHVzID0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVz
VW5rbm93bjsKKworICAgIHNlbGYudGltaW5nID0gbmlsOworICAgIHNlbGYucmF0ZSA9IDA7CisK
KyAgICBzZWxmLmhhc0VuYWJsZWRWaWRlbyA9IE5POworICAgIHNlbGYuY29udGVudERpbWVuc2lv
bnMgPSBDR1NpemVNYWtlKDAsIDApOworCisgICAgc2VsZi5zZWVrYWJsZVRpbWVSYW5nZXMgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXldOworCisgICAgc2VsZi5jYW5TY2FuQmFja3dhcmQgPSBOTzsK
KworICAgIHNlbGYuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBuaWw7CisgICAgc2VsZi5j
dXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsKKworICAgIHNlbGYubGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IG5pbDsKKyAgICBzZWxmLmN1cnJlbnRMZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb24gPSBuaWw7Cit9CisKKy0gKEFWUGxheWVyICopcGxheWVyCit7Cisg
ICAgcmV0dXJuIG5pbDsKK30KKworLSAoaWQpZm9yd2FyZGluZ1RhcmdldEZvclNlbGVjdG9yOihT
RUwpc2VsZWN0b3IKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VsZWN0b3IpOworICAgIHJldHVybiBz
ZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eTsKK30KKworLSAodm9pZClwbGF5OihpZClzZW5kZXIK
K3sKKyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisg
ICAgICAgIHJldHVybjsKKyAgICBzZWxmLmRlbGVnYXRlLT5wbGF5KCk7Cit9CisKKy0gKHZvaWQp
cGF1c2U6KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOworICAgIGlmICgh
c2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIHNlbGYuZGVsZWdhdGUtPnBhdXNl
KCk7Cit9CisKKy0gKHZvaWQpdG9nZ2xlUGxheWJhY2s6KGlkKXNlbmRlcgoreworICAgIFVOVVNF
RF9QQVJBTShzZW5kZXIpOworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJu
OworICAgIHNlbGYuZGVsZWdhdGUtPnRvZ2dsZVBsYXlTdGF0ZSgpOworfQorCistICh2b2lkKXRv
Z2dsZVBsYXliYWNrRXZlbldoZW5JbkJhY2tncm91bmQ6KGlkKXNlbmRlcgoreworICAgIFtzZWxm
IHRvZ2dsZVBsYXliYWNrOnNlbmRlcl07Cit9CisKKy0gKEJPT0wpaXNQbGF5aW5nCit7CisgICAg
cmV0dXJuIFtzZWxmIHJhdGVdOworfQorCistICh2b2lkKXNldFBsYXlpbmc6KEJPT0wpcGxheWlu
ZworeworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChw
bGF5aW5nKQorICAgICAgICBzZWxmLmRlbGVnYXRlLT5wbGF5KCk7CisgICAgZWxzZQorICAgICAg
ICBzZWxmLmRlbGVnYXRlLT5wYXVzZSgpOworfQorCisrIChOU1NldCAqKWtleVBhdGhzRm9yVmFs
dWVzQWZmZWN0aW5nUGxheWluZworeworICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdDpA
InJhdGUiXTsKK30KKworLSAodm9pZCliZWdpblNjcnViYmluZzooaWQpc2VuZGVyCit7CisgICAg
VU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAgICAgICBy
ZXR1cm47CisgICAgc2VsZi5kZWxlZ2F0ZS0+YmVnaW5TY3J1YmJpbmcoKTsKK30KKworLSAodm9p
ZCllbmRTY3J1YmJpbmc6KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwor
ICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIHNlbGYuZGVsZWdh
dGUtPmVuZFNjcnViYmluZygpOworfQorCistICh2b2lkKXNlZWtUb1RpbWU6KE5TVGltZUludGVy
dmFsKXRpbWUKK3sKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAg
ICBzZWxmLmRlbGVnYXRlLT5mYXN0U2Vlayh0aW1lKTsKK30KKworLSAoTlNUaW1lSW50ZXJ2YWwp
Y3VycmVudFRpbWVXaXRoaW5FbmRUaW1lcworeworICAgIHJldHVybiBzZWxmLnRpbWluZy5jdXJy
ZW50VmFsdWU7Cit9CisKKy0gKHZvaWQpc2V0Q3VycmVudFRpbWVXaXRoaW5FbmRUaW1lczooTlNU
aW1lSW50ZXJ2YWwpY3VycmVudFRpbWVXaXRoaW5FbmRUaW1lcworeworICAgIFtzZWxmIHNlZWtU
b1RpbWU6Y3VycmVudFRpbWVXaXRoaW5FbmRUaW1lc107Cit9CisKKysgKE5TU2V0ICopa2V5UGF0
aHNGb3JWYWx1ZXNBZmZlY3RpbmdDdXJyZW50VGltZVdpdGhpbkVuZFRpbWVzCit7CisgICAgcmV0
dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAidGltaW5nIl07Cit9CisKKy0gKEJPT0wpaGFzTGl2
ZVN0cmVhbWluZ0NvbnRlbnQKK3sKKyAgICBpZiAoW3NlbGYgc3RhdHVzXSA9PSBBVlBsYXllckNv
bnRyb2xsZXJTdGF0dXNSZWFkeVRvUGxheSkKKyAgICAgICAgcmV0dXJuIFtzZWxmIGNvbnRlbnRE
dXJhdGlvbl0gPT0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CisgICAg
cmV0dXJuIE5POworfQorCisrIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nSGFz
TGl2ZVN0cmVhbWluZ0NvbnRlbnQKK3sKKyAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3Rz
OkAiY29udGVudER1cmF0aW9uIiwgQCJzdGF0dXMiLCBuaWxdOworfQorCistICh2b2lkKXNraXBC
YWNrd2FyZFRoaXJ0eVNlY29uZHM6KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5k
ZXIpOworICAgIEJPT0wgaXNUaW1lV2l0aGluU2Vla2FibGVUaW1lUmFuZ2VzID0gTk87CisgICAg
Q01UaW1lIGN1cnJlbnRUaW1lID0gQ01UaW1lTWFrZVdpdGhTZWNvbmRzKFtbc2VsZiB0aW1pbmdd
IGN1cnJlbnRWYWx1ZV0sIDEwMDApOworICAgIENNVGltZSB0aGlydHlTZWNvbmRzQmVmb3JlQ3Vy
cmVudFRpbWUgPSBDTVRpbWVTdWJ0cmFjdChjdXJyZW50VGltZSwgQ01UaW1lTWFrZSgzMCwgMSkp
OworCisgICAgZm9yIChOU1ZhbHVlICpzZWVrYWJsZVRpbWVSYW5nZVZhbHVlIGluIFtzZWxmIHNl
ZWthYmxlVGltZVJhbmdlc10pIHsKKyAgICAgICAgaWYgKENNVGltZVJhbmdlQ29udGFpbnNUaW1l
KFtzZWVrYWJsZVRpbWVSYW5nZVZhbHVlIENNVGltZVJhbmdlVmFsdWVdLCB0aGlydHlTZWNvbmRz
QmVmb3JlQ3VycmVudFRpbWUpKSB7CisgICAgICAgICAgICBpc1RpbWVXaXRoaW5TZWVrYWJsZVRp
bWVSYW5nZXMgPSBZRVM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGlmIChpc1RpbWVXaXRoaW5TZWVrYWJsZVRpbWVSYW5nZXMpCisgICAgICAgIFtzZWxmIHNl
ZWtUb1RpbWU6Q01UaW1lR2V0U2Vjb25kcyh0aGlydHlTZWNvbmRzQmVmb3JlQ3VycmVudFRpbWUp
XTsKK30KKworLSAodm9pZClnb3RvRW5kT2ZTZWVrYWJsZVJhbmdlczooaWQpc2VuZGVyCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgTlNUaW1lSW50ZXJ2YWwgdGltZUF0RW5kT2ZT
ZWVrYWJsZVRpbWVSYW5nZXMgPSBOQU47CisKKyAgICBmb3IgKE5TVmFsdWUgKnNlZWthYmxlVGlt
ZVJhbmdlVmFsdWUgaW4gW3NlbGYgc2Vla2FibGVUaW1lUmFuZ2VzXSkgeworICAgICAgICBDTVRp
bWVSYW5nZSBzZWVrYWJsZVRpbWVSYW5nZSA9IFtzZWVrYWJsZVRpbWVSYW5nZVZhbHVlIENNVGlt
ZVJhbmdlVmFsdWVdOworICAgICAgICBOU1RpbWVJbnRlcnZhbCBlbmRPZlNlZWthYmxlVGltZVJh
bmdlID0gQ01UaW1lR2V0U2Vjb25kcyhDTVRpbWVSYW5nZUdldEVuZChzZWVrYWJsZVRpbWVSYW5n
ZSkpOworICAgICAgICBpZiAoaXNuYW4odGltZUF0RW5kT2ZTZWVrYWJsZVRpbWVSYW5nZXMpIHx8
IGVuZE9mU2Vla2FibGVUaW1lUmFuZ2UgPiB0aW1lQXRFbmRPZlNlZWthYmxlVGltZVJhbmdlcykK
KyAgICAgICAgICAgIHRpbWVBdEVuZE9mU2Vla2FibGVUaW1lUmFuZ2VzID0gZW5kT2ZTZWVrYWJs
ZVRpbWVSYW5nZTsKKyAgICB9CisKKyAgICBpZiAoIWlzbmFuKHRpbWVBdEVuZE9mU2Vla2FibGVU
aW1lUmFuZ2VzKSkKKyAgICAgICAgW3NlbGYgc2Vla1RvVGltZTp0aW1lQXRFbmRPZlNlZWthYmxl
VGltZVJhbmdlc107Cit9CisKKy0gKEJPT0wpY2FuU2NhbkZvcndhcmQKK3sKKyAgICByZXR1cm4g
W3NlbGYgY2FuUGxheV07Cit9CisKKysgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3Rp
bmdDYW5TY2FuRm9yd2FyZAoreworICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdDpAImNh
blBsYXkiXTsKK30KKworLSAodm9pZCliZWdpblNjYW5uaW5nRm9yd2FyZDooaWQpc2VuZGVyCit7
CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAg
ICAgICByZXR1cm47CisgICAgc2VsZi5kZWxlZ2F0ZS0+YmVnaW5TY2FubmluZ0ZvcndhcmQoKTsK
K30KKworLSAodm9pZCllbmRTY2FubmluZ0ZvcndhcmQ6KGlkKXNlbmRlcgoreworICAgIFVOVVNF
RF9QQVJBTShzZW5kZXIpOworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJu
OworICAgIHNlbGYuZGVsZWdhdGUtPmVuZFNjYW5uaW5nKCk7Cit9CisKKy0gKHZvaWQpYmVnaW5T
Y2FubmluZ0JhY2t3YXJkOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsK
KyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBzZWxmLmRlbGVn
YXRlLT5iZWdpblNjYW5uaW5nQmFja3dhcmQoKTsKK30KKworLSAodm9pZCllbmRTY2FubmluZ0Jh
Y2t3YXJkOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKKyAgICBpZiAo
IXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBzZWxmLmRlbGVnYXRlLT5lbmRT
Y2FubmluZygpOworfQorCistIChCT09MKWNhblNlZWtUb0JlZ2lubmluZworeworICAgIENNVGlt
ZSBtaW5pbXVtVGltZSA9IGtDTVRpbWVJbmRlZmluaXRlOworCisgICAgZm9yIChOU1ZhbHVlICp2
YWx1ZSBpbiBbc2VsZiBzZWVrYWJsZVRpbWVSYW5nZXNdKQorICAgICAgICBtaW5pbXVtVGltZSA9
IENNVGltZU1pbmltdW0oW3ZhbHVlIENNVGltZVJhbmdlVmFsdWVdLnN0YXJ0LCBtaW5pbXVtVGlt
ZSk7CisKKyAgICByZXR1cm4gQ01USU1FX0lTX05VTUVSSUMobWluaW11bVRpbWUpOworfQorCisr
IChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nQ2FuU2Vla1RvQmVnaW5uaW5nCit7
CisgICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAic2Vla2FibGVUaW1lUmFuZ2VzIl07
Cit9CisKKy0gKHZvaWQpc2Vla1RvQmVnaW5uaW5nOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURf
UEFSQU0oc2VuZGVyKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsK
KyAgICBzZWxmLmRlbGVnYXRlLT5zZWVrVG9UaW1lKC1JTkZJTklUWSk7Cit9CisKKy0gKHZvaWQp
c2Vla0NoYXB0ZXJCYWNrd2FyZDooaWQpc2VuZGVyCit7CisgICAgW3NlbGYgc2Vla1RvQmVnaW5u
aW5nOnNlbmRlcl07Cit9CisKKy0gKEJPT0wpY2FuU2Vla1RvRW5kCit7CisgICAgQ01UaW1lIG1h
eGltdW1UaW1lID0ga0NNVGltZUluZGVmaW5pdGU7CisKKyAgICBmb3IgKE5TVmFsdWUgKnZhbHVl
IGluIFtzZWxmIHNlZWthYmxlVGltZVJhbmdlc10pCisgICAgICAgIG1heGltdW1UaW1lID0gQ01U
aW1lTWF4aW11bShDTVRpbWVSYW5nZUdldEVuZChbdmFsdWUgQ01UaW1lUmFuZ2VWYWx1ZV0pLCBt
YXhpbXVtVGltZSk7CisKKyAgICByZXR1cm4gQ01USU1FX0lTX05VTUVSSUMobWF4aW11bVRpbWUp
OworfQorCisrIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nQ2FuU2Vla1RvRW5k
Cit7CisgICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAic2Vla2FibGVUaW1lUmFuZ2Vz
Il07Cit9CisKKy0gKHZvaWQpc2Vla1RvRW5kOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURfUEFS
QU0oc2VuZGVyKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAg
ICBzZWxmLmRlbGVnYXRlLT5zZWVrVG9UaW1lKElORklOSVRZKTsKK30KKworLSAodm9pZClzZWVr
Q2hhcHRlckZvcndhcmQ6KGlkKXNlbmRlcgoreworICAgIFtzZWxmIHNlZWtUb0VuZDpzZW5kZXJd
OworfQorCistIChCT09MKWhhc01lZGlhU2VsZWN0aW9uT3B0aW9ucworeworICAgIHJldHVybiBb
c2VsZiBoYXNBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc10gfHwgW3NlbGYgaGFzTGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9uc107Cit9CisKKysgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNB
ZmZlY3RpbmdIYXNNZWRpYVNlbGVjdGlvbk9wdGlvbnMKK3sKKyAgICByZXR1cm4gW05TU2V0IHNl
dFdpdGhPYmplY3RzOkAiaGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMiLCBAImhhc0xlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMiLCBuaWxdOworfQorCistIChCT09MKWhhc0F1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zCit7CisgICAgcmV0dXJuIFtbc2VsZiBhdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9uc10gY291bnRdID4gMTsKK30KKworKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVl
c0FmZmVjdGluZ0hhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zCit7CisgICAgcmV0dXJuIFtO
U1NldCBzZXRXaXRoT2JqZWN0OkAiYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMiXTsKK30KKwor
LSAoQk9PTCloYXNMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zCit7CisgICAgY29uc3QgTlNV
SW50ZWdlciBudW1EZWZhdWx0TGVnaWJsZU9wdGlvbnMgPSAyOworICAgIHJldHVybiBbW3NlbGYg
bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc10gY291bnRdID4gbnVtRGVmYXVsdExlZ2libGVP
cHRpb25zOworfQorCisrIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nSGFzTGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucworeworICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9i
amVjdDpAImxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMiXTsKK30KKworLSAoV2ViQVZNZWRp
YVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uCit7Cisg
ICAgcmV0dXJuIF9jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjsKK30KKworLSAodm9p
ZClzZXRDdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjooV2ViQVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiAqKW9wdGlvbgoreworICAgIGlmIChvcHRpb24gPT0gX2N1cnJlbnRBdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBbX2N1cnJlbnRBdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9uIHJlbGVhc2VdOworICAgIF9jdXJyZW50QXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbiA9IFtvcHRpb24gcmV0YWluXTsKKworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgTlNJbnRlZ2VyIGluZGV4ID0gTlNOb3RGb3VuZDsKKwor
ICAgIGlmIChvcHRpb24gJiYgc2VsZi5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucykKKyAgICAg
ICAgaW5kZXggPSBbc2VsZi5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyBpbmRleE9mT2JqZWN0
Om9wdGlvbl07CisKKyAgICBzZWxmLmRlbGVnYXRlLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9uKGlu
ZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOworfQorCistIChXZWJBVk1l
ZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbgor
eworICAgIHJldHVybiBfY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjsKK30KKwor
LSAodm9pZClzZXRDdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOihXZWJBVk1lZGlh
U2VsZWN0aW9uT3B0aW9uICopb3B0aW9uCit7CisgICAgaWYgKG9wdGlvbiA9PSBfY3VycmVudExl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgW19jdXJy
ZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uIHJlbGVhc2VdOworICAgIF9jdXJyZW50TGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uID0gW29wdGlvbiByZXRhaW5dOworCisgICAgaWYgKCFz
ZWxmLmRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBOU0ludGVnZXIgaW5kZXggPSBO
U05vdEZvdW5kOworCisgICAgaWYgKG9wdGlvbiAmJiBzZWxmLmxlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnMpCisgICAgICAgIGluZGV4ID0gW3NlbGYubGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9ucyBpbmRleE9mT2JqZWN0Om9wdGlvbl07CisKKyAgICBzZWxmLmRlbGVnYXRlLT5zZWxlY3RM
ZWdpYmxlTWVkaWFPcHRpb24oaW5kZXggIT0gTlNOb3RGb3VuZCA/IGluZGV4IDogVUlOVDY0X01B
WCk7Cit9CisKKy0gKEJPT0wpaXNQbGF5aW5nT25FeHRlcm5hbFNjcmVlbgoreworICAgIHJldHVy
biBbc2VsZiBpc0V4dGVybmFsUGxheWJhY2tBY3RpdmVdIHx8IFtzZWxmIGlzUGxheWluZ09uU2Vj
b25kU2NyZWVuXTsKK30KKworKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ1Bs
YXlpbmdPbkV4dGVybmFsU2NyZWVuCit7CisgICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0
czpAImV4dGVybmFsUGxheWJhY2tBY3RpdmUiLCBAInBsYXlpbmdPblNlY29uZFNjcmVlbiIsIG5p
bF07Cit9CisKKy0gKEJPT0wpaXNQaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQKK3sKKyAgICBy
ZXR1cm4gX3BpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZDsKK30KKworLSAodm9pZClzZXRQaWN0
dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ6KEJPT0wpcGljdHVyZUluUGljdHVyZUludGVycnVwdGVk
Cit7CisgICAgaWYgKF9waWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQgIT0gcGljdHVyZUluUGlj
dHVyZUludGVycnVwdGVkKSB7CisgICAgICAgIF9waWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQg
PSBwaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ7CisgICAgICAgIGlmIChwaWN0dXJlSW5QaWN0
dXJlSW50ZXJydXB0ZWQpCisgICAgICAgICAgICBbc2VsZiBzZXRQbGF5aW5nOk5PXTsKKyAgICB9
Cit9CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uCitA
ZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmY2YmI1MDFiYjgzYzRkOGUyYWE1OTU0NjYyNzZmMGQ1N2M4NmVmNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0X2gKKyNkZWZpbmUgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
QVZLaXRfaAorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5o
IgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgorI2luY2x1ZGUgIlRpbWVyLmgi
CisjaW5jbHVkZSAiV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmgiCisjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KKyNpbmNsdWRlIDxvYmpjL29iamMuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisKK09CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJDb250cm9sbGVyOworT0JKQ19DTEFTUyBBVlBsYXll
clZpZXdDb250cm9sbGVyOworT0JKQ19DTEFTUyBVSVZpZXdDb250cm9sbGVyOworT0JKQ19DTEFT
UyBVSVdpbmRvdzsKK09CSkNfQ0xBU1MgVUlWaWV3OworCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IFN0cmluZzsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW50UmVjdDsKK2NsYXNz
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uQ2hhbmdl
T2JzZXJ2ZXI7CisKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Q2xpZW50
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dENsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGV4dGVybmFsUGxheWJhY2tFbmFibGVk
Q2hhbmdlZChib29sKSA9IDA7Cit9OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdAorICAgIDogcHVibGljIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZQorICAgICwgcHVibGljIFJlZkNvdW50ZWQ8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQ+IHsKKworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQVZLaXQ+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCgpKTsKKyAgICB9CisgICAgdmly
dHVhbCB+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsKik7CisgICAgdm9pZCBzZXRDbGllbnQoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXRDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQorCisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZXNldE1lZGlhU3RhdGUoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1l
KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEJ1ZmZlcmVkVGltZShkb3Vi
bGUpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmF0ZShib29sIGlzUGxh
eWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5nZXMmKSBvdmVycmlkZTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZShib29sKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgp
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBz
ZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4dGVy
bmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgV1RG
OjpTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSBvdmVycmlkZTsK
KyAgICBib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3Q7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpOworCisgICAgV2ViQVZQbGF5
ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXJD
b250cm9sbGVyLmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBXRUJDT1JFX0VYUE9SVCBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCgpOworCisgICAgUmV0YWluUHRyPFdlYkFWUGxh
eWVyQ29udHJvbGxlcj4gbV9wbGF5ZXJDb250cm9sbGVyOworICAgIFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsKiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsIHsgbnVsbHB0ciB9OworICAgIFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Q2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHJ9OworCisg
ICAgYm9vbCBtX3dpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIHsgdHJ1ZSB9OworfTsKKwor
fQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2VkY2I4MTM0Zjc3MjY2YTUxMGM0ZDU4NTBhZWMyODNmZmQ3NjllNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdC5tbQpAQCAtMCwwICsxLDIwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIgorCisjaWYgUExBVEZPUk0o
SU9TKQorI2lmIEhBVkUoQVZLSVQpCisKKyNpbXBvcnQgIkFWS2l0U1BJLmgiCisjaW1wb3J0ICJM
b2dnaW5nLmgiCisjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJXZWJBVlBsYXllckNv
bnRyb2xsZXIuaCIKKyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmgiCisjaW1wb3J0
IDxBVkZvdW5kYXRpb24vQVZUaW1lLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1w
b3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworI2ltcG9ydCAiQ29yZU1lZGlhU29mdExpbmsuaCIKKworU09GVF9MSU5LX0ZSQU1FV09SSyhB
VktpdCkKK1NPRlRfTElOS19DTEFTUyhBVktpdCwgQVZWYWx1ZVRpbWluZykKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQoKQorICAgIDogbV9wbGF5ZXJDb250cm9sbGVyKGFkb3B0
TlMoW1tXZWJBVlBsYXllckNvbnRyb2xsZXIgYWxsb2NdIGluaXRdKSkKK3sKKyAgICBbbV9wbGF5
ZXJDb250cm9sbGVyIHNldFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTp0aGlzXTsKK30KKworV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6On5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdCgpCit7CisgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVy
ID0gbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpOworICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYm
IHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSkKKyAgICAgICAgc2V0RXh0
ZXJuYWxQbGF5YmFjayhmYWxzZSwgVGFyZ2V0VHlwZU5vbmUsICIiKTsKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6cmVzZXRNZWRpYVN0YXRlKCkKK3sKKyAgICBb
bV9wbGF5ZXJDb250cm9sbGVyIHJlc2V0U3RhdGVdOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0OjpzZXRXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbChXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbCogbW9kZWwpCit7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbCA9IG1v
ZGVsOworICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV9wbGF5YmFja1Nlc3Np
b25Nb2RlbF07Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNl
dER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIq
IHBsYXllckNvbnRyb2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7CisKKyAgICAvLyBG
SVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzAxNyB1c2Ug
Y29ycmVjdCB2YWx1ZXMgaW5zdGVhZCBvZiBkdXJhdGlvbiBmb3IgYWxsIHRoZXNlCisgICAgcGxh
eWVyQ29udHJvbGxlci5jb250ZW50RHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICBwbGF5ZXJDb250
cm9sbGVyLm1heFRpbWUgPSBkdXJhdGlvbjsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmNvbnRlbnRE
dXJhdGlvbldpdGhpbkVuZFRpbWVzID0gZHVyYXRpb247CisKKyAgICAvLyBGSVhNRTogd2UgdGFr
ZSB0aGlzIGFzIGFuIGluZGljYXRpb24gdGhhdCBwbGF5YmFjayBpcyByZWFkeS4KKyAgICBwbGF5
ZXJDb250cm9sbGVyLmNhblBsYXkgPSBZRVM7CisgICAgcGxheWVyQ29udHJvbGxlci5jYW5QYXVz
ZSA9IFlFUzsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmNhblRvZ2dsZVBsYXliYWNrID0gWUVTOwor
ICAgIHBsYXllckNvbnRyb2xsZXIuaGFzRW5hYmxlZEF1ZGlvID0gWUVTOworICAgIHBsYXllckNv
bnRyb2xsZXIuY2FuU2VlayA9IFlFUzsKKyAgICBwbGF5ZXJDb250cm9sbGVyLm1pblRpbWUgPSAw
OworICAgIHBsYXllckNvbnRyb2xsZXIuc3RhdHVzID0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVz
UmVhZHlUb1BsYXk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6
OnNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCit7
CisgICAgTlNUaW1lSW50ZXJ2YWwgYW5jaG9yVGltZVN0YW1wID0gIVttX3BsYXllckNvbnRyb2xs
ZXIgcmF0ZV0gPyBOQU4gOiBhbmNob3JUaW1lOworICAgIEFWVmFsdWVUaW1pbmcgKnRpbWluZyA9
IFtnZXRBVlZhbHVlVGltaW5nQ2xhc3MoKSB2YWx1ZVRpbWluZ1dpdGhBbmNob3JWYWx1ZTpjdXJy
ZW50VGltZQorICAgICAgICBhbmNob3JUaW1lU3RhbXA6YW5jaG9yVGltZVN0YW1wIHJhdGU6MF07
CisKKyAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldFRpbWluZzp0aW1pbmddOworfQorCit2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRCdWZmZXJlZFRpbWUoZG91Ymxl
IGJ1ZmZlcmVkVGltZSkKK3sKKyAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRy
b2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7CisgICAgZG91YmxlIGR1cmF0aW9uID0g
cGxheWVyQ29udHJvbGxlci5jb250ZW50RHVyYXRpb247CisgICAgZG91YmxlIG5vcm1hbGl6ZWRC
dWZmZXJlZFRpbWU7CisgICAgaWYgKCFkdXJhdGlvbikKKyAgICAgICAgbm9ybWFsaXplZEJ1ZmZl
cmVkVGltZSA9IDA7CisgICAgZWxzZQorICAgICAgICBub3JtYWxpemVkQnVmZmVyZWRUaW1lID0g
YnVmZmVyZWRUaW1lIC8gZHVyYXRpb247CisgICAgcGxheWVyQ29udHJvbGxlci5sb2FkZWRUaW1l
UmFuZ2VzID0gQFtAMCwgQChub3JtYWxpemVkQnVmZmVyZWRUaW1lKV07Cit9CisKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZs
b2F0IHBsYXliYWNrUmF0ZSkKK3sKKyAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldFJhdGU6aXNQ
bGF5aW5nID8gcGxheWJhY2tSYXRlIDogMC5dOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0OjpzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJiB0aW1l
UmFuZ2VzKQoreworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gc2Vla2FibGVSYW5nZXMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBFeGNlcHRpb25D
b2RlIGV4Y2VwdGlvbkNvZGU7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGltZVJh
bmdlcy5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIGRvdWJsZSBzdGFydCA9IHRpbWVSYW5nZXMu
c3RhcnQoaSwgZXhjZXB0aW9uQ29kZSk7CisgICAgICAgIGRvdWJsZSBlbmQgPSB0aW1lUmFuZ2Vz
LmVuZChpLCBleGNlcHRpb25Db2RlKTsKKworICAgICAgICBDTVRpbWVSYW5nZSByYW5nZSA9IENN
VGltZVJhbmdlTWFrZShDTVRpbWVNYWtlV2l0aFNlY29uZHMoc3RhcnQsIDEwMDApLCBDTVRpbWVN
YWtlV2l0aFNlY29uZHMoZW5kLXN0YXJ0LCAxMDAwKSk7CisgICAgICAgIFtzZWVrYWJsZVJhbmdl
cyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ01UaW1lUmFuZ2U6cmFuZ2VdXTsKKyAgICB9
CisKKyAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldFNlZWthYmxlVGltZVJhbmdlczpzZWVrYWJs
ZVJhbmdlcy5nZXQoKV07Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIGNhblBsYXlGYXN0UmV2ZXJzZSkKK3sKKyAg
ICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldENhblNjYW5CYWNrd2FyZDpjYW5QbGF5RmFzdFJldmVy
c2VdOworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBtZWRpYVNlbGVjdGlv
bk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMpCit7CisgICAgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aENhcGFjaXR5Om9wdGlvbnMuc2l6ZSgpXSk7CisgICAgZm9yIChhdXRvJiBu
YW1lIDogb3B0aW9ucykgeworICAgICAgICBSZXRhaW5QdHI8V2ViQVZNZWRpYVNlbGVjdGlvbk9w
dGlvbj4gd2ViT3B0aW9uID0gYWRvcHROUyhbW1dlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gYWxs
b2NdIGluaXRdKTsKKyAgICAgICAgW3dlYk9wdGlvbiBzZXRMb2NhbGl6ZWREaXNwbGF5TmFtZTpu
YW1lXTsKKyAgICAgICAgW3dlYk9wdGlvbnMgYWRkT2JqZWN0OndlYk9wdGlvbi5nZXQoKV07Cisg
ICAgfQorICAgIHJldHVybiB3ZWJPcHRpb25zOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBtZWRpYVNlbGVjdGlvbk9wdGlvbnMo
b3B0aW9ucyk7CisgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRBdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9uczp3ZWJPcHRpb25zLmdldCgpXTsKKyAgICBpZiAoc2VsZWN0ZWRJbmRleCA8IFt3ZWJP
cHRpb25zIGNvdW50XSkKKyAgICAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRDdXJyZW50QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbjpbd2ViT3B0aW9ucyBvYmplY3RBdEluZGV4OnN0YXRpY19j
YXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgpXV07Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit7Cisg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gbWVkaWFTZWxlY3Rpb25P
cHRpb25zKG9wdGlvbnMpOworICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0TGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9uczp3ZWJPcHRpb25zLmdldCgpXTsKKyAgICBpZiAoc2VsZWN0ZWRJbmRl
eCA8IFt3ZWJPcHRpb25zIGNvdW50XSkKKyAgICAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRD
dXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOlt3ZWJPcHRpb25zIG9iamVjdEF0SW5k
ZXg6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc2VsZWN0ZWRJbmRleCldXTsKK30KKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0RXh0ZXJuYWxQbGF5YmFjayhib29s
IGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRhcmdldFR5cGUsIFN0cmluZyBs
b2NhbGl6ZWREZXZpY2VOYW1lKQoreworICAgIEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxh
eWJhY2tUeXBlIGV4dGVybmFsUGxheWJhY2tUeXBlID0gQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJu
YWxQbGF5YmFja1R5cGVOb25lOworICAgIGlmICh0YXJnZXRUeXBlID09IFRhcmdldFR5cGVBaXJQ
bGF5KQorICAgICAgICBleHRlcm5hbFBsYXliYWNrVHlwZSA9IEFWUGxheWVyQ29udHJvbGxlckV4
dGVybmFsUGxheWJhY2tUeXBlQWlyUGxheTsKKyAgICBlbHNlIGlmICh0YXJnZXRUeXBlID09IFRh
cmdldFR5cGVUVk91dCkKKyAgICAgICAgZXh0ZXJuYWxQbGF5YmFja1R5cGUgPSBBVlBsYXllckNv
bnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZVRWT3V0OworCisgICAgV2ViQVZQbGF5ZXJDb250
cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpOworICAg
IHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FpclBsYXlEZXZpY2VMb2NhbGl6ZWRO
YW1lID0gbG9jYWxpemVkRGV2aWNlTmFtZTsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFs
UGxheWJhY2tUeXBlID0gZXh0ZXJuYWxQbGF5YmFja1R5cGU7CisgICAgcGxheWVyQ29udHJvbGxl
ci5leHRlcm5hbFBsYXliYWNrQWN0aXZlID0gZW5hYmxlZDsKKworICAgIGlmIChtX2NsaWVudCkK
KyAgICAgICAgbV9jbGllbnQtPmV4dGVybmFsUGxheWJhY2tFbmFibGVkQ2hhbmdlZChlbmFibGVk
KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0V2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKK3sKKyAgICBbbV9wbGF5ZXJD
b250cm9sbGVyIHNldEFsbG93c0V4dGVybmFsUGxheWJhY2s6IWRpc2FibGVkXTsKK30KKworYm9v
bCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6d2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9wbGF5ZXJDb250cm9sbGVyIGFsbG93
c0V4dGVybmFsUGxheWJhY2tdOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0OjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsID0gbmls
OworfQorCit9CisKKyNlbmRpZiAvLyBIQVZFKEFWS0lUKQorI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IDk5ZDFjMDdlZGM3YzliOWUw
MmZkZmJjNmZiN2I3ZjIxNTY1OTM1ZGMuLmI2OWNjMTJjYmJkZmEwYWVlMzQ3NGFkMjczNjE3Mjg5
ZWQwZGJkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMzMsNiArMzMs
OCBAQAogI2ltcG9ydCAiUXVhcnR6Q29yZVNQSS5oIgogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIK
ICNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKKyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0LmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dC5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCIKICNpbXBv
cnQgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgiCiAjaW1wb3J0ICJXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIgpAQCAtNTU0LDE0ICs1NTYsMTYgQEAgdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKEhU
TUxWaWRlb0VsZW1lbnQmIHZpZGUKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywgdmlld1JlZiwgbW9kZV0gewogICAgICAgICBB
U1NFUlQoaXNVSVRocmVhZCgpKTsKIAotICAgICAgICBtX2ludGVyZmFjZSA9IFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBwbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UgPSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6Y3JlYXRl
KCk7CisgICAgICAgIG1faW50ZXJmYWNlID0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmNyZWF0ZShwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuZ2V0KCkpOwogICAgICAgICBtX2lu
dGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIodGhpcyk7CiAgICAg
ICAgIG1faW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCh0aGlzKTsKICAgICAg
ICAgbV92aWRlb0Z1bGxzY3JlZW5WaWV3ID0gYWRvcHROUyhbW2dldFVJVmlld0NsYXNzKCkgYWxs
b2NdIGluaXRdKTsKICAgICAgICAgCiAgICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICAgICAgV2ViVGhyZWFkUnVu
KFtzdHJvbmdUaGlzLCB0aGlzLCB2aWV3UmVmLCBtb2RlXSB7Ci0gICAgICAgICAgICBtX21vZGVs
ID0gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSgpOworICAgICAg
ICAgICAgYXV0byBwbGF5YmFja1Nlc3Npb25Nb2RlbCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fbW9kZWwgPSBXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKHBsYXliYWNrU2Vzc2lvbk1vZGVsLmdl
dCgpKTsKICAgICAgICAgICAgIG1fbW9kZWwtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZSh0aGlzKTsKICAgICAgICAgICAgIG1fbW9kZWwtPnNldFZpZGVvRWxlbWVudChtX3ZpZGVvRWxl
bWVudC5nZXQoKSk7CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKaW5k
ZXggYzA3NDAwYTE4NTA4YjQzYTNiOTQyMGVhZGZlZWJlOGJiODM5OWFlYi4uY2UxZGYxMzNjMWI5
ZTk4MGIwNTFlMGY3NjQwMzYxN2Q3ZGNiMzViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRl
ICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIgogI2luY2x1ZGUgIldlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZS5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8
b2JqYy9vYmpjLmg+CkBAIC00MCwxNCArNDEsMTUgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi1PQkpDX0NMQVNTIFdlYkFWUGxheWVyQ29u
dHJvbGxlcjsKIE9CSkNfQ0xBU1MgQVZQbGF5ZXJWaWV3Q29udHJvbGxlcjsKIE9CSkNfQ0xBU1Mg
VUlWaWV3Q29udHJvbGxlcjsKIE9CSkNfQ0xBU1MgVUlXaW5kb3c7CiBPQkpDX0NMQVNTIFVJVmll
dzsKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKK09CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJDb250cm9sbGVy
OwogT0JKQ19DTEFTUyBXZWJBVlBsYXllckxheWVyVmlldzsKIE9CSkNfQ0xBU1MgV2ViQVZQbGF5
ZXJMYXllcjsKK09CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlOwog
CiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFN0cmluZzsKQEAgLTU1LDE4ICs1NywxNyBAQCBjbGFz
cyBTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEludFJlY3Q7CitjbGFzcyBX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDsKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsOwogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI7CiAgICAgCiBj
bGFzcyBXRUJDT1JFX0VYUE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdAogICAg
IDogcHVibGljIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZQorICAgICwgcHVibGljIFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Q2xpZW50CiAgICAgLCBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gewogCiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gY3JlYXRlKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0KCkpOwotICAgIH0KKyAgICBzdGF0aWMgUmVmPFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0PiBjcmVhdGUoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQmKTsKICAg
ICB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWwqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdlYlZpZGVvRnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyKFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKik7CkBAIC04
Myw3ICs4NCw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywg
dWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1Rhcmdl
dFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpIG92ZXJyaWRlOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkg
b3ZlcnJpZGU7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0dXBGdWxsc2Ny
ZWVuKFVJVmlldyYsIGNvbnN0IEludFJlY3QmIGluaXRpYWxSZWN0LCBVSVZpZXcgKiwgSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1cmVJ
blBpY3R1cmVQbGF5YmFjayk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGVudGVy
RnVsbHNjcmVlbigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNj
cmVlbihjb25zdCBJbnRSZWN0JiBmaW5hbFJlY3QpOwpAQCAtMTAwLDYgKzEwMCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgUGljdHVyZUluUGljdHVyZVN0YXJ0ZWQKICAgICB9OwogCisgICAgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWwqIG1vZGVsKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbDsgfQogICAgIGJvb2wgc2hvdWxkRXhpdEZ1bGxzY3JlZW5XaXRoUmVhc29uKEV4aXRG
dWxsU2NyZWVuUmVhc29uKTsKICAgICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgIGJvb2wgYWxsb3dz
UGljdHVyZUluUGljdHVyZVBsYXliYWNrKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NQaWN0dXJl
SW5QaWN0dXJlUGxheWJhY2s7IH0KQEAgLTEyMSwxMyArMTIyLDE2IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9k
ZSkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IG1vZGU7IH0KIAogcHJvdGVjdGVkOgotICAgIFdF
QkNPUkVfRVhQT1JUIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQVZLaXQmKTsKICAgICB2b2lkIGJlZ2luU2Vzc2lvbigpOwogICAgIHZv
aWQgZW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW5TdGFu
ZGFyZCgpOwogICAgIHZvaWQgd2F0Y2hkb2dUaW1lckZpcmVkKCk7CisgICAgdm9pZCBleHRlcm5h
bFBsYXliYWNrRW5hYmxlZENoYW5nZWQoYm9vbCkgb3ZlcnJpZGU7CisgICAgV2ViQVZQbGF5ZXJD
b250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyKCkgY29uc3Q7CiAKLSAgICBSZXRhaW5QdHI8V2Vi
QVZQbGF5ZXJDb250cm9sbGVyPiBtX3BsYXllckNvbnRyb2xsZXI7CisgICAgUmVmPFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKKyAg
ICBSZXRhaW5QdHI8V2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBtX3BsYXllclZp
ZXdDb250cm9sbGVyRGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPEFWUGxheWVyVmlld0NvbnRyb2xs
ZXI+IG1fcGxheWVyVmlld0NvbnRyb2xsZXI7CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwq
IG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgeyBudWxscHRyIH07CiAgICAgV2ViVmlkZW9GdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXIqIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyIHsgbnVsbHB0ciB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDY5ZGJkZjgxNGQ4NDM4MTM4NjM5
MDUxZTI4Yjg5ZDA5YmMzYTkzYmUuLjNkNThkOGUzOTY1NGFmOTM0OGY5YzVlM2M0OTYyZDg5MGQz
NjgyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTM3LDcgKzM3LDkgQEAK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5o
IgogI2ltcG9ydCAiVGltZVJhbmdlcy5oIgorI2ltcG9ydCAiV2ViQVZQbGF5ZXJDb250cm9sbGVy
LmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0ICJXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgiCiAj
aW1wb3J0IDxBVkZvdW5kYXRpb24vQVZUaW1lLmg+CkBAIC02MSw5ICs2Myw3IEBAIFNPRlRfTElO
S19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RG
aWxsLCBOU1N0cmluZyAqCiAKIFNPRlRfTElOS19GUkFNRVdPUksoQVZLaXQpCiBTT0ZUX0xJTktf
Q0xBU1MoQVZLaXQsIEFWUGljdHVyZUluUGljdHVyZUNvbnRyb2xsZXIpCi1TT0ZUX0xJTktfQ0xB
U1MoQVZLaXQsIEFWUGxheWVyQ29udHJvbGxlcikKIFNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZQ
bGF5ZXJWaWV3Q29udHJvbGxlcikKLVNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZWYWx1ZVRpbWlu
ZykKIFNPRlRfTElOS19DTEFTUyhBVktpdCwgX19BVlBsYXllckxheWVyVmlldykKIAogU09GVF9M
SU5LX0ZSQU1FV09SSyhVSUtpdCkKQEAgLTEyNSwxMjYgKzEyNSwyMiBAQCBzdGF0aWMgY29uc3Qg
ZG91YmxlIERlZmF1bHRXYXRjaGRvZ1RpbWVySW50ZXJ2YWwgPSAxOwogCiBAY2xhc3MgV2ViQVZN
ZWRpYVNlbGVjdGlvbk9wdGlvbjsKIAotQGludGVyZmFjZSBXZWJBVlBsYXllckNvbnRyb2xsZXIg
OiBOU09iamVjdCA8QVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlX1dlYktpdE9ubHk+IHsK
LSAgICBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpfY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb247Ci0gICAgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqX2N1cnJlbnRMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb247Ci0gICAgQk9PTCBfcGljdHVyZUluUGljdHVyZUludGVycnVw
dGVkOworQGludGVyZmFjZSBXZWJBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUgOiBOU09i
amVjdCA8QVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlX1dlYktpdE9ubHk+IHsKKyAgICBS
ZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IF9mdWxsc2NyZWVuSW50ZXJm
YWNlOwogfQotCi0tICh2b2lkKXJlc2V0U3RhdGU7Ci0KLUBwcm9wZXJ0eSAocmV0YWluKSBBVlBs
YXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXJQcm94eTsKLUBwcm9wZXJ0eSAoYXNzaWdu
KSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCogZGVsZWdhdGU7CiBAcHJvcGVydHkgKGFzc2lnbikg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQqIGZ1bGxzY3JlZW5JbnRlcmZhY2U7Ci0K
LUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY2FuU2NhbkZvcndhcmQ7Ci1AcHJvcGVydHkgQk9P
TCBjYW5TY2FuQmFja3dhcmQ7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGNhblNlZWtUb0Jl
Z2lubmluZzsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY2FuU2Vla1RvRW5kOwotCi1AcHJv
cGVydHkgQk9PTCBjYW5QbGF5OwotQHByb3BlcnR5IChnZXR0ZXI9aXNQbGF5aW5nKSBCT09MIHBs
YXlpbmc7Ci1AcHJvcGVydHkgQk9PTCBjYW5QYXVzZTsKLUBwcm9wZXJ0eSBCT09MIGNhblRvZ2ds
ZVBsYXliYWNrOwotQHByb3BlcnR5IGRvdWJsZSByYXRlOwotQHByb3BlcnR5IEJPT0wgY2FuU2Vl
azsKLUBwcm9wZXJ0eSBOU1RpbWVJbnRlcnZhbCBjb250ZW50RHVyYXRpb247Ci1AcHJvcGVydHkg
TlNTaXplIGNvbnRlbnREaW1lbnNpb25zOwotQHByb3BlcnR5IEJPT0wgaGFzRW5hYmxlZEF1ZGlv
OwotQHByb3BlcnR5IEJPT0wgaGFzRW5hYmxlZFZpZGVvOwotQHByb3BlcnR5IE5TVGltZUludGVy
dmFsIG1pblRpbWU7Ci1AcHJvcGVydHkgTlNUaW1lSW50ZXJ2YWwgbWF4VGltZTsKLUBwcm9wZXJ0
eSBOU1RpbWVJbnRlcnZhbCBjb250ZW50RHVyYXRpb25XaXRoaW5FbmRUaW1lczsKLUBwcm9wZXJ0
eSAocmV0YWluKSBOU0FycmF5ICpsb2FkZWRUaW1lUmFuZ2VzOwotQHByb3BlcnR5IEFWUGxheWVy
Q29udHJvbGxlclN0YXR1cyBzdGF0dXM7Ci1AcHJvcGVydHkgKHJldGFpbikgQVZWYWx1ZVRpbWlu
ZyAqdGltaW5nOwotQHByb3BlcnR5IChyZXRhaW4pIE5TQXJyYXkgKnNlZWthYmxlVGltZVJhbmdl
czsKLQotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBoYXNNZWRpYVNlbGVjdGlvbk9wdGlvbnM7
Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGhhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
OwotQHByb3BlcnR5IChyZXRhaW4pIE5TQXJyYXkgKmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
OwotQHByb3BlcnR5IChyZXRhaW4pIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKmN1cnJlbnRB
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOwotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBoYXNM
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOwotQHByb3BlcnR5IChyZXRhaW4pIE5TQXJyYXkg
KmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7Ci1AcHJvcGVydHkgKHJldGFpbikgV2ViQVZN
ZWRpYVNlbGVjdGlvbk9wdGlvbiAqY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjsK
LQotQHByb3BlcnR5IChyZWFkb25seSwgZ2V0dGVyPWlzUGxheWluZ09uRXh0ZXJuYWxTY3JlZW4p
IEJPT0wgcGxheWluZ09uRXh0ZXJuYWxTY3JlZW47Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0
ZXI9aXNQbGF5aW5nT25TZWNvbmRTY3JlZW4pIEJPT0wgcGxheWluZ09uU2Vjb25kU2NyZWVuOwot
QHByb3BlcnR5IChnZXR0ZXI9aXNFeHRlcm5hbFBsYXliYWNrQWN0aXZlKSBCT09MIGV4dGVybmFs
UGxheWJhY2tBY3RpdmU7Ci1AcHJvcGVydHkgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5
YmFja1R5cGUgZXh0ZXJuYWxQbGF5YmFja1R5cGU7Ci1AcHJvcGVydHkgKHJldGFpbikgTlNTdHJp
bmcgKmV4dGVybmFsUGxheWJhY2tBaXJQbGF5RGV2aWNlTG9jYWxpemVkTmFtZTsKLUBwcm9wZXJ0
eSBCT09MIGFsbG93c0V4dGVybmFsUGxheWJhY2s7Ci0KIC0gKEJPT0wpcGxheWVyVmlld0NvbnRy
b2xsZXI6KEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKilwbGF5ZXJWaWV3Q29udHJvbGxlciBzaG91
bGRFeGl0RnVsbFNjcmVlbldpdGhSZWFzb246KEFWUGxheWVyVmlld0NvbnRyb2xsZXJFeGl0RnVs
bFNjcmVlblJlYXNvbilyZWFzb247CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJBVlBsYXll
ckNvbnRyb2xsZXIKLQotLSAoaW5zdGFuY2V0eXBlKWluaXQKLXsKLSAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIHNlbGY7Ci0gICAgCi0gICAgX3BpY3R1cmVJ
blBpY3R1cmVJbnRlcnJ1cHRlZCA9IE5POwotICAgIGluaXRBVlBsYXllckNvbnRyb2xsZXIoKTsK
LSAgICBzZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eSA9IFtbYWxsb2NBVlBsYXllckNvbnRyb2xs
ZXJJbnN0YW5jZSgpIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQot
LSAodm9pZClkZWFsbG9jCi17Ci0gICAgW19wbGF5ZXJDb250cm9sbGVyUHJveHkgcmVsZWFzZV07
Ci0gICAgW19sb2FkZWRUaW1lUmFuZ2VzIHJlbGVhc2VdOwotICAgIFtfc2Vla2FibGVUaW1lUmFu
Z2VzIHJlbGVhc2VdOwotICAgIFtfdGltaW5nIHJlbGVhc2VdOwotICAgIFtfYXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnMgcmVsZWFzZV07Ci0gICAgW19sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zIHJlbGVhc2VdOwotICAgIFtfY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24gcmVs
ZWFzZV07Ci0gICAgW19jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uIHJlbGVhc2Vd
OwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClyZXNldFN0YXRlCitAaW1wbGVt
ZW50YXRpb24gV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlCistIChXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdCopZnVsbHNjcmVlbkludGVyZmFjZQogewotICAgIHNlbGYu
Y29udGVudER1cmF0aW9uID0gMDsKLSAgICBzZWxmLm1heFRpbWUgPSAwOwotICAgIHNlbGYuY29u
dGVudER1cmF0aW9uV2l0aGluRW5kVGltZXMgPSAwOwotICAgIHNlbGYubG9hZGVkVGltZVJhbmdl
cyA9IEBbXTsKLSAgICAKLSAgICBzZWxmLmNhblBsYXkgPSBOTzsKLSAgICBzZWxmLmNhblBhdXNl
ID0gTk87Ci0gICAgc2VsZi5jYW5Ub2dnbGVQbGF5YmFjayA9IE5POwotICAgIHNlbGYuaGFzRW5h
YmxlZEF1ZGlvID0gTk87Ci0gICAgc2VsZi5jYW5TZWVrID0gTk87Ci0gICAgc2VsZi5taW5UaW1l
ID0gMDsKLSAgICBzZWxmLnN0YXR1cyA9IEFWUGxheWVyQ29udHJvbGxlclN0YXR1c1Vua25vd247
Ci0gICAgCi0gICAgc2VsZi50aW1pbmcgPSBuaWw7Ci0gICAgc2VsZi5yYXRlID0gMDsKLSAgICAK
LSAgICBzZWxmLmhhc0VuYWJsZWRWaWRlbyA9IE5POwotICAgIHNlbGYuY29udGVudERpbWVuc2lv
bnMgPSBDR1NpemVNYWtlKDAsIDApOwotICAgIAotICAgIHNlbGYuc2Vla2FibGVUaW1lUmFuZ2Vz
ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAgICAKLSAgICBzZWxmLmNhblNjYW5CYWNrd2Fy
ZCA9IE5POwotICAgIAotICAgIHNlbGYuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBuaWw7
Ci0gICAgc2VsZi5jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsKLSAgICAK
LSAgICBzZWxmLmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBuaWw7Ci0gICAgc2VsZi5j
dXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uID0gbmlsOwotfQotCi0tIChBVlBsYXll
ciAqKSBwbGF5ZXIKLXsKLSAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBfZnVsbHNjcmVlbklu
dGVyZmFjZS5nZXQoKTsKIH0KIAotLSAoaWQpZm9yd2FyZGluZ1RhcmdldEZvclNlbGVjdG9yOihT
RUwpc2VsZWN0b3IKKy0gKHZvaWQpc2V0RnVsbHNjcmVlbkludGVyZmFjZTooV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQqKWZ1bGxzY3JlZW5JbnRlcmZhY2UKIHsKLSAgICBVTlVTRURf
UEFSQU0oc2VsZWN0b3IpOwotICAgIHJldHVybiBzZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eTsK
KyAgICBfZnVsbHNjcmVlbkludGVyZmFjZSA9IGZ1bGxzY3JlZW5JbnRlcmZhY2U7CiB9CiAKIC0g
KHZvaWQpcGxheWVyVmlld0NvbnRyb2xsZXJXaWxsU3RhcnRQaWN0dXJlSW5QaWN0dXJlOihBVlBs
YXllclZpZXdDb250cm9sbGVyICopcGxheWVyVmlld0NvbnRyb2xsZXIKQEAgLTMwNSwzNTggKzIw
MSwxMiBAQCAtICh2b2lkKXBsYXllclZpZXdDb250cm9sbGVyOihBVlBsYXllclZpZXdDb250cm9s
bGVyICopcGxheWVyVmlld0NvbnRyb2xsZXIgcmVzdAogICAgIFVOVVNFRF9QQVJBTShwbGF5ZXJW
aWV3Q29udHJvbGxlcik7CiAgICAgc2VsZi5mdWxsc2NyZWVuSW50ZXJmYWNlLT5wcmVwYXJlRm9y
UGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXIoY29tcGxldGlvbkhhbmRs
ZXIpOwogfQotCi0tICh2b2lkKXBsYXk6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShz
ZW5kZXIpOwotICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNl
bGYuZGVsZWdhdGUtPnBsYXkoKTsKLX0KLQotLSAodm9pZClwYXVzZTooaWQpc2VuZGVyCi17Ci0g
ICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgaWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAg
ICByZXR1cm47Ci0gICAgc2VsZi5kZWxlZ2F0ZS0+cGF1c2UoKTsKLX0KLQotLSAodm9pZCl0b2dn
bGVQbGF5YmFjazooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAg
aWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgc2VsZi5kZWxlZ2F0ZS0+
dG9nZ2xlUGxheVN0YXRlKCk7Ci19Ci0KLS0gKHZvaWQpdG9nZ2xlUGxheWJhY2tFdmVuV2hlbklu
QmFja2dyb3VuZDooaWQpc2VuZGVyCi17Ci0gICAgW3NlbGYgdG9nZ2xlUGxheWJhY2s6c2VuZGVy
XTsKLX0KLQotLSAoQk9PTClpc1BsYXlpbmcKLXsKLSAgICByZXR1cm4gW3NlbGYgcmF0ZV0gIT0g
MDsKLX0KLQotLSAodm9pZClzZXRQbGF5aW5nOihCT09MKXBsYXlpbmcKLXsKLSAgICBpZiAoIXNl
bGYuZGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAocGxheWluZykKLSAgICAgICAg
c2VsZi5kZWxlZ2F0ZS0+cGxheSgpOwotICAgIGVsc2UKLSAgICAgICAgc2VsZi5kZWxlZ2F0ZS0+
cGF1c2UoKTsKLX0KLQotKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ1BsYXlp
bmcKLXsKLSAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3Q6QCJyYXRlIl07Ci19Ci0KLS0g
KHZvaWQpYmVnaW5TY3J1YmJpbmc6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5k
ZXIpOwotICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNlbGYu
ZGVsZWdhdGUtPmJlZ2luU2NydWJiaW5nKCk7Ci19Ci0KLS0gKHZvaWQpZW5kU2NydWJiaW5nOihp
ZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBpZiAoIXNlbGYuZGVs
ZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBzZWxmLmRlbGVnYXRlLT5lbmRTY3J1YmJpbmco
KTsKLX0KLQotLSAodm9pZClzZWVrVG9UaW1lOihOU1RpbWVJbnRlcnZhbCl0aW1lCi17Ci0gICAg
aWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgc2VsZi5kZWxlZ2F0ZS0+
ZmFzdFNlZWsodGltZSk7Ci19Ci0KLS0gKE5TVGltZUludGVydmFsKWN1cnJlbnRUaW1lV2l0aGlu
RW5kVGltZXMKLXsKLSAgICByZXR1cm4gc2VsZi50aW1pbmcuY3VycmVudFZhbHVlOwotfQotCi0t
ICh2b2lkKXNldEN1cnJlbnRUaW1lV2l0aGluRW5kVGltZXM6KE5TVGltZUludGVydmFsKWN1cnJl
bnRUaW1lV2l0aGluRW5kVGltZXMKLXsKLSAgICBbc2VsZiBzZWVrVG9UaW1lOmN1cnJlbnRUaW1l
V2l0aGluRW5kVGltZXNdOwotfQotCi0rIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0
aW5nQ3VycmVudFRpbWVXaXRoaW5FbmRUaW1lcwotewotICAgIHJldHVybiBbTlNTZXQgc2V0V2l0
aE9iamVjdDpAInRpbWluZyJdOwotfQotCi0tIChCT09MKWhhc0xpdmVTdHJlYW1pbmdDb250ZW50
Ci17Ci0gICAgaWYgKFtzZWxmIHN0YXR1c10gPT0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzUmVh
ZHlUb1BsYXkpCi0gICAgICAgIHJldHVybiBbc2VsZiBjb250ZW50RHVyYXRpb25dID09IHN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOwotICAgIHJldHVybiBOTzsKLX0KLQot
KyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ0hhc0xpdmVTdHJlYW1pbmdDb250
ZW50Ci17Ci0gICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0czpAImNvbnRlbnREdXJhdGlv
biIsIEAic3RhdHVzIiwgbmlsXTsKLX0KLQotLSAodm9pZClza2lwQmFja3dhcmRUaGlydHlTZWNv
bmRzOihpZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBCT09MIGlz
VGltZVdpdGhpblNlZWthYmxlVGltZVJhbmdlcyA9IE5POwotICAgIENNVGltZSBjdXJyZW50VGlt
ZSA9IENNVGltZU1ha2VXaXRoU2Vjb25kcyhbW3NlbGYgdGltaW5nXSBjdXJyZW50VmFsdWVdLCAx
MDAwKTsKLSAgICBDTVRpbWUgdGhpcnR5U2Vjb25kc0JlZm9yZUN1cnJlbnRUaW1lID0gQ01UaW1l
U3VidHJhY3QoY3VycmVudFRpbWUsIENNVGltZU1ha2UoMzAsIDEpKTsKLSAgICAKLSAgICBmb3Ig
KE5TVmFsdWUgKnNlZWthYmxlVGltZVJhbmdlVmFsdWUgaW4gW3NlbGYgc2Vla2FibGVUaW1lUmFu
Z2VzXSkgewotICAgICAgICBpZiAoQ01UaW1lUmFuZ2VDb250YWluc1RpbWUoW3NlZWthYmxlVGlt
ZVJhbmdlVmFsdWUgQ01UaW1lUmFuZ2VWYWx1ZV0sIHRoaXJ0eVNlY29uZHNCZWZvcmVDdXJyZW50
VGltZSkpIHsKLSAgICAgICAgICAgIGlzVGltZVdpdGhpblNlZWthYmxlVGltZVJhbmdlcyA9IFlF
UzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmIChp
c1RpbWVXaXRoaW5TZWVrYWJsZVRpbWVSYW5nZXMpCi0gICAgICAgIFtzZWxmIHNlZWtUb1RpbWU6
Q01UaW1lR2V0U2Vjb25kcyh0aGlydHlTZWNvbmRzQmVmb3JlQ3VycmVudFRpbWUpXTsKLX0KLQot
LSAodm9pZClnb3RvRW5kT2ZTZWVrYWJsZVJhbmdlczooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VE
X1BBUkFNKHNlbmRlcik7Ci0gICAgTlNUaW1lSW50ZXJ2YWwgdGltZUF0RW5kT2ZTZWVrYWJsZVRp
bWVSYW5nZXMgPSBOQU47Ci0gICAgCi0gICAgZm9yIChOU1ZhbHVlICpzZWVrYWJsZVRpbWVSYW5n
ZVZhbHVlIGluIFtzZWxmIHNlZWthYmxlVGltZVJhbmdlc10pIHsKLSAgICAgICAgQ01UaW1lUmFu
Z2Ugc2Vla2FibGVUaW1lUmFuZ2UgPSBbc2Vla2FibGVUaW1lUmFuZ2VWYWx1ZSBDTVRpbWVSYW5n
ZVZhbHVlXTsKLSAgICAgICAgTlNUaW1lSW50ZXJ2YWwgZW5kT2ZTZWVrYWJsZVRpbWVSYW5nZSA9
IENNVGltZUdldFNlY29uZHMoQ01UaW1lUmFuZ2VHZXRFbmQoc2Vla2FibGVUaW1lUmFuZ2UpKTsK
LSAgICAgICAgaWYgKGlzbmFuKHRpbWVBdEVuZE9mU2Vla2FibGVUaW1lUmFuZ2VzKSB8fCBlbmRP
ZlNlZWthYmxlVGltZVJhbmdlID4gdGltZUF0RW5kT2ZTZWVrYWJsZVRpbWVSYW5nZXMpCi0gICAg
ICAgICAgICB0aW1lQXRFbmRPZlNlZWthYmxlVGltZVJhbmdlcyA9IGVuZE9mU2Vla2FibGVUaW1l
UmFuZ2U7Ci0gICAgfQotICAgIAotICAgIGlmICghaXNuYW4odGltZUF0RW5kT2ZTZWVrYWJsZVRp
bWVSYW5nZXMpKQotICAgICAgICBbc2VsZiBzZWVrVG9UaW1lOnRpbWVBdEVuZE9mU2Vla2FibGVU
aW1lUmFuZ2VzXTsKLX0KLQotLSAoQk9PTCljYW5TY2FuRm9yd2FyZAotewotICAgIHJldHVybiBb
c2VsZiBjYW5QbGF5XTsKLX0KLQotKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGlu
Z0NhblNjYW5Gb3J3YXJkCi17Ci0gICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAiY2Fu
UGxheSJdOwotfQotCi0tICh2b2lkKWJlZ2luU2Nhbm5pbmdGb3J3YXJkOihpZClzZW5kZXIKLXsK
LSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCi0gICAg
ICAgIHJldHVybjsKLSAgICBzZWxmLmRlbGVnYXRlLT5iZWdpblNjYW5uaW5nRm9yd2FyZCgpOwot
fQotCi0tICh2b2lkKWVuZFNjYW5uaW5nRm9yd2FyZDooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VE
X1BBUkFNKHNlbmRlcik7Ci0gICAgaWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47
Ci0gICAgc2VsZi5kZWxlZ2F0ZS0+ZW5kU2Nhbm5pbmcoKTsKLX0KLQotLSAodm9pZCliZWdpblNj
YW5uaW5nQmFja3dhcmQ6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwot
ICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNlbGYuZGVsZWdh
dGUtPmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpOwotfQotCi0tICh2b2lkKWVuZFNjYW5uaW5nQmFj
a3dhcmQ6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIGlmICgh
c2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNlbGYuZGVsZWdhdGUtPmVuZFNj
YW5uaW5nKCk7Ci19Ci0KLS0gKEJPT0wpY2FuU2Vla1RvQmVnaW5uaW5nCi17Ci0gICAgQ01UaW1l
IG1pbmltdW1UaW1lID0ga0NNVGltZUluZGVmaW5pdGU7Ci0KLSAgICBmb3IgKE5TVmFsdWUgKnZh
bHVlIGluIFtzZWxmIHNlZWthYmxlVGltZVJhbmdlc10pCi0gICAgICAgIG1pbmltdW1UaW1lID0g
Q01UaW1lTWluaW11bShbdmFsdWUgQ01UaW1lUmFuZ2VWYWx1ZV0uc3RhcnQsIG1pbmltdW1UaW1l
KTsKLQotICAgIHJldHVybiBDTVRJTUVfSVNfTlVNRVJJQyhtaW5pbXVtVGltZSk7Ci19Ci0KLSsg
KE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdDYW5TZWVrVG9CZWdpbm5pbmcKLXsK
LSAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3Q6QCJzZWVrYWJsZVRpbWVSYW5nZXMiXTsK
LX0KLQotLSAodm9pZClzZWVrVG9CZWdpbm5pbmc6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9Q
QVJBTShzZW5kZXIpOwotICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIHNlbGYuZGVsZWdhdGUtPnNlZWtUb1RpbWUoLUlORklOSVRZKTsKLX0KLQotLSAodm9pZClz
ZWVrQ2hhcHRlckJhY2t3YXJkOihpZClzZW5kZXIKLXsKLSAgICBbc2VsZiBzZWVrVG9CZWdpbm5p
bmc6c2VuZGVyXTsKLX0KLQotLSAoQk9PTCljYW5TZWVrVG9FbmQKLXsKLSAgICBDTVRpbWUgbWF4
aW11bVRpbWUgPSBrQ01UaW1lSW5kZWZpbml0ZTsKLQotICAgIGZvciAoTlNWYWx1ZSAqdmFsdWUg
aW4gW3NlbGYgc2Vla2FibGVUaW1lUmFuZ2VzXSkKLSAgICAgICAgbWF4aW11bVRpbWUgPSBDTVRp
bWVNYXhpbXVtKENNVGltZVJhbmdlR2V0RW5kKFt2YWx1ZSBDTVRpbWVSYW5nZVZhbHVlXSksIG1h
eGltdW1UaW1lKTsKLQotICAgIHJldHVybiBDTVRJTUVfSVNfTlVNRVJJQyhtYXhpbXVtVGltZSk7
Ci19Ci0KLSsgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdDYW5TZWVrVG9FbmQK
LXsKLSAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3Q6QCJzZWVrYWJsZVRpbWVSYW5nZXMi
XTsKLX0KLQotLSAodm9pZClzZWVrVG9FbmQ6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJB
TShzZW5kZXIpOwotICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAg
IHNlbGYuZGVsZWdhdGUtPnNlZWtUb1RpbWUoSU5GSU5JVFkpOwotfQotCi0tICh2b2lkKXNlZWtD
aGFwdGVyRm9yd2FyZDooaWQpc2VuZGVyCi17Ci0gICAgW3NlbGYgc2Vla1RvRW5kOnNlbmRlcl07
Ci19Ci0KLS0gKEJPT0wpaGFzTWVkaWFTZWxlY3Rpb25PcHRpb25zCi17Ci0gICAgcmV0dXJuIFtz
ZWxmIGhhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zXSB8fCBbc2VsZiBoYXNMZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb25zXTsKLX0KLQotKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0Fm
ZmVjdGluZ0hhc01lZGlhU2VsZWN0aW9uT3B0aW9ucwotewotICAgIHJldHVybiBbTlNTZXQgc2V0
V2l0aE9iamVjdHM6QCJoYXNBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyIsIEAiaGFzTGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyIsIG5pbF07Ci19Ci0KLS0gKEJPT0wpaGFzQXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnMKLXsKLSAgICByZXR1cm4gW1tzZWxmIGF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zXSBjb3VudF0gPiAxOwotfQotCi0rIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVz
QWZmZWN0aW5nSGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMKLXsKLSAgICByZXR1cm4gW05T
U2V0IHNldFdpdGhPYmplY3Q6QCJhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyJdOwotfQotCi0t
IChCT09MKWhhc0xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMKLXsKLSAgICBjb25zdCBOU1VJ
bnRlZ2VyIG51bURlZmF1bHRMZWdpYmxlT3B0aW9ucyA9IDI7Ci0gICAgcmV0dXJuIFtbc2VsZiBs
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zXSBjb3VudF0gPiBudW1EZWZhdWx0TGVnaWJsZU9w
dGlvbnM7Ci19Ci0KLSsgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdIYXNMZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zCi17Ci0gICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2Jq
ZWN0OkAibGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyJdOwotfQotCi0tIChXZWJBVk1lZGlh
U2VsZWN0aW9uT3B0aW9uICopY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24KLXsKLSAg
ICByZXR1cm4gX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOwotfQotCi0tICh2b2lk
KXNldEN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOihXZWJBVk1lZGlhU2VsZWN0aW9u
T3B0aW9uICopb3B0aW9uCi17Ci0gICAgaWYgKG9wdGlvbiA9PSBfY3VycmVudEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb24pCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBbX2N1cnJlbnRBdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9uIHJlbGVhc2VdOwotICAgIF9jdXJyZW50QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbiA9IFtvcHRpb24gcmV0YWluXTsKLSAgICAKLSAgICBpZiAoIXNlbGYuZGVs
ZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBOU0ludGVnZXIgaW5kZXggPSBOU05v
dEZvdW5kOwotICAgIAotICAgIGlmIChvcHRpb24gJiYgc2VsZi5hdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9ucykKLSAgICAgICAgaW5kZXggPSBbc2VsZi5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
cyBpbmRleE9mT2JqZWN0Om9wdGlvbl07Ci0gICAgCi0gICAgc2VsZi5kZWxlZ2F0ZS0+c2VsZWN0
QXVkaW9NZWRpYU9wdGlvbihpbmRleCAhPSBOU05vdEZvdW5kID8gaW5kZXggOiBVSU5UNjRfTUFY
KTsKLX0KLQotLSAoV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb24KLXsKLSAgICByZXR1cm4gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb247Ci19Ci0KLS0gKHZvaWQpc2V0Q3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbjooV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKW9wdGlvbgotewotICAgIGlmIChv
cHRpb24gPT0gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24pCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBbX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gcmVs
ZWFzZV07Ci0gICAgX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gPSBbb3B0aW9u
IHJldGFpbl07Ci0gICAgCi0gICAgaWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgTlNJbnRlZ2VyIGluZGV4ID0gTlNOb3RGb3VuZDsKLSAgICAKLSAgICBpZiAo
b3B0aW9uICYmIHNlbGYubGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucykKLSAgICAgICAgaW5k
ZXggPSBbc2VsZi5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zIGluZGV4T2ZPYmplY3Q6b3B0
aW9uXTsKLSAgICAKLSAgICBzZWxmLmRlbGVnYXRlLT5zZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24o
aW5kZXggIT0gTlNOb3RGb3VuZCA/IGluZGV4IDogVUlOVDY0X01BWCk7Ci19Ci0KLS0gKEJPT0wp
aXNQbGF5aW5nT25FeHRlcm5hbFNjcmVlbgotewotICAgIHJldHVybiBbc2VsZiBpc0V4dGVybmFs
UGxheWJhY2tBY3RpdmVdIHx8IFtzZWxmIGlzUGxheWluZ09uU2Vjb25kU2NyZWVuXTsKLX0KLQot
KyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ1BsYXlpbmdPbkV4dGVybmFsU2Ny
ZWVuCi17Ci0gICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0czpAImV4dGVybmFsUGxheWJh
Y2tBY3RpdmUiLCBAInBsYXlpbmdPblNlY29uZFNjcmVlbiIsIG5pbF07Ci19Ci0KLS0gKEJPT0wp
aXNQaWN0dXJlSW5QaWN0dXJlUG9zc2libGUKLXsKLSAgICByZXR1cm4gc2VsZi5mdWxsc2NyZWVu
SW50ZXJmYWNlLT5hbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2soKTsKLX0KLQotLSAoQk9P
TClpc1BpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZAotewotICAgIHJldHVybiBfcGljdHVyZUlu
UGljdHVyZUludGVycnVwdGVkOwotfQotCi0tICh2b2lkKXNldFBpY3R1cmVJblBpY3R1cmVJbnRl
cnJ1cHRlZDooQk9PTClwaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQKLXsKLSAgICBpZiAoX3Bp
Y3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZCAhPSBwaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQp
IHsKLSAgICAgICAgX3BpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZCA9IHBpY3R1cmVJblBpY3R1
cmVJbnRlcnJ1cHRlZDsKLSAgICAgICAgaWYgKHBpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZCkK
LSAgICAgICAgICAgIFtzZWxmIHNldFBsYXlpbmc6Tk9dOwotICAgIH0KLX0KLQotQGVuZAotCi1A
aW50ZXJmYWNlIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gOiBOU09iamVjdAotQHByb3BlcnR5
IChyZXRhaW4pIE5TU3RyaW5nICpsb2NhbGl6ZWREaXNwbGF5TmFtZTsKLUBlbmQKLQotQGltcGxl
bWVudGF0aW9uIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24KIEBlbmQKIAogQGludGVyZmFjZSBX
ZWJBVlBsYXllckxheWVyIDogQ0FMYXllcgogQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikg
TlNTdHJpbmcgKnZpZGVvR3Jhdml0eTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNS
ZWFkeUZvckRpc3BsYXkpIEJPT0wgcmVhZHlGb3JEaXNwbGF5OworQHByb3BlcnR5IChub25hdG9t
aWMsIGFzc2lnbikgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQqIGZ1bGxzY3JlZW5J
bnRlcmZhY2U7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBBVlBsYXllckNvbnRyb2xs
ZXIgKnBsYXllckNvbnRyb2xsZXI7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBDQUxh
eWVyICp2aWRlb1N1YmxheWVyOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxl
KSBOU0RpY3Rpb25hcnkgKnBpeGVsQnVmZmVyQXR0cmlidXRlczsKQEAgLTY2NSw2ICsyMTUsNyBA
QCBAcHJvcGVydHkgQ0dSZWN0IG1vZGVsVmlkZW9MYXllckZyYW1lOwogQGVuZAogCiBAaW1wbGVt
ZW50YXRpb24gV2ViQVZQbGF5ZXJMYXllciB7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0PiBfZnVsbHNjcmVlbkludGVyZmFjZTsKICAgICBSZXRhaW5QdHI8V2Vi
QVZQbGF5ZXJDb250cm9sbGVyPiBfYXZQbGF5ZXJDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxD
QUxheWVyPiBfdmlkZW9TdWJsYXllcjsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF92aWRlb0dy
YXZpdHk7CkBAIC02ODYsNiArMjM3LDE2IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBk
ZWFsbG9jXTsKIH0KIAorLSAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQqKWZ1bGxz
Y3JlZW5JbnRlcmZhY2UKK3sKKyAgICByZXR1cm4gX2Z1bGxzY3JlZW5JbnRlcmZhY2UuZ2V0KCk7
Cit9CisKKy0gKHZvaWQpc2V0RnVsbHNjcmVlbkludGVyZmFjZTooV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQqKWZ1bGxzY3JlZW5JbnRlcmZhY2UKK3sKKyAgICBfZnVsbHNjcmVlbklu
dGVyZmFjZSA9IGZ1bGxzY3JlZW5JbnRlcmZhY2U7Cit9CisKIC0gKEFWUGxheWVyQ29udHJvbGxl
ciAqKXBsYXllckNvbnRyb2xsZXIKIHsKICAgICByZXR1cm4gKEFWUGxheWVyQ29udHJvbGxlciAq
KV9hdlBsYXllckNvbnRyb2xsZXIuZ2V0KCk7CkBAIC03MzMsNyArMjk0LDcgQEAgLSAodm9pZCls
YXlvdXRTdWJsYXllcnMKICAgICB9IGVsc2UgaWYgKFtnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVz
aXplQXNwZWN0RmlsbCgpIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pIHsKICAg
ICAgICAgc291cmNlVmlkZW9GcmFtZSA9IHNtYWxsZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0Fyb3Vu
ZFJlY3QodmlkZW9Bc3BlY3RSYXRpbywgc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSk7CiAgICAg
ICAgIHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUgPSBDR1JlY3RNYWtlKDAsIDAsIHNvdXJjZVZp
ZGVvRnJhbWUud2lkdGgoKSwgc291cmNlVmlkZW9GcmFtZS5oZWlnaHQoKSk7Ci0gICAgICAgIFtf
YXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXS0+c2V0VmlkZW9MYXllckZyYW1lKHNlbGYubW9k
ZWxWaWRlb0xheWVyRnJhbWUpOworICAgICAgICBfZnVsbHNjcmVlbkludGVyZmFjZS0+bW9kZWwo
KS0+c2V0VmlkZW9MYXllckZyYW1lKHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUpOwogICAgICAg
ICB0YXJnZXRWaWRlb0ZyYW1lID0gc21hbGxlc3RSZWN0V2l0aEFzcGVjdFJhdGlvQXJvdW5kUmVj
dCh2aWRlb0FzcGVjdFJhdGlvLCBzZWxmLmJvdW5kcyk7CiAgICAgfSBlbHNlCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNzY1LDcgKzMyNiw3IEBAIC0gKHZvaWQpcmVzb2x2ZUJv
dW5kcwogICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CiAgICAgCiAg
ICAgc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSA9IFtzZWxmIGJvdW5kc107Ci0gICAgW19hdlBs
YXllckNvbnRyb2xsZXIgZGVsZWdhdGVdLT5zZXRWaWRlb0xheWVyRnJhbWUoc2VsZi5tb2RlbFZp
ZGVvTGF5ZXJGcmFtZSk7CisgICAgX2Z1bGxzY3JlZW5JbnRlcmZhY2UtPm1vZGVsKCktPnNldFZp
ZGVvTGF5ZXJGcmFtZShzZWxmLm1vZGVsVmlkZW9MYXllckZyYW1lKTsKICAgICBbKFVJVmlldyAq
KVtfdmlkZW9TdWJsYXllciBkZWxlZ2F0ZV0gc2V0VHJhbnNmb3JtOkNHQWZmaW5lVHJhbnNmb3Jt
SWRlbnRpdHldOwogICAgIAogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CkBAIC03ODgsNyAr
MzQ5LDcgQEAgLSAodm9pZClzZXRWaWRlb0dyYXZpdHk6KE5TU3RyaW5nICopdmlkZW9HcmF2aXR5
CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAKLSAgICBbX2F2
UGxheWVyQ29udHJvbGxlciBkZWxlZ2F0ZV0tPnNldFZpZGVvTGF5ZXJHcmF2aXR5KGdyYXZpdHkp
OworICAgIF9mdWxsc2NyZWVuSW50ZXJmYWNlLT5tb2RlbCgpLT5zZXRWaWRlb0xheWVyR3Jhdml0
eShncmF2aXR5KTsKIH0KIAogLSAoTlNTdHJpbmcgKil2aWRlb0dyYXZpdHkKQEAgLTk1NCwzNSAr
NTE1LDQwIEBAIHN0YXRpYyBDbGFzcyBnZXRXZWJBVlBsYXllckxheWVyVmlld0NsYXNzKCkKICAg
ICByZXR1cm4gdGhlQ2xhc3M7CiB9CiAKLVdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCi0gICAgOiBtX3BsYXllckNvbnRy
b2xsZXIoYWRvcHROUyhbW1dlYkFWUGxheWVyQ29udHJvbGxlciBhbGxvY10gaW5pdF0pKQorUmVm
PFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6Y3JlYXRlKFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0JiBwbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2UpCit7CisgICAgUmVmPFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0PiBpbnRlcmZhY2UgPSBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0KHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkpOworICAgIFtpbnRlcmZhY2Ut
Pm1fcGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOmlu
dGVyZmFjZS5wdHIoKV07CisgICAgcmV0dXJuIGludGVyZmFjZTsKK30KKworV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0JiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Up
CisgICAgOiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZShwbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UpCisgICAgLCBtX3BsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUoYWRvcHROUyhbW1dlYkFW
UGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pKQogICAgICwgbV93YXRj
aGRvZ1RpbWVyKCp0aGlzLCAmV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OndhdGNo
ZG9nVGltZXJGaXJlZCkKIHsKLSAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldEZ1bGxzY3JlZW5J
bnRlcmZhY2U6dGhpc107CiB9CiAKIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp+
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogewotICAgIFdlYkFWUGxheWVyQ29u
dHJvbGxlciogcGxheWVyQ29udHJvbGxlciA9IG1fcGxheWVyQ29udHJvbGxlci5nZXQoKTsKKyAg
ICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSB0aGlzLT5wbGF5ZXJD
b250cm9sbGVyKCk7CiAgICAgaWYgKHBsYXllckNvbnRyb2xsZXIgJiYgcGxheWVyQ29udHJvbGxl
ci5leHRlcm5hbFBsYXliYWNrQWN0aXZlKQogICAgICAgICBzZXRFeHRlcm5hbFBsYXliYWNrKGZh
bHNlLCBUYXJnZXRUeXBlTm9uZSwgIiIpOwogfQogCitXZWJBVlBsYXllckNvbnRyb2xsZXIgKldl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwbGF5ZXJDb250cm9sbGVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnBsYXllckNvbnRyb2xs
ZXIoKTsKK30KKwogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cmVzZXRN
ZWRpYVN0YXRlKCkKIHsKLSAgICBpZiAoIW1fcGxheWVyQ29udHJvbGxlcikgewotICAgICAgICBt
X3BsYXllckNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGFsbG9j
XSBpbml0XSk7Ci0gICAgICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV92aWRl
b0Z1bGxzY3JlZW5Nb2RlbF07Ci0gICAgICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0RnVsbHNj
cmVlbkludGVyZmFjZTp0aGlzXTsKLSAgICAgICAgCi0gICAgfSBlbHNlCi0gICAgICAgIFttX3Bs
YXllckNvbnRyb2xsZXIgcmVzZXRTdGF0ZV07CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UtPnJlc2V0TWVkaWFTdGF0ZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbChXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbCogbW9kZWwpCiB7CiAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCA9IG1vZGVsOwotICAg
IFttX3BsYXllckNvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbF07
CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFdlYlZpZGVv
RnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVy
KiBvYnNlcnZlcikKQEAgLTk5Miw0NyArNTU4LDIyIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKFdlYlZp
CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldER1cmF0aW9uKGRv
dWJsZSBkdXJhdGlvbikKIHsKLSAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRy
b2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7Ci0KLSAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzAxNyB1c2UgY29ycmVjdCB2YWx1
ZXMgaW5zdGVhZCBvZiBkdXJhdGlvbiBmb3IgYWxsIHRoZXNlCi0gICAgcGxheWVyQ29udHJvbGxl
ci5jb250ZW50RHVyYXRpb24gPSBkdXJhdGlvbjsKLSAgICBwbGF5ZXJDb250cm9sbGVyLm1heFRp
bWUgPSBkdXJhdGlvbjsKLSAgICBwbGF5ZXJDb250cm9sbGVyLmNvbnRlbnREdXJhdGlvbldpdGhp
bkVuZFRpbWVzID0gZHVyYXRpb247Ci0KLSAgICAvLyBGSVhNRTogd2UgdGFrZSB0aGlzIGFzIGFu
IGluZGljYXRpb24gdGhhdCBwbGF5YmFjayBpcyByZWFkeS4KLSAgICBwbGF5ZXJDb250cm9sbGVy
LmNhblBsYXkgPSBZRVM7Ci0gICAgcGxheWVyQ29udHJvbGxlci5jYW5QYXVzZSA9IFlFUzsKLSAg
ICBwbGF5ZXJDb250cm9sbGVyLmNhblRvZ2dsZVBsYXliYWNrID0gWUVTOwotICAgIHBsYXllckNv
bnRyb2xsZXIuaGFzRW5hYmxlZEF1ZGlvID0gWUVTOwotICAgIHBsYXllckNvbnRyb2xsZXIuY2Fu
U2VlayA9IFlFUzsKLSAgICBwbGF5ZXJDb250cm9sbGVyLm1pblRpbWUgPSAwOwotICAgIHBsYXll
ckNvbnRyb2xsZXIuc3RhdHVzID0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzUmVhZHlUb1BsYXk7
CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsK
IH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0Q3VycmVudFRp
bWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKIHsKLSAgICBOU1RpbWVJ
bnRlcnZhbCBhbmNob3JUaW1lU3RhbXAgPSAhW21fcGxheWVyQ29udHJvbGxlciByYXRlXSA/IE5B
TiA6IGFuY2hvclRpbWU7Ci0gICAgQVZWYWx1ZVRpbWluZyAqdGltaW5nID0gW2dldEFWVmFsdWVU
aW1pbmdDbGFzcygpIHZhbHVlVGltaW5nV2l0aEFuY2hvclZhbHVlOmN1cnJlbnRUaW1lCi0gICAg
ICAgIGFuY2hvclRpbWVTdGFtcDphbmNob3JUaW1lU3RhbXAgcmF0ZTowXTsKLSAgICAKLSAgICBb
bV9wbGF5ZXJDb250cm9sbGVyIHNldFRpbWluZzp0aW1pbmddOworICAgIG1fcGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlLT5zZXRDdXJyZW50VGltZShjdXJyZW50VGltZSwgYW5jaG9yVGltZSk7CiB9
CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEJ1ZmZlcmVkVGlt
ZShkb3VibGUgYnVmZmVyZWRUaW1lKQogewotICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciogcGxh
eWVyQ29udHJvbGxlciA9IG1fcGxheWVyQ29udHJvbGxlci5nZXQoKTsKLSAgICBkb3VibGUgZHVy
YXRpb24gPSBwbGF5ZXJDb250cm9sbGVyLmNvbnRlbnREdXJhdGlvbjsKLSAgICBkb3VibGUgbm9y
bWFsaXplZEJ1ZmZlcmVkVGltZTsKLSAgICBpZiAoIWR1cmF0aW9uKQotICAgICAgICBub3JtYWxp
emVkQnVmZmVyZWRUaW1lID0gMDsKLSAgICBlbHNlCi0gICAgICAgIG5vcm1hbGl6ZWRCdWZmZXJl
ZFRpbWUgPSBidWZmZXJlZFRpbWUgLyBkdXJhdGlvbjsKLSAgICBwbGF5ZXJDb250cm9sbGVyLmxv
YWRlZFRpbWVSYW5nZXMgPSBAW0AwLCBAKG5vcm1hbGl6ZWRCdWZmZXJlZFRpbWUpXTsKKyAgICBt
X3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0QnVmZmVyZWRUaW1lKGJ1ZmZlcmVkVGltZSk7
CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFJhdGUoYm9v
bCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKLSAgICBbbV9wbGF5ZXJDb250cm9s
bGVyIHNldFJhdGU6aXNQbGF5aW5nID8gcGxheWJhY2tSYXRlIDogMC5dOworICAgIG1fcGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRSYXRlKGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsKIH0K
IAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0VmlkZW9EaW1lbnNp
b25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCkBAIC0xMDQwLDgg
KzU4MSw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFZpZGVv
RGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3CiAgICAgV2ViQVZQbGF5ZXJMYXllciAq
cGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVttX3BsYXllckxheWVyVmlldyBwbGF5
ZXJMYXllcl07CiAKICAgICBbcGxheWVyTGF5ZXIgc2V0VmlkZW9EaW1lbnNpb25zOkNHU2l6ZU1h
a2Uod2lkdGgsIGhlaWdodCldOwotICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0SGFzRW5hYmxl
ZFZpZGVvOmhhc1ZpZGVvXTsKLSAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldENvbnRlbnREaW1l
bnNpb25zOkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCldOworICAgIFtwbGF5ZXJDb250cm9sbGVy
KCkgc2V0SGFzRW5hYmxlZFZpZGVvOmhhc1ZpZGVvXTsKKyAgICBbcGxheWVyQ29udHJvbGxlcigp
IHNldENvbnRlbnREaW1lbnNpb25zOkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCldOwogICAgIFtt
X3BsYXllckxheWVyVmlldyBzZXROZWVkc0xheW91dF07CiAKICAgICBXZWJBVlBpY3R1cmVJblBp
Y3R1cmVQbGF5ZXJMYXllclZpZXcgKnBpcFZpZXcgPSAoV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxh
eWVyTGF5ZXJWaWV3ICopW21fcGxheWVyTGF5ZXJWaWV3IHBpY3R1cmVJblBpY3R1cmVQbGF5ZXJM
YXllclZpZXddOwpAQCAtMTA1Miw3NSArNTkzLDQyIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3
CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFNlZWthYmxlUmFu
Z2VzKGNvbnN0IFRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCiB7Ci0gICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiBzZWVrYWJsZVJhbmdlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdF0pOwotICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZTsKLQotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB0aW1lUmFuZ2VzLmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAg
ZG91YmxlIHN0YXJ0ID0gdGltZVJhbmdlcy5zdGFydChpLCBleGNlcHRpb25Db2RlKTsKLSAgICAg
ICAgZG91YmxlIGVuZCA9IHRpbWVSYW5nZXMuZW5kKGksIGV4Y2VwdGlvbkNvZGUpOwotICAgICAg
ICAKLSAgICAgICAgQ01UaW1lUmFuZ2UgcmFuZ2UgPSBDTVRpbWVSYW5nZU1ha2UoQ01UaW1lTWFr
ZVdpdGhTZWNvbmRzKHN0YXJ0LCAxMDAwKSwgQ01UaW1lTWFrZVdpdGhTZWNvbmRzKGVuZC1zdGFy
dCwgMTAwMCkpOwotICAgICAgICBbc2Vla2FibGVSYW5nZXMgYWRkT2JqZWN0OltOU1ZhbHVlIHZh
bHVlV2l0aENNVGltZVJhbmdlOnJhbmdlXV07Ci0gICAgfQotICAgIAotICAgIFttX3BsYXllckNv
bnRyb2xsZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2VzOnNlZWthYmxlUmFuZ2VzLmdldCgpXTsKKyAg
ICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0U2Vla2FibGVSYW5nZXModGltZVJhbmdl
cyk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldENhblBs
YXlGYXN0UmV2ZXJzZShib29sIGNhblBsYXlGYXN0UmV2ZXJzZSkKIHsKLSAgICBbbV9wbGF5ZXJD
b250cm9sbGVyIHNldENhblNjYW5CYWNrd2FyZDpjYW5QbGF5RmFzdFJldmVyc2VdOwotfQotCi1z
dGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBtZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMpCi17Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiB3ZWJPcHRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aENhcGFjaXR5Om9wdGlvbnMuc2l6ZSgpXSk7Ci0gICAgZm9yIChhdXRvJiBuYW1lIDogb3B0aW9u
cykgewotICAgICAgICBSZXRhaW5QdHI8V2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbj4gd2ViT3B0
aW9uID0gYWRvcHROUyhbW1dlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gYWxsb2NdIGluaXRdKTsK
LSAgICAgICAgW3dlYk9wdGlvbiBzZXRMb2NhbGl6ZWREaXNwbGF5TmFtZTpuYW1lXTsKLSAgICAg
ICAgW3dlYk9wdGlvbnMgYWRkT2JqZWN0OndlYk9wdGlvbi5nZXQoKV07Ci0gICAgfQotICAgIHJl
dHVybiB3ZWJPcHRpb25zOworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDYW5Q
bGF5RmFzdFJldmVyc2UoY2FuUGxheUZhc3RSZXZlcnNlKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0g
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gbWVkaWFTZWxlY3Rpb25P
cHRpb25zKG9wdGlvbnMpOwotICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07Ci0gICAgaWYgKHNlbGVjdGVkSW5kZXgg
PCBbd2ViT3B0aW9ucyBjb3VudF0pCi0gICAgICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0Q3Vy
cmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2JqZWN0QXRJbmRleDpz
dGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOworICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBz
ZWxlY3RlZEluZGV4KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBtZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucyk7Ci0g
ICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOndl
Yk9wdGlvbnMuZ2V0KCldOwotICAgIGlmIChzZWxlY3RlZEluZGV4IDwgW3dlYk9wdGlvbnMgY291
bnRdKQotICAgICAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldEN1cnJlbnRMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2JqZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJ
bnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
LT5zZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgp
OwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRFeHRlcm5h
bFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFyZ2V0
VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCiB7Ci0gICAgQVZQbGF5ZXJDb250cm9s
bGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUgZXh0ZXJuYWxQbGF5YmFja1R5cGUgPSBBVlBsYXllckNv
bnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZU5vbmU7Ci0gICAgaWYgKHRhcmdldFR5cGUgPT0g
VGFyZ2V0VHlwZUFpclBsYXkpCi0gICAgICAgIGV4dGVybmFsUGxheWJhY2tUeXBlID0gQVZQbGF5
ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVBaXJQbGF5OwotICAgIGVsc2UgaWYgKHRh
cmdldFR5cGUgPT0gVGFyZ2V0VHlwZVRWT3V0KQotICAgICAgICBleHRlcm5hbFBsYXliYWNrVHlw
ZSA9IEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBlVFZPdXQ7CisgICAgbV9w
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEV4dGVybmFsUGxheWJhY2soZW5hYmxlZCwgdGFy
Z2V0VHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7Cit9CiAKLSAgICBXZWJBVlBsYXllckNvbnRy
b2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7Ci0gICAg
cGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrQWlyUGxheURldmljZUxvY2FsaXplZE5h
bWUgPSBsb2NhbGl6ZWREZXZpY2VOYW1lOwotICAgIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQ
bGF5YmFja1R5cGUgPSBleHRlcm5hbFBsYXliYWNrVHlwZTsKLSAgICBwbGF5ZXJDb250cm9sbGVy
LmV4dGVybmFsUGxheWJhY2tBY3RpdmUgPSBlbmFibGVkOwordm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6ZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWRDaGFuZ2VkKGJvb2wgZW5h
YmxlZCkKK3sKICAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0SGlkZGVuOmVuYWJsZWRdOwogfQog
CiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXaXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVkKQogewotICAgIFttX3BsYXllckNvbnRyb2xs
ZXIgc2V0QWxsb3dzRXh0ZXJuYWxQbGF5YmFjazohZGlzYWJsZWRdOworICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChkaXNhYmxl
ZCk7CiB9CiAKIGJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OndpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gW21fcGxheWVyQ29u
dHJvbGxlciBhbGxvd3NFeHRlcm5hbFBsYXliYWNrXTsKKyAgICByZXR1cm4gbV9wbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UtPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCk7CiB9CiAKIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFwcGxpY2F0aW9uRGlkQmVjb21l
QWN0aXZlKCkKQEAgLTExNzgsNyArNjg2LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6c2V0dXBGdWxsc2NyZWVuKFVJVmlldyYgdmlkZW9WaWV3LCBjb25zdAogCiAg
ICAgaWYgKCFtX3BsYXllckxheWVyVmlldykKICAgICAgICAgbV9wbGF5ZXJMYXllclZpZXcgPSBh
ZG9wdE5TKFtbZ2V0V2ViQVZQbGF5ZXJMYXllclZpZXdDbGFzcygpIGFsbG9jXSBpbml0XSk7Ci0g
ICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEhpZGRlbjpbbV9wbGF5ZXJDb250cm9sbGVyIGlzRXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZV1dOworICAgIFttX3BsYXllckxheWVyVmlldyBzZXRIaWRkZW46
W3BsYXllckNvbnRyb2xsZXIoKSBpc0V4dGVybmFsUGxheWJhY2tBY3RpdmVdXTsKICAgICBbbV9w
bGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBjbGVh
ckNvbG9yXV07CiAKICAgICBpZiAoIWlzSW5QaWN0dXJlSW5QaWN0dXJlTW9kZSkgewpAQCAtMTE4
OSwxNiArNjk3LDE5IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNl
dHVwRnVsbHNjcmVlbihVSVZpZXcmIHZpZGVvVmlldywgY29uc3QKICAgICBXZWJBVlBsYXllckxh
eWVyICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW21fcGxheWVyTGF5ZXJWaWV3
IHBsYXllckxheWVyXTsKIAogICAgIFtwbGF5ZXJMYXllciBzZXRNb2RlbFZpZGVvTGF5ZXJGcmFt
ZTpDR1JlY3RNYWtlKDAsIDAsIGluaXRpYWxSZWN0LndpZHRoKCksIGluaXRpYWxSZWN0LmhlaWdo
dCgpKV07Ci0gICAgW3BsYXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpbbV9wbGF5ZXJDb250
cm9sbGVyIGNvbnRlbnREaW1lbnNpb25zXV07CisgICAgW3BsYXllckxheWVyIHNldFZpZGVvRGlt
ZW5zaW9uczpbcGxheWVyQ29udHJvbGxlcigpIGNvbnRlbnREaW1lbnNpb25zXV07CisgICAgcGxh
eWVyTGF5ZXIuZnVsbHNjcmVlbkludGVyZmFjZSA9IHRoaXM7CiAKICAgICBpZiAoIW1fcGxheWVy
Vmlld0NvbnRyb2xsZXIpCiAgICAgICAgIG1fcGxheWVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5T
KFthbGxvY0FWUGxheWVyVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoUGxheWVyTGF5
ZXJWaWV3Om1fcGxheWVyTGF5ZXJWaWV3LmdldCgpXSk7CiAKICAgICBbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6Tk9dOwotICAgIFttX3BsYXllclZpZXdD
b250cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKW1fcGxh
eWVyQ29udHJvbGxlci5nZXQoKV07Ci0gICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0RGVs
ZWdhdGU6bV9wbGF5ZXJDb250cm9sbGVyLmdldCgpXTsKKyAgICBbbV9wbGF5ZXJWaWV3Q29udHJv
bGxlciBzZXRQbGF5ZXJDb250cm9sbGVyOihBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250
cm9sbGVyKCldOworICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm1fcGxh
eWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKV07CiAgICAgW21fcGxheWVyVmlld0NvbnRy
b2xsZXIgc2V0QWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrOm1fYWxsb3dzUGljdHVyZUlu
UGljdHVyZVBsYXliYWNrXTsKIAorICAgIFtwbGF5ZXJDb250cm9sbGVyKCkgc2V0UGljdHVyZUlu
UGljdHVyZVBvc3NpYmxlOm1fYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrXTsKKwogICAg
IGlmIChtX3ZpZXdDb250cm9sbGVyKSB7CiAgICAgICAgIFttX3ZpZXdDb250cm9sbGVyIGFkZENo
aWxkVmlld0NvbnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKV07CiAgICAgICAg
IFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBhZGRTdWJ2aWV3OlttX3BsYXllclZpZXdDb250cm9s
bGVyIHZpZXddXTsKQEAgLTEzMzksOCArODUwLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6Y2xlYW51cEZ1bGxzY3JlZW4oKQogICAgICAgICAgICAgW1tnZXRVSUFw
cGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRBcHBsaWNhdGlvbl0gX3NldFN0YXR1c0Jhck9yaWVudGF0
aW9uOlttX3BhcmVudFdpbmRvdyBpbnRlcmZhY2VPcmllbnRhdGlvbl1dOwogICAgIH0KICAgICAK
LSAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW21fcGxheWVy
Q29udHJvbGxlciBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOm5pbF07CisgICAgW3BsYXllckNvbnRy
b2xsZXIoKSBzZXREZWxlZ2F0ZTpuaWxdOwogICAgIAogICAgIFttX3BsYXllclZpZXdDb250cm9s
bGVyIHNldERlbGVnYXRlOm5pbF07CiAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0UGxh
eWVyQ29udHJvbGxlcjpuaWxdOwpAQCAtMTM1OSw4ICs4NjksNiBAQCB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbigpCiAKICAgICBtX3BsYXll
ckxheWVyVmlldyA9IG5pbDsKICAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0gbmlsOwotICAg
IG1fcGxheWVyQ29udHJvbGxlciA9IG5pbDsKLSAgICBtX3ZpZXdDb250cm9sbGVyID0gbmlsOwog
ICAgIG1fd2luZG93ID0gbmlsOwogICAgIG1fcGFyZW50VmlldyA9IG5pbDsKICAgICBtX3BhcmVu
dFdpbmRvdyA9IG5pbDsKQEAgLTE0MTIsNyArOTIwLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGJvb2wgdmlzaWJsZSwg
Y28KIAogYm9vbCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6bWF5QXV0b21hdGlj
YWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUoKSBjb25zdAogewotICAgIHJldHVybiBbbV9w
bGF5ZXJDb250cm9sbGVyIGlzUGxheWluZ10gJiYgbV9tb2RlID09IEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkICYmIHN1cHBvcnRzUGljdHVyZUluUGlj
dHVyZSgpOworICAgIHJldHVybiBbcGxheWVyQ29udHJvbGxlcigpIGlzUGxheWluZ10gJiYgbV9t
b2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJk
ICYmIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoc3RkOjpmdW5j
dGlvbjx2b2lkKGJvb2wpPiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNTMxYWMxYjgwZjIyNmFkYzkyYzUxM2Q5YWM1ODlmYWY3YWM1MDA4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZU1hYy5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZU1hY19oCisjZGVmaW5lIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZU1hY19oCisKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgorI2luY2x1
ZGUgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCitPQkpDX0NMQVNTIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWw7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZU1hYworICAgIDogcHVibGljIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZQorICAgICwg
cHVibGljIFJlZkNvdW50ZWQ8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM+IGNyZWF0
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VNYWMoKSk7CisgICAgfQorICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYygpOworICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKiB3ZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7IH0K
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsKik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0TWVk
aWFTdGF0ZSgpIG92ZXJyaWRlIHsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RHVyYXRp
b24oZG91YmxlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnJlbnRU
aW1lKGRvdWJsZSAvKmN1cnJlbnRUaW1lKi8sIGRvdWJsZSAvKmFuY2hvclRpbWUqLykgb3ZlcnJp
ZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlKSBvdmVy
cmlkZSB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJhdGUoYm9vbCAvKmlzUGxheWlu
ZyovLCBmbG9hdCAvKnBsYXliYWNrUmF0ZSovKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5nZXMmKSBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZShib29sKSBvdmVycmlk
ZSB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKm9wdGlvbnMqLywgdWludDY0X3QgLypzZWxlY3Rl
ZEluZGV4Ki8pIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypvcHRpb25zKi8sIHVp
bnQ2NF90IC8qc2VsZWN0ZWRJbmRleCovKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUs
IFN0cmluZykgb3ZlcnJpZGUgeyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXaXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSBvdmVycmlkZSB7IH0KKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGludmFsaWRhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuc3VyZUNv
bnRyb2xzTWFuYWdlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyICpwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpOworCitwcml2YXRlOgorICAgIFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsKiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsIHsgbnVsbHB0ciB9Owor
ICAgIFJldGFpblB0cjxXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcj4gbV9wbGF5YmFja0NvbnRy
b2xzTWFuYWdlcjsKK307CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmViZWRlMDNkYTY3MjI2NTkwY2VlY2Q1N2FlYjAwYWQ1YjYzNmM2MzEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tCkBAIC0wLDAgKzEsMzMyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYy5oIgorCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpCisKKyNpbXBvcnQgIkFWS2l0U1BJLmgiCisjaW1wb3J0ICJJbnRSZWN0LmgiCisjaW1w
b3J0ICJNZWRpYVRpbWVBVkZvdW5kYXRpb24uaCIKKyNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKKyNp
bXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmgiCisjaW1wb3J0IDxBVkZvdW5kYXRpb24v
QVZGb3VuZGF0aW9uLmg+CisKKyNpbXBvcnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCisKK1NPRlRf
TElOS19GUkFNRVdPUksoQVZLaXQpCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWVmFsdWVUaW1p
bmcpCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW50ZXJmYWNlIFdlYkFWTWVkaWFT
ZWxlY3Rpb25PcHRpb25NYWMgOiBOU09iamVjdCB7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBf
bG9jYWxpemVkRGlzcGxheU5hbWU7Cit9CitAcHJvcGVydHkgKHJldGFpbikgTlNTdHJpbmcgKmxv
Y2FsaXplZERpc3BsYXlOYW1lOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQVZNZWRpYVNl
bGVjdGlvbk9wdGlvbk1hYworCistIChOU1N0cmluZyAqKWxvY2FsaXplZERpc3BsYXlOYW1lCit7
CisgICAgcmV0dXJuIF9sb2NhbGl6ZWREaXNwbGF5TmFtZS5nZXQoKTsKK30KKworLSAodm9pZClz
ZXRMb2NhbGl6ZWREaXNwbGF5TmFtZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgX2xvY2FsaXpl
ZERpc3BsYXlOYW1lID0gbmFtZTsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIFdlYlBsYXliYWNr
Q29udHJvbHNNYW5hZ2VyIDogTlNPYmplY3QgeworICAgIE5TVGltZUludGVydmFsIF9jb250ZW50
RHVyYXRpb247CisgICAgUmV0YWluUHRyPEFWVmFsdWVUaW1pbmc+IF90aW1pbmc7CisgICAgTlNU
aW1lSW50ZXJ2YWwgX3NlZWtUb1RpbWU7CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9zZWVrYWJs
ZVRpbWVSYW5nZXM7CisgICAgQk9PTCBfaGFzRW5hYmxlZEF1ZGlvOworICAgIEJPT0wgX2hhc0Vu
YWJsZWRWaWRlbzsKKyAgICBSZXRhaW5QdHI8TlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9u
ICo+PiBfYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM7CisgICAgUmV0YWluUHRyPEFWTWVkaWFT
ZWxlY3Rpb25PcHRpb24+IF9jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjsKKyAgICBS
ZXRhaW5QdHI8TlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICo+PiBfbGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9uczsKKyAgICBSZXRhaW5QdHI8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbj4g
X2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb247CisKKyAgICBmbG9hdCBfcmF0ZTsK
KworQHByaXZhdGUKKyAgICBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMq
IF93ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM7Cit9CisKK0Bwcm9wZXJ0eSAocmVhZHdy
aXRlKSBOU1RpbWVJbnRlcnZhbCBjb250ZW50RHVyYXRpb247CitAcHJvcGVydHkgKG5vbmF0b21p
YywgcmV0YWluLCByZWFkd3JpdGUpIEFWVmFsdWVUaW1pbmcgKnRpbWluZzsKK0Bwcm9wZXJ0eSBO
U1RpbWVJbnRlcnZhbCBzZWVrVG9UaW1lOworQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbiwg
cmVhZHdyaXRlKSBOU0FycmF5ICpzZWVrYWJsZVRpbWVSYW5nZXM7CitAcHJvcGVydHkgKHJlYWR3
cml0ZSkgQk9PTCBoYXNFbmFibGVkQXVkaW87CitAcHJvcGVydHkgKHJlYWR3cml0ZSkgQk9PTCBo
YXNFbmFibGVkVmlkZW87CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCByZWFkd3JpdGUp
IE5TQXJyYXk8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqYXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnM7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCByZWFkd3JpdGUpIEFWTWVkaWFT
ZWxlY3Rpb25PcHRpb24gKmN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOworQHByb3Bl
cnR5IChub25hdG9taWMsIHJldGFpbiwgcmVhZHdyaXRlKSBOU0FycmF5PEFWTWVkaWFTZWxlY3Rp
b25PcHRpb24gKj4gKmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmV0YWluLCByZWFkd3JpdGUpIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKmN1cnJl
bnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb247CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBm
bG9hdCByYXRlOworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VNYWM6KFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyopd2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOworCitAZW5kCisKKyNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQorI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYlBsYXliYWNrQ29udHJvbHND
b250cm9sbGVyQWRkaXRpb25zLm1tPgorI2VuZGlmCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlcgorCitAc3ludGhlc2l6ZSBjb250ZW50RHVyYXRpb249X2NvbnRl
bnREdXJhdGlvbjsKK0BzeW50aGVzaXplIHNlZWtUb1RpbWU9X3NlZWtUb1RpbWU7CitAc3ludGhl
c2l6ZSBoYXNFbmFibGVkQXVkaW89X2hhc0VuYWJsZWRBdWRpbzsKK0BzeW50aGVzaXplIGhhc0Vu
YWJsZWRWaWRlbz1faGFzRW5hYmxlZFZpZGVvOworQHN5bnRoZXNpemUgcmF0ZT1fcmF0ZTsKKwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOihX
ZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMqKXdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYworeworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgX3dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyA9IHdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzsKKworICAgIHJldHVybiBzZWxmOworfQorCist
IChBVlZhbHVlVGltaW5nICopdGltaW5nCit7CisgICAgcmV0dXJuIF90aW1pbmcuZ2V0KCk7Cit9
CisKKy0gKHZvaWQpc2V0VGltaW5nOihBVlZhbHVlVGltaW5nICopdGltaW5nCit7CisgICAgX3Rp
bWluZyA9IHRpbWluZzsKK30KKworLSAoTlNBcnJheSAqKXNlZWthYmxlVGltZVJhbmdlcworewor
ICAgIHJldHVybiBfc2Vla2FibGVUaW1lUmFuZ2VzLmdldCgpOworfQorCistICh2b2lkKXNldFNl
ZWthYmxlVGltZVJhbmdlczooTlNBcnJheSAqKXRpbWVSYW5nZXMKK3sKKyAgICBfc2Vla2FibGVU
aW1lUmFuZ2VzID0gdGltZVJhbmdlczsKK30KKworLSAoQk9PTClpc1NlZWtpbmcKK3sKKyAgICBy
ZXR1cm4gTk87Cit9CisKKy0gKHZvaWQpc2Vla1RvVGltZTooTlNUaW1lSW50ZXJ2YWwpdGltZSB0
b2xlcmFuY2VCZWZvcmU6KE5TVGltZUludGVydmFsKXRvbGVyYW5jZUJlZm9yZSB0b2xlcmFuY2VB
ZnRlcjooTlNUaW1lSW50ZXJ2YWwpdG9sZXJhbmNlQWZ0ZXIKK3sKKyAgICBVTlVTRURfUEFSQU0o
dG9sZXJhbmNlQmVmb3JlKTsKKyAgICBVTlVTRURfUEFSQU0odG9sZXJhbmNlQWZ0ZXIpOworICAg
IF93ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMtPndlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
KCktPnNlZWtUb1RpbWUodGltZSk7Cit9CisKKy0gKE5TQXJyYXk8QVZNZWRpYVNlbGVjdGlvbk9w
dGlvbiAqPiAqKWF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zCit7CisgICAgcmV0dXJuIF9hdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9ucy5nZXQoKTsKK30KKworLSAodm9pZClzZXRBdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9uczooTlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICo+ICopYXVk
aW9PcHRpb25zCit7CisgICAgX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zID0gYXVkaW9PcHRp
b25zOworfQorCistIChBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVudEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb24KK3sKKyAgICByZXR1cm4gX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9uLmdldCgpOworfQorCistICh2b2lkKXNldEN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9uOihBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICopYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bgoreworICAgIGlmIChhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uID09IF9jdXJyZW50QXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgX2N1cnJlbnRBdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9uID0gYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjsKKworICAg
IE5TSW50ZWdlciBpbmRleCA9IE5TTm90Rm91bmQ7CisKKyAgICBpZiAoYXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbiAmJiBzZWxmLmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKQorICAgICAgICBp
bmRleCA9IFtzZWxmLmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zIGluZGV4T2ZPYmplY3Q6YXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbl07CisKKyAgICBfd2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLT53ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9u
KGluZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOworfQorCistIChOU0Fy
cmF5PEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zCit7CisgICAgcmV0dXJuIF9sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zLmdldCgpOwor
fQorCistICh2b2lkKXNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KE5TQXJyYXk8QVZN
ZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqKWxlZ2libGVPcHRpb25zCit7CisgICAgX2xlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBsZWdpYmxlT3B0aW9uczsKK30KKworLSAoQVZNZWRpYVNl
bGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24KK3sKKyAg
ICByZXR1cm4gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24uZ2V0KCk7Cit9CisK
Ky0gKHZvaWQpc2V0Q3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjooQVZNZWRpYVNl
bGVjdGlvbk9wdGlvbiAqKWxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbgoreworICAgIGlmIChs
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gPT0gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIF9jdXJyZW50TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9uID0gbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOworCisgICAgTlNJbnRl
Z2VyIGluZGV4ID0gTlNOb3RGb3VuZDsKKworICAgIGlmIChsZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb24gJiYgc2VsZi5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKQorICAgICAgICBpbmRl
eCA9IFtzZWxmLmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgaW5kZXhPZk9iamVjdDpsZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25dOworCisgICAgX3dlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZU1hYy0+d2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoKS0+c2VsZWN0TGVnaWJsZU1lZGlhT3B0
aW9uKGluZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOworfQorCistICh2
b2lkKWNhbmNlbFRodW1ibmFpbEFuZEF1ZGlvQW1wbGl0dWRlU2FtcGxlR2VuZXJhdGlvbgorewor
fQorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9u
cy9XZWJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxlclRodW1ibmFpbEFkZGl0aW9ucy5tbT4KKyNl
bmRpZgorCitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjOjp+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKCkKK3sKK30KKwor
dm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKiBtb2RlbCkKK3sKKyAgICBtX3BsYXliYWNr
U2Vzc2lvbk1vZGVsID0gbW9kZWw7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCit7CisgICAgV2ViUGxheWJhY2tD
b250cm9sc01hbmFnZXIqIGNvbnRyb2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2Vy
KCk7CisKKyAgICBjb250cm9sc01hbmFnZXIuY29udGVudER1cmF0aW9uID0gZHVyYXRpb247CisK
KyAgICAvLyBGSVhNRTogV2UgdGFrZSB0aGlzIGFzIGFuIGluZGljYXRpb24gdGhhdCBwbGF5YmFj
ayBpcyByZWFkeSwgYnV0IHRoYXQgaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUuCisgICAgY29udHJv
bHNNYW5hZ2VyLmhhc0VuYWJsZWRBdWRpbyA9IFlFUzsKKyAgICBjb250cm9sc01hbmFnZXIuaGFz
RW5hYmxlZFZpZGVvID0gWUVTOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYzo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGlt
ZSkKK3sKKyAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5hZ2VyID0g
cGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKKworICAgIE5TVGltZUludGVydmFsIGFuY2hvclRp
bWVTdGFtcCA9ICFbY29udHJvbHNNYW5hZ2VyIHJhdGVdID8gTkFOIDogYW5jaG9yVGltZTsKKyAg
ICBBVlZhbHVlVGltaW5nICp0aW1pbmcgPSBbZ2V0QVZWYWx1ZVRpbWluZ0NsYXNzKCkgdmFsdWVU
aW1pbmdXaXRoQW5jaG9yVmFsdWU6Y3VycmVudFRpbWUKKyAgICAgICAgYW5jaG9yVGltZVN0YW1w
OmFuY2hvclRpbWVTdGFtcCByYXRlOjBdOworCisgICAgW2NvbnRyb2xzTWFuYWdlciBzZXRUaW1p
bmc6dGltaW5nXTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNl
dFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKK3sKKyAgICBXZWJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5hZ2VyID0gcGxheUJhY2tDb250cm9sc01h
bmFnZXIoKTsKKworICAgIFtjb250cm9sc01hbmFnZXIgc2V0UmF0ZTppc1BsYXlpbmcgPyBwbGF5
YmFja1JhdGUgOiAwLl07Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
OjpzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQoreworICAg
IFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0Nv
bnRyb2xzTWFuYWdlcigpOworCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBzZWVrYWJs
ZVJhbmdlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRpbWVSYW5nZXMubGVuZ3RoKCk7IGkrKykgeworICAg
ICAgICBjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmIHJhbmdlcyA9IHRpbWVSYW5nZXMucmFuZ2Vz
KCk7CisgICAgICAgIENNVGltZVJhbmdlIHJhbmdlID0gQ01UaW1lUmFuZ2VNYWtlKHRvQ01UaW1l
KHJhbmdlcy5zdGFydChpKSksIHRvQ01UaW1lKHJhbmdlcy5lbmQoaSkpKTsKKyAgICAgICAgW3Nl
ZWthYmxlUmFuZ2VzIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWVSYW5nZTpyYW5n
ZV1dOworICAgIH0KKworICAgIFtjb250cm9sc01hbmFnZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2Vz
OnNlZWthYmxlUmFuZ2VzLmdldCgpXTsKK30KKworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4gbWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25z
KQoreworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUoKV0p
OworICAgIGZvciAoYXV0byYgbmFtZSA6IG9wdGlvbnMpIHsKKyAgICAgICAgUmV0YWluUHRyPFdl
YkFWTWVkaWFTZWxlY3Rpb25PcHRpb25NYWM+IHdlYk9wdGlvbiA9IGFkb3B0TlMoW1tXZWJBVk1l
ZGlhU2VsZWN0aW9uT3B0aW9uTWFjIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFt3ZWJPcHRpb24g
c2V0TG9jYWxpemVkRGlzcGxheU5hbWU6bmFtZV07CisgICAgICAgIFt3ZWJPcHRpb25zIGFkZE9i
amVjdDp3ZWJPcHRpb24uZ2V0KCldOworICAgIH0KKyAgICByZXR1cm4gd2ViT3B0aW9uczsKK30K
Kwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldEF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90
IHNlbGVjdGVkSW5kZXgpCit7CisgICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIqIGNvbnRy
b2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7CisKKyAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBtZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9u
cyk7CisgICAgW2NvbnRyb2xzTWFuYWdlciBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczp3
ZWJPcHRpb25zLmdldCgpXTsKKyAgICBpZiAoc2VsZWN0ZWRJbmRleCA8IFt3ZWJPcHRpb25zIGNv
dW50XSkKKyAgICAgICAgW2NvbnRyb2xzTWFuYWdlciBzZXRDdXJyZW50QXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbjpbd2ViT3B0aW9ucyBvYmplY3RBdEluZGV4OnN0YXRpY19jYXN0PE5TVUludGVn
ZXI+KHNlbGVjdGVkSW5kZXgpXV07Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjOjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6
OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit7CisgICAgV2ViUGxh
eWJhY2tDb250cm9sc01hbmFnZXIqIGNvbnRyb2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNN
YW5hZ2VyKCk7CisKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBt
ZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucyk7CisgICAgW2NvbnRyb2xzTWFuYWdlciBzZXRM
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOndlYk9wdGlvbnMuZ2V0KCldOworICAgIGlmIChz
ZWxlY3RlZEluZGV4IDwgW3dlYk9wdGlvbnMgY291bnRdKQorICAgICAgICBbY29udHJvbHNNYW5h
Z2VyIHNldEN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2Jq
ZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOworfQor
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6aW52YWxpZGF0ZSgpCit7Cit9
CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjplbnN1cmVDb250cm9sc01h
bmFnZXIoKQoreworICAgIHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7Cit9CisKK1dlYlBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyICpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnBsYXlC
YWNrQ29udHJvbHNNYW5hZ2VyKCkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTIwMAorICAgIGlmICghbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlcikKKyAgICAg
ICAgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlciA9IGFkb3B0TlMoW1tXZWJQbGF5YmFja0NvbnRy
b2xzTWFuYWdlciBhbGxvY10gaW5pdFdpdGhXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6
dGhpc10pOworICAgIHJldHVybiBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmdldCgpOworI2Vs
c2UKKyAgICByZXR1cm4gbmlsOworI2VuZGlmCit9CisgICAgCit9CisKKyNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMuaAppbmRleCAyYjJhN2ZjN2NkNWI1NTlmZTM0MzlmNGM0ZGJmM2ZiMjU3NTNmNWQ0
Li5mYjhjYzhmNzVkY2I5Y2NmMjBjMGJkYjQzOTc2NmRiZjI3ZWQ0NTAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYy5oCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIE9CSkNfQ0xBU1MgTlNXaW5kb3c7Ci1PQkpDX0NMQVNTIFdlYlBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyOwogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIE9CSkNfQ0xBU1Mg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2JqQzsKQEAgLTQzLDYgKzQyLDcgQEAgT0JK
Q19DTEFTUyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWNPYmpDOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjOwogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI7CiBjbGFzcyBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDsKIApAQCAtNTEsOSArNTEsOSBAQCBjbGFzcyBXRUJDT1JF
X0VYUE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMKICAgICAsIHB1YmxpYyBSZWZD
b3VudGVkPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYz4gewogCiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM+IGNyZWF0ZSgpCisgICAg
c3RhdGljIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM+IGNyZWF0ZShXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMmIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYygpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjKHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkpOwogICAgIH0KICAgICB2aXJ0
dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMoKTsKICAgICBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbCogd2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3Zp
ZGVvRnVsbHNjcmVlbk1vZGVsOyB9CkBAIC05MywxMiArOTMsMTMgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgbWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1
cmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmUoKSB7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyICpwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpOwogI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCiAgICAgV0VCQ09SRV9FWFBPUlQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
T2JqQyAqdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlT2JqQygpOwogI2VuZGlmCiAKIHByaXZhdGU6
CisgICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZU1hYyYpOworICAgIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM+IG1f
cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOwogICAgIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBt
X3ZpZGVvRnVsbHNjcmVlbk1vZGVsIHsgbnVsbHB0ciB9OwogICAgIFdlYlZpZGVvRnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyKiBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciB7IG51bGxwdHIgfTsK
ICAgICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbV9tb2RlIHsg
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSB9OwpAQCAtMTA2
LDcgKzEwNyw2IEBAIHByaXZhdGU6CiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICBS
ZXRhaW5QdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2JqQz4gbV93ZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VPYmpDOwogI2VuZGlmCi0gICAgUmV0YWluUHRyPFdlYlBsYXliYWNr
Q29udHJvbHNNYW5hZ2VyPiBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWMubW0KaW5kZXggYjg5MGFiMzhmMDUwNzNjNWZiMmVmNWQ2YzljMTdk
NDk0YmI4YWZmYS4uZmU3ODkxNjI3MzcxMjk0NDliNTU5MTViYWNkZGE0YWY2OWMzYWI5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCkBAIC0yOSwxNSArMjksMTUgQEAKICNpZiBQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKIAogI2ltcG9ydCAiQVZL
aXRTUEkuaCIKLSNpbXBvcnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCiAjaW1wb3J0ICJJbnRSZWN0
LmgiCiAjaW1wb3J0ICJNZWRpYVRpbWVBVkZvdW5kYXRpb24uaCIKICNpbXBvcnQgIlRpbWVSYW5n
ZXMuaCIKKyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oIgogI2ltcG9y
dCAiV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCIKICNpbXBvcnQgIldlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZUaW1lLmg+CiAKLSNp
bXBvcnQgIlNvZnRMaW5raW5nLmgiCisjaW1wb3J0ICJDb3JlTWVkaWFTb2Z0TGluay5oIgogCiBT
T0ZUX0xJTktfRlJBTUVXT1JLKEFWS2l0KQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlZhbHVl
VGltaW5nKQpAQCAtNDYsMTg5ICs0NiwxMyBAQCBTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWVmFs
dWVUaW1pbmcpCiAjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hY0FkZGl0aW9ucy5tbT4KICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLQotQGludGVyZmFjZSBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uTWFjIDogTlNPYmplY3Qg
ewotICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2xvY2FsaXplZERpc3BsYXlOYW1lOwotfQotQHBy
b3BlcnR5IChyZXRhaW4pIE5TU3RyaW5nICpsb2NhbGl6ZWREaXNwbGF5TmFtZTsKLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb25NYWMKLQotLSAoTlNTdHJp
bmcgKilsb2NhbGl6ZWREaXNwbGF5TmFtZQotewotICAgIHJldHVybiBfbG9jYWxpemVkRGlzcGxh
eU5hbWUuZ2V0KCk7Ci19Ci0KLS0gKHZvaWQpc2V0TG9jYWxpemVkRGlzcGxheU5hbWU6KE5TU3Ry
aW5nICopbmFtZQotewotICAgIF9sb2NhbGl6ZWREaXNwbGF5TmFtZSA9IG5hbWU7Ci19Ci0KLUBl
bmQKLQotQGludGVyZmFjZSBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciA6IE5TT2JqZWN0IHsK
LSAgICBOU1RpbWVJbnRlcnZhbCBfY29udGVudER1cmF0aW9uOwotICAgIFJldGFpblB0cjxBVlZh
bHVlVGltaW5nPiBfdGltaW5nOwotICAgIE5TVGltZUludGVydmFsIF9zZWVrVG9UaW1lOwotICAg
IFJldGFpblB0cjxOU0FycmF5PiBfc2Vla2FibGVUaW1lUmFuZ2VzOwotICAgIEJPT0wgX2hhc0Vu
YWJsZWRBdWRpbzsKLSAgICBCT09MIF9oYXNFbmFibGVkVmlkZW87Ci0gICAgUmV0YWluUHRyPE5T
QXJyYXk8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPj4gX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zOwotICAgIFJldGFpblB0cjxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uPiBfY3VycmVudEF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb247Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk8QVZNZWRpYVNlbGVj
dGlvbk9wdGlvbiAqPj4gX2xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7Ci0gICAgUmV0YWlu
UHRyPEFWTWVkaWFTZWxlY3Rpb25PcHRpb24+IF9jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9uOwotICAgIAotICAgIGZsb2F0IF9yYXRlOwotCi1AcHJpdmF0ZQotICAgIFdlYkNvcmU6
OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyogX3dlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYzsKLX0KLQotQHByb3BlcnR5IChyZWFkd3JpdGUpIE5TVGltZUludGVydmFsIGNvbnRl
bnREdXJhdGlvbjsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4sIHJlYWR3cml0ZSkgQVZW
YWx1ZVRpbWluZyAqdGltaW5nOwotQHByb3BlcnR5IE5TVGltZUludGVydmFsIHNlZWtUb1RpbWU7
Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCByZWFkd3JpdGUpIE5TQXJyYXkgKnNlZWth
YmxlVGltZVJhbmdlczsKLUBwcm9wZXJ0eSAocmVhZHdyaXRlKSBCT09MIGhhc0VuYWJsZWRBdWRp
bzsKLUBwcm9wZXJ0eSAocmVhZHdyaXRlKSBCT09MIGhhc0VuYWJsZWRWaWRlbzsKLUBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZXRhaW4sIHJlYWR3cml0ZSkgTlNBcnJheTxBVk1lZGlhU2VsZWN0aW9u
T3B0aW9uICo+ICphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczsKLUBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZXRhaW4sIHJlYWR3cml0ZSkgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqY3VycmVudEF1
ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb247Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCBy
ZWFkd3JpdGUpIE5TQXJyYXk8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqbGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9uczsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4sIHJlYWR3cml0
ZSkgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbjsKLQotQHByb3BlcnR5IChub25hdG9taWMpIGZsb2F0IHJhdGU7Ci0KLS0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzooV2ViQ29yZTo6V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKil3ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM7Ci0KLUBlbmQKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJL
aXRBZGRpdGlvbnMvV2ViUGxheWJhY2tDb250cm9sc0NvbnRyb2xsZXJBZGRpdGlvbnMubW0+Ci0j
ZW5kaWYKLQotQGltcGxlbWVudGF0aW9uIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyCi0KLUBz
eW50aGVzaXplIGNvbnRlbnREdXJhdGlvbj1fY29udGVudER1cmF0aW9uOwotQHN5bnRoZXNpemUg
c2Vla1RvVGltZT1fc2Vla1RvVGltZTsKLUBzeW50aGVzaXplIGhhc0VuYWJsZWRBdWRpbz1faGFz
RW5hYmxlZEF1ZGlvOwotQHN5bnRoZXNpemUgaGFzRW5hYmxlZFZpZGVvPV9oYXNFbmFibGVkVmlk
ZW87Ci1Ac3ludGhlc2l6ZSByYXRlPV9yYXRlOwotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6KFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYyopd2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjCi17Ci0gICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfd2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjID0gd2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKEFWVmFsdWVUaW1pbmcgKil0aW1pbmcK
LXsKLSAgICByZXR1cm4gX3RpbWluZy5nZXQoKTsKLX0KLQotLSAodm9pZClzZXRUaW1pbmc6KEFW
VmFsdWVUaW1pbmcgKil0aW1pbmcKLXsKLSAgICBfdGltaW5nID0gdGltaW5nOwotfQotCi0tIChO
U0FycmF5ICopc2Vla2FibGVUaW1lUmFuZ2VzCi17Ci0gICAgcmV0dXJuIF9zZWVrYWJsZVRpbWVS
YW5nZXMuZ2V0KCk7Ci19Ci0KLS0gKHZvaWQpc2V0U2Vla2FibGVUaW1lUmFuZ2VzOihOU0FycmF5
ICopdGltZVJhbmdlcwotewotICAgIF9zZWVrYWJsZVRpbWVSYW5nZXMgPSB0aW1lUmFuZ2VzOwot
fQotCi0tIChCT09MKWlzU2Vla2luZwotewotICAgIHJldHVybiBOTzsKLX0KLQotLSAodm9pZClz
ZWVrVG9UaW1lOihOU1RpbWVJbnRlcnZhbCl0aW1lIHRvbGVyYW5jZUJlZm9yZTooTlNUaW1lSW50
ZXJ2YWwpdG9sZXJhbmNlQmVmb3JlIHRvbGVyYW5jZUFmdGVyOihOU1RpbWVJbnRlcnZhbCl0b2xl
cmFuY2VBZnRlcgotewotICAgIFVOVVNFRF9QQVJBTSh0b2xlcmFuY2VCZWZvcmUpOwotICAgIFVO
VVNFRF9QQVJBTSh0b2xlcmFuY2VBZnRlcik7Ci0gICAgX3dlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYy0+d2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+c2Vla1RvVGltZSh0aW1lKTsKLX0K
LQotLSAoTlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICo+ICopYXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbnMKLXsKLSAgICByZXR1cm4gX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zLmdl
dCgpOwotfQotCi0tICh2b2lkKXNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOihOU0FycmF5
PEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilhdWRpb09wdGlvbnMKLXsKLSAgICBfYXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBhdWRpb09wdGlvbnM7Ci19Ci0KLS0gKEFWTWVkaWFTZWxl
Y3Rpb25PcHRpb24gKiljdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbgotewotICAgIHJl
dHVybiBfY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24uZ2V0KCk7Ci19Ci0KLS0gKHZv
aWQpc2V0Q3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb246KEFWTWVkaWFTZWxlY3Rpb25P
cHRpb24gKilhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uCi17Ci0gICAgaWYgKGF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb24gPT0gX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uKQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
ID0gYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjsKLSAgICAKLSAgICBOU0ludGVnZXIgaW5kZXgg
PSBOU05vdEZvdW5kOwotICAgIAotICAgIGlmIChhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uICYm
IHNlbGYuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpCi0gICAgICAgIGluZGV4ID0gW3NlbGYu
YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMgaW5kZXhPZk9iamVjdDphdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9uXTsKLSAgICAKLSAgICBfd2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT53
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9uKGluZGV4ICE9
IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOwotfQotCi0tIChOU0FycmF5PEFWTWVk
aWFTZWxlY3Rpb25PcHRpb24gKj4gKilsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zCi17Ci0g
ICAgcmV0dXJuIF9sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zLmdldCgpOwotfQotCi0tICh2
b2lkKXNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KE5TQXJyYXk8QVZNZWRpYVNlbGVj
dGlvbk9wdGlvbiAqPiAqKWxlZ2libGVPcHRpb25zCi17Ci0gICAgX2xlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnMgPSBsZWdpYmxlT3B0aW9uczsKLX0KLQotLSAoQVZNZWRpYVNlbGVjdGlvbk9w
dGlvbiAqKWN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24KLXsKLSAgICByZXR1cm4g
X2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24uZ2V0KCk7Ci19Ci0KLS0gKHZvaWQp
c2V0Q3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjooQVZNZWRpYVNlbGVjdGlvbk9w
dGlvbiAqKWxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbgotewotICAgIGlmIChsZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb24gPT0gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24p
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBfY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbiA9IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjsKLSAgICAKLSAgICBOU0ludGVn
ZXIgaW5kZXggPSBOU05vdEZvdW5kOwotICAgIAotICAgIGlmIChsZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb24gJiYgc2VsZi5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKQotICAgICAgICBp
bmRleCA9IFtzZWxmLmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgaW5kZXhPZk9iamVjdDps
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25dOwotICAgIAotICAgIF93ZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWMtPndlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKCktPnNlbGVjdExlZ2libGVN
ZWRpYU9wdGlvbihpbmRleCAhPSBOU05vdEZvdW5kID8gaW5kZXggOiBVSU5UNjRfTUFYKTsKLX0K
K25hbWVzcGFjZSBXZWJDb3JlIHsKIAotLSAodm9pZCljYW5jZWxUaHVtYm5haWxBbmRBdWRpb0Ft
cGxpdHVkZVNhbXBsZUdlbmVyYXRpb24KK1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYyYgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQorICAgIDogbV9wbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UocGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQogewogfQogCi0jaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJQbGF5YmFja0NvbnRy
b2xzQ29udHJvbGxlclRodW1ibmFpbEFkZGl0aW9ucy5tbT4KLSNlbmRpZgotCi1AZW5kCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQogV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjp+V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKCkKIHsKIH0KQEAgLTIzNiw2ICs2MCw3IEBAIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6fldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYygpCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0V2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWwoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwqIG1vZGVsKQogewogICAgIG1f
dmlkZW9GdWxsc2NyZWVuTW9kZWwgPSBtb2RlbDsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZS0+c2V0V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwobW9kZWwpOwogfQogCiB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIoV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqIG9ic2VydmVyKQpAQCAtMjY3
LDMxICs5MiwxNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6Y2xlYXJN
b2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxscwogCiB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZU1hYzo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQogewotICAg
IFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0Nv
bnRyb2xzTWFuYWdlcigpOwotCi0gICAgY29udHJvbHNNYW5hZ2VyLmNvbnRlbnREdXJhdGlvbiA9
IGR1cmF0aW9uOwotCi0gICAgLy8gRklYTUU6IFdlIHRha2UgdGhpcyBhcyBhbiBpbmRpY2F0aW9u
IHRoYXQgcGxheWJhY2sgaXMgcmVhZHksIGJ1dCB0aGF0IGlzIG5vdCBuZWNlc3NhcmlseSB0cnVl
LgotICAgIGNvbnRyb2xzTWFuYWdlci5oYXNFbmFibGVkQXVkaW8gPSBZRVM7Ci0gICAgY29udHJv
bHNNYW5hZ2VyLmhhc0VuYWJsZWRWaWRlbyA9IFlFUzsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZS0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYzo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3Vi
bGUgYW5jaG9yVGltZSkKIHsKLSAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJv
bHNNYW5hZ2VyID0gcGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKLQotICAgIE5TVGltZUludGVy
dmFsIGFuY2hvclRpbWVTdGFtcCA9ICFbY29udHJvbHNNYW5hZ2VyIHJhdGVdID8gTkFOIDogYW5j
aG9yVGltZTsKLSAgICBBVlZhbHVlVGltaW5nICp0aW1pbmcgPSBbZ2V0QVZWYWx1ZVRpbWluZ0Ns
YXNzKCkgdmFsdWVUaW1pbmdXaXRoQW5jaG9yVmFsdWU6Y3VycmVudFRpbWUKLSAgICAgICAgYW5j
aG9yVGltZVN0YW1wOmFuY2hvclRpbWVTdGFtcCByYXRlOjBdOwotICAgIAotICAgIFtjb250cm9s
c01hbmFnZXIgc2V0VGltaW5nOnRpbWluZ107CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UtPnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKTsKIH0KIAogdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZs
b2F0IHBsYXliYWNrUmF0ZSkKIHsKLSAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29u
dHJvbHNNYW5hZ2VyID0gcGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKLQotICAgIFtjb250cm9s
c01hbmFnZXIgc2V0UmF0ZTppc1BsYXlpbmcgPyBwbGF5YmFja1JhdGUgOiAwLl07CisgICAgbV9w
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldFJhdGUoaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUp
OwogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICBbdmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlT2JqQygpIHNldFJhdGU6aXNQbGF5aW5nID8gcGxheWJhY2tSYXRlIDogMC5dOwpAQCAt
MzAwLDY0ICsxMTEsMjIgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNl
dFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIAogdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5n
ZXMmIHRpbWVSYW5nZXMpCiB7Ci0gICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIqIGNvbnRy
b2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7Ci0KLSAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IHNlZWthYmxlUmFuZ2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGltZVJhbmdl
cy5sZW5ndGgoKTsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgcmFu
Z2VzID0gdGltZVJhbmdlcy5yYW5nZXMoKTsKLSAgICAgICAgQ01UaW1lUmFuZ2UgcmFuZ2UgPSBD
TVRpbWVSYW5nZU1ha2UodG9DTVRpbWUocmFuZ2VzLnN0YXJ0KGkpKSwgdG9DTVRpbWUocmFuZ2Vz
LmVuZChpKSkpOwotICAgICAgICBbc2Vla2FibGVSYW5nZXMgYWRkT2JqZWN0OltOU1ZhbHVlIHZh
bHVlV2l0aENNVGltZVJhbmdlOnJhbmdlXV07Ci0gICAgfQotICAgIAotICAgIFtjb250cm9sc01h
bmFnZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2VzOnNlZWthYmxlUmFuZ2VzLmdldCgpXTsKLX0KLQot
c3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbWVkaWFTZWxlY3Rpb25PcHRpb25zKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zKQotewotICAgIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4gd2ViT3B0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpvcHRpb25zLnNpemUoKV0pOwotICAgIGZvciAoYXV0byYgbmFtZSA6IG9wdGlv
bnMpIHsKLSAgICAgICAgUmV0YWluUHRyPFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb25NYWM+IHdl
Yk9wdGlvbiA9IGFkb3B0TlMoW1tXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uTWFjIGFsbG9jXSBp
bml0XSk7Ci0gICAgICAgIFt3ZWJPcHRpb24gc2V0TG9jYWxpemVkRGlzcGxheU5hbWU6bmFtZV07
Ci0gICAgICAgIFt3ZWJPcHRpb25zIGFkZE9iamVjdDp3ZWJPcHRpb24uZ2V0KCldOwotICAgIH0K
LSAgICByZXR1cm4gd2ViT3B0aW9uczsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
c2V0U2Vla2FibGVSYW5nZXModGltZVJhbmdlcyk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjOjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0
b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAg
IFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0Nv
bnRyb2xzTWFuYWdlcigpOwotCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRp
b25zID0gbWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMpOwotICAgIFtjb250cm9sc01hbmFn
ZXIgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07Ci0gICAg
aWYgKHNlbGVjdGVkSW5kZXggPCBbd2ViT3B0aW9ucyBjb3VudF0pCi0gICAgICAgIFtjb250cm9s
c01hbmFnZXIgc2V0Q3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMg
b2JqZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOwor
ICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9ucyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVj
dG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAg
ICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5hZ2VyID0gcGxheUJhY2tD
b250cm9sc01hbmFnZXIoKTsKLQotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0
aW9ucyA9IG1lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zKTsKLSAgICBbY29udHJvbHNNYW5h
Z2VyIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07Ci0g
ICAgaWYgKHNlbGVjdGVkSW5kZXggPCBbd2ViT3B0aW9ucyBjb3VudF0pCi0gICAgICAgIFtjb250
cm9sc01hbmFnZXIgc2V0Q3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjpbd2ViT3B0
aW9ucyBvYmplY3RBdEluZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgp
XV07CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldExlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlTWFjOjplbnN1cmVDb250cm9sc01hbmFnZXIoKQogewotICAgIHBs
YXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7Ci19Ci0KLVdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
ICpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnBsYXlCYWNrQ29udHJvbHNNYW5hZ2Vy
KCkKLXsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAotICAg
IGlmICghbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlcikKLSAgICAgICAgbV9wbGF5YmFja0NvbnRy
b2xzTWFuYWdlciA9IGFkb3B0TlMoW1tXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBhbGxvY10g
aW5pdFdpdGhXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6dGhpc10pOwotICAgIHJldHVy
biBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmdldCgpOwotI2Vsc2UKLSAgICByZXR1cm4gbmls
OwotI2VuZGlmCisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPmVuc3VyZUNvbnRyb2xz
TWFuYWdlcigpOwogfQogCiAjaWYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdDIvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCAxNDA3OWNhY2UxZGMxNGYyOGU3YWU1MTE5M2EwN2NhZTgx
ZmFlMTg4Li5hNjI4MTczMTI5NjI4M2I3YWE1MmMyN2RmNDc0ZWYyNzM4Y2JhMWE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEzOCw2ICsxMzgsOCBAQCBNRVNTQUdFX1JFQ0VJ
VkVSUyA9IFwKICAgICBXZWJQYWdlIFwKICAgICBXZWJQYWdlUHJveHkgXAogICAgIFdlYlBhc3Rl
Ym9hcmRQcm94eSBcCisgICAgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciBcCisgICAgV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IFwKICAgICBXZWJQcm9jZXNzIFwKICAgICBXZWJQcm9j
ZXNzQ29ubmVjdGlvbiBcCiAgICAgV2ViUHJvY2Vzc1Bvb2wgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAzYjdiYWQzNThjYjUyOTRl
OTcwNWJlY2RiMjZlMDc4YjkxZWVlMWQ2Li45YWYyZDA5YWQ2NmJmNTUzYjJhNjhjZTQ5ZTgwZTU5
YmJkMThhNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQpAQCAtMzAzLDcgKzMwMyw3IEBAIC0gKEJPT0wpX21heUF1dG9tYXRpY2FsbHlT
aG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlCiAjaWYgIUhBVkUoQVZLSVQpCiAgICAgcmV0dXJuIGZh
bHNlOwogI2Vsc2UKLSAgICBpZiAoIV9wYWdlIHx8ICFfcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFu
YWdlcigpKQorICAgIGlmICghX3BhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJl
dHVybiBfcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpLT5tYXlBdXRvbWF0aWNhbGx5U2hv
d1ZpZGVvUGljdHVyZUluUGljdHVyZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY4NGE0NzdlODY0ZDM5ODlmNTIxMTU2YjNkYzI5NmY1MDllMTRhYTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5LmgKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eV9oCisjZGVmaW5lIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eV9oCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorCisjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybVZpZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgPFdlYkNvcmUvV2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaD4KKyNlbHNlCisjaW5jbHVkZSA8V2ViQ29yZS9X
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaD4KKyNlbmRpZgorCisjaWYgUExBVEZPUk0o
SU9TKQordHlwZWRlZiBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCBQ
bGF0Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKKyNlbHNlCit0eXBlZGVmIFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyBQbGF0Zm9ybVdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
UGFnZVByb3h5OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OworCitjbGFz
cyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQgZmluYWw6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4sIHB1YmxpYyBXZWJDb3JlOjpXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbCAgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxDb250ZXh0PiBjcmVhdGUoV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
JiBtYW5hZ2VyLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQobWFuYWdlciwgY29udGV4
dElkKSk7CisgICAgfQorICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4
dCgpIHsgfQorCisgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBtX21hbmFnZXIgPSBudWxscHRyOyB9
CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dDsKKworICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dChXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICAgICAg
OiBtX21hbmFnZXIoJm1hbmFnZXIpCisgICAgICAgICwgbV9jb250ZXh0SWQoY29udGV4dElkKQor
ICAgIHsKKyAgICB9CisKKyAgICAvLyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbAorICAgIHZvaWQg
cGxheSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGF1c2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIHRv
Z2dsZVBsYXlTdGF0ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5TY3J1YmJpbmcoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGVuZFNjcnViYmluZygpIG92ZXJyaWRlOworICAgIHZvaWQgc2Vla1Rv
VGltZShkb3VibGUpIG92ZXJyaWRlOworICAgIHZvaWQgZmFzdFNlZWsoZG91YmxlIHRpbWUpIG92
ZXJyaWRlOworICAgIHZvaWQgYmVnaW5TY2FubmluZ0ZvcndhcmQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZW5kU2Nhbm5p
bmcoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3Qp
IG92ZXJyaWRlOworICAgIHZvaWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90KSBv
dmVycmlkZTsKKworICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSogbV9tYW5hZ2Vy
OworICAgIHVpbnQ2NF90IG1fY29udGV4dElkOworfTsKKworY2xhc3MgV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQ
YWdlUHJveHkmKTsKKyAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHko
KTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCisgICAgUGxhdGZvcm1XZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UqIGNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgpOworCitwcml2YXRlOgor
ICAgIGZyaWVuZCBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ7CisgICAgZnJp
ZW5kIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTsKKworICAgIGV4cGxpY2l0
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXIm
KSBvdmVycmlkZTsKKworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxSZWZQdHI8V2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxDb250ZXh0PiwgUmVmUHRyPFBsYXRmb3JtV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlPj4gTW9kZWxJbnRlcmZhY2VUdXBsZTsKKyAgICBNb2RlbEludGVyZmFjZVR1cGxlIGNy
ZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgTW9kZWxJbnRl
cmZhY2VUdXBsZSYgZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKTsK
KyAgICBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQmIGVuc3VyZU1vZGVsKHVpbnQ2NF90
IGNvbnRleHRJZCk7CisgICAgUGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UmIGVu
c3VyZUludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgYWRkQ2xpZW50Rm9y
Q29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50Rm9yQ29u
dGV4dCh1aW50NjRfdCBjb250ZXh0SWQpOworCisgICAgLy8gTWVzc2FnZXMgZnJvbSBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyCisgICAgdm9pZCBzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
V2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBjbGVhclBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyKCk7CisgICAgdm9pZCByZXNldE1lZGlhU3RhdGUodWludDY0X3QgY29udGV4dElk
KTsKKyAgICB2b2lkIHNldEN1cnJlbnRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1
cnJlbnRUaW1lLCBkb3VibGUgaG9zdFRpbWUpOworICAgIHZvaWQgc2V0QnVmZmVyZWRUaW1lKHVp
bnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSk7CisgICAgdm9pZCBzZXRTZWVr
YWJsZVJhbmdlc1ZlY3Rvcih1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxzdGQ6OnBhaXI8ZG91
YmxlLCBkb3VibGU+PiByYW5nZXMpOworICAgIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKHVp
bnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSk7CisgICAgdm9pZCBzZXRBdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxTdHJpbmc+IG9wdGlvbnMs
IHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOworICAgIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxTdHJpbmc+IG9wdGlvbnMsIHVp
bnQ2NF90IHNlbGVjdGVkSW5kZXgpOworICAgIHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFja1Byb3Bl
cnRpZXModWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIHVpbnQzMl90IHRhcmdldFR5
cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKKyAgICB2b2lkIHNldFdpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCk7CisgICAgdm9pZCBz
ZXREdXJhdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbik7CisgICAgdm9p
ZCBzZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsIGRvdWJsZSByYXRl
KTsKKworICAgIC8vIE1lc3NhZ2VzIHRvIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIKKyAgICB2
b2lkIHBsYXkodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHBhdXNlKHVpbnQ2NF90IGNv
bnRleHRJZCk7CisgICAgdm9pZCB0b2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKTsK
KyAgICB2b2lkIGJlZ2luU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBl
bmRTY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHNlZWtUb1RpbWUodWlu
dDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSk7CisgICAgdm9pZCBmYXN0U2Vlayh1aW50NjRf
dCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKTsKKyAgICB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJk
KHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBiZWdpblNjYW5uaW5nQmFja3dhcmQodWlu
dDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJ
ZCk7CisgICAgdm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwg
dWludDY0X3QgaW5kZXgpOworICAgIHZvaWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2
NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpOworCisgICAgV2ViUGFnZVByb3h5KiBtX3Bh
Z2U7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgTW9kZWxJbnRlcmZhY2VUdXBsZT4gbV9jb250ZXh0
TWFwOworICAgIHVpbnQ2NF90IG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkIHsgMCB9OworICAg
IEhhc2hNYXA8dWludDY0X3QsIGludD4gbV9jbGllbnRDb3VudHM7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKworI2VuZGlmIC8vIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDAzYTRiNGM2MDE1OTcyODMwODNlYmZjMzAw
NjJkOTIyMTU0ZmRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCww
ICsxLDM5IEBACisjIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBQ
TEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJ
T05fTU9ERSkpCittZXNzYWdlcyAtPiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkgewor
ICAgIFJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCisgICAgU2V0Q3VycmVudFRp
bWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBob3N0VGlt
ZSkKKyAgICBTZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVy
ZWRUaW1lKQorICAgIFNldFNlZWthYmxlUmFuZ2VzVmVjdG9yKHVpbnQ2NF90IGNvbnRleHRJZCwg
VmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IHJhbmdlcykKKyAgICBTZXRDYW5QbGF5
RmFzdFJldmVyc2UodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQorICAgIFNldEF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4g
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKKyAgICBTZXRMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4gb3B0aW9ucywg
dWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKKyAgICBTZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGll
cyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgdWludDMyX3QgdGFyZ2V0VHlwZSwg
U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCisgICAgU2V0V2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGRpc2FibGVkKQorICAgIFNldER1cmF0
aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKQorICAgIFNldFJhdGUodWlu
dDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZG91YmxlIHJhdGUpCisgICAgU2V0VXBQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlcldpdGhJRCh1aW50NjRfdCBjb250ZXh0SWQpCisgICAgQ2xl
YXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHku
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyMjhhNzRkNTdhMTE2NGZhZWQ2NTk4YmEzOTI5NjA1
MjMwYzY3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCkBAIC0wLDAgKzEsMzc3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHkuaCIKKworI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKworI2ltcG9ydCAiV2ViUGFnZVBy
b3h5LmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZXMuaCIKKyNp
bXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW1wb3J0
ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBvcnQgPFdlYkNvcmUvVGltZVJhbmdlcy5oPgorI2lt
cG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworI3ByYWdtYSBtYXJrIC0gV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxDb250ZXh0CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0Ojpw
bGF5KCkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnBsYXkobV9j
b250ZXh0SWQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6cGF1
c2UoKQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+cGF1c2UobV9j
b250ZXh0SWQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6dG9n
Z2xlUGxheVN0YXRlKCkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXIt
PnRvZ2dsZVBsYXlTdGF0ZShtX2NvbnRleHRJZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxDb250ZXh0OjpiZWdpblNjcnViYmluZygpCit7CisgICAgaWYgKG1fbWFuYWdlcikK
KyAgICAgICAgbV9tYW5hZ2VyLT5iZWdpblNjcnViYmluZyhtX2NvbnRleHRJZCk7Cit9CisKK3Zv
aWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjplbmRTY3J1YmJpbmcoKQoreworICAg
IGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+ZW5kU2NydWJiaW5nKG1fY29udGV4
dElkKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNlZWtUb1Rp
bWUoZG91YmxlIHRpbWUpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2Vy
LT5zZWVrVG9UaW1lKG1fY29udGV4dElkLCB0aW1lKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbENvbnRleHQ6OmZhc3RTZWVrKGRvdWJsZSB0aW1lKQoreworICAgIGlmIChtX21h
bmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+ZmFzdFNlZWsobV9jb250ZXh0SWQsIHRpbWUpOwor
fQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6YmVnaW5TY2FubmluZ0Zv
cndhcmQoKQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+YmVnaW5T
Y2FubmluZ0ZvcndhcmQobV9jb250ZXh0SWQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsQ29udGV4dDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKCkKK3sKKyAgICBpZiAobV9tYW5h
Z2VyKQorICAgICAgICBtX21hbmFnZXItPmJlZ2luU2Nhbm5pbmdCYWNrd2FyZChtX2NvbnRleHRJ
ZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjplbmRTY2Fubmlu
ZygpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT5lbmRTY2Fubmlu
ZyhtX2NvbnRleHRJZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0
OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IG9wdGlvbklkKQoreworICAgIGlmICht
X21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+c2VsZWN0QXVkaW9NZWRpYU9wdGlvbihtX2Nv
bnRleHRJZCwgb3B0aW9uSWQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29u
dGV4dDo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IG9wdGlvbklkKQoreworICAg
IGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+c2VsZWN0TGVnaWJsZU1lZGlhT3B0
aW9uKG1fY29udGV4dElkLCBvcHRpb25JZCk7Cit9CisKKyNwcmFnbWEgbWFyayAtIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eQorCitSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5PiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJv
eHkmIHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkocGFnZSkpOworfQorCitXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UpCisgICAg
OiBtX3BhZ2UoJnBhZ2UpCit7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworfQorCitXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6On5XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkoKQorewor
ICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisgICAgaW52YWxpZGF0ZSgpOworfQor
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCit7Cisg
ICAgbV9wYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlID0gbnVsbHB0cjsKKworICAgIGZvciAoYXV0byYgdHVw
bGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgUmVmUHRyPFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsQ29udGV4dD4gbW9kZWw7CisgICAgICAgIFJlZlB0cjxQbGF0Zm9ybVdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZT4gaW50ZXJmYWNlOworICAgICAgICBzdGQ6OnRpZShtb2Rl
bCwgaW50ZXJmYWNlKSA9IHR1cGxlOworCisgICAgICAgIGludGVyZmFjZS0+aW52YWxpZGF0ZSgp
OworICAgIH0KKworICAgIG1fY29udGV4dE1hcC5jbGVhcigpOworICAgIG1fY2xpZW50Q291bnRz
LmNsZWFyKCk7Cit9CisKK1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TW9kZWxJbnRl
cmZhY2VUdXBsZSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZU1vZGVsQW5k
SW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBSZWY8V2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxDb250ZXh0PiBtb2RlbCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6
Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQpOworICAgIFJlZjxQbGF0Zm9ybVdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZT4gaW50ZXJmYWNlID0gUGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2U6OmNyZWF0ZSgpOworCisgICAgaW50ZXJmYWNlLT5zZXRXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbCgmbW9kZWwuZ2V0KCkpOworCisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShXVEZNb3Zl
KG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKK30KKworV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpNb2RlbEludGVyZmFjZVR1cGxlJiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OmVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fY29udGV4dE1hcC5hZGQoY29udGV4dElkLCBNb2RlbEludGVy
ZmFjZVR1cGxlKCkpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJ
ZCk7CisgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cit9CisKK1dlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsQ29udGV4dCYgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpl
bnN1cmVNb2RlbCh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgcmV0dXJuICpzdGQ6OmdldDww
PihlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpKTsKK30KKworUGxhdGZvcm1XZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UmIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
ZW5zdXJlSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICByZXR1cm4gKnN0ZDo6
Z2V0PDE+KGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCkpOworfQorCit2b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YWRkQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRf
dCBjb250ZXh0SWQpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2NsaWVudENvdW50cy5hZGQo
Y29udGV4dElkLCAxKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKys7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpyZW1vdmVDbGllbnRGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkK
K3sKKyAgICBBU1NFUlQobV9jbGllbnRDb3VudHMuY29udGFpbnMoY29udGV4dElkKSk7CisKKyAg
ICBpbnQgY2xpZW50Q291bnQgPSBtX2NsaWVudENvdW50cy5nZXQoY29udGV4dElkKTsKKyAgICBB
U1NFUlQoY2xpZW50Q291bnQgPiAwKTsKKyAgICBjbGllbnRDb3VudC0tOworCisgICAgaWYgKGNs
aWVudENvdW50IDw9IDApIHsKKyAgICAgICAgbV9jbGllbnRDb3VudHMucmVtb3ZlKGNvbnRleHRJ
ZCk7CisgICAgICAgIG1fY29udGV4dE1hcC5yZW1vdmUoY29udGV4dElkKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIG1fY2xpZW50Q291bnRzLnNldChjb250ZXh0SWQsIGNsaWVudENv
dW50KTsKK30KKworI3ByYWdtYSBtYXJrIE1lc3NhZ2VzIGZyb20gV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlcgorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0VXBQbGF5
YmFja0NvbnRyb2xzTWFuYWdlcldpdGhJRCh1aW50NjRfdCBjb250ZXh0SWQpCit7CisjaWYgUExB
VEZPUk0oTUFDKQorICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9PSBjb250ZXh0
SWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJ
ZCkKKyAgICAgICAgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRyb2xzTWFuYWdlckNvbnRl
eHRJZCk7CisKKyAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IGNvbnRleHRJZDsKKyAg
ICBlbnN1cmVJbnRlcmZhY2UobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpLmVuc3VyZUNvbnRy
b2xzTWFuYWdlcigpOworICAgIGFkZENsaWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJD
b250ZXh0SWQpOworCisgICAgbV9wYWdlLT52aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dElkKTsKKyNlbmRpZgorfQorCit2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y2xlYXJQbGF5YmFja0NvbnRyb2xzTWFu
YWdlcigpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICghbV9jb250cm9sc01hbmFnZXJD
b250ZXh0SWQpCisgICAgICAgIHJldHVybjsKKworICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQo
bV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOworICAgIG1fY29udHJvbHNNYW5hZ2VyQ29udGV4
dElkID0gMDsKKyAgICBtX3BhZ2UtPnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCk7Cisj
ZW5kaWYKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnJlc2V0TWVk
aWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRl
eHRJZCkucmVzZXRNZWRpYVN0YXRlKCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpzZXRDdXJyZW50VGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBjdXJy
ZW50VGltZSwgZG91YmxlIGhvc3RUaW1lKQoreworICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0
SWQpLnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lLCBob3N0VGltZSk7Cit9CisKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29u
dGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQoreworICAgIGVuc3VyZUludGVyZmFjZShjb250
ZXh0SWQpLnNldEJ1ZmZlcmVkVGltZShidWZmZXJlZFRpbWUpOworfQorCit2b2lkIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0U2Vla2FibGVSYW5nZXNWZWN0b3IodWludDY0X3Qg
Y29udGV4dElkLCBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2VzKQorewor
ICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiB0aW1lUmFuZ2VzID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7
CisgICAgZm9yIChjb25zdCBhdXRvJiByYW5nZSA6IHJhbmdlcykgeworICAgICAgICBBU1NFUlQo
aXNmaW5pdGUocmFuZ2UuZmlyc3QpKTsKKyAgICAgICAgQVNTRVJUKGlzZmluaXRlKHJhbmdlLnNl
Y29uZCkpOworICAgICAgICBBU1NFUlQocmFuZ2Uuc2Vjb25kID49IHJhbmdlLmZpcnN0KTsKKyAg
ICAgICAgdGltZVJhbmdlcy0+YWRkKHJhbmdlLmZpcnN0LCByYW5nZS5zZWNvbmQpOworICAgIH0K
KworICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldFNlZWthYmxlUmFuZ2VzKCp0aW1l
UmFuZ2VzKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldENh
blBsYXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCit7CisgICAg
ZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0Q2FuUGxheUZhc3RSZXZlcnNlKHZhbHVlKTsK
K30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4gb3B0aW9u
cywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4
dElkKS5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxlY3RlZEluZGV4
KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldExlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8U3RyaW5nPiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQoreworICAgIGVuc3VyZUludGVyZmFjZShj
b250ZXh0SWQpLnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywgc2VsZWN0
ZWRJbmRleCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRF
eHRlcm5hbFBsYXliYWNrUHJvcGVydGllcyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxl
ZCwgdWludDMyX3QgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCit7Cisg
ICAgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlw
ZSB0eXBlID0gc3RhdGljX2Nhc3Q8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpFeHRlcm5h
bFBsYXliYWNrVGFyZ2V0VHlwZT4odGFyZ2V0VHlwZSk7CisgICAgQVNTRVJUKHR5cGUgPT0gV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpUYXJnZXRUeXBlQWlyUGxheSB8fCB0eXBlID09IFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZVRWT3V0IHx8IHR5cGUgPT0gV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpUYXJnZXRUeXBlTm9uZSk7CisKKyAgICBlbnN1cmVJ
bnRlcmZhY2UoY29udGV4dElkKS5zZXRFeHRlcm5hbFBsYXliYWNrKGVuYWJsZWQsIHR5cGUsIGxv
Y2FsaXplZERldmljZU5hbWUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQodWludDY0X3QgY29udGV4dElk
LCBib29sIGRpc2FibGVkKQoreworICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldFdp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGRpc2FibGVkKTsKK30KKwordm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldER1cmF0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwg
ZG91YmxlIGR1cmF0aW9uKQoreworICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldER1
cmF0aW9uKGR1cmF0aW9uKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OnNldFJhdGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZG91YmxlIHJh
dGUpCit7CisgICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0UmF0ZShpc1BsYXlpbmcs
IHJhdGUpOworfQorCisjcHJhZ21hIG1hcmsgTWVzc2FnZXMgdG8gV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlcgorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cGxheSh1aW50
NjRfdCBjb250ZXh0SWQpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQor
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cGF1c2UodWludDY0X3QgY29u
dGV4dElkKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6UGF1c2UoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp0b2dnbGVQbGF5U3RhdGUodWludDY0X3Qg
Y29udGV4dElkKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkp
OworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY3J1YmJp
bmcodWludDY0X3QgY29udGV4dElkKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY3J1YmJpbmcoY29udGV4dElkKSwgbV9wYWdl
LT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpl
bmRTY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5kU2NydWJiaW5nKGNvbnRleHRJZCks
IG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6c2Vla1RvVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKQoreworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2Vla1Rv
VGltZShjb250ZXh0SWQsIHRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmZhc3RTZWVrKHVpbnQ2NF90IGNvbnRleHRJZCwg
ZG91YmxlIHRpbWUpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpGYXN0U2Vlayhjb250ZXh0SWQsIHRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJlZ2luU2Nhbm5p
bmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdGb3J3YXJkKGNvbnRl
eHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJl
Z2luU2Nhbm5pbmdCYWNrd2FyZChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwor
dm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjYW5uaW5nKHVpbnQ2NF90
IGNvbnRleHRJZCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OkVuZFNjYW5uaW5nKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOwor
fQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2VsZWN0QXVkaW9NZWRp
YU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQoreworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2VsZWN0QXVkaW9N
ZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK3Zv
aWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRp
b24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKK3sKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdExlZ2libGVNZWRp
YU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK1BsYXRm
b3JtV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgpCit7CisgICAgaWYgKCFtX2NvbnRyb2xz
TWFuYWdlckNvbnRleHRJZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgYXV0
byYgaW50ZXJmYWNlID0gZW5zdXJlSW50ZXJmYWNlKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElk
KTsKKyAgICByZXR1cm4gJmludGVyZmFjZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURF
T19QUkVTRU5UQVRJT05fTU9ERSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXgg
Y2QwZDJiZjIxOWZlOTg1MzhlY2Y3NDg3YTc4OGMzNjY4ZTg4MTY3Ny4uZTRiNzJlZDUxMWJhMDRm
OWQ3ZjM3MDliMzNlOWY1ZTc4OWUwNzNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
aApAQCAtNTMsMTUgKzUzLDE3IEBAIHR5cGVkZWYgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjIFBsYXRmb3JtV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OwogY2xh
c3MgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OwogCiBjbGFzcyBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENvbnRleHQgZmluYWw6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsQ29udGV4dD4sIHB1YmxpYyBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bCwgcHVibGljIFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyICB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+IGNy
ZWF0ZShXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IGNv
bnRleHRJZCkKKyAgICBzdGF0aWMgUmVmPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4g
Y3JlYXRlKFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSYgbWFuYWdlciwgV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxDb250ZXh0JiBwbGF5YmFja1Nlc3Npb25Nb2RlbCwgdWludDY0X3QgY29u
dGV4dElkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxDb250ZXh0KG1hbmFnZXIsIGNvbnRleHRJZCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQobWFuYWdlciwgcGxh
eWJhY2tTZXNzaW9uTW9kZWwsIGNvbnRleHRJZCkpOwogICAgIH0KLSAgICB2aXJ0dWFsIH5XZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQoKSB7IH0KKyAgICB2aXJ0dWFsIH5XZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENvbnRleHQoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgbV9tYW5h
Z2VyID0gbnVsbHB0cjsgfQogCkBAIC02OSwxMSArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRMYXllckhvc3RWaWV3KFJldGFpblB0cjxQbGF0Zm9ybVZpZXc+JiYgbGF5ZXJIb3N0Vmlldykg
eyBtX2xheWVySG9zdFZpZXcgPSBXVEZNb3ZlKGxheWVySG9zdFZpZXcpOyB9CiAKIHByaXZhdGU6
Ci0gICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0KFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQotICAgICAgICA6IG1fbWFu
YWdlcigmbWFuYWdlcikKLSAgICAgICAgLCBtX2NvbnRleHRJZChjb250ZXh0SWQpCi0gICAgewot
ICAgIH0KKyAgICBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQoV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5JiwgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0JiwgdWludDY0
X3QpOwogCiAgICAgLy8gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwKICAgICB2b2lkIHBsYXkoKSBv
dmVycmlkZTsKQEAgLTEwMiwxMyArMTAwLDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmdWxsc2Ny
ZWVuTWF5UmV0dXJuVG9JbmxpbmUoKSBvdmVycmlkZTsKIAogICAgIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eSogbV9tYW5hZ2VyOworICAgIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bENvbnRleHQ+IG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7CiAgICAgdWludDY0X3QgbV9jb250ZXh0
SWQ7CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtVmlldyAqPiBtX2xheWVySG9zdFZpZXc7CiB9Owog
CiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYpOworICAgIHN0YXRpYyBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5JiwgV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Jik7CiAgICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5KCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKQEAgLTExOSwxMiAr
MTE4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7
CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdDsKIAotICAgIFBsYXRmb3JtV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlKiBjb250cm9sc01hbmFnZXJJbnRlcmZhY2UoKTsKLQogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OwogCi0gICAg
ZXhwbGljaXQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYpOwor
ICAgIGV4cGxpY2l0IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkm
LCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsK
IAogICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxD
b250ZXh0PiwgUmVmUHRyPFBsYXRmb3JtV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlPj4gTW9k
ZWxJbnRlcmZhY2VUdXBsZTsKQEAgLTEzNywyMCArMTM0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8v
IE1lc3NhZ2VzIGZyb20gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcgogICAgIHZvaWQgc2V0dXBG
dWxsc2NyZWVuV2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDMyX3QgdmlkZW9MYXllcklE
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsUmVjdCwgZmxvYXQgaG9zdGluZ1NjYWxl
RmFjdG9yLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUsIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZSk7Ci0gICAgdm9pZCBzZXRVcFZpZGVvQ29u
dHJvbHNNYW5hZ2VyV2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBjbGVhclZp
ZGVvQ29udHJvbHNNYW5hZ2VyKCk7Ci0gICAgdm9pZCByZXNldE1lZGlhU3RhdGUodWludDY0X3Qg
Y29udGV4dElkKTsKLSAgICB2b2lkIHNldEN1cnJlbnRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwg
ZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgaG9zdFRpbWUpOwotICAgIHZvaWQgc2V0QnVmZmVy
ZWRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSk7CiAgICAgdm9p
ZCBzZXRWaWRlb0RpbWVuc2lvbnModWludDY0X3QgY29udGV4dElkLCBib29sIGhhc1ZpZGVvLCB1
bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKLSAgICB2b2lkIHNldFNlZWthYmxlUmFu
Z2VzVmVjdG9yKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRv
dWJsZT4+IHJhbmdlcyk7Ci0gICAgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UodWludDY0X3Qg
Y29udGV4dElkLCBib29sIHZhbHVlKTsKLSAgICB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4gb3B0aW9ucywgdWludDY0
X3Qgc2VsZWN0ZWRJbmRleCk7Ci0gICAgdm9pZCBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4gb3B0aW9ucywgdWludDY0X3Qg
c2VsZWN0ZWRJbmRleCk7Ci0gICAgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllcyh1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgdWludDMyX3QgdGFyZ2V0VHlwZSwgU3Ry
aW5nIGxvY2FsaXplZERldmljZU5hbWUpOwotICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQodWludDY0X3QgY29udGV4dElkLCBib29sKTsKLSAgICB2b2lkIHNldER1cmF0
aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKTsKLSAgICB2b2lkIHNldFJh
dGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZG91YmxlIHJhdGUpOwogICAg
IHZvaWQgZW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBleGl0
RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkludFJlY3QgZmluYWxSZWN0
KTsKICAgICB2b2lkIGNsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CkBAIC0x
NjAsMTYgKzE0NCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIC8vIE1lc3NhZ2VzIHRvIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIKLSAgICB2b2lkIHBsYXkodWludDY0X3QgY29udGV4dElk
KTsKLSAgICB2b2lkIHBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCB0b2dnbGVQ
bGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGJlZ2luU2NydWJiaW5nKHVp
bnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBlbmRTY3J1YmJpbmcodWludDY0X3QgY29udGV4
dElkKTsKLSAgICB2b2lkIHNlZWtUb1RpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGlt
ZSk7Ci0gICAgdm9pZCBmYXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKTsK
LSAgICB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAg
dm9pZCBiZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lk
IGVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCByZXF1ZXN0RnVsbHNj
cmVlbk1vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwogICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKHVp
bnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBj
b250ZXh0SWQpOwpAQCAtMTc3LDEyICsxNTEsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENs
ZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBzZXRWaWRlb0xh
eWVyRnJhbWUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpGbG9hdFJlY3QpOwogICAgIHZv
aWQgc2V0VmlkZW9MYXllckdyYXZpdHkodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5KTsKLSAgICB2b2lkIHNlbGVjdEF1ZGlv
TWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCk7Ci0gICAgdm9p
ZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBp
bmRleCk7CiAgICAgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQodWludDY0X3QgY29udGV4dElk
LCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwog
ICAgIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZCk7
CiAKICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKKyAgICBSZWY8V2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5PiBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTsKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBNb2RlbEludGVyZmFjZVR1cGxlPiBtX2NvbnRleHRNYXA7CiAgICAgdWludDY0
X3QgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgeyAwIH07CiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgaW50PiBtX2NsaWVudENvdW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDAzMDZlMzFmNzhhMDUwMTg4YmE0OTQ3MDQ0MmFjOWVhNjdl
YmI0NWYuLjE5M2E1MzgxODk0ZTBjN2FiNjQyY2Y2MTdkMzhjOGIxMmUwYmZiOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjIsMjUgKzIy
LDEyIEBACiAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiBtZXNzYWdlcyAtPiBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkgewotICAgIFJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCi0g
ICAgU2V0Q3VycmVudFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUs
IGRvdWJsZSBob3N0VGltZSkKLSAgICBTZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4dElk
LCBkb3VibGUgYnVmZmVyZWRUaW1lKQogICAgIFNldFZpZGVvRGltZW5zaW9ucyh1aW50NjRfdCBj
b250ZXh0SWQsIGJvb2wgaGFzVmlkZW8sIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQp
Ci0gICAgU2V0U2Vla2FibGVSYW5nZXNWZWN0b3IodWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8
c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2VzKQotICAgIFNldENhblBsYXlGYXN0UmV2
ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCi0gICAgU2V0QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8U3RyaW5nPiBvcHRpb25z
LCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQotICAgIFNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8U3RyaW5nPiBvcHRpb25zLCB1aW50NjRf
dCBzZWxlY3RlZEluZGV4KQotICAgIFNldEV4dGVybmFsUGxheWJhY2tQcm9wZXJ0aWVzKHVpbnQ2
NF90IGNvbnRleHRJZCwgYm9vbCBlbmFibGVkLCB1aW50MzJfdCB0YXJnZXRUeXBlLCBTdHJpbmcg
bG9jYWxpemVkRGV2aWNlTmFtZSkKLSAgICBTZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZGlzYWJsZWQpCi0gICAgU2V0RHVyYXRpb24odWlu
dDY0X3QgY29udGV4dElkLCBkb3VibGUgZHVyYXRpb24pCi0gICAgU2V0UmF0ZSh1aW50NjRfdCBj
b250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBkb3VibGUgcmF0ZSkKICAgICBTZXR1cEZ1bGxzY3Jl
ZW5XaXRoSUQodWludDY0X3QgY29udGV4dElkLCB1aW50MzJfdCB2aWRlb0xheWVySUQsIFdlYkNv
cmU6OkludFJlY3QgaW5pdGlhbFJlY3QsIGZsb2F0IGhvc3RpbmdTY2FsZUZhY3RvciwgV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNj
cmVlbk1vZGUsIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZSkKICAgICBFbnRlckZ1bGxzY3Jl
ZW4odWludDY0X3QgY29udGV4dElkKQogICAgIEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRl
eHRJZCwgV2ViQ29yZTo6SW50UmVjdCBmaW5hbFJlY3QpCiAgICAgQ2xlYW51cEZ1bGxzY3JlZW4o
dWludDY0X3QgY29udGV4dElkKQogICAgIFByZXBhcmVkVG9SZXR1cm5Ub0lubGluZSh1aW50NjRf
dCBjb250ZXh0SWQsIGJvb2wgdmlzaWJsZSwgV2ViQ29yZTo6SW50UmVjdCBpbmxpbmVSZWN0KQot
ICAgIFNldFVwVmlkZW9Db250cm9sc01hbmFnZXJXaXRoSUQodWludDY0X3QgY29udGV4dElkKQot
ICAgIENsZWFyVmlkZW9Db250cm9sc01hbmFnZXIoKQogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIEV4aXRGdWxsc2NyZWVuV2l0aG91dEFu
aW1hdGlvblRvTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCBhYzkzZjgzZDY1MmI2ZjU3MmUx
NWE0MTk1YzAwYTI4MzliMzVhNTFiLi41NTY1ODMwMjM0YjdhOGJmNGFhNjQ4NDE4OTQwYWJjODU3
M2RjMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KQEAgLTI5LDYgKzI5LDcg
QEAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19Q
UkVTRU5UQVRJT05fTU9ERSkpCiAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAi
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJv
eHkuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJNZXNzYWdlcy5oIgogI2lt
cG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKQEAgLTExMSw2
NCArMTEyLDY1IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjphcHBsaWNh
dGlvbkRpZEJlY29tZUFjdGl2ZSgpCiAKICNwcmFnbWEgbWFyayAtIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsQ29udGV4dAogCitXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OldlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsQ29udGV4dChXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkmIG1h
bmFnZXIsIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dCYgcGxheWJhY2tTZXNzaW9uTW9k
ZWwsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICA6IG1fbWFuYWdlcigmbWFuYWdlcikKKyAgICAs
IG1fcGxheWJhY2tTZXNzaW9uTW9kZWwocGxheWJhY2tTZXNzaW9uTW9kZWwpCisgICAgLCBtX2Nv
bnRleHRJZChjb250ZXh0SWQpCit7Cit9CisKK1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4
dDo6fldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCgpCit7Cit9CisKIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpwbGF5KCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQot
ICAgICAgICBtX21hbmFnZXItPnBsYXkobV9jb250ZXh0SWQpOworICAgIG1fcGxheWJhY2tTZXNz
aW9uTW9kZWwtPnBsYXkoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQ6OnBhdXNlKCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnBh
dXNlKG1fY29udGV4dElkKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5wYXVzZSgpOwog
fQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6dG9nZ2xlUGxheVN0YXRl
KCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnRvZ2dsZVBsYXlT
dGF0ZShtX2NvbnRleHRJZCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+dG9nZ2xlUGxh
eVN0YXRlKCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpiZWdp
blNjcnViYmluZygpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5i
ZWdpblNjcnViYmluZyhtX2NvbnRleHRJZCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+
YmVnaW5TY3J1YmJpbmcoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQ6OmVuZFNjcnViYmluZygpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5h
Z2VyLT5lbmRTY3J1YmJpbmcobV9jb250ZXh0SWQpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9k
ZWwtPmVuZFNjcnViYmluZygpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dDo6c2Vla1RvVGltZShkb3VibGUgdGltZSkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAg
ICAgICBtX21hbmFnZXItPnNlZWtUb1RpbWUobV9jb250ZXh0SWQsIHRpbWUpOworICAgIG1fcGxh
eWJhY2tTZXNzaW9uTW9kZWwtPnNlZWtUb1RpbWUodGltZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxDb250ZXh0OjpmYXN0U2Vlayhkb3VibGUgdGltZSkKIHsKLSAgICBpZiAo
bV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPmZhc3RTZWVrKG1fY29udGV4dElkLCB0aW1l
KTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5mYXN0U2Vlayh0aW1lKTsKIH0KIAogdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKCkK
IHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPmJlZ2luU2Nhbm5pbmdG
b3J3YXJkKG1fY29udGV4dElkKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5iZWdpblNj
YW5uaW5nRm9yd2FyZCgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4
dDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAg
ICBtX21hbmFnZXItPmJlZ2luU2Nhbm5pbmdCYWNrd2FyZChtX2NvbnRleHRJZCk7CisgICAgbV9w
bGF5YmFja1Nlc3Npb25Nb2RlbC0+YmVnaW5TY2FubmluZ0JhY2t3YXJkKCk7CiB9CiAKIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjplbmRTY2FubmluZygpCiB7Ci0gICAgaWYg
KG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5lbmRTY2FubmluZyhtX2NvbnRleHRJZCk7
CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+ZW5kU2Nhbm5pbmcoKTsKIH0KIAogdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKQEAgLTE5MSwxNCAr
MTkzLDEyIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpzZXRWaWRlb0xh
eWVyR3Jhdml0eShXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzCiAKIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxDb250ZXh0OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IG9wdGlvbklk
KQogewotICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2VsZWN0QXVkaW9N
ZWRpYU9wdGlvbihtX2NvbnRleHRJZCwgb3B0aW9uSWQpOworICAgIG1fcGxheWJhY2tTZXNzaW9u
TW9kZWwtPnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24ob3B0aW9uSWQpOwogfQogCiB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2
NF90IG9wdGlvbklkKQogewotICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+
c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKG1fY29udGV4dElkLCBvcHRpb25JZCk7CisgICAgbV9w
bGF5YmFja1Nlc3Npb25Nb2RlbC0+c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKG9wdGlvbklkKTsK
IH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUgbW9kZSkKQEAgLTI0NCwxMyArMjQ0LDE0IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDb250ZXh0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKQogCiAjcHJhZ21hIG1hcmsg
LSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkKIAotUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eT4gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUo
V2ViUGFnZVByb3h5JiBwYWdlKQorUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eT4gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBw
YWdlLCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmIHBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eShwYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkocGFnZSwgcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KSk7CiB9
CiAKLVdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSkKK1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwg
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkpCiAgICAgOiBtX3BhZ2UoJnBhZ2UpCisgICAgLCBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eShwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCiB7CiAgICAgbV9wYWdlLT5wcm9jZXNz
KCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOwog
fQpAQCAtMzEzLDggKzMxNCwxMCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogCiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAg
UmVmPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4gbW9kZWwgPSBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKLSAgICBSZWY8UGxh
dGZvcm1XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U+IGludGVyZmFjZSA9IFBsYXRmb3JtV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpjcmVhdGUoKTsKKyAgICBhdXRvJiBwbGF5YmFja1Nl
c3Npb25Nb2RlbCA9IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LT5lbnN1cmVNb2RlbChj
b250ZXh0SWQpOworICAgIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+IG1vZGVs
ID0gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpjcmVhdGUoKnRoaXMsIHBsYXliYWNr
U2Vzc2lvbk1vZGVsLCBjb250ZXh0SWQpOworICAgIGF1dG8mIHBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZSA9IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LT5lbnN1cmVJbnRlcmZhY2UoY29u
dGV4dElkKTsKKyAgICBSZWY8UGxhdGZvcm1XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U+IGlu
dGVyZmFjZSA9IFBsYXRmb3JtV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpjcmVhdGUocGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlKTsKIAogICAgIGludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWwoJm1vZGVsLmdldCgpKTsKICAgICBpbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyKCZtb2RlbC5nZXQoKSk7CkBAIC00MDAsMTA4ICs0MDMsMTEg
QEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldHVwRnVsbHNjcmVlbldp
dGhJRCh1aW50NjRfdCBjb250ZXh0SWQsIHUKICNlbmRpZgogfQogCi12b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VXBWaWRlb0NvbnRyb2xzTWFuYWdlcldpdGhJRCh1aW50
NjRfdCBjb250ZXh0SWQpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChtX2NvbnRyb2xz
TWFuYWdlckNvbnRleHRJZCA9PSBjb250ZXh0SWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
IChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKLSAgICAgICAgcmVtb3ZlQ2xpZW50Rm9yQ29u
dGV4dChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCk7Ci0KLSAgICBtX2NvbnRyb2xzTWFuYWdl
ckNvbnRleHRJZCA9IGNvbnRleHRJZDsKLSAgICBlbnN1cmVJbnRlcmZhY2UobV9jb250cm9sc01h
bmFnZXJDb250ZXh0SWQpLmVuc3VyZUNvbnRyb2xzTWFuYWdlcigpOwotICAgIGFkZENsaWVudEZv
ckNvbnRleHQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOwotCi0gICAgbV9wYWdlLT52aWRl
b0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29u
dGV4dElkKTsKLSNlbmRpZgotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6Y2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAg
IGlmICghbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IHJlbW92ZUNsaWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOwotICAg
IG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkID0gMDsKLSAgICBtX3BhZ2UtPnZpZGVvQ29udHJv
bHNNYW5hZ2VyRGlkQ2hhbmdlKCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OnJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0g
ICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkucmVzZXRNZWRpYVN0YXRlKCk7Ci19Ci0KLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRDdXJyZW50VGltZSh1aW50NjRf
dCBjb250ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGhvc3RUaW1lKQotewotICAg
IGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lLCBo
b3N0VGltZSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRC
dWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQotewot
ICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldEJ1ZmZlcmVkVGltZShidWZmZXJlZFRp
bWUpOwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9E
aW1lbnNpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBoYXNWaWRlbywgdW5zaWduZWQgd2lk
dGgsIHVuc2lnbmVkIGhlaWdodCkKIHsKICAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4dElkKS5z
ZXRWaWRlb0RpbWVuc2lvbnMoaGFzVmlkZW8sIHdpZHRoLCBoZWlnaHQpOwogfQogCi12b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0U2Vla2FibGVSYW5nZXNWZWN0b3IodWlu
dDY0X3QgY29udGV4dElkLCBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2Vz
KQotewotICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiB0aW1lUmFuZ2VzID0gVGltZVJhbmdlczo6Y3Jl
YXRlKCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiByYW5nZSA6IHJhbmdlcykgewotICAgICAgICBB
U1NFUlQoaXNmaW5pdGUocmFuZ2UuZmlyc3QpKTsKLSAgICAgICAgQVNTRVJUKGlzZmluaXRlKHJh
bmdlLnNlY29uZCkpOwotICAgICAgICBBU1NFUlQocmFuZ2Uuc2Vjb25kID49IHJhbmdlLmZpcnN0
KTsKLSAgICAgICAgdGltZVJhbmdlcy0+YWRkKHJhbmdlLmZpcnN0LCByYW5nZS5zZWNvbmQpOwot
ICAgIH0KLQotICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldFNlZWthYmxlUmFuZ2Vz
KCp0aW1lUmFuZ2VzKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OnNldENhblBsYXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCi17
Ci0gICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0Q2FuUGxheUZhc3RSZXZlcnNlKHZh
bHVlKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldEF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4g
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKLXsKLSAgICBlbnN1cmVJbnRlcmZhY2Uo
Y29udGV4dElkKS5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxlY3Rl
ZEluZGV4KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldExl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8U3Ry
aW5nPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQotewotICAgIGVuc3VyZUludGVy
ZmFjZShjb250ZXh0SWQpLnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywg
c2VsZWN0ZWRJbmRleCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpzZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllcyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wg
ZW5hYmxlZCwgdWludDMyX3QgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUp
Ci17Ci0gICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpFeHRlcm5hbFBsYXliYWNrVGFy
Z2V0VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpF
eHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZT4odGFyZ2V0VHlwZSk7Ci0gICAgQVNTRVJUKHR5cGUg
PT0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpUYXJnZXRUeXBlQWlyUGxheSB8fCB0eXBl
ID09IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZTo6VGFyZ2V0VHlwZVRWT3V0IHx8IHR5cGUg
PT0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpUYXJnZXRUeXBlTm9uZSk7Ci0gICAgCi0g
ICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0RXh0ZXJuYWxQbGF5YmFjayhlbmFibGVk
LCB0eXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90
IGNvbnRleHRJZCwgYm9vbCBkaXNhYmxlZCkKLXsKLSAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4
dElkKS5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChkaXNhYmxlZCk7Ci19Ci0KLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXREdXJhdGlvbih1aW50NjRfdCBj
b250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbikKLXsKLSAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4
dElkKS5zZXREdXJhdGlvbihkdXJhdGlvbik7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpzZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcs
IGRvdWJsZSByYXRlKQotewotICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldFJhdGUo
aXNQbGF5aW5nLCByYXRlKTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiB7CiAgICAgYXV0byYgaW50
ZXJmYWNlID0gZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCk7CkBAIC01NTcsNTYgKzQ2Myw2IEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpwcmVwYXJlZFRvUmV0dXJuVG9J
bmxpbmUodWludDY0X3QgY29udGV4dElkCiAKICNwcmFnbWEgbWFyayBNZXNzYWdlcyB0byBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlBsYXkoY29udGV4dElkKSwgbV9wYWdlLT5w
YWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpwYXVz
ZSh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpQYXVzZShjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnRvZ2dsZVBsYXlT
dGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpUb2dnbGVQbGF5U3RhdGUoY29udGV4dElkKSwgbV9w
YWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpiZWdpblNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpCZWdpblNjcnViYmluZyhjb250
ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OmVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpFbmRTY3J1YmJp
bmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpzZWVrVG9UaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91Ymxl
IHRpbWUpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpTZWVrVG9UaW1lKGNvbnRleHRJZCwgdGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOwot
fQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZmFzdFNlZWsodWludDY0
X3QgY29udGV4dElkLCBkb3VibGUgdGltZSkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkZhc3RTZWVrKGNvbnRleHRJZCwgdGltZSksIG1f
cGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6YmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29udGV4dElkKQotewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6QmVnaW5TY2Fubmlu
Z0ZvcndhcmQoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpiZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3Qg
Y29udGV4dElkKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6QmVnaW5TY2FubmluZ0JhY2t3YXJkKGNvbnRleHRJZCksIG1fcGFnZS0+cGFn
ZUlEKCkpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW5kU2Nh
bm5pbmcodWludDY0X3QgY29udGV4dElkKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RW5kU2Nhbm5pbmcoY29udGV4dElkKSwgbV9wYWdl
LT5wYWdlSUQoKSk7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpy
ZXF1ZXN0RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RGdWxsc2Ny
ZWVuTW9kZShjb250ZXh0SWQsIG1vZGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKQEAgLTY2MywxNiAr
NTE5LDYgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVvTGF5
ZXJHcmF2aXR5KHVpbnQ2NF90IGNvbnRleHRJZCwgV2UKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bShj
b250ZXh0SWQsICh1bnNpZ25lZClncmF2aXR5KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9u
KHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCi17Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZWxlY3RBdWRpb01lZGlhT3B0
aW9uKGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50
NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQotewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9u
KGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQogdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh1aW50NjRfdCBj
b250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSBtb2RlKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1vZGVDaGFuZ2VkKGNvbnRleHRJZCwgbW9kZSksIG1fcGFn
ZS0+cGFnZUlEKCkpOwpAQCAtNjgzLDE1ICs1MjksNiBAQCBib29sIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6aXNWaXNpYmxlKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdlLT5pc1Zp
ZXdWaXNpYmxlKCkgJiYgbV9wYWdlLT5pc0luV2luZG93KCk7CiB9CiAKLVBsYXRmb3JtV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNv
bnRyb2xzTWFuYWdlckludGVyZmFjZSgpCi17Ci0gICAgaWYgKCFtX2NvbnRyb2xzTWFuYWdlckNv
bnRleHRJZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvJiBpbnRlcmZhY2Ug
PSBlbnN1cmVJbnRlcmZhY2UobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOwotICAgIHJldHVy
biAmaW50ZXJmYWNlOwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKICAgICBi
b29sIGlzVmlld1Zpc2libGUgPSBtX3BhZ2UtPmlzVmlld1Zpc2libGUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYjlhMWNjZGE3YTNmMTBjYmEwYjky
ODQ5MWI3NDY3NTA3OTNlZjdmMC4uZDQ5ZDNjZGMwNzM2NjIyYTA3YmViNzM4ZmFkMGE4N2UzNDI4
ZGE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE3
MCw2ICsxNzAsMTAgQEAKICNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViUGFnZVByb3h5SW5j
bHVkZXMuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2luY2x1ZGUgIldlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eS5oIgorI2VuZGlmCisKIC8vIFRoaXMgY29udHJvbHMgd2hhdCBz
dHJhdGVneSB3ZSB1c2UgZm9yIG1vdXNlIHdoZWVsIGNvYWxlc2NpbmcuCiAjZGVmaW5lIE1FUkdF
X1dIRUVMX0VWRU5UUyAxCiAKQEAgLTQ3MSw3ICs0NzUsOCBAQCBXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Ms
IHVpbgogICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjpjcmVhdGUoKnRoaXMsIG1fcGFnZUNsaWVudC5mdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50
KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQotICAgIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdl
ciA9IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKCp0aGlzKTsKKyAgICBt
X3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIgPSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OmNyZWF0ZSgqdGhpcyk7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoKnRoaXMsICptX3BsYXliYWNrU2Vzc2lvbk1h
bmFnZXIpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZJQlJBVElPTikKICAgICBtX3ZpYnJhdGlvbiA9
IFdlYlZpYnJhdGlvblByb3h5OjpjcmVhdGUodGhpcyk7CkBAIC03MDgsNyArNzEzLDggQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKCkKICAgICBtX2Z1bGxTY3JlZW5N
YW5hZ2VyID0gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX3BhZ2VD
bGllbnQuZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpKTsKICNlbmRpZgogI2lmIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgPSBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OmNyZWF0ZSgqdGhpcyk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
ID0gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUoKnRoaXMpOworICAgIG1f
dmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
Y3JlYXRlKCp0aGlzLCAqbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyKTsKICNlbmRpZgogCiAjaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKQEAgLTQwMjgsOSArNDAzNCwxNCBAQCBXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5KiBXZWJQYWdlUHJveHk6OmZ1bGxTY3JlZW5NYW5hZ2VyKCkKICNlbmRp
ZgogICAgIAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKLVJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk+IFdlYlBhZ2VQcm94eTo6dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpCitXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkqIFdlYlBhZ2VQcm94eTo6cGxheWJhY2tTZXNzaW9uTWFuYWdl
cigpCiB7Ci0gICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlcjsKKyAgICByZXR1cm4g
bV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmdldCgpOworfQorCitXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkqIFdlYlBhZ2VQcm94eTo6dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpCit7Cisg
ICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlci5nZXQoKTsKIH0KICNlbmRpZgogCkBA
IC01MDYzLDYgKzUwNzQsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRT
dGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29uKQogICAgIG1fdmlzaWJsZVNjcm9sbGVyVGh1bWJS
ZWN0ID0gSW50UmVjdCgpOwogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAgIGlmIChtX3BsYXliYWNrU2Vz
c2lvbk1hbmFnZXIpIHsKKyAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5pbnZhbGlk
YXRlKCk7CisgICAgICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlciA9IG51bGxwdHI7CisgICAg
fQogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIpIHsKICAgICAgICAgbV92aWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVu
TWFuYWdlciA9IG51bGxwdHI7CkBAIC02MDM5LDcgKzYwNTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKQogYm9vbCBXZWJQYWdlUHJveHk6Omhh
c0FjdGl2ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdl
ciAmJiBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgp
ICYmIG1fbWVkaWFTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6Okhhc0F1ZGlvT3JWaWRlbzsKKyAgICBy
ZXR1cm4gbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyICYmIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdl
ci0+Y29udHJvbHNNYW5hZ2VySW50ZXJmYWNlKCkgJiYgbV9tZWRpYVN0YXRlICYgTWVkaWFQcm9k
dWNlcjo6SGFzQXVkaW9PclZpZGVvOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBlYmExNTEwZmY1Yjlh
NzA3MTQ2Yjc0MjFhMGQ0MjJkOWFlM2FlZjU0Li5hZDIwMTQ4NzBmNTE1NzBjZDZiZDAyYjVlOTkx
YjU2OWM0MDc1YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC0xOTIsNiArMTkyLDcgQEAgY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdl
YkNvbnRleHRNZW51UHJveHk7CiBjbGFzcyBXZWJFZGl0Q29tbWFuZFByb3h5OwogY2xhc3MgV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eTsKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTsKIGNsYXNzIFdlYk5hdmlnYXRpb25TdGF0ZTsKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTsKIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7CkBAIC0zMjgsNyArMzI5LDgg
QEAgcHVibGljOgogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqIGZ1bGxTY3JlZW5NYW5h
Z2VyKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eT4gdmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpOworICAgIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSogcGxheWJhY2tTZXNzaW9uTWFuYWdlcigpOworICAgIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSogdmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xNTQ3LDYgKzE1NDksNyBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5PiBtX2Z1bGxTY3JlZW5NYW5h
Z2VyOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk+IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlcjsKICAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXI7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGRhNTcxZWEwNjRjNDQ5Mjk5MmRkMzhmODg3
ZmU1NTI0MGE5ZmFiMi4uNzgxZjExNGI1YzZiYjhjM2EwYjY0YjZjYzJlYzkxOTQ3MzJkOGM3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTcwNSw2ICsxNzA1LDE0IEBACiAJCUNENzNCQTRFMTMxQUNEQjcwMEVFREVEMiAvKiBX
ZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDczQkE0ODEzMUFDRDhFMDBFRURFRDIgLyog
V2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlDRDczQkE1
MzEzMUI2NDVCMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q3M0JBMzcxMzFBMjlGRTAwRUVE
RUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCAqLzsgfTsKIAkJQ0RBMDQxRjQxQUNFMjEw
NTAwNEExM0VDIC8qIEJhY2tCb2FyZFNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEwNDFGMzFBQ0UyMTA1MDA0QTEzRUMgLyogQmFj
a0JvYXJkU2VydmljZXNTUEkuaCAqLzsgfTsKKwkJQ0RBMjlBMUExQ0JEQkY0MTAwOTAxQ0NGIC8q
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREEyOUExODFDQkRCRjQxMDA5MDFDQ0YgLyogV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlci5tbSAqLzsgfTsKKwkJQ0RBMjlBMUIxQ0JEQkY0MTAwOTAxQ0NGIC8q
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTE5MUNCREJGNDEwMDkwMUNDRiAvKiBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLmggKi87IH07CisJCUNEQTI5QTIwMUNCRUI1RkIwMDkwMUNDRiAvKiBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTFFMUNCRUI1RkIwMDkwMUNDRiAvKiBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCAqLzsgfTsKKwkJQ0RBMjlBMjExQ0JFQjVGQjAwOTAx
Q0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTFGMUNCRUI1RkIwMDkwMUNDRiAv
KiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gKi87IH07CisJCUNEQTI5QTI4MUNC
RUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5
QTI0MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RBMjlBMjkxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMjUxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJNZXNzYWdlcy5oICovOyB9OworCQlDREEyOUEyQTFDQkVCNjdBMDA5MDFD
Q0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTI2MUNC
RUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OworCQlDREEyOUEyQjFDQkVCNjdBMDA5MDFDQ0YgLyogV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTI3MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovOyB9OwogCQlDREMzODJGRTE3MjEx
Nzk5MDA4QTJGQzMgLyogU2VjSXRlbVNoaW1MaWJyYXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjhBNzgxMzhCNDYwOTAwQTk1RjQ0IC8qIFNl
Y0l0ZW1TaGltTGlicmFyeS5tbSAqLzsgfTsKIAkJQ0RDMzgzMDcxNzIxMTdERDAwOEEyRkMzIC8q
IENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREMzODJGOTE3MjExNkQzMDA4QTJGQzMgLyogQ29va2llU3Rv
cmFnZVNoaW1MaWJyYXJ5LmNwcCAqLzsgfTsKIAkJQ0RDMzgzMEMxNzIxMjI4MjAwOEEyRkMzIC8q
IENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RDMzgzMEIxNzIxMjFDRTAwOEEyRkMzIC8qIENvb2tpZVN0b3Jh
Z2VTaGltTGlicmFyeS5oICovOyB9OwpAQCAtMzc3Niw2ICszNzg0LDE2IEBACiAJCUNENzNCQTQ5
MTMxQUNEOEUwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q3M0JBNEExMzFBQ0Q4RjAwRUVERUQy
IC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBMDQxRjMxQUNFMjEwNTAwNEExM0VDIC8qIEJh
Y2tCb2FyZFNlcnZpY2VzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJh
Y2tCb2FyZFNlcnZpY2VzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTI5
QTE4MUNCREJGNDEwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMTkxQ0JEQkY0MTAw
OTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREEyOUExQzFDQkRCRjVCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREEyOUExRTFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREEyOUEx
RjFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREEyOUEyMjFD
QkVCNjFBMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMjQxQ0JF
QjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQTI5QTI1MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QTI5QTI2MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMjcxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzM4MkY3MTcyMTE1MDYwMDhBMkZDMyAvKiBD
Rk5ldHdvcmsuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDRk5ldHdvcmsuZnJhbWV3b3Jr
OyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yazsg
c291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJQ0RDMzgyRjkxNzIxMTZEMzAwOEEyRkMz
IC8qIENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb29r
aWVTdG9yYWdlU2hpbUxpYnJhcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
REMzODMwNjE3MjExNzk5MDA4QTJGQzMgLyogV2ViUHJvY2Vzc1NoaW0uZHlsaWIgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8u
ZHlsaWIiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBXZWJQcm9jZXNzU2hpbS5keWxpYjsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTQ2MzYsNiArNDY1NCw5IEBA
CiAJCQkJOTk4NkJERDYxQ0E5QTIyMjAwNDgwMEFBIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uQ29j
b2EubW0gKi8sCiAJCQkJMUFDMDI3M0UxOTY2MjJENjAwQzEyQjc1IC8qIFdlYlBhZ2VQcm94eUNv
Y29hLm1tICovLAogCQkJCTdDNDY5NENCMUE0QjUxMEEwMEFENTg0NSAvKiBXZWJQYXN0ZWJvYXJk
UHJveHlDb2NvYS5tbSAqLywKKwkJCQlDREEyOUExRTFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmggKi8sCisJCQkJQ0RBMjlBMjIxQ0JFQjYxQTAwOTAx
Q0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJ
CQlDREEyOUExRjFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5Lm1tICovLAogCQkJCTdDRTREMjE1MUE0OTE0ODQwMEM3RjE1MiAvKiBXZWJQcm9jZXNzUG9v
bENvY29hLm1tICovLAogCQkJCTFBMDRGNjE3MUE0QTNBN0EwMEEyMUI2RSAvKiBXZWJQcm9jZXNz
UHJveHlDb2NvYS5tbSAqLywKIAkJCQk1MkQ1QTFBQTFDNTc0OTRFMDBERTM0QTMgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggKi8sCkBAIC01NTc3LDYgKzU1OTgsOSBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3QzZFNzBGOTE4QjJENEEwMDBG
MjRFMkUgLyogV2ViUHJvY2Vzc0NvY29hLm1tICovLAorCQkJCUNEQTI5QTE5MUNCREJGNDEwMDkw
MUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmggKi8sCisJCQkJQ0RBMjlBMUMxQ0JE
QkY1QjAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8s
CisJCQkJQ0RBMjlBMTgxQ0JEQkY0MTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXIubW0gKi8sCiAJCQkJNTJENUExQjIxQzU3NDlGMjAwREUzNEEzIC8qIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIuaCAqLywKIAkJCQk1MkQ1QTFCMzFDNTc0OUYyMDBERTM0QTMgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk1MkQ1QTFCNDFDNTc0OUYy
MDBERTM0QTMgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSAqLywKQEAgLTY5NDksNiAr
Njk3MywxMCBAQAogCQkJCUJDQkQzOTEzMTI1QkIxQTgwMEQyQzI5RiAvKiBXZWJQYWdlUHJveHlN
ZXNzYWdlcy5oICovLAogCQkJCTdDNDY5NEM3MUE0QjRFQTAwMEFENTg0NSAvKiBXZWJQYXN0ZWJv
YXJkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTdDNDY5NEM4MUE0QjRFQTEwMEFE
NTg0NSAvKiBXZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQTI5QTI0MUNC
RUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKKwkJCQlDREEyOUEyNTFDQkVCNjdBMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlck1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBMjlBMjYxQ0JFQjY3QTAwOTAxQ0NGIC8q
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJ
CQkJQ0RBMjlBMjcxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMUEwNDNGNjcxMjUxNEQ4QjAwRkZCRkI1IC8qIFdlYlBy
b2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQTA0M0Y2ODEyNTE0
RDhCMDBGRkJGQjUgLyogV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovLAogCQkJCUJD
MzA2NkJDMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKQEAgLTc1NTgsNiArNzU4Niw3IEBACiAJCQkJNTE0RDlGNTcxOTExOUQzNTAwMDA2M0E3IC8q
IFNlcnZpY2VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGREU2NUExOTU0QTQy
QjAwQzQ4RkZBIC8qIFNlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwMDJENDkx
OTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0RBMjlBMjAxQ0JFQjVGQjAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzUzRTNFMEUxODg3Mzk4OTAwMTg4NDk2IC8qIFNl
c3Npb25UcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUM4MUQ1QTFDMjBFN0UyMDA1QzRD
ODIgLyogQXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk1NUE2RUMxQzc5
ODBDMjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKQEAg
LTc5ODIsNiArODAxMSw3IEBACiAJCQkJQTVFRkQzOEMxNkIwRTg4QzAwQjJGMEU4IC8qIFdLUGFn
ZVZpc2liaWxpdHlUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2QUI1NDExOTJCMUM0QTAw
M0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkRBMUU0RkUxOEMwMkI2QTAwREJDOTI5IC8qIFdLUERGVmlldy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0RBMjlBMjkxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8q
IFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQUJBNzc0MUE4MTdF
RTYwMEVGMEYxQSAvKiBXS1BsdWdpbkxvYWRQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
RkREMzE3MTg5MUM5NDcwMDE1Mzk3MCAvKiBXS1ByZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywK
QEAgLTgwNDIsNiArODA3Miw3IEBACiAJCQkJMzc3RUFENDgxN0UyQzc3QjAwMkQxOTNEIC8qIFdL
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYxMTNFMjkx
MjZDRTE5QjAwNTdEMEE3IC8qIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0QTNDQzE4RjE5QjA3QjhBMDBEMTRBRUYgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBMjlBMUIxQ0JEQkY0MTAwOTAxQ0NGIC8q
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUYwODlC
MTkyNjdFRTUwMEI2MzkwQyAvKiBXS1VzZXJTY3JpcHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
N0VBRDQ5MTdFMkM3N0IwMDJEMTkzRCAvKiBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUFGMDg5RDE5MjY3RkM4MDBCNjM5MEMgLyogV0tVc2VyU2NyaXB0
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtODA4Myw2ICs4MTE0LDcgQEAKIAkJCQkxQTU3
MTA5RjFBQkEwMDI3MDAyRkFCQkUgLyogV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0EyNTNGMzFDOTI0MTEyMDBGOUY2OEQgLyogV0tQcmV2aWV3QWN0aW9uSXRl
bUlkZW50aWZpZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNDQzE2NzE4OTA2QUNGMDAxRTZF
RDggLyogV0tXZWJWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREEyOUEyQjFDQkVCNjdBMDA5
MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBREY1OTFCMTg5MDUyOEUwMDQzQzE0NSAvKiBXS1dlYlZpZXdDb25maWd1
cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDdBQUZENjE4Qzk1NkFGMDBBN0FDRDQgLyog
V0tXZWJWaWV3Q29uZmlndXJhdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUMx
NDE1MTE4QUM0N0VFMDA2QzYwMkMgLyogV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaCBp
biBIZWFkZXJzICovLApAQCAtODcxMCw2ICs4NzQyLDcgQEAKIAkJCQk3QzFCQTMzRDFBNEEwRTYw
MDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI0MEVF
NTFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM1NzU2MTMxMjZFMDEzODAwNkYwRjEyIC8qIEFQSUVycm9yLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUNEQTI5QTJBMUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFD
MTMzNzExODU2NkM3QzAwRjNFQzA1IC8qIEFQSUZyYW1lSGFuZGxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJERjlFRUU1MUE3ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUFDMTMzNzQxODU3QzIxRTAwRjNFQzA1IC8qIEFQSUdlb21ldHJ5LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtODg1Myw2ICs4ODg2LDcgQEAKIAkJCQkyRDVBQjYzMDFBNjlE
NkZCMDAxNEE5Q0IgLyogTWVzc2FnZVJlY29yZGVyUHJvYmVzLmQgaW4gU291cmNlcyAqLywKIAkJ
CQkxQUFCMDM3OTE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDMEUzQUE3QjEyMDlFODM1MDBBNDlEMDEgLyogTW9kdWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUNEQTI5QTI4MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMwRTNBQTdB
MTIwOUU4MzAwMEE0OUQwMSAvKiBNb2R1bGVDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDUw
MzY1RTFCQ0M3OTNGMDBFMjBCQjMgLyogTmF0aXZlV2ViR2VzdHVyZUV2ZW50TWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkRBOTQ0OUUxODg0RTRGMDAwRUQ4NkRCIC8qIE5hdGl2ZVdlYktleWJv
YXJkRXZlbnRJT1MubW0gaW4gU291cmNlcyAqLywKQEAgLTg5NTUsNiArODk4OSw3IEBACiAJCQkJ
N0MxMzVBQUMxNzNCMENGRjAwNTg2QUUyIC8qIFBsdWdpbkluZm9ybWF0aW9uTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUFFRkNDMTMxMUQwMUY5NjAwODIxOUQzIC8qIFBsdWdpbkluZm9TdG9y
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUVGQ0NCRDExRDAyQzVFMDA4MjE5RDMgLyogUGx1
Z2luSW5mb1N0b3JlTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBMjlBMUExQ0JEQkY0MTAw
OTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkxQTA0Mzk3NzEyNEQwMzQ4MDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTBFQzkwNzEyNEMwQUI4MDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEwRUM5MTAxMjRDMEFGNTAwN0VGNEE1IC8q
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkw
MDgsNiArOTA0Myw3IEBACiAJCQkJMEY1OTQ3OUExODdCM0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQzM2NUMx
OEMwNUNBMTAwRjYwN0Q3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0g
aW4gU291cmNlcyAqLywKIAkJCQkwRjU5NDdBMzE4N0IzQjdEMDA0Mzc4NTcgLyogUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREEy
OUEyMTFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1OTQ3OUMxODdCM0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNj
cm9sbGluZ1RyZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFCMDkxMTJGNUUzQzAwMzM3
QkFCIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBQjRB
QUExMjk2RjE1NDAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb25NYWMubW0gaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAyN2QwOTI4YTE2OTk4MTdlNmUzNmIxYzYx
NTQwOTNlNDU2ODc0Mzk4Li41NmQ3NGEwMmZjYjI5Y2E5OTFmOWQ4ZTY3ZjBmMTg4ZWU5YTBjMmUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAi
V2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXIuaCIgCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCkBAIC04NTMsMzQg
Kzg1NCwzNCBAQCBQYXNzUmVmUHRyPFNjcm9sbGluZ0Nvb3JkaW5hdG9yPiBXZWJDaHJvbWVDbGll
bnQ6OmNyZWF0ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZwogI2lmIFBMQVRGT1JNKElPUykgfHwg
KFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIGJvb2wg
V2ViQ2hyb21lQ2xpZW50OjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKLSAgICByZXR1cm4g
bV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCktPnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVu
KG1vZGUpOworICAgIHJldHVybiBtX3BhZ2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKS5zdXBw
b3J0c1ZpZGVvRnVsbHNjcmVlbihtb2RlKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNl
dFVwVmlkZW9Db250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9F
bGVtZW50KQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldFVwUGxheWJhY2tDb250cm9sc01hbmFn
ZXIoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQogewotICAgIG1fcGFn
ZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpLT5zZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyKHZp
ZGVvRWxlbWVudCk7CisgICAgbV9wYWdlLT5wbGF5YmFja1Nlc3Npb25NYW5hZ2VyKCkuc2V0VXBQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlcihtZWRpYUVsZW1lbnQpOwogfQogCi12b2lkIFdlYkNocm9t
ZUNsaWVudDo6Y2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpCit2b2lkIFdlYkNocm9tZUNsaWVu
dDo6Y2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
JiBtZWRpYUVsZW1lbnQpCiB7Ci0gICAgbV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkt
PmNsZWFyVmlkZW9Db250cm9sc01hbmFnZXIoKTsKKyAgICBtX3BhZ2UtPnBsYXliYWNrU2Vzc2lv
bk1hbmFnZXIoKS5jbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKG1lZGlhRWxlbWVudCk7CiB9
CiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxl
bWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQsIFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIEFT
U0VSVChtb2RlICE9IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5v
bmUpOwotICAgIG1fcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpLT5lbnRlclZpZGVvRnVs
bHNjcmVlbkZvclZpZGVvRWxlbWVudCh2aWRlb0VsZW1lbnQsIG1vZGUpOworICAgIG1fcGFnZS0+
dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpLmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVt
ZW50KHZpZGVvRWxlbWVudCwgbW9kZSk7CiB9CiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGl0
VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQm
IHZpZGVvRWxlbWVudCkKIHsKLSAgICBtX3BhZ2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKS0+
ZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCh2aWRlb0VsZW1lbnQpOworICAgIG1f
cGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpLmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRl
b0VsZW1lbnQodmlkZW9FbGVtZW50KTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4aXRWaWRl
b0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1l
bnQmIHZpZGVvRWxlbWVudCwgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlIHRhcmdldE1vZGUpCiB7Ci0gICAgbV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkt
PmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKHZpZGVvRWxlbWVudCwg
dGFyZ2V0TW9kZSk7CisgICAgbV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkuZXhpdFZp
ZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24odmlkZW9FbGVtZW50LCB0YXJnZXRN
b2RlKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBkYTY2ZjE1MTBlNWY4
MTRmY2NiZjAzMzMwYzNiYzJjOTVhNzQyYzliLi4xZWVhNjg3MzZmYWU5MGNiMjdkOGE1YWYzYjk1
Nzg1ZjFmZGIwMGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTI0NCw4ICsyNDQsOCBAQCBw
cml2YXRlOgogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIGJvb2wgc3VwcG9ydHNWaWRlb0Z1bGxzY3Jl
ZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBv
dmVycmlkZTsKLSAgICB2b2lkIHNldFVwVmlkZW9Db250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRN
TFZpZGVvRWxlbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xlYXJWaWRlb0NvbnRyb2xzTWFu
YWdlcigpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVhclBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQmLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZp
ZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Jikgb3ZlcnJpZGU7CiAjaWYgUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZDFkYjYyZjk4NjU5
MDA4YjdlZGU4YmExNzM5YzNmYzc2YzE2YjIyNC4uZjg1ODkyMjhhYmYxNThmNjVmMDcwNDUwNWY5
MzZlZmJiNWRjYTM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtOTEsNiArOTEsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlBhZ2VPdmVybGF5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiV2ViUGx1Z0luQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51LmgiCiAjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oIgpAQCAtMzE4OCwxMSArMzE4OSwxOCBAQCBX
ZWJJbnNwZWN0b3JVSSogV2ViUGFnZTo6aW5zcGVjdG9yVUkoKQogfQogCiAjaWYgUExBVEZPUk0o
SU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUp
KQotV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciogV2ViUGFnZTo6dmlkZW9GdWxsc2NyZWVuTWFu
YWdlcigpCitXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJiBXZWJQYWdlOjpwbGF5YmFja1Nlc3Np
b25NYW5hZ2VyKCkKK3sKKyAgICBpZiAoIW1fcGxheWJhY2tTZXNzaW9uTWFuYWdlcikKKyAgICAg
ICAgbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyID0gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1cm4gKm1fcGxheWJhY2tTZXNzaW9uTWFuYWdlcjsKK30K
KworV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYgV2ViUGFnZTo6dmlkZW9GdWxsc2NyZWVuTWFu
YWdlcigpCiB7CiAgICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIpCi0gICAgICAgIG1f
dmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNyZWF0
ZSh0aGlzKTsKLSAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmdldCgpOworICAg
ICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgPSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpjcmVhdGUoKnRoaXMsIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXIoKSk7CisgICAgcmV0dXJuICpt
X3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXI7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZDU5MTljYzgyODgzOGEyYTZmYTE1YjQ3
ODMxZDM2NDAwOGY2NmQxZi4uMGM0ODRlZDliNGQ3MGQzYzA1NDQzNTdlYzU1ZGE2NWIyNzQwM2Nl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0x
ODAsNiArMTgwLDcgQEAgY2xhc3MgV2ViTm90aWZpY2F0aW9uQ2xpZW50OwogY2xhc3MgV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXI7CiBjbGFzcyBXZWJQYWdlR3JvdXBQcm94eTsKIGNsYXNzIFdl
YlBhZ2VPdmVybGF5OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjsKIGNsYXNzIFdl
YlBvcHVwTWVudTsKIGNsYXNzIFdlYlVuZG9TdGVwOwogY2xhc3MgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOwpAQCAtMjUxLDcgKzI1Miw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5zcGVjdG9y
UGFnZSgpIHsgcmV0dXJuICEhbV9pbnNwZWN0b3JVSTsgfQogCiAjaWYgUExBVEZPUk0oSU9TKSB8
fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQotICAg
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIqIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKTsKKyAg
ICBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyKCk7Cisg
ICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYgdmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpOwog
I2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQgc2V0QWxsb3dzTWVkaWFEb2N1bWVu
dElubGluZVBsYXliYWNrKGJvb2wpOwpAQCAtMTMwOCw2ICsxMzEwLDcgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8V2ViSW5zcGVjdG9yPiBtX2luc3BlY3RvcjsKICAgICBSZWZQdHI8V2ViSW5zcGVj
dG9yVUk+IG1faW5zcGVjdG9yVUk7CiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAgIFJlZlB0cjxXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyPiBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXI7CiAgICAgUmVmUHRy
PFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+IG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlcjsKICNl
bmRpZgogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGFmNWQ4NmQwZGJkNTBiMTA5YTE2ZWU1ODhiNDI4NGU5YWUxMWFlNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5oCkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyX2gKKyNkZWZpbmUgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcl9oCisK
KyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0V2ZW50TGlzdGVuZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZWRpYUVs
ZW1lbnRFbnVtcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBBdHRhY2htZW50OworY2xhc3Mg
Q29ubmVjdGlvbjsKK2NsYXNzIE1lc3NhZ2VEZWNvZGVyOworY2xhc3MgTWVzc2FnZVJlY2VpdmVy
OworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBOb2RlOworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI7CisKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQgOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiwgcHVibGljIFdl
YkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBjcmVhdGUoV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlciYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29u
dGV4dChtYW5hZ2VyLCBjb250ZXh0SWQpKTsKKyAgICB9CisgICAgdmlydHVhbCB+V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dCgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBt
X21hbmFnZXIgPSBudWxscHRyOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ7CisKKyAgICAvLyBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UKKyAgICB2b2lkIHJlc2V0TWVkaWFTdGF0ZSgpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0RHVyYXRpb24oZG91YmxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEN1cnJlbnRUaW1l
KGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0QnVmZmVyZWRUaW1lKGRvdWJsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRSYXRlKGJv
b2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
U2Vla2FibGVSYW5nZXMoY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYpIG92ZXJyaWRlOworICAg
IHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wgdmFsdWUpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5n
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4m
IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBl
LCBXVEY6OlN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpIG92ZXJyaWRlOworCisgICAgV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dChXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
JiwgdWludDY0X3QgY29udGV4dElkKTsKKworICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIq
IG1fbWFuYWdlcjsKKyAgICB1aW50NjRfdCBtX2NvbnRleHRJZDsKK307CisKK2NsYXNzIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyPiBjcmVhdGUoV2ViUGFnZSYpOwor
ICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIoKTsKKworICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92
ZXJyaWRlOworCisgICAgdm9pZCBzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQmKTsKKyAgICB2b2lkIGNsZWFyUGxheWJhY2tDb250cm9sc01hbmFn
ZXIoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCYpOworICAgIHVpbnQ2NF90IGNvbnRleHRJZEZv
ck1lZGlhRWxlbWVudChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Jik7CisKK3Byb3RlY3RlZDoK
KyAgICBmcmllbmQgY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDsKKyAg
ICBmcmllbmQgY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjsKKworICAgIGV4cGxpY2l0
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIoV2ViUGFnZSYpOworCisgICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPFJlZlB0cjxXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dD4sIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0Pj4gTW9kZWxJbnRl
cmZhY2VUdXBsZTsKKyAgICBNb2RlbEludGVyZmFjZVR1cGxlIGNyZWF0ZU1vZGVsQW5kSW50ZXJm
YWNlKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgTW9kZWxJbnRlcmZhY2VUdXBsZSYgZW5zdXJl
TW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKTsKKyAgICBXZWJDb3JlOjpXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCYgZW5zdXJlTW9kZWwodWludDY0X3QgY29u
dGV4dElkKTsKKyAgICBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0JiBlbnN1cmVJ
bnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHJlbW92ZUNvbnRleHQodWlu
dDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGFkZENsaWVudEZvckNvbnRleHQodWludDY0X3Qg
Y29udGV4dElkKTsKKyAgICB2b2lkIHJlbW92ZUNsaWVudEZvckNvbnRleHQodWludDY0X3QgY29u
dGV4dElkKTsKKworICAgIC8vIEludGVyZmFjZSB0byBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VDb250ZXh0CisgICAgdm9pZCByZXNldE1lZGlhU3RhdGUodWludDY0X3QgY29udGV4dElkKTsK
KyAgICB2b2lkIHNldER1cmF0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlKTsKKyAgICB2
b2lkIHNldEN1cnJlbnRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1l
LCBkb3VibGUgYW5jaG9yVGltZSk7CisgICAgdm9pZCBzZXRCdWZmZXJlZFRpbWUodWludDY0X3Qg
Y29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKTsKKyAgICB2b2lkIHNldFJhdGUodWludDY0
X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKTsKKyAgICB2
b2lkIHNldFNlZWthYmxlUmFuZ2VzKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6
VGltZVJhbmdlcyYpOworICAgIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKHVpbnQ2NF90IGNv
bnRleHRJZCwgYm9vbCB2YWx1ZSk7CisgICAgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1
aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9u
cywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCk7CisgICAgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNr
KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBlbmFibGVkLCBXZWJDb3JlOjpXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2U6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxp
emVkRGV2aWNlTmFtZSk7CisgICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wpOworCisgICAgLy8gTWVzc2FnZXMgZnJvbSBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkKKyAgICB2b2lkIHBsYXkodWludDY0X3QgY29udGV4
dElkKTsKKyAgICB2b2lkIHBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCB0b2dn
bGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGJlZ2luU2NydWJiaW5n
KHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBlbmRTY3J1YmJpbmcodWludDY0X3QgY29u
dGV4dElkKTsKKyAgICB2b2lkIHNlZWtUb1RpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUg
dGltZSk7CisgICAgdm9pZCBmYXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1l
KTsKKyAgICB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCk7Cisg
ICAgdm9pZCBiZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2
b2lkIGVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBzZWxlY3RBdWRp
b01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpOworICAgIHZv
aWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qg
aW5kZXgpOworCisgICAgV2ViUGFnZSogbV9wYWdlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudCosIHVpbnQ2NF90PiBtX21lZGlhRWxlbWVudHM7CisgICAgSGFzaE1hcDx1
aW50NjRfdCwgTW9kZWxJbnRlcmZhY2VUdXBsZT4gbV9jb250ZXh0TWFwOworICAgIHVpbnQ2NF90
IG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkIHsgMCB9OworICAgIEhhc2hNYXA8dWludDY0X3Qs
IGludD4gbV9jbGllbnRDb3VudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKSkKKworI2VuZGlmIC8vIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1
NmM1OWUzMTQzNGE2NzlkNTRkOGEzNjAzNzljM2E3ZmYzZmQ1NTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKK21lc3NhZ2VzIC0+IFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXIgeworICAgIFBsYXkodWludDY0X3QgY29udGV4dElkKQorICAgIFBhdXNlKHVp
bnQ2NF90IGNvbnRleHRJZCkKKyAgICBUb2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElk
KQorICAgIEJlZ2luU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBFbmRTY3J1YmJp
bmcodWludDY0X3QgY29udGV4dElkKQorICAgIFNlZWtUb1RpbWUodWludDY0X3QgY29udGV4dElk
LCBkb3VibGUgdGltZSkKKyAgICBGYXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0
aW1lKQorICAgIEJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBC
ZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKQorICAgIEVuZFNjYW5uaW5n
KHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBTZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90
IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCisgICAgU2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9u
KHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCit9CisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzg0YjIyMzIzNjE2ODlkYTlkMjQwYmY5Y2VjZjFk
ZmVjOTQyODYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCkBAIC0wLDAgKzEsNDA4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXIuaCIKKworCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBF
TkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorCisjaW1wb3J0ICJBdHRhY2htZW50Lmgi
CisjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbXBvcnQgIldlYlBhZ2UuaCIK
KyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlcy5oIgorI2ltcG9ydCAi
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbXBvcnQgIldlYlBy
b2Nlc3MuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRXZl
bnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRXZlbnROYW1lcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9I
VE1MTWVkaWFFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW1wb3J0
IDxXZWJDb3JlL1RpbWVSYW5nZXMuaD4KKyNpbXBvcnQgPG1hY2gvbWFjaF9wb3J0Lmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHVp
bnQ2NF90IG5leHRDb250ZXh0SWQoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBjb250ZXh0SWQg
PSAwOworICAgIHJldHVybiArK2NvbnRleHRJZDsKK30KKworI3ByYWdtYSBtYXJrIC0gV2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dAorCitXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VDb250ZXh0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXImIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICA6IG1fbWFu
YWdlcigmbWFuYWdlcikKKyAgICAsIG1fY29udGV4dElkKGNvbnRleHRJZCkKK3sKK30KKworV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6fldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUNvbnRleHQoKQoreworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNv
bnRleHQ6OnJlc2V0TWVkaWFTdGF0ZSgpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAg
bV9tYW5hZ2VyLT5yZXNldE1lZGlhU3RhdGUobV9jb250ZXh0SWQpOworfQorCit2b2lkIFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlv
bikKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnNldER1cmF0aW9u
KG1fY29udGV4dElkLCBkdXJhdGlvbik7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQ29udGV4dDo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUg
YW5jaG9yVGltZSkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnNl
dEN1cnJlbnRUaW1lKG1fY29udGV4dElkLCBjdXJyZW50VGltZSwgYW5jaG9yVGltZSk7Cit9CisK
K3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0QnVmZmVyZWRUaW1l
KGRvdWJsZSBidWZmZXJlZFRpbWUpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9t
YW5hZ2VyLT5zZXRCdWZmZXJlZFRpbWUobV9jb250ZXh0SWQsIGJ1ZmZlcmVkVGltZSk7Cit9CisK
K3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0UmF0ZShib29sIGlz
UGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAg
ICAgIG1fbWFuYWdlci0+c2V0UmF0ZShtX2NvbnRleHRJZCwgaXNQbGF5aW5nLCBwbGF5YmFja1Jh
dGUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldFNl
ZWthYmxlUmFuZ2VzKGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmIHJhbmdlcykKK3sKKyAgICBp
ZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnNldFNlZWthYmxlUmFuZ2VzKG1fY29u
dGV4dElkLCByYW5nZXMpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNv
bnRleHQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIHZhbHVlKQoreworICAgIGlmIChtX21h
bmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+c2V0Q2FuUGxheUZhc3RSZXZlcnNlKG1fY29udGV4
dElkLCB2YWx1ZSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4
dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5n
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBpZiAobV9tYW5hZ2Vy
KQorICAgICAgICBtX21hbmFnZXItPnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKG1fY29u
dGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgp
Cit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT5zZXRMZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb25zKG1fY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsK
K30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRFeHRlcm5h
bFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdHlwZSwg
V1RGOjpTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQor
ICAgICAgICBtX21hbmFnZXItPnNldEV4dGVybmFsUGxheWJhY2sobV9jb250ZXh0SWQsIGVuYWJs
ZWQsIHR5cGUsIGxvY2FsaXplZERldmljZU5hbWUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUNvbnRleHQ6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJv
b2wgZGlzYWJsZWQpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT5z
ZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChtX2NvbnRleHRJZCwgZGlzYWJsZWQpOwor
fQorCisjcHJhZ21hIG1hcmsgLSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyCisKK1JlZjxXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyPiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGUo
V2ViUGFnZSYgcGFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyKHBhZ2UpKTsKK30KKworV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcihXZWJQYWdlJiBwYWdlKQorICAgIDogbV9wYWdlKCZwYWdl
KQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBw
YWdlLnBhZ2VJRCgpLCAqdGhpcyk7Cit9CisKK1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6On5X
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyKCkKK3sKKyAgICBmb3IgKGF1dG8mIHR1cGxlIDogbV9j
b250ZXh0TWFwLnZhbHVlcygpKSB7CisgICAgICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudD4gbW9kZWw7CisgICAgICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7CisgICAgICAgIHN0ZDo6dGllKG1vZGVsLCBp
bnRlcmZhY2UpID0gdHVwbGU7CisKKyAgICAgICAgbW9kZWwtPnNldFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZShudWxscHRyKTsKKyAgICAgICAgbW9kZWwtPnNldE1lZGlhRWxlbWVudChudWxs
cHRyKTsKKworICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKKyAgICB9CisKKyAgICBt
X2NvbnRleHRNYXAuY2xlYXIoKTsKKyAgICBtX21lZGlhRWxlbWVudHMuY2xlYXIoKTsKKyAgICBt
X2NsaWVudENvdW50cy5jbGVhcigpOworCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCitXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlIFdlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAg
ICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1vZGVsID0gV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOworICAgIFJlZlB0cjxX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2UgPSBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7CisKKyAg
ICBtb2RlbC0+c2V0V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKGludGVyZmFjZS5nZXQoKSk7
CisKKyAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1vdmUobW9kZWwpLCBXVEZNb3ZlKGlu
dGVyZmFjZSkpOworfQorCitXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpNb2RlbEludGVyZmFj
ZVR1cGxlJiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjplbnN1cmVNb2RlbEFuZEludGVyZmFj
ZSh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2NvbnRleHRN
YXAuYWRkKGNvbnRleHRJZCwgTW9kZWxJbnRlcmZhY2VUdXBsZSgpKTsKKyAgICBpZiAoYWRkUmVz
dWx0LmlzTmV3RW50cnkpCisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBjcmVh
dGVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworICAgIHJldHVybiBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlOworfQorCitXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudCYgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5zdXJlTW9kZWwodWludDY0X3Qg
Y29udGV4dElkKQoreworICAgIHJldHVybiAqc3RkOjpnZXQ8MD4oZW5zdXJlTW9kZWxBbmRJbnRl
cmZhY2UoY29udGV4dElkKSk7Cit9CisKK1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRl
eHQmIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmVuc3VyZUludGVyZmFjZSh1aW50NjRfdCBj
b250ZXh0SWQpCit7CisgICAgcmV0dXJuICpzdGQ6OmdldDwxPihlbnN1cmVNb2RlbEFuZEludGVy
ZmFjZShjb250ZXh0SWQpKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpy
ZW1vdmVDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBSZWZQdHI8V2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1vZGVsOworICAgIFJlZlB0cjxXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7CisgICAgc3RkOjp0aWUobW9kZWws
IGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworCisgICAg
UmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IG1lZGlhRWxlbWVudCA9IG1vZGVsLT5tZWRpYUVsZW1l
bnQoKTsKKyAgICBtb2RlbC0+c2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOworICAgIG1vZGVsLT5z
ZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UobnVsbHB0cik7CisgICAgaW50ZXJmYWNlLT5p
bnZhbGlkYXRlKCk7CisgICAgbV9tZWRpYUVsZW1lbnRzLnJlbW92ZShtZWRpYUVsZW1lbnQuZ2V0
KCkpOworICAgIG1fY29udGV4dE1hcC5yZW1vdmUoY29udGV4dElkKTsKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjphZGRDbGllbnRGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRl
eHRJZCkKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fY2xpZW50Q291bnRzLmFkZChjb250ZXh0
SWQsIDEpOworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUrKzsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpyZW1vdmVDbGllbnRGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBBU1NF
UlQobV9jbGllbnRDb3VudHMuY29udGFpbnMoY29udGV4dElkKSk7CisKKyAgICBpbnQgY2xpZW50
Q291bnQgPSBtX2NsaWVudENvdW50cy5nZXQoY29udGV4dElkKTsKKyAgICBBU1NFUlQoY2xpZW50
Q291bnQgPiAwKTsKKyAgICBjbGllbnRDb3VudC0tOworCisgICAgaWYgKGNsaWVudENvdW50IDw9
IDApIHsKKyAgICAgICAgbV9jbGllbnRDb3VudHMucmVtb3ZlKGNvbnRleHRJZCk7CisgICAgICAg
IHJlbW92ZUNvbnRleHQoY29udGV4dElkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fY2xpZW50Q291bnRzLnNldChjb250ZXh0SWQsIGNsaWVudENvdW50KTsKK30KKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKK3sKKyNpZiBQTEFURk9STShN
QUMpCisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5jb250YWlucygmbWVkaWFFbGVtZW50KSkgewor
ICAgICAgICB1aW50NjRfdCBjb250ZXh0SWQgPSBtX21lZGlhRWxlbWVudHMuZ2V0KCZtZWRpYUVs
ZW1lbnQpOworICAgICAgICBpZiAobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgPT0gY29udGV4
dElkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChtX2NvbnRyb2xzTWFuYWdl
ckNvbnRleHRJZCkKKyAgICAgICAgICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQobV9jb250cm9s
c01hbmFnZXJDb250ZXh0SWQpOworICAgICAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9
IGNvbnRleHRJZDsKKyAgICB9IGVsc2UgeworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbWVk
aWFFbGVtZW50cy5lbnN1cmUoJm1lZGlhRWxlbWVudCwgWyZdIHsgcmV0dXJuIG5leHRDb250ZXh0
SWQoKTsgfSk7CisgICAgICAgIGF1dG8gY29udGV4dElkID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZTsKKyAgICAgICAgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgPSBjb250ZXh0SWQ7Cisg
ICAgICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2V0TWVkaWFFbGVtZW50KCZtZWRpYUVsZW1l
bnQpOworICAgIH0KKworICAgIGFkZENsaWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJD
b250ZXh0SWQpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpTZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0aElEKG1fY29udHJv
bHNNYW5hZ2VyQ29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisjZW5kaWYKK30KKwordm9p
ZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKK3sKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5jb250YWlucygmbWVkaWFFbGVtZW50KSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgdWludDY0X3QgY29udGV4dElkID0gbV9tZWRpYUVsZW1l
bnRzLmdldCgmbWVkaWFFbGVtZW50KTsKKyAgICBpZiAobV9jb250cm9sc01hbmFnZXJDb250ZXh0
SWQgIT0gY29udGV4dElkKQorICAgICAgICByZXR1cm47CisKKyAgICByZW1vdmVDbGllbnRGb3JD
b250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKTsKKyAgICBtX2NvbnRyb2xzTWFuYWdl
ckNvbnRleHRJZCA9IDA7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OkNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisjZW5kaWYKK30KKwordWludDY0X3QgV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6Y29udGV4dElkRm9yTWVkaWFFbGVtZW50KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQm
IG1lZGlhRWxlbWVudCkKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbWVkaWFFbGVtZW50cy5l
bnN1cmUoJm1lZGlhRWxlbWVudCwgWyZdIHsgcmV0dXJuIG5leHRDb250ZXh0SWQoKTsgfSk7Cisg
ICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cit9CisKKyNwcmFnbWEgbWFyayBJ
bnRlcmZhY2UgdG8gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDoKKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpyZXNldE1lZGlhU3RhdGUodWludDY0X3QgY29udGV4
dElkKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpSZXNldE1lZGlhU3RhdGUoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7
Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0RHVyYXRpb24odWludDY0
X3QgY29udGV4dElkLCBkb3VibGUgZHVyYXRpb24pCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldER1cmF0aW9uKGNvbnRleHRJ
ZCwgZHVyYXRpb24pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50VGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBj
dXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldEN1cnJlbnRUaW1lKGNvbnRl
eHRJZCwgY3VycmVudFRpbWUsIGFuY2hvclRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwor
dm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRCdWZmZXJlZFRpbWUodWludDY0X3Qg
Y29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRCdWZmZXJlZFRpbWUoY29u
dGV4dElkLCBidWZmZXJlZFRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBp
c1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0UmF0ZShjb250ZXh0SWQsIGlz
UGxheWluZywgcGxheWJhY2tSYXRlKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0U2Vla2FibGVSYW5nZXModWludDY0X3QgY29udGV4
dElkLCBjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQoreworICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiByYW5nZXNWZWN0b3I7CisKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdGltZVJhbmdlcy5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIEV4
Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZTsKKyAgICAgICAgZG91YmxlIHN0YXJ0ID0gdGltZVJh
bmdlcy5zdGFydChpLCBleGNlcHRpb25Db2RlKTsKKyAgICAgICAgZG91YmxlIGVuZCA9IHRpbWVS
YW5nZXMuZW5kKGksIGV4Y2VwdGlvbkNvZGUpOworICAgICAgICByYW5nZXNWZWN0b3IuYXBwZW5k
KHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4oc3RhcnQsIGVuZCkpOworICAgIH0KKworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRT
ZWVrYWJsZVJhbmdlc1ZlY3Rvcihjb250ZXh0SWQsIFdURk1vdmUocmFuZ2VzVmVjdG9yKSksIG1f
cGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNl
dENhblBsYXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCit7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OlNldENhblBsYXlGYXN0UmV2ZXJzZShjb250ZXh0SWQsIHZhbHVlKSwgbV9wYWdlLT5wYWdlSUQo
KSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0QXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbnMoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5w
YWdlSUQoKSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0TGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQoreworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCks
IG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OnNldEV4dGVybmFsUGxheWJhY2sodWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFy
Z2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCit7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldEV4dGVybmFsUGxh
eWJhY2tQcm9wZXJ0aWVzKGNvbnRleHRJZCwgZW5hYmxlZCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHRhcmdldFR5cGUpLCBsb2NhbGl6ZWREZXZpY2VOYW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9
CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0V2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGRpc2FibGVkKQoreworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRX
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChjb250ZXh0SWQsIGRpc2FibGVkKSk7Cit9CisK
KyNwcmFnbWEgbWFyayBNZXNzYWdlcyBmcm9tIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eToKKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpwbGF5KHVpbnQ2NF90IGNvbnRl
eHRJZCkKK3sKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnBsYXkoKTsKK30KKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpwYXVzZSh1aW50NjRfdCBjb250ZXh0SWQpCit7Cisg
ICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5wYXVzZSgpOworfQorCit2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OnRvZ2dsZVBsYXlTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCit7Cisg
ICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS50b2dnbGVQbGF5U3RhdGUoKTsKK30KKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpiZWdpblNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0
SWQpCit7CisgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5iZWdpblNjcnViYmluZygpOworfQor
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmVuZFNjcnViYmluZyh1aW50NjRfdCBj
b250ZXh0SWQpCit7CisgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5lbmRTY3J1YmJpbmcoKTsK
K30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWVrVG9UaW1lKHVpbnQ2NF90
IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpCit7CisgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5z
ZWVrVG9UaW1lKHRpbWUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmZh
c3RTZWVrKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpCit7CisgICAgZW5zdXJlTW9k
ZWwoY29udGV4dElkKS5mYXN0U2Vlayh0aW1lKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpiZWdpblNjYW5uaW5nRm9yd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCit7Cisg
ICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5iZWdpblNjYW5uaW5nRm9yd2FyZCgpOworfQorCit2
b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCh1aW50
NjRfdCBjb250ZXh0SWQpCit7CisgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5iZWdpblNjYW5u
aW5nQmFja3dhcmQoKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjplbmRT
Y2FubmluZyh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgZW5zdXJlTW9kZWwoY29udGV4dElk
KS5lbmRTY2FubmluZygpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNl
bGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkK
K3sKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oaW5k
ZXgpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNlbGVjdExlZ2libGVN
ZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQoreworICAgIGVu
c3VyZU1vZGVsKGNvbnRleHRJZCkuc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKGluZGV4KTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpIHx8IChQ
TEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5oCmluZGV4IDY2ZDMwZjUyOWE4NDRkNWEyNjUxZDdlZWUyYTg4MWRmMThmNzE2
OTguLjI3NjViOGVkM2NjMmNkZWFkNmM2ZDE1MzQ4NjNmYzMxY2ZkOTFkNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5oCkBAIC01MiwxMyArNTIsMTUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIExheWVySG9zdGluZ0NvbnRleHQ7CiBjbGFzcyBXZWJQYWdlOworY2xhc3MgV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDsKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI7CiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOwogCiBjbGFzcyBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQ29udGV4dD4sIHB1YmxpYyBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQ29udGV4dD4gY3JlYXRlKFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXImIG1hbmFn
ZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBzdGF0aWMgUmVmPFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUNvbnRleHQ+IGNyZWF0ZShXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyJiBtYW5h
Z2VyLCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0JiBwbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQobWFuYWdlciwgY29u
dGV4dElkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUNvbnRleHQobWFuYWdlciwgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLCBjb250
ZXh0SWQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
Q29udGV4dCgpOwogCkBAIC04MCwxMyArODIsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNG
dWxsc2NyZWVuKGJvb2wgZmxhZykgeyBtX2lzRnVsbHNjcmVlbiA9IGZsYWc7IH0KIAogcHJpdmF0
ZToKLSAgICAvLyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UKKyAgICAvLyBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2UKICAgICB2b2lkIHJlc2V0TWVkaWFTdGF0ZSgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2V0RHVyYXRpb24oZG91YmxlKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEN1cnJl
bnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2V0QnVmZmVyZWRUaW1lKGRvdWJsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRS
YXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOwotICAgIHZv
aWQgc2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoY29uc3QgV2ViQ29y
ZTo6VGltZVJhbmdlcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNl
KGJvb2wgdmFsdWUpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0
ZWRJbmRleCkgb3ZlcnJpZGU7CkBAIC05NCw5ICs5NSwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRU
eXBlLCBXVEY6OlN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKICAgICB2b2lk
IHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpIG92ZXJyaWRlOwogCi0gICAg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dChXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyJiwgdWludDY0X3QgY29udGV4dElkKTsKKyAgICAvLyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2UKKyAgICB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3
aWR0aCwgZmxvYXQgaGVpZ2h0KSBvdmVycmlkZTsKKworICAgIFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUNvbnRleHQoV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYsIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUNvbnRleHQmLCB1aW50NjRfdCBjb250ZXh0SWQpOwogCiAgICAgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlciogbV9tYW5hZ2VyOworICAgIFJlZjxXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VDb250ZXh0PiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKICAgICB1aW50
NjRfdCBtX2NvbnRleHRJZDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4
dD4gbV9sYXllckhvc3RpbmdDb250ZXh0OwogICAgIGJvb2wgbV9pc0FuaW1hdGluZyB7IGZhbHNl
IH07CkBAIC0xMDcsNyArMTEyLDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+
LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYlBhZ2U+KTsK
KyAgICBzdGF0aWMgUmVmPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+IGNyZWF0ZShXZWJQYWdl
JiwgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciYpOwogICAgIHZpcnR1YWwgfldlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIoKTsKICAgICAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKQEAgLTExNywxMyAr
MTIyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9F
bGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwogICAgIHZvaWQgZXhpdFZpZGVvRnVsbHNj
cmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Jik7CiAgICAgdm9p
ZCBleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50JiwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlKTsKLSAgICB2b2lkIHNldFVwVmlkZW9Db250cm9sc01hbmFnZXIoV2ViQ29yZTo6
SFRNTFZpZGVvRWxlbWVudCYpOwotICAgIHZvaWQgY2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigp
OwotICAgIAorCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUNvbnRleHQ7CiAKLSAgICBleHBsaWNpdCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyKFBhc3NSZWZQdHI8V2ViUGFnZT4pOworICAgIGV4cGxpY2l0IFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIoV2ViUGFnZSYsIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXImKTsKIAogICAgIHR5
cGVkZWYgc3RkOjp0dXBsZTxSZWZQdHI8V2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ+LCBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4+
IE1vZGVsSW50ZXJmYWNlVHVwbGU7CiAgICAgTW9kZWxJbnRlcmZhY2VUdXBsZSBjcmVhdGVNb2Rl
bEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpOwpAQCAtMTM1LDMwICsxMzgsOSBAQCBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCByZW1vdmVDbGllbnRGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRl
eHRJZCk7CiAKICAgICAvLyBJbnRlcmZhY2UgdG8gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
Q29udGV4dAotICAgIHZvaWQgcmVzZXRNZWRpYVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0g
ICAgdm9pZCBzZXREdXJhdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSk7Ci0gICAgdm9p
ZCBzZXRDdXJyZW50VGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGltZSwg
ZG91YmxlIGFuY2hvclRpbWUpOwotICAgIHZvaWQgc2V0QnVmZmVyZWRUaW1lKHVpbnQ2NF90IGNv
bnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSk7Ci0gICAgdm9pZCBzZXRSYXRlKHVpbnQ2NF90
IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSk7CiAgICAgdm9p
ZCBzZXRWaWRlb0RpbWVuc2lvbnModWludDY0X3QgY29udGV4dElkLCBib29sIGhhc1ZpZGVvLCBm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKLSAgICB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKHVp
bnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYpOwotICAgIHZvaWQg
c2V0Q2FuUGxheUZhc3RSZXZlcnNlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSk7Ci0g
ICAgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsK
LSAgICB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4
dElkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCk7Ci0gICAgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9v
bCBlbmFibGVkLCBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U6OkV4dGVybmFs
UGxheWJhY2tUYXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSk7Ci0gICAgdm9p
ZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJv
b2wpOwogCiAgICAgLy8gTWVzc2FnZXMgZnJvbSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkKLSAgICB2b2lkIHBsYXkodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHBhdXNlKHVp
bnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCB0b2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29u
dGV4dElkKTsKLSAgICB2b2lkIGJlZ2luU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0g
ICAgdm9pZCBlbmRTY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHNlZWtU
b1RpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSk7Ci0gICAgdm9pZCBmYXN0U2Vl
ayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKTsKLSAgICB2b2lkIGJlZ2luU2Nhbm5p
bmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBiZWdpblNjYW5uaW5nQmFj
a3dhcmQodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGVuZFNjYW5uaW5nKHVpbnQ2NF90
IGNvbnRleHRJZCk7CiAgICAgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29u
dGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUpOwogICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAg
ICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpOwpAQCAtMTY2LDEy
ICsxNDgsMTEgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4odWlu
dDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZCh1aW50
NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZHMsIElQQzo6QXR0YWNobWVu
dCBmZW5jZVBvcnQpOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHlFbnVtKHVpbnQ2NF90
IGNvbnRleHRJZCwgdW5zaWduZWQgZ3Jhdml0eSk7Ci0gICAgdm9pZCBzZWxlY3RBdWRpb01lZGlh
T3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpOwotICAgIHZvaWQgc2Vs
ZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgp
OwogICAgIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICB2
b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wg
aXNQYWdlVmlzaWJsZSk7CiAgICAgCiAgICAgV2ViUGFnZSogbV9wYWdlOworICAgIFJlZjxXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyPiBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXI7CiAgICAgSGFz
aE1hcDxXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50KiwgdWludDY0X3Q+IG1fdmlkZW9FbGVtZW50
czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBNb2RlbEludGVyZmFjZVR1cGxlPiBtX2NvbnRleHRN
YXA7CiAgICAgdWludDY0X3QgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgeyAwIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggODNkZGZlMjBiMDY5NWVk
Zjc0NmU5NDhmYWIzZTM4ZjZjMDBmNzU5NS4uN2JmYzExYTM5MWQxZDZjZmU3YzhjMjlmNWZlMjJk
YmQ5NjI5YmJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgpA
QCAtMjIsMTYgKzIyLDYgQEAKIAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIG1lc3NhZ2VzIC0+IFdlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIgewotICAgIFBsYXkodWludDY0X3QgY29udGV4dElkKQotICAgIFBh
dXNlKHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBUb2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29u
dGV4dElkKQotICAgIEJlZ2luU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBFbmRT
Y3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQotICAgIFNlZWtUb1RpbWUodWludDY0X3QgY29u
dGV4dElkLCBkb3VibGUgdGltZSkKLSAgICBGYXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRv
dWJsZSB0aW1lKQotICAgIEJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkK
LSAgICBCZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKQotICAgIEVuZFNj
YW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBSZXF1ZXN0RnVsbHNjcmVlbk1vZGUodWlu
dDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKICAgICBEaWRTZXR1cEZ1bGxzY3JlZW4o
dWludDY0X3QgY29udGV4dElkKQogICAgIERpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRl
eHRJZCkKQEAgLTM5LDggKzI5LDYgQEAgbWVzc2FnZXMgLT4gV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlciB7CiAgICAgRGlkQ2xlYW51cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAg
IFNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZCh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkZs
b2F0UmVjdCBib3VuZHMsIElQQzo6QXR0YWNobWVudCBmZW5jZVBvcnQpCiAgICAgU2V0VmlkZW9M
YXllckdyYXZpdHlFbnVtKHVpbnQ2NF90IGNvbnRleHRJZCwgdW5zaWduZWQgZ3Jhdml0eSkKLSAg
ICBTZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5k
ZXgpCi0gICAgU2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWlu
dDY0X3QgaW5kZXgpCiAgICAgRnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZp
ZGVvRnVsbHNjcmVlbk1vZGUpCiAgICAgRnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2
NF90IGNvbnRleHRJZCwgYm9vbCBpc1BhZ2VWaXNpYmxlKQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCmluZGV4IDY5M2NjZmMwYWUzNDY3OWVkMDcwMTM3N2YwMDhlNGQzYTNmMmJiYmUuLjlkYWE1
ZGQ3ZmY4MjgwYTliODk4ZTRhNzljNGQyZmM5ZDMzNmY5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIkF0dGFjaG1lbnQuaCIKICNpbXBvcnQg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCAiV2ViUGFnZS5oIgorI2ltcG9ydCAi
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2lt
cG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgpAQCAtNTksMTYgKzYwLDExIEBA
IHN0YXRpYyBJbnRSZWN0IGNsaWVudFJlY3RGb3JFbGVtZW50KEhUTUxFbGVtZW50KiBlbGVtZW50
KQogICAgIHJldHVybiBlbGVtZW50LT5jbGllbnRSZWN0KCk7CiB9CiAKLXN0YXRpYyB1aW50NjRf
dCBuZXh0Q29udGV4dElkKCkKLXsKLSAgICBzdGF0aWMgdWludDY0X3QgY29udGV4dElkID0gMDsK
LSAgICByZXR1cm4gKytjb250ZXh0SWQ7Ci19Ci0KICNwcmFnbWEgbWFyayAtIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUNvbnRleHQKIAotV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dChXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyJiBtYW5hZ2VyLCB1aW50NjRfdCBjb250ZXh0SWQpCitXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VDb250ZXh0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0KFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXImIG1hbmFnZXIsIFdlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUNvbnRleHQmIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSwgdWludDY0X3QgY29udGV4dElk
KQogICAgIDogbV9tYW5hZ2VyKCZtYW5hZ2VyKQorICAgICwgbV9wbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UocGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQogICAgICwgbV9jb250ZXh0SWQoY29udGV4
dElkKQogewogfQpAQCAtODQsMzIgKzgwLDI3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQ29udGV4dDo6c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChzdGQ6OnVuaXF1ZV9wdHI8CiAK
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6cmVzZXRNZWRpYVN0YXRl
KCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnJlc2V0TWVkaWFT
dGF0ZShtX2NvbnRleHRJZCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnJlc2V0
TWVkaWFTdGF0ZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRl
eHQ6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQot
ICAgICAgICBtX21hbmFnZXItPnNldER1cmF0aW9uKG1fY29udGV4dElkLCBkdXJhdGlvbik7Cisg
ICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKIH0K
IAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRDdXJyZW50VGlt
ZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQogewotICAgIGlmIChtX21h
bmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0Q3VycmVudFRpbWUobV9jb250ZXh0SWQsIGN1
cnJlbnRUaW1lLCBhbmNob3JUaW1lKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
c2V0Q3VycmVudFRpbWUoY3VycmVudFRpbWUsIGFuY2hvclRpbWUpOwogfQogCiB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldEJ1ZmZlcmVkVGltZShkb3VibGUgYnVm
ZmVyZWRUaW1lKQogewotICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0
QnVmZmVyZWRUaW1lKG1fY29udGV4dElkLCBidWZmZXJlZFRpbWUpOworICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRCdWZmZXJlZFRpbWUoYnVmZmVyZWRUaW1lKTsKIH0KIAogdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRSYXRlKGJvb2wgaXNQbGF5
aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAg
bV9tYW5hZ2VyLT5zZXRSYXRlKG1fY29udGV4dElkLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSk7
CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldFJhdGUoaXNQbGF5aW5nLCBwbGF5
YmFja1JhdGUpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6
OnNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVp
Z2h0KQpAQCAtMTIwLDUxICsxMTEsNDYgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VDb250ZXh0OjpzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQKIAogdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRTZWVrYWJsZVJhbmdlcyhj
b25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJiByYW5nZXMpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikK
LSAgICAgICAgbV9tYW5hZ2VyLT5zZXRTZWVrYWJsZVJhbmdlcyhtX2NvbnRleHRJZCwgcmFuZ2Vz
KTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0U2Vla2FibGVSYW5nZXMocmFu
Z2VzKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRD
YW5QbGF5RmFzdFJldmVyc2UoYm9vbCB2YWx1ZSkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAg
ICAgICBtX21hbmFnZXItPnNldENhblBsYXlGYXN0UmV2ZXJzZShtX2NvbnRleHRJZCwgdmFsdWUp
OworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDYW5QbGF5RmFzdFJldmVyc2Uo
dmFsdWUpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNl
dEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAg
ICAgICAgbV9tYW5hZ2VyLT5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhtX2NvbnRleHRJ
ZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UtPnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgp
OwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldExlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9u
cywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAg
ICBtX21hbmFnZXItPnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMobV9jb250ZXh0SWQs
IG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
LT5zZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgp
OwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldEV4dGVy
bmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0eXBl
LCBXVEY6OlN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKQogewotICAgIGlmIChtX21hbmFnZXIp
Ci0gICAgICAgIG1fbWFuYWdlci0+c2V0RXh0ZXJuYWxQbGF5YmFjayhtX2NvbnRleHRJZCwgZW5h
YmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UtPnNldEV4dGVybmFsUGxheWJhY2soZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2
aWNlTmFtZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6
c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKIHsKLSAgICBp
ZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkKG1fY29udGV4dElkLCBkaXNhYmxlZCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UtPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGRpc2FibGVkKTsKIH0K
IAogI3ByYWdtYSBtYXJrIC0gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcgogCi1SZWY8V2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcj4gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6Y3JlYXRlKFBh
c3NSZWZQdHI8V2ViUGFnZT4gcGFnZSkKK1JlZjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGUoV2ViUGFnZSYgcGFnZSwgV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlciYgcGxheWJhY2tTZXNzaW9uTWFuYWdlcikKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKHBhZ2UpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKHBhZ2UsIHBsYXliYWNr
U2Vzc2lvbk1hbmFnZXIpKTsKIH0KIAotV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6V2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcihQYXNzUmVmUHRyPFdlYlBhZ2U+IHBhZ2UpCi0gICAgOiBtX3Bh
Z2UocGFnZS5nZXQoKSkKK1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OldlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIoV2ViUGFnZSYgcGFnZSwgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciYgcGxh
eWJhY2tTZXNzaW9uTWFuYWdlcikKKyAgICA6IG1fcGFnZSgmcGFnZSkKKyAgICAsIG1fcGxheWJh
Y2tTZXNzaW9uTWFuYWdlcihwbGF5YmFja1Nlc3Npb25NYW5hZ2VyKQogewotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBwYWdlLT5wYWdlSUQoKSwgKnRo
aXMpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBw
YWdlLnBhZ2VJRCgpLCAqdGhpcyk7CiB9CiAKIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6On5X
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkKQEAgLTE4OSw4ICsxNzUsMTAgQEAgV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6fldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKQogCiBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsK
LSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsID0g
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSgpOwotICAgIFJlZlB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2UgPSBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7Cisg
ICAgYXV0byYgcGxheWJhY2tTZXNzaW9uTW9kZWwgPSBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIt
PmVuc3VyZU1vZGVsKGNvbnRleHRJZCk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50PiBtb2RlbCA9IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50OjpjcmVhdGUocGxheWJhY2tTZXNzaW9uTW9kZWwpOworICAgIGF1dG8mIHBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZSA9IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlci0+ZW5zdXJlSW50ZXJmYWNl
KGNvbnRleHRJZCk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRl
eHQ+IGludGVyZmFjZSA9IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0
ZSgqdGhpcywgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLCBjb250ZXh0SWQpOwogCiAgICAgaW50
ZXJmYWNlLT5zZXRMYXllckhvc3RpbmdDb250ZXh0KExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0
ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKSk7CiAgICAgbW9kZWwtPnNldFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZShpbnRlcmZhY2UuZ2V0KCkpOwpAQCAtMjcyLDEyICsyNjAsMTAgQEAg
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZp
ZGVvRWxlbWVudChIVE1MVmlkZW9FbGUKIHsKICAgICBBU1NFUlQobW9kZSAhPSBIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKIAotICAgIHVpbnQ2NF90IGNv
bnRleHRJZDsKLQotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV92aWRlb0VsZW1lbnRzLmFkZCgmdmlk
ZW9FbGVtZW50LCAwKTsKLSAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBuZXh0Q29udGV4dElkKCk7Ci0gICAgY29udGV4dElk
ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICB1aW50NjRfdCBjb250ZXh0SWQgPSBt
X3BsYXliYWNrU2Vzc2lvbk1hbmFnZXItPmNvbnRleHRJZEZvck1lZGlhRWxlbWVudCh2aWRlb0Vs
ZW1lbnQpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV92aWRlb0VsZW1lbnRzLmFkZCgmdmlkZW9F
bGVtZW50LCBjb250ZXh0SWQpOworICAgIFVOVVNFRF9QQVJBTShhZGRSZXN1bHQpOworICAgIEFT
U0VSVChhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID09IGNvbnRleHRJZCk7CiAKICAgICBSZWZQ
dHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwogICAgIFJlZlB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7CkBAIC0zMjEs
NDEgKzMwNyw2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVs
bHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MCiAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuKGNv
bnRleHRJZCwgY2xpZW50UmVjdEZvckVsZW1lbnQoJnZpZGVvRWxlbWVudCkpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRVcFZpZGVv
Q29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCkK
LXsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKG1fdmlkZW9FbGVtZW50cy5jb250YWlucygm
dmlkZW9FbGVtZW50KSkgewotICAgICAgICB1aW50NjRfdCBjb250ZXh0SWQgPSBtX3ZpZGVvRWxl
bWVudHMuZ2V0KCZ2aWRlb0VsZW1lbnQpOwotICAgICAgICBpZiAobV9jb250cm9sc01hbmFnZXJD
b250ZXh0SWQgPT0gY29udGV4dElkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlm
IChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKLSAgICAgICAgICAgIHJlbW92ZUNsaWVudEZv
ckNvbnRleHQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOwotICAgICAgICBtX2NvbnRyb2xz
TWFuYWdlckNvbnRleHRJZCA9IGNvbnRleHRJZDsKLSAgICB9IGVsc2UgewotICAgICAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fdmlkZW9FbGVtZW50cy5lbnN1cmUoJnZpZGVvRWxlbWVudCwgWyZdIHsg
cmV0dXJuIG5leHRDb250ZXh0SWQoKTsgfSk7Ci0gICAgICAgIGF1dG8gY29udGV4dElkID0gYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgbV9jb250cm9sc01hbmFnZXJDb250ZXh0
SWQgPSBjb250ZXh0SWQ7Ci0gICAgICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2V0VmlkZW9F
bGVtZW50KCZ2aWRlb0VsZW1lbnQpOwotICAgIH0KLQotICAgIGFkZENsaWVudEZvckNvbnRleHQo
bV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2Vy
V2l0aElEKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0j
ZW5kaWYKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjbGVhclZpZGVvQ29u
dHJvbHNNYW5hZ2VyKCkKLXsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFtX2NvbnRyb2xz
TWFuYWdlckNvbnRleHRJZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcmVtb3ZlQ2xpZW50Rm9y
Q29udGV4dChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCk7Ci0gICAgbV9jb250cm9sc01hbmFn
ZXJDb250ZXh0SWQgPSAwOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpDbGVhclZpZGVvQ29udHJvbHNNYW5hZ2VyKCksIG1fcGFnZS0+
cGFnZUlEKCkpOwotI2VuZGlmCi19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yZTo6SFRNTFZp
ZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50LCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGUgdGFyZ2V0TW9kZSkKIHsKICNpZiBQTEFURk9STShNQUMpICYm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKQEAgLTM3NSwxNDkgKzMyNiwyMyBAQCB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVX
aXRob3V0QW5pbWF0aW9uKFdlYkNvcgogCiAjcHJhZ21hIG1hcmsgSW50ZXJmYWNlIHRvIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6cmVzZXRNZWRpYVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UmVzZXRN
ZWRpYVN0YXRlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotICAgIAotdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXREdXJhdGlvbih1aW50NjRfdCBjb250ZXh0SWQs
IGRvdWJsZSBkdXJhdGlvbikKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0RHVyYXRpb24oY29udGV4dElkLCBkdXJhdGlvbiks
IG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OnNldEN1cnJlbnRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBk
b3VibGUgYW5jaG9yVGltZSkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0Q3VycmVudFRpbWUoY29udGV4dElkLCBjdXJyZW50
VGltZSwgYW5jaG9yVGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OnNldEJ1ZmZlcmVkVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRv
dWJsZSBidWZmZXJlZFRpbWUpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEJ1ZmZlcmVkVGltZShjb250ZXh0SWQsIGJ1ZmZl
cmVkVGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OnNldFJhdGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZmxv
YXQgcGxheWJhY2tSYXRlKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRSYXRlKGNvbnRleHRJZCwgaXNQbGF5aW5nLCBwbGF5
YmFja1JhdGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpzZXRWaWRlb0RpbWVuc2lvbnModWludDY0X3QgY29udGV4dElkLCBib29sIGhh
c1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQogewogICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRWaWRlb0RpbWVuc2lv
bnMoY29udGV4dElkLCBoYXNWaWRlbywgd2lkdGgsIGhlaWdodCksIG1fcGFnZS0+cGFnZUlEKCkp
OwogfQotICAgIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRTZWVrYWJsZVJh
bmdlcyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmIHRpbWVS
YW5nZXMpCi17Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IHJhbmdlc1Zl
Y3RvcjsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGltZVJhbmdlcy5sZW5n
dGgoKTsgaSsrKSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZTsKLSAgICAg
ICAgZG91YmxlIHN0YXJ0ID0gdGltZVJhbmdlcy5zdGFydChpLCBleGNlcHRpb25Db2RlKTsKLSAg
ICAgICAgZG91YmxlIGVuZCA9IHRpbWVSYW5nZXMuZW5kKGksIGV4Y2VwdGlvbkNvZGUpOwotICAg
ICAgICByYW5nZXNWZWN0b3IuYXBwZW5kKHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4oc3RhcnQs
IGVuZCkpOwotICAgIH0KLQotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpTZXRTZWVrYWJsZVJhbmdlc1ZlY3Rvcihjb250ZXh0SWQsIFdU
Rk1vdmUocmFuZ2VzVmVjdG9yKSksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldENhblBsYXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBjb250
ZXh0SWQsIGJvb2wgdmFsdWUpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldENhblBsYXlGYXN0UmV2ZXJzZShjb250ZXh0SWQs
IHZhbHVlKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElk
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkK
LXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6U2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29udGV4dElkLCBvcHRpb25zLCBz
ZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBj
b250ZXh0SWQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3Rl
ZEluZGV4KQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpTZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnRleHRJZCwg
b3B0aW9ucywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldEV4dGVybmFsUGxheWJhY2sodWludDY0X3QgY29u
dGV4dElkLCBib29sIGVuYWJsZWQsIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZTo6RXh0ZXJu
YWxQbGF5YmFja1RhcmdldFR5cGUgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5h
bWUpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OlNldEV4dGVybmFsUGxheWJhY2tQcm9wZXJ0aWVzKGNvbnRleHRJZCwgZW5hYmxl
ZCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRhcmdldFR5cGUpLCBsb2NhbGl6ZWREZXZpY2VOYW1l
KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQodWludDY0X3QgY29udGV4dElkLCBi
b29sIGRpc2FibGVkKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpTZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChjb250
ZXh0SWQsIGRpc2FibGVkKSk7Ci19CiAKICNwcmFnbWEgbWFyayBNZXNzYWdlcyBmcm9tIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eToKIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBlbnN1cmVNb2RlbChjb250ZXh0
SWQpLnBsYXkoKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpwYXVzZSh1
aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5wYXVzZSgp
OwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnRvZ2dsZVBsYXlTdGF0ZSh1
aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS50b2dnbGVQ
bGF5U3RhdGUoKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpiZWdpblNj
cnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgZW5zdXJlTW9kZWwoY29udGV4dElk
KS5iZWdpblNjcnViYmluZygpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgZW5zdXJlTW9kZWwoY29u
dGV4dElkKS5lbmRTY3J1YmJpbmcoKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpzZWVrVG9UaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpCi17Ci0gICAg
ZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZWVrVG9UaW1lKHRpbWUpOwotfQotCi12b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZhc3RTZWVrKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91Ymxl
IHRpbWUpCi17Ci0gICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5mYXN0U2Vlayh0aW1lKTsKLX0K
LQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpiZWdpblNjYW5uaW5nRm9yd2FyZCh1
aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5iZWdpblNj
YW5uaW5nRm9yd2FyZCgpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmJl
Z2luU2Nhbm5pbmdCYWNrd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgZW5zdXJlTW9k
ZWwoY29udGV4dElkKS5iZWdpblNjYW5uaW5nQmFja3dhcmQoKTsKLX0KLQotdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjplbmRTY2FubmluZyh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0g
ICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5lbmRTY2FubmluZygpOwotfQotCiB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZSh1aW50NjRfdCBjb250
ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSBtb2RlKQogewogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkucmVxdWVzdEZ1bGxzY3JlZW5N
b2RlKG1vZGUpOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNlbGVjdEF1
ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKLXsKLSAg
ICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oaW5kZXgpOwot
fQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNlbGVjdExlZ2libGVNZWRpYU9w
dGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQotewotICAgIGVuc3VyZU1v
ZGVsKGNvbnRleHRJZCkuc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKGluZGV4KTsKLX0KLQogdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQodWludDY0
X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKIHsKICAgICBlbnN1cmVNb2RlbChjb250ZXh0
SWQpLmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKIH0KIAotI3By
YWdtYSBtYXJrIE1lc3NhZ2VzIGZyb20gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjoKLQogdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3Qg
Y29udGV4dElkKQogewogICAgIFBsYXRmb3JtTGF5ZXIqIHZpZGVvTGF5ZXIgPSBbQ0FMYXllciBs
YXllcl07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276436</attachid>
            <date>2016-04-14 15:12:38 -0700</date>
            <delta_ts>2016-04-15 10:13:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156564-20160414151250.patch</filename>
            <type>text/plain</type>
            <size>307946</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5Mjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFmZjVmNDQ4NDE3YTc1
ZjRkNTQ4ZjE4MjFhYTE2ZGFlODU1NGM3NC4uYTQ4NjZiMzE3YjI2OWZiMDA4MGYzZDYwY2NkZDZm
YTNjNGEwNzQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyOCBAQAorMjAxNi0wNC0xNCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyIGFuZCBQcm94eSB0byBiZSB1c2VkIGJ5IGF1ZGlvIGVsZW1lbnRzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NTY0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzOyB0aGlzIHJlZmFjdG9ycyBleGlzdGluZyBmdW5jdGlvbmFsaXR5IGludG8gbmV3IGNsYXNz
ZXMuCisKKyAgICAgICAgVGVhc2UgYXBhcnQgdGhlIHZhcmlvdXMgV2ViVmlkZW9GdWxsc2NyZWVu
e0ludGVyZmFjZSxNb2RlbH17QVZLaXQsTWFjLFZpZGVvRWxlbWVudH0gaW50byBuZXcKKyAgICAg
ICAgV2ViUGxheWJhY2tTZXNzaW9u4oCmIGNsYXNzZXMgZGVhbGluZyBleGNsdXNpdmVseSB3aXRo
IHBsYXliYWNrIHN0YXRlIGFuZCBjb21tYW5kcywgbGVhdmluZworICAgICAgICBmdWxsc2NyZWVu
IHN0YXRlIGFuZCBjb21tYW5kcyBpbiB0aGUgV2ViVmlkZW9GdWxsc2NyZWVu4oCmIGNsYXNzZXMu
IFNwZWNpZmljYWxseSwgY3JlYXRlIHRoZQorICAgICAgICBmb2xsb3dpbmcgbmV3IGNsYXNzZXM6
CisKKyAgICAgICAgLSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgKGNvcGllZCBmcm9tIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSkKKyAgICAgICAgLSBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudCAoY29waWVkIGZyb20gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRp
YUVsZW1lbnQpCisgICAgICAgIC0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwgKGNvcGllZCBmcm9t
IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICAtIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0IChjb3BpZWQgZnJvbSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dCkKKyAgICAgICAgLSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMgKGNvcGllZCBmcm9t
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYykKKworICAgICAgICBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UgYW5kIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsIG5vdyBpbmhlcml0IGZy
b20KKyAgICAgICAgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlIGFuZCBXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbCwgcmVzcGVjdGl2ZWx5LiBUaGUgY29uY3JldGUKKyAgICAgICAgV2ViVmlkZW9G
dWxsc2NyZWVu4oCmIHN1YmNsYXNzZXMgZWFjaCB0YWtlIHRoZWlyIHJlc3BlY3RpdmUgV2ViUGxh
eWJhY2tTZXNzaW9u4oCmIHN1YmNsYXNzZXMgYW5kCisgICAgICAgIGZ1bGZpbGwgdGhlaXIgV2Vi
UGxheWJhY2tTZXNzaW9uIGludGVyZmFjZXMgdGhyb3VnaCBjb21wb3NpdGlvbi4KKworICAgICAg
ICBBcyBwYXJ0IG9mIHRoaXMgYmlnIHRlYXNlLWFwYXJ0LCB0aGUgV2ViQVZQbGF5ZXJDb250cm9s
bGVyIGNsYXNzIG5lZWRzIHRvIGJlIGV4cG9zZWQgaW4gYQorICAgICAgICBoZWFkZXIgKGFzIGl0
J3MgYWNjZXNzZWQgYnkgdHdvIGRpZmZlcmVudCBjbGFzc2VzIG5vdyksIHNvIHRoYXQgY2xhc3Mg
aXMgbW92ZWQgaW50byBpdHMgb3duCisgICAgICAgIGltcGxlbWVudGF0aW9uIGFuZCBoZWFkZXIg
ZmlsZXMuCisKKyAgICAgICAgVGhlIG9uZSBjYXNlIHdoZXJlIGEgY2hhbmdlIGluIGEgV2ViUGxh
eWJhY2tTZXNzaW9u4oCmIGNsYXNzIG5lZWRzIHRvIGJlIHJlZmxlY3RlZCBpbiBhCisgICAgICAg
IFdlYlZpZGVvRnVsbHNjcmVlbuKApiBjbGFzcyBpcyBpbiBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdCwgd2hlcmUKKyAgICAgICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQgbmVlZHMgdG8gYmUgbm90aWZpZWQgd2hlbiBleHRlcm5hbCBwbGF5YmFjayBiZWNvbWVzIGRp
cy9lbi0KKyAgICAgICAgYWJsZWQsIHNvIGEgbmV3IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0Q2xpZW50IGludGVyZmFjZSBoYXMgYmVlbiBhZGRlZCB0byBhbGxvdyB0aGUKKyAgICAg
ICAgV2ViUGxheWJhY2tTZXNzaW9u4oCmIHRvIG5vdGlmeSB0aGUgV2ViVmlkZW9GdWxsc2NyZWVu
4oCmLgorCisgICAgICAgIFRoZSByZXNwb25zaWJpbGl0eSBmb3IgdGhlICJjb250cm9scyBtYW5h
Z2VyIiBoYXMgbW92ZWQgZnJvbSB0aGUgV2ViVmlkZW9GdWxsc2NyZWVu4oCmIGNsYXNzZXMKKyAg
ICAgICAgdG8gdGhlIFdlYlBsYXliYWNrU2Vzc2lvbuKApiBjbGFzc2VzLCBzbyB0aGUgQ2hyb21l
Q2xpZW50IGludGVyZmFjZSBmb3IgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcKKyAgICAgICAgdGhv
c2UgY29udHJvbHMgaXMgc2ltaWxhcmx5IHJlbmFtZWQgZnJvbSBzZXRVcFZpZGVvQ29udHJvbHNN
YW5hZ2VyKCkgdG8KKyAgICAgICAgc2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpLgorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZS5oLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlOjp+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjp+V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudDo6bWVkaWFFbGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbTogQWRkZWQuCisgICAgICAg
IChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6V2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxNZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQ6On5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCk6CisgICAgICAg
IChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2V0V2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50OjpzZXRNZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUpOgorICAgICAgICAoV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnBsYXkpOgorICAgICAgICAoV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnBhdXNlKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp0b2dnbGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmJlZ2luU2NydWJiaW5nKToKKyAgICAgICAg
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjplbmRTY3J1YmJpbmcpOgorICAg
ICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnNlZWtUb1RpbWUpOgor
ICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmZhc3RTZWVrKToK
KyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpiZWdpblNjYW5u
aW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50OjplbmRTY2FubmluZyk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbik6CisgICAgICAgIChX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0
aW9uKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRh
dGVMZWdpYmxlT3B0aW9ucyk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50OjpldmVudE5hbWVBbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50LmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQubW0uCisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVu
dDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6On5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZp
ZGVvRWxlbWVudCk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVu
dDo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OmhhbmRsZUV2ZW50KToKKyAgICAgICAg
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUp
OgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OnBsYXkpOgor
ICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OnBhdXNlKToKKyAg
ICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50Ojp0b2dnbGVQbGF5U3Rh
dGUpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OmJlZ2lu
U2NydWJiaW5nKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50
OjplbmRTY3J1YmJpbmcpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0Vs
ZW1lbnQ6OnNlZWtUb1RpbWUpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRl
b0VsZW1lbnQ6OmZhc3RTZWVrKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlk
ZW9FbGVtZW50OjpiZWdpblNjYW5uaW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKToKKyAgICAgICAg
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50OjplbmRTY2FubmluZyk6CisgICAg
ICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6c2VsZWN0QXVkaW9NZWRp
YU9wdGlvbik6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6
c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsVmlkZW9FbGVtZW50Ojp1cGRhdGVMZWdpYmxlT3B0aW9ucyk6CisgICAgICAgIChXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKToKKyAgICAg
ICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50OjpldmVudE5hbWVBbGwpOgor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmg6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6fldlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSk6CisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpwbGF5KToKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpwYXVzZSk6CisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6dG9nZ2xlUGxheVN0YXRlKToKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpiZWdpblNjcnViYmluZyk6Cisg
ICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZW5kU2NydWJiaW5n
KToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZWVrVG9U
aW1lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpmYXN0
U2Vlayk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6YmVn
aW5TY2FubmluZ0ZvcndhcmQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQ6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZW5kU2Nhbm5pbmcpOgorICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24pOgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNlbGVjdExlZ2libGVN
ZWRpYU9wdGlvbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6aGFuZGxlRXZlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0xheWVyRnJh
bWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpvYnNlcnZlZEV2ZW50TmFtZXMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmV2ZW50TmFtZUFs
bCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojppc1Zpc2libGUpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbTogQWRkZWQuCisgICAgICAgICgt
W1dlYkFWUGxheWVyQ29udHJvbGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVy
Q29udHJvbGxlciByZXNldFN0YXRlXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxl
ciBwbGF5ZXJdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGZvcndhcmRpbmdU
YXJnZXRGb3JTZWxlY3RvcjpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHBs
YXk6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBwYXVzZTpdKToKKyAgICAg
ICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHRvZ2dsZVBsYXliYWNrOl0pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckNvbnRyb2xsZXIgdG9nZ2xlUGxheWJhY2tFdmVuV2hlbkluQmFja2dyb3Vu
ZDpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGlzUGxheWluZ10pOgorICAg
ICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0UGxheWluZzpdKToKKyAgICAgICAgKCtb
V2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nUGxheWluZ10p
OgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgYmVnaW5TY3J1YmJpbmc6XSk6Cisg
ICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBlbmRTY3J1YmJpbmc6XSk6CisgICAgICAg
ICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBzZWVrVG9UaW1lOl0pOgorICAgICAgICAoLVtXZWJB
VlBsYXllckNvbnRyb2xsZXIgY3VycmVudFRpbWVXaXRoaW5FbmRUaW1lc10pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0Q3VycmVudFRpbWVXaXRoaW5FbmRUaW1lczpdKToK
KyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0
aW5nQ3VycmVudFRpbWVXaXRoaW5FbmRUaW1lc10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNv
bnRyb2xsZXIgaGFzTGl2ZVN0cmVhbWluZ0NvbnRlbnRdKToKKyAgICAgICAgKCtbV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nSGFzTGl2ZVN0cmVhbWluZ0Nv
bnRlbnRdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHNraXBCYWNrd2FyZFRo
aXJ0eVNlY29uZHM6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBnb3RvRW5k
T2ZTZWVrYWJsZVJhbmdlczpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGNh
blNjYW5Gb3J3YXJkXSk6CisgICAgICAgICgrW1dlYkFWUGxheWVyQ29udHJvbGxlciBrZXlQYXRo
c0ZvclZhbHVlc0FmZmVjdGluZ0NhblNjYW5Gb3J3YXJkXSk6CisgICAgICAgICgtW1dlYkFWUGxh
eWVyQ29udHJvbGxlciBiZWdpblNjYW5uaW5nRm9yd2FyZDpdKToKKyAgICAgICAgKC1bV2ViQVZQ
bGF5ZXJDb250cm9sbGVyIGVuZFNjYW5uaW5nRm9yd2FyZDpdKToKKyAgICAgICAgKC1bV2ViQVZQ
bGF5ZXJDb250cm9sbGVyIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZDpdKToKKyAgICAgICAgKC1bV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIGVuZFNjYW5uaW5nQmFja3dhcmQ6XSk6CisgICAgICAgICgtW1dl
YkFWUGxheWVyQ29udHJvbGxlciBjYW5TZWVrVG9CZWdpbm5pbmddKToKKyAgICAgICAgKCtbV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nQ2FuU2Vla1RvQmVn
aW5uaW5nXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBzZWVrVG9CZWdpbm5p
bmc6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBzZWVrQ2hhcHRlckJhY2t3
YXJkOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgY2FuU2Vla1RvRW5kXSk6
CisgICAgICAgICgrW1dlYkFWUGxheWVyQ29udHJvbGxlciBrZXlQYXRoc0ZvclZhbHVlc0FmZmVj
dGluZ0NhblNlZWtUb0VuZF0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2Vl
a1RvRW5kOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2Vla0NoYXB0ZXJG
b3J3YXJkOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgaGFzTWVkaWFTZWxl
Y3Rpb25PcHRpb25zXSk6CisgICAgICAgICgrW1dlYkFWUGxheWVyQ29udHJvbGxlciBrZXlQYXRo
c0ZvclZhbHVlc0FmZmVjdGluZ0hhc01lZGlhU2VsZWN0aW9uT3B0aW9uc10pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckNvbnRyb2xsZXIgaGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNdKToK
KyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0
aW5nSGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGhhc0xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNdKToKKyAgICAgICAg
KCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nSGFzTGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRy
b2xsZXIgY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25dKToKKyAgICAgICAgKC1bV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIHNldEN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOl0p
OgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgY3VycmVudExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0Q3Vy
cmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGlzUGxheWluZ09uRXh0ZXJuYWxTY3JlZW5dKToKKyAgICAgICAgKCtbV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nUGxheWluZ09uRXh0
ZXJuYWxTY3JlZW5dKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGlzUGljdHVy
ZUluUGljdHVyZUludGVycnVwdGVkXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxl
ciBzZXRQaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ6XSk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXRDbGllbnQ6On5XZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdENsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdDo6fldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpyZXNldE1lZGlh
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQ6OnNldFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXREdXJhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0Q3VycmVudFRpbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEJ1
ZmZlcmVkVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdDo6c2V0UmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdDo6c2V0U2Vla2FibGVSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjptZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRFeHRlcm5hbFBsYXliYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojpz
ZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6
OmludmFsaWRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgICgtW1dlYkFWUGxheWVy
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBmdWxsc2NyZWVuSW50ZXJmYWNlXSk6CisgICAgICAgICgt
W1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBzZXRGdWxsc2NyZWVuSW50ZXJmYWNl
Ol0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGZ1bGxzY3JlZW5JbnRlcmZhY2VdKToK
KyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOl0pOgor
ICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGxheW91dFN1YmxheWVyc10pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckxheWVyIHJlc29sdmVCb3VuZHNdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJMYXllciBzZXRWaWRlb0dyYXZpdHk6XSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCk6CisgICAgICAgIChX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6fldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0KToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpw
bGF5ZXJDb250cm9sbGVyKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpyZXNldE1lZGlhU3RhdGUpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OnNldER1cmF0aW9uKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6c2V0QnVmZmVyZWRUaW1lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpzZXRSYXRlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMpOgorICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFNlZWthYmxlUmFuZ2VzKToKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UpOgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRFeHRlcm5hbFBsYXliYWNrKToKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleHRlcm5hbFBsYXliYWNrRW5hYmxl
ZENoYW5nZWQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNl
dFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBGdWxsc2NyZWVuKToK
KyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNj
cmVlbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6bWF5QXV0
b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUpOgorICAgICAgICAoLVtXZWJBVlBs
YXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGxheWVyVmlld0NvbnRyb2xsZXJXaWxsU3RhcnRQ
aWN0dXJlSW5QaWN0dXJlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdD
b250cm9sbGVyRGVsZWdhdGUgcGxheWVyVmlld0NvbnRyb2xsZXJEaWRTdGFydFBpY3R1cmVJblBp
Y3R1cmU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZSBwbGF5ZXJWaWV3Q29udHJvbGxlckZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJl
OndpdGhFcnJvcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJv
bGxlckRlbGVnYXRlIHBsYXllclZpZXdDb250cm9sbGVyV2lsbFN0b3BQaWN0dXJlSW5QaWN0dXJl
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdh
dGUgcGxheWVyVmlld0NvbnRyb2xsZXJEaWRTdG9wUGljdHVyZUluUGljdHVyZTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKGNvbnZlcnRUb0V4aXRGdWxsU2NyZWVuUmVhc29uKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlIHBsYXllclZpZXdDb250
cm9sbGVyOnNob3VsZEV4aXRGdWxsU2NyZWVuV2l0aFJlYXNvbjpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlIHBsYXllclZpZXdDb250cm9s
bGVyOnJlc3RvcmVVc2VySW50ZXJmYWNlRm9yUGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgaW5p
dF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGRlYWxsb2NdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciB2aWRlb0dyYXZpdHldKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciB2aWRlb1JlY3RdKTogRGVsZXRlZC4KKyAg
ICAgICAgKCtbV2ViQVZQbGF5ZXJMYXllciBrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ1ZpZGVv
UmVjdF0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5
ZXJWaWV3X2xheWVyQ2xhc3MpOiBEZWxldGVkLgorICAgICAgICAoZ2V0V2ViQVZQaWN0dXJlSW5Q
aWN0dXJlUGxheWVyTGF5ZXJWaWV3Q2xhc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQVZQbGF5
ZXJMYXllclZpZXdfbGF5ZXJDbGFzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJBVlBsYXllckxh
eWVyVmlld19wbGF5ZXJDb250cm9sbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3NldFBsYXllckNvbnRyb2xsZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQVZQ
bGF5ZXJMYXllclZpZXdfdmlkZW9WaWV3KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3NldFZpZGVvVmlldyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJBVlBsYXllckxh
eWVyVmlld19zdGFydFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmll
dyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld19zdG9wUm91dGluZ1Zp
ZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkFWUGxheWVyTGF5ZXJWaWV3X3BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfZGVhbGxvYyk6IERlbGV0ZWQu
CisgICAgICAgIChnZXRXZWJBVlBsYXllckxheWVyVmlld0NsYXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFwcGxpY2F0aW9uRGlkQmVj
b21lQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjplbnRlckZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlblN0YW5kYXJkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVl
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
ZGlkU3RhcnRQaWN0dXJlSW5QaWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpmYWlsZWRUb1N0YXJ0UGljdHVyZUluUGljdHVyZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6d2lsbFN0
b3BQaWN0dXJlSW5QaWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpkaWRTdG9wUGljdHVyZUluUGljdHVyZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZUZvclBpY3R1cmVJ
blBpY3R1cmVTdG9wV2l0aENvbXBsZXRpb25IYW5kbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzaG91bGRFeGl0RnVsbHNjcmVlbldpdGhS
ZWFzb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OndhdGNoZG9nVGltZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0TW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y2xlYXJNb2RlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjLm1tLgorICAgICAgICAoLVtXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uTWFj
IGxvY2FsaXplZERpc3BsYXlOYW1lXSk6CisgICAgICAgICgtW1dlYkFWTWVkaWFTZWxlY3Rpb25P
cHRpb25NYWMgc2V0TG9jYWxpemVkRGlzcGxheU5hbWU6XSk6CisgICAgICAgICgtW1dlYlBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyIGluaXRXaXRoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
Ol0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciB0aW1pbmddKToKKyAg
ICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2V0VGltaW5nOl0pOgorICAgICAg
ICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBzZWVrYWJsZVRpbWVSYW5nZXNdKToKKyAg
ICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2Vz
Ol0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBpc1NlZWtpbmddKToK
KyAgICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2Vla1RvVGltZTp0b2xlcmFu
Y2VCZWZvcmU6dG9sZXJhbmNlQWZ0ZXI6XSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zXSk6CisgICAgICAgICgtW1dlYlBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOl0pOgor
ICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBjdXJyZW50QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbl0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBz
ZXRDdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAgKC1bV2ViUGxh
eWJhY2tDb250cm9sc01hbmFnZXIgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc10pOgorICAg
ICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb25zOl0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBjdXJy
ZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNr
Q29udHJvbHNNYW5hZ2VyIHNldEN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb246XSk6
CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIGNhbmNlbFRodW1ibmFpbEFu
ZEF1ZGlvQW1wbGl0dWRlU2FtcGxlR2VuZXJhdGlvbl0pOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjp+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6
c2V0V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXREdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0UmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldFNlZWthYmxl
UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldEF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYzo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmludmFsaWRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjplbnN1cmVD
b250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjOjpwbGF5QmFja0NvbnRyb2xzTWFuYWdlcik6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM6OnNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRDdXJyZW50VGltZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFJhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRTZWVr
YWJsZVJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VNYWM6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM6OmVuc3VyZUNvbnRyb2xzTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWM6On5XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
OjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldE1vZGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpj
bGVhck1vZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjOjpzZXR1cEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjplbnRlckZ1bGxzY3JlZW4pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpl
eGl0RnVsbHNjcmVlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWM6OmV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM6OmNsZWFudXBGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6aW52YWxpZGF0ZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnByZXBhcmVkVG9SZXR1
cm5Ub0lubGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OnNldFZpZGVvRGltZW5zaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUpOiBEZWxldGVkLgorCiAyMDE2LTA0LTEx
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRE9NVG9rZW5MaXN0
LmNvbnRhaW5zKCkgc2hvdWxkIG5vdCB0aHJvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM3Nzk3ZDUxZTMzNTFl
MDc4YWQzYzM0NmY1YTFkNjJmYTU4ZTdjZTEuLjVmMWI0ZmZjOWNlMjQ1ZjRjNDgyMmZhOWQ5Yzli
YWYyMzFmYTU1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMTcgQEAKKzIwMTYtMDQtMTQgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlciBhbmQgUHJveHkgdG8gYmUgdXNlZCBieSBhdWRpbyBlbGVtZW50cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjU2NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYXNlIGFw
YXJ0IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgYW5kIOKAplByb3h5IGludG8gV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlciBhbmQg4oCmUHJveHkKKyAgICAgICAgY2xhc3NlcyBkZWFsaW5nIGV4
Y2x1c2l2ZWx5IHdpdGggcGxheWJhY2sgc3RhdGUgYW5kIGNvbW1hbmRzLCBsZWF2aW5nIGZ1bGxz
Y3JlZW4gc3RhdGUgYW5kCisgICAgICAgIGNvbW1hbmRzIGluIHRoZSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2Vy4oCmIGNsYXNzZXMuCisKKyAgICAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ciBhbmQg4oCmUHJveHkgd2lsbCBub3cgcmVxdWlyZSBhbiBhc3NvY2lhdGVkCisgICAgICAgIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIgYW5kIOKAplByb3h5IGNsYXNzLiBUaGUgV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlciBjbGFzc2VzIGNhbiBiZQorICAgICAgICB1c2VkIHNlcGFyYXRlbHkg
YW5kIHdpdGhvdXQgdGhlIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgY2xhc3Nlcy4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5QXV0b21hdGljYWxseVNo
b3dWaWRlb1BpY3R1cmVJblBpY3R1cmVdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW06IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnBsYXkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnBhdXNlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0Ojp0b2dnbGVQbGF5U3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OmJl
Z2luU2NydWJiaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxD
b250ZXh0OjplbmRTY3J1YmJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbENvbnRleHQ6OnNlZWtUb1RpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbENvbnRleHQ6OmZhc3RTZWVrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpiZWdpblNjYW5uaW5nRm9yd2FyZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6YmVnaW5TY2FubmluZ0Jh
Y2t3YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0
OjplbmRTY2FubmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q29udGV4dDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OldlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6fldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y3JlYXRl
TW9kZWxBbmRJbnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OmVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjplbnN1cmVNb2RlbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5zdXJlSW50ZXJmYWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjphZGRDbGll
bnRGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpyZW1vdmVDbGllbnRGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0
aElEKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpj
bGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZXNldE1lZGlhU3RhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEN1cnJlbnRUaW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRCdWZmZXJlZFRp
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNl
dFNlZWthYmxlUmFuZ2VzVmVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0
V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldER1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRSYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpwbGF5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpwYXVzZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6dG9nZ2xlUGxheVN0YXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjcnVi
YmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
ZW5kU2NydWJiaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpzZWVrVG9UaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpmYXN0U2Vlayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0ZvcndhcmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5kU2Nh
bm5pbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y29udHJvbHNNYW5hZ2VySW50
ZXJmYWNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6fldlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dDo6cGxheSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dDo6cGF1c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6YmVnaW5TY3J1YmJpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmVuZFNjcnViYmluZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2Vla1Rv
VGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6
ZmFzdFNlZWspOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQ6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxDb250ZXh0OjpiZWdpblNjYW5uaW5nQmFja3dhcmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmVuZFNjYW5uaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpzZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250
ZXh0OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVh
dGVNb2RlbEFuZEludGVyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6c2V0dXBGdWxsc2NyZWVuV2l0aElEKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0RpbWVuc2lv
bnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmVudGVyRnVsbHNjcmVlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmV4aXRGdWxsc2Ny
ZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y2xlYW51cEZ1bGxzY3JlZW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnByZXBh
cmVkVG9SZXR1cm5Ub0lubGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRTZXR1
cEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4p
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmRpZENsZWFudXBGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0xheWVyRnJhbWUpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhhc0FjdGl2
ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojppc1BsYXlpbmdNZWRpYURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c3VwcG9ydHNWaWRlb0Z1
bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnNldFVwUGxheWJh
Y2tDb250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNs
ZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ2hyb21lQ2xpZW50OjpleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpleGl0VmlkZW9GdWxsc2NyZWVu
VG9Nb2RlV2l0aG91dEFuaW1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4
dDo6aW52YWxpZGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpuZXh0Q29udGV4dElkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQ29udGV4dDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6On5XZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6cmVzZXRNZWRpYVN0YXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0RHVyYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRD
dXJyZW50VGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQ6OnNldEJ1ZmZlcmVkVGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldFJhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRTZWVrYWJsZVJhbmdlcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldENhblBs
YXlGYXN0UmV2ZXJzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUNvbnRleHQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0TGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUNvbnRleHQ6OnNldEV4dGVybmFsUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Oldl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjp+V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5zdXJlTW9kZWxB
bmRJbnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjplbnN1cmVNb2RlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OmVuc3VyZUludGVyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OnJlbW92ZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjphZGRDbGllbnRGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlQ2xpZW50Rm9yQ29udGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFVwUGxheWJhY2tDb250cm9s
c01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpj
bGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6Y29udGV4dElkRm9yTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVzZXRNZWRpYVN0YXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0RHVyYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50VGltZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldEJ1ZmZlcmVk
VGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFJh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRTZWVr
YWJsZVJhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNl
dEV4dGVybmFsUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnBsYXkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpwYXVzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJlZ2luU2NydWJiaW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5kU2NydWJiaW5nKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2Vla1RvVGltZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmZhc3RTZWVrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YmVnaW5TY2FubmluZ0ZvcndhcmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpiZWdpblNjYW5u
aW5nQmFja3dhcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjplbmRTY2FubmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6
OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpyZXNldE1lZGlhU3RhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXREdXJh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRl
eHQ6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQ29udGV4dDo6c2V0QnVmZmVyZWRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0UmF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFNlZWthYmxlUmFuZ2Vz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6
c2V0Q2FuUGxheUZhc3RSZXZlcnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRMZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0RXh0ZXJuYWxQbGF5YmFjayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFdpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5G
b3JWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VDb250ZXh0OjpzZXRWaWRlb0RpbWVuc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp+V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRB
bmltYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpzZXRWaWRlb0RpbWVuc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVu
TW9kZUNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVs
bHNjcmVlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXllckdyYXZpdHlFbnVtKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZnVsbHNj
cmVlbk1heVJldHVyblRvSW5saW5lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKTogRGVsZXRlZC4K
KwogMjAxNi0wNC0xMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5OTI5MC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NWY2Mjg2YjYz
NDlkMmY5NDc1OWUyYTNiNGUwMzcwMmUyOTdiMDBjLi45OWU4Y2FiMDZjNmQ2NjE2YzViNTQwN2I3
OWY2MmE0YzYzYzZhMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MDg2LDYgKzYwODYsMTUgQEAKIAkJQ0RBMDdGQkUxOEUw
QTE2QTAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTA3RkJDMThFMEExNkEwMDQ2OTlGQSAvKiBT
eXN0ZW1TbGVlcExpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQ0RBMDdGQzExOEUwQTIyQjAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlz
dGVuZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREEwN0ZCRjE4RTBBMjJCMDA0Njk5RkEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1hYy5tbSAq
LzsgfTsKIAkJQ0RBMDdGQzIxOEUwQTIyQjAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXJN
YWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTA3
RkMwMThFMEEyMkIwMDQ2OTlGQSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLmggKi87IH07CisJ
CUNEQTI5QTA5MUNCRDk5RjQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTA4
MUNCRDk5RjQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREEyOUEwQjFDQkQ5
QTc0MDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTBBMUNCRDlBNzQwMDkwMUNDRiAv
KiBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUNEQTI5QTBFMUNCRDlDRkUwMDkwMUNDRiAvKiBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTBDMUNCRDlDRkUwMDkwMUNDRiAvKiBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSAqLzsgfTsKKwkJQ0RBMjlBMEYxQ0JEOUNG
RTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEyOUEwRDFDQkQ5Q0ZF
MDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREEyOUExNjFDQkRB
NTZDMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMTQxQ0JEQTU2QzAw
OTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbSAqLzsgfTsKKwkJQ0RB
MjlBMTcxQ0JEQTU2QzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMTUx
Q0JEQTU2QzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEQTI5QTMwMUNC
Rjc0RDQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTJGMUNCRjcz
RkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSAqLzsgfTsK
KwkJQ0RBMjlBMzExQ0JGNzREQTAwOTAxQ0NGIC8qIFdlYkFWUGxheWVyQ29udHJvbGxlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTJEMUNC
RjczRkMwMDkwMUNDRiAvKiBXZWJBVlBsYXllckNvbnRyb2xsZXIubW0gKi87IH07CisJCUNEQTI5
QTMyMUNDMDFBOTUwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMkUx
Q0JGNzNGQzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RBNzk4MjQx
NzBBMjU4MzAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE3OTgyMzE3MEEyNTgzMDBENDVDNTUgLyogQXVk
aW9TZXNzaW9uLmNwcCAqLzsgfTsKIAkJQ0RBNzk4MjcxNzBBMjc5MTAwRDQ1QzU1IC8qIEF1ZGlv
U2Vzc2lvbklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQTc5ODI1MTcwQTI3OTAwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25JT1MubW0gKi87IH07
CiAJCUNEQTc5ODJBMTcwQTNEMDAwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTc5ODIxMTcwQTIyREMwMEQ0
NUM1NSAvKiBBdWRpb1Nlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTQwNTUsNiArMTQwNjQsMTYgQEAKIAkJQ0RBMDdGQkMxOEUwQTE2
QTAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3lzdGVtU2xlZXBMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREEwN0ZCRjE4RTBBMjJCMDA0Njk5RkEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5c3RlbVNsZWVw
TGlzdGVuZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQTA3RkMwMThF
MEEyMkIwMDQ2OTlGQSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbVNsZWVwTGlzdGVuZXJNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMDgxQ0JEOTlGNDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBMjlBMEExQ0JEOUE3NDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTI5QTBDMUNCRDlDRkUwMDkwMUNDRiAv
KiBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREEyOUEwRDFDQkQ5Q0ZFMDA5
MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMTQxQ0JEQTU2QzAwOTAx
Q0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMTUxQ0JEQTU2QzAwOTAxQ0NG
IC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMkMxQ0JGNzNGQzAwOTAxQ0NGIC8qIFdlYkFWUGxh
eWVyQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBVlBs
YXllckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMkQx
Q0JGNzNGQzAwOTAxQ0NGIC8qIFdlYkFWUGxheWVyQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkFWUGxheWVyQ29udHJvbGxlci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMkUxQ0JGNzNGQzAwOTAxQ0NGIC8qIFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQTI5QTJGMUNCRjczRkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREE3OTgyMTE3MEEyMkRDMDBENDVDNTUgLyogQXVkaW9TZXNz
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDREE3OTgyMzE3MEEyNTgzMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQTc5ODI1MTcwQTI3OTAwMEQ0NUM1NSAvKiBB
dWRpb1Nlc3Npb25JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBBdWRpb1Nlc3Npb25JT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzg3
Myw2ICsxNzg5Miw4IEBACiAJCQkJQkU4NTYwNTEwNzAxRjkxMTAwMjM5NzY5IC8qIFdlYkNvcmVW
aWV3Lm0gKi8sCiAJCQkJRTFBMzE2MkIxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRl
ZFN0cmluZ0V4dHJhcy5oICovLAogCQkJCUUxQTMxNjJDMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJO
U0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0gKi8sCisJCQkJQ0RBMjlBMTUxQ0JEQTU2QzAwOTAx
Q0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oICovLAorCQkJCUNEQTI5QTE0
MUNCREE1NkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gKi8s
CiAJCQkJQ0Q4MjAzMDYxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIuaCAqLywKIAkJCQlDRDgyMDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlci5tbSAqLywKIAkJCQlDRDgyMDMwODEzOTVBQjZBMDBGOTU2QzYgLyog
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oICovLApAQCAtMTk5NTcsMTEg
KzE5OTc4LDE1IEBACiAJCQkJNDRDOTkxOUUwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLm1t
ICovLAogCQkJCTFGNzJCRjA4MTg3RkQ0MjcwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9y
eUhhbmRsZXJJT1MuY3BwICovLAogCQkJCTFGNzJCRjA5MTg3RkQ0MjcwMDA5QkNCMyAvKiBUaWxl
Q29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCAqLywKKwkJCQlDREEyOUEyQzFDQkY3M0ZDMDA5
MDFDQ0YgLyogV2ViQVZQbGF5ZXJDb250cm9sbGVyLmggKi8sCisJCQkJQ0RBMjlBMkQxQ0JGNzNG
QzAwOTAxQ0NGIC8qIFdlYkFWUGxheWVyQ29udHJvbGxlci5tbSAqLywKIAkJCQkzMTQwMzc5NzEy
NEJFQTdGMDBBRjQwRTQgLyogV2ViQ29yZU1vdGlvbk1hbmFnZXIuaCAqLywKIAkJCQkzMTQwMzc5
ODEyNEJFQTdGMDBBRjQwRTQgLyogV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0gKi8sCiAJCQkJRTQ1
MzkwMzgwRUFGRDYzNzAwMzY5NUM4IC8qIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0gKi8s
CiAJCQkJRkUwRDg0RTgxMDQ4NDM0ODAwMUExNzlFIC8qIFdlYkV2ZW50LmggKi8sCiAJCQkJRkUw
RDg0RUExMDQ4NDM2RTAwMUExNzlFIC8qIFdlYkV2ZW50Lm1tICovLAorCQkJCUNEQTI5QTJFMUNC
RjczRkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oICovLAor
CQkJCUNEQTI5QTJGMUNCRjczRkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdC5tbSAqLywKIAkJCQlBNTAyQzVERDEzMDQ5QjM1MDBGQzdENTMgLyogV2ViU2FmZUdD
QWN0aXZpdHlDYWxsYmFja0lPUy5oICovLAogCQkJCUMyQzRDQjFEMTYxQTEzMTIwMEQyMTREQSAv
KiBXZWJTYWZlSW5jcmVtZW50YWxTd2VlcGVySU9TLmggKi8sCiAJCQkJM0Y0MkIzMUIxODgxMTkx
QjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oICovLApAQCAt
MjAwMTAsNiArMjAwMzUsMTAgQEAKIAkJCQlDREM5NzlGMzFDNDk4QzA5MDBEQjUwRDQgLyogV2Vi
Q29yZU5TRXJyb3JFeHRyYXMuaCAqLywKIAkJCQlDREM5NzlGMjFDNDk4QzA5MDBEQjUwRDQgLyog
V2ViQ29yZU5TRXJyb3JFeHRyYXMubW0gKi8sCiAJCQkJMUE3RTE5NDQxQzU4NjNCRTAwQ0NEREYz
IC8qIFdlYktpdEFkZGl0aW9ucy5tbSAqLywKKwkJCQlDREEyOUEwODFDQkQ5OUY0MDA5MDFDQ0Yg
LyogV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmggKi8sCisJCQkJQ0RBMjlBMEExQ0JEOUE3
NDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmggKi8sCisJCQkJQ0RBMjlBMEMx
Q0JEOUNGRTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1t
ICovLAorCQkJCUNEQTI5QTBEMUNCRDlDRkUwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudC5oICovLAogCQkJCTUyQjBENEJGMUM1N0ZENjYwMDc3Q0U1MyAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oICovLAogCQkJCTUyMTMxRTU4MUM0RjE1
MjIwMDMzRjgwMiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuaCAqLywKIAkJCQk1MkQ1
QTFBNDFDNTc0ODg5MDBERTM0QTMgLyogV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCAqLywKQEAg
LTI1MjI4LDYgKzI1MjU3LDcgQEAKIAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyogQ29s
b3JDaG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCNDEyNTFGMTJEMDAz
RUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUVERTNBNTAwMEM3
QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBMjlBMEYx
Q0JEOUNGRTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzgyREY1ODEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNERDQ1NEUxMjM2Qzk1QzAwOUE3OTg1IC8qIENvbHVt
bkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTQzRURENjdGMUI0ODVEQkYwMDY0MEU3NSAvKiBD
b21iaW5lZEZpbHRlcnNBbHBoYWJldC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTM4Miw2ICsyNTQx
Miw3IEBACiAJCQkJQTgwRTZDRkEwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0ltYWdlVmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0Y2MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbXBvcnRS
dWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkQwMTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NT
SW5oZXJpdGVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQTI5QTA5MUNCRDk5RjQwMDkw
MUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4MEU2RDA4MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbml0aWFsVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTMxMjg4RTczMEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZVJ1bGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTMxMjg4RTc1MEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFt
ZXNSdWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NDk5LDYgKzI3NTMwLDcgQEAKIAkJCQk0QTBG
RkFBNjFBQUY1RUY2MDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzQxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdDMUMwRTUxQkZCNjBFRDAw
QkQyMjU2IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQ0RBMjlBMEIxQ0JEOUE3NDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQzNjhFODBDMjI2RTMyMDA1RUZCNUYg
LyogUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NTgxNzVENDE0QzAwQzIxRUM4IC8q
IFJlY3RhbmdsZVNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5ODMxQUU0QTE1NDIyNUM5MDBG
RTI2NDQgLyogUmVmZXJyZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovLApAQCAtMjgyNjgsNiArMjgz
MDAsNyBAQAogCQkJCUIyQzNEQTQwMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWNVc2VyRGVm
aW5lZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNDIwRDAwNkMxRDAwRUY2RjI2IC8qIFRl
eHRDb2RlY1VURjE2LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzQzQ0I4MjEyRjI1RTUxMDAzM0M1
RUUgLyogVGV4dENvZGVjVVRGOC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBMjlBMTcxQ0JEQTU2
QzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQyQjk3Q0ExMzEzODk0MzAwOEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTgyREUzMjUxQzMwQzg1NDAwQkUwMkE4IC8qIFRl
eHREZWNvcmF0aW9uUGFpbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzg0QjQxMjM3MTE4
MDAwMEM2MTYxIC8qIFRleHREb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODU0NSw2ICsy
ODU3OCw3IEBACiAJCQkJMUNBRjM0ODEwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBRjM0ODMwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNj
cmlwdE9iamVjdFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDFCMEQ3RTJCODIw
MDdDMzk4MyAvKiBXZWJTY3JpcHRPYmplY3RQcm90b2NvbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
Q0RBMjlBMzIxQ0MwMUE5NTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQxQjE0RkEwOUQ1MDA3NDU3QUUgLyogV2Vi
U29ja2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQxRTE0RkEwOUQ1MDA3NDU3QUUgLyog
V2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMUYxNEZBMDlENTAw
NzQ1N0FFIC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjg5
NjksNiArMjkwMDMsNyBAQAogCQkJCTMxQTc5NUM4MTg4OEJDQjUwMDM4MkY5MCAvKiBBTkdMRUlu
c3RhbmNlZEFycmF5cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTA3MDdFNjEyMTlDMDQzMDBE
OTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFOTEy
QUEwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlD
REEyOUEwRTFDQkQ5Q0ZFMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExMTBFNkUxREE3MDBCRjYwODggLyog
QW5pbWF0aW9uQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExMzBFNkUxREE3MDBC
RjYwODggLyogQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTk4
NDgwMjFBMUQ4MTgxMDBBMTMzMTggLyogQW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0zMTA0Myw2ICszMTA3OCw3IEBACiAJCQkJRkU5RTg5RkIxNkUyREMwNTAwQTkwOEY4IC8q
IE9yaWdpbkxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1ODFGQUUxNTIwRjkxRjAwM0E3
QTc1IC8qIE9zY2lsbGF0b3JOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMEQ1NzM2MEE1
Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNE
QTI5QTMwMUNCRjc0RDQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTY1RkVBODY5MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzdFNzc2MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdl
Q2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1RTVCNjExQTE1RjE1NjAwMEM2MDlFIC8q
IFBhZ2VDb25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE2NjEsNiArMzE2OTcs
NyBAQAogCQkJCUIyMjI3QTE0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGb250RmFjZUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMTcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0Zv
bnRGYWNlRm9ybWF0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0ExQTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRm9udEZhY2VOYW1lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDREEyOUExNjFDQkRBNTZDMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMUQwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0ZvbnRGYWNlU3JjRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0EyMDBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyMjI3QTIzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxNzk1LDYgKzMxODMyLDcgQEAKIAkJCQk5NzU5RTkz
RjE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
NjEwM0IwMUNBREJBN0EwMDE2QjRDNyAvKiBJREJWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NzU5RTk0MjE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUNEQTI5QTMxMUNCRjc0REEwMDkwMUNDRiAvKiBXZWJBVlBsYXllckNvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzFBOUVDMjE2OEZCQzQzMDAyNjI5RjkgLyogVGV4
dFRyYWNrQ3VlR2VuZXJpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzU5RTk0NTE0RUYxQ0Y4
MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzY5
NzA4NjE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGE3Mjc3OWZiYjhl
Nzg4ODNmMzI2ODk5MmM2YjY2ZjEzYWEzNjQzNzIuLjgzMTdmZWEyZDE1NTljNjZiNjFlN2ZjYTA3
NmFkNDFjYTFhYzYwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtNDgyMSw3ICs0ODIxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5
U3RhdGUoKQogICAgIGlmIChzaG91bGRCZVBsYXlpbmcpIHsKICAgICAgICAgaWYgKGRvY3VtZW50
KCkucGFnZSgpICYmIG1fbWVkaWFTZXNzaW9uLT5jYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyKCp0
aGlzKSkgewogICAgICAgICAgICAgSFRNTFZpZGVvRWxlbWVudCYgYXNWaWRlbyA9IGRvd25jYXN0
PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKTsKLSAgICAgICAgICAgIGRvY3VtZW50KCkucGFnZSgp
LT5jaHJvbWUoKS5jbGllbnQoKS5zZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyKGFzVmlkZW8pOwor
ICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnNldFVwUGxh
eWJhY2tDb250cm9sc01hbmFnZXIoYXNWaWRlbyk7CiAgICAgICAgIH0KIAogICAgICAgICBzZXRE
aXNwbGF5TW9kZShWaWRlbyk7CkBAIC00ODU3LDcgKzQ4NTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSgpCiAgICAgICAgIHNldFBsYXlpbmcodHJ1ZSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgaWYgKGVuZGVkUGxheWJhY2soKSAmJiBkb2N1bWVudCgpLnBhZ2Uo
KSAmJiBpczxIVE1MVmlkZW9FbGVtZW50PigqdGhpcykpCi0gICAgICAgICAgICBkb2N1bWVudCgp
LnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuY2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpOwor
ICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmNsZWFyUGxh
eWJhY2tDb250cm9sc01hbmFnZXIoKnRoaXMpOwogCiAgICAgICAgIGlmICghcGxheWVyUGF1c2Vk
KQogICAgICAgICAgICAgbV9wbGF5ZXItPnBhdXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAppbmRleCBjMDI3Mzg4YWJlZmI0MWZlOTk2ZWRhODJhY2E2M2RhNzQyZGQxMGZhLi43ZDk2
ODA5YzU1ZTgxZjc0YWEwOGMwMWE5YjNmMTlkY2Y4NjZmYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgKQEAgLTM0MSw4ICszNDEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSkgeyByZXR1cm4gZmFsc2U7IH0KICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmly
dHVhbCB2b2lkIGVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KEhUTUxWaWRlb0Vs
ZW1lbnQmLCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBzZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyKEhUTUxWaWRlb0VsZW1l
bnQmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKEhUTUxNZWRp
YUVsZW1lbnQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJQbGF5YmFja0NvbnRyb2xzTWFu
YWdlcihIVE1MTWVkaWFFbGVtZW50JikgeyB9CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZXhp
dFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0
QW5pbWF0aW9uKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmLCBIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgLyp0YXJnZXRNb2RlKi8pIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44ZmZhMGNhZGQwODY5Y2YxNGVjNDAyMmI1YjAyY2EwZGJkZjhm
ODlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlX2gKKyNkZWZpbmUgV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlX2gKKworI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKworI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgVGltZVJhbmdlczsKKworY2xhc3MgV2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICBlbnVtIEV4dGVybmFsUGxheWJhY2tUYXJnZXRU
eXBlIHsgVGFyZ2V0VHlwZU5vbmUsIFRhcmdldFR5cGVBaXJQbGF5LCBUYXJnZXRUeXBlVFZPdXQg
fTsKKworICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSgpIHsgfTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXREdXJhdGlvbihkb3VibGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUo
ZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFJh
dGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+
JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5n
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1Rhcmdl
dFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgPSAwOworfTsKKwor
fQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdmOTRmMGJkNTFmNGI0YjA5NzUyODNiZDA2Yjk4ZGZkMTk2NGRkN2EKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25N
b2RlbC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsX2gKKyNkZWZpbmUgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxfaAorCisjaWYg
UExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFU
SU9OX01PREUpKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bCgpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxheSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cGF1c2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVu
ZFNjcnViYmluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2Vla1RvVGltZShkb3VibGUgdGlt
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmYXN0U2Vlayhkb3VibGUgdGltZSkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBiZWdpblNjYW5uaW5nRm9yd2FyZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRTY2Fu
bmluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50
NjRfdCBpbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRp
b24odWludDY0X3QgaW5kZXgpID0gMDsKK307CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMjViNzEwZDFmMWNkMTVmMDJjYzQ4NjEyZWYyNzYxZDEwNzJjYzJmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudF9oCisjZGVmaW5lIFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50X2gKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKKyNpbmNsdWRlICJF
dmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudEVudW1zLmgiCisjaW5j
bHVkZSAiV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQXVkaW9UcmFjazsKK2NsYXNzIEhUTUxNZWRpYUVs
ZW1lbnQ7CitjbGFzcyBUZXh0VHJhY2s7CitjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2U7CisKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50IDogcHVibGlj
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLCBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gY3Jl
YXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50KCkpOworICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZSopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWVkaWFFbGVtZW50
KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBIVE1MTWVkaWFFbGVtZW50
KiBtZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX21lZGlhRWxlbWVudC5nZXQoKTsgfQor
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0
ZUZvckV2ZW50TmFtZShjb25zdCBXVEY6OkF0b21pY1N0cmluZyYpOworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiByaHMpIG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzOyB9CisKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHBsYXkoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHBhdXNlKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVQbGF5U3Rh
dGUoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luU2NydWJiaW5nKCkg
b3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmRTY3J1YmJpbmcoKSBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlZWtUb1RpbWUoZG91YmxlIHRpbWUpIG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmFzdFNlZWsoZG91YmxlIHRpbWUpIG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYmVnaW5TY2FubmluZ0ZvcndhcmQoKSBvdmVy
cmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpIG92
ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5kU2Nhbm5pbmcoKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3Qg
aW5kZXgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2VsZWN0TGVnaWJsZU1l
ZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKKworcHJvdGVjdGVkOgorICAgIFdF
QkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50KCk7CisKK3By
aXZhdGU6CisgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxXVEY6OkF0b21pY1N0cmluZz4mIG9ic2Vy
dmVkRXZlbnROYW1lcygpOworICAgIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBldmVudE5hbWVB
bGwoKTsKKworICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBtX21lZGlhRWxlbWVudDsKKyAg
ICBib29sIG1faXNMaXN0ZW5pbmcgeyBmYWxzZSB9OworICAgIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZSogbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgeyBudWxscHRyIH07CisgICAgVmVj
dG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBtX2xlZ2libGVUcmFja3NGb3JNZW51OworICAgIFZlY3Rv
cjxSZWZQdHI8QXVkaW9UcmFjaz4+IG1fYXVkaW9UcmFja3NGb3JNZW51OworICAgIAorICAgIHZv
aWQgdXBkYXRlTGVnaWJsZU9wdGlvbnMoKTsKK307CisgICAgCit9CisKKyNlbmRpZgorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMw
OTVjNzQ5NGNkM2JlMjQ1NjU0MzAwNmRhNjhhNzkwZDJjN2M0NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50Lm1tCkBAIC0wLDAgKzEsMzM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIgor
CisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJF
U0VOVEFUSU9OX01PREUpKQorCisjaW1wb3J0ICJET01FdmVudEludGVybmFsLmgiCisjaW1wb3J0
ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJNZWRpYUNvbnRyb2xzSG9zdC5oIgorI2ltcG9ydCAiV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmgiCisjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVBbmlt
YXRpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRXZlbnRMaXN0ZW5lci5oPgorI2ltcG9ydCA8
V2ViQ29yZS9FdmVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9FdmVudExpc3RlbmVyLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0V2ZW50TmFtZXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTEVsZW1lbnQu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BhZ2VHcm91cC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0VHJhY2tMaXN0Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL1RpbWVSYW5nZXMuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OldlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50KCkKKyAgICA6IEV2ZW50TGlzdGVuZXIoRXZlbnRMaXN0ZW5lcjo6
Q1BQRXZlbnRMaXN0ZW5lclR5cGUpCit7Cit9CisKK1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50Ojp+V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQoKQoreworfQor
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpzZXRXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2UoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKiBpbnRlcmZhY2Up
Cit7CisgICAgaWYgKGludGVyZmFjZSA9PSBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgPSBpbnRlcmZh
Y2U7CisKKyAgICBpZiAobV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpIHsKKyAgICAgICAgbV9w
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnJlc2V0TWVkaWFTdGF0ZSgpOworICAgICAgICBpZiAo
bV9tZWRpYUVsZW1lbnQpCisgICAgICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQobV9tZWRpYUVsZW1lbnQtPm1lZGlhU2Vz
c2lvbigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX21lZGlhRWxlbWVudCkpOwor
ICAgIH0KK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2V0
TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK3sKKyAgICBpZiAo
bV9tZWRpYUVsZW1lbnQgPT0gbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAobV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCisgICAgICAgIG1fcGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlLT5yZXNldE1lZGlhU3RhdGUoKTsKKworICAgIGlmIChtX21lZGlhRWxlbWVudCAm
JiBtX2lzTGlzdGVuaW5nKSB7CisgICAgICAgIGZvciAoYXV0byYgZXZlbnROYW1lIDogb2JzZXJ2
ZWRFdmVudE5hbWVzKCkpCisgICAgICAgICAgICBtX21lZGlhRWxlbWVudC0+cmVtb3ZlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWUsIHRoaXMsIGZhbHNlKTsKKyAgICB9CisgICAgbV9pc0xpc3Rlbmlu
ZyA9IGZhbHNlOworCisgICAgbV9tZWRpYUVsZW1lbnQgPSBtZWRpYUVsZW1lbnQ7CisKKyAgICBp
ZiAoIW1fbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIGV2
ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1lcygpKQorICAgICAgICBtX21lZGlhRWxlbWVudC0+
YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRoaXMsIGZhbHNlKTsKKyAgICBtX2lzTGlzdGVu
aW5nID0gdHJ1ZTsKKworICAgIHVwZGF0ZUZvckV2ZW50TmFtZShldmVudE5hbWVBbGwoKSk7CisK
KyAgICBpZiAobV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCisgICAgICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChtX21lZGlh
RWxlbWVudC0+bWVkaWFTZXNzaW9uKCkud2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKm1f
bWVkaWFFbGVtZW50KSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQ6OmhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJD
b3JlOjpFdmVudCogZXZlbnQpCit7CisgICAgdXBkYXRlRm9yRXZlbnROYW1lKGV2ZW50LT50eXBl
KCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRh
dGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKK3sKKyAg
ICBpZiAoIW1fbWVkaWFFbGVtZW50IHx8ICFtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYm9vbCBhbGwgPSBldmVudE5hbWUgPT0gZXZlbnROYW1lQWxs
KCk7CisKKyAgICBpZiAoYWxsCisgICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCku
ZHVyYXRpb25jaGFuZ2VFdmVudCkgeworICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS0+c2V0RHVyYXRpb24obV9tZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCkpOworICAgICAgICAvLyBU
aGVzZSBpcyBubyBzdGFuZGFyZCBldmVudCBmb3IgbWluRmFzdFJldmVyc2VSYXRlQ2hhbmdlOyBk
dXJhdGlvbiBjaGFuZ2UgaXMgYSByZWFzb25hYmxlIHByb3h5IGZvciBpdC4KKyAgICAgICAgLy8g
SXQgaGFwcGVucyBldmVyeSB0aW1lIGEgbmV3IGl0ZW0gYmVjb21lcyByZWFkeSB0byBwbGF5Lgor
ICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0Q2FuUGxheUZhc3RSZXZlcnNl
KG1fbWVkaWFFbGVtZW50LT5taW5GYXN0UmV2ZXJzZVJhdGUoKSA8IDAuMCk7CisgICAgfQorCisg
ICAgaWYgKGFsbAorICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnBhdXNlRXZl
bnQKKyAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQKKyAgICAg
ICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpCisgICAgICAg
IG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRSYXRlKCFtX21lZGlhRWxlbWVudC0+cGF1
c2VkKCksIG1fbWVkaWFFbGVtZW50LT5wbGF5YmFja1JhdGUoKSk7CisKKyAgICBpZiAoYWxsCisg
ICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50KSB7Cisg
ICAgICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDdXJyZW50VGltZShtX21lZGlh
RWxlbWVudC0+Y3VycmVudFRpbWUoKSwgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBzeXN0
ZW1VcHRpbWVdKTsKKyAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEJ1ZmZl
cmVkVGltZShtX21lZGlhRWxlbWVudC0+bWF4QnVmZmVyZWRUaW1lKCkpOworICAgICAgICAvLyBG
SVhNRTogMTMwNzg4IC0gZmluZCBhIGJldHRlciBldmVudCB0byB1cGRhdGUgc2Vla2FibGUgcmFu
Z2VzIGZyb20uCisgICAgICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRTZWVrYWJs
ZVJhbmdlcygqbV9tZWRpYUVsZW1lbnQtPnNlZWthYmxlKCkpOworICAgIH0KKworICAgIGlmIChh
bGwKKyAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50Cisg
ICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkucmVtb3ZldHJhY2tFdmVudCkKKyAg
ICAgICAgdXBkYXRlTGVnaWJsZU9wdGlvbnMoKTsKKworICAgIGlmIChhbGwKKyAgICAgICAgfHwg
ZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS53ZWJraXRjdXJyZW50cGxheWJhY2t0YXJnZXRpc3dp
cmVsZXNzY2hhbmdlZEV2ZW50KSB7CisgICAgICAgIGJvb2wgZW5hYmxlZCA9IG1fbWVkaWFFbGVt
ZW50LT53ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKCk7CisgICAgICAgIFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFy
Z2V0VHlwZSA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZU5vbmU7Cisg
ICAgICAgIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lOworCisgICAgICAgIGlmIChtX21lZGlh
RWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKSkgeworICAgICAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gYWlycGxheShBU0NJSUxpdGVyYWwoImFpcnBsYXkiKSk7CisgICAg
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB0dm91dChBU0NJSUxpdGVyYWwo
InR2b3V0IikpOworCisgICAgICAgICAgICBTdHJpbmcgdHlwZSA9IG1fbWVkaWFFbGVtZW50LT5t
ZWRpYUNvbnRyb2xzSG9zdCgpLT5leHRlcm5hbERldmljZVR5cGUoKTsKKyAgICAgICAgICAgIGlm
ICh0eXBlID09IGFpcnBsYXkpCisgICAgICAgICAgICAgICAgdGFyZ2V0VHlwZSA9IFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZUFpclBsYXk7CisgICAgICAgICAgICBlbHNl
IGlmICh0eXBlID09IHR2b3V0KQorICAgICAgICAgICAgICAgIHRhcmdldFR5cGUgPSBXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2U6OlRhcmdldFR5cGVUVk91dDsKKyAgICAgICAgICAgIGxvY2Fs
aXplZERldmljZU5hbWUgPSBtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+ZXh0
ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZSgpOworICAgICAgICB9CisgICAgICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRFeHRlcm5hbFBsYXliYWNrKGVuYWJsZWQsIHRhcmdldFR5cGUs
IGxvY2FsaXplZERldmljZU5hbWUpOworICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQobV9tZWRpYUVsZW1lbnQtPm1lZGlh
U2Vzc2lvbigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX21lZGlhRWxlbWVudCkp
OworICAgIH0KK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6
cGxheSgpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVu
dC0+cGxheSgpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
OjpwYXVzZSgpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxl
bWVudC0+cGF1c2UoKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudDo6dG9nZ2xlUGxheVN0YXRlKCkKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpCisgICAg
ICAgIG1fbWVkaWFFbGVtZW50LT50b2dnbGVQbGF5U3RhdGUoKTsKK30KKwordm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6YmVnaW5TY3J1YmJpbmcoKQoreworICAgIGlm
IChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmJlZ2luU2NydWJiaW5n
KCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmVuZFNj
cnViYmluZygpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxl
bWVudC0+ZW5kU2NydWJiaW5nKCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OnNlZWtUb1RpbWUoZG91YmxlIHRpbWUpCit7CisgICAgaWYgKG1fbWVkaWFF
bGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+c2V0Q3VycmVudFRpbWUodGltZSk7Cit9
CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmZhc3RTZWVrKGRv
dWJsZSB0aW1lKQoreworICAgIGlmIChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVs
ZW1lbnQtPmZhc3RTZWVrKHRpbWUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50OjpiZWdpblNjYW5uaW5nRm9yd2FyZCgpCit7CisgICAgaWYgKG1fbWVkaWFF
bGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+YmVnaW5TY2FubmluZyhNZWRpYUNvbnRy
b2xsZXJJbnRlcmZhY2U6OkZvcndhcmQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50OjpiZWdpblNjYW5uaW5nQmFja3dhcmQoKQoreworICAgIGlmIChtX21l
ZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmJlZ2luU2Nhbm5pbmcoTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlOjpCYWNrd2FyZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmVuZFNjYW5uaW5nKCkKK3sKKyAgICBpZiAobV9tZWRpYUVs
ZW1lbnQpCisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5lbmRTY2FubmluZygpOworfQorCit2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpzZWxlY3RBdWRpb01lZGlhT3B0
aW9uKHVpbnQ2NF90IHNlbGVjdGVkQXVkaW9JbmRleCkKK3sKKyAgICBBdWRpb1RyYWNrKiBzZWxl
Y3RlZEF1ZGlvVHJhY2sgPSBudWxscHRyOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBp
bmRleCA8IG1fYXVkaW9UcmFja3NGb3JNZW51LnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBh
dXRvJiBhdWRpb1RyYWNrID0gbV9hdWRpb1RyYWNrc0Zvck1lbnVbaW5kZXhdOworICAgICAgICBh
dWRpb1RyYWNrLT5zZXRFbmFibGVkKGluZGV4ID09IHN0YXRpY19jYXN0PHNpemVfdD4oc2VsZWN0
ZWRBdWRpb0luZGV4KSk7CisgICAgICAgIGlmIChhdWRpb1RyYWNrLT5lbmFibGVkKCkpCisgICAg
ICAgICAgICBzZWxlY3RlZEF1ZGlvVHJhY2sgPSBhdWRpb1RyYWNrLmdldCgpOworICAgIH0KKwor
ICAgIG1fbWVkaWFFbGVtZW50LT5hdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoc2VsZWN0ZWRBdWRp
b1RyYWNrKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6
c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KQoreworICAgIFRleHRUcmFj
ayogdGV4dFRyYWNrID0gbnVsbHB0cjsKKworICAgIGlmIChpbmRleCA8IG1fbGVnaWJsZVRyYWNr
c0Zvck1lbnUuc2l6ZSgpKQorICAgICAgICB0ZXh0VHJhY2sgPSBtX2xlZ2libGVUcmFja3NGb3JN
ZW51W3N0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpXS5nZXQoKTsKKyAgICBlbHNlCisgICAgICAg
IHRleHRUcmFjayA9IFRleHRUcmFjazo6Y2FwdGlvbk1lbnVPZmZJdGVtKCk7CisKKyAgICBtX21l
ZGlhRWxlbWVudC0+c2V0U2VsZWN0ZWRUZXh0VHJhY2sodGV4dFRyYWNrKTsKK30KKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlTGVnaWJsZU9wdGlvbnMo
KQoreworICAgIEF1ZGlvVHJhY2tMaXN0KiBhdWRpb1RyYWNrTGlzdCA9IG1fbWVkaWFFbGVtZW50
LT5hdWRpb1RyYWNrcygpOworICAgIFRleHRUcmFja0xpc3QqIHRyYWNrTGlzdCA9IG1fbWVkaWFF
bGVtZW50LT50ZXh0VHJhY2tzKCk7CisKKyAgICBpZiAoKCF0cmFja0xpc3QgJiYgIWF1ZGlvVHJh
Y2tMaXN0KSB8fCAhbV9tZWRpYUVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpIHx8ICFtX21lZGlh
RWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV1RG
OjpBdG9taWNTdHJpbmcgZGlzcGxheU1vZGUgPSBtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9s
c0hvc3QoKS0+Y2FwdGlvbkRpc3BsYXlNb2RlKCk7CisgICAgVGV4dFRyYWNrKiBvZmZJdGVtID0g
bV9tZWRpYUVsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCktPmNhcHRpb25NZW51T2ZmSXRlbSgp
OworICAgIFRleHRUcmFjayogYXV0b21hdGljSXRlbSA9IG1fbWVkaWFFbGVtZW50LT5tZWRpYUNv
bnRyb2xzSG9zdCgpLT5jYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKTsKKworICAgIGF1dG8mIGNh
cHRpb25QcmVmZXJlbmNlcyA9IG1fbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+Z3Jv
dXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKKyAgICBtX2xlZ2libGVUcmFja3NGb3JNZW51ID0g
Y2FwdGlvblByZWZlcmVuY2VzLnNvcnRlZFRyYWNrTGlzdEZvck1lbnUodHJhY2tMaXN0KTsKKyAg
ICBtX2F1ZGlvVHJhY2tzRm9yTWVudSA9IGNhcHRpb25QcmVmZXJlbmNlcy5zb3J0ZWRUcmFja0xp
c3RGb3JNZW51KGF1ZGlvVHJhY2tMaXN0KTsKKworICAgIFZlY3RvcjxTdHJpbmc+IGF1ZGlvVHJh
Y2tEaXNwbGF5TmFtZXM7CisgICAgdWludDY0X3Qgc2VsZWN0ZWRBdWRpb0luZGV4ID0gMDsKKwor
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2F1ZGlvVHJhY2tzRm9yTWVudS5z
aXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgYXV0byYgdHJhY2sgPSBtX2F1ZGlvVHJhY2tzRm9y
TWVudVtpbmRleF07CisgICAgICAgIGF1ZGlvVHJhY2tEaXNwbGF5TmFtZXMuYXBwZW5kKGNhcHRp
b25QcmVmZXJlbmNlcy5kaXNwbGF5TmFtZUZvclRyYWNrKHRyYWNrLmdldCgpKSk7CisKKyAgICAg
ICAgaWYgKHRyYWNrLT5lbmFibGVkKCkpCisgICAgICAgICAgICBzZWxlY3RlZEF1ZGlvSW5kZXgg
PSBpbmRleDsKKyAgICB9CisKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoYXVkaW9UcmFja0Rpc3BsYXlOYW1lcywgc2VsZWN0ZWRB
dWRpb0luZGV4KTsKKworICAgIFZlY3RvcjxTdHJpbmc+IHRyYWNrRGlzcGxheU5hbWVzOworICAg
IHVpbnQ2NF90IHNlbGVjdGVkSW5kZXggPSAwOworICAgIHVpbnQ2NF90IG9mZkluZGV4ID0gMDsK
KyAgICBib29sIHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IGZhbHNlOworCisgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbGVnaWJsZVRyYWNrc0Zvck1lbnUuc2l6ZSgpOyBpbmRl
eCsrKSB7CisgICAgICAgIGF1dG8mIHRyYWNrID0gbV9sZWdpYmxlVHJhY2tzRm9yTWVudVtpbmRl
eF07CisgICAgICAgIHRyYWNrRGlzcGxheU5hbWVzLmFwcGVuZChjYXB0aW9uUHJlZmVyZW5jZXMu
ZGlzcGxheU5hbWVGb3JUcmFjayh0cmFjay5nZXQoKSkpOworCisgICAgICAgIGlmICh0cmFjayA9
PSBvZmZJdGVtKQorICAgICAgICAgICAgb2ZmSW5kZXggPSBpbmRleDsKKworICAgICAgICBpZiAo
dHJhY2sgPT0gYXV0b21hdGljSXRlbSAmJiBkaXNwbGF5TW9kZSA9PSBNZWRpYUNvbnRyb2xzSG9z
dDo6YXV0b21hdGljS2V5d29yZCgpKSB7CisgICAgICAgICAgICBzZWxlY3RlZEluZGV4ID0gaW5k
ZXg7CisgICAgICAgICAgICB0cmFja01lbnVJdGVtU2VsZWN0ZWQgPSB0cnVlOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKGRpc3BsYXlNb2RlICE9IE1lZGlhQ29udHJvbHNIb3N0OjphdXRvbWF0
aWNLZXl3b3JkKCkgJiYgdHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3Jk
KCkpIHsKKyAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPSBpbmRleDsKKyAgICAgICAgICAgIHRy
YWNrTWVudUl0ZW1TZWxlY3RlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
b2ZmSW5kZXggJiYgIXRyYWNrTWVudUl0ZW1TZWxlY3RlZCAmJiBkaXNwbGF5TW9kZSA9PSBNZWRp
YUNvbnRyb2xzSG9zdDo6Zm9yY2VkT25seUtleXdvcmQoKSkgeworICAgICAgICBzZWxlY3RlZElu
ZGV4ID0gb2ZmSW5kZXg7CisgICAgICAgIHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IHRydWU7Cisg
ICAgfQorCisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnModHJhY2tEaXNwbGF5TmFtZXMsIHNlbGVjdGVkSW5kZXgpOworfQorCitj
b25zdCBWZWN0b3I8QXRvbWljU3RyaW5nPiYgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50OjpvYnNlcnZlZEV2ZW50TmFtZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxWZWN0b3I8QXRvbWljU3RyaW5nPj4gc0V2ZW50TmFtZXM7CisKKyAgICBpZiAoIXNFdmVudE5h
bWVzLmdldCgpLnNpemUoKSkgeworICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZl
bnROYW1lcygpLmR1cmF0aW9uY2hhbmdlRXZlbnQpOworICAgICAgICBzRXZlbnROYW1lcy5nZXQo
KS5hcHBlbmQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQpOworICAgICAgICBzRXZlbnROYW1lcy5n
ZXQoKS5hcHBlbmQoZXZlbnROYW1lcygpLnBsYXlFdmVudCk7CisgICAgICAgIHNFdmVudE5hbWVz
LmdldCgpLmFwcGVuZChldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50KTsKKyAgICAgICAgc0V2
ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQpOworICAg
ICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnROYW1lcygpLmFkZHRyYWNrRXZlbnQp
OworICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnROYW1lcygpLnJlbW92ZXRy
YWNrRXZlbnQpOworICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnROYW1lcygp
LndlYmtpdGN1cnJlbnRwbGF5YmFja3RhcmdldGlzd2lyZWxlc3NjaGFuZ2VkRXZlbnQpOworICAg
IH0KKyAgICByZXR1cm4gc0V2ZW50TmFtZXMuZ2V0KCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpldmVudE5hbWVBbGwoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNFdmVudE5hbWVBbGwg
PSAiYWxsRXZlbnRzIjsKKyAgICByZXR1cm4gc0V2ZW50TmFtZUFsbDsKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZS5oCmluZGV4IGM2ZDliZmYyNzY5OTk2YTk4MjZjM2RkNjYzMGEwNDEy
YjIxNDUyODIuLmE4ZWYyOTUwYWI4ZTdhYWZlNDQwNDc0OGIxNjM3NWNjY2ZiZjNlMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZS5oCkBAIC0yOCwxMSArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9T
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQog
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLWNsYXNzIFN0cmlu
ZzsKLX0KKyNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00MCwyMyArMzYsMTAgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
dXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKTsKIAogY2xhc3MgVGltZVJhbmdlczsKIAotY2xhc3Mg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlIHsKK2NsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZSA6IHB1YmxpYyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgewogcHVibGljOgot
ICAgIGVudW0gRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgeyBUYXJnZXRUeXBlTm9uZSwgVGFy
Z2V0VHlwZUFpclBsYXksIFRhcmdldFR5cGVUVk91dCB9OwotICAgIAogICAgIHZpcnR1YWwgfldl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSgpIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRN
ZWRpYVN0YXRlKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBk
b3VibGUgYW5jaG9yVGltZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCdWZmZXJlZFRpbWUo
ZG91YmxlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZs
b2F0IHBsYXliYWNrUmF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0RpbWVuc2lv
bnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6
U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFj
a1RhcmdldFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgPSAwOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsLmgKaW5kZXggMzViYmVlNGRmMDJjMTRmY2Q4N2YwZDBkMTFhY2Qw
NDkzNzYzMjIzNS4uZTU5OGZkMzU5NTg3YzllNjYzM2JkYzUyZTBjMmVjZmE5ZDU3OWMyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbC5oCkBAIC0zMSwyOCArMzEsMTcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgorI2luY2x1ZGUgIldlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWwgeworY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwgOiBwdWJs
aWMgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsKCkgeyB9OwotICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlUGxh
eVN0YXRlKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjcnViYmluZygpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZW5kU2NydWJiaW5nKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZWVr
VG9UaW1lKGRvdWJsZSB0aW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZhc3RTZWVrKGRvdWJs
ZSB0aW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjYW5uaW5nQmFja3dhcmQoKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGVuZFNjYW5uaW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnVs
bHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpID0gMDsK
ICAgICBlbnVtIFZpZGVvR3Jhdml0eSB7IFZpZGVvR3Jhdml0eVJlc2l6ZSwgVmlkZW9HcmF2aXR5
UmVzaXplQXNwZWN0LCBWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsIH07CiAgICAgdmlydHVh
bCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFZpZGVvR3Jhdml0eSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBpbmRleCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVmlz
aWJsZSgpIGNvbnN0ID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQu
aAppbmRleCA1ZDQ2NjcwYmM1N2Q5MzYyMjUzYjgwYWNkZTc1NjhhYzliNGIyZGFkLi5iMzY4Zjk2
NTNlNDIyYTdkNjUzMGZlODc4ZmI0ZDAwODVjNjNmZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50LmgKQEAgLTQyLDEzICs0MiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBBdWRpb1RyYWNrOwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIFRleHRU
cmFjazsKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OwogY2xhc3Mg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOwogCiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudCA6IHB1YmxpYyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCwgcHVibGlj
IEV2ZW50TGlzdGVuZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gY3JlYXRlKFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50JiBwbGF5YmFja1Nlc3Npb25Nb2RlbCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
KCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudChwbGF5YmFja1Nlc3Npb25Nb2RlbCkpOwogICAgIH0KICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudCgpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSopOwpAQCAtODAsMTIgKzgxLDEzIEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCYpOwogCiBwcml2
YXRlOgogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8V1RGOjpBdG9taWNTdHJpbmc+JiBvYnNlcnZl
ZEV2ZW50TmFtZXMoKTsKICAgICBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgZXZlbnROYW1lQWxs
KCk7Ci0gICAgCisKKyAgICBSZWY8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+
IG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7CiAgICAgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IG1f
dmlkZW9FbGVtZW50OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNj
cmVlbkxheWVyOwogICAgIGJvb2wgbV9pc0xpc3RlbmluZyB7IGZhbHNlIH07CkBAIC05Myw4ICs5
NSw2IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fdmlkZW9GcmFtZTsKICAgICBWZWN0b3I8
UmVmUHRyPFRleHRUcmFjaz4+IG1fbGVnaWJsZVRyYWNrc0Zvck1lbnU7CiAgICAgVmVjdG9yPFJl
ZlB0cjxBdWRpb1RyYWNrPj4gbV9hdWRpb1RyYWNrc0Zvck1lbnU7Ci0KLSAgICB2b2lkIHVwZGF0
ZUxlZ2libGVPcHRpb25zKCk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Lm1tCmluZGV4IGY4OWYxNzU4ODYyZWNjODBmNmM2ZDkwMTE0MTViNGIwOThhMjUwMDUu
LjcyMDVjMzNiOGNkYTJjM2FmYmYzMWViMmE0OGQxNGJhMjA5NjI4OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJE
T01FdmVudEludGVybmFsLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYUNv
bnRyb2xzSG9zdC5oIgorI2ltcG9ydCAiV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS5oIgogI2ltcG9ydCA8
UXVhcnR6Q29yZS9Db3JlQW5pbWF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUV2ZW50TGlz
dGVuZXIuaD4KQEAgLTUwLDggKzUxLDkgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
LVdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudCgpCitXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQoV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQmIHBsYXliYWNrU2Vzc2lvbk1vZGVsKQogICAgIDogRXZlbnRMaXN0ZW5l
cihFdmVudExpc3RlbmVyOjpDUFBFdmVudExpc3RlbmVyVHlwZSkKKyAgICAsIG1fcGxheWJhY2tT
ZXNzaW9uTW9kZWwocGxheWJhY2tTZXNzaW9uTW9kZWwpCiB7CiB9CiAKQEAgLTY1LDI0ICs2Nywx
OCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2UoV2ViVmlkZQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Zp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZSA9IGludGVyZmFjZTsKKyAgICBtX3BsYXliYWNrU2Vzc2lv
bk1vZGVsLT5zZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UoaW50ZXJmYWNlKTsKIAotICAg
IGlmIChtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSkgewotICAgICAgICBtX3ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZS0+cmVzZXRNZWRpYVN0YXRlKCk7Ci0gICAgICAgIGlmIChtX3ZpZGVvRWxl
bWVudCkgewotICAgICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldFZpZGVv
RGltZW5zaW9ucyh0cnVlLCBtX3ZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCBtX3ZpZGVvRWxl
bWVudC0+dmlkZW9IZWlnaHQoKSk7Ci0gICAgICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZS0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQobV92aWRlb0VsZW1lbnQtPm1l
ZGlhU2Vzc2lvbigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX3ZpZGVvRWxlbWVu
dCkpOwotICAgICAgICB9Ci0gICAgfQorICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZSAmJiBtX3ZpZGVvRWxlbWVudCkKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Ut
PnNldFZpZGVvRGltZW5zaW9ucyh0cnVlLCBtX3ZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCBt
X3ZpZGVvRWxlbWVudC0+dmlkZW9IZWlnaHQoKSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50KiB2
aWRlb0VsZW1lbnQpCiB7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+c2V0TWVkaWFFbGVt
ZW50KHZpZGVvRWxlbWVudCk7CiAgICAgaWYgKG1fdmlkZW9FbGVtZW50ID09IHZpZGVvRWxlbWVu
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
KQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+cmVzZXRNZWRpYVN0YXRlKCk7
Ci0KICAgICBpZiAobV92aWRlb0VsZW1lbnQgJiYgbV92aWRlb0VsZW1lbnQtPnZpZGVvRnVsbHNj
cmVlbkxheWVyKCkpCiAgICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihudWxscHRyKTsKIApAQCAtMTAzLDEwICs5OSw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50KiB2
aWRlCiAKICAgICB1cGRhdGVGb3JFdmVudE5hbWUoZXZlbnROYW1lQWxsKCkpOwogCi0gICAgaWYg
KG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKSB7CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlKQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0VmlkZW9E
aW1lbnNpb25zKHRydWUsIHZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCB2aWRlb0VsZW1lbnQt
PnZpZGVvSGVpZ2h0KCkpOwotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0
V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQobV92aWRlb0VsZW1lbnQtPm1lZGlhU2Vzc2lv
bigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX3ZpZGVvRWxlbWVudCkpOwotICAg
IH0KIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6aGFuZGxl
RXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50KiBl
dmVudCkKQEAgLTEyMiw1NiArMTE2LDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3QKICAgICBi
b29sIGFsbCA9IGV2ZW50TmFtZSA9PSBldmVudE5hbWVBbGwoKTsKIAogICAgIGlmIChhbGwKLSAg
ICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50KSB7
Ci0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5zZXREdXJhdGlvbihtX3ZpZGVv
RWxlbWVudC0+ZHVyYXRpb24oKSk7Ci0gICAgICAgIC8vIFRoZXNlIGlzIG5vIHN0YW5kYXJkIGV2
ZW50IGZvciBtaW5GYXN0UmV2ZXJzZVJhdGVDaGFuZ2U7IGR1cmF0aW9uIGNoYW5nZSBpcyBhIHJl
YXNvbmFibGUgcHJveHkgZm9yIGl0LgotICAgICAgICAvLyBJdCBoYXBwZW5zIGV2ZXJ5IHRpbWUg
YSBuZXcgaXRlbSBiZWNvbWVzIHJlYWR5IHRvIHBsYXkuCi0gICAgICAgIG1fdmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlLT5zZXRDYW5QbGF5RmFzdFJldmVyc2UobV92aWRlb0VsZW1lbnQtPm1pbkZh
c3RSZXZlcnNlUmF0ZSgpIDwgMC4wKTsKLSAgICB9Ci0KLSAgICBpZiAoYWxsCi0gICAgICAgIHx8
IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkucGF1c2VFdmVudAotICAgICAgICB8fCBldmVudE5h
bWUgPT0gZXZlbnROYW1lcygpLnBsYXlFdmVudAotICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZl
bnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCkKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2UtPnNldFJhdGUoIW1fdmlkZW9FbGVtZW50LT5wYXVzZWQoKSwgbV92aWRlb0VsZW1lbnQt
PnBsYXliYWNrUmF0ZSgpKTsKLQotICAgIGlmIChhbGwKLSAgICAgICAgfHwgZXZlbnROYW1lID09
IGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQpIHsKLSAgICAgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UtPnNldEN1cnJlbnRUaW1lKG1fdmlkZW9FbGVtZW50LT5jdXJyZW50VGltZSgp
LCBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHN5c3RlbVVwdGltZV0pOwotICAgICAgICBt
X3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0QnVmZmVyZWRUaW1lKG1fdmlkZW9FbGVtZW50
LT5tYXhCdWZmZXJlZFRpbWUoKSk7Ci0gICAgICAgIC8vIEZJWE1FOiAxMzA3ODggLSBmaW5kIGEg
YmV0dGVyIGV2ZW50IHRvIHVwZGF0ZSBzZWVrYWJsZSByYW5nZXMgZnJvbS4KLSAgICAgICAgbV92
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldFNlZWthYmxlUmFuZ2VzKCptX3ZpZGVvRWxlbWVu
dC0+c2Vla2FibGUoKSk7Ci0gICAgfQotCi0gICAgaWYgKGFsbAotICAgICAgICB8fCBldmVudE5h
bWUgPT0gZXZlbnROYW1lcygpLmFkZHRyYWNrRXZlbnQKLSAgICAgICAgfHwgZXZlbnROYW1lID09
IGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50KQotICAgICAgICB1cGRhdGVMZWdpYmxlT3B0
aW9ucygpOwotICAgIAotICAgIGlmIChhbGwKICAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50
TmFtZXMoKS5yZXNpemVFdmVudCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Ut
PnNldFZpZGVvRGltZW5zaW9ucyh0cnVlLCBtX3ZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCBt
X3ZpZGVvRWxlbWVudC0+dmlkZW9IZWlnaHQoKSk7Ci0KLSAgICBpZiAoYWxsCi0gICAgICAgIHx8
IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkud2Via2l0Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3
aXJlbGVzc2NoYW5nZWRFdmVudCkgewotICAgICAgICBib29sIGVuYWJsZWQgPSBtX3ZpZGVvRWxl
bWVudC0+d2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcygpOwotICAgICAgICBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRh
cmdldFR5cGUgPSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U6OlRhcmdldFR5cGVOb25lOwot
ICAgICAgICBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZTsKLQotICAgICAgICBpZiAobV92aWRl
b0VsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCkpIHsKLSAgICAgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IGFpcnBsYXkoQVNDSUlMaXRlcmFsKCJhaXJwbGF5IikpOwotICAg
ICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdHZvdXQoQVNDSUlMaXRlcmFs
KCJ0dm91dCIpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgU3RyaW5nIHR5cGUgPSBtX3Zp
ZGVvRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+ZXh0ZXJuYWxEZXZpY2VUeXBlKCk7Ci0g
ICAgICAgICAgICBpZiAodHlwZSA9PSBhaXJwbGF5KQotICAgICAgICAgICAgICAgIHRhcmdldFR5
cGUgPSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U6OlRhcmdldFR5cGVBaXJQbGF5OwotICAg
ICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSB0dm91dCkKLSAgICAgICAgICAgICAgICB0YXJnZXRU
eXBlID0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpUYXJnZXRUeXBlVFZPdXQ7Ci0gICAg
ICAgICAgICBsb2NhbGl6ZWREZXZpY2VOYW1lID0gbV92aWRlb0VsZW1lbnQtPm1lZGlhQ29udHJv
bHNIb3N0KCktPmV4dGVybmFsRGV2aWNlRGlzcGxheU5hbWUoKTsKLSAgICAgICAgfQotICAgICAg
ICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0RXh0ZXJuYWxQbGF5YmFjayhlbmFibGVk
LCB0YXJnZXRUeXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLSAgICAgICAgbV92aWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UtPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKG1fdmlkZW9F
bGVtZW50LT5tZWRpYVNlc3Npb24oKS53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgqbV92
aWRlb0VsZW1lbnQpKTsKLSAgICB9CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVv
TGF5ZXIpCkBAIC0xOTMsNjIgKzEzOSw1MiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKgogCiB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpwbGF5KCkKIHsKLSAgICBp
ZiAobV92aWRlb0VsZW1lbnQpCi0gICAgICAgIG1fdmlkZW9FbGVtZW50LT5wbGF5KCk7CisgICAg
bV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+cGxheSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpwYXVzZSgpCiB7Ci0gICAgaWYgKG1fdmlkZW9FbGVtZW50
KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+cGF1c2UoKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lv
bk1vZGVsLT5wYXVzZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Ojp0b2dnbGVQbGF5U3RhdGUoKQogewotICAgIGlmIChtX3ZpZGVvRWxlbWVudCkKLSAg
ICAgICAgbV92aWRlb0VsZW1lbnQtPnRvZ2dsZVBsYXlTdGF0ZSgpOworICAgIG1fcGxheWJhY2tT
ZXNzaW9uTW9kZWwtPnRvZ2dsZVBsYXlTdGF0ZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpiZWdpblNjcnViYmluZygpCiB7Ci0gICAgaWYgKG1fdmlk
ZW9FbGVtZW50KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+YmVnaW5TY3J1YmJpbmcoKTsKKyAg
ICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5iZWdpblNjcnViYmluZygpOwogfQogCiB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjplbmRTY3J1YmJpbmcoKQogewotICAg
IGlmIChtX3ZpZGVvRWxlbWVudCkKLSAgICAgICAgbV92aWRlb0VsZW1lbnQtPmVuZFNjcnViYmlu
ZygpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmVuZFNjcnViYmluZygpOwogfQogCiB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZWVrVG9UaW1lKGRvdWJs
ZSB0aW1lKQogewotICAgIGlmIChtX3ZpZGVvRWxlbWVudCkKLSAgICAgICAgbV92aWRlb0VsZW1l
bnQtPnNldEN1cnJlbnRUaW1lKHRpbWUpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPnNl
ZWtUb1RpbWUodGltZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6OmZhc3RTZWVrKGRvdWJsZSB0aW1lKQogewotICAgIGlmIChtX3ZpZGVvRWxlbWVudCkK
LSAgICAgICAgbV92aWRlb0VsZW1lbnQtPmZhc3RTZWVrKHRpbWUpOworICAgIG1fcGxheWJhY2tT
ZXNzaW9uTW9kZWwtPmZhc3RTZWVrKHRpbWUpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50OjpiZWdpblNjYW5uaW5nRm9yd2FyZCgpCiB7Ci0gICAgaWYgKG1f
dmlkZW9FbGVtZW50KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+YmVnaW5TY2FubmluZyhNZWRp
YUNvbnRyb2xsZXJJbnRlcmZhY2U6OkZvcndhcmQpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9k
ZWwtPmJlZ2luU2Nhbm5pbmdGb3J3YXJkKCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQ6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpCiB7Ci0gICAgaWYgKG1f
dmlkZW9FbGVtZW50KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+YmVnaW5TY2FubmluZyhNZWRp
YUNvbnRyb2xsZXJJbnRlcmZhY2U6OkJhY2t3YXJkKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1v
ZGVsLT5iZWdpblNjYW5uaW5nQmFja3dhcmQoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZW5kU2Nhbm5pbmcoKQogewotICAgIGlmIChtX3ZpZGVvRWxl
bWVudCkKLSAgICAgICAgbV92aWRlb0VsZW1lbnQtPmVuZFNjYW5uaW5nKCk7CisgICAgbV9wbGF5
YmFja1Nlc3Npb25Nb2RlbC0+ZW5kU2Nhbm5pbmcoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQpAQCAtMjgyLDg4ICsyMTgsMTIg
QEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9MYXll
ckdyYXZpdHkoV2ViVmlkZW9GdWxsc2NyZWUKIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBzZWxlY3RlZEF1
ZGlvSW5kZXgpCiB7Ci0gICAgQXVkaW9UcmFjayogc2VsZWN0ZWRBdWRpb1RyYWNrID0gbnVsbHB0
cjsKLQotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2F1ZGlvVHJhY2tzRm9y
TWVudS5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byYgYXVkaW9UcmFjayA9IG1fYXVk
aW9UcmFja3NGb3JNZW51W2luZGV4XTsKLSAgICAgICAgYXVkaW9UcmFjay0+c2V0RW5hYmxlZChp
bmRleCA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNlbGVjdGVkQXVkaW9JbmRleCkpOwotICAgICAg
ICBpZiAoYXVkaW9UcmFjay0+ZW5hYmxlZCgpKQotICAgICAgICAgICAgc2VsZWN0ZWRBdWRpb1Ry
YWNrID0gYXVkaW9UcmFjay5nZXQoKTsKLSAgICB9Ci0KLSAgICBtX3ZpZGVvRWxlbWVudC0+YXVk
aW9UcmFja0VuYWJsZWRDaGFuZ2VkKHNlbGVjdGVkQXVkaW9UcmFjayk7CisgICAgbV9wbGF5YmFj
a1Nlc3Npb25Nb2RlbC0+c2VsZWN0QXVkaW9NZWRpYU9wdGlvbihzZWxlY3RlZEF1ZGlvSW5kZXgp
OwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZWxlY3RM
ZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpCiB7Ci0gICAgVGV4dFRyYWNrKiB0ZXh0
VHJhY2sgPSBudWxscHRyOwotICAgIAotICAgIGlmIChpbmRleCA8IG1fbGVnaWJsZVRyYWNrc0Zv
ck1lbnUuc2l6ZSgpKQotICAgICAgICB0ZXh0VHJhY2sgPSBtX2xlZ2libGVUcmFja3NGb3JNZW51
W3N0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpXS5nZXQoKTsKLSAgICBlbHNlCi0gICAgICAgIHRl
eHRUcmFjayA9IFRleHRUcmFjazo6Y2FwdGlvbk1lbnVPZmZJdGVtKCk7Ci0gICAgCi0gICAgbV92
aWRlb0VsZW1lbnQtPnNldFNlbGVjdGVkVGV4dFRyYWNrKHRleHRUcmFjayk7Ci19Ci0KLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnVwZGF0ZUxlZ2libGVPcHRpb25z
KCkKLXsKLSAgICBBdWRpb1RyYWNrTGlzdCogYXVkaW9UcmFja0xpc3QgPSBtX3ZpZGVvRWxlbWVu
dC0+YXVkaW9UcmFja3MoKTsKLSAgICBUZXh0VHJhY2tMaXN0KiB0cmFja0xpc3QgPSBtX3ZpZGVv
RWxlbWVudC0+dGV4dFRyYWNrcygpOwotCi0gICAgaWYgKCghdHJhY2tMaXN0ICYmICFhdWRpb1Ry
YWNrTGlzdCkgfHwgIW1fdmlkZW9FbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKSB8fCAhbV92aWRl
b0VsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBXVEY6OkF0b21pY1N0cmluZyBkaXNwbGF5TW9kZSA9IG1fdmlkZW9FbGVtZW50LT5tZWRpYUNv
bnRyb2xzSG9zdCgpLT5jYXB0aW9uRGlzcGxheU1vZGUoKTsKLSAgICBUZXh0VHJhY2sqIG9mZkl0
ZW0gPSBtX3ZpZGVvRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+Y2FwdGlvbk1lbnVPZmZJ
dGVtKCk7Ci0gICAgVGV4dFRyYWNrKiBhdXRvbWF0aWNJdGVtID0gbV92aWRlb0VsZW1lbnQtPm1l
ZGlhQ29udHJvbHNIb3N0KCktPmNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpOwotCi0gICAgYXV0
byYgY2FwdGlvblByZWZlcmVuY2VzID0gbV92aWRlb0VsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgp
LT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpOwotICAgIG1fbGVnaWJsZVRyYWNrc0Zvck1l
bnUgPSBjYXB0aW9uUHJlZmVyZW5jZXMuc29ydGVkVHJhY2tMaXN0Rm9yTWVudSh0cmFja0xpc3Qp
OwotICAgIG1fYXVkaW9UcmFja3NGb3JNZW51ID0gY2FwdGlvblByZWZlcmVuY2VzLnNvcnRlZFRy
YWNrTGlzdEZvck1lbnUoYXVkaW9UcmFja0xpc3QpOwotCi0gICAgVmVjdG9yPFN0cmluZz4gYXVk
aW9UcmFja0Rpc3BsYXlOYW1lczsKLSAgICB1aW50NjRfdCBzZWxlY3RlZEF1ZGlvSW5kZXggPSAw
OwotICAgIAotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2F1ZGlvVHJhY2tz
Rm9yTWVudS5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byYgdHJhY2sgPSBtX2F1ZGlv
VHJhY2tzRm9yTWVudVtpbmRleF07Ci0gICAgICAgIGF1ZGlvVHJhY2tEaXNwbGF5TmFtZXMuYXBw
ZW5kKGNhcHRpb25QcmVmZXJlbmNlcy5kaXNwbGF5TmFtZUZvclRyYWNrKHRyYWNrLmdldCgpKSk7
Ci0gICAgICAgIAotICAgICAgICBpZiAodHJhY2stPmVuYWJsZWQoKSkKLSAgICAgICAgICAgIHNl
bGVjdGVkQXVkaW9JbmRleCA9IGluZGV4OwotICAgIH0KLSAgICAKLSAgICBtX3ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZS0+c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoYXVkaW9UcmFja0Rp
c3BsYXlOYW1lcywgc2VsZWN0ZWRBdWRpb0luZGV4KTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHRy
YWNrRGlzcGxheU5hbWVzOwotICAgIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXggPSAwOwotICAgIHVp
bnQ2NF90IG9mZkluZGV4ID0gMDsKLSAgICBib29sIHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IGZh
bHNlOwotICAgIAotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2xlZ2libGVU
cmFja3NGb3JNZW51LnNpemUoKTsgaW5kZXgrKykgewotICAgICAgICBhdXRvJiB0cmFjayA9IG1f
bGVnaWJsZVRyYWNrc0Zvck1lbnVbaW5kZXhdOwotICAgICAgICB0cmFja0Rpc3BsYXlOYW1lcy5h
cHBlbmQoY2FwdGlvblByZWZlcmVuY2VzLmRpc3BsYXlOYW1lRm9yVHJhY2sodHJhY2suZ2V0KCkp
KTsKLSAgICAgICAgCi0gICAgICAgIGlmICh0cmFjayA9PSBvZmZJdGVtKQotICAgICAgICAgICAg
b2ZmSW5kZXggPSBpbmRleDsKLSAgICAgICAgCi0gICAgICAgIGlmICh0cmFjayA9PSBhdXRvbWF0
aWNJdGVtICYmIGRpc3BsYXlNb2RlID09IE1lZGlhQ29udHJvbHNIb3N0OjphdXRvbWF0aWNLZXl3
b3JkKCkpIHsKLSAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPSBpbmRleDsKLSAgICAgICAgICAg
IHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIGlmIChkaXNwbGF5TW9kZSAhPSBNZWRpYUNvbnRyb2xzSG9zdDo6YXV0b21hdGljS2V5d29y
ZCgpICYmIHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpKSB7Ci0g
ICAgICAgICAgICBzZWxlY3RlZEluZGV4ID0gaW5kZXg7Ci0gICAgICAgICAgICB0cmFja01lbnVJ
dGVtU2VsZWN0ZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmIChvZmZJ
bmRleCAmJiAhdHJhY2tNZW51SXRlbVNlbGVjdGVkICYmIGRpc3BsYXlNb2RlID09IE1lZGlhQ29u
dHJvbHNIb3N0Ojpmb3JjZWRPbmx5S2V5d29yZCgpKSB7Ci0gICAgICAgIHNlbGVjdGVkSW5kZXgg
PSBvZmZJbmRleDsKLSAgICAgICAgdHJhY2tNZW51SXRlbVNlbGVjdGVkID0gdHJ1ZTsKLSAgICB9
Ci0gICAgCi0gICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnModHJhY2tEaXNwbGF5TmFtZXMsIHNlbGVjdGVkSW5kZXgpOworICAgIG1f
cGxheWJhY2tTZXNzaW9uTW9kZWwtPnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihpbmRleCk7CiB9
CiAKIGNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+JiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKCkKQEAgLTM3MSwxNSArMjMxLDcgQEAgY29u
c3QgVmVjdG9yPEF0b21pY1N0cmluZz4mIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50OjpvYnNlcnZlZEV2ZW50TmEKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPEF0
b21pY1N0cmluZz4+IHNFdmVudE5hbWVzOwogCiAgICAgaWYgKCFzRXZlbnROYW1lcy5nZXQoKS5z
aXplKCkpIHsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5k
dXJhdGlvbmNoYW5nZUV2ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2
ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5k
KGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQpOwotICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBl
bmQoZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCk7Ci0gICAgICAgIHNFdmVudE5hbWVzLmdl
dCgpLmFwcGVuZChldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50KTsKLSAgICAgICAgc0V2ZW50
TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50KTsKLSAgICAgICAg
c0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50KTsK
ICAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5yZXNpemVFdmVu
dCk7Ci0gICAgICAgIHNFdmVudE5hbWVzLmdldCgpLmFwcGVuZChldmVudE5hbWVzKCkud2Via2l0
Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWRFdmVudCk7CiAgICAgfQogICAg
IHJldHVybiBzRXZlbnROYW1lcy5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmFmZTAxY2Zh
MDQ0MGNhNWEzNDUzNzkzYWE3ODlhNGNiOGZmMjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5oCkBAIC0wLDAgKzEs
OTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYg
UExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJBVktpdFNQSS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDsKK2NsYXNzIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0OworfQorCitAaW50ZXJmYWNlIFdlYkFWTWVkaWFTZWxlY3Rpb25P
cHRpb24gOiBOU09iamVjdAorQHByb3BlcnR5IChyZXRhaW4pIE5TU3RyaW5nICpsb2NhbGl6ZWRE
aXNwbGF5TmFtZTsKK0BlbmQKKworQGludGVyZmFjZSBXZWJBVlBsYXllckNvbnRyb2xsZXIgOiBO
U09iamVjdCB7CisgICAgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqX2N1cnJlbnRBdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9uOworICAgIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKl9jdXJy
ZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOworICAgIEJPT0wgX3BpY3R1cmVJblBpY3R1
cmVJbnRlcnJ1cHRlZDsKK30KKworLSAodm9pZClyZXNldFN0YXRlOworCitAcHJvcGVydHkgKHJl
dGFpbikgQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyUHJveHk7CitAcHJvcGVy
dHkgKGFzc2lnbikgV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwqIGRlbGVnYXRlOwor
QHByb3BlcnR5IChhc3NpZ24pIFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0KiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U7CisKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJP
T0wgY2FuU2NhbkZvcndhcmQ7CitAcHJvcGVydHkgQk9PTCBjYW5TY2FuQmFja3dhcmQ7CitAcHJv
cGVydHkgKHJlYWRvbmx5KSBCT09MIGNhblNlZWtUb0JlZ2lubmluZzsKK0Bwcm9wZXJ0eSAocmVh
ZG9ubHkpIEJPT0wgY2FuU2Vla1RvRW5kOworCitAcHJvcGVydHkgQk9PTCBjYW5QbGF5OworQHBy
b3BlcnR5IChnZXR0ZXI9aXNQbGF5aW5nKSBCT09MIHBsYXlpbmc7CitAcHJvcGVydHkgQk9PTCBj
YW5QYXVzZTsKK0Bwcm9wZXJ0eSBCT09MIGNhblRvZ2dsZVBsYXliYWNrOworQHByb3BlcnR5IGRv
dWJsZSByYXRlOworQHByb3BlcnR5IEJPT0wgY2FuU2VlazsKK0Bwcm9wZXJ0eSBOU1RpbWVJbnRl
cnZhbCBjb250ZW50RHVyYXRpb247CitAcHJvcGVydHkgQ0dTaXplIGNvbnRlbnREaW1lbnNpb25z
OworQHByb3BlcnR5IEJPT0wgaGFzRW5hYmxlZEF1ZGlvOworQHByb3BlcnR5IEJPT0wgaGFzRW5h
YmxlZFZpZGVvOworQHByb3BlcnR5IE5TVGltZUludGVydmFsIG1pblRpbWU7CitAcHJvcGVydHkg
TlNUaW1lSW50ZXJ2YWwgbWF4VGltZTsKK0Bwcm9wZXJ0eSBOU1RpbWVJbnRlcnZhbCBjb250ZW50
RHVyYXRpb25XaXRoaW5FbmRUaW1lczsKK0Bwcm9wZXJ0eSAocmV0YWluKSBOU0FycmF5ICpsb2Fk
ZWRUaW1lUmFuZ2VzOworQHByb3BlcnR5IEFWUGxheWVyQ29udHJvbGxlclN0YXR1cyBzdGF0dXM7
CitAcHJvcGVydHkgKHJldGFpbikgQVZWYWx1ZVRpbWluZyAqdGltaW5nOworQHByb3BlcnR5IChy
ZXRhaW4pIE5TQXJyYXkgKnNlZWthYmxlVGltZVJhbmdlczsKKworQHByb3BlcnR5IChyZWFkb25s
eSkgQk9PTCBoYXNNZWRpYVNlbGVjdGlvbk9wdGlvbnM7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBC
T09MIGhhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOworQHByb3BlcnR5IChyZXRhaW4pIE5T
QXJyYXkgKmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOworQHByb3BlcnR5IChyZXRhaW4pIFdl
YkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKmN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
OworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBoYXNMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zOworQHByb3BlcnR5IChyZXRhaW4pIE5TQXJyYXkgKmxlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnM7CitAcHJvcGVydHkgKHJldGFpbikgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqY3Vy
cmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjsKKworQHByb3BlcnR5IChyZWFkb25seSwg
Z2V0dGVyPWlzUGxheWluZ09uRXh0ZXJuYWxTY3JlZW4pIEJPT0wgcGxheWluZ09uRXh0ZXJuYWxT
Y3JlZW47CitAcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0ZXI9aXNQbGF5aW5nT25TZWNvbmRTY3Jl
ZW4pIEJPT0wgcGxheWluZ09uU2Vjb25kU2NyZWVuOworQHByb3BlcnR5IChnZXR0ZXI9aXNFeHRl
cm5hbFBsYXliYWNrQWN0aXZlKSBCT09MIGV4dGVybmFsUGxheWJhY2tBY3RpdmU7CitAcHJvcGVy
dHkgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUgZXh0ZXJuYWxQbGF5YmFj
a1R5cGU7CitAcHJvcGVydHkgKHJldGFpbikgTlNTdHJpbmcgKmV4dGVybmFsUGxheWJhY2tBaXJQ
bGF5RGV2aWNlTG9jYWxpemVkTmFtZTsKK0Bwcm9wZXJ0eSBCT09MIGFsbG93c0V4dGVybmFsUGxh
eWJhY2s7CitAcHJvcGVydHkgKGdldHRlcj1pc1BpY3R1cmVJblBpY3R1cmVQb3NzaWJsZSkgQk9P
TCBwaWN0dXJlSW5QaWN0dXJlUG9zc2libGU7CitAcHJvcGVydHkgKGdldHRlcj1pc1BpY3R1cmVJ
blBpY3R1cmVJbnRlcnJ1cHRlZCkgQk9PTCBwaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ7CitA
ZW5kCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YkFWUGxheWVyQ29udHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWNmMTgxYTRhN2YyN2I4OWIyNjgx
ZGY4ODg2MjRmZDNjYjRiNDkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbQpAQCAtMCwwICsxLDQ1NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJBVlBsYXllckNvbnRyb2xsZXIuaCIKKworI2lmIFBM
QVRGT1JNKElPUykKKworI2ltcG9ydCAiQVZLaXRTUEkuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIK
KyNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKKyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0LmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oIgorI2ltcG9y
dCA8QVZGb3VuZGF0aW9uL0FWVGltZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2lt
cG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKKyNpbXBvcnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCisKK1NPRlRfTElOS19GUkFNRVdPUkso
QVZLaXQpCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWUGxheWVyQ29udHJvbGxlcikKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVlBsYXllckNvbnRy
b2xsZXIKKworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKKyAgICAgICAgcmV0dXJuIHNlbGY7CisKKyAgICBpbml0QVZQbGF5ZXJDb250cm9s
bGVyKCk7CisgICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyUHJveHkgPSBbW2FsbG9jQVZQbGF5ZXJD
b250cm9sbGVySW5zdGFuY2UoKSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHNlbGY7
Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtfcGxheWVyQ29udHJvbGxlclByb3h5IHJl
bGVhc2VdOworICAgIFtfbG9hZGVkVGltZVJhbmdlcyByZWxlYXNlXTsKKyAgICBbX3NlZWthYmxl
VGltZVJhbmdlcyByZWxlYXNlXTsKKyAgICBbX3RpbWluZyByZWxlYXNlXTsKKyAgICBbX2F1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zIHJlbGVhc2VdOworICAgIFtfbGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9ucyByZWxlYXNlXTsKKyAgICBbX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9uIHJlbGVhc2VdOworICAgIFtfY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbiBy
ZWxlYXNlXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpcmVzZXRTdGF0ZQor
eworICAgIHNlbGYuY29udGVudER1cmF0aW9uID0gMDsKKyAgICBzZWxmLm1heFRpbWUgPSAwOwor
ICAgIHNlbGYuY29udGVudER1cmF0aW9uV2l0aGluRW5kVGltZXMgPSAwOworICAgIHNlbGYubG9h
ZGVkVGltZVJhbmdlcyA9IEBbXTsKKworICAgIHNlbGYuY2FuUGxheSA9IE5POworICAgIHNlbGYu
Y2FuUGF1c2UgPSBOTzsKKyAgICBzZWxmLmNhblRvZ2dsZVBsYXliYWNrID0gTk87CisgICAgc2Vs
Zi5oYXNFbmFibGVkQXVkaW8gPSBOTzsKKyAgICBzZWxmLmNhblNlZWsgPSBOTzsKKyAgICBzZWxm
Lm1pblRpbWUgPSAwOworICAgIHNlbGYuc3RhdHVzID0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVz
VW5rbm93bjsKKworICAgIHNlbGYudGltaW5nID0gbmlsOworICAgIHNlbGYucmF0ZSA9IDA7CisK
KyAgICBzZWxmLmhhc0VuYWJsZWRWaWRlbyA9IE5POworICAgIHNlbGYuY29udGVudERpbWVuc2lv
bnMgPSBDR1NpemVNYWtlKDAsIDApOworCisgICAgc2VsZi5zZWVrYWJsZVRpbWVSYW5nZXMgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXldOworCisgICAgc2VsZi5jYW5TY2FuQmFja3dhcmQgPSBOTzsK
KworICAgIHNlbGYuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBuaWw7CisgICAgc2VsZi5j
dXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsKKworICAgIHNlbGYubGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IG5pbDsKKyAgICBzZWxmLmN1cnJlbnRMZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb24gPSBuaWw7Cit9CisKKy0gKEFWUGxheWVyICopcGxheWVyCit7Cisg
ICAgcmV0dXJuIG5pbDsKK30KKworLSAoaWQpZm9yd2FyZGluZ1RhcmdldEZvclNlbGVjdG9yOihT
RUwpc2VsZWN0b3IKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VsZWN0b3IpOworICAgIHJldHVybiBz
ZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eTsKK30KKworLSAodm9pZClwbGF5OihpZClzZW5kZXIK
K3sKKyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisg
ICAgICAgIHJldHVybjsKKyAgICBzZWxmLmRlbGVnYXRlLT5wbGF5KCk7Cit9CisKKy0gKHZvaWQp
cGF1c2U6KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOworICAgIGlmICgh
c2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIHNlbGYuZGVsZWdhdGUtPnBhdXNl
KCk7Cit9CisKKy0gKHZvaWQpdG9nZ2xlUGxheWJhY2s6KGlkKXNlbmRlcgoreworICAgIFVOVVNF
RF9QQVJBTShzZW5kZXIpOworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJu
OworICAgIHNlbGYuZGVsZWdhdGUtPnRvZ2dsZVBsYXlTdGF0ZSgpOworfQorCistICh2b2lkKXRv
Z2dsZVBsYXliYWNrRXZlbldoZW5JbkJhY2tncm91bmQ6KGlkKXNlbmRlcgoreworICAgIFtzZWxm
IHRvZ2dsZVBsYXliYWNrOnNlbmRlcl07Cit9CisKKy0gKEJPT0wpaXNQbGF5aW5nCit7CisgICAg
cmV0dXJuIFtzZWxmIHJhdGVdOworfQorCistICh2b2lkKXNldFBsYXlpbmc6KEJPT0wpcGxheWlu
ZworeworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChw
bGF5aW5nKQorICAgICAgICBzZWxmLmRlbGVnYXRlLT5wbGF5KCk7CisgICAgZWxzZQorICAgICAg
ICBzZWxmLmRlbGVnYXRlLT5wYXVzZSgpOworfQorCisrIChOU1NldCAqKWtleVBhdGhzRm9yVmFs
dWVzQWZmZWN0aW5nUGxheWluZworeworICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdDpA
InJhdGUiXTsKK30KKworLSAodm9pZCliZWdpblNjcnViYmluZzooaWQpc2VuZGVyCit7CisgICAg
VU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAgICAgICBy
ZXR1cm47CisgICAgc2VsZi5kZWxlZ2F0ZS0+YmVnaW5TY3J1YmJpbmcoKTsKK30KKworLSAodm9p
ZCllbmRTY3J1YmJpbmc6KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwor
ICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIHNlbGYuZGVsZWdh
dGUtPmVuZFNjcnViYmluZygpOworfQorCistICh2b2lkKXNlZWtUb1RpbWU6KE5TVGltZUludGVy
dmFsKXRpbWUKK3sKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAg
ICBzZWxmLmRlbGVnYXRlLT5mYXN0U2Vlayh0aW1lKTsKK30KKworLSAoTlNUaW1lSW50ZXJ2YWwp
Y3VycmVudFRpbWVXaXRoaW5FbmRUaW1lcworeworICAgIHJldHVybiBzZWxmLnRpbWluZy5jdXJy
ZW50VmFsdWU7Cit9CisKKy0gKHZvaWQpc2V0Q3VycmVudFRpbWVXaXRoaW5FbmRUaW1lczooTlNU
aW1lSW50ZXJ2YWwpY3VycmVudFRpbWVXaXRoaW5FbmRUaW1lcworeworICAgIFtzZWxmIHNlZWtU
b1RpbWU6Y3VycmVudFRpbWVXaXRoaW5FbmRUaW1lc107Cit9CisKKysgKE5TU2V0ICopa2V5UGF0
aHNGb3JWYWx1ZXNBZmZlY3RpbmdDdXJyZW50VGltZVdpdGhpbkVuZFRpbWVzCit7CisgICAgcmV0
dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAidGltaW5nIl07Cit9CisKKy0gKEJPT0wpaGFzTGl2
ZVN0cmVhbWluZ0NvbnRlbnQKK3sKKyAgICBpZiAoW3NlbGYgc3RhdHVzXSA9PSBBVlBsYXllckNv
bnRyb2xsZXJTdGF0dXNSZWFkeVRvUGxheSkKKyAgICAgICAgcmV0dXJuIFtzZWxmIGNvbnRlbnRE
dXJhdGlvbl0gPT0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CisgICAg
cmV0dXJuIE5POworfQorCisrIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nSGFz
TGl2ZVN0cmVhbWluZ0NvbnRlbnQKK3sKKyAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3Rz
OkAiY29udGVudER1cmF0aW9uIiwgQCJzdGF0dXMiLCBuaWxdOworfQorCistICh2b2lkKXNraXBC
YWNrd2FyZFRoaXJ0eVNlY29uZHM6KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5k
ZXIpOworICAgIEJPT0wgaXNUaW1lV2l0aGluU2Vla2FibGVUaW1lUmFuZ2VzID0gTk87CisgICAg
Q01UaW1lIGN1cnJlbnRUaW1lID0gQ01UaW1lTWFrZVdpdGhTZWNvbmRzKFtbc2VsZiB0aW1pbmdd
IGN1cnJlbnRWYWx1ZV0sIDEwMDApOworICAgIENNVGltZSB0aGlydHlTZWNvbmRzQmVmb3JlQ3Vy
cmVudFRpbWUgPSBDTVRpbWVTdWJ0cmFjdChjdXJyZW50VGltZSwgQ01UaW1lTWFrZSgzMCwgMSkp
OworCisgICAgZm9yIChOU1ZhbHVlICpzZWVrYWJsZVRpbWVSYW5nZVZhbHVlIGluIFtzZWxmIHNl
ZWthYmxlVGltZVJhbmdlc10pIHsKKyAgICAgICAgaWYgKENNVGltZVJhbmdlQ29udGFpbnNUaW1l
KFtzZWVrYWJsZVRpbWVSYW5nZVZhbHVlIENNVGltZVJhbmdlVmFsdWVdLCB0aGlydHlTZWNvbmRz
QmVmb3JlQ3VycmVudFRpbWUpKSB7CisgICAgICAgICAgICBpc1RpbWVXaXRoaW5TZWVrYWJsZVRp
bWVSYW5nZXMgPSBZRVM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGlmIChpc1RpbWVXaXRoaW5TZWVrYWJsZVRpbWVSYW5nZXMpCisgICAgICAgIFtzZWxmIHNl
ZWtUb1RpbWU6Q01UaW1lR2V0U2Vjb25kcyh0aGlydHlTZWNvbmRzQmVmb3JlQ3VycmVudFRpbWUp
XTsKK30KKworLSAodm9pZClnb3RvRW5kT2ZTZWVrYWJsZVJhbmdlczooaWQpc2VuZGVyCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgTlNUaW1lSW50ZXJ2YWwgdGltZUF0RW5kT2ZT
ZWVrYWJsZVRpbWVSYW5nZXMgPSBOQU47CisKKyAgICBmb3IgKE5TVmFsdWUgKnNlZWthYmxlVGlt
ZVJhbmdlVmFsdWUgaW4gW3NlbGYgc2Vla2FibGVUaW1lUmFuZ2VzXSkgeworICAgICAgICBDTVRp
bWVSYW5nZSBzZWVrYWJsZVRpbWVSYW5nZSA9IFtzZWVrYWJsZVRpbWVSYW5nZVZhbHVlIENNVGlt
ZVJhbmdlVmFsdWVdOworICAgICAgICBOU1RpbWVJbnRlcnZhbCBlbmRPZlNlZWthYmxlVGltZVJh
bmdlID0gQ01UaW1lR2V0U2Vjb25kcyhDTVRpbWVSYW5nZUdldEVuZChzZWVrYWJsZVRpbWVSYW5n
ZSkpOworICAgICAgICBpZiAoaXNuYW4odGltZUF0RW5kT2ZTZWVrYWJsZVRpbWVSYW5nZXMpIHx8
IGVuZE9mU2Vla2FibGVUaW1lUmFuZ2UgPiB0aW1lQXRFbmRPZlNlZWthYmxlVGltZVJhbmdlcykK
KyAgICAgICAgICAgIHRpbWVBdEVuZE9mU2Vla2FibGVUaW1lUmFuZ2VzID0gZW5kT2ZTZWVrYWJs
ZVRpbWVSYW5nZTsKKyAgICB9CisKKyAgICBpZiAoIWlzbmFuKHRpbWVBdEVuZE9mU2Vla2FibGVU
aW1lUmFuZ2VzKSkKKyAgICAgICAgW3NlbGYgc2Vla1RvVGltZTp0aW1lQXRFbmRPZlNlZWthYmxl
VGltZVJhbmdlc107Cit9CisKKy0gKEJPT0wpY2FuU2NhbkZvcndhcmQKK3sKKyAgICByZXR1cm4g
W3NlbGYgY2FuUGxheV07Cit9CisKKysgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3Rp
bmdDYW5TY2FuRm9yd2FyZAoreworICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdDpAImNh
blBsYXkiXTsKK30KKworLSAodm9pZCliZWdpblNjYW5uaW5nRm9yd2FyZDooaWQpc2VuZGVyCit7
CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAg
ICAgICByZXR1cm47CisgICAgc2VsZi5kZWxlZ2F0ZS0+YmVnaW5TY2FubmluZ0ZvcndhcmQoKTsK
K30KKworLSAodm9pZCllbmRTY2FubmluZ0ZvcndhcmQ6KGlkKXNlbmRlcgoreworICAgIFVOVVNF
RF9QQVJBTShzZW5kZXIpOworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJu
OworICAgIHNlbGYuZGVsZWdhdGUtPmVuZFNjYW5uaW5nKCk7Cit9CisKKy0gKHZvaWQpYmVnaW5T
Y2FubmluZ0JhY2t3YXJkOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsK
KyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBzZWxmLmRlbGVn
YXRlLT5iZWdpblNjYW5uaW5nQmFja3dhcmQoKTsKK30KKworLSAodm9pZCllbmRTY2FubmluZ0Jh
Y2t3YXJkOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKKyAgICBpZiAo
IXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBzZWxmLmRlbGVnYXRlLT5lbmRT
Y2FubmluZygpOworfQorCistIChCT09MKWNhblNlZWtUb0JlZ2lubmluZworeworICAgIENNVGlt
ZSBtaW5pbXVtVGltZSA9IGtDTVRpbWVJbmRlZmluaXRlOworCisgICAgZm9yIChOU1ZhbHVlICp2
YWx1ZSBpbiBbc2VsZiBzZWVrYWJsZVRpbWVSYW5nZXNdKQorICAgICAgICBtaW5pbXVtVGltZSA9
IENNVGltZU1pbmltdW0oW3ZhbHVlIENNVGltZVJhbmdlVmFsdWVdLnN0YXJ0LCBtaW5pbXVtVGlt
ZSk7CisKKyAgICByZXR1cm4gQ01USU1FX0lTX05VTUVSSUMobWluaW11bVRpbWUpOworfQorCisr
IChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nQ2FuU2Vla1RvQmVnaW5uaW5nCit7
CisgICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAic2Vla2FibGVUaW1lUmFuZ2VzIl07
Cit9CisKKy0gKHZvaWQpc2Vla1RvQmVnaW5uaW5nOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURf
UEFSQU0oc2VuZGVyKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsK
KyAgICBzZWxmLmRlbGVnYXRlLT5zZWVrVG9UaW1lKC1JTkZJTklUWSk7Cit9CisKKy0gKHZvaWQp
c2Vla0NoYXB0ZXJCYWNrd2FyZDooaWQpc2VuZGVyCit7CisgICAgW3NlbGYgc2Vla1RvQmVnaW5u
aW5nOnNlbmRlcl07Cit9CisKKy0gKEJPT0wpY2FuU2Vla1RvRW5kCit7CisgICAgQ01UaW1lIG1h
eGltdW1UaW1lID0ga0NNVGltZUluZGVmaW5pdGU7CisKKyAgICBmb3IgKE5TVmFsdWUgKnZhbHVl
IGluIFtzZWxmIHNlZWthYmxlVGltZVJhbmdlc10pCisgICAgICAgIG1heGltdW1UaW1lID0gQ01U
aW1lTWF4aW11bShDTVRpbWVSYW5nZUdldEVuZChbdmFsdWUgQ01UaW1lUmFuZ2VWYWx1ZV0pLCBt
YXhpbXVtVGltZSk7CisKKyAgICByZXR1cm4gQ01USU1FX0lTX05VTUVSSUMobWF4aW11bVRpbWUp
OworfQorCisrIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nQ2FuU2Vla1RvRW5k
Cit7CisgICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAic2Vla2FibGVUaW1lUmFuZ2Vz
Il07Cit9CisKKy0gKHZvaWQpc2Vla1RvRW5kOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURfUEFS
QU0oc2VuZGVyKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAg
ICBzZWxmLmRlbGVnYXRlLT5zZWVrVG9UaW1lKElORklOSVRZKTsKK30KKworLSAodm9pZClzZWVr
Q2hhcHRlckZvcndhcmQ6KGlkKXNlbmRlcgoreworICAgIFtzZWxmIHNlZWtUb0VuZDpzZW5kZXJd
OworfQorCistIChCT09MKWhhc01lZGlhU2VsZWN0aW9uT3B0aW9ucworeworICAgIHJldHVybiBb
c2VsZiBoYXNBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc10gfHwgW3NlbGYgaGFzTGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9uc107Cit9CisKKysgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNB
ZmZlY3RpbmdIYXNNZWRpYVNlbGVjdGlvbk9wdGlvbnMKK3sKKyAgICByZXR1cm4gW05TU2V0IHNl
dFdpdGhPYmplY3RzOkAiaGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMiLCBAImhhc0xlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMiLCBuaWxdOworfQorCistIChCT09MKWhhc0F1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zCit7CisgICAgcmV0dXJuIFtbc2VsZiBhdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9uc10gY291bnRdID4gMTsKK30KKworKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVl
c0FmZmVjdGluZ0hhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zCit7CisgICAgcmV0dXJuIFtO
U1NldCBzZXRXaXRoT2JqZWN0OkAiYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMiXTsKK30KKwor
LSAoQk9PTCloYXNMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zCit7CisgICAgY29uc3QgTlNV
SW50ZWdlciBudW1EZWZhdWx0TGVnaWJsZU9wdGlvbnMgPSAyOworICAgIHJldHVybiBbW3NlbGYg
bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc10gY291bnRdID4gbnVtRGVmYXVsdExlZ2libGVP
cHRpb25zOworfQorCisrIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nSGFzTGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucworeworICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9i
amVjdDpAImxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMiXTsKK30KKworLSAoV2ViQVZNZWRp
YVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uCit7Cisg
ICAgcmV0dXJuIF9jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjsKK30KKworLSAodm9p
ZClzZXRDdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjooV2ViQVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiAqKW9wdGlvbgoreworICAgIGlmIChvcHRpb24gPT0gX2N1cnJlbnRBdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBbX2N1cnJlbnRBdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9uIHJlbGVhc2VdOworICAgIF9jdXJyZW50QXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbiA9IFtvcHRpb24gcmV0YWluXTsKKworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgTlNJbnRlZ2VyIGluZGV4ID0gTlNOb3RGb3VuZDsKKwor
ICAgIGlmIChvcHRpb24gJiYgc2VsZi5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucykKKyAgICAg
ICAgaW5kZXggPSBbc2VsZi5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyBpbmRleE9mT2JqZWN0
Om9wdGlvbl07CisKKyAgICBzZWxmLmRlbGVnYXRlLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9uKGlu
ZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOworfQorCistIChXZWJBVk1l
ZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbgor
eworICAgIHJldHVybiBfY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjsKK30KKwor
LSAodm9pZClzZXRDdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOihXZWJBVk1lZGlh
U2VsZWN0aW9uT3B0aW9uICopb3B0aW9uCit7CisgICAgaWYgKG9wdGlvbiA9PSBfY3VycmVudExl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgW19jdXJy
ZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uIHJlbGVhc2VdOworICAgIF9jdXJyZW50TGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uID0gW29wdGlvbiByZXRhaW5dOworCisgICAgaWYgKCFz
ZWxmLmRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBOU0ludGVnZXIgaW5kZXggPSBO
U05vdEZvdW5kOworCisgICAgaWYgKG9wdGlvbiAmJiBzZWxmLmxlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnMpCisgICAgICAgIGluZGV4ID0gW3NlbGYubGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9ucyBpbmRleE9mT2JqZWN0Om9wdGlvbl07CisKKyAgICBzZWxmLmRlbGVnYXRlLT5zZWxlY3RM
ZWdpYmxlTWVkaWFPcHRpb24oaW5kZXggIT0gTlNOb3RGb3VuZCA/IGluZGV4IDogVUlOVDY0X01B
WCk7Cit9CisKKy0gKEJPT0wpaXNQbGF5aW5nT25FeHRlcm5hbFNjcmVlbgoreworICAgIHJldHVy
biBbc2VsZiBpc0V4dGVybmFsUGxheWJhY2tBY3RpdmVdIHx8IFtzZWxmIGlzUGxheWluZ09uU2Vj
b25kU2NyZWVuXTsKK30KKworKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ1Bs
YXlpbmdPbkV4dGVybmFsU2NyZWVuCit7CisgICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0
czpAImV4dGVybmFsUGxheWJhY2tBY3RpdmUiLCBAInBsYXlpbmdPblNlY29uZFNjcmVlbiIsIG5p
bF07Cit9CisKKy0gKEJPT0wpaXNQaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQKK3sKKyAgICBy
ZXR1cm4gX3BpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZDsKK30KKworLSAodm9pZClzZXRQaWN0
dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ6KEJPT0wpcGljdHVyZUluUGljdHVyZUludGVycnVwdGVk
Cit7CisgICAgaWYgKF9waWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQgIT0gcGljdHVyZUluUGlj
dHVyZUludGVycnVwdGVkKSB7CisgICAgICAgIF9waWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQg
PSBwaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ7CisgICAgICAgIGlmIChwaWN0dXJlSW5QaWN0
dXJlSW50ZXJydXB0ZWQpCisgICAgICAgICAgICBbc2VsZiBzZXRQbGF5aW5nOk5PXTsKKyAgICB9
Cit9CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uCitA
ZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmY2YmI1MDFiYjgzYzRkOGUyYWE1OTU0NjYyNzZmMGQ1N2M4NmVmNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0X2gKKyNkZWZpbmUgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
QVZLaXRfaAorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5o
IgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgorI2luY2x1ZGUgIlRpbWVyLmgi
CisjaW5jbHVkZSAiV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmgiCisjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KKyNpbmNsdWRlIDxvYmpjL29iamMuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisKK09CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJDb250cm9sbGVyOworT0JKQ19DTEFTUyBBVlBsYXll
clZpZXdDb250cm9sbGVyOworT0JKQ19DTEFTUyBVSVZpZXdDb250cm9sbGVyOworT0JKQ19DTEFT
UyBVSVdpbmRvdzsKK09CSkNfQ0xBU1MgVUlWaWV3OworCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IFN0cmluZzsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW50UmVjdDsKK2NsYXNz
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uQ2hhbmdl
T2JzZXJ2ZXI7CisKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Q2xpZW50
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dENsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGV4dGVybmFsUGxheWJhY2tFbmFibGVk
Q2hhbmdlZChib29sKSA9IDA7Cit9OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdAorICAgIDogcHVibGljIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZQorICAgICwgcHVibGljIFJlZkNvdW50ZWQ8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQ+IHsKKworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQVZLaXQ+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCgpKTsKKyAgICB9CisgICAgdmly
dHVhbCB+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsKik7CisgICAgdm9pZCBzZXRDbGllbnQoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXRDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQorCisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZXNldE1lZGlhU3RhdGUoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1l
KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEJ1ZmZlcmVkVGltZShkb3Vi
bGUpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmF0ZShib29sIGlzUGxh
eWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5nZXMmKSBvdmVycmlkZTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZShib29sKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgp
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBz
ZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4dGVy
bmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgV1RG
OjpTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSBvdmVycmlkZTsK
KyAgICBib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3Q7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpOworCisgICAgV2ViQVZQbGF5
ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXJD
b250cm9sbGVyLmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBXRUJDT1JFX0VYUE9SVCBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCgpOworCisgICAgUmV0YWluUHRyPFdlYkFWUGxh
eWVyQ29udHJvbGxlcj4gbV9wbGF5ZXJDb250cm9sbGVyOworICAgIFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsKiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsIHsgbnVsbHB0ciB9OworICAgIFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Q2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHJ9OworCisg
ICAgYm9vbCBtX3dpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIHsgdHJ1ZSB9OworfTsKKwor
fQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2VkY2I4MTM0Zjc3MjY2YTUxMGM0ZDU4NTBhZWMyODNmZmQ3NjllNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdC5tbQpAQCAtMCwwICsxLDIwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIgorCisjaWYgUExBVEZPUk0o
SU9TKQorI2lmIEhBVkUoQVZLSVQpCisKKyNpbXBvcnQgIkFWS2l0U1BJLmgiCisjaW1wb3J0ICJM
b2dnaW5nLmgiCisjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJXZWJBVlBsYXllckNv
bnRyb2xsZXIuaCIKKyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmgiCisjaW1wb3J0
IDxBVkZvdW5kYXRpb24vQVZUaW1lLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1w
b3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworI2ltcG9ydCAiQ29yZU1lZGlhU29mdExpbmsuaCIKKworU09GVF9MSU5LX0ZSQU1FV09SSyhB
VktpdCkKK1NPRlRfTElOS19DTEFTUyhBVktpdCwgQVZWYWx1ZVRpbWluZykKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQoKQorICAgIDogbV9wbGF5ZXJDb250cm9sbGVyKGFkb3B0
TlMoW1tXZWJBVlBsYXllckNvbnRyb2xsZXIgYWxsb2NdIGluaXRdKSkKK3sKKyAgICBbbV9wbGF5
ZXJDb250cm9sbGVyIHNldFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTp0aGlzXTsKK30KKworV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6On5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdCgpCit7CisgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVy
ID0gbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpOworICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYm
IHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSkKKyAgICAgICAgc2V0RXh0
ZXJuYWxQbGF5YmFjayhmYWxzZSwgVGFyZ2V0VHlwZU5vbmUsICIiKTsKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6cmVzZXRNZWRpYVN0YXRlKCkKK3sKKyAgICBb
bV9wbGF5ZXJDb250cm9sbGVyIHJlc2V0U3RhdGVdOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0OjpzZXRXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbChXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbCogbW9kZWwpCit7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbCA9IG1v
ZGVsOworICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV9wbGF5YmFja1Nlc3Np
b25Nb2RlbF07Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNl
dER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIq
IHBsYXllckNvbnRyb2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7CisKKyAgICAvLyBG
SVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzAxNyB1c2Ug
Y29ycmVjdCB2YWx1ZXMgaW5zdGVhZCBvZiBkdXJhdGlvbiBmb3IgYWxsIHRoZXNlCisgICAgcGxh
eWVyQ29udHJvbGxlci5jb250ZW50RHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICBwbGF5ZXJDb250
cm9sbGVyLm1heFRpbWUgPSBkdXJhdGlvbjsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmNvbnRlbnRE
dXJhdGlvbldpdGhpbkVuZFRpbWVzID0gZHVyYXRpb247CisKKyAgICAvLyBGSVhNRTogd2UgdGFr
ZSB0aGlzIGFzIGFuIGluZGljYXRpb24gdGhhdCBwbGF5YmFjayBpcyByZWFkeS4KKyAgICBwbGF5
ZXJDb250cm9sbGVyLmNhblBsYXkgPSBZRVM7CisgICAgcGxheWVyQ29udHJvbGxlci5jYW5QYXVz
ZSA9IFlFUzsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmNhblRvZ2dsZVBsYXliYWNrID0gWUVTOwor
ICAgIHBsYXllckNvbnRyb2xsZXIuaGFzRW5hYmxlZEF1ZGlvID0gWUVTOworICAgIHBsYXllckNv
bnRyb2xsZXIuY2FuU2VlayA9IFlFUzsKKyAgICBwbGF5ZXJDb250cm9sbGVyLm1pblRpbWUgPSAw
OworICAgIHBsYXllckNvbnRyb2xsZXIuc3RhdHVzID0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVz
UmVhZHlUb1BsYXk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6
OnNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCit7
CisgICAgTlNUaW1lSW50ZXJ2YWwgYW5jaG9yVGltZVN0YW1wID0gIVttX3BsYXllckNvbnRyb2xs
ZXIgcmF0ZV0gPyBOQU4gOiBhbmNob3JUaW1lOworICAgIEFWVmFsdWVUaW1pbmcgKnRpbWluZyA9
IFtnZXRBVlZhbHVlVGltaW5nQ2xhc3MoKSB2YWx1ZVRpbWluZ1dpdGhBbmNob3JWYWx1ZTpjdXJy
ZW50VGltZQorICAgICAgICBhbmNob3JUaW1lU3RhbXA6YW5jaG9yVGltZVN0YW1wIHJhdGU6MF07
CisKKyAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldFRpbWluZzp0aW1pbmddOworfQorCit2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRCdWZmZXJlZFRpbWUoZG91Ymxl
IGJ1ZmZlcmVkVGltZSkKK3sKKyAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRy
b2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7CisgICAgZG91YmxlIGR1cmF0aW9uID0g
cGxheWVyQ29udHJvbGxlci5jb250ZW50RHVyYXRpb247CisgICAgZG91YmxlIG5vcm1hbGl6ZWRC
dWZmZXJlZFRpbWU7CisgICAgaWYgKCFkdXJhdGlvbikKKyAgICAgICAgbm9ybWFsaXplZEJ1ZmZl
cmVkVGltZSA9IDA7CisgICAgZWxzZQorICAgICAgICBub3JtYWxpemVkQnVmZmVyZWRUaW1lID0g
YnVmZmVyZWRUaW1lIC8gZHVyYXRpb247CisgICAgcGxheWVyQ29udHJvbGxlci5sb2FkZWRUaW1l
UmFuZ2VzID0gQFtAMCwgQChub3JtYWxpemVkQnVmZmVyZWRUaW1lKV07Cit9CisKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZs
b2F0IHBsYXliYWNrUmF0ZSkKK3sKKyAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldFJhdGU6aXNQ
bGF5aW5nID8gcGxheWJhY2tSYXRlIDogMC5dOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0OjpzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJiB0aW1l
UmFuZ2VzKQoreworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gc2Vla2FibGVSYW5nZXMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBFeGNlcHRpb25D
b2RlIGV4Y2VwdGlvbkNvZGU7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGltZVJh
bmdlcy5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIGRvdWJsZSBzdGFydCA9IHRpbWVSYW5nZXMu
c3RhcnQoaSwgZXhjZXB0aW9uQ29kZSk7CisgICAgICAgIGRvdWJsZSBlbmQgPSB0aW1lUmFuZ2Vz
LmVuZChpLCBleGNlcHRpb25Db2RlKTsKKworICAgICAgICBDTVRpbWVSYW5nZSByYW5nZSA9IENN
VGltZVJhbmdlTWFrZShDTVRpbWVNYWtlV2l0aFNlY29uZHMoc3RhcnQsIDEwMDApLCBDTVRpbWVN
YWtlV2l0aFNlY29uZHMoZW5kLXN0YXJ0LCAxMDAwKSk7CisgICAgICAgIFtzZWVrYWJsZVJhbmdl
cyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ01UaW1lUmFuZ2U6cmFuZ2VdXTsKKyAgICB9
CisKKyAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldFNlZWthYmxlVGltZVJhbmdlczpzZWVrYWJs
ZVJhbmdlcy5nZXQoKV07Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIGNhblBsYXlGYXN0UmV2ZXJzZSkKK3sKKyAg
ICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldENhblNjYW5CYWNrd2FyZDpjYW5QbGF5RmFzdFJldmVy
c2VdOworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBtZWRpYVNlbGVjdGlv
bk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMpCit7CisgICAgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aENhcGFjaXR5Om9wdGlvbnMuc2l6ZSgpXSk7CisgICAgZm9yIChhdXRvJiBu
YW1lIDogb3B0aW9ucykgeworICAgICAgICBSZXRhaW5QdHI8V2ViQVZNZWRpYVNlbGVjdGlvbk9w
dGlvbj4gd2ViT3B0aW9uID0gYWRvcHROUyhbW1dlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gYWxs
b2NdIGluaXRdKTsKKyAgICAgICAgW3dlYk9wdGlvbiBzZXRMb2NhbGl6ZWREaXNwbGF5TmFtZTpu
YW1lXTsKKyAgICAgICAgW3dlYk9wdGlvbnMgYWRkT2JqZWN0OndlYk9wdGlvbi5nZXQoKV07Cisg
ICAgfQorICAgIHJldHVybiB3ZWJPcHRpb25zOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBtZWRpYVNlbGVjdGlvbk9wdGlvbnMo
b3B0aW9ucyk7CisgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRBdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9uczp3ZWJPcHRpb25zLmdldCgpXTsKKyAgICBpZiAoc2VsZWN0ZWRJbmRleCA8IFt3ZWJP
cHRpb25zIGNvdW50XSkKKyAgICAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRDdXJyZW50QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbjpbd2ViT3B0aW9ucyBvYmplY3RBdEluZGV4OnN0YXRpY19j
YXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgpXV07Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit7Cisg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gbWVkaWFTZWxlY3Rpb25P
cHRpb25zKG9wdGlvbnMpOworICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0TGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9uczp3ZWJPcHRpb25zLmdldCgpXTsKKyAgICBpZiAoc2VsZWN0ZWRJbmRl
eCA8IFt3ZWJPcHRpb25zIGNvdW50XSkKKyAgICAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRD
dXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOlt3ZWJPcHRpb25zIG9iamVjdEF0SW5k
ZXg6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc2VsZWN0ZWRJbmRleCldXTsKK30KKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0RXh0ZXJuYWxQbGF5YmFjayhib29s
IGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRhcmdldFR5cGUsIFN0cmluZyBs
b2NhbGl6ZWREZXZpY2VOYW1lKQoreworICAgIEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxh
eWJhY2tUeXBlIGV4dGVybmFsUGxheWJhY2tUeXBlID0gQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJu
YWxQbGF5YmFja1R5cGVOb25lOworICAgIGlmICh0YXJnZXRUeXBlID09IFRhcmdldFR5cGVBaXJQ
bGF5KQorICAgICAgICBleHRlcm5hbFBsYXliYWNrVHlwZSA9IEFWUGxheWVyQ29udHJvbGxlckV4
dGVybmFsUGxheWJhY2tUeXBlQWlyUGxheTsKKyAgICBlbHNlIGlmICh0YXJnZXRUeXBlID09IFRh
cmdldFR5cGVUVk91dCkKKyAgICAgICAgZXh0ZXJuYWxQbGF5YmFja1R5cGUgPSBBVlBsYXllckNv
bnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZVRWT3V0OworCisgICAgV2ViQVZQbGF5ZXJDb250
cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpOworICAg
IHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FpclBsYXlEZXZpY2VMb2NhbGl6ZWRO
YW1lID0gbG9jYWxpemVkRGV2aWNlTmFtZTsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFs
UGxheWJhY2tUeXBlID0gZXh0ZXJuYWxQbGF5YmFja1R5cGU7CisgICAgcGxheWVyQ29udHJvbGxl
ci5leHRlcm5hbFBsYXliYWNrQWN0aXZlID0gZW5hYmxlZDsKKworICAgIGlmIChtX2NsaWVudCkK
KyAgICAgICAgbV9jbGllbnQtPmV4dGVybmFsUGxheWJhY2tFbmFibGVkQ2hhbmdlZChlbmFibGVk
KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0V2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKK3sKKyAgICBbbV9wbGF5ZXJD
b250cm9sbGVyIHNldEFsbG93c0V4dGVybmFsUGxheWJhY2s6IWRpc2FibGVkXTsKK30KKworYm9v
bCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6d2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9wbGF5ZXJDb250cm9sbGVyIGFsbG93
c0V4dGVybmFsUGxheWJhY2tdOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0OjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsID0gbmls
OworfQorCit9CisKKyNlbmRpZiAvLyBIQVZFKEFWS0lUKQorI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IDk5ZDFjMDdlZGM3YzliOWUw
MmZkZmJjNmZiN2I3ZjIxNTY1OTM1ZGMuLmI2OWNjMTJjYmJkZmEwYWVlMzQ3NGFkMjczNjE3Mjg5
ZWQwZGJkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMzMsNiArMzMs
OCBAQAogI2ltcG9ydCAiUXVhcnR6Q29yZVNQSS5oIgogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIK
ICNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKKyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0LmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dC5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCIKICNpbXBv
cnQgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgiCiAjaW1wb3J0ICJXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIgpAQCAtNTU0LDE0ICs1NTYsMTYgQEAgdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKEhU
TUxWaWRlb0VsZW1lbnQmIHZpZGUKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywgdmlld1JlZiwgbW9kZV0gewogICAgICAgICBB
U1NFUlQoaXNVSVRocmVhZCgpKTsKIAotICAgICAgICBtX2ludGVyZmFjZSA9IFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBwbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UgPSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6Y3JlYXRl
KCk7CisgICAgICAgIG1faW50ZXJmYWNlID0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmNyZWF0ZShwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuZ2V0KCkpOwogICAgICAgICBtX2lu
dGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIodGhpcyk7CiAgICAg
ICAgIG1faW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCh0aGlzKTsKICAgICAg
ICAgbV92aWRlb0Z1bGxzY3JlZW5WaWV3ID0gYWRvcHROUyhbW2dldFVJVmlld0NsYXNzKCkgYWxs
b2NdIGluaXRdKTsKICAgICAgICAgCiAgICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICAgICAgV2ViVGhyZWFkUnVu
KFtzdHJvbmdUaGlzLCB0aGlzLCB2aWV3UmVmLCBtb2RlXSB7Ci0gICAgICAgICAgICBtX21vZGVs
ID0gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSgpOworICAgICAg
ICAgICAgYXV0byBwbGF5YmFja1Nlc3Npb25Nb2RlbCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fbW9kZWwgPSBXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKHBsYXliYWNrU2Vzc2lvbk1vZGVsLmdl
dCgpKTsKICAgICAgICAgICAgIG1fbW9kZWwtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZSh0aGlzKTsKICAgICAgICAgICAgIG1fbW9kZWwtPnNldFZpZGVvRWxlbWVudChtX3ZpZGVvRWxl
bWVudC5nZXQoKSk7CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKaW5k
ZXggYzA3NDAwYTE4NTA4YjQzYTNiOTQyMGVhZGZlZWJlOGJiODM5OWFlYi4uY2UxZGYxMzNjMWI5
ZTk4MGIwNTFlMGY3NjQwMzYxN2Q3ZGNiMzViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRl
ICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIgogI2luY2x1ZGUgIldlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZS5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8
b2JqYy9vYmpjLmg+CkBAIC00MCwxNCArNDEsMTUgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi1PQkpDX0NMQVNTIFdlYkFWUGxheWVyQ29u
dHJvbGxlcjsKIE9CSkNfQ0xBU1MgQVZQbGF5ZXJWaWV3Q29udHJvbGxlcjsKIE9CSkNfQ0xBU1Mg
VUlWaWV3Q29udHJvbGxlcjsKIE9CSkNfQ0xBU1MgVUlXaW5kb3c7CiBPQkpDX0NMQVNTIFVJVmll
dzsKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKK09CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJDb250cm9sbGVy
OwogT0JKQ19DTEFTUyBXZWJBVlBsYXllckxheWVyVmlldzsKIE9CSkNfQ0xBU1MgV2ViQVZQbGF5
ZXJMYXllcjsKK09CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlOwog
CiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFN0cmluZzsKQEAgLTU1LDE4ICs1NywxNyBAQCBjbGFz
cyBTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEludFJlY3Q7CitjbGFzcyBX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDsKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsOwogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI7CiAgICAgCiBj
bGFzcyBXRUJDT1JFX0VYUE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdAogICAg
IDogcHVibGljIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZQorICAgICwgcHVibGljIFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Q2xpZW50CiAgICAgLCBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gewogCiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gY3JlYXRlKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0KCkpOwotICAgIH0KKyAgICBzdGF0aWMgUmVmPFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0PiBjcmVhdGUoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQmKTsKICAg
ICB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWwqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdlYlZpZGVvRnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyKFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKik7CkBAIC04
Myw3ICs4NCw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywg
dWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1Rhcmdl
dFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpIG92ZXJyaWRlOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkg
b3ZlcnJpZGU7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0dXBGdWxsc2Ny
ZWVuKFVJVmlldyYsIGNvbnN0IEludFJlY3QmIGluaXRpYWxSZWN0LCBVSVZpZXcgKiwgSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1cmVJ
blBpY3R1cmVQbGF5YmFjayk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGVudGVy
RnVsbHNjcmVlbigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNj
cmVlbihjb25zdCBJbnRSZWN0JiBmaW5hbFJlY3QpOwpAQCAtMTAwLDYgKzEwMCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgUGljdHVyZUluUGljdHVyZVN0YXJ0ZWQKICAgICB9OwogCisgICAgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWwqIG1vZGVsKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbDsgfQogICAgIGJvb2wgc2hvdWxkRXhpdEZ1bGxzY3JlZW5XaXRoUmVhc29uKEV4aXRG
dWxsU2NyZWVuUmVhc29uKTsKICAgICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgIGJvb2wgYWxsb3dz
UGljdHVyZUluUGljdHVyZVBsYXliYWNrKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NQaWN0dXJl
SW5QaWN0dXJlUGxheWJhY2s7IH0KQEAgLTEyMSwxMyArMTIyLDE2IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9k
ZSkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IG1vZGU7IH0KIAogcHJvdGVjdGVkOgotICAgIFdF
QkNPUkVfRVhQT1JUIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQVZLaXQmKTsKICAgICB2b2lkIGJlZ2luU2Vzc2lvbigpOwogICAgIHZv
aWQgZW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW5TdGFu
ZGFyZCgpOwogICAgIHZvaWQgd2F0Y2hkb2dUaW1lckZpcmVkKCk7CisgICAgdm9pZCBleHRlcm5h
bFBsYXliYWNrRW5hYmxlZENoYW5nZWQoYm9vbCkgb3ZlcnJpZGU7CisgICAgV2ViQVZQbGF5ZXJD
b250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyKCkgY29uc3Q7CiAKLSAgICBSZXRhaW5QdHI8V2Vi
QVZQbGF5ZXJDb250cm9sbGVyPiBtX3BsYXllckNvbnRyb2xsZXI7CisgICAgUmVmPFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKKyAg
ICBSZXRhaW5QdHI8V2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBtX3BsYXllclZp
ZXdDb250cm9sbGVyRGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPEFWUGxheWVyVmlld0NvbnRyb2xs
ZXI+IG1fcGxheWVyVmlld0NvbnRyb2xsZXI7CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwq
IG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgeyBudWxscHRyIH07CiAgICAgV2ViVmlkZW9GdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXIqIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyIHsgbnVsbHB0ciB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDY5ZGJkZjgxNGQ4NDM4MTM4NjM5
MDUxZTI4Yjg5ZDA5YmMzYTkzYmUuLjNkNThkOGUzOTY1NGFmOTM0OGY5YzVlM2M0OTYyZDg5MGQz
NjgyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTM3LDcgKzM3LDkgQEAK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5o
IgogI2ltcG9ydCAiVGltZVJhbmdlcy5oIgorI2ltcG9ydCAiV2ViQVZQbGF5ZXJDb250cm9sbGVy
LmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0ICJXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgiCiAj
aW1wb3J0IDxBVkZvdW5kYXRpb24vQVZUaW1lLmg+CkBAIC02MSw5ICs2Myw3IEBAIFNPRlRfTElO
S19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RG
aWxsLCBOU1N0cmluZyAqCiAKIFNPRlRfTElOS19GUkFNRVdPUksoQVZLaXQpCiBTT0ZUX0xJTktf
Q0xBU1MoQVZLaXQsIEFWUGljdHVyZUluUGljdHVyZUNvbnRyb2xsZXIpCi1TT0ZUX0xJTktfQ0xB
U1MoQVZLaXQsIEFWUGxheWVyQ29udHJvbGxlcikKIFNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZQ
bGF5ZXJWaWV3Q29udHJvbGxlcikKLVNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZWYWx1ZVRpbWlu
ZykKIFNPRlRfTElOS19DTEFTUyhBVktpdCwgX19BVlBsYXllckxheWVyVmlldykKIAogU09GVF9M
SU5LX0ZSQU1FV09SSyhVSUtpdCkKQEAgLTEyNSwxMjYgKzEyNSwyMiBAQCBzdGF0aWMgY29uc3Qg
ZG91YmxlIERlZmF1bHRXYXRjaGRvZ1RpbWVySW50ZXJ2YWwgPSAxOwogCiBAY2xhc3MgV2ViQVZN
ZWRpYVNlbGVjdGlvbk9wdGlvbjsKIAotQGludGVyZmFjZSBXZWJBVlBsYXllckNvbnRyb2xsZXIg
OiBOU09iamVjdCA8QVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlX1dlYktpdE9ubHk+IHsK
LSAgICBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpfY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb247Ci0gICAgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqX2N1cnJlbnRMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb247Ci0gICAgQk9PTCBfcGljdHVyZUluUGljdHVyZUludGVycnVw
dGVkOworQGludGVyZmFjZSBXZWJBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUgOiBOU09i
amVjdCA8QVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlX1dlYktpdE9ubHk+IHsKKyAgICBS
ZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IF9mdWxsc2NyZWVuSW50ZXJm
YWNlOwogfQotCi0tICh2b2lkKXJlc2V0U3RhdGU7Ci0KLUBwcm9wZXJ0eSAocmV0YWluKSBBVlBs
YXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXJQcm94eTsKLUBwcm9wZXJ0eSAoYXNzaWdu
KSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCogZGVsZWdhdGU7CiBAcHJvcGVydHkgKGFzc2lnbikg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQqIGZ1bGxzY3JlZW5JbnRlcmZhY2U7Ci0K
LUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY2FuU2NhbkZvcndhcmQ7Ci1AcHJvcGVydHkgQk9P
TCBjYW5TY2FuQmFja3dhcmQ7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGNhblNlZWtUb0Jl
Z2lubmluZzsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY2FuU2Vla1RvRW5kOwotCi1AcHJv
cGVydHkgQk9PTCBjYW5QbGF5OwotQHByb3BlcnR5IChnZXR0ZXI9aXNQbGF5aW5nKSBCT09MIHBs
YXlpbmc7Ci1AcHJvcGVydHkgQk9PTCBjYW5QYXVzZTsKLUBwcm9wZXJ0eSBCT09MIGNhblRvZ2ds
ZVBsYXliYWNrOwotQHByb3BlcnR5IGRvdWJsZSByYXRlOwotQHByb3BlcnR5IEJPT0wgY2FuU2Vl
azsKLUBwcm9wZXJ0eSBOU1RpbWVJbnRlcnZhbCBjb250ZW50RHVyYXRpb247Ci1AcHJvcGVydHkg
TlNTaXplIGNvbnRlbnREaW1lbnNpb25zOwotQHByb3BlcnR5IEJPT0wgaGFzRW5hYmxlZEF1ZGlv
OwotQHByb3BlcnR5IEJPT0wgaGFzRW5hYmxlZFZpZGVvOwotQHByb3BlcnR5IE5TVGltZUludGVy
dmFsIG1pblRpbWU7Ci1AcHJvcGVydHkgTlNUaW1lSW50ZXJ2YWwgbWF4VGltZTsKLUBwcm9wZXJ0
eSBOU1RpbWVJbnRlcnZhbCBjb250ZW50RHVyYXRpb25XaXRoaW5FbmRUaW1lczsKLUBwcm9wZXJ0
eSAocmV0YWluKSBOU0FycmF5ICpsb2FkZWRUaW1lUmFuZ2VzOwotQHByb3BlcnR5IEFWUGxheWVy
Q29udHJvbGxlclN0YXR1cyBzdGF0dXM7Ci1AcHJvcGVydHkgKHJldGFpbikgQVZWYWx1ZVRpbWlu
ZyAqdGltaW5nOwotQHByb3BlcnR5IChyZXRhaW4pIE5TQXJyYXkgKnNlZWthYmxlVGltZVJhbmdl
czsKLQotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBoYXNNZWRpYVNlbGVjdGlvbk9wdGlvbnM7
Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGhhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
OwotQHByb3BlcnR5IChyZXRhaW4pIE5TQXJyYXkgKmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
OwotQHByb3BlcnR5IChyZXRhaW4pIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKmN1cnJlbnRB
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOwotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBoYXNM
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOwotQHByb3BlcnR5IChyZXRhaW4pIE5TQXJyYXkg
KmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7Ci1AcHJvcGVydHkgKHJldGFpbikgV2ViQVZN
ZWRpYVNlbGVjdGlvbk9wdGlvbiAqY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjsK
LQotQHByb3BlcnR5IChyZWFkb25seSwgZ2V0dGVyPWlzUGxheWluZ09uRXh0ZXJuYWxTY3JlZW4p
IEJPT0wgcGxheWluZ09uRXh0ZXJuYWxTY3JlZW47Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0
ZXI9aXNQbGF5aW5nT25TZWNvbmRTY3JlZW4pIEJPT0wgcGxheWluZ09uU2Vjb25kU2NyZWVuOwot
QHByb3BlcnR5IChnZXR0ZXI9aXNFeHRlcm5hbFBsYXliYWNrQWN0aXZlKSBCT09MIGV4dGVybmFs
UGxheWJhY2tBY3RpdmU7Ci1AcHJvcGVydHkgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5
YmFja1R5cGUgZXh0ZXJuYWxQbGF5YmFja1R5cGU7Ci1AcHJvcGVydHkgKHJldGFpbikgTlNTdHJp
bmcgKmV4dGVybmFsUGxheWJhY2tBaXJQbGF5RGV2aWNlTG9jYWxpemVkTmFtZTsKLUBwcm9wZXJ0
eSBCT09MIGFsbG93c0V4dGVybmFsUGxheWJhY2s7Ci0KIC0gKEJPT0wpcGxheWVyVmlld0NvbnRy
b2xsZXI6KEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKilwbGF5ZXJWaWV3Q29udHJvbGxlciBzaG91
bGRFeGl0RnVsbFNjcmVlbldpdGhSZWFzb246KEFWUGxheWVyVmlld0NvbnRyb2xsZXJFeGl0RnVs
bFNjcmVlblJlYXNvbilyZWFzb247CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJBVlBsYXll
ckNvbnRyb2xsZXIKLQotLSAoaW5zdGFuY2V0eXBlKWluaXQKLXsKLSAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIHNlbGY7Ci0gICAgCi0gICAgX3BpY3R1cmVJ
blBpY3R1cmVJbnRlcnJ1cHRlZCA9IE5POwotICAgIGluaXRBVlBsYXllckNvbnRyb2xsZXIoKTsK
LSAgICBzZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eSA9IFtbYWxsb2NBVlBsYXllckNvbnRyb2xs
ZXJJbnN0YW5jZSgpIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQot
LSAodm9pZClkZWFsbG9jCi17Ci0gICAgW19wbGF5ZXJDb250cm9sbGVyUHJveHkgcmVsZWFzZV07
Ci0gICAgW19sb2FkZWRUaW1lUmFuZ2VzIHJlbGVhc2VdOwotICAgIFtfc2Vla2FibGVUaW1lUmFu
Z2VzIHJlbGVhc2VdOwotICAgIFtfdGltaW5nIHJlbGVhc2VdOwotICAgIFtfYXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnMgcmVsZWFzZV07Ci0gICAgW19sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zIHJlbGVhc2VdOwotICAgIFtfY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24gcmVs
ZWFzZV07Ci0gICAgW19jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uIHJlbGVhc2Vd
OwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClyZXNldFN0YXRlCitAaW1wbGVt
ZW50YXRpb24gV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlCistIChXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdCopZnVsbHNjcmVlbkludGVyZmFjZQogewotICAgIHNlbGYu
Y29udGVudER1cmF0aW9uID0gMDsKLSAgICBzZWxmLm1heFRpbWUgPSAwOwotICAgIHNlbGYuY29u
dGVudER1cmF0aW9uV2l0aGluRW5kVGltZXMgPSAwOwotICAgIHNlbGYubG9hZGVkVGltZVJhbmdl
cyA9IEBbXTsKLSAgICAKLSAgICBzZWxmLmNhblBsYXkgPSBOTzsKLSAgICBzZWxmLmNhblBhdXNl
ID0gTk87Ci0gICAgc2VsZi5jYW5Ub2dnbGVQbGF5YmFjayA9IE5POwotICAgIHNlbGYuaGFzRW5h
YmxlZEF1ZGlvID0gTk87Ci0gICAgc2VsZi5jYW5TZWVrID0gTk87Ci0gICAgc2VsZi5taW5UaW1l
ID0gMDsKLSAgICBzZWxmLnN0YXR1cyA9IEFWUGxheWVyQ29udHJvbGxlclN0YXR1c1Vua25vd247
Ci0gICAgCi0gICAgc2VsZi50aW1pbmcgPSBuaWw7Ci0gICAgc2VsZi5yYXRlID0gMDsKLSAgICAK
LSAgICBzZWxmLmhhc0VuYWJsZWRWaWRlbyA9IE5POwotICAgIHNlbGYuY29udGVudERpbWVuc2lv
bnMgPSBDR1NpemVNYWtlKDAsIDApOwotICAgIAotICAgIHNlbGYuc2Vla2FibGVUaW1lUmFuZ2Vz
ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAgICAKLSAgICBzZWxmLmNhblNjYW5CYWNrd2Fy
ZCA9IE5POwotICAgIAotICAgIHNlbGYuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBuaWw7
Ci0gICAgc2VsZi5jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsKLSAgICAK
LSAgICBzZWxmLmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBuaWw7Ci0gICAgc2VsZi5j
dXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uID0gbmlsOwotfQotCi0tIChBVlBsYXll
ciAqKSBwbGF5ZXIKLXsKLSAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBfZnVsbHNjcmVlbklu
dGVyZmFjZS5nZXQoKTsKIH0KIAotLSAoaWQpZm9yd2FyZGluZ1RhcmdldEZvclNlbGVjdG9yOihT
RUwpc2VsZWN0b3IKKy0gKHZvaWQpc2V0RnVsbHNjcmVlbkludGVyZmFjZTooV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQqKWZ1bGxzY3JlZW5JbnRlcmZhY2UKIHsKLSAgICBVTlVTRURf
UEFSQU0oc2VsZWN0b3IpOwotICAgIHJldHVybiBzZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eTsK
KyAgICBfZnVsbHNjcmVlbkludGVyZmFjZSA9IGZ1bGxzY3JlZW5JbnRlcmZhY2U7CiB9CiAKIC0g
KHZvaWQpcGxheWVyVmlld0NvbnRyb2xsZXJXaWxsU3RhcnRQaWN0dXJlSW5QaWN0dXJlOihBVlBs
YXllclZpZXdDb250cm9sbGVyICopcGxheWVyVmlld0NvbnRyb2xsZXIKQEAgLTMwNSwzNTggKzIw
MSwxMiBAQCAtICh2b2lkKXBsYXllclZpZXdDb250cm9sbGVyOihBVlBsYXllclZpZXdDb250cm9s
bGVyICopcGxheWVyVmlld0NvbnRyb2xsZXIgcmVzdAogICAgIFVOVVNFRF9QQVJBTShwbGF5ZXJW
aWV3Q29udHJvbGxlcik7CiAgICAgc2VsZi5mdWxsc2NyZWVuSW50ZXJmYWNlLT5wcmVwYXJlRm9y
UGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXIoY29tcGxldGlvbkhhbmRs
ZXIpOwogfQotCi0tICh2b2lkKXBsYXk6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShz
ZW5kZXIpOwotICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNl
bGYuZGVsZWdhdGUtPnBsYXkoKTsKLX0KLQotLSAodm9pZClwYXVzZTooaWQpc2VuZGVyCi17Ci0g
ICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgaWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAg
ICByZXR1cm47Ci0gICAgc2VsZi5kZWxlZ2F0ZS0+cGF1c2UoKTsKLX0KLQotLSAodm9pZCl0b2dn
bGVQbGF5YmFjazooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAg
aWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgc2VsZi5kZWxlZ2F0ZS0+
dG9nZ2xlUGxheVN0YXRlKCk7Ci19Ci0KLS0gKHZvaWQpdG9nZ2xlUGxheWJhY2tFdmVuV2hlbklu
QmFja2dyb3VuZDooaWQpc2VuZGVyCi17Ci0gICAgW3NlbGYgdG9nZ2xlUGxheWJhY2s6c2VuZGVy
XTsKLX0KLQotLSAoQk9PTClpc1BsYXlpbmcKLXsKLSAgICByZXR1cm4gW3NlbGYgcmF0ZV0gIT0g
MDsKLX0KLQotLSAodm9pZClzZXRQbGF5aW5nOihCT09MKXBsYXlpbmcKLXsKLSAgICBpZiAoIXNl
bGYuZGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAocGxheWluZykKLSAgICAgICAg
c2VsZi5kZWxlZ2F0ZS0+cGxheSgpOwotICAgIGVsc2UKLSAgICAgICAgc2VsZi5kZWxlZ2F0ZS0+
cGF1c2UoKTsKLX0KLQotKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ1BsYXlp
bmcKLXsKLSAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3Q6QCJyYXRlIl07Ci19Ci0KLS0g
KHZvaWQpYmVnaW5TY3J1YmJpbmc6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5k
ZXIpOwotICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNlbGYu
ZGVsZWdhdGUtPmJlZ2luU2NydWJiaW5nKCk7Ci19Ci0KLS0gKHZvaWQpZW5kU2NydWJiaW5nOihp
ZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBpZiAoIXNlbGYuZGVs
ZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBzZWxmLmRlbGVnYXRlLT5lbmRTY3J1YmJpbmco
KTsKLX0KLQotLSAodm9pZClzZWVrVG9UaW1lOihOU1RpbWVJbnRlcnZhbCl0aW1lCi17Ci0gICAg
aWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgc2VsZi5kZWxlZ2F0ZS0+
ZmFzdFNlZWsodGltZSk7Ci19Ci0KLS0gKE5TVGltZUludGVydmFsKWN1cnJlbnRUaW1lV2l0aGlu
RW5kVGltZXMKLXsKLSAgICByZXR1cm4gc2VsZi50aW1pbmcuY3VycmVudFZhbHVlOwotfQotCi0t
ICh2b2lkKXNldEN1cnJlbnRUaW1lV2l0aGluRW5kVGltZXM6KE5TVGltZUludGVydmFsKWN1cnJl
bnRUaW1lV2l0aGluRW5kVGltZXMKLXsKLSAgICBbc2VsZiBzZWVrVG9UaW1lOmN1cnJlbnRUaW1l
V2l0aGluRW5kVGltZXNdOwotfQotCi0rIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0
aW5nQ3VycmVudFRpbWVXaXRoaW5FbmRUaW1lcwotewotICAgIHJldHVybiBbTlNTZXQgc2V0V2l0
aE9iamVjdDpAInRpbWluZyJdOwotfQotCi0tIChCT09MKWhhc0xpdmVTdHJlYW1pbmdDb250ZW50
Ci17Ci0gICAgaWYgKFtzZWxmIHN0YXR1c10gPT0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzUmVh
ZHlUb1BsYXkpCi0gICAgICAgIHJldHVybiBbc2VsZiBjb250ZW50RHVyYXRpb25dID09IHN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOwotICAgIHJldHVybiBOTzsKLX0KLQot
KyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ0hhc0xpdmVTdHJlYW1pbmdDb250
ZW50Ci17Ci0gICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0czpAImNvbnRlbnREdXJhdGlv
biIsIEAic3RhdHVzIiwgbmlsXTsKLX0KLQotLSAodm9pZClza2lwQmFja3dhcmRUaGlydHlTZWNv
bmRzOihpZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBCT09MIGlz
VGltZVdpdGhpblNlZWthYmxlVGltZVJhbmdlcyA9IE5POwotICAgIENNVGltZSBjdXJyZW50VGlt
ZSA9IENNVGltZU1ha2VXaXRoU2Vjb25kcyhbW3NlbGYgdGltaW5nXSBjdXJyZW50VmFsdWVdLCAx
MDAwKTsKLSAgICBDTVRpbWUgdGhpcnR5U2Vjb25kc0JlZm9yZUN1cnJlbnRUaW1lID0gQ01UaW1l
U3VidHJhY3QoY3VycmVudFRpbWUsIENNVGltZU1ha2UoMzAsIDEpKTsKLSAgICAKLSAgICBmb3Ig
KE5TVmFsdWUgKnNlZWthYmxlVGltZVJhbmdlVmFsdWUgaW4gW3NlbGYgc2Vla2FibGVUaW1lUmFu
Z2VzXSkgewotICAgICAgICBpZiAoQ01UaW1lUmFuZ2VDb250YWluc1RpbWUoW3NlZWthYmxlVGlt
ZVJhbmdlVmFsdWUgQ01UaW1lUmFuZ2VWYWx1ZV0sIHRoaXJ0eVNlY29uZHNCZWZvcmVDdXJyZW50
VGltZSkpIHsKLSAgICAgICAgICAgIGlzVGltZVdpdGhpblNlZWthYmxlVGltZVJhbmdlcyA9IFlF
UzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmIChp
c1RpbWVXaXRoaW5TZWVrYWJsZVRpbWVSYW5nZXMpCi0gICAgICAgIFtzZWxmIHNlZWtUb1RpbWU6
Q01UaW1lR2V0U2Vjb25kcyh0aGlydHlTZWNvbmRzQmVmb3JlQ3VycmVudFRpbWUpXTsKLX0KLQot
LSAodm9pZClnb3RvRW5kT2ZTZWVrYWJsZVJhbmdlczooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VE
X1BBUkFNKHNlbmRlcik7Ci0gICAgTlNUaW1lSW50ZXJ2YWwgdGltZUF0RW5kT2ZTZWVrYWJsZVRp
bWVSYW5nZXMgPSBOQU47Ci0gICAgCi0gICAgZm9yIChOU1ZhbHVlICpzZWVrYWJsZVRpbWVSYW5n
ZVZhbHVlIGluIFtzZWxmIHNlZWthYmxlVGltZVJhbmdlc10pIHsKLSAgICAgICAgQ01UaW1lUmFu
Z2Ugc2Vla2FibGVUaW1lUmFuZ2UgPSBbc2Vla2FibGVUaW1lUmFuZ2VWYWx1ZSBDTVRpbWVSYW5n
ZVZhbHVlXTsKLSAgICAgICAgTlNUaW1lSW50ZXJ2YWwgZW5kT2ZTZWVrYWJsZVRpbWVSYW5nZSA9
IENNVGltZUdldFNlY29uZHMoQ01UaW1lUmFuZ2VHZXRFbmQoc2Vla2FibGVUaW1lUmFuZ2UpKTsK
LSAgICAgICAgaWYgKGlzbmFuKHRpbWVBdEVuZE9mU2Vla2FibGVUaW1lUmFuZ2VzKSB8fCBlbmRP
ZlNlZWthYmxlVGltZVJhbmdlID4gdGltZUF0RW5kT2ZTZWVrYWJsZVRpbWVSYW5nZXMpCi0gICAg
ICAgICAgICB0aW1lQXRFbmRPZlNlZWthYmxlVGltZVJhbmdlcyA9IGVuZE9mU2Vla2FibGVUaW1l
UmFuZ2U7Ci0gICAgfQotICAgIAotICAgIGlmICghaXNuYW4odGltZUF0RW5kT2ZTZWVrYWJsZVRp
bWVSYW5nZXMpKQotICAgICAgICBbc2VsZiBzZWVrVG9UaW1lOnRpbWVBdEVuZE9mU2Vla2FibGVU
aW1lUmFuZ2VzXTsKLX0KLQotLSAoQk9PTCljYW5TY2FuRm9yd2FyZAotewotICAgIHJldHVybiBb
c2VsZiBjYW5QbGF5XTsKLX0KLQotKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGlu
Z0NhblNjYW5Gb3J3YXJkCi17Ci0gICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAiY2Fu
UGxheSJdOwotfQotCi0tICh2b2lkKWJlZ2luU2Nhbm5pbmdGb3J3YXJkOihpZClzZW5kZXIKLXsK
LSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCi0gICAg
ICAgIHJldHVybjsKLSAgICBzZWxmLmRlbGVnYXRlLT5iZWdpblNjYW5uaW5nRm9yd2FyZCgpOwot
fQotCi0tICh2b2lkKWVuZFNjYW5uaW5nRm9yd2FyZDooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VE
X1BBUkFNKHNlbmRlcik7Ci0gICAgaWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47
Ci0gICAgc2VsZi5kZWxlZ2F0ZS0+ZW5kU2Nhbm5pbmcoKTsKLX0KLQotLSAodm9pZCliZWdpblNj
YW5uaW5nQmFja3dhcmQ6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwot
ICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNlbGYuZGVsZWdh
dGUtPmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpOwotfQotCi0tICh2b2lkKWVuZFNjYW5uaW5nQmFj
a3dhcmQ6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIGlmICgh
c2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNlbGYuZGVsZWdhdGUtPmVuZFNj
YW5uaW5nKCk7Ci19Ci0KLS0gKEJPT0wpY2FuU2Vla1RvQmVnaW5uaW5nCi17Ci0gICAgQ01UaW1l
IG1pbmltdW1UaW1lID0ga0NNVGltZUluZGVmaW5pdGU7Ci0KLSAgICBmb3IgKE5TVmFsdWUgKnZh
bHVlIGluIFtzZWxmIHNlZWthYmxlVGltZVJhbmdlc10pCi0gICAgICAgIG1pbmltdW1UaW1lID0g
Q01UaW1lTWluaW11bShbdmFsdWUgQ01UaW1lUmFuZ2VWYWx1ZV0uc3RhcnQsIG1pbmltdW1UaW1l
KTsKLQotICAgIHJldHVybiBDTVRJTUVfSVNfTlVNRVJJQyhtaW5pbXVtVGltZSk7Ci19Ci0KLSsg
KE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdDYW5TZWVrVG9CZWdpbm5pbmcKLXsK
LSAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3Q6QCJzZWVrYWJsZVRpbWVSYW5nZXMiXTsK
LX0KLQotLSAodm9pZClzZWVrVG9CZWdpbm5pbmc6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9Q
QVJBTShzZW5kZXIpOwotICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIHNlbGYuZGVsZWdhdGUtPnNlZWtUb1RpbWUoLUlORklOSVRZKTsKLX0KLQotLSAodm9pZClz
ZWVrQ2hhcHRlckJhY2t3YXJkOihpZClzZW5kZXIKLXsKLSAgICBbc2VsZiBzZWVrVG9CZWdpbm5p
bmc6c2VuZGVyXTsKLX0KLQotLSAoQk9PTCljYW5TZWVrVG9FbmQKLXsKLSAgICBDTVRpbWUgbWF4
aW11bVRpbWUgPSBrQ01UaW1lSW5kZWZpbml0ZTsKLQotICAgIGZvciAoTlNWYWx1ZSAqdmFsdWUg
aW4gW3NlbGYgc2Vla2FibGVUaW1lUmFuZ2VzXSkKLSAgICAgICAgbWF4aW11bVRpbWUgPSBDTVRp
bWVNYXhpbXVtKENNVGltZVJhbmdlR2V0RW5kKFt2YWx1ZSBDTVRpbWVSYW5nZVZhbHVlXSksIG1h
eGltdW1UaW1lKTsKLQotICAgIHJldHVybiBDTVRJTUVfSVNfTlVNRVJJQyhtYXhpbXVtVGltZSk7
Ci19Ci0KLSsgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdDYW5TZWVrVG9FbmQK
LXsKLSAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3Q6QCJzZWVrYWJsZVRpbWVSYW5nZXMi
XTsKLX0KLQotLSAodm9pZClzZWVrVG9FbmQ6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJB
TShzZW5kZXIpOwotICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAg
IHNlbGYuZGVsZWdhdGUtPnNlZWtUb1RpbWUoSU5GSU5JVFkpOwotfQotCi0tICh2b2lkKXNlZWtD
aGFwdGVyRm9yd2FyZDooaWQpc2VuZGVyCi17Ci0gICAgW3NlbGYgc2Vla1RvRW5kOnNlbmRlcl07
Ci19Ci0KLS0gKEJPT0wpaGFzTWVkaWFTZWxlY3Rpb25PcHRpb25zCi17Ci0gICAgcmV0dXJuIFtz
ZWxmIGhhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zXSB8fCBbc2VsZiBoYXNMZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb25zXTsKLX0KLQotKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0Fm
ZmVjdGluZ0hhc01lZGlhU2VsZWN0aW9uT3B0aW9ucwotewotICAgIHJldHVybiBbTlNTZXQgc2V0
V2l0aE9iamVjdHM6QCJoYXNBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyIsIEAiaGFzTGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyIsIG5pbF07Ci19Ci0KLS0gKEJPT0wpaGFzQXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnMKLXsKLSAgICByZXR1cm4gW1tzZWxmIGF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zXSBjb3VudF0gPiAxOwotfQotCi0rIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVz
QWZmZWN0aW5nSGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMKLXsKLSAgICByZXR1cm4gW05T
U2V0IHNldFdpdGhPYmplY3Q6QCJhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyJdOwotfQotCi0t
IChCT09MKWhhc0xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMKLXsKLSAgICBjb25zdCBOU1VJ
bnRlZ2VyIG51bURlZmF1bHRMZWdpYmxlT3B0aW9ucyA9IDI7Ci0gICAgcmV0dXJuIFtbc2VsZiBs
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zXSBjb3VudF0gPiBudW1EZWZhdWx0TGVnaWJsZU9w
dGlvbnM7Ci19Ci0KLSsgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdIYXNMZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zCi17Ci0gICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2Jq
ZWN0OkAibGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyJdOwotfQotCi0tIChXZWJBVk1lZGlh
U2VsZWN0aW9uT3B0aW9uICopY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24KLXsKLSAg
ICByZXR1cm4gX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOwotfQotCi0tICh2b2lk
KXNldEN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOihXZWJBVk1lZGlhU2VsZWN0aW9u
T3B0aW9uICopb3B0aW9uCi17Ci0gICAgaWYgKG9wdGlvbiA9PSBfY3VycmVudEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb24pCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBbX2N1cnJlbnRBdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9uIHJlbGVhc2VdOwotICAgIF9jdXJyZW50QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbiA9IFtvcHRpb24gcmV0YWluXTsKLSAgICAKLSAgICBpZiAoIXNlbGYuZGVs
ZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBOU0ludGVnZXIgaW5kZXggPSBOU05v
dEZvdW5kOwotICAgIAotICAgIGlmIChvcHRpb24gJiYgc2VsZi5hdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9ucykKLSAgICAgICAgaW5kZXggPSBbc2VsZi5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
cyBpbmRleE9mT2JqZWN0Om9wdGlvbl07Ci0gICAgCi0gICAgc2VsZi5kZWxlZ2F0ZS0+c2VsZWN0
QXVkaW9NZWRpYU9wdGlvbihpbmRleCAhPSBOU05vdEZvdW5kID8gaW5kZXggOiBVSU5UNjRfTUFY
KTsKLX0KLQotLSAoV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb24KLXsKLSAgICByZXR1cm4gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb247Ci19Ci0KLS0gKHZvaWQpc2V0Q3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbjooV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKW9wdGlvbgotewotICAgIGlmIChv
cHRpb24gPT0gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24pCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBbX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gcmVs
ZWFzZV07Ci0gICAgX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gPSBbb3B0aW9u
IHJldGFpbl07Ci0gICAgCi0gICAgaWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgTlNJbnRlZ2VyIGluZGV4ID0gTlNOb3RGb3VuZDsKLSAgICAKLSAgICBpZiAo
b3B0aW9uICYmIHNlbGYubGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucykKLSAgICAgICAgaW5k
ZXggPSBbc2VsZi5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zIGluZGV4T2ZPYmplY3Q6b3B0
aW9uXTsKLSAgICAKLSAgICBzZWxmLmRlbGVnYXRlLT5zZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24o
aW5kZXggIT0gTlNOb3RGb3VuZCA/IGluZGV4IDogVUlOVDY0X01BWCk7Ci19Ci0KLS0gKEJPT0wp
aXNQbGF5aW5nT25FeHRlcm5hbFNjcmVlbgotewotICAgIHJldHVybiBbc2VsZiBpc0V4dGVybmFs
UGxheWJhY2tBY3RpdmVdIHx8IFtzZWxmIGlzUGxheWluZ09uU2Vjb25kU2NyZWVuXTsKLX0KLQot
KyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ1BsYXlpbmdPbkV4dGVybmFsU2Ny
ZWVuCi17Ci0gICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0czpAImV4dGVybmFsUGxheWJh
Y2tBY3RpdmUiLCBAInBsYXlpbmdPblNlY29uZFNjcmVlbiIsIG5pbF07Ci19Ci0KLS0gKEJPT0wp
aXNQaWN0dXJlSW5QaWN0dXJlUG9zc2libGUKLXsKLSAgICByZXR1cm4gc2VsZi5mdWxsc2NyZWVu
SW50ZXJmYWNlLT5hbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2soKTsKLX0KLQotLSAoQk9P
TClpc1BpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZAotewotICAgIHJldHVybiBfcGljdHVyZUlu
UGljdHVyZUludGVycnVwdGVkOwotfQotCi0tICh2b2lkKXNldFBpY3R1cmVJblBpY3R1cmVJbnRl
cnJ1cHRlZDooQk9PTClwaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQKLXsKLSAgICBpZiAoX3Bp
Y3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZCAhPSBwaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQp
IHsKLSAgICAgICAgX3BpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZCA9IHBpY3R1cmVJblBpY3R1
cmVJbnRlcnJ1cHRlZDsKLSAgICAgICAgaWYgKHBpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZCkK
LSAgICAgICAgICAgIFtzZWxmIHNldFBsYXlpbmc6Tk9dOwotICAgIH0KLX0KLQotQGVuZAotCi1A
aW50ZXJmYWNlIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gOiBOU09iamVjdAotQHByb3BlcnR5
IChyZXRhaW4pIE5TU3RyaW5nICpsb2NhbGl6ZWREaXNwbGF5TmFtZTsKLUBlbmQKLQotQGltcGxl
bWVudGF0aW9uIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24KIEBlbmQKIAogQGludGVyZmFjZSBX
ZWJBVlBsYXllckxheWVyIDogQ0FMYXllcgogQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikg
TlNTdHJpbmcgKnZpZGVvR3Jhdml0eTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNS
ZWFkeUZvckRpc3BsYXkpIEJPT0wgcmVhZHlGb3JEaXNwbGF5OworQHByb3BlcnR5IChub25hdG9t
aWMsIGFzc2lnbikgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQqIGZ1bGxzY3JlZW5J
bnRlcmZhY2U7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBBVlBsYXllckNvbnRyb2xs
ZXIgKnBsYXllckNvbnRyb2xsZXI7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBDQUxh
eWVyICp2aWRlb1N1YmxheWVyOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxl
KSBOU0RpY3Rpb25hcnkgKnBpeGVsQnVmZmVyQXR0cmlidXRlczsKQEAgLTY2NSw2ICsyMTUsNyBA
QCBAcHJvcGVydHkgQ0dSZWN0IG1vZGVsVmlkZW9MYXllckZyYW1lOwogQGVuZAogCiBAaW1wbGVt
ZW50YXRpb24gV2ViQVZQbGF5ZXJMYXllciB7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0PiBfZnVsbHNjcmVlbkludGVyZmFjZTsKICAgICBSZXRhaW5QdHI8V2Vi
QVZQbGF5ZXJDb250cm9sbGVyPiBfYXZQbGF5ZXJDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxD
QUxheWVyPiBfdmlkZW9TdWJsYXllcjsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF92aWRlb0dy
YXZpdHk7CkBAIC02ODYsNiArMjM3LDE2IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBk
ZWFsbG9jXTsKIH0KIAorLSAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQqKWZ1bGxz
Y3JlZW5JbnRlcmZhY2UKK3sKKyAgICByZXR1cm4gX2Z1bGxzY3JlZW5JbnRlcmZhY2UuZ2V0KCk7
Cit9CisKKy0gKHZvaWQpc2V0RnVsbHNjcmVlbkludGVyZmFjZTooV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQqKWZ1bGxzY3JlZW5JbnRlcmZhY2UKK3sKKyAgICBfZnVsbHNjcmVlbklu
dGVyZmFjZSA9IGZ1bGxzY3JlZW5JbnRlcmZhY2U7Cit9CisKIC0gKEFWUGxheWVyQ29udHJvbGxl
ciAqKXBsYXllckNvbnRyb2xsZXIKIHsKICAgICByZXR1cm4gKEFWUGxheWVyQ29udHJvbGxlciAq
KV9hdlBsYXllckNvbnRyb2xsZXIuZ2V0KCk7CkBAIC03MzMsNyArMjk0LDcgQEAgLSAodm9pZCls
YXlvdXRTdWJsYXllcnMKICAgICB9IGVsc2UgaWYgKFtnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVz
aXplQXNwZWN0RmlsbCgpIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pIHsKICAg
ICAgICAgc291cmNlVmlkZW9GcmFtZSA9IHNtYWxsZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0Fyb3Vu
ZFJlY3QodmlkZW9Bc3BlY3RSYXRpbywgc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSk7CiAgICAg
ICAgIHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUgPSBDR1JlY3RNYWtlKDAsIDAsIHNvdXJjZVZp
ZGVvRnJhbWUud2lkdGgoKSwgc291cmNlVmlkZW9GcmFtZS5oZWlnaHQoKSk7Ci0gICAgICAgIFtf
YXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXS0+c2V0VmlkZW9MYXllckZyYW1lKHNlbGYubW9k
ZWxWaWRlb0xheWVyRnJhbWUpOworICAgICAgICBfZnVsbHNjcmVlbkludGVyZmFjZS0+bW9kZWwo
KS0+c2V0VmlkZW9MYXllckZyYW1lKHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUpOwogICAgICAg
ICB0YXJnZXRWaWRlb0ZyYW1lID0gc21hbGxlc3RSZWN0V2l0aEFzcGVjdFJhdGlvQXJvdW5kUmVj
dCh2aWRlb0FzcGVjdFJhdGlvLCBzZWxmLmJvdW5kcyk7CiAgICAgfSBlbHNlCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNzY1LDcgKzMyNiw3IEBAIC0gKHZvaWQpcmVzb2x2ZUJv
dW5kcwogICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CiAgICAgCiAg
ICAgc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSA9IFtzZWxmIGJvdW5kc107Ci0gICAgW19hdlBs
YXllckNvbnRyb2xsZXIgZGVsZWdhdGVdLT5zZXRWaWRlb0xheWVyRnJhbWUoc2VsZi5tb2RlbFZp
ZGVvTGF5ZXJGcmFtZSk7CisgICAgX2Z1bGxzY3JlZW5JbnRlcmZhY2UtPm1vZGVsKCktPnNldFZp
ZGVvTGF5ZXJGcmFtZShzZWxmLm1vZGVsVmlkZW9MYXllckZyYW1lKTsKICAgICBbKFVJVmlldyAq
KVtfdmlkZW9TdWJsYXllciBkZWxlZ2F0ZV0gc2V0VHJhbnNmb3JtOkNHQWZmaW5lVHJhbnNmb3Jt
SWRlbnRpdHldOwogICAgIAogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CkBAIC03ODgsNyAr
MzQ5LDcgQEAgLSAodm9pZClzZXRWaWRlb0dyYXZpdHk6KE5TU3RyaW5nICopdmlkZW9HcmF2aXR5
CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAKLSAgICBbX2F2
UGxheWVyQ29udHJvbGxlciBkZWxlZ2F0ZV0tPnNldFZpZGVvTGF5ZXJHcmF2aXR5KGdyYXZpdHkp
OworICAgIF9mdWxsc2NyZWVuSW50ZXJmYWNlLT5tb2RlbCgpLT5zZXRWaWRlb0xheWVyR3Jhdml0
eShncmF2aXR5KTsKIH0KIAogLSAoTlNTdHJpbmcgKil2aWRlb0dyYXZpdHkKQEAgLTk1NCwzNSAr
NTE1LDQwIEBAIHN0YXRpYyBDbGFzcyBnZXRXZWJBVlBsYXllckxheWVyVmlld0NsYXNzKCkKICAg
ICByZXR1cm4gdGhlQ2xhc3M7CiB9CiAKLVdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCi0gICAgOiBtX3BsYXllckNvbnRy
b2xsZXIoYWRvcHROUyhbW1dlYkFWUGxheWVyQ29udHJvbGxlciBhbGxvY10gaW5pdF0pKQorUmVm
PFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6Y3JlYXRlKFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0JiBwbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2UpCit7CisgICAgUmVmPFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0PiBpbnRlcmZhY2UgPSBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0KHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkpOworICAgIFtpbnRlcmZhY2Ut
Pm1fcGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOmlu
dGVyZmFjZS5wdHIoKV07CisgICAgcmV0dXJuIGludGVyZmFjZTsKK30KKworV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0JiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Up
CisgICAgOiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZShwbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UpCisgICAgLCBtX3BsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUoYWRvcHROUyhbW1dlYkFW
UGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pKQogICAgICwgbV93YXRj
aGRvZ1RpbWVyKCp0aGlzLCAmV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OndhdGNo
ZG9nVGltZXJGaXJlZCkKIHsKLSAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldEZ1bGxzY3JlZW5J
bnRlcmZhY2U6dGhpc107CiB9CiAKIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp+
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogewotICAgIFdlYkFWUGxheWVyQ29u
dHJvbGxlciogcGxheWVyQ29udHJvbGxlciA9IG1fcGxheWVyQ29udHJvbGxlci5nZXQoKTsKKyAg
ICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSB0aGlzLT5wbGF5ZXJD
b250cm9sbGVyKCk7CiAgICAgaWYgKHBsYXllckNvbnRyb2xsZXIgJiYgcGxheWVyQ29udHJvbGxl
ci5leHRlcm5hbFBsYXliYWNrQWN0aXZlKQogICAgICAgICBzZXRFeHRlcm5hbFBsYXliYWNrKGZh
bHNlLCBUYXJnZXRUeXBlTm9uZSwgIiIpOwogfQogCitXZWJBVlBsYXllckNvbnRyb2xsZXIgKldl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwbGF5ZXJDb250cm9sbGVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnBsYXllckNvbnRyb2xs
ZXIoKTsKK30KKwogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cmVzZXRN
ZWRpYVN0YXRlKCkKIHsKLSAgICBpZiAoIW1fcGxheWVyQ29udHJvbGxlcikgewotICAgICAgICBt
X3BsYXllckNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGFsbG9j
XSBpbml0XSk7Ci0gICAgICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV92aWRl
b0Z1bGxzY3JlZW5Nb2RlbF07Ci0gICAgICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0RnVsbHNj
cmVlbkludGVyZmFjZTp0aGlzXTsKLSAgICAgICAgCi0gICAgfSBlbHNlCi0gICAgICAgIFttX3Bs
YXllckNvbnRyb2xsZXIgcmVzZXRTdGF0ZV07CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UtPnJlc2V0TWVkaWFTdGF0ZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbChXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbCogbW9kZWwpCiB7CiAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCA9IG1vZGVsOwotICAg
IFttX3BsYXllckNvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbF07
CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFdlYlZpZGVv
RnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVy
KiBvYnNlcnZlcikKQEAgLTk5Miw0NyArNTU4LDIyIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKFdlYlZp
CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldER1cmF0aW9uKGRv
dWJsZSBkdXJhdGlvbikKIHsKLSAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRy
b2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7Ci0KLSAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzAxNyB1c2UgY29ycmVjdCB2YWx1
ZXMgaW5zdGVhZCBvZiBkdXJhdGlvbiBmb3IgYWxsIHRoZXNlCi0gICAgcGxheWVyQ29udHJvbGxl
ci5jb250ZW50RHVyYXRpb24gPSBkdXJhdGlvbjsKLSAgICBwbGF5ZXJDb250cm9sbGVyLm1heFRp
bWUgPSBkdXJhdGlvbjsKLSAgICBwbGF5ZXJDb250cm9sbGVyLmNvbnRlbnREdXJhdGlvbldpdGhp
bkVuZFRpbWVzID0gZHVyYXRpb247Ci0KLSAgICAvLyBGSVhNRTogd2UgdGFrZSB0aGlzIGFzIGFu
IGluZGljYXRpb24gdGhhdCBwbGF5YmFjayBpcyByZWFkeS4KLSAgICBwbGF5ZXJDb250cm9sbGVy
LmNhblBsYXkgPSBZRVM7Ci0gICAgcGxheWVyQ29udHJvbGxlci5jYW5QYXVzZSA9IFlFUzsKLSAg
ICBwbGF5ZXJDb250cm9sbGVyLmNhblRvZ2dsZVBsYXliYWNrID0gWUVTOwotICAgIHBsYXllckNv
bnRyb2xsZXIuaGFzRW5hYmxlZEF1ZGlvID0gWUVTOwotICAgIHBsYXllckNvbnRyb2xsZXIuY2Fu
U2VlayA9IFlFUzsKLSAgICBwbGF5ZXJDb250cm9sbGVyLm1pblRpbWUgPSAwOwotICAgIHBsYXll
ckNvbnRyb2xsZXIuc3RhdHVzID0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzUmVhZHlUb1BsYXk7
CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsK
IH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0Q3VycmVudFRp
bWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKIHsKLSAgICBOU1RpbWVJ
bnRlcnZhbCBhbmNob3JUaW1lU3RhbXAgPSAhW21fcGxheWVyQ29udHJvbGxlciByYXRlXSA/IE5B
TiA6IGFuY2hvclRpbWU7Ci0gICAgQVZWYWx1ZVRpbWluZyAqdGltaW5nID0gW2dldEFWVmFsdWVU
aW1pbmdDbGFzcygpIHZhbHVlVGltaW5nV2l0aEFuY2hvclZhbHVlOmN1cnJlbnRUaW1lCi0gICAg
ICAgIGFuY2hvclRpbWVTdGFtcDphbmNob3JUaW1lU3RhbXAgcmF0ZTowXTsKLSAgICAKLSAgICBb
bV9wbGF5ZXJDb250cm9sbGVyIHNldFRpbWluZzp0aW1pbmddOworICAgIG1fcGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlLT5zZXRDdXJyZW50VGltZShjdXJyZW50VGltZSwgYW5jaG9yVGltZSk7CiB9
CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEJ1ZmZlcmVkVGlt
ZShkb3VibGUgYnVmZmVyZWRUaW1lKQogewotICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciogcGxh
eWVyQ29udHJvbGxlciA9IG1fcGxheWVyQ29udHJvbGxlci5nZXQoKTsKLSAgICBkb3VibGUgZHVy
YXRpb24gPSBwbGF5ZXJDb250cm9sbGVyLmNvbnRlbnREdXJhdGlvbjsKLSAgICBkb3VibGUgbm9y
bWFsaXplZEJ1ZmZlcmVkVGltZTsKLSAgICBpZiAoIWR1cmF0aW9uKQotICAgICAgICBub3JtYWxp
emVkQnVmZmVyZWRUaW1lID0gMDsKLSAgICBlbHNlCi0gICAgICAgIG5vcm1hbGl6ZWRCdWZmZXJl
ZFRpbWUgPSBidWZmZXJlZFRpbWUgLyBkdXJhdGlvbjsKLSAgICBwbGF5ZXJDb250cm9sbGVyLmxv
YWRlZFRpbWVSYW5nZXMgPSBAW0AwLCBAKG5vcm1hbGl6ZWRCdWZmZXJlZFRpbWUpXTsKKyAgICBt
X3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0QnVmZmVyZWRUaW1lKGJ1ZmZlcmVkVGltZSk7
CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFJhdGUoYm9v
bCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKLSAgICBbbV9wbGF5ZXJDb250cm9s
bGVyIHNldFJhdGU6aXNQbGF5aW5nID8gcGxheWJhY2tSYXRlIDogMC5dOworICAgIG1fcGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRSYXRlKGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsKIH0K
IAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0VmlkZW9EaW1lbnNp
b25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCkBAIC0xMDQwLDgg
KzU4MSw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFZpZGVv
RGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3CiAgICAgV2ViQVZQbGF5ZXJMYXllciAq
cGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVttX3BsYXllckxheWVyVmlldyBwbGF5
ZXJMYXllcl07CiAKICAgICBbcGxheWVyTGF5ZXIgc2V0VmlkZW9EaW1lbnNpb25zOkNHU2l6ZU1h
a2Uod2lkdGgsIGhlaWdodCldOwotICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0SGFzRW5hYmxl
ZFZpZGVvOmhhc1ZpZGVvXTsKLSAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldENvbnRlbnREaW1l
bnNpb25zOkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCldOworICAgIFtwbGF5ZXJDb250cm9sbGVy
KCkgc2V0SGFzRW5hYmxlZFZpZGVvOmhhc1ZpZGVvXTsKKyAgICBbcGxheWVyQ29udHJvbGxlcigp
IHNldENvbnRlbnREaW1lbnNpb25zOkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCldOwogICAgIFtt
X3BsYXllckxheWVyVmlldyBzZXROZWVkc0xheW91dF07CiAKICAgICBXZWJBVlBpY3R1cmVJblBp
Y3R1cmVQbGF5ZXJMYXllclZpZXcgKnBpcFZpZXcgPSAoV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxh
eWVyTGF5ZXJWaWV3ICopW21fcGxheWVyTGF5ZXJWaWV3IHBpY3R1cmVJblBpY3R1cmVQbGF5ZXJM
YXllclZpZXddOwpAQCAtMTA1Miw3NSArNTkzLDQyIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3
CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFNlZWthYmxlUmFu
Z2VzKGNvbnN0IFRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCiB7Ci0gICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiBzZWVrYWJsZVJhbmdlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdF0pOwotICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZTsKLQotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB0aW1lUmFuZ2VzLmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAg
ZG91YmxlIHN0YXJ0ID0gdGltZVJhbmdlcy5zdGFydChpLCBleGNlcHRpb25Db2RlKTsKLSAgICAg
ICAgZG91YmxlIGVuZCA9IHRpbWVSYW5nZXMuZW5kKGksIGV4Y2VwdGlvbkNvZGUpOwotICAgICAg
ICAKLSAgICAgICAgQ01UaW1lUmFuZ2UgcmFuZ2UgPSBDTVRpbWVSYW5nZU1ha2UoQ01UaW1lTWFr
ZVdpdGhTZWNvbmRzKHN0YXJ0LCAxMDAwKSwgQ01UaW1lTWFrZVdpdGhTZWNvbmRzKGVuZC1zdGFy
dCwgMTAwMCkpOwotICAgICAgICBbc2Vla2FibGVSYW5nZXMgYWRkT2JqZWN0OltOU1ZhbHVlIHZh
bHVlV2l0aENNVGltZVJhbmdlOnJhbmdlXV07Ci0gICAgfQotICAgIAotICAgIFttX3BsYXllckNv
bnRyb2xsZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2VzOnNlZWthYmxlUmFuZ2VzLmdldCgpXTsKKyAg
ICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0U2Vla2FibGVSYW5nZXModGltZVJhbmdl
cyk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldENhblBs
YXlGYXN0UmV2ZXJzZShib29sIGNhblBsYXlGYXN0UmV2ZXJzZSkKIHsKLSAgICBbbV9wbGF5ZXJD
b250cm9sbGVyIHNldENhblNjYW5CYWNrd2FyZDpjYW5QbGF5RmFzdFJldmVyc2VdOwotfQotCi1z
dGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBtZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMpCi17Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiB3ZWJPcHRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aENhcGFjaXR5Om9wdGlvbnMuc2l6ZSgpXSk7Ci0gICAgZm9yIChhdXRvJiBuYW1lIDogb3B0aW9u
cykgewotICAgICAgICBSZXRhaW5QdHI8V2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbj4gd2ViT3B0
aW9uID0gYWRvcHROUyhbW1dlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gYWxsb2NdIGluaXRdKTsK
LSAgICAgICAgW3dlYk9wdGlvbiBzZXRMb2NhbGl6ZWREaXNwbGF5TmFtZTpuYW1lXTsKLSAgICAg
ICAgW3dlYk9wdGlvbnMgYWRkT2JqZWN0OndlYk9wdGlvbi5nZXQoKV07Ci0gICAgfQotICAgIHJl
dHVybiB3ZWJPcHRpb25zOworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDYW5Q
bGF5RmFzdFJldmVyc2UoY2FuUGxheUZhc3RSZXZlcnNlKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0g
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gbWVkaWFTZWxlY3Rpb25P
cHRpb25zKG9wdGlvbnMpOwotICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07Ci0gICAgaWYgKHNlbGVjdGVkSW5kZXgg
PCBbd2ViT3B0aW9ucyBjb3VudF0pCi0gICAgICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0Q3Vy
cmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2JqZWN0QXRJbmRleDpz
dGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOworICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBz
ZWxlY3RlZEluZGV4KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBtZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucyk7Ci0g
ICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOndl
Yk9wdGlvbnMuZ2V0KCldOwotICAgIGlmIChzZWxlY3RlZEluZGV4IDwgW3dlYk9wdGlvbnMgY291
bnRdKQotICAgICAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldEN1cnJlbnRMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2JqZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJ
bnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
LT5zZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgp
OwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRFeHRlcm5h
bFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFyZ2V0
VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCiB7Ci0gICAgQVZQbGF5ZXJDb250cm9s
bGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUgZXh0ZXJuYWxQbGF5YmFja1R5cGUgPSBBVlBsYXllckNv
bnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZU5vbmU7Ci0gICAgaWYgKHRhcmdldFR5cGUgPT0g
VGFyZ2V0VHlwZUFpclBsYXkpCi0gICAgICAgIGV4dGVybmFsUGxheWJhY2tUeXBlID0gQVZQbGF5
ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVBaXJQbGF5OwotICAgIGVsc2UgaWYgKHRh
cmdldFR5cGUgPT0gVGFyZ2V0VHlwZVRWT3V0KQotICAgICAgICBleHRlcm5hbFBsYXliYWNrVHlw
ZSA9IEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBlVFZPdXQ7CisgICAgbV9w
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEV4dGVybmFsUGxheWJhY2soZW5hYmxlZCwgdGFy
Z2V0VHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7Cit9CiAKLSAgICBXZWJBVlBsYXllckNvbnRy
b2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7Ci0gICAg
cGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrQWlyUGxheURldmljZUxvY2FsaXplZE5h
bWUgPSBsb2NhbGl6ZWREZXZpY2VOYW1lOwotICAgIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQ
bGF5YmFja1R5cGUgPSBleHRlcm5hbFBsYXliYWNrVHlwZTsKLSAgICBwbGF5ZXJDb250cm9sbGVy
LmV4dGVybmFsUGxheWJhY2tBY3RpdmUgPSBlbmFibGVkOwordm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6ZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWRDaGFuZ2VkKGJvb2wgZW5h
YmxlZCkKK3sKICAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0SGlkZGVuOmVuYWJsZWRdOwogfQog
CiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXaXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVkKQogewotICAgIFttX3BsYXllckNvbnRyb2xs
ZXIgc2V0QWxsb3dzRXh0ZXJuYWxQbGF5YmFjazohZGlzYWJsZWRdOworICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChkaXNhYmxl
ZCk7CiB9CiAKIGJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OndpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gW21fcGxheWVyQ29u
dHJvbGxlciBhbGxvd3NFeHRlcm5hbFBsYXliYWNrXTsKKyAgICByZXR1cm4gbV9wbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UtPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCk7CiB9CiAKIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFwcGxpY2F0aW9uRGlkQmVjb21l
QWN0aXZlKCkKQEAgLTExNzgsNyArNjg2LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6c2V0dXBGdWxsc2NyZWVuKFVJVmlldyYgdmlkZW9WaWV3LCBjb25zdAogCiAg
ICAgaWYgKCFtX3BsYXllckxheWVyVmlldykKICAgICAgICAgbV9wbGF5ZXJMYXllclZpZXcgPSBh
ZG9wdE5TKFtbZ2V0V2ViQVZQbGF5ZXJMYXllclZpZXdDbGFzcygpIGFsbG9jXSBpbml0XSk7Ci0g
ICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEhpZGRlbjpbbV9wbGF5ZXJDb250cm9sbGVyIGlzRXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZV1dOworICAgIFttX3BsYXllckxheWVyVmlldyBzZXRIaWRkZW46
W3BsYXllckNvbnRyb2xsZXIoKSBpc0V4dGVybmFsUGxheWJhY2tBY3RpdmVdXTsKICAgICBbbV9w
bGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBjbGVh
ckNvbG9yXV07CiAKICAgICBpZiAoIWlzSW5QaWN0dXJlSW5QaWN0dXJlTW9kZSkgewpAQCAtMTE4
OSwxNiArNjk3LDE5IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNl
dHVwRnVsbHNjcmVlbihVSVZpZXcmIHZpZGVvVmlldywgY29uc3QKICAgICBXZWJBVlBsYXllckxh
eWVyICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW21fcGxheWVyTGF5ZXJWaWV3
IHBsYXllckxheWVyXTsKIAogICAgIFtwbGF5ZXJMYXllciBzZXRNb2RlbFZpZGVvTGF5ZXJGcmFt
ZTpDR1JlY3RNYWtlKDAsIDAsIGluaXRpYWxSZWN0LndpZHRoKCksIGluaXRpYWxSZWN0LmhlaWdo
dCgpKV07Ci0gICAgW3BsYXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpbbV9wbGF5ZXJDb250
cm9sbGVyIGNvbnRlbnREaW1lbnNpb25zXV07CisgICAgW3BsYXllckxheWVyIHNldFZpZGVvRGlt
ZW5zaW9uczpbcGxheWVyQ29udHJvbGxlcigpIGNvbnRlbnREaW1lbnNpb25zXV07CisgICAgcGxh
eWVyTGF5ZXIuZnVsbHNjcmVlbkludGVyZmFjZSA9IHRoaXM7CiAKICAgICBpZiAoIW1fcGxheWVy
Vmlld0NvbnRyb2xsZXIpCiAgICAgICAgIG1fcGxheWVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5T
KFthbGxvY0FWUGxheWVyVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoUGxheWVyTGF5
ZXJWaWV3Om1fcGxheWVyTGF5ZXJWaWV3LmdldCgpXSk7CiAKICAgICBbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6Tk9dOwotICAgIFttX3BsYXllclZpZXdD
b250cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKW1fcGxh
eWVyQ29udHJvbGxlci5nZXQoKV07Ci0gICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0RGVs
ZWdhdGU6bV9wbGF5ZXJDb250cm9sbGVyLmdldCgpXTsKKyAgICBbbV9wbGF5ZXJWaWV3Q29udHJv
bGxlciBzZXRQbGF5ZXJDb250cm9sbGVyOihBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250
cm9sbGVyKCldOworICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm1fcGxh
eWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKV07CiAgICAgW21fcGxheWVyVmlld0NvbnRy
b2xsZXIgc2V0QWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrOm1fYWxsb3dzUGljdHVyZUlu
UGljdHVyZVBsYXliYWNrXTsKIAorICAgIFtwbGF5ZXJDb250cm9sbGVyKCkgc2V0UGljdHVyZUlu
UGljdHVyZVBvc3NpYmxlOm1fYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrXTsKKwogICAg
IGlmIChtX3ZpZXdDb250cm9sbGVyKSB7CiAgICAgICAgIFttX3ZpZXdDb250cm9sbGVyIGFkZENo
aWxkVmlld0NvbnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKV07CiAgICAgICAg
IFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBhZGRTdWJ2aWV3OlttX3BsYXllclZpZXdDb250cm9s
bGVyIHZpZXddXTsKQEAgLTEzMzksOCArODUwLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6Y2xlYW51cEZ1bGxzY3JlZW4oKQogICAgICAgICAgICAgW1tnZXRVSUFw
cGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRBcHBsaWNhdGlvbl0gX3NldFN0YXR1c0Jhck9yaWVudGF0
aW9uOlttX3BhcmVudFdpbmRvdyBpbnRlcmZhY2VPcmllbnRhdGlvbl1dOwogICAgIH0KICAgICAK
LSAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW21fcGxheWVy
Q29udHJvbGxlciBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOm5pbF07CisgICAgW3BsYXllckNvbnRy
b2xsZXIoKSBzZXREZWxlZ2F0ZTpuaWxdOwogICAgIAogICAgIFttX3BsYXllclZpZXdDb250cm9s
bGVyIHNldERlbGVnYXRlOm5pbF07CiAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0UGxh
eWVyQ29udHJvbGxlcjpuaWxdOwpAQCAtMTM1OSw4ICs4NjksNiBAQCB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbigpCiAKICAgICBtX3BsYXll
ckxheWVyVmlldyA9IG5pbDsKICAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0gbmlsOwotICAg
IG1fcGxheWVyQ29udHJvbGxlciA9IG5pbDsKLSAgICBtX3ZpZXdDb250cm9sbGVyID0gbmlsOwog
ICAgIG1fd2luZG93ID0gbmlsOwogICAgIG1fcGFyZW50VmlldyA9IG5pbDsKICAgICBtX3BhcmVu
dFdpbmRvdyA9IG5pbDsKQEAgLTE0MTIsNyArOTIwLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGJvb2wgdmlzaWJsZSwg
Y28KIAogYm9vbCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6bWF5QXV0b21hdGlj
YWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUoKSBjb25zdAogewotICAgIHJldHVybiBbbV9w
bGF5ZXJDb250cm9sbGVyIGlzUGxheWluZ10gJiYgbV9tb2RlID09IEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkICYmIHN1cHBvcnRzUGljdHVyZUluUGlj
dHVyZSgpOworICAgIHJldHVybiBbcGxheWVyQ29udHJvbGxlcigpIGlzUGxheWluZ10gJiYgbV9t
b2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJk
ICYmIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoc3RkOjpmdW5j
dGlvbjx2b2lkKGJvb2wpPiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNTMxYWMxYjgwZjIyNmFkYzkyYzUxM2Q5YWM1ODlmYWY3YWM1MDA4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZU1hYy5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZU1hY19oCisjZGVmaW5lIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZU1hY19oCisKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgorI2luY2x1
ZGUgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCitPQkpDX0NMQVNTIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWw7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZU1hYworICAgIDogcHVibGljIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZQorICAgICwg
cHVibGljIFJlZkNvdW50ZWQ8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM+IGNyZWF0
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VNYWMoKSk7CisgICAgfQorICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYygpOworICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKiB3ZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7IH0K
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsKik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0TWVk
aWFTdGF0ZSgpIG92ZXJyaWRlIHsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RHVyYXRp
b24oZG91YmxlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnJlbnRU
aW1lKGRvdWJsZSAvKmN1cnJlbnRUaW1lKi8sIGRvdWJsZSAvKmFuY2hvclRpbWUqLykgb3ZlcnJp
ZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlKSBvdmVy
cmlkZSB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJhdGUoYm9vbCAvKmlzUGxheWlu
ZyovLCBmbG9hdCAvKnBsYXliYWNrUmF0ZSovKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5nZXMmKSBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZShib29sKSBvdmVycmlk
ZSB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKm9wdGlvbnMqLywgdWludDY0X3QgLypzZWxlY3Rl
ZEluZGV4Ki8pIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypvcHRpb25zKi8sIHVp
bnQ2NF90IC8qc2VsZWN0ZWRJbmRleCovKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUs
IFN0cmluZykgb3ZlcnJpZGUgeyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXaXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSBvdmVycmlkZSB7IH0KKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGludmFsaWRhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuc3VyZUNv
bnRyb2xzTWFuYWdlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyICpwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpOworCitwcml2YXRlOgorICAgIFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsKiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsIHsgbnVsbHB0ciB9Owor
ICAgIFJldGFpblB0cjxXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcj4gbV9wbGF5YmFja0NvbnRy
b2xzTWFuYWdlcjsKK307CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmViZWRlMDNkYTY3MjI2NTkwY2VlY2Q1N2FlYjAwYWQ1YjYzNmM2MzEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tCkBAIC0wLDAgKzEsMzMyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYy5oIgorCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpCisKKyNpbXBvcnQgIkFWS2l0U1BJLmgiCisjaW1wb3J0ICJJbnRSZWN0LmgiCisjaW1w
b3J0ICJNZWRpYVRpbWVBVkZvdW5kYXRpb24uaCIKKyNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKKyNp
bXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmgiCisjaW1wb3J0IDxBVkZvdW5kYXRpb24v
QVZGb3VuZGF0aW9uLmg+CisKKyNpbXBvcnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCisKK1NPRlRf
TElOS19GUkFNRVdPUksoQVZLaXQpCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWVmFsdWVUaW1p
bmcpCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW50ZXJmYWNlIFdlYkFWTWVkaWFT
ZWxlY3Rpb25PcHRpb25NYWMgOiBOU09iamVjdCB7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBf
bG9jYWxpemVkRGlzcGxheU5hbWU7Cit9CitAcHJvcGVydHkgKHJldGFpbikgTlNTdHJpbmcgKmxv
Y2FsaXplZERpc3BsYXlOYW1lOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQVZNZWRpYVNl
bGVjdGlvbk9wdGlvbk1hYworCistIChOU1N0cmluZyAqKWxvY2FsaXplZERpc3BsYXlOYW1lCit7
CisgICAgcmV0dXJuIF9sb2NhbGl6ZWREaXNwbGF5TmFtZS5nZXQoKTsKK30KKworLSAodm9pZClz
ZXRMb2NhbGl6ZWREaXNwbGF5TmFtZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgX2xvY2FsaXpl
ZERpc3BsYXlOYW1lID0gbmFtZTsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIFdlYlBsYXliYWNr
Q29udHJvbHNNYW5hZ2VyIDogTlNPYmplY3QgeworICAgIE5TVGltZUludGVydmFsIF9jb250ZW50
RHVyYXRpb247CisgICAgUmV0YWluUHRyPEFWVmFsdWVUaW1pbmc+IF90aW1pbmc7CisgICAgTlNU
aW1lSW50ZXJ2YWwgX3NlZWtUb1RpbWU7CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9zZWVrYWJs
ZVRpbWVSYW5nZXM7CisgICAgQk9PTCBfaGFzRW5hYmxlZEF1ZGlvOworICAgIEJPT0wgX2hhc0Vu
YWJsZWRWaWRlbzsKKyAgICBSZXRhaW5QdHI8TlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9u
ICo+PiBfYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM7CisgICAgUmV0YWluUHRyPEFWTWVkaWFT
ZWxlY3Rpb25PcHRpb24+IF9jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjsKKyAgICBS
ZXRhaW5QdHI8TlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICo+PiBfbGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9uczsKKyAgICBSZXRhaW5QdHI8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbj4g
X2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb247CisKKyAgICBmbG9hdCBfcmF0ZTsK
KworQHByaXZhdGUKKyAgICBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMq
IF93ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM7Cit9CisKK0Bwcm9wZXJ0eSAocmVhZHdy
aXRlKSBOU1RpbWVJbnRlcnZhbCBjb250ZW50RHVyYXRpb247CitAcHJvcGVydHkgKG5vbmF0b21p
YywgcmV0YWluLCByZWFkd3JpdGUpIEFWVmFsdWVUaW1pbmcgKnRpbWluZzsKK0Bwcm9wZXJ0eSBO
U1RpbWVJbnRlcnZhbCBzZWVrVG9UaW1lOworQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbiwg
cmVhZHdyaXRlKSBOU0FycmF5ICpzZWVrYWJsZVRpbWVSYW5nZXM7CitAcHJvcGVydHkgKHJlYWR3
cml0ZSkgQk9PTCBoYXNFbmFibGVkQXVkaW87CitAcHJvcGVydHkgKHJlYWR3cml0ZSkgQk9PTCBo
YXNFbmFibGVkVmlkZW87CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCByZWFkd3JpdGUp
IE5TQXJyYXk8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqYXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnM7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCByZWFkd3JpdGUpIEFWTWVkaWFT
ZWxlY3Rpb25PcHRpb24gKmN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOworQHByb3Bl
cnR5IChub25hdG9taWMsIHJldGFpbiwgcmVhZHdyaXRlKSBOU0FycmF5PEFWTWVkaWFTZWxlY3Rp
b25PcHRpb24gKj4gKmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmV0YWluLCByZWFkd3JpdGUpIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKmN1cnJl
bnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb247CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBm
bG9hdCByYXRlOworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VNYWM6KFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyopd2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOworCitAZW5kCisKKyNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQorI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYlBsYXliYWNrQ29udHJvbHND
b250cm9sbGVyQWRkaXRpb25zLm1tPgorI2VuZGlmCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlcgorCitAc3ludGhlc2l6ZSBjb250ZW50RHVyYXRpb249X2NvbnRl
bnREdXJhdGlvbjsKK0BzeW50aGVzaXplIHNlZWtUb1RpbWU9X3NlZWtUb1RpbWU7CitAc3ludGhl
c2l6ZSBoYXNFbmFibGVkQXVkaW89X2hhc0VuYWJsZWRBdWRpbzsKK0BzeW50aGVzaXplIGhhc0Vu
YWJsZWRWaWRlbz1faGFzRW5hYmxlZFZpZGVvOworQHN5bnRoZXNpemUgcmF0ZT1fcmF0ZTsKKwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOihX
ZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMqKXdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYworeworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgX3dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyA9IHdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzsKKworICAgIHJldHVybiBzZWxmOworfQorCist
IChBVlZhbHVlVGltaW5nICopdGltaW5nCit7CisgICAgcmV0dXJuIF90aW1pbmcuZ2V0KCk7Cit9
CisKKy0gKHZvaWQpc2V0VGltaW5nOihBVlZhbHVlVGltaW5nICopdGltaW5nCit7CisgICAgX3Rp
bWluZyA9IHRpbWluZzsKK30KKworLSAoTlNBcnJheSAqKXNlZWthYmxlVGltZVJhbmdlcworewor
ICAgIHJldHVybiBfc2Vla2FibGVUaW1lUmFuZ2VzLmdldCgpOworfQorCistICh2b2lkKXNldFNl
ZWthYmxlVGltZVJhbmdlczooTlNBcnJheSAqKXRpbWVSYW5nZXMKK3sKKyAgICBfc2Vla2FibGVU
aW1lUmFuZ2VzID0gdGltZVJhbmdlczsKK30KKworLSAoQk9PTClpc1NlZWtpbmcKK3sKKyAgICBy
ZXR1cm4gTk87Cit9CisKKy0gKHZvaWQpc2Vla1RvVGltZTooTlNUaW1lSW50ZXJ2YWwpdGltZSB0
b2xlcmFuY2VCZWZvcmU6KE5TVGltZUludGVydmFsKXRvbGVyYW5jZUJlZm9yZSB0b2xlcmFuY2VB
ZnRlcjooTlNUaW1lSW50ZXJ2YWwpdG9sZXJhbmNlQWZ0ZXIKK3sKKyAgICBVTlVTRURfUEFSQU0o
dG9sZXJhbmNlQmVmb3JlKTsKKyAgICBVTlVTRURfUEFSQU0odG9sZXJhbmNlQWZ0ZXIpOworICAg
IF93ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMtPndlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
KCktPnNlZWtUb1RpbWUodGltZSk7Cit9CisKKy0gKE5TQXJyYXk8QVZNZWRpYVNlbGVjdGlvbk9w
dGlvbiAqPiAqKWF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zCit7CisgICAgcmV0dXJuIF9hdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9ucy5nZXQoKTsKK30KKworLSAodm9pZClzZXRBdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9uczooTlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICo+ICopYXVk
aW9PcHRpb25zCit7CisgICAgX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zID0gYXVkaW9PcHRp
b25zOworfQorCistIChBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVudEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb24KK3sKKyAgICByZXR1cm4gX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9uLmdldCgpOworfQorCistICh2b2lkKXNldEN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9uOihBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICopYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bgoreworICAgIGlmIChhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uID09IF9jdXJyZW50QXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgX2N1cnJlbnRBdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9uID0gYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjsKKworICAg
IE5TSW50ZWdlciBpbmRleCA9IE5TTm90Rm91bmQ7CisKKyAgICBpZiAoYXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbiAmJiBzZWxmLmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKQorICAgICAgICBp
bmRleCA9IFtzZWxmLmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zIGluZGV4T2ZPYmplY3Q6YXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbl07CisKKyAgICBfd2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLT53ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9u
KGluZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOworfQorCistIChOU0Fy
cmF5PEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zCit7CisgICAgcmV0dXJuIF9sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zLmdldCgpOwor
fQorCistICh2b2lkKXNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KE5TQXJyYXk8QVZN
ZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqKWxlZ2libGVPcHRpb25zCit7CisgICAgX2xlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBsZWdpYmxlT3B0aW9uczsKK30KKworLSAoQVZNZWRpYVNl
bGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24KK3sKKyAg
ICByZXR1cm4gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24uZ2V0KCk7Cit9CisK
Ky0gKHZvaWQpc2V0Q3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjooQVZNZWRpYVNl
bGVjdGlvbk9wdGlvbiAqKWxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbgoreworICAgIGlmIChs
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gPT0gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIF9jdXJyZW50TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9uID0gbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOworCisgICAgTlNJbnRl
Z2VyIGluZGV4ID0gTlNOb3RGb3VuZDsKKworICAgIGlmIChsZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb24gJiYgc2VsZi5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKQorICAgICAgICBpbmRl
eCA9IFtzZWxmLmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgaW5kZXhPZk9iamVjdDpsZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25dOworCisgICAgX3dlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZU1hYy0+d2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoKS0+c2VsZWN0TGVnaWJsZU1lZGlhT3B0
aW9uKGluZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOworfQorCistICh2
b2lkKWNhbmNlbFRodW1ibmFpbEFuZEF1ZGlvQW1wbGl0dWRlU2FtcGxlR2VuZXJhdGlvbgorewor
fQorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9u
cy9XZWJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxlclRodW1ibmFpbEFkZGl0aW9ucy5tbT4KKyNl
bmRpZgorCitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjOjp+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKCkKK3sKK30KKwor
dm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKiBtb2RlbCkKK3sKKyAgICBtX3BsYXliYWNr
U2Vzc2lvbk1vZGVsID0gbW9kZWw7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCit7CisgICAgV2ViUGxheWJhY2tD
b250cm9sc01hbmFnZXIqIGNvbnRyb2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2Vy
KCk7CisKKyAgICBjb250cm9sc01hbmFnZXIuY29udGVudER1cmF0aW9uID0gZHVyYXRpb247CisK
KyAgICAvLyBGSVhNRTogV2UgdGFrZSB0aGlzIGFzIGFuIGluZGljYXRpb24gdGhhdCBwbGF5YmFj
ayBpcyByZWFkeSwgYnV0IHRoYXQgaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUuCisgICAgY29udHJv
bHNNYW5hZ2VyLmhhc0VuYWJsZWRBdWRpbyA9IFlFUzsKKyAgICBjb250cm9sc01hbmFnZXIuaGFz
RW5hYmxlZFZpZGVvID0gWUVTOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYzo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGlt
ZSkKK3sKKyAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5hZ2VyID0g
cGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKKworICAgIE5TVGltZUludGVydmFsIGFuY2hvclRp
bWVTdGFtcCA9ICFbY29udHJvbHNNYW5hZ2VyIHJhdGVdID8gTkFOIDogYW5jaG9yVGltZTsKKyAg
ICBBVlZhbHVlVGltaW5nICp0aW1pbmcgPSBbZ2V0QVZWYWx1ZVRpbWluZ0NsYXNzKCkgdmFsdWVU
aW1pbmdXaXRoQW5jaG9yVmFsdWU6Y3VycmVudFRpbWUKKyAgICAgICAgYW5jaG9yVGltZVN0YW1w
OmFuY2hvclRpbWVTdGFtcCByYXRlOjBdOworCisgICAgW2NvbnRyb2xzTWFuYWdlciBzZXRUaW1p
bmc6dGltaW5nXTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNl
dFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKK3sKKyAgICBXZWJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5hZ2VyID0gcGxheUJhY2tDb250cm9sc01h
bmFnZXIoKTsKKworICAgIFtjb250cm9sc01hbmFnZXIgc2V0UmF0ZTppc1BsYXlpbmcgPyBwbGF5
YmFja1JhdGUgOiAwLl07Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
OjpzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQoreworICAg
IFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0Nv
bnRyb2xzTWFuYWdlcigpOworCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBzZWVrYWJs
ZVJhbmdlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRpbWVSYW5nZXMubGVuZ3RoKCk7IGkrKykgeworICAg
ICAgICBjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmIHJhbmdlcyA9IHRpbWVSYW5nZXMucmFuZ2Vz
KCk7CisgICAgICAgIENNVGltZVJhbmdlIHJhbmdlID0gQ01UaW1lUmFuZ2VNYWtlKHRvQ01UaW1l
KHJhbmdlcy5zdGFydChpKSksIHRvQ01UaW1lKHJhbmdlcy5lbmQoaSkpKTsKKyAgICAgICAgW3Nl
ZWthYmxlUmFuZ2VzIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWVSYW5nZTpyYW5n
ZV1dOworICAgIH0KKworICAgIFtjb250cm9sc01hbmFnZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2Vz
OnNlZWthYmxlUmFuZ2VzLmdldCgpXTsKK30KKworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4gbWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25z
KQoreworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUoKV0p
OworICAgIGZvciAoYXV0byYgbmFtZSA6IG9wdGlvbnMpIHsKKyAgICAgICAgUmV0YWluUHRyPFdl
YkFWTWVkaWFTZWxlY3Rpb25PcHRpb25NYWM+IHdlYk9wdGlvbiA9IGFkb3B0TlMoW1tXZWJBVk1l
ZGlhU2VsZWN0aW9uT3B0aW9uTWFjIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFt3ZWJPcHRpb24g
c2V0TG9jYWxpemVkRGlzcGxheU5hbWU6bmFtZV07CisgICAgICAgIFt3ZWJPcHRpb25zIGFkZE9i
amVjdDp3ZWJPcHRpb24uZ2V0KCldOworICAgIH0KKyAgICByZXR1cm4gd2ViT3B0aW9uczsKK30K
Kwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldEF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90
IHNlbGVjdGVkSW5kZXgpCit7CisgICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIqIGNvbnRy
b2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7CisKKyAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBtZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9u
cyk7CisgICAgW2NvbnRyb2xzTWFuYWdlciBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczp3
ZWJPcHRpb25zLmdldCgpXTsKKyAgICBpZiAoc2VsZWN0ZWRJbmRleCA8IFt3ZWJPcHRpb25zIGNv
dW50XSkKKyAgICAgICAgW2NvbnRyb2xzTWFuYWdlciBzZXRDdXJyZW50QXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbjpbd2ViT3B0aW9ucyBvYmplY3RBdEluZGV4OnN0YXRpY19jYXN0PE5TVUludGVn
ZXI+KHNlbGVjdGVkSW5kZXgpXV07Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjOjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6
OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit7CisgICAgV2ViUGxh
eWJhY2tDb250cm9sc01hbmFnZXIqIGNvbnRyb2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNN
YW5hZ2VyKCk7CisKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBt
ZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucyk7CisgICAgW2NvbnRyb2xzTWFuYWdlciBzZXRM
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOndlYk9wdGlvbnMuZ2V0KCldOworICAgIGlmIChz
ZWxlY3RlZEluZGV4IDwgW3dlYk9wdGlvbnMgY291bnRdKQorICAgICAgICBbY29udHJvbHNNYW5h
Z2VyIHNldEN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2Jq
ZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOworfQor
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6aW52YWxpZGF0ZSgpCit7Cit9
CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjplbnN1cmVDb250cm9sc01h
bmFnZXIoKQoreworICAgIHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7Cit9CisKK1dlYlBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyICpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnBsYXlC
YWNrQ29udHJvbHNNYW5hZ2VyKCkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTIwMAorICAgIGlmICghbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlcikKKyAgICAg
ICAgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlciA9IGFkb3B0TlMoW1tXZWJQbGF5YmFja0NvbnRy
b2xzTWFuYWdlciBhbGxvY10gaW5pdFdpdGhXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6
dGhpc10pOworICAgIHJldHVybiBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmdldCgpOworI2Vs
c2UKKyAgICByZXR1cm4gbmlsOworI2VuZGlmCit9CisgICAgCit9CisKKyNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMuaAppbmRleCAyYjJhN2ZjN2NkNWI1NTlmZTM0MzlmNGM0ZGJmM2ZiMjU3NTNmNWQ0
Li5mYjhjYzhmNzVkY2I5Y2NmMjBjMGJkYjQzOTc2NmRiZjI3ZWQ0NTAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYy5oCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIE9CSkNfQ0xBU1MgTlNXaW5kb3c7Ci1PQkpDX0NMQVNTIFdlYlBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyOwogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIE9CSkNfQ0xBU1Mg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2JqQzsKQEAgLTQzLDYgKzQyLDcgQEAgT0JK
Q19DTEFTUyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWNPYmpDOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjOwogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI7CiBjbGFzcyBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDsKIApAQCAtNTEsOSArNTEsOSBAQCBjbGFzcyBXRUJDT1JF
X0VYUE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMKICAgICAsIHB1YmxpYyBSZWZD
b3VudGVkPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYz4gewogCiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM+IGNyZWF0ZSgpCisgICAg
c3RhdGljIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM+IGNyZWF0ZShXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMmIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYygpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjKHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkpOwogICAgIH0KICAgICB2aXJ0
dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMoKTsKICAgICBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbCogd2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3Zp
ZGVvRnVsbHNjcmVlbk1vZGVsOyB9CkBAIC05MywxMiArOTMsMTMgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgbWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1
cmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmUoKSB7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyICpwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpOwogI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCiAgICAgV0VCQ09SRV9FWFBPUlQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
T2JqQyAqdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlT2JqQygpOwogI2VuZGlmCiAKIHByaXZhdGU6
CisgICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZU1hYyYpOworICAgIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM+IG1f
cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOwogICAgIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBt
X3ZpZGVvRnVsbHNjcmVlbk1vZGVsIHsgbnVsbHB0ciB9OwogICAgIFdlYlZpZGVvRnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyKiBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciB7IG51bGxwdHIgfTsK
ICAgICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbV9tb2RlIHsg
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSB9OwpAQCAtMTA2
LDcgKzEwNyw2IEBAIHByaXZhdGU6CiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICBS
ZXRhaW5QdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2JqQz4gbV93ZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VPYmpDOwogI2VuZGlmCi0gICAgUmV0YWluUHRyPFdlYlBsYXliYWNr
Q29udHJvbHNNYW5hZ2VyPiBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWMubW0KaW5kZXggYjg5MGFiMzhmMDUwNzNjNWZiMmVmNWQ2YzljMTdk
NDk0YmI4YWZmYS4uZmU3ODkxNjI3MzcxMjk0NDliNTU5MTViYWNkZGE0YWY2OWMzYWI5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCkBAIC0yOSwxNSArMjksMTUgQEAKICNpZiBQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKIAogI2ltcG9ydCAiQVZL
aXRTUEkuaCIKLSNpbXBvcnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCiAjaW1wb3J0ICJJbnRSZWN0
LmgiCiAjaW1wb3J0ICJNZWRpYVRpbWVBVkZvdW5kYXRpb24uaCIKICNpbXBvcnQgIlRpbWVSYW5n
ZXMuaCIKKyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oIgogI2ltcG9y
dCAiV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCIKICNpbXBvcnQgIldlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZUaW1lLmg+CiAKLSNp
bXBvcnQgIlNvZnRMaW5raW5nLmgiCisjaW1wb3J0ICJDb3JlTWVkaWFTb2Z0TGluay5oIgogCiBT
T0ZUX0xJTktfRlJBTUVXT1JLKEFWS2l0KQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlZhbHVl
VGltaW5nKQpAQCAtNDYsMTg5ICs0NiwxMyBAQCBTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWVmFs
dWVUaW1pbmcpCiAjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hY0FkZGl0aW9ucy5tbT4KICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLQotQGludGVyZmFjZSBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uTWFjIDogTlNPYmplY3Qg
ewotICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2xvY2FsaXplZERpc3BsYXlOYW1lOwotfQotQHBy
b3BlcnR5IChyZXRhaW4pIE5TU3RyaW5nICpsb2NhbGl6ZWREaXNwbGF5TmFtZTsKLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb25NYWMKLQotLSAoTlNTdHJp
bmcgKilsb2NhbGl6ZWREaXNwbGF5TmFtZQotewotICAgIHJldHVybiBfbG9jYWxpemVkRGlzcGxh
eU5hbWUuZ2V0KCk7Ci19Ci0KLS0gKHZvaWQpc2V0TG9jYWxpemVkRGlzcGxheU5hbWU6KE5TU3Ry
aW5nICopbmFtZQotewotICAgIF9sb2NhbGl6ZWREaXNwbGF5TmFtZSA9IG5hbWU7Ci19Ci0KLUBl
bmQKLQotQGludGVyZmFjZSBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciA6IE5TT2JqZWN0IHsK
LSAgICBOU1RpbWVJbnRlcnZhbCBfY29udGVudER1cmF0aW9uOwotICAgIFJldGFpblB0cjxBVlZh
bHVlVGltaW5nPiBfdGltaW5nOwotICAgIE5TVGltZUludGVydmFsIF9zZWVrVG9UaW1lOwotICAg
IFJldGFpblB0cjxOU0FycmF5PiBfc2Vla2FibGVUaW1lUmFuZ2VzOwotICAgIEJPT0wgX2hhc0Vu
YWJsZWRBdWRpbzsKLSAgICBCT09MIF9oYXNFbmFibGVkVmlkZW87Ci0gICAgUmV0YWluUHRyPE5T
QXJyYXk8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPj4gX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zOwotICAgIFJldGFpblB0cjxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uPiBfY3VycmVudEF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb247Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk8QVZNZWRpYVNlbGVj
dGlvbk9wdGlvbiAqPj4gX2xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7Ci0gICAgUmV0YWlu
UHRyPEFWTWVkaWFTZWxlY3Rpb25PcHRpb24+IF9jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9uOwotICAgIAotICAgIGZsb2F0IF9yYXRlOwotCi1AcHJpdmF0ZQotICAgIFdlYkNvcmU6
OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyogX3dlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYzsKLX0KLQotQHByb3BlcnR5IChyZWFkd3JpdGUpIE5TVGltZUludGVydmFsIGNvbnRl
bnREdXJhdGlvbjsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4sIHJlYWR3cml0ZSkgQVZW
YWx1ZVRpbWluZyAqdGltaW5nOwotQHByb3BlcnR5IE5TVGltZUludGVydmFsIHNlZWtUb1RpbWU7
Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCByZWFkd3JpdGUpIE5TQXJyYXkgKnNlZWth
YmxlVGltZVJhbmdlczsKLUBwcm9wZXJ0eSAocmVhZHdyaXRlKSBCT09MIGhhc0VuYWJsZWRBdWRp
bzsKLUBwcm9wZXJ0eSAocmVhZHdyaXRlKSBCT09MIGhhc0VuYWJsZWRWaWRlbzsKLUBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZXRhaW4sIHJlYWR3cml0ZSkgTlNBcnJheTxBVk1lZGlhU2VsZWN0aW9u
T3B0aW9uICo+ICphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczsKLUBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZXRhaW4sIHJlYWR3cml0ZSkgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqY3VycmVudEF1
ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb247Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCBy
ZWFkd3JpdGUpIE5TQXJyYXk8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqbGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9uczsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4sIHJlYWR3cml0
ZSkgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbjsKLQotQHByb3BlcnR5IChub25hdG9taWMpIGZsb2F0IHJhdGU7Ci0KLS0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzooV2ViQ29yZTo6V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKil3ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM7Ci0KLUBlbmQKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJL
aXRBZGRpdGlvbnMvV2ViUGxheWJhY2tDb250cm9sc0NvbnRyb2xsZXJBZGRpdGlvbnMubW0+Ci0j
ZW5kaWYKLQotQGltcGxlbWVudGF0aW9uIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyCi0KLUBz
eW50aGVzaXplIGNvbnRlbnREdXJhdGlvbj1fY29udGVudER1cmF0aW9uOwotQHN5bnRoZXNpemUg
c2Vla1RvVGltZT1fc2Vla1RvVGltZTsKLUBzeW50aGVzaXplIGhhc0VuYWJsZWRBdWRpbz1faGFz
RW5hYmxlZEF1ZGlvOwotQHN5bnRoZXNpemUgaGFzRW5hYmxlZFZpZGVvPV9oYXNFbmFibGVkVmlk
ZW87Ci1Ac3ludGhlc2l6ZSByYXRlPV9yYXRlOwotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6KFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYyopd2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjCi17Ci0gICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfd2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjID0gd2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKEFWVmFsdWVUaW1pbmcgKil0aW1pbmcK
LXsKLSAgICByZXR1cm4gX3RpbWluZy5nZXQoKTsKLX0KLQotLSAodm9pZClzZXRUaW1pbmc6KEFW
VmFsdWVUaW1pbmcgKil0aW1pbmcKLXsKLSAgICBfdGltaW5nID0gdGltaW5nOwotfQotCi0tIChO
U0FycmF5ICopc2Vla2FibGVUaW1lUmFuZ2VzCi17Ci0gICAgcmV0dXJuIF9zZWVrYWJsZVRpbWVS
YW5nZXMuZ2V0KCk7Ci19Ci0KLS0gKHZvaWQpc2V0U2Vla2FibGVUaW1lUmFuZ2VzOihOU0FycmF5
ICopdGltZVJhbmdlcwotewotICAgIF9zZWVrYWJsZVRpbWVSYW5nZXMgPSB0aW1lUmFuZ2VzOwot
fQotCi0tIChCT09MKWlzU2Vla2luZwotewotICAgIHJldHVybiBOTzsKLX0KLQotLSAodm9pZClz
ZWVrVG9UaW1lOihOU1RpbWVJbnRlcnZhbCl0aW1lIHRvbGVyYW5jZUJlZm9yZTooTlNUaW1lSW50
ZXJ2YWwpdG9sZXJhbmNlQmVmb3JlIHRvbGVyYW5jZUFmdGVyOihOU1RpbWVJbnRlcnZhbCl0b2xl
cmFuY2VBZnRlcgotewotICAgIFVOVVNFRF9QQVJBTSh0b2xlcmFuY2VCZWZvcmUpOwotICAgIFVO
VVNFRF9QQVJBTSh0b2xlcmFuY2VBZnRlcik7Ci0gICAgX3dlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYy0+d2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+c2Vla1RvVGltZSh0aW1lKTsKLX0K
LQotLSAoTlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICo+ICopYXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbnMKLXsKLSAgICByZXR1cm4gX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zLmdl
dCgpOwotfQotCi0tICh2b2lkKXNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOihOU0FycmF5
PEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilhdWRpb09wdGlvbnMKLXsKLSAgICBfYXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBhdWRpb09wdGlvbnM7Ci19Ci0KLS0gKEFWTWVkaWFTZWxl
Y3Rpb25PcHRpb24gKiljdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbgotewotICAgIHJl
dHVybiBfY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24uZ2V0KCk7Ci19Ci0KLS0gKHZv
aWQpc2V0Q3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb246KEFWTWVkaWFTZWxlY3Rpb25P
cHRpb24gKilhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uCi17Ci0gICAgaWYgKGF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb24gPT0gX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uKQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
ID0gYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjsKLSAgICAKLSAgICBOU0ludGVnZXIgaW5kZXgg
PSBOU05vdEZvdW5kOwotICAgIAotICAgIGlmIChhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uICYm
IHNlbGYuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpCi0gICAgICAgIGluZGV4ID0gW3NlbGYu
YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMgaW5kZXhPZk9iamVjdDphdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9uXTsKLSAgICAKLSAgICBfd2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT53
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9uKGluZGV4ICE9
IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOwotfQotCi0tIChOU0FycmF5PEFWTWVk
aWFTZWxlY3Rpb25PcHRpb24gKj4gKilsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zCi17Ci0g
ICAgcmV0dXJuIF9sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zLmdldCgpOwotfQotCi0tICh2
b2lkKXNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KE5TQXJyYXk8QVZNZWRpYVNlbGVj
dGlvbk9wdGlvbiAqPiAqKWxlZ2libGVPcHRpb25zCi17Ci0gICAgX2xlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnMgPSBsZWdpYmxlT3B0aW9uczsKLX0KLQotLSAoQVZNZWRpYVNlbGVjdGlvbk9w
dGlvbiAqKWN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24KLXsKLSAgICByZXR1cm4g
X2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24uZ2V0KCk7Ci19Ci0KLS0gKHZvaWQp
c2V0Q3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjooQVZNZWRpYVNlbGVjdGlvbk9w
dGlvbiAqKWxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbgotewotICAgIGlmIChsZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb24gPT0gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24p
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBfY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbiA9IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjsKLSAgICAKLSAgICBOU0ludGVn
ZXIgaW5kZXggPSBOU05vdEZvdW5kOwotICAgIAotICAgIGlmIChsZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb24gJiYgc2VsZi5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKQotICAgICAgICBp
bmRleCA9IFtzZWxmLmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgaW5kZXhPZk9iamVjdDps
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25dOwotICAgIAotICAgIF93ZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWMtPndlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKCktPnNlbGVjdExlZ2libGVN
ZWRpYU9wdGlvbihpbmRleCAhPSBOU05vdEZvdW5kID8gaW5kZXggOiBVSU5UNjRfTUFYKTsKLX0K
K25hbWVzcGFjZSBXZWJDb3JlIHsKIAotLSAodm9pZCljYW5jZWxUaHVtYm5haWxBbmRBdWRpb0Ft
cGxpdHVkZVNhbXBsZUdlbmVyYXRpb24KK1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYyYgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQorICAgIDogbV9wbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UocGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQogewogfQogCi0jaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJQbGF5YmFja0NvbnRy
b2xzQ29udHJvbGxlclRodW1ibmFpbEFkZGl0aW9ucy5tbT4KLSNlbmRpZgotCi1AZW5kCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQogV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjp+V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKCkKIHsKIH0KQEAgLTIzNiw2ICs2MCw3IEBAIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6fldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYygpCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0V2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWwoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwqIG1vZGVsKQogewogICAgIG1f
dmlkZW9GdWxsc2NyZWVuTW9kZWwgPSBtb2RlbDsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZS0+c2V0V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwobW9kZWwpOwogfQogCiB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIoV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqIG9ic2VydmVyKQpAQCAtMjY3
LDMxICs5MiwxNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6Y2xlYXJN
b2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxscwogCiB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZU1hYzo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQogewotICAg
IFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0Nv
bnRyb2xzTWFuYWdlcigpOwotCi0gICAgY29udHJvbHNNYW5hZ2VyLmNvbnRlbnREdXJhdGlvbiA9
IGR1cmF0aW9uOwotCi0gICAgLy8gRklYTUU6IFdlIHRha2UgdGhpcyBhcyBhbiBpbmRpY2F0aW9u
IHRoYXQgcGxheWJhY2sgaXMgcmVhZHksIGJ1dCB0aGF0IGlzIG5vdCBuZWNlc3NhcmlseSB0cnVl
LgotICAgIGNvbnRyb2xzTWFuYWdlci5oYXNFbmFibGVkQXVkaW8gPSBZRVM7Ci0gICAgY29udHJv
bHNNYW5hZ2VyLmhhc0VuYWJsZWRWaWRlbyA9IFlFUzsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZS0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYzo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3Vi
bGUgYW5jaG9yVGltZSkKIHsKLSAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJv
bHNNYW5hZ2VyID0gcGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKLQotICAgIE5TVGltZUludGVy
dmFsIGFuY2hvclRpbWVTdGFtcCA9ICFbY29udHJvbHNNYW5hZ2VyIHJhdGVdID8gTkFOIDogYW5j
aG9yVGltZTsKLSAgICBBVlZhbHVlVGltaW5nICp0aW1pbmcgPSBbZ2V0QVZWYWx1ZVRpbWluZ0Ns
YXNzKCkgdmFsdWVUaW1pbmdXaXRoQW5jaG9yVmFsdWU6Y3VycmVudFRpbWUKLSAgICAgICAgYW5j
aG9yVGltZVN0YW1wOmFuY2hvclRpbWVTdGFtcCByYXRlOjBdOwotICAgIAotICAgIFtjb250cm9s
c01hbmFnZXIgc2V0VGltaW5nOnRpbWluZ107CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UtPnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKTsKIH0KIAogdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZs
b2F0IHBsYXliYWNrUmF0ZSkKIHsKLSAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29u
dHJvbHNNYW5hZ2VyID0gcGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKLQotICAgIFtjb250cm9s
c01hbmFnZXIgc2V0UmF0ZTppc1BsYXlpbmcgPyBwbGF5YmFja1JhdGUgOiAwLl07CisgICAgbV9w
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldFJhdGUoaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUp
OwogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICBbdmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlT2JqQygpIHNldFJhdGU6aXNQbGF5aW5nID8gcGxheWJhY2tSYXRlIDogMC5dOwpAQCAt
MzAwLDY0ICsxMTEsMjIgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNl
dFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIAogdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5n
ZXMmIHRpbWVSYW5nZXMpCiB7Ci0gICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIqIGNvbnRy
b2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7Ci0KLSAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IHNlZWthYmxlUmFuZ2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGltZVJhbmdl
cy5sZW5ndGgoKTsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgcmFu
Z2VzID0gdGltZVJhbmdlcy5yYW5nZXMoKTsKLSAgICAgICAgQ01UaW1lUmFuZ2UgcmFuZ2UgPSBD
TVRpbWVSYW5nZU1ha2UodG9DTVRpbWUocmFuZ2VzLnN0YXJ0KGkpKSwgdG9DTVRpbWUocmFuZ2Vz
LmVuZChpKSkpOwotICAgICAgICBbc2Vla2FibGVSYW5nZXMgYWRkT2JqZWN0OltOU1ZhbHVlIHZh
bHVlV2l0aENNVGltZVJhbmdlOnJhbmdlXV07Ci0gICAgfQotICAgIAotICAgIFtjb250cm9sc01h
bmFnZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2VzOnNlZWthYmxlUmFuZ2VzLmdldCgpXTsKLX0KLQot
c3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbWVkaWFTZWxlY3Rpb25PcHRpb25zKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zKQotewotICAgIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4gd2ViT3B0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpvcHRpb25zLnNpemUoKV0pOwotICAgIGZvciAoYXV0byYgbmFtZSA6IG9wdGlv
bnMpIHsKLSAgICAgICAgUmV0YWluUHRyPFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb25NYWM+IHdl
Yk9wdGlvbiA9IGFkb3B0TlMoW1tXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uTWFjIGFsbG9jXSBp
bml0XSk7Ci0gICAgICAgIFt3ZWJPcHRpb24gc2V0TG9jYWxpemVkRGlzcGxheU5hbWU6bmFtZV07
Ci0gICAgICAgIFt3ZWJPcHRpb25zIGFkZE9iamVjdDp3ZWJPcHRpb24uZ2V0KCldOwotICAgIH0K
LSAgICByZXR1cm4gd2ViT3B0aW9uczsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
c2V0U2Vla2FibGVSYW5nZXModGltZVJhbmdlcyk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjOjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0
b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAg
IFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0Nv
bnRyb2xzTWFuYWdlcigpOwotCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRp
b25zID0gbWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMpOwotICAgIFtjb250cm9sc01hbmFn
ZXIgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07Ci0gICAg
aWYgKHNlbGVjdGVkSW5kZXggPCBbd2ViT3B0aW9ucyBjb3VudF0pCi0gICAgICAgIFtjb250cm9s
c01hbmFnZXIgc2V0Q3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMg
b2JqZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOwor
ICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9ucyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVj
dG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAg
ICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5hZ2VyID0gcGxheUJhY2tD
b250cm9sc01hbmFnZXIoKTsKLQotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0
aW9ucyA9IG1lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zKTsKLSAgICBbY29udHJvbHNNYW5h
Z2VyIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07Ci0g
ICAgaWYgKHNlbGVjdGVkSW5kZXggPCBbd2ViT3B0aW9ucyBjb3VudF0pCi0gICAgICAgIFtjb250
cm9sc01hbmFnZXIgc2V0Q3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjpbd2ViT3B0
aW9ucyBvYmplY3RBdEluZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgp
XV07CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldExlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlTWFjOjplbnN1cmVDb250cm9sc01hbmFnZXIoKQogewotICAgIHBs
YXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7Ci19Ci0KLVdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
ICpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnBsYXlCYWNrQ29udHJvbHNNYW5hZ2Vy
KCkKLXsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAotICAg
IGlmICghbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlcikKLSAgICAgICAgbV9wbGF5YmFja0NvbnRy
b2xzTWFuYWdlciA9IGFkb3B0TlMoW1tXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBhbGxvY10g
aW5pdFdpdGhXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6dGhpc10pOwotICAgIHJldHVy
biBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmdldCgpOwotI2Vsc2UKLSAgICByZXR1cm4gbmls
OwotI2VuZGlmCisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPmVuc3VyZUNvbnRyb2xz
TWFuYWdlcigpOwogfQogCiAjaWYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdDIvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCAxNDA3OWNhY2UxZGMxNGYyOGU3YWU1MTE5M2EwN2NhZTgx
ZmFlMTg4Li5hNjI4MTczMTI5NjI4M2I3YWE1MmMyN2RmNDc0ZWYyNzM4Y2JhMWE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEzOCw2ICsxMzgsOCBAQCBNRVNTQUdFX1JFQ0VJ
VkVSUyA9IFwKICAgICBXZWJQYWdlIFwKICAgICBXZWJQYWdlUHJveHkgXAogICAgIFdlYlBhc3Rl
Ym9hcmRQcm94eSBcCisgICAgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciBcCisgICAgV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IFwKICAgICBXZWJQcm9jZXNzIFwKICAgICBXZWJQcm9j
ZXNzQ29ubmVjdGlvbiBcCiAgICAgV2ViUHJvY2Vzc1Bvb2wgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAzYjdiYWQzNThjYjUyOTRl
OTcwNWJlY2RiMjZlMDc4YjkxZWVlMWQ2Li45YWYyZDA5YWQ2NmJmNTUzYjJhNjhjZTQ5ZTgwZTU5
YmJkMThhNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQpAQCAtMzAzLDcgKzMwMyw3IEBAIC0gKEJPT0wpX21heUF1dG9tYXRpY2FsbHlT
aG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlCiAjaWYgIUhBVkUoQVZLSVQpCiAgICAgcmV0dXJuIGZh
bHNlOwogI2Vsc2UKLSAgICBpZiAoIV9wYWdlIHx8ICFfcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFu
YWdlcigpKQorICAgIGlmICghX3BhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJl
dHVybiBfcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpLT5tYXlBdXRvbWF0aWNhbGx5U2hv
d1ZpZGVvUGljdHVyZUluUGljdHVyZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY4NGE0NzdlODY0ZDM5ODlmNTIxMTU2YjNkYzI5NmY1MDllMTRhYTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5LmgKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eV9oCisjZGVmaW5lIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eV9oCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorCisjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybVZpZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgPFdlYkNvcmUvV2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaD4KKyNlbHNlCisjaW5jbHVkZSA8V2ViQ29yZS9X
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaD4KKyNlbmRpZgorCisjaWYgUExBVEZPUk0o
SU9TKQordHlwZWRlZiBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCBQ
bGF0Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKKyNlbHNlCit0eXBlZGVmIFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyBQbGF0Zm9ybVdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
UGFnZVByb3h5OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OworCitjbGFz
cyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQgZmluYWw6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4sIHB1YmxpYyBXZWJDb3JlOjpXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbCAgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxDb250ZXh0PiBjcmVhdGUoV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
JiBtYW5hZ2VyLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQobWFuYWdlciwgY29udGV4
dElkKSk7CisgICAgfQorICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4
dCgpIHsgfQorCisgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBtX21hbmFnZXIgPSBudWxscHRyOyB9
CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dDsKKworICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dChXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICAgICAg
OiBtX21hbmFnZXIoJm1hbmFnZXIpCisgICAgICAgICwgbV9jb250ZXh0SWQoY29udGV4dElkKQor
ICAgIHsKKyAgICB9CisKKyAgICAvLyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbAorICAgIHZvaWQg
cGxheSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGF1c2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIHRv
Z2dsZVBsYXlTdGF0ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5TY3J1YmJpbmcoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGVuZFNjcnViYmluZygpIG92ZXJyaWRlOworICAgIHZvaWQgc2Vla1Rv
VGltZShkb3VibGUpIG92ZXJyaWRlOworICAgIHZvaWQgZmFzdFNlZWsoZG91YmxlIHRpbWUpIG92
ZXJyaWRlOworICAgIHZvaWQgYmVnaW5TY2FubmluZ0ZvcndhcmQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZW5kU2Nhbm5p
bmcoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3Qp
IG92ZXJyaWRlOworICAgIHZvaWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90KSBv
dmVycmlkZTsKKworICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSogbV9tYW5hZ2Vy
OworICAgIHVpbnQ2NF90IG1fY29udGV4dElkOworfTsKKworY2xhc3MgV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQ
YWdlUHJveHkmKTsKKyAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHko
KTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCisgICAgUGxhdGZvcm1XZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UqIGNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgpOworCitwcml2YXRlOgor
ICAgIGZyaWVuZCBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ7CisgICAgZnJp
ZW5kIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTsKKworICAgIGV4cGxpY2l0
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXIm
KSBvdmVycmlkZTsKKworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxSZWZQdHI8V2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxDb250ZXh0PiwgUmVmUHRyPFBsYXRmb3JtV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlPj4gTW9kZWxJbnRlcmZhY2VUdXBsZTsKKyAgICBNb2RlbEludGVyZmFjZVR1cGxlIGNy
ZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgTW9kZWxJbnRl
cmZhY2VUdXBsZSYgZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKTsK
KyAgICBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQmIGVuc3VyZU1vZGVsKHVpbnQ2NF90
IGNvbnRleHRJZCk7CisgICAgUGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UmIGVu
c3VyZUludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgYWRkQ2xpZW50Rm9y
Q29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50Rm9yQ29u
dGV4dCh1aW50NjRfdCBjb250ZXh0SWQpOworCisgICAgLy8gTWVzc2FnZXMgZnJvbSBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyCisgICAgdm9pZCBzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
V2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBjbGVhclBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyKCk7CisgICAgdm9pZCByZXNldE1lZGlhU3RhdGUodWludDY0X3QgY29udGV4dElk
KTsKKyAgICB2b2lkIHNldEN1cnJlbnRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1
cnJlbnRUaW1lLCBkb3VibGUgaG9zdFRpbWUpOworICAgIHZvaWQgc2V0QnVmZmVyZWRUaW1lKHVp
bnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSk7CisgICAgdm9pZCBzZXRTZWVr
YWJsZVJhbmdlc1ZlY3Rvcih1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxzdGQ6OnBhaXI8ZG91
YmxlLCBkb3VibGU+PiByYW5nZXMpOworICAgIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKHVp
bnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSk7CisgICAgdm9pZCBzZXRBdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxTdHJpbmc+IG9wdGlvbnMs
IHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOworICAgIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxTdHJpbmc+IG9wdGlvbnMsIHVp
bnQ2NF90IHNlbGVjdGVkSW5kZXgpOworICAgIHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFja1Byb3Bl
cnRpZXModWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIHVpbnQzMl90IHRhcmdldFR5
cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKKyAgICB2b2lkIHNldFdpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCk7CisgICAgdm9pZCBz
ZXREdXJhdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbik7CisgICAgdm9p
ZCBzZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsIGRvdWJsZSByYXRl
KTsKKworICAgIC8vIE1lc3NhZ2VzIHRvIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIKKyAgICB2
b2lkIHBsYXkodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHBhdXNlKHVpbnQ2NF90IGNv
bnRleHRJZCk7CisgICAgdm9pZCB0b2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKTsK
KyAgICB2b2lkIGJlZ2luU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBl
bmRTY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHNlZWtUb1RpbWUodWlu
dDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSk7CisgICAgdm9pZCBmYXN0U2Vlayh1aW50NjRf
dCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKTsKKyAgICB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJk
KHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBiZWdpblNjYW5uaW5nQmFja3dhcmQodWlu
dDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJ
ZCk7CisgICAgdm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwg
dWludDY0X3QgaW5kZXgpOworICAgIHZvaWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2
NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpOworCisgICAgV2ViUGFnZVByb3h5KiBtX3Bh
Z2U7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgTW9kZWxJbnRlcmZhY2VUdXBsZT4gbV9jb250ZXh0
TWFwOworICAgIHVpbnQ2NF90IG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkIHsgMCB9OworICAg
IEhhc2hNYXA8dWludDY0X3QsIGludD4gbV9jbGllbnRDb3VudHM7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKworI2VuZGlmIC8vIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDAzYTRiNGM2MDE1OTcyODMwODNlYmZjMzAw
NjJkOTIyMTU0ZmRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCww
ICsxLDM5IEBACisjIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBQ
TEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJ
T05fTU9ERSkpCittZXNzYWdlcyAtPiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkgewor
ICAgIFJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCisgICAgU2V0Q3VycmVudFRp
bWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBob3N0VGlt
ZSkKKyAgICBTZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVy
ZWRUaW1lKQorICAgIFNldFNlZWthYmxlUmFuZ2VzVmVjdG9yKHVpbnQ2NF90IGNvbnRleHRJZCwg
VmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IHJhbmdlcykKKyAgICBTZXRDYW5QbGF5
RmFzdFJldmVyc2UodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQorICAgIFNldEF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4g
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKKyAgICBTZXRMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4gb3B0aW9ucywg
dWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKKyAgICBTZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGll
cyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgdWludDMyX3QgdGFyZ2V0VHlwZSwg
U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCisgICAgU2V0V2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGRpc2FibGVkKQorICAgIFNldER1cmF0
aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKQorICAgIFNldFJhdGUodWlu
dDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZG91YmxlIHJhdGUpCisgICAgU2V0VXBQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlcldpdGhJRCh1aW50NjRfdCBjb250ZXh0SWQpCisgICAgQ2xl
YXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHku
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyMjhhNzRkNTdhMTE2NGZhZWQ2NTk4YmEzOTI5NjA1
MjMwYzY3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCkBAIC0wLDAgKzEsMzc3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHkuaCIKKworI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKworI2ltcG9ydCAiV2ViUGFnZVBy
b3h5LmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZXMuaCIKKyNp
bXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW1wb3J0
ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBvcnQgPFdlYkNvcmUvVGltZVJhbmdlcy5oPgorI2lt
cG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworI3ByYWdtYSBtYXJrIC0gV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxDb250ZXh0CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0Ojpw
bGF5KCkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnBsYXkobV9j
b250ZXh0SWQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6cGF1
c2UoKQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+cGF1c2UobV9j
b250ZXh0SWQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6dG9n
Z2xlUGxheVN0YXRlKCkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXIt
PnRvZ2dsZVBsYXlTdGF0ZShtX2NvbnRleHRJZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxDb250ZXh0OjpiZWdpblNjcnViYmluZygpCit7CisgICAgaWYgKG1fbWFuYWdlcikK
KyAgICAgICAgbV9tYW5hZ2VyLT5iZWdpblNjcnViYmluZyhtX2NvbnRleHRJZCk7Cit9CisKK3Zv
aWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjplbmRTY3J1YmJpbmcoKQoreworICAg
IGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+ZW5kU2NydWJiaW5nKG1fY29udGV4
dElkKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNlZWtUb1Rp
bWUoZG91YmxlIHRpbWUpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2Vy
LT5zZWVrVG9UaW1lKG1fY29udGV4dElkLCB0aW1lKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbENvbnRleHQ6OmZhc3RTZWVrKGRvdWJsZSB0aW1lKQoreworICAgIGlmIChtX21h
bmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+ZmFzdFNlZWsobV9jb250ZXh0SWQsIHRpbWUpOwor
fQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6YmVnaW5TY2FubmluZ0Zv
cndhcmQoKQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+YmVnaW5T
Y2FubmluZ0ZvcndhcmQobV9jb250ZXh0SWQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsQ29udGV4dDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKCkKK3sKKyAgICBpZiAobV9tYW5h
Z2VyKQorICAgICAgICBtX21hbmFnZXItPmJlZ2luU2Nhbm5pbmdCYWNrd2FyZChtX2NvbnRleHRJ
ZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjplbmRTY2Fubmlu
ZygpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT5lbmRTY2Fubmlu
ZyhtX2NvbnRleHRJZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0
OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IG9wdGlvbklkKQoreworICAgIGlmICht
X21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+c2VsZWN0QXVkaW9NZWRpYU9wdGlvbihtX2Nv
bnRleHRJZCwgb3B0aW9uSWQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29u
dGV4dDo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IG9wdGlvbklkKQoreworICAg
IGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+c2VsZWN0TGVnaWJsZU1lZGlhT3B0
aW9uKG1fY29udGV4dElkLCBvcHRpb25JZCk7Cit9CisKKyNwcmFnbWEgbWFyayAtIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eQorCitSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5PiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJv
eHkmIHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkocGFnZSkpOworfQorCitXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UpCisgICAg
OiBtX3BhZ2UoJnBhZ2UpCit7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworfQorCitXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6On5XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkoKQorewor
ICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisgICAgaW52YWxpZGF0ZSgpOworfQor
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCit7Cisg
ICAgbV9wYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlID0gbnVsbHB0cjsKKworICAgIGZvciAoYXV0byYgdHVw
bGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgUmVmUHRyPFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsQ29udGV4dD4gbW9kZWw7CisgICAgICAgIFJlZlB0cjxQbGF0Zm9ybVdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZT4gaW50ZXJmYWNlOworICAgICAgICBzdGQ6OnRpZShtb2Rl
bCwgaW50ZXJmYWNlKSA9IHR1cGxlOworCisgICAgICAgIGludGVyZmFjZS0+aW52YWxpZGF0ZSgp
OworICAgIH0KKworICAgIG1fY29udGV4dE1hcC5jbGVhcigpOworICAgIG1fY2xpZW50Q291bnRz
LmNsZWFyKCk7Cit9CisKK1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TW9kZWxJbnRl
cmZhY2VUdXBsZSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZU1vZGVsQW5k
SW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBSZWY8V2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxDb250ZXh0PiBtb2RlbCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6
Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQpOworICAgIFJlZjxQbGF0Zm9ybVdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZT4gaW50ZXJmYWNlID0gUGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2U6OmNyZWF0ZSgpOworCisgICAgaW50ZXJmYWNlLT5zZXRXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbCgmbW9kZWwuZ2V0KCkpOworCisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShXVEZNb3Zl
KG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKK30KKworV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpNb2RlbEludGVyZmFjZVR1cGxlJiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OmVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fY29udGV4dE1hcC5hZGQoY29udGV4dElkLCBNb2RlbEludGVy
ZmFjZVR1cGxlKCkpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJ
ZCk7CisgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cit9CisKK1dlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsQ29udGV4dCYgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpl
bnN1cmVNb2RlbCh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgcmV0dXJuICpzdGQ6OmdldDww
PihlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpKTsKK30KKworUGxhdGZvcm1XZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UmIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
ZW5zdXJlSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICByZXR1cm4gKnN0ZDo6
Z2V0PDE+KGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCkpOworfQorCit2b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YWRkQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRf
dCBjb250ZXh0SWQpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2NsaWVudENvdW50cy5hZGQo
Y29udGV4dElkLCAxKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKys7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpyZW1vdmVDbGllbnRGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkK
K3sKKyAgICBBU1NFUlQobV9jbGllbnRDb3VudHMuY29udGFpbnMoY29udGV4dElkKSk7CisKKyAg
ICBpbnQgY2xpZW50Q291bnQgPSBtX2NsaWVudENvdW50cy5nZXQoY29udGV4dElkKTsKKyAgICBB
U1NFUlQoY2xpZW50Q291bnQgPiAwKTsKKyAgICBjbGllbnRDb3VudC0tOworCisgICAgaWYgKGNs
aWVudENvdW50IDw9IDApIHsKKyAgICAgICAgbV9jbGllbnRDb3VudHMucmVtb3ZlKGNvbnRleHRJ
ZCk7CisgICAgICAgIG1fY29udGV4dE1hcC5yZW1vdmUoY29udGV4dElkKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIG1fY2xpZW50Q291bnRzLnNldChjb250ZXh0SWQsIGNsaWVudENv
dW50KTsKK30KKworI3ByYWdtYSBtYXJrIE1lc3NhZ2VzIGZyb20gV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlcgorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0VXBQbGF5
YmFja0NvbnRyb2xzTWFuYWdlcldpdGhJRCh1aW50NjRfdCBjb250ZXh0SWQpCit7CisjaWYgUExB
VEZPUk0oTUFDKQorICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9PSBjb250ZXh0
SWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJ
ZCkKKyAgICAgICAgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRyb2xzTWFuYWdlckNvbnRl
eHRJZCk7CisKKyAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IGNvbnRleHRJZDsKKyAg
ICBlbnN1cmVJbnRlcmZhY2UobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpLmVuc3VyZUNvbnRy
b2xzTWFuYWdlcigpOworICAgIGFkZENsaWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJD
b250ZXh0SWQpOworCisgICAgbV9wYWdlLT52aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dElkKTsKKyNlbmRpZgorfQorCit2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y2xlYXJQbGF5YmFja0NvbnRyb2xzTWFu
YWdlcigpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICghbV9jb250cm9sc01hbmFnZXJD
b250ZXh0SWQpCisgICAgICAgIHJldHVybjsKKworICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQo
bV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOworICAgIG1fY29udHJvbHNNYW5hZ2VyQ29udGV4
dElkID0gMDsKKyAgICBtX3BhZ2UtPnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCk7Cisj
ZW5kaWYKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnJlc2V0TWVk
aWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRl
eHRJZCkucmVzZXRNZWRpYVN0YXRlKCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpzZXRDdXJyZW50VGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBjdXJy
ZW50VGltZSwgZG91YmxlIGhvc3RUaW1lKQoreworICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0
SWQpLnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lLCBob3N0VGltZSk7Cit9CisKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29u
dGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQoreworICAgIGVuc3VyZUludGVyZmFjZShjb250
ZXh0SWQpLnNldEJ1ZmZlcmVkVGltZShidWZmZXJlZFRpbWUpOworfQorCit2b2lkIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0U2Vla2FibGVSYW5nZXNWZWN0b3IodWludDY0X3Qg
Y29udGV4dElkLCBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2VzKQorewor
ICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiB0aW1lUmFuZ2VzID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7
CisgICAgZm9yIChjb25zdCBhdXRvJiByYW5nZSA6IHJhbmdlcykgeworICAgICAgICBBU1NFUlQo
aXNmaW5pdGUocmFuZ2UuZmlyc3QpKTsKKyAgICAgICAgQVNTRVJUKGlzZmluaXRlKHJhbmdlLnNl
Y29uZCkpOworICAgICAgICBBU1NFUlQocmFuZ2Uuc2Vjb25kID49IHJhbmdlLmZpcnN0KTsKKyAg
ICAgICAgdGltZVJhbmdlcy0+YWRkKHJhbmdlLmZpcnN0LCByYW5nZS5zZWNvbmQpOworICAgIH0K
KworICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldFNlZWthYmxlUmFuZ2VzKCp0aW1l
UmFuZ2VzKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldENh
blBsYXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCit7CisgICAg
ZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0Q2FuUGxheUZhc3RSZXZlcnNlKHZhbHVlKTsK
K30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4gb3B0aW9u
cywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4
dElkKS5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxlY3RlZEluZGV4
KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldExlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8U3RyaW5nPiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQoreworICAgIGVuc3VyZUludGVyZmFjZShj
b250ZXh0SWQpLnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywgc2VsZWN0
ZWRJbmRleCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRF
eHRlcm5hbFBsYXliYWNrUHJvcGVydGllcyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxl
ZCwgdWludDMyX3QgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCit7Cisg
ICAgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlw
ZSB0eXBlID0gc3RhdGljX2Nhc3Q8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpFeHRlcm5h
bFBsYXliYWNrVGFyZ2V0VHlwZT4odGFyZ2V0VHlwZSk7CisgICAgQVNTRVJUKHR5cGUgPT0gV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpUYXJnZXRUeXBlQWlyUGxheSB8fCB0eXBlID09IFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZVRWT3V0IHx8IHR5cGUgPT0gV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpUYXJnZXRUeXBlTm9uZSk7CisKKyAgICBlbnN1cmVJ
bnRlcmZhY2UoY29udGV4dElkKS5zZXRFeHRlcm5hbFBsYXliYWNrKGVuYWJsZWQsIHR5cGUsIGxv
Y2FsaXplZERldmljZU5hbWUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQodWludDY0X3QgY29udGV4dElk
LCBib29sIGRpc2FibGVkKQoreworICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldFdp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGRpc2FibGVkKTsKK30KKwordm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldER1cmF0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwg
ZG91YmxlIGR1cmF0aW9uKQoreworICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldER1
cmF0aW9uKGR1cmF0aW9uKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OnNldFJhdGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZG91YmxlIHJh
dGUpCit7CisgICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0UmF0ZShpc1BsYXlpbmcs
IHJhdGUpOworfQorCisjcHJhZ21hIG1hcmsgTWVzc2FnZXMgdG8gV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlcgorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cGxheSh1aW50
NjRfdCBjb250ZXh0SWQpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQor
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cGF1c2UodWludDY0X3QgY29u
dGV4dElkKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6UGF1c2UoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp0b2dnbGVQbGF5U3RhdGUodWludDY0X3Qg
Y29udGV4dElkKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkp
OworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY3J1YmJp
bmcodWludDY0X3QgY29udGV4dElkKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY3J1YmJpbmcoY29udGV4dElkKSwgbV9wYWdl
LT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpl
bmRTY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5kU2NydWJiaW5nKGNvbnRleHRJZCks
IG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6c2Vla1RvVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKQoreworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2Vla1Rv
VGltZShjb250ZXh0SWQsIHRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmZhc3RTZWVrKHVpbnQ2NF90IGNvbnRleHRJZCwg
ZG91YmxlIHRpbWUpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpGYXN0U2Vlayhjb250ZXh0SWQsIHRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJlZ2luU2Nhbm5p
bmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdGb3J3YXJkKGNvbnRl
eHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJl
Z2luU2Nhbm5pbmdCYWNrd2FyZChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwor
dm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjYW5uaW5nKHVpbnQ2NF90
IGNvbnRleHRJZCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OkVuZFNjYW5uaW5nKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOwor
fQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2VsZWN0QXVkaW9NZWRp
YU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQoreworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2VsZWN0QXVkaW9N
ZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK3Zv
aWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRp
b24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKK3sKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdExlZ2libGVNZWRp
YU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK1BsYXRm
b3JtV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgpCit7CisgICAgaWYgKCFtX2NvbnRyb2xz
TWFuYWdlckNvbnRleHRJZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgYXV0
byYgaW50ZXJmYWNlID0gZW5zdXJlSW50ZXJmYWNlKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElk
KTsKKyAgICByZXR1cm4gJmludGVyZmFjZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURF
T19QUkVTRU5UQVRJT05fTU9ERSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXgg
Y2QwZDJiZjIxOWZlOTg1MzhlY2Y3NDg3YTc4OGMzNjY4ZTg4MTY3Ny4uZTRiNzJlZDUxMWJhMDRm
OWQ3ZjM3MDliMzNlOWY1ZTc4OWUwNzNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
aApAQCAtNTMsMTUgKzUzLDE3IEBAIHR5cGVkZWYgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjIFBsYXRmb3JtV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OwogY2xh
c3MgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OwogCiBjbGFzcyBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENvbnRleHQgZmluYWw6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsQ29udGV4dD4sIHB1YmxpYyBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bCwgcHVibGljIFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyICB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+IGNy
ZWF0ZShXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IGNv
bnRleHRJZCkKKyAgICBzdGF0aWMgUmVmPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4g
Y3JlYXRlKFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSYgbWFuYWdlciwgV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxDb250ZXh0JiBwbGF5YmFja1Nlc3Npb25Nb2RlbCwgdWludDY0X3QgY29u
dGV4dElkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxDb250ZXh0KG1hbmFnZXIsIGNvbnRleHRJZCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQobWFuYWdlciwgcGxh
eWJhY2tTZXNzaW9uTW9kZWwsIGNvbnRleHRJZCkpOwogICAgIH0KLSAgICB2aXJ0dWFsIH5XZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQoKSB7IH0KKyAgICB2aXJ0dWFsIH5XZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENvbnRleHQoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgbV9tYW5h
Z2VyID0gbnVsbHB0cjsgfQogCkBAIC02OSwxMSArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRMYXllckhvc3RWaWV3KFJldGFpblB0cjxQbGF0Zm9ybVZpZXc+JiYgbGF5ZXJIb3N0Vmlldykg
eyBtX2xheWVySG9zdFZpZXcgPSBXVEZNb3ZlKGxheWVySG9zdFZpZXcpOyB9CiAKIHByaXZhdGU6
Ci0gICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0KFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQotICAgICAgICA6IG1fbWFu
YWdlcigmbWFuYWdlcikKLSAgICAgICAgLCBtX2NvbnRleHRJZChjb250ZXh0SWQpCi0gICAgewot
ICAgIH0KKyAgICBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQoV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5JiwgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0JiwgdWludDY0
X3QpOwogCiAgICAgLy8gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwKICAgICB2b2lkIHBsYXkoKSBv
dmVycmlkZTsKQEAgLTEwMiwxMyArMTAwLDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmdWxsc2Ny
ZWVuTWF5UmV0dXJuVG9JbmxpbmUoKSBvdmVycmlkZTsKIAogICAgIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eSogbV9tYW5hZ2VyOworICAgIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bENvbnRleHQ+IG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7CiAgICAgdWludDY0X3QgbV9jb250ZXh0
SWQ7CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtVmlldyAqPiBtX2xheWVySG9zdFZpZXc7CiB9Owog
CiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYpOworICAgIHN0YXRpYyBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5JiwgV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Jik7CiAgICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5KCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKQEAgLTExOSwxMiAr
MTE4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7
CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdDsKIAotICAgIFBsYXRmb3JtV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlKiBjb250cm9sc01hbmFnZXJJbnRlcmZhY2UoKTsKLQogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OwogCi0gICAg
ZXhwbGljaXQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYpOwor
ICAgIGV4cGxpY2l0IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkm
LCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsK
IAogICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxD
b250ZXh0PiwgUmVmUHRyPFBsYXRmb3JtV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlPj4gTW9k
ZWxJbnRlcmZhY2VUdXBsZTsKQEAgLTEzNywyMCArMTM0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8v
IE1lc3NhZ2VzIGZyb20gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcgogICAgIHZvaWQgc2V0dXBG
dWxsc2NyZWVuV2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDMyX3QgdmlkZW9MYXllcklE
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsUmVjdCwgZmxvYXQgaG9zdGluZ1NjYWxl
RmFjdG9yLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUsIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZSk7Ci0gICAgdm9pZCBzZXRVcFZpZGVvQ29u
dHJvbHNNYW5hZ2VyV2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBjbGVhclZp
ZGVvQ29udHJvbHNNYW5hZ2VyKCk7Ci0gICAgdm9pZCByZXNldE1lZGlhU3RhdGUodWludDY0X3Qg
Y29udGV4dElkKTsKLSAgICB2b2lkIHNldEN1cnJlbnRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwg
ZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgaG9zdFRpbWUpOwotICAgIHZvaWQgc2V0QnVmZmVy
ZWRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSk7CiAgICAgdm9p
ZCBzZXRWaWRlb0RpbWVuc2lvbnModWludDY0X3QgY29udGV4dElkLCBib29sIGhhc1ZpZGVvLCB1
bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKLSAgICB2b2lkIHNldFNlZWthYmxlUmFu
Z2VzVmVjdG9yKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRv
dWJsZT4+IHJhbmdlcyk7Ci0gICAgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UodWludDY0X3Qg
Y29udGV4dElkLCBib29sIHZhbHVlKTsKLSAgICB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4gb3B0aW9ucywgdWludDY0
X3Qgc2VsZWN0ZWRJbmRleCk7Ci0gICAgdm9pZCBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4gb3B0aW9ucywgdWludDY0X3Qg
c2VsZWN0ZWRJbmRleCk7Ci0gICAgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllcyh1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgdWludDMyX3QgdGFyZ2V0VHlwZSwgU3Ry
aW5nIGxvY2FsaXplZERldmljZU5hbWUpOwotICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQodWludDY0X3QgY29udGV4dElkLCBib29sKTsKLSAgICB2b2lkIHNldER1cmF0
aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKTsKLSAgICB2b2lkIHNldFJh
dGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZG91YmxlIHJhdGUpOwogICAg
IHZvaWQgZW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBleGl0
RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkludFJlY3QgZmluYWxSZWN0
KTsKICAgICB2b2lkIGNsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CkBAIC0x
NjAsMTYgKzE0NCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIC8vIE1lc3NhZ2VzIHRvIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIKLSAgICB2b2lkIHBsYXkodWludDY0X3QgY29udGV4dElk
KTsKLSAgICB2b2lkIHBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCB0b2dnbGVQ
bGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGJlZ2luU2NydWJiaW5nKHVp
bnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBlbmRTY3J1YmJpbmcodWludDY0X3QgY29udGV4
dElkKTsKLSAgICB2b2lkIHNlZWtUb1RpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGlt
ZSk7Ci0gICAgdm9pZCBmYXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKTsK
LSAgICB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAg
dm9pZCBiZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lk
IGVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCByZXF1ZXN0RnVsbHNj
cmVlbk1vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwogICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKHVp
bnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBj
b250ZXh0SWQpOwpAQCAtMTc3LDEyICsxNTEsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENs
ZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBzZXRWaWRlb0xh
eWVyRnJhbWUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpGbG9hdFJlY3QpOwogICAgIHZv
aWQgc2V0VmlkZW9MYXllckdyYXZpdHkodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5KTsKLSAgICB2b2lkIHNlbGVjdEF1ZGlv
TWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCk7Ci0gICAgdm9p
ZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBp
bmRleCk7CiAgICAgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQodWludDY0X3QgY29udGV4dElk
LCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwog
ICAgIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZCk7
CiAKICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKKyAgICBSZWY8V2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5PiBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTsKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBNb2RlbEludGVyZmFjZVR1cGxlPiBtX2NvbnRleHRNYXA7CiAgICAgdWludDY0
X3QgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgeyAwIH07CiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgaW50PiBtX2NsaWVudENvdW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDAzMDZlMzFmNzhhMDUwMTg4YmE0OTQ3MDQ0MmFjOWVhNjdl
YmI0NWYuLjE5M2E1MzgxODk0ZTBjN2FiNjQyY2Y2MTdkMzhjOGIxMmUwYmZiOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjIsMjUgKzIy
LDEyIEBACiAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiBtZXNzYWdlcyAtPiBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkgewotICAgIFJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCi0g
ICAgU2V0Q3VycmVudFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUs
IGRvdWJsZSBob3N0VGltZSkKLSAgICBTZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4dElk
LCBkb3VibGUgYnVmZmVyZWRUaW1lKQogICAgIFNldFZpZGVvRGltZW5zaW9ucyh1aW50NjRfdCBj
b250ZXh0SWQsIGJvb2wgaGFzVmlkZW8sIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQp
Ci0gICAgU2V0U2Vla2FibGVSYW5nZXNWZWN0b3IodWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8
c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2VzKQotICAgIFNldENhblBsYXlGYXN0UmV2
ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCi0gICAgU2V0QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8U3RyaW5nPiBvcHRpb25z
LCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQotICAgIFNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8U3RyaW5nPiBvcHRpb25zLCB1aW50NjRf
dCBzZWxlY3RlZEluZGV4KQotICAgIFNldEV4dGVybmFsUGxheWJhY2tQcm9wZXJ0aWVzKHVpbnQ2
NF90IGNvbnRleHRJZCwgYm9vbCBlbmFibGVkLCB1aW50MzJfdCB0YXJnZXRUeXBlLCBTdHJpbmcg
bG9jYWxpemVkRGV2aWNlTmFtZSkKLSAgICBTZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZGlzYWJsZWQpCi0gICAgU2V0RHVyYXRpb24odWlu
dDY0X3QgY29udGV4dElkLCBkb3VibGUgZHVyYXRpb24pCi0gICAgU2V0UmF0ZSh1aW50NjRfdCBj
b250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBkb3VibGUgcmF0ZSkKICAgICBTZXR1cEZ1bGxzY3Jl
ZW5XaXRoSUQodWludDY0X3QgY29udGV4dElkLCB1aW50MzJfdCB2aWRlb0xheWVySUQsIFdlYkNv
cmU6OkludFJlY3QgaW5pdGlhbFJlY3QsIGZsb2F0IGhvc3RpbmdTY2FsZUZhY3RvciwgV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNj
cmVlbk1vZGUsIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZSkKICAgICBFbnRlckZ1bGxzY3Jl
ZW4odWludDY0X3QgY29udGV4dElkKQogICAgIEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRl
eHRJZCwgV2ViQ29yZTo6SW50UmVjdCBmaW5hbFJlY3QpCiAgICAgQ2xlYW51cEZ1bGxzY3JlZW4o
dWludDY0X3QgY29udGV4dElkKQogICAgIFByZXBhcmVkVG9SZXR1cm5Ub0lubGluZSh1aW50NjRf
dCBjb250ZXh0SWQsIGJvb2wgdmlzaWJsZSwgV2ViQ29yZTo6SW50UmVjdCBpbmxpbmVSZWN0KQot
ICAgIFNldFVwVmlkZW9Db250cm9sc01hbmFnZXJXaXRoSUQodWludDY0X3QgY29udGV4dElkKQot
ICAgIENsZWFyVmlkZW9Db250cm9sc01hbmFnZXIoKQogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIEV4aXRGdWxsc2NyZWVuV2l0aG91dEFu
aW1hdGlvblRvTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCBhYzkzZjgzZDY1MmI2ZjU3MmUx
NWE0MTk1YzAwYTI4MzliMzVhNTFiLi41NTY1ODMwMjM0YjdhOGJmNGFhNjQ4NDE4OTQwYWJjODU3
M2RjMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KQEAgLTI5LDYgKzI5LDcg
QEAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19Q
UkVTRU5UQVRJT05fTU9ERSkpCiAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAi
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJv
eHkuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJNZXNzYWdlcy5oIgogI2lt
cG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKQEAgLTExMSw2
NCArMTEyLDY1IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjphcHBsaWNh
dGlvbkRpZEJlY29tZUFjdGl2ZSgpCiAKICNwcmFnbWEgbWFyayAtIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsQ29udGV4dAogCitXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OldlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsQ29udGV4dChXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkmIG1h
bmFnZXIsIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dCYgcGxheWJhY2tTZXNzaW9uTW9k
ZWwsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICA6IG1fbWFuYWdlcigmbWFuYWdlcikKKyAgICAs
IG1fcGxheWJhY2tTZXNzaW9uTW9kZWwocGxheWJhY2tTZXNzaW9uTW9kZWwpCisgICAgLCBtX2Nv
bnRleHRJZChjb250ZXh0SWQpCit7Cit9CisKK1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4
dDo6fldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCgpCit7Cit9CisKIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpwbGF5KCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQot
ICAgICAgICBtX21hbmFnZXItPnBsYXkobV9jb250ZXh0SWQpOworICAgIG1fcGxheWJhY2tTZXNz
aW9uTW9kZWwtPnBsYXkoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQ6OnBhdXNlKCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnBh
dXNlKG1fY29udGV4dElkKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5wYXVzZSgpOwog
fQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6dG9nZ2xlUGxheVN0YXRl
KCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnRvZ2dsZVBsYXlT
dGF0ZShtX2NvbnRleHRJZCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+dG9nZ2xlUGxh
eVN0YXRlKCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpiZWdp
blNjcnViYmluZygpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5i
ZWdpblNjcnViYmluZyhtX2NvbnRleHRJZCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+
YmVnaW5TY3J1YmJpbmcoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQ6OmVuZFNjcnViYmluZygpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5h
Z2VyLT5lbmRTY3J1YmJpbmcobV9jb250ZXh0SWQpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9k
ZWwtPmVuZFNjcnViYmluZygpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dDo6c2Vla1RvVGltZShkb3VibGUgdGltZSkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAg
ICAgICBtX21hbmFnZXItPnNlZWtUb1RpbWUobV9jb250ZXh0SWQsIHRpbWUpOworICAgIG1fcGxh
eWJhY2tTZXNzaW9uTW9kZWwtPnNlZWtUb1RpbWUodGltZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxDb250ZXh0OjpmYXN0U2Vlayhkb3VibGUgdGltZSkKIHsKLSAgICBpZiAo
bV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPmZhc3RTZWVrKG1fY29udGV4dElkLCB0aW1l
KTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5mYXN0U2Vlayh0aW1lKTsKIH0KIAogdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKCkK
IHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPmJlZ2luU2Nhbm5pbmdG
b3J3YXJkKG1fY29udGV4dElkKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5iZWdpblNj
YW5uaW5nRm9yd2FyZCgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4
dDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAg
ICBtX21hbmFnZXItPmJlZ2luU2Nhbm5pbmdCYWNrd2FyZChtX2NvbnRleHRJZCk7CisgICAgbV9w
bGF5YmFja1Nlc3Npb25Nb2RlbC0+YmVnaW5TY2FubmluZ0JhY2t3YXJkKCk7CiB9CiAKIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjplbmRTY2FubmluZygpCiB7Ci0gICAgaWYg
KG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5lbmRTY2FubmluZyhtX2NvbnRleHRJZCk7
CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+ZW5kU2Nhbm5pbmcoKTsKIH0KIAogdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKQEAgLTE5MSwxNCAr
MTkzLDEyIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpzZXRWaWRlb0xh
eWVyR3Jhdml0eShXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzCiAKIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxDb250ZXh0OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IG9wdGlvbklk
KQogewotICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2VsZWN0QXVkaW9N
ZWRpYU9wdGlvbihtX2NvbnRleHRJZCwgb3B0aW9uSWQpOworICAgIG1fcGxheWJhY2tTZXNzaW9u
TW9kZWwtPnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24ob3B0aW9uSWQpOwogfQogCiB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2
NF90IG9wdGlvbklkKQogewotICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+
c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKG1fY29udGV4dElkLCBvcHRpb25JZCk7CisgICAgbV9w
bGF5YmFja1Nlc3Npb25Nb2RlbC0+c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKG9wdGlvbklkKTsK
IH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUgbW9kZSkKQEAgLTI0NCwxMyArMjQ0LDE0IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDb250ZXh0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKQogCiAjcHJhZ21hIG1hcmsg
LSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkKIAotUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eT4gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUo
V2ViUGFnZVByb3h5JiBwYWdlKQorUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eT4gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBw
YWdlLCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmIHBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eShwYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkocGFnZSwgcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KSk7CiB9
CiAKLVdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSkKK1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwg
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkpCiAgICAgOiBtX3BhZ2UoJnBhZ2UpCisgICAgLCBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eShwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCiB7CiAgICAgbV9wYWdlLT5wcm9jZXNz
KCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOwog
fQpAQCAtMzEzLDggKzMxNCwxMCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogCiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAg
UmVmPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4gbW9kZWwgPSBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKLSAgICBSZWY8UGxh
dGZvcm1XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U+IGludGVyZmFjZSA9IFBsYXRmb3JtV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpjcmVhdGUoKTsKKyAgICBhdXRvJiBwbGF5YmFja1Nl
c3Npb25Nb2RlbCA9IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LT5lbnN1cmVNb2RlbChj
b250ZXh0SWQpOworICAgIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+IG1vZGVs
ID0gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpjcmVhdGUoKnRoaXMsIHBsYXliYWNr
U2Vzc2lvbk1vZGVsLCBjb250ZXh0SWQpOworICAgIGF1dG8mIHBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZSA9IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LT5lbnN1cmVJbnRlcmZhY2UoY29u
dGV4dElkKTsKKyAgICBSZWY8UGxhdGZvcm1XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U+IGlu
dGVyZmFjZSA9IFBsYXRmb3JtV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpjcmVhdGUocGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlKTsKIAogICAgIGludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWwoJm1vZGVsLmdldCgpKTsKICAgICBpbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyKCZtb2RlbC5nZXQoKSk7CkBAIC00MDAsMTA4ICs0MDMsMTEg
QEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldHVwRnVsbHNjcmVlbldp
dGhJRCh1aW50NjRfdCBjb250ZXh0SWQsIHUKICNlbmRpZgogfQogCi12b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VXBWaWRlb0NvbnRyb2xzTWFuYWdlcldpdGhJRCh1aW50
NjRfdCBjb250ZXh0SWQpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChtX2NvbnRyb2xz
TWFuYWdlckNvbnRleHRJZCA9PSBjb250ZXh0SWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
IChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKLSAgICAgICAgcmVtb3ZlQ2xpZW50Rm9yQ29u
dGV4dChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCk7Ci0KLSAgICBtX2NvbnRyb2xzTWFuYWdl
ckNvbnRleHRJZCA9IGNvbnRleHRJZDsKLSAgICBlbnN1cmVJbnRlcmZhY2UobV9jb250cm9sc01h
bmFnZXJDb250ZXh0SWQpLmVuc3VyZUNvbnRyb2xzTWFuYWdlcigpOwotICAgIGFkZENsaWVudEZv
ckNvbnRleHQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOwotCi0gICAgbV9wYWdlLT52aWRl
b0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29u
dGV4dElkKTsKLSNlbmRpZgotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6Y2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAg
IGlmICghbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IHJlbW92ZUNsaWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOwotICAg
IG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkID0gMDsKLSAgICBtX3BhZ2UtPnZpZGVvQ29udHJv
bHNNYW5hZ2VyRGlkQ2hhbmdlKCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OnJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0g
ICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkucmVzZXRNZWRpYVN0YXRlKCk7Ci19Ci0KLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRDdXJyZW50VGltZSh1aW50NjRf
dCBjb250ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGhvc3RUaW1lKQotewotICAg
IGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lLCBo
b3N0VGltZSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRC
dWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQotewot
ICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldEJ1ZmZlcmVkVGltZShidWZmZXJlZFRp
bWUpOwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9E
aW1lbnNpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBoYXNWaWRlbywgdW5zaWduZWQgd2lk
dGgsIHVuc2lnbmVkIGhlaWdodCkKIHsKICAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4dElkKS5z
ZXRWaWRlb0RpbWVuc2lvbnMoaGFzVmlkZW8sIHdpZHRoLCBoZWlnaHQpOwogfQogCi12b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0U2Vla2FibGVSYW5nZXNWZWN0b3IodWlu
dDY0X3QgY29udGV4dElkLCBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2Vz
KQotewotICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiB0aW1lUmFuZ2VzID0gVGltZVJhbmdlczo6Y3Jl
YXRlKCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiByYW5nZSA6IHJhbmdlcykgewotICAgICAgICBB
U1NFUlQoaXNmaW5pdGUocmFuZ2UuZmlyc3QpKTsKLSAgICAgICAgQVNTRVJUKGlzZmluaXRlKHJh
bmdlLnNlY29uZCkpOwotICAgICAgICBBU1NFUlQocmFuZ2Uuc2Vjb25kID49IHJhbmdlLmZpcnN0
KTsKLSAgICAgICAgdGltZVJhbmdlcy0+YWRkKHJhbmdlLmZpcnN0LCByYW5nZS5zZWNvbmQpOwot
ICAgIH0KLQotICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldFNlZWthYmxlUmFuZ2Vz
KCp0aW1lUmFuZ2VzKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OnNldENhblBsYXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCi17
Ci0gICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0Q2FuUGxheUZhc3RSZXZlcnNlKHZh
bHVlKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldEF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4g
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKLXsKLSAgICBlbnN1cmVJbnRlcmZhY2Uo
Y29udGV4dElkKS5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxlY3Rl
ZEluZGV4KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldExl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8U3Ry
aW5nPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQotewotICAgIGVuc3VyZUludGVy
ZmFjZShjb250ZXh0SWQpLnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywg
c2VsZWN0ZWRJbmRleCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpzZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllcyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wg
ZW5hYmxlZCwgdWludDMyX3QgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUp
Ci17Ci0gICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpFeHRlcm5hbFBsYXliYWNrVGFy
Z2V0VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpF
eHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZT4odGFyZ2V0VHlwZSk7Ci0gICAgQVNTRVJUKHR5cGUg
PT0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpUYXJnZXRUeXBlQWlyUGxheSB8fCB0eXBl
ID09IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZTo6VGFyZ2V0VHlwZVRWT3V0IHx8IHR5cGUg
PT0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpUYXJnZXRUeXBlTm9uZSk7Ci0gICAgCi0g
ICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0RXh0ZXJuYWxQbGF5YmFjayhlbmFibGVk
LCB0eXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90
IGNvbnRleHRJZCwgYm9vbCBkaXNhYmxlZCkKLXsKLSAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4
dElkKS5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChkaXNhYmxlZCk7Ci19Ci0KLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXREdXJhdGlvbih1aW50NjRfdCBj
b250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbikKLXsKLSAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4
dElkKS5zZXREdXJhdGlvbihkdXJhdGlvbik7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpzZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcs
IGRvdWJsZSByYXRlKQotewotICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldFJhdGUo
aXNQbGF5aW5nLCByYXRlKTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiB7CiAgICAgYXV0byYgaW50
ZXJmYWNlID0gZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCk7CkBAIC01NTcsNTYgKzQ2Myw2IEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpwcmVwYXJlZFRvUmV0dXJuVG9J
bmxpbmUodWludDY0X3QgY29udGV4dElkCiAKICNwcmFnbWEgbWFyayBNZXNzYWdlcyB0byBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlBsYXkoY29udGV4dElkKSwgbV9wYWdlLT5w
YWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpwYXVz
ZSh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpQYXVzZShjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnRvZ2dsZVBsYXlT
dGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpUb2dnbGVQbGF5U3RhdGUoY29udGV4dElkKSwgbV9w
YWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpiZWdpblNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpCZWdpblNjcnViYmluZyhjb250
ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OmVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpFbmRTY3J1YmJp
bmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpzZWVrVG9UaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91Ymxl
IHRpbWUpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpTZWVrVG9UaW1lKGNvbnRleHRJZCwgdGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOwot
fQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZmFzdFNlZWsodWludDY0
X3QgY29udGV4dElkLCBkb3VibGUgdGltZSkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkZhc3RTZWVrKGNvbnRleHRJZCwgdGltZSksIG1f
cGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6YmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29udGV4dElkKQotewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6QmVnaW5TY2Fubmlu
Z0ZvcndhcmQoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpiZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3Qg
Y29udGV4dElkKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6QmVnaW5TY2FubmluZ0JhY2t3YXJkKGNvbnRleHRJZCksIG1fcGFnZS0+cGFn
ZUlEKCkpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW5kU2Nh
bm5pbmcodWludDY0X3QgY29udGV4dElkKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RW5kU2Nhbm5pbmcoY29udGV4dElkKSwgbV9wYWdl
LT5wYWdlSUQoKSk7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpy
ZXF1ZXN0RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RGdWxsc2Ny
ZWVuTW9kZShjb250ZXh0SWQsIG1vZGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKQEAgLTY2MywxNiAr
NTE5LDYgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVvTGF5
ZXJHcmF2aXR5KHVpbnQ2NF90IGNvbnRleHRJZCwgV2UKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bShj
b250ZXh0SWQsICh1bnNpZ25lZClncmF2aXR5KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9u
KHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCi17Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZWxlY3RBdWRpb01lZGlhT3B0
aW9uKGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50
NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQotewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9u
KGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQogdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh1aW50NjRfdCBj
b250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSBtb2RlKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1vZGVDaGFuZ2VkKGNvbnRleHRJZCwgbW9kZSksIG1fcGFn
ZS0+cGFnZUlEKCkpOwpAQCAtNjgzLDE1ICs1MjksNiBAQCBib29sIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6aXNWaXNpYmxlKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdlLT5pc1Zp
ZXdWaXNpYmxlKCkgJiYgbV9wYWdlLT5pc0luV2luZG93KCk7CiB9CiAKLVBsYXRmb3JtV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNv
bnRyb2xzTWFuYWdlckludGVyZmFjZSgpCi17Ci0gICAgaWYgKCFtX2NvbnRyb2xzTWFuYWdlckNv
bnRleHRJZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvJiBpbnRlcmZhY2Ug
PSBlbnN1cmVJbnRlcmZhY2UobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOwotICAgIHJldHVy
biAmaW50ZXJmYWNlOwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKICAgICBi
b29sIGlzVmlld1Zpc2libGUgPSBtX3BhZ2UtPmlzVmlld1Zpc2libGUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYjlhMWNjZGE3YTNmMTBjYmEwYjky
ODQ5MWI3NDY3NTA3OTNlZjdmMC4uZDQ5ZDNjZGMwNzM2NjIyYTA3YmViNzM4ZmFkMGE4N2UzNDI4
ZGE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE3
MCw2ICsxNzAsMTAgQEAKICNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViUGFnZVByb3h5SW5j
bHVkZXMuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2luY2x1ZGUgIldlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eS5oIgorI2VuZGlmCisKIC8vIFRoaXMgY29udHJvbHMgd2hhdCBz
dHJhdGVneSB3ZSB1c2UgZm9yIG1vdXNlIHdoZWVsIGNvYWxlc2NpbmcuCiAjZGVmaW5lIE1FUkdF
X1dIRUVMX0VWRU5UUyAxCiAKQEAgLTQ3MSw3ICs0NzUsOCBAQCBXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Ms
IHVpbgogICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjpjcmVhdGUoKnRoaXMsIG1fcGFnZUNsaWVudC5mdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50
KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQotICAgIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdl
ciA9IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKCp0aGlzKTsKKyAgICBt
X3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIgPSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OmNyZWF0ZSgqdGhpcyk7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoKnRoaXMsICptX3BsYXliYWNrU2Vzc2lvbk1h
bmFnZXIpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZJQlJBVElPTikKICAgICBtX3ZpYnJhdGlvbiA9
IFdlYlZpYnJhdGlvblByb3h5OjpjcmVhdGUodGhpcyk7CkBAIC03MDgsNyArNzEzLDggQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKCkKICAgICBtX2Z1bGxTY3JlZW5N
YW5hZ2VyID0gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX3BhZ2VD
bGllbnQuZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpKTsKICNlbmRpZgogI2lmIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgPSBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OmNyZWF0ZSgqdGhpcyk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
ID0gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUoKnRoaXMpOworICAgIG1f
dmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
Y3JlYXRlKCp0aGlzLCAqbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyKTsKICNlbmRpZgogCiAjaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKQEAgLTQwMjgsOSArNDAzNCwxNCBAQCBXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5KiBXZWJQYWdlUHJveHk6OmZ1bGxTY3JlZW5NYW5hZ2VyKCkKICNlbmRp
ZgogICAgIAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKLVJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk+IFdlYlBhZ2VQcm94eTo6dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpCitXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkqIFdlYlBhZ2VQcm94eTo6cGxheWJhY2tTZXNzaW9uTWFuYWdl
cigpCiB7Ci0gICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlcjsKKyAgICByZXR1cm4g
bV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmdldCgpOworfQorCitXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkqIFdlYlBhZ2VQcm94eTo6dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpCit7Cisg
ICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlci5nZXQoKTsKIH0KICNlbmRpZgogCkBA
IC01MDYzLDYgKzUwNzQsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRT
dGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29uKQogICAgIG1fdmlzaWJsZVNjcm9sbGVyVGh1bWJS
ZWN0ID0gSW50UmVjdCgpOwogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAgIGlmIChtX3BsYXliYWNrU2Vz
c2lvbk1hbmFnZXIpIHsKKyAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5pbnZhbGlk
YXRlKCk7CisgICAgICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlciA9IG51bGxwdHI7CisgICAg
fQogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIpIHsKICAgICAgICAgbV92aWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVu
TWFuYWdlciA9IG51bGxwdHI7CkBAIC02MDM5LDcgKzYwNTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKQogYm9vbCBXZWJQYWdlUHJveHk6Omhh
c0FjdGl2ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdl
ciAmJiBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgp
ICYmIG1fbWVkaWFTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6Okhhc0F1ZGlvT3JWaWRlbzsKKyAgICBy
ZXR1cm4gbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyICYmIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdl
ci0+Y29udHJvbHNNYW5hZ2VySW50ZXJmYWNlKCkgJiYgbV9tZWRpYVN0YXRlICYgTWVkaWFQcm9k
dWNlcjo6SGFzQXVkaW9PclZpZGVvOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBlYmExNTEwZmY1Yjlh
NzA3MTQ2Yjc0MjFhMGQ0MjJkOWFlM2FlZjU0Li5hZDIwMTQ4NzBmNTE1NzBjZDZiZDAyYjVlOTkx
YjU2OWM0MDc1YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC0xOTIsNiArMTkyLDcgQEAgY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdl
YkNvbnRleHRNZW51UHJveHk7CiBjbGFzcyBXZWJFZGl0Q29tbWFuZFByb3h5OwogY2xhc3MgV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eTsKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTsKIGNsYXNzIFdlYk5hdmlnYXRpb25TdGF0ZTsKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTsKIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7CkBAIC0zMjgsNyArMzI5LDgg
QEAgcHVibGljOgogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqIGZ1bGxTY3JlZW5NYW5h
Z2VyKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eT4gdmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpOworICAgIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSogcGxheWJhY2tTZXNzaW9uTWFuYWdlcigpOworICAgIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSogdmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xNTQ3LDYgKzE1NDksNyBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5PiBtX2Z1bGxTY3JlZW5NYW5h
Z2VyOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk+IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlcjsKICAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXI7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGRhNTcxZWEwNjRjNDQ5Mjk5MmRkMzhmODg3
ZmU1NTI0MGE5ZmFiMi4uNzgxZjExNGI1YzZiYjhjM2EwYjY0YjZjYzJlYzkxOTQ3MzJkOGM3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTcwNSw2ICsxNzA1LDE0IEBACiAJCUNENzNCQTRFMTMxQUNEQjcwMEVFREVEMiAvKiBX
ZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDczQkE0ODEzMUFDRDhFMDBFRURFRDIgLyog
V2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlDRDczQkE1
MzEzMUI2NDVCMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q3M0JBMzcxMzFBMjlGRTAwRUVE
RUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCAqLzsgfTsKIAkJQ0RBMDQxRjQxQUNFMjEw
NTAwNEExM0VDIC8qIEJhY2tCb2FyZFNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEwNDFGMzFBQ0UyMTA1MDA0QTEzRUMgLyogQmFj
a0JvYXJkU2VydmljZXNTUEkuaCAqLzsgfTsKKwkJQ0RBMjlBMUExQ0JEQkY0MTAwOTAxQ0NGIC8q
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREEyOUExODFDQkRCRjQxMDA5MDFDQ0YgLyogV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlci5tbSAqLzsgfTsKKwkJQ0RBMjlBMUIxQ0JEQkY0MTAwOTAxQ0NGIC8q
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTE5MUNCREJGNDEwMDkwMUNDRiAvKiBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLmggKi87IH07CisJCUNEQTI5QTIwMUNCRUI1RkIwMDkwMUNDRiAvKiBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTFFMUNCRUI1RkIwMDkwMUNDRiAvKiBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCAqLzsgfTsKKwkJQ0RBMjlBMjExQ0JFQjVGQjAwOTAx
Q0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTFGMUNCRUI1RkIwMDkwMUNDRiAv
KiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gKi87IH07CisJCUNEQTI5QTI4MUNC
RUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5
QTI0MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RBMjlBMjkxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMjUxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJNZXNzYWdlcy5oICovOyB9OworCQlDREEyOUEyQTFDQkVCNjdBMDA5MDFD
Q0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTI2MUNC
RUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OworCQlDREEyOUEyQjFDQkVCNjdBMDA5MDFDQ0YgLyogV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTI3MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovOyB9OwogCQlDREMzODJGRTE3MjEx
Nzk5MDA4QTJGQzMgLyogU2VjSXRlbVNoaW1MaWJyYXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjhBNzgxMzhCNDYwOTAwQTk1RjQ0IC8qIFNl
Y0l0ZW1TaGltTGlicmFyeS5tbSAqLzsgfTsKIAkJQ0RDMzgzMDcxNzIxMTdERDAwOEEyRkMzIC8q
IENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREMzODJGOTE3MjExNkQzMDA4QTJGQzMgLyogQ29va2llU3Rv
cmFnZVNoaW1MaWJyYXJ5LmNwcCAqLzsgfTsKIAkJQ0RDMzgzMEMxNzIxMjI4MjAwOEEyRkMzIC8q
IENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RDMzgzMEIxNzIxMjFDRTAwOEEyRkMzIC8qIENvb2tpZVN0b3Jh
Z2VTaGltTGlicmFyeS5oICovOyB9OwpAQCAtMzc3Niw2ICszNzg0LDE2IEBACiAJCUNENzNCQTQ5
MTMxQUNEOEUwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q3M0JBNEExMzFBQ0Q4RjAwRUVERUQy
IC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBMDQxRjMxQUNFMjEwNTAwNEExM0VDIC8qIEJh
Y2tCb2FyZFNlcnZpY2VzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJh
Y2tCb2FyZFNlcnZpY2VzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTI5
QTE4MUNCREJGNDEwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMTkxQ0JEQkY0MTAw
OTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREEyOUExQzFDQkRCRjVCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREEyOUExRTFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREEyOUEx
RjFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREEyOUEyMjFD
QkVCNjFBMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMjQxQ0JF
QjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQTI5QTI1MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QTI5QTI2MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMjcxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzM4MkY3MTcyMTE1MDYwMDhBMkZDMyAvKiBD
Rk5ldHdvcmsuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDRk5ldHdvcmsuZnJhbWV3b3Jr
OyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yazsg
c291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJQ0RDMzgyRjkxNzIxMTZEMzAwOEEyRkMz
IC8qIENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb29r
aWVTdG9yYWdlU2hpbUxpYnJhcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
REMzODMwNjE3MjExNzk5MDA4QTJGQzMgLyogV2ViUHJvY2Vzc1NoaW0uZHlsaWIgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8u
ZHlsaWIiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBXZWJQcm9jZXNzU2hpbS5keWxpYjsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTQ2MzYsNiArNDY1NCw5IEBA
CiAJCQkJOTk4NkJERDYxQ0E5QTIyMjAwNDgwMEFBIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uQ29j
b2EubW0gKi8sCiAJCQkJMUFDMDI3M0UxOTY2MjJENjAwQzEyQjc1IC8qIFdlYlBhZ2VQcm94eUNv
Y29hLm1tICovLAogCQkJCTdDNDY5NENCMUE0QjUxMEEwMEFENTg0NSAvKiBXZWJQYXN0ZWJvYXJk
UHJveHlDb2NvYS5tbSAqLywKKwkJCQlDREEyOUExRTFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmggKi8sCisJCQkJQ0RBMjlBMjIxQ0JFQjYxQTAwOTAx
Q0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJ
CQlDREEyOUExRjFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5Lm1tICovLAogCQkJCTdDRTREMjE1MUE0OTE0ODQwMEM3RjE1MiAvKiBXZWJQcm9jZXNzUG9v
bENvY29hLm1tICovLAogCQkJCTFBMDRGNjE3MUE0QTNBN0EwMEEyMUI2RSAvKiBXZWJQcm9jZXNz
UHJveHlDb2NvYS5tbSAqLywKIAkJCQk1MkQ1QTFBQTFDNTc0OTRFMDBERTM0QTMgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggKi8sCkBAIC01NTc3LDYgKzU1OTgsOSBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3QzZFNzBGOTE4QjJENEEwMDBG
MjRFMkUgLyogV2ViUHJvY2Vzc0NvY29hLm1tICovLAorCQkJCUNEQTI5QTE5MUNCREJGNDEwMDkw
MUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmggKi8sCisJCQkJQ0RBMjlBMUMxQ0JE
QkY1QjAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8s
CisJCQkJQ0RBMjlBMTgxQ0JEQkY0MTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXIubW0gKi8sCiAJCQkJNTJENUExQjIxQzU3NDlGMjAwREUzNEEzIC8qIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIuaCAqLywKIAkJCQk1MkQ1QTFCMzFDNTc0OUYyMDBERTM0QTMgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk1MkQ1QTFCNDFDNTc0OUYy
MDBERTM0QTMgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSAqLywKQEAgLTY5NDksNiAr
Njk3MywxMCBAQAogCQkJCUJDQkQzOTEzMTI1QkIxQTgwMEQyQzI5RiAvKiBXZWJQYWdlUHJveHlN
ZXNzYWdlcy5oICovLAogCQkJCTdDNDY5NEM3MUE0QjRFQTAwMEFENTg0NSAvKiBXZWJQYXN0ZWJv
YXJkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTdDNDY5NEM4MUE0QjRFQTEwMEFE
NTg0NSAvKiBXZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQTI5QTI0MUNC
RUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKKwkJCQlDREEyOUEyNTFDQkVCNjdBMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlck1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBMjlBMjYxQ0JFQjY3QTAwOTAxQ0NGIC8q
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJ
CQkJQ0RBMjlBMjcxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMUEwNDNGNjcxMjUxNEQ4QjAwRkZCRkI1IC8qIFdlYlBy
b2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQTA0M0Y2ODEyNTE0
RDhCMDBGRkJGQjUgLyogV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovLAogCQkJCUJD
MzA2NkJDMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKQEAgLTc1NTgsNiArNzU4Niw3IEBACiAJCQkJNTE0RDlGNTcxOTExOUQzNTAwMDA2M0E3IC8q
IFNlcnZpY2VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGREU2NUExOTU0QTQy
QjAwQzQ4RkZBIC8qIFNlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwMDJENDkx
OTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0RBMjlBMjAxQ0JFQjVGQjAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzUzRTNFMEUxODg3Mzk4OTAwMTg4NDk2IC8qIFNl
c3Npb25UcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUM4MUQ1QTFDMjBFN0UyMDA1QzRD
ODIgLyogQXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk1NUE2RUMxQzc5
ODBDMjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKQEAg
LTc5ODIsNiArODAxMSw3IEBACiAJCQkJQTVFRkQzOEMxNkIwRTg4QzAwQjJGMEU4IC8qIFdLUGFn
ZVZpc2liaWxpdHlUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2QUI1NDExOTJCMUM0QTAw
M0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkRBMUU0RkUxOEMwMkI2QTAwREJDOTI5IC8qIFdLUERGVmlldy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0RBMjlBMjkxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8q
IFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQUJBNzc0MUE4MTdF
RTYwMEVGMEYxQSAvKiBXS1BsdWdpbkxvYWRQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
RkREMzE3MTg5MUM5NDcwMDE1Mzk3MCAvKiBXS1ByZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywK
QEAgLTgwNDIsNiArODA3Miw3IEBACiAJCQkJMzc3RUFENDgxN0UyQzc3QjAwMkQxOTNEIC8qIFdL
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYxMTNFMjkx
MjZDRTE5QjAwNTdEMEE3IC8qIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0QTNDQzE4RjE5QjA3QjhBMDBEMTRBRUYgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBMjlBMUIxQ0JEQkY0MTAwOTAxQ0NGIC8q
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUYwODlC
MTkyNjdFRTUwMEI2MzkwQyAvKiBXS1VzZXJTY3JpcHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
N0VBRDQ5MTdFMkM3N0IwMDJEMTkzRCAvKiBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUFGMDg5RDE5MjY3RkM4MDBCNjM5MEMgLyogV0tVc2VyU2NyaXB0
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtODA4Myw2ICs4MTE0LDcgQEAKIAkJCQkxQTU3
MTA5RjFBQkEwMDI3MDAyRkFCQkUgLyogV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0EyNTNGMzFDOTI0MTEyMDBGOUY2OEQgLyogV0tQcmV2aWV3QWN0aW9uSXRl
bUlkZW50aWZpZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNDQzE2NzE4OTA2QUNGMDAxRTZF
RDggLyogV0tXZWJWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREEyOUEyQjFDQkVCNjdBMDA5
MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBREY1OTFCMTg5MDUyOEUwMDQzQzE0NSAvKiBXS1dlYlZpZXdDb25maWd1
cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDdBQUZENjE4Qzk1NkFGMDBBN0FDRDQgLyog
V0tXZWJWaWV3Q29uZmlndXJhdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUMx
NDE1MTE4QUM0N0VFMDA2QzYwMkMgLyogV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaCBp
biBIZWFkZXJzICovLApAQCAtODcxMCw2ICs4NzQyLDcgQEAKIAkJCQk3QzFCQTMzRDFBNEEwRTYw
MDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI0MEVF
NTFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM1NzU2MTMxMjZFMDEzODAwNkYwRjEyIC8qIEFQSUVycm9yLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUNEQTI5QTJBMUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFD
MTMzNzExODU2NkM3QzAwRjNFQzA1IC8qIEFQSUZyYW1lSGFuZGxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJERjlFRUU1MUE3ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUFDMTMzNzQxODU3QzIxRTAwRjNFQzA1IC8qIEFQSUdlb21ldHJ5LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtODg1Myw2ICs4ODg2LDcgQEAKIAkJCQkyRDVBQjYzMDFBNjlE
NkZCMDAxNEE5Q0IgLyogTWVzc2FnZVJlY29yZGVyUHJvYmVzLmQgaW4gU291cmNlcyAqLywKIAkJ
CQkxQUFCMDM3OTE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDMEUzQUE3QjEyMDlFODM1MDBBNDlEMDEgLyogTW9kdWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUNEQTI5QTI4MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMwRTNBQTdB
MTIwOUU4MzAwMEE0OUQwMSAvKiBNb2R1bGVDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDUw
MzY1RTFCQ0M3OTNGMDBFMjBCQjMgLyogTmF0aXZlV2ViR2VzdHVyZUV2ZW50TWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkRBOTQ0OUUxODg0RTRGMDAwRUQ4NkRCIC8qIE5hdGl2ZVdlYktleWJv
YXJkRXZlbnRJT1MubW0gaW4gU291cmNlcyAqLywKQEAgLTg5NTUsNiArODk4OSw3IEBACiAJCQkJ
N0MxMzVBQUMxNzNCMENGRjAwNTg2QUUyIC8qIFBsdWdpbkluZm9ybWF0aW9uTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUFFRkNDMTMxMUQwMUY5NjAwODIxOUQzIC8qIFBsdWdpbkluZm9TdG9y
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUVGQ0NCRDExRDAyQzVFMDA4MjE5RDMgLyogUGx1
Z2luSW5mb1N0b3JlTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBMjlBMUExQ0JEQkY0MTAw
OTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkxQTA0Mzk3NzEyNEQwMzQ4MDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTBFQzkwNzEyNEMwQUI4MDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEwRUM5MTAxMjRDMEFGNTAwN0VGNEE1IC8q
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkw
MDgsNiArOTA0Myw3IEBACiAJCQkJMEY1OTQ3OUExODdCM0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQzM2NUMx
OEMwNUNBMTAwRjYwN0Q3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0g
aW4gU291cmNlcyAqLywKIAkJCQkwRjU5NDdBMzE4N0IzQjdEMDA0Mzc4NTcgLyogUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREEy
OUEyMTFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1OTQ3OUMxODdCM0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNj
cm9sbGluZ1RyZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFCMDkxMTJGNUUzQzAwMzM3
QkFCIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBQjRB
QUExMjk2RjE1NDAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb25NYWMubW0gaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAyN2QwOTI4YTE2OTk4MTdlNmUzNmIxYzYx
NTQwOTNlNDU2ODc0Mzk4Li5mZGI0NTMwNDE1ZjdhNjQwNmNiODEyY2U1NDE5N2YxM2Y1ZTFlNzRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC03Niw2ICs3Niw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXR0aW5ncy5oPgogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2luY2x1ZGUgIldlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
LmgiCiAjZW5kaWYKIApAQCAtODUzLDM0ICs4NTQsMzQgQEAgUGFzc1JlZlB0cjxTY3JvbGxpbmdD
b29yZGluYXRvcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVTY3JvbGxpbmdDb29yZGluYXRvcihQ
YWcKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19Q
UkVTRU5UQVRJT05fTU9ERSkpCiBib29sIFdlYkNocm9tZUNsaWVudDo6c3VwcG9ydHNWaWRlb0Z1
bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlIG1vZGUpCiB7Ci0gICAgcmV0dXJuIG1fcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigp
LT5zdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihtb2RlKTsKKyAgICByZXR1cm4gbV9wYWdlLT52aWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyKCkuc3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4obW9kZSk7CiB9CiAK
LXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6
OkhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCkKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpz
ZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQmIG1l
ZGlhRWxlbWVudCkKIHsKLSAgICBtX3BhZ2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKS0+c2V0
VXBWaWRlb0NvbnRyb2xzTWFuYWdlcih2aWRlb0VsZW1lbnQpOworICAgIG1fcGFnZS0+cGxheWJh
Y2tTZXNzaW9uTWFuYWdlcigpLnNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXIobWVkaWFFbGVt
ZW50KTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmNsZWFyVmlkZW9Db250cm9sc01hbmFn
ZXIoKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQogewotICAgIG1fcGFnZS0+
dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpLT5jbGVhclZpZGVvQ29udHJvbHNNYW5hZ2VyKCk7Cisg
ICAgbV9wYWdlLT5wbGF5YmFja1Nlc3Npb25NYW5hZ2VyKCkuY2xlYXJQbGF5YmFja0NvbnRyb2xz
TWFuYWdlcihtZWRpYUVsZW1lbnQpOwogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZW50ZXJW
aWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYg
dmlkZW9FbGVtZW50LCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQobW9kZSAhPSBIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKLSAgICBtX3BhZ2UtPnZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIoKS0+ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQodmlkZW9FbGVt
ZW50LCBtb2RlKTsKKyAgICBtX3BhZ2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKS5lbnRlclZp
ZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCh2aWRlb0VsZW1lbnQsIG1vZGUpOwogfQogCiB2
b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChX
ZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQpCiB7Ci0gICAgbV9wYWdlLT52
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCktPmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1l
bnQodmlkZW9FbGVtZW50KTsKKyAgICBtX3BhZ2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKS5l
eGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KHZpZGVvRWxlbWVudCk7CiB9CiAKICNp
ZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlv
bihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQsIEhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB0YXJnZXRNb2RlKQogewotICAgIG1fcGFnZS0+
dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpLT5leGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91
dEFuaW1hdGlvbih2aWRlb0VsZW1lbnQsIHRhcmdldE1vZGUpOworICAgIG1fcGFnZS0+dmlkZW9G
dWxsc2NyZWVuTWFuYWdlcigpLmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0
aW9uKHZpZGVvRWxlbWVudCwgdGFyZ2V0TW9kZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmgKaW5kZXggZGE2NmYxNTEwZTVmODE0ZmNjYmYwMzMzMGMzYmMyYzk1YTc0MmM5Yi4uMWVl
YTY4NzM2ZmFlOTBjYjI3ZDhhNWFmM2I5NTc4NWYxZmRiMDBkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCkBAIC0yNDQsOCArMjQ0LDggQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKElPUykgfHwg
KFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICBi
b29sIHN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRVcFZpZGVvQ29u
dHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGNsZWFyVmlkZW9Db250cm9sc01hbmFnZXIoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFVw
UGxheWJhY2tDb250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCYpIG92ZXJy
aWRlOworICAgIHZvaWQgY2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbnRlclZpZGVvRnVsbHNjcmVlbkZv
clZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiwgV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKICAgICB2b2lk
IGV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudCYpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNF
TlRBVElPTl9NT0RFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IGQxZGI2MmY5ODY1OTAwOGI3ZWRlOGJhMTczOWMzZmM3NmMxNmIyMjQuLmY4
NTg5MjI4YWJmMTU4ZjY1ZjA3MDQ1MDVmOTM2ZWZiYjVkY2EzODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTkxLDYgKzkxLDcgQEAKICNp
bmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlT3ZlcmxheS5oIgog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlBsdWdJbkNsaWVudC5oIgogI2luY2x1ZGUg
IldlYlBvcHVwTWVudS5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCIK
QEAgLTMxODgsMTEgKzMxODksMTggQEAgV2ViSW5zcGVjdG9yVUkqIFdlYlBhZ2U6Omluc3BlY3Rv
clVJKCkKIH0KIAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKLVdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIqIFdl
YlBhZ2U6OnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKQorV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
ciYgV2ViUGFnZTo6cGxheWJhY2tTZXNzaW9uTWFuYWdlcigpCit7CisgICAgaWYgKCFtX3BsYXli
YWNrU2Vzc2lvbk1hbmFnZXIpCisgICAgICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlciA9IFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgcmV0dXJuICptX3Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXI7Cit9CisKK1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXImIFdl
YlBhZ2U6OnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKQogewogICAgIGlmICghbV92aWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyKQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgPSBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGUodGhpcyk7Ci0gICAgcmV0dXJuIG1fdmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5nZXQoKTsKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0g
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6Y3JlYXRlKCp0aGlzLCBwbGF5YmFja1Nlc3Npb25N
YW5hZ2VyKCkpOworICAgIHJldHVybiAqbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IGQ1OTE5Y2M4Mjg4MzhhMmE2ZmExNWI0NzgzMWQzNjQwMDhmNjZkMWYuLjBjNDg0ZWQ5YjRkNzBk
M2MwNTQ0MzU3ZWM1NWRhNjViMjc0MDNjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTgwLDYgKzE4MCw3IEBAIGNsYXNzIFdlYk5vdGlmaWNh
dGlvbkNsaWVudDsKIGNsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOwogY2xhc3MgV2Vi
UGFnZUdyb3VwUHJveHk7CiBjbGFzcyBXZWJQYWdlT3ZlcmxheTsKK2NsYXNzIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI7CiBjbGFzcyBXZWJQb3B1cE1lbnU7CiBjbGFzcyBXZWJVbmRvU3RlcDsK
IGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjsKQEAgLTI1MSw3ICsyNTIsOCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0luc3BlY3RvclBhZ2UoKSB7IHJldHVybiAhIW1faW5zcGVjdG9yVUk7
IH0KIAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKSkKLSAgICBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKiB2aWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyKCk7CisgICAgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciYgcGxh
eWJhY2tTZXNzaW9uTWFuYWdlcigpOworICAgIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXImIHZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKICAgICB2
b2lkIHNldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayhib29sKTsKQEAgLTEzMDgs
NiArMTMxMCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkluc3BlY3Rvcj4gbV9pbnNwZWN0
b3I7CiAgICAgUmVmUHRyPFdlYkluc3BlY3RvclVJPiBtX2luc3BlY3RvclVJOwogI2lmIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKKyAgICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcj4gbV9wbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiBtX3Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhZjVkODZkMGRiZDUwYjEwOWExNmVlNTg4YjQyODRl
OWFlMTFhZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaApAQCAtMCwwICsxLDE1MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcl9oCisjZGVmaW5lIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJfaAorCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorCisjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9FdmVudExpc3RlbmVyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50RW51bXMuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtQ0FMYXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1l
ZGlhRWxlbWVudC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBJUEMgewor
Y2xhc3MgQXR0YWNobWVudDsKK2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBNZXNzYWdlRGVjb2Rl
cjsKK2NsYXNzIE1lc3NhZ2VSZWNlaXZlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgTm9kZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CitjbGFz
cyBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOworCitjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VDb250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQ29udGV4dD4sIHB1YmxpYyBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
Q29udGV4dD4gY3JlYXRlKFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXImIG1hbmFnZXIsIHVpbnQ2
NF90IGNvbnRleHRJZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQobWFuYWdlciwgY29udGV4dElkKSk7CisgICAg
fQorICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQoKTsKKwor
ICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgbV9tYW5hZ2VyID0gbnVsbHB0cjsgfQorCitwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0Owor
CisgICAgLy8gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlCisgICAgdm9pZCByZXNldE1lZGlh
U3RhdGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNo
b3JUaW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEJ1ZmZlcmVkVGltZShkb3VibGUpIG92ZXJy
aWRlOworICAgIHZvaWQgc2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRl
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFdlYkNvcmU6OlRp
bWVSYW5nZXMmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZShib29s
IHZhbHVlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
KGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5k
ZXgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhj
b25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBF
eHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgV1RGOjpTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFt
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChi
b29sKSBvdmVycmlkZTsKKworICAgIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQo
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciYsIHVpbnQ2NF90IGNvbnRleHRJZCk7CisKKyAgICBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyKiBtX21hbmFnZXI7CisgICAgdWludDY0X3QgbV9jb250
ZXh0SWQ7Cit9OworCitjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyIDogcHVibGljIFJl
ZkNvdW50ZWQ8V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcj4sIHByaXZhdGUgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlcj4gY3JlYXRlKFdlYlBhZ2UmKTsKKyAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0VXBQbGF5YmFj
a0NvbnRyb2xzTWFuYWdlcihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Jik7CisgICAgdm9pZCBj
bGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQmKTsK
KyAgICB1aW50NjRfdCBjb250ZXh0SWRGb3JNZWRpYUVsZW1lbnQoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudCYpOworCitwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUNvbnRleHQ7CisgICAgZnJpZW5kIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI7CisKKyAgICBleHBsaWNpdCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyKFdlYlBh
Z2UmKTsKKworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxSZWZQdHI8V2ViQ29yZTo6V2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+LCBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQ29udGV4dD4+IE1vZGVsSW50ZXJmYWNlVHVwbGU7CisgICAgTW9kZWxJbnRlcmZhY2VU
dXBsZSBjcmVhdGVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIE1v
ZGVsSW50ZXJmYWNlVHVwbGUmIGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRl
eHRJZCk7CisgICAgV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQm
IGVuc3VyZU1vZGVsKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQ29udGV4dCYgZW5zdXJlSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCk7Cisg
ICAgdm9pZCByZW1vdmVDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBhZGRD
bGllbnRGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCByZW1vdmVDbGll
bnRGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCk7CisKKyAgICAvLyBJbnRlcmZhY2UgdG8g
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dAorICAgIHZvaWQgcmVzZXRNZWRpYVN0
YXRlKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBzZXREdXJhdGlvbih1aW50NjRfdCBj
b250ZXh0SWQsIGRvdWJsZSk7CisgICAgdm9pZCBzZXRDdXJyZW50VGltZSh1aW50NjRfdCBjb250
ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpOworICAgIHZvaWQg
c2V0QnVmZmVyZWRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSk7
CisgICAgdm9pZCBzZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsIGZs
b2F0IHBsYXliYWNrUmF0ZSk7CisgICAgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyh1aW50NjRfdCBj
b250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmKTsKKyAgICB2b2lkIHNldENhblBs
YXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpOworICAgIHZvaWQg
c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCk7CisgICAgdm9p
ZCBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOworICAg
IHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFjayh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxl
ZCwgV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpFeHRlcm5hbFBsYXliYWNr
VGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpOworICAgIHZvaWQgc2V0V2ly
ZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQodWludDY0X3QgY29udGV4dElkLCBib29sKTsKKwor
ICAgIC8vIE1lc3NhZ2VzIGZyb20gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5CisgICAg
dm9pZCBwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBwYXVzZSh1aW50NjRfdCBj
b250ZXh0SWQpOworICAgIHZvaWQgdG9nZ2xlUGxheVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJZCk7
CisgICAgdm9pZCBiZWdpblNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQg
ZW5kU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBzZWVrVG9UaW1lKHVp
bnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpOworICAgIHZvaWQgZmFzdFNlZWsodWludDY0
X3QgY29udGV4dElkLCBkb3VibGUgdGltZSk7CisgICAgdm9pZCBiZWdpblNjYW5uaW5nRm9yd2Fy
ZCh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKHVp
bnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBlbmRTY2FubmluZyh1aW50NjRfdCBjb250ZXh0
SWQpOworICAgIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQs
IHVpbnQ2NF90IGluZGV4KTsKKyAgICB2b2lkIHNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50
NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KTsKKworICAgIFdlYlBhZ2UqIG1fcGFnZTsK
KyAgICBIYXNoTWFwPFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqLCB1aW50NjRfdD4gbV9tZWRp
YUVsZW1lbnRzOworICAgIEhhc2hNYXA8dWludDY0X3QsIE1vZGVsSW50ZXJmYWNlVHVwbGU+IG1f
Y29udGV4dE1hcDsKKyAgICB1aW50NjRfdCBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCB7IDAg
fTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBpbnQ+IG1fY2xpZW50Q291bnRzOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKKyNlbmRpZiAvLyBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5t
ZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTZjNTllMzE0MzRhNjc5ZDU0ZDhhMzYwMzc5YzNhN2Zm
M2ZkNTU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzkgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBQTEFURk9STShJT1Mp
IHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCitt
ZXNzYWdlcyAtPiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyIHsKKyAgICBQbGF5KHVpbnQ2NF90
IGNvbnRleHRJZCkKKyAgICBQYXVzZSh1aW50NjRfdCBjb250ZXh0SWQpCisgICAgVG9nZ2xlUGxh
eVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBCZWdpblNjcnViYmluZyh1aW50NjRfdCBj
b250ZXh0SWQpCisgICAgRW5kU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBTZWVr
VG9UaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpCisgICAgRmFzdFNlZWsodWlu
dDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSkKKyAgICBCZWdpblNjYW5uaW5nRm9yd2FyZCh1
aW50NjRfdCBjb250ZXh0SWQpCisgICAgQmVnaW5TY2FubmluZ0JhY2t3YXJkKHVpbnQ2NF90IGNv
bnRleHRJZCkKKyAgICBFbmRTY2FubmluZyh1aW50NjRfdCBjb250ZXh0SWQpCisgICAgU2VsZWN0
QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQorICAg
IFNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGlu
ZGV4KQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM4NGIy
MjMyMzYxNjg5ZGE5ZDI0MGJmOWNlY2YxZGZlYzk0Mjg2MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5t
bQpAQCAtMCwwICsxLDQwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgiCisKKworI2lmIFBMQVRGT1JNKElP
UykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkK
KworI2ltcG9ydCAiQXR0YWNobWVudC5oIgorI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCisjaW1wb3J0ICJXZWJQYWdlLmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyTWVzc2FnZXMuaCIKKyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1l
c3NhZ2VzLmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCisjaW1wb3J0IDxXZWJDb3JlL0NvbG9y
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0V2ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0V2ZW50TmFt
ZXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9TZXR0aW5ncy5oPgorI2ltcG9ydCA8V2ViQ29yZS9UaW1lUmFuZ2VzLmg+CisjaW1wb3J0
IDxtYWNoL21hY2hfcG9ydC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3N0YXRpYyB1aW50NjRfdCBuZXh0Q29udGV4dElkKCkKK3sKKyAgICBz
dGF0aWMgdWludDY0X3QgY29udGV4dElkID0gMDsKKyAgICByZXR1cm4gKytjb250ZXh0SWQ7Cit9
CisKKyNwcmFnbWEgbWFyayAtIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQKKwor
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQ29udGV4dChXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJiBtYW5hZ2VyLCB1aW50NjRf
dCBjb250ZXh0SWQpCisgICAgOiBtX21hbmFnZXIoJm1hbmFnZXIpCisgICAgLCBtX2NvbnRleHRJ
ZChjb250ZXh0SWQpCit7Cit9CisKK1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6
On5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KCkKK3sKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpyZXNldE1lZGlhU3RhdGUoKQoreworICAg
IGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+cmVzZXRNZWRpYVN0YXRlKG1fY29u
dGV4dElkKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0Ojpz
ZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAg
ICAgbV9tYW5hZ2VyLT5zZXREdXJhdGlvbihtX2NvbnRleHRJZCwgZHVyYXRpb24pOworfQorCit2
b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldEN1cnJlbnRUaW1lKGRv
dWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCit7CisgICAgaWYgKG1fbWFuYWdl
cikKKyAgICAgICAgbV9tYW5hZ2VyLT5zZXRDdXJyZW50VGltZShtX2NvbnRleHRJZCwgY3VycmVu
dFRpbWUsIGFuY2hvclRpbWUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQ6OnNldEJ1ZmZlcmVkVGltZShkb3VibGUgYnVmZmVyZWRUaW1lKQoreworICAgIGlm
IChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+c2V0QnVmZmVyZWRUaW1lKG1fY29udGV4
dElkLCBidWZmZXJlZFRpbWUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQ6OnNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKK3sK
KyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnNldFJhdGUobV9jb250ZXh0
SWQsIGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VDb250ZXh0OjpzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBXZWJDb3JlOjpUaW1l
UmFuZ2VzJiByYW5nZXMpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2Vy
LT5zZXRTZWVrYWJsZVJhbmdlcyhtX2NvbnRleHRJZCwgcmFuZ2VzKTsKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9v
bCB2YWx1ZSkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnNldENh
blBsYXlGYXN0UmV2ZXJzZShtX2NvbnRleHRJZCwgdmFsdWUpOworfQorCit2b2lkIFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
KGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5k
ZXgpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT5zZXRBdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9ucyhtX2NvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7
Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0TGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25z
LCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAg
IG1fbWFuYWdlci0+c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhtX2NvbnRleHRJZCwg
b3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQ29udGV4dDo6c2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFs
UGxheWJhY2tUYXJnZXRUeXBlIHR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUp
Cit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT5zZXRFeHRlcm5hbFBs
YXliYWNrKG1fY29udGV4dElkLCBlbmFibGVkLCB0eXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsK
K30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRXaXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVkKQoreworICAgIGlmIChtX21hbmFn
ZXIpCisgICAgICAgIG1fbWFuYWdlci0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQo
bV9jb250ZXh0SWQsIGRpc2FibGVkKTsKK30KKworI3ByYWdtYSBtYXJrIC0gV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlcgorCitSZWY8V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcj4gV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6Y3JlYXRlKFdlYlBhZ2UmIHBhZ2UpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcihwYWdlKSk7Cit9CisKK1dlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIoV2ViUGFnZSYg
cGFnZSkKKyAgICA6IG1fcGFnZSgmcGFnZSkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcGFnZS5wYWdlSUQoKSwgKnRoaXMpOworfQorCitXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp+V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcigpCit7Cisg
ICAgZm9yIChhdXRvJiB0dXBsZSA6IG1fY29udGV4dE1hcC52YWx1ZXMoKSkgeworICAgICAgICBS
ZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1vZGVsOworICAgICAg
ICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwor
ICAgICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IHR1cGxlOworCisgICAgICAgIG1v
ZGVsLT5zZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UobnVsbHB0cik7CisgICAgICAgIG1v
ZGVsLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7CisKKyAgICAgICAgaW50ZXJmYWNlLT5pbnZh
bGlkYXRlKCk7CisgICAgfQorCisgICAgbV9jb250ZXh0TWFwLmNsZWFyKCk7CisgICAgbV9tZWRp
YUVsZW1lbnRzLmNsZWFyKCk7CisgICAgbV9jbGllbnRDb3VudHMuY2xlYXIoKTsKKworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKK30KKworV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6TW9kZWxJbnRlcmZhY2VU
dXBsZSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSh1
aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50PiBtb2RlbCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4
dD4gaW50ZXJmYWNlID0gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRl
KCp0aGlzLCBjb250ZXh0SWQpOworCisgICAgbW9kZWwtPnNldFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZShpbnRlcmZhY2UuZ2V0KCkpOworCisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShX
VEZNb3ZlKG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKK30KKworV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6TW9kZWxJbnRlcmZhY2VUdXBsZSYgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6ZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQoreworICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9jb250ZXh0TWFwLmFkZChjb250ZXh0SWQsIE1vZGVsSW50ZXJmYWNl
VHVwbGUoKSk7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gY3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsK
KyAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKK30KKworV2ViQ29yZTo6V2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQmIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OmVuc3VyZU1vZGVsKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICByZXR1cm4gKnN0ZDo6
Z2V0PDA+KGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCkpOworfQorCitXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0JiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpl
bnN1cmVJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQoreworICAgIHJldHVybiAqc3RkOjpn
ZXQ8MT4oZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKSk7Cit9CisKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQp
Cit7CisgICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50PiBtb2Rl
bDsKKyAgICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJm
YWNlOworICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRl
cmZhY2UoY29udGV4dElkKTsKKworICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBtZWRpYUVs
ZW1lbnQgPSBtb2RlbC0+bWVkaWFFbGVtZW50KCk7CisgICAgbW9kZWwtPnNldE1lZGlhRWxlbWVu
dChudWxscHRyKTsKKyAgICBtb2RlbC0+c2V0V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKG51
bGxwdHIpOworICAgIGludGVyZmFjZS0+aW52YWxpZGF0ZSgpOworICAgIG1fbWVkaWFFbGVtZW50
cy5yZW1vdmUobWVkaWFFbGVtZW50LmdldCgpKTsKKyAgICBtX2NvbnRleHRNYXAucmVtb3ZlKGNv
bnRleHRJZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YWRkQ2xpZW50
Rm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBt
X2NsaWVudENvdW50cy5hZGQoY29udGV4dElkLCAxKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05l
d0VudHJ5KQorICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKys7Cit9CisKK3ZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRf
dCBjb250ZXh0SWQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50Q291bnRzLmNvbnRhaW5zKGNvbnRl
eHRJZCkpOworCisgICAgaW50IGNsaWVudENvdW50ID0gbV9jbGllbnRDb3VudHMuZ2V0KGNvbnRl
eHRJZCk7CisgICAgQVNTRVJUKGNsaWVudENvdW50ID4gMCk7CisgICAgY2xpZW50Q291bnQtLTsK
KworICAgIGlmIChjbGllbnRDb3VudCA8PSAwKSB7CisgICAgICAgIG1fY2xpZW50Q291bnRzLnJl
bW92ZShjb250ZXh0SWQpOworICAgICAgICByZW1vdmVDb250ZXh0KGNvbnRleHRJZCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NsaWVudENvdW50cy5zZXQoY29udGV4dElkLCBj
bGllbnRDb3VudCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0VXBQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlcihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVs
ZW1lbnQpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChtX21lZGlhRWxlbWVudHMuY29u
dGFpbnMoJm1lZGlhRWxlbWVudCkpIHsKKyAgICAgICAgdWludDY0X3QgY29udGV4dElkID0gbV9t
ZWRpYUVsZW1lbnRzLmdldCgmbWVkaWFFbGVtZW50KTsKKyAgICAgICAgaWYgKG1fY29udHJvbHNN
YW5hZ2VyQ29udGV4dElkID09IGNvbnRleHRJZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBpZiAobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpCisgICAgICAgICAgICByZW1vdmVD
bGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKTsKKyAgICAgICAgbV9j
b250cm9sc01hbmFnZXJDb250ZXh0SWQgPSBjb250ZXh0SWQ7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX21lZGlhRWxlbWVudHMuZW5zdXJlKCZtZWRpYUVsZW1lbnQs
IFsmXSB7IHJldHVybiBuZXh0Q29udGV4dElkKCk7IH0pOworICAgICAgICBhdXRvIGNvbnRleHRJ
ZCA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIG1fY29udHJvbHNNYW5hZ2Vy
Q29udGV4dElkID0gY29udGV4dElkOworICAgICAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNl
dE1lZGlhRWxlbWVudCgmbWVkaWFFbGVtZW50KTsKKyAgICB9CisKKyAgICBhZGRDbGllbnRGb3JD
b250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0VXBQbGF5YmFja0NvbnRy
b2xzTWFuYWdlcldpdGhJRChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCksIG1fcGFnZS0+cGFn
ZUlEKCkpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y2xl
YXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50JiBtZWRp
YUVsZW1lbnQpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChtX21lZGlhRWxlbWVudHMu
Y29udGFpbnMoJm1lZGlhRWxlbWVudCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVpbnQ2NF90
IGNvbnRleHRJZCA9IG1fbWVkaWFFbGVtZW50cy5nZXQoJm1lZGlhRWxlbWVudCk7CisgICAgaWYg
KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkICE9IGNvbnRleHRJZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJ
ZCk7CisgICAgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgPSAwOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDbGVhclBsYXliYWNr
Q29udHJvbHNNYW5hZ2VyKCksIG1fcGFnZS0+cGFnZUlEKCkpOworI2VuZGlmCit9CisKK3VpbnQ2
NF90IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNvbnRleHRJZEZvck1lZGlhRWxlbWVudChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCit7CisgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX21lZGlhRWxlbWVudHMuZW5zdXJlKCZtZWRpYUVsZW1lbnQsIFsmXSB7IHJldHVy
biBuZXh0Q29udGV4dElkKCk7IH0pOworICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlOworfQorCisjcHJhZ21hIG1hcmsgSW50ZXJmYWNlIHRvIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUNvbnRleHQ6CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVzZXRN
ZWRpYVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UmVzZXRNZWRpYVN0YXRlKGNvbnRl
eHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OnNldER1cmF0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKQor
eworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpTZXREdXJhdGlvbihjb250ZXh0SWQsIGR1cmF0aW9uKSwgbV9wYWdlLT5wYWdlSUQoKSk7
Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFRpbWUodWlu
dDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQor
eworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpTZXRDdXJyZW50VGltZShjb250ZXh0SWQsIGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKSwg
bV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
c2V0QnVmZmVyZWRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSkK
K3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6U2V0QnVmZmVyZWRUaW1lKGNvbnRleHRJZCwgYnVmZmVyZWRUaW1lKSwgbV9wYWdlLT5w
YWdlSUQoKSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0UmF0ZSh1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCit7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OlNldFJhdGUoY29udGV4dElkLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSksIG1fcGFnZS0+
cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFNlZWth
YmxlUmFuZ2VzKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYg
dGltZVJhbmdlcykKK3sKKyAgICBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFu
Z2VzVmVjdG9yOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRpbWVSYW5nZXMubGVu
Z3RoKCk7IGkrKykgeworICAgICAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGU7CisgICAg
ICAgIGRvdWJsZSBzdGFydCA9IHRpbWVSYW5nZXMuc3RhcnQoaSwgZXhjZXB0aW9uQ29kZSk7Cisg
ICAgICAgIGRvdWJsZSBlbmQgPSB0aW1lUmFuZ2VzLmVuZChpLCBleGNlcHRpb25Db2RlKTsKKyAg
ICAgICAgcmFuZ2VzVmVjdG9yLmFwcGVuZChzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+KHN0YXJ0
LCBlbmQpKTsKKyAgICB9CisKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0U2Vla2FibGVSYW5nZXNWZWN0b3IoY29udGV4dElkLCBX
VEZNb3ZlKHJhbmdlc1ZlY3RvcikpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRDYW5QbGF5RmFzdFJldmVyc2UodWludDY0X3QgY29u
dGV4dElkLCBib29sIHZhbHVlKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRDYW5QbGF5RmFzdFJldmVyc2UoY29udGV4dElk
LCB2YWx1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgp
Cit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OlNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnRleHRJZCwgb3B0aW9ucywg
c2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3Qg
Y29udGV4dElkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0
ZWRJbmRleCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6U2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb250ZXh0SWQs
IG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRFeHRlcm5hbFBsYXliYWNrKHVpbnQ2NF90IGNv
bnRleHRJZCwgYm9vbCBlbmFibGVkLCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OkV4dGVy
bmFsUGxheWJhY2tUYXJnZXRUeXBlIHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VO
YW1lKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpTZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllcyhjb250ZXh0SWQsIGVuYWJs
ZWQsIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0YXJnZXRUeXBlKSwgbG9jYWxpemVkRGV2aWNlTmFt
ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90IGNvbnRleHRJZCwg
Ym9vbCBkaXNhYmxlZCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoY29u
dGV4dElkLCBkaXNhYmxlZCkpOworfQorCisjcHJhZ21hIG1hcmsgTWVzc2FnZXMgZnJvbSBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6cGxheSh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgZW5zdXJlTW9kZWwoY29udGV4
dElkKS5wbGF5KCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cGF1c2Uo
dWludDY0X3QgY29udGV4dElkKQoreworICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkucGF1c2Uo
KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp0b2dnbGVQbGF5U3RhdGUo
dWludDY0X3QgY29udGV4dElkKQoreworICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkudG9nZ2xl
UGxheVN0YXRlKCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YmVnaW5T
Y3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQoreworICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJ
ZCkuYmVnaW5TY3J1YmJpbmcoKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjplbmRTY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQoreworICAgIGVuc3VyZU1vZGVsKGNv
bnRleHRJZCkuZW5kU2NydWJiaW5nKCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6c2Vla1RvVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKQoreworICAg
IGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2Vla1RvVGltZSh0aW1lKTsKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpmYXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJs
ZSB0aW1lKQoreworICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuZmFzdFNlZWsodGltZSk7Cit9
CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YmVnaW5TY2FubmluZ0ZvcndhcmQo
dWludDY0X3QgY29udGV4dElkKQoreworICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuYmVnaW5T
Y2FubmluZ0ZvcndhcmQoKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpi
ZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKQoreworICAgIGVuc3VyZU1v
ZGVsKGNvbnRleHRJZCkuYmVnaW5TY2FubmluZ0JhY2t3YXJkKCk7Cit9CisKK3ZvaWQgV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5kU2Nhbm5pbmcodWludDY0X3QgY29udGV4dElkKQorewor
ICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuZW5kU2Nhbm5pbmcoKTsKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGNv
bnRleHRJZCwgdWludDY0X3QgaW5kZXgpCit7CisgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5z
ZWxlY3RBdWRpb01lZGlhT3B0aW9uKGluZGV4KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1
aW50NjRfdCBpbmRleCkKK3sKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNlbGVjdExlZ2li
bGVNZWRpYU9wdGlvbihpbmRleCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJF
U0VOVEFUSU9OX01PREUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAppbmRleCA2NmQzMGY1MjlhODQ0
ZDVhMjY1MWQ3ZWVlMmE4ODFkZjE4ZjcxNjk4Li4yNzY1YjhlZDNjYzJjZGVhZDZjNmQxNTM0ODYz
ZmMzMWNmZDkxZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29h
L1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaApAQCAtNTIsMTMgKzUyLDE1IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBMYXllckhvc3RpbmdDb250ZXh0OwogY2xhc3Mg
V2ViUGFnZTsKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ7CitjbGFz
cyBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOwogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjsKIAogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+LCBwdWJsaWMg
V2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGNyZWF0ZShXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyJiBtYW5hZ2VyLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgc3Rh
dGljIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBjcmVhdGUoV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlciYgbWFuYWdlciwgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
Q29udGV4dCYgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLCB1aW50NjRfdCBjb250ZXh0SWQpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VDb250ZXh0KG1hbmFnZXIsIGNvbnRleHRJZCkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0KG1hbmFnZXIsIHBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZSwgY29udGV4dElkKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfldl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQoKTsKIApAQCAtODAsMTMgKzgyLDEyIEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldElzRnVsbHNjcmVlbihib29sIGZsYWcpIHsgbV9pc0Z1bGxz
Y3JlZW4gPSBmbGFnOyB9CiAKIHByaXZhdGU6Ci0gICAgLy8gV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlCisgICAgLy8gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlCiAgICAgdm9pZCByZXNl
dE1lZGlhU3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJs
ZSBhbmNob3JUaW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEJ1ZmZlcmVkVGltZShkb3VibGUp
IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJh
Y2tSYXRlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1Zp
ZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFNl
ZWthYmxlUmFuZ2VzKGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmKSBvdmVycmlkZTsKICAgICB2
b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIHZhbHVlKSBvdmVycmlkZTsKICAgICB2b2lk
IHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4m
IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOwpAQCAtOTQsOSArOTUs
MTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFibGVk
LCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgV1RGOjpTdHJpbmcgbG9jYWxpemVkRGV2aWNl
TmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxl
ZChib29sKSBvdmVycmlkZTsKIAotICAgIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRl
eHQoV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYsIHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAg
Ly8gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlCisgICAgdm9pZCBzZXRWaWRlb0RpbWVuc2lv
bnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgb3ZlcnJpZGU7CisK
KyAgICBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0KFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXImLCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0JiwgdWludDY0X3Qg
Y29udGV4dElkKTsKIAogICAgIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIqIG1fbWFuYWdlcjsK
KyAgICBSZWY8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4gbV9wbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2U7CiAgICAgdWludDY0X3QgbV9jb250ZXh0SWQ7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBi
b29sIG1faXNBbmltYXRpbmcgeyBmYWxzZSB9OwpAQCAtMTA3LDcgKzExMiw3IEBAIHByaXZhdGU6
CiAKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiBjcmVh
dGUoUGFzc1JlZlB0cjxXZWJQYWdlPik7CisgICAgc3RhdGljIFJlZjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyPiBjcmVhdGUoV2ViUGFnZSYsIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXImKTsK
ICAgICB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCk7CiAgICAgCiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVy
Jikgb3ZlcnJpZGU7CkBAIC0xMTcsMTMgKzEyMiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbnRl
clZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50
JiwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsK
ICAgICB2b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRN
TFZpZGVvRWxlbWVudCYpOwogICAgIHZvaWQgZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhv
dXRBbmltYXRpb24oV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYsIFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7Ci0gICAgdm9pZCBzZXRVcFZpZGVv
Q29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmKTsKLSAgICB2b2lkIGNs
ZWFyVmlkZW9Db250cm9sc01hbmFnZXIoKTsKLSAgICAKKwogcHJvdGVjdGVkOgogICAgIGZyaWVu
ZCBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OwogCi0gICAgZXhwbGlj
aXQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcihQYXNzUmVmUHRyPFdlYlBhZ2U+KTsKKyAgICBl
eHBsaWNpdCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKFdlYlBhZ2UmLCBXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyJik7CiAKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8UmVmUHRyPFdlYkNvcmU6
OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiwgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUNvbnRleHQ+PiBNb2RlbEludGVyZmFjZVR1cGxlOwogICAgIE1vZGVs
SW50ZXJmYWNlVHVwbGUgY3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElk
KTsKQEAgLTEzNSwzMCArMTM4LDkgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcmVtb3ZlQ2xpZW50
Rm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpOwogCiAgICAgLy8gSW50ZXJmYWNlIHRvIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQKLSAgICB2b2lkIHJlc2V0TWVkaWFTdGF0
ZSh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgc2V0RHVyYXRpb24odWludDY0X3QgY29u
dGV4dElkLCBkb3VibGUpOwotICAgIHZvaWQgc2V0Q3VycmVudFRpbWUodWludDY0X3QgY29udGV4
dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKTsKLSAgICB2b2lkIHNl
dEJ1ZmZlcmVkVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBidWZmZXJlZFRpbWUpOwot
ICAgIHZvaWQgc2V0UmF0ZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBmbG9h
dCBwbGF5YmFja1JhdGUpOwogICAgIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKHVpbnQ2NF90IGNv
bnRleHRJZCwgYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7Ci0gICAg
dm9pZCBzZXRTZWVrYWJsZVJhbmdlcyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6
OlRpbWVSYW5nZXMmKTsKLSAgICB2b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBj
b250ZXh0SWQsIGJvb2wgdmFsdWUpOwotICAgIHZvaWQgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnModWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywg
dWludDY0X3Qgc2VsZWN0ZWRJbmRleCk7Ci0gICAgdm9pZCBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlv
bnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOwotICAgIHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFj
ayh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgV2ViQ29yZTo6V2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2Fs
aXplZERldmljZU5hbWUpOwotICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQodWludDY0X3QgY29udGV4dElkLCBib29sKTsKIAogICAgIC8vIE1lc3NhZ2VzIGZyb20gV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ci0gICAgdm9pZCBwbGF5KHVpbnQ2NF90IGNvbnRl
eHRJZCk7Ci0gICAgdm9pZCBwYXVzZSh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgdG9n
Z2xlUGxheVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBiZWdpblNjcnViYmlu
Zyh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgZW5kU2NydWJiaW5nKHVpbnQ2NF90IGNv
bnRleHRJZCk7Ci0gICAgdm9pZCBzZWVrVG9UaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91Ymxl
IHRpbWUpOwotICAgIHZvaWQgZmFzdFNlZWsodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGlt
ZSk7Ci0gICAgdm9pZCBiZWdpblNjYW5uaW5nRm9yd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpOwot
ICAgIHZvaWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAg
dm9pZCBlbmRTY2FubmluZyh1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgcmVxdWVzdEZ1
bGxzY3JlZW5Nb2RlKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICB2b2lkIGRpZFNldHVwRnVsbHNjcmVl
bih1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4odWludDY0
X3QgY29udGV4dElkKTsKQEAgLTE2NiwxMiArMTQ4LDExIEBAIHByb3RlY3RlZDoKICAgICB2b2lk
IGRpZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBzZXRW
aWRlb0xheWVyRnJhbWVGZW5jZWQodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpGbG9hdFJl
Y3QgYm91bmRzLCBJUEM6OkF0dGFjaG1lbnQgZmVuY2VQb3J0KTsKICAgICB2b2lkIHNldFZpZGVv
TGF5ZXJHcmF2aXR5RW51bSh1aW50NjRfdCBjb250ZXh0SWQsIHVuc2lnbmVkIGdyYXZpdHkpOwot
ICAgIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2
NF90IGluZGV4KTsKLSAgICB2b2lkIHNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBj
b250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KTsKICAgICB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSk7CiAgICAgdm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUo
dWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGFnZVZpc2libGUpOwogICAgIAogICAgIFdlYlBh
Z2UqIG1fcGFnZTsKKyAgICBSZWY8V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcj4gbV9wbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCos
IHVpbnQ2NF90PiBtX3ZpZGVvRWxlbWVudHM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgTW9kZWxJ
bnRlcmZhY2VUdXBsZT4gbV9jb250ZXh0TWFwOwogICAgIHVpbnQ2NF90IG1fY29udHJvbHNNYW5h
Z2VyQ29udGV4dElkIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2Vz
LmluCmluZGV4IDgzZGRmZTIwYjA2OTVlZGY3NDZlOTQ4ZmFiM2UzOGY2YzAwZjc1OTUuLjdiZmMx
MWEzOTFkMWQ2Y2ZlN2M4YzI5ZjVmZTIyZGJkOTYyOWJiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTIyLDE2ICsyMiw2IEBACiAKICNpZiBQTEFURk9S
TShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9E
RSkpCiBtZXNzYWdlcyAtPiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIHsKLSAgICBQbGF5KHVp
bnQ2NF90IGNvbnRleHRJZCkKLSAgICBQYXVzZSh1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgVG9n
Z2xlUGxheVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBCZWdpblNjcnViYmluZyh1aW50
NjRfdCBjb250ZXh0SWQpCi0gICAgRW5kU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKLSAg
ICBTZWVrVG9UaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpCi0gICAgRmFzdFNl
ZWsodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSkKLSAgICBCZWdpblNjYW5uaW5nRm9y
d2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgQmVnaW5TY2FubmluZ0JhY2t3YXJkKHVpbnQ2
NF90IGNvbnRleHRJZCkKLSAgICBFbmRTY2FubmluZyh1aW50NjRfdCBjb250ZXh0SWQpCiAgICAg
UmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNjcmVlbk1vZGUp
CiAgICAgRGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBEaWRFeGl0
RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCkBAIC0zOSw4ICsyOSw2IEBAIG1lc3NhZ2Vz
IC0+IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgewogICAgIERpZENsZWFudXBGdWxsc2NyZWVu
KHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBTZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQodWludDY0
X3QgY29udGV4dElkLCBXZWJDb3JlOjpGbG9hdFJlY3QgYm91bmRzLCBJUEM6OkF0dGFjaG1lbnQg
ZmVuY2VQb3J0KQogICAgIFNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bSh1aW50NjRfdCBjb250ZXh0
SWQsIHVuc2lnbmVkIGdyYXZpdHkpCi0gICAgU2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRf
dCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQotICAgIFNlbGVjdExlZ2libGVNZWRpYU9wdGlv
bih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQogICAgIEZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQogICAgIEZ1bGxzY3Jl
ZW5NYXlSZXR1cm5Ub0lubGluZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQYWdlVmlzaWJs
ZSkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCA2OTNjY2ZjMGFlMzQ2NzllZDA3MDEz
NzdmMDA4ZTRkM2EzZjJiYmJlLi45ZGFhNWRkN2ZmODI4MGE5Yjg5OGU0YTc5YzRkMmZjOWQzMzZm
OWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0
ICJBdHRhY2htZW50LmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbXBv
cnQgIldlYlBhZ2UuaCIKKyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCIKICNp
bXBvcnQgIldlYlByb2Nlc3MuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJN
ZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5TWVzc2Fn
ZXMuaCIKQEAgLTU5LDE2ICs2MCwxMSBAQCBzdGF0aWMgSW50UmVjdCBjbGllbnRSZWN0Rm9yRWxl
bWVudChIVE1MRWxlbWVudCogZWxlbWVudCkKICAgICByZXR1cm4gZWxlbWVudC0+Y2xpZW50UmVj
dCgpOwogfQogCi1zdGF0aWMgdWludDY0X3QgbmV4dENvbnRleHRJZCgpCi17Ci0gICAgc3RhdGlj
IHVpbnQ2NF90IGNvbnRleHRJZCA9IDA7Ci0gICAgcmV0dXJuICsrY29udGV4dElkOwotfQotCiAj
cHJhZ21hIG1hcmsgLSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0CiAKLVdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUNvbnRleHQoV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYgbWFuYWdlciwgdWludDY0X3QgY29u
dGV4dElkKQorV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6V2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQ29udGV4dChXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyJiBtYW5hZ2Vy
LCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0JiBwbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICA6IG1fbWFuYWdlcigmbWFuYWdlcikKKyAg
ICAsIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkK
ICAgICAsIG1fY29udGV4dElkKGNvbnRleHRJZCkKIHsKIH0KQEAgLTg0LDMyICs4MCwyNyBAQCB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldExheWVySG9zdGluZ0Nv
bnRleHQoc3RkOjp1bmlxdWVfcHRyPAogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUNvbnRleHQ6OnJlc2V0TWVkaWFTdGF0ZSgpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAg
ICAgbV9tYW5hZ2VyLT5yZXNldE1lZGlhU3RhdGUobV9jb250ZXh0SWQpOworICAgIG1fcGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlLT5yZXNldE1lZGlhU3RhdGUoKTsKIH0KIAogdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24p
CiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5zZXREdXJhdGlvbiht
X2NvbnRleHRJZCwgZHVyYXRpb24pOworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5z
ZXREdXJhdGlvbihkdXJhdGlvbik7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQ29udGV4dDo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5j
aG9yVGltZSkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnNldEN1
cnJlbnRUaW1lKG1fY29udGV4dElkLCBjdXJyZW50VGltZSwgYW5jaG9yVGltZSk7CisgICAgbV9w
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lLCBhbmNo
b3JUaW1lKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0Ojpz
ZXRCdWZmZXJlZFRpbWUoZG91YmxlIGJ1ZmZlcmVkVGltZSkKIHsKLSAgICBpZiAobV9tYW5hZ2Vy
KQotICAgICAgICBtX21hbmFnZXItPnNldEJ1ZmZlcmVkVGltZShtX2NvbnRleHRJZCwgYnVmZmVy
ZWRUaW1lKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0QnVmZmVyZWRUaW1l
KGJ1ZmZlcmVkVGltZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dDo6c2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKQogewotICAg
IGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0UmF0ZShtX2NvbnRleHRJZCwg
aXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpOworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
LT5zZXRSYXRlKGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRl
bywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKQEAgLTEyMCw1MSArMTExLDQ2IEBAIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0VmlkZW9EaW1lbnNpb25zKGJv
b2wgaGFzVmlkZW8sIGZsb2F0CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dDo6c2V0U2Vla2FibGVSYW5nZXMoY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYgcmFuZ2Vz
KQogewotICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0U2Vla2FibGVS
YW5nZXMobV9jb250ZXh0SWQsIHJhbmdlcyk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UtPnNldFNlZWthYmxlUmFuZ2VzKHJhbmdlcyk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wgdmFsdWUpCiB7
Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5zZXRDYW5QbGF5RmFzdFJl
dmVyc2UobV9jb250ZXh0SWQsIHZhbHVlKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS0+c2V0Q2FuUGxheUZhc3RSZXZlcnNlKHZhbHVlKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25z
dCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQog
ewotICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnMobV9jb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOworICAg
IG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
cyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VDb250ZXh0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZl
Y3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0g
ICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5zZXRMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKG1fY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKKyAgICBt
X3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9u
cyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VDb250ZXh0OjpzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJu
YWxQbGF5YmFja1RhcmdldFR5cGUgdHlwZSwgV1RGOjpTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFt
ZSkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnNldEV4dGVybmFs
UGxheWJhY2sobV9jb250ZXh0SWQsIGVuYWJsZWQsIHR5cGUsIGxvY2FsaXplZERldmljZU5hbWUp
OworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRFeHRlcm5hbFBsYXliYWNrKGVu
YWJsZWQsIHR5cGUsIGxvY2FsaXplZERldmljZU5hbWUpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVk
KGJvb2wgZGlzYWJsZWQpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2Vy
LT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChtX2NvbnRleHRJZCwgZGlzYWJsZWQp
OworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZChkaXNhYmxlZCk7CiB9CiAKICNwcmFnbWEgbWFyayAtIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIKIAotUmVmPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+IFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OmNyZWF0ZShQYXNzUmVmUHRyPFdlYlBhZ2U+IHBhZ2UpCitSZWY8V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6Y3JlYXRl
KFdlYlBhZ2UmIHBhZ2UsIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXImIHBsYXliYWNrU2Vzc2lv
bk1hbmFnZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcihwYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcihwYWdlLCBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyKSk7CiB9CiAKLVdlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoUGFzc1JlZlB0cjxX
ZWJQYWdlPiBwYWdlKQotICAgIDogbV9wYWdlKHBhZ2UuZ2V0KCkpCitXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKFdlYlBhZ2UmIHBhZ2UsIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXImIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpCisgICAgOiBtX3Bh
Z2UoJnBhZ2UpCisgICAgLCBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIocGxheWJhY2tTZXNzaW9u
TWFuYWdlcikKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgcGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcGFnZS5wYWdlSUQoKSwgKnRoaXMpOwogfQogCiBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp+V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpCkBAIC0x
ODksOCArMTc1LDEwIEBAIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6On5XZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyKCkKIAogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6TW9kZWxJbnRlcmZh
Y2VUdXBsZSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFj
ZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50PiBtb2RlbCA9IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dD4gaW50ZXJmYWNlID0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6Y3Jl
YXRlKCp0aGlzLCBjb250ZXh0SWQpOworICAgIGF1dG8mIHBsYXliYWNrU2Vzc2lvbk1vZGVsID0g
bV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5lbnN1cmVNb2RlbChjb250ZXh0SWQpOworICAgIFJl
ZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWwgPSBXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKHBsYXliYWNrU2Vzc2lvbk1vZGVs
KTsKKyAgICBhdXRvJiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgPSBtX3BsYXliYWNrU2Vzc2lv
bk1hbmFnZXItPmVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpOworICAgIFJlZlB0cjxXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2UgPSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIHBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZSwgY29udGV4dElkKTsKIAogICAgIGludGVyZmFjZS0+c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChM
YXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKCkpOwog
ICAgIG1vZGVsLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UoaW50ZXJmYWNlLmdldCgp
KTsKQEAgLTI3MiwxMiArMjYwLDEwIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlCiB7CiAgICAg
QVNTRVJUKG1vZGUgIT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
Tm9uZSk7CiAKLSAgICB1aW50NjRfdCBjb250ZXh0SWQ7Ci0KLSAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fdmlkZW9FbGVtZW50cy5hZGQoJnZpZGVvRWxlbWVudCwgMCk7Ci0gICAgaWYgKGFkZFJlc3Vs
dC5pc05ld0VudHJ5KQotICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbmV4dENv
bnRleHRJZCgpOwotICAgIGNvbnRleHRJZCA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cisg
ICAgdWludDY0X3QgY29udGV4dElkID0gbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5jb250ZXh0
SWRGb3JNZWRpYUVsZW1lbnQodmlkZW9FbGVtZW50KTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
dmlkZW9FbGVtZW50cy5hZGQoJnZpZGVvRWxlbWVudCwgY29udGV4dElkKTsKKyAgICBVTlVTRURf
UEFSQU0oYWRkUmVzdWx0KTsKKyAgICBBU1NFUlQoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
PSBjb250ZXh0SWQpOwogCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50PiBtb2RlbDsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dD4gaW50ZXJmYWNlOwpAQCAtMzIxLDQxICszMDcsNiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6
SFRNTAogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQsIGNsaWVudFJlY3RGb3JFbGVtZW50KCZ2
aWRlb0VsZW1lbnQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6c2V0VXBWaWRlb0NvbnRyb2xzTWFuYWdlcihXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICht
X3ZpZGVvRWxlbWVudHMuY29udGFpbnMoJnZpZGVvRWxlbWVudCkpIHsKLSAgICAgICAgdWludDY0
X3QgY29udGV4dElkID0gbV92aWRlb0VsZW1lbnRzLmdldCgmdmlkZW9FbGVtZW50KTsKLSAgICAg
ICAgaWYgKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkID09IGNvbnRleHRJZCkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBpZiAobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpCi0g
ICAgICAgICAgICByZW1vdmVDbGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4
dElkKTsKLSAgICAgICAgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgPSBjb250ZXh0SWQ7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3ZpZGVvRWxlbWVudHMuZW5z
dXJlKCZ2aWRlb0VsZW1lbnQsIFsmXSB7IHJldHVybiBuZXh0Q29udGV4dElkKCk7IH0pOwotICAg
ICAgICBhdXRvIGNvbnRleHRJZCA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgICAg
IG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkID0gY29udGV4dElkOwotICAgICAgICBlbnN1cmVN
b2RlbChjb250ZXh0SWQpLnNldFZpZGVvRWxlbWVudCgmdmlkZW9FbGVtZW50KTsKLSAgICB9Ci0K
LSAgICBhZGRDbGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKTsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
U2V0VXBWaWRlb0NvbnRyb2xzTWFuYWdlcldpdGhJRChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJ
ZCksIG1fcGFnZS0+cGFnZUlEKCkpOwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6Y2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpCi17Ci0jaWYgUExBVEZPUk0o
TUFDKQotICAgIGlmICghbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJDb250ZXh0
SWQpOwotICAgIG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkID0gMDsKLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xlYXJWaWRlb0Nv
bnRyb2xzTWFuYWdlcigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSNlbmRpZgotfQotCiB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0
QW5pbWF0aW9uKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCwgV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRhcmdldE1vZGUp
CiB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUp
CkBAIC0zNzUsMTQ5ICszMjYsMjMgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpl
eGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3IKIAogI3ByYWdt
YSBtYXJrIEludGVyZmFjZSB0byBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0Ogog
Ci12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlc2V0TWVkaWFTdGF0ZSh1aW50NjRf
dCBjb250ZXh0SWQpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OlJlc2V0TWVkaWFTdGF0ZShjb250ZXh0SWQpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKLX0KLSAgICAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0RHVy
YXRpb24odWludDY0X3QgY29udGV4dElkLCBkb3VibGUgZHVyYXRpb24pCi17Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldER1cmF0
aW9uKGNvbnRleHRJZCwgZHVyYXRpb24pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRDdXJyZW50VGltZSh1aW50NjRfdCBjb250ZXh0
SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCi17Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEN1cnJl
bnRUaW1lKGNvbnRleHRJZCwgY3VycmVudFRpbWUsIGFuY2hvclRpbWUpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRCdWZmZXJlZFRp
bWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQotewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRCdWZm
ZXJlZFRpbWUoY29udGV4dElkLCBidWZmZXJlZFRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0K
LQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRSYXRlKHVpbnQ2NF90IGNvbnRl
eHRJZCwgYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKLXsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0UmF0ZShj
b250ZXh0SWQsIGlzUGxheWluZywgcGxheWJhY2tSYXRlKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19
Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9EaW1lbnNpb25zKHVp
bnQ2NF90IGNvbnRleHRJZCwgYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdo
dCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6U2V0VmlkZW9EaW1lbnNpb25zKGNvbnRleHRJZCwgaGFzVmlkZW8sIHdpZHRoLCBo
ZWlnaHQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KLSAgICAKLXZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6c2V0U2Vla2FibGVSYW5nZXModWludDY0X3QgY29udGV4dElkLCBjb25zdCBX
ZWJDb3JlOjpUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQotewotICAgIFZlY3RvcjxzdGQ6OnBhaXI8
ZG91YmxlLCBkb3VibGU+PiByYW5nZXNWZWN0b3I7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHRpbWVSYW5nZXMubGVuZ3RoKCk7IGkrKykgewotICAgICAgICBFeGNlcHRpb25D
b2RlIGV4Y2VwdGlvbkNvZGU7Ci0gICAgICAgIGRvdWJsZSBzdGFydCA9IHRpbWVSYW5nZXMuc3Rh
cnQoaSwgZXhjZXB0aW9uQ29kZSk7Ci0gICAgICAgIGRvdWJsZSBlbmQgPSB0aW1lUmFuZ2VzLmVu
ZChpLCBleGNlcHRpb25Db2RlKTsKLSAgICAgICAgcmFuZ2VzVmVjdG9yLmFwcGVuZChzdGQ6OnBh
aXI8ZG91YmxlLCBkb3VibGU+KHN0YXJ0LCBlbmQpKTsKLSAgICB9Ci0KLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0U2Vla2FibGVS
YW5nZXNWZWN0b3IoY29udGV4dElkLCBXVEZNb3ZlKHJhbmdlc1ZlY3RvcikpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRDYW5QbGF5
RmFzdFJldmVyc2UodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQotewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRDYW5Q
bGF5RmFzdFJldmVyc2UoY29udGV4dElkLCB2YWx1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQot
Ci12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMs
IHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkp
OwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyhjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRFeHRl
cm5hbFBsYXliYWNrKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBlbmFibGVkLCBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2U6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRhcmdldFR5cGUs
IFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRFeHRlcm5hbFBsYXliYWNrUHJv
cGVydGllcyhjb250ZXh0SWQsIGVuYWJsZWQsIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0YXJnZXRU
eXBlKSwgbG9jYWxpemVkRGV2aWNlTmFtZSksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBkaXNhYmxlZCkKLXsKLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0V2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQoY29udGV4dElkLCBkaXNhYmxlZCkpOwotfQogCiAjcHJhZ21h
IG1hcmsgTWVzc2FnZXMgZnJvbSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6CiAKLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cGxheSh1aW50NjRfdCBjb250ZXh0SWQpCi17
Ci0gICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5wbGF5KCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6cGF1c2UodWludDY0X3QgY29udGV4dElkKQotewotICAgIGVuc3Vy
ZU1vZGVsKGNvbnRleHRJZCkucGF1c2UoKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjp0b2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKQotewotICAgIGVuc3Vy
ZU1vZGVsKGNvbnRleHRJZCkudG9nZ2xlUGxheVN0YXRlKCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6YmVnaW5TY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQotewot
ICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuYmVnaW5TY3J1YmJpbmcoKTsKLX0KLQotdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbmRTY3J1YmJpbmcodWludDY0X3QgY29udGV4dElk
KQotewotICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuZW5kU2NydWJiaW5nKCk7Ci19Ci0KLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2Vla1RvVGltZSh1aW50NjRfdCBjb250ZXh0
SWQsIGRvdWJsZSB0aW1lKQotewotICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2Vla1RvVGlt
ZSh0aW1lKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmYXN0U2Vlayh1
aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKQotewotICAgIGVuc3VyZU1vZGVsKGNvbnRl
eHRJZCkuZmFzdFNlZWsodGltZSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6YmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29udGV4dElkKQotewotICAgIGVuc3Vy
ZU1vZGVsKGNvbnRleHRJZCkuYmVnaW5TY2FubmluZ0ZvcndhcmQoKTsKLX0KLQotdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpiZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3QgY29u
dGV4dElkKQotewotICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuYmVnaW5TY2FubmluZ0JhY2t3
YXJkKCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW5kU2Nhbm5pbmco
dWludDY0X3QgY29udGV4dElkKQotewotICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuZW5kU2Nh
bm5pbmcoKTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0RnVs
bHNjcmVlbk1vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBlbnN1cmVNb2RlbChjb250
ZXh0SWQpLnJlcXVlc3RGdWxsc2NyZWVuTW9kZShtb2RlKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgdWludDY0X3QgaW5kZXgpCi17Ci0gICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZWxlY3RB
dWRpb01lZGlhT3B0aW9uKGluZGV4KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRf
dCBpbmRleCkKLXsKLSAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNlbGVjdExlZ2libGVNZWRp
YU9wdGlvbihpbmRleCk7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZnVs
bHNjcmVlbk1vZGVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNjcmVlbk1vZGUpCiB7
CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5mdWxsc2NyZWVuTW9kZUNoYW5nZWQodmlkZW9G
dWxsc2NyZWVuTW9kZSk7CiB9CiAKLSNwcmFnbWEgbWFyayBNZXNzYWdlcyBmcm9tIFdlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlk
U2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKICAgICBQbGF0Zm9ybUxheWVy
KiB2aWRlb0xheWVyID0gW0NBTGF5ZXIgbGF5ZXJdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276482</attachid>
            <date>2016-04-15 10:13:35 -0700</date>
            <delta_ts>2016-04-15 10:37:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156564-20160415101349.patch</filename>
            <type>text/plain</type>
            <size>309678</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5Mjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFmZjVmNDQ4NDE3YTc1
ZjRkNTQ4ZjE4MjFhYTE2ZGFlODU1NGM3NC4uYTQ4NjZiMzE3YjI2OWZiMDA4MGYzZDYwY2NkZDZm
YTNjNGEwNzQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyOCBAQAorMjAxNi0wNC0xNCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyIGFuZCBQcm94eSB0byBiZSB1c2VkIGJ5IGF1ZGlvIGVsZW1lbnRzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NTY0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzOyB0aGlzIHJlZmFjdG9ycyBleGlzdGluZyBmdW5jdGlvbmFsaXR5IGludG8gbmV3IGNsYXNz
ZXMuCisKKyAgICAgICAgVGVhc2UgYXBhcnQgdGhlIHZhcmlvdXMgV2ViVmlkZW9GdWxsc2NyZWVu
e0ludGVyZmFjZSxNb2RlbH17QVZLaXQsTWFjLFZpZGVvRWxlbWVudH0gaW50byBuZXcKKyAgICAg
ICAgV2ViUGxheWJhY2tTZXNzaW9u4oCmIGNsYXNzZXMgZGVhbGluZyBleGNsdXNpdmVseSB3aXRo
IHBsYXliYWNrIHN0YXRlIGFuZCBjb21tYW5kcywgbGVhdmluZworICAgICAgICBmdWxsc2NyZWVu
IHN0YXRlIGFuZCBjb21tYW5kcyBpbiB0aGUgV2ViVmlkZW9GdWxsc2NyZWVu4oCmIGNsYXNzZXMu
IFNwZWNpZmljYWxseSwgY3JlYXRlIHRoZQorICAgICAgICBmb2xsb3dpbmcgbmV3IGNsYXNzZXM6
CisKKyAgICAgICAgLSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgKGNvcGllZCBmcm9tIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSkKKyAgICAgICAgLSBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudCAoY29waWVkIGZyb20gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRp
YUVsZW1lbnQpCisgICAgICAgIC0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwgKGNvcGllZCBmcm9t
IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICAtIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0IChjb3BpZWQgZnJvbSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dCkKKyAgICAgICAgLSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMgKGNvcGllZCBmcm9t
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYykKKworICAgICAgICBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UgYW5kIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsIG5vdyBpbmhlcml0IGZy
b20KKyAgICAgICAgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlIGFuZCBXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbCwgcmVzcGVjdGl2ZWx5LiBUaGUgY29uY3JldGUKKyAgICAgICAgV2ViVmlkZW9G
dWxsc2NyZWVu4oCmIHN1YmNsYXNzZXMgZWFjaCB0YWtlIHRoZWlyIHJlc3BlY3RpdmUgV2ViUGxh
eWJhY2tTZXNzaW9u4oCmIHN1YmNsYXNzZXMgYW5kCisgICAgICAgIGZ1bGZpbGwgdGhlaXIgV2Vi
UGxheWJhY2tTZXNzaW9uIGludGVyZmFjZXMgdGhyb3VnaCBjb21wb3NpdGlvbi4KKworICAgICAg
ICBBcyBwYXJ0IG9mIHRoaXMgYmlnIHRlYXNlLWFwYXJ0LCB0aGUgV2ViQVZQbGF5ZXJDb250cm9s
bGVyIGNsYXNzIG5lZWRzIHRvIGJlIGV4cG9zZWQgaW4gYQorICAgICAgICBoZWFkZXIgKGFzIGl0
J3MgYWNjZXNzZWQgYnkgdHdvIGRpZmZlcmVudCBjbGFzc2VzIG5vdyksIHNvIHRoYXQgY2xhc3Mg
aXMgbW92ZWQgaW50byBpdHMgb3duCisgICAgICAgIGltcGxlbWVudGF0aW9uIGFuZCBoZWFkZXIg
ZmlsZXMuCisKKyAgICAgICAgVGhlIG9uZSBjYXNlIHdoZXJlIGEgY2hhbmdlIGluIGEgV2ViUGxh
eWJhY2tTZXNzaW9u4oCmIGNsYXNzIG5lZWRzIHRvIGJlIHJlZmxlY3RlZCBpbiBhCisgICAgICAg
IFdlYlZpZGVvRnVsbHNjcmVlbuKApiBjbGFzcyBpcyBpbiBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdCwgd2hlcmUKKyAgICAgICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQgbmVlZHMgdG8gYmUgbm90aWZpZWQgd2hlbiBleHRlcm5hbCBwbGF5YmFjayBiZWNvbWVzIGRp
cy9lbi0KKyAgICAgICAgYWJsZWQsIHNvIGEgbmV3IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0Q2xpZW50IGludGVyZmFjZSBoYXMgYmVlbiBhZGRlZCB0byBhbGxvdyB0aGUKKyAgICAg
ICAgV2ViUGxheWJhY2tTZXNzaW9u4oCmIHRvIG5vdGlmeSB0aGUgV2ViVmlkZW9GdWxsc2NyZWVu
4oCmLgorCisgICAgICAgIFRoZSByZXNwb25zaWJpbGl0eSBmb3IgdGhlICJjb250cm9scyBtYW5h
Z2VyIiBoYXMgbW92ZWQgZnJvbSB0aGUgV2ViVmlkZW9GdWxsc2NyZWVu4oCmIGNsYXNzZXMKKyAg
ICAgICAgdG8gdGhlIFdlYlBsYXliYWNrU2Vzc2lvbuKApiBjbGFzc2VzLCBzbyB0aGUgQ2hyb21l
Q2xpZW50IGludGVyZmFjZSBmb3IgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcKKyAgICAgICAgdGhv
c2UgY29udHJvbHMgaXMgc2ltaWxhcmx5IHJlbmFtZWQgZnJvbSBzZXRVcFZpZGVvQ29udHJvbHNN
YW5hZ2VyKCkgdG8KKyAgICAgICAgc2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpLgorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZS5oLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlOjp+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjp+V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudDo6bWVkaWFFbGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbTogQWRkZWQuCisgICAgICAg
IChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6V2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxNZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQ6On5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCk6CisgICAgICAg
IChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2V0V2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50OjpzZXRNZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUpOgorICAgICAgICAoV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnBsYXkpOgorICAgICAgICAoV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnBhdXNlKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp0b2dnbGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmJlZ2luU2NydWJiaW5nKToKKyAgICAgICAg
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjplbmRTY3J1YmJpbmcpOgorICAg
ICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnNlZWtUb1RpbWUpOgor
ICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmZhc3RTZWVrKToK
KyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpiZWdpblNjYW5u
aW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50OjplbmRTY2FubmluZyk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbik6CisgICAgICAgIChX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0
aW9uKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRh
dGVMZWdpYmxlT3B0aW9ucyk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50OjpldmVudE5hbWVBbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50LmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQubW0uCisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVu
dDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6On5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZp
ZGVvRWxlbWVudCk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVu
dDo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OmhhbmRsZUV2ZW50KToKKyAgICAgICAg
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUp
OgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OnBsYXkpOgor
ICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OnBhdXNlKToKKyAg
ICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50Ojp0b2dnbGVQbGF5U3Rh
dGUpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0VsZW1lbnQ6OmJlZ2lu
U2NydWJiaW5nKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50
OjplbmRTY3J1YmJpbmcpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRlb0Vs
ZW1lbnQ6OnNlZWtUb1RpbWUpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxWaWRl
b0VsZW1lbnQ6OmZhc3RTZWVrKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlk
ZW9FbGVtZW50OjpiZWdpblNjYW5uaW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKToKKyAgICAgICAg
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50OjplbmRTY2FubmluZyk6CisgICAg
ICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6c2VsZWN0QXVkaW9NZWRp
YU9wdGlvbik6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6
c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsVmlkZW9FbGVtZW50Ojp1cGRhdGVMZWdpYmxlT3B0aW9ucyk6CisgICAgICAgIChXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbFZpZGVvRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKToKKyAgICAg
ICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsVmlkZW9FbGVtZW50OjpldmVudE5hbWVBbGwpOgor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmg6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6fldlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSk6CisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpwbGF5KToKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpwYXVzZSk6CisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6dG9nZ2xlUGxheVN0YXRlKToKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpiZWdpblNjcnViYmluZyk6Cisg
ICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZW5kU2NydWJiaW5n
KToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZWVrVG9U
aW1lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpmYXN0
U2Vlayk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6YmVn
aW5TY2FubmluZ0ZvcndhcmQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQ6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZW5kU2Nhbm5pbmcpOgorICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24pOgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNlbGVjdExlZ2libGVN
ZWRpYU9wdGlvbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6aGFuZGxlRXZlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0xheWVyRnJh
bWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpvYnNlcnZlZEV2ZW50TmFtZXMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmV2ZW50TmFtZUFs
bCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojppc1Zpc2libGUpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbTogQWRkZWQuCisgICAgICAgICgt
W1dlYkFWUGxheWVyQ29udHJvbGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVy
Q29udHJvbGxlciByZXNldFN0YXRlXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxl
ciBwbGF5ZXJdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGZvcndhcmRpbmdU
YXJnZXRGb3JTZWxlY3RvcjpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHBs
YXk6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBwYXVzZTpdKToKKyAgICAg
ICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHRvZ2dsZVBsYXliYWNrOl0pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckNvbnRyb2xsZXIgdG9nZ2xlUGxheWJhY2tFdmVuV2hlbkluQmFja2dyb3Vu
ZDpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGlzUGxheWluZ10pOgorICAg
ICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0UGxheWluZzpdKToKKyAgICAgICAgKCtb
V2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nUGxheWluZ10p
OgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgYmVnaW5TY3J1YmJpbmc6XSk6Cisg
ICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBlbmRTY3J1YmJpbmc6XSk6CisgICAgICAg
ICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBzZWVrVG9UaW1lOl0pOgorICAgICAgICAoLVtXZWJB
VlBsYXllckNvbnRyb2xsZXIgY3VycmVudFRpbWVXaXRoaW5FbmRUaW1lc10pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0Q3VycmVudFRpbWVXaXRoaW5FbmRUaW1lczpdKToK
KyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0
aW5nQ3VycmVudFRpbWVXaXRoaW5FbmRUaW1lc10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNv
bnRyb2xsZXIgaGFzTGl2ZVN0cmVhbWluZ0NvbnRlbnRdKToKKyAgICAgICAgKCtbV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nSGFzTGl2ZVN0cmVhbWluZ0Nv
bnRlbnRdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHNraXBCYWNrd2FyZFRo
aXJ0eVNlY29uZHM6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBnb3RvRW5k
T2ZTZWVrYWJsZVJhbmdlczpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGNh
blNjYW5Gb3J3YXJkXSk6CisgICAgICAgICgrW1dlYkFWUGxheWVyQ29udHJvbGxlciBrZXlQYXRo
c0ZvclZhbHVlc0FmZmVjdGluZ0NhblNjYW5Gb3J3YXJkXSk6CisgICAgICAgICgtW1dlYkFWUGxh
eWVyQ29udHJvbGxlciBiZWdpblNjYW5uaW5nRm9yd2FyZDpdKToKKyAgICAgICAgKC1bV2ViQVZQ
bGF5ZXJDb250cm9sbGVyIGVuZFNjYW5uaW5nRm9yd2FyZDpdKToKKyAgICAgICAgKC1bV2ViQVZQ
bGF5ZXJDb250cm9sbGVyIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZDpdKToKKyAgICAgICAgKC1bV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIGVuZFNjYW5uaW5nQmFja3dhcmQ6XSk6CisgICAgICAgICgtW1dl
YkFWUGxheWVyQ29udHJvbGxlciBjYW5TZWVrVG9CZWdpbm5pbmddKToKKyAgICAgICAgKCtbV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nQ2FuU2Vla1RvQmVn
aW5uaW5nXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBzZWVrVG9CZWdpbm5p
bmc6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBzZWVrQ2hhcHRlckJhY2t3
YXJkOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgY2FuU2Vla1RvRW5kXSk6
CisgICAgICAgICgrW1dlYkFWUGxheWVyQ29udHJvbGxlciBrZXlQYXRoc0ZvclZhbHVlc0FmZmVj
dGluZ0NhblNlZWtUb0VuZF0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2Vl
a1RvRW5kOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2Vla0NoYXB0ZXJG
b3J3YXJkOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgaGFzTWVkaWFTZWxl
Y3Rpb25PcHRpb25zXSk6CisgICAgICAgICgrW1dlYkFWUGxheWVyQ29udHJvbGxlciBrZXlQYXRo
c0ZvclZhbHVlc0FmZmVjdGluZ0hhc01lZGlhU2VsZWN0aW9uT3B0aW9uc10pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckNvbnRyb2xsZXIgaGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNdKToK
KyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0
aW5nSGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGhhc0xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNdKToKKyAgICAgICAg
KCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nSGFzTGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc10pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRy
b2xsZXIgY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25dKToKKyAgICAgICAgKC1bV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIHNldEN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOl0p
OgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgY3VycmVudExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0Q3Vy
cmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGlzUGxheWluZ09uRXh0ZXJuYWxTY3JlZW5dKToKKyAgICAgICAgKCtbV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nUGxheWluZ09uRXh0
ZXJuYWxTY3JlZW5dKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGlzUGljdHVy
ZUluUGljdHVyZUludGVycnVwdGVkXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxl
ciBzZXRQaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ6XSk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXRDbGllbnQ6On5XZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdENsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdDo6fldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpyZXNldE1lZGlh
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQ6OnNldFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXREdXJhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0Q3VycmVudFRpbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEJ1
ZmZlcmVkVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdDo6c2V0UmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdDo6c2V0U2Vla2FibGVSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjptZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRFeHRlcm5hbFBsYXliYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojpz
ZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6
OmludmFsaWRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgICgtW1dlYkFWUGxheWVy
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBmdWxsc2NyZWVuSW50ZXJmYWNlXSk6CisgICAgICAgICgt
W1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBzZXRGdWxsc2NyZWVuSW50ZXJmYWNl
Ol0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGZ1bGxzY3JlZW5JbnRlcmZhY2VdKToK
KyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOl0pOgor
ICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGxheW91dFN1YmxheWVyc10pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckxheWVyIHJlc29sdmVCb3VuZHNdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJMYXllciBzZXRWaWRlb0dyYXZpdHk6XSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCk6CisgICAgICAgIChX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6fldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0KToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpw
bGF5ZXJDb250cm9sbGVyKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpyZXNldE1lZGlhU3RhdGUpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OnNldER1cmF0aW9uKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6c2V0QnVmZmVyZWRUaW1lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpzZXRSYXRlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMpOgorICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFNlZWthYmxlUmFuZ2VzKToKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UpOgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRFeHRlcm5hbFBsYXliYWNrKToKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleHRlcm5hbFBsYXliYWNrRW5hYmxl
ZENoYW5nZWQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNl
dFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBGdWxsc2NyZWVuKToK
KyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNj
cmVlbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6bWF5QXV0
b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUpOgorICAgICAgICAoLVtXZWJBVlBs
YXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGxheWVyVmlld0NvbnRyb2xsZXJXaWxsU3RhcnRQ
aWN0dXJlSW5QaWN0dXJlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdD
b250cm9sbGVyRGVsZWdhdGUgcGxheWVyVmlld0NvbnRyb2xsZXJEaWRTdGFydFBpY3R1cmVJblBp
Y3R1cmU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZSBwbGF5ZXJWaWV3Q29udHJvbGxlckZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJl
OndpdGhFcnJvcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJv
bGxlckRlbGVnYXRlIHBsYXllclZpZXdDb250cm9sbGVyV2lsbFN0b3BQaWN0dXJlSW5QaWN0dXJl
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdh
dGUgcGxheWVyVmlld0NvbnRyb2xsZXJEaWRTdG9wUGljdHVyZUluUGljdHVyZTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKGNvbnZlcnRUb0V4aXRGdWxsU2NyZWVuUmVhc29uKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlIHBsYXllclZpZXdDb250
cm9sbGVyOnNob3VsZEV4aXRGdWxsU2NyZWVuV2l0aFJlYXNvbjpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlIHBsYXllclZpZXdDb250cm9s
bGVyOnJlc3RvcmVVc2VySW50ZXJmYWNlRm9yUGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgaW5p
dF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGRlYWxsb2NdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciB2aWRlb0dyYXZpdHldKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciB2aWRlb1JlY3RdKTogRGVsZXRlZC4KKyAg
ICAgICAgKCtbV2ViQVZQbGF5ZXJMYXllciBrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ1ZpZGVv
UmVjdF0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5
ZXJWaWV3X2xheWVyQ2xhc3MpOiBEZWxldGVkLgorICAgICAgICAoZ2V0V2ViQVZQaWN0dXJlSW5Q
aWN0dXJlUGxheWVyTGF5ZXJWaWV3Q2xhc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQVZQbGF5
ZXJMYXllclZpZXdfbGF5ZXJDbGFzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJBVlBsYXllckxh
eWVyVmlld19wbGF5ZXJDb250cm9sbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3NldFBsYXllckNvbnRyb2xsZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQVZQ
bGF5ZXJMYXllclZpZXdfdmlkZW9WaWV3KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3NldFZpZGVvVmlldyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJBVlBsYXllckxh
eWVyVmlld19zdGFydFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmll
dyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld19zdG9wUm91dGluZ1Zp
ZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkFWUGxheWVyTGF5ZXJWaWV3X3BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfZGVhbGxvYyk6IERlbGV0ZWQu
CisgICAgICAgIChnZXRXZWJBVlBsYXllckxheWVyVmlld0NsYXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFwcGxpY2F0aW9uRGlkQmVj
b21lQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjplbnRlckZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlblN0YW5kYXJkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVl
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
ZGlkU3RhcnRQaWN0dXJlSW5QaWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpmYWlsZWRUb1N0YXJ0UGljdHVyZUluUGljdHVyZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6d2lsbFN0
b3BQaWN0dXJlSW5QaWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpkaWRTdG9wUGljdHVyZUluUGljdHVyZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZUZvclBpY3R1cmVJ
blBpY3R1cmVTdG9wV2l0aENvbXBsZXRpb25IYW5kbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzaG91bGRFeGl0RnVsbHNjcmVlbldpdGhS
ZWFzb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OndhdGNoZG9nVGltZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0TW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y2xlYXJNb2RlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjLm1tLgorICAgICAgICAoLVtXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uTWFj
IGxvY2FsaXplZERpc3BsYXlOYW1lXSk6CisgICAgICAgICgtW1dlYkFWTWVkaWFTZWxlY3Rpb25P
cHRpb25NYWMgc2V0TG9jYWxpemVkRGlzcGxheU5hbWU6XSk6CisgICAgICAgICgtW1dlYlBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyIGluaXRXaXRoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
Ol0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciB0aW1pbmddKToKKyAg
ICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2V0VGltaW5nOl0pOgorICAgICAg
ICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBzZWVrYWJsZVRpbWVSYW5nZXNdKToKKyAg
ICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2Vz
Ol0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBpc1NlZWtpbmddKToK
KyAgICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2Vla1RvVGltZTp0b2xlcmFu
Y2VCZWZvcmU6dG9sZXJhbmNlQWZ0ZXI6XSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zXSk6CisgICAgICAgICgtW1dlYlBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOl0pOgor
ICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBjdXJyZW50QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbl0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBz
ZXRDdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAgKC1bV2ViUGxh
eWJhY2tDb250cm9sc01hbmFnZXIgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc10pOgorICAg
ICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb25zOl0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBjdXJy
ZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNr
Q29udHJvbHNNYW5hZ2VyIHNldEN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb246XSk6
CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIGNhbmNlbFRodW1ibmFpbEFu
ZEF1ZGlvQW1wbGl0dWRlU2FtcGxlR2VuZXJhdGlvbl0pOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjp+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6
c2V0V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXREdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0UmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldFNlZWthYmxl
UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldEF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYzo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmludmFsaWRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjplbnN1cmVD
b250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjOjpwbGF5QmFja0NvbnRyb2xzTWFuYWdlcik6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM6OnNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRDdXJyZW50VGltZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFJhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRTZWVr
YWJsZVJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VNYWM6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM6OmVuc3VyZUNvbnRyb2xzTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWM6On5XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
OjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldE1vZGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpj
bGVhck1vZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjOjpzZXR1cEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjplbnRlckZ1bGxzY3JlZW4pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpl
eGl0RnVsbHNjcmVlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWM6OmV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM6OmNsZWFudXBGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6aW52YWxpZGF0ZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnByZXBhcmVkVG9SZXR1
cm5Ub0lubGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OnNldFZpZGVvRGltZW5zaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUpOiBEZWxldGVkLgorCiAyMDE2LTA0LTEx
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRE9NVG9rZW5MaXN0
LmNvbnRhaW5zKCkgc2hvdWxkIG5vdCB0aHJvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM3Nzk3ZDUxZTMzNTFl
MDc4YWQzYzM0NmY1YTFkNjJmYTU4ZTdjZTEuLjVmMWI0ZmZjOWNlMjQ1ZjRjNDgyMmZhOWQ5Yzli
YWYyMzFmYTU1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMTcgQEAKKzIwMTYtMDQtMTQgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlciBhbmQgUHJveHkgdG8gYmUgdXNlZCBieSBhdWRpbyBlbGVtZW50cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjU2NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYXNlIGFw
YXJ0IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgYW5kIOKAplByb3h5IGludG8gV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlciBhbmQg4oCmUHJveHkKKyAgICAgICAgY2xhc3NlcyBkZWFsaW5nIGV4
Y2x1c2l2ZWx5IHdpdGggcGxheWJhY2sgc3RhdGUgYW5kIGNvbW1hbmRzLCBsZWF2aW5nIGZ1bGxz
Y3JlZW4gc3RhdGUgYW5kCisgICAgICAgIGNvbW1hbmRzIGluIHRoZSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2Vy4oCmIGNsYXNzZXMuCisKKyAgICAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ciBhbmQg4oCmUHJveHkgd2lsbCBub3cgcmVxdWlyZSBhbiBhc3NvY2lhdGVkCisgICAgICAgIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIgYW5kIOKAplByb3h5IGNsYXNzLiBUaGUgV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlciBjbGFzc2VzIGNhbiBiZQorICAgICAgICB1c2VkIHNlcGFyYXRlbHkg
YW5kIHdpdGhvdXQgdGhlIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgY2xhc3Nlcy4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5QXV0b21hdGljYWxseVNo
b3dWaWRlb1BpY3R1cmVJblBpY3R1cmVdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW06IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnBsYXkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnBhdXNlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0Ojp0b2dnbGVQbGF5U3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OmJl
Z2luU2NydWJiaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxD
b250ZXh0OjplbmRTY3J1YmJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbENvbnRleHQ6OnNlZWtUb1RpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbENvbnRleHQ6OmZhc3RTZWVrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpiZWdpblNjYW5uaW5nRm9yd2FyZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6YmVnaW5TY2FubmluZ0Jh
Y2t3YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0
OjplbmRTY2FubmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q29udGV4dDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OldlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6fldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y3JlYXRl
TW9kZWxBbmRJbnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OmVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjplbnN1cmVNb2RlbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5zdXJlSW50ZXJmYWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjphZGRDbGll
bnRGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpyZW1vdmVDbGllbnRGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0
aElEKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpj
bGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZXNldE1lZGlhU3RhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEN1cnJlbnRUaW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRCdWZmZXJlZFRp
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNl
dFNlZWthYmxlUmFuZ2VzVmVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0
V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldER1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRSYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpwbGF5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpwYXVzZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6dG9nZ2xlUGxheVN0YXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjcnVi
YmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
ZW5kU2NydWJiaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpzZWVrVG9UaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpmYXN0U2Vlayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0ZvcndhcmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5kU2Nh
bm5pbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y29udHJvbHNNYW5hZ2VySW50
ZXJmYWNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6fldlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dDo6cGxheSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dDo6cGF1c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6YmVnaW5TY3J1YmJpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmVuZFNjcnViYmluZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2Vla1Rv
VGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6
ZmFzdFNlZWspOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQ6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxDb250ZXh0OjpiZWdpblNjYW5uaW5nQmFja3dhcmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmVuZFNjYW5uaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpzZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250
ZXh0OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVh
dGVNb2RlbEFuZEludGVyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6c2V0dXBGdWxsc2NyZWVuV2l0aElEKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0RpbWVuc2lv
bnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmVudGVyRnVsbHNjcmVlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmV4aXRGdWxsc2Ny
ZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y2xlYW51cEZ1bGxzY3JlZW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnByZXBh
cmVkVG9SZXR1cm5Ub0lubGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRTZXR1
cEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4p
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmRpZENsZWFudXBGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0xheWVyRnJhbWUpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhhc0FjdGl2
ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojppc1BsYXlpbmdNZWRpYURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c3VwcG9ydHNWaWRlb0Z1
bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnNldFVwUGxheWJh
Y2tDb250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNs
ZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ2hyb21lQ2xpZW50OjpleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpleGl0VmlkZW9GdWxsc2NyZWVu
VG9Nb2RlV2l0aG91dEFuaW1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4
dDo6aW52YWxpZGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpuZXh0Q29udGV4dElkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQ29udGV4dDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6On5XZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6cmVzZXRNZWRpYVN0YXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0RHVyYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRD
dXJyZW50VGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQ6OnNldEJ1ZmZlcmVkVGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldFJhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRTZWVrYWJsZVJhbmdlcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldENhblBs
YXlGYXN0UmV2ZXJzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUNvbnRleHQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0TGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUNvbnRleHQ6OnNldEV4dGVybmFsUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Oldl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjp+V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5zdXJlTW9kZWxB
bmRJbnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjplbnN1cmVNb2RlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OmVuc3VyZUludGVyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OnJlbW92ZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjphZGRDbGllbnRGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlQ2xpZW50Rm9yQ29udGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFVwUGxheWJhY2tDb250cm9s
c01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpj
bGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6Y29udGV4dElkRm9yTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVzZXRNZWRpYVN0YXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0RHVyYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50VGltZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldEJ1ZmZlcmVk
VGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFJh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRTZWVr
YWJsZVJhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNl
dEV4dGVybmFsUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnBsYXkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpwYXVzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJlZ2luU2NydWJiaW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5kU2NydWJiaW5nKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2Vla1RvVGltZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmZhc3RTZWVrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YmVnaW5TY2FubmluZ0ZvcndhcmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpiZWdpblNjYW5u
aW5nQmFja3dhcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjplbmRTY2FubmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6
OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpyZXNldE1lZGlhU3RhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXREdXJh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRl
eHQ6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQ29udGV4dDo6c2V0QnVmZmVyZWRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0UmF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFNlZWthYmxlUmFuZ2Vz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6
c2V0Q2FuUGxheUZhc3RSZXZlcnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRMZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0RXh0ZXJuYWxQbGF5YmFjayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFdpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5G
b3JWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VDb250ZXh0OjpzZXRWaWRlb0RpbWVuc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp+V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRB
bmltYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpzZXRWaWRlb0RpbWVuc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVu
TW9kZUNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVs
bHNjcmVlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXllckdyYXZpdHlFbnVtKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZnVsbHNj
cmVlbk1heVJldHVyblRvSW5saW5lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKTogRGVsZXRlZC4K
KwogMjAxNi0wNC0xMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5OTI5MC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NWY2Mjg2YjYz
NDlkMmY5NDc1OWUyYTNiNGUwMzcwMmUyOTdiMDBjLi45OWU4Y2FiMDZjNmQ2NjE2YzViNTQwN2I3
OWY2MmE0YzYzYzZhMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MDg2LDYgKzYwODYsMTUgQEAKIAkJQ0RBMDdGQkUxOEUw
QTE2QTAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTA3RkJDMThFMEExNkEwMDQ2OTlGQSAvKiBT
eXN0ZW1TbGVlcExpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQ0RBMDdGQzExOEUwQTIyQjAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlz
dGVuZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREEwN0ZCRjE4RTBBMjJCMDA0Njk5RkEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1hYy5tbSAq
LzsgfTsKIAkJQ0RBMDdGQzIxOEUwQTIyQjAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXJN
YWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTA3
RkMwMThFMEEyMkIwMDQ2OTlGQSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLmggKi87IH07CisJ
CUNEQTI5QTA5MUNCRDk5RjQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTA4
MUNCRDk5RjQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREEyOUEwQjFDQkQ5
QTc0MDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTBBMUNCRDlBNzQwMDkwMUNDRiAv
KiBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUNEQTI5QTBFMUNCRDlDRkUwMDkwMUNDRiAvKiBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTBDMUNCRDlDRkUwMDkwMUNDRiAvKiBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSAqLzsgfTsKKwkJQ0RBMjlBMEYxQ0JEOUNG
RTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEyOUEwRDFDQkQ5Q0ZF
MDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREEyOUExNjFDQkRB
NTZDMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMTQxQ0JEQTU2QzAw
OTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbSAqLzsgfTsKKwkJQ0RB
MjlBMTcxQ0JEQTU2QzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMTUx
Q0JEQTU2QzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEQTI5QTMwMUNC
Rjc0RDQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTJGMUNCRjcz
RkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSAqLzsgfTsK
KwkJQ0RBMjlBMzExQ0JGNzREQTAwOTAxQ0NGIC8qIFdlYkFWUGxheWVyQ29udHJvbGxlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTJEMUNC
RjczRkMwMDkwMUNDRiAvKiBXZWJBVlBsYXllckNvbnRyb2xsZXIubW0gKi87IH07CisJCUNEQTI5
QTMyMUNDMDFBOTUwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMkUx
Q0JGNzNGQzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RBNzk4MjQx
NzBBMjU4MzAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE3OTgyMzE3MEEyNTgzMDBENDVDNTUgLyogQXVk
aW9TZXNzaW9uLmNwcCAqLzsgfTsKIAkJQ0RBNzk4MjcxNzBBMjc5MTAwRDQ1QzU1IC8qIEF1ZGlv
U2Vzc2lvbklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQTc5ODI1MTcwQTI3OTAwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25JT1MubW0gKi87IH07
CiAJCUNEQTc5ODJBMTcwQTNEMDAwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTc5ODIxMTcwQTIyREMwMEQ0
NUM1NSAvKiBBdWRpb1Nlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTQwNTUsNiArMTQwNjQsMTYgQEAKIAkJQ0RBMDdGQkMxOEUwQTE2
QTAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3lzdGVtU2xlZXBMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREEwN0ZCRjE4RTBBMjJCMDA0Njk5RkEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5c3RlbVNsZWVw
TGlzdGVuZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQTA3RkMwMThF
MEEyMkIwMDQ2OTlGQSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbVNsZWVwTGlzdGVuZXJNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMDgxQ0JEOTlGNDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBMjlBMEExQ0JEOUE3NDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTI5QTBDMUNCRDlDRkUwMDkwMUNDRiAv
KiBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREEyOUEwRDFDQkQ5Q0ZFMDA5
MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMTQxQ0JEQTU2QzAwOTAx
Q0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMTUxQ0JEQTU2QzAwOTAxQ0NG
IC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMkMxQ0JGNzNGQzAwOTAxQ0NGIC8qIFdlYkFWUGxh
eWVyQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBVlBs
YXllckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMkQx
Q0JGNzNGQzAwOTAxQ0NGIC8qIFdlYkFWUGxheWVyQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkFWUGxheWVyQ29udHJvbGxlci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMkUxQ0JGNzNGQzAwOTAxQ0NGIC8qIFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQTI5QTJGMUNCRjczRkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREE3OTgyMTE3MEEyMkRDMDBENDVDNTUgLyogQXVkaW9TZXNz
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDREE3OTgyMzE3MEEyNTgzMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQTc5ODI1MTcwQTI3OTAwMEQ0NUM1NSAvKiBB
dWRpb1Nlc3Npb25JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBBdWRpb1Nlc3Npb25JT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzg3
Myw2ICsxNzg5Miw4IEBACiAJCQkJQkU4NTYwNTEwNzAxRjkxMTAwMjM5NzY5IC8qIFdlYkNvcmVW
aWV3Lm0gKi8sCiAJCQkJRTFBMzE2MkIxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRl
ZFN0cmluZ0V4dHJhcy5oICovLAogCQkJCUUxQTMxNjJDMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJO
U0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0gKi8sCisJCQkJQ0RBMjlBMTUxQ0JEQTU2QzAwOTAx
Q0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oICovLAorCQkJCUNEQTI5QTE0
MUNCREE1NkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gKi8s
CiAJCQkJQ0Q4MjAzMDYxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIuaCAqLywKIAkJCQlDRDgyMDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlci5tbSAqLywKIAkJCQlDRDgyMDMwODEzOTVBQjZBMDBGOTU2QzYgLyog
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oICovLApAQCAtMTk5NTcsMTEg
KzE5OTc4LDE1IEBACiAJCQkJNDRDOTkxOUUwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLm1t
ICovLAogCQkJCTFGNzJCRjA4MTg3RkQ0MjcwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9y
eUhhbmRsZXJJT1MuY3BwICovLAogCQkJCTFGNzJCRjA5MTg3RkQ0MjcwMDA5QkNCMyAvKiBUaWxl
Q29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCAqLywKKwkJCQlDREEyOUEyQzFDQkY3M0ZDMDA5
MDFDQ0YgLyogV2ViQVZQbGF5ZXJDb250cm9sbGVyLmggKi8sCisJCQkJQ0RBMjlBMkQxQ0JGNzNG
QzAwOTAxQ0NGIC8qIFdlYkFWUGxheWVyQ29udHJvbGxlci5tbSAqLywKIAkJCQkzMTQwMzc5NzEy
NEJFQTdGMDBBRjQwRTQgLyogV2ViQ29yZU1vdGlvbk1hbmFnZXIuaCAqLywKIAkJCQkzMTQwMzc5
ODEyNEJFQTdGMDBBRjQwRTQgLyogV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0gKi8sCiAJCQkJRTQ1
MzkwMzgwRUFGRDYzNzAwMzY5NUM4IC8qIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0gKi8s
CiAJCQkJRkUwRDg0RTgxMDQ4NDM0ODAwMUExNzlFIC8qIFdlYkV2ZW50LmggKi8sCiAJCQkJRkUw
RDg0RUExMDQ4NDM2RTAwMUExNzlFIC8qIFdlYkV2ZW50Lm1tICovLAorCQkJCUNEQTI5QTJFMUNC
RjczRkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oICovLAor
CQkJCUNEQTI5QTJGMUNCRjczRkMwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdC5tbSAqLywKIAkJCQlBNTAyQzVERDEzMDQ5QjM1MDBGQzdENTMgLyogV2ViU2FmZUdD
QWN0aXZpdHlDYWxsYmFja0lPUy5oICovLAogCQkJCUMyQzRDQjFEMTYxQTEzMTIwMEQyMTREQSAv
KiBXZWJTYWZlSW5jcmVtZW50YWxTd2VlcGVySU9TLmggKi8sCiAJCQkJM0Y0MkIzMUIxODgxMTkx
QjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oICovLApAQCAt
MjAwMTAsNiArMjAwMzUsMTAgQEAKIAkJCQlDREM5NzlGMzFDNDk4QzA5MDBEQjUwRDQgLyogV2Vi
Q29yZU5TRXJyb3JFeHRyYXMuaCAqLywKIAkJCQlDREM5NzlGMjFDNDk4QzA5MDBEQjUwRDQgLyog
V2ViQ29yZU5TRXJyb3JFeHRyYXMubW0gKi8sCiAJCQkJMUE3RTE5NDQxQzU4NjNCRTAwQ0NEREYz
IC8qIFdlYktpdEFkZGl0aW9ucy5tbSAqLywKKwkJCQlDREEyOUEwODFDQkQ5OUY0MDA5MDFDQ0Yg
LyogV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmggKi8sCisJCQkJQ0RBMjlBMEExQ0JEOUE3
NDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmggKi8sCisJCQkJQ0RBMjlBMEMx
Q0JEOUNGRTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1t
ICovLAorCQkJCUNEQTI5QTBEMUNCRDlDRkUwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudC5oICovLAogCQkJCTUyQjBENEJGMUM1N0ZENjYwMDc3Q0U1MyAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oICovLAogCQkJCTUyMTMxRTU4MUM0RjE1
MjIwMDMzRjgwMiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuaCAqLywKIAkJCQk1MkQ1
QTFBNDFDNTc0ODg5MDBERTM0QTMgLyogV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCAqLywKQEAg
LTI1MjI4LDYgKzI1MjU3LDcgQEAKIAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyogQ29s
b3JDaG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCNDEyNTFGMTJEMDAz
RUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUVERTNBNTAwMEM3
QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBMjlBMEYx
Q0JEOUNGRTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzgyREY1ODEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNERDQ1NEUxMjM2Qzk1QzAwOUE3OTg1IC8qIENvbHVt
bkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTQzRURENjdGMUI0ODVEQkYwMDY0MEU3NSAvKiBD
b21iaW5lZEZpbHRlcnNBbHBoYWJldC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTM4Miw2ICsyNTQx
Miw3IEBACiAJCQkJQTgwRTZDRkEwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0ltYWdlVmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0Y2MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbXBvcnRS
dWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkQwMTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NT
SW5oZXJpdGVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQTI5QTA5MUNCRDk5RjQwMDkw
MUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4MEU2RDA4MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbml0aWFsVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTMxMjg4RTczMEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZVJ1bGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTMxMjg4RTc1MEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFt
ZXNSdWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NDk5LDYgKzI3NTMwLDcgQEAKIAkJCQk0QTBG
RkFBNjFBQUY1RUY2MDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzQxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdDMUMwRTUxQkZCNjBFRDAw
QkQyMjU2IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQ0RBMjlBMEIxQ0JEOUE3NDAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQzNjhFODBDMjI2RTMyMDA1RUZCNUYg
LyogUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NTgxNzVENDE0QzAwQzIxRUM4IC8q
IFJlY3RhbmdsZVNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5ODMxQUU0QTE1NDIyNUM5MDBG
RTI2NDQgLyogUmVmZXJyZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovLApAQCAtMjgyNjgsNiArMjgz
MDAsNyBAQAogCQkJCUIyQzNEQTQwMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWNVc2VyRGVm
aW5lZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNDIwRDAwNkMxRDAwRUY2RjI2IC8qIFRl
eHRDb2RlY1VURjE2LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzQzQ0I4MjEyRjI1RTUxMDAzM0M1
RUUgLyogVGV4dENvZGVjVVRGOC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBMjlBMTcxQ0JEQTU2
QzAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQyQjk3Q0ExMzEzODk0MzAwOEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTgyREUzMjUxQzMwQzg1NDAwQkUwMkE4IC8qIFRl
eHREZWNvcmF0aW9uUGFpbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzg0QjQxMjM3MTE4
MDAwMEM2MTYxIC8qIFRleHREb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODU0NSw2ICsy
ODU3OCw3IEBACiAJCQkJMUNBRjM0ODEwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBRjM0ODMwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNj
cmlwdE9iamVjdFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDFCMEQ3RTJCODIw
MDdDMzk4MyAvKiBXZWJTY3JpcHRPYmplY3RQcm90b2NvbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
Q0RBMjlBMzIxQ0MwMUE5NTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQxQjE0RkEwOUQ1MDA3NDU3QUUgLyogV2Vi
U29ja2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQxRTE0RkEwOUQ1MDA3NDU3QUUgLyog
V2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMUYxNEZBMDlENTAw
NzQ1N0FFIC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjg5
NjksNiArMjkwMDMsNyBAQAogCQkJCTMxQTc5NUM4MTg4OEJDQjUwMDM4MkY5MCAvKiBBTkdMRUlu
c3RhbmNlZEFycmF5cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTA3MDdFNjEyMTlDMDQzMDBE
OTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFOTEy
QUEwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlD
REEyOUEwRTFDQkQ5Q0ZFMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExMTBFNkUxREE3MDBCRjYwODggLyog
QW5pbWF0aW9uQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExMzBFNkUxREE3MDBC
RjYwODggLyogQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTk4
NDgwMjFBMUQ4MTgxMDBBMTMzMTggLyogQW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0zMTA0Myw2ICszMTA3OCw3IEBACiAJCQkJRkU5RTg5RkIxNkUyREMwNTAwQTkwOEY4IC8q
IE9yaWdpbkxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1ODFGQUUxNTIwRjkxRjAwM0E3
QTc1IC8qIE9zY2lsbGF0b3JOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMEQ1NzM2MEE1
Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNE
QTI5QTMwMUNCRjc0RDQwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTY1RkVBODY5MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzdFNzc2MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdl
Q2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1RTVCNjExQTE1RjE1NjAwMEM2MDlFIC8q
IFBhZ2VDb25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE2NjEsNiArMzE2OTcs
NyBAQAogCQkJCUIyMjI3QTE0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGb250RmFjZUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMTcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0Zv
bnRGYWNlRm9ybWF0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0ExQTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRm9udEZhY2VOYW1lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDREEyOUExNjFDQkRBNTZDMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMUQwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0ZvbnRGYWNlU3JjRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0EyMDBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyMjI3QTIzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxNzk1LDYgKzMxODMyLDcgQEAKIAkJCQk5NzU5RTkz
RjE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
NjEwM0IwMUNBREJBN0EwMDE2QjRDNyAvKiBJREJWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NzU5RTk0MjE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUNEQTI5QTMxMUNCRjc0REEwMDkwMUNDRiAvKiBXZWJBVlBsYXllckNvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzFBOUVDMjE2OEZCQzQzMDAyNjI5RjkgLyogVGV4
dFRyYWNrQ3VlR2VuZXJpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzU5RTk0NTE0RUYxQ0Y4
MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzY5
NzA4NjE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGE3Mjc3OWZiYjhl
Nzg4ODNmMzI2ODk5MmM2YjY2ZjEzYWEzNjQzNzIuLjgzMTdmZWEyZDE1NTljNjZiNjFlN2ZjYTA3
NmFkNDFjYTFhYzYwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtNDgyMSw3ICs0ODIxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5
U3RhdGUoKQogICAgIGlmIChzaG91bGRCZVBsYXlpbmcpIHsKICAgICAgICAgaWYgKGRvY3VtZW50
KCkucGFnZSgpICYmIG1fbWVkaWFTZXNzaW9uLT5jYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyKCp0
aGlzKSkgewogICAgICAgICAgICAgSFRNTFZpZGVvRWxlbWVudCYgYXNWaWRlbyA9IGRvd25jYXN0
PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKTsKLSAgICAgICAgICAgIGRvY3VtZW50KCkucGFnZSgp
LT5jaHJvbWUoKS5jbGllbnQoKS5zZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyKGFzVmlkZW8pOwor
ICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnNldFVwUGxh
eWJhY2tDb250cm9sc01hbmFnZXIoYXNWaWRlbyk7CiAgICAgICAgIH0KIAogICAgICAgICBzZXRE
aXNwbGF5TW9kZShWaWRlbyk7CkBAIC00ODU3LDcgKzQ4NTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSgpCiAgICAgICAgIHNldFBsYXlpbmcodHJ1ZSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgaWYgKGVuZGVkUGxheWJhY2soKSAmJiBkb2N1bWVudCgpLnBhZ2Uo
KSAmJiBpczxIVE1MVmlkZW9FbGVtZW50PigqdGhpcykpCi0gICAgICAgICAgICBkb2N1bWVudCgp
LnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuY2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpOwor
ICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmNsZWFyUGxh
eWJhY2tDb250cm9sc01hbmFnZXIoKnRoaXMpOwogCiAgICAgICAgIGlmICghcGxheWVyUGF1c2Vk
KQogICAgICAgICAgICAgbV9wbGF5ZXItPnBhdXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAppbmRleCBjMDI3Mzg4YWJlZmI0MWZlOTk2ZWRhODJhY2E2M2RhNzQyZGQxMGZhLi43ZDk2
ODA5YzU1ZTgxZjc0YWEwOGMwMWE5YjNmMTlkY2Y4NjZmYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgKQEAgLTM0MSw4ICszNDEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSkgeyByZXR1cm4gZmFsc2U7IH0KICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmly
dHVhbCB2b2lkIGVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KEhUTUxWaWRlb0Vs
ZW1lbnQmLCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBzZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyKEhUTUxWaWRlb0VsZW1l
bnQmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKEhUTUxNZWRp
YUVsZW1lbnQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJQbGF5YmFja0NvbnRyb2xzTWFu
YWdlcihIVE1MTWVkaWFFbGVtZW50JikgeyB9CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZXhp
dFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0
QW5pbWF0aW9uKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmLCBIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgLyp0YXJnZXRNb2RlKi8pIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44ZmZhMGNhZGQwODY5Y2YxNGVjNDAyMmI1YjAyY2EwZGJkZjhm
ODlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlX2gKKyNkZWZpbmUgV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlX2gKKworI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKworI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgVGltZVJhbmdlczsKKworY2xhc3MgV2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICBlbnVtIEV4dGVybmFsUGxheWJhY2tUYXJnZXRU
eXBlIHsgVGFyZ2V0VHlwZU5vbmUsIFRhcmdldFR5cGVBaXJQbGF5LCBUYXJnZXRUeXBlVFZPdXQg
fTsKKworICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSgpIHsgfTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXREdXJhdGlvbihkb3VibGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUo
ZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFJh
dGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+
JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5n
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1Rhcmdl
dFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgPSAwOworfTsKKwor
fQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdmOTRmMGJkNTFmNGI0YjA5NzUyODNiZDA2Yjk4ZGZkMTk2NGRkN2EKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25N
b2RlbC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsX2gKKyNkZWZpbmUgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxfaAorCisjaWYg
UExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFU
SU9OX01PREUpKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bCgpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxheSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cGF1c2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVu
ZFNjcnViYmluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2Vla1RvVGltZShkb3VibGUgdGlt
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmYXN0U2Vlayhkb3VibGUgdGltZSkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBiZWdpblNjYW5uaW5nRm9yd2FyZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRTY2Fu
bmluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50
NjRfdCBpbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRp
b24odWludDY0X3QgaW5kZXgpID0gMDsKK307CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45ZmFlNzBiOWYxNTFhNjFiYjJjM2Q5MjVmYjYxYTEzZmI1NDIxNTQyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudF9oCisjZGVmaW5lIFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50X2gKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKKyNpbmNsdWRlICJF
dmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudEVudW1zLmgiCisjaW5j
bHVkZSAiV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQXVkaW9UcmFjazsKK2NsYXNzIEhUTUxNZWRpYUVs
ZW1lbnQ7CitjbGFzcyBUZXh0VHJhY2s7CitjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2U7CisKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50IGZpbmFsIDog
cHVibGljIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLCBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50KCkpOworICAgIH0KKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCgpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZSopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWVkaWFF
bGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBIVE1MTWVkaWFF
bGVtZW50KiBtZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX21lZGlhRWxlbWVudC5nZXQo
KTsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKSBmaW5hbDsKKyAgICB2b2lkIHVw
ZGF0ZUZvckV2ZW50TmFtZShjb25zdCBXVEY6OkF0b21pY1N0cmluZyYpOworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiByaHMpIGZpbmFsIHsgcmV0dXJuIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzOyB9CisKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHBsYXkoKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBh
dXNlKCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVQbGF5U3RhdGUoKSBm
aW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luU2NydWJiaW5nKCkgZmluYWw7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmRTY3J1YmJpbmcoKSBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNlZWtUb1RpbWUoZG91YmxlIHRpbWUpIGZpbmFsOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZmFzdFNlZWsoZG91YmxlIHRpbWUpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYmVnaW5TY2FubmluZ0ZvcndhcmQoKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZW5kU2Nhbm5pbmcoKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlbGVj
dEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBmaW5hbDsK
KworcHJvdGVjdGVkOgorICAgIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50KCk7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxXVEY6
OkF0b21pY1N0cmluZz4mIG9ic2VydmVkRXZlbnROYW1lcygpOworICAgIGNvbnN0IFdURjo6QXRv
bWljU3RyaW5nJiBldmVudE5hbWVBbGwoKTsKKworICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50
PiBtX21lZGlhRWxlbWVudDsKKyAgICBib29sIG1faXNMaXN0ZW5pbmcgeyBmYWxzZSB9OworICAg
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSogbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Ug
eyBudWxscHRyIH07CisgICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBtX2xlZ2libGVUcmFj
a3NGb3JNZW51OworICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFjaz4+IG1fYXVkaW9UcmFja3NG
b3JNZW51OworICAgIAorICAgIHZvaWQgdXBkYXRlTGVnaWJsZU9wdGlvbnMoKTsKK307CisgICAg
Cit9CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmM3NTEwYTA1NWQ2MDljMTY3MTdhZDA2ZjI5MjUyNzM0ZDAxNDg3
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCkBAIC0wLDAgKzEsMzM2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudC5oIgorCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorCisjaW1wb3J0ICJET01FdmVu
dEludGVybmFsLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJNZWRpYUNvbnRyb2xz
SG9zdC5oIgorI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmgiCisjaW1wb3J0
IDxRdWFydHpDb3JlL0NvcmVBbmltYXRpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRXZlbnRM
aXN0ZW5lci5oPgorI2ltcG9ydCA8V2ViQ29yZS9FdmVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9F
dmVudExpc3RlbmVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0V2ZW50TmFtZXMuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvSFRNTEVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVu
dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BhZ2VHcm91
cC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8V2ViQ29yZS9U
ZXh0VHJhY2tMaXN0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1RpbWVSYW5nZXMuaD4KKyNpbXBvcnQg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQ6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50KCkKKyAgICA6IEV2ZW50TGlz
dGVuZXIoRXZlbnRMaXN0ZW5lcjo6Q1BQRXZlbnRMaXN0ZW5lclR5cGUpCit7Cit9CisKK1dlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp+V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQoKQoreworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50OjpzZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UoV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlKiBpbnRlcmZhY2UpCit7CisgICAgaWYgKGludGVyZmFjZSA9PSBtX3BsYXliYWNr
U2Vzc2lvbkludGVyZmFjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UgPSBpbnRlcmZhY2U7CisKKyAgICBpZiAobV9wbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UpIHsKKyAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnJlc2V0TWVkaWFT
dGF0ZSgpOworICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnQpCisgICAgICAgICAgICBtX3BsYXli
YWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQobV9t
ZWRpYUVsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVk
KCptX21lZGlhRWxlbWVudCkpOworICAgIH0KK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudDo6c2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWxlbWVudCkKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQgPT0gbWVkaWFFbGVtZW50KQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAobV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCisgICAg
ICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5yZXNldE1lZGlhU3RhdGUoKTsKKworICAg
IGlmIChtX21lZGlhRWxlbWVudCAmJiBtX2lzTGlzdGVuaW5nKSB7CisgICAgICAgIGZvciAoYXV0
byYgZXZlbnROYW1lIDogb2JzZXJ2ZWRFdmVudE5hbWVzKCkpCisgICAgICAgICAgICBtX21lZGlh
RWxlbWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRoaXMsIGZhbHNlKTsKKyAg
ICB9CisgICAgbV9pc0xpc3RlbmluZyA9IGZhbHNlOworCisgICAgbV9tZWRpYUVsZW1lbnQgPSBt
ZWRpYUVsZW1lbnQ7CisKKyAgICBpZiAoIW1fbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47
CisKKyAgICBmb3IgKGF1dG8mIGV2ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1lcygpKQorICAg
ICAgICBtX21lZGlhRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRoaXMsIGZh
bHNlKTsKKyAgICBtX2lzTGlzdGVuaW5nID0gdHJ1ZTsKKworICAgIHVwZGF0ZUZvckV2ZW50TmFt
ZShldmVudE5hbWVBbGwoKSk7CisKKyAgICBpZiAobV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Up
CisgICAgICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZChtX21lZGlhRWxlbWVudC0+bWVkaWFTZXNzaW9uKCkud2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWQoKm1fbWVkaWFFbGVtZW50KSk7Cit9CisKK3ZvaWQgV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBXZWJDb3JlOjpFdmVudCogZXZlbnQpCit7CisgICAgdXBkYXRlRm9y
RXZlbnROYW1lKGV2ZW50LT50eXBlKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdHJp
bmcmIGV2ZW50TmFtZSkKK3sKKyAgICBpZiAoIW1fbWVkaWFFbGVtZW50IHx8ICFtX3BsYXliYWNr
U2Vzc2lvbkludGVyZmFjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBhbGwgPSBldmVu
dE5hbWUgPT0gZXZlbnROYW1lQWxsKCk7CisKKyAgICBpZiAoYWxsCisgICAgICAgIHx8IGV2ZW50
TmFtZSA9PSBldmVudE5hbWVzKCkuZHVyYXRpb25jaGFuZ2VFdmVudCkgeworICAgICAgICBtX3Bs
YXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0RHVyYXRpb24obV9tZWRpYUVsZW1lbnQtPmR1cmF0
aW9uKCkpOworICAgICAgICAvLyBUaGVzZSBpcyBubyBzdGFuZGFyZCBldmVudCBmb3IgbWluRmFz
dFJldmVyc2VSYXRlQ2hhbmdlOyBkdXJhdGlvbiBjaGFuZ2UgaXMgYSByZWFzb25hYmxlIHByb3h5
IGZvciBpdC4KKyAgICAgICAgLy8gSXQgaGFwcGVucyBldmVyeSB0aW1lIGEgbmV3IGl0ZW0gYmVj
b21lcyByZWFkeSB0byBwbGF5LgorICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
c2V0Q2FuUGxheUZhc3RSZXZlcnNlKG1fbWVkaWFFbGVtZW50LT5taW5GYXN0UmV2ZXJzZVJhdGUo
KSA8IDAuMCk7CisgICAgfQorCisgICAgaWYgKGFsbAorICAgICAgICB8fCBldmVudE5hbWUgPT0g
ZXZlbnROYW1lcygpLnBhdXNlRXZlbnQKKyAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFt
ZXMoKS5wbGF5RXZlbnQKKyAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5yYXRl
Y2hhbmdlRXZlbnQpCisgICAgICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRSYXRl
KCFtX21lZGlhRWxlbWVudC0+cGF1c2VkKCksIG1fbWVkaWFFbGVtZW50LT5wbGF5YmFja1JhdGUo
KSk7CisKKyAgICBpZiAoYWxsCisgICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCku
dGltZXVwZGF0ZUV2ZW50KSB7CisgICAgICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5z
ZXRDdXJyZW50VGltZShtX21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKSwgW1tOU1Byb2Nlc3NJ
bmZvIHByb2Nlc3NJbmZvXSBzeXN0ZW1VcHRpbWVdKTsKKyAgICAgICAgbV9wbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UtPnNldEJ1ZmZlcmVkVGltZShtX21lZGlhRWxlbWVudC0+bWF4QnVmZmVyZWRU
aW1lKCkpOworICAgICAgICAvLyBGSVhNRTogMTMwNzg4IC0gZmluZCBhIGJldHRlciBldmVudCB0
byB1cGRhdGUgc2Vla2FibGUgcmFuZ2VzIGZyb20uCisgICAgICAgIG1fcGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlLT5zZXRTZWVrYWJsZVJhbmdlcygqbV9tZWRpYUVsZW1lbnQtPnNlZWthYmxlKCkp
OworICAgIH0KKworICAgIGlmIChhbGwKKyAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFt
ZXMoKS5hZGR0cmFja0V2ZW50CisgICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCku
cmVtb3ZldHJhY2tFdmVudCkKKyAgICAgICAgdXBkYXRlTGVnaWJsZU9wdGlvbnMoKTsKKworICAg
IGlmIChhbGwKKyAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS53ZWJraXRjdXJy
ZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZEV2ZW50KSB7CisgICAgICAgIGJvb2wg
ZW5hYmxlZCA9IG1fbWVkaWFFbGVtZW50LT53ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dp
cmVsZXNzKCk7CisgICAgICAgIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6RXh0ZXJuYWxQ
bGF5YmFja1RhcmdldFR5cGUgdGFyZ2V0VHlwZSA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZTo6VGFyZ2V0VHlwZU5vbmU7CisgICAgICAgIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lOwor
CisgICAgICAgIGlmIChtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKSkgeworICAg
ICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYWlycGxheShBU0NJSUxpdGVy
YWwoImFpcnBsYXkiKSk7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5n
PiB0dm91dChBU0NJSUxpdGVyYWwoInR2b3V0IikpOworCisgICAgICAgICAgICBTdHJpbmcgdHlw
ZSA9IG1fbWVkaWFFbGVtZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpLT5leHRlcm5hbERldmljZVR5
cGUoKTsKKyAgICAgICAgICAgIGlmICh0eXBlID09IGFpcnBsYXkpCisgICAgICAgICAgICAgICAg
dGFyZ2V0VHlwZSA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZUFpclBs
YXk7CisgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IHR2b3V0KQorICAgICAgICAgICAgICAg
IHRhcmdldFR5cGUgPSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OlRhcmdldFR5cGVUVk91
dDsKKyAgICAgICAgICAgIGxvY2FsaXplZERldmljZU5hbWUgPSBtX21lZGlhRWxlbWVudC0+bWVk
aWFDb250cm9sc0hvc3QoKS0+ZXh0ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZSgpOworICAgICAgICB9
CisgICAgICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRFeHRlcm5hbFBsYXliYWNr
KGVuYWJsZWQsIHRhcmdldFR5cGUsIGxvY2FsaXplZERldmljZU5hbWUpOworICAgICAgICBtX3Bs
YXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQo
bV9tZWRpYUVsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKCptX21lZGlhRWxlbWVudCkpOworICAgIH0KK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6cGxheSgpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQor
ICAgICAgICBtX21lZGlhRWxlbWVudC0+cGxheSgpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50OjpwYXVzZSgpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50
KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+cGF1c2UoKTsKK30KKwordm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dG9nZ2xlUGxheVN0YXRlKCkKK3sKKyAgICBpZiAo
bV9tZWRpYUVsZW1lbnQpCisgICAgICAgIG1fbWVkaWFFbGVtZW50LT50b2dnbGVQbGF5U3RhdGUo
KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6YmVnaW5T
Y3J1YmJpbmcoKQoreworICAgIGlmIChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVs
ZW1lbnQtPmJlZ2luU2NydWJiaW5nKCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQ6OmVuZFNjcnViYmluZygpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50
KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+ZW5kU2NydWJiaW5nKCk7Cit9CisKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnNlZWtUb1RpbWUoZG91YmxlIHRpbWUp
Cit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+c2V0
Q3VycmVudFRpbWUodGltZSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQ6OmZhc3RTZWVrKGRvdWJsZSB0aW1lKQoreworICAgIGlmIChtX21lZGlhRWxlbWVu
dCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmZhc3RTZWVrKHRpbWUpOworfQorCit2b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpiZWdpblNjYW5uaW5nRm9yd2FyZCgp
Cit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+YmVn
aW5TY2FubmluZyhNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U6OkZvcndhcmQpOworfQorCit2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpiZWdpblNjYW5uaW5nQmFja3dh
cmQoKQoreworICAgIGlmIChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQt
PmJlZ2luU2Nhbm5pbmcoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlOjpCYWNrd2FyZCk7Cit9CisK
K3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmVuZFNjYW5uaW5nKCkK
K3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpCisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5lbmRT
Y2FubmluZygpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IHNlbGVjdGVkQXVkaW9JbmRleCkKK3sK
KyAgICBBU1NFUlQoc2VsZWN0ZWRBdWRpb0luZGV4IDwgc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKSk7CisgICAgQXVkaW9UcmFjayogc2VsZWN0ZWRBdWRpb1RyYWNrID0gbnVsbHB0
cjsKKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2F1ZGlvVHJhY2tzRm9y
TWVudS5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgYXV0byYgYXVkaW9UcmFjayA9IG1fYXVk
aW9UcmFja3NGb3JNZW51W2luZGV4XTsKKyAgICAgICAgYXVkaW9UcmFjay0+c2V0RW5hYmxlZChp
bmRleCA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNlbGVjdGVkQXVkaW9JbmRleCkpOworICAgICAg
ICBpZiAoYXVkaW9UcmFjay0+ZW5hYmxlZCgpKQorICAgICAgICAgICAgc2VsZWN0ZWRBdWRpb1Ry
YWNrID0gYXVkaW9UcmFjay5nZXQoKTsKKyAgICB9CisKKyAgICBtX21lZGlhRWxlbWVudC0+YXVk
aW9UcmFja0VuYWJsZWRDaGFuZ2VkKHNlbGVjdGVkQXVkaW9UcmFjayk7Cit9CisKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnNlbGVjdExlZ2libGVNZWRpYU9wdGlv
bih1aW50NjRfdCBpbmRleCkKK3sKKyAgICBBU1NFUlQoaW5kZXggPCBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBUZXh0VHJhY2sqIHRleHRUcmFjayA9IG51bGxwdHI7
CisKKyAgICBpZiAoaW5kZXggPCBtX2xlZ2libGVUcmFja3NGb3JNZW51LnNpemUoKSkKKyAgICAg
ICAgdGV4dFRyYWNrID0gbV9sZWdpYmxlVHJhY2tzRm9yTWVudVtzdGF0aWNfY2FzdDxzaXplX3Q+
KGluZGV4KV0uZ2V0KCk7CisgICAgZWxzZQorICAgICAgICB0ZXh0VHJhY2sgPSBUZXh0VHJhY2s6
OmNhcHRpb25NZW51T2ZmSXRlbSgpOworCisgICAgbV9tZWRpYUVsZW1lbnQtPnNldFNlbGVjdGVk
VGV4dFRyYWNrKHRleHRUcmFjayk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OnVwZGF0ZUxlZ2libGVPcHRpb25zKCkKK3sKKyAgICBBdWRpb1RyYWNrTGlz
dCogYXVkaW9UcmFja0xpc3QgPSBtX21lZGlhRWxlbWVudC0+YXVkaW9UcmFja3MoKTsKKyAgICBU
ZXh0VHJhY2tMaXN0KiB0cmFja0xpc3QgPSBtX21lZGlhRWxlbWVudC0+dGV4dFRyYWNrcygpOwor
CisgICAgaWYgKCghdHJhY2tMaXN0ICYmICFhdWRpb1RyYWNrTGlzdCkgfHwgIW1fbWVkaWFFbGVt
ZW50LT5kb2N1bWVudCgpLnBhZ2UoKSB8fCAhbV9tZWRpYUVsZW1lbnQtPm1lZGlhQ29udHJvbHNI
b3N0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEF0b21pY1N0cmluZyBkaXNwbGF5TW9kZSA9
IG1fbWVkaWFFbGVtZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpLT5jYXB0aW9uRGlzcGxheU1vZGUo
KTsKKyAgICBUZXh0VHJhY2sqIG9mZkl0ZW0gPSBtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9s
c0hvc3QoKS0+Y2FwdGlvbk1lbnVPZmZJdGVtKCk7CisgICAgVGV4dFRyYWNrKiBhdXRvbWF0aWNJ
dGVtID0gbV9tZWRpYUVsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCktPmNhcHRpb25NZW51QXV0
b21hdGljSXRlbSgpOworCisgICAgYXV0byYgY2FwdGlvblByZWZlcmVuY2VzID0gbV9tZWRpYUVs
ZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpOwor
ICAgIG1fbGVnaWJsZVRyYWNrc0Zvck1lbnUgPSBjYXB0aW9uUHJlZmVyZW5jZXMuc29ydGVkVHJh
Y2tMaXN0Rm9yTWVudSh0cmFja0xpc3QpOworICAgIG1fYXVkaW9UcmFja3NGb3JNZW51ID0gY2Fw
dGlvblByZWZlcmVuY2VzLnNvcnRlZFRyYWNrTGlzdEZvck1lbnUoYXVkaW9UcmFja0xpc3QpOwor
CisgICAgVmVjdG9yPFN0cmluZz4gYXVkaW9UcmFja0Rpc3BsYXlOYW1lczsKKyAgICB1aW50NjRf
dCBzZWxlY3RlZEF1ZGlvSW5kZXggPSAwOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBp
bmRleCA8IG1fYXVkaW9UcmFja3NGb3JNZW51LnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBh
dXRvJiB0cmFjayA9IG1fYXVkaW9UcmFja3NGb3JNZW51W2luZGV4XTsKKyAgICAgICAgYXVkaW9U
cmFja0Rpc3BsYXlOYW1lcy5hcHBlbmQoY2FwdGlvblByZWZlcmVuY2VzLmRpc3BsYXlOYW1lRm9y
VHJhY2sodHJhY2suZ2V0KCkpKTsKKworICAgICAgICBpZiAodHJhY2stPmVuYWJsZWQoKSkKKyAg
ICAgICAgICAgIHNlbGVjdGVkQXVkaW9JbmRleCA9IGluZGV4OworICAgIH0KKworICAgIG1fcGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhhdWRp
b1RyYWNrRGlzcGxheU5hbWVzLCBzZWxlY3RlZEF1ZGlvSW5kZXgpOworCisgICAgVmVjdG9yPFN0
cmluZz4gdHJhY2tEaXNwbGF5TmFtZXM7CisgICAgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCA9IDA7
CisgICAgdWludDY0X3Qgb2ZmSW5kZXggPSAwOworICAgIGJvb2wgdHJhY2tNZW51SXRlbVNlbGVj
dGVkID0gZmFsc2U7CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9sZWdp
YmxlVHJhY2tzRm9yTWVudS5zaXplKCk7IGluZGV4KyspIHsKKyAgICAgICAgYXV0byYgdHJhY2sg
PSBtX2xlZ2libGVUcmFja3NGb3JNZW51W2luZGV4XTsKKyAgICAgICAgdHJhY2tEaXNwbGF5TmFt
ZXMuYXBwZW5kKGNhcHRpb25QcmVmZXJlbmNlcy5kaXNwbGF5TmFtZUZvclRyYWNrKHRyYWNrLmdl
dCgpKSk7CisKKyAgICAgICAgaWYgKHRyYWNrID09IG9mZkl0ZW0pCisgICAgICAgICAgICBvZmZJ
bmRleCA9IGluZGV4OworCisgICAgICAgIGlmICh0cmFjayA9PSBhdXRvbWF0aWNJdGVtICYmIGRp
c3BsYXlNb2RlID09IE1lZGlhQ29udHJvbHNIb3N0OjphdXRvbWF0aWNLZXl3b3JkKCkpIHsKKyAg
ICAgICAgICAgIHNlbGVjdGVkSW5kZXggPSBpbmRleDsKKyAgICAgICAgICAgIHRyYWNrTWVudUl0
ZW1TZWxlY3RlZCA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGlzcGxheU1vZGUg
IT0gTWVkaWFDb250cm9sc0hvc3Q6OmF1dG9tYXRpY0tleXdvcmQoKSAmJiB0cmFjay0+bW9kZSgp
ID09IFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSkgeworICAgICAgICAgICAgc2VsZWN0ZWRJ
bmRleCA9IGluZGV4OworICAgICAgICAgICAgdHJhY2tNZW51SXRlbVNlbGVjdGVkID0gdHJ1ZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChvZmZJbmRleCAmJiAhdHJhY2tNZW51SXRlbVNl
bGVjdGVkICYmIGRpc3BsYXlNb2RlID09IE1lZGlhQ29udHJvbHNIb3N0Ojpmb3JjZWRPbmx5S2V5
d29yZCgpKSB7CisgICAgICAgIHNlbGVjdGVkSW5kZXggPSBvZmZJbmRleDsKKyAgICAgICAgdHJh
Y2tNZW51SXRlbVNlbGVjdGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBtX3BsYXliYWNrU2Vzc2lv
bkludGVyZmFjZS0+c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyh0cmFja0Rpc3BsYXlO
YW1lcywgc2VsZWN0ZWRJbmRleCk7Cit9CisKK2NvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+JiAg
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6Om9ic2VydmVkRXZlbnROYW1lcygp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxBdG9taWNTdHJpbmc+PiBzRXZl
bnROYW1lczsKKworICAgIGlmICghc0V2ZW50TmFtZXMuZ2V0KCkuc2l6ZSgpKSB7CisgICAgICAg
IHNFdmVudE5hbWVzLmdldCgpLmFwcGVuZChldmVudE5hbWVzKCkuZHVyYXRpb25jaGFuZ2VFdmVu
dCk7CisgICAgICAgIHNFdmVudE5hbWVzLmdldCgpLmFwcGVuZChldmVudE5hbWVzKCkucGF1c2VF
dmVudCk7CisgICAgICAgIHNFdmVudE5hbWVzLmdldCgpLmFwcGVuZChldmVudE5hbWVzKCkucGxh
eUV2ZW50KTsKKyAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5y
YXRlY2hhbmdlRXZlbnQpOworICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnRO
YW1lcygpLnRpbWV1cGRhdGVFdmVudCk7CisgICAgICAgIHNFdmVudE5hbWVzLmdldCgpLmFwcGVu
ZChldmVudE5hbWVzKCkuYWRkdHJhY2tFdmVudCk7CisgICAgICAgIHNFdmVudE5hbWVzLmdldCgp
LmFwcGVuZChldmVudE5hbWVzKCkucmVtb3ZldHJhY2tFdmVudCk7CisgICAgICAgIHNFdmVudE5h
bWVzLmdldCgpLmFwcGVuZChldmVudE5hbWVzKCkud2Via2l0Y3VycmVudHBsYXliYWNrdGFyZ2V0
aXN3aXJlbGVzc2NoYW5nZWRFdmVudCk7CisgICAgfQorICAgIHJldHVybiBzRXZlbnROYW1lcy5n
ZXQoKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiAgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OmV2ZW50TmFtZUFsbCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gc0V2ZW50TmFtZUFsbCA9ICJhbGxFdmVudHMiOworICAgIHJldHVybiBz
RXZlbnROYW1lQWxsOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmgKaW5kZXggYzZk
OWJmZjI3Njk5OTZhOTgyNmMzZGQ2NjMwYTA0MTJiMjE0NTI4Mi4uYThlZjI5NTBhYjhlN2FhZmU0
NDA0NzQ4YjE2Mzc1Y2NjZmJmM2UwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmgKQEAgLTI4LDEx
ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0K
LW5hbWVzcGFjZSBXVEYgewotY2xhc3MgU3RyaW5nOwotfQorI2luY2x1ZGUgIldlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDIzICsz
NiwxMCBAQCBXRUJDT1JFX0VYUE9SVCBib29sIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpOwog
CiBjbGFzcyBUaW1lUmFuZ2VzOwogCi1jbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Ug
eworY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlIDogcHVibGljIFdlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgZW51bSBFeHRlcm5hbFBsYXliYWNrVGFy
Z2V0VHlwZSB7IFRhcmdldFR5cGVOb25lLCBUYXJnZXRUeXBlQWlyUGxheSwgVGFyZ2V0VHlwZVRW
T3V0IH07Ci0gICAgCiAgICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKCkg
eyB9OwotICAgIHZpcnR1YWwgdm9pZCByZXNldE1lZGlhU3RhdGUoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJy
ZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNldEJ1ZmZlcmVkVGltZShkb3VibGUpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0
aCwgZmxvYXQgaGVpZ2h0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlZWthYmxlUmFuZ2Vz
KGNvbnN0IFRpbWVSYW5nZXMmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldENhblBsYXlGYXN0
UmV2ZXJzZShib29sKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNl
bGVjdGVkSW5kZXgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBz
ZWxlY3RlZEluZGV4KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldEV4dGVybmFsUGxheWJhY2so
Ym9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgV1RGOjpTdHJpbmcgbG9j
YWxpemVkRGV2aWNlTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRXaXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZChib29sKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaAppbmRleCAz
NWJiZWU0ZGYwMmMxNGZjZDg3ZjBkMGQxMWFjZDA0OTM3NjMyMjM1Li5lNTk4ZmQzNTk1ODdjOWU2
NjMzYmRjNTJlMGMyZWNmYTlkNTc5YzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgKQEAgLTMxLDI4ICszMSwx
NyBAQAogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVu
dEVudW1zLmgiCisjaW5jbHVkZSAiV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCB7CitjbGFzcyBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCA6IHB1YmxpYyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoKSB7IH07Ci0g
ICAgdmlydHVhbCB2b2lkIHBsYXkoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQbGF5U3RhdGUoKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGJlZ2luU2NydWJiaW5nKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBlbmRTY3J1YmJpbmco
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNlZWtUb1RpbWUoZG91YmxlIHRpbWUpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZmFzdFNlZWsoZG91YmxlIHRpbWUpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5TY2FubmluZ0ZvcndhcmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luU2Nh
bm5pbmdCYWNrd2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZW5kU2Nhbm5pbmcoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlk
ZW9MYXllckZyYW1lKEZsb2F0UmVjdCkgPSAwOwogICAgIGVudW0gVmlkZW9HcmF2aXR5IHsgVmlk
ZW9HcmF2aXR5UmVzaXplLCBWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QsIFZpZGVvR3Jhdml0eVJl
c2l6ZUFzcGVjdEZpbGwgfTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHko
VmlkZW9HcmF2aXR5KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRp
b24odWludDY0X3QgaW5kZXgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0TGVnaWJsZU1l
ZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZ1bGxzY3Jl
ZW5Nb2RlQ2hhbmdlZChIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUp
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgPSAwOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCmluZGV4IDVkNDY2NzBiYzU3ZDkzNjIyNTNi
ODBhY2RlNzU2OGFjOWI0YjJkYWQuLmIzNjhmOTY1M2U0MjJhN2Q2NTMwZmU4NzhmYjRkMDA4NWM2
M2ZmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaApAQCAtNDIsMTMg
KzQyLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1ZGlvVHJhY2s7CiBjbGFzcyBI
VE1MVmlkZW9FbGVtZW50OwogY2xhc3MgVGV4dFRyYWNrOworY2xhc3MgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U7
CiAKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50IDogcHVibGljIFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsLCBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gY3Jl
YXRlKCkKKyAgICBzdGF0aWMgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50PiBjcmVhdGUoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQmIHBsYXliYWNr
U2Vzc2lvbk1vZGVsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50KHBsYXliYWNrU2Vzc2lv
bk1vZGVsKSk7CiAgICAgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfldlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKik7
CkBAIC04MCwxMiArODEsMTMgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNW
aXNpYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9S
VCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudCgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50KFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IFZlY3Rv
cjxXVEY6OkF0b21pY1N0cmluZz4mIG9ic2VydmVkRXZlbnROYW1lcygpOwogICAgIGNvbnN0IFdU
Rjo6QXRvbWljU3RyaW5nJiBldmVudE5hbWVBbGwoKTsKLSAgICAKKworICAgIFJlZjxXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gbV9wbGF5YmFja1Nlc3Npb25Nb2RlbDsKICAg
ICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gbV92aWRlb0VsZW1lbnQ7CiAgICAgUmV0YWluUHRy
PFBsYXRmb3JtTGF5ZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CiAgICAgYm9vbCBtX2lzTGlz
dGVuaW5nIHsgZmFsc2UgfTsKQEAgLTkzLDggKzk1LDYgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJl
Y3QgbV92aWRlb0ZyYW1lOwogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPj4gbV9sZWdpYmxl
VHJhY2tzRm9yTWVudTsKICAgICBWZWN0b3I8UmVmUHRyPEF1ZGlvVHJhY2s+PiBtX2F1ZGlvVHJh
Y2tzRm9yTWVudTsKLQotICAgIHZvaWQgdXBkYXRlTGVnaWJsZU9wdGlvbnMoKTsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KaW5kZXggZjg5ZjE3NTg4NjJl
Y2M4MGY2YzZkOTAxMTQxNWI0YjA5OGEyNTAwNS4uMzRiNmI1ZWQwNTg0NDdhNjFlMGE3MjkzNmRh
MWEwMjI5MTgxMTA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0K
QEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIkRPTUV2ZW50SW50ZXJuYWwuaCIKICNpbXBvcnQg
IkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhQ29udHJvbHNIb3N0LmgiCisjaW1wb3J0ICJXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVBbmltYXRpb24uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRE9NRXZlbnRMaXN0ZW5lci5oPgpAQCAtNTAsOCArNTEsOSBAQAog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50KCkKK1dlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCYgcGxheWJhY2tTZXNz
aW9uTW9kZWwpCiAgICAgOiBFdmVudExpc3RlbmVyKEV2ZW50TGlzdGVuZXI6OkNQUEV2ZW50TGlz
dGVuZXJUeXBlKQorICAgICwgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbChwbGF5YmFja1Nlc3Npb25N
b2RlbCkKIHsKIH0KIApAQCAtNjUsMjQgKzY3LDE4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQ6OnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZShXZWJWaWRl
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlID0gaW50
ZXJmYWNlOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPnNldFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZShpbnRlcmZhY2UpOwogCi0gICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlKSB7Ci0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5yZXNldE1lZGlhU3Rh
dGUoKTsKLSAgICAgICAgaWYgKG1fdmlkZW9FbGVtZW50KSB7Ci0gICAgICAgICAgICBtX3ZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZS0+c2V0VmlkZW9EaW1lbnNpb25zKHRydWUsIG1fdmlkZW9FbGVt
ZW50LT52aWRlb1dpZHRoKCksIG1fdmlkZW9FbGVtZW50LT52aWRlb0hlaWdodCgpKTsKLSAgICAg
ICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZChtX3ZpZGVvRWxlbWVudC0+bWVkaWFTZXNzaW9uKCkud2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQoKm1fdmlkZW9FbGVtZW50KSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAg
aWYgKG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlICYmIG1fdmlkZW9FbGVtZW50KQorICAgICAg
ICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0VmlkZW9EaW1lbnNpb25zKHRydWUsIG1f
dmlkZW9FbGVtZW50LT52aWRlb1dpZHRoKCksIG1fdmlkZW9FbGVtZW50LT52aWRlb0hlaWdodCgp
KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0Vmlk
ZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCkKIHsKKyAgICBtX3BsYXli
YWNrU2Vzc2lvbk1vZGVsLT5zZXRNZWRpYUVsZW1lbnQodmlkZW9FbGVtZW50KTsKICAgICBpZiAo
bV92aWRlb0VsZW1lbnQgPT0gdmlkZW9FbGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAobV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UpCi0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlLT5yZXNldE1lZGlhU3RhdGUoKTsKLQogICAgIGlmIChtX3ZpZGVvRWxlbWVudCAm
JiBtX3ZpZGVvRWxlbWVudC0+dmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSkKICAgICAgICAgbV92aWRl
b0VsZW1lbnQtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG51bGxwdHIpOwogCkBAIC0xMDMsMTAg
Kzk5LDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0Vmlk
ZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQqIHZpZGUKIAogICAgIHVwZGF0ZUZvckV2ZW50TmFt
ZShldmVudE5hbWVBbGwoKSk7CiAKLSAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Up
IHsKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UpCiAgICAgICAgIG1fdmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlLT5zZXRWaWRlb0RpbWVuc2lvbnModHJ1ZSwgdmlkZW9FbGVtZW50
LT52aWRlb1dpZHRoKCksIHZpZGVvRWxlbWVudC0+dmlkZW9IZWlnaHQoKSk7Ci0gICAgICAgIG1f
dmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxl
ZChtX3ZpZGVvRWxlbWVudC0+bWVkaWFTZXNzaW9uKCkud2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQoKm1fdmlkZW9FbGVtZW50KSk7Ci0gICAgfQogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqIGV2ZW50KQpAQCAtMTIyLDU2ICsxMTYsOCBAQCB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5h
bWUoY29uc3QgV1RGOjpBdG9taWNTdAogICAgIGJvb2wgYWxsID0gZXZlbnROYW1lID09IGV2ZW50
TmFtZUFsbCgpOwogCiAgICAgaWYgKGFsbAotICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnRO
YW1lcygpLmR1cmF0aW9uY2hhbmdlRXZlbnQpIHsKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2UtPnNldER1cmF0aW9uKG1fdmlkZW9FbGVtZW50LT5kdXJhdGlvbigpKTsKLSAgICAg
ICAgLy8gVGhlc2UgaXMgbm8gc3RhbmRhcmQgZXZlbnQgZm9yIG1pbkZhc3RSZXZlcnNlUmF0ZUNo
YW5nZTsgZHVyYXRpb24gY2hhbmdlIGlzIGEgcmVhc29uYWJsZSBwcm94eSBmb3IgaXQuCi0gICAg
ICAgIC8vIEl0IGhhcHBlbnMgZXZlcnkgdGltZSBhIG5ldyBpdGVtIGJlY29tZXMgcmVhZHkgdG8g
cGxheS4KLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldENhblBsYXlGYXN0
UmV2ZXJzZShtX3ZpZGVvRWxlbWVudC0+bWluRmFzdFJldmVyc2VSYXRlKCkgPCAwLjApOwotICAg
IH0KLQotICAgIGlmIChhbGwKLSAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5w
YXVzZUV2ZW50Ci0gICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkucGxheUV2ZW50
Ci0gICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50KQot
ICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0UmF0ZSghbV92aWRlb0VsZW1l
bnQtPnBhdXNlZCgpLCBtX3ZpZGVvRWxlbWVudC0+cGxheWJhY2tSYXRlKCkpOwotCi0gICAgaWYg
KGFsbAotICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVu
dCkgewotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0Q3VycmVudFRpbWUo
bV92aWRlb0VsZW1lbnQtPmN1cnJlbnRUaW1lKCksIFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5m
b10gc3lzdGVtVXB0aW1lXSk7Ci0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5z
ZXRCdWZmZXJlZFRpbWUobV92aWRlb0VsZW1lbnQtPm1heEJ1ZmZlcmVkVGltZSgpKTsKLSAgICAg
ICAgLy8gRklYTUU6IDEzMDc4OCAtIGZpbmQgYSBiZXR0ZXIgZXZlbnQgdG8gdXBkYXRlIHNlZWth
YmxlIHJhbmdlcyBmcm9tLgotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0
U2Vla2FibGVSYW5nZXMoKm1fdmlkZW9FbGVtZW50LT5zZWVrYWJsZSgpKTsKLSAgICB9Ci0KLSAg
ICBpZiAoYWxsCi0gICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkuYWRkdHJhY2tF
dmVudAotICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnJlbW92ZXRyYWNrRXZl
bnQpCi0gICAgICAgIHVwZGF0ZUxlZ2libGVPcHRpb25zKCk7Ci0gICAgCi0gICAgaWYgKGFsbAog
ICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50KQogICAgICAg
ICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0VmlkZW9EaW1lbnNpb25zKHRydWUsIG1f
dmlkZW9FbGVtZW50LT52aWRlb1dpZHRoKCksIG1fdmlkZW9FbGVtZW50LT52aWRlb0hlaWdodCgp
KTsKLQotICAgIGlmIChhbGwKLSAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS53
ZWJraXRjdXJyZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZEV2ZW50KSB7Ci0gICAg
ICAgIGJvb2wgZW5hYmxlZCA9IG1fdmlkZW9FbGVtZW50LT53ZWJraXRDdXJyZW50UGxheWJhY2tU
YXJnZXRJc1dpcmVsZXNzKCk7Ci0gICAgICAgIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZTo6
RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFyZ2V0VHlwZSA9IFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZTo6VGFyZ2V0VHlwZU5vbmU7Ci0gICAgICAgIFN0cmluZyBsb2NhbGl6ZWREZXZp
Y2VOYW1lOwotCi0gICAgICAgIGlmIChtX3ZpZGVvRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3Qo
KSkgewotICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYWlycGxheShB
U0NJSUxpdGVyYWwoImFpcnBsYXkiKSk7Ci0gICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiB0dm91dChBU0NJSUxpdGVyYWwoInR2b3V0IikpOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBTdHJpbmcgdHlwZSA9IG1fdmlkZW9FbGVtZW50LT5tZWRpYUNvbnRyb2xzSG9z
dCgpLT5leHRlcm5hbERldmljZVR5cGUoKTsKLSAgICAgICAgICAgIGlmICh0eXBlID09IGFpcnBs
YXkpCi0gICAgICAgICAgICAgICAgdGFyZ2V0VHlwZSA9IFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZTo6VGFyZ2V0VHlwZUFpclBsYXk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IHR2
b3V0KQotICAgICAgICAgICAgICAgIHRhcmdldFR5cGUgPSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2U6OlRhcmdldFR5cGVUVk91dDsKLSAgICAgICAgICAgIGxvY2FsaXplZERldmljZU5hbWUg
PSBtX3ZpZGVvRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+ZXh0ZXJuYWxEZXZpY2VEaXNw
bGF5TmFtZSgpOwotICAgICAgICB9Ci0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
LT5zZXRFeHRlcm5hbFBsYXliYWNrKGVuYWJsZWQsIHRhcmdldFR5cGUsIGxvY2FsaXplZERldmlj
ZU5hbWUpOwotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0V2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQobV92aWRlb0VsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLndpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX3ZpZGVvRWxlbWVudCkpOwotICAgIH0KIH0KIAog
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogdmlkZW9MYXllcikKQEAgLTE5Myw2MiArMTM5LDUyIEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqCiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ6OnBsYXkoKQogewotICAgIGlmIChtX3ZpZGVvRWxlbWVudCkKLSAgICAgICAg
bV92aWRlb0VsZW1lbnQtPnBsYXkoKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5wbGF5
KCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnBhdXNl
KCkKIHsKLSAgICBpZiAobV92aWRlb0VsZW1lbnQpCi0gICAgICAgIG1fdmlkZW9FbGVtZW50LT5w
YXVzZSgpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPnBhdXNlKCk7CiB9CiAKIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSgpCiB7
Ci0gICAgaWYgKG1fdmlkZW9FbGVtZW50KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+dG9nZ2xl
UGxheVN0YXRlKCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+dG9nZ2xlUGxheVN0YXRl
KCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmJlZ2lu
U2NydWJiaW5nKCkKIHsKLSAgICBpZiAobV92aWRlb0VsZW1lbnQpCi0gICAgICAgIG1fdmlkZW9F
bGVtZW50LT5iZWdpblNjcnViYmluZygpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmJl
Z2luU2NydWJiaW5nKCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6OmVuZFNjcnViYmluZygpCiB7Ci0gICAgaWYgKG1fdmlkZW9FbGVtZW50KQotICAgICAg
ICBtX3ZpZGVvRWxlbWVudC0+ZW5kU2NydWJiaW5nKCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25N
b2RlbC0+ZW5kU2NydWJiaW5nKCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ6OnNlZWtUb1RpbWUoZG91YmxlIHRpbWUpCiB7Ci0gICAgaWYgKG1fdmlkZW9F
bGVtZW50KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+c2V0Q3VycmVudFRpbWUodGltZSk7Cisg
ICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+c2Vla1RvVGltZSh0aW1lKTsKIH0KIAogdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZmFzdFNlZWsoZG91YmxlIHRpbWUp
CiB7Ci0gICAgaWYgKG1fdmlkZW9FbGVtZW50KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+ZmFz
dFNlZWsodGltZSk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+ZmFzdFNlZWsodGltZSk7
CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmJlZ2luU2Nh
bm5pbmdGb3J3YXJkKCkKIHsKLSAgICBpZiAobV92aWRlb0VsZW1lbnQpCi0gICAgICAgIG1fdmlk
ZW9FbGVtZW50LT5iZWdpblNjYW5uaW5nKE1lZGlhQ29udHJvbGxlckludGVyZmFjZTo6Rm9yd2Fy
ZCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+YmVnaW5TY2FubmluZ0ZvcndhcmQoKTsK
IH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6YmVnaW5TY2Fu
bmluZ0JhY2t3YXJkKCkKIHsKLSAgICBpZiAobV92aWRlb0VsZW1lbnQpCi0gICAgICAgIG1fdmlk
ZW9FbGVtZW50LT5iZWdpblNjYW5uaW5nKE1lZGlhQ29udHJvbGxlckludGVyZmFjZTo6QmFja3dh
cmQpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgp
OwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjplbmRTY2Fu
bmluZygpCiB7Ci0gICAgaWYgKG1fdmlkZW9FbGVtZW50KQotICAgICAgICBtX3ZpZGVvRWxlbWVu
dC0+ZW5kU2Nhbm5pbmcoKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5lbmRTY2Fubmlu
ZygpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZXF1
ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlIG1vZGUpCkBAIC0yODIsMTA1ICsyMTgsMjAgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9MYXllckdyYXZpdHkoV2ViVmlkZW9GdWxsc2NyZWUK
IAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2VsZWN0QXVkaW9N
ZWRpYU9wdGlvbih1aW50NjRfdCBzZWxlY3RlZEF1ZGlvSW5kZXgpCiB7Ci0gICAgQXVkaW9UcmFj
ayogc2VsZWN0ZWRBdWRpb1RyYWNrID0gbnVsbHB0cjsKLQotICAgIGZvciAoc2l6ZV90IGluZGV4
ID0gMDsgaW5kZXggPCBtX2F1ZGlvVHJhY2tzRm9yTWVudS5zaXplKCk7ICsraW5kZXgpIHsKLSAg
ICAgICAgYXV0byYgYXVkaW9UcmFjayA9IG1fYXVkaW9UcmFja3NGb3JNZW51W2luZGV4XTsKLSAg
ICAgICAgYXVkaW9UcmFjay0+c2V0RW5hYmxlZChpbmRleCA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+
KHNlbGVjdGVkQXVkaW9JbmRleCkpOwotICAgICAgICBpZiAoYXVkaW9UcmFjay0+ZW5hYmxlZCgp
KQotICAgICAgICAgICAgc2VsZWN0ZWRBdWRpb1RyYWNrID0gYXVkaW9UcmFjay5nZXQoKTsKLSAg
ICB9Ci0KLSAgICBtX3ZpZGVvRWxlbWVudC0+YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKHNlbGVj
dGVkQXVkaW9UcmFjayk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+c2VsZWN0QXVkaW9N
ZWRpYU9wdGlvbihzZWxlY3RlZEF1ZGlvSW5kZXgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3Qg
aW5kZXgpCiB7Ci0gICAgVGV4dFRyYWNrKiB0ZXh0VHJhY2sgPSBudWxscHRyOwotICAgIAotICAg
IGlmIChpbmRleCA8IG1fbGVnaWJsZVRyYWNrc0Zvck1lbnUuc2l6ZSgpKQotICAgICAgICB0ZXh0
VHJhY2sgPSBtX2xlZ2libGVUcmFja3NGb3JNZW51W3N0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgp
XS5nZXQoKTsKLSAgICBlbHNlCi0gICAgICAgIHRleHRUcmFjayA9IFRleHRUcmFjazo6Y2FwdGlv
bk1lbnVPZmZJdGVtKCk7Ci0gICAgCi0gICAgbV92aWRlb0VsZW1lbnQtPnNldFNlbGVjdGVkVGV4
dFRyYWNrKHRleHRUcmFjayk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQ6OnVwZGF0ZUxlZ2libGVPcHRpb25zKCkKLXsKLSAgICBBdWRpb1RyYWNrTGlzdCog
YXVkaW9UcmFja0xpc3QgPSBtX3ZpZGVvRWxlbWVudC0+YXVkaW9UcmFja3MoKTsKLSAgICBUZXh0
VHJhY2tMaXN0KiB0cmFja0xpc3QgPSBtX3ZpZGVvRWxlbWVudC0+dGV4dFRyYWNrcygpOwotCi0g
ICAgaWYgKCghdHJhY2tMaXN0ICYmICFhdWRpb1RyYWNrTGlzdCkgfHwgIW1fdmlkZW9FbGVtZW50
LT5kb2N1bWVudCgpLnBhZ2UoKSB8fCAhbV92aWRlb0VsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBXVEY6OkF0b21pY1N0cmluZyBkaXNwbGF5
TW9kZSA9IG1fdmlkZW9FbGVtZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpLT5jYXB0aW9uRGlzcGxh
eU1vZGUoKTsKLSAgICBUZXh0VHJhY2sqIG9mZkl0ZW0gPSBtX3ZpZGVvRWxlbWVudC0+bWVkaWFD
b250cm9sc0hvc3QoKS0+Y2FwdGlvbk1lbnVPZmZJdGVtKCk7Ci0gICAgVGV4dFRyYWNrKiBhdXRv
bWF0aWNJdGVtID0gbV92aWRlb0VsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCktPmNhcHRpb25N
ZW51QXV0b21hdGljSXRlbSgpOwotCi0gICAgYXV0byYgY2FwdGlvblByZWZlcmVuY2VzID0gbV92
aWRlb0VsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNl
cygpOwotICAgIG1fbGVnaWJsZVRyYWNrc0Zvck1lbnUgPSBjYXB0aW9uUHJlZmVyZW5jZXMuc29y
dGVkVHJhY2tMaXN0Rm9yTWVudSh0cmFja0xpc3QpOwotICAgIG1fYXVkaW9UcmFja3NGb3JNZW51
ID0gY2FwdGlvblByZWZlcmVuY2VzLnNvcnRlZFRyYWNrTGlzdEZvck1lbnUoYXVkaW9UcmFja0xp
c3QpOwotCi0gICAgVmVjdG9yPFN0cmluZz4gYXVkaW9UcmFja0Rpc3BsYXlOYW1lczsKLSAgICB1
aW50NjRfdCBzZWxlY3RlZEF1ZGlvSW5kZXggPSAwOwotICAgIAotICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBtX2F1ZGlvVHJhY2tzRm9yTWVudS5zaXplKCk7ICsraW5kZXgpIHsK
LSAgICAgICAgYXV0byYgdHJhY2sgPSBtX2F1ZGlvVHJhY2tzRm9yTWVudVtpbmRleF07Ci0gICAg
ICAgIGF1ZGlvVHJhY2tEaXNwbGF5TmFtZXMuYXBwZW5kKGNhcHRpb25QcmVmZXJlbmNlcy5kaXNw
bGF5TmFtZUZvclRyYWNrKHRyYWNrLmdldCgpKSk7Ci0gICAgICAgIAotICAgICAgICBpZiAodHJh
Y2stPmVuYWJsZWQoKSkKLSAgICAgICAgICAgIHNlbGVjdGVkQXVkaW9JbmRleCA9IGluZGV4Owot
ICAgIH0KLSAgICAKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0QXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnMoYXVkaW9UcmFja0Rpc3BsYXlOYW1lcywgc2VsZWN0ZWRBdWRpb0lu
ZGV4KTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHRyYWNrRGlzcGxheU5hbWVzOwotICAgIHVpbnQ2
NF90IHNlbGVjdGVkSW5kZXggPSAwOwotICAgIHVpbnQ2NF90IG9mZkluZGV4ID0gMDsKLSAgICBi
b29sIHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IGZhbHNlOwotICAgIAotICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBtX2xlZ2libGVUcmFja3NGb3JNZW51LnNpemUoKTsgaW5kZXgr
KykgewotICAgICAgICBhdXRvJiB0cmFjayA9IG1fbGVnaWJsZVRyYWNrc0Zvck1lbnVbaW5kZXhd
OwotICAgICAgICB0cmFja0Rpc3BsYXlOYW1lcy5hcHBlbmQoY2FwdGlvblByZWZlcmVuY2VzLmRp
c3BsYXlOYW1lRm9yVHJhY2sodHJhY2suZ2V0KCkpKTsKLSAgICAgICAgCi0gICAgICAgIGlmICh0
cmFjayA9PSBvZmZJdGVtKQotICAgICAgICAgICAgb2ZmSW5kZXggPSBpbmRleDsKLSAgICAgICAg
Ci0gICAgICAgIGlmICh0cmFjayA9PSBhdXRvbWF0aWNJdGVtICYmIGRpc3BsYXlNb2RlID09IE1l
ZGlhQ29udHJvbHNIb3N0OjphdXRvbWF0aWNLZXl3b3JkKCkpIHsKLSAgICAgICAgICAgIHNlbGVj
dGVkSW5kZXggPSBpbmRleDsKLSAgICAgICAgICAgIHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IHRy
dWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChkaXNwbGF5TW9kZSAhPSBNZWRp
YUNvbnRyb2xzSG9zdDo6YXV0b21hdGljS2V5d29yZCgpICYmIHRyYWNrLT5tb2RlKCkgPT0gVGV4
dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpKSB7Ci0gICAgICAgICAgICBzZWxlY3RlZEluZGV4ID0g
aW5kZXg7Ci0gICAgICAgICAgICB0cmFja01lbnVJdGVtU2VsZWN0ZWQgPSB0cnVlOwotICAgICAg
ICB9Ci0gICAgfQotICAgIAotICAgIGlmIChvZmZJbmRleCAmJiAhdHJhY2tNZW51SXRlbVNlbGVj
dGVkICYmIGRpc3BsYXlNb2RlID09IE1lZGlhQ29udHJvbHNIb3N0Ojpmb3JjZWRPbmx5S2V5d29y
ZCgpKSB7Ci0gICAgICAgIHNlbGVjdGVkSW5kZXggPSBvZmZJbmRleDsKLSAgICAgICAgdHJhY2tN
ZW51SXRlbVNlbGVjdGVkID0gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgbV92aWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UtPnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnModHJhY2tEaXNwbGF5
TmFtZXMsIHNlbGVjdGVkSW5kZXgpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPnNlbGVj
dExlZ2libGVNZWRpYU9wdGlvbihpbmRleCk7CiB9CiAKIGNvbnN0IFZlY3RvcjxBdG9taWNTdHJp
bmc+JiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5h
bWVzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPEF0b21pY1N0cmluZz4+
IHNFdmVudE5hbWVzOwogCi0gICAgaWYgKCFzRXZlbnROYW1lcy5nZXQoKS5zaXplKCkpIHsKLSAg
ICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5n
ZUV2ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5w
YXVzZUV2ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMo
KS5wbGF5RXZlbnQpOwotICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnROYW1l
cygpLnJhdGVjaGFuZ2VFdmVudCk7Ci0gICAgICAgIHNFdmVudE5hbWVzLmdldCgpLmFwcGVuZChl
dmVudE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCku
YXBwZW5kKGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMu
Z2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50KTsKKyAgICBpZiAoIXNF
dmVudE5hbWVzLmdldCgpLnNpemUoKSkKICAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5k
KGV2ZW50TmFtZXMoKS5yZXNpemVFdmVudCk7Ci0gICAgICAgIHNFdmVudE5hbWVzLmdldCgpLmFw
cGVuZChldmVudE5hbWVzKCkud2Via2l0Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVzc2No
YW5nZWRFdmVudCk7Ci0gICAgfQogICAgIHJldHVybiBzRXZlbnROYW1lcy5nZXQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZiYWZlMDFjZmEwNDQwY2E1YTM0NTM3OTNhYTc4OWE0Y2I4ZmYyOTYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5
ZXJDb250cm9sbGVyLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgIkFWS2l0
U1BJLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsOworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ7Cit9CisKK0BpbnRl
cmZhY2UgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiA6IE5TT2JqZWN0CitAcHJvcGVydHkgKHJl
dGFpbikgTlNTdHJpbmcgKmxvY2FsaXplZERpc3BsYXlOYW1lOworQGVuZAorCitAaW50ZXJmYWNl
IFdlYkFWUGxheWVyQ29udHJvbGxlciA6IE5TT2JqZWN0IHsKKyAgICBXZWJBVk1lZGlhU2VsZWN0
aW9uT3B0aW9uICpfY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb247CisgICAgV2ViQVZN
ZWRpYVNlbGVjdGlvbk9wdGlvbiAqX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb247
CisgICAgQk9PTCBfcGljdHVyZUluUGljdHVyZUludGVycnVwdGVkOworfQorCistICh2b2lkKXJl
c2V0U3RhdGU7CisKK0Bwcm9wZXJ0eSAocmV0YWluKSBBVlBsYXllckNvbnRyb2xsZXIqIHBsYXll
ckNvbnRyb2xsZXJQcm94eTsKK0Bwcm9wZXJ0eSAoYXNzaWduKSBXZWJDb3JlOjpXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbCogZGVsZWdhdGU7CitAcHJvcGVydHkgKGFzc2lnbikgV2ViQ29yZTo6V2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQqIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsK
KworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5TY2FuRm9yd2FyZDsKK0Bwcm9wZXJ0eSBC
T09MIGNhblNjYW5CYWNrd2FyZDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY2FuU2Vla1Rv
QmVnaW5uaW5nOworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5TZWVrVG9FbmQ7CisKK0Bw
cm9wZXJ0eSBCT09MIGNhblBsYXk7CitAcHJvcGVydHkgKGdldHRlcj1pc1BsYXlpbmcpIEJPT0wg
cGxheWluZzsKK0Bwcm9wZXJ0eSBCT09MIGNhblBhdXNlOworQHByb3BlcnR5IEJPT0wgY2FuVG9n
Z2xlUGxheWJhY2s7CitAcHJvcGVydHkgZG91YmxlIHJhdGU7CitAcHJvcGVydHkgQk9PTCBjYW5T
ZWVrOworQHByb3BlcnR5IE5TVGltZUludGVydmFsIGNvbnRlbnREdXJhdGlvbjsKK0Bwcm9wZXJ0
eSBDR1NpemUgY29udGVudERpbWVuc2lvbnM7CitAcHJvcGVydHkgQk9PTCBoYXNFbmFibGVkQXVk
aW87CitAcHJvcGVydHkgQk9PTCBoYXNFbmFibGVkVmlkZW87CitAcHJvcGVydHkgTlNUaW1lSW50
ZXJ2YWwgbWluVGltZTsKK0Bwcm9wZXJ0eSBOU1RpbWVJbnRlcnZhbCBtYXhUaW1lOworQHByb3Bl
cnR5IE5TVGltZUludGVydmFsIGNvbnRlbnREdXJhdGlvbldpdGhpbkVuZFRpbWVzOworQHByb3Bl
cnR5IChyZXRhaW4pIE5TQXJyYXkgKmxvYWRlZFRpbWVSYW5nZXM7CitAcHJvcGVydHkgQVZQbGF5
ZXJDb250cm9sbGVyU3RhdHVzIHN0YXR1czsKK0Bwcm9wZXJ0eSAocmV0YWluKSBBVlZhbHVlVGlt
aW5nICp0aW1pbmc7CitAcHJvcGVydHkgKHJldGFpbikgTlNBcnJheSAqc2Vla2FibGVUaW1lUmFu
Z2VzOworCitAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGhhc01lZGlhU2VsZWN0aW9uT3B0aW9u
czsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bnM7CitAcHJvcGVydHkgKHJldGFpbikgTlNBcnJheSAqYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bnM7CitAcHJvcGVydHkgKHJldGFpbikgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqY3VycmVu
dEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb247CitAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGhh
c0xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7CitAcHJvcGVydHkgKHJldGFpbikgTlNBcnJh
eSAqbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczsKK0Bwcm9wZXJ0eSAocmV0YWluKSBXZWJB
Vk1lZGlhU2VsZWN0aW9uT3B0aW9uICpjdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9u
OworCitAcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0ZXI9aXNQbGF5aW5nT25FeHRlcm5hbFNjcmVl
bikgQk9PTCBwbGF5aW5nT25FeHRlcm5hbFNjcmVlbjsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIGdl
dHRlcj1pc1BsYXlpbmdPblNlY29uZFNjcmVlbikgQk9PTCBwbGF5aW5nT25TZWNvbmRTY3JlZW47
CitAcHJvcGVydHkgKGdldHRlcj1pc0V4dGVybmFsUGxheWJhY2tBY3RpdmUpIEJPT0wgZXh0ZXJu
YWxQbGF5YmFja0FjdGl2ZTsKK0Bwcm9wZXJ0eSBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5hbFBs
YXliYWNrVHlwZSBleHRlcm5hbFBsYXliYWNrVHlwZTsKK0Bwcm9wZXJ0eSAocmV0YWluKSBOU1N0
cmluZyAqZXh0ZXJuYWxQbGF5YmFja0FpclBsYXlEZXZpY2VMb2NhbGl6ZWROYW1lOworQHByb3Bl
cnR5IEJPT0wgYWxsb3dzRXh0ZXJuYWxQbGF5YmFjazsKK0Bwcm9wZXJ0eSAoZ2V0dGVyPWlzUGlj
dHVyZUluUGljdHVyZVBvc3NpYmxlKSBCT09MIHBpY3R1cmVJblBpY3R1cmVQb3NzaWJsZTsKK0Bw
cm9wZXJ0eSAoZ2V0dGVyPWlzUGljdHVyZUluUGljdHVyZUludGVycnVwdGVkKSBCT09MIHBpY3R1
cmVJblBpY3R1cmVJbnRlcnJ1cHRlZDsKK0BlbmQKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQxY2YxODFhNGE3ZjI3Yjg5YjI2ODFkZjg4ODYyNGZkM2NiNGI0OTEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVy
Lm1tCkBAIC0wLDAgKzEsNDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldlYkFWUGxh
eWVyQ29udHJvbGxlci5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJBVktpdFNQ
SS5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiVGltZVJhbmdlcy5oIgorI2ltcG9y
dCAiV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaCIKKyNpbXBvcnQgIldlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsLmgiCisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZUaW1lLmg+CisjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW1w
b3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2ltcG9ydCAiQ29yZU1lZGlhU29mdExpbmsu
aCIKKworU09GVF9MSU5LX0ZSQU1FV09SSyhBVktpdCkKK1NPRlRfTElOS19DTEFTUyhBVktpdCwg
QVZQbGF5ZXJDb250cm9sbGVyKQorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQGltcGxl
bWVudGF0aW9uIFdlYkFWUGxheWVyQ29udHJvbGxlcgorCistIChpbnN0YW5jZXR5cGUpaW5pdAor
eworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gc2VsZjsK
KworICAgIGluaXRBVlBsYXllckNvbnRyb2xsZXIoKTsKKyAgICBzZWxmLnBsYXllckNvbnRyb2xs
ZXJQcm94eSA9IFtbYWxsb2NBVlBsYXllckNvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRdIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAg
W19wbGF5ZXJDb250cm9sbGVyUHJveHkgcmVsZWFzZV07CisgICAgW19sb2FkZWRUaW1lUmFuZ2Vz
IHJlbGVhc2VdOworICAgIFtfc2Vla2FibGVUaW1lUmFuZ2VzIHJlbGVhc2VdOworICAgIFtfdGlt
aW5nIHJlbGVhc2VdOworICAgIFtfYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMgcmVsZWFzZV07
CisgICAgW19sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zIHJlbGVhc2VdOworICAgIFtfY3Vy
cmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24gcmVsZWFzZV07CisgICAgW19jdXJyZW50TGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uIHJlbGVhc2VdOworICAgIFtzdXBlciBkZWFsbG9jXTsK
K30KKworLSAodm9pZClyZXNldFN0YXRlCit7CisgICAgc2VsZi5jb250ZW50RHVyYXRpb24gPSAw
OworICAgIHNlbGYubWF4VGltZSA9IDA7CisgICAgc2VsZi5jb250ZW50RHVyYXRpb25XaXRoaW5F
bmRUaW1lcyA9IDA7CisgICAgc2VsZi5sb2FkZWRUaW1lUmFuZ2VzID0gQFtdOworCisgICAgc2Vs
Zi5jYW5QbGF5ID0gTk87CisgICAgc2VsZi5jYW5QYXVzZSA9IE5POworICAgIHNlbGYuY2FuVG9n
Z2xlUGxheWJhY2sgPSBOTzsKKyAgICBzZWxmLmhhc0VuYWJsZWRBdWRpbyA9IE5POworICAgIHNl
bGYuY2FuU2VlayA9IE5POworICAgIHNlbGYubWluVGltZSA9IDA7CisgICAgc2VsZi5zdGF0dXMg
PSBBVlBsYXllckNvbnRyb2xsZXJTdGF0dXNVbmtub3duOworCisgICAgc2VsZi50aW1pbmcgPSBu
aWw7CisgICAgc2VsZi5yYXRlID0gMDsKKworICAgIHNlbGYuaGFzRW5hYmxlZFZpZGVvID0gTk87
CisgICAgc2VsZi5jb250ZW50RGltZW5zaW9ucyA9IENHU2l6ZU1ha2UoMCwgMCk7CisKKyAgICBz
ZWxmLnNlZWthYmxlVGltZVJhbmdlcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisKKyAgICBz
ZWxmLmNhblNjYW5CYWNrd2FyZCA9IE5POworCisgICAgc2VsZi5hdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9ucyA9IG5pbDsKKyAgICBzZWxmLmN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
ID0gbmlsOworCisgICAgc2VsZi5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zID0gbmlsOwor
ICAgIHNlbGYuY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsKK30KKwor
LSAoQVZQbGF5ZXIgKilwbGF5ZXIKK3sKKyAgICByZXR1cm4gbmlsOworfQorCistIChpZClmb3J3
YXJkaW5nVGFyZ2V0Rm9yU2VsZWN0b3I6KFNFTClzZWxlY3RvcgoreworICAgIFVOVVNFRF9QQVJB
TShzZWxlY3Rvcik7CisgICAgcmV0dXJuIHNlbGYucGxheWVyQ29udHJvbGxlclByb3h5OworfQor
CistICh2b2lkKXBsYXk6KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwor
ICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIHNlbGYuZGVsZWdh
dGUtPnBsYXkoKTsKK30KKworLSAodm9pZClwYXVzZTooaWQpc2VuZGVyCit7CisgICAgVU5VU0VE
X1BBUkFNKHNlbmRlcik7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAgICAgICByZXR1cm47
CisgICAgc2VsZi5kZWxlZ2F0ZS0+cGF1c2UoKTsKK30KKworLSAodm9pZCl0b2dnbGVQbGF5YmFj
azooaWQpc2VuZGVyCit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgaWYgKCFzZWxm
LmRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisgICAgc2VsZi5kZWxlZ2F0ZS0+dG9nZ2xlUGxh
eVN0YXRlKCk7Cit9CisKKy0gKHZvaWQpdG9nZ2xlUGxheWJhY2tFdmVuV2hlbkluQmFja2dyb3Vu
ZDooaWQpc2VuZGVyCit7CisgICAgW3NlbGYgdG9nZ2xlUGxheWJhY2s6c2VuZGVyXTsKK30KKwor
LSAoQk9PTClpc1BsYXlpbmcKK3sKKyAgICByZXR1cm4gW3NlbGYgcmF0ZV07Cit9CisKKy0gKHZv
aWQpc2V0UGxheWluZzooQk9PTClwbGF5aW5nCit7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKHBsYXlpbmcpCisgICAgICAgIHNlbGYuZGVsZWdhdGUt
PnBsYXkoKTsKKyAgICBlbHNlCisgICAgICAgIHNlbGYuZGVsZWdhdGUtPnBhdXNlKCk7Cit9CisK
KysgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdQbGF5aW5nCit7CisgICAgcmV0
dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAicmF0ZSJdOworfQorCistICh2b2lkKWJlZ2luU2Ny
dWJiaW5nOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKKyAgICBpZiAo
IXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBzZWxmLmRlbGVnYXRlLT5iZWdp
blNjcnViYmluZygpOworfQorCistICh2b2lkKWVuZFNjcnViYmluZzooaWQpc2VuZGVyCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAgICAg
ICByZXR1cm47CisgICAgc2VsZi5kZWxlZ2F0ZS0+ZW5kU2NydWJiaW5nKCk7Cit9CisKKy0gKHZv
aWQpc2Vla1RvVGltZTooTlNUaW1lSW50ZXJ2YWwpdGltZQoreworICAgIGlmICghc2VsZi5kZWxl
Z2F0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIHNlbGYuZGVsZWdhdGUtPmZhc3RTZWVrKHRpbWUp
OworfQorCistIChOU1RpbWVJbnRlcnZhbCljdXJyZW50VGltZVdpdGhpbkVuZFRpbWVzCit7Cisg
ICAgcmV0dXJuIHNlbGYudGltaW5nLmN1cnJlbnRWYWx1ZTsKK30KKworLSAodm9pZClzZXRDdXJy
ZW50VGltZVdpdGhpbkVuZFRpbWVzOihOU1RpbWVJbnRlcnZhbCljdXJyZW50VGltZVdpdGhpbkVu
ZFRpbWVzCit7CisgICAgW3NlbGYgc2Vla1RvVGltZTpjdXJyZW50VGltZVdpdGhpbkVuZFRpbWVz
XTsKK30KKworKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ0N1cnJlbnRUaW1l
V2l0aGluRW5kVGltZXMKK3sKKyAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3Q6QCJ0aW1p
bmciXTsKK30KKworLSAoQk9PTCloYXNMaXZlU3RyZWFtaW5nQ29udGVudAoreworICAgIGlmIChb
c2VsZiBzdGF0dXNdID09IEFWUGxheWVyQ29udHJvbGxlclN0YXR1c1JlYWR5VG9QbGF5KQorICAg
ICAgICByZXR1cm4gW3NlbGYgY29udGVudER1cmF0aW9uXSA9PSBzdGQ6Om51bWVyaWNfbGltaXRz
PGZsb2F0Pjo6aW5maW5pdHkoKTsKKyAgICByZXR1cm4gTk87Cit9CisKKysgKE5TU2V0ICopa2V5
UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdIYXNMaXZlU3RyZWFtaW5nQ29udGVudAoreworICAgIHJl
dHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdHM6QCJjb250ZW50RHVyYXRpb24iLCBAInN0YXR1cyIs
IG5pbF07Cit9CisKKy0gKHZvaWQpc2tpcEJhY2t3YXJkVGhpcnR5U2Vjb25kczooaWQpc2VuZGVy
Cit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgQk9PTCBpc1RpbWVXaXRoaW5TZWVr
YWJsZVRpbWVSYW5nZXMgPSBOTzsKKyAgICBDTVRpbWUgY3VycmVudFRpbWUgPSBDTVRpbWVNYWtl
V2l0aFNlY29uZHMoW1tzZWxmIHRpbWluZ10gY3VycmVudFZhbHVlXSwgMTAwMCk7CisgICAgQ01U
aW1lIHRoaXJ0eVNlY29uZHNCZWZvcmVDdXJyZW50VGltZSA9IENNVGltZVN1YnRyYWN0KGN1cnJl
bnRUaW1lLCBDTVRpbWVNYWtlKDMwLCAxKSk7CisKKyAgICBmb3IgKE5TVmFsdWUgKnNlZWthYmxl
VGltZVJhbmdlVmFsdWUgaW4gW3NlbGYgc2Vla2FibGVUaW1lUmFuZ2VzXSkgeworICAgICAgICBp
ZiAoQ01UaW1lUmFuZ2VDb250YWluc1RpbWUoW3NlZWthYmxlVGltZVJhbmdlVmFsdWUgQ01UaW1l
UmFuZ2VWYWx1ZV0sIHRoaXJ0eVNlY29uZHNCZWZvcmVDdXJyZW50VGltZSkpIHsKKyAgICAgICAg
ICAgIGlzVGltZVdpdGhpblNlZWthYmxlVGltZVJhbmdlcyA9IFlFUzsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGlzVGltZVdpdGhpblNlZWthYmxlVGlt
ZVJhbmdlcykKKyAgICAgICAgW3NlbGYgc2Vla1RvVGltZTpDTVRpbWVHZXRTZWNvbmRzKHRoaXJ0
eVNlY29uZHNCZWZvcmVDdXJyZW50VGltZSldOworfQorCistICh2b2lkKWdvdG9FbmRPZlNlZWth
YmxlUmFuZ2VzOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKKyAgICBO
U1RpbWVJbnRlcnZhbCB0aW1lQXRFbmRPZlNlZWthYmxlVGltZVJhbmdlcyA9IE5BTjsKKworICAg
IGZvciAoTlNWYWx1ZSAqc2Vla2FibGVUaW1lUmFuZ2VWYWx1ZSBpbiBbc2VsZiBzZWVrYWJsZVRp
bWVSYW5nZXNdKSB7CisgICAgICAgIENNVGltZVJhbmdlIHNlZWthYmxlVGltZVJhbmdlID0gW3Nl
ZWthYmxlVGltZVJhbmdlVmFsdWUgQ01UaW1lUmFuZ2VWYWx1ZV07CisgICAgICAgIE5TVGltZUlu
dGVydmFsIGVuZE9mU2Vla2FibGVUaW1lUmFuZ2UgPSBDTVRpbWVHZXRTZWNvbmRzKENNVGltZVJh
bmdlR2V0RW5kKHNlZWthYmxlVGltZVJhbmdlKSk7CisgICAgICAgIGlmIChpc25hbih0aW1lQXRF
bmRPZlNlZWthYmxlVGltZVJhbmdlcykgfHwgZW5kT2ZTZWVrYWJsZVRpbWVSYW5nZSA+IHRpbWVB
dEVuZE9mU2Vla2FibGVUaW1lUmFuZ2VzKQorICAgICAgICAgICAgdGltZUF0RW5kT2ZTZWVrYWJs
ZVRpbWVSYW5nZXMgPSBlbmRPZlNlZWthYmxlVGltZVJhbmdlOworICAgIH0KKworICAgIGlmICgh
aXNuYW4odGltZUF0RW5kT2ZTZWVrYWJsZVRpbWVSYW5nZXMpKQorICAgICAgICBbc2VsZiBzZWVr
VG9UaW1lOnRpbWVBdEVuZE9mU2Vla2FibGVUaW1lUmFuZ2VzXTsKK30KKworLSAoQk9PTCljYW5T
Y2FuRm9yd2FyZAoreworICAgIHJldHVybiBbc2VsZiBjYW5QbGF5XTsKK30KKworKyAoTlNTZXQg
KilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ0NhblNjYW5Gb3J3YXJkCit7CisgICAgcmV0dXJu
IFtOU1NldCBzZXRXaXRoT2JqZWN0OkAiY2FuUGxheSJdOworfQorCistICh2b2lkKWJlZ2luU2Nh
bm5pbmdGb3J3YXJkOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKKyAg
ICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBzZWxmLmRlbGVnYXRl
LT5iZWdpblNjYW5uaW5nRm9yd2FyZCgpOworfQorCistICh2b2lkKWVuZFNjYW5uaW5nRm9yd2Fy
ZDooaWQpc2VuZGVyCit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgaWYgKCFzZWxm
LmRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisgICAgc2VsZi5kZWxlZ2F0ZS0+ZW5kU2Nhbm5p
bmcoKTsKK30KKworLSAodm9pZCliZWdpblNjYW5uaW5nQmFja3dhcmQ6KGlkKXNlbmRlcgorewor
ICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAg
ICAgcmV0dXJuOworICAgIHNlbGYuZGVsZWdhdGUtPmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpOwor
fQorCistICh2b2lkKWVuZFNjYW5uaW5nQmFja3dhcmQ6KGlkKXNlbmRlcgoreworICAgIFVOVVNF
RF9QQVJBTShzZW5kZXIpOworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJu
OworICAgIHNlbGYuZGVsZWdhdGUtPmVuZFNjYW5uaW5nKCk7Cit9CisKKy0gKEJPT0wpY2FuU2Vl
a1RvQmVnaW5uaW5nCit7CisgICAgQ01UaW1lIG1pbmltdW1UaW1lID0ga0NNVGltZUluZGVmaW5p
dGU7CisKKyAgICBmb3IgKE5TVmFsdWUgKnZhbHVlIGluIFtzZWxmIHNlZWthYmxlVGltZVJhbmdl
c10pCisgICAgICAgIG1pbmltdW1UaW1lID0gQ01UaW1lTWluaW11bShbdmFsdWUgQ01UaW1lUmFu
Z2VWYWx1ZV0uc3RhcnQsIG1pbmltdW1UaW1lKTsKKworICAgIHJldHVybiBDTVRJTUVfSVNfTlVN
RVJJQyhtaW5pbXVtVGltZSk7Cit9CisKKysgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNBZmZl
Y3RpbmdDYW5TZWVrVG9CZWdpbm5pbmcKK3sKKyAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmpl
Y3Q6QCJzZWVrYWJsZVRpbWVSYW5nZXMiXTsKK30KKworLSAodm9pZClzZWVrVG9CZWdpbm5pbmc6
KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOworICAgIGlmICghc2VsZi5k
ZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIHNlbGYuZGVsZWdhdGUtPnNlZWtUb1RpbWUo
LUlORklOSVRZKTsKK30KKworLSAodm9pZClzZWVrQ2hhcHRlckJhY2t3YXJkOihpZClzZW5kZXIK
K3sKKyAgICBbc2VsZiBzZWVrVG9CZWdpbm5pbmc6c2VuZGVyXTsKK30KKworLSAoQk9PTCljYW5T
ZWVrVG9FbmQKK3sKKyAgICBDTVRpbWUgbWF4aW11bVRpbWUgPSBrQ01UaW1lSW5kZWZpbml0ZTsK
KworICAgIGZvciAoTlNWYWx1ZSAqdmFsdWUgaW4gW3NlbGYgc2Vla2FibGVUaW1lUmFuZ2VzXSkK
KyAgICAgICAgbWF4aW11bVRpbWUgPSBDTVRpbWVNYXhpbXVtKENNVGltZVJhbmdlR2V0RW5kKFt2
YWx1ZSBDTVRpbWVSYW5nZVZhbHVlXSksIG1heGltdW1UaW1lKTsKKworICAgIHJldHVybiBDTVRJ
TUVfSVNfTlVNRVJJQyhtYXhpbXVtVGltZSk7Cit9CisKKysgKE5TU2V0ICopa2V5UGF0aHNGb3JW
YWx1ZXNBZmZlY3RpbmdDYW5TZWVrVG9FbmQKK3sKKyAgICByZXR1cm4gW05TU2V0IHNldFdpdGhP
YmplY3Q6QCJzZWVrYWJsZVRpbWVSYW5nZXMiXTsKK30KKworLSAodm9pZClzZWVrVG9FbmQ6KGlk
KXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOworICAgIGlmICghc2VsZi5kZWxl
Z2F0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIHNlbGYuZGVsZWdhdGUtPnNlZWtUb1RpbWUoSU5G
SU5JVFkpOworfQorCistICh2b2lkKXNlZWtDaGFwdGVyRm9yd2FyZDooaWQpc2VuZGVyCit7Cisg
ICAgW3NlbGYgc2Vla1RvRW5kOnNlbmRlcl07Cit9CisKKy0gKEJPT0wpaGFzTWVkaWFTZWxlY3Rp
b25PcHRpb25zCit7CisgICAgcmV0dXJuIFtzZWxmIGhhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zXSB8fCBbc2VsZiBoYXNMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zXTsKK30KKworKyAo
TlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ0hhc01lZGlhU2VsZWN0aW9uT3B0aW9u
cworeworICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdHM6QCJoYXNBdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyIsIEAiaGFzTGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyIsIG5pbF07
Cit9CisKKy0gKEJPT0wpaGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMKK3sKKyAgICByZXR1
cm4gW1tzZWxmIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zXSBjb3VudF0gPiAxOworfQorCisr
IChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nSGFzQXVkaW9NZWRpYVNlbGVjdGlv
bk9wdGlvbnMKK3sKKyAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3Q6QCJhdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9ucyJdOworfQorCistIChCT09MKWhhc0xlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnMKK3sKKyAgICBjb25zdCBOU1VJbnRlZ2VyIG51bURlZmF1bHRMZWdpYmxlT3B0aW9u
cyA9IDI7CisgICAgcmV0dXJuIFtbc2VsZiBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zXSBj
b3VudF0gPiBudW1EZWZhdWx0TGVnaWJsZU9wdGlvbnM7Cit9CisKKysgKE5TU2V0ICopa2V5UGF0
aHNGb3JWYWx1ZXNBZmZlY3RpbmdIYXNMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zCit7Cisg
ICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0OkAibGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9ucyJdOworfQorCistIChXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVudEF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb24KK3sKKyAgICByZXR1cm4gX2N1cnJlbnRBdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9uOworfQorCistICh2b2lkKXNldEN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9uOihXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICopb3B0aW9uCit7CisgICAgaWYgKG9w
dGlvbiA9PSBfY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24pCisgICAgICAgIHJldHVy
bjsKKworICAgIFtfY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24gcmVsZWFzZV07Cisg
ICAgX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uID0gW29wdGlvbiByZXRhaW5dOwor
CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBOU0ludGVn
ZXIgaW5kZXggPSBOU05vdEZvdW5kOworCisgICAgaWYgKG9wdGlvbiAmJiBzZWxmLmF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zKQorICAgICAgICBpbmRleCA9IFtzZWxmLmF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zIGluZGV4T2ZPYmplY3Q6b3B0aW9uXTsKKworICAgIHNlbGYuZGVsZWdhdGUt
PnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oaW5kZXggIT0gTlNOb3RGb3VuZCA/IGluZGV4IDogVUlO
VDY0X01BWCk7Cit9CisKKy0gKFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKiljdXJyZW50TGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uCit7CisgICAgcmV0dXJuIF9jdXJyZW50TGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9uOworfQorCistICh2b2lkKXNldEN1cnJlbnRMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb246KFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKilvcHRpb24KK3sKKyAg
ICBpZiAob3B0aW9uID09IF9jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uKQorICAg
ICAgICByZXR1cm47CisKKyAgICBbX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24g
cmVsZWFzZV07CisgICAgX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gPSBbb3B0
aW9uIHJldGFpbl07CisKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsK
KworICAgIE5TSW50ZWdlciBpbmRleCA9IE5TTm90Rm91bmQ7CisKKyAgICBpZiAob3B0aW9uICYm
IHNlbGYubGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucykKKyAgICAgICAgaW5kZXggPSBbc2Vs
Zi5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zIGluZGV4T2ZPYmplY3Q6b3B0aW9uXTsKKwor
ICAgIHNlbGYuZGVsZWdhdGUtPnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihpbmRleCAhPSBOU05v
dEZvdW5kID8gaW5kZXggOiBVSU5UNjRfTUFYKTsKK30KKworLSAoQk9PTClpc1BsYXlpbmdPbkV4
dGVybmFsU2NyZWVuCit7CisgICAgcmV0dXJuIFtzZWxmIGlzRXh0ZXJuYWxQbGF5YmFja0FjdGl2
ZV0gfHwgW3NlbGYgaXNQbGF5aW5nT25TZWNvbmRTY3JlZW5dOworfQorCisrIChOU1NldCAqKWtl
eVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nUGxheWluZ09uRXh0ZXJuYWxTY3JlZW4KK3sKKyAgICBy
ZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3RzOkAiZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSIsIEAi
cGxheWluZ09uU2Vjb25kU2NyZWVuIiwgbmlsXTsKK30KKworLSAoQk9PTClpc1BpY3R1cmVJblBp
Y3R1cmVJbnRlcnJ1cHRlZAoreworICAgIHJldHVybiBfcGljdHVyZUluUGljdHVyZUludGVycnVw
dGVkOworfQorCistICh2b2lkKXNldFBpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZDooQk9PTClw
aWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQKK3sKKyAgICBpZiAoX3BpY3R1cmVJblBpY3R1cmVJ
bnRlcnJ1cHRlZCAhPSBwaWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQpIHsKKyAgICAgICAgX3Bp
Y3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZCA9IHBpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZDsK
KyAgICAgICAgaWYgKHBpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZCkKKyAgICAgICAgICAgIFtz
ZWxmIHNldFBsYXlpbmc6Tk9dOworICAgIH0KK30KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdl
YkFWTWVkaWFTZWxlY3Rpb25PcHRpb24KK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjZiYjUwMWJiODNjNGQ4
ZTJhYTU5NTQ2NjI3NmYwZDU3Yzg2ZWY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgKQEAgLTAs
MCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisKKyNpZm5kZWYgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXRfaAorI2RlZmluZSBX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdF9oCisKKyNpZiBQTEFURk9STShJT1MpCisK
KyNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudEVu
dW1zLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UuaCIKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPG9iamMvb2JqYy5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBXZWJBVlBsYXllckNvbnRy
b2xsZXI7CitPQkpDX0NMQVNTIEFWUGxheWVyVmlld0NvbnRyb2xsZXI7CitPQkpDX0NMQVNTIFVJ
Vmlld0NvbnRyb2xsZXI7CitPQkpDX0NMQVNTIFVJV2luZG93OworT0JKQ19DTEFTUyBVSVZpZXc7
CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3RyaW5nOworfQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw7CitjbGFz
cyBXZWJQbGF5YmFja1Nlc3Npb25DaGFuZ2VPYnNlcnZlcjsKKworY2xhc3MgV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQVZLaXRDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Q2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWRDaGFuZ2VkKGJvb2wpID0gMDsKK307CisKK2NsYXNz
IFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0CisgICAgOiBw
dWJsaWMgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlCisgICAgLCBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdD4geworCitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdD4gY3JlYXRlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0KCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2ViUGxheWJhY2tTZXNzaW9u
TW9kZWwoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwqKTsKKyAgICB2b2lkIHNldENsaWVudChXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdENsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0g
Y2xpZW50OyB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0TWVkaWFTdGF0ZSgpIG92
ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RHVyYXRpb24oZG91YmxlKSBvdmVy
cmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJy
ZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0QnVmZmVyZWRUaW1lKGRvdWJsZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGlt
ZVJhbmdlcyYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FuUGxheUZh
c3RSZXZlcnNlKGJvb2wpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9u
cywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0
cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVy
bmFsUGxheWJhY2tUYXJnZXRUeXBlLCBXVEY6OlN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKSBv
dmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkKGJvb2wpIG92ZXJyaWRlOworICAgIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlKCk7CisKKyAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xsZXIo
KSBjb25zdCB7IHJldHVybiBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7IH0KKworcHJvdGVjdGVk
OgorICAgIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KCk7
CisKKyAgICBSZXRhaW5QdHI8V2ViQVZQbGF5ZXJDb250cm9sbGVyPiBtX3BsYXllckNvbnRyb2xs
ZXI7CisgICAgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwqIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwg
eyBudWxscHRyIH07CisgICAgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXRDbGllbnQq
IG1fY2xpZW50IHsgbnVsbHB0cn07CisKKyAgICBib29sIG1fd2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQgeyB0cnVlIH07Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWRjYjgxMzRmNzcyNjZhNTEwYzRkNTg1
MGFlYzI4M2ZmZDc2OWU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tCkBAIC0wLDAgKzEsMjAy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0LmgiCisKKyNpZiBQTEFURk9STShJT1MpCisjaWYgSEFWRShBVktJVCkKKworI2ltcG9y
dCAiQVZLaXRTUEkuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIlRpbWVSYW5nZXMu
aCIKKyNpbXBvcnQgIldlYkFWUGxheWVyQ29udHJvbGxlci5oIgorI2ltcG9ydCAiV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWwuaCIKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlRpbWUuaD4KKyNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbXBv
cnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaW1wb3J0ICJDb3JlTWVkaWFTb2Z0TGluay5o
IgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKEFWS2l0KQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBB
VlZhbHVlVGltaW5nKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCgpCisgICAg
OiBtX3BsYXllckNvbnRyb2xsZXIoYWRvcHROUyhbW1dlYkFWUGxheWVyQ29udHJvbGxlciBhbGxv
Y10gaW5pdF0pKQoreworICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0UGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlOnRoaXNdOworfQorCitXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6
fldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KCkKK3sKKyAgICBXZWJBVlBsYXllckNv
bnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7Cisg
ICAgaWYgKHBsYXllckNvbnRyb2xsZXIgJiYgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXli
YWNrQWN0aXZlKQorICAgICAgICBzZXRFeHRlcm5hbFBsYXliYWNrKGZhbHNlLCBUYXJnZXRUeXBl
Tm9uZSwgIiIpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojpy
ZXNldE1lZGlhU3RhdGUoKQoreworICAgIFttX3BsYXllckNvbnRyb2xsZXIgcmVzZXRTdGF0ZV07
Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldFdlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKiBtb2RlbCkKK3sKKyAgICBt
X3BsYXliYWNrU2Vzc2lvbk1vZGVsID0gbW9kZWw7CisgICAgW21fcGxheWVyQ29udHJvbGxlciBz
ZXREZWxlZ2F0ZTptX3BsYXliYWNrU2Vzc2lvbk1vZGVsXTsKK30KKwordm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQorewor
ICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlciA9IG1fcGxheWVyQ29u
dHJvbGxlci5nZXQoKTsKKworICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI3MDE3IHVzZSBjb3JyZWN0IHZhbHVlcyBpbnN0ZWFkIG9mIGR1cmF0
aW9uIGZvciBhbGwgdGhlc2UKKyAgICBwbGF5ZXJDb250cm9sbGVyLmNvbnRlbnREdXJhdGlvbiA9
IGR1cmF0aW9uOworICAgIHBsYXllckNvbnRyb2xsZXIubWF4VGltZSA9IGR1cmF0aW9uOworICAg
IHBsYXllckNvbnRyb2xsZXIuY29udGVudER1cmF0aW9uV2l0aGluRW5kVGltZXMgPSBkdXJhdGlv
bjsKKworICAgIC8vIEZJWE1FOiB3ZSB0YWtlIHRoaXMgYXMgYW4gaW5kaWNhdGlvbiB0aGF0IHBs
YXliYWNrIGlzIHJlYWR5LgorICAgIHBsYXllckNvbnRyb2xsZXIuY2FuUGxheSA9IFlFUzsKKyAg
ICBwbGF5ZXJDb250cm9sbGVyLmNhblBhdXNlID0gWUVTOworICAgIHBsYXllckNvbnRyb2xsZXIu
Y2FuVG9nZ2xlUGxheWJhY2sgPSBZRVM7CisgICAgcGxheWVyQ29udHJvbGxlci5oYXNFbmFibGVk
QXVkaW8gPSBZRVM7CisgICAgcGxheWVyQ29udHJvbGxlci5jYW5TZWVrID0gWUVTOworICAgIHBs
YXllckNvbnRyb2xsZXIubWluVGltZSA9IDA7CisgICAgcGxheWVyQ29udHJvbGxlci5zdGF0dXMg
PSBBVlBsYXllckNvbnRyb2xsZXJTdGF0dXNSZWFkeVRvUGxheTsKK30KKwordm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRU
aW1lLCBkb3VibGUgYW5jaG9yVGltZSkKK3sKKyAgICBOU1RpbWVJbnRlcnZhbCBhbmNob3JUaW1l
U3RhbXAgPSAhW21fcGxheWVyQ29udHJvbGxlciByYXRlXSA/IE5BTiA6IGFuY2hvclRpbWU7Cisg
ICAgQVZWYWx1ZVRpbWluZyAqdGltaW5nID0gW2dldEFWVmFsdWVUaW1pbmdDbGFzcygpIHZhbHVl
VGltaW5nV2l0aEFuY2hvclZhbHVlOmN1cnJlbnRUaW1lCisgICAgICAgIGFuY2hvclRpbWVTdGFt
cDphbmNob3JUaW1lU3RhbXAgcmF0ZTowXTsKKworICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0
VGltaW5nOnRpbWluZ107Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQ6OnNldEJ1ZmZlcmVkVGltZShkb3VibGUgYnVmZmVyZWRUaW1lKQoreworICAgIFdlYkFWUGxh
eWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlciA9IG1fcGxheWVyQ29udHJvbGxlci5nZXQo
KTsKKyAgICBkb3VibGUgZHVyYXRpb24gPSBwbGF5ZXJDb250cm9sbGVyLmNvbnRlbnREdXJhdGlv
bjsKKyAgICBkb3VibGUgbm9ybWFsaXplZEJ1ZmZlcmVkVGltZTsKKyAgICBpZiAoIWR1cmF0aW9u
KQorICAgICAgICBub3JtYWxpemVkQnVmZmVyZWRUaW1lID0gMDsKKyAgICBlbHNlCisgICAgICAg
IG5vcm1hbGl6ZWRCdWZmZXJlZFRpbWUgPSBidWZmZXJlZFRpbWUgLyBkdXJhdGlvbjsKKyAgICBw
bGF5ZXJDb250cm9sbGVyLmxvYWRlZFRpbWVSYW5nZXMgPSBAW0AwLCBAKG5vcm1hbGl6ZWRCdWZm
ZXJlZFRpbWUpXTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6
c2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKQoreworICAgIFttX3Bs
YXllckNvbnRyb2xsZXIgc2V0UmF0ZTppc1BsYXlpbmcgPyBwbGF5YmFja1JhdGUgOiAwLl07Cit9
CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldFNlZWthYmxlUmFu
Z2VzKGNvbnN0IFRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCit7CisgICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiBzZWVrYWJsZVJhbmdlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdF0pOworICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZTsKKworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB0aW1lUmFuZ2VzLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAg
ZG91YmxlIHN0YXJ0ID0gdGltZVJhbmdlcy5zdGFydChpLCBleGNlcHRpb25Db2RlKTsKKyAgICAg
ICAgZG91YmxlIGVuZCA9IHRpbWVSYW5nZXMuZW5kKGksIGV4Y2VwdGlvbkNvZGUpOworCisgICAg
ICAgIENNVGltZVJhbmdlIHJhbmdlID0gQ01UaW1lUmFuZ2VNYWtlKENNVGltZU1ha2VXaXRoU2Vj
b25kcyhzdGFydCwgMTAwMCksIENNVGltZU1ha2VXaXRoU2Vjb25kcyhlbmQtc3RhcnQsIDEwMDAp
KTsKKyAgICAgICAgW3NlZWthYmxlUmFuZ2VzIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhD
TVRpbWVSYW5nZTpyYW5nZV1dOworICAgIH0KKworICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0
U2Vla2FibGVUaW1lUmFuZ2VzOnNlZWthYmxlUmFuZ2VzLmdldCgpXTsKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wg
Y2FuUGxheUZhc3RSZXZlcnNlKQoreworICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0Q2FuU2Nh
bkJhY2t3YXJkOmNhblBsYXlGYXN0UmV2ZXJzZV07Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8TlNN
dXRhYmxlQXJyYXk+IG1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b3B0aW9ucykKK3sKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6b3B0aW9ucy5z
aXplKCldKTsKKyAgICBmb3IgKGF1dG8mIG5hbWUgOiBvcHRpb25zKSB7CisgICAgICAgIFJldGFp
blB0cjxXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uPiB3ZWJPcHRpb24gPSBhZG9wdE5TKFtbV2Vi
QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiBhbGxvY10gaW5pdF0pOworICAgICAgICBbd2ViT3B0aW9u
IHNldExvY2FsaXplZERpc3BsYXlOYW1lOm5hbWVdOworICAgICAgICBbd2ViT3B0aW9ucyBhZGRP
YmplY3Q6d2ViT3B0aW9uLmdldCgpXTsKKyAgICB9CisgICAgcmV0dXJuIHdlYk9wdGlvbnM7Cit9
CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBz
ZWxlY3RlZEluZGV4KQoreworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9u
cyA9IG1lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zKTsKKyAgICBbbV9wbGF5ZXJDb250cm9s
bGVyIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOndlYk9wdGlvbnMuZ2V0KCldOworICAg
IGlmIChzZWxlY3RlZEluZGV4IDwgW3dlYk9wdGlvbnMgY291bnRdKQorICAgICAgICBbbV9wbGF5
ZXJDb250cm9sbGVyIHNldEN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOlt3ZWJPcHRp
b25zIG9iamVjdEF0SW5kZXg6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc2VsZWN0ZWRJbmRleCld
XTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0TGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWlu
dDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHdl
Yk9wdGlvbnMgPSBtZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucyk7CisgICAgW21fcGxheWVy
Q29udHJvbGxlciBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOndlYk9wdGlvbnMuZ2V0
KCldOworICAgIGlmIChzZWxlY3RlZEluZGV4IDwgW3dlYk9wdGlvbnMgY291bnRdKQorICAgICAg
ICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldEN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b246W3dlYk9wdGlvbnMgb2JqZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxl
Y3RlZEluZGV4KV1dOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0
OjpzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1Rhcmdl
dFR5cGUgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCit7CisgICAgQVZQ
bGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUgZXh0ZXJuYWxQbGF5YmFja1R5cGUg
PSBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZU5vbmU7CisgICAgaWYgKHRh
cmdldFR5cGUgPT0gVGFyZ2V0VHlwZUFpclBsYXkpCisgICAgICAgIGV4dGVybmFsUGxheWJhY2tU
eXBlID0gQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVBaXJQbGF5OworICAg
IGVsc2UgaWYgKHRhcmdldFR5cGUgPT0gVGFyZ2V0VHlwZVRWT3V0KQorICAgICAgICBleHRlcm5h
bFBsYXliYWNrVHlwZSA9IEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBlVFZP
dXQ7CisKKyAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSBtX3Bs
YXllckNvbnRyb2xsZXIuZ2V0KCk7CisgICAgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXli
YWNrQWlyUGxheURldmljZUxvY2FsaXplZE5hbWUgPSBsb2NhbGl6ZWREZXZpY2VOYW1lOworICAg
IHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja1R5cGUgPSBleHRlcm5hbFBsYXliYWNr
VHlwZTsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tBY3RpdmUgPSBlbmFi
bGVkOworCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZXh0ZXJuYWxQbGF5
YmFja0VuYWJsZWRDaGFuZ2VkKGVuYWJsZWQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRp
c2FibGVkKQoreworICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0QWxsb3dzRXh0ZXJuYWxQbGF5
YmFjazohZGlzYWJsZWRdOworfQorCitib29sIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFttX3BsYXllckNvbnRyb2xsZXIgYWxsb3dzRXh0ZXJuYWxQbGF5YmFja107Cit9CisKK3ZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmludmFsaWRhdGUoKQoreworICAgIG1f
cGxheWJhY2tTZXNzaW9uTW9kZWwgPSBuaWw7Cit9CisKK30KKworI2VuZGlmIC8vIEhBVkUoQVZL
SVQpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
bW0KaW5kZXggOTlkMWMwN2VkYzdjOWI5ZTAyZmRmYmM2ZmI3YjdmMjE1NjU5MzVkYy4uNDUxMWE0
NjUwZWMxZDI5MWJiY2JkMTZkYzJhZjU1ZWM3N2EzMTVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckFWS2l0Lm1tCkBAIC0zMyw2ICszMyw4IEBACiAjaW1wb3J0ICJRdWFydHpDb3JlU1BJLmgi
CiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCAiVGltZVJhbmdlcy5oIgorI2ltcG9y
dCAiV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaCIKKyNpbXBvcnQgIldlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmgiCiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3Jl
ZW5DaGFuZ2VPYnNlcnZlci5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lmgi
CkBAIC01NTQsMTQgKzU1NiwxNCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpzZXRVcEZ1bGxzY3JlZW4oSFRNTFZpZGVvRWxlbWVudCYgdmlkZQogICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzLCB2
aWV3UmVmLCBtb2RlXSB7CiAgICAgICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogCi0gICAgICAg
IG1faW50ZXJmYWNlID0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNyZWF0ZSgp
OworICAgICAgICBtX2ludGVyZmFjZSA9IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpjcmVhdGUoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmNyZWF0ZSgpLmdldCgp
KTsKICAgICAgICAgbV9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyKHRoaXMpOwogICAgICAgICBtX2ludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWwodGhpcyk7CiAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuVmlldyA9IGFkb3B0TlMoW1tnZXRV
SVZpZXdDbGFzcygpIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIAogICAgICAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CiAgICAg
ICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhpcywgdGhpcywgdmlld1JlZiwgbW9kZV0gewotICAg
ICAgICAgICAgbV9tb2RlbCA9IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojpj
cmVhdGUoKTsKKyAgICAgICAgICAgIG1fbW9kZWwgPSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudDo6Y3JlYXRlKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojpj
cmVhdGUoKS5nZXQoKSk7CiAgICAgICAgICAgICBtX21vZGVsLT5zZXRXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UodGhpcyk7CiAgICAgICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0VsZW1lbnQo
bV92aWRlb0VsZW1lbnQuZ2V0KCkpOwogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdC5oCmluZGV4IGMwNzQwMGExODUwOGI0M2EzYjk0MjBlYWRmZWViZThiYjgzOTlhZWIuLjc4
N2I4NTBjODlhNzg2NDMyNThiNzBiOTQ5ZTIwOTgyMWJmMDg0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVu
dEVudW1zLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
CisjaW5jbHVkZSAiV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaCIKICNpbmNsdWRl
ICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgog
I2luY2x1ZGUgPG9iamMvb2JqYy5oPgpAQCAtNDAsMTQgKzQxLDE1IEBACiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotT0JKQ19DTEFTUyBXZWJB
VlBsYXllckNvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIEFWUGxheWVyVmlld0NvbnRyb2xsZXI7CiBP
QkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFVJV2luZG93OwogT0JKQ19D
TEFTUyBVSVZpZXc7CiBPQkpDX0NMQVNTIENBTGF5ZXI7CitPQkpDX0NMQVNTIFdlYkFWUGxheWVy
Q29udHJvbGxlcjsKIE9CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJMYXllclZpZXc7CiBPQkpDX0NMQVNT
IFdlYkFWUGxheWVyTGF5ZXI7CitPQkpDX0NMQVNTIFdlYkFWUGxheWVyVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZTsKIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBTdHJpbmc7CkBAIC01OCwzMiArNjAs
MjkgQEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOwogY2xh
c3MgV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI7CiAgICAgCi1jbGFzcyBXRUJDT1JF
X0VYUE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdAorY2xhc3MgV0VCQ09SRV9F
WFBPUlQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQgZmluYWwKICAgICA6IHB1Ymxp
YyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UKKyAgICAsIHB1YmxpYyBXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VBVktpdENsaWVudAogICAgICwgcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHsKIAogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IGNyZWF0ZSgpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgp
KTsKLSAgICB9CisgICAgc3RhdGljIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dD4gY3JlYXRlKFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Jik7CiAgICAgdmlydHVh
bCB+V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlcihXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciopOwogICAgIAotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5j
aG9yVGltZSkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCdWZmZXJlZFRp
bWUoZG91YmxlIGJ1ZmZlcmVkVGltZSkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8s
IGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYpIG92ZXJyaWRlOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wpIG92ZXJyaWRl
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMo
Y29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90
IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RXh0
ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBX
VEY6OlN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpIG92ZXJyaWRl
OwotCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldE1lZGlhU3RhdGUoKSBmaW5hbDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgZmluYWw7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJs
ZSBhbmNob3JUaW1lKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEJ1ZmZlcmVk
VGltZShkb3VibGUpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmF0ZShib29s
IGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxv
YXQgaGVpZ2h0KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlZWthYmxlUmFu
Z2VzKGNvbnN0IFRpbWVSYW5nZXMmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENhblBsYXlGYXN0UmV2ZXJzZShib29sKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4m
IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBmaW5hbDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRl
cm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgV1RGOjpTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZChib29sKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0
dXBGdWxsc2NyZWVuKFVJVmlldyYsIGNvbnN0IEludFJlY3QmIGluaXRpYWxSZWN0LCBVSVZpZXcg
KiwgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGFsbG93
c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjayk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIGVudGVyRnVsbHNjcmVlbigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBl
eGl0RnVsbHNjcmVlbihjb25zdCBJbnRSZWN0JiBmaW5hbFJlY3QpOwpAQCAtMTAwLDYgKzk5LDcg
QEAgcHVibGljOgogICAgICAgICBQaWN0dXJlSW5QaWN0dXJlU3RhcnRlZAogICAgIH07CiAKKyAg
ICBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCogbW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVv
RnVsbHNjcmVlbk1vZGVsOyB9CiAgICAgYm9vbCBzaG91bGRFeGl0RnVsbHNjcmVlbldpdGhSZWFz
b24oRXhpdEZ1bGxTY3JlZW5SZWFzb24pOwogICAgIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgYm9v
bCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2soKSBjb25zdCB7IHJldHVybiBtX2FsbG93
c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjazsgfQpAQCAtMTIxLDEzICsxMjEsMTYgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSBtb2RlKSBjb25zdCB7IHJldHVybiBtX21vZGUgPT0gbW9kZTsgfQogCiBwcm90ZWN0ZWQ6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdChXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCYpOwogICAgIHZvaWQgYmVnaW5TZXNzaW9uKCk7
CiAgICAgdm9pZCBlbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKICAgICB2b2lkIGVudGVyRnVsbHNj
cmVlblN0YW5kYXJkKCk7CiAgICAgdm9pZCB3YXRjaGRvZ1RpbWVyRmlyZWQoKTsKKyAgICB2b2lk
IGV4dGVybmFsUGxheWJhY2tFbmFibGVkQ2hhbmdlZChib29sKSBmaW5hbDsKKyAgICBXZWJBVlBs
YXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xsZXIoKSBjb25zdDsKIAotICAgIFJldGFpblB0
cjxXZWJBVlBsYXllckNvbnRyb2xsZXI+IG1fcGxheWVyQ29udHJvbGxlcjsKKyAgICBSZWY8V2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ+IG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
OworICAgIFJldGFpblB0cjxXZWJBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGU+IG1fcGxh
eWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8QVZQbGF5ZXJWaWV3Q29u
dHJvbGxlcj4gbV9wbGF5ZXJWaWV3Q29udHJvbGxlcjsKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbCogbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCB7IG51bGxwdHIgfTsKICAgICBXZWJWaWRlb0Z1
bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciogbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgeyBudWxs
cHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggNjlkYmRmODE0ZDg0Mzgx
Mzg2MzkwNTFlMjhiODlkMDliYzNhOTNiZS4uMDAxZjgzYWEyYjYzMmUwZGRkMzlhZmYxNGE0ZDA5
YmQ2YzMzZDFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtMzcsNyArMzcs
OSBAQAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmgiCiAjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJXZWJBVlBsYXllckNvbnRy
b2xsZXIuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQgIldl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgiCiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlci5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwu
aCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlRpbWUuaD4KQEAgLTYxLDkgKzYzLDcgQEAgU09G
VF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFz
cGVjdEZpbGwsIE5TU3RyaW5nICoKIAogU09GVF9MSU5LX0ZSQU1FV09SSyhBVktpdCkKIFNPRlRf
TElOS19DTEFTUyhBVktpdCwgQVZQaWN0dXJlSW5QaWN0dXJlQ29udHJvbGxlcikKLVNPRlRfTElO
S19DTEFTUyhBVktpdCwgQVZQbGF5ZXJDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTKEFWS2l0
LCBBVlBsYXllclZpZXdDb250cm9sbGVyKQotU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlZhbHVl
VGltaW5nKQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBfX0FWUGxheWVyTGF5ZXJWaWV3KQogCiBT
T0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQpAQCAtMTI1LDEyNiArMTI1LDIyIEBAIHN0YXRpYyBj
b25zdCBkb3VibGUgRGVmYXVsdFdhdGNoZG9nVGltZXJJbnRlcnZhbCA9IDE7CiAKIEBjbGFzcyBX
ZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uOwogCi1AaW50ZXJmYWNlIFdlYkFWUGxheWVyQ29udHJv
bGxlciA6IE5TT2JqZWN0IDxBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGVfV2ViS2l0T25s
eT4gewotICAgIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKl9jdXJyZW50QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbjsKLSAgICBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpfY3VycmVudExl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjsKLSAgICBCT09MIF9waWN0dXJlSW5QaWN0dXJlSW50
ZXJydXB0ZWQ7CitAaW50ZXJmYWNlIFdlYkFWUGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA6
IE5TT2JqZWN0IDxBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGVfV2ViS2l0T25seT4gewor
ICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gX2Z1bGxzY3JlZW5J
bnRlcmZhY2U7CiB9Ci0KLS0gKHZvaWQpcmVzZXRTdGF0ZTsKLQotQHByb3BlcnR5IChyZXRhaW4p
IEFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlclByb3h5OwotQHByb3BlcnR5IChh
c3NpZ24pIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBkZWxlZ2F0ZTsKIEBwcm9wZXJ0eSAoYXNz
aWduKSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCogZnVsbHNjcmVlbkludGVyZmFj
ZTsKLQotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5TY2FuRm9yd2FyZDsKLUBwcm9wZXJ0
eSBCT09MIGNhblNjYW5CYWNrd2FyZDsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY2FuU2Vl
a1RvQmVnaW5uaW5nOwotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5TZWVrVG9FbmQ7Ci0K
LUBwcm9wZXJ0eSBCT09MIGNhblBsYXk7Ci1AcHJvcGVydHkgKGdldHRlcj1pc1BsYXlpbmcpIEJP
T0wgcGxheWluZzsKLUBwcm9wZXJ0eSBCT09MIGNhblBhdXNlOwotQHByb3BlcnR5IEJPT0wgY2Fu
VG9nZ2xlUGxheWJhY2s7Ci1AcHJvcGVydHkgZG91YmxlIHJhdGU7Ci1AcHJvcGVydHkgQk9PTCBj
YW5TZWVrOwotQHByb3BlcnR5IE5TVGltZUludGVydmFsIGNvbnRlbnREdXJhdGlvbjsKLUBwcm9w
ZXJ0eSBOU1NpemUgY29udGVudERpbWVuc2lvbnM7Ci1AcHJvcGVydHkgQk9PTCBoYXNFbmFibGVk
QXVkaW87Ci1AcHJvcGVydHkgQk9PTCBoYXNFbmFibGVkVmlkZW87Ci1AcHJvcGVydHkgTlNUaW1l
SW50ZXJ2YWwgbWluVGltZTsKLUBwcm9wZXJ0eSBOU1RpbWVJbnRlcnZhbCBtYXhUaW1lOwotQHBy
b3BlcnR5IE5TVGltZUludGVydmFsIGNvbnRlbnREdXJhdGlvbldpdGhpbkVuZFRpbWVzOwotQHBy
b3BlcnR5IChyZXRhaW4pIE5TQXJyYXkgKmxvYWRlZFRpbWVSYW5nZXM7Ci1AcHJvcGVydHkgQVZQ
bGF5ZXJDb250cm9sbGVyU3RhdHVzIHN0YXR1czsKLUBwcm9wZXJ0eSAocmV0YWluKSBBVlZhbHVl
VGltaW5nICp0aW1pbmc7Ci1AcHJvcGVydHkgKHJldGFpbikgTlNBcnJheSAqc2Vla2FibGVUaW1l
UmFuZ2VzOwotCi1AcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGhhc01lZGlhU2VsZWN0aW9uT3B0
aW9uczsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnM7Ci1AcHJvcGVydHkgKHJldGFpbikgTlNBcnJheSAqYXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnM7Ci1AcHJvcGVydHkgKHJldGFpbikgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqY3Vy
cmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb247Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBCT09M
IGhhc0xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7Ci1AcHJvcGVydHkgKHJldGFpbikgTlNB
cnJheSAqbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczsKLUBwcm9wZXJ0eSAocmV0YWluKSBX
ZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpjdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9uOwotCi1AcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0ZXI9aXNQbGF5aW5nT25FeHRlcm5hbFNj
cmVlbikgQk9PTCBwbGF5aW5nT25FeHRlcm5hbFNjcmVlbjsKLUBwcm9wZXJ0eSAocmVhZG9ubHks
IGdldHRlcj1pc1BsYXlpbmdPblNlY29uZFNjcmVlbikgQk9PTCBwbGF5aW5nT25TZWNvbmRTY3Jl
ZW47Ci1AcHJvcGVydHkgKGdldHRlcj1pc0V4dGVybmFsUGxheWJhY2tBY3RpdmUpIEJPT0wgZXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZTsKLUBwcm9wZXJ0eSBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5h
bFBsYXliYWNrVHlwZSBleHRlcm5hbFBsYXliYWNrVHlwZTsKLUBwcm9wZXJ0eSAocmV0YWluKSBO
U1N0cmluZyAqZXh0ZXJuYWxQbGF5YmFja0FpclBsYXlEZXZpY2VMb2NhbGl6ZWROYW1lOwotQHBy
b3BlcnR5IEJPT0wgYWxsb3dzRXh0ZXJuYWxQbGF5YmFjazsKLQogLSAoQk9PTClwbGF5ZXJWaWV3
Q29udHJvbGxlcjooQVZQbGF5ZXJWaWV3Q29udHJvbGxlciAqKXBsYXllclZpZXdDb250cm9sbGVy
IHNob3VsZEV4aXRGdWxsU2NyZWVuV2l0aFJlYXNvbjooQVZQbGF5ZXJWaWV3Q29udHJvbGxlckV4
aXRGdWxsU2NyZWVuUmVhc29uKXJlYXNvbjsKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdlYkFW
UGxheWVyQ29udHJvbGxlcgotCi0tIChpbnN0YW5jZXR5cGUpaW5pdAotewotICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAgICByZXR1cm4gc2VsZjsKLSAgICAKLSAgICBfcGlj
dHVyZUluUGljdHVyZUludGVycnVwdGVkID0gTk87Ci0gICAgaW5pdEFWUGxheWVyQ29udHJvbGxl
cigpOwotICAgIHNlbGYucGxheWVyQ29udHJvbGxlclByb3h5ID0gW1thbGxvY0FWUGxheWVyQ29u
dHJvbGxlckluc3RhbmNlKCkgaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIHJldHVybiBzZWxmOwot
fQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbX3BsYXllckNvbnRyb2xsZXJQcm94eSByZWxl
YXNlXTsKLSAgICBbX2xvYWRlZFRpbWVSYW5nZXMgcmVsZWFzZV07Ci0gICAgW19zZWVrYWJsZVRp
bWVSYW5nZXMgcmVsZWFzZV07Ci0gICAgW190aW1pbmcgcmVsZWFzZV07Ci0gICAgW19hdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9ucyByZWxlYXNlXTsKLSAgICBbX2xlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnMgcmVsZWFzZV07Ci0gICAgW19jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
biByZWxlYXNlXTsKLSAgICBbX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gcmVs
ZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKXJlc2V0U3RhdGUKK0Bp
bXBsZW1lbnRhdGlvbiBXZWJBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUKKy0gKFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KilmdWxsc2NyZWVuSW50ZXJmYWNlCiB7Ci0gICAg
c2VsZi5jb250ZW50RHVyYXRpb24gPSAwOwotICAgIHNlbGYubWF4VGltZSA9IDA7Ci0gICAgc2Vs
Zi5jb250ZW50RHVyYXRpb25XaXRoaW5FbmRUaW1lcyA9IDA7Ci0gICAgc2VsZi5sb2FkZWRUaW1l
UmFuZ2VzID0gQFtdOwotICAgIAotICAgIHNlbGYuY2FuUGxheSA9IE5POwotICAgIHNlbGYuY2Fu
UGF1c2UgPSBOTzsKLSAgICBzZWxmLmNhblRvZ2dsZVBsYXliYWNrID0gTk87Ci0gICAgc2VsZi5o
YXNFbmFibGVkQXVkaW8gPSBOTzsKLSAgICBzZWxmLmNhblNlZWsgPSBOTzsKLSAgICBzZWxmLm1p
blRpbWUgPSAwOwotICAgIHNlbGYuc3RhdHVzID0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzVW5r
bm93bjsKLSAgICAKLSAgICBzZWxmLnRpbWluZyA9IG5pbDsKLSAgICBzZWxmLnJhdGUgPSAwOwot
ICAgIAotICAgIHNlbGYuaGFzRW5hYmxlZFZpZGVvID0gTk87Ci0gICAgc2VsZi5jb250ZW50RGlt
ZW5zaW9ucyA9IENHU2l6ZU1ha2UoMCwgMCk7Ci0gICAgCi0gICAgc2VsZi5zZWVrYWJsZVRpbWVS
YW5nZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwotICAgIAotICAgIHNlbGYuY2FuU2NhbkJh
Y2t3YXJkID0gTk87Ci0gICAgCi0gICAgc2VsZi5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyA9
IG5pbDsKLSAgICBzZWxmLmN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uID0gbmlsOwot
ICAgIAotICAgIHNlbGYubGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IG5pbDsKLSAgICBz
ZWxmLmN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gPSBuaWw7Ci19Ci0KLS0gKEFW
UGxheWVyICopIHBsYXllcgotewotICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIF9mdWxsc2Ny
ZWVuSW50ZXJmYWNlLmdldCgpOwogfQogCi0tIChpZClmb3J3YXJkaW5nVGFyZ2V0Rm9yU2VsZWN0
b3I6KFNFTClzZWxlY3RvcgorLSAodm9pZClzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOihXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCopZnVsbHNjcmVlbkludGVyZmFjZQogewotICAgIFVO
VVNFRF9QQVJBTShzZWxlY3Rvcik7Ci0gICAgcmV0dXJuIHNlbGYucGxheWVyQ29udHJvbGxlclBy
b3h5OworICAgIF9mdWxsc2NyZWVuSW50ZXJmYWNlID0gZnVsbHNjcmVlbkludGVyZmFjZTsKIH0K
IAogLSAodm9pZClwbGF5ZXJWaWV3Q29udHJvbGxlcldpbGxTdGFydFBpY3R1cmVJblBpY3R1cmU6
KEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKilwbGF5ZXJWaWV3Q29udHJvbGxlcgpAQCAtMzA1LDM1
OCArMjAxLDEyIEBAIC0gKHZvaWQpcGxheWVyVmlld0NvbnRyb2xsZXI6KEFWUGxheWVyVmlld0Nv
bnRyb2xsZXIgKilwbGF5ZXJWaWV3Q29udHJvbGxlciByZXN0CiAgICAgVU5VU0VEX1BBUkFNKHBs
YXllclZpZXdDb250cm9sbGVyKTsKICAgICBzZWxmLmZ1bGxzY3JlZW5JbnRlcmZhY2UtPnByZXBh
cmVGb3JQaWN0dXJlSW5QaWN0dXJlU3RvcFdpdGhDb21wbGV0aW9uSGFuZGxlcihjb21wbGV0aW9u
SGFuZGxlcik7CiB9Ci0KLS0gKHZvaWQpcGxheTooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BB
UkFNKHNlbmRlcik7Ci0gICAgaWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0g
ICAgc2VsZi5kZWxlZ2F0ZS0+cGxheSgpOwotfQotCi0tICh2b2lkKXBhdXNlOihpZClzZW5kZXIK
LXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCi0g
ICAgICAgIHJldHVybjsKLSAgICBzZWxmLmRlbGVnYXRlLT5wYXVzZSgpOwotfQotCi0tICh2b2lk
KXRvZ2dsZVBsYXliYWNrOihpZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsK
LSAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBzZWxmLmRlbGVn
YXRlLT50b2dnbGVQbGF5U3RhdGUoKTsKLX0KLQotLSAodm9pZCl0b2dnbGVQbGF5YmFja0V2ZW5X
aGVuSW5CYWNrZ3JvdW5kOihpZClzZW5kZXIKLXsKLSAgICBbc2VsZiB0b2dnbGVQbGF5YmFjazpz
ZW5kZXJdOwotfQotCi0tIChCT09MKWlzUGxheWluZwotewotICAgIHJldHVybiBbc2VsZiByYXRl
XSAhPSAwOwotfQotCi0tICh2b2lkKXNldFBsYXlpbmc6KEJPT0wpcGxheWluZwotewotICAgIGlm
ICghc2VsZi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChwbGF5aW5nKQotICAg
ICAgICBzZWxmLmRlbGVnYXRlLT5wbGF5KCk7Ci0gICAgZWxzZQotICAgICAgICBzZWxmLmRlbGVn
YXRlLT5wYXVzZSgpOwotfQotCi0rIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5n
UGxheWluZwotewotICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdDpAInJhdGUiXTsKLX0K
LQotLSAodm9pZCliZWdpblNjcnViYmluZzooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFN
KHNlbmRlcik7Ci0gICAgaWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAg
c2VsZi5kZWxlZ2F0ZS0+YmVnaW5TY3J1YmJpbmcoKTsKLX0KLQotLSAodm9pZCllbmRTY3J1YmJp
bmc6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIGlmICghc2Vs
Zi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNlbGYuZGVsZWdhdGUtPmVuZFNjcnVi
YmluZygpOwotfQotCi0tICh2b2lkKXNlZWtUb1RpbWU6KE5TVGltZUludGVydmFsKXRpbWUKLXsK
LSAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBzZWxmLmRlbGVn
YXRlLT5mYXN0U2Vlayh0aW1lKTsKLX0KLQotLSAoTlNUaW1lSW50ZXJ2YWwpY3VycmVudFRpbWVX
aXRoaW5FbmRUaW1lcwotewotICAgIHJldHVybiBzZWxmLnRpbWluZy5jdXJyZW50VmFsdWU7Ci19
Ci0KLS0gKHZvaWQpc2V0Q3VycmVudFRpbWVXaXRoaW5FbmRUaW1lczooTlNUaW1lSW50ZXJ2YWwp
Y3VycmVudFRpbWVXaXRoaW5FbmRUaW1lcwotewotICAgIFtzZWxmIHNlZWtUb1RpbWU6Y3VycmVu
dFRpbWVXaXRoaW5FbmRUaW1lc107Ci19Ci0KLSsgKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1ZXNB
ZmZlY3RpbmdDdXJyZW50VGltZVdpdGhpbkVuZFRpbWVzCi17Ci0gICAgcmV0dXJuIFtOU1NldCBz
ZXRXaXRoT2JqZWN0OkAidGltaW5nIl07Ci19Ci0KLS0gKEJPT0wpaGFzTGl2ZVN0cmVhbWluZ0Nv
bnRlbnQKLXsKLSAgICBpZiAoW3NlbGYgc3RhdHVzXSA9PSBBVlBsYXllckNvbnRyb2xsZXJTdGF0
dXNSZWFkeVRvUGxheSkKLSAgICAgICAgcmV0dXJuIFtzZWxmIGNvbnRlbnREdXJhdGlvbl0gPT0g
c3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7Ci0gICAgcmV0dXJuIE5POwot
fQotCi0rIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nSGFzTGl2ZVN0cmVhbWlu
Z0NvbnRlbnQKLXsKLSAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3RzOkAiY29udGVudER1
cmF0aW9uIiwgQCJzdGF0dXMiLCBuaWxdOwotfQotCi0tICh2b2lkKXNraXBCYWNrd2FyZFRoaXJ0
eVNlY29uZHM6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIEJP
T0wgaXNUaW1lV2l0aGluU2Vla2FibGVUaW1lUmFuZ2VzID0gTk87Ci0gICAgQ01UaW1lIGN1cnJl
bnRUaW1lID0gQ01UaW1lTWFrZVdpdGhTZWNvbmRzKFtbc2VsZiB0aW1pbmddIGN1cnJlbnRWYWx1
ZV0sIDEwMDApOwotICAgIENNVGltZSB0aGlydHlTZWNvbmRzQmVmb3JlQ3VycmVudFRpbWUgPSBD
TVRpbWVTdWJ0cmFjdChjdXJyZW50VGltZSwgQ01UaW1lTWFrZSgzMCwgMSkpOwotICAgIAotICAg
IGZvciAoTlNWYWx1ZSAqc2Vla2FibGVUaW1lUmFuZ2VWYWx1ZSBpbiBbc2VsZiBzZWVrYWJsZVRp
bWVSYW5nZXNdKSB7Ci0gICAgICAgIGlmIChDTVRpbWVSYW5nZUNvbnRhaW5zVGltZShbc2Vla2Fi
bGVUaW1lUmFuZ2VWYWx1ZSBDTVRpbWVSYW5nZVZhbHVlXSwgdGhpcnR5U2Vjb25kc0JlZm9yZUN1
cnJlbnRUaW1lKSkgewotICAgICAgICAgICAgaXNUaW1lV2l0aGluU2Vla2FibGVUaW1lUmFuZ2Vz
ID0gWUVTOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAg
aWYgKGlzVGltZVdpdGhpblNlZWthYmxlVGltZVJhbmdlcykKLSAgICAgICAgW3NlbGYgc2Vla1Rv
VGltZTpDTVRpbWVHZXRTZWNvbmRzKHRoaXJ0eVNlY29uZHNCZWZvcmVDdXJyZW50VGltZSldOwot
fQotCi0tICh2b2lkKWdvdG9FbmRPZlNlZWthYmxlUmFuZ2VzOihpZClzZW5kZXIKLXsKLSAgICBV
TlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBOU1RpbWVJbnRlcnZhbCB0aW1lQXRFbmRPZlNlZWth
YmxlVGltZVJhbmdlcyA9IE5BTjsKLSAgICAKLSAgICBmb3IgKE5TVmFsdWUgKnNlZWthYmxlVGlt
ZVJhbmdlVmFsdWUgaW4gW3NlbGYgc2Vla2FibGVUaW1lUmFuZ2VzXSkgewotICAgICAgICBDTVRp
bWVSYW5nZSBzZWVrYWJsZVRpbWVSYW5nZSA9IFtzZWVrYWJsZVRpbWVSYW5nZVZhbHVlIENNVGlt
ZVJhbmdlVmFsdWVdOwotICAgICAgICBOU1RpbWVJbnRlcnZhbCBlbmRPZlNlZWthYmxlVGltZVJh
bmdlID0gQ01UaW1lR2V0U2Vjb25kcyhDTVRpbWVSYW5nZUdldEVuZChzZWVrYWJsZVRpbWVSYW5n
ZSkpOwotICAgICAgICBpZiAoaXNuYW4odGltZUF0RW5kT2ZTZWVrYWJsZVRpbWVSYW5nZXMpIHx8
IGVuZE9mU2Vla2FibGVUaW1lUmFuZ2UgPiB0aW1lQXRFbmRPZlNlZWthYmxlVGltZVJhbmdlcykK
LSAgICAgICAgICAgIHRpbWVBdEVuZE9mU2Vla2FibGVUaW1lUmFuZ2VzID0gZW5kT2ZTZWVrYWJs
ZVRpbWVSYW5nZTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKCFpc25hbih0aW1lQXRFbmRPZlNlZWth
YmxlVGltZVJhbmdlcykpCi0gICAgICAgIFtzZWxmIHNlZWtUb1RpbWU6dGltZUF0RW5kT2ZTZWVr
YWJsZVRpbWVSYW5nZXNdOwotfQotCi0tIChCT09MKWNhblNjYW5Gb3J3YXJkCi17Ci0gICAgcmV0
dXJuIFtzZWxmIGNhblBsYXldOwotfQotCi0rIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZm
ZWN0aW5nQ2FuU2NhbkZvcndhcmQKLXsKLSAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3Q6
QCJjYW5QbGF5Il07Ci19Ci0KLS0gKHZvaWQpYmVnaW5TY2FubmluZ0ZvcndhcmQ6KGlkKXNlbmRl
cgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkK
LSAgICAgICAgcmV0dXJuOwotICAgIHNlbGYuZGVsZWdhdGUtPmJlZ2luU2Nhbm5pbmdGb3J3YXJk
KCk7Ci19Ci0KLS0gKHZvaWQpZW5kU2Nhbm5pbmdGb3J3YXJkOihpZClzZW5kZXIKLXsKLSAgICBV
TlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCi0gICAgICAgIHJl
dHVybjsKLSAgICBzZWxmLmRlbGVnYXRlLT5lbmRTY2FubmluZygpOwotfQotCi0tICh2b2lkKWJl
Z2luU2Nhbm5pbmdCYWNrd2FyZDooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRl
cik7Ci0gICAgaWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgc2VsZi5k
ZWxlZ2F0ZS0+YmVnaW5TY2FubmluZ0JhY2t3YXJkKCk7Ci19Ci0KLS0gKHZvaWQpZW5kU2Nhbm5p
bmdCYWNrd2FyZDooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAg
aWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgc2VsZi5kZWxlZ2F0ZS0+
ZW5kU2Nhbm5pbmcoKTsKLX0KLQotLSAoQk9PTCljYW5TZWVrVG9CZWdpbm5pbmcKLXsKLSAgICBD
TVRpbWUgbWluaW11bVRpbWUgPSBrQ01UaW1lSW5kZWZpbml0ZTsKLQotICAgIGZvciAoTlNWYWx1
ZSAqdmFsdWUgaW4gW3NlbGYgc2Vla2FibGVUaW1lUmFuZ2VzXSkKLSAgICAgICAgbWluaW11bVRp
bWUgPSBDTVRpbWVNaW5pbXVtKFt2YWx1ZSBDTVRpbWVSYW5nZVZhbHVlXS5zdGFydCwgbWluaW11
bVRpbWUpOwotCi0gICAgcmV0dXJuIENNVElNRV9JU19OVU1FUklDKG1pbmltdW1UaW1lKTsKLX0K
LQotKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ0NhblNlZWtUb0JlZ2lubmlu
ZwotewotICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdDpAInNlZWthYmxlVGltZVJhbmdl
cyJdOwotfQotCi0tICh2b2lkKXNlZWtUb0JlZ2lubmluZzooaWQpc2VuZGVyCi17Ci0gICAgVU5V
U0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgaWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1
cm47Ci0gICAgc2VsZi5kZWxlZ2F0ZS0+c2Vla1RvVGltZSgtSU5GSU5JVFkpOwotfQotCi0tICh2
b2lkKXNlZWtDaGFwdGVyQmFja3dhcmQ6KGlkKXNlbmRlcgotewotICAgIFtzZWxmIHNlZWtUb0Jl
Z2lubmluZzpzZW5kZXJdOwotfQotCi0tIChCT09MKWNhblNlZWtUb0VuZAotewotICAgIENNVGlt
ZSBtYXhpbXVtVGltZSA9IGtDTVRpbWVJbmRlZmluaXRlOwotCi0gICAgZm9yIChOU1ZhbHVlICp2
YWx1ZSBpbiBbc2VsZiBzZWVrYWJsZVRpbWVSYW5nZXNdKQotICAgICAgICBtYXhpbXVtVGltZSA9
IENNVGltZU1heGltdW0oQ01UaW1lUmFuZ2VHZXRFbmQoW3ZhbHVlIENNVGltZVJhbmdlVmFsdWVd
KSwgbWF4aW11bVRpbWUpOwotCi0gICAgcmV0dXJuIENNVElNRV9JU19OVU1FUklDKG1heGltdW1U
aW1lKTsKLX0KLQotKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ0NhblNlZWtU
b0VuZAotewotICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdDpAInNlZWthYmxlVGltZVJh
bmdlcyJdOwotfQotCi0tICh2b2lkKXNlZWtUb0VuZDooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VE
X1BBUkFNKHNlbmRlcik7Ci0gICAgaWYgKCFzZWxmLmRlbGVnYXRlKQotICAgICAgICByZXR1cm47
Ci0gICAgc2VsZi5kZWxlZ2F0ZS0+c2Vla1RvVGltZShJTkZJTklUWSk7Ci19Ci0KLS0gKHZvaWQp
c2Vla0NoYXB0ZXJGb3J3YXJkOihpZClzZW5kZXIKLXsKLSAgICBbc2VsZiBzZWVrVG9FbmQ6c2Vu
ZGVyXTsKLX0KLQotLSAoQk9PTCloYXNNZWRpYVNlbGVjdGlvbk9wdGlvbnMKLXsKLSAgICByZXR1
cm4gW3NlbGYgaGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNdIHx8IFtzZWxmIGhhc0xlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNdOwotfQotCi0rIChOU1NldCAqKWtleVBhdGhzRm9yVmFs
dWVzQWZmZWN0aW5nSGFzTWVkaWFTZWxlY3Rpb25PcHRpb25zCi17Ci0gICAgcmV0dXJuIFtOU1Nl
dCBzZXRXaXRoT2JqZWN0czpAImhhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zIiwgQCJoYXNM
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zIiwgbmlsXTsKLX0KLQotLSAoQk9PTCloYXNBdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9ucwotewotICAgIHJldHVybiBbW3NlbGYgYXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnNdIGNvdW50XSA+IDE7Ci19Ci0KLSsgKE5TU2V0ICopa2V5UGF0aHNGb3JW
YWx1ZXNBZmZlY3RpbmdIYXNBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucwotewotICAgIHJldHVy
biBbTlNTZXQgc2V0V2l0aE9iamVjdDpAImF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zIl07Ci19
Ci0KLS0gKEJPT0wpaGFzTGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucwotewotICAgIGNvbnN0
IE5TVUludGVnZXIgbnVtRGVmYXVsdExlZ2libGVPcHRpb25zID0gMjsKLSAgICByZXR1cm4gW1tz
ZWxmIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNdIGNvdW50XSA+IG51bURlZmF1bHRMZWdp
YmxlT3B0aW9uczsKLX0KLQotKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ0hh
c0xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMKLXsKLSAgICByZXR1cm4gW05TU2V0IHNldFdp
dGhPYmplY3Q6QCJsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zIl07Ci19Ci0KLS0gKFdlYkFW
TWVkaWFTZWxlY3Rpb25PcHRpb24gKiljdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbgot
ewotICAgIHJldHVybiBfY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb247Ci19Ci0KLS0g
KHZvaWQpc2V0Q3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb246KFdlYkFWTWVkaWFTZWxl
Y3Rpb25PcHRpb24gKilvcHRpb24KLXsKLSAgICBpZiAob3B0aW9uID09IF9jdXJyZW50QXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbikKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFtfY3VycmVu
dEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24gcmVsZWFzZV07Ci0gICAgX2N1cnJlbnRBdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9uID0gW29wdGlvbiByZXRhaW5dOwotICAgIAotICAgIGlmICghc2Vs
Zi5kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIE5TSW50ZWdlciBpbmRleCA9
IE5TTm90Rm91bmQ7Ci0gICAgCi0gICAgaWYgKG9wdGlvbiAmJiBzZWxmLmF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKQotICAgICAgICBpbmRleCA9IFtzZWxmLmF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zIGluZGV4T2ZPYmplY3Q6b3B0aW9uXTsKLSAgICAKLSAgICBzZWxmLmRlbGVnYXRlLT5z
ZWxlY3RBdWRpb01lZGlhT3B0aW9uKGluZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2
NF9NQVgpOwotfQotCi0tIChXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVudExlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbgotewotICAgIHJldHVybiBfY3VycmVudExlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbjsKLX0KLQotLSAodm9pZClzZXRDdXJyZW50TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9uOihXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICopb3B0aW9uCi17Ci0gICAg
aWYgKG9wdGlvbiA9PSBfY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbikKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIFtfY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
biByZWxlYXNlXTsKLSAgICBfY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbiA9IFtv
cHRpb24gcmV0YWluXTsKLSAgICAKLSAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBOU0ludGVnZXIgaW5kZXggPSBOU05vdEZvdW5kOwotICAgIAotICAg
IGlmIChvcHRpb24gJiYgc2VsZi5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKQotICAgICAg
ICBpbmRleCA9IFtzZWxmLmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgaW5kZXhPZk9iamVj
dDpvcHRpb25dOwotICAgIAotICAgIHNlbGYuZGVsZWdhdGUtPnNlbGVjdExlZ2libGVNZWRpYU9w
dGlvbihpbmRleCAhPSBOU05vdEZvdW5kID8gaW5kZXggOiBVSU5UNjRfTUFYKTsKLX0KLQotLSAo
Qk9PTClpc1BsYXlpbmdPbkV4dGVybmFsU2NyZWVuCi17Ci0gICAgcmV0dXJuIFtzZWxmIGlzRXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZV0gfHwgW3NlbGYgaXNQbGF5aW5nT25TZWNvbmRTY3JlZW5dOwot
fQotCi0rIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nUGxheWluZ09uRXh0ZXJu
YWxTY3JlZW4KLXsKLSAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3RzOkAiZXh0ZXJuYWxQ
bGF5YmFja0FjdGl2ZSIsIEAicGxheWluZ09uU2Vjb25kU2NyZWVuIiwgbmlsXTsKLX0KLQotLSAo
Qk9PTClpc1BpY3R1cmVJblBpY3R1cmVQb3NzaWJsZQotewotICAgIHJldHVybiBzZWxmLmZ1bGxz
Y3JlZW5JbnRlcmZhY2UtPmFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjaygpOwotfQotCi0t
IChCT09MKWlzUGljdHVyZUluUGljdHVyZUludGVycnVwdGVkCi17Ci0gICAgcmV0dXJuIF9waWN0
dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ7Ci19Ci0KLS0gKHZvaWQpc2V0UGljdHVyZUluUGljdHVy
ZUludGVycnVwdGVkOihCT09MKXBpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZAotewotICAgIGlm
IChfcGljdHVyZUluUGljdHVyZUludGVycnVwdGVkICE9IHBpY3R1cmVJblBpY3R1cmVJbnRlcnJ1
cHRlZCkgewotICAgICAgICBfcGljdHVyZUluUGljdHVyZUludGVycnVwdGVkID0gcGljdHVyZUlu
UGljdHVyZUludGVycnVwdGVkOwotICAgICAgICBpZiAocGljdHVyZUluUGljdHVyZUludGVycnVw
dGVkKQotICAgICAgICAgICAgW3NlbGYgc2V0UGxheWluZzpOT107Ci0gICAgfQotfQotCi1AZW5k
Ci0KLUBpbnRlcmZhY2UgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiA6IE5TT2JqZWN0Ci1AcHJv
cGVydHkgKHJldGFpbikgTlNTdHJpbmcgKmxvY2FsaXplZERpc3BsYXlOYW1lOwotQGVuZAotCi1A
aW1wbGVtZW50YXRpb24gV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbgogQGVuZAogCiBAaW50ZXJm
YWNlIFdlYkFWUGxheWVyTGF5ZXIgOiBDQUxheWVyCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0
YWluKSBOU1N0cmluZyAqdmlkZW9HcmF2aXR5OwogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRl
cj1pc1JlYWR5Rm9yRGlzcGxheSkgQk9PTCByZWFkeUZvckRpc3BsYXk7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgYXNzaWduKSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCogZnVsbHNj
cmVlbkludGVyZmFjZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIEFWUGxheWVyQ29u
dHJvbGxlciAqcGxheWVyQ29udHJvbGxlcjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4p
IENBTGF5ZXIgKnZpZGVvU3VibGF5ZXI7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgbnVs
bGFibGUpIE5TRGljdGlvbmFyeSAqcGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOwpAQCAtNjY1LDYgKzIx
NSw3IEBAIEBwcm9wZXJ0eSBDR1JlY3QgbW9kZWxWaWRlb0xheWVyRnJhbWU7CiBAZW5kCiAKIEBp
bXBsZW1lbnRhdGlvbiBXZWJBVlBsYXllckxheWVyIHsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ+IF9mdWxsc2NyZWVuSW50ZXJmYWNlOwogICAgIFJldGFpblB0
cjxXZWJBVlBsYXllckNvbnRyb2xsZXI+IF9hdlBsYXllckNvbnRyb2xsZXI7CiAgICAgUmV0YWlu
UHRyPENBTGF5ZXI+IF92aWRlb1N1YmxheWVyOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gX3Zp
ZGVvR3Jhdml0eTsKQEAgLTY4Niw2ICsyMzcsMTYgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1
cGVyIGRlYWxsb2NdOwogfQogCistIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCop
ZnVsbHNjcmVlbkludGVyZmFjZQoreworICAgIHJldHVybiBfZnVsbHNjcmVlbkludGVyZmFjZS5n
ZXQoKTsKK30KKworLSAodm9pZClzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOihXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdCopZnVsbHNjcmVlbkludGVyZmFjZQoreworICAgIF9mdWxsc2Ny
ZWVuSW50ZXJmYWNlID0gZnVsbHNjcmVlbkludGVyZmFjZTsKK30KKwogLSAoQVZQbGF5ZXJDb250
cm9sbGVyICopcGxheWVyQ29udHJvbGxlcgogewogICAgIHJldHVybiAoQVZQbGF5ZXJDb250cm9s
bGVyICopX2F2UGxheWVyQ29udHJvbGxlci5nZXQoKTsKQEAgLTczMyw3ICsyOTQsOCBAQCAtICh2
b2lkKWxheW91dFN1YmxheWVycwogICAgIH0gZWxzZSBpZiAoW2dldEFWTGF5ZXJWaWRlb0dyYXZp
dHlSZXNpemVBc3BlY3RGaWxsKCkgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkg
ewogICAgICAgICBzb3VyY2VWaWRlb0ZyYW1lID0gc21hbGxlc3RSZWN0V2l0aEFzcGVjdFJhdGlv
QXJvdW5kUmVjdCh2aWRlb0FzcGVjdFJhdGlvLCBzZWxmLm1vZGVsVmlkZW9MYXllckZyYW1lKTsK
ICAgICAgICAgc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSA9IENHUmVjdE1ha2UoMCwgMCwgc291
cmNlVmlkZW9GcmFtZS53aWR0aCgpLCBzb3VyY2VWaWRlb0ZyYW1lLmhlaWdodCgpKTsKLSAgICAg
ICAgW19hdlBsYXllckNvbnRyb2xsZXIgZGVsZWdhdGVdLT5zZXRWaWRlb0xheWVyRnJhbWUoc2Vs
Zi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSk7CisgICAgICAgIEFTU0VSVChmdWxsc2NyZWVuSW50ZXJm
YWNlLT5tb2RlbCgpKTsKKyAgICAgICAgX2Z1bGxzY3JlZW5JbnRlcmZhY2UtPm1vZGVsKCktPnNl
dFZpZGVvTGF5ZXJGcmFtZShzZWxmLm1vZGVsVmlkZW9MYXllckZyYW1lKTsKICAgICAgICAgdGFy
Z2V0VmlkZW9GcmFtZSA9IHNtYWxsZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0Fyb3VuZFJlY3Qodmlk
ZW9Bc3BlY3RSYXRpbywgc2VsZi5ib3VuZHMpOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTc2NSw3ICszMjcsOCBAQCAtICh2b2lkKXJlc29sdmVCb3VuZHMK
ICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOwogICAgIAogICAgIHNl
bGYubW9kZWxWaWRlb0xheWVyRnJhbWUgPSBbc2VsZiBib3VuZHNdOwotICAgIFtfYXZQbGF5ZXJD
b250cm9sbGVyIGRlbGVnYXRlXS0+c2V0VmlkZW9MYXllckZyYW1lKHNlbGYubW9kZWxWaWRlb0xh
eWVyRnJhbWUpOworICAgIEFTU0VSVChmdWxsc2NyZWVuSW50ZXJmYWNlLT5tb2RlbCgpKTsKKyAg
ICBfZnVsbHNjcmVlbkludGVyZmFjZS0+bW9kZWwoKS0+c2V0VmlkZW9MYXllckZyYW1lKHNlbGYu
bW9kZWxWaWRlb0xheWVyRnJhbWUpOwogICAgIFsoVUlWaWV3ICopW192aWRlb1N1YmxheWVyIGRl
bGVnYXRlXSBzZXRUcmFuc2Zvcm06Q0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eV07CiAgICAgCiAg
ICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKQEAgLTc4OCw3ICszNTEsOCBAQCAtICh2b2lkKXNl
dFZpZGVvR3Jhdml0eTooTlNTdHJpbmcgKil2aWRlb0dyYXZpdHkKICAgICBlbHNlCiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIAotICAgIFtfYXZQbGF5ZXJDb250cm9sbGVyIGRl
bGVnYXRlXS0+c2V0VmlkZW9MYXllckdyYXZpdHkoZ3Jhdml0eSk7CisgICAgQVNTRVJUKGZ1bGxz
Y3JlZW5JbnRlcmZhY2UtPm1vZGVsKCkpOworICAgIF9mdWxsc2NyZWVuSW50ZXJmYWNlLT5tb2Rl
bCgpLT5zZXRWaWRlb0xheWVyR3Jhdml0eShncmF2aXR5KTsKIH0KIAogLSAoTlNTdHJpbmcgKil2
aWRlb0dyYXZpdHkKQEAgLTk1NCwzNSArNTE4LDQwIEBAIHN0YXRpYyBDbGFzcyBnZXRXZWJBVlBs
YXllckxheWVyVmlld0NsYXNzKCkKICAgICByZXR1cm4gdGhlQ2xhc3M7CiB9CiAKLVdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dCgpCi0gICAgOiBtX3BsYXllckNvbnRyb2xsZXIoYWRvcHROUyhbW1dlYkFWUGxheWVyQ29udHJv
bGxlciBhbGxvY10gaW5pdF0pKQorUmVmPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
PiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y3JlYXRlKFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0JiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCit7CisgICAgUmVm
PFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBpbnRlcmZhY2UgPSBhZG9wdFJlZigq
bmV3IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KHBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZSkpOworICAgIFtpbnRlcmZhY2UtPm1fcGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBz
ZXRGdWxsc2NyZWVuSW50ZXJmYWNlOmludGVyZmFjZS5wdHIoKV07CisgICAgcmV0dXJuIGludGVy
ZmFjZTsKK30KKworV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OldlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0KFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0JiBw
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCisgICAgOiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZShwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCisgICAgLCBtX3BsYXllclZpZXdDb250cm9sbGVy
RGVsZWdhdGUoYWRvcHROUyhbW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pKQogICAgICwgbV93YXRjaGRvZ1RpbWVyKCp0aGlzLCAmV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OndhdGNoZG9nVGltZXJGaXJlZCkKIHsKLSAgICBbbV9wbGF5ZXJD
b250cm9sbGVyIHNldEZ1bGxzY3JlZW5JbnRlcmZhY2U6dGhpc107CiB9CiAKIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0Ojp+V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQo
KQogewotICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlciA9IG1fcGxh
eWVyQ29udHJvbGxlci5nZXQoKTsKKyAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNv
bnRyb2xsZXIgPSB0aGlzLT5wbGF5ZXJDb250cm9sbGVyKCk7CiAgICAgaWYgKHBsYXllckNvbnRy
b2xsZXIgJiYgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrQWN0aXZlKQogICAgICAg
ICBzZXRFeHRlcm5hbFBsYXliYWNrKGZhbHNlLCBUYXJnZXRUeXBlTm9uZSwgIiIpOwogfQogCitX
ZWJBVlBsYXllckNvbnRyb2xsZXIgKldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpw
bGF5ZXJDb250cm9sbGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UtPnBsYXllckNvbnRyb2xsZXIoKTsKK30KKwogdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6cmVzZXRNZWRpYVN0YXRlKCkKIHsKLSAgICBpZiAoIW1fcGxheWVy
Q29udHJvbGxlcikgewotICAgICAgICBtX3BsYXllckNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIFttX3BsYXllckNvbnRy
b2xsZXIgc2V0RGVsZWdhdGU6bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbF07Ci0gICAgICAgIFttX3Bs
YXllckNvbnRyb2xsZXIgc2V0RnVsbHNjcmVlbkludGVyZmFjZTp0aGlzXTsKLSAgICAgICAgCi0g
ICAgfSBlbHNlCi0gICAgICAgIFttX3BsYXllckNvbnRyb2xsZXIgcmVzZXRTdGF0ZV07CisgICAg
bV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnJlc2V0TWVkaWFTdGF0ZSgpOwogfQogCiB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCogbW9kZWwpCiB7CiAgICAgbV92aWRlb0Z1bGxz
Y3JlZW5Nb2RlbCA9IG1vZGVsOwotICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0RGVsZWdhdGU6
bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbF07CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKFdlYlZpZGVv
RnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKiBvYnNlcnZlcikKQEAgLTk5Miw0NyArNTYxLDIyIEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFdlYlZpZGVvRnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyKFdlYlZpCiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKIHsKLSAgICBXZWJBVlBsYXll
ckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7
Ci0KLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNzAxNyB1c2UgY29ycmVjdCB2YWx1ZXMgaW5zdGVhZCBvZiBkdXJhdGlvbiBmb3IgYWxsIHRo
ZXNlCi0gICAgcGxheWVyQ29udHJvbGxlci5jb250ZW50RHVyYXRpb24gPSBkdXJhdGlvbjsKLSAg
ICBwbGF5ZXJDb250cm9sbGVyLm1heFRpbWUgPSBkdXJhdGlvbjsKLSAgICBwbGF5ZXJDb250cm9s
bGVyLmNvbnRlbnREdXJhdGlvbldpdGhpbkVuZFRpbWVzID0gZHVyYXRpb247Ci0KLSAgICAvLyBG
SVhNRTogd2UgdGFrZSB0aGlzIGFzIGFuIGluZGljYXRpb24gdGhhdCBwbGF5YmFjayBpcyByZWFk
eS4KLSAgICBwbGF5ZXJDb250cm9sbGVyLmNhblBsYXkgPSBZRVM7Ci0gICAgcGxheWVyQ29udHJv
bGxlci5jYW5QYXVzZSA9IFlFUzsKLSAgICBwbGF5ZXJDb250cm9sbGVyLmNhblRvZ2dsZVBsYXli
YWNrID0gWUVTOwotICAgIHBsYXllckNvbnRyb2xsZXIuaGFzRW5hYmxlZEF1ZGlvID0gWUVTOwot
ICAgIHBsYXllckNvbnRyb2xsZXIuY2FuU2VlayA9IFlFUzsKLSAgICBwbGF5ZXJDb250cm9sbGVy
Lm1pblRpbWUgPSAwOwotICAgIHBsYXllckNvbnRyb2xsZXIuc3RhdHVzID0gQVZQbGF5ZXJDb250
cm9sbGVyU3RhdHVzUmVhZHlUb1BsYXk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Ut
PnNldER1cmF0aW9uKGR1cmF0aW9uKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5j
aG9yVGltZSkKIHsKLSAgICBOU1RpbWVJbnRlcnZhbCBhbmNob3JUaW1lU3RhbXAgPSAhW21fcGxh
eWVyQ29udHJvbGxlciByYXRlXSA/IE5BTiA6IGFuY2hvclRpbWU7Ci0gICAgQVZWYWx1ZVRpbWlu
ZyAqdGltaW5nID0gW2dldEFWVmFsdWVUaW1pbmdDbGFzcygpIHZhbHVlVGltaW5nV2l0aEFuY2hv
clZhbHVlOmN1cnJlbnRUaW1lCi0gICAgICAgIGFuY2hvclRpbWVTdGFtcDphbmNob3JUaW1lU3Rh
bXAgcmF0ZTowXTsKLSAgICAKLSAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldFRpbWluZzp0aW1p
bmddOworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDdXJyZW50VGltZShjdXJy
ZW50VGltZSwgYW5jaG9yVGltZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OnNldEJ1ZmZlcmVkVGltZShkb3VibGUgYnVmZmVyZWRUaW1lKQogewotICAgIFdl
YkFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlciA9IG1fcGxheWVyQ29udHJvbGxl
ci5nZXQoKTsKLSAgICBkb3VibGUgZHVyYXRpb24gPSBwbGF5ZXJDb250cm9sbGVyLmNvbnRlbnRE
dXJhdGlvbjsKLSAgICBkb3VibGUgbm9ybWFsaXplZEJ1ZmZlcmVkVGltZTsKLSAgICBpZiAoIWR1
cmF0aW9uKQotICAgICAgICBub3JtYWxpemVkQnVmZmVyZWRUaW1lID0gMDsKLSAgICBlbHNlCi0g
ICAgICAgIG5vcm1hbGl6ZWRCdWZmZXJlZFRpbWUgPSBidWZmZXJlZFRpbWUgLyBkdXJhdGlvbjsK
LSAgICBwbGF5ZXJDb250cm9sbGVyLmxvYWRlZFRpbWVSYW5nZXMgPSBAW0AwLCBAKG5vcm1hbGl6
ZWRCdWZmZXJlZFRpbWUpXTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0QnVm
ZmVyZWRUaW1lKGJ1ZmZlcmVkVGltZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OnNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkK
IHsKLSAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldFJhdGU6aXNQbGF5aW5nID8gcGxheWJhY2tS
YXRlIDogMC5dOworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRSYXRlKGlzUGxh
eWluZywgcGxheWJhY2tSYXRlKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6c2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQpCkBAIC0xMDQwLDggKzU4NCw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3
CiAgICAgV2ViQVZQbGF5ZXJMYXllciAqcGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAq
KVttX3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07CiAKICAgICBbcGxheWVyTGF5ZXIgc2V0
VmlkZW9EaW1lbnNpb25zOkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCldOwotICAgIFttX3BsYXll
ckNvbnRyb2xsZXIgc2V0SGFzRW5hYmxlZFZpZGVvOmhhc1ZpZGVvXTsKLSAgICBbbV9wbGF5ZXJD
b250cm9sbGVyIHNldENvbnRlbnREaW1lbnNpb25zOkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCld
OworICAgIFtwbGF5ZXJDb250cm9sbGVyKCkgc2V0SGFzRW5hYmxlZFZpZGVvOmhhc1ZpZGVvXTsK
KyAgICBbcGxheWVyQ29udHJvbGxlcigpIHNldENvbnRlbnREaW1lbnNpb25zOkNHU2l6ZU1ha2Uo
d2lkdGgsIGhlaWdodCldOwogICAgIFttX3BsYXllckxheWVyVmlldyBzZXROZWVkc0xheW91dF07
CiAKICAgICBXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKnBpcFZpZXcgPSAo
V2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3ICopW21fcGxheWVyTGF5ZXJWaWV3
IHBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXddOwpAQCAtMTA1Miw3NSArNTk2LDQyIEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFZpZGVvRGltZW5zaW9u
cyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OnNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5nZXMmIHRpbWVSYW5nZXMp
CiB7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBzZWVrYWJsZVJhbmdlcyA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIEV4Y2VwdGlvbkNvZGUgZXhj
ZXB0aW9uQ29kZTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aW1lUmFuZ2VzLmxl
bmd0aCgpOyBpKyspIHsKLSAgICAgICAgZG91YmxlIHN0YXJ0ID0gdGltZVJhbmdlcy5zdGFydChp
LCBleGNlcHRpb25Db2RlKTsKLSAgICAgICAgZG91YmxlIGVuZCA9IHRpbWVSYW5nZXMuZW5kKGks
IGV4Y2VwdGlvbkNvZGUpOwotICAgICAgICAKLSAgICAgICAgQ01UaW1lUmFuZ2UgcmFuZ2UgPSBD
TVRpbWVSYW5nZU1ha2UoQ01UaW1lTWFrZVdpdGhTZWNvbmRzKHN0YXJ0LCAxMDAwKSwgQ01UaW1l
TWFrZVdpdGhTZWNvbmRzKGVuZC1zdGFydCwgMTAwMCkpOwotICAgICAgICBbc2Vla2FibGVSYW5n
ZXMgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aENNVGltZVJhbmdlOnJhbmdlXV07Ci0gICAg
fQotICAgIAotICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2VzOnNl
ZWthYmxlUmFuZ2VzLmdldCgpXTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0
U2Vla2FibGVSYW5nZXModGltZVJhbmdlcyk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIGNhblBsYXlGYXN0UmV2
ZXJzZSkKIHsKLSAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldENhblNjYW5CYWNrd2FyZDpjYW5Q
bGF5RmFzdFJldmVyc2VdOwotfQotCi1zdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBt
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMpCi17Ci0g
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Om9wdGlvbnMuc2l6ZSgpXSk7Ci0gICAg
Zm9yIChhdXRvJiBuYW1lIDogb3B0aW9ucykgewotICAgICAgICBSZXRhaW5QdHI8V2ViQVZNZWRp
YVNlbGVjdGlvbk9wdGlvbj4gd2ViT3B0aW9uID0gYWRvcHROUyhbW1dlYkFWTWVkaWFTZWxlY3Rp
b25PcHRpb24gYWxsb2NdIGluaXRdKTsKLSAgICAgICAgW3dlYk9wdGlvbiBzZXRMb2NhbGl6ZWRE
aXNwbGF5TmFtZTpuYW1lXTsKLSAgICAgICAgW3dlYk9wdGlvbnMgYWRkT2JqZWN0OndlYk9wdGlv
bi5nZXQoKV07Ci0gICAgfQotICAgIHJldHVybiB3ZWJPcHRpb25zOworICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRDYW5QbGF5RmFzdFJldmVyc2UoY2FuUGxheUZhc3RSZXZlcnNl
KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0QXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2
NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJP
cHRpb25zID0gbWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMpOwotICAgIFttX3BsYXllckNv
bnRyb2xsZXIgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07
Ci0gICAgaWYgKHNlbGVjdGVkSW5kZXggPCBbd2ViT3B0aW9ucyBjb3VudF0pCi0gICAgICAgIFtt
X3BsYXllckNvbnRyb2xsZXIgc2V0Q3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb246W3dl
Yk9wdGlvbnMgb2JqZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZElu
ZGV4KV1dOworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRBdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKIH0KIAogdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9u
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkK
IHsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBtZWRpYVNlbGVj
dGlvbk9wdGlvbnMob3B0aW9ucyk7Ci0gICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zOndlYk9wdGlvbnMuZ2V0KCldOwotICAgIGlmIChzZWxlY3Rl
ZEluZGV4IDwgW3dlYk9wdGlvbnMgY291bnRdKQotICAgICAgICBbbV9wbGF5ZXJDb250cm9sbGVy
IHNldEN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2JqZWN0
QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOworICAgIG1f
cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25z
KG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0OjpzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQ
bGF5YmFja1RhcmdldFR5cGUgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUp
CiB7Ci0gICAgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUgZXh0ZXJuYWxQ
bGF5YmFja1R5cGUgPSBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZU5vbmU7
Ci0gICAgaWYgKHRhcmdldFR5cGUgPT0gVGFyZ2V0VHlwZUFpclBsYXkpCi0gICAgICAgIGV4dGVy
bmFsUGxheWJhY2tUeXBlID0gQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVB
aXJQbGF5OwotICAgIGVsc2UgaWYgKHRhcmdldFR5cGUgPT0gVGFyZ2V0VHlwZVRWT3V0KQotICAg
ICAgICBleHRlcm5hbFBsYXliYWNrVHlwZSA9IEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxh
eWJhY2tUeXBlVFZPdXQ7CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEV4dGVy
bmFsUGxheWJhY2soZW5hYmxlZCwgdGFyZ2V0VHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7Cit9
CiAKLSAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSBtX3BsYXll
ckNvbnRyb2xsZXIuZ2V0KCk7Ci0gICAgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNr
QWlyUGxheURldmljZUxvY2FsaXplZE5hbWUgPSBsb2NhbGl6ZWREZXZpY2VOYW1lOwotICAgIHBs
YXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja1R5cGUgPSBleHRlcm5hbFBsYXliYWNrVHlw
ZTsKLSAgICBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tBY3RpdmUgPSBlbmFibGVk
Owordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZXh0ZXJuYWxQbGF5YmFj
a0VuYWJsZWRDaGFuZ2VkKGJvb2wgZW5hYmxlZCkKK3sKICAgICBbbV9wbGF5ZXJMYXllclZpZXcg
c2V0SGlkZGVuOmVuYWJsZWRdOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVkKQog
ewotICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0QWxsb3dzRXh0ZXJuYWxQbGF5YmFjazohZGlz
YWJsZWRdOworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZChkaXNhYmxlZCk7CiB9CiAKIGJvb2wgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gW21fcGxheWVyQ29udHJvbGxlciBhbGxvd3NFeHRlcm5hbFBsYXliYWNrXTsK
KyAgICByZXR1cm4gbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPndpcmVsZXNzVmlkZW9QbGF5
YmFja0Rpc2FibGVkKCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKQEAgLTExNzgsNyArNjg5LDcgQEAgdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBGdWxsc2NyZWVuKFVJVmll
dyYgdmlkZW9WaWV3LCBjb25zdAogCiAgICAgaWYgKCFtX3BsYXllckxheWVyVmlldykKICAgICAg
ICAgbV9wbGF5ZXJMYXllclZpZXcgPSBhZG9wdE5TKFtbZ2V0V2ViQVZQbGF5ZXJMYXllclZpZXdD
bGFzcygpIGFsbG9jXSBpbml0XSk7Ci0gICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEhpZGRlbjpb
bV9wbGF5ZXJDb250cm9sbGVyIGlzRXh0ZXJuYWxQbGF5YmFja0FjdGl2ZV1dOworICAgIFttX3Bs
YXllckxheWVyVmlldyBzZXRIaWRkZW46W3BsYXllckNvbnRyb2xsZXIoKSBpc0V4dGVybmFsUGxh
eWJhY2tBY3RpdmVdXTsKICAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9y
OltnZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07CiAKICAgICBpZiAoIWlzSW5QaWN0dXJl
SW5QaWN0dXJlTW9kZSkgewpAQCAtMTE4OSwxNiArNzAwLDE5IEBAIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbihVSVZpZXcmIHZpZGVvVmlldywg
Y29uc3QKICAgICBXZWJBVlBsYXllckxheWVyICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxh
eWVyICopW21fcGxheWVyTGF5ZXJWaWV3IHBsYXllckxheWVyXTsKIAogICAgIFtwbGF5ZXJMYXll
ciBzZXRNb2RlbFZpZGVvTGF5ZXJGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIGluaXRpYWxSZWN0Lndp
ZHRoKCksIGluaXRpYWxSZWN0LmhlaWdodCgpKV07Ci0gICAgW3BsYXllckxheWVyIHNldFZpZGVv
RGltZW5zaW9uczpbbV9wbGF5ZXJDb250cm9sbGVyIGNvbnRlbnREaW1lbnNpb25zXV07CisgICAg
W3BsYXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpbcGxheWVyQ29udHJvbGxlcigpIGNvbnRl
bnREaW1lbnNpb25zXV07CisgICAgcGxheWVyTGF5ZXIuZnVsbHNjcmVlbkludGVyZmFjZSA9IHRo
aXM7CiAKICAgICBpZiAoIW1fcGxheWVyVmlld0NvbnRyb2xsZXIpCiAgICAgICAgIG1fcGxheWVy
Vmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyVmlld0NvbnRyb2xsZXJJbnN0
YW5jZSgpIGluaXRXaXRoUGxheWVyTGF5ZXJWaWV3Om1fcGxheWVyTGF5ZXJWaWV3LmdldCgpXSk7
CiAKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6
Tk9dOwotICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6KEFW
UGxheWVyQ29udHJvbGxlciAqKW1fcGxheWVyQ29udHJvbGxlci5nZXQoKV07Ci0gICAgW21fcGxh
eWVyVmlld0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV9wbGF5ZXJDb250cm9sbGVyLmdldCgpXTsK
KyAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRQbGF5ZXJDb250cm9sbGVyOihBVlBsYXll
ckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9sbGVyKCldOworICAgIFttX3BsYXllclZpZXdDb250
cm9sbGVyIHNldERlbGVnYXRlOm1fcGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKV07
CiAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0QWxsb3dzUGljdHVyZUluUGljdHVyZVBs
YXliYWNrOm1fYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrXTsKIAorICAgIFtwbGF5ZXJD
b250cm9sbGVyKCkgc2V0UGljdHVyZUluUGljdHVyZVBvc3NpYmxlOm1fYWxsb3dzUGljdHVyZUlu
UGljdHVyZVBsYXliYWNrXTsKKwogICAgIGlmIChtX3ZpZXdDb250cm9sbGVyKSB7CiAgICAgICAg
IFttX3ZpZXdDb250cm9sbGVyIGFkZENoaWxkVmlld0NvbnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29u
dHJvbGxlci5nZXQoKV07CiAgICAgICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBhZGRTdWJ2
aWV3OlttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddXTsKQEAgLTEzMzksOCArODUzLDcgQEAg
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y2xlYW51cEZ1bGxzY3JlZW4o
KQogICAgICAgICAgICAgW1tnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRBcHBsaWNhdGlv
bl0gX3NldFN0YXR1c0Jhck9yaWVudGF0aW9uOlttX3BhcmVudFdpbmRvdyBpbnRlcmZhY2VPcmll
bnRhdGlvbl1dOwogICAgIH0KICAgICAKLSAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldERlbGVn
YXRlOm5pbF07Ci0gICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRGdWxsc2NyZWVuSW50ZXJmYWNl
Om5pbF07CisgICAgW3BsYXllckNvbnRyb2xsZXIoKSBzZXREZWxlZ2F0ZTpuaWxdOwogICAgIAog
ICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm5pbF07CiAgICAgW21fcGxh
eWVyVmlld0NvbnRyb2xsZXIgc2V0UGxheWVyQ29udHJvbGxlcjpuaWxdOwpAQCAtMTM1OSw4ICs4
NzIsNiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVs
bHNjcmVlbigpCiAKICAgICBtX3BsYXllckxheWVyVmlldyA9IG5pbDsKICAgICBtX3BsYXllclZp
ZXdDb250cm9sbGVyID0gbmlsOwotICAgIG1fcGxheWVyQ29udHJvbGxlciA9IG5pbDsKLSAgICBt
X3ZpZXdDb250cm9sbGVyID0gbmlsOwogICAgIG1fd2luZG93ID0gbmlsOwogICAgIG1fcGFyZW50
VmlldyA9IG5pbDsKICAgICBtX3BhcmVudFdpbmRvdyA9IG5pbDsKQEAgLTE0MTIsNyArOTIzLDcg
QEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZWRUb1JldHVy
blRvSW5saW5lKGJvb2wgdmlzaWJsZSwgY28KIAogYm9vbCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6bWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUoKSBj
b25zdAogewotICAgIHJldHVybiBbbV9wbGF5ZXJDb250cm9sbGVyIGlzUGxheWluZ10gJiYgbV9t
b2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJk
ICYmIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpOworICAgIHJldHVybiBbcGxheWVyQ29udHJv
bGxlcigpIGlzUGxheWluZ10gJiYgbV9tb2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkICYmIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpOwog
fQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpmdWxsc2NyZWVuTWF5
UmV0dXJuVG9JbmxpbmUoc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBjYWxsYmFjaykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VNYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOGQyNmJiN2UxZmU0MDQ3MDI2MTk1ZTA5YTUz
Nzc5YzIwZTdlN2NlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oCkBAIC0wLDAgKzEsNzkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hY19oCisjZGVm
aW5lIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hY19oCisKKyNpZiBQTEFURk9STShNQUMp
ICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKKworI2luY2x1ZGUgIkhUTUxNZWRp
YUVsZW1lbnRFbnVtcy5oIgorI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5o
IgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitPQkpDX0NMQVNTIFdlYlBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyOworCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbnRSZWN0
OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JU
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyBmaW5hbAorICAgIDogcHVibGljIFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZQorICAgICwgcHVibGljIFJlZkNvdW50ZWQ8V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMoKSk7CisgICAgfQor
ICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYygpOworICAgIFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsKiB3ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKik7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0TWVkaWFTdGF0ZSgpIGZpbmFsIHsgfQorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0RHVyYXRpb24oZG91YmxlKSBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSAvKmN1cnJlbnRUaW1lKi8sIGRvdWJs
ZSAvKmFuY2hvclRpbWUqLykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCdWZm
ZXJlZFRpbWUoZG91YmxlKSBmaW5hbCB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJh
dGUoYm9vbCAvKmlzUGxheWluZyovLCBmbG9hdCAvKnBsYXliYWNrUmF0ZSovKSBmaW5hbDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5nZXMm
KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZShi
b29sKSBmaW5hbCB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKm9wdGlvbnMqLywgdWludDY0X3Qg
LypzZWxlY3RlZEluZGV4Ki8pIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypvcHRpb25z
Ki8sIHVpbnQ2NF90IC8qc2VsZWN0ZWRJbmRleCovKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5
cGUsIFN0cmluZykgZmluYWwgeyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXaXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSBmaW5hbCB7IH0KKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGludmFsaWRhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuc3VyZUNvbnRy
b2xzTWFuYWdlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrQ29udHJvbHNNYW5h
Z2VyICpwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpOworCitwcml2YXRlOgorICAgIFdlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsKiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsIHsgbnVsbHB0ciB9OworICAg
IFJldGFpblB0cjxXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcj4gbV9wbGF5YmFja0NvbnRyb2xz
TWFuYWdlcjsKK307CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmViZWRlMDNkYTY3MjI2NTkwY2VlY2Q1N2FlYjAwYWQ1YjYzNmM2MzEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlTWFjLm1tCkBAIC0wLDAgKzEsMzMyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1h
Yy5oIgorCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01P
REUpCisKKyNpbXBvcnQgIkFWS2l0U1BJLmgiCisjaW1wb3J0ICJJbnRSZWN0LmgiCisjaW1wb3J0
ICJNZWRpYVRpbWVBVkZvdW5kYXRpb24uaCIKKyNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKKyNpbXBv
cnQgIldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmgiCisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZG
b3VuZGF0aW9uLmg+CisKKyNpbXBvcnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCisKK1NPRlRfTElO
S19GUkFNRVdPUksoQVZLaXQpCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWVmFsdWVUaW1pbmcp
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW50ZXJmYWNlIFdlYkFWTWVkaWFTZWxl
Y3Rpb25PcHRpb25NYWMgOiBOU09iamVjdCB7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfbG9j
YWxpemVkRGlzcGxheU5hbWU7Cit9CitAcHJvcGVydHkgKHJldGFpbikgTlNTdHJpbmcgKmxvY2Fs
aXplZERpc3BsYXlOYW1lOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQVZNZWRpYVNlbGVj
dGlvbk9wdGlvbk1hYworCistIChOU1N0cmluZyAqKWxvY2FsaXplZERpc3BsYXlOYW1lCit7Cisg
ICAgcmV0dXJuIF9sb2NhbGl6ZWREaXNwbGF5TmFtZS5nZXQoKTsKK30KKworLSAodm9pZClzZXRM
b2NhbGl6ZWREaXNwbGF5TmFtZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgX2xvY2FsaXplZERp
c3BsYXlOYW1lID0gbmFtZTsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIFdlYlBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyIDogTlNPYmplY3QgeworICAgIE5TVGltZUludGVydmFsIF9jb250ZW50RHVy
YXRpb247CisgICAgUmV0YWluUHRyPEFWVmFsdWVUaW1pbmc+IF90aW1pbmc7CisgICAgTlNUaW1l
SW50ZXJ2YWwgX3NlZWtUb1RpbWU7CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9zZWVrYWJsZVRp
bWVSYW5nZXM7CisgICAgQk9PTCBfaGFzRW5hYmxlZEF1ZGlvOworICAgIEJPT0wgX2hhc0VuYWJs
ZWRWaWRlbzsKKyAgICBSZXRhaW5QdHI8TlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICo+
PiBfYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM7CisgICAgUmV0YWluUHRyPEFWTWVkaWFTZWxl
Y3Rpb25PcHRpb24+IF9jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjsKKyAgICBSZXRh
aW5QdHI8TlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICo+PiBfbGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9uczsKKyAgICBSZXRhaW5QdHI8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbj4gX2N1
cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb247CisKKyAgICBmbG9hdCBfcmF0ZTsKKwor
QHByaXZhdGUKKyAgICBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMqIF93
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM7Cit9CisKK0Bwcm9wZXJ0eSAocmVhZHdyaXRl
KSBOU1RpbWVJbnRlcnZhbCBjb250ZW50RHVyYXRpb247CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmV0YWluLCByZWFkd3JpdGUpIEFWVmFsdWVUaW1pbmcgKnRpbWluZzsKK0Bwcm9wZXJ0eSBOU1Rp
bWVJbnRlcnZhbCBzZWVrVG9UaW1lOworQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbiwgcmVh
ZHdyaXRlKSBOU0FycmF5ICpzZWVrYWJsZVRpbWVSYW5nZXM7CitAcHJvcGVydHkgKHJlYWR3cml0
ZSkgQk9PTCBoYXNFbmFibGVkQXVkaW87CitAcHJvcGVydHkgKHJlYWR3cml0ZSkgQk9PTCBoYXNF
bmFibGVkVmlkZW87CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCByZWFkd3JpdGUpIE5T
QXJyYXk8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bnM7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCByZWFkd3JpdGUpIEFWTWVkaWFTZWxl
Y3Rpb25PcHRpb24gKmN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOworQHByb3BlcnR5
IChub25hdG9taWMsIHJldGFpbiwgcmVhZHdyaXRlKSBOU0FycmF5PEFWTWVkaWFTZWxlY3Rpb25P
cHRpb24gKj4gKmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgcmV0YWluLCByZWFkd3JpdGUpIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKmN1cnJlbnRM
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb247CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBmbG9h
dCByYXRlOworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWM6KFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyopd2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOworCitAZW5kCisKKyNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQorI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYlBsYXliYWNrQ29udHJvbHNDb250
cm9sbGVyQWRkaXRpb25zLm1tPgorI2VuZGlmCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJQbGF5YmFj
a0NvbnRyb2xzTWFuYWdlcgorCitAc3ludGhlc2l6ZSBjb250ZW50RHVyYXRpb249X2NvbnRlbnRE
dXJhdGlvbjsKK0BzeW50aGVzaXplIHNlZWtUb1RpbWU9X3NlZWtUb1RpbWU7CitAc3ludGhlc2l6
ZSBoYXNFbmFibGVkQXVkaW89X2hhc0VuYWJsZWRBdWRpbzsKK0BzeW50aGVzaXplIGhhc0VuYWJs
ZWRWaWRlbz1faGFzRW5hYmxlZFZpZGVvOworQHN5bnRoZXNpemUgcmF0ZT1fcmF0ZTsKKworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOihXZWJD
b3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMqKXdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZU1hYworeworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICBy
ZXR1cm4gbmlsOworCisgICAgX3dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyA9IHdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChB
VlZhbHVlVGltaW5nICopdGltaW5nCit7CisgICAgcmV0dXJuIF90aW1pbmcuZ2V0KCk7Cit9CisK
Ky0gKHZvaWQpc2V0VGltaW5nOihBVlZhbHVlVGltaW5nICopdGltaW5nCit7CisgICAgX3RpbWlu
ZyA9IHRpbWluZzsKK30KKworLSAoTlNBcnJheSAqKXNlZWthYmxlVGltZVJhbmdlcworeworICAg
IHJldHVybiBfc2Vla2FibGVUaW1lUmFuZ2VzLmdldCgpOworfQorCistICh2b2lkKXNldFNlZWth
YmxlVGltZVJhbmdlczooTlNBcnJheSAqKXRpbWVSYW5nZXMKK3sKKyAgICBfc2Vla2FibGVUaW1l
UmFuZ2VzID0gdGltZVJhbmdlczsKK30KKworLSAoQk9PTClpc1NlZWtpbmcKK3sKKyAgICByZXR1
cm4gTk87Cit9CisKKy0gKHZvaWQpc2Vla1RvVGltZTooTlNUaW1lSW50ZXJ2YWwpdGltZSB0b2xl
cmFuY2VCZWZvcmU6KE5TVGltZUludGVydmFsKXRvbGVyYW5jZUJlZm9yZSB0b2xlcmFuY2VBZnRl
cjooTlNUaW1lSW50ZXJ2YWwpdG9sZXJhbmNlQWZ0ZXIKK3sKKyAgICBVTlVTRURfUEFSQU0odG9s
ZXJhbmNlQmVmb3JlKTsKKyAgICBVTlVTRURfUEFSQU0odG9sZXJhbmNlQWZ0ZXIpOworICAgIF93
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMtPndlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKCkt
PnNlZWtUb1RpbWUodGltZSk7Cit9CisKKy0gKE5TQXJyYXk8QVZNZWRpYVNlbGVjdGlvbk9wdGlv
biAqPiAqKWF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zCit7CisgICAgcmV0dXJuIF9hdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9ucy5nZXQoKTsKK30KKworLSAodm9pZClzZXRBdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9uczooTlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICo+ICopYXVkaW9P
cHRpb25zCit7CisgICAgX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zID0gYXVkaW9PcHRpb25z
OworfQorCistIChBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVudEF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb24KK3sKKyAgICByZXR1cm4gX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9uLmdldCgpOworfQorCistICh2b2lkKXNldEN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9uOihBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICopYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbgor
eworICAgIGlmIChhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uID09IF9jdXJyZW50QXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgX2N1cnJlbnRBdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9uID0gYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjsKKworICAgIE5T
SW50ZWdlciBpbmRleCA9IE5TTm90Rm91bmQ7CisKKyAgICBpZiAoYXVkaW9NZWRpYVNlbGVjdGlv
bk9wdGlvbiAmJiBzZWxmLmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKQorICAgICAgICBpbmRl
eCA9IFtzZWxmLmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zIGluZGV4T2ZPYmplY3Q6YXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbl07CisKKyAgICBfd2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjLT53ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9uKGlu
ZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOworfQorCistIChOU0FycmF5
PEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25z
Cit7CisgICAgcmV0dXJuIF9sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zLmdldCgpOworfQor
CistICh2b2lkKXNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KE5TQXJyYXk8QVZNZWRp
YVNlbGVjdGlvbk9wdGlvbiAqPiAqKWxlZ2libGVPcHRpb25zCit7CisgICAgX2xlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnMgPSBsZWdpYmxlT3B0aW9uczsKK30KKworLSAoQVZNZWRpYVNlbGVj
dGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24KK3sKKyAgICBy
ZXR1cm4gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24uZ2V0KCk7Cit9CisKKy0g
KHZvaWQpc2V0Q3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjooQVZNZWRpYVNlbGVj
dGlvbk9wdGlvbiAqKWxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbgoreworICAgIGlmIChsZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gPT0gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIF9jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9uID0gbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOworCisgICAgTlNJbnRlZ2Vy
IGluZGV4ID0gTlNOb3RGb3VuZDsKKworICAgIGlmIChsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b24gJiYgc2VsZi5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKQorICAgICAgICBpbmRleCA9
IFtzZWxmLmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgaW5kZXhPZk9iamVjdDpsZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25dOworCisgICAgX3dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYy0+d2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoKS0+c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9u
KGluZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOworfQorCistICh2b2lk
KWNhbmNlbFRodW1ibmFpbEFuZEF1ZGlvQW1wbGl0dWRlU2FtcGxlR2VuZXJhdGlvbgoreworfQor
CisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9X
ZWJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxlclRodW1ibmFpbEFkZGl0aW9ucy5tbT4KKyNlbmRp
ZgorCitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjOjp+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKCkKK3sKK30KKwordm9p
ZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKiBtb2RlbCkKK3sKKyAgICBtX3BsYXliYWNrU2Vz
c2lvbk1vZGVsID0gbW9kZWw7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCit7CisgICAgV2ViUGxheWJhY2tDb250
cm9sc01hbmFnZXIqIGNvbnRyb2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7
CisKKyAgICBjb250cm9sc01hbmFnZXIuY29udGVudER1cmF0aW9uID0gZHVyYXRpb247CisKKyAg
ICAvLyBGSVhNRTogV2UgdGFrZSB0aGlzIGFzIGFuIGluZGljYXRpb24gdGhhdCBwbGF5YmFjayBp
cyByZWFkeSwgYnV0IHRoYXQgaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUuCisgICAgY29udHJvbHNN
YW5hZ2VyLmhhc0VuYWJsZWRBdWRpbyA9IFlFUzsKKyAgICBjb250cm9sc01hbmFnZXIuaGFzRW5h
YmxlZFZpZGVvID0gWUVTOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1h
Yzo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkK
K3sKKyAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5hZ2VyID0gcGxh
eUJhY2tDb250cm9sc01hbmFnZXIoKTsKKworICAgIE5TVGltZUludGVydmFsIGFuY2hvclRpbWVT
dGFtcCA9ICFbY29udHJvbHNNYW5hZ2VyIHJhdGVdID8gTkFOIDogYW5jaG9yVGltZTsKKyAgICBB
VlZhbHVlVGltaW5nICp0aW1pbmcgPSBbZ2V0QVZWYWx1ZVRpbWluZ0NsYXNzKCkgdmFsdWVUaW1p
bmdXaXRoQW5jaG9yVmFsdWU6Y3VycmVudFRpbWUKKyAgICAgICAgYW5jaG9yVGltZVN0YW1wOmFu
Y2hvclRpbWVTdGFtcCByYXRlOjBdOworCisgICAgW2NvbnRyb2xzTWFuYWdlciBzZXRUaW1pbmc6
dGltaW5nXTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldFJh
dGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKK3sKKyAgICBXZWJQbGF5YmFj
a0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5hZ2VyID0gcGxheUJhY2tDb250cm9sc01hbmFn
ZXIoKTsKKworICAgIFtjb250cm9sc01hbmFnZXIgc2V0UmF0ZTppc1BsYXlpbmcgPyBwbGF5YmFj
a1JhdGUgOiAwLl07Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpz
ZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQoreworICAgIFdl
YlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0NvbnRy
b2xzTWFuYWdlcigpOworCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBzZWVrYWJsZVJh
bmdlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHRpbWVSYW5nZXMubGVuZ3RoKCk7IGkrKykgeworICAgICAg
ICBjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmIHJhbmdlcyA9IHRpbWVSYW5nZXMucmFuZ2VzKCk7
CisgICAgICAgIENNVGltZVJhbmdlIHJhbmdlID0gQ01UaW1lUmFuZ2VNYWtlKHRvQ01UaW1lKHJh
bmdlcy5zdGFydChpKSksIHRvQ01UaW1lKHJhbmdlcy5lbmQoaSkpKTsKKyAgICAgICAgW3NlZWth
YmxlUmFuZ2VzIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWVSYW5nZTpyYW5nZV1d
OworICAgIH0KKworICAgIFtjb250cm9sc01hbmFnZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2VzOnNl
ZWthYmxlUmFuZ2VzLmdldCgpXTsKK30KKworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJh
eT4gbWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zKQor
eworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUoKV0pOwor
ICAgIGZvciAoYXV0byYgbmFtZSA6IG9wdGlvbnMpIHsKKyAgICAgICAgUmV0YWluUHRyPFdlYkFW
TWVkaWFTZWxlY3Rpb25PcHRpb25NYWM+IHdlYk9wdGlvbiA9IGFkb3B0TlMoW1tXZWJBVk1lZGlh
U2VsZWN0aW9uT3B0aW9uTWFjIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFt3ZWJPcHRpb24gc2V0
TG9jYWxpemVkRGlzcGxheU5hbWU6bmFtZV07CisgICAgICAgIFt3ZWJPcHRpb25zIGFkZE9iamVj
dDp3ZWJPcHRpb24uZ2V0KCldOworICAgIH0KKyAgICByZXR1cm4gd2ViT3B0aW9uczsKK30KKwor
dm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldEF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNl
bGVjdGVkSW5kZXgpCit7CisgICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIqIGNvbnRyb2xz
TWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7CisKKyAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBtZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucyk7
CisgICAgW2NvbnRyb2xzTWFuYWdlciBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczp3ZWJP
cHRpb25zLmdldCgpXTsKKyAgICBpZiAoc2VsZWN0ZWRJbmRleCA8IFt3ZWJPcHRpb25zIGNvdW50
XSkKKyAgICAgICAgW2NvbnRyb2xzTWFuYWdlciBzZXRDdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlv
bk9wdGlvbjpbd2ViT3B0aW9ucyBvYmplY3RBdEluZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+
KHNlbGVjdGVkSW5kZXgpXV07Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjOjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0
cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit7CisgICAgV2ViUGxheWJh
Y2tDb250cm9sc01hbmFnZXIqIGNvbnRyb2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5h
Z2VyKCk7CisKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBtZWRp
YVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucyk7CisgICAgW2NvbnRyb2xzTWFuYWdlciBzZXRMZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOndlYk9wdGlvbnMuZ2V0KCldOworICAgIGlmIChzZWxl
Y3RlZEluZGV4IDwgW3dlYk9wdGlvbnMgY291bnRdKQorICAgICAgICBbY29udHJvbHNNYW5hZ2Vy
IHNldEN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2JqZWN0
QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOworfQorCit2
b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6aW52YWxpZGF0ZSgpCit7Cit9CisK
K3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjplbnN1cmVDb250cm9sc01hbmFn
ZXIoKQoreworICAgIHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7Cit9CisKK1dlYlBsYXliYWNr
Q29udHJvbHNNYW5hZ2VyICpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnBsYXlCYWNr
Q29udHJvbHNNYW5hZ2VyKCkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTIwMAorICAgIGlmICghbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlcikKKyAgICAgICAg
bV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlciA9IGFkb3B0TlMoW1tXZWJQbGF5YmFja0NvbnRyb2xz
TWFuYWdlciBhbGxvY10gaW5pdFdpdGhXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6dGhp
c10pOworICAgIHJldHVybiBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmdldCgpOworI2Vsc2UK
KyAgICByZXR1cm4gbmlsOworI2VuZGlmCit9CisgICAgCit9CisKKyNlbmRpZiAvLyBQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VNYWMuaAppbmRleCAyYjJhN2ZjN2NkNWI1NTlmZTM0MzlmNGM0ZGJmM2ZiMjU3NTNmNWQ0Li5m
YjhjYzhmNzVkY2I5Y2NmMjBjMGJkYjQzOTc2NmRiZjI3ZWQ0NTAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYy5oCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIE9CSkNfQ0xBU1MgTlNXaW5kb3c7Ci1PQkpDX0NMQVNTIFdlYlBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyOwogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIE9CSkNfQ0xBU1MgV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2JqQzsKQEAgLTQzLDYgKzQyLDcgQEAgT0JKQ19D
TEFTUyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWNPYmpDOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBJbnRSZWN0OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjOwogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI7CiBjbGFzcyBXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbDsKIApAQCAtNTEsOSArNTEsOSBAQCBjbGFzcyBXRUJDT1JFX0VY
UE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMKICAgICAsIHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYz4gewogCiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM+IGNyZWF0ZSgpCisgICAgc3Rh
dGljIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM+IGNyZWF0ZShXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VNYWMmIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1h
YygpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlTWFjKHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkpOwogICAgIH0KICAgICB2aXJ0dWFs
IH5XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMoKTsKICAgICBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCogd2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVv
RnVsbHNjcmVlbk1vZGVsOyB9CkBAIC05MywxMiArOTMsMTMgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgbWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVB
Y3RpdmUoKSB7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrQ29udHJvbHNNYW5h
Z2VyICpwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpOwogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCiAgICAgV0VCQ09SRV9FWFBPUlQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2Jq
QyAqdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlT2JqQygpOwogI2VuZGlmCiAKIHByaXZhdGU6Cisg
ICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKFdlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZU1hYyYpOworICAgIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM+IG1fcGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlOwogICAgIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBtX3Zp
ZGVvRnVsbHNjcmVlbk1vZGVsIHsgbnVsbHB0ciB9OwogICAgIFdlYlZpZGVvRnVsbHNjcmVlbkNo
YW5nZU9ic2VydmVyKiBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciB7IG51bGxwdHIgfTsKICAg
ICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbV9tb2RlIHsgSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSB9OwpAQCAtMTA2LDcg
KzEwNyw2IEBAIHByaXZhdGU6CiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICBSZXRh
aW5QdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2JqQz4gbV93ZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VPYmpDOwogI2VuZGlmCi0gICAgUmV0YWluUHRyPFdlYlBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyPiBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWMubW0KaW5kZXggYjg5MGFiMzhmMDUwNzNjNWZiMmVmNWQ2YzljMTdkNDk0
YmI4YWZmYS4uZmU3ODkxNjI3MzcxMjk0NDliNTU5MTViYWNkZGE0YWY2OWMzYWI5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjLm1tCkBAIC0yOSwxNSArMjksMTUgQEAKICNpZiBQTEFURk9STShN
QUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKIAogI2ltcG9ydCAiQVZLaXRT
UEkuaCIKLSNpbXBvcnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCiAjaW1wb3J0ICJJbnRSZWN0Lmgi
CiAjaW1wb3J0ICJNZWRpYVRpbWVBVkZvdW5kYXRpb24uaCIKICNpbXBvcnQgIlRpbWVSYW5nZXMu
aCIKKyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oIgogI2ltcG9ydCAi
V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZUaW1lLmg+CiAKLSNpbXBv
cnQgIlNvZnRMaW5raW5nLmgiCisjaW1wb3J0ICJDb3JlTWVkaWFTb2Z0TGluay5oIgogCiBTT0ZU
X0xJTktfRlJBTUVXT1JLKEFWS2l0KQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlZhbHVlVGlt
aW5nKQpAQCAtNDYsMTg5ICs0NiwxMyBAQCBTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWVmFsdWVU
aW1pbmcpCiAjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hY0FkZGl0aW9ucy5tbT4KICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LQotQGludGVyZmFjZSBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uTWFjIDogTlNPYmplY3Qgewot
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2xvY2FsaXplZERpc3BsYXlOYW1lOwotfQotQHByb3Bl
cnR5IChyZXRhaW4pIE5TU3RyaW5nICpsb2NhbGl6ZWREaXNwbGF5TmFtZTsKLUBlbmQKLQotQGlt
cGxlbWVudGF0aW9uIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb25NYWMKLQotLSAoTlNTdHJpbmcg
Kilsb2NhbGl6ZWREaXNwbGF5TmFtZQotewotICAgIHJldHVybiBfbG9jYWxpemVkRGlzcGxheU5h
bWUuZ2V0KCk7Ci19Ci0KLS0gKHZvaWQpc2V0TG9jYWxpemVkRGlzcGxheU5hbWU6KE5TU3RyaW5n
ICopbmFtZQotewotICAgIF9sb2NhbGl6ZWREaXNwbGF5TmFtZSA9IG5hbWU7Ci19Ci0KLUBlbmQK
LQotQGludGVyZmFjZSBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciA6IE5TT2JqZWN0IHsKLSAg
ICBOU1RpbWVJbnRlcnZhbCBfY29udGVudER1cmF0aW9uOwotICAgIFJldGFpblB0cjxBVlZhbHVl
VGltaW5nPiBfdGltaW5nOwotICAgIE5TVGltZUludGVydmFsIF9zZWVrVG9UaW1lOwotICAgIFJl
dGFpblB0cjxOU0FycmF5PiBfc2Vla2FibGVUaW1lUmFuZ2VzOwotICAgIEJPT0wgX2hhc0VuYWJs
ZWRBdWRpbzsKLSAgICBCT09MIF9oYXNFbmFibGVkVmlkZW87Ci0gICAgUmV0YWluUHRyPE5TQXJy
YXk8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPj4gX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
OwotICAgIFJldGFpblB0cjxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uPiBfY3VycmVudEF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb247Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk8QVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiAqPj4gX2xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7Ci0gICAgUmV0YWluUHRy
PEFWTWVkaWFTZWxlY3Rpb25PcHRpb24+IF9jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9uOwotICAgIAotICAgIGZsb2F0IF9yYXRlOwotCi1AcHJpdmF0ZQotICAgIFdlYkNvcmU6Oldl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyogX3dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYzsKLX0KLQotQHByb3BlcnR5IChyZWFkd3JpdGUpIE5TVGltZUludGVydmFsIGNvbnRlbnRE
dXJhdGlvbjsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4sIHJlYWR3cml0ZSkgQVZWYWx1
ZVRpbWluZyAqdGltaW5nOwotQHByb3BlcnR5IE5TVGltZUludGVydmFsIHNlZWtUb1RpbWU7Ci1A
cHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCByZWFkd3JpdGUpIE5TQXJyYXkgKnNlZWthYmxl
VGltZVJhbmdlczsKLUBwcm9wZXJ0eSAocmVhZHdyaXRlKSBCT09MIGhhc0VuYWJsZWRBdWRpbzsK
LUBwcm9wZXJ0eSAocmVhZHdyaXRlKSBCT09MIGhhc0VuYWJsZWRWaWRlbzsKLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZXRhaW4sIHJlYWR3cml0ZSkgTlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0
aW9uICo+ICphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczsKLUBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZXRhaW4sIHJlYWR3cml0ZSkgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqY3VycmVudEF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb247Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCByZWFk
d3JpdGUpIE5TQXJyYXk8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqbGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9uczsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4sIHJlYWR3cml0ZSkg
QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
bjsKLQotQHByb3BlcnR5IChub25hdG9taWMpIGZsb2F0IHJhdGU7Ci0KLS0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzooV2ViQ29yZTo6V2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKil3ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM7
Ci0KLUBlbmQKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRB
ZGRpdGlvbnMvV2ViUGxheWJhY2tDb250cm9sc0NvbnRyb2xsZXJBZGRpdGlvbnMubW0+Ci0jZW5k
aWYKLQotQGltcGxlbWVudGF0aW9uIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyCi0KLUBzeW50
aGVzaXplIGNvbnRlbnREdXJhdGlvbj1fY29udGVudER1cmF0aW9uOwotQHN5bnRoZXNpemUgc2Vl
a1RvVGltZT1fc2Vla1RvVGltZTsKLUBzeW50aGVzaXplIGhhc0VuYWJsZWRBdWRpbz1faGFzRW5h
YmxlZEF1ZGlvOwotQHN5bnRoZXNpemUgaGFzRW5hYmxlZFZpZGVvPV9oYXNFbmFibGVkVmlkZW87
Ci1Ac3ludGhlc2l6ZSByYXRlPV9yYXRlOwotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6KFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYyopd2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjCi17Ci0gICAgaWYgKCEo
c2VsZiA9IFtzdXBlciBpbml0XSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfd2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjID0gd2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
OwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKEFWVmFsdWVUaW1pbmcgKil0aW1pbmcKLXsK
LSAgICByZXR1cm4gX3RpbWluZy5nZXQoKTsKLX0KLQotLSAodm9pZClzZXRUaW1pbmc6KEFWVmFs
dWVUaW1pbmcgKil0aW1pbmcKLXsKLSAgICBfdGltaW5nID0gdGltaW5nOwotfQotCi0tIChOU0Fy
cmF5ICopc2Vla2FibGVUaW1lUmFuZ2VzCi17Ci0gICAgcmV0dXJuIF9zZWVrYWJsZVRpbWVSYW5n
ZXMuZ2V0KCk7Ci19Ci0KLS0gKHZvaWQpc2V0U2Vla2FibGVUaW1lUmFuZ2VzOihOU0FycmF5ICop
dGltZVJhbmdlcwotewotICAgIF9zZWVrYWJsZVRpbWVSYW5nZXMgPSB0aW1lUmFuZ2VzOwotfQot
Ci0tIChCT09MKWlzU2Vla2luZwotewotICAgIHJldHVybiBOTzsKLX0KLQotLSAodm9pZClzZWVr
VG9UaW1lOihOU1RpbWVJbnRlcnZhbCl0aW1lIHRvbGVyYW5jZUJlZm9yZTooTlNUaW1lSW50ZXJ2
YWwpdG9sZXJhbmNlQmVmb3JlIHRvbGVyYW5jZUFmdGVyOihOU1RpbWVJbnRlcnZhbCl0b2xlcmFu
Y2VBZnRlcgotewotICAgIFVOVVNFRF9QQVJBTSh0b2xlcmFuY2VCZWZvcmUpOwotICAgIFVOVVNF
RF9QQVJBTSh0b2xlcmFuY2VBZnRlcik7Ci0gICAgX3dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy0+d2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+c2Vla1RvVGltZSh0aW1lKTsKLX0KLQot
LSAoTlNBcnJheTxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICo+ICopYXVkaW9NZWRpYVNlbGVjdGlv
bk9wdGlvbnMKLXsKLSAgICByZXR1cm4gX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zLmdldCgp
OwotfQotCi0tICh2b2lkKXNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOihOU0FycmF5PEFW
TWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilhdWRpb09wdGlvbnMKLXsKLSAgICBfYXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnMgPSBhdWRpb09wdGlvbnM7Ci19Ci0KLS0gKEFWTWVkaWFTZWxlY3Rp
b25PcHRpb24gKiljdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbgotewotICAgIHJldHVy
biBfY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24uZ2V0KCk7Ci19Ci0KLS0gKHZvaWQp
c2V0Q3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb246KEFWTWVkaWFTZWxlY3Rpb25PcHRp
b24gKilhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uCi17Ci0gICAgaWYgKGF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb24gPT0gX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uKQotICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uID0g
YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjsKLSAgICAKLSAgICBOU0ludGVnZXIgaW5kZXggPSBO
U05vdEZvdW5kOwotICAgIAotICAgIGlmIChhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uICYmIHNl
bGYuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpCi0gICAgICAgIGluZGV4ID0gW3NlbGYuYXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMgaW5kZXhPZk9iamVjdDphdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9uXTsKLSAgICAKLSAgICBfd2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT53ZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9uKGluZGV4ICE9IE5T
Tm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOwotfQotCi0tIChOU0FycmF5PEFWTWVkaWFT
ZWxlY3Rpb25PcHRpb24gKj4gKilsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zCi17Ci0gICAg
cmV0dXJuIF9sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zLmdldCgpOwotfQotCi0tICh2b2lk
KXNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KE5TQXJyYXk8QVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiAqPiAqKWxlZ2libGVPcHRpb25zCi17Ci0gICAgX2xlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnMgPSBsZWdpYmxlT3B0aW9uczsKLX0KLQotLSAoQVZNZWRpYVNlbGVjdGlvbk9wdGlv
biAqKWN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24KLXsKLSAgICByZXR1cm4gX2N1
cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24uZ2V0KCk7Ci19Ci0KLS0gKHZvaWQpc2V0
Q3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjooQVZNZWRpYVNlbGVjdGlvbk9wdGlv
biAqKWxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbgotewotICAgIGlmIChsZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb24gPT0gX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24pCi0g
ICAgICAgIHJldHVybjsKLSAgICAKLSAgICBfY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbiA9IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjsKLSAgICAKLSAgICBOU0ludGVnZXIg
aW5kZXggPSBOU05vdEZvdW5kOwotICAgIAotICAgIGlmIChsZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb24gJiYgc2VsZi5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKQotICAgICAgICBpbmRl
eCA9IFtzZWxmLmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgaW5kZXhPZk9iamVjdDpsZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25dOwotICAgIAotICAgIF93ZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWMtPndlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKCktPnNlbGVjdExlZ2libGVNZWRp
YU9wdGlvbihpbmRleCAhPSBOU05vdEZvdW5kID8gaW5kZXggOiBVSU5UNjRfTUFYKTsKLX0KK25h
bWVzcGFjZSBXZWJDb3JlIHsKIAotLSAodm9pZCljYW5jZWxUaHVtYm5haWxBbmRBdWRpb0FtcGxp
dHVkZVNhbXBsZUdlbmVyYXRpb24KK1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1h
YyYgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQorICAgIDogbV9wbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UocGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQogewogfQogCi0jaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJQbGF5YmFja0NvbnRyb2xz
Q29udHJvbGxlclRodW1ibmFpbEFkZGl0aW9ucy5tbT4KLSNlbmRpZgotCi1AZW5kCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQogV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjp+V2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKCkKIHsKIH0KQEAgLTIzNiw2ICs2MCw3IEBAIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6fldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1h
YygpCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWwoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwqIG1vZGVsKQogewogICAgIG1fdmlk
ZW9GdWxsc2NyZWVuTW9kZWwgPSBtb2RlbDsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS0+c2V0V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwobW9kZWwpOwogfQogCiB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2
ZXIoV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqIG9ic2VydmVyKQpAQCAtMjY3LDMx
ICs5MiwxNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6Y2xlYXJNb2Rl
KEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxscwogCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYzo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQogewotICAgIFdl
YlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0NvbnRy
b2xzTWFuYWdlcigpOwotCi0gICAgY29udHJvbHNNYW5hZ2VyLmNvbnRlbnREdXJhdGlvbiA9IGR1
cmF0aW9uOwotCi0gICAgLy8gRklYTUU6IFdlIHRha2UgdGhpcyBhcyBhbiBpbmRpY2F0aW9uIHRo
YXQgcGxheWJhY2sgaXMgcmVhZHksIGJ1dCB0aGF0IGlzIG5vdCBuZWNlc3NhcmlseSB0cnVlLgot
ICAgIGNvbnRyb2xzTWFuYWdlci5oYXNFbmFibGVkQXVkaW8gPSBZRVM7Ci0gICAgY29udHJvbHNN
YW5hZ2VyLmhhc0VuYWJsZWRWaWRlbyA9IFlFUzsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZS0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYzo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUg
YW5jaG9yVGltZSkKIHsKLSAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNN
YW5hZ2VyID0gcGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKLQotICAgIE5TVGltZUludGVydmFs
IGFuY2hvclRpbWVTdGFtcCA9ICFbY29udHJvbHNNYW5hZ2VyIHJhdGVdID8gTkFOIDogYW5jaG9y
VGltZTsKLSAgICBBVlZhbHVlVGltaW5nICp0aW1pbmcgPSBbZ2V0QVZWYWx1ZVRpbWluZ0NsYXNz
KCkgdmFsdWVUaW1pbmdXaXRoQW5jaG9yVmFsdWU6Y3VycmVudFRpbWUKLSAgICAgICAgYW5jaG9y
VGltZVN0YW1wOmFuY2hvclRpbWVTdGFtcCByYXRlOjBdOwotICAgIAotICAgIFtjb250cm9sc01h
bmFnZXIgc2V0VGltaW5nOnRpbWluZ107CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Ut
PnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKTsKIH0KIAogdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0
IHBsYXliYWNrUmF0ZSkKIHsKLSAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJv
bHNNYW5hZ2VyID0gcGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKLQotICAgIFtjb250cm9sc01h
bmFnZXIgc2V0UmF0ZTppc1BsYXlpbmcgPyBwbGF5YmFja1JhdGUgOiAwLl07CisgICAgbV9wbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldFJhdGUoaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpOwog
CiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICBbdmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlT2JqQygpIHNldFJhdGU6aXNQbGF5aW5nID8gcGxheWJhY2tSYXRlIDogMC5dOwpAQCAtMzAw
LDY0ICsxMTEsMjIgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFJh
dGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIAogdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5nZXMm
IHRpbWVSYW5nZXMpCiB7Ci0gICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIqIGNvbnRyb2xz
TWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7Ci0KLSAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlQXJyYXk+IHNlZWthYmxlUmFuZ2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGltZVJhbmdlcy5s
ZW5ndGgoKTsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgcmFuZ2Vz
ID0gdGltZVJhbmdlcy5yYW5nZXMoKTsKLSAgICAgICAgQ01UaW1lUmFuZ2UgcmFuZ2UgPSBDTVRp
bWVSYW5nZU1ha2UodG9DTVRpbWUocmFuZ2VzLnN0YXJ0KGkpKSwgdG9DTVRpbWUocmFuZ2VzLmVu
ZChpKSkpOwotICAgICAgICBbc2Vla2FibGVSYW5nZXMgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVl
V2l0aENNVGltZVJhbmdlOnJhbmdlXV07Ci0gICAgfQotICAgIAotICAgIFtjb250cm9sc01hbmFn
ZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2VzOnNlZWthYmxlUmFuZ2VzLmdldCgpXTsKLX0KLQotc3Rh
dGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zKQotewotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJh
eT4gd2ViT3B0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhD
YXBhY2l0eTpvcHRpb25zLnNpemUoKV0pOwotICAgIGZvciAoYXV0byYgbmFtZSA6IG9wdGlvbnMp
IHsKLSAgICAgICAgUmV0YWluUHRyPFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb25NYWM+IHdlYk9w
dGlvbiA9IGFkb3B0TlMoW1tXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uTWFjIGFsbG9jXSBpbml0
XSk7Ci0gICAgICAgIFt3ZWJPcHRpb24gc2V0TG9jYWxpemVkRGlzcGxheU5hbWU6bmFtZV07Ci0g
ICAgICAgIFt3ZWJPcHRpb25zIGFkZE9iamVjdDp3ZWJPcHRpb24uZ2V0KCldOwotICAgIH0KLSAg
ICByZXR1cm4gd2ViT3B0aW9uczsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0
U2Vla2FibGVSYW5nZXModGltZVJhbmdlcyk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjOjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIFdl
YlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0NvbnRy
b2xzTWFuYWdlcigpOwotCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25z
ID0gbWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMpOwotICAgIFtjb250cm9sc01hbmFnZXIg
c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07Ci0gICAgaWYg
KHNlbGVjdGVkSW5kZXggPCBbd2ViT3B0aW9ucyBjb3VudF0pCi0gICAgICAgIFtjb250cm9sc01h
bmFnZXIgc2V0Q3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2Jq
ZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOworICAg
IG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
cyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWM6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBX
ZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5hZ2VyID0gcGxheUJhY2tDb250
cm9sc01hbmFnZXIoKTsKLQotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9u
cyA9IG1lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zKTsKLSAgICBbY29udHJvbHNNYW5hZ2Vy
IHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07Ci0gICAg
aWYgKHNlbGVjdGVkSW5kZXggPCBbd2ViT3B0aW9ucyBjb3VudF0pCi0gICAgICAgIFtjb250cm9s
c01hbmFnZXIgc2V0Q3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjpbd2ViT3B0aW9u
cyBvYmplY3RBdEluZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgpXV07
CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjOjplbnN1cmVDb250cm9sc01hbmFnZXIoKQogewotICAgIHBsYXlC
YWNrQ29udHJvbHNNYW5hZ2VyKCk7Ci19Ci0KLVdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyICpX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCkK
LXsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAotICAgIGlm
ICghbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlcikKLSAgICAgICAgbV9wbGF5YmFja0NvbnRyb2xz
TWFuYWdlciA9IGFkb3B0TlMoW1tXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBhbGxvY10gaW5p
dFdpdGhXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6dGhpc10pOwotICAgIHJldHVybiBt
X3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmdldCgpOwotI2Vsc2UKLSAgICByZXR1cm4gbmlsOwot
I2VuZGlmCisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPmVuc3VyZUNvbnRyb2xzTWFu
YWdlcigpOwogfQogCiAjaWYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdDIvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCAxNDA3OWNhY2UxZGMxNGYyOGU3YWU1MTE5M2EwN2NhZTgxZmFl
MTg4Li5hNjI4MTczMTI5NjI4M2I3YWE1MmMyN2RmNDc0ZWYyNzM4Y2JhMWE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEzOCw2ICsxMzgsOCBAQCBNRVNTQUdFX1JFQ0VJVkVS
UyA9IFwKICAgICBXZWJQYWdlIFwKICAgICBXZWJQYWdlUHJveHkgXAogICAgIFdlYlBhc3RlYm9h
cmRQcm94eSBcCisgICAgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciBcCisgICAgV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5IFwKICAgICBXZWJQcm9jZXNzIFwKICAgICBXZWJQcm9jZXNz
Q29ubmVjdGlvbiBcCiAgICAgV2ViUHJvY2Vzc1Bvb2wgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAzYjdiYWQzNThjYjUyOTRlOTcw
NWJlY2RiMjZlMDc4YjkxZWVlMWQ2Li45YWYyZDA5YWQ2NmJmNTUzYjJhNjhjZTQ5ZTgwZTU5YmJk
MThhNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQpAQCAtMzAzLDcgKzMwMyw3IEBAIC0gKEJPT0wpX21heUF1dG9tYXRpY2FsbHlTaG93
VmlkZW9QaWN0dXJlSW5QaWN0dXJlCiAjaWYgIUhBVkUoQVZLSVQpCiAgICAgcmV0dXJuIGZhbHNl
OwogI2Vsc2UKLSAgICBpZiAoIV9wYWdlIHx8ICFfcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdl
cigpKQorICAgIGlmICghX3BhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVy
biBfcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpLT5tYXlBdXRvbWF0aWNhbGx5U2hvd1Zp
ZGVvUGljdHVyZUluUGljdHVyZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRiMDBkZGE4MjAyODFlZDBiZWQ2Zjc4MmI4OTU3YjA2NDg4NDRlZGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5LmgKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eV9oCisjZGVmaW5lIFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eV9oCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorCisjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybVZpZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgPFdlYkNvcmUvV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaD4KKyNlbHNlCisjaW5jbHVkZSA8V2ViQ29yZS9XZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaD4KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9T
KQordHlwZWRlZiBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCBQbGF0
Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKKyNlbHNlCit0eXBlZGVmIFdlYkNvcmU6
OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyBQbGF0Zm9ybVdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFn
ZVByb3h5OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OworCitjbGFzcyBX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQgZmluYWw6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4sIHB1YmxpYyBXZWJDb3JlOjpXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbCAgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxDb250ZXh0PiBjcmVhdGUoV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5JiBt
YW5hZ2VyLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQobWFuYWdlciwgY29udGV4dElk
KSk7CisgICAgfQorICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dCgp
IHsgfQorCisgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBtX21hbmFnZXIgPSBudWxscHRyOyB9CisK
K3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4
dDsKKworICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dChXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICAgICAgOiBt
X21hbmFnZXIoJm1hbmFnZXIpCisgICAgICAgICwgbV9jb250ZXh0SWQoY29udGV4dElkKQorICAg
IHsKKyAgICB9CisKKyAgICAvLyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbAorICAgIHZvaWQgcGxh
eSgpIGZpbmFsOworICAgIHZvaWQgcGF1c2UoKSBmaW5hbDsKKyAgICB2b2lkIHRvZ2dsZVBsYXlT
dGF0ZSgpIGZpbmFsOworICAgIHZvaWQgYmVnaW5TY3J1YmJpbmcoKSBmaW5hbDsKKyAgICB2b2lk
IGVuZFNjcnViYmluZygpIGZpbmFsOworICAgIHZvaWQgc2Vla1RvVGltZShkb3VibGUpIGZpbmFs
OworICAgIHZvaWQgZmFzdFNlZWsoZG91YmxlIHRpbWUpIGZpbmFsOworICAgIHZvaWQgYmVnaW5T
Y2FubmluZ0ZvcndhcmQoKSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgp
IGZpbmFsOworICAgIHZvaWQgZW5kU2Nhbm5pbmcoKSBmaW5hbDsKKyAgICB2b2lkIHNlbGVjdEF1
ZGlvTWVkaWFPcHRpb24odWludDY0X3QpIGZpbmFsOworICAgIHZvaWQgc2VsZWN0TGVnaWJsZU1l
ZGlhT3B0aW9uKHVpbnQ2NF90KSBmaW5hbDsKKworICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eSogbV9tYW5hZ2VyOworICAgIHVpbnQ2NF90IG1fY29udGV4dElkOworfTsKKworY2xh
c3MgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmKTsKKyAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkoKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCisgICAgUGxh
dGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UqIGNvbnRyb2xzTWFuYWdlckludGVyZmFj
ZSgpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bENvbnRleHQ7CisgICAgZnJpZW5kIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTsKKworICAgIGV4cGxpY2l0IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShXZWJQYWdl
UHJveHkmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6TWVzc2FnZURlY29kZXImKSBmaW5hbDsKKworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxSZWZQ
dHI8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiwgUmVmUHRyPFBsYXRmb3JtV2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlPj4gTW9kZWxJbnRlcmZhY2VUdXBsZTsKKyAgICBNb2RlbElu
dGVyZmFjZVR1cGxlIGNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCk7
CisgICAgTW9kZWxJbnRlcmZhY2VUdXBsZSYgZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0
X3QgY29udGV4dElkKTsKKyAgICBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQmIGVuc3Vy
ZU1vZGVsKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgUGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UmIGVuc3VyZUludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZv
aWQgYWRkQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgcmVt
b3ZlQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpOworCisgICAgLy8gTWVzc2Fn
ZXMgZnJvbSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyCisgICAgdm9pZCBzZXRVcFBsYXliYWNr
Q29udHJvbHNNYW5hZ2VyV2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBjbGVh
clBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCk7CisgICAgdm9pZCByZXNldE1lZGlhU3RhdGUodWlu
dDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHNldEN1cnJlbnRUaW1lKHVpbnQ2NF90IGNvbnRl
eHRJZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgaG9zdFRpbWUpOworICAgIHZvaWQgc2V0
QnVmZmVyZWRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSk7Cisg
ICAgdm9pZCBzZXRTZWVrYWJsZVJhbmdlc1ZlY3Rvcih1aW50NjRfdCBjb250ZXh0SWQsIFZlY3Rv
cjxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiByYW5nZXMpOworICAgIHZvaWQgc2V0Q2FuUGxh
eUZhc3RSZXZlcnNlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSk7CisgICAgdm9pZCBz
ZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxT
dHJpbmc+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOworICAgIHZvaWQgc2V0TGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxTdHJp
bmc+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOworICAgIHZvaWQgc2V0RXh0ZXJu
YWxQbGF5YmFja1Byb3BlcnRpZXModWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIHVp
bnQzMl90IHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKKyAgICB2b2lk
IHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9v
bCk7CisgICAgdm9pZCBzZXREdXJhdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJh
dGlvbik7CisgICAgdm9pZCBzZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlp
bmcsIGRvdWJsZSByYXRlKTsKKworICAgIC8vIE1lc3NhZ2VzIHRvIFdlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXIKKyAgICB2b2lkIHBsYXkodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHBh
dXNlKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCB0b2dnbGVQbGF5U3RhdGUodWludDY0
X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGJlZ2luU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJ
ZCk7CisgICAgdm9pZCBlbmRTY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lk
IHNlZWtUb1RpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSk7CisgICAgdm9pZCBm
YXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKTsKKyAgICB2b2lkIGJlZ2lu
U2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBiZWdpblNjYW5u
aW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGVuZFNjYW5uaW5nKHVp
bnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2
NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpOworICAgIHZvaWQgc2VsZWN0TGVnaWJsZU1l
ZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpOworCisgICAgV2Vi
UGFnZVByb3h5KiBtX3BhZ2U7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgTW9kZWxJbnRlcmZhY2VU
dXBsZT4gbV9jb250ZXh0TWFwOworICAgIHVpbnQ2NF90IG1fY29udHJvbHNNYW5hZ2VyQ29udGV4
dElkIHsgMCB9OworICAgIEhhc2hNYXA8dWludDY0X3QsIGludD4gbV9jbGllbnRDb3VudHM7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwg
KFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKworI2Vu
ZGlmIC8vIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDAzYTRiNGM2MDE1
OTcyODMwODNlYmZjMzAwNjJkOTIyMTU0ZmRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbgpAQCAtMCwwICsxLDM5IEBACisjIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
IyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
CisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkpCittZXNzYWdlcyAtPiBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkgeworICAgIFJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCisg
ICAgU2V0Q3VycmVudFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUs
IGRvdWJsZSBob3N0VGltZSkKKyAgICBTZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4dElk
LCBkb3VibGUgYnVmZmVyZWRUaW1lKQorICAgIFNldFNlZWthYmxlUmFuZ2VzVmVjdG9yKHVpbnQ2
NF90IGNvbnRleHRJZCwgVmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IHJhbmdlcykK
KyAgICBTZXRDYW5QbGF5RmFzdFJldmVyc2UodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVl
KQorICAgIFNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwg
VmVjdG9yPFN0cmluZz4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKKyAgICBTZXRM
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0
cmluZz4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKKyAgICBTZXRFeHRlcm5hbFBs
YXliYWNrUHJvcGVydGllcyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgdWludDMy
X3QgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCisgICAgU2V0V2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGRpc2FibGVk
KQorICAgIFNldER1cmF0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKQor
ICAgIFNldFJhdGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZG91YmxlIHJh
dGUpCisgICAgU2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcldpdGhJRCh1aW50NjRfdCBjb250
ZXh0SWQpCisgICAgQ2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpCit9CisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyMjhhNzRkNTdhMTE2NGZh
ZWQ2NTk4YmEzOTI5NjA1MjMwYzY3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCkBAIC0w
LDAgKzEsMzc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCIKKworI2lmIFBMQVRGT1JNKElPUykgfHwg
KFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKworI2lt
cG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
TWVzc2FnZXMuaCIKKyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBvcnQgPFdlYkNvcmUvVGlt
ZVJhbmdlcy5oPgorI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworI3ByYWdtYSBtYXJrIC0g
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxDb250ZXh0OjpwbGF5KCkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21h
bmFnZXItPnBsYXkobV9jb250ZXh0SWQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsQ29udGV4dDo6cGF1c2UoKQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFu
YWdlci0+cGF1c2UobV9jb250ZXh0SWQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsQ29udGV4dDo6dG9nZ2xlUGxheVN0YXRlKCkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAg
ICAgICBtX21hbmFnZXItPnRvZ2dsZVBsYXlTdGF0ZShtX2NvbnRleHRJZCk7Cit9CisKK3ZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpiZWdpblNjcnViYmluZygpCit7CisgICAg
aWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT5iZWdpblNjcnViYmluZyhtX2NvbnRl
eHRJZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjplbmRTY3J1
YmJpbmcoKQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+ZW5kU2Ny
dWJiaW5nKG1fY29udGV4dElkKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENv
bnRleHQ6OnNlZWtUb1RpbWUoZG91YmxlIHRpbWUpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAg
ICAgICAgbV9tYW5hZ2VyLT5zZWVrVG9UaW1lKG1fY29udGV4dElkLCB0aW1lKTsKK30KKwordm9p
ZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OmZhc3RTZWVrKGRvdWJsZSB0aW1lKQor
eworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+ZmFzdFNlZWsobV9jb250
ZXh0SWQsIHRpbWUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6
YmVnaW5TY2FubmluZ0ZvcndhcmQoKQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1f
bWFuYWdlci0+YmVnaW5TY2FubmluZ0ZvcndhcmQobV9jb250ZXh0SWQpOworfQorCit2b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKCkKK3sK
KyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPmJlZ2luU2Nhbm5pbmdCYWNr
d2FyZChtX2NvbnRleHRJZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250
ZXh0OjplbmRTY2FubmluZygpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5h
Z2VyLT5lbmRTY2FubmluZyhtX2NvbnRleHRJZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxDb250ZXh0OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IG9wdGlvbklk
KQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+c2VsZWN0QXVkaW9N
ZWRpYU9wdGlvbihtX2NvbnRleHRJZCwgb3B0aW9uSWQpOworfQorCit2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsQ29udGV4dDo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IG9w
dGlvbklkKQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+c2VsZWN0
TGVnaWJsZU1lZGlhT3B0aW9uKG1fY29udGV4dElkLCBvcHRpb25JZCk7Cit9CisKKyNwcmFnbWEg
bWFyayAtIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eQorCitSZWZQdHI8V2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5PiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNy
ZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkocGFnZSkpOworfQorCitXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShXZWJQYWdlUHJv
eHkmIHBhZ2UpCisgICAgOiBtX3BhZ2UoJnBhZ2UpCit7CisgICAgbV9wYWdlLT5wcm9jZXNzKCku
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworfQor
CitXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6On5XZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkoKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisgICAgaW52
YWxpZGF0ZSgpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aW52
YWxpZGF0ZSgpCit7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlID0gbnVsbHB0cjsKKworICAg
IGZvciAoYXV0byYgdHVwbGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgUmVm
UHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4gbW9kZWw7CisgICAgICAgIFJlZlB0
cjxQbGF0Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZT4gaW50ZXJmYWNlOworICAgICAg
ICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IHR1cGxlOworCisgICAgICAgIGludGVyZmFj
ZS0+aW52YWxpZGF0ZSgpOworICAgIH0KKworICAgIG1fY29udGV4dE1hcC5jbGVhcigpOworICAg
IG1fY2xpZW50Q291bnRzLmNsZWFyKCk7Cit9CisKK1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6TW9kZWxJbnRlcmZhY2VUdXBsZSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBSZWY8
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtb2RlbCA9IFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQpOworICAgIFJlZjxQbGF0Zm9y
bVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZT4gaW50ZXJmYWNlID0gUGxhdGZvcm1XZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2U6OmNyZWF0ZSgpOworCisgICAgaW50ZXJmYWNlLT5zZXRXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbCgmbW9kZWwuZ2V0KCkpOworCisgICAgcmV0dXJuIHN0ZDo6bWFr
ZV90dXBsZShXVEZNb3ZlKG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKK30KKworV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpNb2RlbEludGVyZmFjZVR1cGxlJiBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNv
bnRleHRJZCkKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fY29udGV4dE1hcC5hZGQoY29udGV4
dElkLCBNb2RlbEludGVyZmFjZVR1cGxlKCkpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRy
eSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGNyZWF0ZU1vZGVsQW5kSW50
ZXJmYWNlKGNvbnRleHRJZCk7CisgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7
Cit9CisKK1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dCYgV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjplbnN1cmVNb2RlbCh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgcmV0
dXJuICpzdGQ6OmdldDwwPihlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpKTsKK30K
KworUGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UmIFdlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6ZW5zdXJlSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAg
ICByZXR1cm4gKnN0ZDo6Z2V0PDE+KGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCkp
OworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YWRkQ2xpZW50Rm9y
Q29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Ns
aWVudENvdW50cy5hZGQoY29udGV4dElkLCAxKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0Vu
dHJ5KQorICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKys7Cit9CisKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZW1vdmVDbGllbnRGb3JDb250ZXh0KHVpbnQ2
NF90IGNvbnRleHRJZCkKK3sKKyAgICBBU1NFUlQobV9jbGllbnRDb3VudHMuY29udGFpbnMoY29u
dGV4dElkKSk7CisKKyAgICBpbnQgY2xpZW50Q291bnQgPSBtX2NsaWVudENvdW50cy5nZXQoY29u
dGV4dElkKTsKKyAgICBBU1NFUlQoY2xpZW50Q291bnQgPiAwKTsKKyAgICBjbGllbnRDb3VudC0t
OworCisgICAgaWYgKGNsaWVudENvdW50IDw9IDApIHsKKyAgICAgICAgbV9jbGllbnRDb3VudHMu
cmVtb3ZlKGNvbnRleHRJZCk7CisgICAgICAgIG1fY29udGV4dE1hcC5yZW1vdmUoY29udGV4dElk
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY2xpZW50Q291bnRzLnNldChjb250
ZXh0SWQsIGNsaWVudENvdW50KTsKK30KKworI3ByYWdtYSBtYXJrIE1lc3NhZ2VzIGZyb20gV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcgorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6c2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcldpdGhJRCh1aW50NjRfdCBjb250ZXh0
SWQpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRl
eHRJZCA9PSBjb250ZXh0SWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2NvbnRyb2xz
TWFuYWdlckNvbnRleHRJZCkKKyAgICAgICAgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRy
b2xzTWFuYWdlckNvbnRleHRJZCk7CisKKyAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9
IGNvbnRleHRJZDsKKyAgICBlbnN1cmVJbnRlcmZhY2UobV9jb250cm9sc01hbmFnZXJDb250ZXh0
SWQpLmVuc3VyZUNvbnRyb2xzTWFuYWdlcigpOworICAgIGFkZENsaWVudEZvckNvbnRleHQobV9j
b250cm9sc01hbmFnZXJDb250ZXh0SWQpOworCisgICAgbV9wYWdlLT52aWRlb0NvbnRyb2xzTWFu
YWdlckRpZENoYW5nZSgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dElkKTsKKyNl
bmRpZgorfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y2xlYXJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlcigpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICghbV9j
b250cm9sc01hbmFnZXJDb250ZXh0SWQpCisgICAgICAgIHJldHVybjsKKworICAgIHJlbW92ZUNs
aWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOworICAgIG1fY29udHJv
bHNNYW5hZ2VyQ29udGV4dElkID0gMDsKKyAgICBtX3BhZ2UtPnZpZGVvQ29udHJvbHNNYW5hZ2Vy
RGlkQ2hhbmdlKCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OnJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgZW5zdXJl
SW50ZXJmYWNlKGNvbnRleHRJZCkucmVzZXRNZWRpYVN0YXRlKCk7Cit9CisKK3ZvaWQgV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRDdXJyZW50VGltZSh1aW50NjRfdCBjb250ZXh0
SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGhvc3RUaW1lKQoreworICAgIGVuc3VyZUlu
dGVyZmFjZShjb250ZXh0SWQpLnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lLCBob3N0VGltZSk7
Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRCdWZmZXJlZFRp
bWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQoreworICAgIGVuc3Vy
ZUludGVyZmFjZShjb250ZXh0SWQpLnNldEJ1ZmZlcmVkVGltZShidWZmZXJlZFRpbWUpOworfQor
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0U2Vla2FibGVSYW5nZXNW
ZWN0b3IodWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91Ymxl
Pj4gcmFuZ2VzKQoreworICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiB0aW1lUmFuZ2VzID0gVGltZVJh
bmdlczo6Y3JlYXRlKCk7CisgICAgZm9yIChjb25zdCBhdXRvJiByYW5nZSA6IHJhbmdlcykgewor
ICAgICAgICBBU1NFUlQoaXNmaW5pdGUocmFuZ2UuZmlyc3QpKTsKKyAgICAgICAgQVNTRVJUKGlz
ZmluaXRlKHJhbmdlLnNlY29uZCkpOworICAgICAgICBBU1NFUlQocmFuZ2Uuc2Vjb25kID49IHJh
bmdlLmZpcnN0KTsKKyAgICAgICAgdGltZVJhbmdlcy0+YWRkKHJhbmdlLmZpcnN0LCByYW5nZS5z
ZWNvbmQpOworICAgIH0KKworICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldFNlZWth
YmxlUmFuZ2VzKCp0aW1lUmFuZ2VzKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OnNldENhblBsYXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wg
dmFsdWUpCit7CisgICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0Q2FuUGxheUZhc3RS
ZXZlcnNlKHZhbHVlKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9y
PFN0cmluZz4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBlbnN1cmVJ
bnRlcmZhY2UoY29udGV4dElkKS5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25z
LCBzZWxlY3RlZEluZGV4KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBW
ZWN0b3I8U3RyaW5nPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQoreworICAgIGVu
c3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMo
b3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpzZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllcyh1aW50NjRfdCBjb250ZXh0
SWQsIGJvb2wgZW5hYmxlZCwgdWludDMyX3QgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERl
dmljZU5hbWUpCit7CisgICAgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpFeHRlcm5hbFBs
YXliYWNrVGFyZ2V0VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZT4odGFyZ2V0VHlwZSk7CisgICAgQVNT
RVJUKHR5cGUgPT0gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpUYXJnZXRUeXBlQWlyUGxh
eSB8fCB0eXBlID09IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZVRWT3V0
IHx8IHR5cGUgPT0gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpUYXJnZXRUeXBlTm9uZSk7
CisKKyAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4dElkKS5zZXRFeHRlcm5hbFBsYXliYWNrKGVu
YWJsZWQsIHR5cGUsIGxvY2FsaXplZERldmljZU5hbWUpOworfQorCit2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQodWlu
dDY0X3QgY29udGV4dElkLCBib29sIGRpc2FibGVkKQoreworICAgIGVuc3VyZUludGVyZmFjZShj
b250ZXh0SWQpLnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGRpc2FibGVkKTsKK30K
Kwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldER1cmF0aW9uKHVpbnQ2
NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKQoreworICAgIGVuc3VyZUludGVyZmFjZShj
b250ZXh0SWQpLnNldER1cmF0aW9uKGR1cmF0aW9uKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnNldFJhdGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxh
eWluZywgZG91YmxlIHJhdGUpCit7CisgICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0
UmF0ZShpc1BsYXlpbmcsIHJhdGUpOworfQorCisjcHJhZ21hIG1hcmsgTWVzc2FnZXMgdG8gV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcgorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6cGxheSh1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJZCksIG1fcGFnZS0+
cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cGF1
c2UodWludDY0X3QgY29udGV4dElkKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6UGF1c2UoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQo
KSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp0b2dnbGVQbGF5
U3RhdGUodWludDY0X3QgY29udGV4dElkKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRlKGNvbnRleHRJZCksIG1f
cGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6YmVnaW5TY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQoreworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY3J1YmJpbmcoY29u
dGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjplbmRTY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQoreworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5kU2NydWJi
aW5nKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6c2Vla1RvVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJs
ZSB0aW1lKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6U2Vla1RvVGltZShjb250ZXh0SWQsIHRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
K30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmZhc3RTZWVrKHVpbnQ2
NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpGYXN0U2Vlayhjb250ZXh0SWQsIHRpbWUpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5p
bmdGb3J3YXJkKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKHVpbnQ2NF90
IGNvbnRleHRJZCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNrd2FyZChjb250ZXh0SWQpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuZFNj
YW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVuZFNjYW5uaW5nKGNvbnRleHRJZCksIG1fcGFn
ZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4
KQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6U2VsZWN0QXVkaW9NZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSwgbV9wYWdlLT5wYWdl
SUQoKSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RM
ZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKK3sK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNl
bGVjdExlZ2libGVNZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSwgbV9wYWdlLT5wYWdlSUQo
KSk7Cit9CisKK1BsYXRmb3JtV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKiBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgpCit7CisgICAg
aWYgKCFtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgCisgICAgYXV0byYgaW50ZXJmYWNlID0gZW5zdXJlSW50ZXJmYWNlKG1fY29udHJvbHNN
YW5hZ2VyQ29udGV4dElkKTsKKyAgICByZXR1cm4gJmludGVyZmFjZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMp
ICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5LmgKaW5kZXggY2QwZDJiZjIxOWZlOTg1MzhlY2Y3NDg3YTc4OGMzNjY4ZTg4MTY3Ny4u
ZTRiNzJlZDUxMWJhMDRmOWQ3ZjM3MDliMzNlOWY1ZTc4OWUwNzNkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkuaApAQCAtNTMsMTUgKzUzLDE3IEBAIHR5cGVkZWYgV2ViQ29yZTo6V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjIFBsYXRmb3JtV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxDb250ZXh0OwogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OwogCiBjbGFz
cyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQgZmluYWw6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4sIHB1YmxpYyBXZWJDb3JlOjpXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbCwgcHVibGljIFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkNoYW5n
ZU9ic2VydmVyICB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbENvbnRleHQ+IGNyZWF0ZShXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkmIG1hbmFn
ZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBzdGF0aWMgUmVmPFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsQ29udGV4dD4gY3JlYXRlKFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSYgbWFu
YWdlciwgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0JiBwbGF5YmFja1Nlc3Npb25Nb2Rl
bCwgdWludDY0X3QgY29udGV4dElkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0KG1hbmFnZXIsIGNvbnRleHRJZCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQobWFuYWdlciwgcGxheWJhY2tTZXNzaW9uTW9kZWwsIGNvbnRleHRJZCkpOwogICAgIH0KLSAg
ICB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQoKSB7IH0KKyAgICB2aXJ0
dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQoKTsKIAogICAgIHZvaWQgaW52YWxp
ZGF0ZSgpIHsgbV9tYW5hZ2VyID0gbnVsbHB0cjsgfQogCkBAIC02OSwxMSArNzEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRMYXllckhvc3RWaWV3KFJldGFpblB0cjxQbGF0Zm9ybVZpZXc+JiYg
bGF5ZXJIb3N0VmlldykgeyBtX2xheWVySG9zdFZpZXcgPSBXVEZNb3ZlKGxheWVySG9zdFZpZXcp
OyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0KFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQot
ICAgICAgICA6IG1fbWFuYWdlcigmbWFuYWdlcikKLSAgICAgICAgLCBtX2NvbnRleHRJZChjb250
ZXh0SWQpCi0gICAgewotICAgIH0KKyAgICBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQo
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5JiwgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxD
b250ZXh0JiwgdWludDY0X3QpOwogCiAgICAgLy8gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwKICAg
ICB2b2lkIHBsYXkoKSBvdmVycmlkZTsKQEAgLTEwMiwxMyArMTAwLDE0IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKSBvdmVycmlkZTsKIAogICAgIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSogbV9tYW5hZ2VyOworICAgIFJlZjxXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+IG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7CiAgICAgdWlu
dDY0X3QgbV9jb250ZXh0SWQ7CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtVmlldyAqPiBtX2xheWVy
SG9zdFZpZXc7CiB9OwogCiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgOiBw
dWJsaWMgUmVmQ291bnRlZDxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+LCBwcml2YXRl
IElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYpOworICAgIHN0
YXRpYyBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUGFn
ZVByb3h5JiwgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Jik7CiAgICAgdmlydHVhbCB+
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUo
KTsKQEAgLTExOSwxMiArMTE4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlKCk7CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdDsKIAotICAgIFBsYXRm
b3JtV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKiBjb250cm9sc01hbmFnZXJJbnRlcmZhY2Uo
KTsKLQogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxD
b250ZXh0OwogCi0gICAgZXhwbGljaXQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KFdl
YlBhZ2VQcm94eSYpOworICAgIGV4cGxpY2l0IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eShXZWJQYWdlUHJveHkmLCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmKTsKICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29k
ZXImKSBvdmVycmlkZTsKIAogICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxDb250ZXh0PiwgUmVmUHRyPFBsYXRmb3JtV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlPj4gTW9kZWxJbnRlcmZhY2VUdXBsZTsKQEAgLTEzNywyMCArMTM0LDcgQEAgcHJp
dmF0ZToKIAogICAgIC8vIE1lc3NhZ2VzIGZyb20gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcgog
ICAgIHZvaWQgc2V0dXBGdWxsc2NyZWVuV2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDMy
X3QgdmlkZW9MYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsUmVjdCwgZmxv
YXQgaG9zdGluZ1NjYWxlRmFjdG9yLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZSk7Ci0gICAgdm9p
ZCBzZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyV2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0g
ICAgdm9pZCBjbGVhclZpZGVvQ29udHJvbHNNYW5hZ2VyKCk7Ci0gICAgdm9pZCByZXNldE1lZGlh
U3RhdGUodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHNldEN1cnJlbnRUaW1lKHVpbnQ2
NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgaG9zdFRpbWUpOwotICAg
IHZvaWQgc2V0QnVmZmVyZWRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVk
VGltZSk7CiAgICAgdm9pZCBzZXRWaWRlb0RpbWVuc2lvbnModWludDY0X3QgY29udGV4dElkLCBi
b29sIGhhc1ZpZGVvLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKLSAgICB2b2lk
IHNldFNlZWthYmxlUmFuZ2VzVmVjdG9yKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPHN0ZDo6
cGFpcjxkb3VibGUsIGRvdWJsZT4+IHJhbmdlcyk7Ci0gICAgdm9pZCBzZXRDYW5QbGF5RmFzdFJl
dmVyc2UodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKTsKLSAgICB2b2lkIHNldEF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4g
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCk7Ci0gICAgdm9pZCBzZXRMZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4gb3B0
aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCk7Ci0gICAgdm9pZCBzZXRFeHRlcm5hbFBsYXli
YWNrUHJvcGVydGllcyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgdWludDMyX3Qg
dGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpOwotICAgIHZvaWQgc2V0V2ly
ZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQodWludDY0X3QgY29udGV4dElkLCBib29sKTsKLSAg
ICB2b2lkIHNldER1cmF0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKTsK
LSAgICB2b2lkIHNldFJhdGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZG91
YmxlIHJhdGUpOwogICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7
CiAgICAgdm9pZCBleGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6Oklu
dFJlY3QgZmluYWxSZWN0KTsKICAgICB2b2lkIGNsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNv
bnRleHRJZCk7CkBAIC0xNjAsMTYgKzE0NCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIC8v
IE1lc3NhZ2VzIHRvIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIKLSAgICB2b2lkIHBsYXkodWlu
dDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0g
ICAgdm9pZCB0b2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGJl
Z2luU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBlbmRTY3J1YmJpbmco
dWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHNlZWtUb1RpbWUodWludDY0X3QgY29udGV4
dElkLCBkb3VibGUgdGltZSk7Ci0gICAgdm9pZCBmYXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQs
IGRvdWJsZSB0aW1lKTsKLSAgICB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNv
bnRleHRJZCk7Ci0gICAgdm9pZCBiZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3QgY29udGV4
dElkKTsKLSAgICB2b2lkIGVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9p
ZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwogICAgIHZvaWQgZGlkU2V0
dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBkaWRFeGl0RnVsbHNj
cmVlbih1aW50NjRfdCBjb250ZXh0SWQpOwpAQCAtMTc3LDEyICsxNTEsMTEgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAg
dm9pZCBzZXRWaWRlb0xheWVyRnJhbWUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpGbG9h
dFJlY3QpOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHkodWludDY0X3QgY29udGV4dElk
LCBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5KTsKLSAgICB2
b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBp
bmRleCk7Ci0gICAgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4
dElkLCB1aW50NjRfdCBpbmRleCk7CiAgICAgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQodWlu
dDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGUpOwogICAgIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2
NF90IGNvbnRleHRJZCk7CiAKICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKKyAgICBSZWY8V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBNb2RlbEludGVyZmFjZVR1cGxlPiBtX2NvbnRleHRN
YXA7CiAgICAgdWludDY0X3QgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgeyAwIH07CiAgICAg
SGFzaE1hcDx1aW50NjRfdCwgaW50PiBtX2NsaWVudENvdW50czsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDAzMDZlMzFmNzhhMDUwMTg4YmE0
OTQ3MDQ0MmFjOWVhNjdlYmI0NWYuLjE5M2E1MzgxODk0ZTBjN2FiNjQyY2Y2MTdkMzhjOGIxMmUw
YmZiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
bgpAQCAtMjIsMjUgKzIyLDEyIEBACiAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShN
QUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiBtZXNzYWdlcyAtPiBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgewotICAgIFJlc2V0TWVkaWFTdGF0ZSh1aW50NjRf
dCBjb250ZXh0SWQpCi0gICAgU2V0Q3VycmVudFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3Vi
bGUgY3VycmVudFRpbWUsIGRvdWJsZSBob3N0VGltZSkKLSAgICBTZXRCdWZmZXJlZFRpbWUodWlu
dDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQogICAgIFNldFZpZGVvRGltZW5z
aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFzVmlkZW8sIHVuc2lnbmVkIHdpZHRoLCB1
bnNpZ25lZCBoZWlnaHQpCi0gICAgU2V0U2Vla2FibGVSYW5nZXNWZWN0b3IodWludDY0X3QgY29u
dGV4dElkLCBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2VzKQotICAgIFNl
dENhblBsYXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCi0gICAg
U2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8
U3RyaW5nPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQotICAgIFNldExlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8U3RyaW5nPiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQotICAgIFNldEV4dGVybmFsUGxheWJhY2tQ
cm9wZXJ0aWVzKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBlbmFibGVkLCB1aW50MzJfdCB0YXJn
ZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKLSAgICBTZXRXaXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZGlzYWJsZWQpCi0gICAg
U2V0RHVyYXRpb24odWludDY0X3QgY29udGV4dElkLCBkb3VibGUgZHVyYXRpb24pCi0gICAgU2V0
UmF0ZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBkb3VibGUgcmF0ZSkKICAg
ICBTZXR1cEZ1bGxzY3JlZW5XaXRoSUQodWludDY0X3QgY29udGV4dElkLCB1aW50MzJfdCB2aWRl
b0xheWVySUQsIFdlYkNvcmU6OkludFJlY3QgaW5pdGlhbFJlY3QsIGZsb2F0IGhvc3RpbmdTY2Fs
ZUZhY3RvciwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlIHZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZSkKICAg
ICBFbnRlckZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIEV4aXRGdWxsc2NyZWVu
KHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SW50UmVjdCBmaW5hbFJlY3QpCiAgICAgQ2xl
YW51cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIFByZXBhcmVkVG9SZXR1cm5U
b0lubGluZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmlzaWJsZSwgV2ViQ29yZTo6SW50UmVj
dCBpbmxpbmVSZWN0KQotICAgIFNldFVwVmlkZW9Db250cm9sc01hbmFnZXJXaXRoSUQodWludDY0
X3QgY29udGV4dElkKQotICAgIENsZWFyVmlkZW9Db250cm9sc01hbmFnZXIoKQogI2lmIFBMQVRG
T1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIEV4aXRGdWxs
c2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3Jl
ZW5Nb2RlKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCBhYzkz
ZjgzZDY1MmI2ZjU3MmUxNWE0MTk1YzAwYTI4MzliMzVhNTFiLi41NTY1ODMwMjM0YjdhOGJmNGFh
NjQ4NDE4OTQwYWJjODU3M2RjMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0K
QEAgLTI5LDYgKzI5LDcgQEAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAKICNpbXBvcnQgIldlYlBhZ2VQcm94
eS5oIgorI2ltcG9ydCAiV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0
ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJN
ZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5TWVzc2Fn
ZXMuaCIKQEAgLTExMSw2NCArMTEyLDY1IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiAKICNwcmFnbWEgbWFyayAtIFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dAogCitXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENv
bnRleHQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dChXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkmIG1hbmFnZXIsIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dCYgcGxh
eWJhY2tTZXNzaW9uTW9kZWwsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICA6IG1fbWFuYWdlcigm
bWFuYWdlcikKKyAgICAsIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwocGxheWJhY2tTZXNzaW9uTW9k
ZWwpCisgICAgLCBtX2NvbnRleHRJZChjb250ZXh0SWQpCit7Cit9CisKK1dlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsQ29udGV4dDo6fldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCgpCit7Cit9
CisKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpwbGF5KCkKIHsKLSAgICBp
ZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnBsYXkobV9jb250ZXh0SWQpOworICAg
IG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPnBsYXkoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENvbnRleHQ6OnBhdXNlKCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAg
ICBtX21hbmFnZXItPnBhdXNlKG1fY29udGV4dElkKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1v
ZGVsLT5wYXVzZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6
dG9nZ2xlUGxheVN0YXRlKCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFn
ZXItPnRvZ2dsZVBsYXlTdGF0ZShtX2NvbnRleHRJZCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25N
b2RlbC0+dG9nZ2xlUGxheVN0YXRlKCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDb250ZXh0OjpiZWdpblNjcnViYmluZygpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAg
ICAgbV9tYW5hZ2VyLT5iZWdpblNjcnViYmluZyhtX2NvbnRleHRJZCk7CisgICAgbV9wbGF5YmFj
a1Nlc3Npb25Nb2RlbC0+YmVnaW5TY3J1YmJpbmcoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENvbnRleHQ6OmVuZFNjcnViYmluZygpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikK
LSAgICAgICAgbV9tYW5hZ2VyLT5lbmRTY3J1YmJpbmcobV9jb250ZXh0SWQpOworICAgIG1fcGxh
eWJhY2tTZXNzaW9uTW9kZWwtPmVuZFNjcnViYmluZygpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dDo6c2Vla1RvVGltZShkb3VibGUgdGltZSkKIHsKLSAgICBpZiAo
bV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnNlZWtUb1RpbWUobV9jb250ZXh0SWQsIHRp
bWUpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPnNlZWtUb1RpbWUodGltZSk7CiB9CiAK
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpmYXN0U2Vlayhkb3VibGUgdGlt
ZSkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPmZhc3RTZWVrKG1f
Y29udGV4dElkLCB0aW1lKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5mYXN0U2Vlayh0
aW1lKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmJlZ2luU2Nh
bm5pbmdGb3J3YXJkKCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXIt
PmJlZ2luU2Nhbm5pbmdGb3J3YXJkKG1fY29udGV4dElkKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lv
bk1vZGVsLT5iZWdpblNjYW5uaW5nRm9yd2FyZCgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsQ29udGV4dDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKCkKIHsKLSAgICBpZiAobV9t
YW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPmJlZ2luU2Nhbm5pbmdCYWNrd2FyZChtX2NvbnRl
eHRJZCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+YmVnaW5TY2FubmluZ0JhY2t3YXJk
KCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjplbmRTY2Fubmlu
ZygpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5lbmRTY2Fubmlu
ZyhtX2NvbnRleHRJZCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+ZW5kU2Nhbm5pbmco
KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RGdWxs
c2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9k
ZSkKQEAgLTE5MSwxNCArMTkzLDEyIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250
ZXh0OjpzZXRWaWRlb0xheWVyR3Jhdml0eShXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzCiAKIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVp
bnQ2NF90IG9wdGlvbklkKQogewotICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdl
ci0+c2VsZWN0QXVkaW9NZWRpYU9wdGlvbihtX2NvbnRleHRJZCwgb3B0aW9uSWQpOworICAgIG1f
cGxheWJhY2tTZXNzaW9uTW9kZWwtPnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24ob3B0aW9uSWQpOwog
fQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2VsZWN0TGVnaWJsZU1l
ZGlhT3B0aW9uKHVpbnQ2NF90IG9wdGlvbklkKQogewotICAgIGlmIChtX21hbmFnZXIpCi0gICAg
ICAgIG1fbWFuYWdlci0+c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKG1fY29udGV4dElkLCBvcHRp
b25JZCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+c2VsZWN0TGVnaWJsZU1lZGlhT3B0
aW9uKG9wdGlvbklkKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6
OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKQEAgLTI0NCwxMyArMjQ0LDE0IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKQog
CiAjcHJhZ21hIG1hcmsgLSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkKIAotUmVmUHRy
PFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlKQorUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eT4gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUo
V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmIHBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShwYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkocGFnZSwgcGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5KSk7CiB9CiAKLVdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6V2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSkKK1dlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KFdlYlBh
Z2VQcm94eSYgcGFnZSwgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5JiBwbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkpCiAgICAgOiBtX3BhZ2UoJnBhZ2UpCisgICAgLCBtX3BsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eShwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCiB7CiAgICAg
bV9wYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdl
SUQoKSwgKnRoaXMpOwogfQpAQCAtMzEzLDggKzMxNCwxMCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogCiBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250
ZXh0SWQpCiB7Ci0gICAgUmVmPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4gbW9kZWwg
PSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElk
KTsKLSAgICBSZWY8UGxhdGZvcm1XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U+IGludGVyZmFj
ZSA9IFBsYXRmb3JtV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpjcmVhdGUoKTsKKyAgICBh
dXRvJiBwbGF5YmFja1Nlc3Npb25Nb2RlbCA9IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
LT5lbnN1cmVNb2RlbChjb250ZXh0SWQpOworICAgIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bENvbnRleHQ+IG1vZGVsID0gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpjcmVhdGUo
KnRoaXMsIHBsYXliYWNrU2Vzc2lvbk1vZGVsLCBjb250ZXh0SWQpOworICAgIGF1dG8mIHBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZSA9IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LT5lbnN1
cmVJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBSZWY8UGxhdGZvcm1XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2U+IGludGVyZmFjZSA9IFBsYXRmb3JtV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlOjpjcmVhdGUocGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKTsKIAogICAgIGludGVyZmFjZS0+
c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoJm1vZGVsLmdldCgpKTsKICAgICBpbnRlcmZhY2Ut
PnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKCZtb2RlbC5nZXQoKSk7CkBAIC00
MDAsMTA4ICs0MDMsMTEgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNl
dHVwRnVsbHNjcmVlbldpdGhJRCh1aW50NjRfdCBjb250ZXh0SWQsIHUKICNlbmRpZgogfQogCi12
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VXBWaWRlb0NvbnRyb2xzTWFu
YWdlcldpdGhJRCh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAg
IGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9PSBjb250ZXh0SWQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKLSAgICAgICAgcmVt
b3ZlQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCk7Ci0KLSAgICBt
X2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IGNvbnRleHRJZDsKLSAgICBlbnN1cmVJbnRlcmZh
Y2UobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpLmVuc3VyZUNvbnRyb2xzTWFuYWdlcigpOwot
ICAgIGFkZENsaWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOwotCi0g
ICAgbV9wYWdlLT52aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0oY29udGV4dElkKTsKLSNlbmRpZgotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6Y2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpCi17Ci0jaWYgUExB
VEZPUk0oTUFDKQotICAgIGlmICghbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJD
b250ZXh0SWQpOwotICAgIG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkID0gMDsKLSAgICBtX3Bh
Z2UtPnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBj
b250ZXh0SWQpCi17Ci0gICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkucmVzZXRNZWRpYVN0
YXRlKCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRDdXJy
ZW50VGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGhv
c3RUaW1lKQotewotICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldEN1cnJlbnRUaW1l
KGN1cnJlbnRUaW1lLCBob3N0VGltZSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpzZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVm
ZmVyZWRUaW1lKQotewotICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldEJ1ZmZlcmVk
VGltZShidWZmZXJlZFRpbWUpOwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6c2V0VmlkZW9EaW1lbnNpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBoYXNWaWRl
bywgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKIHsKICAgICBlbnN1cmVJbnRlcmZh
Y2UoY29udGV4dElkKS5zZXRWaWRlb0RpbWVuc2lvbnMoaGFzVmlkZW8sIHdpZHRoLCBoZWlnaHQp
OwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0U2Vla2FibGVS
YW5nZXNWZWN0b3IodWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwg
ZG91YmxlPj4gcmFuZ2VzKQotewotICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiB0aW1lUmFuZ2VzID0g
VGltZVJhbmdlczo6Y3JlYXRlKCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiByYW5nZSA6IHJhbmdl
cykgewotICAgICAgICBBU1NFUlQoaXNmaW5pdGUocmFuZ2UuZmlyc3QpKTsKLSAgICAgICAgQVNT
RVJUKGlzZmluaXRlKHJhbmdlLnNlY29uZCkpOwotICAgICAgICBBU1NFUlQocmFuZ2Uuc2Vjb25k
ID49IHJhbmdlLmZpcnN0KTsKLSAgICAgICAgdGltZVJhbmdlcy0+YWRkKHJhbmdlLmZpcnN0LCBy
YW5nZS5zZWNvbmQpOwotICAgIH0KLQotICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNl
dFNlZWthYmxlUmFuZ2VzKCp0aW1lUmFuZ2VzKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OnNldENhblBsYXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQs
IGJvb2wgdmFsdWUpCi17Ci0gICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0Q2FuUGxh
eUZhc3RSZXZlcnNlKHZhbHVlKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwg
VmVjdG9yPFN0cmluZz4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKLXsKLSAgICBl
bnN1cmVJbnRlcmZhY2UoY29udGV4dElkKS5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhv
cHRpb25zLCBzZWxlY3RlZEluZGV4KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4
dElkLCBWZWN0b3I8U3RyaW5nPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQotewot
ICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpzZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllcyh1aW50NjRfdCBj
b250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgdWludDMyX3QgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2Fs
aXplZERldmljZU5hbWUpCi17Ci0gICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpFeHRl
cm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8V2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZT4odGFyZ2V0VHlwZSk7Ci0g
ICAgQVNTRVJUKHR5cGUgPT0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpUYXJnZXRUeXBl
QWlyUGxheSB8fCB0eXBlID09IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZTo6VGFyZ2V0VHlw
ZVRWT3V0IHx8IHR5cGUgPT0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpUYXJnZXRUeXBl
Tm9uZSk7Ci0gICAgCi0gICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0RXh0ZXJuYWxQ
bGF5YmFjayhlbmFibGVkLCB0eXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLX0KLQotdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBkaXNhYmxlZCkKLXsKLSAgICBlbnN1cmVJ
bnRlcmZhY2UoY29udGV4dElkKS5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChkaXNh
YmxlZCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXREdXJh
dGlvbih1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbikKLXsKLSAgICBlbnN1cmVJ
bnRlcmZhY2UoY29udGV4dElkKS5zZXREdXJhdGlvbihkdXJhdGlvbik7Ci19Ci0KLXZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwg
Ym9vbCBpc1BsYXlpbmcsIGRvdWJsZSByYXRlKQotewotICAgIGVuc3VyZUludGVyZmFjZShjb250
ZXh0SWQpLnNldFJhdGUoaXNQbGF5aW5nLCByYXRlKTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OmVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiB7
CiAgICAgYXV0byYgaW50ZXJmYWNlID0gZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCk7CkBAIC01
NTcsNTYgKzQ2Myw2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpwcmVw
YXJlZFRvUmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkCiAKICNwcmFnbWEgbWFyayBN
ZXNzYWdlcyB0byBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCiAKLXZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlBsYXkoY29udGV4
dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpwYXVzZSh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpQYXVzZShjb250ZXh0SWQpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OnRvZ2dsZVBsYXlTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpUb2dnbGVQbGF5U3RhdGUo
Y29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpiZWdpblNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpCZWdp
blNjcnViYmluZyhjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0
SWQpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpFbmRTY3J1YmJpbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZWVrVG9UaW1lKHVpbnQ2NF90IGNv
bnRleHRJZCwgZG91YmxlIHRpbWUpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZWVrVG9UaW1lKGNvbnRleHRJZCwgdGltZSksIG1fcGFn
ZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
ZmFzdFNlZWsodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSkKLXsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkZhc3RTZWVrKGNvbnRl
eHRJZCwgdGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29udGV4dElk
KQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6QmVnaW5TY2FubmluZ0ZvcndhcmQoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19
Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpiZWdpblNjYW5uaW5nQmFj
a3dhcmQodWludDY0X3QgY29udGV4dElkKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6QmVnaW5TY2FubmluZ0JhY2t3YXJkKGNvbnRleHRJ
ZCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6ZW5kU2Nhbm5pbmcodWludDY0X3QgY29udGV4dElkKQotewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RW5kU2Nhbm5pbmcoY29u
dGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29udGV4dElkLCBX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkK
IHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OlJlcXVlc3RGdWxsc2NyZWVuTW9kZShjb250ZXh0SWQsIG1vZGUpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKQEAgLTY2MywxNiArNTE5LDYgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KHVpbnQ2NF90IGNvbnRleHRJZCwgV2UKICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlNldFZpZGVvTGF5
ZXJHcmF2aXR5RW51bShjb250ZXh0SWQsICh1bnNpZ25lZClncmF2aXR5KSwgbV9wYWdlLT5wYWdl
SUQoKSk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZWxlY3RB
dWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCi17Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZWxl
Y3RBdWRpb01lZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
LX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNlbGVjdExlZ2libGVN
ZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQotewotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2VsZWN0TGVn
aWJsZU1lZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0K
LQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5Nb2RlQ2hh
bmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1vZGVDaGFuZ2VkKGNvbnRleHRJ
ZCwgbW9kZSksIG1fcGFnZS0+cGFnZUlEKCkpOwpAQCAtNjgzLDE1ICs1MjksNiBAQCBib29sIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6aXNWaXNpYmxlKCkgY29uc3QKICAgICByZXR1
cm4gbV9wYWdlLT5pc1ZpZXdWaXNpYmxlKCkgJiYgbV9wYWdlLT5pc0luV2luZG93KCk7CiB9CiAK
LVBsYXRmb3JtV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKiBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgpCi17Ci0gICAgaWYgKCFtX2Nv
bnRyb2xzTWFuYWdlckNvbnRleHRJZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBh
dXRvJiBpbnRlcmZhY2UgPSBlbnN1cmVJbnRlcmZhY2UobV9jb250cm9sc01hbmFnZXJDb250ZXh0
SWQpOwotICAgIHJldHVybiAmaW50ZXJmYWNlOwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRl
eHRJZCkKIHsKICAgICBib29sIGlzVmlld1Zpc2libGUgPSBtX3BhZ2UtPmlzVmlld1Zpc2libGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYjlhMWNj
ZGE3YTNmMTBjYmEwYjkyODQ5MWI3NDY3NTA3OTNlZjdmMC4uZDQ5ZDNjZGMwNzM2NjIyYTA3YmVi
NzM4ZmFkMGE4N2UzNDI4ZGE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTE3MCw2ICsxNzAsMTAgQEAKICNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMv
V2ViUGFnZVByb3h5SW5jbHVkZXMuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2luY2x1
ZGUgIldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oIgorI2VuZGlmCisKIC8vIFRoaXMg
Y29udHJvbHMgd2hhdCBzdHJhdGVneSB3ZSB1c2UgZm9yIG1vdXNlIHdoZWVsIGNvYWxlc2Npbmcu
CiAjZGVmaW5lIE1FUkdFX1dIRUVMX0VWRU5UUyAxCiAKQEAgLTQ3MSw3ICs0NzUsOCBAQCBXZWJQ
YWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNz
UHJveHkmIHByb2Nlc3MsIHVpbgogICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoKnRoaXMsIG1fcGFnZUNsaWVudC5mdWxsU2NyZWVuTWFu
YWdlclByb3h5Q2xpZW50KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZP
Uk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQotICAgIG1fdmlkZW9G
dWxsc2NyZWVuTWFuYWdlciA9IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRl
KCp0aGlzKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIgPSBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OmNyZWF0ZSgqdGhpcyk7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyID0gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoKnRoaXMsICptX3Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXIpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZJQlJBVElPTikKICAg
ICBtX3ZpYnJhdGlvbiA9IFdlYlZpYnJhdGlvblByb3h5OjpjcmVhdGUodGhpcyk7CkBAIC03MDgs
NyArNzEzLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKCkKICAg
ICBtX2Z1bGxTY3JlZW5NYW5hZ2VyID0gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRl
KCp0aGlzLCBtX3BhZ2VDbGllbnQuZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpKTsKICNl
bmRpZgogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKSkKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgPSBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZSgqdGhpcyk7CisgICAgbV9wbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyID0gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUo
KnRoaXMpOworICAgIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6Y3JlYXRlKCp0aGlzLCAqbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyKTsK
ICNlbmRpZgogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKQEAgLTQwMjgsOSArNDAzNCwx
NCBAQCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KiBXZWJQYWdlUHJveHk6OmZ1bGxTY3JlZW5N
YW5hZ2VyKCkKICNlbmRpZgogICAgIAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKLVJlZlB0cjxXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk+IFdlYlBhZ2VQcm94eTo6dmlkZW9GdWxsc2NyZWVuTWFuYWdl
cigpCitXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkqIFdlYlBhZ2VQcm94eTo6cGxheWJh
Y2tTZXNzaW9uTWFuYWdlcigpCiB7Ci0gICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjsKKyAgICByZXR1cm4gbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmdldCgpOworfQorCitXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkqIFdlYlBhZ2VQcm94eTo6dmlkZW9GdWxsc2NyZWVu
TWFuYWdlcigpCit7CisgICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlci5nZXQoKTsK
IH0KICNlbmRpZgogCkBAIC01MDYzLDYgKzUwNzQsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
c2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29uKQogICAgIG1fdmlzaWJs
ZVNjcm9sbGVyVGh1bWJSZWN0ID0gSW50UmVjdCgpOwogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAgIGlm
IChtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIpIHsKKyAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25N
YW5hZ2VyLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlciA9
IG51bGxwdHI7CisgICAgfQogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIpIHsKICAg
ICAgICAgbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIG1f
dmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IG51bGxwdHI7CkBAIC02MDM5LDcgKzYwNTQsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKQogYm9vbCBX
ZWJQYWdlUHJveHk6Omhhc0FjdGl2ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyKCkgY29uc3QKIHsK
ICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAgcmV0dXJuIG1fdmlkZW9G
dWxsc2NyZWVuTWFuYWdlciAmJiBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmNvbnRyb2xzTWFu
YWdlckludGVyZmFjZSgpICYmIG1fbWVkaWFTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6Okhhc0F1ZGlv
T3JWaWRlbzsKKyAgICByZXR1cm4gbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyICYmIG1fcGxheWJh
Y2tTZXNzaW9uTWFuYWdlci0+Y29udHJvbHNNYW5hZ2VySW50ZXJmYWNlKCkgJiYgbV9tZWRpYVN0
YXRlICYgTWVkaWFQcm9kdWNlcjo6SGFzQXVkaW9PclZpZGVvOwogI2Vsc2UKICAgICByZXR1cm4g
ZmFsc2U7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCBlYmExNTEwZmY1YjlhNzA3MTQ2Yjc0MjFhMGQ0MjJkOWFlM2FlZjU0Li5hZDIwMTQ4NzBmNTE1
NzBjZDZiZDAyYjVlOTkxYjU2OWM0MDc1YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC0xOTIsNiArMTkyLDcgQEAgY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0
SXRlbTsKIGNsYXNzIFdlYkNvbnRleHRNZW51UHJveHk7CiBjbGFzcyBXZWJFZGl0Q29tbWFuZFBy
b3h5OwogY2xhc3MgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTsKK2NsYXNzIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTsKIGNsYXNzIFdlYk5hdmlnYXRpb25TdGF0ZTsKIGNsYXNzIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTsKIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7CkBA
IC0zMjgsNyArMzI5LDggQEAgcHVibGljOgogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkq
IGZ1bGxTY3JlZW5NYW5hZ2VyKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi0gICAgUmVmUHRy
PFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gdmlkZW9GdWxsc2NyZWVuTWFuYWdlcigp
OworICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSogcGxheWJhY2tTZXNzaW9uTWFu
YWdlcigpOworICAgIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSogdmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcigpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xNTQ3LDYgKzE1
NDksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5PiBt
X2Z1bGxTY3JlZW5NYW5hZ2VyOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZP
Uk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAgIFJlZlB0cjxX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlcjsK
ICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBtX3ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGRhNTcxZWEwNjRj
NDQ5Mjk5MmRkMzhmODg3ZmU1NTI0MGE5ZmFiMi4uNzgxZjExNGI1YzZiYjhjM2EwYjY0YjZjYzJl
YzkxOTQ3MzJkOGM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTcwNSw2ICsxNzA1LDE0IEBACiAJCUNENzNCQTRFMTMxQUNE
QjcwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDczQkE0ODEzMUFD
RDhFMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OwogCQlDRDczQkE1MzEzMUI2NDVCMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q3M0JB
MzcxMzFBMjlGRTAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCAqLzsgfTsKIAkJ
Q0RBMDQxRjQxQUNFMjEwNTAwNEExM0VDIC8qIEJhY2tCb2FyZFNlcnZpY2VzU1BJLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEwNDFGMzFBQ0UyMTA1
MDA0QTEzRUMgLyogQmFja0JvYXJkU2VydmljZXNTUEkuaCAqLzsgfTsKKwkJQ0RBMjlBMUExQ0JE
QkY0MTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEyOUExODFDQkRCRjQxMDA5MDFD
Q0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbSAqLzsgfTsKKwkJQ0RBMjlBMUIxQ0JE
QkY0MTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTE5MUNCREJGNDEwMDkwMUND
RiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmggKi87IH07CisJCUNEQTI5QTIwMUNCRUI1
RkIwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTFFMUNCRUI1RkIwMDkw
MUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCAqLzsgfTsKKwkJQ0RBMjlB
MjExQ0JFQjVGQjAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTFGMUNC
RUI1RkIwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gKi87IH07
CisJCUNEQTI5QTI4MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQTI5QTI0MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RBMjlBMjkxQ0JFQjY3QTAwOTAx
Q0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMjUxQ0JFQjY3QTAwOTAxQ0NG
IC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlcy5oICovOyB9OworCQlDREEyOUEy
QTFDQkVCNjdBMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQTI5QTI2MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlDREEyOUEyQjFDQkVCNjdBMDA5MDFD
Q0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTI3MUNCRUI2N0EwMDkw
MUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovOyB9Owog
CQlDREMzODJGRTE3MjExNzk5MDA4QTJGQzMgLyogU2VjSXRlbVNoaW1MaWJyYXJ5Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjhBNzgxMzhCNDYw
OTAwQTk1RjQ0IC8qIFNlY0l0ZW1TaGltTGlicmFyeS5tbSAqLzsgfTsKIAkJQ0RDMzgzMDcxNzIx
MTdERDAwOEEyRkMzIC8qIENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMzODJGOTE3MjExNkQzMDA4QTJG
QzMgLyogQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNwcCAqLzsgfTsKIAkJQ0RDMzgzMEMxNzIx
MjI4MjAwOEEyRkMzIC8qIENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDMzgzMEIxNzIxMjFDRTAwOEEyRkMz
IC8qIENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5oICovOyB9OwpAQCAtMzc3Niw2ICszNzg0LDE2
IEBACiAJCUNENzNCQTQ5MTMxQUNEOEUwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1l
c3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q3M0JBNEEx
MzFBQ0Q4RjAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBMDQxRjMxQUNFMjEw
NTAwNEExM0VDIC8qIEJhY2tCb2FyZFNlcnZpY2VzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEJhY2tCb2FyZFNlcnZpY2VzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQTI5QTE4MUNCREJGNDEwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
MjlBMTkxQ0JEQkY0MTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREEyOUExQzFDQkRCRjVCMDA5MDFDQ0Yg
LyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREEyOUExRTFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREEyOUExRjFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREEyOUEyMjFDQkVCNjFBMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RBMjlBMjQxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQTI5QTI1MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQTI5QTI2MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMjlBMjcxQ0JFQjY3QTAw
OTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzM4MkY3MTcyMTE1
MDYwMDhBMkZDMyAvKiBDRk5ldHdvcmsuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDRk5l
dHdvcmsuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ0ZOZXR3
b3JrLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJQ0RDMzgyRjkx
NzIxMTZEMzAwOEEyRkMzIC8qIENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb29raWVTdG9yYWdlU2hpbUxpYnJhcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDREMzODMwNjE3MjExNzk5MDA4QTJGQzMgLyogV2ViUHJvY2Vzc1NoaW0u
ZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJj
b21waWxlZC5tYWNoLW8uZHlsaWIiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBXZWJQcm9j
ZXNzU2hpbS5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTQ2
MzYsNiArNDY1NCw5IEBACiAJCQkJOTk4NkJERDYxQ0E5QTIyMjAwNDgwMEFBIC8qIFdlYkF1dG9t
YXRpb25TZXNzaW9uQ29jb2EubW0gKi8sCiAJCQkJMUFDMDI3M0UxOTY2MjJENjAwQzEyQjc1IC8q
IFdlYlBhZ2VQcm94eUNvY29hLm1tICovLAogCQkJCTdDNDY5NENCMUE0QjUxMEEwMEFENTg0NSAv
KiBXZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSAqLywKKwkJCQlDREEyOUExRTFDQkVCNUZCMDA5
MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmggKi8sCisJCQkJQ0RBMjlB
MjIxQ0JFQjYxQTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbiAqLywKKwkJCQlDREEyOUExRjFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5Lm1tICovLAogCQkJCTdDRTREMjE1MUE0OTE0ODQwMEM3RjE1MiAv
KiBXZWJQcm9jZXNzUG9vbENvY29hLm1tICovLAogCQkJCTFBMDRGNjE3MUE0QTNBN0EwMEEyMUI2
RSAvKiBXZWJQcm9jZXNzUHJveHlDb2NvYS5tbSAqLywKIAkJCQk1MkQ1QTFBQTFDNTc0OTRFMDBE
RTM0QTMgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggKi8sCkBAIC01NTc3LDYg
KzU1OTgsOSBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3QzZF
NzBGOTE4QjJENEEwMDBGMjRFMkUgLyogV2ViUHJvY2Vzc0NvY29hLm1tICovLAorCQkJCUNEQTI5
QTE5MUNCREJGNDEwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmggKi8sCisJ
CQkJQ0RBMjlBMUMxQ0JEQkY1QjAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIu
bWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBMjlBMTgxQ0JEQkY0MTAwOTAxQ0NGIC8qIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXIubW0gKi8sCiAJCQkJNTJENUExQjIxQzU3NDlGMjAwREUzNEEzIC8q
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCAqLywKIAkJCQk1MkQ1QTFCMzFDNTc0OUYyMDBE
RTM0QTMgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk1
MkQ1QTFCNDFDNTc0OUYyMDBERTM0QTMgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSAq
LywKQEAgLTY5NDksNiArNjk3MywxMCBAQAogCQkJCUJDQkQzOTEzMTI1QkIxQTgwMEQyQzI5RiAv
KiBXZWJQYWdlUHJveHlNZXNzYWdlcy5oICovLAogCQkJCTdDNDY5NEM3MUE0QjRFQTAwMEFENTg0
NSAvKiBXZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTdDNDY5
NEM4MUE0QjRFQTEwMEFENTg0NSAvKiBXZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdlcy5oICovLAor
CQkJCUNEQTI5QTI0MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREEyOUEyNTFDQkVCNjdBMDA5MDFDQ0YgLyog
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBMjlBMjYxQ0JF
QjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8sCisJCQkJQ0RBMjlBMjcxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMUEwNDNGNjcxMjUxNEQ4QjAw
RkZCRkI1IC8qIFdlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJ
CQkxQTA0M0Y2ODEyNTE0RDhCMDBGRkJGQjUgLyogV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdl
cy5oICovLAogCQkJCUJDMzA2NkJDMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKQEAgLTc1NTgsNiArNzU4Niw3IEBACiAJCQkJNTE0RDlGNTcxOTEx
OUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFGREU2NUExOTU0QTQyQjAwQzQ4RkZBIC8qIFNlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUEwMDJENDkxOTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQ0RBMjlBMjAxQ0JFQjVGQjAwOTAxQ0NGIC8qIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzUzRTNFMEUxODg3Mzk4
OTAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUM4MUQ1
QTFDMjBFN0UyMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTk1NUE2RUMxQzc5ODBDMjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggaW4g
SGVhZGVycyAqLywKQEAgLTc5ODIsNiArODAxMSw3IEBACiAJCQkJQTVFRkQzOEMxNkIwRTg4QzAw
QjJGMEU4IC8qIFdLUGFnZVZpc2liaWxpdHlUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2
QUI1NDExOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkRBMUU0RkUxOEMwMkI2QTAwREJDOTI5IC8qIFdLUERGVmlldy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQ0RBMjlBMjkxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxMzVBQTkxNzNC
MEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJEQUJBNzc0MUE4MTdFRTYwMEVGMEYxQSAvKiBXS1BsdWdpbkxvYWRQb2xpY3kuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBRkREMzE3MTg5MUM5NDcwMDE1Mzk3MCAvKiBXS1ByZWZlcmVuY2VzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTgwNDIsNiArODA3Miw3IEBACiAJCQkJMzc3RUFENDgxN0UyQzc3
QjAwMkQxOTNEIC8qIFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRjYxMTNFMjkxMjZDRTE5QjAwNTdEMEE3IC8qIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJu
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTNDQzE4RjE5QjA3QjhBMDBEMTRBRUYgLyogV0tVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBMjlBMUIxQ0JE
QkY0MTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQUYwODlCMTkyNjdFRTUwMEI2MzkwQyAvKiBXS1VzZXJTY3JpcHQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTM3N0VBRDQ5MTdFMkM3N0IwMDJEMTkzRCAvKiBXS1VzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFGMDg5RDE5MjY3RkM4MDBCNjM5MEMg
LyogV0tVc2VyU2NyaXB0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtODA4Myw2ICs4MTE0
LDcgQEAKIAkJCQkxQTU3MTA5RjFBQkEwMDI3MDAyRkFCQkUgLyogV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0EyNTNGMzFDOTI0MTEyMDBGOUY2OEQgLyogV0tQ
cmV2aWV3QWN0aW9uSXRlbUlkZW50aWZpZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNDQzE2
NzE4OTA2QUNGMDAxRTZFRDggLyogV0tXZWJWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREEy
OUEyQjFDQkVCNjdBMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBREY1OTFCMTg5MDUyOEUwMDQzQzE0NSAvKiBX
S1dlYlZpZXdDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDdBQUZENjE4Qzk1
NkFGMDBBN0FDRDQgLyogV0tXZWJWaWV3Q29uZmlndXJhdGlvbkludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUMxNDE1MTE4QUM0N0VFMDA2QzYwMkMgLyogV0tXZWJWaWV3Q29uZmlndXJh
dGlvblByaXZhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtODcxMCw2ICs4NzQyLDcgQEAKIAkJCQk3
QzFCQTMzRDFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQUI0MEVFNTFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1NzU2MTMxMjZFMDEzODAwNkYwRjEyIC8qIEFQSUVy
cm9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTI5QTJBMUNCRUI2N0EwMDkwMUNDRiAvKiBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFDMTMzNzExODU2NkM3QzAwRjNFQzA1IC8qIEFQSUZyYW1lSGFuZGxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJERjlFRUU1MUE3ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFt
ZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDMTMzNzQxODU3QzIxRTAwRjNFQzA1IC8q
IEFQSUdlb21ldHJ5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtODg1Myw2ICs4ODg2LDcgQEAKIAkJ
CQkyRDVBQjYzMDFBNjlENkZCMDAxNEE5Q0IgLyogTWVzc2FnZVJlY29yZGVyUHJvYmVzLmQgaW4g
U291cmNlcyAqLywKIAkJCQkxQUFCMDM3OTE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMEUzQUE3QjEyMDlFODM1MDBBNDlEMDEgLyogTW9k
dWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTI5QTI4MUNCRUI2N0EwMDkwMUNDRiAvKiBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUMwRTNBQTdBMTIwOUU4MzAwMEE0OUQwMSAvKiBNb2R1bGVDRi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyRDUwMzY1RTFCQ0M3OTNGMDBFMjBCQjMgLyogTmF0aXZlV2ViR2VzdHVyZUV2
ZW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRBOTQ0OUUxODg0RTRGMDAwRUQ4NkRCIC8q
IE5hdGl2ZVdlYktleWJvYXJkRXZlbnRJT1MubW0gaW4gU291cmNlcyAqLywKQEAgLTg5NTUsNiAr
ODk4OSw3IEBACiAJCQkJN0MxMzVBQUMxNzNCMENGRjAwNTg2QUUyIC8qIFBsdWdpbkluZm9ybWF0
aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFRkNDMTMxMUQwMUY5NjAwODIxOUQzIC8q
IFBsdWdpbkluZm9TdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUVGQ0NCRDExRDAyQzVF
MDA4MjE5RDMgLyogUGx1Z2luSW5mb1N0b3JlTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RB
MjlBMUExQ0JEQkY0MTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gaW4g
U291cmNlcyAqLywKIAkJCQkxQTA0Mzk3NzEyNEQwMzQ4MDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vz
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTBFQzkwNzEyNEMwQUI4MDA3RUY0QTUgLyogUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEwRUM5MTAxMjRD
MEFGNTAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTkwMDgsNiArOTA0Myw3IEBACiAJCQkJMEY1OTQ3OUExODdCM0I2MDAwNDM3
ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYwQzM2NUMxOEMwNUNBMTAwRjYwN0Q3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHlJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjU5NDdBMzE4N0IzQjdEMDA0Mzc4
NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlDREEyOUEyMTFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1OTQ3OUMxODdCM0I2MDAwNDM3
ODU3IC8qIFJlbW90ZVNjcm9sbGluZ1RyZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFC
MDkxMTJGNUUzQzAwMzM3QkFCIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFBQjRBQUExMjk2RjE1NDAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb25NYWMu
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAyN2QwOTI4YTE2
OTk4MTdlNmUzNmIxYzYxNTQwOTNlNDU2ODc0Mzk4Li5mZGI0NTMwNDE1ZjdhNjQwNmNiODEyY2U1
NDE5N2YxM2Y1ZTFlNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC03Niw2ICs3Niw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogCiAjaWYgUExBVEZPUk0oSU9TKSB8
fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2lu
Y2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLmgiCiAjZW5kaWYKIApAQCAtODUzLDM0ICs4NTQsMzQgQEAgUGFzc1Jl
ZlB0cjxTY3JvbGxpbmdDb29yZGluYXRvcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVTY3JvbGxp
bmdDb29yZGluYXRvcihQYWcKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiBib29sIFdlYkNocm9tZUNsaWVudDo6
c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7Ci0gICAgcmV0dXJuIG1fcGFnZS0+dmlkZW9GdWxs
c2NyZWVuTWFuYWdlcigpLT5zdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihtb2RlKTsKKyAgICByZXR1
cm4gbV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkuc3VwcG9ydHNWaWRlb0Z1bGxzY3Jl
ZW4obW9kZSk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRVcFZpZGVvQ29udHJvbHNN
YW5hZ2VyKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCkKK3ZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKIHsKLSAgICBtX3BhZ2UtPnZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIoKS0+c2V0VXBWaWRlb0NvbnRyb2xzTWFuYWdlcih2aWRlb0VsZW1lbnQpOworICAg
IG1fcGFnZS0+cGxheWJhY2tTZXNzaW9uTWFuYWdlcigpLnNldFVwUGxheWJhY2tDb250cm9sc01h
bmFnZXIobWVkaWFFbGVtZW50KTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmNsZWFyVmlk
ZW9Db250cm9sc01hbmFnZXIoKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmNsZWFyUGxheWJhY2tD
b250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQog
ewotICAgIG1fcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpLT5jbGVhclZpZGVvQ29udHJv
bHNNYW5hZ2VyKCk7CisgICAgbV9wYWdlLT5wbGF5YmFja1Nlc3Npb25NYW5hZ2VyKCkuY2xlYXJQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlcihtZWRpYUVsZW1lbnQpOwogfQogCiB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRN
TFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50LCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQobW9kZSAhPSBIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKLSAgICBtX3BhZ2Ut
PnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKS0+ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0Vs
ZW1lbnQodmlkZW9FbGVtZW50LCBtb2RlKTsKKyAgICBtX3BhZ2UtPnZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIoKS5lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCh2aWRlb0VsZW1lbnQs
IG1vZGUpOwogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhpdFZpZGVvRnVsbHNjcmVlbkZv
clZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQpCiB7
Ci0gICAgbV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCktPmV4aXRWaWRlb0Z1bGxzY3Jl
ZW5Gb3JWaWRlb0VsZW1lbnQodmlkZW9FbGVtZW50KTsKKyAgICBtX3BhZ2UtPnZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIoKS5leGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KHZpZGVvRWxl
bWVudCk7CiB9CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJ
T05fTU9ERSkKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2Rl
V2l0aG91dEFuaW1hdGlvbihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQs
IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB0YXJnZXRNb2RlKQog
ewotICAgIG1fcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpLT5leGl0VmlkZW9GdWxsc2Ny
ZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbih2aWRlb0VsZW1lbnQsIHRhcmdldE1vZGUpOworICAg
IG1fcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpLmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01v
ZGVXaXRob3V0QW5pbWF0aW9uKHZpZGVvRWxlbWVudCwgdGFyZ2V0TW9kZSk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZGE2NmYxNTEwZTVmODE0ZmNjYmYwMzMzMGMzYmMy
Yzk1YTc0MmM5Yi4uMWVlYTY4NzM2ZmFlOTBjYjI3ZDhhNWFmM2I5NTc4NWYxZmRiMDBkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yNDQsOCArMjQ0LDggQEAgcHJpdmF0ZToKIAogI2lmIFBM
QVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElP
Tl9NT0RFKSkKICAgICBib29sIHN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmKSBv
dmVycmlkZTsKLSAgICB2b2lkIGNsZWFyVmlkZW9Db250cm9sc01hbmFnZXIoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudCYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdl
cihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbnRlclZp
ZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Jiwg
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVy
cmlkZTsKICAgICB2b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29y
ZTo6SFRNTFZpZGVvRWxlbWVudCYpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQxZGI2MmY5ODY1OTAwOGI3ZWRlOGJhMTczOWMz
ZmM3NmMxNmIyMjQuLjg3NDU0MjQ3ODQwNWE0YzEyZjRlNDRhNTNjMjE0NTliZDA3Yjg2NWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEs
MyArMSw0IEBACisKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMt
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xOTYsNiArMTk3
LDcgQEAKICNpbmNsdWRlICJQREZQbHVnaW4uaCIKICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIldLU3RyaW5nQ0YuaCIKKyNpbmNsdWRlICJXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5V2ViQXJjaGl2ZS5oPgogI2VuZGlmCkBAIC0z
MTg4LDExICszMTkwLDE4IEBAIFdlYkluc3BlY3RvclVJKiBXZWJQYWdlOjppbnNwZWN0b3JVSSgp
CiB9CiAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURF
T19QUkVTRU5UQVRJT05fTU9ERSkpCi1XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKiBXZWJQYWdl
Ojp2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkKK1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXImIFdl
YlBhZ2U6OnBsYXliYWNrU2Vzc2lvbk1hbmFnZXIoKQoreworICAgIGlmICghbV9wbGF5YmFja1Nl
c3Npb25NYW5hZ2VyKQorICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIgPSBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiAqbV9wbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOworfQorCitXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyJiBXZWJQYWdl
Ojp2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkKIHsKICAgICBpZiAoIW1fdmlkZW9GdWxsc2NyZWVu
TWFuYWdlcikKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6Y3JlYXRlKHRoaXMpOwotICAgIHJldHVybiBtX3ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIuZ2V0KCk7CisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNyZWF0ZSgqdGhpcywgcGxheWJhY2tTZXNzaW9uTWFuYWdl
cigpKTsKKyAgICByZXR1cm4gKm1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlcjsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBkNTkx
OWNjODI4ODM4YTJhNmZhMTViNDc4MzFkMzY0MDA4ZjY2ZDFmLi4wYzQ4NGVkOWI0ZDcwZDNjMDU0
NDM1N2VjNTVkYTY1YjI3NDAzY2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTE4MCw2ICsxODAsNyBAQCBjbGFzcyBXZWJOb3RpZmljYXRpb25D
bGllbnQ7CiBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjsKIGNsYXNzIFdlYlBhZ2VH
cm91cFByb3h5OwogY2xhc3MgV2ViUGFnZU92ZXJsYXk7CitjbGFzcyBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOwogY2xhc3MgV2ViUG9wdXBNZW51OwogY2xhc3MgV2ViVW5kb1N0ZXA7CiBjbGFz
cyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI7CkBAIC0yNTEsNyArMjUyLDggQEAgcHVibGljOgog
ICAgIGJvb2wgaXNJbnNwZWN0b3JQYWdlKCkgeyByZXR1cm4gISFtX2luc3BlY3RvclVJOyB9CiAK
ICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkpCi0gICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciogdmlkZW9GdWxs
c2NyZWVuTWFuYWdlcigpOworICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXImIHBsYXliYWNr
U2Vzc2lvbk1hbmFnZXIoKTsKKyAgICBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyJiB2aWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCiAgICAgdm9pZCBz
ZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2soYm9vbCk7CkBAIC0xMzA4LDYgKzEz
MTAsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJJbnNwZWN0b3I+IG1faW5zcGVjdG9yOwog
ICAgIFJlZlB0cjxXZWJJbnNwZWN0b3JVST4gbV9pbnNwZWN0b3JVSTsKICNpZiBQTEFURk9STShJ
T1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkp
CisgICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI+IG1fcGxheWJhY2tTZXNzaW9u
TWFuYWdlcjsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4gbV92aWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zOTU1MjE4NTdhNjc0ODBmZmI5ZDJiMDA3ODg1YjhiMjAwNjAy
ZjgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgKQEAgLTAsMCArMSwxNTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJfaAorI2RlZmluZSBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyX2gKKworI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKworI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRMaXN0ZW5lci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudEVudW1zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybUNBTGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNz
IEF0dGFjaG1lbnQ7CitjbGFzcyBDb25uZWN0aW9uOworY2xhc3MgTWVzc2FnZURlY29kZXI7Citj
bGFzcyBNZXNzYWdlUmVjZWl2ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE5v
ZGU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworY2xhc3MgV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjsKKworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUNvbnRleHQ+LCBwdWJsaWMgV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQ+IGNyZWF0ZShXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJiBtYW5hZ2VyLCB1aW50
NjRfdCBjb250ZXh0SWQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KG1hbmFnZXIsIGNvbnRleHRJZCkpOworICAg
IH0KKyAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KCk7CisK
KyAgICB2b2lkIGludmFsaWRhdGUoKSB7IG1fbWFuYWdlciA9IG51bGxwdHI7IH0KKworcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDsK
KworICAgIC8vIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZQorICAgIHZvaWQgcmVzZXRNZWRp
YVN0YXRlKCkgZmluYWw7CisgICAgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpIGZpbmFsOworICAg
IHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGlt
ZSkgZmluYWw7CisgICAgdm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlKSBmaW5hbDsKKyAgICB2
b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgZmluYWw7Cisg
ICAgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJikgZmlu
YWw7CisgICAgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCB2YWx1ZSkgZmluYWw7Cisg
ICAgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBmaW5hbDsKKyAgICB2b2lk
IHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5n
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgZmluYWw7CisgICAgdm9pZCBzZXRF
eHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUs
IFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpIGZpbmFsOworICAgIHZvaWQgc2V0V2ly
ZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgZmluYWw7CisKKyAgICBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXImLCB1aW50
NjRfdCBjb250ZXh0SWQpOworCisgICAgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciogbV9tYW5h
Z2VyOworICAgIHVpbnQ2NF90IG1fY29udGV4dElkOworfTsKKworY2xhc3MgV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI+IGNyZWF0ZShXZWJQYWdlJik7CisgICAgdmly
dHVhbCB+V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcigpOworCisgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgZmluYWw7CisK
KyAgICB2b2lkIHNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudCYpOworICAgIHZvaWQgY2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50Jik7CisgICAgdWludDY0X3QgY29udGV4dElkRm9yTWVkaWFFbGVt
ZW50KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQmKTsKKworcHJvdGVjdGVkOgorICAgIGZyaWVu
ZCBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OworICAgIGZyaWVuZCBj
bGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOworCisgICAgZXhwbGljaXQgV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcihXZWJQYWdlJik7CisKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8UmVm
UHRyPFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50PiwgUmVmUHRy
PFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+PiBNb2RlbEludGVyZmFjZVR1cGxl
OworICAgIE1vZGVsSW50ZXJmYWNlVHVwbGUgY3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0
X3QgY29udGV4dElkKTsKKyAgICBNb2RlbEludGVyZmFjZVR1cGxlJiBlbnN1cmVNb2RlbEFuZElu
dGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIFdlYkNvcmU6OldlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50JiBlbnN1cmVNb2RlbCh1aW50NjRfdCBjb250ZXh0SWQpOwor
ICAgIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQmIGVuc3VyZUludGVyZmFjZSh1
aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgcmVtb3ZlQ29udGV4dCh1aW50NjRfdCBjb250
ZXh0SWQpOworICAgIHZvaWQgYWRkQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQp
OworICAgIHZvaWQgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpOwor
CisgICAgLy8gSW50ZXJmYWNlIHRvIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQK
KyAgICB2b2lkIHJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQg
c2V0RHVyYXRpb24odWludDY0X3QgY29udGV4dElkLCBkb3VibGUpOworICAgIHZvaWQgc2V0Q3Vy
cmVudFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBh
bmNob3JUaW1lKTsKKyAgICB2b2lkIHNldEJ1ZmZlcmVkVGltZSh1aW50NjRfdCBjb250ZXh0SWQs
IGRvdWJsZSBidWZmZXJlZFRpbWUpOworICAgIHZvaWQgc2V0UmF0ZSh1aW50NjRfdCBjb250ZXh0
SWQsIGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpOworICAgIHZvaWQgc2V0U2Vl
a2FibGVSYW5nZXModWludDY0X3QgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2Vz
Jik7CisgICAgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UodWludDY0X3QgY29udGV4dElkLCBi
b29sIHZhbHVlKTsKKyAgICB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2
NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNl
bGVjdGVkSW5kZXgpOworICAgIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyh1
aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRf
dCBzZWxlY3RlZEluZGV4KTsKKyAgICB2b2lkIHNldEV4dGVybmFsUGxheWJhY2sodWludDY0X3Qg
Y29udGV4dElkLCBib29sIGVuYWJsZWQsIFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZTo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VO
YW1lKTsKKyAgICB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90
IGNvbnRleHRJZCwgYm9vbCk7CisKKyAgICAvLyBNZXNzYWdlcyBmcm9tIFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eQorICAgIHZvaWQgcGxheSh1aW50NjRfdCBjb250ZXh0SWQpOworICAg
IHZvaWQgcGF1c2UodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHRvZ2dsZVBsYXlTdGF0
ZSh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgYmVnaW5TY3J1YmJpbmcodWludDY0X3Qg
Y29udGV4dElkKTsKKyAgICB2b2lkIGVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpOwor
ICAgIHZvaWQgc2Vla1RvVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKTsKKyAg
ICB2b2lkIGZhc3RTZWVrKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpOworICAgIHZv
aWQgYmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGJl
Z2luU2Nhbm5pbmdCYWNrd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgZW5kU2Nh
bm5pbmcodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRp
b24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCk7CisgICAgdm9pZCBzZWxlY3RM
ZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCk7CisK
KyAgICBXZWJQYWdlKiBtX3BhZ2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50KiwgdWludDY0X3Q+IG1fbWVkaWFFbGVtZW50czsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBN
b2RlbEludGVyZmFjZVR1cGxlPiBtX2NvbnRleHRNYXA7CisgICAgdWludDY0X3QgbV9jb250cm9s
c01hbmFnZXJDb250ZXh0SWQgeyAwIH07CisgICAgSGFzaE1hcDx1aW50NjRfdCwgaW50PiBtX2Ns
aWVudENvdW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpKQorCisjZW5kaWYgLy8gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU2YzU5ZTMxNDM0
YTY3OWQ1NGQ4YTM2MDM3OWMzYTdmZjNmZDU1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdl
cy5pbgpAQCAtMCwwICsxLDM5IEBACisjIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9f
UFJFU0VOVEFUSU9OX01PREUpKQorbWVzc2FnZXMgLT4gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
ciB7CisgICAgUGxheSh1aW50NjRfdCBjb250ZXh0SWQpCisgICAgUGF1c2UodWludDY0X3QgY29u
dGV4dElkKQorICAgIFRvZ2dsZVBsYXlTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCisgICAgQmVn
aW5TY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQorICAgIEVuZFNjcnViYmluZyh1aW50NjRf
dCBjb250ZXh0SWQpCisgICAgU2Vla1RvVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0
aW1lKQorICAgIEZhc3RTZWVrKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpCisgICAg
QmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29udGV4dElkKQorICAgIEJlZ2luU2Nhbm5p
bmdCYWNrd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCisgICAgRW5kU2Nhbm5pbmcodWludDY0X3Qg
Y29udGV4dElkKQorICAgIFNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElk
LCB1aW50NjRfdCBpbmRleCkKKyAgICBTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3Qg
Y29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUzODRiMjIzMjM2MTY4OWRhOWQyNDBiZjljZWNmMWRmZWM5NDI4NjAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KQEAgLTAsMCArMSw0MDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5o
IgorCisKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURF
T19QUkVTRU5UQVRJT05fTU9ERSkpCisKKyNpbXBvcnQgIkF0dGFjaG1lbnQuaCIKKyNpbXBvcnQg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2ltcG9ydCAiV2ViUGFnZS5oIgorI2ltcG9ydCAi
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VzLmgiCisjaW1wb3J0ICJXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgor
I2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9FdmVudC5oPgorI2lt
cG9ydCA8V2ViQ29yZS9FdmVudE5hbWVzLmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxNZWRpYUVs
ZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
VGltZVJhbmdlcy5oPgorI2ltcG9ydCA8bWFjaC9tYWNoX3BvcnQuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgdWludDY0X3QgbmV4
dENvbnRleHRJZCgpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IGNvbnRleHRJZCA9IDA7CisgICAg
cmV0dXJuICsrY29udGV4dElkOworfQorCisjcHJhZ21hIG1hcmsgLSBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VDb250ZXh0CisKK1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6
OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQoV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlciYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQorICAgIDogbV9tYW5hZ2VyKCZtYW5h
Z2VyKQorICAgICwgbV9jb250ZXh0SWQoY29udGV4dElkKQoreworfQorCitXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VDb250ZXh0Ojp+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4
dCgpCit7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6cmVz
ZXRNZWRpYVN0YXRlKCkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXIt
PnJlc2V0TWVkaWFTdGF0ZShtX2NvbnRleHRJZCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQoreworICAg
IGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+c2V0RHVyYXRpb24obV9jb250ZXh0
SWQsIGR1cmF0aW9uKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250
ZXh0OjpzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1l
KQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+c2V0Q3VycmVudFRp
bWUobV9jb250ZXh0SWQsIGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKTsKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRCdWZmZXJlZFRpbWUoZG91YmxlIGJ1
ZmZlcmVkVGltZSkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnNl
dEJ1ZmZlcmVkVGltZShtX2NvbnRleHRJZCwgYnVmZmVyZWRUaW1lKTsKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBm
bG9hdCBwbGF5YmFja1JhdGUpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5h
Z2VyLT5zZXRSYXRlKG1fY29udGV4dElkLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSk7Cit9CisK
K3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0U2Vla2FibGVSYW5n
ZXMoY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYgcmFuZ2VzKQoreworICAgIGlmIChtX21hbmFn
ZXIpCisgICAgICAgIG1fbWFuYWdlci0+c2V0U2Vla2FibGVSYW5nZXMobV9jb250ZXh0SWQsIHJh
bmdlcyk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0
Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wgdmFsdWUpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAg
ICAgICAgbV9tYW5hZ2VyLT5zZXRDYW5QbGF5RmFzdFJldmVyc2UobV9jb250ZXh0SWQsIHZhbHVl
KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRBdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25z
LCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAg
IG1fbWFuYWdlci0+c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMobV9jb250ZXh0SWQsIG9w
dGlvbnMsIHNlbGVjdGVkSW5kZXgpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUNvbnRleHQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBp
ZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnNldExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnMobV9jb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOworfQorCit2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldEV4dGVybmFsUGxheWJhY2so
Ym9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0eXBlLCBXVEY6OlN0cmlu
ZyBsb2NhbGl6ZWREZXZpY2VOYW1lKQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1f
bWFuYWdlci0+c2V0RXh0ZXJuYWxQbGF5YmFjayhtX2NvbnRleHRJZCwgZW5hYmxlZCwgdHlwZSwg
bG9jYWxpemVkRGV2aWNlTmFtZSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQ29udGV4dDo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCBkaXNhYmxl
ZCkKK3sKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnNldFdpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKG1fY29udGV4dElkLCBkaXNhYmxlZCk7Cit9CisKKyNwcmFn
bWEgbWFyayAtIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIKKworUmVmPFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI+IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZShXZWJQYWdlJiBw
YWdlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXIocGFnZSkpOworfQorCitXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyKFdlYlBhZ2UmIHBhZ2UpCisgICAgOiBtX3BhZ2UoJnBhZ2UpCit7CisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHBhZ2UucGFnZUlE
KCksICp0aGlzKTsKK30KKworV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6fldlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXIoKQoreworICAgIGZvciAoYXV0byYgdHVwbGUgOiBtX2NvbnRleHRNYXAu
dmFsdWVzKCkpIHsKKyAgICAgICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50PiBtb2RlbDsKKyAgICAgICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQ+IGludGVyZmFjZTsKKyAgICAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkg
PSB0dXBsZTsKKworICAgICAgICBtb2RlbC0+c2V0V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
KG51bGxwdHIpOworICAgICAgICBtb2RlbC0+c2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOworCisg
ICAgICAgIGludGVyZmFjZS0+aW52YWxpZGF0ZSgpOworICAgIH0KKworICAgIG1fY29udGV4dE1h
cC5jbGVhcigpOworICAgIG1fbWVkaWFFbGVtZW50cy5jbGVhcigpOworICAgIG1fY2xpZW50Q291
bnRzLmNsZWFyKCk7CisKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK1dlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y3Jl
YXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQoreworICAgIFJlZlB0cjxX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gbW9kZWwgPSBXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPFdlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9IFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKKworICAgIG1vZGVsLT5z
ZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UoaW50ZXJmYWNlLmdldCgpKTsKKworICAgIHJl
dHVybiBzdGQ6Om1ha2VfdHVwbGUoV1RGTW92ZShtb2RlbCksIFdURk1vdmUoaW50ZXJmYWNlKSk7
Cit9CisKK1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUmIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90
IGNvbnRleHRJZCkKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fY29udGV4dE1hcC5hZGQoY29u
dGV4dElkLCBNb2RlbEludGVyZmFjZVR1cGxlKCkpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdF
bnRyeSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGNyZWF0ZU1vZGVsQW5k
SW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7Cit9CisKK1dlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50JiBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjplbnN1cmVNb2RlbCh1aW50NjRfdCBjb250ZXh0SWQp
Cit7CisgICAgcmV0dXJuICpzdGQ6OmdldDwwPihlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250
ZXh0SWQpKTsKK30KKworV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dCYgV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5zdXJlSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkK
K3sKKyAgICByZXR1cm4gKnN0ZDo6Z2V0PDE+KGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRl
eHRJZCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZUNvbnRl
eHQodWludDY0X3QgY29udGV4dElkKQoreworICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudD4gbW9kZWw7CisgICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKKyAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNl
KSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CisKKyAgICBSZWZQdHI8SFRN
TE1lZGlhRWxlbWVudD4gbWVkaWFFbGVtZW50ID0gbW9kZWwtPm1lZGlhRWxlbWVudCgpOworICAg
IG1vZGVsLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7CisgICAgbW9kZWwtPnNldFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZShudWxscHRyKTsKKyAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUo
KTsKKyAgICBtX21lZGlhRWxlbWVudHMucmVtb3ZlKG1lZGlhRWxlbWVudC5nZXQoKSk7CisgICAg
bV9jb250ZXh0TWFwLnJlbW92ZShjb250ZXh0SWQpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OmFkZENsaWVudEZvckNvbnRleHQodWludDY0X3QgY29udGV4dElkKQorewor
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jbGllbnRDb3VudHMuYWRkKGNvbnRleHRJZCwgMSk7Cisg
ICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSsrOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZUNs
aWVudEZvckNvbnRleHQodWludDY0X3QgY29udGV4dElkKQoreworICAgIEFTU0VSVChtX2NsaWVu
dENvdW50cy5jb250YWlucyhjb250ZXh0SWQpKTsKKworICAgIGludCBjbGllbnRDb3VudCA9IG1f
Y2xpZW50Q291bnRzLmdldChjb250ZXh0SWQpOworICAgIEFTU0VSVChjbGllbnRDb3VudCA+IDAp
OworICAgIGNsaWVudENvdW50LS07CisKKyAgICBpZiAoY2xpZW50Q291bnQgPD0gMCkgeworICAg
ICAgICBtX2NsaWVudENvdW50cy5yZW1vdmUoY29udGV4dElkKTsKKyAgICAgICAgcmVtb3ZlQ29u
dGV4dChjb250ZXh0SWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jbGllbnRD
b3VudHMuc2V0KGNvbnRleHRJZCwgY2xpZW50Q291bnQpOworfQorCit2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OnNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBp
ZiAobV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKCZtZWRpYUVsZW1lbnQpKSB7CisgICAgICAgIHVp
bnQ2NF90IGNvbnRleHRJZCA9IG1fbWVkaWFFbGVtZW50cy5nZXQoJm1lZGlhRWxlbWVudCk7Cisg
ICAgICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9PSBjb250ZXh0SWQpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElk
KQorICAgICAgICAgICAgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRyb2xzTWFuYWdlckNv
bnRleHRJZCk7CisgICAgICAgIG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkID0gY29udGV4dElk
OworICAgIH0gZWxzZSB7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9tZWRpYUVsZW1lbnRz
LmVuc3VyZSgmbWVkaWFFbGVtZW50LCBbJl0geyByZXR1cm4gbmV4dENvbnRleHRJZCgpOyB9KTsK
KyAgICAgICAgYXV0byBjb250ZXh0SWQgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAg
ICAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IGNvbnRleHRJZDsKKyAgICAgICAgZW5z
dXJlTW9kZWwoY29udGV4dElkKS5zZXRNZWRpYUVsZW1lbnQoJm1lZGlhRWxlbWVudCk7CisgICAg
fQorCisgICAgYWRkQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OlNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXJXaXRoSUQobV9jb250cm9sc01hbmFnZXJD
b250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OmNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICBpZiAobV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKCZtZWRpYUVsZW1lbnQpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICB1aW50NjRfdCBjb250ZXh0SWQgPSBtX21lZGlhRWxlbWVudHMuZ2V0KCZt
ZWRpYUVsZW1lbnQpOworICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCAhPSBjb250
ZXh0SWQpCisgICAgICAgIHJldHVybjsKKworICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQobV9j
b250cm9sc01hbmFnZXJDb250ZXh0SWQpOworICAgIG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElk
ID0gMDsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6Q2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyNlbmRpZgorfQorCit1aW50NjRfdCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjb250
ZXh0SWRGb3JNZWRpYUVsZW1lbnQoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVt
ZW50KQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9tZWRpYUVsZW1lbnRzLmVuc3VyZSgmbWVk
aWFFbGVtZW50LCBbJl0geyByZXR1cm4gbmV4dENvbnRleHRJZCgpOyB9KTsKKyAgICByZXR1cm4g
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKK30KKworI3ByYWdtYSBtYXJrIEludGVyZmFjZSB0
byBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OgorCit2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OnJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCit7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OlJlc2V0TWVkaWFTdGF0ZShjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9p
ZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXREdXJhdGlvbih1aW50NjRfdCBjb250ZXh0
SWQsIGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0RHVyYXRpb24oY29udGV4dElkLCBkdXJhdGlv
biksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OnNldEN1cnJlbnRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1l
LCBkb3VibGUgYW5jaG9yVGltZSkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0Q3VycmVudFRpbWUoY29udGV4dElkLCBjdXJy
ZW50VGltZSwgYW5jaG9yVGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldEJ1ZmZlcmVkVGltZSh1aW50NjRfdCBjb250ZXh0SWQs
IGRvdWJsZSBidWZmZXJlZFRpbWUpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldEJ1ZmZlcmVkVGltZShjb250ZXh0SWQsIGJ1
ZmZlcmVkVGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OnNldFJhdGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywg
ZmxvYXQgcGxheWJhY2tSYXRlKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRSYXRlKGNvbnRleHRJZCwgaXNQbGF5aW5nLCBw
bGF5YmFja1JhdGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpzZXRTZWVrYWJsZVJhbmdlcyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0
IFdlYkNvcmU6OlRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCit7CisgICAgVmVjdG9yPHN0ZDo6cGFp
cjxkb3VibGUsIGRvdWJsZT4+IHJhbmdlc1ZlY3RvcjsKKworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB0aW1lUmFuZ2VzLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgRXhjZXB0aW9uQ29k
ZSBleGNlcHRpb25Db2RlOworICAgICAgICBkb3VibGUgc3RhcnQgPSB0aW1lUmFuZ2VzLnN0YXJ0
KGksIGV4Y2VwdGlvbkNvZGUpOworICAgICAgICBkb3VibGUgZW5kID0gdGltZVJhbmdlcy5lbmQo
aSwgZXhjZXB0aW9uQ29kZSk7CisgICAgICAgIHJhbmdlc1ZlY3Rvci5hcHBlbmQoc3RkOjpwYWly
PGRvdWJsZSwgZG91YmxlPihzdGFydCwgZW5kKSk7CisgICAgfQorCisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldFNlZWthYmxlUmFu
Z2VzVmVjdG9yKGNvbnRleHRJZCwgV1RGTW92ZShyYW5nZXNWZWN0b3IpKSwgbV9wYWdlLT5wYWdl
SUQoKSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0Q2FuUGxheUZh
c3RSZXZlcnNlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSkKK3sKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0Q2FuUGxh
eUZhc3RSZXZlcnNlKGNvbnRleHRJZCwgdmFsdWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwor
dm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1
aW50NjRfdCBzZWxlY3RlZEluZGV4KQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
cyhjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
K30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldExlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnMoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5w
YWdlSUQoKSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0RXh0ZXJu
YWxQbGF5YmFjayh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRUeXBlLCBT
dHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0RXh0ZXJuYWxQbGF5YmFja1Byb3Bl
cnRpZXMoY29udGV4dElkLCBlbmFibGVkLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odGFyZ2V0VHlw
ZSksIGxvY2FsaXplZERldmljZU5hbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZGlzYWJsZWQpCit7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldFdpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkKGNvbnRleHRJZCwgZGlzYWJsZWQpKTsKK30KKworI3ByYWdtYSBt
YXJrIE1lc3NhZ2VzIGZyb20gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OgorCit2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnBsYXkodWludDY0X3QgY29udGV4dElkKQorewor
ICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkucGxheSgpOworfQorCit2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OnBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBlbnN1cmVN
b2RlbChjb250ZXh0SWQpLnBhdXNlKCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6dG9nZ2xlUGxheVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBlbnN1cmVN
b2RlbChjb250ZXh0SWQpLnRvZ2dsZVBsYXlTdGF0ZSgpOworfQorCit2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OmJlZ2luU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAg
ICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmJlZ2luU2NydWJiaW5nKCk7Cit9CisKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5kU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkK
K3sKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmVuZFNjcnViYmluZygpOworfQorCit2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNlZWtUb1RpbWUodWludDY0X3QgY29udGV4dElk
LCBkb3VibGUgdGltZSkKK3sKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNlZWtUb1RpbWUo
dGltZSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZmFzdFNlZWsodWlu
dDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSkKK3sKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0
SWQpLmZhc3RTZWVrKHRpbWUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBlbnN1cmVN
b2RlbChjb250ZXh0SWQpLmJlZ2luU2Nhbm5pbmdGb3J3YXJkKCk7Cit9CisKK3ZvaWQgV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKHVpbnQ2NF90IGNvbnRl
eHRJZCkKK3sKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmJlZ2luU2Nhbm5pbmdCYWNrd2Fy
ZCgpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmVuZFNjYW5uaW5nKHVp
bnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmVuZFNjYW5u
aW5nKCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2VsZWN0QXVkaW9N
ZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQoreworICAgIGVu
c3VyZU1vZGVsKGNvbnRleHRJZCkuc2VsZWN0QXVkaW9NZWRpYU9wdGlvbihpbmRleCk7Cit9CisK
K3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9u
KHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCit7CisgICAgZW5zdXJlTW9kZWwo
Y29udGV4dElkKS5zZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oaW5kZXgpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
LmgKaW5kZXggNjZkMzBmNTI5YTg0NGQ1YTI2NTFkN2VlZTJhODgxZGYxOGY3MTY5OC4uMjc2NWI4
ZWQzY2MyY2RlYWQ2YzZkMTUzNDg2M2ZjMzFjZmQ5MWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
LmgKQEAgLTUyLDEzICs1MiwxNSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTGF5ZXJI
b3N0aW5nQ29udGV4dDsKIGNsYXNzIFdlYlBhZ2U7CitjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VDb250ZXh0OworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjsKIGNsYXNz
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI7CiAKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUNvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VDb250ZXh0PiwgcHVibGljIFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VD
b250ZXh0PiBjcmVhdGUoV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYgbWFuYWdlciwgdWludDY0
X3QgY29udGV4dElkKQorICAgIHN0YXRpYyBSZWY8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
Q29udGV4dD4gY3JlYXRlKFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXImIG1hbmFnZXIsIFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQmIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSwg
dWludDY0X3QgY29udGV4dElkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dChtYW5hZ2VyLCBjb250ZXh0SWQpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
Q29udGV4dChtYW5hZ2VyLCBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UsIGNvbnRleHRJZCkpOwog
ICAgIH0KICAgICB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0KCk7
CiAKQEAgLTgwLDEzICs4MiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0Z1bGxzY3JlZW4o
Ym9vbCBmbGFnKSB7IG1faXNGdWxsc2NyZWVuID0gZmxhZzsgfQogCiBwcml2YXRlOgotICAgIC8v
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZQorICAgIC8vIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZQogICAgIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZXREdXJhdGlvbihkb3VibGUpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91
YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZXRCdWZmZXJlZFRpbWUoZG91YmxlKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFJhdGUoYm9vbCBp
c1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRWaWRl
b0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBXZWJDb3JlOjpUaW1lUmFu
Z2VzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCB2YWx1
ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25z
dCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBv
dmVycmlkZTsKQEAgLTk0LDkgKzk1LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFeHRlcm5h
bFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIFdURjo6
U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0V2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0KFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXImLCB1aW50
NjRfdCBjb250ZXh0SWQpOworICAgIC8vIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZQorICAg
IHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9h
dCBoZWlnaHQpIG92ZXJyaWRlOworCisgICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dChXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyJiwgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQ29udGV4dCYsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAKICAgICBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyKiBtX21hbmFnZXI7CisgICAgUmVmPFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQ+IG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOwogICAgIHVpbnQ2NF90IG1fY29u
dGV4dElkOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVy
SG9zdGluZ0NvbnRleHQ7CiAgICAgYm9vbCBtX2lzQW5pbWF0aW5nIHsgZmFsc2UgfTsKQEAgLTEw
Nyw3ICsxMTIsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4sIHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcj4gY3JlYXRlKFBhc3NSZWZQdHI8V2ViUGFnZT4pOworICAgIHN0YXRp
YyBSZWY8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4gY3JlYXRlKFdlYlBhZ2UmLCBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyJik7CiAgICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcigpOwogICAgIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwpAQCAtMTE3LDEzICsxMjIsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2Vi
Q29yZTo6SFRNTFZpZGVvRWxlbWVudCYsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAgICAgdm9pZCBleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlk
ZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmKTsKICAgICB2b2lkIGV4aXRWaWRl
b0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1l
bnQmLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUp
OwotICAgIHZvaWQgc2V0VXBWaWRlb0NvbnRyb2xzTWFuYWdlcihXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50Jik7Ci0gICAgdm9pZCBjbGVhclZpZGVvQ29udHJvbHNNYW5hZ2VyKCk7Ci0gICAgCisK
IHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
Q29udGV4dDsKIAotICAgIGV4cGxpY2l0IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoUGFzc1Jl
ZlB0cjxXZWJQYWdlPik7CisgICAgZXhwbGljaXQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcihX
ZWJQYWdlJiwgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciYpOwogCiAgICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPFJlZlB0cjxXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dD4sIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0Pj4gTW9kZWxJbnRl
cmZhY2VUdXBsZTsKICAgICBNb2RlbEludGVyZmFjZVR1cGxlIGNyZWF0ZU1vZGVsQW5kSW50ZXJm
YWNlKHVpbnQ2NF90IGNvbnRleHRJZCk7CkBAIC0xMzUsMzAgKzEzOCw5IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIHJlbW92ZUNsaWVudEZvckNvbnRleHQodWludDY0X3QgY29udGV4dElkKTsKIAog
ICAgIC8vIEludGVyZmFjZSB0byBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0Ci0g
ICAgdm9pZCByZXNldE1lZGlhU3RhdGUodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHNl
dER1cmF0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlKTsKLSAgICB2b2lkIHNldEN1cnJl
bnRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5j
aG9yVGltZSk7Ci0gICAgdm9pZCBzZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4dElkLCBk
b3VibGUgYnVmZmVyZWRUaW1lKTsKLSAgICB2b2lkIHNldFJhdGUodWludDY0X3QgY29udGV4dElk
LCBib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKTsKICAgICB2b2lkIHNldFZpZGVv
RGltZW5zaW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRo
LCBmbG9hdCBoZWlnaHQpOwotICAgIHZvaWQgc2V0U2Vla2FibGVSYW5nZXModWludDY0X3QgY29u
dGV4dElkLCBjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJik7Ci0gICAgdm9pZCBzZXRDYW5QbGF5
RmFzdFJldmVyc2UodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKTsKLSAgICB2b2lkIHNl
dEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOwotICAgIHZvaWQg
c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKLSAgICB2
b2lkIHNldEV4dGVybmFsUGxheWJhY2sodWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQs
IFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZTo6RXh0ZXJuYWxQbGF5YmFja1Rh
cmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLSAgICB2b2lkIHNldFdpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCk7CiAKICAg
ICAvLyBNZXNzYWdlcyBmcm9tIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eQotICAgIHZv
aWQgcGxheSh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgcGF1c2UodWludDY0X3QgY29u
dGV4dElkKTsKLSAgICB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpOwot
ICAgIHZvaWQgYmVnaW5TY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGVu
ZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgc2Vla1RvVGltZSh1aW50
NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKTsKLSAgICB2b2lkIGZhc3RTZWVrKHVpbnQ2NF90
IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpOwotICAgIHZvaWQgYmVnaW5TY2FubmluZ0ZvcndhcmQo
dWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCh1aW50
NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgZW5kU2Nhbm5pbmcodWludDY0X3QgY29udGV4dElk
KTsKICAgICB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAgICAg
dm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIGRp
ZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CkBAIC0xNjYsMTIgKzE0OCwxMSBA
QCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250
ZXh0SWQpOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKHVpbnQ2NF90IGNvbnRl
eHRJZCwgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcywgSVBDOjpBdHRhY2htZW50IGZlbmNlUG9y
dCk7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eUVudW0odWludDY0X3QgY29udGV4dElk
LCB1bnNpZ25lZCBncmF2aXR5KTsKLSAgICB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWlu
dDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCk7Ci0gICAgdm9pZCBzZWxlY3RMZWdpYmxl
TWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCk7CiAgICAgdm9p
ZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwogICAgIHZvaWQgZnVsbHNj
cmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BhZ2VWaXNp
YmxlKTsKICAgICAKICAgICBXZWJQYWdlKiBtX3BhZ2U7CisgICAgUmVmPFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI+IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlcjsKICAgICBIYXNoTWFwPFdlYkNv
cmU6OkhUTUxWaWRlb0VsZW1lbnQqLCB1aW50NjRfdD4gbV92aWRlb0VsZW1lbnRzOwogICAgIEhh
c2hNYXA8dWludDY0X3QsIE1vZGVsSW50ZXJmYWNlVHVwbGU+IG1fY29udGV4dE1hcDsKICAgICB1
aW50NjRfdCBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCB7IDAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA4M2RkZmUyMGIwNjk1ZWRmNzQ2ZTk0OGZh
YjNlMzhmNmMwMGY3NTk1Li43YmZjMTFhMzkxZDFkNmNmZTdjOGMyOWY1ZmUyMmRiZDk2MjliYmJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yMiwxNiAr
MjIsNiBAQAogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogbWVzc2FnZXMgLT4gV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlciB7Ci0gICAgUGxheSh1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgUGF1c2UodWludDY0
X3QgY29udGV4dElkKQotICAgIFRvZ2dsZVBsYXlTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCi0g
ICAgQmVnaW5TY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQotICAgIEVuZFNjcnViYmluZyh1
aW50NjRfdCBjb250ZXh0SWQpCi0gICAgU2Vla1RvVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRv
dWJsZSB0aW1lKQotICAgIEZhc3RTZWVrKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUp
Ci0gICAgQmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29udGV4dElkKQotICAgIEJlZ2lu
U2Nhbm5pbmdCYWNrd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgRW5kU2Nhbm5pbmcodWlu
dDY0X3QgY29udGV4dElkKQogICAgIFJlcXVlc3RGdWxsc2NyZWVuTW9kZSh1aW50NjRfdCBjb250
ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQogICAgIERpZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBj
b250ZXh0SWQpCiAgICAgRGlkRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQpAQCAt
MzksOCArMjksNiBAQCBtZXNzYWdlcyAtPiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIHsKICAg
ICBEaWRDbGVhbnVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgU2V0VmlkZW9M
YXllckZyYW1lRmVuY2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6RmxvYXRSZWN0IGJv
dW5kcywgSVBDOjpBdHRhY2htZW50IGZlbmNlUG9ydCkKICAgICBTZXRWaWRlb0xheWVyR3Jhdml0
eUVudW0odWludDY0X3QgY29udGV4dElkLCB1bnNpZ25lZCBncmF2aXR5KQotICAgIFNlbGVjdEF1
ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKLSAgICBT
ZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRl
eCkKICAgICBGdWxsc2NyZWVuTW9kZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2Ny
ZWVuTW9kZSkKICAgICBGdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4
dElkLCBib29sIGlzUGFnZVZpc2libGUpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXgg
NjkzY2NmYzBhZTM0Njc5ZWQwNzAxMzc3ZjAwOGU0ZDNhM2YyYmJiZS4uOWRhYTVkZDdmZjgyODBh
OWI4OThlNGE3OWM0ZDJmYzlkMzM2ZjlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAt
MzAsNiArMzAsNyBAQAogI2ltcG9ydCAiQXR0YWNobWVudC5oIgogI2ltcG9ydCAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0ICJXZWJQYWdlLmgiCisjaW1wb3J0ICJXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAjaW1wb3J0ICJXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCkBAIC01OSwxNiArNjAsMTEgQEAgc3RhdGljIElu
dFJlY3QgY2xpZW50UmVjdEZvckVsZW1lbnQoSFRNTEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcmV0
dXJuIGVsZW1lbnQtPmNsaWVudFJlY3QoKTsKIH0KIAotc3RhdGljIHVpbnQ2NF90IG5leHRDb250
ZXh0SWQoKQotewotICAgIHN0YXRpYyB1aW50NjRfdCBjb250ZXh0SWQgPSAwOwotICAgIHJldHVy
biArK2NvbnRleHRJZDsKLX0KLQogI3ByYWdtYSBtYXJrIC0gV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQ29udGV4dAogCi1XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0KFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIm
IG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKK1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUNvbnRleHQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQoV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlciYgbWFuYWdlciwgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4
dCYgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgOiBt
X21hbmFnZXIoJm1hbmFnZXIpCisgICAgLCBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZShwbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2UpCiAgICAgLCBtX2NvbnRleHRJZChjb250ZXh0SWQpCiB7CiB9
CkBAIC04NCwzMiArODAsMjcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250
ZXh0OjpzZXRMYXllckhvc3RpbmdDb250ZXh0KHN0ZDo6dW5pcXVlX3B0cjwKIAogdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpyZXNldE1lZGlhU3RhdGUoKQogewotICAg
IGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+cmVzZXRNZWRpYVN0YXRlKG1fY29u
dGV4dElkKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+cmVzZXRNZWRpYVN0YXRl
KCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0RHVy
YXRpb24oZG91YmxlIGR1cmF0aW9uKQogewotICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1f
bWFuYWdlci0+c2V0RHVyYXRpb24obV9jb250ZXh0SWQsIGR1cmF0aW9uKTsKKyAgICBtX3BsYXli
YWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwogfQogCiB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldEN1cnJlbnRUaW1lKGRvdWJsZSBj
dXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAg
ICAgICAgbV9tYW5hZ2VyLT5zZXRDdXJyZW50VGltZShtX2NvbnRleHRJZCwgY3VycmVudFRpbWUs
IGFuY2hvclRpbWUpOworICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDdXJyZW50
VGltZShjdXJyZW50VGltZSwgYW5jaG9yVGltZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0QnVmZmVyZWRUaW1lKGRvdWJsZSBidWZmZXJlZFRpbWUp
CiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5zZXRCdWZmZXJlZFRp
bWUobV9jb250ZXh0SWQsIGJ1ZmZlcmVkVGltZSk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UtPnNldEJ1ZmZlcmVkVGltZShidWZmZXJlZFRpbWUpOwogfQogCiB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0
IHBsYXliYWNrUmF0ZSkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXIt
PnNldFJhdGUobV9jb250ZXh0SWQsIGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsKKyAgICBtX3Bs
YXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0UmF0ZShpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSk7
CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0VmlkZW9E
aW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCkBAIC0x
MjAsNTEgKzExMSw0NiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6
OnNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdAogCiB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFdlYkNv
cmU6OlRpbWVSYW5nZXMmIHJhbmdlcykKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBt
X21hbmFnZXItPnNldFNlZWthYmxlUmFuZ2VzKG1fY29udGV4dElkLCByYW5nZXMpOworICAgIG1f
cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRTZWVrYWJsZVJhbmdlcyhyYW5nZXMpOwogfQog
CiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldENhblBsYXlGYXN0
UmV2ZXJzZShib29sIHZhbHVlKQogewotICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFu
YWdlci0+c2V0Q2FuUGxheUZhc3RSZXZlcnNlKG1fY29udGV4dElkLCB2YWx1ZSk7CisgICAgbV9w
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldENhblBsYXlGYXN0UmV2ZXJzZSh2YWx1ZSk7CiB9
CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0QXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWlu
dDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21h
bmFnZXItPnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKG1fY29udGV4dElkLCBvcHRpb25z
LCBzZWxlY3RlZEluZGV4KTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiB9CiAKIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRf
dCBzZWxlY3RlZEluZGV4KQogewotICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdl
ci0+c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhtX2NvbnRleHRJZCwgb3B0aW9ucywg
c2VsZWN0ZWRJbmRleCk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldExlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiB9CiAKIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0RXh0ZXJuYWxQbGF5YmFj
ayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHR5cGUsIFdURjo6U3Ry
aW5nIGxvY2FsaXplZERldmljZU5hbWUpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAg
bV9tYW5hZ2VyLT5zZXRFeHRlcm5hbFBsYXliYWNrKG1fY29udGV4dElkLCBlbmFibGVkLCB0eXBl
LCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
c2V0RXh0ZXJuYWxQbGF5YmFjayhlbmFibGVkLCB0eXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsK
IH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRXaXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVkKQogewotICAgIGlmIChtX21hbmFn
ZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQo
bV9jb250ZXh0SWQsIGRpc2FibGVkKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoZGlzYWJsZWQpOwogfQogCiAjcHJhZ21h
IG1hcmsgLSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCiAKLVJlZjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyPiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGUoUGFzc1JlZlB0cjxX
ZWJQYWdlPiBwYWdlKQorUmVmPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+IFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OmNyZWF0ZShXZWJQYWdlJiBwYWdlLCBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyJiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIocGFnZSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIocGFnZSwgcGxheWJhY2tTZXNzaW9uTWFu
YWdlcikpOwogfQogCi1XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyKFBhc3NSZWZQdHI8V2ViUGFnZT4gcGFnZSkKLSAgICA6IG1fcGFnZShwYWdlLmdl
dCgpKQorV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cihXZWJQYWdlJiBwYWdlLCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJiBwbGF5YmFja1Nlc3Np
b25NYW5hZ2VyKQorICAgIDogbV9wYWdlKCZwYWdlKQorICAgICwgbV9wbGF5YmFja1Nlc3Npb25N
YW5hZ2VyKHBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHBhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7CisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHBhZ2UucGFnZUlE
KCksICp0aGlzKTsKIH0KIAogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6fldlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIoKQpAQCAtMTg5LDggKzE3NSwxMCBAQCBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjp+V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpCiAKIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQogewotICAgIFJlZlB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWwgPSBXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9IFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKKyAgICBhdXRvJiBw
bGF5YmFja1Nlc3Npb25Nb2RlbCA9IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlci0+ZW5zdXJlTW9k
ZWwoY29udGV4dElkKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ+IG1vZGVsID0gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0
ZShwbGF5YmFja1Nlc3Npb25Nb2RlbCk7CisgICAgYXV0byYgcGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlID0gbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5lbnN1cmVJbnRlcmZhY2UoY29udGV4dElk
KTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJm
YWNlID0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBw
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UsIGNvbnRleHRJZCk7CiAKICAgICBpbnRlcmZhY2UtPnNl
dExheWVySG9zdGluZ0NvbnRleHQoTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJu
YWxIb3N0aW5nUHJvY2VzcygpKTsKICAgICBtb2RlbC0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlKGludGVyZmFjZS5nZXQoKSk7CkBAIC0yNzIsMTIgKzI2MCwxMCBAQCB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50
KEhUTUxWaWRlb0VsZQogewogICAgIEFTU0VSVChtb2RlICE9IEhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogCi0gICAgdWludDY0X3QgY29udGV4dElkOwot
Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3ZpZGVvRWxlbWVudHMuYWRkKCZ2aWRlb0VsZW1lbnQs
IDApOwotICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IG5leHRDb250ZXh0SWQoKTsKLSAgICBjb250ZXh0SWQgPSBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlOworICAgIHVpbnQ2NF90IGNvbnRleHRJZCA9IG1fcGxheWJhY2tT
ZXNzaW9uTWFuYWdlci0+Y29udGV4dElkRm9yTWVkaWFFbGVtZW50KHZpZGVvRWxlbWVudCk7Cisg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3ZpZGVvRWxlbWVudHMuYWRkKCZ2aWRlb0VsZW1lbnQsIGNv
bnRleHRJZCk7CisgICAgVU5VU0VEX1BBUkFNKGFkZFJlc3VsdCk7CisgICAgQVNTRVJUKGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPT0gY29udGV4dElkKTsKIAogICAgIFJlZlB0cjxXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7CiAgICAgUmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKQEAgLTMyMSw0MSArMzA3LDYg
QEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuRm9y
VmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUwKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW4oY29udGV4dElkLCBj
bGllbnRSZWN0Rm9yRWxlbWVudCgmdmlkZW9FbGVtZW50KSksIG1fcGFnZS0+cGFnZUlEKCkpOwog
fQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFVwVmlkZW9Db250cm9sc01h
bmFnZXIoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50KQotewotI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBpZiAobV92aWRlb0VsZW1lbnRzLmNvbnRhaW5zKCZ2aWRlb0VsZW1l
bnQpKSB7Ci0gICAgICAgIHVpbnQ2NF90IGNvbnRleHRJZCA9IG1fdmlkZW9FbGVtZW50cy5nZXQo
JnZpZGVvRWxlbWVudCk7Ci0gICAgICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9
PSBjb250ZXh0SWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKG1fY29udHJv
bHNNYW5hZ2VyQ29udGV4dElkKQotICAgICAgICAgICAgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dCht
X2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCk7Ci0gICAgICAgIG1fY29udHJvbHNNYW5hZ2VyQ29u
dGV4dElkID0gY29udGV4dElkOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV92aWRlb0VsZW1lbnRzLmVuc3VyZSgmdmlkZW9FbGVtZW50LCBbJl0geyByZXR1cm4gbmV4
dENvbnRleHRJZCgpOyB9KTsKLSAgICAgICAgYXV0byBjb250ZXh0SWQgPSBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlOwotICAgICAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IGNvbnRl
eHRJZDsKLSAgICAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZXRWaWRlb0VsZW1lbnQoJnZp
ZGVvRWxlbWVudCk7Ci0gICAgfQotCi0gICAgYWRkQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRyb2xz
TWFuYWdlckNvbnRleHRJZCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldFVwVmlkZW9Db250cm9sc01hbmFnZXJXaXRoSUQobV9j
b250cm9sc01hbmFnZXJDb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSNlbmRpZgotfQot
Ci12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNsZWFyVmlkZW9Db250cm9sc01hbmFn
ZXIoKQotewotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIW1fY29udHJvbHNNYW5hZ2VyQ29u
dGV4dElkKQotICAgICAgICByZXR1cm47Ci0KLSAgICByZW1vdmVDbGllbnRGb3JDb250ZXh0KG1f
Y29udHJvbHNNYW5hZ2VyQ29udGV4dElkKTsKLSAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJ
ZCA9IDA7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OkNsZWFyVmlkZW9Db250cm9sc01hbmFnZXIoKSwgbV9wYWdlLT5wYWdlSUQoKSk7
Ci0jZW5kaWYKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9G
dWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50
JiB2aWRlb0VsZW1lbnQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSB0YXJnZXRNb2RlKQogewogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKQpAQCAtMzc1LDE0OSArMzI2LDIzIEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmlt
YXRpb24oV2ViQ29yCiAKICNwcmFnbWEgbWFyayBJbnRlcmZhY2UgdG8gV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQ29udGV4dDoKIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpy
ZXNldE1lZGlhU3RhdGUodWludDY0X3QgY29udGV4dElkKQotewotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpSZXNldE1lZGlhU3RhdGUo
Y29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0gICAgCi12b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OnNldER1cmF0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1
cmF0aW9uKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpTZXREdXJhdGlvbihjb250ZXh0SWQsIGR1cmF0aW9uKSwgbV9wYWdlLT5w
YWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0Q3VycmVu
dFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNo
b3JUaW1lKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpTZXRDdXJyZW50VGltZShjb250ZXh0SWQsIGN1cnJlbnRUaW1lLCBhbmNo
b3JUaW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6c2V0QnVmZmVyZWRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZl
cmVkVGltZSkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6U2V0QnVmZmVyZWRUaW1lKGNvbnRleHRJZCwgYnVmZmVyZWRUaW1lKSwg
bV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
c2V0UmF0ZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFj
a1JhdGUpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OlNldFJhdGUoY29udGV4dElkLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSks
IG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OnNldFZpZGVvRGltZW5zaW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFzVmlkZW8sIGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldFZpZGVvRGltZW5zaW9ucyhjb250ZXh0
SWQsIGhhc1ZpZGVvLCB3aWR0aCwgaGVpZ2h0KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9Ci0gICAg
Ci12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFNlZWthYmxlUmFuZ2VzKHVpbnQ2
NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYgdGltZVJhbmdlcykKLXsK
LSAgICBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2VzVmVjdG9yOwotICAg
IAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aW1lUmFuZ2VzLmxlbmd0aCgpOyBpKysp
IHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlOwotICAgICAgICBkb3VibGUg
c3RhcnQgPSB0aW1lUmFuZ2VzLnN0YXJ0KGksIGV4Y2VwdGlvbkNvZGUpOwotICAgICAgICBkb3Vi
bGUgZW5kID0gdGltZVJhbmdlcy5lbmQoaSwgZXhjZXB0aW9uQ29kZSk7Ci0gICAgICAgIHJhbmdl
c1ZlY3Rvci5hcHBlbmQoc3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPihzdGFydCwgZW5kKSk7Ci0g
ICAgfQotCi0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OlNldFNlZWthYmxlUmFuZ2VzVmVjdG9yKGNvbnRleHRJZCwgV1RGTW92ZShyYW5n
ZXNWZWN0b3IpKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9v
bCB2YWx1ZSkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6U2V0Q2FuUGxheUZhc3RSZXZlcnNlKGNvbnRleHRJZCwgdmFsdWUpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpz
ZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQotewotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRB
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5k
ZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCi17
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29udGV4dElkLCBvcHRpb25zLCBz
ZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6c2V0RXh0ZXJuYWxQbGF5YmFjayh1aW50NjRfdCBjb250ZXh0SWQsIGJv
b2wgZW5hYmxlZCwgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpFeHRlcm5hbFBsYXliYWNr
VGFyZ2V0VHlwZSB0YXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKLXsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
U2V0RXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRpZXMoY29udGV4dElkLCBlbmFibGVkLCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4odGFyZ2V0VHlwZSksIGxvY2FsaXplZERldmljZU5hbWUpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRXaXJl
bGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZGlzYWJs
ZWQpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OlNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGNvbnRleHRJZCwgZGlz
YWJsZWQpKTsKLX0KIAogI3ByYWdtYSBtYXJrIE1lc3NhZ2VzIGZyb20gV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OgogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnBsYXko
dWludDY0X3QgY29udGV4dElkKQotewotICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkucGxheSgp
OwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnBhdXNlKHVpbnQ2NF90IGNv
bnRleHRJZCkKLXsKLSAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnBhdXNlKCk7Ci19Ci0KLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6dG9nZ2xlUGxheVN0YXRlKHVpbnQ2NF90IGNv
bnRleHRJZCkKLXsKLSAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnRvZ2dsZVBsYXlTdGF0ZSgp
OwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmJlZ2luU2NydWJiaW5nKHVp
bnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmJlZ2luU2Ny
dWJiaW5nKCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW5kU2NydWJi
aW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmVu
ZFNjcnViYmluZygpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNlZWtU
b1RpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSkKLXsKLSAgICBlbnN1cmVNb2Rl
bChjb250ZXh0SWQpLnNlZWtUb1RpbWUodGltZSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6ZmFzdFNlZWsodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSkKLXsK
LSAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmZhc3RTZWVrKHRpbWUpOwotfQotCi12b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNv
bnRleHRJZCkKLXsKLSAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmJlZ2luU2Nhbm5pbmdGb3J3
YXJkKCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6YmVnaW5TY2Fubmlu
Z0JhY2t3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBlbnN1cmVNb2RlbChjb250ZXh0
SWQpLmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OmVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBlbnN1cmVN
b2RlbChjb250ZXh0SWQpLmVuZFNjYW5uaW5nKCk7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKHVpbnQ2NF90IGNvbnRleHRJZCwgV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7
CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUobW9kZSk7
CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2VsZWN0QXVkaW9NZWRpYU9w
dGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQotewotICAgIGVuc3VyZU1v
ZGVsKGNvbnRleHRJZCkuc2VsZWN0QXVkaW9NZWRpYU9wdGlvbihpbmRleCk7Ci19Ci0KLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2
NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCi17Ci0gICAgZW5zdXJlTW9kZWwoY29udGV4
dElkKS5zZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oaW5kZXgpOwotfQotCiB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0
SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2
aWRlb0Z1bGxzY3JlZW5Nb2RlKQogewogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuZnVsbHNj
cmVlbk1vZGVDaGFuZ2VkKHZpZGVvRnVsbHNjcmVlbk1vZGUpOwogfQogCi0jcHJhZ21hIG1hcmsg
TWVzc2FnZXMgZnJvbSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOgotCiB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQp
CiB7CiAgICAgUGxhdGZvcm1MYXllciogdmlkZW9MYXllciA9IFtDQUxheWVyIGxheWVyXTsK
</data>
<flag name="review"
          id="300778"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
      

    </bug>

</bugzilla>