<?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>195823</bug_id>
          
          <creation_ts>2019-03-15 14:45:21 -0700</creation_ts>
          <short_desc>Add media stream release logging</short_desc>
          <delta_ts>2019-05-20 11:40:47 -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>WebRTC</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=196517</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1517147</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-03-15 14:45:21 -0700</bug_when>
    <thetext>Add media stream release logging and update some WebRTC logging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517152</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-15 14:50:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/48939406&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517158</commentid>
    <comment_count>2</comment_count>
      <attachid>364851</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-03-15 14:57:40 -0700</bug_when>
    <thetext>Created attachment 364851
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517161</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-15 15:00:38 -0700</bug_when>
    <thetext>Attachment 364851 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/IntSize.h:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:1085:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSource.h:188:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSource.h:189:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSource.h:190:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSource.h:191:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.cpp:176:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 7 in 39 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>1517195</commentid>
    <comment_count>4</comment_count>
      <attachid>364851</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-03-15 15:28:17 -0700</bug_when>
    <thetext>Comment on attachment 364851
Patch

LGTM.

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

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:311
&gt;          LOG(Media, &quot;MediaStream::startProducingData(%p) - not allowed to start in background, waiting&quot;, this);

Move to release logging?

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:502
&gt; +    ALWAYS_LOG(LOGIDENTIFIER);

Do we need this one, it seems endCaptureTracks) will do these things anyway.

&gt; Source/WebCore/html/HTMLMediaElement.h:564
&gt; +    const void* logIdentifier() const final { return m_logIdentifier; }

We could simply return &apos;this&apos; pointer here and maybe elsewhere.
That would remove the need for m_logIdentifier.

&gt; Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h:43
&gt; +class MediaStreamTrackPrivate

final here and maybe some other classes.

&gt; Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h:122
&gt; +    const void* logIdentifier() const final { return m_logIdentifier; }

Can these two final be private?

&gt; Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h:147
&gt; +#endif

This class and some others do not log right now.
Is this code to make it happen in the future or is it allow getting the logger for some other classes?

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:176
&gt; +            INFO_LOG_IF(loggerPtr(), LOGIDENTIFIER, m_frameCount, &quot; frames sent in &quot;, delta.value(), &quot; seconds&quot;);

Is it safe to log from a background thread?

&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:368
&gt; +                    return;

Maybe document this change in log, this seems unrelated to adding logging.

&gt; Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp:272
&gt; +        RELEASE_LOG_ERROR(Media, &quot;CoreAudioSharedUnit::setupAudioUnit(%p) unable to find vpio unit component&quot;, this);

Should we go with WebRTC here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517224</commentid>
    <comment_count>5</comment_count>
      <attachid>364851</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-03-15 15:57:44 -0700</bug_when>
    <thetext>Comment on attachment 364851
Patch

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

&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:311
&gt;&gt;          LOG(Media, &quot;MediaStream::startProducingData(%p) - not allowed to start in background, waiting&quot;, this);
&gt; 
&gt; Move to release logging?

Oops, thanks.

&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:502
&gt;&gt; +    ALWAYS_LOG(LOGIDENTIFIER);
&gt; 
&gt; Do we need this one, it seems endCaptureTracks) will do these things anyway.

OK

&gt;&gt; Source/WebCore/html/HTMLMediaElement.h:564
&gt;&gt; +    const void* logIdentifier() const final { return m_logIdentifier; }
&gt; 
&gt; We could simply return &apos;this&apos; pointer here and maybe elsewhere.
&gt; That would remove the need for m_logIdentifier.

We aren&apos;t supposed to log addresses.

&gt;&gt; Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h:43
&gt;&gt; +class MediaStreamTrackPrivate
&gt; 
&gt; final here and maybe some other classes.

OK

&gt;&gt; Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h:122
&gt;&gt; +    const void* logIdentifier() const final { return m_logIdentifier; }
&gt; 
&gt; Can these two final be private?

They are both used by the RealtimeOutgoing sources.

&gt;&gt; Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h:147
&gt;&gt; +#endif
&gt; 
&gt; This class and some others do not log right now.
&gt; Is this code to make it happen in the future or is it allow getting the logger for some other classes?

It sets the RealtimeMediaSource logger/log identifier.

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:176
&gt;&gt; +            INFO_LOG_IF(loggerPtr(), LOGIDENTIFIER, m_frameCount, &quot; frames sent in &quot;, delta.value(), &quot; seconds&quot;);
&gt; 
&gt; Is it safe to log from a background thread?

No, but this is always called on the main thread.

&gt;&gt; Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp:272
&gt;&gt; +        RELEASE_LOG_ERROR(Media, &quot;CoreAudioSharedUnit::setupAudioUnit(%p) unable to find vpio unit component&quot;, this);
&gt; 
&gt; Should we go with WebRTC here?

Good idea, changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517230</commentid>
    <comment_count>6</comment_count>
      <attachid>364867</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-03-15 16:00:50 -0700</bug_when>
    <thetext>Created attachment 364867
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517233</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-03-15 16:01:25 -0700</bug_when>
    <thetext>&gt; &gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:176
&gt; &gt;&gt; +            INFO_LOG_IF(loggerPtr(), LOGIDENTIFIER, m_frameCount, &quot; frames sent in &quot;, delta.value(), &quot; seconds&quot;);
&gt; &gt; 
&gt; &gt; Is it safe to log from a background thread?
&gt; 
&gt; No, but this is always called on the main thread.

I am not sure we always log from the main thread, videoSampleAvailable might be called from the capture thread. This might be a preexisting issue in fact.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517253</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-03-15 16:15:36 -0700</bug_when>
    <thetext>&gt; &gt; &gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:176
&gt; &gt; &gt;&gt; +            INFO_LOG_IF(loggerPtr(), LOGIDENTIFIER, m_frameCount, &quot; frames sent in &quot;, delta.value(), &quot; seconds&quot;);
&gt; &gt; &gt; 
&gt; &gt; &gt; Is it safe to log from a background thread?
&gt; &gt; 
&gt; &gt; No, but this is always called on the main thread.
&gt; 
&gt; I am not sure we always log from the main thread, videoSampleAvailable might
&gt; be called from the capture thread. This might be a preexisting issue in fact.

As we discussed on irc, this should only be called on the main thread. I&apos;ll add an ASSERT in a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517255</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-15 16:17:05 -0700</bug_when>
    <thetext>Attachment 364867 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/IntSize.h:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:1085:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSource.h:188:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSource.h:189:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSource.h:190:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSource.h:191:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.cpp:176:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 7 in 39 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>1517342</commentid>
    <comment_count>10</comment_count>
      <attachid>364904</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-03-15 20:34:54 -0700</bug_when>
    <thetext>Created attachment 364904
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517343</commentid>
    <comment_count>11</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-15 20:37:32 -0700</bug_when>
    <thetext>Attachment 364904 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/IntSize.h:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:1085:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSource.h:188:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSource.h:189:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSource.h:190:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSource.h:191:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.cpp:176:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 7 in 40 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>1517371</commentid>
    <comment_count>12</comment_count>
      <attachid>364904</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-15 22:21:49 -0700</bug_when>
    <thetext>Comment on attachment 364904
Patch for landing.

Clearing flags on attachment: 364904

Committed r243033: &lt;https://trac.webkit.org/changeset/243033&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364851</attachid>
            <date>2019-03-15 14:57:40 -0700</date>
            <delta_ts>2019-03-15 15:28:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>media-stream-logging-patch-2.txt</filename>
            <type>text/plain</type>
            <size>108203</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZWEzNmQ0MGMyNjYuLmE5OWY3NTE3NzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5
LTAzLTE1ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBtZWRpYSBzdHJlYW0gcmVsZWFzZSBsb2dnaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Mb2dnZXJIZWxwZXIuaDogQWRkIExPR19J
RiB2YXJpYW50cyB0aGF0IGNoZWNrIGEgY29uZGl0aW9uIGJlZm9yZSBsb2dnaW5nLgorCiAyMDE5
LTAzLTEzICBEb21pbmlrIEluZnVlaHIgIDxkaW5mdWVockBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFN0cmluZyBvdmVyZmxvdyB3aGVuIHVzaW5nIFN0cmluZ0J1aWxkZXIgaW4gSlNDOjpjcmVhdGVF
cnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9nZ2VySGVscGVyLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9Mb2dnZXJIZWxwZXIuaAppbmRleCBlODI2NDc0NDdjMS4uZDAzYWZlNjQxNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xvZ2dlckhlbHBlci5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0xvZ2dlckhlbHBlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYv
TG9nZ2VyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtNDUsMTcgKzQ2LDI4IEBAIHB1YmxpYzoK
ICNkZWZpbmUgQUxXQVlTX0xPRyguLi4pICAgICBsb2dnZXIoKS5sb2dBbHdheXMobG9nQ2hhbm5l
bCgpLCBfX1ZBX0FSR1NfXykKICNkZWZpbmUgRVJST1JfTE9HKC4uLikgICAgICBsb2dnZXIoKS5l
cnJvcihsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQogI2RlZmluZSBXQVJOSU5HX0xPRyguLi4p
ICAgIGxvZ2dlcigpLndhcm5pbmcobG9nQ2hhbm5lbCgpLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUg
Tk9USUNFX0xPRyguLi4pICAgICBsb2dnZXIoKS5ub3RpY2UobG9nQ2hhbm5lbCgpLCBfX1ZBX0FS
R1NfXykKICNkZWZpbmUgSU5GT19MT0coLi4uKSAgICAgICBsb2dnZXIoKS5pbmZvKGxvZ0NoYW5u
ZWwoKSwgX19WQV9BUkdTX18pCiAjZGVmaW5lIERFQlVHX0xPRyguLi4pICAgICAgbG9nZ2VyKCku
ZGVidWcobG9nQ2hhbm5lbCgpLCBfX1ZBX0FSR1NfXykKICNkZWZpbmUgV0lMTF9MT0coX2xldmVs
XykgICBsb2dnZXIoKS53aWxsTG9nKGxvZ0NoYW5uZWwoKSwgX2xldmVsXykKIAorI2RlZmluZSBB
TFdBWVNfTE9HX0lGKGNvbmRpdGlvbiwgLi4uKSAgICAgaWYgKGNvbmRpdGlvbikgbG9nZ2VyKCku
bG9nQWx3YXlzKGxvZ0NoYW5uZWwoKSwgX19WQV9BUkdTX18pCisjZGVmaW5lIEVSUk9SX0xPR19J
Rihjb25kaXRpb24sIC4uLikgICAgICBpZiAoY29uZGl0aW9uKSBsb2dnZXIoKS5lcnJvcihsb2dD
aGFubmVsKCksIF9fVkFfQVJHU19fKQorI2RlZmluZSBXQVJOSU5HX0xPR19JRihjb25kaXRpb24s
IC4uLikgICAgaWYgKGNvbmRpdGlvbikgbG9nZ2VyKCkud2FybmluZyhsb2dDaGFubmVsKCksIF9f
VkFfQVJHU19fKQorI2RlZmluZSBJTkZPX0xPR19JRihjb25kaXRpb24sIC4uLikgICAgICAgaWYg
KGNvbmRpdGlvbikgbG9nZ2VyKCkuaW5mbyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQorI2Rl
ZmluZSBERUJVR19MT0dfSUYoY29uZGl0aW9uLCAuLi4pICAgICAgaWYgKGNvbmRpdGlvbikgbG9n
Z2VyKCkuZGVidWcobG9nQ2hhbm5lbCgpLCBfX1ZBX0FSR1NfXykKKwogICAgIGNvbnN0IHZvaWQq
IGNoaWxkTG9nSWRlbnRpZmllcih1aW50NjRfdCBpZGVudGlmaWVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgc3RhdGljIGNvbnN0IGludDY0X3QgcGFyZW50TWFzayA9IDB4ZmZmZmZmZmZmZmZmMDAw
MGw7CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IG1hc2tMb3dlcldvcmQgPSAweGZmZmZs
OwogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oKHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDY0X3Q+KGxvZ0lkZW50aWZpZXIoKSkgJiBwYXJlbnRNYXNrKSB8IChpZGVu
dGlmaWVyICYgbWFza0xvd2VyV29yZCkpOwogICAgIH0KKworICAgIHN0YXRpYyBjb25zdCB2b2lk
KiB1bmlxdWVMb2dJZGVudGlmaWVyKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyB1aW50NjRfdCBs
b2dJZGVudGlmaWVyID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKKyAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCsrbG9nSWRlbnRpZmllcik7Cisg
ICAgfQogI2Vsc2UKIAogI2RlZmluZSBMT0dJREVOVElGSUVSIChXVEY6Om51bGxvcHQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggN2I2M2I1NTI0OGQuLmI3NzFiNzZjN2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTczIEBACisyMDE5LTAzLTE1ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBtZWRpYSBzdHJlYW0gcmVsZWFzZSBsb2dnaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MjMKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzQ4OTM5NDA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3JhbCBjaGFuZ2UuCisKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbTo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFkZFRyYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6YWRkVHJhY2tGcm9tUGxhdGZvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW06OnNldElzQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtOjptZWRpYUNhblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
OjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OnN0
b3BQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjplbmRDYXB0
dXJlVHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpzdG9wKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpsb2dDaGFubmVsIGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtVHJhY2s6Ok1lZGlhU3RyZWFtVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1UcmFjazo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENNZWRpYUVuZHBvaW50Ojpzb3VyY2VGcm9tTmV3UmVjZWl2ZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29u
dGV4dDo6QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRMb2dJZGVudGlmaWVy
KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpuZXh0TG9nSWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRp
YVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlBs
YXRmb3JtTWVkaWFTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRMb2dJZGVudGlmaWVy
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lv
bi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW50U2l6ZTo6dG9KU09OT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkludFNpemU6OnRvSlNPTlN0cmluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50U2l6ZS5oOgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpJbnRTaXpl
Pjo6dG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
UHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OmFkZFRy
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6cmVtb3ZlVHJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjpzdGFydFByb2R1Y2luZ0Rh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjpzdG9wUHJvZHVjaW5n
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OnNldENhcHR1cmVU
cmFja3NNdXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OnRyYWNr
TXV0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6dHJh
Y2tFbmFibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6
OnRyYWNrU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OnRy
YWNrRW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjpzZXRMb2dn
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjpsb2dDaGFubmVsIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c2V0TG9n
Z2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpsb2dDaGFu
bmVsIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2U6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmxvZ0NoYW5uZWwgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpsb2dn
ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlOjpzZXRMb2dnZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OlJlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6
OmxvZ0NoYW5uZWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlOjpsb2dnZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpzZXRMb2dnZXIpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRJbnRl
cnJ1cHRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRNdXRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpub3RpZnlNdXRlZENo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpub3RpZnlTZXR0
aW5nc0RpZENoYW5nZU9ic2VydmVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OmNhcHR1
cmVGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlD
b25zdHJhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBv
cnRzQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6
YXBwbHlDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
OjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldElu
dHJpbnNpY1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0
RnJhbWVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEFz
cGVjdFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEZh
Y2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0Vm9s
dW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVJh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2FtcGxlU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRFY2hvQ2FuY2Vs
bGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldExvZ2dl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpsb2dDaGFubmVsIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAg
ICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU+
Ojp0b1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6Y29udmVydEZsYWdzVG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oOgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVu
dDxXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZT46
OnRvU3RyaW5nKToKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8T3B0aW9uU2V0PFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4+Ojp0b1N0cmluZyk6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6UmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZTo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmxvZ2dlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNldExvZ2dlcik6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c2VuZE9uZUJsYWNrRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpzZW5kRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpsb2dDaGFubmVsIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6bG9nZ2Vy
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29p
bmdWaWRlb1NvdXJjZTo6c2V0TG9nZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lVmlkZW9Tb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2l6ZUFuZEZyYW1lUmF0ZTo6dG9KU09OT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNpemVBbmRGcmFtZVJhdGU6OnRvSlNPTlN0cmluZyBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5oOgorICAgICAgICAoV1RGOjpM
b2dBcmd1bWVudDxXZWJDb3JlOjpTaXplQW5kRnJhbWVSYXRlPjo6dG9TdHJpbmcpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpjbGVhclNlc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c3RvcFByb2R1Y2lu
Z0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldFNpemVB
bmRGcmFtZVJhdGVXaXRoUHJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJl
U291cmNlOjpzZXR1cFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVT
b3VyY2U6OmZyYW1lRHVyYXRpb25Gb3JGcmFtZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVZW
aWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29y
ZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXB0dXJlRGV2aWNl
U3VzcGVuZGVkRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291
cmNlOjpjYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpBVlZp
ZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25CZWdpbkludGVycnVwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25FbmRJbnRl
cnJ1cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmRldmlj
ZURpc2Nvbm5lY3RlZCk6CisgICAgICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9i
c2VydmVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6
CisgICAgICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIGRldmljZUNv
bm5lY3RlZERpZENoYW5nZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291
cmNlT2JzZXJ2ZXIgc2Vzc2lvblJ1bnRpbWVFcnJvcjpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFW
VmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIgYmVnaW5TZXNzaW9uSW50ZXJydXB0ZWQ6XSk6Cisg
ICAgICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIGVuZFNlc3Npb25J
bnRlcnJ1cHRlZDpdKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpp
bml0aWFsaXplU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29y
ZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRpb1VuaXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29y
ZUF1ZGlvU2hhcmVkVW5pdDo6dmVyaWZ5SXNDYXB0dXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
Q29yZUF1ZGlvU2hhcmVkVW5pdDo6Y2FwdHVyZUZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
b3JlQXVkaW9DYXB0dXJlU291cmNlOjppbml0aWFsaXplVG9TdGFydFByb2R1Y2luZ0RhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6YWRkRWNob0NhbmNlbGxh
dGlvblNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpy
ZW1vdmVFY2hvQ2FuY2VsbGF0aW9uU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRp
b0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
b3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzY2hlZHVsZVJlY29uZmlndXJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpiZWdpbkludGVycnVwdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjplbmRJbnRlcnJ1
cHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0
dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRp
c3BsYXlDYXB0dXJlU291cmNlTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
U2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnN0YXJ0UHJvZHVj
aW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1h
Yzo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGlzcGxheUNh
cHR1cmVTb3VyY2VNYWM6OnN0YXJ0RGlzcGxheVN0cmVhbSk6CisKIDIwMTktMDMtMTMgIERhbmll
bCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzb21lIHVubmVj
ZXNzYXJ5ICFVU0UoVUlLSVRfS0VZQk9BUkRfQURESVRJT05TKSBndWFyZHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggMThm
MjU4N2U2YmIuLjU5NDVmNTAwM2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiwgMjAxNSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC03OCwxMCArNzgsMTkg
QEAgTWVkaWFTdHJlYW06Ok1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2sKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4
dCkKICAgICAsIG1fcHJpdmF0ZShNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShjcmVhdGVUcmFj
a1ByaXZhdGVWZWN0b3IodHJhY2tzKSkpCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAg
ICAsIG1fbG9nZ2VyKGRvY3VtZW50KCktPmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVy
KHVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgogewogICAgIC8vIFRoaXMgY29uc3RydWN0
b3IgcHJlc2VydmVzIE1lZGlhU3RyZWFtVHJhY2sgaW5zdGFuY2VzIGFuZCBtdXN0IGJlIHVzZWQg
YnkgY2FsbHMgb3JpZ2luYXRpbmcKICAgICAvLyBmcm9tIHRoZSBKYXZhU2NyaXB0IE1lZGlhU3Ry
ZWFtIGNvbnN0cnVjdG9yLgogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBtX3ByaXZhdGUtPnNldExvZ2dlcihsb2dnZXIoKSwg
bG9nSWRlbnRpZmllcigpKTsKKyNlbmRpZgorCiAgICAgZm9yIChhdXRvJiB0cmFjayA6IHRyYWNr
cykgewogICAgICAgICB0cmFjay0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICBtX3RyYWNr
U2V0LmFkZCh0cmFjay0+aWQoKSwgdHJhY2spOwpAQCAtOTcsNyArMTA2LDE1IEBAIE1lZGlhU3Ry
ZWFtOjpNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8TWVk
aWFTdHJlYW1Qcml2YXRlCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBt
X3ByaXZhdGUoV1RGTW92ZShzdHJlYW1Qcml2YXRlKSkKICAgICAsIG1fbWVkaWFTZXNzaW9uKFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQoteworI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorICAgICwgbV9sb2dnZXIoZG9jdW1lbnQoKS0+bG9nZ2VyKCkpCisgICAgLCBtX2xv
Z0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQorI2VuZGlmCit7CisjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBtX3By
aXZhdGUtPnNldExvZ2dlcihsb2dnZXIoKSwgbG9nSWRlbnRpZmllcigpKTsKKyNlbmRpZgogICAg
IHNldElzQWN0aXZlKG1fcHJpdmF0ZS0+YWN0aXZlKCkpOwogICAgIGlmIChkb2N1bWVudCgpLT5w
YWdlKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5pc01lZGlhQ2FwdHVyZU11dGVkKCkpCiAgICAg
ICAgIG1fcHJpdmF0ZS0+c2V0Q2FwdHVyZVRyYWNrc011dGVkKHRydWUpOwpAQCAtMTI5LDYgKzE0
Niw4IEBAIE1lZGlhU3RyZWFtOjp+TWVkaWFTdHJlYW0oKQogCiBSZWZQdHI8TWVkaWFTdHJlYW0+
IE1lZGlhU3RyZWFtOjpjbG9uZSgpCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
KwogICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgY2xvbmVkVHJhY2tzOwogICAgIGNsb25lZFRy
YWNrcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fdHJhY2tTZXQuc2l6ZSgpKTsKIApAQCAtMTQw
LDYgKzE1OSw4IEBAIFJlZlB0cjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNsb25lKCkKIAog
dm9pZCBNZWRpYVN0cmVhbTo6YWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayYgdHJhY2spCiB7Cisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCB0cmFjay5sb2dJZGVudGlmaWVyKCkpOworCiAg
ICAgaWYgKCFpbnRlcm5hbEFkZFRyYWNrKHRyYWNrLCBTdHJlYW1Nb2RpZmllcjo6RG9tQVBJKSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDksNiArMTcwLDggQEAgdm9pZCBNZWRpYVN0cmVhbTo6
YWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayYgdHJhY2spCiAKIHZvaWQgTWVkaWFTdHJlYW06OnJl
bW92ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrKQogeworICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgdHJhY2subG9nSWRlbnRpZmllcigpKTsKKwogICAgIGlmICghaW50ZXJuYWxS
ZW1vdmVUcmFjayh0cmFjay5pZCgpLCBTdHJlYW1Nb2RpZmllcjo6RG9tQVBJKSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0yMDcsNiArMjMwLDggQEAgdm9pZCBNZWRpYVN0cmVhbTo6ZGlkUmVtb3Zl
VHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKIAogdm9pZCBNZWRp
YVN0cmVhbTo6YWRkVHJhY2tGcm9tUGxhdGZvcm0oUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJh
Y2spCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCB0cmFjay0+bG9nSWRlbnRpZmll
cigpKTsKKwogICAgIGF1dG8qIHByaXZhdGVUcmFjayA9ICZ0cmFjay0+cHJpdmF0ZVRyYWNrKCk7
CiAgICAgaW50ZXJuYWxBZGRUcmFjayhXVEZNb3ZlKHRyYWNrKSwgU3RyZWFtTW9kaWZpZXI6OlBs
YXRmb3JtKTsKICAgICBtX3ByaXZhdGUtPmFkZFRyYWNrKHByaXZhdGVUcmFjaywgTWVkaWFTdHJl
YW1Qcml2YXRlOjpOb3RpZnlDbGllbnRPcHRpb246Ok5vdGlmeSk7CkBAIC0yNTUsMTIgKzI4MCwx
NiBAQCB2b2lkIE1lZGlhU3RyZWFtOjpzZXRJc0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICBpZiAo
bV9pc0FjdGl2ZSA9PSBhY3RpdmUpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUiwgYWN0aXZlKTsKKwogICAgIG1faXNBY3RpdmUgPSBhY3RpdmU7CiAgICAg
c3RhdHVzRGlkQ2hhbmdlKCk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW06Om1lZGlhQ2FuU3RhcnQo
RG9jdW1lbnQmIGRvY3VtZW50KQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisK
ICAgICBBU1NFUlRfVU5VU0VEKGRvY3VtZW50LCAmZG9jdW1lbnQgPT0gdGhpcy0+ZG9jdW1lbnQo
KSk7CiAgICAgQVNTRVJUKG1faXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0KTsKICAgICBpZiAo
bV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQpIHsKQEAgLTI3NSw2ICszMDQsOCBAQCB2b2lk
IE1lZGlhU3RyZWFtOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogICAgIGlmICghZG9jdW1lbnQgfHwg
IWRvY3VtZW50LT5wYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CisKICAgICAvLyBJZiB3ZSBjYW4ndCBzdGFydCBhIGxvYWQgcmlnaHQgYXdh
eSwgc3RhcnQgaXQgbGF0ZXIuCiAgICAgaWYgKCFkb2N1bWVudC0+cGFnZSgpLT5jYW5TdGFydE1l
ZGlhKCkpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFTdHJlYW06OnN0YXJ0UHJvZHVjaW5n
RGF0YSglcCkgLSBub3QgYWxsb3dlZCB0byBzdGFydCBpbiBiYWNrZ3JvdW5kLCB3YWl0aW5nIiwg
dGhpcyk7CkBAIC0zMDEsNiArMzMyLDkgQEAgdm9pZCBNZWRpYVN0cmVhbTo6c3RvcFByb2R1Y2lu
Z0RhdGEoKQogewogICAgIGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCiAgICAgICAgIHJldHVybjsK
KworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKICAgICBtX2lzUHJvZHVjaW5nRGF0
YSA9IGZhbHNlOwogCiAgICAgbV9tZWRpYVNlc3Npb24tPmNhblByb2R1Y2VBdWRpb0NoYW5nZWQo
KTsKQEAgLTMxMCw2ICszNDQsOCBAQCB2b2lkIE1lZGlhU3RyZWFtOjpzdG9wUHJvZHVjaW5nRGF0
YSgpCiAKIHZvaWQgTWVkaWFTdHJlYW06OmVuZENhcHR1cmVUcmFja3MoKQogeworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUik7CisKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV90cmFja1Nl
dC52YWx1ZXMoKSkgewogICAgICAgICBpZiAodHJhY2stPmlzQ2FwdHVyZVRyYWNrKCkpCiAgICAg
ICAgICAgICB0cmFjay0+c3RvcFRyYWNrKE1lZGlhU3RyZWFtVHJhY2s6OlN0b3BNb2RlOjpQb3N0
RXZlbnQpOwpAQCAtNDYzLDYgKzQ5OSw4IEBAIGJvb2wgTWVkaWFTdHJlYW06OnByb2Nlc3NpbmdV
c2VyR2VzdHVyZUZvck1lZGlhKCkgY29uc3QKIAogdm9pZCBNZWRpYVN0cmVhbTo6c3RvcCgpCiB7
CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKwogICAgIG1faXNBY3RpdmUgPSBmYWxz
ZTsKICAgICBlbmRDYXB0dXJlVHJhY2tzKCk7CiB9CkBAIC00ODIsNiArNTIwLDEzIEBAIGJvb2wg
TWVkaWFTdHJlYW06Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faXNB
Y3RpdmU7CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxvZ0NoYW5uZWwmIE1l
ZGlhU3RyZWFtOjpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTG9nV2ViUlRDOwor
fQorI2VuZGlmCisgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5oCmluZGV4IDFjMWFlMTFiODBlLi5jMDU1M2FlODdkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaApAQCAtMSw3
ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNSBFcmljc3NvbiBBQi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBA
IC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJVUkxSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBl
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCkBAIC01NSw2ICs1Niw5IEBAIGNsYXNzIE1lZGlhU3RyZWFtIGZpbmFsCiAgICAgLCBwdWJs
aWMgTWVkaWFTdHJlYW1Qcml2YXRlOjpPYnNlcnZlcgogICAgICwgcHJpdmF0ZSBNZWRpYUNhblN0
YXJ0TGlzdGVuZXIKICAgICAsIHByaXZhdGUgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQKKyNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCisjZW5k
aWYKICAgICAsIHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtPiB7CiBwdWJsaWM6CiAgICAg
Y2xhc3MgT2JzZXJ2ZXIgewpAQCAtMTE5LDYgKzEyMywxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgTWVk
aWFTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tW
ZWN0b3ImKTsKICAgICBNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPE1l
ZGlhU3RyZWFtUHJpdmF0ZT4mJik7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBj
b25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgp
OyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fbG9nSWRlbnRpZmllcjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25z
dCBmaW5hbDsKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAiTWVkaWFTdHJlYW0iOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKIAogICAgIC8vIEV2ZW50
VGFyZ2V0CkBAIC0xNzUsNiArMTg2LDExIEBAIHByaXZhdGU6CiAKICAgICBNZWRpYVByb2R1Y2Vy
OjpNZWRpYVN0YXRlRmxhZ3MgbV9zdGF0ZSB7IE1lZGlhUHJvZHVjZXI6OklzTm90UGxheWluZyB9
OwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgUmVmPExvZ2dlcj4gbV9sb2dnZXI7
CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCisKICAgICBib29sIG1f
aXNBY3RpdmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1Byb2R1Y2luZ0RhdGEgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHAKaW5kZXggOWNhNzcyNTM2MjguLmRiYjU0N2U0YWM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAK
QEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTUgRXJpY3Nzb24g
QUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dApAQCAtNTQsMTAgKzU0LDE4IEBAIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiBNZWRpYVN0cmVh
bVRyYWNrOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwKIE1lZGlhU3Ry
ZWFtVHJhY2s6Ok1lZGlhU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIHByaXZhdGVUcmFjaykKICAgICA6IEFj
dGl2ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAsIG1fcHJpdmF0ZShXVEZNb3ZlKHByaXZhdGVU
cmFjaykpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihkb2N1bWVu
dCgpLT5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVy
KCkpCisjZW5kaWYKICAgICAsIG1fdGFza1F1ZXVlKGNvbnRleHQpCiB7CisgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSKTsKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIAorI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAorICAgIG1fcHJpdmF0ZS0+c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVu
dGlmaWVyKCkpOworI2VuZGlmCiAgICAgbV9wcml2YXRlLT5hZGRPYnNlcnZlcigqdGhpcyk7CiAK
ICAgICBpZiAoYXV0byBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpCkBAIC00ODksNiArNDk3
LDEzIEBAIERvY3VtZW50KiBNZWRpYVN0cmVhbVRyYWNrOjpkb2N1bWVudCgpIGNvbnN0CiAgICAg
cmV0dXJuIGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogfQog
CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitXVEZMb2dDaGFubmVsJiBNZWRpYVN0cmVhbVRy
YWNrOjpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTG9nV2ViUlRDOworfQorI2Vu
ZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5oCmluZGV4IDQ5ODJjYjBiZDkzLi5lNmVkMDZkNmYwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTUgRXJpY3Nz
b24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKICNp
bmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhVHJhY2tD
b25zdHJhaW50cy5oIgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC01Miw3ICs1MywxMSBAQCBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrIDoK
ICAgICBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwKICAgICBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8TWVkaWFTdHJlYW1UcmFjaz4sCiAgICAgcHJpdmF0ZSBNZWRpYVByb2R1Y2VyLAot
ICAgIHByaXZhdGUgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIHsKKyAgICBwcml2
YXRlIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlcgorI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIKKyNlbmRpZgorewogcHVibGljOgog
ICAgIGNsYXNzIE9ic2VydmVyIHsKICAgICBwdWJsaWM6CkBAIC02OSw3ICs3NCw2IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3Q7CiAgICAgY29u
c3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0OwogCi0KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGNv
bnRlbnRIaW50KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250ZW50SGludChjb25zdCBTdHJpbmcm
KTsKICAgICAgICAgCkBAIC0xNDUsNiArMTQ5LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
SWRGb3JUZXN0aW5nKFN0cmluZyYmIGlkKSB7IG1fcHJpdmF0ZS0+c2V0SWRGb3JUZXN0aW5nKFdU
Rk1vdmUoaWQpKTsgfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgTG9n
Z2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQorICAg
IGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lk
ZW50aWZpZXI7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFTdHJlYW1UcmFjayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmKTsK
IApAQCAtMTc2LDggKzE4NSwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgdHJhY2tTZXR0aW5nc0No
YW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbDsKICAgICB2b2lkIHRyYWNrRW5h
YmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbDsKIAotICAgIFZlY3Rv
cjxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAg
IGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJNZWRpYVN0
cmVhbVRyYWNrIjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5h
bDsKKyAgICAKKyAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lk
KiBtX2xvZ0lkZW50aWZpZXI7CisjZW5kaWYKIAorICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2Jz
ZXJ2ZXJzOwogCiAgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRzIG1fY29uc3RyYWludHM7CiAgICAg
T3B0aW9uYWw8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiBtX3Byb21pc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENN
ZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCmluZGV4IDUxYWQzMjFkMTU2Li45MGNh
MWJlZWQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAK
QEAgLTIxOSwxOCArMjE5LDEyIEBAIGJvb2wgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkVHJh
Y2soTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCYgc2VuZGVyLCBNZWRpYVN0CiAgICAgc3dpdGNo
ICh0cmFjay5wcml2YXRlVHJhY2soKS50eXBlKCkpIHsKICAgICBjYXNlIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGU6OkF1ZGlvOiB7CiAgICAgICAgIGF1dG8gYXVkaW9Tb3VyY2UgPSBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZSh0cmFjay5wcml2YXRlVHJhY2soKSk7Ci0jaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgICAgIGF1ZGlvU291cmNlLT5zZXRMb2dnZXIobV9s
b2dnZXIuY29weVJlZigpKTsKLSNlbmRpZgogICAgICAgICBydGNUcmFjayA9IG1fcGVlckNvbm5l
Y3Rpb25GYWN0b3J5LkNyZWF0ZUF1ZGlvVHJhY2sodHJhY2suaWQoKS51dGY4KCkuZGF0YSgpLCBh
dWRpb1NvdXJjZS5wdHIoKSk7CiAgICAgICAgIHNvdXJjZSA9IFdURk1vdmUoYXVkaW9Tb3VyY2Up
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpU
eXBlOjpWaWRlbzogewogICAgICAgICBhdXRvIHZpZGVvU291cmNlID0gUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlOjpjcmVhdGUodHJhY2sucHJpdmF0ZVRyYWNrKCkpOwotI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAotICAgICAgICB2aWRlb1NvdXJjZS0+c2V0TG9nZ2VyKG1fbG9nZ2VyLmNv
cHlSZWYoKSk7Ci0jZW5kaWYKICAgICAgICAgcnRjVHJhY2sgPSBtX3BlZXJDb25uZWN0aW9uRmFj
dG9yeS5DcmVhdGVWaWRlb1RyYWNrKHRyYWNrLmlkKCkudXRmOCgpLmRhdGEoKSwgdmlkZW9Tb3Vy
Y2UucHRyKCkpOwogICAgICAgICBzb3VyY2UgPSBXVEZNb3ZlKHZpZGVvU291cmNlKTsKICAgICAg
ICAgYnJlYWs7CkBAIC00NjIsMTkgKzQ1NiwxMSBAQCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJj
ZT4gTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c291cmNlRnJvbU5ld1JlY2VpdmVyKHdlYnJ0Ywog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVE
SU86IHsKICAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVy
ZmFjZT4gYXVkaW9UcmFjayA9IHN0YXRpY19jYXN0PHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFj
ZSo+KHJ0Y1RyYWNrLmdldCgpKTsKLSAgICAgICAgYXV0byBhdWRpb1NvdXJjZSA9IFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKFdURk1vdmUoYXVkaW9UcmFjayksIGZyb21TdGRT
dHJpbmcocnRjVHJhY2stPmlkKCkpKTsKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAg
ICAgYXVkaW9Tb3VyY2UtPnNldExvZ2dlcihtX2xvZ2dlci5jb3B5UmVmKCkpOwotI2VuZGlmCi0g
ICAgICAgIHJldHVybiBhdWRpb1NvdXJjZTsKKyAgICAgICAgcmV0dXJuIFJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZTo6Y3JlYXRlKFdURk1vdmUoYXVkaW9UcmFjayksIGZyb21TdGRTdHJpbmco
cnRjVHJhY2stPmlkKCkpKTsKICAgICB9CiAgICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJ
REVPOiB7CiAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRl
cmZhY2U+IHZpZGVvVHJhY2sgPSBzdGF0aWNfY2FzdDx3ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZh
Y2UqPihydGNUcmFjay5nZXQoKSk7Ci0gICAgICAgIGF1dG8gdmlkZW9Tb3VyY2UgPSAgUmVhbHRp
bWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVhdGUoV1RGTW92ZSh2aWRlb1RyYWNrKSwgZnJvbVN0
ZFN0cmluZyhydGNUcmFjay0+aWQoKSkpOwotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAg
ICAgICB2aWRlb1NvdXJjZS0+c2V0TG9nZ2VyKG1fbG9nZ2VyLmNvcHlSZWYoKSk7Ci0jZW5kaWYK
LSAgICAgICAgcmV0dXJuIHZpZGVvU291cmNlOworICAgICAgICByZXR1cm4gUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlOjpjcmVhdGUoV1RGTW92ZSh2aWRlb1RyYWNrKSwgZnJvbVN0ZFN0cmlu
ZyhydGNUcmFjay0+aWQoKSkpOwogICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCBkODc0ZWMyZjRmOC4uNDA0
NzAwNjdlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHAKQEAgLTEwNiwxNCArMTA2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAj
ZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRv
Y3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPmlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBNZWRpYSwgIiVwIC0gQXVkaW9Db250ZXh0OjoiIGZtdCwgdGhpcywgIyNfX1ZB
X0FSR1NfXykKICAgICAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLXN0YXRpYyBjb25zdCB2
b2lkKiBuZXh0TG9nSWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGljIHVpbnQ2NF90IGxvZ0lkZW50
aWZpZXIgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOwotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigrK2xvZ0lkZW50aWZpZXIpOwotfQotI2VuZGlmCi0K
IGJvb2wgQXVkaW9Db250ZXh0Ojppc1NhbXBsZVJhdGVSYW5nZUdvb2QoZmxvYXQgc2FtcGxlUmF0
ZSkKIHsKICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSBpZiB0aGUgbWluaW11bSBzYW1w
bGUtcmF0ZSBjb3VsZCBiZSBsZXNzIHRoYW4gNDQuMUtIeiwKQEAgLTE0MSw3ICsxMzMsNyBAQCBB
dWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBBY3Rp
dmVET01PYmplY3QoZG9jdW1lbnQpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBt
X2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKLSAgICAsIG1fbG9nSWRlbnRpZmllcihuZXh0TG9n
SWRlbnRpZmllcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50aWZpZXIo
KSkKICNlbmRpZgogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNy
ZWF0ZSgqdGhpcykpCiAgICAgLCBtX2V2ZW50UXVldWUoc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmlj
RXZlbnRRdWV1ZT4oKnRoaXMpKQpAQCAtMTU5LDcgKzE1MSw3IEBAIEF1ZGlvQ29udGV4dDo6QXVk
aW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywg
c2l6ZV90CiAgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKLSAgICAsIG1fbG9n
SWRlbnRpZmllcihuZXh0TG9nSWRlbnRpZmllcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHVu
aXF1ZUxvZ0lkZW50aWZpZXIoKSkKICNlbmRpZgogICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRy
dWUpCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0
aGlzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDY0MWY3
YzcxMGRjLi4zNWU4NDUwNDdiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCkBAIC00MTYsMTQgKzQxNiw2IEBAIHN0YXRpYyBib29sIG1lZGlhU2Vzc2lvbk1heUJl
Q29uZnVzZWRXaXRoTWFpbkNvbnRlbnQoY29uc3QgTWVkaWFFbGVtZW50U2Vzc2lvbkluCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLXN0YXRpYyB1aW50
NjRfdCBuZXh0TG9nSWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGljIHVpbnQ2NF90IGxvZ0lkZW50
aWZpZXIgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOwotICAgIHJldHVybiArK2xv
Z0lkZW50aWZpZXI7Ci19Ci0jZW5kaWYKLQogSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIGJv
b2wgY3JlYXRlZEJ5UGFyc2VyKQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CiAgICAgLCBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCkBAIC00NzQsNyArNDY2LDcgQEAgSFRN
TE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCYgZG9jdW0KICNlbmRpZgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAog
ICAgICwgbV9sb2dnZXIoJmRvY3VtZW50LmxvZ2dlcigpKQotICAgICwgbV9sb2dJZGVudGlmaWVy
KG5leHRMb2dJZGVudGlmaWVyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRl
bnRpZmllcigpKQogI2VuZGlmCiB7CiAgICAgYWxsTWVkaWFFbGVtZW50cygpLmFkZCh0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggYTY3OGQ5NGVjODkuLjg1
Y2QwNmQ4ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNTYx
LDcgKzU2MSw3IEBAIHB1YmxpYzoKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNv
bnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gKm1fbG9nZ2VyLmdldCgp
OyB9Ci0gICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fbG9nSWRlbnRpZmllcik7IH0KKyAgICBj
b25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVu
dGlmaWVyOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOwog
I2VuZGlmCiAKQEAgLTExNzYsNyArMTE3Niw3IEBAIHByaXZhdGU6CiAKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dlcjsKLSAgICB1aW50NjRfdCBt
X2xvZ0lkZW50aWZpZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCmluZGV4IDNl
NTYxZmViZTRkLi5iYTM2Mzc5MTg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcApAQCAtMzEsMTkgKzMxLDEyIEBA
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgiCi0jaW5jbHVkZSA8d3RmL0NyeXB0b2dy
YXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IGNvbnN0IFNlY29uZHMgY2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyVGhyb3R0bGVEZWxheSB7IDEw
MF9tcyB9OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi1zdGF0aWMgdWludDY0X3QgbmV4
dExvZ0lkZW50aWZpZXIoKQotewotICAgIHN0YXRpYyB1aW50NjRfdCBsb2dJZGVudGlmaWVyID0g
Y3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKLSAgICByZXR1cm4gKytsb2dJZGVudGlm
aWVyOwotfQotCiBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUGxhdGZvcm1NZWRp
YVNlc3Npb246OlN0YXRlIHN0YXRlKQogewogICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IHZhbHVlc1tdID0gewpAQCAtMTI2LDcgKzExOSw3IEBAIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYg
Y2xpZW50KQogICAgICwgbV9ub3RpZnlpbmdDbGllbnQoZmFsc2UpCiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihjbGllbnQuaG9zdGluZ0RvY3VtZW50KCktPmxvZ2dl
cigpKQotICAgICwgbV9sb2dJZGVudGlmaWVyKG5leHRMb2dJZGVudGlmaWVyKCkpCisgICAgLCBt
X2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQogI2VuZGlmCiB7CiAgICAgQVNT
RVJUKG1fY2xpZW50Lm1lZGlhVHlwZSgpID49IE5vbmUgJiYgbV9jbGllbnQubWVkaWFUeXBlKCkg
PD0gTWVkaWFTdHJlYW1DYXB0dXJpbmdBdWRpbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAppbmRleCBiNWQ3OTJmMDFhYy4u
NDY5ODI0ZDI5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uaApAQCAtMTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKIAogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KLSAgICBjb25zdCB2b2lkKiBsb2dJZGVu
dGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2
b2lkKj4obV9sb2dJZGVudGlmaWVyKTsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KICAgICBjb25zdCBj
aGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUGxhdGZvcm1NZWRp
YVNlc3Npb24iOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFs
OwogI2VuZGlmCkBAIC0yMDQsNyArMjA0LDcgQEAgcHJpdmF0ZToKIAogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwotICAgIHVpbnQ2NF90
IG1fbG9nSWRlbnRpZmllcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CiAjZW5k
aWYKIAogICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuY3BwCmluZGV4IDM3NWExYTE5
ZDlmLi45ZDI2NmRlM2IwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW50U2l6ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW50U2l6ZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAKICNp
bmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAs
NCArNTEsMTkgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKICAgICByZXR1cm4gdHMgPDwgIndpZHRoPSIgPDwgc2l6ZS53aWR0aCgp
IDw8ICIgaGVpZ2h0PSIgPDwgc2l6ZS5oZWlnaHQoKTsKIH0KIAorUmVmPEpTT046Ok9iamVjdD4g
SW50U2l6ZTo6dG9KU09OT2JqZWN0KCkgY29uc3QKK3sKKyAgICBhdXRvIG9iamVjdCA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CisKKyAgICBvYmplY3QtPnNldERvdWJsZSgid2lkdGgiX3MsIG1f
d2lkdGgpOworICAgIG9iamVjdC0+c2V0RG91YmxlKCJoZWlnaHQiX3MsIG1faGVpZ2h0KTsKKwor
ICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cmluZyBJbnRTaXplOjp0b0pTT05TdHJpbmcoKSBj
b25zdAoreworICAgIHJldHVybiB0b0pTT05PYmplY3QoKS0+dG9KU09OU3RyaW5nKCk7Cit9CisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAppbmRleCAzMDUy
YTM3OWY3Mi4uZWU3YzZjMGFkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ludFNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbnRTaXplLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8
YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZCBfX09CSkNfXwpAQCAtMTcz
LDYgKzE3NCw5IEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBEMkQxX1NJWkVfRigpIGNvbnN0Owog
I2VuZGlmCiAKKyAgICBTdHJpbmcgdG9KU09OU3RyaW5nKCkgY29uc3Q7CisgICAgUmVmPEpTT046
Ok9iamVjdD4gdG9KU09OT2JqZWN0KCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgaW50IG1fd2lk
dGgsIG1faGVpZ2h0OwogfTsKQEAgLTIyMyw0ICsyMjcsMTQgQEAgV0VCQ09SRV9FWFBPUlQgV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEludFNpemUm
KTsKIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29y
ZTo6SW50U2l6ZT47CiB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OkludFNp
emU+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBzdHJ1Y3QgTG9nQXJndW1lbnQ7Cit0ZW1w
bGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OkludFNpemU+IHsKKyAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCisgICAgewor
ICAgICAgICByZXR1cm4gc2l6ZS50b0pTT05TdHJpbmcoKTsKKyAgICB9Cit9OwogfQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVBy
aXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1Qcml2YXRlLmNwcAppbmRleCBiZDhlYjg4YmYzZi4uZTM2MTc3YTIwOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Q
cml2YXRlLmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNSBF
cmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0xMzYsNiArMTM2LDggQEAgdm9pZCBNZWRpYVN0
cmVhbVByaXZhdGU6OmFkZFRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiB0
cmFjaywgTm90aWYKICAgICBpZiAobV90cmFja1NldC5jb250YWlucyh0cmFjay0+aWQoKSkpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgdHJhY2stPmxv
Z0lkZW50aWZpZXIoKSk7CisKICAgICB0cmFjay0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwogICAgIG1f
dHJhY2tTZXQuYWRkKHRyYWNrLT5pZCgpLCB0cmFjayk7CiAKQEAgLTE1NCw2ICsxNTYsNyBAQCB2
b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6cmVtb3ZlVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUmIHRyYWNrLCBOb3RpZnlDbGllbgogICAgIGlmICghbV90cmFja1NldC5yZW1vdmUodHJhY2su
aWQoKSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwg
dHJhY2subG9nSWRlbnRpZmllcigpKTsKICAgICB0cmFjay5yZW1vdmVPYnNlcnZlcigqdGhpcyk7
CiAKICAgICBpZiAobm90aWZ5Q2xpZW50T3B0aW9uID09IE5vdGlmeUNsaWVudE9wdGlvbjo6Tm90
aWZ5KSB7CkBAIC0xNjgsMTIgKzE3MSwxNCBAQCB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6cmVt
b3ZlVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrLCBOb3RpZnlDbGllbgogCiB2
b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIHsKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX3RyYWNrU2V0
LnZhbHVlcygpKQogICAgICAgICB0cmFjay0+c3RhcnRQcm9kdWNpbmdEYXRhKCk7CiB9CiAKIHZv
aWQgTWVkaWFTdHJlYW1Qcml2YXRlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7CisgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV90cmFja1NldC52
YWx1ZXMoKSkKICAgICAgICAgdHJhY2stPnN0b3BQcm9kdWNpbmdEYXRhKCk7CiB9CkBAIC0xODks
NiArMTk0LDcgQEAgYm9vbCBNZWRpYVN0cmVhbVByaXZhdGU6OmlzUHJvZHVjaW5nRGF0YSgpIGNv
bnN0CiAKIHZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjpzZXRDYXB0dXJlVHJhY2tzTXV0ZWQoYm9v
bCBtdXRlZCkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIG11dGVkKTsKICAgICBm
b3IgKGF1dG8mIHRyYWNrIDogbV90cmFja1NldC52YWx1ZXMoKSkgewogICAgICAgICBpZiAodHJh
Y2stPmlzQ2FwdHVyZVRyYWNrKCkpCiAgICAgICAgICAgICB0cmFjay0+c2V0TXV0ZWQobXV0ZWQp
OwpAQCAtMjcxLDggKzI3NywxMyBAQCB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y2hhcmFjdGVy
aXN0aWNzQ2hhbmdlZCgpCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjp0
cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpCit2b2lkIE1lZGlhU3Ry
ZWFtUHJpdmF0ZTo6dHJhY2tNdXRlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRy
YWNrKQogeworI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHRyYWNr
KTsKKyNlbmRpZgorCisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCB0cmFjay5sb2dJZGVu
dGlmaWVyKCksICIgIiwgdHJhY2subXV0ZWQoKSk7CiAgICAgc2NoZWR1bGVEZWZlcnJlZFRhc2so
W3RoaXNdIHsKICAgICAgICAgY2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwogICAgIH0pOwpAQCAt
MjgzLDggKzI5NCwxMyBAQCB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6dHJhY2tTZXR0aW5nc0No
YW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQogICAgIGNoYXJhY3RlcmlzdGljc0NoYW5n
ZWQoKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnRyYWNrRW5hYmxlZENoYW5nZWQo
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQordm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnRyYWNr
RW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrKQogeworI2lmIFJF
TEVBU0VfTE9HX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHRyYWNrKTsKKyNlbmRpZgorCisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCB0cmFjay5sb2dJZGVudGlmaWVyKCksICIgIiwg
dHJhY2suZW5hYmxlZCgpKTsKICAgICB1cGRhdGVBY3RpdmVWaWRlb1RyYWNrKCk7CiAKICAgICBz
Y2hlZHVsZURlZmVycmVkVGFzayhbdGhpc10gewpAQCAtMjkyLDE1ICszMDgsMjUgQEAgdm9pZCBN
ZWRpYVN0cmVhbVByaXZhdGU6OnRyYWNrRW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUmKQogICAgIH0pOwogfQogCi12b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6dHJhY2tTdGFy
dGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikKK3ZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjp0
cmFja1N0YXJ0ZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrKQogeworI2lmIFJFTEVB
U0VfTE9HX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHRyYWNrKTsKKyNlbmRpZgorCisgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCB0cmFjay5sb2dJZGVudGlmaWVyKCkpOwogICAgIHNj
aGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CiAgICAgICAgIGNoYXJhY3RlcmlzdGljc0NoYW5n
ZWQoKTsKICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnRyYWNrRW5kZWQo
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQordm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnRyYWNr
RW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrKQogeworI2lmIFJFTEVBU0VfTE9H
X0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHRyYWNrKTsKKyNlbmRpZgorCisgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSLCB0cmFjay5sb2dJZGVudGlmaWVyKCkpOwogICAgIHNjaGVkdWxl
RGVmZXJyZWRUYXNrKFt0aGlzXSB7CiAgICAgICAgIHVwZGF0ZUFjdGl2ZVN0YXRlKE5vdGlmeUNs
aWVudE9wdGlvbjo6Tm90aWZ5KTsKICAgICAgICAgY2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwpA
QCAtMzI2LDYgKzM1MiwyMCBAQCB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6bW9uaXRvck9yaWVu
dGF0aW9uKE9yaWVudGF0aW9uTm90aWZpZXImIG5vdGlmaWVyKQogICAgIH0KIH0KIAorI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAordm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnNldExvZ2dlcihj
b25zdCBMb2dnZXImIG5ld0xvZ2dlciwgY29uc3Qgdm9pZCogbmV3TG9nSWRlbnRpZmllcikKK3sK
KyAgICBtX2xvZ2dlciA9ICZuZXdMb2dnZXI7CisgICAgbV9sb2dJZGVudGlmaWVyID0gbmV3TG9n
SWRlbnRpZmllcjsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworfQorCitXVEZMb2dD
aGFubmVsJiBNZWRpYVN0cmVhbVByaXZhdGU6OmxvZ0NoYW5uZWwoKSBjb25zdAoreworICAgIHJl
dHVybiBMb2dXZWJSVEM7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKaW5kZXggZTE0NmM2
ODBhOTUuLjY3N2JhNThhNzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaApAQCAtMiw3ICsyLDcgQEAKICAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxNSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKS4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDYg
KzQxLDcgQEAKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTUzLDcgKzU0LDE0
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3MgT3JpZW50
YXRpb25Ob3RpZmllcjsKIAotY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlIDogcHVibGljIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciwgcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJl
YW1Qcml2YXRlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gewor
Y2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlCisgICAgOiBwdWJsaWMgTWVkaWFTdHJlYW1UcmFja1By
aXZhdGU6Ok9ic2VydmVyCisgICAgLCBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVByaXZh
dGU+CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPgorI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIKKyNlbmRp
ZgorewogcHVibGljOgogICAgIGNsYXNzIE9ic2VydmVyIHsKICAgICBwdWJsaWM6CkBAIC0xMDMs
NiArMTExLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbW9uaXRvck9yaWVudGF0aW9uKE9yaWVu
dGF0aW9uTm90aWZpZXImKTsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIHZvaWQg
c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0IHZvaWQqKTsKKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIE1lZGlhU3RyZWFtUHJpdmF0ZShjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZVZl
Y3RvciYsIFN0cmluZyYmKTsKIApAQCAtMTE5LDYgKzEzMSwxNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soRnVuY3Rpb248dm9pZCAoKT4mJik7CiAgICAgdm9pZCBm
b3JFYWNoT2JzZXJ2ZXIoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKE9ic2VydmVyJik+JikgY29u
c3Q7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dl
cigpIGNvbnN0IGZpbmFsIHsgQVNTRVJUKG1fbG9nZ2VyKTsgcmV0dXJuICptX2xvZ2dlci5nZXQo
KTsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2xvZ0lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiTWVkaWFTdHJlYW1Qcml2YXRlIjsgfQorICAgIFdURkxvZ0NoYW5u
ZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKworICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+
IG1fbG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyNlbmRpZgorCiAg
ICAgSGFzaFNldDxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwogICAgIFN0cmluZyBtX2lkOwogICAg
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiBtX2FjdGl2ZVZpZGVvVHJhY2sgeyBudWxscHRyIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAKaW5kZXggNDkzOGZmOTY0NzIuLmEzMDlmYTcx
NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCkBAIC0xLDYgKzEsNyBAQAogLyoK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpLgotICogIENvcHlyaWdodCAoQykgMjAxNSBFcmljc3NvbiBBQi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgRXJpY3Nz
b24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI3NSw2ICsyNzYsMjEgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
dXBkYXRlUmVhZHlTdGF0ZSgpCiAgICAgfSk7CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKK3ZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNldExvZ2dlcihjb25zdCBMb2dnZXIm
IG5ld0xvZ2dlciwgY29uc3Qgdm9pZCogbmV3TG9nSWRlbnRpZmllcikKK3sKKyAgICBtX2xvZ2dl
ciA9ICZuZXdMb2dnZXI7CisgICAgbV9sb2dJZGVudGlmaWVyID0gbmV3TG9nSWRlbnRpZmllcjsK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIG1fc291cmNlLT5zZXRMb2dnZXIo
bmV3TG9nZ2VyLCBuZXdMb2dJZGVudGlmaWVyKTsKK30KKworV1RGTG9nQ2hhbm5lbCYgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU6OmxvZ0NoYW5uZWwoKSBjb25zdAoreworICAgIHJldHVybiBMb2dX
ZWJSVEM7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oCmluZGV4IDljN2Yw
M2ZjNjc3Li5iZDIxNWU4MzgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oCkBAIC0xLDYg
KzEsNyBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICogIENvcHlyaWdodCAoQykgMjAxNSBFcmljc3Nv
biBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzMwLDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgPHd0Zi9M
b2dnZXJIZWxwZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCw3ICs0MCwxMyBA
QCBjbGFzcyBNZWRpYVNhbXBsZTsKIGNsYXNzIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXM7CiBjbGFzcyBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyOwogCi1jbGFzcyBNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiwg
cHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyIHsKK2NsYXNzIE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlCisgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZT4KKyAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlcgorI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIKKyNlbmRpZgor
ewogcHVibGljOgogICAgIGNsYXNzIE9ic2VydmVyIHsKICAgICBwdWJsaWM6CkBAIC0xMDgsNiAr
MTE2LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SWRGb3JUZXN0aW5nKFN0cmluZyYmIGlk
KSB7IG1faWQgPSBXVEZNb3ZlKGlkKTsgfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisg
ICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopOworICAgIGNvbnN0
IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyBBU1NFUlQobV9sb2dnZXIpOyByZXR1cm4g
Km1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorI2VuZGlmCisgICAgCiBwcml2YXRl
OgogICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYm
LCBTdHJpbmcmJiBpZCk7CiAKQEAgLTEyNCw2ICsxMzgsMTQgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgZm9yRWFjaE9ic2VydmVyKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChPYnNlcnZlciYpPiYp
IGNvbnN0OwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgY2hhciogbG9n
Q2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
IjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKyAgICAK
KyAgICBSZWZQdHI8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xv
Z0lkZW50aWZpZXI7CisjZW5kaWYKKwogICAgIG11dGFibGUgUmVjdXJzaXZlTG9jayBtX29ic2Vy
dmVyc0xvY2s7CiAgICAgSGFzaFNldDxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwogICAgIFJlZjxS
ZWFsdGltZU1lZGlhU291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuY3BwCmluZGV4IGZlMGRkZDc5NzIwLi5hNGIxMjdhYTkzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDE2ICszNSwxMiBAQAogCiAjaW5jbHVkZSAiTGli
V2ViUlRDQXVkaW9Gb3JtYXQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8d3Rm
L0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2UocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRp
b1RyYWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCiAgICAgOiBSZWFsdGltZU1lZGlhU291cmNl
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCAicmVtb3RlIGF1ZGlvIl9zLCBXVEZN
b3ZlKGF1ZGlvVHJhY2tJZCkpCiAgICAgLCBtX2F1ZGlvVHJhY2soV1RGTW92ZShhdWRpb1RyYWNr
KSkKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAsIG1fbG9nSWRlbnRpZmllcihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigp
KSkKLSNlbmRpZgogewogICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFtX2F1ZGlvVHJhY2spOwogfQpA
QCAtODksMjAgKzg1LDYgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBSZWFs
dGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldHRpbmdzKCkKICAgICByZXR1cm4gbV9jdXJyZW50
U2V0dGluZ3M7CiB9CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLVdURkxvZ0NoYW5uZWwm
IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6bG9nQ2hhbm5lbCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIExvZ1dlYlJUQzsKLX0KLQotY29uc3QgTG9nZ2VyJiBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2U6OmxvZ2dlcigpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2xvZ2dlcikKLSAgICAgICAg
bV9sb2dnZXIgPSBMb2dnZXI6OmNyZWF0ZSh0aGlzKTsKLSAgICByZXR1cm4gKm1fbG9nZ2VyOwot
fQotI2VuZGlmCi0KIH0KIAogI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZS5oCmluZGV4IDE2ZTIxMjhhN2VhLi5hZWM5NjViMDkxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNiBAQCBBTExPV19VTlVTRURf
UEFSQU1FVEVSU19CRUdJTgogCiBBTExPV19VTlVTRURfUEFSQU1FVEVSU19FTkQKIAotI2luY2x1
ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ5LDI5ICs0OCwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UKICAgICA6IHB1YmxpYyBSZWFsdGlt
ZU1lZGlhU291cmNlCiAgICAgLCBwcml2YXRlIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZh
Y2UKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVy
Ci0jZW5kaWYKIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZT4gY3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRl
cmZhY2U+JiYsIFN0cmluZyYmKTsKIAogICAgIHZvaWQgc2V0U291cmNlVHJhY2socnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJik7CiAKLSNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKLSAgICB2b2lkIHNldExvZ2dlcihSZWY8Y29uc3QgTG9nZ2VyPiYmIGxv
Z2dlcikgeyBtX2xvZ2dlciA9IFdURk1vdmUobG9nZ2VyKTsgfQotI2VuZGlmCi0KIHByb3RlY3Rl
ZDoKICAgICBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UocnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYpOwogICAgIH5SZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UoKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIC8v
IExvZ2dlckhlbHBlciBBUEkKLSAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFs
OwotICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2xvZ0lkZW50aWZpZXI7IH0KICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAiUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIjsgfQotICAgIFdURkxv
Z0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAKaW5kZXggMTQ0NmIzZmMxNzQuLjQ1
NDAzZGM2Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMTcg
KzMzLDExIEBACiAKICNpZiBVU0UoTElCV0VCUlRDKQogCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgot
I2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6UmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRl
cmZhY2U+JiYgdmlkZW9UcmFjaywgU3RyaW5nJiYgdmlkZW9UcmFja0lkKQogICAgIDogUmVhbHRp
bWVNZWRpYVNvdXJjZShUeXBlOjpWaWRlbywgInJlbW90ZSB2aWRlbyJfcywgV1RGTW92ZSh2aWRl
b1RyYWNrSWQpKQogICAgICwgbV92aWRlb1RyYWNrKFdURk1vdmUodmlkZW9UcmFjaykpCi0jaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLCBtX2xvZ0lkZW50aWZpZXIocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB2b2lkKj4oY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSkpCi0jZW5k
aWYKIHsKICAgICBub3RpZnlNdXRlZENoYW5nZSghbV92aWRlb1RyYWNrKTsKIApAQCAtMTA4LDIw
ICsxMDIsNiBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6c2V0dGluZ3NEaWRD
aGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyYwogICAgICAgICBtX2N1cnJlbnRTZXR0
aW5ncyA9IFdURjo6bnVsbG9wdDsKIH0KIAotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotV1RG
TG9nQ2hhbm5lbCYgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpsb2dDaGFubmVsKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gTG9nV2ViUlRDOwotfQotCi1jb25zdCBMb2dnZXImIFJlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZTo6bG9nZ2VyKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fbG9nZ2Vy
KQotICAgICAgICBtX2xvZ2dlciA9IExvZ2dlcjo6Y3JlYXRlKHRoaXMpOwotICAgIHJldHVybiAq
bV9sb2dnZXI7Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgKaW5kZXgg
ZDBjNDk2MDIzODAuLjM1YTdkNjY2ZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00MSw3ICs0MSw2IEBAIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0JFR0lOCiAKIEFMTE9X
X1VOVVNFRF9QQVJBTUVURVJTX0VORAogCi0jaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEs
OSArNTAsNiBAQCBjbGFzcyBDYXB0dXJlRGV2aWNlOwogY2xhc3MgUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlCiAgICAgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZQogICAgICwgcHJpdmF0
ZSBydGM6OlZpZGVvU2lua0ludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+Ci0jaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECi0gICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgotI2VuZGlmCiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U+IGNyZWF0
ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJp
bmcmJik7CkBAIC02NCwxOSArNjAsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRTb3VyY2VU
cmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNlPiYmKTsK
IAotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIHZvaWQgc2V0TG9nZ2VyKFJlZjxjb25z
dCBMb2dnZXI+JiYgbG9nZ2VyKSB7IG1fbG9nZ2VyID0gV1RGTW92ZShsb2dnZXIpOyB9Ci0jZW5k
aWYKLQogcHJvdGVjdGVkOgogICAgIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZShydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7CiAK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAvLyBMb2dnZXJIZWxwZXIgQVBJCi0gICAg
Y29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbDsKLSAgICBjb25zdCB2b2lkKiBsb2dJ
ZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAg
Y29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZSI7IH0KLSAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkg
Y29uc3QgZmluYWw7CiAjZW5kaWYKICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
CmluZGV4IGM4M2NhNzRjYmVmLi5hOWQyOTQ2Mjc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICogQ29weXJpZ2h0IChDKSAy
MDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTU2LDggKzU2LDgg
QEAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6UmVhbHRpbWVNZWRpYVNvdXJjZShUeXBlIHR5cGUsIFN0
cmluZyYmIG5hbWUsIFN0cmluZyYmIGRldmkKIHsKICAgICBpZiAobV9wZXJzaXN0ZW50SUQuaXNF
bXB0eSgpKQogICAgICAgICBtX3BlcnNpc3RlbnRJRCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJp
bmcoKTsKLSAgICBlbHNlCi0gICAgICAgIG1faGFzaGVkSUQgPSBSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjpzaW5nbGV0b24oKS5oYXNoU3RyaW5nV2l0aFNhbHQobV9wZXJzaXN0ZW50SUQsIG1f
aWRIYXNoU2FsdCk7CisKKyAgICBtX2hhc2hlZElEID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6c2luZ2xldG9uKCkuaGFzaFN0cmluZ1dpdGhTYWx0KG1fcGVyc2lzdGVudElELCBtX2lkSGFz
aFNhbHQpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZE9ic2VydmVyKFJlYWx0
aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyJiBvYnNlcnZlcikKQEAgLTgwLDYgKzgwLDggQEAgdm9p
ZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRJbnRlcnJ1cHRlZChib29sIGludGVycnVwdGVkLCBi
b29sIHBhZ2VNdXRlZCkKICAgICBpZiAoaW50ZXJydXB0ZWQgPT0gbV9pbnRlcnJ1cHRlZCkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xPR19JRihtX2xvZ2dlciwgTE9HSURFTlRJRklF
UiwgaW50ZXJydXB0ZWQsICIsIHBhZ2UgbXV0ZWQgOiAiLCBwYWdlTXV0ZWQpOworCiAgICAgbV9p
bnRlcnJ1cHRlZCA9IGludGVycnVwdGVkOwogICAgIGlmICghaW50ZXJydXB0ZWQgJiYgcGFnZU11
dGVkKQogICAgICAgICByZXR1cm47CkBAIC04OSw2ICs5MSw4IEBAIHZvaWQgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6c2V0SW50ZXJydXB0ZWQoYm9vbCBpbnRlcnJ1cHRlZCwgYm9vbCBwYWdlTXV0ZWQp
CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkKIHsKKyAg
ICBBTFdBWVNfTE9HX0lGKG1fbG9nZ2VyLCBMT0dJREVOVElGSUVSKTsKKwogICAgIGlmIChtdXRl
ZCkKICAgICAgICAgc3RvcCgpOwogICAgIGVsc2UgewpAQCAtMTA2LDYgKzExMCw3IEBAIHZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6bm90aWZ5TXV0ZWRDaGFuZ2UoYm9vbCBtdXRlZCkKICAgICBp
ZiAobV9tdXRlZCA9PSBtdXRlZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xPR19J
RihtX2xvZ2dlciwgTE9HSURFTlRJRklFUik7CiAgICAgbV9tdXRlZCA9IG11dGVkOwogCiAgICAg
bm90aWZ5TXV0ZWRPYnNlcnZlcnMoKTsKQEAgLTE0OSw2ICsxNTQsOCBAQCB2b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2U6Om5vdGlmeVNldHRpbmdzRGlkQ2hhbmdlT2JzZXJ2ZXJzKE9wdGlvblNldDxS
ZWFsdGltZU1lZAogICAgICAgICByZXR1cm47CiAgICAgbV9wZW5kaW5nU2V0dGluZ3NEaWRDaGFu
Z2VOb3RpZmljYXRpb24gPSB0cnVlOwogCisgICAgQUxXQVlTX0xPR19JRihtX2xvZ2dlciwgTE9H
SURFTlRJRklFUiwgZmxhZ3MpOworCiAgICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXNdIHsK
ICAgICAgICAgbV9wZW5kaW5nU2V0dGluZ3NEaWRDaGFuZ2VOb3RpZmljYXRpb24gPSBmYWxzZTsK
ICAgICAgICAgZm9yRWFjaE9ic2VydmVyKFtdKGF1dG8mIG9ic2VydmVyKSB7CkBAIC0xNTksNiAr
MTY2LDIwIEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6bm90aWZ5U2V0dGluZ3NEaWRDaGFu
Z2VPYnNlcnZlcnMoT3B0aW9uU2V0PFJlYWx0aW1lTWVkCiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKQogewor
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICsrbV9mcmFtZUNvdW50OworCisgICAgYXV0
byB0aW1lc3RhbXAgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICBhdXRvIGRlbHRhID0gdGlt
ZXN0YW1wIC0gbV9sYXN0RnJhbWVMb2dUaW1lOworICAgIGlmICghbV9sYXN0RnJhbWVMb2dUaW1l
IHx8IGRlbHRhID49IDFfcykgeworICAgICAgICBpZiAobV9sYXN0RnJhbWVMb2dUaW1lKSB7Cisg
ICAgICAgICAgICBJTkZPX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgbV9mcmFt
ZUNvdW50LCAiIGZyYW1lcyBzZW50IGluICIsIGRlbHRhLnZhbHVlKCksICIgc2Vjb25kcyIpOwor
ICAgICAgICAgICAgbV9mcmFtZUNvdW50ID0gMDsKKyAgICAgICAgfQorICAgICAgICBtX2xhc3RG
cmFtZUxvZ1RpbWUgPSB0aW1lc3RhbXA7CisgICAgfQorI2VuZGlmCisKICAgICBmb3JFYWNoT2Jz
ZXJ2ZXIoWyZdKGF1dG8mIG9ic2VydmVyKSB7CiAgICAgICAgIG9ic2VydmVyLnZpZGVvU2FtcGxl
QXZhaWxhYmxlKG1lZGlhU2FtcGxlKTsKICAgICB9KTsKQEAgLTE3Niw2ICsxOTcsOCBAQCB2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0YXJ0KCkKICAgICBpZiAobV9pc1Byb2R1Y2luZ0RhdGEg
fHwgbV9pc0VuZGVkKQogICAgICAgICByZXR1cm47CiAKKyAgICBBTFdBWVNfTE9HX0lGKG1fbG9n
Z2VyLCBMT0dJREVOVElGSUVSKTsKKwogICAgIG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsKICAg
ICBzdGFydFByb2R1Y2luZ0RhdGEoKTsKIApAQCAtMTkyLDYgKzIxNSw4IEBAIHZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6c3RvcCgpCiAgICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xPR19JRihtX2xvZ2dlciwgTE9HSURFTlRJRklFUik7
CisKICAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwogICAgIHN0b3BQcm9kdWNpbmdEYXRh
KCk7CiB9CkBAIC0yMjMsNyArMjQ4LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZXF1
ZXN0VG9FbmQoT2JzZXJ2ZXImIGNhbGxpbmdPYnNlcnZlcikKIAogdm9pZCBSZWFsdGltZU1lZGlh
U291cmNlOjpjYXB0dXJlRmFpbGVkKCkKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0
cmVhbSwgIlJlYWx0aW1lTWVkaWFTb3VyY2U6OmNhcHR1cmVGYWlsZWQiKTsKKyAgICBFUlJPUl9M
T0dfSUYobV9sb2dnZXIsIExPR0lERU5USUZJRVIpOwogCiAgICAgbV9pc1Byb2R1Y2luZ0RhdGEg
PSBmYWxzZTsKICAgICBtX2NhcHR1cmVEaWRGYWlsZWQgPSB0cnVlOwpAQCAtNDY3LDYgKzQ5Miw4
IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25h
bDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
YXBwbHlDb25zdHJhaW50KGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKIHsKKyAg
ICBBTFdBWVNfTE9HX0lGKG1fbG9nZ2VyLCBMT0dJREVOVElGSUVSLCBjb25zdHJhaW50Lm5hbWUo
KSk7CisKICAgICBhdXRvJiBjYXBhYmlsaXRpZXMgPSB0aGlzLT5jYXBhYmlsaXRpZXMoKTsKICAg
ICBzd2l0Y2ggKGNvbnN0cmFpbnQuY29uc3RyYWludFR5cGUoKSkgewogICAgIGNhc2UgTWVkaWFD
b25zdHJhaW50VHlwZTo6V2lkdGg6CkBAIC03NjksNiArNzk2LDggQEAgYm9vbCBSZWFsdGltZU1l
ZGlhU291cmNlOjpzdXBwb3J0c0NvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNv
bnN0cmFpbnQKIHsKICAgICBBU1NFUlQoY29uc3RyYWludHMuaXNWYWxpZCk7CiAKKyAgICBBTFdB
WVNfTE9HX0lGKG1fbG9nZ2VyLCBMT0dJREVOVElGSUVSKTsKKwogICAgIEZsYXR0ZW5lZENvbnN0
cmFpbnQgY2FuZGlkYXRlczsKICAgICBpZiAoIXNlbGVjdFNldHRpbmdzKGNvbnN0cmFpbnRzLCBj
YW5kaWRhdGVzLCBpbnZhbGlkQ29uc3RyYWludCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTc5OSw2ICs4MjgsOCBAQCBib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzQ29uc3Ry
YWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludAogICAgICAgICB9CiAgICAg
fQogCisgICAgQUxXQVlTX0xPR19JRihtX2xvZ2dlciwgTE9HSURFTlRJRklFUiwgImZpdG5lc3Mg
ZGlzdGFuY2UgOiAiLCBtX2ZpdG5lc3NTY29yZSk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtODU1LDYgKzg4Niw4IEBAIE9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2U6OkFwcGx5Q29u
c3RyYWludHNFcnJvcj4gUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDCiB7CiAgICAgQVNTRVJU
KGNvbnN0cmFpbnRzLmlzVmFsaWQpOwogCisgICAgQUxXQVlTX0xPR19JRihtX2xvZ2dlciwgTE9H
SURFTlRJRklFUik7CisKICAgICBGbGF0dGVuZWRDb25zdHJhaW50IGNhbmRpZGF0ZXM7CiAgICAg
U3RyaW5nIGZhaWxlZENvbnN0cmFpbnQ7CiAgICAgaWYgKCFzZWxlY3RTZXR0aW5ncyhjb25zdHJh
aW50cywgY2FuZGlkYXRlcywgZmFpbGVkQ29uc3RyYWludCkpCkBAIC04NzQsNiArOTA3LDggQEAg
dm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAg
ICAgaWYgKHNpemUgPT0gbV9zaXplKQogICAgICAgICByZXR1cm47CiAKKyAgICBBTFdBWVNfTE9H
X0lGKG1fbG9nZ2VyLCBMT0dJREVOVElGSUVSLCBzaXplKTsKKyAgICAKICAgICBtX3NpemUgPSBz
aXplOwogICAgIG5vdGlmeVNldHRpbmdzRGlkQ2hhbmdlT2JzZXJ2ZXJzKHsgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpGbGFnOjpXaWR0aCwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
OjpGbGFnOjpIZWlnaHQgfSk7CiB9CkBAIC04OTksNiArOTM0LDggQEAgdm9pZCBSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXRJbnRyaW5zaWNTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgaWYg
KG1faW50cmluc2ljU2l6ZSA9PSBzaXplKQogICAgICAgICByZXR1cm47CiAKKyAgICBBTFdBWVNf
TE9HX0lGKG1fbG9nZ2VyLCBMT0dJREVOVElGSUVSLCBzaXplKTsKKyAgICAKICAgICBhdXRvIGN1
cnJlbnRTaXplID0gdGhpcy0+c2l6ZSgpOwogICAgIG1faW50cmluc2ljU2l6ZSA9IHNpemU7CiAK
QEAgLTkxNiw2ICs5NTMsOCBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEZyYW1lUmF0
ZShkb3VibGUgcmF0ZSkKICAgICBpZiAobV9mcmFtZVJhdGUgPT0gcmF0ZSkKICAgICAgICAgcmV0
dXJuOwogCisgICAgQUxXQVlTX0xPR19JRihtX2xvZ2dlciwgTE9HSURFTlRJRklFUiwgcmF0ZSk7
CisgICAgCiAgICAgbV9mcmFtZVJhdGUgPSByYXRlOwogICAgIG5vdGlmeVNldHRpbmdzRGlkQ2hh
bmdlT2JzZXJ2ZXJzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6RnJhbWVSYXRl
KTsKIH0KQEAgLTkyNSw2ICs5NjQsOCBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEFz
cGVjdFJhdGlvKGRvdWJsZSByYXRpbykKICAgICBpZiAobV9hc3BlY3RSYXRpbyA9PSByYXRpbykK
ICAgICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xPR19JRihtX2xvZ2dlciwgTE9HSURFTlRJ
RklFUiwgcmF0aW8pOworICAgIAogICAgIG1fYXNwZWN0UmF0aW8gPSByYXRpbzsKICAgICBtX3Np
emUuc2V0SGVpZ2h0KG1fc2l6ZS53aWR0aCgpIC8gcmF0aW8pOwogICAgIG5vdGlmeVNldHRpbmdz
RGlkQ2hhbmdlT2JzZXJ2ZXJzKHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpB
c3BlY3RSYXRpbywgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQgfSk7
CkBAIC05MzUsNiArOTc2LDggQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRGYWNpbmdN
b2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmcKICAgICBpZiAobV9m
YWNpbmdNb2RlID09IG1vZGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0dfSUYo
bV9sb2dnZXIsIExPR0lERU5USUZJRVIsIG1vZGUpOworCiAgICAgbV9mYWNpbmdNb2RlID0gbW9k
ZTsKICAgICBub3RpZnlTZXR0aW5nc0RpZENoYW5nZU9ic2VydmVycyhSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OkZsYWc6OkZhY2luZ01vZGUpOwogfQpAQCAtOTQ0LDYgKzk4Nyw4IEBAIHZv
aWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0Vm9sdW1lKGRvdWJsZSB2b2x1bWUpCiAgICAgaWYg
KG1fdm9sdW1lID09IHZvbHVtZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xPR19J
RihtX2xvZ2dlciwgTE9HSURFTlRJRklFUiwgdm9sdW1lKTsKKwogICAgIG1fdm9sdW1lID0gdm9s
dW1lOwogICAgIG5vdGlmeVNldHRpbmdzRGlkQ2hhbmdlT2JzZXJ2ZXJzKFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6RmxhZzo6Vm9sdW1lKTsKIH0KQEAgLTk1Myw2ICs5OTgsOCBAQCB2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVJhdGUoaW50IHJhdGUpCiAgICAgaWYgKG1f
c2FtcGxlUmF0ZSA9PSByYXRlKQogICAgICAgICByZXR1cm47CiAKKyAgICBBTFdBWVNfTE9HX0lG
KG1fbG9nZ2VyLCBMT0dJREVOVElGSUVSLCByYXRlKTsKKwogICAgIG1fc2FtcGxlUmF0ZSA9IHJh
dGU7CiAgICAgbm90aWZ5U2V0dGluZ3NEaWRDaGFuZ2VPYnNlcnZlcnMoUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpGbGFnOjpTYW1wbGVSYXRlKTsKIH0KQEAgLTk2Nyw2ICsxMDE0LDggQEAg
dm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTYW1wbGVTaXplKGludCBzaXplKQogICAgIGlm
IChtX3NhbXBsZVNpemUgPT0gc2l6ZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xP
R19JRihtX2xvZ2dlciwgTE9HSURFTlRJRklFUiwgc2l6ZSk7CisKICAgICBtX3NhbXBsZVNpemUg
PSBzaXplOwogICAgIG5vdGlmeVNldHRpbmdzRGlkQ2hhbmdlT2JzZXJ2ZXJzKFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6U2FtcGxlU2l6ZSk7CiB9CkBAIC05ODEsNiArMTAzMCw3
IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RWNob0NhbmNlbGxhdGlvbihib29sIGVj
aG9DYW5jZWxsYXRpb24pCiAgICAgaWYgKG1fZWNob0NhbmNlbGxhdGlvbiA9PSBlY2hvQ2FuY2Vs
bGF0aW9uKQogICAgICAgICByZXR1cm47CiAKKyAgICBBTFdBWVNfTE9HX0lGKG1fbG9nZ2VyLCBM
T0dJREVOVElGSUVSLCBlY2hvQ2FuY2VsbGF0aW9uKTsKICAgICBtX2VjaG9DYW5jZWxsYXRpb24g
PSBlY2hvQ2FuY2VsbGF0aW9uOwogICAgIG5vdGlmeVNldHRpbmdzRGlkQ2hhbmdlT2JzZXJ2ZXJz
KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6RWNob0NhbmNlbGxhdGlvbik7CiB9
CkBAIC0xMDExLDYgKzEwNjEsMzQgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXI6On5P
YnNlcnZlcigpCiB7CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK3ZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYgbmV3TG9nZ2VyLCBjb25zdCB2
b2lkKiBuZXdMb2dJZGVudGlmaWVyKQoreworICAgIG1fbG9nZ2VyID0gJm5ld0xvZ2dlcjsKKyAg
ICBtX2xvZ0lkZW50aWZpZXIgPSBuZXdMb2dJZGVudGlmaWVyOworICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgbV90eXBlLCAiLCAiLCBtX25hbWUsICIsICIsIG1faGFzaGVkSUQpOworfQor
CitXVEZMb2dDaGFubmVsJiBSZWFsdGltZU1lZGlhU291cmNlOjpsb2dDaGFubmVsKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gTG9nV2ViUlRDOworfQorI2VuZGlmCisKK1N0cmluZyBjb252ZXJ0RW51
bWVyYXRpb25Ub1N0cmluZyhSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIGVudW1lcmF0aW9uVmFs
dWUpCit7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdmFsdWVzW10g
PSB7CisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJOb25lIiksCisgICAgICAgIE1B
S0VfU1RBVElDX1NUUklOR19JTVBMKCJBdWRpbyIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJ
TkdfSU1QTCgiVmlkZW8iKSwKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8
c2l6ZV90PihSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpOb25lKSA9PSAwLCAiUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZTo6Tm9uZSBpcyBub3QgMCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRp
Y19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpB
dWRpbykgPT0gMSwgIlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIGlzIG5vdCAxIGFz
IGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKSA9PSAyLCAiUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VHlwZTo6VmlkZW8gaXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7
CisgICAgcmV0dXJuIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUp
XTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAppbmRleCBhZmUxOTc3OTA4ZC4uYWIzYzk5NzFkZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3Jt
TGF5ZXIuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUZhY3RvcnkuaCIKKyNpbmNsdWRlIDx3dGYvTG9n
Z2VySGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlY3Vyc2l2ZUxvY2tBZGFwdGVyLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgpAQCAtNjUsNyArNjYsMTMgQEAgY2xhc3MgUmVtb3RlVmlkZW9TYW1wbGU7CiAKIHN0cnVjdCBD
YXB0dXJlU291cmNlT3JFcnJvcjsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgUmVhbHRpbWVNZWRp
YVNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU1lZGlhU291cmNl
PiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHsKK2NsYXNzIFdF
QkNPUkVfRVhQT1JUIFJlYWx0aW1lTWVkaWFTb3VyY2UKKyAgICA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxSZWFsdGltZU1lZGlhU291cmNlPgorICAgICwgcHVibGljIENhbk1ha2VXZWFr
UHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAg
LCBwcml2YXRlIExvZ2dlckhlbHBlcgorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAgY2xhc3MgT2Jz
ZXJ2ZXIgewogICAgIHB1YmxpYzoKQEAgLTE3Niw2ICsxODMsMTUgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0SXNSZW1vdGUoYm9vbCBpc1JlbW90ZSkgeyBtX2lzUmVtb3RlID0gaXNSZW1vdGU7IH0K
ICAgICBib29sIGlzUmVtb3RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1JlbW90ZTsgfQogCisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwg
Y29uc3Qgdm9pZCopOworICAgIGNvbnN0IExvZ2dlciogbG9nZ2VyUHRyKCkgY29uc3QgeyByZXR1
cm4gbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZp
bmFsIHsgQVNTRVJUKG1fbG9nZ2VyKTsgcmV0dXJuICptX2xvZ2dlci5nZXQoKTsgfQorICAgIGNv
bnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50
aWZpZXI7IH0KKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiUmVhbHRpbWVNZWRpYVNvdXJjZSI7IH0KKyAgICBXVEZMb2dDaGFubmVsJiBsb2dD
aGFubmVsKCkgY29uc3QgZmluYWw7CisjZW5kaWYKKwogICAgIC8vIFRlc3Rpbmcgb25seQogICAg
IHZpcnR1YWwgdm9pZCBkZWxheVNhbXBsZXMoU2Vjb25kcykgeyB9OwogICAgIHZvaWQgc2V0SW50
ZXJydXB0ZWRGb3JUZXN0aW5nKGJvb2wpOwpAQCAtMjE3LDcgKzIzMywxMiBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBmb3JFYWNoT2JzZXJ2ZXIoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKE9ic2Vy
dmVyJik+JikgY29uc3Q7CiAKLSAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9OworI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAorICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOworICAg
IGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyAgICBNb25vdG9uaWNUaW1lIG1fbGFzdEZy
YW1lTG9nVGltZTsKKyAgICB1bnNpZ25lZCBtX2ZyYW1lQ291bnQgeyAwIH07CisjZW5kaWYKIAog
ICAgIFN0cmluZyBtX2lkSGFzaFNhbHQ7CiAgICAgU3RyaW5nIG1faGFzaGVkSUQ7CkBAIC0yMzYs
NiArMjU3LDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9maXRuZXNzU2NvcmUgeyAwIH07CiAg
ICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUgbV9mYWNpbmdN
b2RlIHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVc2VyfTsKIAorICAgIGJvb2wgbV9t
dXRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3BlbmRpbmdTZXR0aW5nc0RpZENoYW5nZU5vdGlm
aWNhdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2VjaG9DYW5jZWxsYXRpb24geyBmYWxzZSB9
OwogICAgIGJvb2wgbV9pc1Byb2R1Y2luZ0RhdGEgeyBmYWxzZSB9OwpAQCAtMjU3LDYgKzI3OSwy
MyBAQCBzdHJ1Y3QgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgewogICAgIFN0cmluZyBlcnJvck1lc3Nh
Z2U7CiB9OwogCitTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZSk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdU
RiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CitzdHJ1Y3QgTG9nQXJndW1lbnQ7CisKK3Rl
bXBsYXRlIDw+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZT4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKHR5cGUpOworICAgIH0KK307CisKK307IC8vIG5hbWVzcGFj
ZSBXVEYKKwogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzLmNwcAppbmRleCAzYWFkZDI0NmQzMy4uMDJkMDI4MzJlZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY5LDYgKzY5LDY1IEBAIFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6dmlkZW9GCiAgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6VW5rbm93bjsKIH0KIAorU3RyaW5nIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
Y29udmVydEZsYWdzVG9TdHJpbmcoY29uc3QgT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6RmxhZz4gZmxhZ3MpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworCisg
ICAgYnVpbGRlci5hcHBlbmQoIlsgIik7CisgICAgZm9yIChhdXRvIGZsYWcgOiBmbGFncykgewor
ICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQorICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIiwgIik7CisKKyAgICAgICAgc3dpdGNoIChmbGFnKSB7CisgICAgICAgIGNhc2UgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpXaWR0aDoKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCJXaWR0aCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpIZWlnaHQ6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiSGVp
Z2h0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OkFzcGVjdFJhdGlvOgorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIkFz
cGVjdFJhdGlvIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OkZyYW1lUmF0ZToKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCJGcmFtZVJhdGUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6RmFjaW5nTW9kZToKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCJGYWNpbmdNb2RlIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZvbHVtZToKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCJWb2x1bWUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6U2FtcGxlUmF0ZToKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCJTYW1wbGVSYXRlIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlNhbXBsZVNpemU6CisgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiU2FtcGxlU2l6ZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpFY2hvQ2FuY2VsbGF0aW9uOgorICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIkVjaG9DYW5jZWxsYXRpb24iKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGV2aWNlSWQ6Cisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiRGV2aWNlSWQiKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6R3JvdXBJZDoKKyAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJHcm91cElkIik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkxhYmVsOgorICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIkxhYmVsIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlOgorICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIkRpc3BsYXlTdXJmYWNlIik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkxvZ2ljYWxT
dXJmYWNlOgorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIkxvZ2ljYWxTdXJmYWNlIik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZCgi
IF0iKTsKKworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKIE9wdGlvblNldDxS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6ZGlmZmVyZW5jZShjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHRoYXQp
IGNvbnN0CiB7CiAgICAgT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6Rmxh
Zz4gZGlmZmVyZW5jZTsKQEAgLTEwNSw2ICsxNjQsMjMgQEAgT3B0aW9uU2V0PFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpkaWZm
ZXIKICAgICByZXR1cm4gZGlmZmVyZW5jZTsKIH0KIAorU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlv
blRvU3RyaW5nKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIGVu
dW1lcmF0aW9uVmFsdWUpCit7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gdmFsdWVzW10gPSB7CisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJVbmtub3du
IiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJVc2VyIiksCisgICAgICAgIE1B
S0VfU1RBVElDX1NUUklOR19JTVBMKCJFbnZpcm9ubWVudCIpLAorICAgICAgICBNQUtFX1NUQVRJ
Q19TVFJJTkdfSU1QTCgiTGVmdCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgi
UmlnaHQiKSwKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZTo6VW5rbm93bikgPT0g
MCwgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpVbmtub3du
IGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxz
aXplX3Q+KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpVc2Vy
KSA9PSAxLCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OlVz
ZXIgaXMgbm90IDEgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0
PHNpemVfdD4oUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OkVu
dmlyb25tZW50KSA9PSAyLCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2lu
Z01vZGU6OkVudmlyb25tZW50IGlzIG5vdCAyIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6Vmlk
ZW9GYWNpbmdNb2RlOjpMZWZ0KSA9PSAzLCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpW
aWRlb0ZhY2luZ01vZGU6OkxlZnQgaXMgbm90IDMgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpW
aWRlb0ZhY2luZ01vZGU6OlJpZ2h0KSA9PSA0LCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
OjpWaWRlb0ZhY2luZ01vZGU6OlJpZ2h0IGlzIG5vdCA0IGFzIGV4cGVjdGVkIik7CisgICAgQVNT
RVJUKHN0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVO
R1RIKHZhbHVlcykpOworICAgIHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVt
ZXJhdGlvblZhbHVlKV07Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MuaAppbmRleCBjNGE5NmJiZDU5My4uMzk1YTY0Y2JkM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM0LDYgKzEzNCw4IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERl
Y29kZXImLCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKTsKIAorICAgIHN0YXRpYyBTdHJp
bmcgY29udmVydEZsYWdzVG9TdHJpbmcoY29uc3QgT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6RmxhZz4pOworCiBwcml2YXRlOgogICAgIHVpbnQzMl90IG1fd2lkdGggeyAw
IH07CiAgICAgdWludDMyX3QgbV9oZWlnaHQgeyAwIH07CkBAIC0xOTEsNiArMTkzLDggQEAgYm9v
bCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBS
ZWFsdGltZU1lZGlhU291cmNlU2UKICAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGVFbnVtKHNldHRp
bmdzLm1fZmFjaW5nTW9kZSk7CiB9CiAKK1N0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmlu
ZyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSk7CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0yMDYsNiArMjEwLDI1IEBA
IHRlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNCiAgICAgPjsKIH07CiAKLX0KK3RlbXBsYXRlPHR5cGVu
YW1lIFR5cGU+CitzdHJ1Y3QgTG9nQXJndW1lbnQ7CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgTG9n
QXJndW1lbnQ8V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2lu
Z01vZGU+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIG1vZGUpCisgICAgeworICAg
ICAgICByZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcobW9kZSk7CisgICAgfQorfTsK
KwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxPcHRpb25TZXQ8V2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPj4geworICAgIHN0YXRpYyBTdHJpbmcgdG9T
dHJpbmcoY29uc3QgT3B0aW9uU2V0PFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
czo6RmxhZz4gZmxhZ3MpCisgICAgeworICAgICAgICByZXR1cm4gV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpjb252ZXJ0RmxhZ3NUb1N0cmluZyhmbGFncyk7CisgICAgfQor
fTsKKworfTsgLy8gbmFtZXNwYWNlIFdURgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UuY3BwCmluZGV4IDAzYjk0OTZlZmNjLi43NzQ3MDg2OTA2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBB
cHBsZSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6UmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBz
b3VyY2UpCiAgICAgOiBtX2F1ZGlvU291cmNlKFdURk1vdmUoc291cmNlKSkKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKLSAgICAsIG1fbG9nSWRlbnRpZmllcihyZWludGVycHJldF9jYXN0PGNv
bnN0IHZvaWQqPihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKSkKKyAgICAsIG1fbG9n
Z2VyKG1fYXVkaW9Tb3VyY2UtPmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKG1fYXVk
aW9Tb3VyY2UtPmxvZ0lkZW50aWZpZXIoKSkKICNlbmRpZgogewogfQpAQCAtMTM0LDE0ICsxMzUs
NiBAQCBXVEZMb2dDaGFubmVsJiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmxvZ0NoYW5u
ZWwoKSBjb25zdAogewogICAgIHJldHVybiBMb2dXZWJSVEM7CiB9Ci0KLWNvbnN0IExvZ2dlciYg
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpsb2dnZXIoKSBjb25zdAotewotICAgIGlmICgh
bV9sb2dnZXIpCi0gICAgICAgIG1fbG9nZ2VyID0gTG9nZ2VyOjpjcmVhdGUodGhpcyk7Ci0gICAg
cmV0dXJuICptX2xvZ2dlcjsKLX0KLQogI2VuZGlmCiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oCmluZGV4IDk3ZDBkNGZlYzdkLi5j
MzE1NzMwOGEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTY5LDEwICs2OSw2IEBAIHB1YmxpYzoKICAgICBib29sIHNldFNvdXJjZShSZWY8TWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOwogICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiBz
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvU291cmNlLmdldCgpOyB9CiAKLSNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKLSAgICB2b2lkIHNldExvZ2dlcihSZWY8Y29uc3QgTG9nZ2VyPiYm
IGxvZ2dlcikgeyBtX2xvZ2dlciA9IFdURk1vdmUobG9nZ2VyKTsgfQotI2VuZGlmCi0KIHByb3Rl
Y3RlZDoKICAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKIApAQCAtODYsNyArODIsNyBAQCBwcm90ZWN0ZWQ6CiAK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAvLyBMb2dnZXJIZWxwZXIgQVBJCi0gICAg
Y29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBMb2dnZXImIGxv
Z2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CiAgICAgY29uc3Qg
dm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmll
cjsgfQogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UiOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9n
Q2hhbm5lbCgpIGNvbnN0IGZpbmFsOwpAQCAtMTM3LDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAg
SGFzaFNldDx3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9zaW5rczsKIAogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIG11dGFibGUgUmVmUHRyPGNvbnN0IExvZ2dlcj4g
bV9sb2dnZXI7CisgICAgbXV0YWJsZSBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBj
b25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CiAgICAgc2l6ZV90IG1fY2h1bmtzU2VudCB7IDAg
fTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAKaW5kZXggNjRi
NGU5ZTJlNGIuLmVmOTNlNjdkZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDcgKzQwLDYgQEAgQUxMT1dfVU5VU0VEX1BBUkFNRVRF
UlNfQkVHSU4KIAogQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNfRU5ECiAKLSNpbmNsdWRlIDx3dGYv
Q3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OSw3ICs0OCw4IEBAIFJlYWx0aW1lT3V0
Z29pbmdWaWRlb1NvdXJjZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKFJlZjxNZWRpYVN0
cmVhbVRyYWNrUHJpCiAgICAgOiBtX3ZpZGVvU291cmNlKFdURk1vdmUodmlkZW9Tb3VyY2UpKQog
ICAgICwgbV9ibGFja0ZyYW1lVGltZXIoKnRoaXMsICZSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2U6OnNlbmRPbmVCbGFja0ZyYW1lKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgICwg
bV9sb2dJZGVudGlmaWVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KGNyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tTnVtYmVyKCkpKQorICAgICwgbV9sb2dnZXIobV92aWRlb1NvdXJjZS0+bG9n
Z2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIobV92aWRlb1NvdXJjZS0+bG9nSWRlbnRpZmll
cigpKQogI2VuZGlmCiB7CiB9CkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBSZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2U6OnNlbmRCbGFja0ZyYW1lc0lmTmVlZGVkKCkKIAogdm9pZCBSZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnNlbmRPbmVCbGFja0ZyYW1lKCkKIHsKLSAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIsICJ0ZXN0Iik7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
KTsKICAgICBzZW5kRnJhbWUocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1
ZmZlcj4obV9ibGFja0ZyYW1lKSk7CiB9CiAKQEAgLTIwOSw2ICsyMDksMTkgQEAgdm9pZCBSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnNlbmRGcmFtZShydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpWaWRlb0ZyYW0KICAgICBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCA9IE1vbm90b25pY1Rp
bWU6Om5vdygpOwogICAgIHdlYnJ0Yzo6VmlkZW9GcmFtZSBmcmFtZShidWZmZXIsIG1fc2hvdWxk
QXBwbHlSb3RhdGlvbiA/IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMCA6IG1fY3VycmVudFJvdGF0
aW9uLCBzdGF0aWNfY2FzdDxpbnQ2NF90Pih0aW1lc3RhbXAuc2Vjb25kc1NpbmNlRXBvY2goKS5t
aWNyb3NlY29uZHMoKSkpOwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgKyttX2Zy
YW1lQ291bnQ7CisKKyAgICBhdXRvIGRlbHRhID0gdGltZXN0YW1wIC0gbV9sYXN0RnJhbWVMb2dU
aW1lOworICAgIGlmICghbV9sYXN0RnJhbWVMb2dUaW1lIHx8IGRlbHRhID49IDFfcykgeworICAg
ICAgICBpZiAobV9sYXN0RnJhbWVMb2dUaW1lKSB7CisgICAgICAgICAgICBJTkZPX0xPRyhMT0dJ
REVOVElGSUVSLCBtX2ZyYW1lQ291bnQsICIgZnJhbWVzIHNlbnQgaW4gIiwgZGVsdGEudmFsdWUo
KSwgIiBzZWNvbmRzIik7CisgICAgICAgICAgICBtX2ZyYW1lQ291bnQgPSAwOworICAgICAgICB9
CisgICAgICAgIG1fbGFzdEZyYW1lTG9nVGltZSA9IHRpbWVzdGFtcDsKKyAgICB9CisjZW5kaWYK
KwogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zaW5rc0xvY2spOwogICAgIGZvciAoYXV0
byogc2luayA6IG1fc2lua3MpCiAgICAgICAgIHNpbmstPk9uRnJhbWUoZnJhbWUpOwpAQCAtMjE5
LDEzICsyMzIsNiBAQCBXVEZMb2dDaGFubmVsJiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6
OmxvZ0NoYW5uZWwoKSBjb25zdAogewogICAgIHJldHVybiBMb2dXZWJSVEM7CiB9Ci0KLWNvbnN0
IExvZ2dlciYgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpsb2dnZXIoKSBjb25zdAotewot
ICAgIGlmICghbV9sb2dnZXIpCi0gICAgICAgIG1fbG9nZ2VyID0gTG9nZ2VyOjpjcmVhdGUodGhp
cyk7Ci0gICAgcmV0dXJuICptX2xvZ2dlcjsKLX0KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oCmluZGV4IDAzMWY2MDdjN2Rk
Li5jNDZhMDI3MDliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4KKyAqIENvcHly
aWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTcyLDEwICs3Miw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0QXBwbHlSb3Rh
dGlvbihib29sIHNob3VsZEFwcGx5Um90YXRpb24pIHsgbV9zaG91bGRBcHBseVJvdGF0aW9uID0g
c2hvdWxkQXBwbHlSb3RhdGlvbjsgfQogCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAg
dm9pZCBzZXRMb2dnZXIoUmVmPGNvbnN0IExvZ2dlcj4mJiBsb2dnZXIpIHsgbV9sb2dnZXIgPSBX
VEZNb3ZlKGxvZ2dlcik7IH0KLSNlbmRpZgotCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7
CiAKQEAgLTg5LDcgKzg1LDcgQEAgcHJvdGVjdGVkOgogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECiAgICAgLy8gTG9nZ2VySGVscGVyIEFQSQotICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkg
Y29uc3QgZmluYWw7CisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2xvZ2dlci5nZXQoKTsgfQogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KICAgICBjb25zdCBjaGFyKiBs
b2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlIjsgfQogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsK
QEAgLTE0NSw4ICsxNDEsMTAgQEAgcHJpdmF0ZToKICAgICB1aW50MzJfdCBtX2hlaWdodCB7IDAg
fTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIG11dGFibGUgUmVmUHRyPGNvbnN0
IExvZ2dlcj4gbV9sb2dnZXI7CisgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAg
Y29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworICAgIE1vbm90b25pY1RpbWUgbV9sYXN0RnJh
bWVMb2dUaW1lOworICAgIHVuc2lnbmVkIG1fZnJhbWVDb3VudCB7IDAgfTsKICNlbmRpZgogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZVZpZGVvU291cmNlLmNwcAppbmRleCA0NTI5ZTI4MDM4Yi4uYWRhMWVjM2EyYzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiUmVtb3RlVmlkZW9TYW1wbGUuaCIKKyNpbmNsdWRlIDx3dGYvSlNPTlZh
bHVlcy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiSW1hZ2VUcmFuc2ZlclNl
c3Npb25WVC5oIgpAQCAtMzUyLDcgKzM1Myw3IEBAIE9wdGlvbmFsPFJlYWx0aW1lVmlkZW9Tb3Vy
Y2U6OkNhcHR1cmVTaXplQW5kRnJhbWVSYXRlPiBSZWFsdGltZVZpZGVvU291cmNlOjpiZXN0CiAK
IHZvaWQgUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxp
bnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJh
dGUpCiB7Ci0gICAgT3B0aW9uYWw8UmVhbHRpbWVWaWRlb1NvdXJjZTo6Q2FwdHVyZVNpemVBbmRG
cmFtZVJhdGU+IG1hdGNoOworICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5U
SUZJRVIsIFNpemVBbmRGcmFtZVJhdGUgeyB3aWR0aCwgaGVpZ2h0LCBmcmFtZVJhdGUgfSk7CiAK
ICAgICBhdXRvIHNpemUgPSB0aGlzLT5zaXplKCk7CiAgICAgaWYgKCF3aWR0aCAmJiAhaGVpZ2h0
ICYmICFzaXplLmlzRW1wdHkoKSkgewpAQCAtMzYwLDcgKzM2MSw3IEBAIHZvaWQgUmVhbHRpbWVW
aWRlb1NvdXJjZTo6c2V0U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRp
b25hbDxpbnQ+CiAgICAgICAgIGhlaWdodCA9IHNpemUuaGVpZ2h0KCk7CiAgICAgfQogCi0gICAg
bWF0Y2ggPSBiZXN0U3VwcG9ydGVkU2l6ZUFuZEZyYW1lUmF0ZSh3aWR0aCwgaGVpZ2h0LCBmcmFt
ZVJhdGUpOworICAgIE9wdGlvbmFsPFJlYWx0aW1lVmlkZW9Tb3VyY2U6OkNhcHR1cmVTaXplQW5k
RnJhbWVSYXRlPiBtYXRjaCA9IGJlc3RTdXBwb3J0ZWRTaXplQW5kRnJhbWVSYXRlKHdpZHRoLCBo
ZWlnaHQsIGZyYW1lUmF0ZSk7CiAgICAgQVNTRVJUKG1hdGNoKTsKICAgICBpZiAoIW1hdGNoKQog
ICAgICAgICByZXR1cm47CkBAIC00MTEsNiArNDEyLDI0IEBAIHZvaWQgUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6ZGlzcGF0Y2hNZWRpYVNhbXBsZVRvT2JzZXJ2ZXJzKE1lZGlhU2FtcGxlJiBzYW1wbGUp
CiAgICAgdmlkZW9TYW1wbGVBdmFpbGFibGUobWVkaWFTYW1wbGUucmVsZWFzZU5vbk51bGwoKSk7
CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1JlZjxKU09OOjpPYmplY3Q+IFNpemVB
bmRGcmFtZVJhdGU6OnRvSlNPTk9iamVjdCgpIGNvbnN0Cit7CisgICAgYXV0byBvYmplY3QgPSBK
U09OOjpPYmplY3Q6OmNyZWF0ZSgpOworCisgICAgb2JqZWN0LT5zZXREb3VibGUoIndpZHRoIl9z
LCB3aWR0aCA/IHdpZHRoLnZhbHVlKCkgOiAwKTsKKyAgICBvYmplY3QtPnNldERvdWJsZSgiaGVp
Z2h0Il9zLCBoZWlnaHQgPyBoZWlnaHQudmFsdWUoKSA6IDApOworICAgIG9iamVjdC0+c2V0RG91
YmxlKCJmcmFtZVJhdGUiX3MsIGZyYW1lUmF0ZSA/IGZyYW1lUmF0ZS52YWx1ZSgpIDogMCk7CisK
KyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJpbmcgU2l6ZUFuZEZyYW1lUmF0ZTo6dG9KU09O
U3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9KU09OT2JqZWN0KCktPnRvSlNPTlN0cmlu
ZygpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmgKaW5kZXggMDdkZWQ0ZjFmNTkuLmFj
MzQ0MDBkNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZVZpZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgxLDYgKzgxLDEwIEBAIHByaXZhdGU6CiAg
ICAgT3B0aW9uYWw8Q2FwdHVyZVNpemVBbmRGcmFtZVJhdGU+IGJlc3RTdXBwb3J0ZWRTaXplQW5k
RnJhbWVSYXRlKE9wdGlvbmFsPGludD4gd2lkdGgsIE9wdGlvbmFsPGludD4gaGVpZ2h0LCBPcHRp
b25hbDxkb3VibGU+KTsKICAgICBib29sIHByZXNldFN1cHBvcnRzRnJhbWVSYXRlKFJlZlB0cjxW
aWRlb1ByZXNldD4sIGRvdWJsZSk7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBj
b25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVhbHRp
bWVWaWRlb1NvdXJjZSI7IH0KKyNlbmRpZgorCiAgICAgVmVjdG9yPFJlZjxWaWRlb1ByZXNldD4+
IG1fcHJlc2V0czsKICAgICBEZXF1ZTxkb3VibGU+IG1fb2JzZXJ2ZWRGcmFtZVRpbWVTdGFtcHM7
CiAgICAgZG91YmxlIG1fb2JzZXJ2ZWRGcmFtZVJhdGUgeyAwIH07CkBAIC05MCw3ICs5NCwyNyBA
QCBwcml2YXRlOgogI2VuZGlmCiB9OwogCitzdHJ1Y3QgU2l6ZUFuZEZyYW1lUmF0ZSB7CisgICAg
T3B0aW9uYWw8aW50PiB3aWR0aDsKKyAgICBPcHRpb25hbDxpbnQ+IGhlaWdodDsKKyAgICBPcHRp
b25hbDxkb3VibGU+IGZyYW1lUmF0ZTsKKworICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25z
dDsKKyAgICBSZWY8SlNPTjo6T2JqZWN0PiB0b0pTT05PYmplY3QoKSBjb25zdDsKK307CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUeXBlPiBzdHJ1Y3QgTG9nQXJndW1lbnQ7Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3Vt
ZW50PFdlYkNvcmU6OlNpemVBbmRGcmFtZVJhdGU+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3Ry
aW5nKGNvbnN0IFdlYkNvcmU6OlNpemVBbmRGcmFtZVJhdGUmIHNpemUpCisgICAgeworICAgICAg
ICByZXR1cm4gc2l6ZS50b0pTT05TdHJpbmcoKTsKKyAgICB9Cit9OworfTsgLy8gbmFtZXNwYWNl
IFdURgorCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1
cmVTb3VyY2UuaAppbmRleCAyNmY5MmZmNWRlMS4uNDE3YTczYjI5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVv
Q2FwdHVyZVNvdXJjZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNzMsNyArNzMsNiBAQCBwcml2YXRlOgogICAgIEFWVmlkZW9D
YXB0dXJlU291cmNlKEFWQ2FwdHVyZURldmljZSosIFN0cmluZyYmIGlkLCBTdHJpbmcmJiBoYXNo
U2FsdCk7CiAgICAgdmlydHVhbCB+QVZWaWRlb0NhcHR1cmVTb3VyY2UoKTsKIAotICAgIHZvaWQg
aW5pdGlhbGl6ZVNlc3Npb24oKTsKICAgICB2b2lkIGNsZWFyU2Vzc2lvbigpOwogCiAgICAgYm9v
bCBzZXR1cFNlc3Npb24oKTsKQEAgLTExMSw2ICsxMTAsMTAgQEAgcHJpdmF0ZToKIAogICAgIEFW
Q2FwdHVyZURldmljZSogZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2UuZ2V0KCk7IH0K
IAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJBVlZpZGVvQ2FwdHVyZVNvdXJjZSI7IH0KKyNl
bmRpZgorCiAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBtX2J1ZmZlcjsKICAgICBSZXRhaW5QdHI8
QVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZVRyYW5zZmVyU2Vzc2lvblZUPiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9D
YXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCmluZGV4IDlhNjYxYzc5M2U0Li5hZjBkYWE0YmE5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlk
ZW9DYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwMiwxNSArMjAyLDkgQEAgQVZW
aWRlb0NhcHR1cmVTb3VyY2U6On5BVlZpZGVvQ2FwdHVyZVNvdXJjZSgpCiAgICAgY2xlYXJTZXNz
aW9uKCk7CiB9CiAKLXZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmluaXRpYWxpemVTZXNzaW9u
KCkKLXsKLSAgICBBU1NFUlQoIW1fc2Vzc2lvbik7Ci0gICAgbV9zZXNzaW9uID0gYWRvcHROUyhb
YWxsb2NBVkNhcHR1cmVTZXNzaW9uSW5zdGFuY2UoKSBpbml0XSk7Ci0gICAgW21fc2Vzc2lvbiBh
ZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAicnVubmluZyIgb3B0
aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6KHZvaWQgKiluaWxdOwot
fQotCiB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjbGVhclNlc3Npb24oKQogeworICAgIEFM
V0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOwogICAgIEFTU0VSVChtX3Nl
c3Npb24pOwogICAgIFttX3Nlc3Npb24gcmVtb3ZlT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0
KCkgZm9yS2V5UGF0aDpAInJ1bm5pbmciXTsKICAgICBtX3Nlc3Npb24gPSBudWxscHRyOwpAQCAt
MjI2LDYgKzIyMCw3IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5n
RGF0YSgpCiAgICAgaWYgKFttX3Nlc3Npb24gaXNSdW5uaW5nXSkKICAgICAgICAgcmV0dXJuOwog
CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUik7CiAgICAgW21f
b2JqY09ic2VydmVyIGFkZE5vdGlmaWNhdGlvbk9ic2VydmVyc107CiAgICAgW21fc2Vzc2lvbiBz
dGFydFJ1bm5pbmddOwogfQpAQCAtMjM1LDYgKzIzMCw3IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVT
b3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKICAgICBpZiAoIW1fc2Vzc2lvbikKICAgICAgICAg
cmV0dXJuOwogCisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUik7
CiAgICAgW21fb2JqY09ic2VydmVyIHJlbW92ZU5vdGlmaWNhdGlvbk9ic2VydmVyc107CiAKICAg
ICBpZiAoW21fc2Vzc2lvbiBpc1J1bm5pbmddKQpAQCAtMzM1LDYgKzMzMSw4IEBAIGJvb2wgQVZW
aWRlb0NhcHR1cmVTb3VyY2U6OnByZWZlcnNQcmVzZXQoVmlkZW9QcmVzZXQmIHByZXNldCkKIAog
dm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0U2l6ZUFuZEZyYW1lUmF0ZVdpdGhQcmVzZXQo
SW50U2l6ZSByZXF1ZXN0ZWRTaXplLCBkb3VibGUgcmVxdWVzdGVkRnJhbWVSYXRlLCBSZWZQdHI8
VmlkZW9QcmVzZXQ+IHByZXNldCkKIHsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBM
T0dJREVOVElGSUVSLCBTaXplQW5kRnJhbWVSYXRlIHsgcmVxdWVzdGVkU2l6ZS53aWR0aCgpLCBy
ZXF1ZXN0ZWRTaXplLmhlaWdodCgpLCByZXF1ZXN0ZWRGcmFtZVJhdGUgfSk7CisKICAgICBhdXRv
KiBhdlByZXNldCA9IHByZXNldCA/IGRvd25jYXN0PEFWVmlkZW9QcmVzZXQ+KHByZXNldC5nZXQo
KSkgOiBudWxscHRyOwogCiAgICAgaWYgKCFtX3Nlc3Npb24pIHsKQEAgLTM2Myw2ICszNjEsMTIg
QEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0U2l6ZUFuZEZyYW1lUmF0ZVdpdGhQcmVz
ZXQoSW50U2l6ZSByZXF1ZXN0ZWRTaXplLAogICAgICAgICBpZiAoW2RldmljZSgpIGxvY2tGb3JD
b25maWd1cmF0aW9uOiZlcnJvcl0pIHsKICAgICAgICAgICAgIGlmICghbV9jdXJyZW50UHJlc2V0
IHx8ICFbbV9jdXJyZW50UHJlc2V0LT5mb3JtYXQuZ2V0KCkgaXNFcXVhbDphdlByZXNldC0+Zm9y
bWF0LmdldCgpXSkgewogICAgICAgICAgICAgICAgIFtkZXZpY2UoKSBzZXRBY3RpdmVGb3JtYXQ6
YXZQcmVzZXQtPmZvcm1hdC5nZXQoKV07CisKKyAgICAgICAgICAgICAgICBmcmFtZVJhdGVSYW5n
ZSA9IGZyYW1lRHVyYXRpb25Gb3JGcmFtZVJhdGUocmVxdWVzdGVkRnJhbWVSYXRlKTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoZnJhbWVSYXRlUmFuZ2UpOworICAgICAgICAgICAgICAgIGlmICgh
ZnJhbWVSYXRlUmFuZ2UpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKwogI2lmIFBMQVRG
T1JNKE1BQykKICAgICAgICAgICAgICAgICBhdXRvIHNldHRpbmdzRGljdGlvbmFyeSA9IEB7CiAg
ICAgICAgICAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4
ZWxGb3JtYXRUeXBlS2V5OiBAKGF2VmlkZW9DYXB0dXJlUGl4ZWxCdWZmZXJGb3JtYXQoKSksCkBA
IC0zNzMsMTkgKzM3NywyMSBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRTaXplQW5k
RnJhbWVSYXRlV2l0aFByZXNldChJbnRTaXplIHJlcXVlc3RlZFNpemUsCiAgICAgICAgICAgICAg
ICAgW21fdmlkZW9PdXRwdXQgc2V0VmlkZW9TZXR0aW5nczpzZXR0aW5nc0RpY3Rpb25hcnldOwog
I2VuZGlmCiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEFMV0FZU19MT0dfSUYobG9nZ2Vy
UHRyKCksIExPR0lERU5USUZJRVIsICJzZXR0aW5nIGZyYW1lIHJhdGUgIiwgQ01UaW1lR2V0U2Vj
b25kcyhbZnJhbWVSYXRlUmFuZ2UgbWluRnJhbWVEdXJhdGlvbl0pLCAiIC4uICIsIENNVGltZUdl
dFNlY29uZHMoW2ZyYW1lUmF0ZVJhbmdlIG1heEZyYW1lRHVyYXRpb25dKSk7CiAgICAgICAgICAg
ICBbZGV2aWNlKCkgc2V0QWN0aXZlVmlkZW9NaW5GcmFtZUR1cmF0aW9uOltmcmFtZVJhdGVSYW5n
ZSBtaW5GcmFtZUR1cmF0aW9uXV07CiAgICAgICAgICAgICBbZGV2aWNlKCkgc2V0QWN0aXZlVmlk
ZW9NYXhGcmFtZUR1cmF0aW9uOltmcmFtZVJhdGVSYW5nZSBtYXhGcmFtZUR1cmF0aW9uXV07CiAg
ICAgICAgICAgICBbZGV2aWNlKCkgdW5sb2NrRm9yQ29uZmlndXJhdGlvbl07CiAgICAgICAgIH0K
ICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HKE1lZGlhLCAiQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZSAtIGV4Y2VwdGlv
biB0aHJvd24gY29uZmlndXJpbmcgZGV2aWNlOiA8JXM+ICVzIiwgW1tleGNlcHRpb24gbmFtZV0g
VVRGOFN0cmluZ10sIFtbZXhjZXB0aW9uIHJlYXNvbl0gVVRGOFN0cmluZ10pOworICAgICAgICBF
UlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJlcnJvciBjb25maWd1cmlu
ZyBkZXZpY2UgIiwgW1tleGNlcHRpb24gbmFtZV0gVVRGOFN0cmluZ10sICIsIHJlYXNvbiA6ICIs
IFtbZXhjZXB0aW9uIHJlYXNvbl0gVVRGOFN0cmluZ10pOworICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIFttX3Nlc3Npb24gY29tbWl0Q29uZmlndXJhdGlvbl07CiAKICAgICBtX2N1cnJlbnRQ
cmVzZXQgPSBhdlByZXNldDsKIAotICAgIGlmIChlcnJvcikKLSAgICAgICAgUkVMRUFTRV9MT0co
TWVkaWEsICJBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0RnJhbWVSYXRlIC0gZmFpbGVkIHRvIGxv
Y2sgdmlkZW8gZGV2aWNlIGZvciBjb25maWd1cmF0aW9uOiAlcyIsIFtbZXJyb3IgbG9jYWxpemVk
RGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKKyAgICBFUlJPUl9MT0dfSUYoZXJyb3IgJiYgbG9n
Z2VyUHRyKCksIExPR0lERU5USUZJRVIsIFtbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVU
RjhTdHJpbmddKTsKIH0KIAogc3RhdGljIGlubGluZSBpbnQgc2Vuc29yT3JpZW50YXRpb24oQVZD
YXB0dXJlVmlkZW9PcmllbnRhdGlvbiB2aWRlb09yaWVudGF0aW9uKQpAQCAtNDI2LDcgKzQzMiwx
MCBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR1cFNlc3Npb24oKQogICAgIGlmICht
X3Nlc3Npb24pCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaW5pdGlhbGl6ZVNlc3Npb24o
KTsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSKTsKKworICAg
IG1fc2Vzc2lvbiA9IGFkb3B0TlMoW2FsbG9jQVZDYXB0dXJlU2Vzc2lvbkluc3RhbmNlKCkgaW5p
dF0pOworICAgIFttX3Nlc3Npb24gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9y
S2V5UGF0aDpAInJ1bm5pbmciIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBj
b250ZXh0Oih2b2lkICopbmlsXTsKIAogICAgIFttX3Nlc3Npb24gYmVnaW5Db25maWd1cmF0aW9u
XTsKICAgICBib29sIHN1Y2Nlc3MgPSBzZXR1cENhcHR1cmVTZXNzaW9uKCk7CkBAIC00NDksMTMg
KzQ1OCwxNSBAQCBBVkZyYW1lUmF0ZVJhbmdlVHlwZSogQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmZy
YW1lRHVyYXRpb25Gb3JGcmFtZVJhdGUoZG91YmxlIHJhdAogICAgIH0KIAogICAgIGlmICghYmVz
dEZyYW1lUmF0ZVJhbmdlKQotICAgICAgICBSRUxFQVNFX0xPRyhNZWRpYSwgIkFWVmlkZW9DYXB0
dXJlU291cmNlOjpmcmFtZUR1cmF0aW9uRm9yRnJhbWVSYXRlLCBubyBmcmFtZSByYXRlIHJhbmdl
IGZvciByYXRlICVnIiwgcmF0ZSk7CisgICAgICAgIEVSUk9SX0xPR19JRihsb2dnZXJQdHIoKSwg
TE9HSURFTlRJRklFUiwgIm5vIGZyYW1lIHJhdGUgcmFuZ2UgZm9yIHJhdGUgIiwgcmF0ZSk7CiAK
ICAgICByZXR1cm4gYmVzdEZyYW1lUmF0ZVJhbmdlOwogfQogCiBib29sIEFWVmlkZW9DYXB0dXJl
U291cmNlOjpzZXR1cENhcHR1cmVTZXNzaW9uKCkKIHsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dl
clB0cigpLCBMT0dJREVOVElGSUVSKTsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkudmlkZW9DYXB0dXJlRmFjdG9y
eSgpLnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKQEAgLTQ2MywxMiArNDc0LDEyIEBA
IGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Npb24oKQogICAgIE5T
RXJyb3IgKmVycm9yID0gbmlsOwogICAgIFJldGFpblB0cjxBVkNhcHR1cmVEZXZpY2VJbnB1dFR5
cGU+IHZpZGVvSW4gPSBhZG9wdE5TKFthbGxvY0FWQ2FwdHVyZURldmljZUlucHV0SW5zdGFuY2Uo
KSBpbml0V2l0aERldmljZTpkZXZpY2UoKSBlcnJvcjomZXJyb3JdKTsKICAgICBpZiAoZXJyb3Ip
IHsKLSAgICAgICAgUkVMRUFTRV9MT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0
dXBDYXB0dXJlU2Vzc2lvbiglcCksIGZhaWxlZCB0byBhbGxvY2F0ZSBBVkNhcHR1cmVEZXZpY2VJ
bnB1dDogJXMiLCB0aGlzLCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5n
XSk7CisgICAgICAgIEVSUk9SX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgImZh
aWxlZCB0byBhbGxvY2F0ZSBBVkNhcHR1cmVEZXZpY2VJbnB1dCAiLCBbW2Vycm9yIGxvY2FsaXpl
ZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKICAgICBpZiAoIVtzZXNzaW9uKCkgY2FuQWRkSW5wdXQ6dmlkZW9Jbi5nZXQoKV0pIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0
dXJlU2Vzc2lvbiglcCksIHVuYWJsZSB0byBhZGQgdmlkZW8gaW5wdXQgZGV2aWNlIiwgdGhpcyk7
CisgICAgICAgIEVSUk9SX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgInVuYWJs
ZSB0byBhZGQgdmlkZW8gaW5wdXQgZGV2aWNlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgW3Nlc3Npb24oKSBhZGRJbnB1dDp2aWRlb0luLmdldCgpXTsKQEAgLTQ4MSw3ICs0
OTIsNyBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR1cENhcHR1cmVTZXNzaW9uKCkK
ICAgICBbbV92aWRlb091dHB1dCBzZXRTYW1wbGVCdWZmZXJEZWxlZ2F0ZTptX29iamNPYnNlcnZl
ci5nZXQoKSBxdWV1ZTpnbG9iYVZpZGVvQ2FwdHVyZVNlcmlhbFF1ZXVlKCldOwogCiAgICAgaWYg
KCFbc2Vzc2lvbigpIGNhbkFkZE91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXSkgewotICAgICAg
ICBSRUxFQVNFX0xPRyhNZWRpYSwgIkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR1cENhcHR1cmVT
ZXNzaW9uKCVwKSwgdW5hYmxlIHRvIGFkZCB2aWRlbyBzYW1wbGUgYnVmZmVyIG91dHB1dCBkZWxl
Z2F0ZSIsIHRoaXMpOworICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5U
SUZJRVIsICJ1bmFibGUgdG8gYWRkIHZpZGVvIG91dHB1dCBkZXZpY2UiKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICBbc2Vzc2lvbigpIGFkZE91dHB1dDptX3ZpZGVvT3V0cHV0
LmdldCgpXTsKQEAgLTU3MSw2ICs1ODIsNyBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpj
YXB0dXJlT3V0cHV0RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24oQVZDYQogdm9p
ZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25Jc1J1bm5pbmdEaWRDaGFuZ2Uo
Ym9vbCBzdGF0ZSkKIHsKICAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpcywgc3RhdGVdIHsK
KyAgICAgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgc3RhdGUp
OwogICAgICAgICBpZiAoKHN0YXRlID09IG1faXNSdW5uaW5nKSAmJiAoc3RhdGUgPT0gIW11dGVk
KCkpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC01ODcsNiArNTk5LDcgQEAgdm9pZCBBVlZp
ZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZURldmljZVN1c3BlbmRlZERpZENoYW5nZSgpCiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXNdIHsK
ICAgICAgICAgYXV0byBpc1N1c3BlbmRlZCA9IFttX2RldmljZSBpc1N1c3BlbmRlZF07CisgICAg
ICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICEhaXNTdXNwZW5k
ZWQpOwogICAgICAgICBpZiAoaXNTdXNwZW5kZWQgPT0gbXV0ZWQoKSkKICAgICAgICAgICAgIHJl
dHVybjsKIApAQCAtNjI5LDYgKzY0Miw4IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6Omdl
bmVyYXRlUHJlc2V0cygpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgQVZWaWRlb0Nh
cHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uUnVudGltZUVycm9yKFJldGFpblB0cjxOU0Vycm9y
PiBlcnJvcikKIHsKKyAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIs
IFtbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKKwogICAgIGlmICgh
bV9pc1J1bm5pbmcgfHwgZXJyb3IuZ2V0KCkuY29kZSAhPSBBVkVycm9yTWVkaWFTZXJ2aWNlc1dl
cmVSZXNldCkKICAgICAgICAgcmV0dXJuOwogCkBAIC02MzksMTEgKzY1NCwxNCBAQCB2b2lkIEFW
VmlkZW9DYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvcihSZXRhaW5QdHI8
TlNFcnJvcj4gZXJyb3IpCiAKIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNz
aW9uQmVnaW5JbnRlcnJ1cHRpb24oUmV0YWluUHRyPE5TTm90aWZpY2F0aW9uPiBub3RpZmljYXRp
b24pCiB7CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgW25v
dGlmaWNhdGlvbi51c2VySW5mb1tBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uS2V5
XSBpbnRlZ2VyVmFsdWVdKTsKICAgICBtX2ludGVycnVwdGlvbiA9IHN0YXRpY19jYXN0PEFWVmlk
ZW9DYXB0dXJlU291cmNlOjpJbnRlcnJ1cHRpb25SZWFzb24+KFtub3RpZmljYXRpb24uZ2V0KCku
dXNlckluZm9bQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvbktleV0gaW50ZWdlclZh
bHVlXSk7CiB9CiAKIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uRW5k
SW50ZXJydXB0aW9uKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4pCiB7CisgICAgQUxXQVlTX0xP
R19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUik7CisKICAgICBJbnRlcnJ1cHRpb25SZWFz
b24gcmVhc29uID0gbV9pbnRlcnJ1cHRpb247CiAKICAgICBtX2ludGVycnVwdGlvbiA9IEludGVy
cnVwdGlvblJlYXNvbjo6Tm9uZTsKQEAgLTY1Nyw2ICs2NzUsNyBAQCB2b2lkIEFWVmlkZW9DYXB0
dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvbkVuZEludGVycnVwdGlvbihSZXRhaW5QdHI8TlNOb3Rp
ZmljYXRpbwogCiB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpkZXZpY2VEaXNjb25uZWN0ZWQo
UmV0YWluUHRyPE5TTm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24pCiB7CisgICAgQUxXQVlTX0xP
R19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUik7CiAgICAgaWYgKHRoaXMtPmRldmljZSgp
ID09IFtub3RpZmljYXRpb24gb2JqZWN0XSkKICAgICAgICAgY2FwdHVyZUZhaWxlZCgpOwogfQpA
QCAtNzI0LDEzICs3NDMsMTMgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGV2aWNlRGlz
Y29ubmVjdGVkKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4gbm90aWZpY2EKICAgICBpZCBuZXdW
YWx1ZSA9IFtjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07CiAKICAg
ICBib29sIHdpbGxDaGFuZ2UgPSBbW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdl
Tm90aWZpY2F0aW9uSXNQcmlvcktleV0gYm9vbFZhbHVlXTsKLSNpZiAhTE9HX0RJU0FCTEVECiAK
LSAgICBpZiAod2lsbENoYW5nZSkKLSAgICAgICAgTE9HKE1lZGlhLCAiV2ViQ29yZUFWVmlkZW9D
YXB0dXJlU291cmNlT2JzZXJ2ZXI6Om9ic2VydmVWYWx1ZUZvcktleVBhdGgoJXApIC0gd2lsbCBj
aGFuZ2UsIGtleVBhdGggPSAlcyIsIHNlbGYsIFtrZXlQYXRoIFVURjhTdHJpbmddKTsKLSAgICBl
bHNlIHsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBpZiAobV9jYWxsYmFjay0+bG9n
Z2VyUHRyKCkgJiYgbV9jYWxsYmFjay0+bG9nZ2VyKCkud2lsbExvZyhtX2NhbGxiYWNrLT5sb2dD
aGFubmVsKCksIFdURkxvZ0xldmVsRGVidWcpKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9
IExvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoIkFWVmlkZW9DYXB0dXJlU291cmNlIiwgIm9ic2Vy
dmVWYWx1ZUZvcktleVBhdGgiLCBtX2NhbGxiYWNrLT5sb2dJZGVudGlmaWVyKCkpOworCiAgICAg
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gdmFsdWVTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcg
YWxsb2NdIGluaXRXaXRoRm9ybWF0OkAiJUAiLCBuZXdWYWx1ZV0pOwotICAgICAgICBMT0coTWVk
aWEsICJXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlcjo6b2JzZXJ2ZVZhbHVlRm9y
S2V5UGF0aCglcCkgLSBkaWQgY2hhbmdlLCBrZXlQYXRoID0gJXMsIHZhbHVlID0gJXMiLCBzZWxm
LCBba2V5UGF0aCBVVEY4U3RyaW5nXSwgW3ZhbHVlU3RyaW5nLmdldCgpIFVURjhTdHJpbmddKTsK
KyAgICAgICAgbV9jYWxsYmFjay0+bG9nZ2VyKCkuZGVidWcobV9jYWxsYmFjay0+bG9nQ2hhbm5l
bCgpLCBpZGVudGlmaWVyLCAiZGlkIGNoYW5nZSAnIiwgW2tleVBhdGggVVRGOFN0cmluZ10sICIn
IHRvICIsIFt2YWx1ZVN0cmluZy5nZXQoKSBVVEY4U3RyaW5nXSk7CiAgICAgfQogI2VuZGlmCiAK
QEAgLTc0Miw4ICs3NjEsNiBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpkZXZpY2VEaXNj
b25uZWN0ZWQoUmV0YWluUHRyPE5TTm90aWZpY2F0aW9uPiBub3RpZmljYQogCiAtICh2b2lkKWRl
dmljZUNvbm5lY3RlZERpZENoYW5nZTooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbgogewot
ICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyOjpkZXZp
Y2VDb25uZWN0ZWREaWRDaGFuZ2UoJXApIiwgc2VsZik7Ci0KICAgICBpZiAobV9jYWxsYmFjaykK
ICAgICAgICAgbV9jYWxsYmFjay0+ZGV2aWNlRGlzY29ubmVjdGVkKG5vdGlmaWNhdGlvbik7CiB9
CkBAIC03NTIsMjQgKzc2OSwxOCBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpkZXZpY2VE
aXNjb25uZWN0ZWQoUmV0YWluUHRyPE5TTm90aWZpY2F0aW9uPiBub3RpZmljYQogLSAodm9pZClz
ZXNzaW9uUnVudGltZUVycm9yOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uCiB7CiAgICAg
TlNFcnJvciAqZXJyb3IgPSBub3RpZmljYXRpb24udXNlckluZm9bQVZDYXB0dXJlU2Vzc2lvbkVy
cm9yS2V5XTsKLSAgICBMT0coTWVkaWEsICJXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNl
cnZlcjo6c2Vzc2lvblJ1bnRpbWVFcnJvciglcCkgLSBlcnJvciA9ICVzIiwgc2VsZiwgW1tlcnJv
ciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOwotCiAgICAgaWYgKG1fY2FsbGJh
Y2spCiAgICAgICAgIG1fY2FsbGJhY2stPmNhcHR1cmVTZXNzaW9uUnVudGltZUVycm9yKGVycm9y
KTsKIH0KIAogLSAodm9pZCliZWdpblNlc3Npb25JbnRlcnJ1cHRlZDooTlNOb3RpZmljYXRpb24q
KW5vdGlmaWNhdGlvbgogewotICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVlZpZGVvQ2FwdHVyZVNv
dXJjZU9ic2VydmVyOjpiZWdpblNlc3Npb25JbnRlcnJ1cHRlZCglcCkgLSByZWFzb24gPSAlZCIs
IHNlbGYsIFtub3RpZmljYXRpb24udXNlckluZm9bQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlv
blJlYXNvbktleV0gaW50ZWdlclZhbHVlXSk7Ci0KICAgICBpZiAobV9jYWxsYmFjaykKICAgICAg
ICAgbV9jYWxsYmFjay0+Y2FwdHVyZVNlc3Npb25CZWdpbkludGVycnVwdGlvbihub3RpZmljYXRp
b24pOwogfQogCiAtICh2b2lkKWVuZFNlc3Npb25JbnRlcnJ1cHRlZDooTlNOb3RpZmljYXRpb24q
KW5vdGlmaWNhdGlvbgogewotICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVlZpZGVvQ2FwdHVyZVNv
dXJjZU9ic2VydmVyOjplbmRTZXNzaW9uSW50ZXJydXB0ZWQoJXApIiwgc2VsZik7Ci0KICAgICBp
ZiAobV9jYWxsYmFjaykKICAgICAgICAgbV9jYWxsYmFjay0+Y2FwdHVyZVNlc3Npb25FbmRJbnRl
cnJ1cHRpb24obm90aWZpY2F0aW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNl
LmNwcAppbmRleCBjNzFkMzU3ZmFmMy4uYjUxODA5NGQwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNjksNyArMjY5LDcgQEAgT1NTdGF0dXMgQ29yZUF1ZGlv
U2hhcmVkVW5pdDo6c2V0dXBBdWRpb1VuaXQoKQogICAgIEF1ZGlvQ29tcG9uZW50IGlvQ29tcG9u
ZW50ID0gQXVkaW9Db21wb25lbnRGaW5kTmV4dChudWxscHRyLCAmaW9Vbml0RGVzY3JpcHRpb24p
OwogICAgIEFTU0VSVChpb0NvbXBvbmVudCk7CiAgICAgaWYgKCFpb0NvbXBvbmVudCkgewotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNl
dHVwQXVkaW9Vbml0KCVwKSB1bmFibGUgdG8gZmluZCB2cGlvIHVuaXQgY29tcG9uZW50IiwgdGhp
cyk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQ29yZUF1ZGlvU2hhcmVkVW5p
dDo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBmaW5kIHZwaW8gdW5pdCBjb21wb25lbnQi
LCB0aGlzKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIApAQCAtMjc5LDEzICsyNzksMTMg
QEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRpb1VuaXQoKQogICAgIGlm
IChuYW1lKSB7CiAgICAgICAgIG1faW9Vbml0TmFtZSA9IG5hbWU7CiAgICAgICAgIENGUmVsZWFz
ZShuYW1lKTsKLSAgICAgICAgUkVMRUFTRV9MT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291
cmNlOjpzZXR1cEF1ZGlvVW5pdCglcCkgY3JlYXRlZCBcIiVzXCIgY29tcG9uZW50IiwgdGhpcywg
bV9pb1VuaXROYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNFX0xPRyhNZWRpYSwg
IkNvcmVBdWRpb1NoYXJlZFVuaXQ6OnNldHVwQXVkaW9Vbml0KCVwKSBjcmVhdGVkIFwiJXNcIiBj
b21wb25lbnQiLCB0aGlzLCBtX2lvVW5pdE5hbWUudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogI2Vu
ZGlmCiAKICAgICBhdXRvIGVyciA9IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoaW9Db21wb25l
bnQsICZtX2lvVW5pdCk7CiAgICAgaWYgKGVycikgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0KCVwKSB1bmFi
bGUgdG8gb3BlbiB2cGlvIHVuaXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAo
Y2hhciopJmVycik7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQ29yZUF1ZGlv
U2hhcmVkVW5pdDo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBvcGVuIHZwaW8gdW5pdCwg
ZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKICAgICAgICAg
cmV0dXJuIGVycjsKICAgICB9CiAKQEAgLTI5MywxMyArMjkzLDEzIEBAIE9TU3RhdHVzIENvcmVB
dWRpb1NoYXJlZFVuaXQ6OnNldHVwQXVkaW9Vbml0KCkKICAgICAgICAgdWludDMyX3QgcGFyYW0g
PSAwOwogICAgICAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShtX2lvVW5pdCwga0FVVm9p
Y2VJT1Byb3BlcnR5X1ZvaWNlUHJvY2Vzc2luZ0VuYWJsZUFHQywga0F1ZGlvVW5pdFNjb3BlX0ds
b2JhbCwgaW5wdXRCdXMsICZwYXJhbSwgc2l6ZW9mKHBhcmFtKSk7CiAgICAgICAgIGlmIChlcnIp
IHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBzZXQgdnBpbyBhdXRvbWF0aWMg
Z2FpbiBjb250cm9sLCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZl
cnIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDb3JlQXVkaW9TaGFy
ZWRVbml0OjpzZXR1cEF1ZGlvVW5pdCglcCkgdW5hYmxlIHRvIHNldCB2cGlvIGF1dG9tYXRpYyBn
YWluIGNvbnRyb2wsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVy
cik7CiAgICAgICAgICAgICByZXR1cm4gZXJyOwogICAgICAgICB9CiAgICAgICAgIHBhcmFtID0g
MTsKICAgICAgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9pb1VuaXQsIGtBVVZvaWNl
SU9Qcm9wZXJ0eV9CeXBhc3NWb2ljZVByb2Nlc3NpbmcsIGtBdWRpb1VuaXRTY29wZV9HbG9iYWws
IGlucHV0QnVzLCAmcGFyYW0sIHNpemVvZihwYXJhbSkpOwogICAgICAgICBpZiAoZXJyKSB7Ci0g
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3Vy
Y2U6OnNldHVwQXVkaW9Vbml0KCVwKSB1bmFibGUgdG8gc2V0IHZwaW8gdW5pdCBlY2hvIGNhbmNl
bGxhdGlvbiwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQ29yZUF1ZGlvU2hhcmVkVW5p
dDo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBzZXQgdnBpbyB1bml0IGVjaG8gY2FuY2Vs
bGF0aW9uLCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwog
ICAgICAgICAgICAgcmV0dXJuIGVycjsKICAgICAgICAgfQogICAgIH0KQEAgLTMwOCw3ICszMDgs
NyBAQCBPU1N0YXR1cyBDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXR1cEF1ZGlvVW5pdCgpCiAgICAg
dWludDMyX3QgcGFyYW0gPSAxOwogICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1faW9V
bml0LCBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfRW5hYmxlSU8sIGtBdWRpb1VuaXRTY29wZV9J
bnB1dCwgaW5wdXRCdXMsICZwYXJhbSwgc2l6ZW9mKHBhcmFtKSk7CiAgICAgaWYgKGVycikgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6
OnNldHVwQXVkaW9Vbml0KCVwKSB1bmFibGUgdG8gZW5hYmxlIHZwaW8gdW5pdCBpbnB1dCwgZXJy
b3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWEsICJDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXR1cEF1ZGlvVW5p
dCglcCkgdW5hYmxlIHRvIGVuYWJsZSB2cGlvIHVuaXQgaW5wdXQsIGVycm9yICVkICglLjRzKSIs
IHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgIHJldHVybiBlcnI7CiAgICAg
fQogI2Vsc2UKQEAgLTMyMCw3ICszMjAsNyBAQCBPU1N0YXR1cyBDb3JlQXVkaW9TaGFyZWRVbml0
OjpzZXR1cEF1ZGlvVW5pdCgpCiAKICAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShtX2lv
VW5pdCwga0F1ZGlvT3V0cHV0VW5pdFByb3BlcnR5X0N1cnJlbnREZXZpY2UsIGtBdWRpb1VuaXRT
Y29wZV9HbG9iYWwsIGlucHV0QnVzLCAmbV9jYXB0dXJlRGV2aWNlSUQsIHNpemVvZihtX2NhcHR1
cmVEZXZpY2VJRCkpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdCglcCkgdW5hYmxl
IHRvIHNldCB2cGlvIHVuaXQgY2FwdHVyZSBkZXZpY2UgSUQsIGVycm9yICVkICglLjRzKSIsIHRo
aXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1l
ZGlhLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBz
ZXQgdnBpbyB1bml0IGNhcHR1cmUgZGV2aWNlIElELCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAo
aW50KWVyciwgKGNoYXIqKSZlcnIpOwogICAgICAgICByZXR1cm4gZXJyOwogICAgIH0KICNlbmRp
ZgpAQCAtMzM1LDcgKzMzNSw3IEBAIE9TU3RhdHVzIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNldHVw
QXVkaW9Vbml0KCkKIAogICAgIGVyciA9IEF1ZGlvVW5pdEluaXRpYWxpemUobV9pb1VuaXQpOwog
ICAgIGlmIChlcnIpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDb3JlQXVk
aW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdCglcCkgQXVkaW9Vbml0SW5pdGlhbGl6ZSgp
IGZhaWxlZCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDb3JlQXVkaW9TaGFyZWRVbml0Ojpz
ZXR1cEF1ZGlvVW5pdCglcCkgQXVkaW9Vbml0SW5pdGlhbGl6ZSgpIGZhaWxlZCwgZXJyb3IgJWQg
KCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKICAgICAgICAgcmV0dXJuIGVy
cjsKICAgICB9CiAgICAgbV9pb1VuaXRJbml0aWFsaXplZCA9IHRydWU7CkBAIC02NDksMTQgKzY0
OSwxMyBAQCB2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnZlcmlmeUlzQ2FwdHVyaW5nKCkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQ29y
ZUF1ZGlvU2hhcmVkVW5pdDo6dmVyaWZ5SXNDYXB0dXJpbmcgLSBubyBhdWRpbyByZWNlaXZlZCBp
biAlZCBzZWNvbmRzLCBmYWlsaW5nIiwgc3RhdGljX2Nhc3Q8aW50PihtX3ZlcmlmeUNhcHR1cmlu
Z1RpbWVyLnJlcGVhdEludGVydmFsKCkudmFsdWUoKSkpOwogICAgIGNhcHR1cmVGYWlsZWQoKTsK
IH0KIAogdm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0OjpjYXB0dXJlRmFpbGVkKCkKIHsKLSNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkNvcmVB
dWRpb1NoYXJlZFVuaXQ6OmNhcHR1cmVGYWlsZWQgLSBjYXB0dXJlIGZhaWxlZCIpOwotI2VuZGlm
CiAgICAgZm9yIChDb3JlQXVkaW9DYXB0dXJlU291cmNlJiBjbGllbnQgOiBtX2NsaWVudHMpCiAg
ICAgICAgIGNsaWVudC5jYXB0dXJlRmFpbGVkKCk7CiAKQEAgLTgzNiw2ICs4MzUsNyBAQCB2b2lk
IENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmluaXRpYWxpemVUb1N0YXJ0UHJvZHVjaW5nRGF0YSgp
CiAgICAgaWYgKG1faXNSZWFkeVRvU3RhcnQpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZ
U19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOwogICAgIG1faXNSZWFkeVRvU3Rh
cnQgPSB0cnVlOwogCiAgICAgYXV0byYgdW5pdCA9IENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmds
ZXRvbigpOwpAQCAtODY2LDExICs4NjYsMTMgQEAgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6fkNv
cmVBdWRpb0NhcHR1cmVTb3VyY2UoKQogCiB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmFk
ZEVjaG9DYW5jZWxsYXRpb25Tb3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJiBzb3VyY2UpCiB7
CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUik7CiAgICAgQ29y
ZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCkuYWRkRWNob0NhbmNlbGxhdGlvblNvdXJjZShz
b3VyY2UpOwogfQogCiB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnJlbW92ZUVjaG9DYW5j
ZWxsYXRpb25Tb3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJiBzb3VyY2UpCiB7CisgICAgQUxX
QVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUik7CiAgICAgQ29yZUF1ZGlvU2hh
cmVkVW5pdDo6c2luZ2xldG9uKCkucmVtb3ZlRWNob0NhbmNlbGxhdGlvblNvdXJjZShzb3VyY2Up
OwogfQogCkBAIC04ODEsNyArODgzLDExIEBAIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6
c3RhcnRQcm9kdWNpbmdEYXRhKCkKICNlbmRpZgogCiAgICAgYXV0byYgdW5pdCA9IENvcmVBdWRp
b1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpOwotICAgIGlmICh1bml0LmlzU3VzcGVuZGVkKCkpIHsK
KworICAgIGF1dG8gaXNTdXNwZW5kZWQgPSB1bml0LmlzU3VzcGVuZGVkKCk7CisgICAgQUxXQVlT
X0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgaXNTdXNwZW5kZWQpOworCisgICAg
aWYgKGlzU3VzcGVuZGVkKSB7CiAgICAgICAgIG1fc3VzcGVuZFR5cGUgPSBTdXNwZW5zaW9uVHlw
ZTo6V2hpbGVQbGF5aW5nOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODk0LDcgKzkwMCwx
MCBAQCB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsK
ICAgICBhdXRvJiB1bml0ID0gQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCk7CiAKLSAg
ICBpZiAodW5pdC5pc1N1c3BlbmRlZCgpKSB7CisgICAgYXV0byBpc1N1c3BlbmRlZCA9IHVuaXQu
aXNTdXNwZW5kZWQoKTsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElG
SUVSLCBpc1N1c3BlbmRlZCk7CisKKyAgICBpZiAoaXNTdXNwZW5kZWQpIHsKICAgICAgICAgbV9z
dXNwZW5kVHlwZSA9IFN1c3BlbnNpb25UeXBlOjpXaGlsZVBhdXNlZDsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTk1Myw2ICs5NjIsOCBAQCB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6
OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dAogCiB2
b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNjaGVkdWxlUmVjb25maWd1cmF0aW9uKCkKIHsK
KyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSKTsKKwogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0byYgdW5pdCA9IENvcmVBdWRpb1NoYXJlZFVu
aXQ6OnNpbmdsZXRvbigpOwogICAgIGlmICghdW5pdC5oYXNBdWRpb1VuaXQoKSB8fCBtX3JlY29u
ZmlndXJhdGlvblN0YXRlICE9IFJlY29uZmlndXJhdGlvblN0YXRlOjpOb25lKQpAQCAtOTcyLDYg
Kzk4Myw4IEBAIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVSZWNvbmZpZ3Vy
YXRpb24oKQogCiB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmJlZ2luSW50ZXJydXB0aW9u
KCkKIHsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSKTsKKwog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0byYgdW5pdCA9IENvcmVBdWRpb1No
YXJlZFVuaXQ6OnNpbmdsZXRvbigpOwogICAgIGlmICghdW5pdC5oYXNBdWRpb1VuaXQoKSB8fCB1
bml0LmlzU3VzcGVuZGVkKCkgfHwgbV9zdXNwZW5kUGVuZGluZykKQEAgLTk4OCw2ICsxMDAxLDgg
QEAgdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpiZWdpbkludGVycnVwdGlvbigpCiAKIHZv
aWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6ZW5kSW50ZXJydXB0aW9uKCkKIHsKKyAgICBBTFdB
WVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSKTsKKwogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgYXV0byYgdW5pdCA9IENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmds
ZXRvbigpOwogICAgIGlmICghdW5pdC5oYXNBdWRpb1VuaXQoKSB8fCAhdW5pdC5pc1N1c3BlbmRl
ZCgpIHx8IG1fcmVzdW1lUGVuZGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCmlu
ZGV4IDU2NDQyNzIxYmQ1Li5iM2VhNzgyMTZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtOTUsNiArOTUsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaW5pdGlhbGl6
ZVRvU3RhcnRQcm9kdWNpbmdEYXRhKCk7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAg
ICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiQ29y
ZUF1ZGlvQ2FwdHVyZVNvdXJjZSI7IH0KKyNlbmRpZgorCiAgICAgdWludDMyX3QgbV9jYXB0dXJl
RGV2aWNlSUQgeyAwIH07CiAKICAgICBPcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzPiBtX2NhcGFiaWxpdGllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJl
U291cmNlTWFjLmgKaW5kZXggMDRiOGQ4Y2E4MzIuLmI4MmZlYWZhZDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1
cmVTb3VyY2VNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY2LDcgKzY2LDExIEBAIHBy
aXZhdGU6CiAKICAgICBib29sIGNyZWF0ZURpc3BsYXlTdHJlYW0oKTsKICAgICB2b2lkIHN0YXJ0
RGlzcGxheVN0cmVhbSgpOwotICAgIAorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAg
Y29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlNjcmVl
bkRpc3BsYXlDYXB0dXJlU291cmNlTWFjIjsgfQorI2VuZGlmCisKICAgICBjbGFzcyBEaXNwbGF5
U3VyZmFjZSB7CiAgICAgcHVibGljOgogICAgICAgICBEaXNwbGF5U3VyZmFjZSgpID0gZGVmYXVs
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9T
Y3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5tbQppbmRleCAx
ZThhYzZjODZlMi4uZjZkNjMxZTQ3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNh
cHR1cmVTb3VyY2VNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTUsMTUgKzExNSwxOCBAQCBib29sIFNjcmVlbkRpc3Bs
YXlDYXB0dXJlU291cmNlTWFjOjpjcmVhdGVEaXNwbGF5U3RyZWFtKCkKIHsKICAgICBzdGF0aWMg
Y29uc3QgaW50IHNjcmVlblF1ZXVlTWF4aW11bUxlbmd0aCA9IDY7CiAKKyAgICBBTFdBWVNfTE9H
X0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSKTsKKwogICAgIGF1dG8gYWN0dWFsRGlzcGxh
eUlEID0gdXBkYXRlRGlzcGxheUlEKG1fZGlzcGxheUlEKTsKICAgICBpZiAoIWFjdHVhbERpc3Bs
YXlJRCkgeworICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIs
ICJpbnZhbGlkIGRpc3BsYXkgSUQ6ICIsIG1fZGlzcGxheUlEKTsKICAgICAgICAgY2FwdHVyZUZh
aWxlZCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKG1fZGlzcGxh
eUlEICE9IGFjdHVhbERpc3BsYXlJRC52YWx1ZSgpKSB7CiAgICAgICAgIG1fZGlzcGxheUlEID0g
YWN0dWFsRGlzcGxheUlELnZhbHVlKCk7Ci0gICAgICAgIFJFTEVBU0VfTE9HKE1lZGlhLCAiU2Ny
ZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW06IGRpc3BsYXkg
SUQgY2hhbmdlZCB0byAlZCIsIHN0YXRpY19jYXN0PGludD4obV9kaXNwbGF5SUQpKTsKKyAgICAg
ICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgImRpc3BsYXkgSUQg
Y2hhbmdlZCB0byAiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fZGlzcGxheUlEKSk7CiAgICAgICAgIG1f
ZGlzcGxheVN0cmVhbSA9IG51bGxwdHI7CiAgICAgfQogCkBAIC0xMzIsNyArMTM1LDcgQEAgYm9v
bCBTY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Y3JlYXRlRGlzcGxheVN0cmVhbSgpCiAg
ICAgICAgIGF1dG8gc2NyZWVuV2lkdGggPSBDR0Rpc3BsYXlNb2RlR2V0UGl4ZWxzV2lkZShkaXNw
bGF5TW9kZS5nZXQoKSk7CiAgICAgICAgIGF1dG8gc2NyZWVuSGVpZ2h0ID0gQ0dEaXNwbGF5TW9k
ZUdldFBpeGVsc0hpZ2goZGlzcGxheU1vZGUuZ2V0KCkpOwogICAgICAgICBpZiAoIXNjcmVlbldp
ZHRoIHx8ICFzY3JlZW5IZWlnaHQpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HKE1lZGlhLCAi
U2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW06IHVuYWJs
ZSB0byBnZXQgc2NyZWVuIHdpZHRoL2hlaWdodCIpOworICAgICAgICAgICAgRVJST1JfTE9HX0lG
KGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIGdldCBzY3JlZW4gd2lkdGgv
aGVpZ2h0Iik7CiAgICAgICAgICAgICBjYXB0dXJlRmFpbGVkKCk7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTE1OCw3ICsxNjEsNyBAQCBib29sIFNjcmVlbkRpc3Bs
YXlDYXB0dXJlU291cmNlTWFjOjpjcmVhdGVEaXNwbGF5U3RyZWFtKCkKIAogICAgICAgICBtX2Rp
c3BsYXlTdHJlYW0gPSBhZG9wdENGKENHRGlzcGxheVN0cmVhbUNyZWF0ZVdpdGhEaXNwYXRjaFF1
ZXVlKG1fZGlzcGxheUlELCBzY3JlZW5XaWR0aCwgc2NyZWVuSGVpZ2h0LCBwcmVmZXJlZFBpeGVs
QnVmZmVyRm9ybWF0KCksIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpc3RyZWFtT3B0aW9ucywg
bV9jYXB0dXJlUXVldWUuZ2V0KCksIGZyYW1lQXZhaWxhYmxlQmxvY2spKTsKICAgICAgICAgaWYg
KCFtX2Rpc3BsYXlTdHJlYW0pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HKE1lZGlhLCAiU2Ny
ZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW06IENHRGlzcGxh
eVN0cmVhbUNyZWF0ZSBmYWlsZWQiKTsKKyAgICAgICAgICAgIEVSUk9SX0xPR19JRihsb2dnZXJQ
dHIoKSwgTE9HSURFTlRJRklFUiwgIkNHRGlzcGxheVN0cmVhbUNyZWF0ZSBmYWlsZWQiKTsKICAg
ICAgICAgICAgIGNhcHR1cmVGYWlsZWQoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQpAQCAtMTc0LDYgKzE3Nyw3IEBAIGJvb2wgU2NyZWVuRGlzcGxheUNhcHR1cmVTb3Vy
Y2VNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW0oKQogCiB2b2lkIFNjcmVlbkRpc3BsYXlDYXB0dXJl
U291cmNlTWFjOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogeworICAgIEFMV0FZU19MT0dfSUYobG9n
Z2VyUHRyKCksIExPR0lERU5USUZJRVIpOwogICAgIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6
OnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwogCiAgICAgaWYgKG1faXNSdW5uaW5nKQpAQCAtMTg0LDYg
KzE4OCw3IEBAIHZvaWQgU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnN0YXJ0UHJvZHVj
aW5nRGF0YSgpCiAKIHZvaWQgU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnN0b3BQcm9k
dWNpbmdEYXRhKCkKIHsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElG
SUVSKTsKICAgICBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzdG9wUHJvZHVjaW5nRGF0YSgp
OwogCiAgICAgaWYgKCFtX2lzUnVubmluZykKQEAgLTIxNCw3ICsyMTksNyBAQCB2b2lkIFNjcmVl
bkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpzdGFydERpc3BsYXlTdHJlYW0oKQogCiAgICAgaWYg
KG1fZGlzcGxheUlEICE9IGFjdHVhbERpc3BsYXlJRC52YWx1ZSgpKSB7CiAgICAgICAgIG1fZGlz
cGxheUlEID0gYWN0dWFsRGlzcGxheUlELnZhbHVlKCk7Ci0gICAgICAgIFJFTEVBU0VfTE9HKE1l
ZGlhLCAiU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnN0YXJ0RGlzcGxheVN0cmVhbTog
ZGlzcGxheSBJRCBjaGFuZ2VkIHRvICVkIiwgc3RhdGljX2Nhc3Q8aW50PihtX2Rpc3BsYXlJRCkp
OworICAgICAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiZGlz
cGxheSBJRCBjaGFuZ2VkIHRvICIsIHN0YXRpY19jYXN0PGludD4obV9kaXNwbGF5SUQpKTsKICAg
ICB9CiAKICAgICBpZiAoIW1fZGlzcGxheVN0cmVhbSAmJiAhY3JlYXRlRGlzcGxheVN0cmVhbSgp
KQpAQCAtMjIyLDcgKzIyNyw3IEBAIHZvaWQgU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6
OnN0YXJ0RGlzcGxheVN0cmVhbSgpCiAKICAgICBhdXRvIGVyciA9IENHRGlzcGxheVN0cmVhbVN0
YXJ0KG1fZGlzcGxheVN0cmVhbS5nZXQoKSk7CiAgICAgaWYgKGVycikgewotICAgICAgICBSRUxF
QVNFX0xPRyhNZWRpYSwgIlNjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpzdGFydERpc3Bs
YXlTdHJlYW06IENHRGlzcGxheVN0cmVhbVN0YXJ0IGZhaWxlZCB3aXRoIGVycm9yICVkIiwgc3Rh
dGljX2Nhc3Q8aW50PihlcnIpKTsKKyAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBM
T0dJREVOVElGSUVSLCAiQ0dEaXNwbGF5U3RyZWFtU3RhcnQgZmFpbGVkIHdpdGggZXJyb3IgIiwg
c3RhdGljX2Nhc3Q8aW50PihlcnIpKTsKICAgICAgICAgY2FwdHVyZUZhaWxlZCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQo=
</data>
<flag name="review"
          id="381338"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364867</attachid>
            <date>2019-03-15 16:00:50 -0700</date>
            <delta_ts>2019-03-15 20:18:36 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>media-stream-logging-patch-3.txt</filename>
            <type>text/plain</type>
            <size>118295</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZWEzNmQ0MGMyNjYuLjZlOWQ0ZjM0ZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5
LTAzLTE1ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBtZWRpYSBzdHJlYW0gcmVsZWFzZSBsb2dnaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MjMKKworICAgICAgICBSZXZpZXdlZCBieSBZ
b3Vlbm4gRmFibGV0LgorCisgICAgICAgICogd3RmL0xvZ2dlckhlbHBlci5oOiBBZGQgTE9HX0lG
IHZhcmlhbnRzIHRoYXQgY2hlY2sgYSBjb25kaXRpb24gYmVmb3JlIGxvZ2dpbmcuCisKIDIwMTkt
MDMtMTMgIERvbWluaWsgSW5mdWVociAgPGRpbmZ1ZWhyQGlnYWxpYS5jb20+CiAKICAgICAgICAg
U3RyaW5nIG92ZXJmbG93IHdoZW4gdXNpbmcgU3RyaW5nQnVpbGRlciBpbiBKU0M6OmNyZWF0ZUVy
cm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXJIZWxwZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL0xvZ2dlckhlbHBlci5oCmluZGV4IGU4MjY0NzQ0N2MxLi5kMDNhZmU2NDE0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9nZ2VySGVscGVyLmgKKysrIGIvU291cmNlL1dURi93
dGYvTG9nZ2VySGVscGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9M
b2dnZXIuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC00NSwxNyArNDYsMjggQEAgcHVibGljOgog
I2RlZmluZSBBTFdBWVNfTE9HKC4uLikgICAgIGxvZ2dlcigpLmxvZ0Fsd2F5cyhsb2dDaGFubmVs
KCksIF9fVkFfQVJHU19fKQogI2RlZmluZSBFUlJPUl9MT0coLi4uKSAgICAgIGxvZ2dlcigpLmVy
cm9yKGxvZ0NoYW5uZWwoKSwgX19WQV9BUkdTX18pCiAjZGVmaW5lIFdBUk5JTkdfTE9HKC4uLikg
ICAgbG9nZ2VyKCkud2FybmluZyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQotI2RlZmluZSBO
T1RJQ0VfTE9HKC4uLikgICAgIGxvZ2dlcigpLm5vdGljZShsb2dDaGFubmVsKCksIF9fVkFfQVJH
U19fKQogI2RlZmluZSBJTkZPX0xPRyguLi4pICAgICAgIGxvZ2dlcigpLmluZm8obG9nQ2hhbm5l
bCgpLCBfX1ZBX0FSR1NfXykKICNkZWZpbmUgREVCVUdfTE9HKC4uLikgICAgICBsb2dnZXIoKS5k
ZWJ1Zyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQogI2RlZmluZSBXSUxMX0xPRyhfbGV2ZWxf
KSAgIGxvZ2dlcigpLndpbGxMb2cobG9nQ2hhbm5lbCgpLCBfbGV2ZWxfKQogCisjZGVmaW5lIEFM
V0FZU19MT0dfSUYoY29uZGl0aW9uLCAuLi4pICAgICBpZiAoY29uZGl0aW9uKSBsb2dnZXIoKS5s
b2dBbHdheXMobG9nQ2hhbm5lbCgpLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgRVJST1JfTE9HX0lG
KGNvbmRpdGlvbiwgLi4uKSAgICAgIGlmIChjb25kaXRpb24pIGxvZ2dlcigpLmVycm9yKGxvZ0No
YW5uZWwoKSwgX19WQV9BUkdTX18pCisjZGVmaW5lIFdBUk5JTkdfTE9HX0lGKGNvbmRpdGlvbiwg
Li4uKSAgICBpZiAoY29uZGl0aW9uKSBsb2dnZXIoKS53YXJuaW5nKGxvZ0NoYW5uZWwoKSwgX19W
QV9BUkdTX18pCisjZGVmaW5lIElORk9fTE9HX0lGKGNvbmRpdGlvbiwgLi4uKSAgICAgICBpZiAo
Y29uZGl0aW9uKSBsb2dnZXIoKS5pbmZvKGxvZ0NoYW5uZWwoKSwgX19WQV9BUkdTX18pCisjZGVm
aW5lIERFQlVHX0xPR19JRihjb25kaXRpb24sIC4uLikgICAgICBpZiAoY29uZGl0aW9uKSBsb2dn
ZXIoKS5kZWJ1Zyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQorCiAgICAgY29uc3Qgdm9pZCog
Y2hpbGRMb2dJZGVudGlmaWVyKHVpbnQ2NF90IGlkZW50aWZpZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBwYXJlbnRNYXNrID0gMHhmZmZmZmZmZmZmZmYwMDAw
bDsKICAgICAgICAgc3RhdGljIGNvbnN0IGludDY0X3QgbWFza0xvd2VyV29yZCA9IDB4ZmZmZmw7
CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigocmVpbnRlcnBy
ZXRfY2FzdDx1aW50NjRfdD4obG9nSWRlbnRpZmllcigpKSAmIHBhcmVudE1hc2spIHwgKGlkZW50
aWZpZXIgJiBtYXNrTG93ZXJXb3JkKSk7CiAgICAgfQorCisgICAgc3RhdGljIGNvbnN0IHZvaWQq
IHVuaXF1ZUxvZ0lkZW50aWZpZXIoKQorICAgIHsKKyAgICAgICAgc3RhdGljIHVpbnQ2NF90IGxv
Z0lkZW50aWZpZXIgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOworICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oKytsb2dJZGVudGlmaWVyKTsKKyAg
ICB9CiAjZWxzZQogCiAjZGVmaW5lIExPR0lERU5USUZJRVIgKFdURjo6bnVsbG9wdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA3YjYzYjU1MjQ4ZC4uNjYwYTM0NmM3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NzMgQEAKKzIwMTktMDMtMTUgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIG1lZGlhIHN0cmVhbSByZWxlYXNlIGxvZ2dpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgyMworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNDg5Mzk0MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxl
dC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yYWwgY2hhbmdlLgorCisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW06OmNsb25lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjphZGRUcmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW06OmFkZFRyYWNrRnJvbVBsYXRmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtOjpzZXRJc0FjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbTo6bWVkaWFDYW5TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6
c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpzdG9w
UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6ZW5kQ2FwdHVy
ZVRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6c3RvcCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bVRyYWNrOjpNZWRpYVN0cmVhbVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
VHJhY2s6OmxvZ0NoYW5uZWwgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDTWVkaWFFbmRwb2ludDo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
TWVkaWFFbmRwb2ludDo6c291cmNlRnJvbU5ld1JlY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRl
eHQ6OkF1ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TG9nSWRlbnRpZmllcik6
IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6bmV4dExvZ0lkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TG9nSWRlbnRpZmllcik6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkludFNpemU6OnRvSlNPTk9iamVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRTaXplOjp0b0pTT05TdHJpbmcgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ludFNpemUuaDoKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6SW50U2l6ZT46
OnRvU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVBy
aXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjphZGRUcmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OnJlbW92ZVRyYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6c3RhcnRQcm9kdWNpbmdEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6c3RvcFByb2R1Y2luZ0Rh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjpzZXRDYXB0dXJlVHJh
Y2tzTXV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjp0cmFja011
dGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OnRyYWNr
RW5hYmxlZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjp0
cmFja1N0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjp0cmFj
a0VuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6c2V0TG9nZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6bG9nQ2hhbm5lbCBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNldExvZ2dl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6bG9nQ2hhbm5l
bCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpsb2dDaGFubmVsIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6bG9nZ2Vy
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZTo6c2V0TG9nZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpSZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjps
b2dDaGFubmVsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZTo6bG9nZ2VyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6c2V0TG9nZ2VyKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlJlYWx0aW1lTWVkaWFT
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0SW50ZXJy
dXB0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0TXV0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6bm90aWZ5TXV0ZWRDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6bm90aWZ5U2V0dGlu
Z3NEaWRDaGFuZ2VPYnNlcnZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZTo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpjYXB0dXJl
RmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29u
c3RyYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0
c0NvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OmFw
cGx5Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6
c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRJbnRy
aW5zaWNTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEZy
YW1lUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRBc3Bl
Y3RSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRGYWNp
bmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFZvbHVt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTYW1wbGVSYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RWNob0NhbmNlbGxh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRMb2dnZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6bG9nQ2hhbm5lbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAg
ICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlPjo6
dG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OmNvbnZlcnRGbGFnc1RvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaDoKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU+Ojp0
b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PE9wdGlvblNldDxXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+Pjo6dG9TdHJpbmcpOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OlJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2U6OmxvZ0NoYW5uZWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjpsb2dnZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZXRMb2dnZXIpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRl
b1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2U6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnNlbmRPbmVCbGFja0ZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c2VuZEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6bG9nQ2hhbm5lbCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OmxvZ2dlciBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2U6OnNldExvZ2dlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZVZpZGVvU291cmNlOjpzZXRTaXplQW5kRnJhbWVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNpemVBbmRGcmFtZVJhdGU6OnRvSlNPTk9iamVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaXplQW5kRnJhbWVSYXRlOjp0b0pTT05TdHJpbmcgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuaDoKKyAgICAgICAgKFdURjo6TG9n
QXJndW1lbnQ8V2ViQ29yZTo6U2l6ZUFuZEZyYW1lUmF0ZT46OnRvU3RyaW5nKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW06Cisg
ICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2xlYXJTZXNzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnN0b3BQcm9kdWNpbmdE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRTaXplQW5k
RnJhbWVSYXRlV2l0aFByZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNv
dXJjZTo6c2V0dXBTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291
cmNlOjpmcmFtZUR1cmF0aW9uRm9yRnJhbWVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlk
ZW9DYXB0dXJlU291cmNlOjpzZXR1cENhcHR1cmVTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZURldmljZVN1
c3BlbmRlZERpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJj
ZTo6Y2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRl
b0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uQmVnaW5JbnRlcnJ1cHRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uRW5kSW50ZXJy
dXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpkZXZpY2VE
aXNjb25uZWN0ZWQpOgorICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNl
cnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgor
ICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciBkZXZpY2VDb25u
ZWN0ZWREaWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJj
ZU9ic2VydmVyIHNlc3Npb25SdW50aW1lRXJyb3I6XSk6CisgICAgICAgICgtW1dlYkNvcmVBVlZp
ZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIGJlZ2luU2Vzc2lvbkludGVycnVwdGVkOl0pOgorICAg
ICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciBlbmRTZXNzaW9uSW50
ZXJydXB0ZWQ6XSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6aW5p
dGlhbGl6ZVNlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVB
dWRpb1NoYXJlZFVuaXQ6OnNldHVwQXVkaW9Vbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVB
dWRpb1NoYXJlZFVuaXQ6OnZlcmlmeUlzQ2FwdHVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
cmVBdWRpb1NoYXJlZFVuaXQ6OmNhcHR1cmVGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29y
ZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZVRvU3RhcnRQcm9kdWNpbmdEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmFkZEVjaG9DYW5jZWxsYXRp
b25Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6cmVt
b3ZlRWNob0NhbmNlbGxhdGlvblNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9D
YXB0dXJlU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29y
ZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6YmVnaW5JbnRlcnJ1cHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6ZW5kSW50ZXJydXB0
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNw
bGF5Q2FwdHVyZVNvdXJjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpjcmVhdGVEaXNwbGF5U3RyZWFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpzdGFydFByb2R1Y2lu
Z0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6
OnN0b3BQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbkRpc3BsYXlDYXB0
dXJlU291cmNlTWFjOjpzdGFydERpc3BsYXlTdHJlYW0pOgorCiAyMDE5LTAzLTEzICBEYW5pZWwg
QmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc29tZSB1bm5lY2Vz
c2FyeSAhVVNFKFVJS0lUX0tFWUJPQVJEX0FERElUSU9OUykgZ3VhcmRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCmluZGV4IDE4ZjI1
ODdlNmJiLi4zZGU4MzRjOGQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIsIDIwMTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNzgsMTAgKzc4LDE5IEBA
IE1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQp
CiAgICAgLCBtX3ByaXZhdGUoTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoY3JlYXRlVHJhY2tQ
cml2YXRlVmVjdG9yKHRyYWNrcykpKQogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRp
YVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAg
LCBtX2xvZ2dlcihkb2N1bWVudCgpLT5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcih1
bmlxdWVMb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKIHsKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9y
IHByZXNlcnZlcyBNZWRpYVN0cmVhbVRyYWNrIGluc3RhbmNlcyBhbmQgbXVzdCBiZSB1c2VkIGJ5
IGNhbGxzIG9yaWdpbmF0aW5nCiAgICAgLy8gZnJvbSB0aGUgSmF2YVNjcmlwdCBNZWRpYVN0cmVh
bSBjb25zdHJ1Y3Rvci4KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CisgICAgbV9wcml2YXRlLT5zZXRMb2dnZXIobG9nZ2VyKCksIGxv
Z0lkZW50aWZpZXIoKSk7CisjZW5kaWYKKwogICAgIGZvciAoYXV0byYgdHJhY2sgOiB0cmFja3Mp
IHsKICAgICAgICAgdHJhY2stPmFkZE9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgbV90cmFja1Nl
dC5hZGQodHJhY2stPmlkKCksIHRyYWNrKTsKQEAgLTk3LDcgKzEwNiwxNSBAQCBNZWRpYVN0cmVh
bTo6TWVkaWFTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPE1lZGlh
U3RyZWFtUHJpdmF0ZQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9w
cml2YXRlKFdURk1vdmUoc3RyZWFtUHJpdmF0ZSkpCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKLXsKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyAgICAsIG1fbG9nZ2VyKGRvY3VtZW50KCktPmxvZ2dlcigpKQorICAgICwgbV9sb2dJ
ZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgoreworI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisgICAgbV9wcml2
YXRlLT5zZXRMb2dnZXIobG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIoKSk7CisjZW5kaWYKICAgICBz
ZXRJc0FjdGl2ZShtX3ByaXZhdGUtPmFjdGl2ZSgpKTsKICAgICBpZiAoZG9jdW1lbnQoKS0+cGFn
ZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+aXNNZWRpYUNhcHR1cmVNdXRlZCgpKQogICAgICAg
ICBtX3ByaXZhdGUtPnNldENhcHR1cmVUcmFja3NNdXRlZCh0cnVlKTsKQEAgLTEyOSw2ICsxNDYs
OCBAQCBNZWRpYVN0cmVhbTo6fk1lZGlhU3RyZWFtKCkKIAogUmVmUHRyPE1lZGlhU3RyZWFtPiBN
ZWRpYVN0cmVhbTo6Y2xvbmUoKQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisK
ICAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIGNsb25lZFRyYWNrczsKICAgICBjbG9uZWRUcmFj
a3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3RyYWNrU2V0LnNpemUoKSk7CiAKQEAgLTE0MCw2
ICsxNTksOCBAQCBSZWZQdHI8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjbG9uZSgpCiAKIHZv
aWQgTWVkaWFTdHJlYW06OmFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrKQogeworICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgdHJhY2subG9nSWRlbnRpZmllcigpKTsKKwogICAg
IGlmICghaW50ZXJuYWxBZGRUcmFjayh0cmFjaywgU3RyZWFtTW9kaWZpZXI6OkRvbUFQSSkpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMTQ5LDYgKzE3MCw4IEBAIHZvaWQgTWVkaWFTdHJlYW06OmFk
ZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrKQogCiB2b2lkIE1lZGlhU3RyZWFtOjpyZW1v
dmVUcmFjayhNZWRpYVN0cmVhbVRyYWNrJiB0cmFjaykKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIsIHRyYWNrLmxvZ0lkZW50aWZpZXIoKSk7CisKICAgICBpZiAoIWludGVybmFsUmVt
b3ZlVHJhY2sodHJhY2suaWQoKSwgU3RyZWFtTW9kaWZpZXI6OkRvbUFQSSkpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtMjA3LDYgKzIzMCw4IEBAIHZvaWQgTWVkaWFTdHJlYW06OmRpZFJlbW92ZVRy
YWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiAKIHZvaWQgTWVkaWFT
dHJlYW06OmFkZFRyYWNrRnJvbVBsYXRmb3JtKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNr
KQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgdHJhY2stPmxvZ0lkZW50aWZpZXIo
KSk7CisKICAgICBhdXRvKiBwcml2YXRlVHJhY2sgPSAmdHJhY2stPnByaXZhdGVUcmFjaygpOwog
ICAgIGludGVybmFsQWRkVHJhY2soV1RGTW92ZSh0cmFjayksIFN0cmVhbU1vZGlmaWVyOjpQbGF0
Zm9ybSk7CiAgICAgbV9wcml2YXRlLT5hZGRUcmFjayhwcml2YXRlVHJhY2ssIE1lZGlhU3RyZWFt
UHJpdmF0ZTo6Tm90aWZ5Q2xpZW50T3B0aW9uOjpOb3RpZnkpOwpAQCAtMjU1LDEyICsyODAsMTYg
QEAgdm9pZCBNZWRpYVN0cmVhbTo6c2V0SXNBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgaWYgKG1f
aXNBY3RpdmUgPT0gYWN0aXZlKQogICAgICAgICByZXR1cm47CiAKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsIGFjdGl2ZSk7CisKICAgICBtX2lzQWN0aXZlID0gYWN0aXZlOwogICAgIHN0
YXR1c0RpZENoYW5nZSgpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtOjptZWRpYUNhblN0YXJ0KERv
Y3VtZW50JiBkb2N1bWVudCkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCiAg
ICAgQVNTRVJUX1VOVVNFRChkb2N1bWVudCwgJmRvY3VtZW50ID09IHRoaXMtPmRvY3VtZW50KCkp
OwogICAgIEFTU0VSVChtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCk7CiAgICAgaWYgKG1f
aXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0KSB7CkBAIC0yNzUsOSArMzA0LDExIEBAIHZvaWQg
TWVkaWFTdHJlYW06OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiAgICAgaWYgKCFkb2N1bWVudCB8fCAh
ZG9jdW1lbnQtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKKwogICAgIC8vIElmIHdlIGNhbid0IHN0YXJ0IGEgbG9hZCByaWdodCBhd2F5
LCBzdGFydCBpdCBsYXRlci4KICAgICBpZiAoIWRvY3VtZW50LT5wYWdlKCktPmNhblN0YXJ0TWVk
aWEoKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYVN0cmVhbTo6c3RhcnRQcm9kdWNpbmdE
YXRhKCVwKSAtIG5vdCBhbGxvd2VkIHRvIHN0YXJ0IGluIGJhY2tncm91bmQsIHdhaXRpbmciLCB0
aGlzKTsKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAibm90IGFsbG93ZWQgdG8g
c3RhcnQgaW4gYmFja2dyb3VuZCwgd2FpdGluZyIpOwogICAgICAgICBpZiAobV9pc1dhaXRpbmdV
bnRpbE1lZGlhQ2FuU3RhcnQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTMwMSw2ICszMzIs
OSBAQCB2b2lkIE1lZGlhU3RyZWFtOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7CiAgICAgaWYgKCFt
X2lzUHJvZHVjaW5nRGF0YSkKICAgICAgICAgcmV0dXJuOworCisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKKwogICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7CiAKICAgICBtX21l
ZGlhU2Vzc2lvbi0+Y2FuUHJvZHVjZUF1ZGlvQ2hhbmdlZCgpOwpAQCAtMzEwLDYgKzM0NCw4IEBA
IHZvaWQgTWVkaWFTdHJlYW06OnN0b3BQcm9kdWNpbmdEYXRhKCkKIAogdm9pZCBNZWRpYVN0cmVh
bTo6ZW5kQ2FwdHVyZVRyYWNrcygpCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
KwogICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX3RyYWNrU2V0LnZhbHVlcygpKSB7CiAgICAgICAg
IGlmICh0cmFjay0+aXNDYXB0dXJlVHJhY2soKSkKICAgICAgICAgICAgIHRyYWNrLT5zdG9wVHJh
Y2soTWVkaWFTdHJlYW1UcmFjazo6U3RvcE1vZGU6OlBvc3RFdmVudCk7CkBAIC00ODIsNiArNTE4
LDEzIEBAIGJvb2wgTWVkaWFTdHJlYW06Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1faXNBY3RpdmU7CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxv
Z0NoYW5uZWwmIE1lZGlhU3RyZWFtOjpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
TG9nV2ViUlRDOworfQorI2VuZGlmCisgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCmluZGV4IDFjMWFlMTFiODBlLi5jMDU1M2FlODdk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0uaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNSBFcmlj
c3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRl
ICJVUkxSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCkBAIC01NSw2ICs1Niw5IEBAIGNsYXNzIE1lZGlhU3RyZWFtIGZpbmFs
CiAgICAgLCBwdWJsaWMgTWVkaWFTdHJlYW1Qcml2YXRlOjpPYnNlcnZlcgogICAgICwgcHJpdmF0
ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIKICAgICAsIHByaXZhdGUgUGxhdGZvcm1NZWRpYVNlc3Np
b25DbGllbnQKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIHByaXZhdGUgTG9nZ2Vy
SGVscGVyCisjZW5kaWYKICAgICAsIHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtPiB7CiBw
dWJsaWM6CiAgICAgY2xhc3MgT2JzZXJ2ZXIgewpAQCAtMTE5LDYgKzEyMywxMyBAQCBwcm90ZWN0
ZWQ6CiAgICAgTWVkaWFTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlh
U3RyZWFtVHJhY2tWZWN0b3ImKTsKICAgICBNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgUmVmPE1lZGlhU3RyZWFtUHJpdmF0ZT4mJik7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
bG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0No
YW5uZWwoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiTWVkaWFTdHJlYW0iOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKIAog
ICAgIC8vIEV2ZW50VGFyZ2V0CkBAIC0xNzUsNiArMTg2LDExIEBAIHByaXZhdGU6CiAKICAgICBN
ZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbV9zdGF0ZSB7IE1lZGlhUHJvZHVjZXI6Oklz
Tm90UGxheWluZyB9OwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgUmVmPExvZ2dl
cj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCisK
ICAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1Byb2R1Y2luZ0Rh
dGEgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQgeyBm
YWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggOWNhNzcyNTM2MjguLmRiYjU0N2U0YWM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtNTQsMTAgKzU0LDE4IEBAIFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiBNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwKIE1lZGlhU3RyZWFtVHJhY2s6Ok1lZGlhU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIHByaXZhdGVUcmFj
aykKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAsIG1fcHJpdmF0ZShXVEZN
b3ZlKHByaXZhdGVUcmFjaykpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xv
Z2dlcihkb2N1bWVudCgpLT5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVM
b2dJZGVudGlmaWVyKCkpCisjZW5kaWYKICAgICAsIG1fdGFza1F1ZXVlKGNvbnRleHQpCiB7Cisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIAor
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIG1fcHJpdmF0ZS0+c2V0TG9nZ2VyKGxvZ2dl
cigpLCBsb2dJZGVudGlmaWVyKCkpOworI2VuZGlmCiAgICAgbV9wcml2YXRlLT5hZGRPYnNlcnZl
cigqdGhpcyk7CiAKICAgICBpZiAoYXV0byBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpCkBA
IC00ODksNiArNDk3LDEzIEBAIERvY3VtZW50KiBNZWRpYVN0cmVhbVRyYWNrOjpkb2N1bWVudCgp
IGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwogfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitXVEZMb2dDaGFubmVsJiBN
ZWRpYVN0cmVhbVRyYWNrOjpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTG9nV2Vi
UlRDOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IDQ5ODJjYjBiZDkzLi5hYjFlMjQwOGFl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk1lZGlhUHJv
ZHVjZXIuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhVHJhY2tDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NiwxMyArNDcsMTcgQEAgY2xhc3MgRG9jdW1l
bnQ7CiAKIHN0cnVjdCBNZWRpYVRyYWNrQ29uc3RyYWludHM7CiAKLWNsYXNzIE1lZGlhU3RyZWFt
VHJhY2sgOgotICAgIHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+LAotICAgIHB1
YmxpYyBBY3RpdmVET01PYmplY3QsCi0gICAgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURh
dGEsCi0gICAgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhU3RyZWFtVHJhY2s+LAotICAgIHBy
aXZhdGUgTWVkaWFQcm9kdWNlciwKLSAgICBwcml2YXRlIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
OjpPYnNlcnZlciB7CitjbGFzcyBNZWRpYVN0cmVhbVRyYWNrIGZpbmFsCisgICAgOiBwdWJsaWMg
UmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrPgorICAgICwgcHVibGljIEFjdGl2ZURPTU9iamVj
dAorICAgICwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEKKyAgICAsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxNZWRpYVN0cmVhbVRyYWNrPgorICAgICwgcHJpdmF0ZSBNZWRpYVByb2R1
Y2VyCisgICAgLCBwcml2YXRlIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlcgorI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIKKyNlbmRp
ZgorewogcHVibGljOgogICAgIGNsYXNzIE9ic2VydmVyIHsKICAgICBwdWJsaWM6CkBAIC02OSw3
ICs3NCw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIGlkKCkg
Y29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0OwogCi0KICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGNvbnRlbnRIaW50KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250ZW50SGlu
dChjb25zdCBTdHJpbmcmKTsKICAgICAgICAgCkBAIC0xNDUsNiArMTQ5LDExIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0SWRGb3JUZXN0aW5nKFN0cmluZyYmIGlkKSB7IG1fcHJpdmF0ZS0+c2V0
SWRGb3JUZXN0aW5nKFdURk1vdmUoaWQpKTsgfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dl
ci5nZXQoKTsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgTWVk
aWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlPiYmKTsKIApAQCAtMTc2LDggKzE4NSwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQg
dHJhY2tTZXR0aW5nc0NoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbDsKICAg
ICB2b2lkIHRyYWNrRW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5h
bDsKIAotICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOworI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICJNZWRpYVN0cmVhbVRyYWNrIjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5u
ZWwoKSBjb25zdCBmaW5hbDsKKyAgICAKKyAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsK
KyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisjZW5kaWYKIAorICAgIFZlY3RvcjxP
YnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwogCiAgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRzIG1fY29u
c3RyYWludHM7CiAgICAgT3B0aW9uYWw8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiBtX3Byb21p
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCmluZGV4IDUx
YWQzMjFkMTU2Li45MGNhMWJlZWQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5jcHAKQEAgLTIxOSwxOCArMjE5LDEyIEBAIGJvb2wgTGliV2ViUlRDTWVkaWFF
bmRwb2ludDo6YWRkVHJhY2soTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCYgc2VuZGVyLCBNZWRp
YVN0CiAgICAgc3dpdGNoICh0cmFjay5wcml2YXRlVHJhY2soKS50eXBlKCkpIHsKICAgICBjYXNl
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvOiB7CiAgICAgICAgIGF1dG8gYXVkaW9T
b3VyY2UgPSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZSh0cmFjay5wcml2YXRl
VHJhY2soKSk7Ci0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgICAgIGF1ZGlvU291cmNl
LT5zZXRMb2dnZXIobV9sb2dnZXIuY29weVJlZigpKTsKLSNlbmRpZgogICAgICAgICBydGNUcmFj
ayA9IG1fcGVlckNvbm5lY3Rpb25GYWN0b3J5LkNyZWF0ZUF1ZGlvVHJhY2sodHJhY2suaWQoKS51
dGY4KCkuZGF0YSgpLCBhdWRpb1NvdXJjZS5wdHIoKSk7CiAgICAgICAgIHNvdXJjZSA9IFdURk1v
dmUoYXVkaW9Tb3VyY2UpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbzogewogICAgICAgICBhdXRvIHZpZGVvU291cmNlID0g
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpjcmVhdGUodHJhY2sucHJpdmF0ZVRyYWNrKCkp
OwotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgICAgICB2aWRlb1NvdXJjZS0+c2V0TG9n
Z2VyKG1fbG9nZ2VyLmNvcHlSZWYoKSk7Ci0jZW5kaWYKICAgICAgICAgcnRjVHJhY2sgPSBtX3Bl
ZXJDb25uZWN0aW9uRmFjdG9yeS5DcmVhdGVWaWRlb1RyYWNrKHRyYWNrLmlkKCkudXRmOCgpLmRh
dGEoKSwgdmlkZW9Tb3VyY2UucHRyKCkpOwogICAgICAgICBzb3VyY2UgPSBXVEZNb3ZlKHZpZGVv
U291cmNlKTsKICAgICAgICAgYnJlYWs7CkBAIC00NjIsMTkgKzQ1NiwxMSBAQCBSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZT4gTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c291cmNlRnJvbU5ld1Jl
Y2VpdmVyKHdlYnJ0YwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjYXNlIGNyaWNrZXQ6
Ok1FRElBX1RZUEVfQVVESU86IHsKICAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
QXVkaW9UcmFja0ludGVyZmFjZT4gYXVkaW9UcmFjayA9IHN0YXRpY19jYXN0PHdlYnJ0Yzo6QXVk
aW9UcmFja0ludGVyZmFjZSo+KHJ0Y1RyYWNrLmdldCgpKTsKLSAgICAgICAgYXV0byBhdWRpb1Nv
dXJjZSA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKFdURk1vdmUoYXVkaW9U
cmFjayksIGZyb21TdGRTdHJpbmcocnRjVHJhY2stPmlkKCkpKTsKLSNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKLSAgICAgICAgYXVkaW9Tb3VyY2UtPnNldExvZ2dlcihtX2xvZ2dlci5jb3B5UmVm
KCkpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBhdWRpb1NvdXJjZTsKKyAgICAgICAgcmV0dXJu
IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKFdURk1vdmUoYXVkaW9UcmFjayks
IGZyb21TdGRTdHJpbmcocnRjVHJhY2stPmlkKCkpKTsKICAgICB9CiAgICAgY2FzZSBjcmlja2V0
OjpNRURJQV9UWVBFX1ZJREVPOiB7CiAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OlZpZGVvVHJhY2tJbnRlcmZhY2U+IHZpZGVvVHJhY2sgPSBzdGF0aWNfY2FzdDx3ZWJydGM6OlZp
ZGVvVHJhY2tJbnRlcmZhY2UqPihydGNUcmFjay5nZXQoKSk7Ci0gICAgICAgIGF1dG8gdmlkZW9T
b3VyY2UgPSAgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVhdGUoV1RGTW92ZSh2aWRl
b1RyYWNrKSwgZnJvbVN0ZFN0cmluZyhydGNUcmFjay0+aWQoKSkpOwotI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAotICAgICAgICB2aWRlb1NvdXJjZS0+c2V0TG9nZ2VyKG1fbG9nZ2VyLmNvcHlS
ZWYoKSk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIHZpZGVvU291cmNlOworICAgICAgICByZXR1
cm4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVhdGUoV1RGTW92ZSh2aWRlb1RyYWNr
KSwgZnJvbVN0ZFN0cmluZyhydGNUcmFjay0+aWQoKSkpOwogICAgIH0KICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCBk
ODc0ZWMyZjRmOC4uNDA0NzAwNjdlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTEwNiwxNCArMTA2LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJF
TEVBU0VfTE9HX0lGKGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPmlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBNZWRpYSwgIiVwIC0gQXVkaW9Db250ZXh0OjoiIGZt
dCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICAgICAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
LXN0YXRpYyBjb25zdCB2b2lkKiBuZXh0TG9nSWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGljIHVp
bnQ2NF90IGxvZ0lkZW50aWZpZXIgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOwot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigrK2xvZ0lkZW50aWZpZXIp
OwotfQotI2VuZGlmCi0KIGJvb2wgQXVkaW9Db250ZXh0Ojppc1NhbXBsZVJhdGVSYW5nZUdvb2Qo
ZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSBpZiB0
aGUgbWluaW11bSBzYW1wbGUtcmF0ZSBjb3VsZCBiZSBsZXNzIHRoYW4gNDQuMUtIeiwKQEAgLTE0
MSw3ICsxMzMsNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1l
bnQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKLSAgICAsIG1fbG9nSWRl
bnRpZmllcihuZXh0TG9nSWRlbnRpZmllcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1
ZUxvZ0lkZW50aWZpZXIoKSkKICNlbmRpZgogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX2V2ZW50UXVldWUoc3RkOjptYWtl
X3VuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQpAQCAtMTU5LDcgKzE1MSw3IEBAIEF1
ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgdW5zaWduZWQgbnVt
YmVyT2ZDaGFubmVscywgc2l6ZV90CiAgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIo
KSkKLSAgICAsIG1fbG9nSWRlbnRpZmllcihuZXh0TG9nSWRlbnRpZmllcigpKQorICAgICwgbV9s
b2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKICNlbmRpZgogICAgICwgbV9pc09m
ZmxpbmVDb250ZXh0KHRydWUpCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6Y3JlYXRlKCp0aGlzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCmluZGV4IDY0MWY3YzcxMGRjLi4zNWU4NDUwNDdiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00MTYsMTQgKzQxNiw2IEBAIHN0YXRpYyBib29sIG1l
ZGlhU2Vzc2lvbk1heUJlQ29uZnVzZWRXaXRoTWFpbkNvbnRlbnQoY29uc3QgTWVkaWFFbGVtZW50
U2Vzc2lvbkluCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLXN0YXRpYyB1aW50NjRfdCBuZXh0TG9nSWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGljIHVp
bnQ2NF90IGxvZ0lkZW50aWZpZXIgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOwot
ICAgIHJldHVybiArK2xvZ0lkZW50aWZpZXI7Ci19Ci0jZW5kaWYKLQogSFRNTE1lZGlhRWxlbWVu
dDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogICAgIDogSFRNTEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCiAgICAgLCBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCkBAIC00NzQs
NyArNDY2LDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICNlbmRpZgogI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIoJmRvY3VtZW50LmxvZ2dlcigpKQotICAgICwg
bV9sb2dJZGVudGlmaWVyKG5leHRMb2dJZGVudGlmaWVyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZp
ZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQogI2VuZGlmCiB7CiAgICAgYWxsTWVkaWFFbGVtZW50
cygpLmFkZCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXgg
YTY3OGQ5NGVjODkuLjg1Y2QwNmQ4ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaApAQCAtNTYxLDcgKzU2MSw3IEBAIHB1YmxpYzoKIAogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
Km1fbG9nZ2VyLmdldCgpOyB9Ci0gICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fbG9nSWRlbnRp
Zmllcik7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgp
IGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKQEAgLTExNzYsNyArMTE3Niw3IEBAIHByaXZhdGU6CiAK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dlcjsK
LSAgICB1aW50NjRfdCBtX2xvZ0lkZW50aWZpZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVu
dGlmaWVyOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b24uY3BwCmluZGV4IDNlNTYxZmViZTRkLi5iYTM2Mzc5MTg3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcApAQCAt
MzEsMTkgKzMxLDEyIEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhUGxh
eWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgiCi0jaW5jbHVk
ZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIGNvbnN0IFNlY29uZHMgY2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyVGhy
b3R0bGVEZWxheSB7IDEwMF9tcyB9OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi1zdGF0
aWMgdWludDY0X3QgbmV4dExvZ0lkZW50aWZpZXIoKQotewotICAgIHN0YXRpYyB1aW50NjRfdCBs
b2dJZGVudGlmaWVyID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKLSAgICByZXR1
cm4gKytsb2dJZGVudGlmaWVyOwotfQotCiBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJp
bmcoUGxhdGZvcm1NZWRpYVNlc3Npb246OlN0YXRlIHN0YXRlKQogewogICAgIHN0YXRpYyBjb25z
dCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHZhbHVlc1tdID0gewpAQCAtMTI2LDcgKzExOSw3IEBA
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlh
U2Vzc2lvbkNsaWVudCYgY2xpZW50KQogICAgICwgbV9ub3RpZnlpbmdDbGllbnQoZmFsc2UpCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihjbGllbnQuaG9zdGluZ0Rv
Y3VtZW50KCktPmxvZ2dlcigpKQotICAgICwgbV9sb2dJZGVudGlmaWVyKG5leHRMb2dJZGVudGlm
aWVyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQogI2Vu
ZGlmCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50Lm1lZGlhVHlwZSgpID49IE5vbmUgJiYgbV9jbGll
bnQubWVkaWFUeXBlKCkgPD0gTWVkaWFTdHJlYW1DYXB0dXJpbmdBdWRpbyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAppbmRl
eCBiNWQ3OTJmMDFhYy4uNDY5ODI0ZDI5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaApAQCAtMTg0LDcgKzE4NCw3IEBA
IHB1YmxpYzoKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYg
bG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KLSAgICBjb25z
dCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB2b2lkKj4obV9sb2dJZGVudGlmaWVyKTsgfQorICAgIGNvbnN0IHZvaWQq
IGxvZ0lkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7
IH0KICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUGxhdGZvcm1NZWRpYVNlc3Npb24iOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5l
bCgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCkBAIC0yMDQsNyArMjA0LDcgQEAgcHJpdmF0ZToKIAog
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2Vy
OwotICAgIHVpbnQ2NF90IG1fbG9nSWRlbnRpZmllcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lk
ZW50aWZpZXI7CiAjZW5kaWYKIAogICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bnRTaXplLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuY3Bw
CmluZGV4IDM3NWExYTE5ZDlmLi45ZDI2NmRlM2IwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJJ
bnRTaXplLmgiCiAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlIDx3dGYvSlNPTlZh
bHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNTAsNCArNTEsMTkgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICByZXR1cm4gdHMgPDwgIndpZHRoPSIg
PDwgc2l6ZS53aWR0aCgpIDw8ICIgaGVpZ2h0PSIgPDwgc2l6ZS5oZWlnaHQoKTsKIH0KIAorUmVm
PEpTT046Ok9iamVjdD4gSW50U2l6ZTo6dG9KU09OT2JqZWN0KCkgY29uc3QKK3sKKyAgICBhdXRv
IG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisKKyAgICBvYmplY3QtPnNldERvdWJs
ZSgid2lkdGgiX3MsIG1fd2lkdGgpOworICAgIG9iamVjdC0+c2V0RG91YmxlKCJoZWlnaHQiX3Ms
IG1faGVpZ2h0KTsKKworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cmluZyBJbnRTaXplOjp0
b0pTT05TdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiB0b0pTT05PYmplY3QoKS0+dG9KU09O
U3RyaW5nKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ludFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNp
emUuaAppbmRleCAzMDUyYTM3OWY3Mi4uZWU3YzZjMGFkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZCBf
X09CSkNfXwpAQCAtMTczLDYgKzE3NCw5IEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBEMkQxX1NJ
WkVfRigpIGNvbnN0OwogI2VuZGlmCiAKKyAgICBTdHJpbmcgdG9KU09OU3RyaW5nKCkgY29uc3Q7
CisgICAgUmVmPEpTT046Ok9iamVjdD4gdG9KU09OT2JqZWN0KCkgY29uc3Q7CisKIHByaXZhdGU6
CiAgICAgaW50IG1fd2lkdGgsIG1faGVpZ2h0OwogfTsKQEAgLTIyMyw0ICsyMjcsMTQgQEAgV0VC
Q09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYs
IGNvbnN0IEludFNpemUmKTsKIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8PiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8V2ViQ29yZTo6SW50U2l6ZT47CiB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRz
PFdlYkNvcmU6OkludFNpemU+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBzdHJ1Y3QgTG9n
QXJndW1lbnQ7Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OkludFNp
emU+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHNpemUpCisgICAgeworICAgICAgICByZXR1cm4gc2l6ZS50b0pTT05TdHJpbmcoKTsKKyAgICB9
Cit9OwogfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAppbmRleCBiZDhlYjg4YmYzZi4uZTM2MTc3YTIw
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxNSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KS4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0xMzYsNiArMTM2LDgg
QEAgdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OmFkZFRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJiB0cmFjaywgTm90aWYKICAgICBpZiAobV90cmFja1NldC5jb250YWlucyh0
cmFjay0+aWQoKSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgdHJhY2stPmxvZ0lkZW50aWZpZXIoKSk7CisKICAgICB0cmFjay0+YWRkT2JzZXJ2ZXIo
KnRoaXMpOwogICAgIG1fdHJhY2tTZXQuYWRkKHRyYWNrLT5pZCgpLCB0cmFjayk7CiAKQEAgLTE1
NCw2ICsxNTYsNyBAQCB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6cmVtb3ZlVHJhY2soTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrLCBOb3RpZnlDbGllbgogICAgIGlmICghbV90cmFja1Nl
dC5yZW1vdmUodHJhY2suaWQoKSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUiwgdHJhY2subG9nSWRlbnRpZmllcigpKTsKICAgICB0cmFjay5yZW1vdmVP
YnNlcnZlcigqdGhpcyk7CiAKICAgICBpZiAobm90aWZ5Q2xpZW50T3B0aW9uID09IE5vdGlmeUNs
aWVudE9wdGlvbjo6Tm90aWZ5KSB7CkBAIC0xNjgsMTIgKzE3MSwxNCBAQCB2b2lkIE1lZGlhU3Ry
ZWFtUHJpdmF0ZTo6cmVtb3ZlVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrLCBO
b3RpZnlDbGllbgogCiB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6c3RhcnRQcm9kdWNpbmdEYXRh
KCkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIGZvciAoYXV0byYgdHJh
Y2sgOiBtX3RyYWNrU2V0LnZhbHVlcygpKQogICAgICAgICB0cmFjay0+c3RhcnRQcm9kdWNpbmdE
YXRhKCk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjpzdG9wUHJvZHVjaW5nRGF0YSgp
CiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBmb3IgKGF1dG8mIHRyYWNr
IDogbV90cmFja1NldC52YWx1ZXMoKSkKICAgICAgICAgdHJhY2stPnN0b3BQcm9kdWNpbmdEYXRh
KCk7CiB9CkBAIC0xODksNiArMTk0LDcgQEAgYm9vbCBNZWRpYVN0cmVhbVByaXZhdGU6OmlzUHJv
ZHVjaW5nRGF0YSgpIGNvbnN0CiAKIHZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjpzZXRDYXB0dXJl
VHJhY2tzTXV0ZWQoYm9vbCBtdXRlZCkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
IG11dGVkKTsKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV90cmFja1NldC52YWx1ZXMoKSkgewog
ICAgICAgICBpZiAodHJhY2stPmlzQ2FwdHVyZVRyYWNrKCkpCiAgICAgICAgICAgICB0cmFjay0+
c2V0TXV0ZWQobXV0ZWQpOwpAQCAtMjcxLDggKzI3NywxMyBAQCB2b2lkIE1lZGlhU3RyZWFtUHJp
dmF0ZTo6Y2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFT
dHJlYW1Qcml2YXRlOjp0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYp
Cit2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6dHJhY2tNdXRlZENoYW5nZWQoTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUmIHRyYWNrKQogeworI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgVU5V
U0VEX1BBUkFNKHRyYWNrKTsKKyNlbmRpZgorCisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCB0cmFjay5sb2dJZGVudGlmaWVyKCksICIgIiwgdHJhY2subXV0ZWQoKSk7CiAgICAgc2NoZWR1
bGVEZWZlcnJlZFRhc2soW3RoaXNdIHsKICAgICAgICAgY2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgp
OwogICAgIH0pOwpAQCAtMjgzLDggKzI5NCwxMyBAQCB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6
dHJhY2tTZXR0aW5nc0NoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQogICAgIGNoYXJh
Y3RlcmlzdGljc0NoYW5nZWQoKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnRyYWNr
RW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQordm9pZCBNZWRpYVN0cmVh
bVByaXZhdGU6OnRyYWNrRW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRy
YWNrKQogeworI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHRyYWNr
KTsKKyNlbmRpZgorCisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCB0cmFjay5sb2dJZGVu
dGlmaWVyKCksICIgIiwgdHJhY2suZW5hYmxlZCgpKTsKICAgICB1cGRhdGVBY3RpdmVWaWRlb1Ry
YWNrKCk7CiAKICAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpc10gewpAQCAtMjkyLDE1ICsz
MDgsMjUgQEAgdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnRyYWNrRW5hYmxlZENoYW5nZWQoTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUmKQogICAgIH0pOwogfQogCi12b2lkIE1lZGlhU3RyZWFtUHJp
dmF0ZTo6dHJhY2tTdGFydGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikKK3ZvaWQgTWVkaWFT
dHJlYW1Qcml2YXRlOjp0cmFja1N0YXJ0ZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNr
KQogeworI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHRyYWNrKTsK
KyNlbmRpZgorCisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCB0cmFjay5sb2dJZGVudGlm
aWVyKCkpOwogICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CiAgICAgICAgIGNoYXJh
Y3RlcmlzdGljc0NoYW5nZWQoKTsKICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVByaXZh
dGU6OnRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQordm9pZCBNZWRpYVN0cmVh
bVByaXZhdGU6OnRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrKQogewor
I2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHRyYWNrKTsKKyNlbmRp
ZgorCisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCB0cmFjay5sb2dJZGVudGlmaWVyKCkp
OwogICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CiAgICAgICAgIHVwZGF0ZUFjdGl2
ZVN0YXRlKE5vdGlmeUNsaWVudE9wdGlvbjo6Tm90aWZ5KTsKICAgICAgICAgY2hhcmFjdGVyaXN0
aWNzQ2hhbmdlZCgpOwpAQCAtMzI2LDYgKzM1MiwyMCBAQCB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0
ZTo6bW9uaXRvck9yaWVudGF0aW9uKE9yaWVudGF0aW9uTm90aWZpZXImIG5vdGlmaWVyKQogICAg
IH0KIH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAordm9pZCBNZWRpYVN0cmVhbVByaXZh
dGU6OnNldExvZ2dlcihjb25zdCBMb2dnZXImIG5ld0xvZ2dlciwgY29uc3Qgdm9pZCogbmV3TG9n
SWRlbnRpZmllcikKK3sKKyAgICBtX2xvZ2dlciA9ICZuZXdMb2dnZXI7CisgICAgbV9sb2dJZGVu
dGlmaWVyID0gbmV3TG9nSWRlbnRpZmllcjsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIp
OworfQorCitXVEZMb2dDaGFubmVsJiBNZWRpYVN0cmVhbVByaXZhdGU6OmxvZ0NoYW5uZWwoKSBj
b25zdAoreworICAgIHJldHVybiBMb2dXZWJSVEM7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRl
LmgKaW5kZXggZTE0NmM2ODBhOTUuLmUyZGEzNTNhYWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaApAQCAt
Miw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNSBFcmljc3NvbiBBQi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZS5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
QEAgLTUzLDcgKzU0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhU3RyZWFt
OwogY2xhc3MgT3JpZW50YXRpb25Ob3RpZmllcjsKIAotY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRl
IDogcHVibGljIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciwgcHVibGljIFJlZkNv
dW50ZWQ8TWVkaWFTdHJlYW1Qcml2YXRlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhU3Ry
ZWFtUHJpdmF0ZT4geworY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlIGZpbmFsCisgICAgOiBwdWJs
aWMgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyCisgICAgLCBwdWJsaWMgUmVmQ291
bnRlZDxNZWRpYVN0cmVhbVByaXZhdGU+CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVk
aWFTdHJlYW1Qcml2YXRlPgorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgcHJpdmF0
ZSBMb2dnZXJIZWxwZXIKKyNlbmRpZgorewogcHVibGljOgogICAgIGNsYXNzIE9ic2VydmVyIHsK
ICAgICBwdWJsaWM6CkBAIC0xMDMsNiArMTExLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbW9u
aXRvck9yaWVudGF0aW9uKE9yaWVudGF0aW9uTm90aWZpZXImKTsKIAorI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0IHZvaWQq
KTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE1lZGlhU3RyZWFtUHJpdmF0ZShjb25zdCBNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZVZlY3RvciYsIFN0cmluZyYmKTsKIApAQCAtMTE5LDYgKzEzMSwx
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soRnVuY3Rpb248dm9p
ZCAoKT4mJik7CiAgICAgdm9pZCBmb3JFYWNoT2JzZXJ2ZXIoY29uc3QgV1RGOjpGdW5jdGlvbjx2
b2lkKE9ic2VydmVyJik+JikgY29uc3Q7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAg
ICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgQVNTRVJUKG1fbG9nZ2VyKTsg
cmV0dXJuICptX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBjaGFy
KiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTWVkaWFTdHJlYW1Qcml2YXRl
IjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKworICAg
IFJlZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRl
bnRpZmllcjsKKyNlbmRpZgorCiAgICAgSGFzaFNldDxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwog
ICAgIFN0cmluZyBtX2lkOwogICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiBtX2FjdGl2ZVZp
ZGVvVHJhY2sgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAKaW5kZXgg
NDkzOGZmOTY0NzIuLjQ5NDNkYTM3MGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3Bw
CkBAIC0xLDYgKzEsNyBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICogIENvcHlyaWdodCAoQykgMjAx
NSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2OSwxMiArMjcwLDI5IEBAIHZvaWQgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6OnVwZGF0ZVJlYWR5U3RhdGUoKQogICAgIGlmIChzdGF0ZSA9
PSBtX3JlYWR5U3RhdGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUik7CisKICAgICBtX3JlYWR5U3RhdGUgPSBzdGF0ZTsKICAgICBmb3JFYWNoT2JzZXJ2
ZXIoW3RoaXNdKGF1dG8mIG9ic2VydmVyKSB7CiAgICAgICAgIG9ic2VydmVyLnJlYWR5U3RhdGVD
aGFuZ2VkKCp0aGlzKTsKICAgICB9KTsKIH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAor
dm9pZCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYgbmV3
TG9nZ2VyLCBjb25zdCB2b2lkKiBuZXdMb2dJZGVudGlmaWVyKQoreworICAgIG1fbG9nZ2VyID0g
Jm5ld0xvZ2dlcjsKKyAgICBtX2xvZ0lkZW50aWZpZXIgPSBuZXdMb2dJZGVudGlmaWVyOworICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisgICAgbV9zb3VyY2UtPnNldExvZ2dlcihuZXdM
b2dnZXIsIG5ld0xvZ0lkZW50aWZpZXIpOworfQorCitXVEZMb2dDaGFubmVsJiBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZTo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ1dlYlJU
QzsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKaW5kZXggOWM3ZjAzZmM2
NzcuLjU5NjdkNDUyY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKQEAgLTEsNiArMSw3
IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKiAgQ29weXJpZ2h0IChDKSAyMDE1IEVyaWNzc29uIEFC
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqIENvcHlyaWdodCAoQykgMjAx
NSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjksNiArMzAsNyBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CiAKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCisjaW5jbHVkZSA8d3RmL0xvZ2dl
ckhlbHBlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM4LDcgKzQwLDEzIEBAIGNs
YXNzIE1lZGlhU2FtcGxlOwogY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczsK
IGNsYXNzIFdlYkF1ZGlvU291cmNlUHJvdmlkZXI7CiAKLWNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+LCBwdWJs
aWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIgeworY2xhc3MgTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUgZmluYWwKKyAgICA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlPgorICAgICwgcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyCisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgorI2VuZGlm
Cit7CiBwdWJsaWM6CiAgICAgY2xhc3MgT2JzZXJ2ZXIgewogICAgIHB1YmxpYzoKQEAgLTEwOCw2
ICsxMTYsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJZEZvclRlc3RpbmcoU3RyaW5nJiYg
aWQpIHsgbV9pZCA9IFdURk1vdmUoaWQpOyB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
KyAgICB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lkKik7CisgICAgY29u
c3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IEFTU0VSVChtX2xvZ2dlcik7IHJldHVy
biAqbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisjZW5kaWYKKyAgICAKIHByaXZh
dGU6CiAgICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+
JiYsIFN0cmluZyYmIGlkKTsKIApAQCAtMTI0LDYgKzEzOCwxNCBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBmb3JFYWNoT2JzZXJ2ZXIoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKE9ic2VydmVyJik+
JikgY29uc3Q7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBs
b2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUiOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOworCisg
ICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJ
ZGVudGlmaWVyOworI2VuZGlmCisKICAgICBtdXRhYmxlIFJlY3Vyc2l2ZUxvY2sgbV9vYnNlcnZl
cnNMb2NrOwogICAgIEhhc2hTZXQ8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKICAgICBSZWY8UmVh
bHRpbWVNZWRpYVNvdXJjZT4gbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlLmNwcAppbmRleCBmZTBkZGQ3OTcyMC4uYTRiMTI3YWE5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSwxNiArMzUsMTIgQEAKIAogI2luY2x1ZGUgIkxpYldl
YlJUQ0F1ZGlvRm9ybWF0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPHd0Zi9D
cnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
KHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9U
cmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgInJlbW90ZSBhdWRpbyJfcywgV1RGTW92
ZShhdWRpb1RyYWNrSWQpKQogICAgICwgbV9hdWRpb1RyYWNrKFdURk1vdmUoYXVkaW9UcmFjaykp
Ci0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLCBtX2xvZ0lkZW50aWZpZXIocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB2b2lkKj4oY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSkp
Ci0jZW5kaWYKIHsKICAgICBub3RpZnlNdXRlZENoYW5nZSghbV9hdWRpb1RyYWNrKTsKIH0KQEAg
LTg5LDIwICs4NSw2IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXR0aW5ncygpCiAgICAgcmV0dXJuIG1fY3VycmVudFNl
dHRpbmdzOwogfQogCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi1XVEZMb2dDaGFubmVsJiBS
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmxvZ0NoYW5uZWwoKSBjb25zdAotewotICAgIHJl
dHVybiBMb2dXZWJSVEM7Ci19Ci0KLWNvbnN0IExvZ2dlciYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlOjpsb2dnZXIoKSBjb25zdAotewotICAgIGlmICghbV9sb2dnZXIpCi0gICAgICAgIG1f
bG9nZ2VyID0gTG9nZ2VyOjpjcmVhdGUodGhpcyk7Ci0gICAgcmV0dXJuICptX2xvZ2dlcjsKLX0K
LSNlbmRpZgotCiB9CiAKICNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2UuaAppbmRleCAxNmUyMTI4YTdlYS4uYWVjOTY1YjA5MWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDYgQEAgQUxMT1dfVU5VU0VEX1BB
UkFNRVRFUlNfQkVHSU4KIAogQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNfRU5ECiAKLSNpbmNsdWRl
IDx3dGYvTG9nZ2VySGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00OSwyOSArNDgsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlCiAgICAgOiBwdWJsaWMgUmVhbHRpbWVN
ZWRpYVNvdXJjZQogICAgICwgcHJpdmF0ZSB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNl
Ci0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgot
I2VuZGlmCiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2U+IGNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJm
YWNlPiYmLCBTdHJpbmcmJik7CiAKICAgICB2b2lkIHNldFNvdXJjZVRyYWNrKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYpOwogCi0jaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECi0gICAgdm9pZCBzZXRMb2dnZXIoUmVmPGNvbnN0IExvZ2dlcj4mJiBsb2dn
ZXIpIHsgbV9sb2dnZXIgPSBXVEZNb3ZlKGxvZ2dlcik7IH0KLSNlbmRpZgotCiBwcm90ZWN0ZWQ6
CiAgICAgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKICAgICB+UmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlKCk7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAvLyBM
b2dnZXJIZWxwZXIgQVBJCi0gICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbDsK
LSAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9s
b2dJZGVudGlmaWVyOyB9CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gIlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSI7IH0KLSAgICBXVEZMb2dD
aGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDE0NDZiM2ZjMTc0Li40NTQw
M2RjNmNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDE3ICsz
MywxMSBAQAogCiAjaWYgVVNFKExJQldFQlJUQykKIAotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNp
bmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OlJlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJm
YWNlPiYmIHZpZGVvVHJhY2ssIFN0cmluZyYmIHZpZGVvVHJhY2tJZCkKICAgICA6IFJlYWx0aW1l
TWVkaWFTb3VyY2UoVHlwZTo6VmlkZW8sICJyZW1vdGUgdmlkZW8iX3MsIFdURk1vdmUodmlkZW9U
cmFja0lkKSkKICAgICAsIG1fdmlkZW9UcmFjayhXVEZNb3ZlKHZpZGVvVHJhY2spKQotI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAotICAgICwgbV9sb2dJZGVudGlmaWVyKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgdm9pZCo+KGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpKQotI2VuZGlm
CiB7CiAgICAgbm90aWZ5TXV0ZWRDaGFuZ2UoIW1fdmlkZW9UcmFjayk7CiAKQEAgLTEwOCwyMCAr
MTAyLDYgQEAgdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnNldHRpbmdzRGlkQ2hh
bmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmMKICAgICAgICAgbV9jdXJyZW50U2V0dGlu
Z3MgPSBXVEY6Om51bGxvcHQ7CiB9CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLVdURkxv
Z0NoYW5uZWwmIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6bG9nQ2hhbm5lbCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIExvZ1dlYlJUQzsKLX0KLQotY29uc3QgTG9nZ2VyJiBSZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2U6OmxvZ2dlcigpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2xvZ2dlcikK
LSAgICAgICAgbV9sb2dnZXIgPSBMb2dnZXI6OmNyZWF0ZSh0aGlzKTsKLSAgICByZXR1cm4gKm1f
bG9nZ2VyOwotfQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oCmluZGV4IGQw
YzQ5NjAyMzgwLi4zNWE3ZDY2NmUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDEsNyArNDEsNiBAQCBBTExPV19VTlVTRURfUEFSQU1FVEVSU19CRUdJTgogCiBBTExPV19V
TlVTRURfUEFSQU1FVEVSU19FTkQKIAotI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUxLDkg
KzUwLDYgQEAgY2xhc3MgQ2FwdHVyZURldmljZTsKIGNsYXNzIFJlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZQogICAgIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UKICAgICAsIHByaXZhdGUg
cnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPgotI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAotICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIKLSNlbmRpZgogewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlPiBjcmVhdGUo
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5n
JiYpOwpAQCAtNjQsMTkgKzYwLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0U291cmNlVHJh
Y2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4mJik7CiAK
LSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICB2b2lkIHNldExvZ2dlcihSZWY8Y29uc3Qg
TG9nZ2VyPiYmIGxvZ2dlcikgeyBtX2xvZ2dlciA9IFdURk1vdmUobG9nZ2VyKTsgfQotI2VuZGlm
Ci0KIHByb3RlY3RlZDoKICAgICBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UocnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYpOwogCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLy8gTG9nZ2VySGVscGVyIEFQSQotICAgIGNv
bnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWw7Ci0gICAgY29uc3Qgdm9pZCogbG9nSWRl
bnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQogICAgIGNv
bnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2UiOyB9Ci0gICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNv
bnN0IGZpbmFsOwogI2VuZGlmCiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcApp
bmRleCBjODNjYTc0Y2JlZi4uYTlkMjk0NjI3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqIENvcHlyaWdodCAoQykgMjAx
NSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC01Niw4ICs1Niw4IEBA
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlJlYWx0aW1lTWVkaWFTb3VyY2UoVHlwZSB0eXBlLCBTdHJp
bmcmJiBuYW1lLCBTdHJpbmcmJiBkZXZpCiB7CiAgICAgaWYgKG1fcGVyc2lzdGVudElELmlzRW1w
dHkoKSkKICAgICAgICAgbV9wZXJzaXN0ZW50SUQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCk7Ci0gICAgZWxzZQotICAgICAgICBtX2hhc2hlZElEID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6c2luZ2xldG9uKCkuaGFzaFN0cmluZ1dpdGhTYWx0KG1fcGVyc2lzdGVudElELCBtX2lk
SGFzaFNhbHQpOworCisgICAgbV9oYXNoZWRJRCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OnNpbmdsZXRvbigpLmhhc2hTdHJpbmdXaXRoU2FsdChtX3BlcnNpc3RlbnRJRCwgbV9pZEhhc2hT
YWx0KTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphZGRPYnNlcnZlcihSZWFsdGlt
ZU1lZGlhU291cmNlOjpPYnNlcnZlciYgb2JzZXJ2ZXIpCkBAIC04MCw2ICs4MCw4IEBAIHZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0SW50ZXJydXB0ZWQoYm9vbCBpbnRlcnJ1cHRlZCwgYm9v
bCBwYWdlTXV0ZWQpCiAgICAgaWYgKGludGVycnVwdGVkID09IG1faW50ZXJydXB0ZWQpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0dfSUYobV9sb2dnZXIsIExPR0lERU5USUZJRVIs
IGludGVycnVwdGVkLCAiLCBwYWdlIG11dGVkIDogIiwgcGFnZU11dGVkKTsKKwogICAgIG1faW50
ZXJydXB0ZWQgPSBpbnRlcnJ1cHRlZDsKICAgICBpZiAoIWludGVycnVwdGVkICYmIHBhZ2VNdXRl
ZCkKICAgICAgICAgcmV0dXJuOwpAQCAtODksNiArOTEsOCBAQCB2b2lkIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OnNldEludGVycnVwdGVkKGJvb2wgaW50ZXJydXB0ZWQsIGJvb2wgcGFnZU11dGVkKQog
CiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldE11dGVkKGJvb2wgbXV0ZWQpCiB7CisgICAg
QUxXQVlTX0xPR19JRihtX2xvZ2dlciwgTE9HSURFTlRJRklFUik7CisKICAgICBpZiAobXV0ZWQp
CiAgICAgICAgIHN0b3AoKTsKICAgICBlbHNlIHsKQEAgLTEwNiw2ICsxMTAsNyBAQCB2b2lkIFJl
YWx0aW1lTWVkaWFTb3VyY2U6Om5vdGlmeU11dGVkQ2hhbmdlKGJvb2wgbXV0ZWQpCiAgICAgaWYg
KG1fbXV0ZWQgPT0gbXV0ZWQpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0dfSUYo
bV9sb2dnZXIsIExPR0lERU5USUZJRVIpOwogICAgIG1fbXV0ZWQgPSBtdXRlZDsKIAogICAgIG5v
dGlmeU11dGVkT2JzZXJ2ZXJzKCk7CkBAIC0xNDksNiArMTU0LDggQEAgdm9pZCBSZWFsdGltZU1l
ZGlhU291cmNlOjpub3RpZnlTZXR0aW5nc0RpZENoYW5nZU9ic2VydmVycyhPcHRpb25TZXQ8UmVh
bHRpbWVNZWQKICAgICAgICAgcmV0dXJuOwogICAgIG1fcGVuZGluZ1NldHRpbmdzRGlkQ2hhbmdl
Tm90aWZpY2F0aW9uID0gdHJ1ZTsKIAorICAgIEFMV0FZU19MT0dfSUYobV9sb2dnZXIsIExPR0lE
RU5USUZJRVIsIGZsYWdzKTsKKwogICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CiAg
ICAgICAgIG1fcGVuZGluZ1NldHRpbmdzRGlkQ2hhbmdlTm90aWZpY2F0aW9uID0gZmFsc2U7CiAg
ICAgICAgIGZvckVhY2hPYnNlcnZlcihbXShhdXRvJiBvYnNlcnZlcikgewpAQCAtMTU5LDYgKzE2
NiwyMCBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6Om5vdGlmeVNldHRpbmdzRGlkQ2hhbmdl
T2JzZXJ2ZXJzKE9wdGlvblNldDxSZWFsdGltZU1lZAogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkKIHsKKyNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICArK21fZnJhbWVDb3VudDsKKworICAgIGF1dG8g
dGltZXN0YW1wID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgYXV0byBkZWx0YSA9IHRpbWVz
dGFtcCAtIG1fbGFzdEZyYW1lTG9nVGltZTsKKyAgICBpZiAoIW1fbGFzdEZyYW1lTG9nVGltZSB8
fCBkZWx0YSA+PSAxX3MpIHsKKyAgICAgICAgaWYgKG1fbGFzdEZyYW1lTG9nVGltZSkgeworICAg
ICAgICAgICAgSU5GT19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsIG1fZnJhbWVD
b3VudCwgIiBmcmFtZXMgc2VudCBpbiAiLCBkZWx0YS52YWx1ZSgpLCAiIHNlY29uZHMiKTsKKyAg
ICAgICAgICAgIG1fZnJhbWVDb3VudCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgbV9sYXN0RnJh
bWVMb2dUaW1lID0gdGltZXN0YW1wOworICAgIH0KKyNlbmRpZgorCiAgICAgZm9yRWFjaE9ic2Vy
dmVyKFsmXShhdXRvJiBvYnNlcnZlcikgewogICAgICAgICBvYnNlcnZlci52aWRlb1NhbXBsZUF2
YWlsYWJsZShtZWRpYVNhbXBsZSk7CiAgICAgfSk7CkBAIC0xNzYsNiArMTk3LDggQEAgdm9pZCBS
ZWFsdGltZU1lZGlhU291cmNlOjpzdGFydCgpCiAgICAgaWYgKG1faXNQcm9kdWNpbmdEYXRhIHx8
IG1faXNFbmRlZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xPR19JRihtX2xvZ2dl
ciwgTE9HSURFTlRJRklFUik7CisKICAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IHRydWU7CiAgICAg
c3RhcnRQcm9kdWNpbmdEYXRhKCk7CiAKQEAgLTE5Miw2ICsyMTUsOCBAQCB2b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OnN0b3AoKQogICAgIGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCiAgICAgICAg
IHJldHVybjsKIAorICAgIEFMV0FZU19MT0dfSUYobV9sb2dnZXIsIExPR0lERU5USUZJRVIpOwor
CiAgICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSBmYWxzZTsKICAgICBzdG9wUHJvZHVjaW5nRGF0YSgp
OwogfQpAQCAtMjIzLDcgKzI0OCw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVz
dFRvRW5kKE9ic2VydmVyJiBjYWxsaW5nT2JzZXJ2ZXIpCiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6Y2FwdHVyZUZhaWxlZCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJl
YW0sICJSZWFsdGltZU1lZGlhU291cmNlOjpjYXB0dXJlRmFpbGVkIik7CisgICAgRVJST1JfTE9H
X0lGKG1fbG9nZ2VyLCBMT0dJREVOVElGSUVSKTsKIAogICAgIG1faXNQcm9kdWNpbmdEYXRhID0g
ZmFsc2U7CiAgICAgbV9jYXB0dXJlRGlkRmFpbGVkID0gdHJ1ZTsKQEAgLTQ2Nyw2ICs0OTIsOCBA
QCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8
aW50PiB3aWR0aCwgT3B0aW9uYWw8aW50PgogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFw
cGx5Q29uc3RyYWludChjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7CisgICAg
QUxXQVlTX0xPR19JRihtX2xvZ2dlciwgTE9HSURFTlRJRklFUiwgY29uc3RyYWludC5uYW1lKCkp
OworCiAgICAgYXV0byYgY2FwYWJpbGl0aWVzID0gdGhpcy0+Y2FwYWJpbGl0aWVzKCk7CiAgICAg
c3dpdGNoIChjb25zdHJhaW50LmNvbnN0cmFpbnRUeXBlKCkpIHsKICAgICBjYXNlIE1lZGlhQ29u
c3RyYWludFR5cGU6OldpZHRoOgpAQCAtNzY5LDYgKzc5Niw4IEBAIGJvb2wgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6c3VwcG9ydHNDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25z
dHJhaW50CiB7CiAgICAgQVNTRVJUKGNvbnN0cmFpbnRzLmlzVmFsaWQpOwogCisgICAgQUxXQVlT
X0xPR19JRihtX2xvZ2dlciwgTE9HSURFTlRJRklFUik7CisKICAgICBGbGF0dGVuZWRDb25zdHJh
aW50IGNhbmRpZGF0ZXM7CiAgICAgaWYgKCFzZWxlY3RTZXR0aW5ncyhjb25zdHJhaW50cywgY2Fu
ZGlkYXRlcywgaW52YWxpZENvbnN0cmFpbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03
OTksNiArODI4LDggQEAgYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c0NvbnN0cmFp
bnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnQKICAgICAgICAgfQogICAgIH0K
IAorICAgIEFMV0FZU19MT0dfSUYobV9sb2dnZXIsIExPR0lERU5USUZJRVIsICJmaXRuZXNzIGRp
c3RhbmNlIDogIiwgbV9maXRuZXNzU2NvcmUpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTg1NSw2ICs4ODYsOCBAQCBPcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlOjpBcHBseUNvbnN0
cmFpbnRzRXJyb3I+IFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5QwogewogICAgIEFTU0VSVChj
b25zdHJhaW50cy5pc1ZhbGlkKTsKIAorICAgIEFMV0FZU19MT0dfSUYobV9sb2dnZXIsIExPR0lE
RU5USUZJRVIpOworCiAgICAgRmxhdHRlbmVkQ29uc3RyYWludCBjYW5kaWRhdGVzOwogICAgIFN0
cmluZyBmYWlsZWRDb25zdHJhaW50OwogICAgIGlmICghc2VsZWN0U2V0dGluZ3MoY29uc3RyYWlu
dHMsIGNhbmRpZGF0ZXMsIGZhaWxlZENvbnN0cmFpbnQpKQpAQCAtODc0LDYgKzkwNyw4IEBAIHZv
aWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAg
IGlmIChzaXplID09IG1fc2l6ZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xPR19J
RihtX2xvZ2dlciwgTE9HSURFTlRJRklFUiwgc2l6ZSk7CisgICAgCiAgICAgbV9zaXplID0gc2l6
ZTsKICAgICBub3RpZnlTZXR0aW5nc0RpZENoYW5nZU9ic2VydmVycyh7IFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6RmxhZzo6V2lkdGgsIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
RmxhZzo6SGVpZ2h0IH0pOwogfQpAQCAtODk5LDYgKzkzNCw4IEBAIHZvaWQgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6c2V0SW50cmluc2ljU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIGlmICht
X2ludHJpbnNpY1NpemUgPT0gc2l6ZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xP
R19JRihtX2xvZ2dlciwgTE9HSURFTlRJRklFUiwgc2l6ZSk7CisgICAgCiAgICAgYXV0byBjdXJy
ZW50U2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICBtX2ludHJpbnNpY1NpemUgPSBzaXplOwogCkBA
IC05MTYsNiArOTUzLDggQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRGcmFtZVJhdGUo
ZG91YmxlIHJhdGUpCiAgICAgaWYgKG1fZnJhbWVSYXRlID09IHJhdGUpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIEFMV0FZU19MT0dfSUYobV9sb2dnZXIsIExPR0lERU5USUZJRVIsIHJhdGUpOwor
ICAgIAogICAgIG1fZnJhbWVSYXRlID0gcmF0ZTsKICAgICBub3RpZnlTZXR0aW5nc0RpZENoYW5n
ZU9ic2VydmVycyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkZyYW1lUmF0ZSk7
CiB9CkBAIC05MjUsNiArOTY0LDggQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRBc3Bl
Y3RSYXRpbyhkb3VibGUgcmF0aW8pCiAgICAgaWYgKG1fYXNwZWN0UmF0aW8gPT0gcmF0aW8pCiAg
ICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0dfSUYobV9sb2dnZXIsIExPR0lERU5USUZJ
RVIsIHJhdGlvKTsKKyAgICAKICAgICBtX2FzcGVjdFJhdGlvID0gcmF0aW87CiAgICAgbV9zaXpl
LnNldEhlaWdodChtX3NpemUud2lkdGgoKSAvIHJhdGlvKTsKICAgICBub3RpZnlTZXR0aW5nc0Rp
ZENoYW5nZU9ic2VydmVycyh7IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6QXNw
ZWN0UmF0aW8sIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6SGVpZ2h0IH0pOwpA
QCAtOTM1LDYgKzk3Niw4IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RmFjaW5nTW9k
ZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nCiAgICAgaWYgKG1fZmFj
aW5nTW9kZSA9PSBtb2RlKQogICAgICAgICByZXR1cm47CiAKKyAgICBBTFdBWVNfTE9HX0lGKG1f
bG9nZ2VyLCBMT0dJREVOVElGSUVSLCBtb2RlKTsKKwogICAgIG1fZmFjaW5nTW9kZSA9IG1vZGU7
CiAgICAgbm90aWZ5U2V0dGluZ3NEaWRDaGFuZ2VPYnNlcnZlcnMoUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzOjpGbGFnOjpGYWNpbmdNb2RlKTsKIH0KQEAgLTk0NCw2ICs5ODcsOCBAQCB2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFZvbHVtZShkb3VibGUgdm9sdW1lKQogICAgIGlmICht
X3ZvbHVtZSA9PSB2b2x1bWUpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0dfSUYo
bV9sb2dnZXIsIExPR0lERU5USUZJRVIsIHZvbHVtZSk7CisKICAgICBtX3ZvbHVtZSA9IHZvbHVt
ZTsKICAgICBub3RpZnlTZXR0aW5nc0RpZENoYW5nZU9ic2VydmVycyhSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OkZsYWc6OlZvbHVtZSk7CiB9CkBAIC05NTMsNiArOTk4LDggQEAgdm9pZCBS
ZWFsdGltZU1lZGlhU291cmNlOjpzZXRTYW1wbGVSYXRlKGludCByYXRlKQogICAgIGlmIChtX3Nh
bXBsZVJhdGUgPT0gcmF0ZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xPR19JRiht
X2xvZ2dlciwgTE9HSURFTlRJRklFUiwgcmF0ZSk7CisKICAgICBtX3NhbXBsZVJhdGUgPSByYXRl
OwogICAgIG5vdGlmeVNldHRpbmdzRGlkQ2hhbmdlT2JzZXJ2ZXJzKFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6RmxhZzo6U2FtcGxlUmF0ZSk7CiB9CkBAIC05NjcsNiArMTAxNCw4IEBAIHZv
aWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2FtcGxlU2l6ZShpbnQgc2l6ZSkKICAgICBpZiAo
bV9zYW1wbGVTaXplID09IHNpemUpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0df
SUYobV9sb2dnZXIsIExPR0lERU5USUZJRVIsIHNpemUpOworCiAgICAgbV9zYW1wbGVTaXplID0g
c2l6ZTsKICAgICBub3RpZnlTZXR0aW5nc0RpZENoYW5nZU9ic2VydmVycyhSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OkZsYWc6OlNhbXBsZVNpemUpOwogfQpAQCAtOTgxLDYgKzEwMzAsNyBA
QCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEVjaG9DYW5jZWxsYXRpb24oYm9vbCBlY2hv
Q2FuY2VsbGF0aW9uKQogICAgIGlmIChtX2VjaG9DYW5jZWxsYXRpb24gPT0gZWNob0NhbmNlbGxh
dGlvbikKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xPR19JRihtX2xvZ2dlciwgTE9H
SURFTlRJRklFUiwgZWNob0NhbmNlbGxhdGlvbik7CiAgICAgbV9lY2hvQ2FuY2VsbGF0aW9uID0g
ZWNob0NhbmNlbGxhdGlvbjsKICAgICBub3RpZnlTZXR0aW5nc0RpZENoYW5nZU9ic2VydmVycyhS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkVjaG9DYW5jZWxsYXRpb24pOwogfQpA
QCAtMTAxMSw2ICsxMDYxLDM0IEBAIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyOjp+T2Jz
ZXJ2ZXIoKQogewogfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECit2b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OnNldExvZ2dlcihjb25zdCBMb2dnZXImIG5ld0xvZ2dlciwgY29uc3Qgdm9p
ZCogbmV3TG9nSWRlbnRpZmllcikKK3sKKyAgICBtX2xvZ2dlciA9ICZuZXdMb2dnZXI7CisgICAg
bV9sb2dJZGVudGlmaWVyID0gbmV3TG9nSWRlbnRpZmllcjsKKyAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIsIG1fdHlwZSwgIiwgIiwgbV9uYW1lLCAiLCAiLCBtX2hhc2hlZElEKTsKK30KKwor
V1RGTG9nQ2hhbm5lbCYgUmVhbHRpbWVNZWRpYVNvdXJjZTo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIExvZ1dlYlJUQzsKK30KKyNlbmRpZgorCitTdHJpbmcgY29udmVydEVudW1l
cmF0aW9uVG9TdHJpbmcoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBlbnVtZXJhdGlvblZhbHVl
KQoreworICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHZhbHVlc1tdID0g
eworICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiTm9uZSIpLAorICAgICAgICBNQUtF
X1NUQVRJQ19TVFJJTkdfSU1QTCgiQXVkaW8iKSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5H
X0lNUEwoIlZpZGVvIiksCisgICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNp
emVfdD4oUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6Tm9uZSkgPT0gMCwgIlJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6Ok5vbmUgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVk
aW8pID09IDEsICJSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyBpcyBub3QgMSBhcyBl
eHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbykgPT0gMiwgIlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGU6OlZpZGVvIGlzIG5vdCAyIGFzIGV4cGVjdGVkIik7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0
PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOwor
ICAgIHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV07
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXggYWZlMTk3NzkwOGQuLmFiM2M5OTcxZGRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZS5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUxh
eWVyLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIgogI2lu
Y2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VGYWN0b3J5LmgiCisjaW5jbHVkZSA8d3RmL0xvZ2dl
ckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWN1cnNpdmVMb2NrQWRhcHRlci5oPgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTY1LDcgKzY2LDEzIEBAIGNsYXNzIFJlbW90ZVZpZGVvU2FtcGxlOwogCiBzdHJ1Y3QgQ2Fw
dHVyZVNvdXJjZU9yRXJyb3I7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFJlYWx0aW1lTWVkaWFT
b3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVhbHRpbWVNZWRpYVNvdXJjZT4s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZWFsdGltZU1lZGlhU291cmNlPiB7CitjbGFzcyBXRUJD
T1JFX0VYUE9SVCBSZWFsdGltZU1lZGlhU291cmNlCisgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8UmVhbHRpbWVNZWRpYVNvdXJjZT4KKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxSZWFsdGltZU1lZGlhU291cmNlPgorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwg
cHJpdmF0ZSBMb2dnZXJIZWxwZXIKKyNlbmRpZgorewogcHVibGljOgogICAgIGNsYXNzIE9ic2Vy
dmVyIHsKICAgICBwdWJsaWM6CkBAIC0xNzYsNiArMTgzLDE1IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldElzUmVtb3RlKGJvb2wgaXNSZW1vdGUpIHsgbV9pc1JlbW90ZSA9IGlzUmVtb3RlOyB9CiAg
ICAgYm9vbCBpc1JlbW90ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZW1vdGU7IH0KIAorI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAorICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNv
bnN0IHZvaWQqKTsKKyAgICBjb25zdCBMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJu
IG1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5h
bCB7IEFTU0VSVChtX2xvZ2dlcik7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25z
dCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlm
aWVyOyB9CisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlJlYWx0aW1lTWVkaWFTb3VyY2UiOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hh
bm5lbCgpIGNvbnN0IGZpbmFsOworI2VuZGlmCisKICAgICAvLyBUZXN0aW5nIG9ubHkKICAgICB2
aXJ0dWFsIHZvaWQgZGVsYXlTYW1wbGVzKFNlY29uZHMpIHsgfTsKICAgICB2b2lkIHNldEludGVy
cnVwdGVkRm9yVGVzdGluZyhib29sKTsKQEAgLTIxNyw3ICsyMzMsMTIgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgZm9yRWFjaE9ic2VydmVyKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChPYnNlcnZl
ciYpPiYpIGNvbnN0OwogCi0gICAgYm9vbCBtX211dGVkIHsgZmFsc2UgfTsKKyNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKKyAgICBSZWZQdHI8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBj
b25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisgICAgTW9ub3RvbmljVGltZSBtX2xhc3RGcmFt
ZUxvZ1RpbWU7CisgICAgdW5zaWduZWQgbV9mcmFtZUNvdW50IHsgMCB9OworI2VuZGlmCiAKICAg
ICBTdHJpbmcgbV9pZEhhc2hTYWx0OwogICAgIFN0cmluZyBtX2hhc2hlZElEOwpAQCAtMjM2LDYg
KzI1Nyw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fZml0bmVzc1Njb3JlIHsgMCB9OwogICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIG1fZmFjaW5nTW9k
ZSB7IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VXNlcn07CiAKKyAgICBib29sIG1fbXV0
ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9wZW5kaW5nU2V0dGluZ3NEaWRDaGFuZ2VOb3RpZmlj
YXRpb24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9lY2hvQ2FuY2VsbGF0aW9uIHsgZmFsc2UgfTsK
ICAgICBib29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKQEAgLTI1Nyw2ICsyNzksMjMg
QEAgc3RydWN0IENhcHR1cmVTb3VyY2VPckVycm9yIHsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdl
OwogfTsKIAorU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGUpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgorc3RydWN0IExvZ0FyZ3VtZW50OworCit0ZW1w
bGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGU+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjb252ZXJ0
RW51bWVyYXRpb25Ub1N0cmluZyh0eXBlKTsKKyAgICB9Cit9OworCit9OyAvLyBuYW1lc3BhY2Ug
V1RGCisKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncy5jcHAKaW5kZXggM2FhZGQyNDZkMzMuLjAyZDAyODMyZWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OSw2ICs2OSw2NSBAQCBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OnZpZGVvRgogICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OlVua25vd247CiB9CiAKK1N0cmluZyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OmNv
bnZlcnRGbGFnc1RvU3RyaW5nKGNvbnN0IE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkZsYWc+IGZsYWdzKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAg
IGJ1aWxkZXIuYXBwZW5kKCJbICIpOworICAgIGZvciAoYXV0byBmbGFnIDogZmxhZ3MpIHsKKyAg
ICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCIsICIpOworCisgICAgICAgIHN3aXRjaCAoZmxhZykgeworICAgICAgICBjYXNlIFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6V2lkdGg6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
V2lkdGgiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6SGVpZ2h0OgorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIkhlaWdo
dCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzOjpBc3BlY3RSYXRpbzoKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJBc3Bl
Y3RSYXRpbyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpGcmFtZVJhdGU6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
RnJhbWVSYXRlIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OkZhY2luZ01vZGU6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiRmFjaW5nTW9kZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWb2x1bWU6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiVm9sdW1lIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OlNhbXBsZVJhdGU6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiU2FtcGxlUmF0ZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpTYW1wbGVTaXplOgorICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoIlNhbXBsZVNpemUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RWNob0NhbmNlbGxhdGlvbjoKKyAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCJFY2hvQ2FuY2VsbGF0aW9uIik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRldmljZUlkOgorICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIkRldmljZUlkIik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6Okdyb3VwSWQ6CisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiR3JvdXBJZCIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpMYWJlbDoKKyAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCJMYWJlbCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZToKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJEaXNwbGF5U3VyZmFjZSIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpMb2dpY2FsU3Vy
ZmFjZToKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJMb2dpY2FsU3VyZmFjZSIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgYnVpbGRlci5hcHBlbmQoIiBd
Iik7CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCiBPcHRpb25TZXQ8UmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OmRpZmZlcmVuY2UoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiB0aGF0KSBj
b25zdAogewogICAgIE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+
IGRpZmZlcmVuY2U7CkBAIC0xMDUsNiArMTY0LDIzIEBAIE9wdGlvblNldDxSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OkZsYWc+IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6ZGlmZmVy
CiAgICAgcmV0dXJuIGRpZmZlcmVuY2U7CiB9CiAKK1N0cmluZyBjb252ZXJ0RW51bWVyYXRpb25U
b1N0cmluZyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBlbnVt
ZXJhdGlvblZhbHVlKQoreworICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+
IHZhbHVlc1tdID0geworICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiVW5rbm93biIp
LAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiVXNlciIpLAorICAgICAgICBNQUtF
X1NUQVRJQ19TVFJJTkdfSU1QTCgiRW52aXJvbm1lbnQiKSwKKyAgICAgICAgTUFLRV9TVEFUSUNf
U1RSSU5HX0lNUEwoIkxlZnQiKSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIlJp
Z2h0IiksCisgICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OlVua25vd24pID09IDAs
ICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZTo6VW5rbm93biBp
cyBub3QgMCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6
ZV90PihSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZTo6VXNlcikg
PT0gMSwgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpVc2Vy
IGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxz
aXplX3Q+KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpFbnZp
cm9ubWVudCkgPT0gMiwgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdN
b2RlOjpFbnZpcm9ubWVudCBpcyBub3QgMiBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3Nl
cnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVv
RmFjaW5nTW9kZTo6TGVmdCkgPT0gMywgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6Vmlk
ZW9GYWNpbmdNb2RlOjpMZWZ0IGlzIG5vdCAzIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6Vmlk
ZW9GYWNpbmdNb2RlOjpSaWdodCkgPT0gNCwgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VmlkZW9GYWNpbmdNb2RlOjpSaWdodCBpcyBub3QgNCBhcyBleHBlY3RlZCIpOworICAgIEFTU0VS
VChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpIDwgV1RGX0FSUkFZX0xFTkdU
SCh2YWx1ZXMpKTsKKyAgICByZXR1cm4gdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVy
YXRpb25WYWx1ZSldOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzLmgKaW5kZXggYzRhOTZiYmQ1OTMuLjM5NWE2NGNiZDNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNCw2ICsxMzQsOCBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNv
ZGVyJiwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJik7CiAKKyAgICBzdGF0aWMgU3RyaW5n
IGNvbnZlcnRGbGFnc1RvU3RyaW5nKGNvbnN0IE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OkZsYWc+KTsKKwogcHJpdmF0ZToKICAgICB1aW50MzJfdCBtX3dpZHRoIHsgMCB9
OwogICAgIHVpbnQzMl90IG1faGVpZ2h0IHsgMCB9OwpAQCAtMTkxLDYgKzE5Myw4IEBAIGJvb2wg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmVh
bHRpbWVNZWRpYVNvdXJjZVNlCiAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlRW51bShzZXR0aW5n
cy5tX2ZhY2luZ01vZGUpOwogfQogCitTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUpOworCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMjA2LDYgKzIxMCwyNSBAQCB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OlZpZGVvRmFjaW5nTQogICAgID47CiB9OwogCi19Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUeXBlPgorc3RydWN0IExvZ0FyZ3VtZW50OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0Fy
Z3VtZW50PFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdN
b2RlPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBtb2RlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKG1vZGUpOworICAgIH0KK307CisK
K3RlbXBsYXRlIDw+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8T3B0aW9uU2V0PFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3Ry
aW5nKGNvbnN0IE9wdGlvblNldDxXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OkZsYWc+IGZsYWdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6Y29udmVydEZsYWdzVG9TdHJpbmcoZmxhZ3MpOworICAgIH0KK307
CisKK307IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlLmNwcAppbmRleCAwM2I5NDk2ZWZjYy4uNzc0NzA4NjkwNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBw
bGUgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
LCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OlJlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgc291
cmNlKQogICAgIDogbV9hdWRpb1NvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECi0gICAgLCBtX2xvZ0lkZW50aWZpZXIocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB2b2lkKj4oY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSkpCisgICAgLCBtX2xvZ2dl
cihtX2F1ZGlvU291cmNlLT5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcihtX2F1ZGlv
U291cmNlLT5sb2dJZGVudGlmaWVyKCkpCiAjZW5kaWYKIHsKIH0KQEAgLTEzNCwxNCArMTM1LDYg
QEAgV1RGTG9nQ2hhbm5lbCYgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpsb2dDaGFubmVs
KCkgY29uc3QKIHsKICAgICByZXR1cm4gTG9nV2ViUlRDOwogfQotCi1jb25zdCBMb2dnZXImIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6bG9nZ2VyKCkgY29uc3QKLXsKLSAgICBpZiAoIW1f
bG9nZ2VyKQotICAgICAgICBtX2xvZ2dlciA9IExvZ2dlcjo6Y3JlYXRlKHRoaXMpOwotICAgIHJl
dHVybiAqbV9sb2dnZXI7Ci19Ci0KICNlbmRpZgogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaAppbmRleCA5N2QwZDRmZWM3ZC4uYzMx
NTczMDhhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC02OSwxMCArNjksNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZXRTb3VyY2UoUmVmPE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKICAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgc291
cmNlKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1NvdXJjZS5nZXQoKTsgfQogCi0jaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECi0gICAgdm9pZCBzZXRMb2dnZXIoUmVmPGNvbnN0IExvZ2dlcj4mJiBs
b2dnZXIpIHsgbV9sb2dnZXIgPSBXVEZNb3ZlKGxvZ2dlcik7IH0KLSNlbmRpZgotCiBwcm90ZWN0
ZWQ6CiAgICAgZXhwbGljaXQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZT4mJik7CiAKQEAgLTg2LDcgKzgyLDcgQEAgcHJvdGVjdGVkOgogCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLy8gTG9nZ2VySGVscGVyIEFQSQotICAgIGNv
bnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWw7CisgICAgY29uc3QgTG9nZ2VyJiBsb2dn
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQogICAgIGNvbnN0IHZv
aWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7
IH0KICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlIjsgfQogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0No
YW5uZWwoKSBjb25zdCBmaW5hbDsKQEAgLTEzNyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIEhh
c2hTZXQ8d2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSo+IG1fc2lua3M7CiAKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBtdXRhYmxlIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1f
bG9nZ2VyOworICAgIG11dGFibGUgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29u
c3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogICAgIHNpemVfdCBtX2NodW5rc1NlbnQgeyAwIH07
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDY0YjRl
OWUyZTRiLi5lZjkzZTY3ZGYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2Uu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00MCw3ICs0MCw2IEBAIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJT
X0JFR0lOCiAKIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0VORAogCi0jaW5jbHVkZSA8d3RmL0Ny
eXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksNyArNDgsOCBAQCBSZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2U6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZShSZWY8TWVkaWFTdHJl
YW1UcmFja1ByaQogICAgIDogbV92aWRlb1NvdXJjZShXVEZNb3ZlKHZpZGVvU291cmNlKSkKICAg
ICAsIG1fYmxhY2tGcmFtZVRpbWVyKCp0aGlzLCAmUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
OjpzZW5kT25lQmxhY2tGcmFtZSkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAsIG1f
bG9nSWRlbnRpZmllcihyZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihjcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlcigpKSkKKyAgICAsIG1fbG9nZ2VyKG1fdmlkZW9Tb3VyY2UtPmxvZ2dl
cigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKG1fdmlkZW9Tb3VyY2UtPmxvZ0lkZW50aWZpZXIo
KSkKICNlbmRpZgogewogfQpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlOjpzZW5kQmxhY2tGcmFtZXNJZk5lZWRlZCgpCiAKIHZvaWQgUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlOjpzZW5kT25lQmxhY2tGcmFtZSgpCiB7Ci0gICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCAidGVzdCIpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7
CiAgICAgc2VuZEZyYW1lKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZm
ZXI+KG1fYmxhY2tGcmFtZSkpOwogfQogCkBAIC0yMDksNiArMjA5LDE5IEBAIHZvaWQgUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlOjpzZW5kRnJhbWUocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6VmlkZW9GcmFtCiAgICAgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKICAgICB3ZWJydGM6OlZpZGVvRnJhbWUgZnJhbWUoYnVmZmVyLCBtX3Nob3VsZEFw
cGx5Um90YXRpb24gPyB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzAgOiBtX2N1cnJlbnRSb3RhdGlv
biwgc3RhdGljX2Nhc3Q8aW50NjRfdD4odGltZXN0YW1wLnNlY29uZHNTaW5jZUVwb2NoKCkubWlj
cm9zZWNvbmRzKCkpKTsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICsrbV9mcmFt
ZUNvdW50OworCisgICAgYXV0byBkZWx0YSA9IHRpbWVzdGFtcCAtIG1fbGFzdEZyYW1lTG9nVGlt
ZTsKKyAgICBpZiAoIW1fbGFzdEZyYW1lTG9nVGltZSB8fCBkZWx0YSA+PSAxX3MpIHsKKyAgICAg
ICAgaWYgKG1fbGFzdEZyYW1lTG9nVGltZSkgeworICAgICAgICAgICAgSU5GT19MT0coTE9HSURF
TlRJRklFUiwgbV9mcmFtZUNvdW50LCAiIGZyYW1lcyBzZW50IGluICIsIGRlbHRhLnZhbHVlKCks
ICIgc2Vjb25kcyIpOworICAgICAgICAgICAgbV9mcmFtZUNvdW50ID0gMDsKKyAgICAgICAgfQor
ICAgICAgICBtX2xhc3RGcmFtZUxvZ1RpbWUgPSB0aW1lc3RhbXA7CisgICAgfQorI2VuZGlmCisK
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2lua3NMb2NrKTsKICAgICBmb3IgKGF1dG8q
IHNpbmsgOiBtX3NpbmtzKQogICAgICAgICBzaW5rLT5PbkZyYW1lKGZyYW1lKTsKQEAgLTIxOSwx
MyArMjMyLDYgQEAgV1RGTG9nQ2hhbm5lbCYgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjps
b2dDaGFubmVsKCkgY29uc3QKIHsKICAgICByZXR1cm4gTG9nV2ViUlRDOwogfQotCi1jb25zdCBM
b2dnZXImIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6bG9nZ2VyKCkgY29uc3QKLXsKLSAg
ICBpZiAoIW1fbG9nZ2VyKQotICAgICAgICBtX2xvZ2dlciA9IExvZ2dlcjo6Y3JlYXRlKHRoaXMp
OwotICAgIHJldHVybiAqbV9sb2dnZXI7Ci19CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaAppbmRleCAwMzFmNjA3YzdkZC4u
YzQ2YTAyNzA5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC03MiwxMCArNzIsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEFwcGx5Um90YXRp
b24oYm9vbCBzaG91bGRBcHBseVJvdGF0aW9uKSB7IG1fc2hvdWxkQXBwbHlSb3RhdGlvbiA9IHNo
b3VsZEFwcGx5Um90YXRpb247IH0KIAotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIHZv
aWQgc2V0TG9nZ2VyKFJlZjxjb25zdCBMb2dnZXI+JiYgbG9nZ2VyKSB7IG1fbG9nZ2VyID0gV1RG
TW92ZShsb2dnZXIpOyB9Ci0jZW5kaWYKLQogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFJlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOwog
CkBAIC04OSw3ICs4NSw3IEBAIHByb3RlY3RlZDoKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogICAgIC8vIExvZ2dlckhlbHBlciBBUEkKLSAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNv
bnN0IGZpbmFsOworICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9sb2dnZXIuZ2V0KCk7IH0KICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgY29uc3QgY2hhciogbG9n
Q2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZSI7IH0KICAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CkBA
IC0xNDUsOCArMTQxLDEwIEBAIHByaXZhdGU6CiAgICAgdWludDMyX3QgbV9oZWlnaHQgeyAwIH07
CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBtdXRhYmxlIFJlZlB0cjxjb25zdCBM
b2dnZXI+IG1fbG9nZ2VyOworICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNv
bnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyAgICBNb25vdG9uaWNUaW1lIG1fbGFzdEZyYW1l
TG9nVGltZTsKKyAgICB1bnNpZ25lZCBtX2ZyYW1lQ291bnQgeyAwIH07CiAjZW5kaWYKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggNDUyOWUyODAzOGIuLmFkYTFlYzNhMmM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVv
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZVZpZGVvU291cmNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIlJlbW90ZVZpZGVvU2FtcGxlLmgiCisjaW5jbHVkZSA8d3RmL0pTT05WYWx1
ZXMuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkltYWdlVHJhbnNmZXJTZXNz
aW9uVlQuaCIKQEAgLTM1Miw3ICszNTMsNyBAQCBPcHRpb25hbDxSZWFsdGltZVZpZGVvU291cmNl
OjpDYXB0dXJlU2l6ZUFuZEZyYW1lUmF0ZT4gUmVhbHRpbWVWaWRlb1NvdXJjZTo6YmVzdAogCiB2
b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50
PiB3aWR0aCwgT3B0aW9uYWw8aW50PiBoZWlnaHQsIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRl
KQogewotICAgIE9wdGlvbmFsPFJlYWx0aW1lVmlkZW9Tb3VyY2U6OkNhcHR1cmVTaXplQW5kRnJh
bWVSYXRlPiBtYXRjaDsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElG
SUVSLCBTaXplQW5kRnJhbWVSYXRlIHsgd2lkdGgsIGhlaWdodCwgZnJhbWVSYXRlIH0pOwogCiAg
ICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOwogICAgIGlmICghd2lkdGggJiYgIWhlaWdodCAm
JiAhc2l6ZS5pc0VtcHR5KCkpIHsKQEAgLTM2MCw3ICszNjEsNyBAQCB2b2lkIFJlYWx0aW1lVmlk
ZW9Tb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3aWR0aCwgT3B0aW9u
YWw8aW50PgogICAgICAgICBoZWlnaHQgPSBzaXplLmhlaWdodCgpOwogICAgIH0KIAotICAgIG1h
dGNoID0gYmVzdFN1cHBvcnRlZFNpemVBbmRGcmFtZVJhdGUod2lkdGgsIGhlaWdodCwgZnJhbWVS
YXRlKTsKKyAgICBPcHRpb25hbDxSZWFsdGltZVZpZGVvU291cmNlOjpDYXB0dXJlU2l6ZUFuZEZy
YW1lUmF0ZT4gbWF0Y2ggPSBiZXN0U3VwcG9ydGVkU2l6ZUFuZEZyYW1lUmF0ZSh3aWR0aCwgaGVp
Z2h0LCBmcmFtZVJhdGUpOwogICAgIEFTU0VSVChtYXRjaCk7CiAgICAgaWYgKCFtYXRjaCkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDExLDYgKzQxMiwyNCBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3Vy
Y2U6OmRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycyhNZWRpYVNhbXBsZSYgc2FtcGxlKQog
ICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKG1lZGlhU2FtcGxlLnJlbGVhc2VOb25OdWxsKCkpOwog
fQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitSZWY8SlNPTjo6T2JqZWN0PiBTaXplQW5k
RnJhbWVSYXRlOjp0b0pTT05PYmplY3QoKSBjb25zdAoreworICAgIGF1dG8gb2JqZWN0ID0gSlNP
Tjo6T2JqZWN0OjpjcmVhdGUoKTsKKworICAgIG9iamVjdC0+c2V0RG91YmxlKCJ3aWR0aCJfcywg
d2lkdGggPyB3aWR0aC52YWx1ZSgpIDogMCk7CisgICAgb2JqZWN0LT5zZXREb3VibGUoImhlaWdo
dCJfcywgaGVpZ2h0ID8gaGVpZ2h0LnZhbHVlKCkgOiAwKTsKKyAgICBvYmplY3QtPnNldERvdWJs
ZSgiZnJhbWVSYXRlIl9zLCBmcmFtZVJhdGUgPyBmcmFtZVJhdGUudmFsdWUoKSA6IDApOworCisg
ICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RyaW5nIFNpemVBbmRGcmFtZVJhdGU6OnRvSlNPTlN0
cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvSlNPTk9iamVjdCgpLT50b0pTT05TdHJpbmco
KTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5oCmluZGV4IDA3ZGVkNGYxZjU5Li5hYzM0
NDAwZDUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MSw2ICs4MSwxMCBAQCBwcml2YXRlOgogICAg
IE9wdGlvbmFsPENhcHR1cmVTaXplQW5kRnJhbWVSYXRlPiBiZXN0U3VwcG9ydGVkU2l6ZUFuZEZy
YW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9u
YWw8ZG91YmxlPik7CiAgICAgYm9vbCBwcmVzZXRTdXBwb3J0c0ZyYW1lUmF0ZShSZWZQdHI8Vmlk
ZW9QcmVzZXQ+LCBkb3VibGUpOwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29u
c3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlYWx0aW1l
VmlkZW9Tb3VyY2UiOyB9CisjZW5kaWYKKwogICAgIFZlY3RvcjxSZWY8VmlkZW9QcmVzZXQ+PiBt
X3ByZXNldHM7CiAgICAgRGVxdWU8ZG91YmxlPiBtX29ic2VydmVkRnJhbWVUaW1lU3RhbXBzOwog
ICAgIGRvdWJsZSBtX29ic2VydmVkRnJhbWVSYXRlIHsgMCB9OwpAQCAtOTAsNyArOTQsMjcgQEAg
cHJpdmF0ZToKICNlbmRpZgogfTsKIAorc3RydWN0IFNpemVBbmRGcmFtZVJhdGUgeworICAgIE9w
dGlvbmFsPGludD4gd2lkdGg7CisgICAgT3B0aW9uYWw8aW50PiBoZWlnaHQ7CisgICAgT3B0aW9u
YWw8ZG91YmxlPiBmcmFtZVJhdGU7CisKKyAgICBTdHJpbmcgdG9KU09OU3RyaW5nKCkgY29uc3Q7
CisgICAgUmVmPEpTT046Ok9iamVjdD4gdG9KU09OT2JqZWN0KCkgY29uc3Q7Cit9OworCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGU8dHlwZW5hbWUg
VHlwZT4gc3RydWN0IExvZ0FyZ3VtZW50OwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVu
dDxXZWJDb3JlOjpTaXplQW5kRnJhbWVSYXRlPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
Zyhjb25zdCBXZWJDb3JlOjpTaXplQW5kRnJhbWVSYXRlJiBzaXplKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHNpemUudG9KU09OU3RyaW5nKCk7CisgICAgfQorfTsKK307IC8vIG5hbWVzcGFjZSBX
VEYKKwogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJl
U291cmNlLmgKaW5kZXggMjZmOTJmZjVkZTEuLjQxN2E3M2IyOWExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0Nh
cHR1cmVTb3VyY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTczLDcgKzczLDYgQEAgcHJpdmF0ZToKICAgICBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZShBVkNhcHR1cmVEZXZpY2UqLCBTdHJpbmcmJiBpZCwgU3RyaW5nJiYgaGFzaFNh
bHQpOwogICAgIHZpcnR1YWwgfkFWVmlkZW9DYXB0dXJlU291cmNlKCk7CiAKLSAgICB2b2lkIGlu
aXRpYWxpemVTZXNzaW9uKCk7CiAgICAgdm9pZCBjbGVhclNlc3Npb24oKTsKIAogICAgIGJvb2wg
c2V0dXBTZXNzaW9uKCk7CkBAIC0xMTEsNiArMTEwLDEwIEBAIHByaXZhdGU6CiAKICAgICBBVkNh
cHR1cmVEZXZpY2UqIGRldmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlLmdldCgpOyB9CiAK
KyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiQVZWaWRlb0NhcHR1cmVTb3VyY2UiOyB9CisjZW5k
aWYKKwogICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gbV9idWZmZXI7CiAgICAgUmV0YWluUHRyPEFW
Q2FwdHVyZVZpZGVvRGF0YU91dHB1dD4gbV92aWRlb091dHB1dDsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQppbmRleCA5YTY2MWM3OTNlNC4uYWYwZGFhNGJhOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVv
Q2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMDIsMTUgKzIwMiw5IEBAIEFWVmlk
ZW9DYXB0dXJlU291cmNlOjp+QVZWaWRlb0NhcHR1cmVTb3VyY2UoKQogICAgIGNsZWFyU2Vzc2lv
bigpOwogfQogCi12b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjppbml0aWFsaXplU2Vzc2lvbigp
Ci17Ci0gICAgQVNTRVJUKCFtX3Nlc3Npb24pOwotICAgIG1fc2Vzc2lvbiA9IGFkb3B0TlMoW2Fs
bG9jQVZDYXB0dXJlU2Vzc2lvbkluc3RhbmNlKCkgaW5pdF0pOwotICAgIFttX3Nlc3Npb24gYWRk
T2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInJ1bm5pbmciIG9wdGlv
bnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Oih2b2lkICopbmlsXTsKLX0K
LQogdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2xlYXJTZXNzaW9uKCkKIHsKKyAgICBBTFdB
WVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSKTsKICAgICBBU1NFUlQobV9zZXNz
aW9uKTsKICAgICBbbV9zZXNzaW9uIHJlbW92ZU9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgp
IGZvcktleVBhdGg6QCJydW5uaW5nIl07CiAgICAgbV9zZXNzaW9uID0gbnVsbHB0cjsKQEAgLTIy
Niw2ICsyMjAsNyBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzdGFydFByb2R1Y2luZ0Rh
dGEoKQogICAgIGlmIChbbV9zZXNzaW9uIGlzUnVubmluZ10pCiAgICAgICAgIHJldHVybjsKIAor
ICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOwogICAgIFttX29i
amNPYnNlcnZlciBhZGROb3RpZmljYXRpb25PYnNlcnZlcnNdOwogICAgIFttX3Nlc3Npb24gc3Rh
cnRSdW5uaW5nXTsKIH0KQEAgLTIzNSw2ICsyMzAsNyBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291
cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiAgICAgaWYgKCFtX3Nlc3Npb24pCiAgICAgICAgIHJl
dHVybjsKIAorICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOwog
ICAgIFttX29iamNPYnNlcnZlciByZW1vdmVOb3RpZmljYXRpb25PYnNlcnZlcnNdOwogCiAgICAg
aWYgKFttX3Nlc3Npb24gaXNSdW5uaW5nXSkKQEAgLTMzNSw2ICszMzEsOCBAQCBib29sIEFWVmlk
ZW9DYXB0dXJlU291cmNlOjpwcmVmZXJzUHJlc2V0KFZpZGVvUHJlc2V0JiBwcmVzZXQpCiAKIHZv
aWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGVXaXRoUHJlc2V0KElu
dFNpemUgcmVxdWVzdGVkU2l6ZSwgZG91YmxlIHJlcXVlc3RlZEZyYW1lUmF0ZSwgUmVmUHRyPFZp
ZGVvUHJlc2V0PiBwcmVzZXQpCiB7CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9H
SURFTlRJRklFUiwgU2l6ZUFuZEZyYW1lUmF0ZSB7IHJlcXVlc3RlZFNpemUud2lkdGgoKSwgcmVx
dWVzdGVkU2l6ZS5oZWlnaHQoKSwgcmVxdWVzdGVkRnJhbWVSYXRlIH0pOworCiAgICAgYXV0byog
YXZQcmVzZXQgPSBwcmVzZXQgPyBkb3duY2FzdDxBVlZpZGVvUHJlc2V0PihwcmVzZXQuZ2V0KCkp
IDogbnVsbHB0cjsKIAogICAgIGlmICghbV9zZXNzaW9uKSB7CkBAIC0zNjMsNiArMzYxLDEyIEBA
IHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGVXaXRoUHJlc2V0
KEludFNpemUgcmVxdWVzdGVkU2l6ZSwKICAgICAgICAgaWYgKFtkZXZpY2UoKSBsb2NrRm9yQ29u
ZmlndXJhdGlvbjomZXJyb3JdKSB7CiAgICAgICAgICAgICBpZiAoIW1fY3VycmVudFByZXNldCB8
fCAhW21fY3VycmVudFByZXNldC0+Zm9ybWF0LmdldCgpIGlzRXF1YWw6YXZQcmVzZXQtPmZvcm1h
dC5nZXQoKV0pIHsKICAgICAgICAgICAgICAgICBbZGV2aWNlKCkgc2V0QWN0aXZlRm9ybWF0OmF2
UHJlc2V0LT5mb3JtYXQuZ2V0KCldOworCisgICAgICAgICAgICAgICAgZnJhbWVSYXRlUmFuZ2Ug
PSBmcmFtZUR1cmF0aW9uRm9yRnJhbWVSYXRlKHJlcXVlc3RlZEZyYW1lUmF0ZSk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKGZyYW1lUmF0ZVJhbmdlKTsKKyAgICAgICAgICAgICAgICBpZiAoIWZy
YW1lUmF0ZVJhbmdlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgICAgICAgICAgICAgYXV0byBzZXR0aW5nc0RpY3Rpb25hcnkgPSBAewogICAg
ICAgICAgICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVs
Rm9ybWF0VHlwZUtleTogQChhdlZpZGVvQ2FwdHVyZVBpeGVsQnVmZmVyRm9ybWF0KCkpLApAQCAt
MzczLDE5ICszNzcsMjEgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0U2l6ZUFuZEZy
YW1lUmF0ZVdpdGhQcmVzZXQoSW50U2l6ZSByZXF1ZXN0ZWRTaXplLAogICAgICAgICAgICAgICAg
IFttX3ZpZGVvT3V0cHV0IHNldFZpZGVvU2V0dGluZ3M6c2V0dGluZ3NEaWN0aW9uYXJ5XTsKICNl
bmRpZgogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0
cigpLCBMT0dJREVOVElGSUVSLCAic2V0dGluZyBmcmFtZSByYXRlICIsIENNVGltZUdldFNlY29u
ZHMoW2ZyYW1lUmF0ZVJhbmdlIG1pbkZyYW1lRHVyYXRpb25dKSwgIiAuLiAiLCBDTVRpbWVHZXRT
ZWNvbmRzKFtmcmFtZVJhdGVSYW5nZSBtYXhGcmFtZUR1cmF0aW9uXSkpOwogICAgICAgICAgICAg
W2RldmljZSgpIHNldEFjdGl2ZVZpZGVvTWluRnJhbWVEdXJhdGlvbjpbZnJhbWVSYXRlUmFuZ2Ug
bWluRnJhbWVEdXJhdGlvbl1dOwogICAgICAgICAgICAgW2RldmljZSgpIHNldEFjdGl2ZVZpZGVv
TWF4RnJhbWVEdXJhdGlvbjpbZnJhbWVSYXRlUmFuZ2UgbWF4RnJhbWVEdXJhdGlvbl1dOwogICAg
ICAgICAgICAgW2RldmljZSgpIHVubG9ja0ZvckNvbmZpZ3VyYXRpb25dOwogICAgICAgICB9CiAg
ICAgfSBAY2F0Y2goTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICBSRUxFQVNFX0xP
RyhNZWRpYSwgIkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGUgLSBleGNlcHRpb24g
dGhyb3duIGNvbmZpZ3VyaW5nIGRldmljZTogPCVzPiAlcyIsIFtbZXhjZXB0aW9uIG5hbWVdIFVU
RjhTdHJpbmddLCBbW2V4Y2VwdGlvbiByZWFzb25dIFVURjhTdHJpbmddKTsKKyAgICAgICAgRVJS
T1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiZXJyb3IgY29uZmlndXJpbmcg
ZGV2aWNlICIsIFtbZXhjZXB0aW9uIG5hbWVdIFVURjhTdHJpbmddLCAiLCByZWFzb24gOiAiLCBb
W2V4Y2VwdGlvbiByZWFzb25dIFVURjhTdHJpbmddKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBbbV9zZXNzaW9uIGNvbW1pdENvbmZpZ3VyYXRpb25dOwogCiAgICAgbV9jdXJyZW50UHJl
c2V0ID0gYXZQcmVzZXQ7CiAKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIFJFTEVBU0VfTE9HKE1l
ZGlhLCAiQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZSAtIGZhaWxlZCB0byBsb2Nr
IHZpZGVvIGRldmljZSBmb3IgY29uZmlndXJhdGlvbjogJXMiLCBbW2Vycm9yIGxvY2FsaXplZERl
c2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7CisgICAgRVJST1JfTE9HX0lGKGVycm9yICYmIGxvZ2dl
clB0cigpLCBMT0dJREVOVElGSUVSLCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4
U3RyaW5nXSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgaW50IHNlbnNvck9yaWVudGF0aW9uKEFWQ2Fw
dHVyZVZpZGVvT3JpZW50YXRpb24gdmlkZW9PcmllbnRhdGlvbikKQEAgLTQyNiw3ICs0MzIsMTAg
QEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBTZXNzaW9uKCkKICAgICBpZiAobV9z
ZXNzaW9uKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGluaXRpYWxpemVTZXNzaW9uKCk7
CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUik7CisKKyAgICBt
X3Nlc3Npb24gPSBhZG9wdE5TKFthbGxvY0FWQ2FwdHVyZVNlc3Npb25JbnN0YW5jZSgpIGluaXRd
KTsKKyAgICBbbV9zZXNzaW9uIGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktl
eVBhdGg6QCJydW5uaW5nIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29u
dGV4dDoodm9pZCAqKW5pbF07CiAKICAgICBbbV9zZXNzaW9uIGJlZ2luQ29uZmlndXJhdGlvbl07
CiAgICAgYm9vbCBzdWNjZXNzID0gc2V0dXBDYXB0dXJlU2Vzc2lvbigpOwpAQCAtNDQ5LDEzICs0
NTgsMTUgQEAgQVZGcmFtZVJhdGVSYW5nZVR5cGUqIEFWVmlkZW9DYXB0dXJlU291cmNlOjpmcmFt
ZUR1cmF0aW9uRm9yRnJhbWVSYXRlKGRvdWJsZSByYXQKICAgICB9CiAKICAgICBpZiAoIWJlc3RG
cmFtZVJhdGVSYW5nZSkKLSAgICAgICAgUkVMRUFTRV9MT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkZvckZyYW1lUmF0ZSwgbm8gZnJhbWUgcmF0ZSByYW5nZSBm
b3IgcmF0ZSAlZyIsIHJhdGUpOworICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExP
R0lERU5USUZJRVIsICJubyBmcmFtZSByYXRlIHJhbmdlIGZvciByYXRlICIsIHJhdGUpOwogCiAg
ICAgcmV0dXJuIGJlc3RGcmFtZVJhdGVSYW5nZTsKIH0KIAogYm9vbCBBVlZpZGVvQ2FwdHVyZVNv
dXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbigpCiB7CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQ
dHIoKSwgTE9HSURFTlRJRklFUik7CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnZpZGVvQ2FwdHVyZUZhY3Rvcnko
KS5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOwogI2VuZGlmCkBAIC00NjMsMTIgKzQ3NCwxMiBAQCBi
b29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR1cENhcHR1cmVTZXNzaW9uKCkKICAgICBOU0Vy
cm9yICplcnJvciA9IG5pbDsKICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlRGV2aWNlSW5wdXRUeXBl
PiB2aWRlb0luID0gYWRvcHROUyhbYWxsb2NBVkNhcHR1cmVEZXZpY2VJbnB1dEluc3RhbmNlKCkg
aW5pdFdpdGhEZXZpY2U6ZGV2aWNlKCkgZXJyb3I6JmVycm9yXSk7CiAgICAgaWYgKGVycm9yKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HKE1lZGlhLCAiQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVw
Q2FwdHVyZVNlc3Npb24oJXApLCBmYWlsZWQgdG8gYWxsb2NhdGUgQVZDYXB0dXJlRGV2aWNlSW5w
dXQ6ICVzIiwgdGhpcywgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10p
OworICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJmYWls
ZWQgdG8gYWxsb2NhdGUgQVZDYXB0dXJlRGV2aWNlSW5wdXQgIiwgW1tlcnJvciBsb2NhbGl6ZWRE
ZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgaWYgKCFbc2Vzc2lvbigpIGNhbkFkZElucHV0OnZpZGVvSW4uZ2V0KCldKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HKE1lZGlhLCAiQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVy
ZVNlc3Npb24oJXApLCB1bmFibGUgdG8gYWRkIHZpZGVvIGlucHV0IGRldmljZSIsIHRoaXMpOwor
ICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJ1bmFibGUg
dG8gYWRkIHZpZGVvIGlucHV0IGRldmljZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIFtzZXNzaW9uKCkgYWRkSW5wdXQ6dmlkZW9Jbi5nZXQoKV07CkBAIC00ODEsNyArNDky
LDcgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbigpCiAg
ICAgW21fdmlkZW9PdXRwdXQgc2V0U2FtcGxlQnVmZmVyRGVsZWdhdGU6bV9vYmpjT2JzZXJ2ZXIu
Z2V0KCkgcXVldWU6Z2xvYmFWaWRlb0NhcHR1cmVTZXJpYWxRdWV1ZSgpXTsKIAogICAgIGlmICgh
W3Nlc3Npb24oKSBjYW5BZGRPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQoKV0pIHsKLSAgICAgICAg
UkVMRUFTRV9MT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vz
c2lvbiglcCksIHVuYWJsZSB0byBhZGQgdmlkZW8gc2FtcGxlIGJ1ZmZlciBvdXRwdXQgZGVsZWdh
dGUiLCB0aGlzKTsKKyAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElG
SUVSLCAidW5hYmxlIHRvIGFkZCB2aWRlbyBvdXRwdXQgZGV2aWNlIik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgW3Nlc3Npb24oKSBhZGRPdXRwdXQ6bV92aWRlb091dHB1dC5n
ZXQoKV07CkBAIC01NzEsNiArNTgyLDcgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2Fw
dHVyZU91dHB1dERpZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKEFWQ2EKIHZvaWQg
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKGJv
b2wgc3RhdGUpCiB7CiAgICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXMsIHN0YXRlXSB7Cisg
ICAgICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsIHN0YXRlKTsK
ICAgICAgICAgaWYgKChzdGF0ZSA9PSBtX2lzUnVubmluZykgJiYgKHN0YXRlID09ICFtdXRlZCgp
KSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNTg3LDYgKzU5OSw3IEBAIHZvaWQgQVZWaWRl
b0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVEZXZpY2VTdXNwZW5kZWREaWRDaGFuZ2UoKQogI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CiAg
ICAgICAgIGF1dG8gaXNTdXNwZW5kZWQgPSBbbV9kZXZpY2UgaXNTdXNwZW5kZWRdOworICAgICAg
ICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAhIWlzU3VzcGVuZGVk
KTsKICAgICAgICAgaWYgKGlzU3VzcGVuZGVkID09IG11dGVkKCkpCiAgICAgICAgICAgICByZXR1
cm47CiAKQEAgLTYyOSw2ICs2NDIsOCBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpnZW5l
cmF0ZVByZXNldHMoKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIEFWVmlkZW9DYXB0
dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvcihSZXRhaW5QdHI8TlNFcnJvcj4g
ZXJyb3IpCiB7CisgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCBb
W2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7CisKICAgICBpZiAoIW1f
aXNSdW5uaW5nIHx8IGVycm9yLmdldCgpLmNvZGUgIT0gQVZFcnJvck1lZGlhU2VydmljZXNXZXJl
UmVzZXQpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjM5LDExICs2NTQsMTQgQEAgdm9pZCBBVlZp
ZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3IoUmV0YWluUHRyPE5T
RXJyb3I+IGVycm9yKQogCiB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lv
bkJlZ2luSW50ZXJydXB0aW9uKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9u
KQogeworICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsIFtub3Rp
ZmljYXRpb24udXNlckluZm9bQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvbktleV0g
aW50ZWdlclZhbHVlXSk7CiAgICAgbV9pbnRlcnJ1cHRpb24gPSBzdGF0aWNfY2FzdDxBVlZpZGVv
Q2FwdHVyZVNvdXJjZTo6SW50ZXJydXB0aW9uUmVhc29uPihbbm90aWZpY2F0aW9uLmdldCgpLnVz
ZXJJbmZvW0FWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25LZXldIGludGVnZXJWYWx1
ZV0pOwogfQogCiB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvbkVuZElu
dGVycnVwdGlvbihSZXRhaW5QdHI8TlNOb3RpZmljYXRpb24+KQogeworICAgIEFMV0FZU19MT0df
SUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOworCiAgICAgSW50ZXJydXB0aW9uUmVhc29u
IHJlYXNvbiA9IG1faW50ZXJydXB0aW9uOwogCiAgICAgbV9pbnRlcnJ1cHRpb24gPSBJbnRlcnJ1
cHRpb25SZWFzb246Ok5vbmU7CkBAIC02NTcsNiArNjc1LDcgQEAgdm9pZCBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25FbmRJbnRlcnJ1cHRpb24oUmV0YWluUHRyPE5TTm90aWZp
Y2F0aW8KIAogdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGV2aWNlRGlzY29ubmVjdGVkKFJl
dGFpblB0cjxOU05vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uKQogeworICAgIEFMV0FZU19MT0df
SUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOwogICAgIGlmICh0aGlzLT5kZXZpY2UoKSA9
PSBbbm90aWZpY2F0aW9uIG9iamVjdF0pCiAgICAgICAgIGNhcHR1cmVGYWlsZWQoKTsKIH0KQEAg
LTcyNCwxMyArNzQzLDEzIEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmRldmljZURpc2Nv
bm5lY3RlZChSZXRhaW5QdHI8TlNOb3RpZmljYXRpb24+IG5vdGlmaWNhCiAgICAgaWQgbmV3VmFs
dWUgPSBbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOZXdLZXldOwogCiAgICAg
Ym9vbCB3aWxsQ2hhbmdlID0gW1tjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5v
dGlmaWNhdGlvbklzUHJpb3JLZXldIGJvb2xWYWx1ZV07Ci0jaWYgIUxPR19ESVNBQkxFRAogCi0g
ICAgaWYgKHdpbGxDaGFuZ2UpCi0gICAgICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVlZpZGVvQ2Fw
dHVyZVNvdXJjZU9ic2VydmVyOjpvYnNlcnZlVmFsdWVGb3JLZXlQYXRoKCVwKSAtIHdpbGwgY2hh
bmdlLCBrZXlQYXRoID0gJXMiLCBzZWxmLCBba2V5UGF0aCBVVEY4U3RyaW5nXSk7Ci0gICAgZWxz
ZSB7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgaWYgKG1fY2FsbGJhY2stPmxvZ2dl
clB0cigpICYmIG1fY2FsbGJhY2stPmxvZ2dlcigpLndpbGxMb2cobV9jYWxsYmFjay0+bG9nQ2hh
bm5lbCgpLCBXVEZMb2dMZXZlbERlYnVnKSkgeworICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBM
b2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyKCJBVlZpZGVvQ2FwdHVyZVNvdXJjZSIsICJvYnNlcnZl
VmFsdWVGb3JLZXlQYXRoIiwgbV9jYWxsYmFjay0+bG9nSWRlbnRpZmllcigpKTsKKwogICAgICAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IHZhbHVlU3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFs
bG9jXSBpbml0V2l0aEZvcm1hdDpAIiVAIiwgbmV3VmFsdWVdKTsKLSAgICAgICAgTE9HKE1lZGlh
LCAiV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXI6Om9ic2VydmVWYWx1ZUZvcktl
eVBhdGgoJXApIC0gZGlkIGNoYW5nZSwga2V5UGF0aCA9ICVzLCB2YWx1ZSA9ICVzIiwgc2VsZiwg
W2tleVBhdGggVVRGOFN0cmluZ10sIFt2YWx1ZVN0cmluZy5nZXQoKSBVVEY4U3RyaW5nXSk7Cisg
ICAgICAgIG1fY2FsbGJhY2stPmxvZ2dlcigpLmRlYnVnKG1fY2FsbGJhY2stPmxvZ0NoYW5uZWwo
KSwgaWRlbnRpZmllciwgImRpZCBjaGFuZ2UgJyIsIFtrZXlQYXRoIFVURjhTdHJpbmddLCAiJyB0
byAiLCBbdmFsdWVTdHJpbmcuZ2V0KCkgVVRGOFN0cmluZ10pOwogICAgIH0KICNlbmRpZgogCkBA
IC03NDIsOCArNzYxLDYgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGV2aWNlRGlzY29u
bmVjdGVkKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4gbm90aWZpY2EKIAogLSAodm9pZClkZXZp
Y2VDb25uZWN0ZWREaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KIHsKLSAg
ICBMT0coTWVkaWEsICJXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlcjo6ZGV2aWNl
Q29ubmVjdGVkRGlkQ2hhbmdlKCVwKSIsIHNlbGYpOwotCiAgICAgaWYgKG1fY2FsbGJhY2spCiAg
ICAgICAgIG1fY2FsbGJhY2stPmRldmljZURpc2Nvbm5lY3RlZChub3RpZmljYXRpb24pOwogfQpA
QCAtNzUyLDI0ICs3NjksMTggQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGV2aWNlRGlz
Y29ubmVjdGVkKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4gbm90aWZpY2EKIC0gKHZvaWQpc2Vz
c2lvblJ1bnRpbWVFcnJvcjooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbgogewogICAgIE5T
RXJyb3IgKmVycm9yID0gbm90aWZpY2F0aW9uLnVzZXJJbmZvW0FWQ2FwdHVyZVNlc3Npb25FcnJv
cktleV07Ci0gICAgTE9HKE1lZGlhLCAiV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2
ZXI6OnNlc3Npb25SdW50aW1lRXJyb3IoJXApIC0gZXJyb3IgPSAlcyIsIHNlbGYsIFtbZXJyb3Ig
bG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKLQogICAgIGlmIChtX2NhbGxiYWNr
KQogICAgICAgICBtX2NhbGxiYWNrLT5jYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvcihlcnJvcik7
CiB9CiAKIC0gKHZvaWQpYmVnaW5TZXNzaW9uSW50ZXJydXB0ZWQ6KE5TTm90aWZpY2F0aW9uKilu
b3RpZmljYXRpb24KIHsKLSAgICBMT0coTWVkaWEsICJXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3Vy
Y2VPYnNlcnZlcjo6YmVnaW5TZXNzaW9uSW50ZXJydXB0ZWQoJXApIC0gcmVhc29uID0gJWQiLCBz
ZWxmLCBbbm90aWZpY2F0aW9uLnVzZXJJbmZvW0FWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25S
ZWFzb25LZXldIGludGVnZXJWYWx1ZV0pOwotCiAgICAgaWYgKG1fY2FsbGJhY2spCiAgICAgICAg
IG1fY2FsbGJhY2stPmNhcHR1cmVTZXNzaW9uQmVnaW5JbnRlcnJ1cHRpb24obm90aWZpY2F0aW9u
KTsKIH0KIAogLSAodm9pZCllbmRTZXNzaW9uSW50ZXJydXB0ZWQ6KE5TTm90aWZpY2F0aW9uKilu
b3RpZmljYXRpb24KIHsKLSAgICBMT0coTWVkaWEsICJXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3Vy
Y2VPYnNlcnZlcjo6ZW5kU2Vzc2lvbkludGVycnVwdGVkKCVwKSIsIHNlbGYpOwotCiAgICAgaWYg
KG1fY2FsbGJhY2spCiAgICAgICAgIG1fY2FsbGJhY2stPmNhcHR1cmVTZXNzaW9uRW5kSW50ZXJy
dXB0aW9uKG5vdGlmaWNhdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5j
cHAKaW5kZXggYzcxZDM1N2ZhZjMuLmM0MWJmN2E2MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0Nh
cHR1cmVTb3VyY2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgQ29yZUF1ZGlvU2hhcmVk
VW5pdDo6ZGV2aWNlc0NoYW5nZWQoY29uc3QgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBkZXZpY2Vz
KQogdm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0OjphZGRFY2hvQ2FuY2VsbGF0aW9uU291cmNlKEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZSYgc291cmNlKQogewogICAgIGlmICghc291cmNlLnNldE91dHB1
dEZvcm1hdChtX3NwZWFrZXJQcm9jRm9ybWF0KSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmFkZEVjaG9DYW5jZWxsYXRpb25Tb3VyY2U6
IHNvdXJjZSAlcCBjb25maWd1cmVPdXRwdXQgZmFpbGVkIiwgJnNvdXJjZSk7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmFkZEVjaG9DYW5j
ZWxsYXRpb25Tb3VyY2U6IHNvdXJjZSAlcCBjb25maWd1cmVPdXRwdXQgZmFpbGVkIiwgJnNvdXJj
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI2OSw3ICsyNjksNyBAQCBPU1N0YXR1
cyBDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXR1cEF1ZGlvVW5pdCgpCiAgICAgQXVkaW9Db21wb25l
bnQgaW9Db21wb25lbnQgPSBBdWRpb0NvbXBvbmVudEZpbmROZXh0KG51bGxwdHIsICZpb1VuaXRE
ZXNjcmlwdGlvbik7CiAgICAgQVNTRVJUKGlvQ29tcG9uZW50KTsKICAgICBpZiAoIWlvQ29tcG9u
ZW50KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBmaW5kIHZwaW8gdW5pdCBjb21w
b25lbnQiLCB0aGlzKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiQ29yZUF1
ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBmaW5kIHZwaW8gdW5p
dCBjb21wb25lbnQiLCB0aGlzKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIApAQCAtMjc5
LDEzICsyNzksMTMgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRpb1Vu
aXQoKQogICAgIGlmIChuYW1lKSB7CiAgICAgICAgIG1faW9Vbml0TmFtZSA9IG5hbWU7CiAgICAg
ICAgIENGUmVsZWFzZShuYW1lKTsKLSAgICAgICAgUkVMRUFTRV9MT0coTWVkaWEsICJDb3JlQXVk
aW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdCglcCkgY3JlYXRlZCBcIiVzXCIgY29tcG9u
ZW50IiwgdGhpcywgbV9pb1VuaXROYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNF
X0xPRyhXZWJSVEMsICJDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXR1cEF1ZGlvVW5pdCglcCkgY3Jl
YXRlZCBcIiVzXCIgY29tcG9uZW50IiwgdGhpcywgbV9pb1VuaXROYW1lLnV0ZjgoKS5kYXRhKCkp
OwogICAgIH0KICNlbmRpZgogCiAgICAgYXV0byBlcnIgPSBBdWRpb0NvbXBvbmVudEluc3RhbmNl
TmV3KGlvQ29tcG9uZW50LCAmbV9pb1VuaXQpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlv
VW5pdCglcCkgdW5hYmxlIHRvIG9wZW4gdnBpbyB1bml0LCBlcnJvciAlZCAoJS40cykiLCB0aGlz
LCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJS
VEMsICJDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXR1cEF1ZGlvVW5pdCglcCkgdW5hYmxlIHRvIG9w
ZW4gdnBpbyB1bml0LCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZl
cnIpOwogICAgICAgICByZXR1cm4gZXJyOwogICAgIH0KIApAQCAtMjkzLDEzICsyOTMsMTMgQEAg
T1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRpb1VuaXQoKQogICAgICAgICB1
aW50MzJfdCBwYXJhbSA9IDA7CiAgICAgICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1f
aW9Vbml0LCBrQVVWb2ljZUlPUHJvcGVydHlfVm9pY2VQcm9jZXNzaW5nRW5hYmxlQUdDLCBrQXVk
aW9Vbml0U2NvcGVfR2xvYmFsLCBpbnB1dEJ1cywgJnBhcmFtLCBzaXplb2YocGFyYW0pKTsKICAg
ICAgICAgaWYgKGVycikgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJD
b3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdCglcCkgdW5hYmxlIHRvIHNldCB2
cGlvIGF1dG9tYXRpYyBnYWluIGNvbnRyb2wsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQp
ZXJyLCAoY2hhciopJmVycik7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMs
ICJDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXR1cEF1ZGlvVW5pdCglcCkgdW5hYmxlIHRvIHNldCB2
cGlvIGF1dG9tYXRpYyBnYWluIGNvbnRyb2wsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQp
ZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgICAgICByZXR1cm4gZXJyOwogICAgICAgICB9CiAg
ICAgICAgIHBhcmFtID0gMTsKICAgICAgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9p
b1VuaXQsIGtBVVZvaWNlSU9Qcm9wZXJ0eV9CeXBhc3NWb2ljZVByb2Nlc3NpbmcsIGtBdWRpb1Vu
aXRTY29wZV9HbG9iYWwsIGlucHV0QnVzLCAmcGFyYW0sIHNpemVvZihwYXJhbSkpOwogICAgICAg
ICBpZiAoZXJyKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkNvcmVB
dWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0KCVwKSB1bmFibGUgdG8gc2V0IHZwaW8g
dW5pdCBlY2hvIGNhbmNlbGxhdGlvbiwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIs
IChjaGFyKikmZXJyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIkNv
cmVBdWRpb1NoYXJlZFVuaXQ6OnNldHVwQXVkaW9Vbml0KCVwKSB1bmFibGUgdG8gc2V0IHZwaW8g
dW5pdCBlY2hvIGNhbmNlbGxhdGlvbiwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIs
IChjaGFyKikmZXJyKTsKICAgICAgICAgICAgIHJldHVybiBlcnI7CiAgICAgICAgIH0KICAgICB9
CkBAIC0zMDgsNyArMzA4LDcgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBB
dWRpb1VuaXQoKQogICAgIHVpbnQzMl90IHBhcmFtID0gMTsKICAgICBlcnIgPSBBdWRpb1VuaXRT
ZXRQcm9wZXJ0eShtX2lvVW5pdCwga0F1ZGlvT3V0cHV0VW5pdFByb3BlcnR5X0VuYWJsZUlPLCBr
QXVkaW9Vbml0U2NvcGVfSW5wdXQsIGlucHV0QnVzLCAmcGFyYW0sIHNpemVvZihwYXJhbSkpOwog
ICAgIGlmIChlcnIpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDb3JlQXVk
aW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdCglcCkgdW5hYmxlIHRvIGVuYWJsZSB2cGlv
IHVuaXQgaW5wdXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVy
cik7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIkNvcmVBdWRpb1NoYXJlZFVu
aXQ6OnNldHVwQXVkaW9Vbml0KCVwKSB1bmFibGUgdG8gZW5hYmxlIHZwaW8gdW5pdCBpbnB1dCwg
ZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKICAgICAgICAg
cmV0dXJuIGVycjsKICAgICB9CiAjZWxzZQpAQCAtMzIwLDcgKzMyMCw3IEBAIE9TU3RhdHVzIENv
cmVBdWRpb1NoYXJlZFVuaXQ6OnNldHVwQXVkaW9Vbml0KCkKIAogICAgIGVyciA9IEF1ZGlvVW5p
dFNldFByb3BlcnR5KG1faW9Vbml0LCBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfQ3VycmVudERl
dmljZSwga0F1ZGlvVW5pdFNjb3BlX0dsb2JhbCwgaW5wdXRCdXMsICZtX2NhcHR1cmVEZXZpY2VJ
RCwgc2l6ZW9mKG1fY2FwdHVyZURldmljZUlEKSk7CiAgICAgaWYgKGVycikgewotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVk
aW9Vbml0KCVwKSB1bmFibGUgdG8gc2V0IHZwaW8gdW5pdCBjYXB0dXJlIGRldmljZSBJRCwgZXJy
b3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRpb1Vu
aXQoJXApIHVuYWJsZSB0byBzZXQgdnBpbyB1bml0IGNhcHR1cmUgZGV2aWNlIElELCBlcnJvciAl
ZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwogICAgICAgICByZXR1cm4g
ZXJyOwogICAgIH0KICNlbmRpZgpAQCAtMzM1LDcgKzMzNSw3IEBAIE9TU3RhdHVzIENvcmVBdWRp
b1NoYXJlZFVuaXQ6OnNldHVwQXVkaW9Vbml0KCkKIAogICAgIGVyciA9IEF1ZGlvVW5pdEluaXRp
YWxpemUobV9pb1VuaXQpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdCglcCkgQXVk
aW9Vbml0SW5pdGlhbGl6ZSgpIGZhaWxlZCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCll
cnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiQ29y
ZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRpb1VuaXQoJXApIEF1ZGlvVW5pdEluaXRpYWxpemUo
KSBmYWlsZWQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7
CiAgICAgICAgIHJldHVybiBlcnI7CiAgICAgfQogICAgIG1faW9Vbml0SW5pdGlhbGl6ZWQgPSB0
cnVlOwpAQCAtMzU4LDcgKzM1OCw3IEBAIE9TU3RhdHVzIENvcmVBdWRpb1NoYXJlZFVuaXQ6OmNv
bmZpZ3VyZU1pY3JvcGhvbmVQcm9jKCkKICAgICBBVVJlbmRlckNhbGxiYWNrU3RydWN0IGNhbGxi
YWNrID0geyBtaWNyb3Bob25lQ2FsbGJhY2ssIHRoaXMgfTsKICAgICBhdXRvIGVyciA9IEF1ZGlv
VW5pdFNldFByb3BlcnR5KG1faW9Vbml0LCBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfU2V0SW5w
dXRDYWxsYmFjaywga0F1ZGlvVW5pdFNjb3BlX0dsb2JhbCwgaW5wdXRCdXMsICZjYWxsYmFjaywg
c2l6ZW9mKGNhbGxiYWNrKSk7CiAgICAgaWYgKGVycikgewotICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihNZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmNvbmZpZ3VyZU1pY3JvcGhvbmVQcm9j
KCVwKSB1bmFibGUgdG8gc2V0IHZwaW8gdW5pdCBtaWMgcHJvYywgZXJyb3IgJWQgKCUuNHMpIiwg
dGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
V2ViUlRDLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y29uZmlndXJlTWljcm9waG9uZVByb2MoJXAp
IHVuYWJsZSB0byBzZXQgdnBpbyB1bml0IG1pYyBwcm9jLCBlcnJvciAlZCAoJS40cykiLCB0aGlz
LCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwogICAgICAgICByZXR1cm4gZXJyOwogICAgIH0KIApA
QCAtMzY3LDE0ICszNjcsMTQgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y29uZmln
dXJlTWljcm9waG9uZVByb2MoKQogICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKG1pY3JvcGhvbmVQ
cm9jRm9ybWF0KTsKICAgICBlcnIgPSBBdWRpb1VuaXRHZXRQcm9wZXJ0eShtX2lvVW5pdCwga0F1
ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwgaW5w
dXRCdXMsICZtaWNyb3Bob25lUHJvY0Zvcm1hdCwgJnNpemUpOwogICAgIGlmIChlcnIpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDb3JlQXVkaW9TaGFyZWRVbml0Ojpjb25m
aWd1cmVNaWNyb3Bob25lUHJvYyglcCkgdW5hYmxlIHRvIGdldCBvdXRwdXQgc3RyZWFtIGZvcm1h
dCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y29uZmln
dXJlTWljcm9waG9uZVByb2MoJXApIHVuYWJsZSB0byBnZXQgb3V0cHV0IHN0cmVhbSBmb3JtYXQs
IGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAg
IHJldHVybiBlcnI7CiAgICAgfQogCiAgICAgbWljcm9waG9uZVByb2NGb3JtYXQubVNhbXBsZVJh
dGUgPSBtX3NhbXBsZVJhdGU7CiAgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9pb1Vu
aXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9PdXRw
dXQsIGlucHV0QnVzLCAmbWljcm9waG9uZVByb2NGb3JtYXQsIHNpemUpOwogICAgIGlmIChlcnIp
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDb3JlQXVkaW9TaGFyZWRVbml0
Ojpjb25maWd1cmVNaWNyb3Bob25lUHJvYyglcCkgdW5hYmxlIHRvIHNldCBvdXRwdXQgc3RyZWFt
IGZvcm1hdCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6
Y29uZmlndXJlTWljcm9waG9uZVByb2MoJXApIHVuYWJsZSB0byBzZXQgb3V0cHV0IHN0cmVhbSBm
b3JtYXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAg
ICAgICAgIHJldHVybiBlcnI7CiAgICAgfQogCkBAIC0zODksNyArMzg5LDcgQEAgT1NTdGF0dXMg
Q29yZUF1ZGlvU2hhcmVkVW5pdDo6Y29uZmlndXJlU3BlYWtlclByb2MoKQogICAgIEFVUmVuZGVy
Q2FsbGJhY2tTdHJ1Y3QgY2FsbGJhY2sgPSB7IHNwZWFrZXJDYWxsYmFjaywgdGhpcyB9OwogICAg
IGF1dG8gZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9pb1VuaXQsIGtBdWRpb1VuaXRQcm9w
ZXJ0eV9TZXRSZW5kZXJDYWxsYmFjaywga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCBvdXRwdXRCdXMs
ICZjYWxsYmFjaywgc2l6ZW9mKGNhbGxiYWNrKSk7CiAgICAgaWYgKGVycikgewotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmNvbmZpZ3VyZVNw
ZWFrZXJQcm9jKCVwKSB1bmFibGUgdG8gc2V0IHZwaW8gdW5pdCBzcGVha2VyIHByb2MsIGVycm9y
ICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFdlYlJUQywgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmNvbmZpZ3VyZVNwZWFr
ZXJQcm9jKCVwKSB1bmFibGUgdG8gc2V0IHZwaW8gdW5pdCBzcGVha2VyIHByb2MsIGVycm9yICVk
ICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgIHJldHVybiBl
cnI7CiAgICAgfQogCkBAIC0zOTgsMTQgKzM5OCwxNCBAQCBPU1N0YXR1cyBDb3JlQXVkaW9TaGFy
ZWRVbml0Ojpjb25maWd1cmVTcGVha2VyUHJvYygpCiAgICAgVUludDMyIHNpemUgPSBzaXplb2Yo
c3BlYWtlclByb2NGb3JtYXQpOwogICAgIGVyciA9IEF1ZGlvVW5pdEdldFByb3BlcnR5KG1faW9V
bml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5w
dXQsIG91dHB1dEJ1cywgJnNwZWFrZXJQcm9jRm9ybWF0LCAmc2l6ZSk7CiAgICAgaWYgKGVycikg
ewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6
OmNvbmZpZ3VyZVNwZWFrZXJQcm9jKCVwKSB1bmFibGUgdG8gZ2V0IGlucHV0IHN0cmVhbSBmb3Jt
YXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmNvbmZp
Z3VyZVNwZWFrZXJQcm9jKCVwKSB1bmFibGUgdG8gZ2V0IGlucHV0IHN0cmVhbSBmb3JtYXQsIGVy
cm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgIHJl
dHVybiBlcnI7CiAgICAgfQogCiAgICAgc3BlYWtlclByb2NGb3JtYXQubVNhbXBsZVJhdGUgPSBt
X3NhbXBsZVJhdGU7CiAgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9pb1VuaXQsIGtB
dWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgb3V0
cHV0QnVzLCAmc3BlYWtlclByb2NGb3JtYXQsIHNpemUpOwogICAgIGlmIChlcnIpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDb3JlQXVkaW9TaGFyZWRVbml0Ojpjb25maWd1
cmVTcGVha2VyUHJvYyglcCkgdW5hYmxlIHRvIGdldCBpbnB1dCBzdHJlYW0gZm9ybWF0LCBlcnJv
ciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihXZWJSVEMsICJDb3JlQXVkaW9TaGFyZWRVbml0Ojpjb25maWd1cmVTcGVh
a2VyUHJvYyglcCkgdW5hYmxlIHRvIGdldCBpbnB1dCBzdHJlYW0gZm9ybWF0LCBlcnJvciAlZCAo
JS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwogICAgICAgICByZXR1cm4gZXJy
OwogICAgIH0KIApAQCAtNDE5LDcgKzQxOSw3IEBAIE9TU3RhdHVzIENvcmVBdWRpb1NoYXJlZFVu
aXQ6OmNvbmZpZ3VyZVNwZWFrZXJQcm9jKCkKIHZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y2hl
Y2tUaW1lc3RhbXBzKGNvbnN0IEF1ZGlvVGltZVN0YW1wJiB0aW1lU3RhbXAsIHVpbnQ2NF90IHNh
bXBsZVRpbWUsIGRvdWJsZSBob3N0VGltZSkKIHsKICAgICBpZiAoIXRpbWVTdGFtcC5tU2FtcGxl
VGltZSB8fCBzYW1wbGVUaW1lID09IG1fbGF0ZXN0TWljVGltZVN0YW1wIHx8ICFob3N0VGltZSkK
LSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDb3JlQXVkaW9TaGFyZWRVbml0Ojpj
aGVja1RpbWVzdGFtcHM6IHVudXN1YWwgdGltZXN0YW1wcywgc2FtcGxlIHRpbWUgPSAlbGxkLCBw
cmV2aW91cyBzYW1wbGUgdGltZSA9ICVsbGQsIGhvc3RUaW1lICVmIiwgc2FtcGxlVGltZSwgbV9s
YXRlc3RNaWNUaW1lU3RhbXAsIGhvc3RUaW1lKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
V2ViUlRDLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y2hlY2tUaW1lc3RhbXBzOiB1bnVzdWFsIHRp
bWVzdGFtcHMsIHNhbXBsZSB0aW1lID0gJWxsZCwgcHJldmlvdXMgc2FtcGxlIHRpbWUgPSAlbGxk
LCBob3N0VGltZSAlZiIsIHNhbXBsZVRpbWUsIG1fbGF0ZXN0TWljVGltZVN0YW1wLCBob3N0VGlt
ZSk7CiB9CiAjZW5kaWYKIApAQCAtNDMxLDcgKzQzMSw3IEBAIE9TU3RhdHVzIENvcmVBdWRpb1No
YXJlZFVuaXQ6OnByb3ZpZGVTcGVha2VyRGF0YShBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyYg
LyppCiAjZW5kaWYKIAogICAgIGlmIChtX3NwZWFrZXJTYW1wbGVCdWZmZXItPnNhbXBsZUNhcGFj
aXR5KCkgPCBpbk51bWJlckZyYW1lcykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OnByb3ZpZGVTcGVha2VyRGF0YTogc3BlYWtlciBzYW1w
bGUgYnVmZmVyIHNpemUgKCVkKSB0b28gc21hbGwgZm9yIGFtb3VudCBvZiBzYW1wbGUgZGF0YSBy
ZXF1ZXN0ZWQgKCVkKSEiLCBtX3NwZWFrZXJTYW1wbGVCdWZmZXItPnNhbXBsZUNhcGFjaXR5KCks
IChpbnQpaW5OdW1iZXJGcmFtZXMpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMs
ICJDb3JlQXVkaW9TaGFyZWRVbml0Ojpwcm92aWRlU3BlYWtlckRhdGE6IHNwZWFrZXIgc2FtcGxl
IGJ1ZmZlciBzaXplICglZCkgdG9vIHNtYWxsIGZvciBhbW91bnQgb2Ygc2FtcGxlIGRhdGEgcmVx
dWVzdGVkICglZCkhIiwgbV9zcGVha2VyU2FtcGxlQnVmZmVyLT5zYW1wbGVDYXBhY2l0eSgpLCAo
aW50KWluTnVtYmVyRnJhbWVzKTsKICAgICAgICAgcmV0dXJuIGtBdWRpb19QYXJhbUVycm9yOwog
ICAgIH0KIApAQCAtNDk0LDcgKzQ5NCw3IEBAIE9TU3RhdHVzIENvcmVBdWRpb1NoYXJlZFVuaXQ6
OnByb2Nlc3NNaWNyb3Bob25lU2FtcGxlcyhBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFnCiAgICAg
QXVkaW9CdWZmZXJMaXN0JiBidWZmZXJMaXN0ID0gbV9taWNyb3Bob25lU2FtcGxlQnVmZmVyLT5i
dWZmZXJMaXN0KCk7CiAgICAgYXV0byBlcnIgPSBBdWRpb1VuaXRSZW5kZXIobV9pb1VuaXQsICZp
b0FjdGlvbkZsYWdzLCAmdGltZVN0YW1wLCBpbkJ1c051bWJlciwgaW5OdW1iZXJGcmFtZXMsICZi
dWZmZXJMaXN0KTsKICAgICBpZiAoZXJyKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1l
ZGlhLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6cHJvY2Vzc01pY3JvcGhvbmVTYW1wbGVzKCVwKSBB
dWRpb1VuaXRSZW5kZXIgZmFpbGVkIHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCll
cnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiQ29y
ZUF1ZGlvU2hhcmVkVW5pdDo6cHJvY2Vzc01pY3JvcGhvbmVTYW1wbGVzKCVwKSBBdWRpb1VuaXRS
ZW5kZXIgZmFpbGVkIHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFy
KikmZXJyKTsKICAgICAgICAgcmV0dXJuIGVycjsKICAgICB9CiAKQEAgLTUzMCw3ICs1MzAsNyBA
QCB2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OmNsZWFudXBBdWRpb1VuaXQoKQogICAgICAgICBB
U1NFUlQobV9pb1VuaXQpOwogICAgICAgICBhdXRvIGVyciA9IEF1ZGlvVW5pdFVuaW5pdGlhbGl6
ZShtX2lvVW5pdCk7CiAgICAgICAgIGlmIChlcnIpCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihNZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmNsZWFudXBBdWRpb1VuaXQoJXApIEF1
ZGlvVW5pdFVuaW5pdGlhbGl6ZSBmYWlsZWQgd2l0aCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAo
aW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2Vi
UlRDLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y2xlYW51cEF1ZGlvVW5pdCglcCkgQXVkaW9Vbml0
VW5pbml0aWFsaXplIGZhaWxlZCB3aXRoIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJy
LCAoY2hhciopJmVycik7CiAgICAgICAgIG1faW9Vbml0SW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAg
ICB9CiAKQEAgLTU1NSw3ICs1NTUsNyBAQCBPU1N0YXR1cyBDb3JlQXVkaW9TaGFyZWRVbml0Ojpy
ZWNvbmZpZ3VyZUF1ZGlvVW5pdCgpCiAgICAgaWYgKG1faW9Vbml0U3RhcnRlZCkgewogICAgICAg
ICBlcnIgPSBBdWRpb091dHB1dFVuaXRTdG9wKG1faW9Vbml0KTsKICAgICAgICAgaWYgKGVycikg
ewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDb3JlQXVkaW9TaGFyZWRV
bml0OjpyZWNvbmZpZ3VyZUF1ZGlvVW5pdCglcCkgQXVkaW9PdXRwdXRVbml0U3RvcCBmYWlsZWQg
d2l0aCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6
cmVjb25maWd1cmVBdWRpb1VuaXQoJXApIEF1ZGlvT3V0cHV0VW5pdFN0b3AgZmFpbGVkIHdpdGgg
ZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKICAgICAgICAg
ICAgIHJldHVybiBlcnI7CiAgICAgICAgIH0KICAgICB9CkBAIC01NjgsNyArNTY4LDcgQEAgT1NT
dGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6cmVjb25maWd1cmVBdWRpb1VuaXQoKQogICAgIGlm
IChtX2lvVW5pdFN0YXJ0ZWQpIHsKICAgICAgICAgZXJyID0gQXVkaW9PdXRwdXRVbml0U3RhcnQo
bV9pb1VuaXQpOwogICAgICAgICBpZiAoZXJyKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihNZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OnJlY29uZmlndXJlQXVkaW9Vbml0KCVw
KSBBdWRpb091dHB1dFVuaXRTdGFydCBmYWlsZWQgd2l0aCBlcnJvciAlZCAoJS40cykiLCB0aGlz
LCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
V2ViUlRDLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6cmVjb25maWd1cmVBdWRpb1VuaXQoJXApIEF1
ZGlvT3V0cHV0VW5pdFN0YXJ0IGZhaWxlZCB3aXRoIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChp
bnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgICAgICByZXR1cm4gZXJyOwogICAgICAgICB9
CiAgICAgfQpAQCAtNjI3LDcgKzYyNyw3IEBAIE9TU3RhdHVzIENvcmVBdWRpb1NoYXJlZFVuaXQ6
OnN0YXJ0SW50ZXJuYWwoKQogCiAgICAgZXJyID0gQXVkaW9PdXRwdXRVbml0U3RhcnQobV9pb1Vu
aXQpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJD
b3JlQXVkaW9TaGFyZWRVbml0OjpzdGFydCglcCkgQXVkaW9PdXRwdXRVbml0U3RhcnQgZmFpbGVk
IHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c3Rh
cnQoJXApIEF1ZGlvT3V0cHV0VW5pdFN0YXJ0IGZhaWxlZCB3aXRoIGVycm9yICVkICglLjRzKSIs
IHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgIHJldHVybiBlcnI7CiAgICAg
fQogCkBAIC02NDksMTQgKzY0OSwxMyBAQCB2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnZlcmlm
eUlzQ2FwdHVyaW5nKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFdlYlJUQywgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OnZlcmlmeUlzQ2FwdHVyaW5nIC0g
bm8gYXVkaW8gcmVjZWl2ZWQgaW4gJWQgc2Vjb25kcywgZmFpbGluZyIsIHN0YXRpY19jYXN0PGlu
dD4obV92ZXJpZnlDYXB0dXJpbmdUaW1lci5yZXBlYXRJbnRlcnZhbCgpLnZhbHVlKCkpKTsKICAg
ICBjYXB0dXJlRmFpbGVkKCk7CiB9CiAKIHZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y2FwdHVy
ZUZhaWxlZCgpCiB7Ci0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWEsICJDb3JlQXVkaW9TaGFyZWRVbml0OjpjYXB0dXJlRmFpbGVkIC0gY2FwdHVy
ZSBmYWlsZWQiKTsKLSNlbmRpZgorICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIkNvcmVB
dWRpb1NoYXJlZFVuaXQ6OmNhcHR1cmVGYWlsZWQgLSBjYXB0dXJlIGZhaWxlZCIpOwogICAgIGZv
ciAoQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSYgY2xpZW50IDogbV9jbGllbnRzKQogICAgICAgICBj
bGllbnQuY2FwdHVyZUZhaWxlZCgpOwogCkBAIC02OTcsNyArNjk2LDcgQEAgdm9pZCBDb3JlQXVk
aW9TaGFyZWRVbml0OjpzdG9wSW50ZXJuYWwoKQogCiAgICAgYXV0byBlcnIgPSBBdWRpb091dHB1
dFVuaXRTdG9wKG1faW9Vbml0KTsKICAgICBpZiAoZXJyKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c3RvcCglcCkgQXVkaW9PdXRwdXRV
bml0U3RvcCBmYWlsZWQgd2l0aCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNo
YXIqKSZlcnIpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJDb3JlQXVkaW9T
aGFyZWRVbml0OjpzdG9wKCVwKSBBdWRpb091dHB1dFVuaXRTdG9wIGZhaWxlZCB3aXRoIGVycm9y
ICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTcxMSw3ICs3MTAsNyBAQCBPU1N0YXR1cyBDb3JlQXVkaW9TaGFyZWRV
bml0OjpkZWZhdWx0SW5wdXREZXZpY2UodWludDMyX3QqIGRldmljZUlEKQogICAgIFVJbnQzMiBw
cm9wZXJ0eVNpemUgPSBzaXplb2YoKmRldmljZUlEKTsKICAgICBhdXRvIGVyciA9IEF1ZGlvVW5p
dEdldFByb3BlcnR5KG1faW9Vbml0LCBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfQ3VycmVudERl
dmljZSwga0F1ZGlvVW5pdFNjb3BlX0dsb2JhbCwgaW5wdXRCdXMsIGRldmljZUlELCAmcHJvcGVy
dHlTaXplKTsKICAgICBpZiAoZXJyKQotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwg
IkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmRlZmF1bHRJbnB1dERldmljZSglcCkgdW5hYmxlIHRvIGdl
dCBkZWZhdWx0IGlucHV0IGRldmljZSBJRCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCll
cnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiQ29y
ZUF1ZGlvU2hhcmVkVW5pdDo6ZGVmYXVsdElucHV0RGV2aWNlKCVwKSB1bmFibGUgdG8gZ2V0IGRl
ZmF1bHQgaW5wdXQgZGV2aWNlIElELCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwg
KGNoYXIqKSZlcnIpOwogCiAgICAgcmV0dXJuIGVycjsKIH0KQEAgLTgzNiw2ICs4MzUsNyBAQCB2
b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmluaXRpYWxpemVUb1N0YXJ0UHJvZHVjaW5nRGF0
YSgpCiAgICAgaWYgKG1faXNSZWFkeVRvU3RhcnQpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFM
V0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOwogICAgIG1faXNSZWFkeVRv
U3RhcnQgPSB0cnVlOwogCiAgICAgYXV0byYgdW5pdCA9IENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNp
bmdsZXRvbigpOwpAQCAtODY2LDExICs4NjYsMTMgQEAgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6
fkNvcmVBdWRpb0NhcHR1cmVTb3VyY2UoKQogCiB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6
OmFkZEVjaG9DYW5jZWxsYXRpb25Tb3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJiBzb3VyY2Up
CiB7CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUik7CiAgICAg
Q29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCkuYWRkRWNob0NhbmNlbGxhdGlvblNvdXJj
ZShzb3VyY2UpOwogfQogCiB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnJlbW92ZUVjaG9D
YW5jZWxsYXRpb25Tb3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJiBzb3VyY2UpCiB7CisgICAg
QUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUik7CiAgICAgQ29yZUF1ZGlv
U2hhcmVkVW5pdDo6c2luZ2xldG9uKCkucmVtb3ZlRWNob0NhbmNlbGxhdGlvblNvdXJjZShzb3Vy
Y2UpOwogfQogCkBAIC04ODEsNyArODgzLDExIEBAIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKICNlbmRpZgogCiAgICAgYXV0byYgdW5pdCA9IENvcmVB
dWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpOwotICAgIGlmICh1bml0LmlzU3VzcGVuZGVkKCkp
IHsKKworICAgIGF1dG8gaXNTdXNwZW5kZWQgPSB1bml0LmlzU3VzcGVuZGVkKCk7CisgICAgQUxX
QVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgaXNTdXNwZW5kZWQpOworCisg
ICAgaWYgKGlzU3VzcGVuZGVkKSB7CiAgICAgICAgIG1fc3VzcGVuZFR5cGUgPSBTdXNwZW5zaW9u
VHlwZTo6V2hpbGVQbGF5aW5nOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODk0LDcgKzkw
MCwxMCBAQCB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkK
IHsKICAgICBhdXRvJiB1bml0ID0gQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCk7CiAK
LSAgICBpZiAodW5pdC5pc1N1c3BlbmRlZCgpKSB7CisgICAgYXV0byBpc1N1c3BlbmRlZCA9IHVu
aXQuaXNTdXNwZW5kZWQoKTsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVO
VElGSUVSLCBpc1N1c3BlbmRlZCk7CisKKyAgICBpZiAoaXNTdXNwZW5kZWQpIHsKICAgICAgICAg
bV9zdXNwZW5kVHlwZSA9IFN1c3BlbnNpb25UeXBlOjpXaGlsZVBhdXNlZDsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTk1Myw2ICs5NjIsOCBAQCB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3Vy
Y2U6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dAog
CiB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNjaGVkdWxlUmVjb25maWd1cmF0aW9uKCkK
IHsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSKTsKKwogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0byYgdW5pdCA9IENvcmVBdWRpb1NoYXJl
ZFVuaXQ6OnNpbmdsZXRvbigpOwogICAgIGlmICghdW5pdC5oYXNBdWRpb1VuaXQoKSB8fCBtX3Jl
Y29uZmlndXJhdGlvblN0YXRlICE9IFJlY29uZmlndXJhdGlvblN0YXRlOjpOb25lKQpAQCAtOTcy
LDYgKzk4Myw4IEBAIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVSZWNvbmZp
Z3VyYXRpb24oKQogCiB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmJlZ2luSW50ZXJydXB0
aW9uKCkKIHsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSKTsK
KwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0byYgdW5pdCA9IENvcmVBdWRp
b1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpOwogICAgIGlmICghdW5pdC5oYXNBdWRpb1VuaXQoKSB8
fCB1bml0LmlzU3VzcGVuZGVkKCkgfHwgbV9zdXNwZW5kUGVuZGluZykKQEAgLTk4OCw2ICsxMDAx
LDggQEAgdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpiZWdpbkludGVycnVwdGlvbigpCiAK
IHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6ZW5kSW50ZXJydXB0aW9uKCkKIHsKKyAgICBB
TFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSKTsKKwogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgYXV0byYgdW5pdCA9IENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNp
bmdsZXRvbigpOwogICAgIGlmICghdW5pdC5oYXNBdWRpb1VuaXQoKSB8fCAhdW5pdC5pc1N1c3Bl
bmRlZCgpIHx8IG1fcmVzdW1lUGVuZGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5o
CmluZGV4IDU2NDQyNzIxYmQ1Li5iM2VhNzgyMTZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtOTUsNiArOTUsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaW5pdGlh
bGl6ZVRvU3RhcnRQcm9kdWNpbmdEYXRhKCk7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
KyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSI7IH0KKyNlbmRpZgorCiAgICAgdWludDMyX3QgbV9jYXB0
dXJlRGV2aWNlSUQgeyAwIH07CiAKICAgICBPcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0
dXJlU291cmNlTWFjLmgKaW5kZXggMDRiOGQ4Y2E4MzIuLmI4MmZlYWZhZDFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNh
cHR1cmVTb3VyY2VNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY2LDcgKzY2LDExIEBA
IHByaXZhdGU6CiAKICAgICBib29sIGNyZWF0ZURpc3BsYXlTdHJlYW0oKTsKICAgICB2b2lkIHN0
YXJ0RGlzcGxheVN0cmVhbSgpOwotICAgIAorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisg
ICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlNj
cmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjIjsgfQorI2VuZGlmCisKICAgICBjbGFzcyBEaXNw
bGF5U3VyZmFjZSB7CiAgICAgcHVibGljOgogICAgICAgICBEaXNwbGF5U3VyZmFjZSgpID0gZGVm
YXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5tbQppbmRl
eCAxZThhYzZjODZlMi4uZjZkNjMxZTQ3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxh
eUNhcHR1cmVTb3VyY2VNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTUsMTUgKzExNSwxOCBAQCBib29sIFNjcmVlbkRp
c3BsYXlDYXB0dXJlU291cmNlTWFjOjpjcmVhdGVEaXNwbGF5U3RyZWFtKCkKIHsKICAgICBzdGF0
aWMgY29uc3QgaW50IHNjcmVlblF1ZXVlTWF4aW11bUxlbmd0aCA9IDY7CiAKKyAgICBBTFdBWVNf
TE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSKTsKKwogICAgIGF1dG8gYWN0dWFsRGlz
cGxheUlEID0gdXBkYXRlRGlzcGxheUlEKG1fZGlzcGxheUlEKTsKICAgICBpZiAoIWFjdHVhbERp
c3BsYXlJRCkgeworICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJ
RVIsICJpbnZhbGlkIGRpc3BsYXkgSUQ6ICIsIG1fZGlzcGxheUlEKTsKICAgICAgICAgY2FwdHVy
ZUZhaWxlZCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKG1fZGlz
cGxheUlEICE9IGFjdHVhbERpc3BsYXlJRC52YWx1ZSgpKSB7CiAgICAgICAgIG1fZGlzcGxheUlE
ID0gYWN0dWFsRGlzcGxheUlELnZhbHVlKCk7Ci0gICAgICAgIFJFTEVBU0VfTE9HKE1lZGlhLCAi
U2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW06IGRpc3Bs
YXkgSUQgY2hhbmdlZCB0byAlZCIsIHN0YXRpY19jYXN0PGludD4obV9kaXNwbGF5SUQpKTsKKyAg
ICAgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgImRpc3BsYXkg
SUQgY2hhbmdlZCB0byAiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fZGlzcGxheUlEKSk7CiAgICAgICAg
IG1fZGlzcGxheVN0cmVhbSA9IG51bGxwdHI7CiAgICAgfQogCkBAIC0xMzIsNyArMTM1LDcgQEAg
Ym9vbCBTY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Y3JlYXRlRGlzcGxheVN0cmVhbSgp
CiAgICAgICAgIGF1dG8gc2NyZWVuV2lkdGggPSBDR0Rpc3BsYXlNb2RlR2V0UGl4ZWxzV2lkZShk
aXNwbGF5TW9kZS5nZXQoKSk7CiAgICAgICAgIGF1dG8gc2NyZWVuSGVpZ2h0ID0gQ0dEaXNwbGF5
TW9kZUdldFBpeGVsc0hpZ2goZGlzcGxheU1vZGUuZ2V0KCkpOwogICAgICAgICBpZiAoIXNjcmVl
bldpZHRoIHx8ICFzY3JlZW5IZWlnaHQpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HKE1lZGlh
LCAiU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW06IHVu
YWJsZSB0byBnZXQgc2NyZWVuIHdpZHRoL2hlaWdodCIpOworICAgICAgICAgICAgRVJST1JfTE9H
X0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIGdldCBzY3JlZW4gd2lk
dGgvaGVpZ2h0Iik7CiAgICAgICAgICAgICBjYXB0dXJlRmFpbGVkKCk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTE1OCw3ICsxNjEsNyBAQCBib29sIFNjcmVlbkRp
c3BsYXlDYXB0dXJlU291cmNlTWFjOjpjcmVhdGVEaXNwbGF5U3RyZWFtKCkKIAogICAgICAgICBt
X2Rpc3BsYXlTdHJlYW0gPSBhZG9wdENGKENHRGlzcGxheVN0cmVhbUNyZWF0ZVdpdGhEaXNwYXRj
aFF1ZXVlKG1fZGlzcGxheUlELCBzY3JlZW5XaWR0aCwgc2NyZWVuSGVpZ2h0LCBwcmVmZXJlZFBp
eGVsQnVmZmVyRm9ybWF0KCksIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpc3RyZWFtT3B0aW9u
cywgbV9jYXB0dXJlUXVldWUuZ2V0KCksIGZyYW1lQXZhaWxhYmxlQmxvY2spKTsKICAgICAgICAg
aWYgKCFtX2Rpc3BsYXlTdHJlYW0pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HKE1lZGlhLCAi
U2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW06IENHRGlz
cGxheVN0cmVhbUNyZWF0ZSBmYWlsZWQiKTsKKyAgICAgICAgICAgIEVSUk9SX0xPR19JRihsb2dn
ZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgIkNHRGlzcGxheVN0cmVhbUNyZWF0ZSBmYWlsZWQiKTsK
ICAgICAgICAgICAgIGNhcHR1cmVGYWlsZWQoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQpAQCAtMTc0LDYgKzE3Nyw3IEBAIGJvb2wgU2NyZWVuRGlzcGxheUNhcHR1cmVT
b3VyY2VNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW0oKQogCiB2b2lkIFNjcmVlbkRpc3BsYXlDYXB0
dXJlU291cmNlTWFjOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogeworICAgIEFMV0FZU19MT0dfSUYo
bG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOwogICAgIERpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2E6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwogCiAgICAgaWYgKG1faXNSdW5uaW5nKQpAQCAtMTg0
LDYgKzE4OCw3IEBAIHZvaWQgU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnN0YXJ0UHJv
ZHVjaW5nRGF0YSgpCiAKIHZvaWQgU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnN0b3BQ
cm9kdWNpbmdEYXRhKCkKIHsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVO
VElGSUVSKTsKICAgICBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzdG9wUHJvZHVjaW5nRGF0
YSgpOwogCiAgICAgaWYgKCFtX2lzUnVubmluZykKQEAgLTIxNCw3ICsyMTksNyBAQCB2b2lkIFNj
cmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpzdGFydERpc3BsYXlTdHJlYW0oKQogCiAgICAg
aWYgKG1fZGlzcGxheUlEICE9IGFjdHVhbERpc3BsYXlJRC52YWx1ZSgpKSB7CiAgICAgICAgIG1f
ZGlzcGxheUlEID0gYWN0dWFsRGlzcGxheUlELnZhbHVlKCk7Ci0gICAgICAgIFJFTEVBU0VfTE9H
KE1lZGlhLCAiU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnN0YXJ0RGlzcGxheVN0cmVh
bTogZGlzcGxheSBJRCBjaGFuZ2VkIHRvICVkIiwgc3RhdGljX2Nhc3Q8aW50PihtX2Rpc3BsYXlJ
RCkpOworICAgICAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAi
ZGlzcGxheSBJRCBjaGFuZ2VkIHRvICIsIHN0YXRpY19jYXN0PGludD4obV9kaXNwbGF5SUQpKTsK
ICAgICB9CiAKICAgICBpZiAoIW1fZGlzcGxheVN0cmVhbSAmJiAhY3JlYXRlRGlzcGxheVN0cmVh
bSgpKQpAQCAtMjIyLDcgKzIyNyw3IEBAIHZvaWQgU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VN
YWM6OnN0YXJ0RGlzcGxheVN0cmVhbSgpCiAKICAgICBhdXRvIGVyciA9IENHRGlzcGxheVN0cmVh
bVN0YXJ0KG1fZGlzcGxheVN0cmVhbS5nZXQoKSk7CiAgICAgaWYgKGVycikgewotICAgICAgICBS
RUxFQVNFX0xPRyhNZWRpYSwgIlNjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpzdGFydERp
c3BsYXlTdHJlYW06IENHRGlzcGxheVN0cmVhbVN0YXJ0IGZhaWxlZCB3aXRoIGVycm9yICVkIiwg
c3RhdGljX2Nhc3Q8aW50PihlcnIpKTsKKyAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigp
LCBMT0dJREVOVElGSUVSLCAiQ0dEaXNwbGF5U3RyZWFtU3RhcnQgZmFpbGVkIHdpdGggZXJyb3Ig
Iiwgc3RhdGljX2Nhc3Q8aW50PihlcnIpKTsKICAgICAgICAgY2FwdHVyZUZhaWxlZCgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364904</attachid>
            <date>2019-03-15 20:34:54 -0700</date>
            <delta_ts>2019-03-15 22:21:49 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>media-stream-logging-patch-3.txt</filename>
            <type>text/plain</type>
            <size>119099</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZWEzNmQ0MGMyNjYuLjZlOWQ0ZjM0ZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5
LTAzLTE1ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBtZWRpYSBzdHJlYW0gcmVsZWFzZSBsb2dnaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU4MjMKKworICAgICAgICBSZXZpZXdlZCBieSBZ
b3Vlbm4gRmFibGV0LgorCisgICAgICAgICogd3RmL0xvZ2dlckhlbHBlci5oOiBBZGQgTE9HX0lG
IHZhcmlhbnRzIHRoYXQgY2hlY2sgYSBjb25kaXRpb24gYmVmb3JlIGxvZ2dpbmcuCisKIDIwMTkt
MDMtMTMgIERvbWluaWsgSW5mdWVociAgPGRpbmZ1ZWhyQGlnYWxpYS5jb20+CiAKICAgICAgICAg
U3RyaW5nIG92ZXJmbG93IHdoZW4gdXNpbmcgU3RyaW5nQnVpbGRlciBpbiBKU0M6OmNyZWF0ZUVy
cm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXJIZWxwZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL0xvZ2dlckhlbHBlci5oCmluZGV4IGU4MjY0NzQ0N2MxLi5kMDNhZmU2NDE0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9nZ2VySGVscGVyLmgKKysrIGIvU291cmNlL1dURi93
dGYvTG9nZ2VySGVscGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9M
b2dnZXIuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC00NSwxNyArNDYsMjggQEAgcHVibGljOgog
I2RlZmluZSBBTFdBWVNfTE9HKC4uLikgICAgIGxvZ2dlcigpLmxvZ0Fsd2F5cyhsb2dDaGFubmVs
KCksIF9fVkFfQVJHU19fKQogI2RlZmluZSBFUlJPUl9MT0coLi4uKSAgICAgIGxvZ2dlcigpLmVy
cm9yKGxvZ0NoYW5uZWwoKSwgX19WQV9BUkdTX18pCiAjZGVmaW5lIFdBUk5JTkdfTE9HKC4uLikg
ICAgbG9nZ2VyKCkud2FybmluZyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQotI2RlZmluZSBO
T1RJQ0VfTE9HKC4uLikgICAgIGxvZ2dlcigpLm5vdGljZShsb2dDaGFubmVsKCksIF9fVkFfQVJH
U19fKQogI2RlZmluZSBJTkZPX0xPRyguLi4pICAgICAgIGxvZ2dlcigpLmluZm8obG9nQ2hhbm5l
bCgpLCBfX1ZBX0FSR1NfXykKICNkZWZpbmUgREVCVUdfTE9HKC4uLikgICAgICBsb2dnZXIoKS5k
ZWJ1Zyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQogI2RlZmluZSBXSUxMX0xPRyhfbGV2ZWxf
KSAgIGxvZ2dlcigpLndpbGxMb2cobG9nQ2hhbm5lbCgpLCBfbGV2ZWxfKQogCisjZGVmaW5lIEFM
V0FZU19MT0dfSUYoY29uZGl0aW9uLCAuLi4pICAgICBpZiAoY29uZGl0aW9uKSBsb2dnZXIoKS5s
b2dBbHdheXMobG9nQ2hhbm5lbCgpLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgRVJST1JfTE9HX0lG
KGNvbmRpdGlvbiwgLi4uKSAgICAgIGlmIChjb25kaXRpb24pIGxvZ2dlcigpLmVycm9yKGxvZ0No
YW5uZWwoKSwgX19WQV9BUkdTX18pCisjZGVmaW5lIFdBUk5JTkdfTE9HX0lGKGNvbmRpdGlvbiwg
Li4uKSAgICBpZiAoY29uZGl0aW9uKSBsb2dnZXIoKS53YXJuaW5nKGxvZ0NoYW5uZWwoKSwgX19W
QV9BUkdTX18pCisjZGVmaW5lIElORk9fTE9HX0lGKGNvbmRpdGlvbiwgLi4uKSAgICAgICBpZiAo
Y29uZGl0aW9uKSBsb2dnZXIoKS5pbmZvKGxvZ0NoYW5uZWwoKSwgX19WQV9BUkdTX18pCisjZGVm
aW5lIERFQlVHX0xPR19JRihjb25kaXRpb24sIC4uLikgICAgICBpZiAoY29uZGl0aW9uKSBsb2dn
ZXIoKS5kZWJ1Zyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQorCiAgICAgY29uc3Qgdm9pZCog
Y2hpbGRMb2dJZGVudGlmaWVyKHVpbnQ2NF90IGlkZW50aWZpZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBwYXJlbnRNYXNrID0gMHhmZmZmZmZmZmZmZmYwMDAw
bDsKICAgICAgICAgc3RhdGljIGNvbnN0IGludDY0X3QgbWFza0xvd2VyV29yZCA9IDB4ZmZmZmw7
CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigocmVpbnRlcnBy
ZXRfY2FzdDx1aW50NjRfdD4obG9nSWRlbnRpZmllcigpKSAmIHBhcmVudE1hc2spIHwgKGlkZW50
aWZpZXIgJiBtYXNrTG93ZXJXb3JkKSk7CiAgICAgfQorCisgICAgc3RhdGljIGNvbnN0IHZvaWQq
IHVuaXF1ZUxvZ0lkZW50aWZpZXIoKQorICAgIHsKKyAgICAgICAgc3RhdGljIHVpbnQ2NF90IGxv
Z0lkZW50aWZpZXIgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOworICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oKytsb2dJZGVudGlmaWVyKTsKKyAg
ICB9CiAjZWxzZQogCiAjZGVmaW5lIExPR0lERU5USUZJRVIgKFdURjo6bnVsbG9wdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA3YjYzYjU1MjQ4ZC4uNjYwYTM0NmM3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NzMgQEAKKzIwMTktMDMtMTUgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIG1lZGlhIHN0cmVhbSByZWxlYXNlIGxvZ2dpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgyMworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNDg5Mzk0MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxl
dC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yYWwgY2hhbmdlLgorCisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW06OmNsb25lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjphZGRUcmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW06OmFkZFRyYWNrRnJvbVBsYXRmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtOjpzZXRJc0FjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbTo6bWVkaWFDYW5TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6
c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpzdG9w
UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6ZW5kQ2FwdHVy
ZVRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6c3RvcCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bVRyYWNrOjpNZWRpYVN0cmVhbVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
VHJhY2s6OmxvZ0NoYW5uZWwgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDTWVkaWFFbmRwb2ludDo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
TWVkaWFFbmRwb2ludDo6c291cmNlRnJvbU5ld1JlY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRl
eHQ6OkF1ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TG9nSWRlbnRpZmllcik6
IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6bmV4dExvZ0lkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TG9nSWRlbnRpZmllcik6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkludFNpemU6OnRvSlNPTk9iamVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRTaXplOjp0b0pTT05TdHJpbmcgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ludFNpemUuaDoKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6SW50U2l6ZT46
OnRvU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVBy
aXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjphZGRUcmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OnJlbW92ZVRyYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6c3RhcnRQcm9kdWNpbmdEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6c3RvcFByb2R1Y2luZ0Rh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjpzZXRDYXB0dXJlVHJh
Y2tzTXV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjp0cmFja011
dGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OnRyYWNr
RW5hYmxlZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjp0
cmFja1N0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjp0cmFj
a0VuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6c2V0TG9nZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6bG9nQ2hhbm5lbCBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNldExvZ2dl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6bG9nQ2hhbm5l
bCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpsb2dDaGFubmVsIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6bG9nZ2Vy
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZTo6c2V0TG9nZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpSZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjps
b2dDaGFubmVsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZTo6bG9nZ2VyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6c2V0TG9nZ2VyKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlJlYWx0aW1lTWVkaWFT
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0SW50ZXJy
dXB0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0TXV0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6bm90aWZ5TXV0ZWRDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6bm90aWZ5U2V0dGlu
Z3NEaWRDaGFuZ2VPYnNlcnZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZTo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpjYXB0dXJl
RmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29u
c3RyYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0
c0NvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OmFw
cGx5Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6
c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRJbnRy
aW5zaWNTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEZy
YW1lUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRBc3Bl
Y3RSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRGYWNp
bmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFZvbHVt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTYW1wbGVSYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RWNob0NhbmNlbGxh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRMb2dnZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6bG9nQ2hhbm5lbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAg
ICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlPjo6
dG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OmNvbnZlcnRGbGFnc1RvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaDoKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU+Ojp0
b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PE9wdGlvblNldDxXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+Pjo6dG9TdHJpbmcpOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OlJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2U6OmxvZ0NoYW5uZWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjpsb2dnZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZXRMb2dnZXIpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRl
b1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2U6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnNlbmRPbmVCbGFja0ZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c2VuZEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6bG9nQ2hhbm5lbCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OmxvZ2dlciBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2U6OnNldExvZ2dlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZVZpZGVvU291cmNlOjpzZXRTaXplQW5kRnJhbWVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNpemVBbmRGcmFtZVJhdGU6OnRvSlNPTk9iamVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaXplQW5kRnJhbWVSYXRlOjp0b0pTT05TdHJpbmcgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuaDoKKyAgICAgICAgKFdURjo6TG9n
QXJndW1lbnQ8V2ViQ29yZTo6U2l6ZUFuZEZyYW1lUmF0ZT46OnRvU3RyaW5nKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW06Cisg
ICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2xlYXJTZXNzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnN0b3BQcm9kdWNpbmdE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRTaXplQW5k
RnJhbWVSYXRlV2l0aFByZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNv
dXJjZTo6c2V0dXBTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291
cmNlOjpmcmFtZUR1cmF0aW9uRm9yRnJhbWVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlk
ZW9DYXB0dXJlU291cmNlOjpzZXR1cENhcHR1cmVTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZURldmljZVN1
c3BlbmRlZERpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJj
ZTo6Y2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRl
b0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uQmVnaW5JbnRlcnJ1cHRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uRW5kSW50ZXJy
dXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpkZXZpY2VE
aXNjb25uZWN0ZWQpOgorICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNl
cnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgor
ICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciBkZXZpY2VDb25u
ZWN0ZWREaWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJj
ZU9ic2VydmVyIHNlc3Npb25SdW50aW1lRXJyb3I6XSk6CisgICAgICAgICgtW1dlYkNvcmVBVlZp
ZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIGJlZ2luU2Vzc2lvbkludGVycnVwdGVkOl0pOgorICAg
ICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciBlbmRTZXNzaW9uSW50
ZXJydXB0ZWQ6XSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6aW5p
dGlhbGl6ZVNlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVB
dWRpb1NoYXJlZFVuaXQ6OnNldHVwQXVkaW9Vbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVB
dWRpb1NoYXJlZFVuaXQ6OnZlcmlmeUlzQ2FwdHVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
cmVBdWRpb1NoYXJlZFVuaXQ6OmNhcHR1cmVGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29y
ZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZVRvU3RhcnRQcm9kdWNpbmdEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmFkZEVjaG9DYW5jZWxsYXRp
b25Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6cmVt
b3ZlRWNob0NhbmNlbGxhdGlvblNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9D
YXB0dXJlU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29y
ZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6YmVnaW5JbnRlcnJ1cHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6ZW5kSW50ZXJydXB0
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNw
bGF5Q2FwdHVyZVNvdXJjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpjcmVhdGVEaXNwbGF5U3RyZWFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpzdGFydFByb2R1Y2lu
Z0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6
OnN0b3BQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbkRpc3BsYXlDYXB0
dXJlU291cmNlTWFjOjpzdGFydERpc3BsYXlTdHJlYW0pOgorCiAyMDE5LTAzLTEzICBEYW5pZWwg
QmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc29tZSB1bm5lY2Vz
c2FyeSAhVVNFKFVJS0lUX0tFWUJPQVJEX0FERElUSU9OUykgZ3VhcmRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCmluZGV4IDE4ZjI1
ODdlNmJiLi4zZGU4MzRjOGQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIsIDIwMTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNzgsMTAgKzc4LDE5IEBA
IE1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQp
CiAgICAgLCBtX3ByaXZhdGUoTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoY3JlYXRlVHJhY2tQ
cml2YXRlVmVjdG9yKHRyYWNrcykpKQogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRp
YVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAg
LCBtX2xvZ2dlcihkb2N1bWVudCgpLT5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcih1
bmlxdWVMb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKIHsKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9y
IHByZXNlcnZlcyBNZWRpYVN0cmVhbVRyYWNrIGluc3RhbmNlcyBhbmQgbXVzdCBiZSB1c2VkIGJ5
IGNhbGxzIG9yaWdpbmF0aW5nCiAgICAgLy8gZnJvbSB0aGUgSmF2YVNjcmlwdCBNZWRpYVN0cmVh
bSBjb25zdHJ1Y3Rvci4KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CisgICAgbV9wcml2YXRlLT5zZXRMb2dnZXIobG9nZ2VyKCksIGxv
Z0lkZW50aWZpZXIoKSk7CisjZW5kaWYKKwogICAgIGZvciAoYXV0byYgdHJhY2sgOiB0cmFja3Mp
IHsKICAgICAgICAgdHJhY2stPmFkZE9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgbV90cmFja1Nl
dC5hZGQodHJhY2stPmlkKCksIHRyYWNrKTsKQEAgLTk3LDcgKzEwNiwxNSBAQCBNZWRpYVN0cmVh
bTo6TWVkaWFTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPE1lZGlh
U3RyZWFtUHJpdmF0ZQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9w
cml2YXRlKFdURk1vdmUoc3RyZWFtUHJpdmF0ZSkpCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKLXsKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyAgICAsIG1fbG9nZ2VyKGRvY3VtZW50KCktPmxvZ2dlcigpKQorICAgICwgbV9sb2dJ
ZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgoreworI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisgICAgbV9wcml2
YXRlLT5zZXRMb2dnZXIobG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIoKSk7CisjZW5kaWYKICAgICBz
ZXRJc0FjdGl2ZShtX3ByaXZhdGUtPmFjdGl2ZSgpKTsKICAgICBpZiAoZG9jdW1lbnQoKS0+cGFn
ZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+aXNNZWRpYUNhcHR1cmVNdXRlZCgpKQogICAgICAg
ICBtX3ByaXZhdGUtPnNldENhcHR1cmVUcmFja3NNdXRlZCh0cnVlKTsKQEAgLTEyOSw2ICsxNDYs
OCBAQCBNZWRpYVN0cmVhbTo6fk1lZGlhU3RyZWFtKCkKIAogUmVmUHRyPE1lZGlhU3RyZWFtPiBN
ZWRpYVN0cmVhbTo6Y2xvbmUoKQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisK
ICAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIGNsb25lZFRyYWNrczsKICAgICBjbG9uZWRUcmFj
a3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3RyYWNrU2V0LnNpemUoKSk7CiAKQEAgLTE0MCw2
ICsxNTksOCBAQCBSZWZQdHI8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjbG9uZSgpCiAKIHZv
aWQgTWVkaWFTdHJlYW06OmFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrKQogeworICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgdHJhY2subG9nSWRlbnRpZmllcigpKTsKKwogICAg
IGlmICghaW50ZXJuYWxBZGRUcmFjayh0cmFjaywgU3RyZWFtTW9kaWZpZXI6OkRvbUFQSSkpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMTQ5LDYgKzE3MCw4IEBAIHZvaWQgTWVkaWFTdHJlYW06OmFk
ZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrKQogCiB2b2lkIE1lZGlhU3RyZWFtOjpyZW1v
dmVUcmFjayhNZWRpYVN0cmVhbVRyYWNrJiB0cmFjaykKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIsIHRyYWNrLmxvZ0lkZW50aWZpZXIoKSk7CisKICAgICBpZiAoIWludGVybmFsUmVt
b3ZlVHJhY2sodHJhY2suaWQoKSwgU3RyZWFtTW9kaWZpZXI6OkRvbUFQSSkpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtMjA3LDYgKzIzMCw4IEBAIHZvaWQgTWVkaWFTdHJlYW06OmRpZFJlbW92ZVRy
YWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiAKIHZvaWQgTWVkaWFT
dHJlYW06OmFkZFRyYWNrRnJvbVBsYXRmb3JtKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNr
KQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgdHJhY2stPmxvZ0lkZW50aWZpZXIo
KSk7CisKICAgICBhdXRvKiBwcml2YXRlVHJhY2sgPSAmdHJhY2stPnByaXZhdGVUcmFjaygpOwog
ICAgIGludGVybmFsQWRkVHJhY2soV1RGTW92ZSh0cmFjayksIFN0cmVhbU1vZGlmaWVyOjpQbGF0
Zm9ybSk7CiAgICAgbV9wcml2YXRlLT5hZGRUcmFjayhwcml2YXRlVHJhY2ssIE1lZGlhU3RyZWFt
UHJpdmF0ZTo6Tm90aWZ5Q2xpZW50T3B0aW9uOjpOb3RpZnkpOwpAQCAtMjU1LDEyICsyODAsMTYg
QEAgdm9pZCBNZWRpYVN0cmVhbTo6c2V0SXNBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgaWYgKG1f
aXNBY3RpdmUgPT0gYWN0aXZlKQogICAgICAgICByZXR1cm47CiAKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsIGFjdGl2ZSk7CisKICAgICBtX2lzQWN0aXZlID0gYWN0aXZlOwogICAgIHN0
YXR1c0RpZENoYW5nZSgpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtOjptZWRpYUNhblN0YXJ0KERv
Y3VtZW50JiBkb2N1bWVudCkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCiAg
ICAgQVNTRVJUX1VOVVNFRChkb2N1bWVudCwgJmRvY3VtZW50ID09IHRoaXMtPmRvY3VtZW50KCkp
OwogICAgIEFTU0VSVChtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCk7CiAgICAgaWYgKG1f
aXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0KSB7CkBAIC0yNzUsOSArMzA0LDExIEBAIHZvaWQg
TWVkaWFTdHJlYW06OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiAgICAgaWYgKCFkb2N1bWVudCB8fCAh
ZG9jdW1lbnQtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKKwogICAgIC8vIElmIHdlIGNhbid0IHN0YXJ0IGEgbG9hZCByaWdodCBhd2F5
LCBzdGFydCBpdCBsYXRlci4KICAgICBpZiAoIWRvY3VtZW50LT5wYWdlKCktPmNhblN0YXJ0TWVk
aWEoKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYVN0cmVhbTo6c3RhcnRQcm9kdWNpbmdE
YXRhKCVwKSAtIG5vdCBhbGxvd2VkIHRvIHN0YXJ0IGluIGJhY2tncm91bmQsIHdhaXRpbmciLCB0
aGlzKTsKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAibm90IGFsbG93ZWQgdG8g
c3RhcnQgaW4gYmFja2dyb3VuZCwgd2FpdGluZyIpOwogICAgICAgICBpZiAobV9pc1dhaXRpbmdV
bnRpbE1lZGlhQ2FuU3RhcnQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTMwMSw2ICszMzIs
OSBAQCB2b2lkIE1lZGlhU3RyZWFtOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7CiAgICAgaWYgKCFt
X2lzUHJvZHVjaW5nRGF0YSkKICAgICAgICAgcmV0dXJuOworCisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKKwogICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7CiAKICAgICBtX21l
ZGlhU2Vzc2lvbi0+Y2FuUHJvZHVjZUF1ZGlvQ2hhbmdlZCgpOwpAQCAtMzEwLDYgKzM0NCw4IEBA
IHZvaWQgTWVkaWFTdHJlYW06OnN0b3BQcm9kdWNpbmdEYXRhKCkKIAogdm9pZCBNZWRpYVN0cmVh
bTo6ZW5kQ2FwdHVyZVRyYWNrcygpCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
KwogICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX3RyYWNrU2V0LnZhbHVlcygpKSB7CiAgICAgICAg
IGlmICh0cmFjay0+aXNDYXB0dXJlVHJhY2soKSkKICAgICAgICAgICAgIHRyYWNrLT5zdG9wVHJh
Y2soTWVkaWFTdHJlYW1UcmFjazo6U3RvcE1vZGU6OlBvc3RFdmVudCk7CkBAIC00ODIsNiArNTE4
LDEzIEBAIGJvb2wgTWVkaWFTdHJlYW06Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1faXNBY3RpdmU7CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxv
Z0NoYW5uZWwmIE1lZGlhU3RyZWFtOjpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
TG9nV2ViUlRDOworfQorI2VuZGlmCisgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCmluZGV4IDFjMWFlMTFiODBlLi5jMDU1M2FlODdk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0uaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNSBFcmlj
c3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRl
ICJVUkxSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCkBAIC01NSw2ICs1Niw5IEBAIGNsYXNzIE1lZGlhU3RyZWFtIGZpbmFs
CiAgICAgLCBwdWJsaWMgTWVkaWFTdHJlYW1Qcml2YXRlOjpPYnNlcnZlcgogICAgICwgcHJpdmF0
ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIKICAgICAsIHByaXZhdGUgUGxhdGZvcm1NZWRpYVNlc3Np
b25DbGllbnQKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIHByaXZhdGUgTG9nZ2Vy
SGVscGVyCisjZW5kaWYKICAgICAsIHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtPiB7CiBw
dWJsaWM6CiAgICAgY2xhc3MgT2JzZXJ2ZXIgewpAQCAtMTE5LDYgKzEyMywxMyBAQCBwcm90ZWN0
ZWQ6CiAgICAgTWVkaWFTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlh
U3RyZWFtVHJhY2tWZWN0b3ImKTsKICAgICBNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgUmVmPE1lZGlhU3RyZWFtUHJpdmF0ZT4mJik7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
bG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0No
YW5uZWwoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiTWVkaWFTdHJlYW0iOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKIAog
ICAgIC8vIEV2ZW50VGFyZ2V0CkBAIC0xNzUsNiArMTg2LDExIEBAIHByaXZhdGU6CiAKICAgICBN
ZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbV9zdGF0ZSB7IE1lZGlhUHJvZHVjZXI6Oklz
Tm90UGxheWluZyB9OwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgUmVmPExvZ2dl
cj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCisK
ICAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1Byb2R1Y2luZ0Rh
dGEgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQgeyBm
YWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggOWNhNzcyNTM2MjguLmRiYjU0N2U0YWM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtNTQsMTAgKzU0LDE4IEBAIFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiBNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwKIE1lZGlhU3RyZWFtVHJhY2s6Ok1lZGlhU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIHByaXZhdGVUcmFj
aykKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAsIG1fcHJpdmF0ZShXVEZN
b3ZlKHByaXZhdGVUcmFjaykpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xv
Z2dlcihkb2N1bWVudCgpLT5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVM
b2dJZGVudGlmaWVyKCkpCisjZW5kaWYKICAgICAsIG1fdGFza1F1ZXVlKGNvbnRleHQpCiB7Cisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIAor
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIG1fcHJpdmF0ZS0+c2V0TG9nZ2VyKGxvZ2dl
cigpLCBsb2dJZGVudGlmaWVyKCkpOworI2VuZGlmCiAgICAgbV9wcml2YXRlLT5hZGRPYnNlcnZl
cigqdGhpcyk7CiAKICAgICBpZiAoYXV0byBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpCkBA
IC00ODksNiArNDk3LDEzIEBAIERvY3VtZW50KiBNZWRpYVN0cmVhbVRyYWNrOjpkb2N1bWVudCgp
IGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwogfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitXVEZMb2dDaGFubmVsJiBN
ZWRpYVN0cmVhbVRyYWNrOjpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTG9nV2Vi
UlRDOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IDQ5ODJjYjBiZDkzLi4zN2JmZjcyY2Rm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk1lZGlhUHJv
ZHVjZXIuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhVHJhY2tDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NiwxMyArNDcsMTcgQEAgY2xhc3MgRG9jdW1l
bnQ7CiAKIHN0cnVjdCBNZWRpYVRyYWNrQ29uc3RyYWludHM7CiAKLWNsYXNzIE1lZGlhU3RyZWFt
VHJhY2sgOgotICAgIHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+LAotICAgIHB1
YmxpYyBBY3RpdmVET01PYmplY3QsCi0gICAgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURh
dGEsCi0gICAgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhU3RyZWFtVHJhY2s+LAotICAgIHBy
aXZhdGUgTWVkaWFQcm9kdWNlciwKLSAgICBwcml2YXRlIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
OjpPYnNlcnZlciB7CitjbGFzcyBNZWRpYVN0cmVhbVRyYWNrCisgICAgOiBwdWJsaWMgUmVmQ291
bnRlZDxNZWRpYVN0cmVhbVRyYWNrPgorICAgICwgcHVibGljIEFjdGl2ZURPTU9iamVjdAorICAg
ICwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEKKyAgICAsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxNZWRpYVN0cmVhbVRyYWNrPgorICAgICwgcHJpdmF0ZSBNZWRpYVByb2R1Y2VyCisg
ICAgLCBwcml2YXRlIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlcgorI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAorICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIKKyNlbmRpZgorewog
cHVibGljOgogICAgIGNsYXNzIE9ic2VydmVyIHsKICAgICBwdWJsaWM6CkBAIC02OSw3ICs3NCw2
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3Q7
CiAgICAgY29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0OwogCi0KICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGNvbnRlbnRIaW50KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250ZW50SGludChjb25z
dCBTdHJpbmcmKTsKICAgICAgICAgCkBAIC0xNDUsNiArMTQ5LDExIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0SWRGb3JUZXN0aW5nKFN0cmluZyYmIGlkKSB7IG1fcHJpdmF0ZS0+c2V0SWRGb3JU
ZXN0aW5nKFdURk1vdmUoaWQpKTsgfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAg
Y29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQo
KTsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2xvZ0lkZW50aWZpZXI7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFTdHJl
YW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlPiYmKTsKIApAQCAtMTc2LDggKzE4NSwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgdHJhY2tT
ZXR0aW5nc0NoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbDsKICAgICB2b2lk
IHRyYWNrRW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbDsKIAot
ICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOworI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJNZWRpYVN0cmVhbVRyYWNrIjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBj
b25zdCBmaW5hbDsKKyAgICAKKyAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBj
b25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisjZW5kaWYKIAorICAgIFZlY3RvcjxPYnNlcnZl
cio+IG1fb2JzZXJ2ZXJzOwogCiAgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRzIG1fY29uc3RyYWlu
dHM7CiAgICAgT3B0aW9uYWw8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiBtX3Byb21pc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCmluZGV4IDUxYWQzMjFk
MTU2Li45MGNhMWJlZWQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRw
b2ludC5jcHAKQEAgLTIxOSwxOCArMjE5LDEyIEBAIGJvb2wgTGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6YWRkVHJhY2soTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCYgc2VuZGVyLCBNZWRpYVN0CiAg
ICAgc3dpdGNoICh0cmFjay5wcml2YXRlVHJhY2soKS50eXBlKCkpIHsKICAgICBjYXNlIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvOiB7CiAgICAgICAgIGF1dG8gYXVkaW9Tb3VyY2Ug
PSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZSh0cmFjay5wcml2YXRlVHJhY2so
KSk7Ci0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgICAgIGF1ZGlvU291cmNlLT5zZXRM
b2dnZXIobV9sb2dnZXIuY29weVJlZigpKTsKLSNlbmRpZgogICAgICAgICBydGNUcmFjayA9IG1f
cGVlckNvbm5lY3Rpb25GYWN0b3J5LkNyZWF0ZUF1ZGlvVHJhY2sodHJhY2suaWQoKS51dGY4KCku
ZGF0YSgpLCBhdWRpb1NvdXJjZS5wdHIoKSk7CiAgICAgICAgIHNvdXJjZSA9IFdURk1vdmUoYXVk
aW9Tb3VyY2UpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlOjpWaWRlbzogewogICAgICAgICBhdXRvIHZpZGVvU291cmNlID0gUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlOjpjcmVhdGUodHJhY2sucHJpdmF0ZVRyYWNrKCkpOwotI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgICAgICB2aWRlb1NvdXJjZS0+c2V0TG9nZ2VyKG1f
bG9nZ2VyLmNvcHlSZWYoKSk7Ci0jZW5kaWYKICAgICAgICAgcnRjVHJhY2sgPSBtX3BlZXJDb25u
ZWN0aW9uRmFjdG9yeS5DcmVhdGVWaWRlb1RyYWNrKHRyYWNrLmlkKCkudXRmOCgpLmRhdGEoKSwg
dmlkZW9Tb3VyY2UucHRyKCkpOwogICAgICAgICBzb3VyY2UgPSBXVEZNb3ZlKHZpZGVvU291cmNl
KTsKICAgICAgICAgYnJlYWs7CkBAIC00NjIsMTkgKzQ1NiwxMSBAQCBSZWZQdHI8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4gTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c291cmNlRnJvbU5ld1JlY2VpdmVy
KHdlYnJ0YwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjYXNlIGNyaWNrZXQ6Ok1FRElB
X1RZUEVfQVVESU86IHsKICAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9U
cmFja0ludGVyZmFjZT4gYXVkaW9UcmFjayA9IHN0YXRpY19jYXN0PHdlYnJ0Yzo6QXVkaW9UcmFj
a0ludGVyZmFjZSo+KHJ0Y1RyYWNrLmdldCgpKTsKLSAgICAgICAgYXV0byBhdWRpb1NvdXJjZSA9
IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKFdURk1vdmUoYXVkaW9UcmFjayks
IGZyb21TdGRTdHJpbmcocnRjVHJhY2stPmlkKCkpKTsKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICAgICAgYXVkaW9Tb3VyY2UtPnNldExvZ2dlcihtX2xvZ2dlci5jb3B5UmVmKCkpOwot
I2VuZGlmCi0gICAgICAgIHJldHVybiBhdWRpb1NvdXJjZTsKKyAgICAgICAgcmV0dXJuIFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKFdURk1vdmUoYXVkaW9UcmFjayksIGZyb21T
dGRTdHJpbmcocnRjVHJhY2stPmlkKCkpKTsKICAgICB9CiAgICAgY2FzZSBjcmlja2V0OjpNRURJ
QV9UWVBFX1ZJREVPOiB7CiAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVv
VHJhY2tJbnRlcmZhY2U+IHZpZGVvVHJhY2sgPSBzdGF0aWNfY2FzdDx3ZWJydGM6OlZpZGVvVHJh
Y2tJbnRlcmZhY2UqPihydGNUcmFjay5nZXQoKSk7Ci0gICAgICAgIGF1dG8gdmlkZW9Tb3VyY2Ug
PSAgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVhdGUoV1RGTW92ZSh2aWRlb1RyYWNr
KSwgZnJvbVN0ZFN0cmluZyhydGNUcmFjay0+aWQoKSkpOwotI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAotICAgICAgICB2aWRlb1NvdXJjZS0+c2V0TG9nZ2VyKG1fbG9nZ2VyLmNvcHlSZWYoKSk7
Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIHZpZGVvU291cmNlOworICAgICAgICByZXR1cm4gUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVhdGUoV1RGTW92ZSh2aWRlb1RyYWNrKSwgZnJv
bVN0ZFN0cmluZyhydGNUcmFjay0+aWQoKSkpOwogICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCBkODc0ZWMy
ZjRmOC4uNDA0NzAwNjdlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTEwNiwxNCArMTA2LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0Vf
TE9HX0lGKGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPmlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBNZWRpYSwgIiVwIC0gQXVkaW9Db250ZXh0OjoiIGZtdCwgdGhp
cywgIyNfX1ZBX0FSR1NfXykKICAgICAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLXN0YXRp
YyBjb25zdCB2b2lkKiBuZXh0TG9nSWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGljIHVpbnQ2NF90
IGxvZ0lkZW50aWZpZXIgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOwotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigrK2xvZ0lkZW50aWZpZXIpOwotfQot
I2VuZGlmCi0KIGJvb2wgQXVkaW9Db250ZXh0Ojppc1NhbXBsZVJhdGVSYW5nZUdvb2QoZmxvYXQg
c2FtcGxlUmF0ZSkKIHsKICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSBpZiB0aGUgbWlu
aW11bSBzYW1wbGUtcmF0ZSBjb3VsZCBiZSBsZXNzIHRoYW4gNDQuMUtIeiwKQEAgLTE0MSw3ICsx
MzMsNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiAg
ICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKLSAgICAsIG1fbG9nSWRlbnRpZmll
cihuZXh0TG9nSWRlbnRpZmllcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lk
ZW50aWZpZXIoKSkKICNlbmRpZgogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX2V2ZW50UXVldWUoc3RkOjptYWtlX3VuaXF1
ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQpAQCAtMTU5LDcgKzE1MSw3IEBAIEF1ZGlvQ29u
dGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgdW5zaWduZWQgbnVtYmVyT2ZD
aGFubmVscywgc2l6ZV90CiAgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKLSAg
ICAsIG1fbG9nSWRlbnRpZmllcihuZXh0TG9nSWRlbnRpZmllcigpKQorICAgICwgbV9sb2dJZGVu
dGlmaWVyKHVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKICNlbmRpZgogICAgICwgbV9pc09mZmxpbmVD
b250ZXh0KHRydWUpCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
Y3JlYXRlKCp0aGlzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IDY0MWY3YzcxMGRjLi4zNWU4NDUwNDdiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC00MTYsMTQgKzQxNiw2IEBAIHN0YXRpYyBib29sIG1lZGlhU2Vz
c2lvbk1heUJlQ29uZnVzZWRXaXRoTWFpbkNvbnRlbnQoY29uc3QgTWVkaWFFbGVtZW50U2Vzc2lv
bkluCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLXN0
YXRpYyB1aW50NjRfdCBuZXh0TG9nSWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGljIHVpbnQ2NF90
IGxvZ0lkZW50aWZpZXIgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOwotICAgIHJl
dHVybiArK2xvZ0lkZW50aWZpZXI7Ci19Ci0jZW5kaWYKLQogSFRNTE1lZGlhRWxlbWVudDo6SFRN
TE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpCiAgICAgLCBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCkBAIC00NzQsNyArNDY2
LDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICNlbmRpZgogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAogICAgICwgbV9sb2dnZXIoJmRvY3VtZW50LmxvZ2dlcigpKQotICAgICwgbV9sb2dJ
ZGVudGlmaWVyKG5leHRMb2dJZGVudGlmaWVyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5p
cXVlTG9nSWRlbnRpZmllcigpKQogI2VuZGlmCiB7CiAgICAgYWxsTWVkaWFFbGVtZW50cygpLmFk
ZCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggYTY3OGQ5
NGVjODkuLjg1Y2QwNmQ4ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aApAQCAtNTYxLDcgKzU2MSw3IEBAIHB1YmxpYzoKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gKm1fbG9n
Z2VyLmdldCgpOyB9Ci0gICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fbG9nSWRlbnRpZmllcik7
IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9sb2dJZGVudGlmaWVyOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0
IGZpbmFsOwogI2VuZGlmCiAKQEAgLTExNzYsNyArMTE3Niw3IEBAIHByaXZhdGU6CiAKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dlcjsKLSAgICB1
aW50NjRfdCBtX2xvZ0lkZW50aWZpZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVy
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3Bw
CmluZGV4IDNlNTYxZmViZTRkLi5iYTM2Mzc5MTg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcApAQCAtMzEsMTkg
KzMxLDEyIEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgiCi0jaW5jbHVkZSA8d3Rm
L0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RhdGljIGNvbnN0IFNlY29uZHMgY2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyVGhyb3R0bGVE
ZWxheSB7IDEwMF9tcyB9OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi1zdGF0aWMgdWlu
dDY0X3QgbmV4dExvZ0lkZW50aWZpZXIoKQotewotICAgIHN0YXRpYyB1aW50NjRfdCBsb2dJZGVu
dGlmaWVyID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKLSAgICByZXR1cm4gKyts
b2dJZGVudGlmaWVyOwotfQotCiBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUGxh
dGZvcm1NZWRpYVNlc3Npb246OlN0YXRlIHN0YXRlKQogewogICAgIHN0YXRpYyBjb25zdCBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IHZhbHVlc1tdID0gewpAQCAtMTI2LDcgKzExOSw3IEBAIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lv
bkNsaWVudCYgY2xpZW50KQogICAgICwgbV9ub3RpZnlpbmdDbGllbnQoZmFsc2UpCiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihjbGllbnQuaG9zdGluZ0RvY3VtZW50
KCktPmxvZ2dlcigpKQotICAgICwgbV9sb2dJZGVudGlmaWVyKG5leHRMb2dJZGVudGlmaWVyKCkp
CisgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQogI2VuZGlmCiB7
CiAgICAgQVNTRVJUKG1fY2xpZW50Lm1lZGlhVHlwZSgpID49IE5vbmUgJiYgbV9jbGllbnQubWVk
aWFUeXBlKCkgPD0gTWVkaWFTdHJlYW1DYXB0dXJpbmdBdWRpbyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAppbmRleCBiNWQ3
OTJmMDFhYy4uNDY5ODI0ZDI5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaApAQCAtMTg0LDcgKzE4NCw3IEBAIHB1Ymxp
YzoKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2Vy
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KLSAgICBjb25zdCB2b2lk
KiBsb2dJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB2b2lkKj4obV9sb2dJZGVudGlmaWVyKTsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lk
ZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KICAg
ICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUGxh
dGZvcm1NZWRpYVNlc3Npb24iOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNv
bnN0IGZpbmFsOwogI2VuZGlmCkBAIC0yMDQsNyArMjA0LDcgQEAgcHJpdmF0ZToKIAogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwotICAg
IHVpbnQ2NF90IG1fbG9nSWRlbnRpZmllcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZp
ZXI7CiAjZW5kaWYKIAogICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXpl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuY3BwCmluZGV4
IDM3NWExYTE5ZDlmLi45ZDI2NmRlM2IwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW50U2l6ZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJJbnRTaXpl
LmgiCiAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNTAsNCArNTEsMTkgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICByZXR1cm4gdHMgPDwgIndpZHRoPSIgPDwgc2l6
ZS53aWR0aCgpIDw8ICIgaGVpZ2h0PSIgPDwgc2l6ZS5oZWlnaHQoKTsKIH0KIAorUmVmPEpTT046
Ok9iamVjdD4gSW50U2l6ZTo6dG9KU09OT2JqZWN0KCkgY29uc3QKK3sKKyAgICBhdXRvIG9iamVj
dCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisKKyAgICBvYmplY3QtPnNldERvdWJsZSgid2lk
dGgiX3MsIG1fd2lkdGgpOworICAgIG9iamVjdC0+c2V0RG91YmxlKCJoZWlnaHQiX3MsIG1faGVp
Z2h0KTsKKworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cmluZyBJbnRTaXplOjp0b0pTT05T
dHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiB0b0pTT05PYmplY3QoKS0+dG9KU09OU3RyaW5n
KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ludFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaApp
bmRleCAzMDUyYTM3OWY3Mi4uZWU3YzZjMGFkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbnRTaXplLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZCBfX09CSkNf
XwpAQCAtMTczLDYgKzE3NCw5IEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBEMkQxX1NJWkVfRigp
IGNvbnN0OwogI2VuZGlmCiAKKyAgICBTdHJpbmcgdG9KU09OU3RyaW5nKCkgY29uc3Q7CisgICAg
UmVmPEpTT046Ok9iamVjdD4gdG9KU09OT2JqZWN0KCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAg
aW50IG1fd2lkdGgsIG1faGVpZ2h0OwogfTsKQEAgLTIyMyw0ICsyMjcsMTQgQEAgV0VCQ09SRV9F
WFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0
IEludFNpemUmKTsKIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhh
c2g8V2ViQ29yZTo6SW50U2l6ZT47CiB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNv
cmU6OkludFNpemU+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBzdHJ1Y3QgTG9nQXJndW1l
bnQ7Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OkludFNpemU+IHsK
KyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUp
CisgICAgeworICAgICAgICByZXR1cm4gc2l6ZS50b0pTT05TdHJpbmcoKTsKKyAgICB9Cit9Owog
fQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1Qcml2YXRlLmNwcAppbmRleCBiZDhlYjg4YmYzZi4uZTM2MTc3YTIwOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Qcml2YXRlLmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxNSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0xMzYsNiArMTM2LDggQEAgdm9p
ZCBNZWRpYVN0cmVhbVByaXZhdGU6OmFkZFRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZT4mJiB0cmFjaywgTm90aWYKICAgICBpZiAobV90cmFja1NldC5jb250YWlucyh0cmFjay0+
aWQoKSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwg
dHJhY2stPmxvZ0lkZW50aWZpZXIoKSk7CisKICAgICB0cmFjay0+YWRkT2JzZXJ2ZXIoKnRoaXMp
OwogICAgIG1fdHJhY2tTZXQuYWRkKHRyYWNrLT5pZCgpLCB0cmFjayk7CiAKQEAgLTE1NCw2ICsx
NTYsNyBAQCB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6cmVtb3ZlVHJhY2soTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUmIHRyYWNrLCBOb3RpZnlDbGllbgogICAgIGlmICghbV90cmFja1NldC5yZW1v
dmUodHJhY2suaWQoKSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgdHJhY2subG9nSWRlbnRpZmllcigpKTsKICAgICB0cmFjay5yZW1vdmVPYnNlcnZl
cigqdGhpcyk7CiAKICAgICBpZiAobm90aWZ5Q2xpZW50T3B0aW9uID09IE5vdGlmeUNsaWVudE9w
dGlvbjo6Tm90aWZ5KSB7CkBAIC0xNjgsMTIgKzE3MSwxNCBAQCB2b2lkIE1lZGlhU3RyZWFtUHJp
dmF0ZTo6cmVtb3ZlVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrLCBOb3RpZnlD
bGllbgogCiB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIHsK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIGZvciAoYXV0byYgdHJhY2sgOiBt
X3RyYWNrU2V0LnZhbHVlcygpKQogICAgICAgICB0cmFjay0+c3RhcnRQcm9kdWNpbmdEYXRhKCk7
CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7Cisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV90
cmFja1NldC52YWx1ZXMoKSkKICAgICAgICAgdHJhY2stPnN0b3BQcm9kdWNpbmdEYXRhKCk7CiB9
CkBAIC0xODksNiArMTk0LDcgQEAgYm9vbCBNZWRpYVN0cmVhbVByaXZhdGU6OmlzUHJvZHVjaW5n
RGF0YSgpIGNvbnN0CiAKIHZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjpzZXRDYXB0dXJlVHJhY2tz
TXV0ZWQoYm9vbCBtdXRlZCkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIG11dGVk
KTsKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV90cmFja1NldC52YWx1ZXMoKSkgewogICAgICAg
ICBpZiAodHJhY2stPmlzQ2FwdHVyZVRyYWNrKCkpCiAgICAgICAgICAgICB0cmFjay0+c2V0TXV0
ZWQobXV0ZWQpOwpAQCAtMjcxLDggKzI3NywxMyBAQCB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6
Y2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1Q
cml2YXRlOjp0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpCit2b2lk
IE1lZGlhU3RyZWFtUHJpdmF0ZTo6dHJhY2tNdXRlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUmIHRyYWNrKQogeworI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgVU5VU0VEX1BB
UkFNKHRyYWNrKTsKKyNlbmRpZgorCisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCB0cmFj
ay5sb2dJZGVudGlmaWVyKCksICIgIiwgdHJhY2subXV0ZWQoKSk7CiAgICAgc2NoZWR1bGVEZWZl
cnJlZFRhc2soW3RoaXNdIHsKICAgICAgICAgY2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwogICAg
IH0pOwpAQCAtMjgzLDggKzI5NCwxMyBAQCB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6dHJhY2tT
ZXR0aW5nc0NoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQogICAgIGNoYXJhY3Rlcmlz
dGljc0NoYW5nZWQoKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnRyYWNrRW5hYmxl
ZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQordm9pZCBNZWRpYVN0cmVhbVByaXZh
dGU6OnRyYWNrRW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrKQog
eworI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHRyYWNrKTsKKyNl
bmRpZgorCisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCB0cmFjay5sb2dJZGVudGlmaWVy
KCksICIgIiwgdHJhY2suZW5hYmxlZCgpKTsKICAgICB1cGRhdGVBY3RpdmVWaWRlb1RyYWNrKCk7
CiAKICAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpc10gewpAQCAtMjkyLDE1ICszMDgsMjUg
QEAgdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnRyYWNrRW5hYmxlZENoYW5nZWQoTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUmKQogICAgIH0pOwogfQogCi12b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6
dHJhY2tTdGFydGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikKK3ZvaWQgTWVkaWFTdHJlYW1Q
cml2YXRlOjp0cmFja1N0YXJ0ZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrKQogewor
I2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHRyYWNrKTsKKyNlbmRp
ZgorCisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCB0cmFjay5sb2dJZGVudGlmaWVyKCkp
OwogICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CiAgICAgICAgIGNoYXJhY3Rlcmlz
dGljc0NoYW5nZWQoKTsKICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnRy
YWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQordm9pZCBNZWRpYVN0cmVhbVByaXZh
dGU6OnRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrKQogeworI2lmIFJF
TEVBU0VfTE9HX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHRyYWNrKTsKKyNlbmRpZgorCisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCB0cmFjay5sb2dJZGVudGlmaWVyKCkpOwogICAg
IHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CiAgICAgICAgIHVwZGF0ZUFjdGl2ZVN0YXRl
KE5vdGlmeUNsaWVudE9wdGlvbjo6Tm90aWZ5KTsKICAgICAgICAgY2hhcmFjdGVyaXN0aWNzQ2hh
bmdlZCgpOwpAQCAtMzI2LDYgKzM1MiwyMCBAQCB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6bW9u
aXRvck9yaWVudGF0aW9uKE9yaWVudGF0aW9uTm90aWZpZXImIG5vdGlmaWVyKQogICAgIH0KIH0K
IAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAordm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnNl
dExvZ2dlcihjb25zdCBMb2dnZXImIG5ld0xvZ2dlciwgY29uc3Qgdm9pZCogbmV3TG9nSWRlbnRp
ZmllcikKK3sKKyAgICBtX2xvZ2dlciA9ICZuZXdMb2dnZXI7CisgICAgbV9sb2dJZGVudGlmaWVy
ID0gbmV3TG9nSWRlbnRpZmllcjsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworfQor
CitXVEZMb2dDaGFubmVsJiBNZWRpYVN0cmVhbVByaXZhdGU6OmxvZ0NoYW5uZWwoKSBjb25zdAor
eworICAgIHJldHVybiBMb2dXZWJSVEM7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKaW5k
ZXggZTE0NmM2ODBhOTUuLmUyZGEzNTNhYWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaApAQCAtMiw3ICsy
LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgog
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTUz
LDcgKzU0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xh
c3MgT3JpZW50YXRpb25Ob3RpZmllcjsKIAotY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlIDogcHVi
bGljIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciwgcHVibGljIFJlZkNvdW50ZWQ8
TWVkaWFTdHJlYW1Qcml2YXRlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhU3RyZWFtUHJp
dmF0ZT4geworY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlIGZpbmFsCisgICAgOiBwdWJsaWMgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyCisgICAgLCBwdWJsaWMgUmVmQ291bnRlZDxN
ZWRpYVN0cmVhbVByaXZhdGU+CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFTdHJl
YW1Qcml2YXRlPgorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgcHJpdmF0ZSBMb2dn
ZXJIZWxwZXIKKyNlbmRpZgorewogcHVibGljOgogICAgIGNsYXNzIE9ic2VydmVyIHsKICAgICBw
dWJsaWM6CkBAIC0xMDMsNiArMTExLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbW9uaXRvck9y
aWVudGF0aW9uKE9yaWVudGF0aW9uTm90aWZpZXImKTsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAorICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0IHZvaWQqKTsKKyNl
bmRpZgorCiBwcml2YXRlOgogICAgIE1lZGlhU3RyZWFtUHJpdmF0ZShjb25zdCBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZVZlY3RvciYsIFN0cmluZyYmKTsKIApAQCAtMTE5LDYgKzEzMSwxNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soRnVuY3Rpb248dm9pZCAoKT4m
Jik7CiAgICAgdm9pZCBmb3JFYWNoT2JzZXJ2ZXIoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKE9i
c2VydmVyJik+JikgY29uc3Q7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25z
dCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgQVNTRVJUKG1fbG9nZ2VyKTsgcmV0dXJu
ICptX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBjaGFyKiBsb2dD
bGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTWVkaWFTdHJlYW1Qcml2YXRlIjsgfQor
ICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKworICAgIFJlZlB0
cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmll
cjsKKyNlbmRpZgorCiAgICAgSGFzaFNldDxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwogICAgIFN0
cmluZyBtX2lkOwogICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiBtX2FjdGl2ZVZpZGVvVHJh
Y2sgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAKaW5kZXggNDkzOGZm
OTY0NzIuLjQ5NDNkYTM3MGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCkBAIC0x
LDYgKzEsNyBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICogIENvcHlyaWdodCAoQykgMjAxNSBFcmlj
c3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2OSwxMiArMjcwLDI5IEBAIHZvaWQgTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU6OnVwZGF0ZVJlYWR5U3RhdGUoKQogICAgIGlmIChzdGF0ZSA9PSBtX3Jl
YWR5U3RhdGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
Uik7CisKICAgICBtX3JlYWR5U3RhdGUgPSBzdGF0ZTsKICAgICBmb3JFYWNoT2JzZXJ2ZXIoW3Ro
aXNdKGF1dG8mIG9ic2VydmVyKSB7CiAgICAgICAgIG9ic2VydmVyLnJlYWR5U3RhdGVDaGFuZ2Vk
KCp0aGlzKTsKICAgICB9KTsKIH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAordm9pZCBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYgbmV3TG9nZ2Vy
LCBjb25zdCB2b2lkKiBuZXdMb2dJZGVudGlmaWVyKQoreworICAgIG1fbG9nZ2VyID0gJm5ld0xv
Z2dlcjsKKyAgICBtX2xvZ0lkZW50aWZpZXIgPSBuZXdMb2dJZGVudGlmaWVyOworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUik7CisgICAgbV9zb3VyY2UtPnNldExvZ2dlcihuZXdMb2dnZXIs
IG5ld0xvZ0lkZW50aWZpZXIpOworfQorCitXVEZMb2dDaGFubmVsJiBNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZTo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ1dlYlJUQzsKK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKaW5kZXggOWM3ZjAzZmM2NzcuLjU5
NjdkNDUyY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKQEAgLTEsNiArMSw3IEBACiAv
KgotICogIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykuCi0gKiAgQ29weXJpZ2h0IChDKSAyMDE1IEVyaWNzc29uIEFCLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBFcmlj
c3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjksNiArMzAsNyBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNp
bmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBl
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM4LDcgKzQwLDEzIEBAIGNsYXNzIE1l
ZGlhU2FtcGxlOwogY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczsKIGNsYXNz
IFdlYkF1ZGlvU291cmNlUHJvdmlkZXI7CiAKLWNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+LCBwdWJsaWMgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIgeworY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUgZmluYWwKKyAgICA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
PgorICAgICwgcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyCisjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECisgICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgorI2VuZGlmCit7CiBw
dWJsaWM6CiAgICAgY2xhc3MgT2JzZXJ2ZXIgewogICAgIHB1YmxpYzoKQEAgLTEwOCw2ICsxMTYs
MTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJZEZvclRlc3RpbmcoU3RyaW5nJiYgaWQpIHsg
bV9pZCA9IFdURk1vdmUoaWQpOyB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICB2
b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lkKik7CisgICAgY29uc3QgTG9n
Z2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IEFTU0VSVChtX2xvZ2dlcik7IHJldHVybiAqbV9s
b2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisjZW5kaWYKKyAgICAKIHByaXZhdGU6CiAg
ICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYsIFN0
cmluZyYmIGlkKTsKIApAQCAtMTI0LDYgKzEzOCwxNCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBm
b3JFYWNoT2JzZXJ2ZXIoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKE9ic2VydmVyJik+JikgY29u
c3Q7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFz
c05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUiOyB9
CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOworCisgICAgUmVm
UHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlm
aWVyOworI2VuZGlmCisKICAgICBtdXRhYmxlIFJlY3Vyc2l2ZUxvY2sgbV9vYnNlcnZlcnNMb2Nr
OwogICAgIEhhc2hTZXQ8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKICAgICBSZWY8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4gbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cAppbmRleCBmZTBkZGQ3OTcyMC4uYTRiMTI3YWE5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNSwxNiArMzUsMTIgQEAKIAogI2luY2x1ZGUgIkxpYldlYlJUQ0F1
ZGlvRm9ybWF0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPHd0Zi9DcnlwdG9n
cmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywg
U3RyaW5nJiYgYXVkaW9UcmFja0lkKQogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgInJlbW90ZSBhdWRpbyJfcywgV1RGTW92ZShhdWRp
b1RyYWNrSWQpKQogICAgICwgbV9hdWRpb1RyYWNrKFdURk1vdmUoYXVkaW9UcmFjaykpCi0jaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLCBtX2xvZ0lkZW50aWZpZXIocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB2b2lkKj4oY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSkpCi0jZW5k
aWYKIHsKICAgICBub3RpZnlNdXRlZENoYW5nZSghbV9hdWRpb1RyYWNrKTsKIH0KQEAgLTg5LDIw
ICs4NSw2IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlOjpzZXR0aW5ncygpCiAgICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdz
OwogfQogCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi1XVEZMb2dDaGFubmVsJiBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OmxvZ0NoYW5uZWwoKSBjb25zdAotewotICAgIHJldHVybiBM
b2dXZWJSVEM7Ci19Ci0KLWNvbnN0IExvZ2dlciYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
Ojpsb2dnZXIoKSBjb25zdAotewotICAgIGlmICghbV9sb2dnZXIpCi0gICAgICAgIG1fbG9nZ2Vy
ID0gTG9nZ2VyOjpjcmVhdGUodGhpcyk7Ci0gICAgcmV0dXJuICptX2xvZ2dlcjsKLX0KLSNlbmRp
ZgotCiB9CiAKICNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2UuaAppbmRleCAxNmUyMTI4YTdlYS4uYWVjOTY1YjA5MWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDYgQEAgQUxMT1dfVU5VU0VEX1BBUkFNRVRF
UlNfQkVHSU4KIAogQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNfRU5ECiAKLSNpbmNsdWRlIDx3dGYv
TG9nZ2VySGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00OSwyOSArNDgsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlCiAgICAgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNv
dXJjZQogICAgICwgcHJpdmF0ZSB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlCi0jaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgotI2VuZGlm
CiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+
IGNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYm
LCBTdHJpbmcmJik7CiAKICAgICB2b2lkIHNldFNvdXJjZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYpOwogCi0jaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECi0gICAgdm9pZCBzZXRMb2dnZXIoUmVmPGNvbnN0IExvZ2dlcj4mJiBsb2dnZXIpIHsg
bV9sb2dnZXIgPSBXVEZNb3ZlKGxvZ2dlcik7IH0KLSNlbmRpZgotCiBwcm90ZWN0ZWQ6CiAgICAg
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1
ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKICAgICB+UmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlKCk7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAvLyBMb2dnZXJI
ZWxwZXIgQVBJCi0gICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbDsKLSAgICBj
b25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVu
dGlmaWVyOyB9CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gIlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSI7IH0KLSAgICBXVEZMb2dDaGFubmVs
JiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDE0NDZiM2ZjMTc0Li40NTQwM2RjNmNh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDE3ICszMywxMSBA
QAogCiAjaWYgVVNFKExJQldFQlJUQykKIAotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRl
IDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OlJlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNlPiYm
IHZpZGVvVHJhY2ssIFN0cmluZyYmIHZpZGVvVHJhY2tJZCkKICAgICA6IFJlYWx0aW1lTWVkaWFT
b3VyY2UoVHlwZTo6VmlkZW8sICJyZW1vdGUgdmlkZW8iX3MsIFdURk1vdmUodmlkZW9UcmFja0lk
KSkKICAgICAsIG1fdmlkZW9UcmFjayhXVEZNb3ZlKHZpZGVvVHJhY2spKQotI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAotICAgICwgbV9sb2dJZGVudGlmaWVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3Qgdm9pZCo+KGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpKQotI2VuZGlmCiB7CiAg
ICAgbm90aWZ5TXV0ZWRDaGFuZ2UoIW1fdmlkZW9UcmFjayk7CiAKQEAgLTEwOCwyMCArMTAyLDYg
QEAgdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKE9w
dGlvblNldDxSZWFsdGltZU1lZGlhU291cmMKICAgICAgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBX
VEY6Om51bGxvcHQ7CiB9CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLVdURkxvZ0NoYW5u
ZWwmIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6bG9nQ2hhbm5lbCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIExvZ1dlYlJUQzsKLX0KLQotY29uc3QgTG9nZ2VyJiBSZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2U6OmxvZ2dlcigpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2xvZ2dlcikKLSAgICAg
ICAgbV9sb2dnZXIgPSBMb2dnZXI6OmNyZWF0ZSh0aGlzKTsKLSAgICByZXR1cm4gKm1fbG9nZ2Vy
OwotfQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShM
SUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oCmluZGV4IGQwYzQ5NjAy
MzgwLi4zNWE3ZDY2NmUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEs
NyArNDEsNiBAQCBBTExPV19VTlVTRURfUEFSQU1FVEVSU19CRUdJTgogCiBBTExPV19VTlVTRURf
UEFSQU1FVEVSU19FTkQKIAotI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUxLDkgKzUwLDYg
QEAgY2xhc3MgQ2FwdHVyZURldmljZTsKIGNsYXNzIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZQogICAgIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UKICAgICAsIHByaXZhdGUgcnRjOjpW
aWRlb1NpbmtJbnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPgotI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAotICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIKLSNlbmRpZgogewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlPiBjcmVhdGUocnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYpOwpA
QCAtNjQsMTkgKzYwLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0U291cmNlVHJhY2socnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4mJik7CiAKLSNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICB2b2lkIHNldExvZ2dlcihSZWY8Y29uc3QgTG9nZ2Vy
PiYmIGxvZ2dlcikgeyBtX2xvZ2dlciA9IFdURk1vdmUobG9nZ2VyKTsgfQotI2VuZGlmCi0KIHBy
b3RlY3RlZDoKICAgICBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UocnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYpOwogCiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLy8gTG9nZ2VySGVscGVyIEFQSQotICAgIGNvbnN0IExv
Z2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWw7Ci0gICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmll
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQogICAgIGNvbnN0IGNo
YXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2UiOyB9Ci0gICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZp
bmFsOwogI2VuZGlmCiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAppbmRleCBj
ODNjYTc0Y2JlZi4uYTlkMjk0NjI3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqIENvcHlyaWdodCAoQykgMjAxNSBFcmlj
c3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC01Niw4ICs1Niw4IEBAIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlJlYWx0aW1lTWVkaWFTb3VyY2UoVHlwZSB0eXBlLCBTdHJpbmcmJiBu
YW1lLCBTdHJpbmcmJiBkZXZpCiB7CiAgICAgaWYgKG1fcGVyc2lzdGVudElELmlzRW1wdHkoKSkK
ICAgICAgICAgbV9wZXJzaXN0ZW50SUQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7Ci0g
ICAgZWxzZQotICAgICAgICBtX2hhc2hlZElEID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
c2luZ2xldG9uKCkuaGFzaFN0cmluZ1dpdGhTYWx0KG1fcGVyc2lzdGVudElELCBtX2lkSGFzaFNh
bHQpOworCisgICAgbV9oYXNoZWRJRCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmds
ZXRvbigpLmhhc2hTdHJpbmdXaXRoU2FsdChtX3BlcnNpc3RlbnRJRCwgbV9pZEhhc2hTYWx0KTsK
IH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphZGRPYnNlcnZlcihSZWFsdGltZU1lZGlh
U291cmNlOjpPYnNlcnZlciYgb2JzZXJ2ZXIpCkBAIC04MCw2ICs4MCw4IEBAIHZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6c2V0SW50ZXJydXB0ZWQoYm9vbCBpbnRlcnJ1cHRlZCwgYm9vbCBwYWdl
TXV0ZWQpCiAgICAgaWYgKGludGVycnVwdGVkID09IG1faW50ZXJydXB0ZWQpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIEFMV0FZU19MT0dfSUYobV9sb2dnZXIsIExPR0lERU5USUZJRVIsIGludGVy
cnVwdGVkLCAiLCBwYWdlIG11dGVkIDogIiwgcGFnZU11dGVkKTsKKwogICAgIG1faW50ZXJydXB0
ZWQgPSBpbnRlcnJ1cHRlZDsKICAgICBpZiAoIWludGVycnVwdGVkICYmIHBhZ2VNdXRlZCkKICAg
ICAgICAgcmV0dXJuOwpAQCAtODksNiArOTEsOCBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnNldEludGVycnVwdGVkKGJvb2wgaW50ZXJydXB0ZWQsIGJvb2wgcGFnZU11dGVkKQogCiB2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldE11dGVkKGJvb2wgbXV0ZWQpCiB7CisgICAgQUxXQVlT
X0xPR19JRihtX2xvZ2dlciwgTE9HSURFTlRJRklFUik7CisKICAgICBpZiAobXV0ZWQpCiAgICAg
ICAgIHN0b3AoKTsKICAgICBlbHNlIHsKQEAgLTEwNiw2ICsxMTAsNyBAQCB2b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2U6Om5vdGlmeU11dGVkQ2hhbmdlKGJvb2wgbXV0ZWQpCiAgICAgaWYgKG1fbXV0
ZWQgPT0gbXV0ZWQpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0dfSUYobV9sb2dn
ZXIsIExPR0lERU5USUZJRVIpOwogICAgIG1fbXV0ZWQgPSBtdXRlZDsKIAogICAgIG5vdGlmeU11
dGVkT2JzZXJ2ZXJzKCk7CkBAIC0xNDksNiArMTU0LDggQEAgdm9pZCBSZWFsdGltZU1lZGlhU291
cmNlOjpub3RpZnlTZXR0aW5nc0RpZENoYW5nZU9ic2VydmVycyhPcHRpb25TZXQ8UmVhbHRpbWVN
ZWQKICAgICAgICAgcmV0dXJuOwogICAgIG1fcGVuZGluZ1NldHRpbmdzRGlkQ2hhbmdlTm90aWZp
Y2F0aW9uID0gdHJ1ZTsKIAorICAgIEFMV0FZU19MT0dfSUYobV9sb2dnZXIsIExPR0lERU5USUZJ
RVIsIGZsYWdzKTsKKwogICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CiAgICAgICAg
IG1fcGVuZGluZ1NldHRpbmdzRGlkQ2hhbmdlTm90aWZpY2F0aW9uID0gZmFsc2U7CiAgICAgICAg
IGZvckVhY2hPYnNlcnZlcihbXShhdXRvJiBvYnNlcnZlcikgewpAQCAtMTU5LDYgKzE2NiwyMCBA
QCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6Om5vdGlmeVNldHRpbmdzRGlkQ2hhbmdlT2JzZXJ2
ZXJzKE9wdGlvblNldDxSZWFsdGltZU1lZAogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnZp
ZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkKIHsKKyNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKKyAgICArK21fZnJhbWVDb3VudDsKKworICAgIGF1dG8gdGltZXN0
YW1wID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgYXV0byBkZWx0YSA9IHRpbWVzdGFtcCAt
IG1fbGFzdEZyYW1lTG9nVGltZTsKKyAgICBpZiAoIW1fbGFzdEZyYW1lTG9nVGltZSB8fCBkZWx0
YSA+PSAxX3MpIHsKKyAgICAgICAgaWYgKG1fbGFzdEZyYW1lTG9nVGltZSkgeworICAgICAgICAg
ICAgSU5GT19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsIG1fZnJhbWVDb3VudCwg
IiBmcmFtZXMgc2VudCBpbiAiLCBkZWx0YS52YWx1ZSgpLCAiIHNlY29uZHMiKTsKKyAgICAgICAg
ICAgIG1fZnJhbWVDb3VudCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgbV9sYXN0RnJhbWVMb2dU
aW1lID0gdGltZXN0YW1wOworICAgIH0KKyNlbmRpZgorCiAgICAgZm9yRWFjaE9ic2VydmVyKFsm
XShhdXRvJiBvYnNlcnZlcikgewogICAgICAgICBvYnNlcnZlci52aWRlb1NhbXBsZUF2YWlsYWJs
ZShtZWRpYVNhbXBsZSk7CiAgICAgfSk7CkBAIC0xNzYsNiArMTk3LDggQEAgdm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpzdGFydCgpCiAgICAgaWYgKG1faXNQcm9kdWNpbmdEYXRhIHx8IG1faXNF
bmRlZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xPR19JRihtX2xvZ2dlciwgTE9H
SURFTlRJRklFUik7CisKICAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IHRydWU7CiAgICAgc3RhcnRQ
cm9kdWNpbmdEYXRhKCk7CiAKQEAgLTE5Miw2ICsyMTUsOCBAQCB2b2lkIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OnN0b3AoKQogICAgIGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIEFMV0FZU19MT0dfSUYobV9sb2dnZXIsIExPR0lERU5USUZJRVIpOworCiAgICAg
bV9pc1Byb2R1Y2luZ0RhdGEgPSBmYWxzZTsKICAgICBzdG9wUHJvZHVjaW5nRGF0YSgpOwogfQpA
QCAtMjIzLDcgKzI0OCw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVzdFRvRW5k
KE9ic2VydmVyJiBjYWxsaW5nT2JzZXJ2ZXIpCiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
Y2FwdHVyZUZhaWxlZCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJS
ZWFsdGltZU1lZGlhU291cmNlOjpjYXB0dXJlRmFpbGVkIik7CisgICAgRVJST1JfTE9HX0lGKG1f
bG9nZ2VyLCBMT0dJREVOVElGSUVSKTsKIAogICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7
CiAgICAgbV9jYXB0dXJlRGlkRmFpbGVkID0gdHJ1ZTsKQEAgLTQ2Nyw2ICs0OTIsOCBAQCB2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3
aWR0aCwgT3B0aW9uYWw8aW50PgogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29u
c3RyYWludChjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7CisgICAgQUxXQVlT
X0xPR19JRihtX2xvZ2dlciwgTE9HSURFTlRJRklFUiwgY29uc3RyYWludC5uYW1lKCkpOworCiAg
ICAgYXV0byYgY2FwYWJpbGl0aWVzID0gdGhpcy0+Y2FwYWJpbGl0aWVzKCk7CiAgICAgc3dpdGNo
IChjb25zdHJhaW50LmNvbnN0cmFpbnRUeXBlKCkpIHsKICAgICBjYXNlIE1lZGlhQ29uc3RyYWlu
dFR5cGU6OldpZHRoOgpAQCAtNzY5LDYgKzc5Niw4IEBAIGJvb2wgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6c3VwcG9ydHNDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50
CiB7CiAgICAgQVNTRVJUKGNvbnN0cmFpbnRzLmlzVmFsaWQpOwogCisgICAgQUxXQVlTX0xPR19J
RihtX2xvZ2dlciwgTE9HSURFTlRJRklFUik7CisKICAgICBGbGF0dGVuZWRDb25zdHJhaW50IGNh
bmRpZGF0ZXM7CiAgICAgaWYgKCFzZWxlY3RTZXR0aW5ncyhjb25zdHJhaW50cywgY2FuZGlkYXRl
cywgaW52YWxpZENvbnN0cmFpbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03OTksNiAr
ODI4LDggQEAgYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c0NvbnN0cmFpbnRzKGNv
bnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnQKICAgICAgICAgfQogICAgIH0KIAorICAg
IEFMV0FZU19MT0dfSUYobV9sb2dnZXIsIExPR0lERU5USUZJRVIsICJmaXRuZXNzIGRpc3RhbmNl
IDogIiwgbV9maXRuZXNzU2NvcmUpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTg1NSw2
ICs4ODYsOCBAQCBPcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlOjpBcHBseUNvbnN0cmFpbnRz
RXJyb3I+IFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5QwogewogICAgIEFTU0VSVChjb25zdHJh
aW50cy5pc1ZhbGlkKTsKIAorICAgIEFMV0FZU19MT0dfSUYobV9sb2dnZXIsIExPR0lERU5USUZJ
RVIpOworCiAgICAgRmxhdHRlbmVkQ29uc3RyYWludCBjYW5kaWRhdGVzOwogICAgIFN0cmluZyBm
YWlsZWRDb25zdHJhaW50OwogICAgIGlmICghc2VsZWN0U2V0dGluZ3MoY29uc3RyYWludHMsIGNh
bmRpZGF0ZXMsIGZhaWxlZENvbnN0cmFpbnQpKQpAQCAtODc0LDYgKzkwNyw4IEBAIHZvaWQgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIGlmIChz
aXplID09IG1fc2l6ZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xPR19JRihtX2xv
Z2dlciwgTE9HSURFTlRJRklFUiwgc2l6ZSk7CisgICAgCiAgICAgbV9zaXplID0gc2l6ZTsKICAg
ICBub3RpZnlTZXR0aW5nc0RpZENoYW5nZU9ic2VydmVycyh7IFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6RmxhZzo6V2lkdGgsIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6
SGVpZ2h0IH0pOwogfQpAQCAtODk5LDYgKzkzNCw4IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6c2V0SW50cmluc2ljU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIGlmIChtX2ludHJp
bnNpY1NpemUgPT0gc2l6ZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xPR19JRiht
X2xvZ2dlciwgTE9HSURFTlRJRklFUiwgc2l6ZSk7CisgICAgCiAgICAgYXV0byBjdXJyZW50U2l6
ZSA9IHRoaXMtPnNpemUoKTsKICAgICBtX2ludHJpbnNpY1NpemUgPSBzaXplOwogCkBAIC05MTYs
NiArOTUzLDggQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRGcmFtZVJhdGUoZG91Ymxl
IHJhdGUpCiAgICAgaWYgKG1fZnJhbWVSYXRlID09IHJhdGUpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIEFMV0FZU19MT0dfSUYobV9sb2dnZXIsIExPR0lERU5USUZJRVIsIHJhdGUpOworICAgIAog
ICAgIG1fZnJhbWVSYXRlID0gcmF0ZTsKICAgICBub3RpZnlTZXR0aW5nc0RpZENoYW5nZU9ic2Vy
dmVycyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkZyYW1lUmF0ZSk7CiB9CkBA
IC05MjUsNiArOTY0LDggQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRBc3BlY3RSYXRp
byhkb3VibGUgcmF0aW8pCiAgICAgaWYgKG1fYXNwZWN0UmF0aW8gPT0gcmF0aW8pCiAgICAgICAg
IHJldHVybjsKIAorICAgIEFMV0FZU19MT0dfSUYobV9sb2dnZXIsIExPR0lERU5USUZJRVIsIHJh
dGlvKTsKKyAgICAKICAgICBtX2FzcGVjdFJhdGlvID0gcmF0aW87CiAgICAgbV9zaXplLnNldEhl
aWdodChtX3NpemUud2lkdGgoKSAvIHJhdGlvKTsKICAgICBub3RpZnlTZXR0aW5nc0RpZENoYW5n
ZU9ic2VydmVycyh7IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6QXNwZWN0UmF0
aW8sIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6SGVpZ2h0IH0pOwpAQCAtOTM1
LDYgKzk3Niw4IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RmFjaW5nTW9kZShSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nCiAgICAgaWYgKG1fZmFjaW5nTW9k
ZSA9PSBtb2RlKQogICAgICAgICByZXR1cm47CiAKKyAgICBBTFdBWVNfTE9HX0lGKG1fbG9nZ2Vy
LCBMT0dJREVOVElGSUVSLCBtb2RlKTsKKwogICAgIG1fZmFjaW5nTW9kZSA9IG1vZGU7CiAgICAg
bm90aWZ5U2V0dGluZ3NEaWRDaGFuZ2VPYnNlcnZlcnMoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpGbGFnOjpGYWNpbmdNb2RlKTsKIH0KQEAgLTk0NCw2ICs5ODcsOCBAQCB2b2lkIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OnNldFZvbHVtZShkb3VibGUgdm9sdW1lKQogICAgIGlmIChtX3ZvbHVt
ZSA9PSB2b2x1bWUpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0dfSUYobV9sb2dn
ZXIsIExPR0lERU5USUZJRVIsIHZvbHVtZSk7CisKICAgICBtX3ZvbHVtZSA9IHZvbHVtZTsKICAg
ICBub3RpZnlTZXR0aW5nc0RpZENoYW5nZU9ic2VydmVycyhSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkZsYWc6OlZvbHVtZSk7CiB9CkBAIC05NTMsNiArOTk4LDggQEAgdm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpzZXRTYW1wbGVSYXRlKGludCByYXRlKQogICAgIGlmIChtX3NhbXBsZVJh
dGUgPT0gcmF0ZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xPR19JRihtX2xvZ2dl
ciwgTE9HSURFTlRJRklFUiwgcmF0ZSk7CisKICAgICBtX3NhbXBsZVJhdGUgPSByYXRlOwogICAg
IG5vdGlmeVNldHRpbmdzRGlkQ2hhbmdlT2JzZXJ2ZXJzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6RmxhZzo6U2FtcGxlUmF0ZSk7CiB9CkBAIC05NjcsNiArMTAxNCw4IEBAIHZvaWQgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6c2V0U2FtcGxlU2l6ZShpbnQgc2l6ZSkKICAgICBpZiAobV9zYW1w
bGVTaXplID09IHNpemUpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0dfSUYobV9s
b2dnZXIsIExPR0lERU5USUZJRVIsIHNpemUpOworCiAgICAgbV9zYW1wbGVTaXplID0gc2l6ZTsK
ICAgICBub3RpZnlTZXR0aW5nc0RpZENoYW5nZU9ic2VydmVycyhSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OkZsYWc6OlNhbXBsZVNpemUpOwogfQpAQCAtOTgxLDYgKzEwMzAsNyBAQCB2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEVjaG9DYW5jZWxsYXRpb24oYm9vbCBlY2hvQ2FuY2Vs
bGF0aW9uKQogICAgIGlmIChtX2VjaG9DYW5jZWxsYXRpb24gPT0gZWNob0NhbmNlbGxhdGlvbikK
ICAgICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xPR19JRihtX2xvZ2dlciwgTE9HSURFTlRJ
RklFUiwgZWNob0NhbmNlbGxhdGlvbik7CiAgICAgbV9lY2hvQ2FuY2VsbGF0aW9uID0gZWNob0Nh
bmNlbGxhdGlvbjsKICAgICBub3RpZnlTZXR0aW5nc0RpZENoYW5nZU9ic2VydmVycyhSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkVjaG9DYW5jZWxsYXRpb24pOwogfQpAQCAtMTAx
MSw2ICsxMDYxLDM0IEBAIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyOjp+T2JzZXJ2ZXIo
KQogewogfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECit2b2lkIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OnNldExvZ2dlcihjb25zdCBMb2dnZXImIG5ld0xvZ2dlciwgY29uc3Qgdm9pZCogbmV3
TG9nSWRlbnRpZmllcikKK3sKKyAgICBtX2xvZ2dlciA9ICZuZXdMb2dnZXI7CisgICAgbV9sb2dJ
ZGVudGlmaWVyID0gbmV3TG9nSWRlbnRpZmllcjsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsIG1fdHlwZSwgIiwgIiwgbV9uYW1lLCAiLCAiLCBtX2hhc2hlZElEKTsKK30KKworV1RGTG9n
Q2hhbm5lbCYgUmVhbHRpbWVNZWRpYVNvdXJjZTo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIExvZ1dlYlJUQzsKK30KKyNlbmRpZgorCitTdHJpbmcgY29udmVydEVudW1lcmF0aW9u
VG9TdHJpbmcoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBlbnVtZXJhdGlvblZhbHVlKQorewor
ICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHZhbHVlc1tdID0geworICAg
ICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiTm9uZSIpLAorICAgICAgICBNQUtFX1NUQVRJ
Q19TVFJJTkdfSU1QTCgiQXVkaW8iKSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwo
IlZpZGVvIiksCisgICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4o
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6Tm9uZSkgPT0gMCwgIlJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGU6Ok5vbmUgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0YXRpY19jYXN0PHNpemVfdD4oUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8pID09
IDEsICJSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyBpcyBub3QgMSBhcyBleHBlY3Rl
ZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlOjpWaWRlbykgPT0gMiwgIlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZp
ZGVvIGlzIG5vdCAyIGFzIGV4cGVjdGVkIik7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVf
dD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOworICAgIHJl
dHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV07Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlLmgKaW5kZXggYWZlMTk3NzkwOGQuLmFiM2M5OTcxZGRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBF
cmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgi
CiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIgogI2luY2x1ZGUg
IlJlYWx0aW1lTWVkaWFTb3VyY2VGYWN0b3J5LmgiCisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBl
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWN1cnNpdmVMb2NrQWRhcHRlci5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTY1
LDcgKzY2LDEzIEBAIGNsYXNzIFJlbW90ZVZpZGVvU2FtcGxlOwogCiBzdHJ1Y3QgQ2FwdHVyZVNv
dXJjZU9yRXJyb3I7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFJlYWx0aW1lTWVkaWFTb3VyY2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVhbHRpbWVNZWRpYVNvdXJjZT4sIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxSZWFsdGltZU1lZGlhU291cmNlPiB7CitjbGFzcyBXRUJDT1JFX0VY
UE9SVCBSZWFsdGltZU1lZGlhU291cmNlCisgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8UmVhbHRpbWVNZWRpYVNvdXJjZT4KKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZWFs
dGltZU1lZGlhU291cmNlPgorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgcHJpdmF0
ZSBMb2dnZXJIZWxwZXIKKyNlbmRpZgorewogcHVibGljOgogICAgIGNsYXNzIE9ic2VydmVyIHsK
ICAgICBwdWJsaWM6CkBAIC0xNzYsNiArMTgzLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElz
UmVtb3RlKGJvb2wgaXNSZW1vdGUpIHsgbV9pc1JlbW90ZSA9IGlzUmVtb3RlOyB9CiAgICAgYm9v
bCBpc1JlbW90ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZW1vdGU7IH0KIAorI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAorICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0IHZv
aWQqKTsKKyAgICBjb25zdCBMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9n
Z2VyLmdldCgpOyB9CisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IEFT
U0VSVChtX2xvZ2dlcik7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCB2b2lk
KiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9
CisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlYWx0aW1lTWVkaWFTb3VyY2UiOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgp
IGNvbnN0IGZpbmFsOworI2VuZGlmCisKICAgICAvLyBUZXN0aW5nIG9ubHkKICAgICB2aXJ0dWFs
IHZvaWQgZGVsYXlTYW1wbGVzKFNlY29uZHMpIHsgfTsKICAgICB2b2lkIHNldEludGVycnVwdGVk
Rm9yVGVzdGluZyhib29sKTsKQEAgLTIxNyw3ICsyMzMsMTIgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgZm9yRWFjaE9ic2VydmVyKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChPYnNlcnZlciYpPiYp
IGNvbnN0OwogCi0gICAgYm9vbCBtX211dGVkIHsgZmFsc2UgfTsKKyNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKKyAgICBSZWZQdHI8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2
b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisgICAgTW9ub3RvbmljVGltZSBtX2xhc3RGcmFtZUxvZ1Rp
bWU7CisgICAgdW5zaWduZWQgbV9mcmFtZUNvdW50IHsgMCB9OworI2VuZGlmCiAKICAgICBTdHJp
bmcgbV9pZEhhc2hTYWx0OwogICAgIFN0cmluZyBtX2hhc2hlZElEOwpAQCAtMjM2LDYgKzI1Nyw3
IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fZml0bmVzc1Njb3JlIHsgMCB9OwogICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIG1fZmFjaW5nTW9kZSB7IFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VXNlcn07CiAKKyAgICBib29sIG1fbXV0ZWQgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9wZW5kaW5nU2V0dGluZ3NEaWRDaGFuZ2VOb3RpZmljYXRpb24g
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9lY2hvQ2FuY2VsbGF0aW9uIHsgZmFsc2UgfTsKICAgICBi
b29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKQEAgLTI1Nyw2ICsyNzksMjMgQEAgc3Ry
dWN0IENhcHR1cmVTb3VyY2VPckVycm9yIHsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwogfTsK
IAorU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGUpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgorc3RydWN0IExvZ0FyZ3VtZW50OworCit0ZW1wbGF0ZSA8
Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU+
IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjb252ZXJ0RW51bWVy
YXRpb25Ub1N0cmluZyh0eXBlKTsKKyAgICB9Cit9OworCit9OyAvLyBuYW1lc3BhY2UgV1RGCisK
ICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncy5jcHAKaW5kZXggM2FhZGQyNDZkMzMuLjAyZDAyODMyZWY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OSw2ICs2OSw2NSBAQCBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OnZpZGVvRgogICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVu
a25vd247CiB9CiAKK1N0cmluZyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OmNvbnZlcnRG
bGFnc1RvU3RyaW5nKGNvbnN0IE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OkZsYWc+IGZsYWdzKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgIGJ1aWxk
ZXIuYXBwZW5kKCJbICIpOworICAgIGZvciAoYXV0byBmbGFnIDogZmxhZ3MpIHsKKyAgICAgICAg
aWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIp
OworCisgICAgICAgIHN3aXRjaCAoZmxhZykgeworICAgICAgICBjYXNlIFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6V2lkdGg6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiV2lkdGgi
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6SGVpZ2h0OgorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIkhlaWdodCIpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpBc3BlY3RSYXRpbzoKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJBc3BlY3RSYXRp
byIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzOjpGcmFtZVJhdGU6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiRnJhbWVS
YXRlIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OkZhY2luZ01vZGU6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiRmFj
aW5nTW9kZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpWb2x1bWU6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiVm9s
dW1lIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OlNhbXBsZVJhdGU6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiU2Ft
cGxlUmF0ZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpTYW1wbGVTaXplOgorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
IlNhbXBsZVNpemUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6RWNob0NhbmNlbGxhdGlvbjoKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCJFY2hvQ2FuY2VsbGF0aW9uIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRldmljZUlkOgorICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIkRldmljZUlkIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6Okdyb3VwSWQ6CisgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiR3JvdXBJZCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpMYWJlbDoKKyAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCJMYWJlbCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZToKKyAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCJEaXNwbGF5U3VyZmFjZSIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpMb2dpY2FsU3VyZmFjZToK
KyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJMb2dpY2FsU3VyZmFjZSIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgYnVpbGRlci5hcHBlbmQoIiBdIik7CisK
KyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCiBPcHRpb25TZXQ8UmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OmRp
ZmZlcmVuY2UoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiB0aGF0KSBjb25zdAog
ewogICAgIE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IGRpZmZl
cmVuY2U7CkBAIC0xMDUsNiArMTY0LDIzIEBAIE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OkZsYWc+IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6ZGlmZmVyCiAgICAg
cmV0dXJuIGRpZmZlcmVuY2U7CiB9CiAKK1N0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmlu
ZyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBlbnVtZXJhdGlv
blZhbHVlKQoreworICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHZhbHVl
c1tdID0geworICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiVW5rbm93biIpLAorICAg
ICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiVXNlciIpLAorICAgICAgICBNQUtFX1NUQVRJ
Q19TVFJJTkdfSU1QTCgiRW52aXJvbm1lbnQiKSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5H
X0lNUEwoIkxlZnQiKSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIlJpZ2h0Iiks
CisgICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OlVua25vd24pID09IDAsICJSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZTo6VW5rbm93biBpcyBub3Qg
MCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZTo6VXNlcikgPT0gMSwg
IlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpVc2VyIGlzIG5v
dCAxIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+
KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpFbnZpcm9ubWVu
dCkgPT0gMiwgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpF
bnZpcm9ubWVudCBpcyBub3QgMiBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5n
TW9kZTo6TGVmdCkgPT0gMywgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNp
bmdNb2RlOjpMZWZ0IGlzIG5vdCAzIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChz
dGF0aWNfY2FzdDxzaXplX3Q+KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNp
bmdNb2RlOjpSaWdodCkgPT0gNCwgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9G
YWNpbmdNb2RlOjpSaWdodCBpcyBub3QgNCBhcyBleHBlY3RlZCIpOworICAgIEFTU0VSVChzdGF0
aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpIDwgV1RGX0FSUkFZX0xFTkdUSCh2YWx1
ZXMpKTsKKyAgICByZXR1cm4gdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25W
YWx1ZSldOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzLmgKaW5kZXggYzRhOTZiYmQ1OTMuLjM5NWE2NGNiZDNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNCw2ICsxMzQsOCBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owog
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJik7CiAKKyAgICBzdGF0aWMgU3RyaW5nIGNvbnZl
cnRGbGFnc1RvU3RyaW5nKGNvbnN0IE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OkZsYWc+KTsKKwogcHJpdmF0ZToKICAgICB1aW50MzJfdCBtX3dpZHRoIHsgMCB9OwogICAg
IHVpbnQzMl90IG1faGVpZ2h0IHsgMCB9OwpAQCAtMTkxLDYgKzE5Myw4IEBAIGJvb2wgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmVhbHRpbWVN
ZWRpYVNvdXJjZVNlCiAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlRW51bShzZXR0aW5ncy5tX2Zh
Y2luZ01vZGUpOwogfQogCitTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUpOworCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMjA2LDYgKzIxMCwyNSBAQCB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OlZpZGVvRmFjaW5nTQogICAgID47CiB9OwogCi19Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBl
Pgorc3RydWN0IExvZ0FyZ3VtZW50OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3VtZW50
PFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlPiB7
CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBtb2RlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKG1vZGUpOworICAgIH0KK307CisKK3RlbXBs
YXRlIDw+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8T3B0aW9uU2V0PFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6RmxhZz4+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNv
bnN0IE9wdGlvblNldDxXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+
IGZsYWdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6Y29udmVydEZsYWdzVG9TdHJpbmcoZmxhZ3MpOworICAgIH0KK307CisKK307
IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcAppbmRleCAwM2I5NDk2ZWZjYy4uNzc0NzA4NjkwNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5j
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OlJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgc291cmNlKQog
ICAgIDogbV9hdWRpb1NvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECi0gICAgLCBtX2xvZ0lkZW50aWZpZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4oY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSkpCisgICAgLCBtX2xvZ2dlcihtX2F1
ZGlvU291cmNlLT5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcihtX2F1ZGlvU291cmNl
LT5sb2dJZGVudGlmaWVyKCkpCiAjZW5kaWYKIHsKIH0KQEAgLTEzNCwxNCArMTM1LDYgQEAgV1RG
TG9nQ2hhbm5lbCYgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpsb2dDaGFubmVsKCkgY29u
c3QKIHsKICAgICByZXR1cm4gTG9nV2ViUlRDOwogfQotCi1jb25zdCBMb2dnZXImIFJlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZTo6bG9nZ2VyKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fbG9nZ2Vy
KQotICAgICAgICBtX2xvZ2dlciA9IExvZ2dlcjo6Y3JlYXRlKHRoaXMpOwotICAgIHJldHVybiAq
bV9sb2dnZXI7Ci19Ci0KICNlbmRpZgogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaAppbmRleCA5N2QwZDRmZWM3ZC4uYzMxNTczMDhh
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAxOSBBcHBsZSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02
OSwxMCArNjksNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZXRTb3VyY2UoUmVmPE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlPiYmKTsKICAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgc291cmNlKCkg
Y29uc3QgeyByZXR1cm4gbV9hdWRpb1NvdXJjZS5nZXQoKTsgfQogCi0jaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECi0gICAgdm9pZCBzZXRMb2dnZXIoUmVmPGNvbnN0IExvZ2dlcj4mJiBsb2dnZXIp
IHsgbV9sb2dnZXIgPSBXVEZNb3ZlKGxvZ2dlcik7IH0KLSNlbmRpZgotCiBwcm90ZWN0ZWQ6CiAg
ICAgZXhwbGljaXQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJik7CiAKQEAgLTg2LDcgKzgyLDcgQEAgcHJvdGVjdGVkOgogCiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLy8gTG9nZ2VySGVscGVyIEFQSQotICAgIGNvbnN0IExv
Z2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWw7CisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQogICAgIGNvbnN0IHZvaWQqIGxv
Z0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KICAg
ICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlIjsgfQogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwo
KSBjb25zdCBmaW5hbDsKQEAgLTEzNyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8
d2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSo+IG1fc2lua3M7CiAKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKLSAgICBtdXRhYmxlIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2Vy
OworICAgIG11dGFibGUgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9p
ZCogbV9sb2dJZGVudGlmaWVyOwogICAgIHNpemVfdCBtX2NodW5rc1NlbnQgeyAwIH07CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDY0YjRlOWUyZTRi
Li5lZjkzZTY3ZGYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00MCw3ICs0MCw2IEBAIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0JFR0lO
CiAKIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0VORAogCi0jaW5jbHVkZSA8d3RmL0NyeXB0b2dy
YXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksNyArNDgsOCBAQCBSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2U6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFj
a1ByaQogICAgIDogbV92aWRlb1NvdXJjZShXVEZNb3ZlKHZpZGVvU291cmNlKSkKICAgICAsIG1f
YmxhY2tGcmFtZVRpbWVyKCp0aGlzLCAmUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpzZW5k
T25lQmxhY2tGcmFtZSkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAsIG1fbG9nSWRl
bnRpZmllcihyZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihjcnlwdG9ncmFwaGljYWxseVJh
bmRvbU51bWJlcigpKSkKKyAgICAsIG1fbG9nZ2VyKG1fdmlkZW9Tb3VyY2UtPmxvZ2dlcigpKQor
ICAgICwgbV9sb2dJZGVudGlmaWVyKG1fdmlkZW9Tb3VyY2UtPmxvZ0lkZW50aWZpZXIoKSkKICNl
bmRpZgogewogfQpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlOjpzZW5kQmxhY2tGcmFtZXNJZk5lZWRlZCgpCiAKIHZvaWQgUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlOjpzZW5kT25lQmxhY2tGcmFtZSgpCiB7Ci0gICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCAidGVzdCIpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAgICAg
c2VuZEZyYW1lKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+KG1f
YmxhY2tGcmFtZSkpOwogfQogCkBAIC0yMDksNiArMjA5LDE5IEBAIHZvaWQgUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlOjpzZW5kRnJhbWUocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6Vmlk
ZW9GcmFtCiAgICAgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAgPSBNb25vdG9uaWNUaW1lOjpub3co
KTsKICAgICB3ZWJydGM6OlZpZGVvRnJhbWUgZnJhbWUoYnVmZmVyLCBtX3Nob3VsZEFwcGx5Um90
YXRpb24gPyB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzAgOiBtX2N1cnJlbnRSb3RhdGlvbiwgc3Rh
dGljX2Nhc3Q8aW50NjRfdD4odGltZXN0YW1wLnNlY29uZHNTaW5jZUVwb2NoKCkubWljcm9zZWNv
bmRzKCkpKTsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICsrbV9mcmFtZUNvdW50
OworCisgICAgYXV0byBkZWx0YSA9IHRpbWVzdGFtcCAtIG1fbGFzdEZyYW1lTG9nVGltZTsKKyAg
ICBpZiAoIW1fbGFzdEZyYW1lTG9nVGltZSB8fCBkZWx0YSA+PSAxX3MpIHsKKyAgICAgICAgaWYg
KG1fbGFzdEZyYW1lTG9nVGltZSkgeworICAgICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklF
UiwgbV9mcmFtZUNvdW50LCAiIGZyYW1lcyBzZW50IGluICIsIGRlbHRhLnZhbHVlKCksICIgc2Vj
b25kcyIpOworICAgICAgICAgICAgbV9mcmFtZUNvdW50ID0gMDsKKyAgICAgICAgfQorICAgICAg
ICBtX2xhc3RGcmFtZUxvZ1RpbWUgPSB0aW1lc3RhbXA7CisgICAgfQorI2VuZGlmCisKICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2lua3NMb2NrKTsKICAgICBmb3IgKGF1dG8qIHNpbmsg
OiBtX3NpbmtzKQogICAgICAgICBzaW5rLT5PbkZyYW1lKGZyYW1lKTsKQEAgLTIxOSwxMyArMjMy
LDYgQEAgV1RGTG9nQ2hhbm5lbCYgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpsb2dDaGFu
bmVsKCkgY29uc3QKIHsKICAgICByZXR1cm4gTG9nV2ViUlRDOwogfQotCi1jb25zdCBMb2dnZXIm
IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6bG9nZ2VyKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1fbG9nZ2VyKQotICAgICAgICBtX2xvZ2dlciA9IExvZ2dlcjo6Y3JlYXRlKHRoaXMpOwotICAg
IHJldHVybiAqbV9sb2dnZXI7Ci19CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaAppbmRleCAwMzFmNjA3YzdkZC4uYzQ2YTAy
NzA5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAxOSBBcHBsZSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC03MiwxMCArNzIsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEFwcGx5Um90YXRpb24oYm9v
bCBzaG91bGRBcHBseVJvdGF0aW9uKSB7IG1fc2hvdWxkQXBwbHlSb3RhdGlvbiA9IHNob3VsZEFw
cGx5Um90YXRpb247IH0KIAotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIHZvaWQgc2V0
TG9nZ2VyKFJlZjxjb25zdCBMb2dnZXI+JiYgbG9nZ2VyKSB7IG1fbG9nZ2VyID0gV1RGTW92ZShs
b2dnZXIpOyB9Ci0jZW5kaWYKLQogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFJlYWx0aW1lT3V0
Z29pbmdWaWRlb1NvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOwogCkBAIC04
OSw3ICs4NSw3IEBAIHByb3RlY3RlZDoKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
IC8vIExvZ2dlckhlbHBlciBBUEkKLSAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZp
bmFsOworICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9s
b2dnZXIuZ2V0KCk7IH0KICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NO
YW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZSI7
IH0KICAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CkBAIC0xNDUs
OCArMTQxLDEwIEBAIHByaXZhdGU6CiAgICAgdWludDMyX3QgbV9oZWlnaHQgeyAwIH07CiAKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBtdXRhYmxlIFJlZlB0cjxjb25zdCBMb2dnZXI+
IG1fbG9nZ2VyOworICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZv
aWQqIG1fbG9nSWRlbnRpZmllcjsKKyAgICBNb25vdG9uaWNUaW1lIG1fbGFzdEZyYW1lTG9nVGlt
ZTsKKyAgICB1bnNpZ25lZCBtX2ZyYW1lQ291bnQgeyAwIH07CiAjZW5kaWYKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9T
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVW
aWRlb1NvdXJjZS5jcHAKaW5kZXggNDUyOWUyODAzOGIuLmFkYTFlYzNhMmM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZp
ZGVvU291cmNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgIlJlbW90ZVZpZGVvU2FtcGxlLmgiCisjaW5jbHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4K
IAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkltYWdlVHJhbnNmZXJTZXNzaW9uVlQu
aCIKQEAgLTM1Miw3ICszNTMsNyBAQCBPcHRpb25hbDxSZWFsdGltZVZpZGVvU291cmNlOjpDYXB0
dXJlU2l6ZUFuZEZyYW1lUmF0ZT4gUmVhbHRpbWVWaWRlb1NvdXJjZTo6YmVzdAogCiB2b2lkIFJl
YWx0aW1lVmlkZW9Tb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3aWR0
aCwgT3B0aW9uYWw8aW50PiBoZWlnaHQsIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlKQogewot
ICAgIE9wdGlvbmFsPFJlYWx0aW1lVmlkZW9Tb3VyY2U6OkNhcHR1cmVTaXplQW5kRnJhbWVSYXRl
PiBtYXRjaDsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCBT
aXplQW5kRnJhbWVSYXRlIHsgd2lkdGgsIGhlaWdodCwgZnJhbWVSYXRlIH0pOwogCiAgICAgYXV0
byBzaXplID0gdGhpcy0+c2l6ZSgpOwogICAgIGlmICghd2lkdGggJiYgIWhlaWdodCAmJiAhc2l6
ZS5pc0VtcHR5KCkpIHsKQEAgLTM2MCw3ICszNjEsNyBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3Vy
Y2U6OnNldFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3aWR0aCwgT3B0aW9uYWw8aW50
PgogICAgICAgICBoZWlnaHQgPSBzaXplLmhlaWdodCgpOwogICAgIH0KIAotICAgIG1hdGNoID0g
YmVzdFN1cHBvcnRlZFNpemVBbmRGcmFtZVJhdGUod2lkdGgsIGhlaWdodCwgZnJhbWVSYXRlKTsK
KyAgICBPcHRpb25hbDxSZWFsdGltZVZpZGVvU291cmNlOjpDYXB0dXJlU2l6ZUFuZEZyYW1lUmF0
ZT4gbWF0Y2ggPSBiZXN0U3VwcG9ydGVkU2l6ZUFuZEZyYW1lUmF0ZSh3aWR0aCwgaGVpZ2h0LCBm
cmFtZVJhdGUpOwogICAgIEFTU0VSVChtYXRjaCk7CiAgICAgaWYgKCFtYXRjaCkKICAgICAgICAg
cmV0dXJuOwpAQCAtNDExLDYgKzQxMiwyNCBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OmRp
c3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycyhNZWRpYVNhbXBsZSYgc2FtcGxlKQogICAgIHZp
ZGVvU2FtcGxlQXZhaWxhYmxlKG1lZGlhU2FtcGxlLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCisj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitSZWY8SlNPTjo6T2JqZWN0PiBTaXplQW5kRnJhbWVS
YXRlOjp0b0pTT05PYmplY3QoKSBjb25zdAoreworICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKKworICAgIG9iamVjdC0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgg
PyB3aWR0aC52YWx1ZSgpIDogMCk7CisgICAgb2JqZWN0LT5zZXREb3VibGUoImhlaWdodCJfcywg
aGVpZ2h0ID8gaGVpZ2h0LnZhbHVlKCkgOiAwKTsKKyAgICBvYmplY3QtPnNldERvdWJsZSgiZnJh
bWVSYXRlIl9zLCBmcmFtZVJhdGUgPyBmcmFtZVJhdGUudmFsdWUoKSA6IDApOworCisgICAgcmV0
dXJuIG9iamVjdDsKK30KKworU3RyaW5nIFNpemVBbmRGcmFtZVJhdGU6OnRvSlNPTlN0cmluZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHRvSlNPTk9iamVjdCgpLT50b0pTT05TdHJpbmcoKTsKK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5oCmluZGV4IDA3ZGVkNGYxZjU5Li5hYzM0NDAwZDUy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC04MSw2ICs4MSwxMCBAQCBwcml2YXRlOgogICAgIE9wdGlv
bmFsPENhcHR1cmVTaXplQW5kRnJhbWVSYXRlPiBiZXN0U3VwcG9ydGVkU2l6ZUFuZEZyYW1lUmF0
ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91
YmxlPik7CiAgICAgYm9vbCBwcmVzZXRTdXBwb3J0c0ZyYW1lUmF0ZShSZWZQdHI8VmlkZW9QcmVz
ZXQ+LCBkb3VibGUpOwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgY2hh
ciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlYWx0aW1lVmlkZW9T
b3VyY2UiOyB9CisjZW5kaWYKKwogICAgIFZlY3RvcjxSZWY8VmlkZW9QcmVzZXQ+PiBtX3ByZXNl
dHM7CiAgICAgRGVxdWU8ZG91YmxlPiBtX29ic2VydmVkRnJhbWVUaW1lU3RhbXBzOwogICAgIGRv
dWJsZSBtX29ic2VydmVkRnJhbWVSYXRlIHsgMCB9OwpAQCAtOTAsNyArOTQsMjcgQEAgcHJpdmF0
ZToKICNlbmRpZgogfTsKIAorc3RydWN0IFNpemVBbmRGcmFtZVJhdGUgeworICAgIE9wdGlvbmFs
PGludD4gd2lkdGg7CisgICAgT3B0aW9uYWw8aW50PiBoZWlnaHQ7CisgICAgT3B0aW9uYWw8ZG91
YmxlPiBmcmFtZVJhdGU7CisKKyAgICBTdHJpbmcgdG9KU09OU3RyaW5nKCkgY29uc3Q7CisgICAg
UmVmPEpTT046Ok9iamVjdD4gdG9KU09OT2JqZWN0KCkgY29uc3Q7Cit9OworCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4g
c3RydWN0IExvZ0FyZ3VtZW50OwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJD
b3JlOjpTaXplQW5kRnJhbWVSYXRlPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25z
dCBXZWJDb3JlOjpTaXplQW5kRnJhbWVSYXRlJiBzaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHNpemUudG9KU09OU3RyaW5nKCk7CisgICAgfQorfTsKK307IC8vIG5hbWVzcGFjZSBXVEYKKwog
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuY3BwCmluZGV4IGVkOWZiOGJmMjVhLi5iM2M5ODU0OTBkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC0xMjIsMTAgKzEyMiwxNSBAQCBwcml2YXRl
OgogCiBzdGF0aWMgdm9pZCBkb1JlbGVhc2VMb2dnaW5nKHJ0Yzo6TG9nZ2luZ1NldmVyaXR5IHNl
dmVyaXR5LCBjb25zdCBjaGFyKiBtZXNzYWdlKQogeworI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVE
CisgICAgVU5VU0VEX1BBUkFNKHNldmVyaXR5KTsKKyAgICBVTlVTRURfUEFSQU0obWVzc2FnZSk7
CisjZWxzZQogICAgIGlmIChzZXZlcml0eSA9PSBydGM6OkxTX0VSUk9SKQogICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihXZWJSVEMsICJMaWJXZWJSVEMgZXJyb3I6ICV7cHVibGljfXMiLCBtZXNz
YWdlKTsKICAgICBlbHNlCiAgICAgICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkxpYldlYlJUQyBt
ZXNzYWdlOiAle3B1YmxpY31zIiwgbWVzc2FnZSk7CisjZW5kaWYKIH0KIAogc3RhdGljIHZvaWQg
c2V0TG9nZ2luZyhydGM6OkxvZ2dpbmdTZXZlcml0eSBsZXZlbCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJl
U291cmNlLmgKaW5kZXggMjZmOTJmZjVkZTEuLjQxN2E3M2IyOWExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0Nh
cHR1cmVTb3VyY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTczLDcgKzczLDYgQEAgcHJpdmF0ZToKICAgICBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZShBVkNhcHR1cmVEZXZpY2UqLCBTdHJpbmcmJiBpZCwgU3RyaW5nJiYgaGFzaFNh
bHQpOwogICAgIHZpcnR1YWwgfkFWVmlkZW9DYXB0dXJlU291cmNlKCk7CiAKLSAgICB2b2lkIGlu
aXRpYWxpemVTZXNzaW9uKCk7CiAgICAgdm9pZCBjbGVhclNlc3Npb24oKTsKIAogICAgIGJvb2wg
c2V0dXBTZXNzaW9uKCk7CkBAIC0xMTEsNiArMTEwLDEwIEBAIHByaXZhdGU6CiAKICAgICBBVkNh
cHR1cmVEZXZpY2UqIGRldmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlLmdldCgpOyB9CiAK
KyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiQVZWaWRlb0NhcHR1cmVTb3VyY2UiOyB9CisjZW5k
aWYKKwogICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gbV9idWZmZXI7CiAgICAgUmV0YWluUHRyPEFW
Q2FwdHVyZVZpZGVvRGF0YU91dHB1dD4gbV92aWRlb091dHB1dDsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQppbmRleCA5YTY2MWM3OTNlNC4uOTZlZDdmMTE0NmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVv
Q2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMDIsMTUgKzIwMiw5IEBAIEFWVmlk
ZW9DYXB0dXJlU291cmNlOjp+QVZWaWRlb0NhcHR1cmVTb3VyY2UoKQogICAgIGNsZWFyU2Vzc2lv
bigpOwogfQogCi12b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjppbml0aWFsaXplU2Vzc2lvbigp
Ci17Ci0gICAgQVNTRVJUKCFtX3Nlc3Npb24pOwotICAgIG1fc2Vzc2lvbiA9IGFkb3B0TlMoW2Fs
bG9jQVZDYXB0dXJlU2Vzc2lvbkluc3RhbmNlKCkgaW5pdF0pOwotICAgIFttX3Nlc3Npb24gYWRk
T2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInJ1bm5pbmciIG9wdGlv
bnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Oih2b2lkICopbmlsXTsKLX0K
LQogdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2xlYXJTZXNzaW9uKCkKIHsKKyAgICBBTFdB
WVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSKTsKICAgICBBU1NFUlQobV9zZXNz
aW9uKTsKICAgICBbbV9zZXNzaW9uIHJlbW92ZU9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgp
IGZvcktleVBhdGg6QCJydW5uaW5nIl07CiAgICAgbV9zZXNzaW9uID0gbnVsbHB0cjsKQEAgLTIy
Niw2ICsyMjAsNyBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzdGFydFByb2R1Y2luZ0Rh
dGEoKQogICAgIGlmIChbbV9zZXNzaW9uIGlzUnVubmluZ10pCiAgICAgICAgIHJldHVybjsKIAor
ICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOwogICAgIFttX29i
amNPYnNlcnZlciBhZGROb3RpZmljYXRpb25PYnNlcnZlcnNdOwogICAgIFttX3Nlc3Npb24gc3Rh
cnRSdW5uaW5nXTsKIH0KQEAgLTIzNSw2ICsyMzAsNyBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291
cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiAgICAgaWYgKCFtX3Nlc3Npb24pCiAgICAgICAgIHJl
dHVybjsKIAorICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOwog
ICAgIFttX29iamNPYnNlcnZlciByZW1vdmVOb3RpZmljYXRpb25PYnNlcnZlcnNdOwogCiAgICAg
aWYgKFttX3Nlc3Npb24gaXNSdW5uaW5nXSkKQEAgLTMzNSw2ICszMzEsOCBAQCBib29sIEFWVmlk
ZW9DYXB0dXJlU291cmNlOjpwcmVmZXJzUHJlc2V0KFZpZGVvUHJlc2V0JiBwcmVzZXQpCiAKIHZv
aWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGVXaXRoUHJlc2V0KElu
dFNpemUgcmVxdWVzdGVkU2l6ZSwgZG91YmxlIHJlcXVlc3RlZEZyYW1lUmF0ZSwgUmVmUHRyPFZp
ZGVvUHJlc2V0PiBwcmVzZXQpCiB7CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9H
SURFTlRJRklFUiwgU2l6ZUFuZEZyYW1lUmF0ZSB7IHJlcXVlc3RlZFNpemUud2lkdGgoKSwgcmVx
dWVzdGVkU2l6ZS5oZWlnaHQoKSwgcmVxdWVzdGVkRnJhbWVSYXRlIH0pOworCiAgICAgYXV0byog
YXZQcmVzZXQgPSBwcmVzZXQgPyBkb3duY2FzdDxBVlZpZGVvUHJlc2V0PihwcmVzZXQuZ2V0KCkp
IDogbnVsbHB0cjsKIAogICAgIGlmICghbV9zZXNzaW9uKSB7CkBAIC0zNjMsNiArMzYxLDEyIEBA
IHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGVXaXRoUHJlc2V0
KEludFNpemUgcmVxdWVzdGVkU2l6ZSwKICAgICAgICAgaWYgKFtkZXZpY2UoKSBsb2NrRm9yQ29u
ZmlndXJhdGlvbjomZXJyb3JdKSB7CiAgICAgICAgICAgICBpZiAoIW1fY3VycmVudFByZXNldCB8
fCAhW21fY3VycmVudFByZXNldC0+Zm9ybWF0LmdldCgpIGlzRXF1YWw6YXZQcmVzZXQtPmZvcm1h
dC5nZXQoKV0pIHsKICAgICAgICAgICAgICAgICBbZGV2aWNlKCkgc2V0QWN0aXZlRm9ybWF0OmF2
UHJlc2V0LT5mb3JtYXQuZ2V0KCldOworCisgICAgICAgICAgICAgICAgZnJhbWVSYXRlUmFuZ2Ug
PSBmcmFtZUR1cmF0aW9uRm9yRnJhbWVSYXRlKHJlcXVlc3RlZEZyYW1lUmF0ZSk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKGZyYW1lUmF0ZVJhbmdlKTsKKyAgICAgICAgICAgICAgICBpZiAoIWZy
YW1lUmF0ZVJhbmdlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgICAgICAgICAgICAgYXV0byBzZXR0aW5nc0RpY3Rpb25hcnkgPSBAewogICAg
ICAgICAgICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVs
Rm9ybWF0VHlwZUtleTogQChhdlZpZGVvQ2FwdHVyZVBpeGVsQnVmZmVyRm9ybWF0KCkpLApAQCAt
MzczLDE5ICszNzcsMjEgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0U2l6ZUFuZEZy
YW1lUmF0ZVdpdGhQcmVzZXQoSW50U2l6ZSByZXF1ZXN0ZWRTaXplLAogICAgICAgICAgICAgICAg
IFttX3ZpZGVvT3V0cHV0IHNldFZpZGVvU2V0dGluZ3M6c2V0dGluZ3NEaWN0aW9uYXJ5XTsKICNl
bmRpZgogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0
cigpLCBMT0dJREVOVElGSUVSLCAic2V0dGluZyBmcmFtZSByYXRlICIsIENNVGltZUdldFNlY29u
ZHMoW2ZyYW1lUmF0ZVJhbmdlIG1pbkZyYW1lRHVyYXRpb25dKSwgIiAuLiAiLCBDTVRpbWVHZXRT
ZWNvbmRzKFtmcmFtZVJhdGVSYW5nZSBtYXhGcmFtZUR1cmF0aW9uXSkpOwogICAgICAgICAgICAg
W2RldmljZSgpIHNldEFjdGl2ZVZpZGVvTWluRnJhbWVEdXJhdGlvbjpbZnJhbWVSYXRlUmFuZ2Ug
bWluRnJhbWVEdXJhdGlvbl1dOwogICAgICAgICAgICAgW2RldmljZSgpIHNldEFjdGl2ZVZpZGVv
TWF4RnJhbWVEdXJhdGlvbjpbZnJhbWVSYXRlUmFuZ2UgbWF4RnJhbWVEdXJhdGlvbl1dOwogICAg
ICAgICAgICAgW2RldmljZSgpIHVubG9ja0ZvckNvbmZpZ3VyYXRpb25dOwogICAgICAgICB9CiAg
ICAgfSBAY2F0Y2goTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICBSRUxFQVNFX0xP
RyhNZWRpYSwgIkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGUgLSBleGNlcHRpb24g
dGhyb3duIGNvbmZpZ3VyaW5nIGRldmljZTogPCVzPiAlcyIsIFtbZXhjZXB0aW9uIG5hbWVdIFVU
RjhTdHJpbmddLCBbW2V4Y2VwdGlvbiByZWFzb25dIFVURjhTdHJpbmddKTsKKyAgICAgICAgRVJS
T1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiZXJyb3IgY29uZmlndXJpbmcg
ZGV2aWNlICIsIFtbZXhjZXB0aW9uIG5hbWVdIFVURjhTdHJpbmddLCAiLCByZWFzb24gOiAiLCBb
W2V4Y2VwdGlvbiByZWFzb25dIFVURjhTdHJpbmddKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBbbV9zZXNzaW9uIGNvbW1pdENvbmZpZ3VyYXRpb25dOwogCiAgICAgbV9jdXJyZW50UHJl
c2V0ID0gYXZQcmVzZXQ7CiAKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIFJFTEVBU0VfTE9HKE1l
ZGlhLCAiQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZSAtIGZhaWxlZCB0byBsb2Nr
IHZpZGVvIGRldmljZSBmb3IgY29uZmlndXJhdGlvbjogJXMiLCBbW2Vycm9yIGxvY2FsaXplZERl
c2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7CisgICAgRVJST1JfTE9HX0lGKGVycm9yICYmIGxvZ2dl
clB0cigpLCBMT0dJREVOVElGSUVSLCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4
U3RyaW5nXSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgaW50IHNlbnNvck9yaWVudGF0aW9uKEFWQ2Fw
dHVyZVZpZGVvT3JpZW50YXRpb24gdmlkZW9PcmllbnRhdGlvbikKQEAgLTQyNiw3ICs0MzIsMTAg
QEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBTZXNzaW9uKCkKICAgICBpZiAobV9z
ZXNzaW9uKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGluaXRpYWxpemVTZXNzaW9uKCk7
CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUik7CisKKyAgICBt
X3Nlc3Npb24gPSBhZG9wdE5TKFthbGxvY0FWQ2FwdHVyZVNlc3Npb25JbnN0YW5jZSgpIGluaXRd
KTsKKyAgICBbbV9zZXNzaW9uIGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktl
eVBhdGg6QCJydW5uaW5nIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29u
dGV4dDoodm9pZCAqKW5pbF07CiAKICAgICBbbV9zZXNzaW9uIGJlZ2luQ29uZmlndXJhdGlvbl07
CiAgICAgYm9vbCBzdWNjZXNzID0gc2V0dXBDYXB0dXJlU2Vzc2lvbigpOwpAQCAtNDQ5LDEzICs0
NTgsMTUgQEAgQVZGcmFtZVJhdGVSYW5nZVR5cGUqIEFWVmlkZW9DYXB0dXJlU291cmNlOjpmcmFt
ZUR1cmF0aW9uRm9yRnJhbWVSYXRlKGRvdWJsZSByYXQKICAgICB9CiAKICAgICBpZiAoIWJlc3RG
cmFtZVJhdGVSYW5nZSkKLSAgICAgICAgUkVMRUFTRV9MT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkZvckZyYW1lUmF0ZSwgbm8gZnJhbWUgcmF0ZSByYW5nZSBm
b3IgcmF0ZSAlZyIsIHJhdGUpOworICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExP
R0lERU5USUZJRVIsICJubyBmcmFtZSByYXRlIHJhbmdlIGZvciByYXRlICIsIHJhdGUpOwogCiAg
ICAgcmV0dXJuIGJlc3RGcmFtZVJhdGVSYW5nZTsKIH0KIAogYm9vbCBBVlZpZGVvQ2FwdHVyZVNv
dXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbigpCiB7CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQ
dHIoKSwgTE9HSURFTlRJRklFUik7CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnZpZGVvQ2FwdHVyZUZhY3Rvcnko
KS5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOwogI2VuZGlmCkBAIC00NjMsMTIgKzQ3NCwxMiBAQCBi
b29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR1cENhcHR1cmVTZXNzaW9uKCkKICAgICBOU0Vy
cm9yICplcnJvciA9IG5pbDsKICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlRGV2aWNlSW5wdXRUeXBl
PiB2aWRlb0luID0gYWRvcHROUyhbYWxsb2NBVkNhcHR1cmVEZXZpY2VJbnB1dEluc3RhbmNlKCkg
aW5pdFdpdGhEZXZpY2U6ZGV2aWNlKCkgZXJyb3I6JmVycm9yXSk7CiAgICAgaWYgKGVycm9yKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HKE1lZGlhLCAiQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVw
Q2FwdHVyZVNlc3Npb24oJXApLCBmYWlsZWQgdG8gYWxsb2NhdGUgQVZDYXB0dXJlRGV2aWNlSW5w
dXQ6ICVzIiwgdGhpcywgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10p
OworICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJmYWls
ZWQgdG8gYWxsb2NhdGUgQVZDYXB0dXJlRGV2aWNlSW5wdXQgIiwgW1tlcnJvciBsb2NhbGl6ZWRE
ZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgaWYgKCFbc2Vzc2lvbigpIGNhbkFkZElucHV0OnZpZGVvSW4uZ2V0KCldKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HKE1lZGlhLCAiQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVy
ZVNlc3Npb24oJXApLCB1bmFibGUgdG8gYWRkIHZpZGVvIGlucHV0IGRldmljZSIsIHRoaXMpOwor
ICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJ1bmFibGUg
dG8gYWRkIHZpZGVvIGlucHV0IGRldmljZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIFtzZXNzaW9uKCkgYWRkSW5wdXQ6dmlkZW9Jbi5nZXQoKV07CkBAIC00ODEsNyArNDky
LDcgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbigpCiAg
ICAgW21fdmlkZW9PdXRwdXQgc2V0U2FtcGxlQnVmZmVyRGVsZWdhdGU6bV9vYmpjT2JzZXJ2ZXIu
Z2V0KCkgcXVldWU6Z2xvYmFWaWRlb0NhcHR1cmVTZXJpYWxRdWV1ZSgpXTsKIAogICAgIGlmICgh
W3Nlc3Npb24oKSBjYW5BZGRPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQoKV0pIHsKLSAgICAgICAg
UkVMRUFTRV9MT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vz
c2lvbiglcCksIHVuYWJsZSB0byBhZGQgdmlkZW8gc2FtcGxlIGJ1ZmZlciBvdXRwdXQgZGVsZWdh
dGUiLCB0aGlzKTsKKyAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElG
SUVSLCAidW5hYmxlIHRvIGFkZCB2aWRlbyBvdXRwdXQgZGV2aWNlIik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgW3Nlc3Npb24oKSBhZGRPdXRwdXQ6bV92aWRlb091dHB1dC5n
ZXQoKV07CkBAIC01NzEsNiArNTgyLDcgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2Fw
dHVyZU91dHB1dERpZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKEFWQ2EKIHZvaWQg
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKGJv
b2wgc3RhdGUpCiB7CiAgICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXMsIHN0YXRlXSB7Cisg
ICAgICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsIHN0YXRlKTsK
ICAgICAgICAgaWYgKChzdGF0ZSA9PSBtX2lzUnVubmluZykgJiYgKHN0YXRlID09ICFtdXRlZCgp
KSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNTg3LDYgKzU5OSw3IEBAIHZvaWQgQVZWaWRl
b0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVEZXZpY2VTdXNwZW5kZWREaWRDaGFuZ2UoKQogI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CiAg
ICAgICAgIGF1dG8gaXNTdXNwZW5kZWQgPSBbbV9kZXZpY2UgaXNTdXNwZW5kZWRdOworICAgICAg
ICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAhIWlzU3VzcGVuZGVk
KTsKICAgICAgICAgaWYgKGlzU3VzcGVuZGVkID09IG11dGVkKCkpCiAgICAgICAgICAgICByZXR1
cm47CiAKQEAgLTYyOSw2ICs2NDIsOCBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpnZW5l
cmF0ZVByZXNldHMoKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIEFWVmlkZW9DYXB0
dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvcihSZXRhaW5QdHI8TlNFcnJvcj4g
ZXJyb3IpCiB7CisgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCBb
W2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7CisKICAgICBpZiAoIW1f
aXNSdW5uaW5nIHx8IGVycm9yLmdldCgpLmNvZGUgIT0gQVZFcnJvck1lZGlhU2VydmljZXNXZXJl
UmVzZXQpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjM5LDExICs2NTQsMTQgQEAgdm9pZCBBVlZp
ZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3IoUmV0YWluUHRyPE5T
RXJyb3I+IGVycm9yKQogCiB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lv
bkJlZ2luSW50ZXJydXB0aW9uKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9u
KQogeworICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsIFtub3Rp
ZmljYXRpb24uZ2V0KCkudXNlckluZm9bQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNv
bktleV0gaW50ZWdlclZhbHVlXSk7CiAgICAgbV9pbnRlcnJ1cHRpb24gPSBzdGF0aWNfY2FzdDxB
VlZpZGVvQ2FwdHVyZVNvdXJjZTo6SW50ZXJydXB0aW9uUmVhc29uPihbbm90aWZpY2F0aW9uLmdl
dCgpLnVzZXJJbmZvW0FWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25LZXldIGludGVn
ZXJWYWx1ZV0pOwogfQogCiB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lv
bkVuZEludGVycnVwdGlvbihSZXRhaW5QdHI8TlNOb3RpZmljYXRpb24+KQogeworICAgIEFMV0FZ
U19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOworCiAgICAgSW50ZXJydXB0aW9u
UmVhc29uIHJlYXNvbiA9IG1faW50ZXJydXB0aW9uOwogCiAgICAgbV9pbnRlcnJ1cHRpb24gPSBJ
bnRlcnJ1cHRpb25SZWFzb246Ok5vbmU7CkBAIC02NTcsNiArNjc1LDcgQEAgdm9pZCBBVlZpZGVv
Q2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25FbmRJbnRlcnJ1cHRpb24oUmV0YWluUHRyPE5T
Tm90aWZpY2F0aW8KIAogdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGV2aWNlRGlzY29ubmVj
dGVkKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uKQogeworICAgIEFMV0FZ
U19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOwogICAgIGlmICh0aGlzLT5kZXZp
Y2UoKSA9PSBbbm90aWZpY2F0aW9uIG9iamVjdF0pCiAgICAgICAgIGNhcHR1cmVGYWlsZWQoKTsK
IH0KQEAgLTcyNCwxMyArNzQzLDEzIEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmRldmlj
ZURpc2Nvbm5lY3RlZChSZXRhaW5QdHI8TlNOb3RpZmljYXRpb24+IG5vdGlmaWNhCiAgICAgaWQg
bmV3VmFsdWUgPSBbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOZXdLZXldOwog
CiAgICAgYm9vbCB3aWxsQ2hhbmdlID0gW1tjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNo
YW5nZU5vdGlmaWNhdGlvbklzUHJpb3JLZXldIGJvb2xWYWx1ZV07Ci0jaWYgIUxPR19ESVNBQkxF
RAogCi0gICAgaWYgKHdpbGxDaGFuZ2UpCi0gICAgICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVlZp
ZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyOjpvYnNlcnZlVmFsdWVGb3JLZXlQYXRoKCVwKSAtIHdp
bGwgY2hhbmdlLCBrZXlQYXRoID0gJXMiLCBzZWxmLCBba2V5UGF0aCBVVEY4U3RyaW5nXSk7Ci0g
ICAgZWxzZSB7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgaWYgKG1fY2FsbGJhY2st
PmxvZ2dlclB0cigpICYmIG1fY2FsbGJhY2stPmxvZ2dlcigpLndpbGxMb2cobV9jYWxsYmFjay0+
bG9nQ2hhbm5lbCgpLCBXVEZMb2dMZXZlbERlYnVnKSkgeworICAgICAgICBhdXRvIGlkZW50aWZp
ZXIgPSBMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyKCJBVlZpZGVvQ2FwdHVyZVNvdXJjZSIsICJv
YnNlcnZlVmFsdWVGb3JLZXlQYXRoIiwgbV9jYWxsYmFjay0+bG9nSWRlbnRpZmllcigpKTsKKwog
ICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHZhbHVlU3RyaW5nID0gYWRvcHROUyhbW05TU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aEZvcm1hdDpAIiVAIiwgbmV3VmFsdWVdKTsKLSAgICAgICAgTE9H
KE1lZGlhLCAiV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXI6Om9ic2VydmVWYWx1
ZUZvcktleVBhdGgoJXApIC0gZGlkIGNoYW5nZSwga2V5UGF0aCA9ICVzLCB2YWx1ZSA9ICVzIiwg
c2VsZiwgW2tleVBhdGggVVRGOFN0cmluZ10sIFt2YWx1ZVN0cmluZy5nZXQoKSBVVEY4U3RyaW5n
XSk7CisgICAgICAgIG1fY2FsbGJhY2stPmxvZ2dlcigpLmRlYnVnKG1fY2FsbGJhY2stPmxvZ0No
YW5uZWwoKSwgaWRlbnRpZmllciwgImRpZCBjaGFuZ2UgJyIsIFtrZXlQYXRoIFVURjhTdHJpbmdd
LCAiJyB0byAiLCBbdmFsdWVTdHJpbmcuZ2V0KCkgVVRGOFN0cmluZ10pOwogICAgIH0KICNlbmRp
ZgogCkBAIC03NDIsOCArNzYxLDYgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGV2aWNl
RGlzY29ubmVjdGVkKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4gbm90aWZpY2EKIAogLSAodm9p
ZClkZXZpY2VDb25uZWN0ZWREaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24K
IHsKLSAgICBMT0coTWVkaWEsICJXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlcjo6
ZGV2aWNlQ29ubmVjdGVkRGlkQ2hhbmdlKCVwKSIsIHNlbGYpOwotCiAgICAgaWYgKG1fY2FsbGJh
Y2spCiAgICAgICAgIG1fY2FsbGJhY2stPmRldmljZURpc2Nvbm5lY3RlZChub3RpZmljYXRpb24p
OwogfQpAQCAtNzUyLDI0ICs3NjksMTggQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGV2
aWNlRGlzY29ubmVjdGVkKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4gbm90aWZpY2EKIC0gKHZv
aWQpc2Vzc2lvblJ1bnRpbWVFcnJvcjooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbgogewog
ICAgIE5TRXJyb3IgKmVycm9yID0gbm90aWZpY2F0aW9uLnVzZXJJbmZvW0FWQ2FwdHVyZVNlc3Np
b25FcnJvcktleV07Ci0gICAgTE9HKE1lZGlhLCAiV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNl
T2JzZXJ2ZXI6OnNlc3Npb25SdW50aW1lRXJyb3IoJXApIC0gZXJyb3IgPSAlcyIsIHNlbGYsIFtb
ZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKLQogICAgIGlmIChtX2Nh
bGxiYWNrKQogICAgICAgICBtX2NhbGxiYWNrLT5jYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvcihl
cnJvcik7CiB9CiAKIC0gKHZvaWQpYmVnaW5TZXNzaW9uSW50ZXJydXB0ZWQ6KE5TTm90aWZpY2F0
aW9uKilub3RpZmljYXRpb24KIHsKLSAgICBMT0coTWVkaWEsICJXZWJDb3JlQVZWaWRlb0NhcHR1
cmVTb3VyY2VPYnNlcnZlcjo6YmVnaW5TZXNzaW9uSW50ZXJydXB0ZWQoJXApIC0gcmVhc29uID0g
JWQiLCBzZWxmLCBbbm90aWZpY2F0aW9uLnVzZXJJbmZvW0FWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1
cHRpb25SZWFzb25LZXldIGludGVnZXJWYWx1ZV0pOwotCiAgICAgaWYgKG1fY2FsbGJhY2spCiAg
ICAgICAgIG1fY2FsbGJhY2stPmNhcHR1cmVTZXNzaW9uQmVnaW5JbnRlcnJ1cHRpb24obm90aWZp
Y2F0aW9uKTsKIH0KIAogLSAodm9pZCllbmRTZXNzaW9uSW50ZXJydXB0ZWQ6KE5TTm90aWZpY2F0
aW9uKilub3RpZmljYXRpb24KIHsKLSAgICBMT0coTWVkaWEsICJXZWJDb3JlQVZWaWRlb0NhcHR1
cmVTb3VyY2VPYnNlcnZlcjo6ZW5kU2Vzc2lvbkludGVycnVwdGVkKCVwKSIsIHNlbGYpOwotCiAg
ICAgaWYgKG1fY2FsbGJhY2spCiAgICAgICAgIG1fY2FsbGJhY2stPmNhcHR1cmVTZXNzaW9uRW5k
SW50ZXJydXB0aW9uKG5vdGlmaWNhdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZS5jcHAKaW5kZXggYzcxZDM1N2ZhZjMuLmM0MWJmN2E2MWQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVB
dWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgQ29yZUF1ZGlv
U2hhcmVkVW5pdDo6ZGV2aWNlc0NoYW5nZWQoY29uc3QgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBk
ZXZpY2VzKQogdm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0OjphZGRFY2hvQ2FuY2VsbGF0aW9uU291
cmNlKEF1ZGlvU2FtcGxlRGF0YVNvdXJjZSYgc291cmNlKQogewogICAgIGlmICghc291cmNlLnNl
dE91dHB1dEZvcm1hdChtX3NwZWFrZXJQcm9jRm9ybWF0KSkgewotICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmFkZEVjaG9DYW5jZWxsYXRpb25T
b3VyY2U6IHNvdXJjZSAlcCBjb25maWd1cmVPdXRwdXQgZmFpbGVkIiwgJnNvdXJjZSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmFkZEVj
aG9DYW5jZWxsYXRpb25Tb3VyY2U6IHNvdXJjZSAlcCBjb25maWd1cmVPdXRwdXQgZmFpbGVkIiwg
JnNvdXJjZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI2OSw3ICsyNjksNyBAQCBP
U1N0YXR1cyBDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXR1cEF1ZGlvVW5pdCgpCiAgICAgQXVkaW9D
b21wb25lbnQgaW9Db21wb25lbnQgPSBBdWRpb0NvbXBvbmVudEZpbmROZXh0KG51bGxwdHIsICZp
b1VuaXREZXNjcmlwdGlvbik7CiAgICAgQVNTRVJUKGlvQ29tcG9uZW50KTsKICAgICBpZiAoIWlv
Q29tcG9uZW50KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBmaW5kIHZwaW8gdW5p
dCBjb21wb25lbnQiLCB0aGlzKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAi
Q29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBmaW5kIHZw
aW8gdW5pdCBjb21wb25lbnQiLCB0aGlzKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIApA
QCAtMjc5LDEzICsyNzksMTMgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBB
dWRpb1VuaXQoKQogICAgIGlmIChuYW1lKSB7CiAgICAgICAgIG1faW9Vbml0TmFtZSA9IG5hbWU7
CiAgICAgICAgIENGUmVsZWFzZShuYW1lKTsKLSAgICAgICAgUkVMRUFTRV9MT0coTWVkaWEsICJD
b3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdCglcCkgY3JlYXRlZCBcIiVzXCIg
Y29tcG9uZW50IiwgdGhpcywgbV9pb1VuaXROYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBS
RUxFQVNFX0xPRyhXZWJSVEMsICJDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXR1cEF1ZGlvVW5pdCgl
cCkgY3JlYXRlZCBcIiVzXCIgY29tcG9uZW50IiwgdGhpcywgbV9pb1VuaXROYW1lLnV0ZjgoKS5k
YXRhKCkpOwogICAgIH0KICNlbmRpZgogCiAgICAgYXV0byBlcnIgPSBBdWRpb0NvbXBvbmVudElu
c3RhbmNlTmV3KGlvQ29tcG9uZW50LCAmbV9pb1VuaXQpOwogICAgIGlmIChlcnIpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1
cEF1ZGlvVW5pdCglcCkgdW5hYmxlIHRvIG9wZW4gdnBpbyB1bml0LCBlcnJvciAlZCAoJS40cyki
LCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihXZWJSVEMsICJDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXR1cEF1ZGlvVW5pdCglcCkgdW5hYmxl
IHRvIG9wZW4gdnBpbyB1bml0LCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNo
YXIqKSZlcnIpOwogICAgICAgICByZXR1cm4gZXJyOwogICAgIH0KIApAQCAtMjkzLDEzICsyOTMs
MTMgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRpb1VuaXQoKQogICAg
ICAgICB1aW50MzJfdCBwYXJhbSA9IDA7CiAgICAgICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3Bl
cnR5KG1faW9Vbml0LCBrQVVWb2ljZUlPUHJvcGVydHlfVm9pY2VQcm9jZXNzaW5nRW5hYmxlQUdD
LCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFsLCBpbnB1dEJ1cywgJnBhcmFtLCBzaXplb2YocGFyYW0p
KTsKICAgICAgICAgaWYgKGVycikgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdCglcCkgdW5hYmxlIHRv
IHNldCB2cGlvIGF1dG9tYXRpYyBnYWluIGNvbnRyb2wsIGVycm9yICVkICglLjRzKSIsIHRoaXMs
IChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihX
ZWJSVEMsICJDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXR1cEF1ZGlvVW5pdCglcCkgdW5hYmxlIHRv
IHNldCB2cGlvIGF1dG9tYXRpYyBnYWluIGNvbnRyb2wsIGVycm9yICVkICglLjRzKSIsIHRoaXMs
IChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgICAgICByZXR1cm4gZXJyOwogICAgICAg
ICB9CiAgICAgICAgIHBhcmFtID0gMTsKICAgICAgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVy
dHkobV9pb1VuaXQsIGtBVVZvaWNlSU9Qcm9wZXJ0eV9CeXBhc3NWb2ljZVByb2Nlc3NpbmcsIGtB
dWRpb1VuaXRTY29wZV9HbG9iYWwsIGlucHV0QnVzLCAmcGFyYW0sIHNpemVvZihwYXJhbSkpOwog
ICAgICAgICBpZiAoZXJyKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwg
IkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0KCVwKSB1bmFibGUgdG8gc2V0
IHZwaW8gdW5pdCBlY2hvIGNhbmNlbGxhdGlvbiwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGlu
dCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJU
QywgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OnNldHVwQXVkaW9Vbml0KCVwKSB1bmFibGUgdG8gc2V0
IHZwaW8gdW5pdCBlY2hvIGNhbmNlbGxhdGlvbiwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGlu
dCllcnIsIChjaGFyKikmZXJyKTsKICAgICAgICAgICAgIHJldHVybiBlcnI7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0zMDgsNyArMzA4LDcgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6
c2V0dXBBdWRpb1VuaXQoKQogICAgIHVpbnQzMl90IHBhcmFtID0gMTsKICAgICBlcnIgPSBBdWRp
b1VuaXRTZXRQcm9wZXJ0eShtX2lvVW5pdCwga0F1ZGlvT3V0cHV0VW5pdFByb3BlcnR5X0VuYWJs
ZUlPLCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIGlucHV0QnVzLCAmcGFyYW0sIHNpemVvZihwYXJh
bSkpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJD
b3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdCglcCkgdW5hYmxlIHRvIGVuYWJs
ZSB2cGlvIHVuaXQgaW5wdXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hh
ciopJmVycik7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIkNvcmVBdWRpb1No
YXJlZFVuaXQ6OnNldHVwQXVkaW9Vbml0KCVwKSB1bmFibGUgdG8gZW5hYmxlIHZwaW8gdW5pdCBp
bnB1dCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKICAg
ICAgICAgcmV0dXJuIGVycjsKICAgICB9CiAjZWxzZQpAQCAtMzIwLDcgKzMyMCw3IEBAIE9TU3Rh
dHVzIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNldHVwQXVkaW9Vbml0KCkKIAogICAgIGVyciA9IEF1
ZGlvVW5pdFNldFByb3BlcnR5KG1faW9Vbml0LCBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfQ3Vy
cmVudERldmljZSwga0F1ZGlvVW5pdFNjb3BlX0dsb2JhbCwgaW5wdXRCdXMsICZtX2NhcHR1cmVE
ZXZpY2VJRCwgc2l6ZW9mKG1fY2FwdHVyZURldmljZUlEKSk7CiAgICAgaWYgKGVycikgewotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNl
dHVwQXVkaW9Vbml0KCVwKSB1bmFibGUgdG8gc2V0IHZwaW8gdW5pdCBjYXB0dXJlIGRldmljZSBJ
RCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBB
dWRpb1VuaXQoJXApIHVuYWJsZSB0byBzZXQgdnBpbyB1bml0IGNhcHR1cmUgZGV2aWNlIElELCBl
cnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwogICAgICAgICBy
ZXR1cm4gZXJyOwogICAgIH0KICNlbmRpZgpAQCAtMzM1LDcgKzMzNSw3IEBAIE9TU3RhdHVzIENv
cmVBdWRpb1NoYXJlZFVuaXQ6OnNldHVwQXVkaW9Vbml0KCkKIAogICAgIGVyciA9IEF1ZGlvVW5p
dEluaXRpYWxpemUobV9pb1VuaXQpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdCgl
cCkgQXVkaW9Vbml0SW5pdGlhbGl6ZSgpIGZhaWxlZCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywg
KGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRD
LCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRpb1VuaXQoJXApIEF1ZGlvVW5pdEluaXRp
YWxpemUoKSBmYWlsZWQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciop
JmVycik7CiAgICAgICAgIHJldHVybiBlcnI7CiAgICAgfQogICAgIG1faW9Vbml0SW5pdGlhbGl6
ZWQgPSB0cnVlOwpAQCAtMzU4LDcgKzM1OCw3IEBAIE9TU3RhdHVzIENvcmVBdWRpb1NoYXJlZFVu
aXQ6OmNvbmZpZ3VyZU1pY3JvcGhvbmVQcm9jKCkKICAgICBBVVJlbmRlckNhbGxiYWNrU3RydWN0
IGNhbGxiYWNrID0geyBtaWNyb3Bob25lQ2FsbGJhY2ssIHRoaXMgfTsKICAgICBhdXRvIGVyciA9
IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1faW9Vbml0LCBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlf
U2V0SW5wdXRDYWxsYmFjaywga0F1ZGlvVW5pdFNjb3BlX0dsb2JhbCwgaW5wdXRCdXMsICZjYWxs
YmFjaywgc2l6ZW9mKGNhbGxiYWNrKSk7CiAgICAgaWYgKGVycikgewotICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmNvbmZpZ3VyZU1pY3JvcGhv
bmVQcm9jKCVwKSB1bmFibGUgdG8gc2V0IHZwaW8gdW5pdCBtaWMgcHJvYywgZXJyb3IgJWQgKCUu
NHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoV2ViUlRDLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y29uZmlndXJlTWljcm9waG9uZVBy
b2MoJXApIHVuYWJsZSB0byBzZXQgdnBpbyB1bml0IG1pYyBwcm9jLCBlcnJvciAlZCAoJS40cyki
LCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwogICAgICAgICByZXR1cm4gZXJyOwogICAg
IH0KIApAQCAtMzY3LDE0ICszNjcsMTQgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6
Y29uZmlndXJlTWljcm9waG9uZVByb2MoKQogICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKG1pY3Jv
cGhvbmVQcm9jRm9ybWF0KTsKICAgICBlcnIgPSBBdWRpb1VuaXRHZXRQcm9wZXJ0eShtX2lvVW5p
dCwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX091dHB1
dCwgaW5wdXRCdXMsICZtaWNyb3Bob25lUHJvY0Zvcm1hdCwgJnNpemUpOwogICAgIGlmIChlcnIp
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDb3JlQXVkaW9TaGFyZWRVbml0
Ojpjb25maWd1cmVNaWNyb3Bob25lUHJvYyglcCkgdW5hYmxlIHRvIGdldCBvdXRwdXQgc3RyZWFt
IGZvcm1hdCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6
Y29uZmlndXJlTWljcm9waG9uZVByb2MoJXApIHVuYWJsZSB0byBnZXQgb3V0cHV0IHN0cmVhbSBm
b3JtYXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAg
ICAgICAgIHJldHVybiBlcnI7CiAgICAgfQogCiAgICAgbWljcm9waG9uZVByb2NGb3JtYXQubVNh
bXBsZVJhdGUgPSBtX3NhbXBsZVJhdGU7CiAgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHko
bV9pb1VuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29w
ZV9PdXRwdXQsIGlucHV0QnVzLCAmbWljcm9waG9uZVByb2NGb3JtYXQsIHNpemUpOwogICAgIGlm
IChlcnIpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDb3JlQXVkaW9TaGFy
ZWRVbml0Ojpjb25maWd1cmVNaWNyb3Bob25lUHJvYyglcCkgdW5hYmxlIHRvIHNldCBvdXRwdXQg
c3RyZWFtIGZvcm1hdCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikm
ZXJyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiQ29yZUF1ZGlvU2hhcmVk
VW5pdDo6Y29uZmlndXJlTWljcm9waG9uZVByb2MoJXApIHVuYWJsZSB0byBzZXQgb3V0cHV0IHN0
cmVhbSBmb3JtYXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVy
cik7CiAgICAgICAgIHJldHVybiBlcnI7CiAgICAgfQogCkBAIC0zODksNyArMzg5LDcgQEAgT1NT
dGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y29uZmlndXJlU3BlYWtlclByb2MoKQogICAgIEFV
UmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgY2FsbGJhY2sgPSB7IHNwZWFrZXJDYWxsYmFjaywgdGhpcyB9
OwogICAgIGF1dG8gZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9pb1VuaXQsIGtBdWRpb1Vu
aXRQcm9wZXJ0eV9TZXRSZW5kZXJDYWxsYmFjaywga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCBvdXRw
dXRCdXMsICZjYWxsYmFjaywgc2l6ZW9mKGNhbGxiYWNrKSk7CiAgICAgaWYgKGVycikgewotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmNvbmZp
Z3VyZVNwZWFrZXJQcm9jKCVwKSB1bmFibGUgdG8gc2V0IHZwaW8gdW5pdCBzcGVha2VyIHByb2Ms
IGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmNvbmZpZ3Vy
ZVNwZWFrZXJQcm9jKCVwKSB1bmFibGUgdG8gc2V0IHZwaW8gdW5pdCBzcGVha2VyIHByb2MsIGVy
cm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgIHJl
dHVybiBlcnI7CiAgICAgfQogCkBAIC0zOTgsMTQgKzM5OCwxNCBAQCBPU1N0YXR1cyBDb3JlQXVk
aW9TaGFyZWRVbml0Ojpjb25maWd1cmVTcGVha2VyUHJvYygpCiAgICAgVUludDMyIHNpemUgPSBz
aXplb2Yoc3BlYWtlclByb2NGb3JtYXQpOwogICAgIGVyciA9IEF1ZGlvVW5pdEdldFByb3BlcnR5
KG1faW9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2Nv
cGVfSW5wdXQsIG91dHB1dEJ1cywgJnNwZWFrZXJQcm9jRm9ybWF0LCAmc2l6ZSk7CiAgICAgaWYg
KGVycikgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkNvcmVBdWRpb1NoYXJl
ZFVuaXQ6OmNvbmZpZ3VyZVNwZWFrZXJQcm9jKCVwKSB1bmFibGUgdG8gZ2V0IGlucHV0IHN0cmVh
bSBmb3JtYXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6
OmNvbmZpZ3VyZVNwZWFrZXJQcm9jKCVwKSB1bmFibGUgdG8gZ2V0IGlucHV0IHN0cmVhbSBmb3Jt
YXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAg
ICAgIHJldHVybiBlcnI7CiAgICAgfQogCiAgICAgc3BlYWtlclByb2NGb3JtYXQubVNhbXBsZVJh
dGUgPSBtX3NhbXBsZVJhdGU7CiAgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9pb1Vu
aXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9JbnB1
dCwgb3V0cHV0QnVzLCAmc3BlYWtlclByb2NGb3JtYXQsIHNpemUpOwogICAgIGlmIChlcnIpIHsK
LSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDb3JlQXVkaW9TaGFyZWRVbml0Ojpj
b25maWd1cmVTcGVha2VyUHJvYyglcCkgdW5hYmxlIHRvIGdldCBpbnB1dCBzdHJlYW0gZm9ybWF0
LCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJDb3JlQXVkaW9TaGFyZWRVbml0Ojpjb25maWd1
cmVTcGVha2VyUHJvYyglcCkgdW5hYmxlIHRvIGdldCBpbnB1dCBzdHJlYW0gZm9ybWF0LCBlcnJv
ciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwogICAgICAgICByZXR1
cm4gZXJyOwogICAgIH0KIApAQCAtNDE5LDcgKzQxOSw3IEBAIE9TU3RhdHVzIENvcmVBdWRpb1No
YXJlZFVuaXQ6OmNvbmZpZ3VyZVNwZWFrZXJQcm9jKCkKIHZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5p
dDo6Y2hlY2tUaW1lc3RhbXBzKGNvbnN0IEF1ZGlvVGltZVN0YW1wJiB0aW1lU3RhbXAsIHVpbnQ2
NF90IHNhbXBsZVRpbWUsIGRvdWJsZSBob3N0VGltZSkKIHsKICAgICBpZiAoIXRpbWVTdGFtcC5t
U2FtcGxlVGltZSB8fCBzYW1wbGVUaW1lID09IG1fbGF0ZXN0TWljVGltZVN0YW1wIHx8ICFob3N0
VGltZSkKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDb3JlQXVkaW9TaGFyZWRV
bml0OjpjaGVja1RpbWVzdGFtcHM6IHVudXN1YWwgdGltZXN0YW1wcywgc2FtcGxlIHRpbWUgPSAl
bGxkLCBwcmV2aW91cyBzYW1wbGUgdGltZSA9ICVsbGQsIGhvc3RUaW1lICVmIiwgc2FtcGxlVGlt
ZSwgbV9sYXRlc3RNaWNUaW1lU3RhbXAsIGhvc3RUaW1lKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoV2ViUlRDLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y2hlY2tUaW1lc3RhbXBzOiB1bnVz
dWFsIHRpbWVzdGFtcHMsIHNhbXBsZSB0aW1lID0gJWxsZCwgcHJldmlvdXMgc2FtcGxlIHRpbWUg
PSAlbGxkLCBob3N0VGltZSAlZiIsIHNhbXBsZVRpbWUsIG1fbGF0ZXN0TWljVGltZVN0YW1wLCBo
b3N0VGltZSk7CiB9CiAjZW5kaWYKIApAQCAtNDMxLDcgKzQzMSw3IEBAIE9TU3RhdHVzIENvcmVB
dWRpb1NoYXJlZFVuaXQ6OnByb3ZpZGVTcGVha2VyRGF0YShBdWRpb1VuaXRSZW5kZXJBY3Rpb25G
bGFncyYgLyppCiAjZW5kaWYKIAogICAgIGlmIChtX3NwZWFrZXJTYW1wbGVCdWZmZXItPnNhbXBs
ZUNhcGFjaXR5KCkgPCBpbk51bWJlckZyYW1lcykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OnByb3ZpZGVTcGVha2VyRGF0YTogc3BlYWtl
ciBzYW1wbGUgYnVmZmVyIHNpemUgKCVkKSB0b28gc21hbGwgZm9yIGFtb3VudCBvZiBzYW1wbGUg
ZGF0YSByZXF1ZXN0ZWQgKCVkKSEiLCBtX3NwZWFrZXJTYW1wbGVCdWZmZXItPnNhbXBsZUNhcGFj
aXR5KCksIChpbnQpaW5OdW1iZXJGcmFtZXMpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihX
ZWJSVEMsICJDb3JlQXVkaW9TaGFyZWRVbml0Ojpwcm92aWRlU3BlYWtlckRhdGE6IHNwZWFrZXIg
c2FtcGxlIGJ1ZmZlciBzaXplICglZCkgdG9vIHNtYWxsIGZvciBhbW91bnQgb2Ygc2FtcGxlIGRh
dGEgcmVxdWVzdGVkICglZCkhIiwgbV9zcGVha2VyU2FtcGxlQnVmZmVyLT5zYW1wbGVDYXBhY2l0
eSgpLCAoaW50KWluTnVtYmVyRnJhbWVzKTsKICAgICAgICAgcmV0dXJuIGtBdWRpb19QYXJhbUVy
cm9yOwogICAgIH0KIApAQCAtNDk0LDcgKzQ5NCw3IEBAIE9TU3RhdHVzIENvcmVBdWRpb1NoYXJl
ZFVuaXQ6OnByb2Nlc3NNaWNyb3Bob25lU2FtcGxlcyhBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFn
CiAgICAgQXVkaW9CdWZmZXJMaXN0JiBidWZmZXJMaXN0ID0gbV9taWNyb3Bob25lU2FtcGxlQnVm
ZmVyLT5idWZmZXJMaXN0KCk7CiAgICAgYXV0byBlcnIgPSBBdWRpb1VuaXRSZW5kZXIobV9pb1Vu
aXQsICZpb0FjdGlvbkZsYWdzLCAmdGltZVN0YW1wLCBpbkJ1c051bWJlciwgaW5OdW1iZXJGcmFt
ZXMsICZidWZmZXJMaXN0KTsKICAgICBpZiAoZXJyKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6cHJvY2Vzc01pY3JvcGhvbmVTYW1wbGVz
KCVwKSBBdWRpb1VuaXRSZW5kZXIgZmFpbGVkIHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywg
KGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRD
LCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6cHJvY2Vzc01pY3JvcGhvbmVTYW1wbGVzKCVwKSBBdWRp
b1VuaXRSZW5kZXIgZmFpbGVkIHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIs
IChjaGFyKikmZXJyKTsKICAgICAgICAgcmV0dXJuIGVycjsKICAgICB9CiAKQEAgLTUzMCw3ICs1
MzAsNyBAQCB2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OmNsZWFudXBBdWRpb1VuaXQoKQogICAg
ICAgICBBU1NFUlQobV9pb1VuaXQpOwogICAgICAgICBhdXRvIGVyciA9IEF1ZGlvVW5pdFVuaW5p
dGlhbGl6ZShtX2lvVW5pdCk7CiAgICAgICAgIGlmIChlcnIpCi0gICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmNsZWFudXBBdWRpb1VuaXQo
JXApIEF1ZGlvVW5pdFVuaW5pdGlhbGl6ZSBmYWlsZWQgd2l0aCBlcnJvciAlZCAoJS40cykiLCB0
aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoV2ViUlRDLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y2xlYW51cEF1ZGlvVW5pdCglcCkgQXVk
aW9Vbml0VW5pbml0aWFsaXplIGZhaWxlZCB3aXRoIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChp
bnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgIG1faW9Vbml0SW5pdGlhbGl6ZWQgPSBmYWxz
ZTsKICAgICB9CiAKQEAgLTU1NSw3ICs1NTUsNyBAQCBPU1N0YXR1cyBDb3JlQXVkaW9TaGFyZWRV
bml0OjpyZWNvbmZpZ3VyZUF1ZGlvVW5pdCgpCiAgICAgaWYgKG1faW9Vbml0U3RhcnRlZCkgewog
ICAgICAgICBlcnIgPSBBdWRpb091dHB1dFVuaXRTdG9wKG1faW9Vbml0KTsKICAgICAgICAgaWYg
KGVycikgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDb3JlQXVkaW9T
aGFyZWRVbml0OjpyZWNvbmZpZ3VyZUF1ZGlvVW5pdCglcCkgQXVkaW9PdXRwdXRVbml0U3RvcCBm
YWlsZWQgd2l0aCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIp
OworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiQ29yZUF1ZGlvU2hhcmVk
VW5pdDo6cmVjb25maWd1cmVBdWRpb1VuaXQoJXApIEF1ZGlvT3V0cHV0VW5pdFN0b3AgZmFpbGVk
IHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKICAg
ICAgICAgICAgIHJldHVybiBlcnI7CiAgICAgICAgIH0KICAgICB9CkBAIC01NjgsNyArNTY4LDcg
QEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6cmVjb25maWd1cmVBdWRpb1VuaXQoKQog
ICAgIGlmIChtX2lvVW5pdFN0YXJ0ZWQpIHsKICAgICAgICAgZXJyID0gQXVkaW9PdXRwdXRVbml0
U3RhcnQobV9pb1VuaXQpOwogICAgICAgICBpZiAoZXJyKSB7Ci0gICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OnJlY29uZmlndXJlQXVkaW9V
bml0KCVwKSBBdWRpb091dHB1dFVuaXRTdGFydCBmYWlsZWQgd2l0aCBlcnJvciAlZCAoJS40cyki
LCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoV2ViUlRDLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6cmVjb25maWd1cmVBdWRpb1VuaXQo
JXApIEF1ZGlvT3V0cHV0VW5pdFN0YXJ0IGZhaWxlZCB3aXRoIGVycm9yICVkICglLjRzKSIsIHRo
aXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgICAgICByZXR1cm4gZXJyOwogICAg
ICAgICB9CiAgICAgfQpAQCAtNjI3LDcgKzYyNyw3IEBAIE9TU3RhdHVzIENvcmVBdWRpb1NoYXJl
ZFVuaXQ6OnN0YXJ0SW50ZXJuYWwoKQogCiAgICAgZXJyID0gQXVkaW9PdXRwdXRVbml0U3RhcnQo
bV9pb1VuaXQpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWEsICJDb3JlQXVkaW9TaGFyZWRVbml0OjpzdGFydCglcCkgQXVkaW9PdXRwdXRVbml0U3RhcnQg
ZmFpbGVkIHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJy
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiQ29yZUF1ZGlvU2hhcmVkVW5p
dDo6c3RhcnQoJXApIEF1ZGlvT3V0cHV0VW5pdFN0YXJ0IGZhaWxlZCB3aXRoIGVycm9yICVkICgl
LjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgIHJldHVybiBlcnI7
CiAgICAgfQogCkBAIC02NDksMTQgKzY0OSwxMyBAQCB2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6
OnZlcmlmeUlzQ2FwdHVyaW5nKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFdlYlJUQywgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OnZlcmlmeUlzQ2FwdHVy
aW5nIC0gbm8gYXVkaW8gcmVjZWl2ZWQgaW4gJWQgc2Vjb25kcywgZmFpbGluZyIsIHN0YXRpY19j
YXN0PGludD4obV92ZXJpZnlDYXB0dXJpbmdUaW1lci5yZXBlYXRJbnRlcnZhbCgpLnZhbHVlKCkp
KTsKICAgICBjYXB0dXJlRmFpbGVkKCk7CiB9CiAKIHZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6
Y2FwdHVyZUZhaWxlZCgpCiB7Ci0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWEsICJDb3JlQXVkaW9TaGFyZWRVbml0OjpjYXB0dXJlRmFpbGVkIC0g
Y2FwdHVyZSBmYWlsZWQiKTsKLSNlbmRpZgorICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywg
IkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmNhcHR1cmVGYWlsZWQgLSBjYXB0dXJlIGZhaWxlZCIpOwog
ICAgIGZvciAoQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSYgY2xpZW50IDogbV9jbGllbnRzKQogICAg
ICAgICBjbGllbnQuY2FwdHVyZUZhaWxlZCgpOwogCkBAIC02OTcsNyArNjk2LDcgQEAgdm9pZCBD
b3JlQXVkaW9TaGFyZWRVbml0OjpzdG9wSW50ZXJuYWwoKQogCiAgICAgYXV0byBlcnIgPSBBdWRp
b091dHB1dFVuaXRTdG9wKG1faW9Vbml0KTsKICAgICBpZiAoZXJyKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c3RvcCglcCkgQXVkaW9P
dXRwdXRVbml0U3RvcCBmYWlsZWQgd2l0aCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVy
ciwgKGNoYXIqKSZlcnIpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJDb3Jl
QXVkaW9TaGFyZWRVbml0OjpzdG9wKCVwKSBBdWRpb091dHB1dFVuaXRTdG9wIGZhaWxlZCB3aXRo
IGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTcxMSw3ICs3MTAsNyBAQCBPU1N0YXR1cyBDb3JlQXVkaW9T
aGFyZWRVbml0OjpkZWZhdWx0SW5wdXREZXZpY2UodWludDMyX3QqIGRldmljZUlEKQogICAgIFVJ
bnQzMiBwcm9wZXJ0eVNpemUgPSBzaXplb2YoKmRldmljZUlEKTsKICAgICBhdXRvIGVyciA9IEF1
ZGlvVW5pdEdldFByb3BlcnR5KG1faW9Vbml0LCBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfQ3Vy
cmVudERldmljZSwga0F1ZGlvVW5pdFNjb3BlX0dsb2JhbCwgaW5wdXRCdXMsIGRldmljZUlELCAm
cHJvcGVydHlTaXplKTsKICAgICBpZiAoZXJyKQotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmRlZmF1bHRJbnB1dERldmljZSglcCkgdW5hYmxl
IHRvIGdldCBkZWZhdWx0IGlucHV0IGRldmljZSBJRCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywg
KGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRD
LCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6ZGVmYXVsdElucHV0RGV2aWNlKCVwKSB1bmFibGUgdG8g
Z2V0IGRlZmF1bHQgaW5wdXQgZGV2aWNlIElELCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50
KWVyciwgKGNoYXIqKSZlcnIpOwogCiAgICAgcmV0dXJuIGVycjsKIH0KQEAgLTgzNiw2ICs4MzUs
NyBAQCB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmluaXRpYWxpemVUb1N0YXJ0UHJvZHVj
aW5nRGF0YSgpCiAgICAgaWYgKG1faXNSZWFkeVRvU3RhcnQpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOwogICAgIG1faXNS
ZWFkeVRvU3RhcnQgPSB0cnVlOwogCiAgICAgYXV0byYgdW5pdCA9IENvcmVBdWRpb1NoYXJlZFVu
aXQ6OnNpbmdsZXRvbigpOwpAQCAtODY2LDExICs4NjYsMTMgQEAgQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZTo6fkNvcmVBdWRpb0NhcHR1cmVTb3VyY2UoKQogCiB2b2lkIENvcmVBdWRpb0NhcHR1cmVT
b3VyY2U6OmFkZEVjaG9DYW5jZWxsYXRpb25Tb3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJiBz
b3VyY2UpCiB7CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUik7
CiAgICAgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCkuYWRkRWNob0NhbmNlbGxhdGlv
blNvdXJjZShzb3VyY2UpOwogfQogCiB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnJlbW92
ZUVjaG9DYW5jZWxsYXRpb25Tb3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJiBzb3VyY2UpCiB7
CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUik7CiAgICAgQ29y
ZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCkucmVtb3ZlRWNob0NhbmNlbGxhdGlvblNvdXJj
ZShzb3VyY2UpOwogfQogCkBAIC04ODEsNyArODgzLDExIEBAIHZvaWQgQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKICNlbmRpZgogCiAgICAgYXV0byYgdW5pdCA9
IENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpOwotICAgIGlmICh1bml0LmlzU3VzcGVu
ZGVkKCkpIHsKKworICAgIGF1dG8gaXNTdXNwZW5kZWQgPSB1bml0LmlzU3VzcGVuZGVkKCk7Cisg
ICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgaXNTdXNwZW5kZWQp
OworCisgICAgaWYgKGlzU3VzcGVuZGVkKSB7CiAgICAgICAgIG1fc3VzcGVuZFR5cGUgPSBTdXNw
ZW5zaW9uVHlwZTo6V2hpbGVQbGF5aW5nOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODk0
LDcgKzkwMCwxMCBAQCB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0b3BQcm9kdWNpbmdE
YXRhKCkKIHsKICAgICBhdXRvJiB1bml0ID0gQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9u
KCk7CiAKLSAgICBpZiAodW5pdC5pc1N1c3BlbmRlZCgpKSB7CisgICAgYXV0byBpc1N1c3BlbmRl
ZCA9IHVuaXQuaXNTdXNwZW5kZWQoKTsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBM
T0dJREVOVElGSUVSLCBpc1N1c3BlbmRlZCk7CisKKyAgICBpZiAoaXNTdXNwZW5kZWQpIHsKICAg
ICAgICAgbV9zdXNwZW5kVHlwZSA9IFN1c3BlbnNpb25UeXBlOjpXaGlsZVBhdXNlZDsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTk1Myw2ICs5NjIsOCBAQCB2b2lkIENvcmVBdWRpb0NhcHR1
cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNl
U2V0dAogCiB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNjaGVkdWxlUmVjb25maWd1cmF0
aW9uKCkKIHsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSKTsK
KwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0byYgdW5pdCA9IENvcmVBdWRp
b1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpOwogICAgIGlmICghdW5pdC5oYXNBdWRpb1VuaXQoKSB8
fCBtX3JlY29uZmlndXJhdGlvblN0YXRlICE9IFJlY29uZmlndXJhdGlvblN0YXRlOjpOb25lKQpA
QCAtOTcyLDYgKzk4Myw4IEBAIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVS
ZWNvbmZpZ3VyYXRpb24oKQogCiB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmJlZ2luSW50
ZXJydXB0aW9uKCkKIHsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElG
SUVSKTsKKwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0byYgdW5pdCA9IENv
cmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpOwogICAgIGlmICghdW5pdC5oYXNBdWRpb1Vu
aXQoKSB8fCB1bml0LmlzU3VzcGVuZGVkKCkgfHwgbV9zdXNwZW5kUGVuZGluZykKQEAgLTk4OCw2
ICsxMDAxLDggQEAgdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpiZWdpbkludGVycnVwdGlv
bigpCiAKIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6ZW5kSW50ZXJydXB0aW9uKCkKIHsK
KyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSKTsKKwogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0byYgdW5pdCA9IENvcmVBdWRpb1NoYXJlZFVu
aXQ6OnNpbmdsZXRvbigpOwogICAgIGlmICghdW5pdC5oYXNBdWRpb1VuaXQoKSB8fCAhdW5pdC5p
c1N1c3BlbmRlZCgpIHx8IG1fcmVzdW1lUGVuZGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZS5oCmluZGV4IDU2NDQyNzIxYmQ1Li5iM2VhNzgyMTZmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtOTUsNiArOTUsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
aW5pdGlhbGl6ZVRvU3RhcnRQcm9kdWNpbmdEYXRhKCk7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSI7IH0KKyNlbmRpZgorCiAgICAgdWludDMyX3Qg
bV9jYXB0dXJlRGV2aWNlSUQgeyAwIH07CiAKICAgICBPcHRpb25hbDxSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1h
Yy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3Bs
YXlDYXB0dXJlU291cmNlTWFjLmgKaW5kZXggMDRiOGQ4Y2E4MzIuLmI4MmZlYWZhZDFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlz
cGxheUNhcHR1cmVTb3VyY2VNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY2LDcgKzY2
LDExIEBAIHByaXZhdGU6CiAKICAgICBib29sIGNyZWF0ZURpc3BsYXlTdHJlYW0oKTsKICAgICB2
b2lkIHN0YXJ0RGlzcGxheVN0cmVhbSgpOwotICAgIAorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIlNjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjIjsgfQorI2VuZGlmCisKICAgICBjbGFz
cyBEaXNwbGF5U3VyZmFjZSB7CiAgICAgcHVibGljOgogICAgICAgICBEaXNwbGF5U3VyZmFjZSgp
ID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5t
bQppbmRleCAxZThhYzZjODZlMi4uZjZkNjMxZTQ3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVu
RGlzcGxheUNhcHR1cmVTb3VyY2VNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTUsMTUgKzExNSwxOCBAQCBib29sIFNj
cmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpjcmVhdGVEaXNwbGF5U3RyZWFtKCkKIHsKICAg
ICBzdGF0aWMgY29uc3QgaW50IHNjcmVlblF1ZXVlTWF4aW11bUxlbmd0aCA9IDY7CiAKKyAgICBB
TFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSKTsKKwogICAgIGF1dG8gYWN0
dWFsRGlzcGxheUlEID0gdXBkYXRlRGlzcGxheUlEKG1fZGlzcGxheUlEKTsKICAgICBpZiAoIWFj
dHVhbERpc3BsYXlJRCkgeworICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lE
RU5USUZJRVIsICJpbnZhbGlkIGRpc3BsYXkgSUQ6ICIsIG1fZGlzcGxheUlEKTsKICAgICAgICAg
Y2FwdHVyZUZhaWxlZCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYg
KG1fZGlzcGxheUlEICE9IGFjdHVhbERpc3BsYXlJRC52YWx1ZSgpKSB7CiAgICAgICAgIG1fZGlz
cGxheUlEID0gYWN0dWFsRGlzcGxheUlELnZhbHVlKCk7Ci0gICAgICAgIFJFTEVBU0VfTE9HKE1l
ZGlhLCAiU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW06
IGRpc3BsYXkgSUQgY2hhbmdlZCB0byAlZCIsIHN0YXRpY19jYXN0PGludD4obV9kaXNwbGF5SUQp
KTsKKyAgICAgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgImRp
c3BsYXkgSUQgY2hhbmdlZCB0byAiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fZGlzcGxheUlEKSk7CiAg
ICAgICAgIG1fZGlzcGxheVN0cmVhbSA9IG51bGxwdHI7CiAgICAgfQogCkBAIC0xMzIsNyArMTM1
LDcgQEAgYm9vbCBTY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Y3JlYXRlRGlzcGxheVN0
cmVhbSgpCiAgICAgICAgIGF1dG8gc2NyZWVuV2lkdGggPSBDR0Rpc3BsYXlNb2RlR2V0UGl4ZWxz
V2lkZShkaXNwbGF5TW9kZS5nZXQoKSk7CiAgICAgICAgIGF1dG8gc2NyZWVuSGVpZ2h0ID0gQ0dE
aXNwbGF5TW9kZUdldFBpeGVsc0hpZ2goZGlzcGxheU1vZGUuZ2V0KCkpOwogICAgICAgICBpZiAo
IXNjcmVlbldpZHRoIHx8ICFzY3JlZW5IZWlnaHQpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9H
KE1lZGlhLCAiU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmNyZWF0ZURpc3BsYXlTdHJl
YW06IHVuYWJsZSB0byBnZXQgc2NyZWVuIHdpZHRoL2hlaWdodCIpOworICAgICAgICAgICAgRVJS
T1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIGdldCBzY3Jl
ZW4gd2lkdGgvaGVpZ2h0Iik7CiAgICAgICAgICAgICBjYXB0dXJlRmFpbGVkKCk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTE1OCw3ICsxNjEsNyBAQCBib29sIFNj
cmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpjcmVhdGVEaXNwbGF5U3RyZWFtKCkKIAogICAg
ICAgICBtX2Rpc3BsYXlTdHJlYW0gPSBhZG9wdENGKENHRGlzcGxheVN0cmVhbUNyZWF0ZVdpdGhE
aXNwYXRjaFF1ZXVlKG1fZGlzcGxheUlELCBzY3JlZW5XaWR0aCwgc2NyZWVuSGVpZ2h0LCBwcmVm
ZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCksIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpc3RyZWFt
T3B0aW9ucywgbV9jYXB0dXJlUXVldWUuZ2V0KCksIGZyYW1lQXZhaWxhYmxlQmxvY2spKTsKICAg
ICAgICAgaWYgKCFtX2Rpc3BsYXlTdHJlYW0pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HKE1l
ZGlhLCAiU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW06
IENHRGlzcGxheVN0cmVhbUNyZWF0ZSBmYWlsZWQiKTsKKyAgICAgICAgICAgIEVSUk9SX0xPR19J
Rihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgIkNHRGlzcGxheVN0cmVhbUNyZWF0ZSBmYWls
ZWQiKTsKICAgICAgICAgICAgIGNhcHR1cmVGYWlsZWQoKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQpAQCAtMTc0LDYgKzE3Nyw3IEBAIGJvb2wgU2NyZWVuRGlzcGxheUNh
cHR1cmVTb3VyY2VNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW0oKQogCiB2b2lkIFNjcmVlbkRpc3Bs
YXlDYXB0dXJlU291cmNlTWFjOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogeworICAgIEFMV0FZU19M
T0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOwogICAgIERpc3BsYXlDYXB0dXJlU291
cmNlQ29jb2E6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwogCiAgICAgaWYgKG1faXNSdW5uaW5nKQpA
QCAtMTg0LDYgKzE4OCw3IEBAIHZvaWQgU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnN0
YXJ0UHJvZHVjaW5nRGF0YSgpCiAKIHZvaWQgU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6
OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBM
T0dJREVOVElGSUVSKTsKICAgICBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzdG9wUHJvZHVj
aW5nRGF0YSgpOwogCiAgICAgaWYgKCFtX2lzUnVubmluZykKQEAgLTIxNCw3ICsyMTksNyBAQCB2
b2lkIFNjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpzdGFydERpc3BsYXlTdHJlYW0oKQog
CiAgICAgaWYgKG1fZGlzcGxheUlEICE9IGFjdHVhbERpc3BsYXlJRC52YWx1ZSgpKSB7CiAgICAg
ICAgIG1fZGlzcGxheUlEID0gYWN0dWFsRGlzcGxheUlELnZhbHVlKCk7Ci0gICAgICAgIFJFTEVB
U0VfTE9HKE1lZGlhLCAiU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnN0YXJ0RGlzcGxh
eVN0cmVhbTogZGlzcGxheSBJRCBjaGFuZ2VkIHRvICVkIiwgc3RhdGljX2Nhc3Q8aW50PihtX2Rp
c3BsYXlJRCkpOworICAgICAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElG
SUVSLCAiZGlzcGxheSBJRCBjaGFuZ2VkIHRvICIsIHN0YXRpY19jYXN0PGludD4obV9kaXNwbGF5
SUQpKTsKICAgICB9CiAKICAgICBpZiAoIW1fZGlzcGxheVN0cmVhbSAmJiAhY3JlYXRlRGlzcGxh
eVN0cmVhbSgpKQpAQCAtMjIyLDcgKzIyNyw3IEBAIHZvaWQgU2NyZWVuRGlzcGxheUNhcHR1cmVT
b3VyY2VNYWM6OnN0YXJ0RGlzcGxheVN0cmVhbSgpCiAKICAgICBhdXRvIGVyciA9IENHRGlzcGxh
eVN0cmVhbVN0YXJ0KG1fZGlzcGxheVN0cmVhbS5nZXQoKSk7CiAgICAgaWYgKGVycikgewotICAg
ICAgICBSRUxFQVNFX0xPRyhNZWRpYSwgIlNjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpz
dGFydERpc3BsYXlTdHJlYW06IENHRGlzcGxheVN0cmVhbVN0YXJ0IGZhaWxlZCB3aXRoIGVycm9y
ICVkIiwgc3RhdGljX2Nhc3Q8aW50PihlcnIpKTsKKyAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dl
clB0cigpLCBMT0dJREVOVElGSUVSLCAiQ0dEaXNwbGF5U3RyZWFtU3RhcnQgZmFpbGVkIHdpdGgg
ZXJyb3IgIiwgc3RhdGljX2Nhc3Q8aW50PihlcnIpKTsKICAgICAgICAgY2FwdHVyZUZhaWxlZCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>