<?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>226734</bug_id>
          
          <creation_ts>2021-06-07 09:22:45 -0700</creation_ts>
          <short_desc>Drop legacy MainThreadTaskQueue &amp; EventLoopTaskQueue classes</short_desc>
          <delta_ts>2021-06-28 08:42:58 -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>Media</component>
          <version>WebKit Nightly Build</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=226700</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=227367</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>philipj</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1767477</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 09:22:45 -0700</bug_when>
    <thetext>Drop legacy MainThreadTaskQueue &amp; EventLoopTaskQueue classes. Code that was using MainThreadTaskQueue is now calling callOnMainThread() directly. Call that was using EventLoopTaskQueue is now using the HTML event loop directly. If said code needed to cancel tasks or check if a previously scheduled task is still pending, it now relies on WTF::CancellableTask / WTF::TaskCanceller to do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767482</commentid>
    <comment_count>1</comment_count>
      <attachid>430757</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 09:46:56 -0700</bug_when>
    <thetext>Created attachment 430757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767506</commentid>
    <comment_count>2</comment_count>
      <attachid>430771</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 12:15:12 -0700</bug_when>
    <thetext>Created attachment 430771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767507</commentid>
    <comment_count>3</comment_count>
      <attachid>430772</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 12:16:32 -0700</bug_when>
    <thetext>Created attachment 430772
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767563</commentid>
    <comment_count>4</comment_count>
      <attachid>430772</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-06-07 14:57:27 -0700</bug_when>
    <thetext>Comment on attachment 430772
Patch

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

&gt; Source/WTF/wtf/CancellableTask.h:36
&gt; +class TaskCanceller : public CanMakeWeakPtr&lt;TaskCanceller&gt; {

I would have called this TaskCancelGroup or something.

&gt; Source/WTF/wtf/CancellableTask.h:54
&gt; +        void taskIsNoLongerPending() { m_impl = nullptr; }

This should be a verb instead.
maybe clear?

&gt; Source/WebCore/dom/ActiveDOMObject.h:118
&gt; +        CancellableTask cancellableTask(taskCanceller, WTFMove(task));
&gt;          object.queueTaskInEventLoop(source, [protectedObject = makeRef(object), activity = object.ActiveDOMObject::makePendingActivity(object), cancellableTask = WTFMove(cancellableTask)]() mutable {

Hm... this would mean that the object is kept alive with a pending activity even when the task is canceled?
That doesn&apos;t seem ideal.
We should probably follow up so that we can delete the task object itself from the event loop queue when we cancel a task.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767564</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-06-07 14:59:47 -0700</bug_when>
    <thetext>By the way, we need to figure out a way to replace callOnMainThread with some kind of EventLoop equivalent as well because for the purpose of implementing request idle callback, we need to be aware of these things as well. And without origin attribution, we won&apos;t be able to tell whether a given task should delay the idle callback or not (delaying for a cross-origin would be a cross-origin information leak).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767565</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 15:02:59 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #4)
&gt; Comment on attachment 430772 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=430772&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/CancellableTask.h:36
&gt; &gt; +class TaskCanceller : public CanMakeWeakPtr&lt;TaskCanceller&gt; {
&gt; 
&gt; I would have called this TaskCancelGroup or something.

Yes, let me think about more about the naming. I agree that TaskCanceller is not great but I&apos;m not a big fan of TaskCancelGroup either.
Maybe CancellableTaskGroup?

&gt; 
&gt; &gt; Source/WTF/wtf/CancellableTask.h:54
&gt; &gt; +        void taskIsNoLongerPending() { m_impl = nullptr; }
&gt; 
&gt; This should be a verb instead.
&gt; maybe clear?

I had clear() in a previous iteration. I&apos;ll go back to that.

&gt; 
&gt; &gt; Source/WebCore/dom/ActiveDOMObject.h:118
&gt; &gt; +        CancellableTask cancellableTask(taskCanceller, WTFMove(task));
&gt; &gt;          object.queueTaskInEventLoop(source, [protectedObject = makeRef(object), activity = object.ActiveDOMObject::makePendingActivity(object), cancellableTask = WTFMove(cancellableTask)]() mutable {
&gt; 
&gt; Hm... this would mean that the object is kept alive with a pending activity
&gt; even when the task is canceled?
&gt; That doesn&apos;t seem ideal.
&gt; We should probably follow up so that we can delete the task object itself
&gt; from the event loop queue when we cancel a task.

At worst, it delays the the deletion until the next event loop iteration though, no? It didn&apos;t sound terrible to me but maybe I am missing something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767566</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 15:04:04 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #5)
&gt; By the way, we need to figure out a way to replace callOnMainThread with
&gt; some kind of EventLoop equivalent as well because for the purpose of
&gt; implementing request idle callback, we need to be aware of these things as
&gt; well. And without origin attribution, we won&apos;t be able to tell whether a
&gt; given task should delay the idle callback or not (delaying for a
&gt; cross-origin would be a cross-origin information leak).

I see, that&apos;s good to know. Baby steps in the right direction still :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767570</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-06-07 15:08:02 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; (In reply to Ryosuke Niwa from comment #4)
&gt; &gt; Comment on attachment 430772 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=430772&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WTF/wtf/CancellableTask.h:36
&gt; &gt; &gt; +class TaskCanceller : public CanMakeWeakPtr&lt;TaskCanceller&gt; {
&gt; &gt; 
&gt; &gt; I would have called this TaskCancelGroup or something.
&gt; 
&gt; Yes, let me think about more about the naming. I agree that TaskCanceller is
&gt; not great but I&apos;m not a big fan of TaskCancelGroup either.
&gt; Maybe CancellableTaskGroup?

Yeah, CancellableTaskGroup sounds good although this sounds like a generic grouping of cancelable tasks. &quot;cancel-group&quot; communicates that it&apos;s a unit of cancellation. Maybe TaskCancellationGroup?

&gt; &gt; &gt; Source/WebCore/dom/ActiveDOMObject.h:118
&gt; &gt; &gt; +        CancellableTask cancellableTask(taskCanceller, WTFMove(task));
&gt; &gt; &gt;          object.queueTaskInEventLoop(source, [protectedObject = makeRef(object), activity = object.ActiveDOMObject::makePendingActivity(object), cancellableTask = WTFMove(cancellableTask)]() mutable {
&gt; &gt; 
&gt; &gt; Hm... this would mean that the object is kept alive with a pending activity
&gt; &gt; even when the task is canceled?
&gt; &gt; That doesn&apos;t seem ideal.
&gt; &gt; We should probably follow up so that we can delete the task object itself
&gt; &gt; from the event loop queue when we cancel a task.
&gt; 
&gt; At worst, it delays the the deletion until the next event loop iteration
&gt; though, no? It didn&apos;t sound terrible to me but maybe I am missing something.

Yeah but the event loop iteration could be many hundreds of milliseconds away. This would mean that any temporary object we create will be effectively leaked until the current task finishes. That&apos;s not great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767578</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 15:12:23 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #8)
&gt; (In reply to Chris Dumez from comment #6)
&gt; &gt; (In reply to Ryosuke Niwa from comment #4)
&gt; &gt; &gt; Comment on attachment 430772 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=430772&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WTF/wtf/CancellableTask.h:36
&gt; &gt; &gt; &gt; +class TaskCanceller : public CanMakeWeakPtr&lt;TaskCanceller&gt; {
&gt; &gt; &gt; 
&gt; &gt; &gt; I would have called this TaskCancelGroup or something.
&gt; &gt; 
&gt; &gt; Yes, let me think about more about the naming. I agree that TaskCanceller is
&gt; &gt; not great but I&apos;m not a big fan of TaskCancelGroup either.
&gt; &gt; Maybe CancellableTaskGroup?
&gt; 
&gt; Yeah, CancellableTaskGroup sounds good although this sounds like a generic
&gt; grouping of cancelable tasks. &quot;cancel-group&quot; communicates that it&apos;s a unit
&gt; of cancellation. Maybe TaskCancellationGroup?

TaskCancellationGroup sounds good to me.

&gt; 
&gt; &gt; &gt; &gt; Source/WebCore/dom/ActiveDOMObject.h:118
&gt; &gt; &gt; &gt; +        CancellableTask cancellableTask(taskCanceller, WTFMove(task));
&gt; &gt; &gt; &gt;          object.queueTaskInEventLoop(source, [protectedObject = makeRef(object), activity = object.ActiveDOMObject::makePendingActivity(object), cancellableTask = WTFMove(cancellableTask)]() mutable {
&gt; &gt; &gt; 
&gt; &gt; &gt; Hm... this would mean that the object is kept alive with a pending activity
&gt; &gt; &gt; even when the task is canceled?
&gt; &gt; &gt; That doesn&apos;t seem ideal.
&gt; &gt; &gt; We should probably follow up so that we can delete the task object itself
&gt; &gt; &gt; from the event loop queue when we cancel a task.
&gt; &gt; 
&gt; &gt; At worst, it delays the the deletion until the next event loop iteration
&gt; &gt; though, no? It didn&apos;t sound terrible to me but maybe I am missing something.
&gt; 
&gt; Yeah but the event loop iteration could be many hundreds of milliseconds
&gt; away. This would mean that any temporary object we create will be
&gt; effectively leaked until the current task finishes. That&apos;s not great.

Ok, I&apos;ll see if I can do better in a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767580</commentid>
    <comment_count>10</comment_count>
      <attachid>430788</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 15:23:46 -0700</bug_when>
    <thetext>Created attachment 430788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767581</commentid>
    <comment_count>11</comment_count>
      <attachid>430789</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 15:28:32 -0700</bug_when>
    <thetext>Created attachment 430789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767608</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-07 17:29:57 -0700</bug_when>
    <thetext>Committed r278580 (238574@main): &lt;https://commits.webkit.org/238574@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430789.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767610</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-07 17:30:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/78973554&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430757</attachid>
            <date>2021-06-07 09:46:56 -0700</date>
            <delta_ts>2021-06-07 12:15:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226734-20210607094655.patch</filename>
            <type>text/plain</type>
            <size>53852</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZhNDVlZjMwMWIzY2Y3NzBlNjljYWI1
OTA5MGQ0YmE5ZDM5YWJiNWUuLmU3OWVhZmI2NDUxNmEyODMyMGM4NjM2MGM5ZjE3NzQ1Y2E0NDY0
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjEtMDYtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIGxlZ2FjeSBNYWluVGhyZWFkVGFza1F1ZXVlICYg
RXZlbnRMb29wVGFza1F1ZXVlIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjczNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdlIHJlY2VudGx5IGludHJvZHVjZWQgdGhlIFdURjo6Q2FuY2Vs
bGFibGVUYXNrIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gY2FuY2VsCisgICAgICAgIGEgcGVuZGlu
ZyB0YXNrIGluIHRoZSBldmVudCBsb29wLCBhbmQvb3IgY2hlY2sgaWYgdGhlIHRhc2sgaXMgc3Rp
bGwgcGVuZGluZy4KKyAgICAgICAgSXQgd29ya2VkIGdyZWF0IGFzIGEgcmVwbGFjZW1lbnQgZm9y
IEV2ZW50TG9vcERlZmVycmFibGVUYXNrLiBIb3dldmVyLCBpdCB3YXMKKyAgICAgICAgaW5zdWZm
aWNpZW50IGFzIGEgcmVwbGFjZW1lbnQgZm9yIHRhc2sgcXVldWVzIChzdWNoIGFzIE1haW5UaHJl
YWRUYXNrUXVldWUgJgorICAgICAgICBFdmVudExvb3BUYXNrUXVldWUpIHNpbmNlIHRoZXJlIHdh
cyBubyBjb252ZW5pZW50IHdheSB0byBjYW5jZWwgYSBncm91cCBvZgorICAgICAgICB0YXNrcy4g
VG8gYWRkcmVzcyB0aGlzLCBJIGFtIGludHJvZHVjaW5nIFdURjo6VGFza0NhbmNlbGxlci4gV2hl
bmV2ZXIgb25lCisgICAgICAgIG5lZWRzIHRvIGNyZWF0ZSBhIENhbmNlbGxhYmxlVGFzaywgaXQg
bm93IG5lZWRzIHRvIHByb3ZpZGUgYSBUYXNrQ2FuY2VsbGVyLgorICAgICAgICBTZXZlcmFsIENh
bmNlbGxhYmxlVGFzayBvYmplY3RzIGNhbiBzaGFyZSB0aGUgc2FtZSBUYXNrQ2FuY2VsbGVyLiBD
b2RlIG5vdworICAgICAgICBub3cgc2NoZWR1bGUgb25lIG9yIG1vcmUgQ2FuY2VsbGFibGVUYXNr
cyBvbiB0aGUgZXZlbnQgbG9vcCBhbmQgaG9sZCBvbgorICAgICAgICB0byBhIFRhc2tDYW5jZWxs
ZXIuIElmIHRoZXkgbmVlZCB0byBjYW5jZWwgdGhvc2UgdGFza3MsIHRoZXkgY2FuIHNpbXBseQor
ICAgICAgICBjYWxsIGNhbmNlbCgpIG9uIHRoZSBUYXNrQ2FuY2VsbGVyLiBUaGV5IGNhbiBhbHNv
IGNoZWNrIGlmIHByZXZpb3VzbHkKKyAgICAgICAgc2NoZWR1bGVkIHRhc2tzIGFyZSBzdGlsbCBw
ZW5kaW5nIHZpYSBUYXNrQ2FuY2VsbGVyOjpoYXNQZW5kaW5nVGFzaygpLgorCisgICAgICAgICog
d3RmL0NhbmNlbGxhYmxlVGFzay5oOgorICAgICAgICAoV1RGOjpUYXNrQ2FuY2VsbGVyOjpUYXNr
Q2FuY2VsbGVyKToKKyAgICAgICAgKFdURjo6VGFza0NhbmNlbGxlcjo6Y2FuY2VsKToKKyAgICAg
ICAgKFdURjo6VGFza0NhbmNlbGxlcjo6aGFzUGVuZGluZ1Rhc2sgY29uc3QpOgorICAgICAgICAo
V1RGOjpUYXNrQ2FuY2VsbGVyOjpJbXBsOjpjYW5jZWwpOgorICAgICAgICAoV1RGOjpUYXNrQ2Fu
Y2VsbGVyOjpJbXBsOjpoYXNQZW5kaW5nVGFzayBjb25zdCk6CisgICAgICAgIChXVEY6OlRhc2tD
YW5jZWxsZXI6OkhhbmRsZTo6aXNDYW5jZWxsZWQgY29uc3QpOgorICAgICAgICAoV1RGOjpUYXNr
Q2FuY2VsbGVyOjpIYW5kbGU6OkhhbmRsZSk6CisgICAgICAgIChXVEY6OlRhc2tDYW5jZWxsZXI6
OmNyZWF0ZUhhbmRsZSk6CisgICAgICAgIChXVEY6OkNhbmNlbGxhYmxlVGFzazo6Q2FuY2VsbGFi
bGVUYXNrKToKKyAgICAgICAgKFdURjo6Q2FuY2VsbGFibGVUYXNrOjpvcGVyYXRvcigpKToKKyAg
ICAgICAgKiB3dGYvV2Vha1B0ci5oOgorICAgICAgICAoV1RGOjpXZWFrUHRyRmFjdG9yeTo6d2Vh
a1B0ckNvdW50IGNvbnN0KToKKwogMjAyMS0wNi0wNyAgQWxpY2lhIEJveWEgR2FyY8OtYSAgPGFi
b3lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dURl1bR1N0cmVhbWVyXSBGaXggY2xhbmcgVFNB
IHdhcm5pbmdzIGluIFdURjo6RGF0YU11dGV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWY5OTQ3NTA4ZjQ3MmE4
NjJmOTRkMWM5Y2QxZmZlZDgwMjRiYjZkNi4uZDc0Y2ZiYWRmY2RjYWZmMDljMTFjZjIyN2RmYzQy
YjY0NDlmOGVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIxLTA2LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBsZWdhY3kgTWFpblRo
cmVhZFRhc2tRdWV1ZSAmIEV2ZW50TG9vcFRhc2tRdWV1ZSBjbGFzc2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3MzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEcm9wIGxlZ2FjeSBNYWluVGhyZWFk
VGFza1F1ZXVlICYgRXZlbnRMb29wVGFza1F1ZXVlIGNsYXNzZXMuIENvZGUgdGhhdCB3YXMgdXNp
bmcgTWFpblRocmVhZFRhc2tRdWV1ZQorICAgICAgICBpcyBub3cgY2FsbGluZyBjYWxsT25NYWlu
VGhyZWFkKCkgZGlyZWN0bHkuIENhbGwgdGhhdCB3YXMgdXNpbmcgRXZlbnRMb29wVGFza1F1ZXVl
IGlzIG5vdyB1c2luZyB0aGUKKyAgICAgICAgSFRNTCBldmVudCBsb29wIGRpcmVjdGx5LiBJZiBz
YWlkIGNvZGUgbmVlZGVkIHRvIGNhbmNlbCB0YXNrcyBvciBjaGVjayBpZiBhIHByZXZpb3VzbHkg
c2NoZWR1bGVkIHRhc2sKKyAgICAgICAgaXMgc3RpbGwgcGVuZGluZywgaXQgbm93IHJlbGllcyBv
biBXVEY6OkNhbmNlbGxhYmxlVGFzayAvIFdURjo6VGFza0NhbmNlbGxlciB0byBkbyBzby4KKwor
ICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5jcHA6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZXNDb250cm9s
bGVyOjpjYWNoZUN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxp
bmVzQ29udHJvbGxlcjo6bWF5YmVDbGVhckNhY2hlZEN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBh
bmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmg6CisgICAgICAgICogZG9tL0Fj
dGl2ZURPTU9iamVjdC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6On5IVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OnNjaGVkdWxlTmV4dFNvdXJjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnNjaGVkdWxlQ2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGFiaWxpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlQ29uZmlndXJlVGV4dFRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZU1lZGlhRW5naW5lV2Fz
VXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVVw
ZGF0ZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5j
ZWxQZW5kaW5nVGFza3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xl
YXJNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbG9z
ZVRhc2tRdWV1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c3VzcGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptYXJrQ2FwdGlvbkFu
ZFN1YnRpdGxlVHJhY2tzQXNVbmNvbmZpZ3VyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJCdWZmZXJlZFRpbWVSYW5nZXNDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlVXBkYXRlTWVkaWFTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja0NvbnRyb2xzTWFu
YWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgICgtW1dlYkNvcmVB
VkZNb3ZpZU9ic2VydmVyIG1ldGFkYXRhTG9hZGVkXSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZN
b3ZpZU9ic2VydmVyIGRpZEVuZDpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2
ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAg
ICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgbGVnaWJsZU91dHB1dDpkaWRPdXRwdXRB
dHRyaWJ1dGVkU3RyaW5nczpuYXRpdmVTYW1wbGVCdWZmZXJzOmZvckl0ZW1UaW1lOl0pOgorICAg
ICAgICAoLVtXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6
XSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIG1ldGFkYXRhT3V0cHV0OmRp
ZE91dHB1dFRpbWVkTWV0YWRhdGFHcm91cHM6ZnJvbVBsYXllckl0ZW1UcmFjazpdKToKKyAgICAg
ICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgbWV0YWRhdGFDb2xsZWN0b3I6ZGlkQ29sbGVj
dERhdGVSYW5nZU1ldGFkYXRhR3JvdXBzOmluZGV4ZXNPZk5ld0dyb3VwczppbmRleGVzT2ZNb2Rp
ZmllZEdyb3VwczpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlIHJlc291
cmNlTG9hZGVyOnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZTpdKToKKyAg
ICAgICAgKC1bV2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlIHJlc291cmNlTG9hZGVyOmRpZENhbmNl
bExvYWRpbmdSZXF1ZXN0Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6flNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YWJvcnQpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6
CisKIDIwMjEtMDYtMDcgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZhY3RvciBzZWxlY3Rpb24gc3RhdGUgY29tcHV0YXRpb24gb3V0IG9mIExlZ2FjeUlubGlu
ZVRleHRCb3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NhbmNlbGxhYmxlVGFzay5oIGIv
U291cmNlL1dURi93dGYvQ2FuY2VsbGFibGVUYXNrLmgKaW5kZXggMDY3NWMyYjJjNGMwYzA3MWUz
ZjgyNGY2MDNlOGM4M2U1YTFmNGMxMC4uNzMwZGUxNGU2NDFmYmE3MzA4ZjZhY2Q2NTMyN2RhYmU4
YmUzYTRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ2FuY2VsbGFibGVUYXNrLmgKKysr
IGIvU291cmNlL1dURi93dGYvQ2FuY2VsbGFibGVUYXNrLmgKQEAgLTMxLDU5ICszMSw1OSBAQAog
CiBuYW1lc3BhY2UgV1RGIHsKIAotbmFtZXNwYWNlIERldGFpbCB7Ci1zdHJ1Y3QgQ2FuY2VsbGFi
bGVUYXNrSW1wbCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDYW5jZWxsYWJsZVRhc2tJbXBsPiB7
Ci0gICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgIGV4cGxpY2l0IENhbmNl
bGxhYmxlVGFza0ltcGwoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spIDogdGFzayhXVEZNb3ZlKHRh
c2spKSB7IH0KLSAgICBGdW5jdGlvbjx2b2lkKCk+IHRhc2s7Ci19OwotfQorY2xhc3MgQ2FuY2Vs
bGFibGVUYXNrOwogCi1jbGFzcyBDYW5jZWxsYWJsZVRhc2sgeworY2xhc3MgVGFza0NhbmNlbGxl
ciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNrQ2FuY2VsbGVyPiB7CiBwdWJsaWM6Ci0gICAg
ZXhwbGljaXQgQ2FuY2VsbGFibGVUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgVGFza0Nh
bmNlbGxlcigpIDogbV9pbXBsKG1ha2VVbmlxdWVSZWY8SW1wbD4oKSkgeyB9CisgICAgdm9pZCBj
YW5jZWwoKSB7IG1faW1wbC0+Y2FuY2VsKCk7IH0KKyAgICBib29sIGhhc1BlbmRpbmdUYXNrKCkg
Y29uc3QgeyByZXR1cm4gbV9pbXBsLT5oYXNQZW5kaW5nVGFzaygpOyB9CiAKLSAgICB2b2lkIG9w
ZXJhdG9yKCkoKTsKLSAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuICEhbV90YXNr
V3JhcHBlci0+dGFzazsgfQotICAgIHZvaWQgY2FuY2VsKCkgeyBtX3Rhc2tXcmFwcGVyLT50YXNr
ID0gbnVsbHB0cjsgfQorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQ2FuY2VsbGFibGVUYXNr
OworICAgIGNsYXNzIEltcGwgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1wbD4geworICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIHZvaWQgY2Fu
Y2VsKCkgeyB3ZWFrUHRyRmFjdG9yeSgpLnJldm9rZUFsbCgpOyB9CisgICAgICAgIGJvb2wgaGFz
UGVuZGluZ1Rhc2soKSBjb25zdCB7IHJldHVybiB3ZWFrUHRyRmFjdG9yeSgpLndlYWtQdHJDb3Vu
dCgpOyB9CisgICAgfTsKIAogICAgIGNsYXNzIEhhbmRsZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBIYW5kbGUoKSA9IGRlZmF1bHQ7Ci0gICAgICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV90YXNrV3JhcHBlciAmJiBtX3Rhc2tXcmFwcGVyLT50YXNrOyB9Ci0gICAgICAgIHZv
aWQgY2FuY2VsKCk7CisgICAgICAgIGJvb2wgaXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiAh
bV9pbXBsOyB9CisKICAgICBwcml2YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgQ2FuY2VsbGFi
bGVUYXNrOwotICAgICAgICBleHBsaWNpdCBIYW5kbGUoRGV0YWlsOjpDYW5jZWxsYWJsZVRhc2tJ
bXBsJik7Ci0gICAgICAgIFdlYWtQdHI8RGV0YWlsOjpDYW5jZWxsYWJsZVRhc2tJbXBsPiBtX3Rh
c2tXcmFwcGVyOworICAgICAgICBmcmllbmQgY2xhc3MgVGFza0NhbmNlbGxlcjsKKyAgICAgICAg
ZXhwbGljaXQgSGFuZGxlKEltcGwmIGltcGwpIDogbV9pbXBsKG1ha2VXZWFrUHRyKGltcGwpKSB7
IH0KKyAgICAgICAgV2Vha1B0cjxJbXBsPiBtX2ltcGw7CiAgICAgfTsKKyAgICBIYW5kbGUgY3Jl
YXRlSGFuZGxlKCkgeyByZXR1cm4gSGFuZGxlIHsgbV9pbXBsIH07IH0KKworICAgIFVuaXF1ZVJl
ZjxJbXBsPiBtX2ltcGw7Cit9OwogCi0gICAgSGFuZGxlIGNyZWF0ZUhhbmRsZSgpIHsgcmV0dXJu
IEhhbmRsZSB7IG1fdGFza1dyYXBwZXIuZ2V0KCkgfTsgfQorY2xhc3MgQ2FuY2VsbGFibGVUYXNr
IHsKK3B1YmxpYzoKKyAgICBDYW5jZWxsYWJsZVRhc2soVGFza0NhbmNlbGxlciYsIEZ1bmN0aW9u
PHZvaWQoKT4mJik7CisgICAgdm9pZCBvcGVyYXRvcigpKCk7CiAKIHByaXZhdGU6Ci0gICAgVW5p
cXVlUmVmPERldGFpbDo6Q2FuY2VsbGFibGVUYXNrSW1wbD4gbV90YXNrV3JhcHBlcjsKKyAgICBU
YXNrQ2FuY2VsbGVyOjpIYW5kbGUgbV90YXNrQ2FuY2VsbGVyOworICAgIEZ1bmN0aW9uPHZvaWQo
KT4gbV90YXNrOwogfTsKIAotaW5saW5lIENhbmNlbGxhYmxlVGFzazo6Q2FuY2VsbGFibGVUYXNr
KEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQotICAgIDogbV90YXNrV3JhcHBlcihtYWtlVW5pcXVl
UmVmPERldGFpbDo6Q2FuY2VsbGFibGVUYXNrSW1wbD4oV1RGTW92ZSh0YXNrKSkpCitpbmxpbmUg
Q2FuY2VsbGFibGVUYXNrOjpDYW5jZWxsYWJsZVRhc2soVGFza0NhbmNlbGxlciYgdGFza0NhbmNl
bGxlciwgRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCisgICAgOiBtX3Rhc2tDYW5jZWxsZXIodGFz
a0NhbmNlbGxlci5jcmVhdGVIYW5kbGUoKSkKKyAgICAsIG1fdGFzayhXVEZNb3ZlKHRhc2spKQog
eyB9CiAKIGlubGluZSB2b2lkIENhbmNlbGxhYmxlVGFzazo6b3BlcmF0b3IoKSgpCiB7Ci0gICAg
aWYgKGF1dG8gdGFzayA9IHN0ZDo6ZXhjaGFuZ2UobV90YXNrV3JhcHBlci0+dGFzaywgbnVsbHB0
cikpCi0gICAgICAgIHRhc2soKTsKLX0KLQotaW5saW5lIENhbmNlbGxhYmxlVGFzazo6SGFuZGxl
OjpIYW5kbGUoRGV0YWlsOjpDYW5jZWxsYWJsZVRhc2tJbXBsJiB0YXNrKQotICAgIDogbV90YXNr
V3JhcHBlcihtYWtlV2Vha1B0cih0YXNrKSkKLXsgfQotCi1pbmxpbmUgdm9pZCBDYW5jZWxsYWJs
ZVRhc2s6OkhhbmRsZTo6Y2FuY2VsKCkKLXsKLSAgICBpZiAobV90YXNrV3JhcHBlcikKLSAgICAg
ICAgbV90YXNrV3JhcHBlci0+dGFzayA9IG51bGxwdHI7CisgICAgaWYgKCFtX3Rhc2tDYW5jZWxs
ZXIuaXNDYW5jZWxsZWQoKSkKKyAgICAgICAgbV90YXNrKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdURgogCiB1c2luZyBXVEY6OkNhbmNlbGxhYmxlVGFzazsKK3VzaW5nIFdURjo6VGFza0NhbmNl
bGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaCBiL1NvdXJjZS9XVEYv
d3RmL1dlYWtQdHIuaAppbmRleCAyZTlmNTY2Zjg1YTExMzNhMzcxNTFkODAxYjM0ZTc4YWYyMjIw
ZTkxLi4xMmM0YjY4OTg4NzI5OTNhMWE1M2Y1OWY5NmI2ZDBhYmYyNjdiMGIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9XZWFrUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvV2Vha1B0ci5o
CkBAIC0xODUsNiArMTg1LDggQEAgcHVibGljOgogICAgICAgICBtX2ltcGwgPSBudWxscHRyOwog
ICAgIH0KIAorICAgIHVuc2lnbmVkIHdlYWtQdHJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW1w
bCA/IG1faW1wbC0+cmVmQ291bnQoKSAtIDEgOiAwOyB9CisKICNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbDsgfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQppbmRleCBjODQ0MzFkZDY4MzlkOTA2MGE1ZjM1MjQyYTg4NTliYTFh
NDkzY2Q5Li4zOTAzODdlMjQyMjcwZDA0OTUzNWU3YTBiOWFhYzVkNTYwMWU1NzkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKQEAgLTEwMzQsNyArMTAzNCw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9GaWxlTW9uaXRvci5oCiAgICAgcGxhdGZvcm0v
RmlsZVN0cmVhbUNsaWVudC5oCiAgICAgcGxhdGZvcm0vRmxvYXRDb252ZXJzaW9uLmgKLSAgICBw
bGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmgKICAgICBwbGF0Zm9ybS9Ib3N0V2luZG93LmgKICAg
ICBwbGF0Zm9ybS9LZXllZENvZGluZy5oCiAgICAgcGxhdGZvcm0vS2V5cHJlc3NDb21tYW5kLmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTeXN0ZW1BY2Nlc3MuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5jcHAKaW5kZXggODc5ZDNlNWU5MzVkZTg5YWMwNzk3Mjhl
YzVkYWUwMmU1ZjYwZGRmYS4uM2UzNDAyYzIzZmMwMjYwZjg4MmE3ZmQxNzRkZjk0Y2FmMzI3YjRm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN5c3RlbUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJDRE0uaCIKICNpbmNsdWRlICJDRE1JbnN0YW5jZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJy
ZWQuaCIKICNpbmNsdWRlICJKU01lZGlhS2V5cy5oIgogI2luY2x1ZGUgIk1lZGlhS2V5cy5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9NZWRp
YUNhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0
aWVzL01lZGlhQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAyY2RjNjlmMTVkNWE4YzA3ZTVjYmFhNmZl
NmM3ZDFmNDhjOTBiNDM4Li5jMzM2MDRmNjRjOTc1M2U4OTk0MGJhZTgxMzMyMTA1NzY4MDQwZTlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL01l
ZGlhQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2Fw
YWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiQ29udGVudFR5cGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2
ZW50TG9vcC5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAi
SlNNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mby5oIgogI2luY2x1ZGUgIkpTTWVkaWFDYXBh
YmlsaXRpZXNFbmNvZGluZ0luZm8uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMTJmMTgyYzJmYjEyNTgxZTdiZjk3YWE5ZTA1
YTZjNDUzYTFlYzBiLi40NWJlMmJlMjMzZjlkMTExZTQ2ZWU1MWNjZWE4NmU4NjVhM2YwZmFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC00Mzg2LDcgKzQzODYsNiBAQAogCQlDRDVGRjQ5QzIxNjJFNENGMDA0QkQ4NkYgLyogSVNP
UHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMkY3NUE5QTg2RUEwM0RBRjI0Qjc5NzEgLyogSVNP
UHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q1RkY0OUQyMTYyRTREQjAwNEJEODZGIC8q
IElTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDg3MUM2MDFGQjUyQjY1MDBGMEI5NjUgLyogSVNPUHJvdGVj
dGlvblNjaGVtZUluZm9Cb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDRDVGRjQ5RTIxNjJFNEU4MDA0QkQ4NkYgLyogSVNPT3JpZ2luYWxGb3Jt
YXRCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
ODcxQzY3MUZCNTJCNjgwMEYwQjk2NSAvKiBJU09PcmlnaW5hbEZvcm1hdEJveC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUNENjJGQjk2MUFGMDE4
RTcwMDEyRUQ3RCAvKiBHZW5lcmljVGFza1F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDYyRkI5NDFBRjAxOEU3MDAxMkVEN0QgLyogR2VuZXJp
Y1Rhc2tRdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNENjQxRUIzMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENjQxRUIxMTgx
OEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDY0MUVCNDE4MThGNUVEMDBFRTRDNDEg
LyogU291cmNlQnVmZmVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0Q2NDFFQjIxODE4RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1ZmZlclBy
aXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDRDcyMEI0RjIyNjhCNTEzMDAwNDdGREUgLyogSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDcyMEI0
OTIyNjgyQzdGMDAwNDdGREUgLyogSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0OTk5LDcgKzE0
OTk4LDYgQEAKIAkJQ0Q1RDI3NzYxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVEZWNvbXByZXNz
aW9uU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRGVj
b21wcmVzc2lvblNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1RTVC
NUUxQTE1Q0U1NDAwMEM2MDlFIC8qIFBhZ2VDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNENUU1QjYwMUExNUYxNTYwMDBDNjA5RSAvKiBQYWdlQ29uZmlndXJhdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlQ29uZmlndXJh
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNENjJGQjk0MUFGMDE4RTcw
MDEyRUQ3RCAvKiBHZW5lcmljVGFza1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdlbmVyaWNUYXNrUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0Q2NDFFQjExODE4RjVFRDAwRUU0QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNvdXJjZVByaXZhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q2NDFFQjIxODE4RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1
ZmZlclByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQnVm
ZmVyUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDY0MUVDNzE4MUVE
NjAxMDBFRTRDNDEgLyogTWVkaWFTYW1wbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTYW1wbGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MDY4LDcgKzI4MDY2LDYgQEAKIAkJ
CQlCQzA3M0JBOTBDMzk5QjFGMDAwRjU5NzkgLyogRmxvYXRDb252ZXJzaW9uLmggKi8sCiAJCQkJ
NDE5MEYzQTEyNDlEMTUyNzAwNTMxQzU3IC8qIEZyYW1lUmF0ZU1vbml0b3IuY3BwICovLAogCQkJ
CTQxOTBGM0EzMjQ5RDE1MjgwMDUzMUM1NyAvKiBGcmFtZVJhdGVNb25pdG9yLmggKi8sCi0JCQkJ
Q0Q2MkZCOTQxQUYwMThFNzAwMTJFRDdEIC8qIEdlbmVyaWNUYXNrUXVldWUuaCAqLywKIAkJCQlB
ODc0OEJERjEyQ0JGMkRDMDAxRkJBNDEgLyogSGFzaFRvb2xzLmggKi8sCiAJCQkJQkMzQkMyOUIw
RTkxQUIwRjAwODM1NTg4IC8qIEhvc3RXaW5kb3cuaCAqLywKIAkJCQlGNDhCN0Q1MjI1QzM0MUU2
MDA5RTc1REQgLyogSW1hZ2VFeHRyYWN0aW9uUmVzdWx0LmggKi8sCkBAIC0zMjQ3MSw3ICszMjQ2
OCw2IEBACiAJCQkJNDFGQUJEMkQxRjRERkU0QTAwNkE2Qzk3IC8qIERPTUNhY2hlRW5naW5lLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTM4MEMyOTFGMzQzNkFDMDAxNTVGREEgLyogRE9NQ2FjaGVT
dG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QkRBM0ZGRTIxNTFCNkY1MDBGRDY2MDQgLyog
RE9NQ1NTQ3VzdG9tUHJvcGVydHlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDQ3
RjVCMzI2NkNGNjNEMDAxMzNGMDAgLyogVGV4dEJveFNlbGVjdGFibGVSYW5nZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkM5QTBGNzUxNjQwOTRDRjAwM0Q2QjhEIC8qIERPTUNTU05hbWVzcGFjZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNEI2QjVDQkQyMTY0MEVGRjAwNjAzODE3IC8qIERPTUNTU1Bh
aW50V29ya2xldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEJEQTNGRkYyMTUxQjZGNTAwRkQ2NjA0
IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuaCBpbiBIZWFkZXJzICovLApAQCAtMzI3
ODgsNyArMzI3ODQsNiBAQAogCQkJCUMwQzA1NENDMTExOEM4RTQwMENFMjYzNiAvKiBnZW5lcmF0
ZS1iaW5kaW5ncy5wbCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjNGMERCMERBRkY0QTQwMDlGREM5
MSAvKiBHZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwMDMwRjYxQjdEMzNC
NTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJQ0Q2MkZCOTYxQUYwMThFNzAwMTJFRDdEIC8qIEdlbmVyaWNUYXNrUXVldWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3NDZBRjI0MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjUxNEY0RERFNjAwM0U3QTcxIC8qIEdlb2xvY2F0
aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyNzE0RjREREU2MDAzRTdBNzAg
LyogR2VvbG9jYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTM1Njc2LDYgKzM1
NjcxLDcgQEAKIAkJCQlDRTdCMkRCNTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZl
V2l0aFJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU0RENFNjE4ODEwNTFEMDAzRUVEQkIg
LyogVGV4dEF1dG9TaXppbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTM0MEQwMDZDMUQw
MEVGNkYyNiAvKiBUZXh0Qm91bmRhcmllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQ0N0Y1QjMy
NjZDRjYzRDAwMTMzRjAwIC8qIFRleHRCb3hTZWxlY3RhYmxlUmFuZ2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3MTUxQkQ4MTJGMTU1OEYwMDVBMEY2NCAvKiBUZXh0Q2hlY2tlckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTc3RDAwMTIxMzNCMEFFQjAwRDY2NThDIC8qIFRleHRDaGVja2lu
Zy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEQkY4REUxMjc2OTE5QzAwNkI2MDA4IC8qIFRleHRD
aGVja2luZ0hlbHBlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCmluZGV4IGEyYzY2
NTk1ZjQ2MGU4NmJiMTQ2NjkzNjk1NWI5NTVkOGE5MDZhMTkuLjBlNDc2OTA2NGViYmY1YmVhYzlm
NThkMjIzYTE4MjE2MjY5ZWZmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCkBAIC01MSwxMCArNTEsNyBA
QCBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OkRvY3VtZW50VGltZWxpbmVzQ29udHJvbGxl
cihEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgfQogfQogCi1Eb2N1bWVudFRpbWVsaW5lc0NvbnRy
b2xsZXI6On5Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIoKQotewotICAgIG1fY3VycmVudFRp
bWVDbGVhcmluZ1Rhc2suY2FuY2VsKCk7Ci19CitEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6
On5Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgRG9jdW1l
bnRUaW1lbGluZXNDb250cm9sbGVyOjphZGRUaW1lbGluZShEb2N1bWVudFRpbWVsaW5lJiB0aW1l
bGluZSkKIHsKQEAgLTczLDcgKzcwLDcgQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xs
ZXI6OnJlbW92ZVRpbWVsaW5lKERvY3VtZW50VGltZWxpbmUmIHRpbWVsaW5lKQogCiB2b2lkIERv
Y3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6ZGV0YWNoRnJvbURvY3VtZW50KCkKIHsKLSAgICBt
X2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrLmNhbmNlbCgpOworICAgIG1fY3VycmVudFRpbWVDbGVh
cmluZ1Rhc2tDYW5jZWxsZXIuY2FuY2VsKCk7CiAKICAgICB3aGlsZSAoIW1fdGltZWxpbmVzLmNv
bXB1dGVzRW1wdHkoKSkKICAgICAgICAgbV90aW1lbGluZXMuYmVnaW4oKS0+ZGV0YWNoRnJvbURv
Y3VtZW50KCk7CkBAIC0yMzMsOSArMjMwLDggQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lc0NvbnRy
b2xsZXI6OmNhY2hlQ3VycmVudFRpbWUoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzIG5ld0MKICAg
ICAvLyBhbmltYXRpb25zLCBzbyB3ZSBzY2hlZHVsZSB0aGUgaW52YWxpZGF0aW9uIHRhc2sgYW5k
IHJlZ2lzdGVyIGEgd2hlbklkbGUgY2FsbGJhY2sgb24gdGhlIFZNLCB3aGljaCB3aWxsCiAgICAg
Ly8gZmlyZSBzeW5jcm9ub3VzbHkgaWYgbm8gSlMgaXMgcnVubmluZy4KICAgICBtX3dhaXRpbmdP
blZNSWRsZSA9IHRydWU7Ci0gICAgaWYgKCFtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrLmlzUGVu
ZGluZygpKSB7Ci0gICAgICAgIENhbmNlbGxhYmxlVGFzayB0YXNrKHN0ZDo6YmluZCgmRG9jdW1l
bnRUaW1lbGluZXNDb250cm9sbGVyOjptYXliZUNsZWFyQ2FjaGVkQ3VycmVudFRpbWUsIHRoaXMp
KTsKLSAgICAgICAgbV9jdXJyZW50VGltZUNsZWFyaW5nVGFzayA9IHRhc2suY3JlYXRlSGFuZGxl
KCk7CisgICAgaWYgKCFtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrQ2FuY2VsbGVyLmhhc1BlbmRp
bmdUYXNrKCkpIHsKKyAgICAgICAgQ2FuY2VsbGFibGVUYXNrIHRhc2sobV9jdXJyZW50VGltZUNs
ZWFyaW5nVGFza0NhbmNlbGxlciwgc3RkOjpiaW5kKCZEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xs
ZXI6Om1heWJlQ2xlYXJDYWNoZWRDdXJyZW50VGltZSwgdGhpcykpOwogICAgICAgICBtX2RvY3Vt
ZW50LmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpJbnRlcm5hbEFzeW5jVGFzaywg
V1RGTW92ZSh0YXNrKSk7CiAgICAgfQogICAgIC8vIFdlIGV4dGVudCB0aGUgYXNzb2NpYXRlZCBE
b2N1bWVudCdzIGxpZmVjeWNsZSB1bnRpbCB0aGUgVk0gYmVjYW1lIGlkbGUgc2luY2UgdGhlIERv
Y3VtZW50VGltZWxpbmVzQ29udHJvbGxlcgpAQCAtMjUyLDcgKzI0OCw3IEBAIHZvaWQgRG9jdW1l
bnRUaW1lbGluZXNDb250cm9sbGVyOjptYXliZUNsZWFyQ2FjaGVkQ3VycmVudFRpbWUoKQogICAg
IC8vIEpTIG9yIHdhaXRpbmcgb24gYWxsIGN1cnJlbnQgYW5pbWF0aW9uIHVwZGF0aW5nIGNvZGUg
dG8gaGF2ZSBjb21wbGV0ZWQuIFRoaXMgaXMgc28gdGhhdAogICAgIC8vIHdlJ3JlIGd1YXJhbnRl
ZWQgdG8gaGF2ZSBhIGNvbnNpc3RlbnQgY3VycmVudCB0aW1lIHJlcG9ydGVkIGZvciBhbGwgd29y
ayBoYXBwZW5pbmcgaW4gYSBnaXZlbgogICAgIC8vIEpTIGZyYW1lIG9yIHRocm91Z2hvdXQgdXBk
YXRpbmcgYW5pbWF0aW9ucyBpbiBXZWJDb3JlLgotICAgIGlmICghbV9pc1N1c3BlbmRlZCAmJiAh
bV93YWl0aW5nT25WTUlkbGUgJiYgIW1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2suaXNQZW5kaW5n
KCkpCisgICAgaWYgKCFtX2lzU3VzcGVuZGVkICYmICFtX3dhaXRpbmdPblZNSWRsZSAmJiAhbV9j
dXJyZW50VGltZUNsZWFyaW5nVGFza0NhbmNlbGxlci5oYXNQZW5kaW5nVGFzaygpKQogICAgICAg
ICBtX2NhY2hlZEN1cnJlbnRUaW1lID0gc3RkOjpudWxsb3B0OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmgKaW5k
ZXggOTcxYmNkNjIxNjRiM2VlN2VmZGVlYTY5NDI1ZGI1ODU3MDY0MGNkZS4uOWVhNjZkMjFkOWQ4
ZWQ1MGY3M2YzYTIzYTQzNzdjNWQ4N2Q3ODFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuaApAQCAtNjcsNyArNjcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgbWF5YmVDbGVhckNhY2hlZEN1cnJlbnRUaW1lKCk7CiAK
ICAgICBXZWFrSGFzaFNldDxEb2N1bWVudFRpbWVsaW5lPiBtX3RpbWVsaW5lczsKLSAgICBDYW5j
ZWxsYWJsZVRhc2s6OkhhbmRsZSBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrOworICAgIFRhc2tD
YW5jZWxsZXIgbV9jdXJyZW50VGltZUNsZWFyaW5nVGFza0NhbmNlbGxlcjsKICAgICBEb2N1bWVu
dCYgbV9kb2N1bWVudDsKICAgICBNYXJrYWJsZTxTZWNvbmRzLCBTZWNvbmRzOjpNYXJrYWJsZVRy
YWl0cz4gbV9jYWNoZWRDdXJyZW50VGltZTsKICAgICBib29sIG1faXNTdXNwZW5kZWQgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCmluZGV4IDQ1MDRlYTExZjk4MTkz
NWMxYjg4YmZkOWQxMjBlNjk5ZWY2YjA5ZmYuLjdjNjc0Y2ZmZjc5YmMzNzk0NmE0MWNhMjdlZjVh
MTNkMWU2YjM3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKQEAgLTExMiwx
NCArMTEyLDEyIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
ICAgIHN0YXRpYyBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tl
ZXBpbmdPYmplY3RBbGl2ZShUJiBvYmplY3QsIFRhc2tTb3VyY2Ugc291cmNlLCBGdW5jdGlvbjx2
b2lkKCk+JiYgdGFzaykKKyAgICBzdGF0aWMgdm9pZCBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBp
bmdPYmplY3RBbGl2ZShUJiBvYmplY3QsIFRhc2tTb3VyY2Ugc291cmNlLCBUYXNrQ2FuY2VsbGVy
JiB0YXNrQ2FuY2VsbGVyLCBGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKICAgICB7Ci0gICAgICAg
IENhbmNlbGxhYmxlVGFzayBjYW5jZWxsYWJsZVRhc2soV1RGTW92ZSh0YXNrKSk7Ci0gICAgICAg
IGF1dG8gdGFza0hhbmRsZSA9IGNhbmNlbGxhYmxlVGFzay5jcmVhdGVIYW5kbGUoKTsKKyAgICAg
ICAgQ2FuY2VsbGFibGVUYXNrIGNhbmNlbGxhYmxlVGFzayh0YXNrQ2FuY2VsbGVyLCBXVEZNb3Zl
KHRhc2spKTsKICAgICAgICAgb2JqZWN0LnF1ZXVlVGFza0luRXZlbnRMb29wKHNvdXJjZSwgW3By
b3RlY3RlZE9iamVjdCA9IG1ha2VSZWYob2JqZWN0KSwgYWN0aXZpdHkgPSBvYmplY3QuQWN0aXZl
RE9NT2JqZWN0OjptYWtlUGVuZGluZ0FjdGl2aXR5KG9iamVjdCksIGNhbmNlbGxhYmxlVGFzayA9
IFdURk1vdmUoY2FuY2VsbGFibGVUYXNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbmNl
bGxhYmxlVGFzaygpOwogICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHRhc2tIYW5kbGU7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXZlbnRUYXJnZXRUeXBlLCB0eXBlbmFtZSBF
dmVudFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDJhYWQwZTVkZTBjODZlZjlhZjg5MDlj
Y2M5YTNmNDFmNjNmYzcwYmYuLmI0NzFhNjNjZjU4NmM4MjMxNWUyZDY1MGYwMGQ5OWU2OTY2NTU2
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiRnJh
bWVEZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRnJhbWVJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgotI2luY2x1ZGUgIkdlbmVyaWNUYXNrUXVldWUu
aCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5o
IgogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNj
cmVlbk1hbmFnZXIuY3BwCmluZGV4IDgwZTMzNmY0OTNhYWU1YmMwOTBlNDJlOWJjZjllOGZmOWFk
NzIzMzIuLmJiYjcyZDM5YjBlOWM1MDE0ZTUyZjQwNTBmYTQyZWE1N2FmNzJlNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAi
RXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCmluZGV4IDFhNGQzMzRkNjgwZTY2MDVlNDAzYzFhMmY0YmMwNTBjMjY3
MDZjZmMuLjBjMTYxNjY1YWUzMzAxNjM4MTY5ZjRlMjA1MDdhZTBiZjNkM2NkZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzk0LDcgKzM5NCw2IEBAIEhU
TUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAgLCBtX3NjYW5UaW1lcigqdGhpcywgJkhUTUxNZWRp
YUVsZW1lbnQ6OnNjYW5UaW1lckZpcmVkKQogICAgICwgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdl
ckJlaGF2aW9yUmVzdHJpY3Rpb25zVGltZXIoKnRoaXMsICZIVE1MTWVkaWFFbGVtZW50OjpwbGF5
YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGltZXJGaXJlZCkKICAgICAs
IG1fc2Vla1RvUGxheWJhY2tQb3NpdGlvbkVuZGVkVGltZXIoKnRoaXMsICZIVE1MTWVkaWFFbGVt
ZW50OjpzZWVrVG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRUaW1lckZpcmVkKQotICAgICwgbV9yZXNv
dXJjZVNlbGVjdGlvblRhc2tRdWV1ZSgmZG9jdW1lbnQpCiAgICAgLCBtX2FzeW5jRXZlbnRRdWV1
ZShFdmVudExvb3BFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9sYXN0VGltZVVw
ZGF0ZUV2ZW50TW92aWVUaW1lKE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSkKICAg
ICAsIG1fZmlyc3RUaW1lUGxheWluZyh0cnVlKQpAQCAtNTY3LDExICs1NjYsNiBAQCBIVE1MTWVk
aWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAgICAgaWYgKG1faXNvbGF0ZWRXb3JsZCkK
ICAgICAgICAgbV9pc29sYXRlZFdvcmxkLT5jbGVhcldyYXBwZXJzKCk7CiAKLSAgICBtX3NlZWtU
YXNrLmNhbmNlbCgpOwotICAgIG1fcmVzdW1lVGFzay5jYW5jZWwoKTsKLSAgICBtX3BsYXliYWNr
Q29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUYXNrLmNhbmNlbCgpOwotICAgIG1f
cmVzb3VyY2VTZWxlY3Rpb25UYXNrUXVldWUuY2xvc2UoKTsKLQogICAgIG1fY29tcGxldGVseUxv
YWRlZCA9IHRydWU7CiAKICAgICBpZiAobV9wbGF5ZXIpIHsKQEAgLTg5Myw5ICs4ODcsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTmV4dFNvdXJjZUNoaWxkKCkKIHsKICAgICAvLyBT
Y2hlZHVsZSB0aGUgdGltZXIgdG8gdHJ5IHRoZSBuZXh0IDxzb3VyY2U+IGVsZW1lbnQgV0lUSE9V
VCByZXNldHRpbmcgc3RhdGUgYWxhIHByZXBhcmVGb3JMb2FkLgotICAgIG1fcmVzb3VyY2VTZWxl
Y3Rpb25UYXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXNdIHsKLSAgICAgICAgbG9hZE5leHRTb3Vy
Y2VDaGlsZCgpOwotICAgIH0pOworICAgIHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVj
dEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIG1fcmVzb3VyY2VTZWxlY3Rp
b25UYXNrQ2FuY2VsbGVyLCBzdGQ6OmJpbmQoJkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWROZXh0U291
cmNlQ2hpbGQsIHRoaXMpKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
ckFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKCkKQEAgLTk4MCwxMSArOTcyLDExIEBAIGJvb2wg
SFRNTE1lZGlhRWxlbWVudDo6aGFzRXZlck5vdGlmaWVkQWJvdXRQbGF5aW5nKCkgY29uc3QKIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUNoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRh
YmlsaXR5KCkKIHsKLSAgICBpZiAobV9jaGVja1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJpbGl0eVRh
c2suaXNQZW5kaW5nKCkpCisgICAgaWYgKG1fY2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGliaWxp
dHlUYXNrQ2FuY2VsbGVyLmhhc1BlbmRpbmdUYXNrKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7Ci0gICAgbV9jaGVja1BsYXliYWNrVGFyZ2V0Q29t
cGF0aWJpbGl0eVRhc2sgPSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgq
dGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhpc10geworICAgIHF1ZXVlQ2FuY2Vs
bGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1l
bnQsIG1fY2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGliaWxpdHlUYXNrQ2FuY2VsbGVyLCBbdGhp
c10gewogICAgICAgICBjaGVja1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJpbGl0eSgpOwogICAgIH0p
OwogfQpAQCAtMTA5OSw5ICsxMDkxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkKCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgcHJlcGFyZUZvckxvYWQoKTsKLSAgICBtX3Jlc291cmNl
U2VsZWN0aW9uVGFza1F1ZXVlLmVucXVldWVUYXNrKFt0aGlzXSB7Ci0gICAgICAgIHByZXBhcmVU
b1BsYXkoKTsKLSAgICB9KTsKKyAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RB
bGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX3Jlc291cmNlU2VsZWN0aW9u
VGFza0NhbmNlbGxlciwgc3RkOjpiaW5kKCZIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlVG9QbGF5
LCB0aGlzKSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQoKQpA
QCAtMTExOCw3ICsxMTA4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9h
ZCgpCiAgICAgLy8gMSAtIEFib3J0IGFueSBhbHJlYWR5LXJ1bm5pbmcgaW5zdGFuY2Ugb2YgdGhl
IHJlc291cmNlIHNlbGVjdGlvbiBhbGdvcml0aG0gZm9yIHRoaXMgZWxlbWVudC4KICAgICAvLyBQ
ZXJmb3JtIHRoZSBjbGVhbnVwIHJlcXVpcmVkIGZvciB0aGUgcmVzb3VyY2UgbG9hZCBhbGdvcml0
aG0gdG8gcnVuLgogICAgIHN0b3BQZXJpb2RpY1RpbWVycygpOwotICAgIG1fcmVzb3VyY2VTZWxl
Y3Rpb25UYXNrUXVldWUuY2FuY2VsQWxsVGFza3MoKTsKKyAgICBtX3Jlc291cmNlU2VsZWN0aW9u
VGFza0NhbmNlbGxlci5jYW5jZWwoKTsKICAgICAvLyBGSVhNRTogRmlndXJlIG91dCBhcHByb3By
aWF0ZSBwbGFjZSB0byByZXNldCBMb2FkVGV4dFRyYWNrUmVzb3VyY2UgaWYgbmVjZXNzYXJ5IGFu
ZCBzZXQgbV9wZW5kaW5nQWN0aW9uRmxhZ3MgdG8gMCBoZXJlLgogICAgIG1fc2VudEVuZEV2ZW50
ID0gZmFsc2U7CiAgICAgbV9zZW50U3RhbGxlZEV2ZW50ID0gZmFsc2U7CkBAIC0xMjMwLDE3ICsx
MjIwLDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZWxvYWRBbmRSZXN1
bWVQbGF5YmFja0lmTmVlZGVkKCkKICAgICAgICAgZW50ZXJGdWxsc2NyZWVuKG1fdmlkZW9GdWxs
c2NyZWVuTW9kZSk7CiAKICAgICBpZiAocHJldmlvdXNNZWRpYVRpbWUpIHsKLSAgICAgICAgbV9y
ZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhpcywgcHJldmlvdXNNZWRp
YVRpbWVdIHsKKyAgICAgICAgcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUo
KnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tD
YW5jZWxsZXIsIFt0aGlzLCBwcmV2aW91c01lZGlhVGltZV0gewogICAgICAgICAgICAgaWYgKG1f
cGxheWVyKQogICAgICAgICAgICAgICAgIG1fcGxheWVyLT5zZWVrV2hlblBvc3NpYmxlKHByZXZp
b3VzTWVkaWFUaW1lKTsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgaWYgKCF3YXNQYXVzZWQp
IHsKLSAgICAgICAgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhp
c10gewotICAgICAgICAgICAgcGxheUludGVybmFsKCk7Ci0gICAgICAgIH0pOwotICAgIH0KKyAg
ICBpZiAoIXdhc1BhdXNlZCkKKyAgICAgICAgcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgbV9yZXNvdXJjZVNlbGVj
dGlvblRhc2tDYW5jZWxsZXIsIHN0ZDo6YmluZCgmSFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVy
bmFsLCB0aGlzKSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNv
dXJjZSgpCkBAIC0xMjU4LDcgKzEyNDUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVj
dE1lZGlhUmVzb3VyY2UoKQogICAgIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KHRydWUpOwogCiAg
ICAgLy8gNC4gaW4gcGFyYWxsZWwgYXdhaXQgYSBzdGFibGUgc3RhdGUsIGFsbG93aW5nIHRoZSB0
YXNrIHRoYXQgaW52b2tlZCB0aGlzIGFsZ29yaXRobSB0byBjb250aW51ZS4KLSAgICBpZiAobV9y
ZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZS5oYXNQZW5kaW5nVGFza3MoKSkKKyAgICBpZiAobV9y
ZXNvdXJjZVNlbGVjdGlvblRhc2tDYW5jZWxsZXIuaGFzUGVuZGluZ1Rhc2soKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFtZWRpYVNlc3Npb24oKS5wYWdlQWxsb3dzRGF0YUxvYWRpbmco
KSkgewpAQCAtMTI3OSw3ICsxMjY2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RN
ZWRpYVJlc291cmNlKCkKICAgICBhdXRvIGxvZ1NpdGVJZGVudGlmaWVyID0gTE9HSURFTlRJRklF
UjsKICAgICBVTlVTRURfUEFSQU0obG9nU2l0ZUlkZW50aWZpZXIpOwogCi0gICAgbV9yZXNvdXJj
ZVNlbGVjdGlvblRhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJd
ICB7CisgICAgcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRh
c2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tDYW5jZWxsZXIs
IFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0gIHsKIAogICAgICAgICBBTFdBWVNfTE9HKGxvZ1Np
dGVJZGVudGlmaWVyLCAibGFtYmRhKCksIHRhc2sgZmlyZWQiKTsKIApAQCAtMjk2MSw5ICsyOTQ4
LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRp
YVRpbWUmIGluVGltZSwgY29uc3QgTWVkaWFUaW0KICAgICAvLyAzIC0gSWYgdGhlIGVsZW1lbnQn
cyBzZWVraW5nIElETCBhdHRyaWJ1dGUgaXMgdHJ1ZSwgdGhlbiBhbm90aGVyIGluc3RhbmNlIG9m
IHRoaXMgYWxnb3JpdGhtIGlzCiAgICAgLy8gYWxyZWFkeSBydW5uaW5nLiBBYm9ydCB0aGF0IG90
aGVyIGluc3RhbmNlIG9mIHRoZSBhbGdvcml0aG0gd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgc3Rl
cCB0aGF0CiAgICAgLy8gaXQgaXMgcnVubmluZyB0byBjb21wbGV0ZS4KLSAgICBpZiAobV9zZWVr
VGFzay5pc1BlbmRpbmcoKSkgeworICAgIGlmIChtX3NlZWtUYXNrQ2FuY2VsbGVyLmhhc1BlbmRp
bmdUYXNrKCkpIHsKICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNhbmNlbGxpbmcg
cGVuZGluZyBzZWVrcyIpOwotICAgICAgICBtX3NlZWtUYXNrLmNhbmNlbCgpOworICAgICAgICBt
X3NlZWtUYXNrQ2FuY2VsbGVyLmNhbmNlbCgpOwogICAgICAgICBpZiAobV9wZW5kaW5nU2Vlaykg
ewogICAgICAgICAgICAgbm93ID0gbV9wZW5kaW5nU2Vlay0+bm93OwogICAgICAgICAgICAgbV9w
ZW5kaW5nU2VlayA9IG51bGxwdHI7CkBAIC0yOTg1LDcgKzI5NzIsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYgaW5UaW1lLCBjb25z
dCBNZWRpYVRpbQogICAgIG1fcGVuZGluZ1NlZWsgPSBtYWtlVW5pcXVlPFBlbmRpbmdTZWVrPihu
b3csIHRpbWUsIG5lZ2F0aXZlVG9sZXJhbmNlLCBwb3NpdGl2ZVRvbGVyYW5jZSk7CiAgICAgaWYg
KGZyb21ET00pIHsKICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImVucXVldWluZyBz
ZWVrIGZyb20gIiwgbm93LCAiIHRvICIsIHRpbWUpOwotICAgICAgICBtX3NlZWtUYXNrID0gcXVl
dWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1l
ZGlhRWxlbWVudCwgc3RkOjpiaW5kKCZIVE1MTWVkaWFFbGVtZW50OjpzZWVrVGFzaywgdGhpcykp
OworICAgICAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywg
VGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX3NlZWtUYXNrQ2FuY2VsbGVyLCBzdGQ6OmJpbmQo
JkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtUYXNrLCB0aGlzKSk7CiAgICAgfSBlbHNlCiAgICAgICAg
IHNlZWtUYXNrKCk7CiAKQEAgLTM2OTcsMTAgKzM2ODQsMTAgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
SFRNTE1lZGlhRWxlbWVudDo6c2V0Vm9sdW1lKGRvdWJsZSB2b2x1bWUpCiAgICAgYXV0byBvbGRW
b2x1bWUgPSBtX3ZvbHVtZTsKICAgICBtX3ZvbHVtZSA9IHZvbHVtZTsKIAotICAgIGlmIChtX3Zv
bHVtZVJldmVydFRhc2suaXNQZW5kaW5nKCkpCisgICAgaWYgKG1fdm9sdW1lUmV2ZXJ0VGFza0Nh
bmNlbGxlci5oYXNQZW5kaW5nVGFzaygpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgbV92
b2x1bWVSZXZlcnRUYXNrID0gcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUo
KnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgW3RoaXMsIG9sZFZvbHVtZV0geworICAg
IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNl
OjpNZWRpYUVsZW1lbnQsIG1fdm9sdW1lUmV2ZXJ0VGFza0NhbmNlbGxlciwgW3RoaXMsIG9sZFZv
bHVtZV0gewogICAgICAgICBtX3ZvbHVtZSA9IG9sZFZvbHVtZTsKICAgICB9KTsKIApAQCAtNDQ4
NSwxMiArNDQ3MiwxMiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFRy
YWNrKFRleHRUcmFjayogdHJhY2tUb1NlbGVjdCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
Y2hlZHVsZUNvbmZpZ3VyZVRleHRUcmFja3MoKQogewotICAgIGlmIChtX2NvbmZpZ3VyZVRleHRU
cmFja3NUYXNrLmlzUGVuZGluZygpKQorICAgIGlmIChtX2NvbmZpZ3VyZVRleHRUcmFja3NUYXNr
Q2FuY2VsbGVyLmhhc1BlbmRpbmdUYXNrKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8g
bG9nU2l0ZUlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwogICAgIEFMV0FZU19MT0cobG9nU2l0
ZUlkZW50aWZpZXIsICJ0YXNrIHNjaGVkdWxlZCIpOwotICAgIG1fY29uZmlndXJlVGV4dFRyYWNr
c1Rhc2sgPSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFz
a1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdIHsKKyAgICBx
dWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6
TWVkaWFFbGVtZW50LCBtX2NvbmZpZ3VyZVRleHRUcmFja3NUYXNrQ2FuY2VsbGVyLCBbdGhpcywg
bG9nU2l0ZUlkZW50aWZpZXJdIHsKICAgICAgICAgVU5VU0VEX1BBUkFNKGxvZ1NpdGVJZGVudGlm
aWVyKTsKICAgICAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgImxhbWJkYSgpLCB0
YXNrIGZpcmVkIik7CiAgICAgICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsgLy8gY29uZmlndXJlVGV4dFRyYWNrcyBjYWxscyBtZXRob2RzIHRoYXQgY2FuIHRy
aWdnZXIgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCkBAIC01MDMzLDEyICs1MDIwLDEyIEBAIEdy
YXBoaWNzRGV2aWNlQWRhcHRlciogSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJHcmFwaGlj
c0RldmljZUFkYXB0ZXIoKSBjb25zCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVN
ZWRpYUVuZ2luZVdhc1VwZGF0ZWQoKQogewotICAgIGlmIChtX21lZGlhRW5naW5lVXBkYXRlZFRh
c2suaXNQZW5kaW5nKCkpCisgICAgaWYgKG1fbWVkaWFFbmdpbmVVcGRhdGVkVGFza0NhbmNlbGxl
ci5oYXNQZW5kaW5nVGFzaygpKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGxvZ1NpdGVJ
ZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlm
aWVyLCAidGFzayBzY2hlZHVsZWQiKTsKLSAgICBtX21lZGlhRW5naW5lVXBkYXRlZFRhc2sgPSBx
dWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6
TWVkaWFFbGVtZW50LCBbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdIHsKKyAgICBxdWV1ZUNhbmNl
bGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVt
ZW50LCBtX21lZGlhRW5naW5lVXBkYXRlZFRhc2tDYW5jZWxsZXIsIFt0aGlzLCBsb2dTaXRlSWRl
bnRpZmllcl0gewogICAgICAgICBVTlVTRURfUEFSQU0obG9nU2l0ZUlkZW50aWZpZXIpOwogICAg
ICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAibGFtYmRhKCksIHRhc2sgZmlyZWQi
KTsKICAgICAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAv
LyBtZWRpYUVuZ2luZVdhc1VwZGF0ZWQgY2FsbHMgbWV0aG9kcyB0aGF0IGNhbiB0cmlnZ2VyIGFy
Yml0cmFyeSBET00gbXV0YXRpb25zLgpAQCAtNTMyNiwxMiArNTMxMywxMiBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSgpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2No
ZWR1bGVVcGRhdGVQbGF5U3RhdGUoKQogewotICAgIGlmIChtX3VwZGF0ZVBsYXlTdGF0ZVRhc2su
aXNQZW5kaW5nKCkpCisgICAgaWYgKG1fdXBkYXRlUGxheVN0YXRlVGFza0NhbmNlbGxlci5oYXNQ
ZW5kaW5nVGFzaygpKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGxvZ1NpdGVJZGVudGlm
aWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAi
dGFzayBzY2hlZHVsZWQiKTsKLSAgICBtX3VwZGF0ZVBsYXlTdGF0ZVRhc2sgPSBxdWV1ZUNhbmNl
bGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVt
ZW50LCBbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdIHsKKyAgICBxdWV1ZUNhbmNlbGxhYmxlVGFz
a0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX3Vw
ZGF0ZVBsYXlTdGF0ZVRhc2tDYW5jZWxsZXIsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0gewog
ICAgICAgICBVTlVTRURfUEFSQU0obG9nU2l0ZUlkZW50aWZpZXIpOwogICAgICAgICBBTFdBWVNf
TE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAibGFtYmRhKCksIHRhc2sgZmlyZWQiKTsKICAgICAgICAg
UmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyB1cGRhdGVQbGF5
U3RhdGUgY2FsbHMgbWV0aG9kcyB0aGF0IGNhbiB0cmlnZ2VyIGFyYml0cmFyeSBET00gbXV0YXRp
b25zLgpAQCAtNTQ2MywxNiArNTQ1MCwxNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN0b3BQ
ZXJpb2RpY1RpbWVycygpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2FuY2VsUGVuZGluZ1Rh
c2tzKCkKIHsKLSAgICBtX2NvbmZpZ3VyZVRleHRUcmFja3NUYXNrLmNhbmNlbCgpOwotICAgIG1f
Y2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGliaWxpdHlUYXNrLmNhbmNlbCgpOwotICAgIG1fdXBk
YXRlTWVkaWFTdGF0ZVRhc2suY2FuY2VsKCk7Ci0gICAgbV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNr
LmNhbmNlbCgpOwotICAgIG1fdXBkYXRlUGxheVN0YXRlVGFzay5jYW5jZWwoKTsKLSAgICBtX3Jl
c3VtZVRhc2suY2FuY2VsKCk7Ci0gICAgbV9zZWVrVGFzay5jYW5jZWwoKTsKLSAgICBtX3BsYXli
YWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUYXNrLmNhbmNlbCgpOworICAg
IG1fY29uZmlndXJlVGV4dFRyYWNrc1Rhc2tDYW5jZWxsZXIuY2FuY2VsKCk7CisgICAgbV9jaGVj
a1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJpbGl0eVRhc2tDYW5jZWxsZXIuY2FuY2VsKCk7CisgICAg
bV91cGRhdGVNZWRpYVN0YXRlVGFza0NhbmNlbGxlci5jYW5jZWwoKTsKKyAgICBtX21lZGlhRW5n
aW5lVXBkYXRlZFRhc2tDYW5jZWxsZXIuY2FuY2VsKCk7CisgICAgbV91cGRhdGVQbGF5U3RhdGVU
YXNrQ2FuY2VsbGVyLmNhbmNlbCgpOworICAgIG1fcmVzdW1lVGFza0NhbmNlbGxlci5jYW5jZWwo
KTsKKyAgICBtX3NlZWtUYXNrQ2FuY2VsbGVyLmNhbmNlbCgpOworICAgIG1fcGxheWJhY2tDb250
cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1Rhc2tDYW5jZWxsZXIuY2FuY2VsKCk7CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBtX3ZvbHVtZVJldmVydFRhc2suY2FuY2VsKCk7
CisgICAgbV92b2x1bWVSZXZlcnRUYXNrQ2FuY2VsbGVyLmNhbmNlbCgpOwogI2VuZGlmCiB9CiAK
QEAgLTU1ODcsNyArNTU3NCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYVBs
YXllcigpCiAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5jYW5Qcm9kdWNlQXVkaW9DaGFuZ2VkKCk7
CiAgICAgfQogCi0gICAgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZS5jYW5jZWxBbGxUYXNr
cygpOworICAgIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrQ2FuY2VsbGVyLmNhbmNlbCgpOwogCiAg
ICAgdXBkYXRlU2xlZXBEaXNhYmxpbmcoKTsKIH0KQEAgLTU2MjksNyArNTYxNiw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c3RvcFdpdGhvdXREZXN0cm95aW5nTWVkaWFQbGF5ZXIoKQogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpjbG9zZVRhc2tRdWV1ZXMoKQogewogICAgIGNhbmNlbFBlbmRp
bmdUYXNrcygpOwotICAgIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrUXVldWUuY2xvc2UoKTsKKyAg
ICBtX3Jlc291cmNlU2VsZWN0aW9uVGFza0NhbmNlbGxlci5jYW5jZWwoKTsKICAgICBtX2FzeW5j
RXZlbnRRdWV1ZS0+Y2xvc2UoKTsKIH0KIApAQCAtNTY2NCw3ICs1NjUxLDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQogICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7CiAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOwogCi0gICAgbV9yZXN1bWVUYXNrLmNhbmNlbCgpOworICAgIG1fcmVz
dW1lVGFza0NhbmNlbGxlci5jYW5jZWwoKTsKIAogICAgIHN3aXRjaCAocmVhc29uKSB7CiAgICAg
Y2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpCYWNrRm9yd2FyZENhY2hlOgpAQCAtNTY5NywxMyAr
NTY4NCwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlc3VtZSgpCiAgICAgICAgIG1fbWVk
aWFTZXNzaW9uLT51cGRhdGVCdWZmZXJpbmdQb2xpY3koKTsKICAgICB9CiAKLSAgICBpZiAobV9l
cnJvciAmJiBtX2Vycm9yLT5jb2RlKCkgPT0gTWVkaWFFcnJvcjo6TUVESUFfRVJSX0FCT1JURUQg
JiYgIW1fcmVzdW1lVGFzay5pc1BlbmRpbmcoKSkgeworICAgIGlmIChtX2Vycm9yICYmIG1fZXJy
b3ItPmNvZGUoKSA9PSBNZWRpYUVycm9yOjpNRURJQV9FUlJfQUJPUlRFRCAmJiAhbV9yZXN1bWVU
YXNrQ2FuY2VsbGVyLmhhc1BlbmRpbmdUYXNrKCkpIHsKICAgICAgICAgLy8gUmVzdGFydCB0aGUg
bG9hZCBpZiBpdCB3YXMgYWJvcnRlZCBpbiB0aGUgbWlkZGxlIGJ5IG1vdmluZyB0aGUgZG9jdW1l
bnQgdG8gdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4KICAgICAgICAgLy8gbV9lcnJvciBpcyBvbmx5
IGxlZnQgYXQgTUVESUFfRVJSX0FCT1JURUQgd2hlbiB0aGUgZG9jdW1lbnQgYmVjb21lcyBpbmFj
dGl2ZSAoaXQgaXMgc2V0IHRvCiAgICAgICAgIC8vICBNRURJQV9FUlJfQUJPUlRFRCB3aGlsZSB0
aGUgYWJvcnRFdmVudCBpcyBiZWluZyBzZW50LCBidXQgY2xlYXJlZCBpbW1lZGlhdGVseSBhZnRl
cndhcmRzKS4KICAgICAgICAgLy8gVGhpcyBiZWhhdmlvciBpcyBub3Qgc3BlY2lmaWVkIGJ1dCBp
dCBzZWVtcyBsaWtlIGEgc2Vuc2libGUgdGhpbmcgdG8gZG8uCiAgICAgICAgIC8vIEFzIGl0IGlz
IG5vdCBzYWZlIHRvIGltbWVkYXRlbHkgc3RhcnQgbG9hZGluZyBub3csIGxldCdzIHNjaGVkdWxl
IGEgbG9hZC4KLSAgICAgICAgbV9yZXN1bWVUYXNrID0gcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVw
aW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgc3RkOjpiaW5k
KCZIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCwgdGhpcykpOworICAgICAgICBxdWV1
ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVk
aWFFbGVtZW50LCBtX3Jlc3VtZVRhc2tDYW5jZWxsZXIsIHN0ZDo6YmluZCgmSFRNTE1lZGlhRWxl
bWVudDo6cHJlcGFyZUZvckxvYWQsIHRoaXMpKTsKICAgICB9CiAKICAgICB1cGRhdGVSZW5kZXJl
cigpOwpAQCAtNTcxOSw3ICs1NzA2LDYgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp2aXJ0dWFs
SGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jcmVhdGluZ0NvbnRy
b2xzCiAgICAgICAgIHx8IG1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5nQWN0aXZpdHkoKQot
ICAgICAgICB8fCBtX3Jlc291cmNlU2VsZWN0aW9uVGFza1F1ZXVlLmhhc1BlbmRpbmdUYXNrcygp
CiAgICAgICAgIHx8IChoYXNBdWRpbygpICYmIGlzUGxheWluZygpKQogICAgICAgICB8fCAoaGFz
TGl2ZVNvdXJjZSgpICYmIGhhc0V2ZW50TGlzdGVuZXJzKCkpOwogfQpAQCAtNjYxNSw3ICs2NjAx
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tz
QXNVbmNvbmZpZ3VyZWQoUmVjb25maWd1cmVNb2QKICAgICB9CiAKICAgICBtX3Byb2Nlc3NpbmdQ
cmVmZXJlbmNlQ2hhbmdlID0gdHJ1ZTsKLSAgICBtX2NvbmZpZ3VyZVRleHRUcmFja3NUYXNrLmNh
bmNlbCgpOworICAgIG1fY29uZmlndXJlVGV4dFRyYWNrc1Rhc2tDYW5jZWxsZXIuY2FuY2VsKCk7
CiAgICAgaWYgKG1vZGUgPT0gSW1tZWRpYXRlbHkpIHsKICAgICAgICAgUmVmPEhUTUxNZWRpYUVs
ZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBjb25maWd1cmVUZXh0VHJhY2tzIGNhbGxz
IG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KICAgICAg
ICAgY29uZmlndXJlVGV4dFRyYWNrcygpOwpAQCAtNzEzMSwxMiArNzExNywxMiBAQCBib29sIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2hvdWxkQ2hlY2tIYXJkd2FyZVN1cHBvcnQoKSBj
b25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQnVmZmVyZWRUaW1lUmFu
Z2VzQ2hhbmdlZCgpCiB7Ci0gICAgaWYgKCFtX3RleHRUcmFja3MgfHwgbV9idWZmZXJlZFRpbWVS
YW5nZXNDaGFuZ2VkVGFzay5pc1BlbmRpbmcoKSkKKyAgICBpZiAoIW1fdGV4dFRyYWNrcyB8fCBt
X2J1ZmZlcmVkVGltZVJhbmdlc0NoYW5nZWRUYXNrQ2FuY2VsbGVyLmhhc1BlbmRpbmdUYXNrKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gbG9nU2l0ZUlkZW50aWZpZXIgPSBMT0dJREVO
VElGSUVSOwogICAgIEFMV0FZU19MT0cobG9nU2l0ZUlkZW50aWZpZXIsICJ0YXNrIHNjaGVkdWxl
ZCIpOwotICAgIG1fYnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdlZFRhc2sgPSBxdWV1ZUNhbmNlbGxh
YmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50
LCBbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdIHsKKyAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza0tl
ZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX2J1ZmZl
cmVkVGltZVJhbmdlc0NoYW5nZWRUYXNrQ2FuY2VsbGVyLCBbdGhpcywgbG9nU2l0ZUlkZW50aWZp
ZXJdIHsKICAgICAgICAgVU5VU0VEX1BBUkFNKGxvZ1NpdGVJZGVudGlmaWVyKTsKICAgICAgICAg
QUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgImxhbWJkYSgpLCB0YXNrIGZpcmVkIik7CiAg
ICAgICAgIGlmICghbV9wbGF5ZXIgfHwgIW1fdGV4dFRyYWNrcykKQEAgLTc3NjIsMTIgKzc3NDgs
MTIgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpzaG91bGRPdmVycmlkZVBhdXNlRHVyaW5nUm91
dGVDaGFuZ2UoKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlVXBkYXRl
TWVkaWFTdGF0ZSgpCiB7Ci0gICAgaWYgKG1fdXBkYXRlTWVkaWFTdGF0ZVRhc2suaXNQZW5kaW5n
KCkpCisgICAgaWYgKG1fdXBkYXRlTWVkaWFTdGF0ZVRhc2tDYW5jZWxsZXIuaGFzUGVuZGluZ1Rh
c2soKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBsb2dTaXRlSWRlbnRpZmllciA9IExP
R0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgInRhc2sgc2No
ZWR1bGVkIik7Ci0gICAgbV91cGRhdGVNZWRpYVN0YXRlVGFzayA9IHF1ZXVlQ2FuY2VsbGFibGVU
YXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0
aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0geworICAgIHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGlu
Z09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIG1fdXBkYXRlTWVk
aWFTdGF0ZVRhc2tDYW5jZWxsZXIsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0gewogICAgICAg
ICBVTlVTRURfUEFSQU0obG9nU2l0ZUlkZW50aWZpZXIpOwogICAgICAgICBBTFdBWVNfTE9HKGxv
Z1NpdGVJZGVudGlmaWVyLCAibGFtYmRhKCksIHRhc2sgZmlyZWQiKTsKICAgICAgICAgUmVmPEhU
TUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyB1cGRhdGVNZWRpYVN0YXRl
IGNhbGxzIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4K
QEAgLTgwMzUsMTMgKzgwMjEsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyVXBkYXRlKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpw
bGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGltZXJGaXJlZCgpCiB7
Ci0gICAgaWYgKG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1Rh
c2suaXNQZW5kaW5nKCkpCisgICAgaWYgKG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlv
clJlc3RyaWN0aW9uc1Rhc2tDYW5jZWxsZXIuaGFzUGVuZGluZ1Rhc2soKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFtZWRpYVNlc3Npb24oKS5oYXNCZWhhdmlvclJlc3RyaWN0aW9uKE1l
ZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZVRvQ29udHJvbENvbnRyb2xzTWFu
YWdlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJC
ZWhhdmlvclJlc3RyaWN0aW9uc1Rhc2sgPSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmpl
Y3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhpc10gKCkgeworICAg
IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNl
OjpNZWRpYUVsZW1lbnQsIG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0
aW9uc1Rhc2tDYW5jZWxsZXIsIFt0aGlzXSAoKSB7CiAgICAgICAgIGF1dG8mIG1lZGlhRWxlbWVu
dFNlc3Npb24gPSBtZWRpYVNlc3Npb24oKTsKICAgICAgICAgaWYgKGlzUGxheWluZygpIHx8IG1l
ZGlhRWxlbWVudFNlc3Npb24uc3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QXV0b3Bs
YXlpbmcgfHwgbWVkaWFFbGVtZW50U2Vzc2lvbi5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpQbGF5aW5nKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaAppbmRleCA4MGNmNjhlNmE0ZjMwZmM3N2EzNGM1NGVjZjA2OGUyMjBiZTI1
ZjY2Li4zOGQyNGRmNjc1ODI5MWVjNzk4MmFkNzRmZGFjZmViNWQ0YmQyNDI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtOTQwLDIwICs5NDAsMjAgQEAgcHJpdmF0
ZToKICAgICBUaW1lciBtX3NjYW5UaW1lcjsKICAgICBUaW1lciBtX3BsYXliYWNrQ29udHJvbHNN
YW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lcjsKICAgICBUaW1lciBtX3NlZWtUb1BsYXli
YWNrUG9zaXRpb25FbmRlZFRpbWVyOwotICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fY29u
ZmlndXJlVGV4dFRyYWNrc1Rhc2s7Ci0gICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV9jaGVj
a1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJpbGl0eVRhc2s7Ci0gICAgQ2FuY2VsbGFibGVUYXNrOjpI
YW5kbGUgbV91cGRhdGVNZWRpYVN0YXRlVGFzazsKLSAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRs
ZSBtX21lZGlhRW5naW5lVXBkYXRlZFRhc2s7Ci0gICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUg
bV91cGRhdGVQbGF5U3RhdGVUYXNrOwotICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fcmVz
dW1lVGFzazsKLSAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX3NlZWtUYXNrOwotICAgIENh
bmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJl
c3RyaWN0aW9uc1Rhc2s7Ci0gICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV9idWZmZXJlZFRp
bWVSYW5nZXNDaGFuZ2VkVGFzazsKLSAgICBFdmVudExvb3BUYXNrUXVldWUgbV9yZXNvdXJjZVNl
bGVjdGlvblRhc2tRdWV1ZTsKKyAgICBUYXNrQ2FuY2VsbGVyIG1fY29uZmlndXJlVGV4dFRyYWNr
c1Rhc2tDYW5jZWxsZXI7CisgICAgVGFza0NhbmNlbGxlciBtX2NoZWNrUGxheWJhY2tUYXJnZXRD
b21wYXRpYmlsaXR5VGFza0NhbmNlbGxlcjsKKyAgICBUYXNrQ2FuY2VsbGVyIG1fdXBkYXRlTWVk
aWFTdGF0ZVRhc2tDYW5jZWxsZXI7CisgICAgVGFza0NhbmNlbGxlciBtX21lZGlhRW5naW5lVXBk
YXRlZFRhc2tDYW5jZWxsZXI7CisgICAgVGFza0NhbmNlbGxlciBtX3VwZGF0ZVBsYXlTdGF0ZVRh
c2tDYW5jZWxsZXI7CisgICAgVGFza0NhbmNlbGxlciBtX3Jlc3VtZVRhc2tDYW5jZWxsZXI7Cisg
ICAgVGFza0NhbmNlbGxlciBtX3NlZWtUYXNrQ2FuY2VsbGVyOworICAgIFRhc2tDYW5jZWxsZXIg
bV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGFza0NhbmNlbGxl
cjsKKyAgICBUYXNrQ2FuY2VsbGVyIG1fYnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdlZFRhc2tDYW5j
ZWxsZXI7CisgICAgVGFza0NhbmNlbGxlciBtX3Jlc291cmNlU2VsZWN0aW9uVGFza0NhbmNlbGxl
cjsKICAgICBSZWZQdHI8VGltZVJhbmdlcz4gbV9wbGF5ZWRUaW1lUmFuZ2VzOwogICAgIFVuaXF1
ZVJlZjxFdmVudExvb3BFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fdm9sdW1lUmV2ZXJ0
VGFzazsKKyAgICBUYXNrQ2FuY2VsbGVyIG1fdm9sdW1lUmV2ZXJ0VGFza0NhbmNlbGxlcjsKICNl
bmRpZgogCiAgICAgUGxheVByb21pc2VWZWN0b3IgbV9wZW5kaW5nUGxheVByb21pc2VzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNr
Q29udGFpbmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcAppbmRleCBlM2QxNGNhNzliZjRkNDJm
NGM0NzZjOTNkM2RlNTA5OTJmYzdhOGQwLi42YTlkZDc5NGJiNDEwZDQ1MzA4ZmM0OTdjMjUwNDFh
ZTU3YzgwM2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcApAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkVsZW1l
bnRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCisjaW5jbHVkZSAi
RXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiRnVsbHNjcmVlbk1hbmFnZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0dlbmVyaWNUYXNrUXVldWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDJmMDI2
MzMyNWEzZmJjMTUwZWY4ZTJkMGZhZjBmNzA0NTRiNjg0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HZW5lcmlj
VGFza1F1ZXVlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCi0jaW5jbHVkZSAiRXZlbnRM
b29wLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBUYXNrUXVldWVCYXNl
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tRdWV1ZUJhc2U+IHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBib29sIGhhc1BlbmRpbmdUYXNrcygpIGNvbnN0
IHsgcmV0dXJuIG1fcGVuZGluZ1Rhc2tzOyB9Ci0gICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNDbG9zZWQ7IH0KLQotICAgIHZvaWQgY2xvc2UoKQotICAgIHsKLSAgICAgICAg
Y2FuY2VsQWxsVGFza3MoKTsKLSAgICAgICAgbV9pc0Nsb3NlZCA9IHRydWU7Ci0gICAgfQotCi0g
ICAgdm9pZCBjYW5jZWxBbGxUYXNrcygpCi0gICAgewotICAgICAgICB3ZWFrUHRyRmFjdG9yeSgp
LnJldm9rZUFsbCgpOwotICAgICAgICBtX3BlbmRpbmdUYXNrcyA9IDA7Ci0gICAgfQotCi1wcm90
ZWN0ZWQ6Ci0gICAgflRhc2tRdWV1ZUJhc2UoKSA9IGRlZmF1bHQ7Ci0gICAgdm9pZCBpbmNyZW1l
bnRQZW5kaW5nVGFza3MoKSB7ICsrbV9wZW5kaW5nVGFza3M7IH0KLSAgICB2b2lkIGRlY3JlbWVu
dFBlbmRpbmdUYXNrcygpIHsgQVNTRVJUKG1fcGVuZGluZ1Rhc2tzKTsgLS1tX3BlbmRpbmdUYXNr
czsgfQotCi1wcml2YXRlOgotICAgIHVuc2lnbmVkIG1fcGVuZGluZ1Rhc2tzIHsgMCB9OwotICAg
IGJvb2wgbV9pc0Nsb3NlZCB7IGZhbHNlIH07Ci19OwotCi0vLyBSZWxpZXMgb24gYSBzaGFyZWQg
VGltZXIsIG9ubHkgc2FmZSB0byB1c2Ugb24gdGhlIE1haW5UaHJlYWQuIFBsZWFzZSB1c2UgRXZl
bnRMb29wVGFza1F1ZXVlCi0vLyAob3IgZGlzcGF0Y2ggZGlyZWN0bHkgdG8gdGhlIEhUTUwgZXZl
bnQgbG9vcCkgd2hlbmV2ZXIgcG9zc2libGUuCi1jbGFzcyBNYWluVGhyZWFkVGFza1F1ZXVlIDog
cHVibGljIFRhc2tRdWV1ZUJhc2UgewotcHVibGljOgotICAgIE1haW5UaHJlYWRUYXNrUXVldWUo
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICB9Ci0KLSAgICB2
b2lkIGVucXVldWVUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQotICAgIHsKLSAgICAgICAg
aWYgKGlzQ2xvc2VkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaW5jcmVtZW50
UGVuZGluZ1Rhc2tzKCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0gewotICAgICAgICAgICAgaWYg
KCF3ZWFrVGhpcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB3ZWFrVGhp
cy0+ZGVjcmVtZW50UGVuZGluZ1Rhc2tzKCk7Ci0gICAgICAgICAgICB0YXNrKCk7Ci0gICAgICAg
IH0pOwotICAgIH0KLX07Ci0KLS8vIFNpbWlsYXIgdG8gTWFpblRocmVhZFRhc2tRdWV1ZSBidXQg
YmFzZWQgb24gdGhlIEhUTUwgZXZlbnQgbG9vcC4KLWNsYXNzIEV2ZW50TG9vcFRhc2tRdWV1ZSA6
IHB1YmxpYyBUYXNrUXVldWVCYXNlLCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
IHsKLXB1YmxpYzoKLSAgICBFdmVudExvb3BUYXNrUXVldWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKLSAgICAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250ZXh0
KQotICAgIHsgfQotCi0gICAgLy8gRklYTUU6IFBhc3MgYSBUYXNrU291cmNlIGluc3RlYWQgb2Yg
YXNzdW1pbmcgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LgotICAgIHZvaWQgZW5xdWV1ZVRhc2so
RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCi0gICAgewotICAgICAgICBpZiAoaXNDbG9zZWQoKSB8
fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGluY3JlbWVudFBlbmRpbmdUYXNrcygpOwotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGFzayA9IFdURk1vdmUodGFzayldIHsKLSAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgd2Vha1RoaXMtPmRlY3JlbWVudFBlbmRpbmdUYXNrcygpOwotICAgICAgICAgICAgdGFz
aygpOwotICAgICAgICB9KTsKLSAgICB9Ci19OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpp
bmRleCA1ZmY0NDVjYjllZTk5NmEyNTU5ZWJhYzdiOGZmMjhkODczMGM0M2E0Li45ZjY3OWVjOTk2
MDQ0M2ViYjE3MTk1Yzc2NGY2ODk2YmZiOTU1YTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
QEAgLTE3Myw3ICsxNzMsNiBAQCBlbnVtIE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRp
b25Db250ZXh0IHsKIEBpbnRlcmZhY2UgV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgOiBOU09iamVj
dCA8QVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFB1c2hEZWxlZ2F0ZSwgQVZQbGF5ZXJJdGVtTWV0
YWRhdGFPdXRwdXRQdXNoRGVsZWdhdGUsIEFWUGxheWVySXRlbU1ldGFkYXRhQ29sbGVjdG9yUHVz
aERlbGVnYXRlPgogewogICAgIFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQz4gbV9wbGF5ZXI7Ci0gICAgTWFpblRocmVhZFRhc2tRdWV1ZSBtX3Rhc2tRdWV1ZTsKICAg
ICBpbnQgbV9kZWxheUNhbGxiYWNrczsKIH0KIC0oaWQpaW5pdFdpdGhQbGF5ZXI6KFdlYWtQdHI8
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4mJiljYWxsYmFjazsKQEAgLTE4OSw3
ICsxODgsNiBAQCBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlIDog
TlNPYmplY3Q8QVZBc3NldFJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsKICAgICBXZWFrUHRyPE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+IG1fcGxheWVyOwotICAgIE1haW5UaHJl
YWRUYXNrUXVldWUgbV90YXNrUXVldWU7CiB9CiAtIChpZClpbml0V2l0aFBsYXllcjooV2Vha1B0
cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiYmKXBsYXllcjsKIC0gKEJPT0wp
cmVzb3VyY2VMb2FkZXI6KEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqKXJlc291cmNlTG9hZGVyIHNo
b3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZTooQVZBc3NldFJlc291cmNlTG9h
ZGluZ1JlcXVlc3QgKilsb2FkaW5nUmVxdWVzdDsKQEAgLTM1ODAsNyArMzU3OCw3IEBAIC0gKHZv
aWQpZGlzY29ubmVjdAogLSAodm9pZCltZXRhZGF0YUxvYWRlZAogewogICAgIGVuc3VyZU9uTWFp
blRocmVhZChbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0gewotICAgICAgICBt
X3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0gbV9wbGF5ZXJdIHsKKyAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbcGxheWVyID0gbV9wbGF5ZXJdIHsKICAgICAgICAgICAgIGlmIChwbGF5
ZXIpCiAgICAgICAgICAgICAgICAgcGxheWVyLT5tZXRhZGF0YUxvYWRlZCgpOwogICAgICAgICB9
KTsKQEAgLTM1OTEsNyArMzU4OSw3IEBAIC0gKHZvaWQpZGlkRW5kOihOU05vdGlmaWNhdGlvbiAq
KXVudXNlZE5vdGlmaWNhdGlvbgogewogICAgIFVOVVNFRF9QQVJBTSh1bnVzZWROb3RpZmljYXRp
b24pOwogICAgIGVuc3VyZU9uTWFpblRocmVhZChbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0
cihzZWxmKV0gewotICAgICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0gbV9w
bGF5ZXJdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcGxheWVyID0gbV9wbGF5ZXJdIHsK
ICAgICAgICAgICAgIGlmIChwbGF5ZXIpCiAgICAgICAgICAgICAgICAgcGxheWVyLT5kaWRFbmQo
KTsKICAgICAgICAgfSk7CkBAIC0zNjAxLDcgKzM1OTksNyBAQCAtICh2b2lkKWRpZEVuZDooTlNO
b3RpZmljYXRpb24gKil1bnVzZWROb3RpZmljYXRpb24KIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9y
S2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkg
KiljaGFuZ2UgY29udGV4dDooTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRl
eHQpY29udGV4dAogewogICAgIGVuc3VyZU9uTWFpblRocmVhZChbc2VsZiwgc3Ryb25nU2VsZiA9
IHJldGFpblB0cihzZWxmKSwga2V5UGF0aCA9IHJldGFpblB0cihrZXlQYXRoKSwgY2hhbmdlID0g
cmV0YWluUHRyKGNoYW5nZSksIG9iamVjdCA9IHJldGFpblB0cihvYmplY3QpLCBjb250ZXh0XSgp
IG11dGFibGUgewotICAgICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0gbV9w
bGF5ZXIsIGtleVBhdGggPSBXVEZNb3ZlKGtleVBhdGgpLCBjaGFuZ2UgPSBXVEZNb3ZlKGNoYW5n
ZSksIG9iamVjdCA9IFdURk1vdmUob2JqZWN0KSwgY29udGV4dF0geworICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtwbGF5ZXIgPSBtX3BsYXllciwga2V5UGF0aCA9IFdURk1vdmUoa2V5UGF0aCks
IGNoYW5nZSA9IFdURk1vdmUoY2hhbmdlKSwgb2JqZWN0ID0gV1RGTW92ZShvYmplY3QpLCBjb250
ZXh0XSB7CiAgICAgICAgICAgICBpZiAoIXBsYXllcikKICAgICAgICAgICAgICAgICByZXR1cm47
CiAKQEAgLTM3MDAsNyArMzY5OCw3IEBAIC0gKHZvaWQpbGVnaWJsZU91dHB1dDooaWQpb3V0cHV0
IGRpZE91dHB1dEF0dHJpYnV0ZWRTdHJpbmdzOihOU0FycmF5ICopc3RyaW5ncyBuCiAgICAgVU5V
U0VEX1BBUkFNKG91dHB1dCk7CiAKICAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3NlbGYsIHN0cm9u
Z1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIHN0cmluZ3MgPSByZXRhaW5QdHIoc3RyaW5ncyksIG5h
dGl2ZVNhbXBsZXMgPSByZXRhaW5QdHIobmF0aXZlU2FtcGxlcyksIGl0ZW1UaW1lXSgpIG11dGFi
bGUgewotICAgICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0gbV9wbGF5ZXIs
IHN0cmluZ3MgPSBXVEZNb3ZlKHN0cmluZ3MpLCBuYXRpdmVTYW1wbGVzID0gV1RGTW92ZShuYXRp
dmVTYW1wbGVzKSwgaXRlbVRpbWVdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcGxheWVy
ID0gbV9wbGF5ZXIsIHN0cmluZ3MgPSBXVEZNb3ZlKHN0cmluZ3MpLCBuYXRpdmVTYW1wbGVzID0g
V1RGTW92ZShuYXRpdmVTYW1wbGVzKSwgaXRlbVRpbWVdIHsKICAgICAgICAgICAgIGlmICghcGxh
eWVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzcxNyw3ICszNzE1LDcgQEAgLSAo
dm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KGlkKW91dHB1dAogICAgIFVOVVNFRF9QQVJB
TShvdXRwdXQpOwogCiAgICAgZW5zdXJlT25NYWluVGhyZWFkKFtzZWxmLCBzdHJvbmdTZWxmID0g
cmV0YWluUHRyKHNlbGYpXSB7Ci0gICAgICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtwbGF5
ZXIgPSBtX3BsYXllcl0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwbGF5ZXIgPSBtX3Bs
YXllcl0gewogICAgICAgICAgICAgaWYgKHBsYXllcikKICAgICAgICAgICAgICAgICBwbGF5ZXIt
PmZsdXNoQ3VlcygpOwogICAgICAgICB9KTsKQEAgLTM3MzMsNyArMzczMSw3IEBAIC0gKHZvaWQp
bWV0YWRhdGFPdXRwdXQ6KEFWUGxheWVySXRlbU1ldGFkYXRhT3V0cHV0ICopb3V0cHV0IGRpZE91
dHB1dFRpbWVkTWV0YWRhCiAgICAgaWYgKCFtX3BsYXllciB8fCAhbWV0YWRhdGFHcm91cHMpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtwbGF5ZXIgPSBt
X3BsYXllciwgbWV0YWRhdGFHcm91cHMgPSByZXRhaW5QdHIobWV0YWRhdGFHcm91cHMpLCBjdXJy
ZW50VGltZSA9IG1fcGxheWVyLT5jdXJyZW50TWVkaWFUaW1lKCldIHsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFtwbGF5ZXIgPSBtX3BsYXllciwgbWV0YWRhdGFHcm91cHMgPSByZXRhaW5QdHIobWV0
YWRhdGFHcm91cHMpLCBjdXJyZW50VGltZSA9IG1fcGxheWVyLT5jdXJyZW50TWVkaWFUaW1lKCld
IHsKICAgICAgICAgaWYgKCFwbGF5ZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTM3NTQs
NyArMzc1Miw3IEBAIC0gKHZvaWQpbWV0YWRhdGFDb2xsZWN0b3I6KEFWUGxheWVySXRlbU1ldGFk
YXRhQ29sbGVjdG9yICopbWV0YWRhdGFDb2xsZWN0b3IgZGlkCiAgICAgaWYgKCFtX3BsYXllciB8
fCAhbWV0YWRhdGFHcm91cHMpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdGFza1F1ZXVlLmVu
cXVldWVUYXNrKFtwbGF5ZXIgPSBtX3BsYXllciwgbWV0YWRhdGFHcm91cHMgPSByZXRhaW5QdHIo
bWV0YWRhdGFHcm91cHMpLCBjdXJyZW50VGltZSA9IG1fcGxheWVyLT5jdXJyZW50TWVkaWFUaW1l
KCldIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwbGF5ZXIgPSBtX3BsYXllciwgbWV0YWRhdGFH
cm91cHMgPSByZXRhaW5QdHIobWV0YWRhdGFHcm91cHMpLCBjdXJyZW50VGltZSA9IG1fcGxheWVy
LT5jdXJyZW50TWVkaWFUaW1lKCldIHsKICAgICAgICAgaWYgKCFwbGF5ZXIpCiAgICAgICAgICAg
ICByZXR1cm47CiAKQEAgLTM3ODEsNyArMzc3OSw3IEBAIC0gKEJPT0wpcmVzb3VyY2VMb2FkZXI6
KEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqKXJlc291cmNlTG9hZGVyIHNob3VsZFdhaXRGb3JMb2Fk
CiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIGVuc3VyZU9uTWFpblRocmVhZChbc2VsZiwgc3Ry
b25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgbG9hZGluZ1JlcXVlc3QgPSByZXRhaW5QdHIobG9h
ZGluZ1JlcXVlc3QpXSgpIG11dGFibGUgewotICAgICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFz
ayhbcGxheWVyID0gbV9wbGF5ZXIsIGxvYWRpbmdSZXF1ZXN0ID0gV1RGTW92ZShsb2FkaW5nUmVx
dWVzdCldIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcGxheWVyID0gbV9wbGF5ZXIsIGxv
YWRpbmdSZXF1ZXN0ID0gV1RGTW92ZShsb2FkaW5nUmVxdWVzdCldIHsKICAgICAgICAgICAgIGlm
ICghcGxheWVyKSB7CiAgICAgICAgICAgICAgICAgW2xvYWRpbmdSZXF1ZXN0IGZpbmlzaExvYWRp
bmdXaXRoRXJyb3I6bmlsXTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zODA3LDcgKzM4
MDUsNyBAQCAtICh2b2lkKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKily
ZXNvdXJjZUxvYWRlciBkaWRDYW5jZWxMb2FkaW5nUgogewogICAgIFVOVVNFRF9QQVJBTShyZXNv
dXJjZUxvYWRlcik7CiAgICAgZW5zdXJlT25NYWluVGhyZWFkKFtzZWxmLCBzdHJvbmdTZWxmID0g
cmV0YWluUHRyKHNlbGYpLCBsb2FkaW5nUmVxdWVzdCA9IHJldGFpblB0cihsb2FkaW5nUmVxdWVz
dCldKCkgbXV0YWJsZSB7Ci0gICAgICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtwbGF5ZXIg
PSBtX3BsYXllciwgbG9hZGluZ1JlcXVlc3QgPSBXVEZNb3ZlKGxvYWRpbmdSZXF1ZXN0KV0gewor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwbGF5ZXIgPSBtX3BsYXllciwgbG9hZGluZ1JlcXVl
c3QgPSBXVEZNb3ZlKGxvYWRpbmdSZXF1ZXN0KV0gewogCiAgICAgICAgICAgICBTY3JpcHREaXNh
bGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmlu
ZGV4IGI3NTc3ZjI5NThkNTcwM2NiZWRkMmQyZWQ3YzAwYzUyZGJjYWE3MDAuLmNlYzRjZTdlNWQ5
YTJiMGI4ZmU5YTk1NzgxZmI1ZmIwZDM4M2M2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtMjcsMTEgKzI3LDExIEBA
CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCi0jaW5j
bHVkZSAiR2VuZXJpY1Rhc2tRdWV1ZS5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlci5o
IgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGUuaCIKICNpbmNsdWRlIDxkaXNwYXRjaC9n
cm91cC5oPgogI2luY2x1ZGUgPHd0Zi9Cb3guaD4KKyNpbmNsdWRlIDx3dGYvQ2FuY2VsbGFibGVU
YXNrLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CkBAIC0xOTMsNyArMTkzLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkIHsgZmFsc2UgfTsK
ICAgICBib29sIG1faGFzUGVuZGluZ0FwcGVuZENvbXBsZXRlZENhbGxiYWNrIHsgZmFsc2UgfTsK
ICAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBSZWY8TWVkaWFTYW1wbGU+Pj4gbV9tZWRp
YVNhbXBsZXM7Ci0gICAgTWFpblRocmVhZFRhc2tRdWV1ZSBtX21lZGlhU2FtcGxlVGFza1F1ZXVl
OworICAgIFRhc2tDYW5jZWxsZXIgbV9tZWRpYVNhbXBsZVRhc2tDYW5jZWxsZXI7CiAKICAgICBS
ZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IG1fZGlzcGxheUxheWVyOwogICAg
IEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggYzFmODUxNGJh
NTA5NmViYjgzNWIwMTY2NTAyZWUzN2NjMmQ4ZDM1My4uYzgwZTA5ZmQyOGUyNTVjYjk1NTM2YjQw
MTU1OTVlNWNhMThmMWQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTM1OSw3ICszNTksNyBAQCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKCkKICAgICBpZiAo
bV9oYXNTZXNzaW9uU2VtYXBob3JlKQogICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNp
Z25hbCgpOwogCi0gICAgbV9tZWRpYVNhbXBsZVRhc2tRdWV1ZS5jbG9zZSgpOworICAgIG1fbWVk
aWFTYW1wbGVUYXNrQ2FuY2VsbGVyLmNhbmNlbCgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNl
Z21lbnQmJiBzZWdtZW50KQpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2Vn
bWVuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBtX21lZGlhU2Ft
cGxlVGFza1F1ZXVlLmVucXVldWVUYXNrKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1Ro
aXMpXSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoQ2FuY2VsbGFibGVUYXNrKG1fbWVkaWFT
YW1wbGVUYXNrQ2FuY2VsbGVyLCBbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0g
ewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAK
QEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQ
YXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbgogICAgICAgICAgICAg
ICAgIG1faGFzUGVuZGluZ0FwcGVuZENvbXBsZXRlZENhbGxiYWNrID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgYXBwZW5kQ29tcGxldGVkKCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0pOwor
ICAgICAgICB9KSk7CiAgICAgfSk7CiB9CiAKQEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphYm9ydCgpCiAgICAgbV9wYXJzZXItPnJlc2V0UGFyc2Vy
U3RhdGUoKTsKICAgICBtX21lZGlhU2FtcGxlcy5jbGVhcigpOwogICAgIG1faW5pdGlhbGl6YXRp
b25TZWdtZW50SXNIYW5kbGVkID0gZmFsc2U7Ci0gICAgbV9tZWRpYVNhbXBsZVRhc2tRdWV1ZS5j
YW5jZWxBbGxUYXNrcygpOworICAgIG1fbWVkaWFTYW1wbGVUYXNrQ2FuY2VsbGVyLmNhbmNlbCgp
OwogCiAgICAgZGlzcGF0Y2hfZ3JvdXBfd2FpdChtX2lzQXBwZW5kaW5nR3JvdXAuZ2V0KCksIERJ
U1BBVENIX1RJTUVfRk9SRVZFUik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9u
Q2FwdHVyZURldmljZU1hbmFnZXIuaAppbmRleCBhZjQ5N2QyZTE4ZTZkNTU3ZTQ5NDNiMTk0YWZm
NDhkYTdiNDY2N2U4Li4wZGFjZTNiNzdiMzhlMTFhYTViN2I3NzE4OTNmYWVmMGU5YmNkYzlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRp
b1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgK
QEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKLSNpbmNsdWRl
ICJHZW5lcmljVGFza1F1ZXVlLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430771</attachid>
            <date>2021-06-07 12:15:12 -0700</date>
            <delta_ts>2021-06-07 12:16:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226734-20210607121511.patch</filename>
            <type>text/plain</type>
            <size>54069</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZhNDVlZjMwMWIzY2Y3NzBlNjljYWI1
OTA5MGQ0YmE5ZDM5YWJiNWUuLmU3OWVhZmI2NDUxNmEyODMyMGM4NjM2MGM5ZjE3NzQ1Y2E0NDY0
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjEtMDYtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIGxlZ2FjeSBNYWluVGhyZWFkVGFza1F1ZXVlICYg
RXZlbnRMb29wVGFza1F1ZXVlIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjczNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdlIHJlY2VudGx5IGludHJvZHVjZWQgdGhlIFdURjo6Q2FuY2Vs
bGFibGVUYXNrIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gY2FuY2VsCisgICAgICAgIGEgcGVuZGlu
ZyB0YXNrIGluIHRoZSBldmVudCBsb29wLCBhbmQvb3IgY2hlY2sgaWYgdGhlIHRhc2sgaXMgc3Rp
bGwgcGVuZGluZy4KKyAgICAgICAgSXQgd29ya2VkIGdyZWF0IGFzIGEgcmVwbGFjZW1lbnQgZm9y
IEV2ZW50TG9vcERlZmVycmFibGVUYXNrLiBIb3dldmVyLCBpdCB3YXMKKyAgICAgICAgaW5zdWZm
aWNpZW50IGFzIGEgcmVwbGFjZW1lbnQgZm9yIHRhc2sgcXVldWVzIChzdWNoIGFzIE1haW5UaHJl
YWRUYXNrUXVldWUgJgorICAgICAgICBFdmVudExvb3BUYXNrUXVldWUpIHNpbmNlIHRoZXJlIHdh
cyBubyBjb252ZW5pZW50IHdheSB0byBjYW5jZWwgYSBncm91cCBvZgorICAgICAgICB0YXNrcy4g
VG8gYWRkcmVzcyB0aGlzLCBJIGFtIGludHJvZHVjaW5nIFdURjo6VGFza0NhbmNlbGxlci4gV2hl
bmV2ZXIgb25lCisgICAgICAgIG5lZWRzIHRvIGNyZWF0ZSBhIENhbmNlbGxhYmxlVGFzaywgaXQg
bm93IG5lZWRzIHRvIHByb3ZpZGUgYSBUYXNrQ2FuY2VsbGVyLgorICAgICAgICBTZXZlcmFsIENh
bmNlbGxhYmxlVGFzayBvYmplY3RzIGNhbiBzaGFyZSB0aGUgc2FtZSBUYXNrQ2FuY2VsbGVyLiBD
b2RlIG5vdworICAgICAgICBub3cgc2NoZWR1bGUgb25lIG9yIG1vcmUgQ2FuY2VsbGFibGVUYXNr
cyBvbiB0aGUgZXZlbnQgbG9vcCBhbmQgaG9sZCBvbgorICAgICAgICB0byBhIFRhc2tDYW5jZWxs
ZXIuIElmIHRoZXkgbmVlZCB0byBjYW5jZWwgdGhvc2UgdGFza3MsIHRoZXkgY2FuIHNpbXBseQor
ICAgICAgICBjYWxsIGNhbmNlbCgpIG9uIHRoZSBUYXNrQ2FuY2VsbGVyLiBUaGV5IGNhbiBhbHNv
IGNoZWNrIGlmIHByZXZpb3VzbHkKKyAgICAgICAgc2NoZWR1bGVkIHRhc2tzIGFyZSBzdGlsbCBw
ZW5kaW5nIHZpYSBUYXNrQ2FuY2VsbGVyOjpoYXNQZW5kaW5nVGFzaygpLgorCisgICAgICAgICog
d3RmL0NhbmNlbGxhYmxlVGFzay5oOgorICAgICAgICAoV1RGOjpUYXNrQ2FuY2VsbGVyOjpUYXNr
Q2FuY2VsbGVyKToKKyAgICAgICAgKFdURjo6VGFza0NhbmNlbGxlcjo6Y2FuY2VsKToKKyAgICAg
ICAgKFdURjo6VGFza0NhbmNlbGxlcjo6aGFzUGVuZGluZ1Rhc2sgY29uc3QpOgorICAgICAgICAo
V1RGOjpUYXNrQ2FuY2VsbGVyOjpJbXBsOjpjYW5jZWwpOgorICAgICAgICAoV1RGOjpUYXNrQ2Fu
Y2VsbGVyOjpJbXBsOjpoYXNQZW5kaW5nVGFzayBjb25zdCk6CisgICAgICAgIChXVEY6OlRhc2tD
YW5jZWxsZXI6OkhhbmRsZTo6aXNDYW5jZWxsZWQgY29uc3QpOgorICAgICAgICAoV1RGOjpUYXNr
Q2FuY2VsbGVyOjpIYW5kbGU6OkhhbmRsZSk6CisgICAgICAgIChXVEY6OlRhc2tDYW5jZWxsZXI6
OmNyZWF0ZUhhbmRsZSk6CisgICAgICAgIChXVEY6OkNhbmNlbGxhYmxlVGFzazo6Q2FuY2VsbGFi
bGVUYXNrKToKKyAgICAgICAgKFdURjo6Q2FuY2VsbGFibGVUYXNrOjpvcGVyYXRvcigpKToKKyAg
ICAgICAgKiB3dGYvV2Vha1B0ci5oOgorICAgICAgICAoV1RGOjpXZWFrUHRyRmFjdG9yeTo6d2Vh
a1B0ckNvdW50IGNvbnN0KToKKwogMjAyMS0wNi0wNyAgQWxpY2lhIEJveWEgR2FyY8OtYSAgPGFi
b3lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dURl1bR1N0cmVhbWVyXSBGaXggY2xhbmcgVFNB
IHdhcm5pbmdzIGluIFdURjo6RGF0YU11dGV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWY5OTQ3NTA4ZjQ3MmE4
NjJmOTRkMWM5Y2QxZmZlZDgwMjRiYjZkNi4uZDc0Y2ZiYWRmY2RjYWZmMDljMTFjZjIyN2RmYzQy
YjY0NDlmOGVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIxLTA2LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBsZWdhY3kgTWFpblRo
cmVhZFRhc2tRdWV1ZSAmIEV2ZW50TG9vcFRhc2tRdWV1ZSBjbGFzc2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3MzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEcm9wIGxlZ2FjeSBNYWluVGhyZWFk
VGFza1F1ZXVlICYgRXZlbnRMb29wVGFza1F1ZXVlIGNsYXNzZXMuIENvZGUgdGhhdCB3YXMgdXNp
bmcgTWFpblRocmVhZFRhc2tRdWV1ZQorICAgICAgICBpcyBub3cgY2FsbGluZyBjYWxsT25NYWlu
VGhyZWFkKCkgZGlyZWN0bHkuIENhbGwgdGhhdCB3YXMgdXNpbmcgRXZlbnRMb29wVGFza1F1ZXVl
IGlzIG5vdyB1c2luZyB0aGUKKyAgICAgICAgSFRNTCBldmVudCBsb29wIGRpcmVjdGx5LiBJZiBz
YWlkIGNvZGUgbmVlZGVkIHRvIGNhbmNlbCB0YXNrcyBvciBjaGVjayBpZiBhIHByZXZpb3VzbHkg
c2NoZWR1bGVkIHRhc2sKKyAgICAgICAgaXMgc3RpbGwgcGVuZGluZywgaXQgbm93IHJlbGllcyBv
biBXVEY6OkNhbmNlbGxhYmxlVGFzayAvIFdURjo6VGFza0NhbmNlbGxlciB0byBkbyBzby4KKwor
ICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5jcHA6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZXNDb250cm9s
bGVyOjpjYWNoZUN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxp
bmVzQ29udHJvbGxlcjo6bWF5YmVDbGVhckNhY2hlZEN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBh
bmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmg6CisgICAgICAgICogZG9tL0Fj
dGl2ZURPTU9iamVjdC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6On5IVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OnNjaGVkdWxlTmV4dFNvdXJjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnNjaGVkdWxlQ2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGFiaWxpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlQ29uZmlndXJlVGV4dFRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZU1lZGlhRW5naW5lV2Fz
VXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVVw
ZGF0ZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5j
ZWxQZW5kaW5nVGFza3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xl
YXJNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbG9z
ZVRhc2tRdWV1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c3VzcGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptYXJrQ2FwdGlvbkFu
ZFN1YnRpdGxlVHJhY2tzQXNVbmNvbmZpZ3VyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJCdWZmZXJlZFRpbWVSYW5nZXNDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlVXBkYXRlTWVkaWFTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja0NvbnRyb2xzTWFu
YWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgICgtW1dlYkNvcmVB
VkZNb3ZpZU9ic2VydmVyIG1ldGFkYXRhTG9hZGVkXSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZN
b3ZpZU9ic2VydmVyIGRpZEVuZDpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2
ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAg
ICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgbGVnaWJsZU91dHB1dDpkaWRPdXRwdXRB
dHRyaWJ1dGVkU3RyaW5nczpuYXRpdmVTYW1wbGVCdWZmZXJzOmZvckl0ZW1UaW1lOl0pOgorICAg
ICAgICAoLVtXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6
XSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIG1ldGFkYXRhT3V0cHV0OmRp
ZE91dHB1dFRpbWVkTWV0YWRhdGFHcm91cHM6ZnJvbVBsYXllckl0ZW1UcmFjazpdKToKKyAgICAg
ICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgbWV0YWRhdGFDb2xsZWN0b3I6ZGlkQ29sbGVj
dERhdGVSYW5nZU1ldGFkYXRhR3JvdXBzOmluZGV4ZXNPZk5ld0dyb3VwczppbmRleGVzT2ZNb2Rp
ZmllZEdyb3VwczpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlIHJlc291
cmNlTG9hZGVyOnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZTpdKToKKyAg
ICAgICAgKC1bV2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlIHJlc291cmNlTG9hZGVyOmRpZENhbmNl
bExvYWRpbmdSZXF1ZXN0Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6flNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YWJvcnQpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6
CisKIDIwMjEtMDYtMDcgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZhY3RvciBzZWxlY3Rpb24gc3RhdGUgY29tcHV0YXRpb24gb3V0IG9mIExlZ2FjeUlubGlu
ZVRleHRCb3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NhbmNlbGxhYmxlVGFzay5oIGIv
U291cmNlL1dURi93dGYvQ2FuY2VsbGFibGVUYXNrLmgKaW5kZXggMDY3NWMyYjJjNGMwYzA3MWUz
ZjgyNGY2MDNlOGM4M2U1YTFmNGMxMC4uNDJiOTZiNTU0NWRkNzg5ODdhMTc4MWI4ZjNlZTI3YmEz
YjNjZDA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ2FuY2VsbGFibGVUYXNrLmgKKysr
IGIvU291cmNlL1dURi93dGYvQ2FuY2VsbGFibGVUYXNrLmgKQEAgLTMxLDU5ICszMSw2NCBAQAog
CiBuYW1lc3BhY2UgV1RGIHsKIAotbmFtZXNwYWNlIERldGFpbCB7Ci1zdHJ1Y3QgQ2FuY2VsbGFi
bGVUYXNrSW1wbCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDYW5jZWxsYWJsZVRhc2tJbXBsPiB7
Ci0gICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgIGV4cGxpY2l0IENhbmNl
bGxhYmxlVGFza0ltcGwoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spIDogdGFzayhXVEZNb3ZlKHRh
c2spKSB7IH0KLSAgICBGdW5jdGlvbjx2b2lkKCk+IHRhc2s7Ci19OwotfQorY2xhc3MgQ2FuY2Vs
bGFibGVUYXNrOwogCi1jbGFzcyBDYW5jZWxsYWJsZVRhc2sgeworY2xhc3MgVGFza0NhbmNlbGxl
ciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNrQ2FuY2VsbGVyPiB7CiBwdWJsaWM6Ci0gICAg
ZXhwbGljaXQgQ2FuY2VsbGFibGVUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgVGFza0Nh
bmNlbGxlcigpIDogbV9pbXBsKG1ha2VVbmlxdWVSZWY8SW1wbD4oKSkgeyB9CisgICAgdm9pZCBj
YW5jZWwoKSB7IG1faW1wbC0+Y2FuY2VsKCk7IH0KKyAgICBib29sIGhhc1BlbmRpbmdUYXNrKCkg
Y29uc3QgeyByZXR1cm4gbV9pbXBsLT5oYXNQZW5kaW5nVGFzaygpOyB9CiAKLSAgICB2b2lkIG9w
ZXJhdG9yKCkoKTsKLSAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuICEhbV90YXNr
V3JhcHBlci0+dGFzazsgfQotICAgIHZvaWQgY2FuY2VsKCkgeyBtX3Rhc2tXcmFwcGVyLT50YXNr
ID0gbnVsbHB0cjsgfQorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQ2FuY2VsbGFibGVUYXNr
OworICAgIGNsYXNzIEltcGwgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1wbD4geworICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIHZvaWQgY2Fu
Y2VsKCkgeyB3ZWFrUHRyRmFjdG9yeSgpLnJldm9rZUFsbCgpOyB9CisgICAgICAgIGJvb2wgaGFz
UGVuZGluZ1Rhc2soKSBjb25zdCB7IHJldHVybiB3ZWFrUHRyRmFjdG9yeSgpLndlYWtQdHJDb3Vu
dCgpOyB9CisgICAgfTsKIAogICAgIGNsYXNzIEhhbmRsZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBIYW5kbGUoKSA9IGRlZmF1bHQ7Ci0gICAgICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV90YXNrV3JhcHBlciAmJiBtX3Rhc2tXcmFwcGVyLT50YXNrOyB9Ci0gICAgICAgIHZv
aWQgY2FuY2VsKCk7CisgICAgICAgIGJvb2wgaXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiAh
bV9pbXBsOyB9CisgICAgICAgIHZvaWQgY2xlYXIoKSB7IG1faW1wbCA9IG51bGxwdHI7IH0KICAg
ICBwcml2YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgQ2FuY2VsbGFibGVUYXNrOwotICAgICAg
ICBleHBsaWNpdCBIYW5kbGUoRGV0YWlsOjpDYW5jZWxsYWJsZVRhc2tJbXBsJik7Ci0gICAgICAg
IFdlYWtQdHI8RGV0YWlsOjpDYW5jZWxsYWJsZVRhc2tJbXBsPiBtX3Rhc2tXcmFwcGVyOworICAg
ICAgICBmcmllbmQgY2xhc3MgVGFza0NhbmNlbGxlcjsKKyAgICAgICAgZXhwbGljaXQgSGFuZGxl
KEltcGwmIGltcGwpIDogbV9pbXBsKG1ha2VXZWFrUHRyKGltcGwpKSB7IH0KKyAgICAgICAgV2Vh
a1B0cjxJbXBsPiBtX2ltcGw7CiAgICAgfTsKKyAgICBIYW5kbGUgY3JlYXRlSGFuZGxlKCkgeyBy
ZXR1cm4gSGFuZGxlIHsgbV9pbXBsIH07IH0KKworICAgIFVuaXF1ZVJlZjxJbXBsPiBtX2ltcGw7
Cit9OwogCi0gICAgSGFuZGxlIGNyZWF0ZUhhbmRsZSgpIHsgcmV0dXJuIEhhbmRsZSB7IG1fdGFz
a1dyYXBwZXIuZ2V0KCkgfTsgfQorY2xhc3MgQ2FuY2VsbGFibGVUYXNrIHsKK3B1YmxpYzoKKyAg
ICBDYW5jZWxsYWJsZVRhc2soVGFza0NhbmNlbGxlciYsIEZ1bmN0aW9uPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBvcGVyYXRvcigpKCk7CiAKIHByaXZhdGU6Ci0gICAgVW5pcXVlUmVmPERldGFpbDo6
Q2FuY2VsbGFibGVUYXNrSW1wbD4gbV90YXNrV3JhcHBlcjsKKyAgICBUYXNrQ2FuY2VsbGVyOjpI
YW5kbGUgbV90YXNrQ2FuY2VsbGVyOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV90YXNrOwogfTsK
IAotaW5saW5lIENhbmNlbGxhYmxlVGFzazo6Q2FuY2VsbGFibGVUYXNrKEZ1bmN0aW9uPHZvaWQo
KT4mJiB0YXNrKQotICAgIDogbV90YXNrV3JhcHBlcihtYWtlVW5pcXVlUmVmPERldGFpbDo6Q2Fu
Y2VsbGFibGVUYXNrSW1wbD4oV1RGTW92ZSh0YXNrKSkpCitpbmxpbmUgQ2FuY2VsbGFibGVUYXNr
OjpDYW5jZWxsYWJsZVRhc2soVGFza0NhbmNlbGxlciYgdGFza0NhbmNlbGxlciwgRnVuY3Rpb248
dm9pZCgpPiYmIHRhc2spCisgICAgOiBtX3Rhc2tDYW5jZWxsZXIodGFza0NhbmNlbGxlci5jcmVh
dGVIYW5kbGUoKSkKKyAgICAsIG1fdGFzayhXVEZNb3ZlKHRhc2spKQogeyB9CiAKIGlubGluZSB2
b2lkIENhbmNlbGxhYmxlVGFzazo6b3BlcmF0b3IoKSgpCiB7Ci0gICAgaWYgKGF1dG8gdGFzayA9
IHN0ZDo6ZXhjaGFuZ2UobV90YXNrV3JhcHBlci0+dGFzaywgbnVsbHB0cikpCi0gICAgICAgIHRh
c2soKTsKLX0KLQotaW5saW5lIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlOjpIYW5kbGUoRGV0YWls
OjpDYW5jZWxsYWJsZVRhc2tJbXBsJiB0YXNrKQotICAgIDogbV90YXNrV3JhcHBlcihtYWtlV2Vh
a1B0cih0YXNrKSkKLXsgfQorICAgIGlmIChtX3Rhc2tDYW5jZWxsZXIuaXNDYW5jZWxsZWQoKSkK
KyAgICAgICAgcmV0dXJuOwogCi1pbmxpbmUgdm9pZCBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZTo6
Y2FuY2VsKCkKLXsKLSAgICBpZiAobV90YXNrV3JhcHBlcikKLSAgICAgICAgbV90YXNrV3JhcHBl
ci0+dGFzayA9IG51bGxwdHI7CisgICAgLy8gQ2xlYXIgdGhlIHRhc2sgY2FuY2VsbGVyIGhhbmRs
ZXIgYmVmb3JlIHJ1bm5pbmcgdGhlIHRhc2sgYXMgcGVuZGluZyBzbyB0aGF0CisgICAgLy8gdGhl
IHRhc2sgaXMgbm8gbG9uZ2VyIG1hcmtlZCBhcyBwZW5kaW5nLgorICAgIG1fdGFza0NhbmNlbGxl
ci5jbGVhcigpOworICAgIG1fdGFzaygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNp
bmcgV1RGOjpDYW5jZWxsYWJsZVRhc2s7Cit1c2luZyBXVEY6OlRhc2tDYW5jZWxsZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9XZWFrUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9XZWFrUHRy
LmgKaW5kZXggMmU5ZjU2NmY4NWExMTMzYTM3MTUxZDgwMWIzNGU3OGFmMjIyMGU5MS4uMTJjNGI2
ODk4ODcyOTkzYTFhNTNmNTlmOTZiNmQwYWJmMjY3YjBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvV2Vha1B0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaApAQCAtMTg1LDYg
KzE4NSw4IEBAIHB1YmxpYzoKICAgICAgICAgbV9pbXBsID0gbnVsbHB0cjsKICAgICB9CiAKKyAg
ICB1bnNpZ25lZCB3ZWFrUHRyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwt
PnJlZkNvdW50KCkgLSAxIDogMDsgfQorCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIGlz
SW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2ltcGw7IH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKaW5kZXggYzg0NDMxZGQ2ODM5ZDkwNjBhNWYzNTI0MmE4ODU5YmExYTQ5M2NkOS4uMzkw
Mzg3ZTI0MjI3MGQwNDk1MzVlN2EwYjlhYWM1ZDU2MDFlNTc5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CkBAIC0xMDM0LDcgKzEwMzQsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgcGxhdGZvcm0vRmlsZU1vbml0b3IuaAogICAgIHBsYXRmb3JtL0ZpbGVTdHJlYW1D
bGllbnQuaAogICAgIHBsYXRmb3JtL0Zsb2F0Q29udmVyc2lvbi5oCi0gICAgcGxhdGZvcm0vR2Vu
ZXJpY1Rhc2tRdWV1ZS5oCiAgICAgcGxhdGZvcm0vSG9zdFdpbmRvdy5oCiAgICAgcGxhdGZvcm0v
S2V5ZWRDb2RpbmcuaAogICAgIHBsYXRmb3JtL0tleXByZXNzQ29tbWFuZC5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtQWNj
ZXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
eXN0ZW1BY2Nlc3MuY3BwCmluZGV4IDg3OWQzZTVlOTM1ZGU4OWFjMDc5NzI4ZWM1ZGFlMDJlNWY2
MGRkZmEuLjNlMzQwMmMyM2ZjMDI2MGY4ODJhN2ZkMTc0ZGY5NGNhZjMyN2I0ZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1B
Y2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTeXN0ZW1BY2Nlc3MuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ0RNLmgi
CiAjaW5jbHVkZSAiQ0RNSW5zdGFuY2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1
ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5j
bHVkZSAiSlNNZWRpYUtleXMuaCIKICNpbmNsdWRlICJNZWRpYUtleXMuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNh
cGFiaWxpdGllcy5jcHAKaW5kZXggMmNkYzY5ZjE1ZDVhOGMwN2U1Y2JhYTZmZTZjN2QxZjQ4Yzkw
YjQzOC4uYzMzNjA0ZjY0Yzk3NTNlODk5NDBiYWU4MTMzMjEwNTc2ODA0MGU5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9N
ZWRpYUNhcGFiaWxpdGllcy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvbnRl
bnRUeXBlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIK
ICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTTWVkaWFDYXBh
YmlsaXRpZXNEZWNvZGluZ0luZm8uaCIKICNpbmNsdWRlICJKU01lZGlhQ2FwYWJpbGl0aWVzRW5j
b2RpbmdJbmZvLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMjEyZjE4MmMyZmIxMjU4MWU3YmY5N2FhOWUwNWE2YzQ1M2ExZWMw
Yi4uNDViZTJiZTIzM2Y5ZDExMWU0NmVlNTFjY2VhODZlODY1YTNmMGZhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDM4Niw3
ICs0Mzg2LDYgQEAKIAkJQ0Q1RkY0OUMyMTYyRTRDRjAwNEJEODZGIC8qIElTT1Byb3RlY3Rpb25T
eXN0ZW1TcGVjaWZpY0hlYWRlckJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTJGNzVBOUE4NkVBMDNEQUYyNEI3OTcxIC8qIElTT1Byb3RlY3Rpb25T
eXN0ZW1TcGVjaWZpY0hlYWRlckJveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNENUZGNDlEMjE2MkU0REIwMDRCRDg2RiAvKiBJU09Qcm90ZWN0
aW9uU2NoZW1lSW5mb0JveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0Q4NzFDNjAxRkI1MkI2NTAwRjBCOTY1IC8qIElTT1Byb3RlY3Rpb25TY2hlbWVJ
bmZvQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0Q1RkY0OUUyMTYyRTRFODAwNEJEODZGIC8qIElTT09yaWdpbmFsRm9ybWF0Qm94LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDg3MUM2NzFGQjUy
QjY4MDBGMEI5NjUgLyogSVNPT3JpZ2luYWxGb3JtYXRCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlDRDYyRkI5NjFBRjAxOEU3MDAxMkVEN0Qg
LyogR2VuZXJpY1Rhc2tRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q2MkZCOTQxQUYwMThFNzAwMTJFRDdEIC8qIEdlbmVyaWNUYXNrUXVldWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDY0
MUVCMzE4MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDY0MUVCMTE4MThGNUVEMDBFRTRD
NDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q2NDFFQjQxODE4RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1
ZmZlclByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENENjQxRUIyMTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q3MjBCNEYy
MjY4QjUxMzAwMDQ3RkRFIC8qIElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q3MjBCNDkyMjY4MkM3RjAw
MDQ3RkRFIC8qIElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDk5OSw3ICsxNDk5OCw2IEBACiAJ
CUNENUQyNzc2MUU4MzE4RTAwMEQ4MEEzRCAvKiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZURlY29tcHJlc3Npb25T
ZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENUU1QjVFMUExNUNFNTQw
MDBDNjA5RSAvKiBQYWdlQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQYWdlQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRDVFNUI2MDFBMTVGMTU2MDAwQzYwOUUgLyogUGFnZUNvbmZpZ3VyYXRpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUNvbmZpZ3VyYXRpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRDYyRkI5NDFBRjAxOEU3MDAxMkVEN0QgLyog
R2VuZXJpY1Rhc2tRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5l
cmljVGFza1F1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENjQxRUIxMTgx
OEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVkaWFTb3VyY2VQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNENjQxRUIyMTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUJ1ZmZlclByaXZhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q2NDFFQzcxODFFRDYwMTAwRUU0QzQx
IC8qIE1lZGlhU2FtcGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2FtcGxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODA2OCw3ICsyODA2Niw2IEBACiAJCQkJQkMwNzNCQTkw
QzM5OUIxRjAwMEY1OTc5IC8qIEZsb2F0Q29udmVyc2lvbi5oICovLAogCQkJCTQxOTBGM0ExMjQ5
RDE1MjcwMDUzMUM1NyAvKiBGcmFtZVJhdGVNb25pdG9yLmNwcCAqLywKIAkJCQk0MTkwRjNBMzI0
OUQxNTI4MDA1MzFDNTcgLyogRnJhbWVSYXRlTW9uaXRvci5oICovLAotCQkJCUNENjJGQjk0MUFG
MDE4RTcwMDEyRUQ3RCAvKiBHZW5lcmljVGFza1F1ZXVlLmggKi8sCiAJCQkJQTg3NDhCREYxMkNC
RjJEQzAwMUZCQTQxIC8qIEhhc2hUb29scy5oICovLAogCQkJCUJDM0JDMjlCMEU5MUFCMEYwMDgz
NTU4OCAvKiBIb3N0V2luZG93LmggKi8sCiAJCQkJRjQ4QjdENTIyNUMzNDFFNjAwOUU3NUREIC8q
IEltYWdlRXh0cmFjdGlvblJlc3VsdC5oICovLApAQCAtMzI0NzEsNyArMzI0NjgsNiBAQAogCQkJ
CTQxRkFCRDJEMUY0REZFNEEwMDZBNkM5NyAvKiBET01DYWNoZUVuZ2luZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDEzODBDMjkxRjM0MzZBQzAwMTU1RkRBIC8qIERPTUNhY2hlU3RvcmFnZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNEJEQTNGRkUyMTUxQjZGNTAwRkQ2NjA0IC8qIERPTUNTU0N1c3Rv
bVByb3BlcnR5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTQ0N0Y1QjMyNjZDRjYz
RDAwMTMzRjAwIC8qIFRleHRCb3hTZWxlY3RhYmxlUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZDOUEwRjc1MTY0MDk0Q0YwMDNENkI4RCAvKiBET01DU1NOYW1lc3BhY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTRCNkI1Q0JEMjE2NDBFRkYwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTRCREEzRkZGMjE1MUI2RjUwMEZENjYwNCAvKiBET01DU1NS
ZWdpc3RlckN1c3RvbVByb3BlcnR5LmggaW4gSGVhZGVycyAqLywKQEAgLTMyNzg4LDcgKzMyNzg0
LDYgQEAKIAkJCQlDMEMwNTRDQzExMThDOEU0MDBDRTI2MzYgLyogZ2VuZXJhdGUtYmluZGluZ3Mu
cGwgaW4gSGVhZGVycyAqLywKIAkJCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJh
dGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMDAzMEY2MUI3RDMzQjUwMEVEM0FBQyAv
KiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCUNENjJG
Qjk2MUFGMDE4RTcwMDEyRUQ3RCAvKiBHZW5lcmljVGFza1F1ZXVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5NzQ2QUYyNDE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3NDZBRjI1MTRGNERERTYwMDNFN0E3MSAvKiBHZW9sb2NhdGlvbkNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjcxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0
aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTY3Niw2ICszNTY3MSw3IEBACiAJ
CQkJQ0U3QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NERDRTYxODgxMDUxRDAwM0VFREJCIC8qIFRleHRBdXRv
U2l6aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEzNDBEMDA2QzFEMDBFRjZGMjYgLyog
VGV4dEJvdW5kYXJpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0NDdGNUIzMjY2Q0Y2M0QwMDEz
M0YwMCAvKiBUZXh0Qm94U2VsZWN0YWJsZVJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzE1
MUJEODEyRjE1NThGMDA1QTBGNjQgLyogVGV4dENoZWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3N0QwMDEyMTMzQjBBRUIwMEQ2NjU4QyAvKiBUZXh0Q2hlY2tpbmcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3REJGOERFMTI3NjkxOUMwMDZCNjAwOCAvKiBUZXh0Q2hlY2tpbmdIZWxw
ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmNwcAppbmRleCBhMmM2NjU5NWY0NjBlODZi
YjE0NjY5MzY5NTViOTU1ZDhhOTA2YTE5Li4wZTQ3NjkwNjRlYmJmNWJlYWM5ZjU4ZDIyM2ExODIx
NjI2OWVmZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRU
aW1lbGluZXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9j
dW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmNwcApAQCAtNTEsMTAgKzUxLDcgQEAgRG9jdW1lbnRU
aW1lbGluZXNDb250cm9sbGVyOjpEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIoRG9jdW1lbnQm
IGRvY3VtZW50KQogICAgIH0KIH0KIAotRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjp+RG9j
dW1lbnRUaW1lbGluZXNDb250cm9sbGVyKCkKLXsKLSAgICBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdU
YXNrLmNhbmNlbCgpOwotfQorRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjp+RG9jdW1lbnRU
aW1lbGluZXNDb250cm9sbGVyKCkgPSBkZWZhdWx0OwogCiB2b2lkIERvY3VtZW50VGltZWxpbmVz
Q29udHJvbGxlcjo6YWRkVGltZWxpbmUoRG9jdW1lbnRUaW1lbGluZSYgdGltZWxpbmUpCiB7CkBA
IC03Myw3ICs3MCw3IEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjpyZW1vdmVU
aW1lbGluZShEb2N1bWVudFRpbWVsaW5lJiB0aW1lbGluZSkKIAogdm9pZCBEb2N1bWVudFRpbWVs
aW5lc0NvbnRyb2xsZXI6OmRldGFjaEZyb21Eb2N1bWVudCgpCiB7Ci0gICAgbV9jdXJyZW50VGlt
ZUNsZWFyaW5nVGFzay5jYW5jZWwoKTsKKyAgICBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrQ2Fu
Y2VsbGVyLmNhbmNlbCgpOwogCiAgICAgd2hpbGUgKCFtX3RpbWVsaW5lcy5jb21wdXRlc0VtcHR5
KCkpCiAgICAgICAgIG1fdGltZWxpbmVzLmJlZ2luKCktPmRldGFjaEZyb21Eb2N1bWVudCgpOwpA
QCAtMjMzLDkgKzIzMCw4IEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjpjYWNo
ZUN1cnJlbnRUaW1lKFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyBuZXdDCiAgICAgLy8gYW5pbWF0
aW9ucywgc28gd2Ugc2NoZWR1bGUgdGhlIGludmFsaWRhdGlvbiB0YXNrIGFuZCByZWdpc3RlciBh
IHdoZW5JZGxlIGNhbGxiYWNrIG9uIHRoZSBWTSwgd2hpY2ggd2lsbAogICAgIC8vIGZpcmUgc3lu
Y3Jvbm91c2x5IGlmIG5vIEpTIGlzIHJ1bm5pbmcuCiAgICAgbV93YWl0aW5nT25WTUlkbGUgPSB0
cnVlOwotICAgIGlmICghbV9jdXJyZW50VGltZUNsZWFyaW5nVGFzay5pc1BlbmRpbmcoKSkgewot
ICAgICAgICBDYW5jZWxsYWJsZVRhc2sgdGFzayhzdGQ6OmJpbmQoJkRvY3VtZW50VGltZWxpbmVz
Q29udHJvbGxlcjo6bWF5YmVDbGVhckNhY2hlZEN1cnJlbnRUaW1lLCB0aGlzKSk7Ci0gICAgICAg
IG1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2sgPSB0YXNrLmNyZWF0ZUhhbmRsZSgpOworICAgIGlm
ICghbV9jdXJyZW50VGltZUNsZWFyaW5nVGFza0NhbmNlbGxlci5oYXNQZW5kaW5nVGFzaygpKSB7
CisgICAgICAgIENhbmNlbGxhYmxlVGFzayB0YXNrKG1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2tD
YW5jZWxsZXIsIHN0ZDo6YmluZCgmRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjptYXliZUNs
ZWFyQ2FjaGVkQ3VycmVudFRpbWUsIHRoaXMpKTsKICAgICAgICAgbV9kb2N1bWVudC5ldmVudExv
b3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6SW50ZXJuYWxBc3luY1Rhc2ssIFdURk1vdmUodGFz
aykpOwogICAgIH0KICAgICAvLyBXZSBleHRlbnQgdGhlIGFzc29jaWF0ZWQgRG9jdW1lbnQncyBs
aWZlY3ljbGUgdW50aWwgdGhlIFZNIGJlY2FtZSBpZGxlIHNpbmNlIHRoZSBEb2N1bWVudFRpbWVs
aW5lc0NvbnRyb2xsZXIKQEAgLTI1Miw3ICsyNDgsNyBAQCB2b2lkIERvY3VtZW50VGltZWxpbmVz
Q29udHJvbGxlcjo6bWF5YmVDbGVhckNhY2hlZEN1cnJlbnRUaW1lKCkKICAgICAvLyBKUyBvciB3
YWl0aW5nIG9uIGFsbCBjdXJyZW50IGFuaW1hdGlvbiB1cGRhdGluZyBjb2RlIHRvIGhhdmUgY29t
cGxldGVkLiBUaGlzIGlzIHNvIHRoYXQKICAgICAvLyB3ZSdyZSBndWFyYW50ZWVkIHRvIGhhdmUg
YSBjb25zaXN0ZW50IGN1cnJlbnQgdGltZSByZXBvcnRlZCBmb3IgYWxsIHdvcmsgaGFwcGVuaW5n
IGluIGEgZ2l2ZW4KICAgICAvLyBKUyBmcmFtZSBvciB0aHJvdWdob3V0IHVwZGF0aW5nIGFuaW1h
dGlvbnMgaW4gV2ViQ29yZS4KLSAgICBpZiAoIW1faXNTdXNwZW5kZWQgJiYgIW1fd2FpdGluZ09u
Vk1JZGxlICYmICFtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrLmlzUGVuZGluZygpKQorICAgIGlm
ICghbV9pc1N1c3BlbmRlZCAmJiAhbV93YWl0aW5nT25WTUlkbGUgJiYgIW1fY3VycmVudFRpbWVD
bGVhcmluZ1Rhc2tDYW5jZWxsZXIuaGFzUGVuZGluZ1Rhc2soKSkKICAgICAgICAgbV9jYWNoZWRD
dXJyZW50VGltZSA9IHN0ZDo6bnVsbG9wdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oCmluZGV4IDk3MWJjZDYy
MTY0YjNlZTdlZmRlZWE2OTQyNWRiNTg1NzA2NDBjZGUuLjllYTY2ZDIxZDlkOGVkNTBmNzNmM2Ey
M2E0Mzc3YzVkODdkNzgxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9E
b2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIG1heWJlQ2xlYXJDYWNoZWRDdXJyZW50VGltZSgpOwogCiAgICAgV2Vha0hh
c2hTZXQ8RG9jdW1lbnRUaW1lbGluZT4gbV90aW1lbGluZXM7Ci0gICAgQ2FuY2VsbGFibGVUYXNr
OjpIYW5kbGUgbV9jdXJyZW50VGltZUNsZWFyaW5nVGFzazsKKyAgICBUYXNrQ2FuY2VsbGVyIG1f
Y3VycmVudFRpbWVDbGVhcmluZ1Rhc2tDYW5jZWxsZXI7CiAgICAgRG9jdW1lbnQmIG1fZG9jdW1l
bnQ7CiAgICAgTWFya2FibGU8U2Vjb25kcywgU2Vjb25kczo6TWFya2FibGVUcmFpdHM+IG1fY2Fj
aGVkQ3VycmVudFRpbWU7CiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAppbmRleCA0NTA0ZWExMWY5ODE5MzVjMWI4OGJmZDlk
MTIwZTY5OWVmNmIwOWZmLi43YzY3NGNmZmY3OWJjMzc5NDZhNDFjYTI3ZWY1YTEzZDFlNmIzN2Mw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCkBAIC0xMTIsMTQgKzExMiwxMiBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMg
Q2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0
QWxpdmUoVCYgb2JqZWN0LCBUYXNrU291cmNlIHNvdXJjZSwgRnVuY3Rpb248dm9pZCgpPiYmIHRh
c2spCisgICAgc3RhdGljIHZvaWQgcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxp
dmUoVCYgb2JqZWN0LCBUYXNrU291cmNlIHNvdXJjZSwgVGFza0NhbmNlbGxlciYgdGFza0NhbmNl
bGxlciwgRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiAgICAgewotICAgICAgICBDYW5jZWxsYWJs
ZVRhc2sgY2FuY2VsbGFibGVUYXNrKFdURk1vdmUodGFzaykpOwotICAgICAgICBhdXRvIHRhc2tI
YW5kbGUgPSBjYW5jZWxsYWJsZVRhc2suY3JlYXRlSGFuZGxlKCk7CisgICAgICAgIENhbmNlbGxh
YmxlVGFzayBjYW5jZWxsYWJsZVRhc2sodGFza0NhbmNlbGxlciwgV1RGTW92ZSh0YXNrKSk7CiAg
ICAgICAgIG9iamVjdC5xdWV1ZVRhc2tJbkV2ZW50TG9vcChzb3VyY2UsIFtwcm90ZWN0ZWRPYmpl
Y3QgPSBtYWtlUmVmKG9iamVjdCksIGFjdGl2aXR5ID0gb2JqZWN0LkFjdGl2ZURPTU9iamVjdDo6
bWFrZVBlbmRpbmdBY3Rpdml0eShvYmplY3QpLCBjYW5jZWxsYWJsZVRhc2sgPSBXVEZNb3ZlKGNh
bmNlbGxhYmxlVGFzayldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYW5jZWxsYWJsZVRhc2so
KTsKICAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiB0YXNrSGFuZGxlOwogICAgIH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEV2ZW50VGFyZ2V0VHlwZSwgdHlwZW5hbWUgRXZlbnRUeXBlPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAppbmRleCAyYWFkMGU1ZGUwYzg2ZWY5YWY4OTA5Y2NjOWEzZjQxZjYz
ZmM3MGJmLi5iNDcxYTYzY2Y1ODZjODIzMTVlMmQ2NTBmMDBkOTllNjk2NjU1NmY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIkZyYW1lRGVzdHJ1Y3Rp
b25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkZyYW1lSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKLSNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKICNpbmNsdWRl
ICJNdXRhdGlvbk9ic2VydmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRnVs
bHNjcmVlbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2Vy
LmNwcAppbmRleCA4MGUzMzZmNDkzYWFlNWJjMDkwZTQyZTliY2Y5ZThmZjlhZDcyMzMyLi5iYmI3
MmQzOWIwZTljNTAxNGU1MmY0MDUwZmE0MmVhNTdhZjcyZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9GdWxsc2NyZWVuTWFuYWdlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNo
cm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5o
IgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkhUTUxJRnJhbWVFbGVtZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAppbmRleCAxYTRkMzM0ZDY4MGU2NjA1ZTQwM2MxYTJmNGJjMDUwYzI2NzA2Y2ZjLi4wYzE2
MTY2NWFlMzMwMTYzODE2OWY0ZTIwNTA3YWUwYmYzZDNjZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTM5NCw3ICszOTQsNiBAQCBIVE1MTWVkaWFFbGVt
ZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bQogICAgICwgbV9zY2FuVGltZXIoKnRoaXMsICZIVE1MTWVkaWFFbGVtZW50Ojpz
Y2FuVGltZXJGaXJlZCkKICAgICAsIG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJl
c3RyaWN0aW9uc1RpbWVyKCp0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tDb250cm9s
c01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1RpbWVyRmlyZWQpCiAgICAgLCBtX3NlZWtUb1Bs
YXliYWNrUG9zaXRpb25FbmRlZFRpbWVyKCp0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6c2Vla1Rv
UGxheWJhY2tQb3NpdGlvbkVuZGVkVGltZXJGaXJlZCkKLSAgICAsIG1fcmVzb3VyY2VTZWxlY3Rp
b25UYXNrUXVldWUoJmRvY3VtZW50KQogICAgICwgbV9hc3luY0V2ZW50UXVldWUoRXZlbnRMb29w
RXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1v
dmllVGltZShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpCiAgICAgLCBtX2ZpcnN0
VGltZVBsYXlpbmcodHJ1ZSkKQEAgLTU2NywxMSArNTY2LDYgQEAgSFRNTE1lZGlhRWxlbWVudDo6
fkhUTUxNZWRpYUVsZW1lbnQoKQogICAgIGlmIChtX2lzb2xhdGVkV29ybGQpCiAgICAgICAgIG1f
aXNvbGF0ZWRXb3JsZC0+Y2xlYXJXcmFwcGVycygpOwogCi0gICAgbV9zZWVrVGFzay5jYW5jZWwo
KTsKLSAgICBtX3Jlc3VtZVRhc2suY2FuY2VsKCk7Ci0gICAgbV9wbGF5YmFja0NvbnRyb2xzTWFu
YWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGFzay5jYW5jZWwoKTsKLSAgICBtX3Jlc291cmNlU2Vs
ZWN0aW9uVGFza1F1ZXVlLmNsb3NlKCk7Ci0KICAgICBtX2NvbXBsZXRlbHlMb2FkZWQgPSB0cnVl
OwogCiAgICAgaWYgKG1fcGxheWVyKSB7CkBAIC04OTMsOSArODg3LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpkaWRSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKQogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzY2hlZHVsZU5leHRTb3VyY2VDaGlsZCgpCiB7CiAgICAgLy8gU2NoZWR1bGUgdGhl
IHRpbWVyIHRvIHRyeSB0aGUgbmV4dCA8c291cmNlPiBlbGVtZW50IFdJVEhPVVQgcmVzZXR0aW5n
IHN0YXRlIGFsYSBwcmVwYXJlRm9yTG9hZC4KLSAgICBtX3Jlc291cmNlU2VsZWN0aW9uVGFza1F1
ZXVlLmVucXVldWVUYXNrKFt0aGlzXSB7Ci0gICAgICAgIGxvYWROZXh0U291cmNlQ2hpbGQoKTsK
LSAgICB9KTsKKyAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhp
cywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX3Jlc291cmNlU2VsZWN0aW9uVGFza0NhbmNl
bGxlciwgc3RkOjpiaW5kKCZIVE1MTWVkaWFFbGVtZW50Ojpsb2FkTmV4dFNvdXJjZUNoaWxkLCB0
aGlzKSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJBY3RpdmVTb3Vy
Y2VCdWZmZXJzQ2hhbmdlZCgpCkBAIC05ODAsMTEgKzk3MiwxMSBAQCBib29sIEhUTUxNZWRpYUVs
ZW1lbnQ6Omhhc0V2ZXJOb3RpZmllZEFib3V0UGxheWluZygpIGNvbnN0CiAKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2NoZWR1bGVDaGVja1BsYXliYWNrVGFyZ2V0Q29tcGF0YWJpbGl0eSgpCiB7
Ci0gICAgaWYgKG1fY2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGliaWxpdHlUYXNrLmlzUGVuZGlu
ZygpKQorICAgIGlmIChtX2NoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFza0NhbmNl
bGxlci5oYXNQZW5kaW5nVGFzaygpKQogICAgICAgICByZXR1cm47CiAKICAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIpOwotICAgIG1fY2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGliaWxpdHlU
YXNrID0gcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tT
b3VyY2U6Ok1lZGlhRWxlbWVudCwgW3RoaXNdIHsKKyAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza0tl
ZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX2NoZWNr
UGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFza0NhbmNlbGxlciwgW3RoaXNdIHsKICAgICAg
ICAgY2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGliaWxpdHkoKTsKICAgICB9KTsKIH0KQEAgLTEw
OTksOSArMTA5MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZCgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIHByZXBhcmVGb3JMb2FkKCk7Ci0gICAgbV9yZXNvdXJjZVNlbGVjdGlvblRh
c2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhpc10gewotICAgICAgICBwcmVwYXJlVG9QbGF5KCk7Ci0g
ICAgfSk7CisgICAgcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMs
IFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tDYW5jZWxs
ZXIsIHN0ZDo6YmluZCgmSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZVRvUGxheSwgdGhpcykpOwog
fQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JMb2FkKCkKQEAgLTExMTgsNyAr
MTEwOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQoKQogICAgIC8v
IDEgLSBBYm9ydCBhbnkgYWxyZWFkeS1ydW5uaW5nIGluc3RhbmNlIG9mIHRoZSByZXNvdXJjZSBz
ZWxlY3Rpb24gYWxnb3JpdGhtIGZvciB0aGlzIGVsZW1lbnQuCiAgICAgLy8gUGVyZm9ybSB0aGUg
Y2xlYW51cCByZXF1aXJlZCBmb3IgdGhlIHJlc291cmNlIGxvYWQgYWxnb3JpdGhtIHRvIHJ1bi4K
ICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKLSAgICBtX3Jlc291cmNlU2VsZWN0aW9uVGFza1F1
ZXVlLmNhbmNlbEFsbFRhc2tzKCk7CisgICAgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tDYW5jZWxs
ZXIuY2FuY2VsKCk7CiAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgYXBwcm9wcmlhdGUgcGxhY2Ug
dG8gcmVzZXQgTG9hZFRleHRUcmFja1Jlc291cmNlIGlmIG5lY2Vzc2FyeSBhbmQgc2V0IG1fcGVu
ZGluZ0FjdGlvbkZsYWdzIHRvIDAgaGVyZS4KICAgICBtX3NlbnRFbmRFdmVudCA9IGZhbHNlOwog
ICAgIG1fc2VudFN0YWxsZWRFdmVudCA9IGZhbHNlOwpAQCAtMTIzMCwxNyArMTIyMCwxNCBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVsb2FkQW5kUmVzdW1lUGxheWJhY2tJ
Zk5lZWRlZCgpCiAgICAgICAgIGVudGVyRnVsbHNjcmVlbihtX3ZpZGVvRnVsbHNjcmVlbk1vZGUp
OwogCiAgICAgaWYgKHByZXZpb3VzTWVkaWFUaW1lKSB7Ci0gICAgICAgIG1fcmVzb3VyY2VTZWxl
Y3Rpb25UYXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXMsIHByZXZpb3VzTWVkaWFUaW1lXSB7Cisg
ICAgICAgIHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNr
U291cmNlOjpNZWRpYUVsZW1lbnQsIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrQ2FuY2VsbGVyLCBb
dGhpcywgcHJldmlvdXNNZWRpYVRpbWVdIHsKICAgICAgICAgICAgIGlmIChtX3BsYXllcikKICAg
ICAgICAgICAgICAgICBtX3BsYXllci0+c2Vla1doZW5Qb3NzaWJsZShwcmV2aW91c01lZGlhVGlt
ZSk7CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIGlmICghd2FzUGF1c2VkKSB7Ci0gICAgICAg
IG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXNdIHsKLSAgICAg
ICAgICAgIHBsYXlJbnRlcm5hbCgpOwotICAgICAgICB9KTsKLSAgICB9CisgICAgaWYgKCF3YXNQ
YXVzZWQpCisgICAgICAgIHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0
aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrQ2Fu
Y2VsbGVyLCBzdGQ6OmJpbmQoJkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCwgdGhpcykp
OwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UoKQpAQCAt
MTI1OCw3ICsxMjQ1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291
cmNlKCkKICAgICBzZXRTaG91bGREZWxheUxvYWRFdmVudCh0cnVlKTsKIAogICAgIC8vIDQuIGlu
IHBhcmFsbGVsIGF3YWl0IGEgc3RhYmxlIHN0YXRlLCBhbGxvd2luZyB0aGUgdGFzayB0aGF0IGlu
dm9rZWQgdGhpcyBhbGdvcml0aG0gdG8gY29udGludWUuCi0gICAgaWYgKG1fcmVzb3VyY2VTZWxl
Y3Rpb25UYXNrUXVldWUuaGFzUGVuZGluZ1Rhc2tzKCkpCisgICAgaWYgKG1fcmVzb3VyY2VTZWxl
Y3Rpb25UYXNrQ2FuY2VsbGVyLmhhc1BlbmRpbmdUYXNrKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmICghbWVkaWFTZXNzaW9uKCkucGFnZUFsbG93c0RhdGFMb2FkaW5nKCkpIHsKQEAgLTEy
NzksNyArMTI2Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNvdXJj
ZSgpCiAgICAgYXV0byBsb2dTaXRlSWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgVU5V
U0VEX1BBUkFNKGxvZ1NpdGVJZGVudGlmaWVyKTsKIAotICAgIG1fcmVzb3VyY2VTZWxlY3Rpb25U
YXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSAgeworICAgIHF1
ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpN
ZWRpYUVsZW1lbnQsIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrQ2FuY2VsbGVyLCBbdGhpcywgbG9n
U2l0ZUlkZW50aWZpZXJdICB7CiAKICAgICAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmll
ciwgImxhbWJkYSgpLCB0YXNrIGZpcmVkIik7CiAKQEAgLTI5NjEsOSArMjk0OCw5IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1lJiBpblRp
bWUsIGNvbnN0IE1lZGlhVGltCiAgICAgLy8gMyAtIElmIHRoZSBlbGVtZW50J3Mgc2Vla2luZyBJ
REwgYXR0cmlidXRlIGlzIHRydWUsIHRoZW4gYW5vdGhlciBpbnN0YW5jZSBvZiB0aGlzIGFsZ29y
aXRobSBpcwogICAgIC8vIGFscmVhZHkgcnVubmluZy4gQWJvcnQgdGhhdCBvdGhlciBpbnN0YW5j
ZSBvZiB0aGUgYWxnb3JpdGhtIHdpdGhvdXQgd2FpdGluZyBmb3IgdGhlIHN0ZXAgdGhhdAogICAg
IC8vIGl0IGlzIHJ1bm5pbmcgdG8gY29tcGxldGUuCi0gICAgaWYgKG1fc2Vla1Rhc2suaXNQZW5k
aW5nKCkpIHsKKyAgICBpZiAobV9zZWVrVGFza0NhbmNlbGxlci5oYXNQZW5kaW5nVGFzaygpKSB7
CiAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJjYW5jZWxsaW5nIHBlbmRpbmcgc2Vl
a3MiKTsKLSAgICAgICAgbV9zZWVrVGFzay5jYW5jZWwoKTsKKyAgICAgICAgbV9zZWVrVGFza0Nh
bmNlbGxlci5jYW5jZWwoKTsKICAgICAgICAgaWYgKG1fcGVuZGluZ1NlZWspIHsKICAgICAgICAg
ICAgIG5vdyA9IG1fcGVuZGluZ1NlZWstPm5vdzsKICAgICAgICAgICAgIG1fcGVuZGluZ1NlZWsg
PSBudWxscHRyOwpAQCAtMjk4NSw3ICsyOTcyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
ZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmIGluVGltZSwgY29uc3QgTWVkaWFUaW0K
ICAgICBtX3BlbmRpbmdTZWVrID0gbWFrZVVuaXF1ZTxQZW5kaW5nU2Vlaz4obm93LCB0aW1lLCBu
ZWdhdGl2ZVRvbGVyYW5jZSwgcG9zaXRpdmVUb2xlcmFuY2UpOwogICAgIGlmIChmcm9tRE9NKSB7
CiAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJlbnF1ZXVpbmcgc2VlayBmcm9tICIs
IG5vdywgIiB0byAiLCB0aW1lKTsKLSAgICAgICAgbV9zZWVrVGFzayA9IHF1ZXVlQ2FuY2VsbGFi
bGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQs
IHN0ZDo6YmluZCgmSFRNTE1lZGlhRWxlbWVudDo6c2Vla1Rhc2ssIHRoaXMpKTsKKyAgICAgICAg
cXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6
Ok1lZGlhRWxlbWVudCwgbV9zZWVrVGFza0NhbmNlbGxlciwgc3RkOjpiaW5kKCZIVE1MTWVkaWFF
bGVtZW50OjpzZWVrVGFzaywgdGhpcykpOwogICAgIH0gZWxzZQogICAgICAgICBzZWVrVGFzaygp
OwogCkBAIC0zNjk3LDEwICszNjg0LDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldFZvbHVtZShkb3VibGUgdm9sdW1lKQogICAgIGF1dG8gb2xkVm9sdW1lID0gbV92
b2x1bWU7CiAgICAgbV92b2x1bWUgPSB2b2x1bWU7CiAKLSAgICBpZiAobV92b2x1bWVSZXZlcnRU
YXNrLmlzUGVuZGluZygpKQorICAgIGlmIChtX3ZvbHVtZVJldmVydFRhc2tDYW5jZWxsZXIuaGFz
UGVuZGluZ1Rhc2soKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIG1fdm9sdW1lUmV2ZXJ0
VGFzayA9IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNr
U291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlzLCBvbGRWb2x1bWVdIHsKKyAgICBxdWV1ZUNhbmNl
bGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVt
ZW50LCBtX3ZvbHVtZVJldmVydFRhc2tDYW5jZWxsZXIsIFt0aGlzLCBvbGRWb2x1bWVdIHsKICAg
ICAgICAgbV92b2x1bWUgPSBvbGRWb2x1bWU7CiAgICAgfSk7CiAKQEAgLTQ0ODUsMTIgKzQ0NzIs
MTIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTZWxlY3RlZFRleHRUcmFjayhUZXh0VHJh
Y2sqIHRyYWNrVG9TZWxlY3QpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVDb25m
aWd1cmVUZXh0VHJhY2tzKCkKIHsKLSAgICBpZiAobV9jb25maWd1cmVUZXh0VHJhY2tzVGFzay5p
c1BlbmRpbmcoKSkKKyAgICBpZiAobV9jb25maWd1cmVUZXh0VHJhY2tzVGFza0NhbmNlbGxlci5o
YXNQZW5kaW5nVGFzaygpKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGxvZ1NpdGVJZGVu
dGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVy
LCAidGFzayBzY2hlZHVsZWQiKTsKLSAgICBtX2NvbmZpZ3VyZVRleHRUcmFja3NUYXNrID0gcXVl
dWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1l
ZGlhRWxlbWVudCwgW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CisgICAgcXVldWVDYW5jZWxs
YWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVu
dCwgbV9jb25maWd1cmVUZXh0VHJhY2tzVGFza0NhbmNlbGxlciwgW3RoaXMsIGxvZ1NpdGVJZGVu
dGlmaWVyXSB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShsb2dTaXRlSWRlbnRpZmllcik7CiAgICAg
ICAgIEFMV0FZU19MT0cobG9nU2l0ZUlkZW50aWZpZXIsICJsYW1iZGEoKSwgdGFzayBmaXJlZCIp
OwogICAgICAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8v
IGNvbmZpZ3VyZVRleHRUcmFja3MgY2FsbHMgbWV0aG9kcyB0aGF0IGNhbiB0cmlnZ2VyIGFyYml0
cmFyeSBET00gbXV0YXRpb25zLgpAQCAtNTAzMywxMiArNTAyMCwxMiBAQCBHcmFwaGljc0Rldmlj
ZUFkYXB0ZXIqIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyR3JhcGhpY3NEZXZpY2VBZGFw
dGVyKCkgY29ucwogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTWVkaWFFbmdpbmVX
YXNVcGRhdGVkKCkKIHsKLSAgICBpZiAobV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrLmlzUGVuZGlu
ZygpKQorICAgIGlmIChtX21lZGlhRW5naW5lVXBkYXRlZFRhc2tDYW5jZWxsZXIuaGFzUGVuZGlu
Z1Rhc2soKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBsb2dTaXRlSWRlbnRpZmllciA9
IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgInRhc2sg
c2NoZWR1bGVkIik7Ci0gICAgbV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrID0gcXVldWVDYW5jZWxs
YWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVu
dCwgW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CisgICAgcXVldWVDYW5jZWxsYWJsZVRhc2tL
ZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgbV9tZWRp
YUVuZ2luZVVwZGF0ZWRUYXNrQ2FuY2VsbGVyLCBbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdIHsK
ICAgICAgICAgVU5VU0VEX1BBUkFNKGxvZ1NpdGVJZGVudGlmaWVyKTsKICAgICAgICAgQUxXQVlT
X0xPRyhsb2dTaXRlSWRlbnRpZmllciwgImxhbWJkYSgpLCB0YXNrIGZpcmVkIik7CiAgICAgICAg
IFJlZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gbWVkaWFFbmdp
bmVXYXNVcGRhdGVkIGNhbGxzIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9N
IG11dGF0aW9ucy4KQEAgLTUzMjYsMTIgKzUzMTMsMTIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp1cGRhdGVWb2x1bWUoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlVXBkYXRl
UGxheVN0YXRlKCkKIHsKLSAgICBpZiAobV91cGRhdGVQbGF5U3RhdGVUYXNrLmlzUGVuZGluZygp
KQorICAgIGlmIChtX3VwZGF0ZVBsYXlTdGF0ZVRhc2tDYW5jZWxsZXIuaGFzUGVuZGluZ1Rhc2so
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBsb2dTaXRlSWRlbnRpZmllciA9IExPR0lE
RU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgInRhc2sgc2NoZWR1
bGVkIik7Ci0gICAgbV91cGRhdGVQbGF5U3RhdGVUYXNrID0gcXVldWVDYW5jZWxsYWJsZVRhc2tL
ZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgW3RoaXMs
IGxvZ1NpdGVJZGVudGlmaWVyXSB7CisgICAgcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgbV91cGRhdGVQbGF5U3Rh
dGVUYXNrQ2FuY2VsbGVyLCBbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdIHsKICAgICAgICAgVU5V
U0VEX1BBUkFNKGxvZ1NpdGVJZGVudGlmaWVyKTsKICAgICAgICAgQUxXQVlTX0xPRyhsb2dTaXRl
SWRlbnRpZmllciwgImxhbWJkYSgpLCB0YXNrIGZpcmVkIik7CiAgICAgICAgIFJlZjxIVE1MTWVk
aWFFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gdXBkYXRlUGxheVN0YXRlIGNhbGxz
IG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KQEAgLTU0
NjMsMTYgKzU0NTAsMTYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdG9wUGVyaW9kaWNUaW1l
cnMoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNhbmNlbFBlbmRpbmdUYXNrcygpCiB7Ci0g
ICAgbV9jb25maWd1cmVUZXh0VHJhY2tzVGFzay5jYW5jZWwoKTsKLSAgICBtX2NoZWNrUGxheWJh
Y2tUYXJnZXRDb21wYXRpYmlsaXR5VGFzay5jYW5jZWwoKTsKLSAgICBtX3VwZGF0ZU1lZGlhU3Rh
dGVUYXNrLmNhbmNlbCgpOwotICAgIG1fbWVkaWFFbmdpbmVVcGRhdGVkVGFzay5jYW5jZWwoKTsK
LSAgICBtX3VwZGF0ZVBsYXlTdGF0ZVRhc2suY2FuY2VsKCk7Ci0gICAgbV9yZXN1bWVUYXNrLmNh
bmNlbCgpOwotICAgIG1fc2Vla1Rhc2suY2FuY2VsKCk7Ci0gICAgbV9wbGF5YmFja0NvbnRyb2xz
TWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGFzay5jYW5jZWwoKTsKKyAgICBtX2NvbmZpZ3Vy
ZVRleHRUcmFja3NUYXNrQ2FuY2VsbGVyLmNhbmNlbCgpOworICAgIG1fY2hlY2tQbGF5YmFja1Rh
cmdldENvbXBhdGliaWxpdHlUYXNrQ2FuY2VsbGVyLmNhbmNlbCgpOworICAgIG1fdXBkYXRlTWVk
aWFTdGF0ZVRhc2tDYW5jZWxsZXIuY2FuY2VsKCk7CisgICAgbV9tZWRpYUVuZ2luZVVwZGF0ZWRU
YXNrQ2FuY2VsbGVyLmNhbmNlbCgpOworICAgIG1fdXBkYXRlUGxheVN0YXRlVGFza0NhbmNlbGxl
ci5jYW5jZWwoKTsKKyAgICBtX3Jlc3VtZVRhc2tDYW5jZWxsZXIuY2FuY2VsKCk7CisgICAgbV9z
ZWVrVGFza0NhbmNlbGxlci5jYW5jZWwoKTsKKyAgICBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
QmVoYXZpb3JSZXN0cmljdGlvbnNUYXNrQ2FuY2VsbGVyLmNhbmNlbCgpOwogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgbV92b2x1bWVSZXZlcnRUYXNrLmNhbmNlbCgpOworICAgIG1fdm9s
dW1lUmV2ZXJ0VGFza0NhbmNlbGxlci5jYW5jZWwoKTsKICNlbmRpZgogfQogCkBAIC01NTg3LDcg
KzU1NzQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIoKQogICAg
ICAgICBtX21lZGlhU2Vzc2lvbi0+Y2FuUHJvZHVjZUF1ZGlvQ2hhbmdlZCgpOwogICAgIH0KIAot
ICAgIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrUXVldWUuY2FuY2VsQWxsVGFza3MoKTsKKyAgICBt
X3Jlc291cmNlU2VsZWN0aW9uVGFza0NhbmNlbGxlci5jYW5jZWwoKTsKIAogICAgIHVwZGF0ZVNs
ZWVwRGlzYWJsaW5nKCk7CiB9CkBAIC01NjI5LDcgKzU2MTYsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnN0b3BXaXRob3V0RGVzdHJveWluZ01lZGlhUGxheWVyKCkKIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6Y2xvc2VUYXNrUXVldWVzKCkKIHsKICAgICBjYW5jZWxQZW5kaW5nVGFza3MoKTsK
LSAgICBtX3Jlc291cmNlU2VsZWN0aW9uVGFza1F1ZXVlLmNsb3NlKCk7CisgICAgbV9yZXNvdXJj
ZVNlbGVjdGlvblRhc2tDYW5jZWxsZXIuY2FuY2VsKCk7CiAgICAgbV9hc3luY0V2ZW50UXVldWUt
PmNsb3NlKCk7CiB9CiAKQEAgLTU2NjQsNyArNTY1MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKICAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIpOwogICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKIAotICAgIG1fcmVzdW1lVGFzay5jYW5jZWwoKTsKKyAgICBtX3Jlc3VtZVRhc2tDYW5j
ZWxsZXIuY2FuY2VsKCk7CiAKICAgICBzd2l0Y2ggKHJlYXNvbikgewogICAgIGNhc2UgUmVhc29u
Rm9yU3VzcGVuc2lvbjo6QmFja0ZvcndhcmRDYWNoZToKQEAgLTU2OTcsMTMgKzU2ODQsMTMgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUoKQogICAgICAgICBtX21lZGlhU2Vzc2lvbi0+
dXBkYXRlQnVmZmVyaW5nUG9saWN5KCk7CiAgICAgfQogCi0gICAgaWYgKG1fZXJyb3IgJiYgbV9l
cnJvci0+Y29kZSgpID09IE1lZGlhRXJyb3I6Ok1FRElBX0VSUl9BQk9SVEVEICYmICFtX3Jlc3Vt
ZVRhc2suaXNQZW5kaW5nKCkpIHsKKyAgICBpZiAobV9lcnJvciAmJiBtX2Vycm9yLT5jb2RlKCkg
PT0gTWVkaWFFcnJvcjo6TUVESUFfRVJSX0FCT1JURUQgJiYgIW1fcmVzdW1lVGFza0NhbmNlbGxl
ci5oYXNQZW5kaW5nVGFzaygpKSB7CiAgICAgICAgIC8vIFJlc3RhcnQgdGhlIGxvYWQgaWYgaXQg
d2FzIGFib3J0ZWQgaW4gdGhlIG1pZGRsZSBieSBtb3ZpbmcgdGhlIGRvY3VtZW50IHRvIHRoZSBi
YWNrL2ZvcndhcmQgY2FjaGUuCiAgICAgICAgIC8vIG1fZXJyb3IgaXMgb25seSBsZWZ0IGF0IE1F
RElBX0VSUl9BQk9SVEVEIHdoZW4gdGhlIGRvY3VtZW50IGJlY29tZXMgaW5hY3RpdmUgKGl0IGlz
IHNldCB0bwogICAgICAgICAvLyAgTUVESUFfRVJSX0FCT1JURUQgd2hpbGUgdGhlIGFib3J0RXZl
bnQgaXMgYmVpbmcgc2VudCwgYnV0IGNsZWFyZWQgaW1tZWRpYXRlbHkgYWZ0ZXJ3YXJkcykuCiAg
ICAgICAgIC8vIFRoaXMgYmVoYXZpb3IgaXMgbm90IHNwZWNpZmllZCBidXQgaXQgc2VlbXMgbGlr
ZSBhIHNlbnNpYmxlIHRoaW5nIHRvIGRvLgogICAgICAgICAvLyBBcyBpdCBpcyBub3Qgc2FmZSB0
byBpbW1lZGF0ZWx5IHN0YXJ0IGxvYWRpbmcgbm93LCBsZXQncyBzY2hlZHVsZSBhIGxvYWQuCi0g
ICAgICAgIG1fcmVzdW1lVGFzayA9IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFs
aXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIHN0ZDo6YmluZCgmSFRNTE1lZGlh
RWxlbWVudDo6cHJlcGFyZUZvckxvYWQsIHRoaXMpKTsKKyAgICAgICAgcXVldWVDYW5jZWxsYWJs
ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwg
bV9yZXN1bWVUYXNrQ2FuY2VsbGVyLCBzdGQ6OmJpbmQoJkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBh
cmVGb3JMb2FkLCB0aGlzKSk7CiAgICAgfQogCiAgICAgdXBkYXRlUmVuZGVyZXIoKTsKQEAgLTU3
MTksNyArNTcwNiw2IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6dmlydHVhbEhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY3JlYXRpbmdDb250cm9scwogICAgICAg
ICB8fCBtX2FzeW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0FjdGl2aXR5KCkKLSAgICAgICAgfHwg
bV9yZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZS5oYXNQZW5kaW5nVGFza3MoKQogICAgICAgICB8
fCAoaGFzQXVkaW8oKSAmJiBpc1BsYXlpbmcoKSkKICAgICAgICAgfHwgKGhhc0xpdmVTb3VyY2Uo
KSAmJiBoYXNFdmVudExpc3RlbmVycygpKTsKIH0KQEAgLTY2MTUsNyArNjYwMSw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1
cmVkKFJlY29uZmlndXJlTW9kCiAgICAgfQogCiAgICAgbV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNo
YW5nZSA9IHRydWU7Ci0gICAgbV9jb25maWd1cmVUZXh0VHJhY2tzVGFzay5jYW5jZWwoKTsKKyAg
ICBtX2NvbmZpZ3VyZVRleHRUcmFja3NUYXNrQ2FuY2VsbGVyLmNhbmNlbCgpOwogICAgIGlmICht
b2RlID09IEltbWVkaWF0ZWx5KSB7CiAgICAgICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90
ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gY29uZmlndXJlVGV4dFRyYWNrcyBjYWxscyBtZXRob2RzIHRo
YXQgY2FuIHRyaWdnZXIgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCiAgICAgICAgIGNvbmZpZ3Vy
ZVRleHRUcmFja3MoKTsKQEAgLTcxMzEsMTIgKzcxMTcsMTIgQEAgYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllclNob3VsZENoZWNrSGFyZHdhcmVTdXBwb3J0KCkgY29uc3QKIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckJ1ZmZlcmVkVGltZVJhbmdlc0NoYW5nZWQo
KQogewotICAgIGlmICghbV90ZXh0VHJhY2tzIHx8IG1fYnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdl
ZFRhc2suaXNQZW5kaW5nKCkpCisgICAgaWYgKCFtX3RleHRUcmFja3MgfHwgbV9idWZmZXJlZFRp
bWVSYW5nZXNDaGFuZ2VkVGFza0NhbmNlbGxlci5oYXNQZW5kaW5nVGFzaygpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBhdXRvIGxvZ1NpdGVJZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAg
ICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAidGFzayBzY2hlZHVsZWQiKTsKLSAgICBt
X2J1ZmZlcmVkVGltZVJhbmdlc0NoYW5nZWRUYXNrID0gcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVw
aW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgW3RoaXMsIGxv
Z1NpdGVJZGVudGlmaWVyXSB7CisgICAgcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0
QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgbV9idWZmZXJlZFRpbWVSYW5n
ZXNDaGFuZ2VkVGFza0NhbmNlbGxlciwgW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CiAgICAg
ICAgIFVOVVNFRF9QQVJBTShsb2dTaXRlSWRlbnRpZmllcik7CiAgICAgICAgIEFMV0FZU19MT0co
bG9nU2l0ZUlkZW50aWZpZXIsICJsYW1iZGEoKSwgdGFzayBmaXJlZCIpOwogICAgICAgICBpZiAo
IW1fcGxheWVyIHx8ICFtX3RleHRUcmFja3MpCkBAIC03NzYyLDEyICs3NzQ4LDEyIEBAIGJvb2wg
SFRNTE1lZGlhRWxlbWVudDo6c2hvdWxkT3ZlcnJpZGVQYXVzZUR1cmluZ1JvdXRlQ2hhbmdlKCkg
Y29uc3QKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVVwZGF0ZU1lZGlhU3RhdGUo
KQogewotICAgIGlmIChtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrLmlzUGVuZGluZygpKQorICAgIGlm
IChtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrQ2FuY2VsbGVyLmhhc1BlbmRpbmdUYXNrKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGF1dG8gbG9nU2l0ZUlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVS
OwogICAgIEFMV0FZU19MT0cobG9nU2l0ZUlkZW50aWZpZXIsICJ0YXNrIHNjaGVkdWxlZCIpOwot
ICAgIG1fdXBkYXRlTWVkaWFTdGF0ZVRhc2sgPSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdP
YmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhpcywgbG9nU2l0
ZUlkZW50aWZpZXJdIHsKKyAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2
ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNr
Q2FuY2VsbGVyLCBbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdIHsKICAgICAgICAgVU5VU0VEX1BB
UkFNKGxvZ1NpdGVJZGVudGlmaWVyKTsKICAgICAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRp
ZmllciwgImxhbWJkYSgpLCB0YXNrIGZpcmVkIik7CiAgICAgICAgIFJlZjxIVE1MTWVkaWFFbGVt
ZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gdXBkYXRlTWVkaWFTdGF0ZSBjYWxscyBtZXRo
b2RzIHRoYXQgY2FuIHRyaWdnZXIgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCkBAIC04MDM1LDEz
ICs4MDIxLDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVQbGF5YmFja0NvbnRy
b2xzTWFuYWdlclVwZGF0ZSgpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tDb250
cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1RpbWVyRmlyZWQoKQogewotICAgIGlmICht
X3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUYXNrLmlzUGVuZGlu
ZygpKQorICAgIGlmIChtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlv
bnNUYXNrQ2FuY2VsbGVyLmhhc1BlbmRpbmdUYXNrKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghbWVkaWFTZXNzaW9uKCkuaGFzQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVUb0NvbnRyb2xDb250cm9sc01hbmFnZXIpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0
cmljdGlvbnNUYXNrID0gcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRo
aXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgW3RoaXNdICgpIHsKKyAgICBxdWV1ZUNhbmNl
bGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVt
ZW50LCBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUYXNrQ2Fu
Y2VsbGVyLCBbdGhpc10gKCkgewogICAgICAgICBhdXRvJiBtZWRpYUVsZW1lbnRTZXNzaW9uID0g
bWVkaWFTZXNzaW9uKCk7CiAgICAgICAgIGlmIChpc1BsYXlpbmcoKSB8fCBtZWRpYUVsZW1lbnRT
ZXNzaW9uLnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1dG9wbGF5aW5nIHx8IG1l
ZGlhRWxlbWVudFNlc3Npb24uc3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWlu
ZykKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKaW5kZXggODBjZjY4ZTZhNGYzMGZjNzdhMzRjNTRlY2YwNjhlMjIwYmUyNWY2Ni4uMzhkMjRk
ZjY3NTgyOTFlYzc5ODJhZDc0ZmRhY2ZlYjVkNGJkMjQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKQEAgLTk0MCwyMCArOTQwLDIwIEBAIHByaXZhdGU6CiAgICAgVGlt
ZXIgbV9zY2FuVGltZXI7CiAgICAgVGltZXIgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2
aW9yUmVzdHJpY3Rpb25zVGltZXI7CiAgICAgVGltZXIgbV9zZWVrVG9QbGF5YmFja1Bvc2l0aW9u
RW5kZWRUaW1lcjsKLSAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX2NvbmZpZ3VyZVRleHRU
cmFja3NUYXNrOwotICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fY2hlY2tQbGF5YmFja1Rh
cmdldENvbXBhdGliaWxpdHlUYXNrOwotICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fdXBk
YXRlTWVkaWFTdGF0ZVRhc2s7Ci0gICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV9tZWRpYUVu
Z2luZVVwZGF0ZWRUYXNrOwotICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fdXBkYXRlUGxh
eVN0YXRlVGFzazsKLSAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX3Jlc3VtZVRhc2s7Ci0g
ICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV9zZWVrVGFzazsKLSAgICBDYW5jZWxsYWJsZVRh
c2s6OkhhbmRsZSBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNU
YXNrOwotICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fYnVmZmVyZWRUaW1lUmFuZ2VzQ2hh
bmdlZFRhc2s7Ci0gICAgRXZlbnRMb29wVGFza1F1ZXVlIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNr
UXVldWU7CisgICAgVGFza0NhbmNlbGxlciBtX2NvbmZpZ3VyZVRleHRUcmFja3NUYXNrQ2FuY2Vs
bGVyOworICAgIFRhc2tDYW5jZWxsZXIgbV9jaGVja1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJpbGl0
eVRhc2tDYW5jZWxsZXI7CisgICAgVGFza0NhbmNlbGxlciBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNr
Q2FuY2VsbGVyOworICAgIFRhc2tDYW5jZWxsZXIgbV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrQ2Fu
Y2VsbGVyOworICAgIFRhc2tDYW5jZWxsZXIgbV91cGRhdGVQbGF5U3RhdGVUYXNrQ2FuY2VsbGVy
OworICAgIFRhc2tDYW5jZWxsZXIgbV9yZXN1bWVUYXNrQ2FuY2VsbGVyOworICAgIFRhc2tDYW5j
ZWxsZXIgbV9zZWVrVGFza0NhbmNlbGxlcjsKKyAgICBUYXNrQ2FuY2VsbGVyIG1fcGxheWJhY2tD
b250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1Rhc2tDYW5jZWxsZXI7CisgICAgVGFz
a0NhbmNlbGxlciBtX2J1ZmZlcmVkVGltZVJhbmdlc0NoYW5nZWRUYXNrQ2FuY2VsbGVyOworICAg
IFRhc2tDYW5jZWxsZXIgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tDYW5jZWxsZXI7CiAgICAgUmVm
UHRyPFRpbWVSYW5nZXM+IG1fcGxheWVkVGltZVJhbmdlczsKICAgICBVbmlxdWVSZWY8RXZlbnRM
b29wRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX3ZvbHVtZVJldmVydFRhc2s7CisgICAg
VGFza0NhbmNlbGxlciBtX3ZvbHVtZVJldmVydFRhc2tDYW5jZWxsZXI7CiAjZW5kaWYKIAogICAg
IFBsYXlQcm9taXNlVmVjdG9yIG1fcGVuZGluZ1BsYXlQcm9taXNlczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRy
YWNrQ29udGFpbmVyRWxlbWVudC5jcHAKaW5kZXggZTNkMTRjYTc5YmY0ZDQyZjRjNDc2YzkzZDNk
ZTUwOTkyZmM3YThkMC4uNmE5ZGQ3OTRiYjQxMGQ0NTMwOGZjNDk3YzI1MDQxYWU1N2M4MDNjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRy
YWNrQ29udGFpbmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAKQEAgLTM1LDYgKzM1LDcg
QEAKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5o
IgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkZ1bGxzY3JlZW5NYW5hZ2VyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9HZW5lcmljVGFza1F1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HZW5lcmljVGFz
a1F1ZXVlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyZjAyNjMzMjVhM2ZiYzE1
MGVmOGUyZDBmYWYwZjcwNDU0YjY4NGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgotI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgotI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVGFza1F1ZXVlQmFzZSA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxUYXNrUXVldWVCYXNlPiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgYm9vbCBoYXNQZW5kaW5nVGFza3MoKSBjb25zdCB7IHJldHVybiBt
X3BlbmRpbmdUYXNrczsgfQotICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
Q2xvc2VkOyB9Ci0KLSAgICB2b2lkIGNsb3NlKCkKLSAgICB7Ci0gICAgICAgIGNhbmNlbEFsbFRh
c2tzKCk7Ci0gICAgICAgIG1faXNDbG9zZWQgPSB0cnVlOwotICAgIH0KLQotICAgIHZvaWQgY2Fu
Y2VsQWxsVGFza3MoKQotICAgIHsKLSAgICAgICAgd2Vha1B0ckZhY3RvcnkoKS5yZXZva2VBbGwo
KTsKLSAgICAgICAgbV9wZW5kaW5nVGFza3MgPSAwOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAg
IH5UYXNrUXVldWVCYXNlKCkgPSBkZWZhdWx0OwotICAgIHZvaWQgaW5jcmVtZW50UGVuZGluZ1Rh
c2tzKCkgeyArK21fcGVuZGluZ1Rhc2tzOyB9Ci0gICAgdm9pZCBkZWNyZW1lbnRQZW5kaW5nVGFz
a3MoKSB7IEFTU0VSVChtX3BlbmRpbmdUYXNrcyk7IC0tbV9wZW5kaW5nVGFza3M7IH0KLQotcHJp
dmF0ZToKLSAgICB1bnNpZ25lZCBtX3BlbmRpbmdUYXNrcyB7IDAgfTsKLSAgICBib29sIG1faXND
bG9zZWQgeyBmYWxzZSB9OwotfTsKLQotLy8gUmVsaWVzIG9uIGEgc2hhcmVkIFRpbWVyLCBvbmx5
IHNhZmUgdG8gdXNlIG9uIHRoZSBNYWluVGhyZWFkLiBQbGVhc2UgdXNlIEV2ZW50TG9vcFRhc2tR
dWV1ZQotLy8gKG9yIGRpc3BhdGNoIGRpcmVjdGx5IHRvIHRoZSBIVE1MIGV2ZW50IGxvb3ApIHdo
ZW5ldmVyIHBvc3NpYmxlLgotY2xhc3MgTWFpblRocmVhZFRhc2tRdWV1ZSA6IHB1YmxpYyBUYXNr
UXVldWVCYXNlIHsKLXB1YmxpYzoKLSAgICBNYWluVGhyZWFkVGFza1F1ZXVlKCkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBlbnF1ZXVl
VGFzayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKLSAgICB7Ci0gICAgICAgIGlmIChpc0Nsb3Nl
ZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGluY3JlbWVudFBlbmRpbmdUYXNr
cygpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKSwgdGFzayA9IFdURk1vdmUodGFzayldIHsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgd2Vha1RoaXMtPmRlY3JlbWVu
dFBlbmRpbmdUYXNrcygpOwotICAgICAgICAgICAgdGFzaygpOwotICAgICAgICB9KTsKLSAgICB9
Ci19OwotCi0vLyBTaW1pbGFyIHRvIE1haW5UaHJlYWRUYXNrUXVldWUgYnV0IGJhc2VkIG9uIHRo
ZSBIVE1MIGV2ZW50IGxvb3AuCi1jbGFzcyBFdmVudExvb3BUYXNrUXVldWUgOiBwdWJsaWMgVGFz
a1F1ZXVlQmFzZSwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7Ci1wdWJsaWM6
Ci0gICAgRXZlbnRMb29wVGFza1F1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
Ci0gICAgICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkKLSAgICB7IH0K
LQotICAgIC8vIEZJWE1FOiBQYXNzIGEgVGFza1NvdXJjZSBpbnN0ZWFkIG9mIGFzc3VtaW5nIFRh
c2tTb3VyY2U6Ok1lZGlhRWxlbWVudC4KLSAgICB2b2lkIGVucXVldWVUYXNrKEZ1bmN0aW9uPHZv
aWQoKT4mJiB0YXNrKQotICAgIHsKLSAgICAgICAgaWYgKGlzQ2xvc2VkKCkgfHwgIXNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpbmNyZW1l
bnRQZW5kaW5nVGFza3MoKTsKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5ldmVu
dExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyksIHRhc2sgPSBXVEZNb3ZlKHRhc2spXSB7Ci0gICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHdlYWtU
aGlzLT5kZWNyZW1lbnRQZW5kaW5nVGFza3MoKTsKLSAgICAgICAgICAgIHRhc2soKTsKLSAgICAg
ICAgfSk7Ci0gICAgfQotfTsKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggNWZmNDQ1
Y2I5ZWU5OTZhMjU1OWViYWM3YjhmZjI4ZDg3MzBjNDNhNC4uOWY2NzllYzk5NjA0NDNlYmIxNzE5
NWM3NjRmNjg5NmJmYjk1NWE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xNzMsNyAr
MTczLDYgQEAgZW51bSBNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dCB7
CiBAaW50ZXJmYWNlIFdlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIDogTlNPYmplY3QgPEFWUGxheWVy
SXRlbUxlZ2libGVPdXRwdXRQdXNoRGVsZWdhdGUsIEFWUGxheWVySXRlbU1ldGFkYXRhT3V0cHV0
UHVzaERlbGVnYXRlLCBBVlBsYXllckl0ZW1NZXRhZGF0YUNvbGxlY3RvclB1c2hEZWxlZ2F0ZT4K
IHsKICAgICBXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+IG1fcGxh
eWVyOwotICAgIE1haW5UaHJlYWRUYXNrUXVldWUgbV90YXNrUXVldWU7CiAgICAgaW50IG1fZGVs
YXlDYWxsYmFja3M7CiB9CiAtKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpY2FsbGJhY2s7CkBAIC0xODksNyArMTg4LDYgQEAg
QGVuZAogCiBAaW50ZXJmYWNlIFdlYkNvcmVBVkZMb2FkZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0PEFW
QXNzZXRSZXNvdXJjZUxvYWRlckRlbGVnYXRlPiB7CiAgICAgV2Vha1B0cjxNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDPiBtX3BsYXllcjsKLSAgICBNYWluVGhyZWFkVGFza1F1ZXVl
IG1fdGFza1F1ZXVlOwogfQogLSAoaWQpaW5pdFdpdGhQbGF5ZXI6KFdlYWtQdHI8TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4mJilwbGF5ZXI7CiAtIChCT09MKXJlc291cmNlTG9h
ZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9y
TG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2U6KEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
ICopbG9hZGluZ1JlcXVlc3Q7CkBAIC0zNTgwLDcgKzM1NzgsNyBAQCAtICh2b2lkKWRpc2Nvbm5l
Y3QKIC0gKHZvaWQpbWV0YWRhdGFMb2FkZWQKIHsKICAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3Nl
bGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildIHsKLSAgICAgICAgbV90YXNrUXVldWUu
ZW5xdWV1ZVRhc2soW3BsYXllciA9IG1fcGxheWVyXSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3BsYXllciA9IG1fcGxheWVyXSB7CiAgICAgICAgICAgICBpZiAocGxheWVyKQogICAgICAg
ICAgICAgICAgIHBsYXllci0+bWV0YWRhdGFMb2FkZWQoKTsKICAgICAgICAgfSk7CkBAIC0zNTkx
LDcgKzM1ODksNyBAQCAtICh2b2lkKWRpZEVuZDooTlNOb3RpZmljYXRpb24gKil1bnVzZWROb3Rp
ZmljYXRpb24KIHsKICAgICBVTlVTRURfUEFSQU0odW51c2VkTm90aWZpY2F0aW9uKTsKICAgICBl
bnN1cmVPbk1haW5UaHJlYWQoW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildIHsK
LSAgICAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3BsYXllciA9IG1fcGxheWVyXSB7Cisg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3BsYXllciA9IG1fcGxheWVyXSB7CiAgICAgICAgICAg
ICBpZiAocGxheWVyKQogICAgICAgICAgICAgICAgIHBsYXllci0+ZGlkRW5kKCk7CiAgICAgICAg
IH0pOwpAQCAtMzYwMSw3ICszNTk5LDcgQEAgLSAodm9pZClkaWRFbmQ6KE5TTm90aWZpY2F0aW9u
ICopdW51c2VkTm90aWZpY2F0aW9uCiAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5
UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNv
bnRleHQ6KE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0KWNvbnRleHQK
IHsKICAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIo
c2VsZiksIGtleVBhdGggPSByZXRhaW5QdHIoa2V5UGF0aCksIGNoYW5nZSA9IHJldGFpblB0cihj
aGFuZ2UpLCBvYmplY3QgPSByZXRhaW5QdHIob2JqZWN0KSwgY29udGV4dF0oKSBtdXRhYmxlIHsK
LSAgICAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3BsYXllciA9IG1fcGxheWVyLCBrZXlQ
YXRoID0gV1RGTW92ZShrZXlQYXRoKSwgY2hhbmdlID0gV1RGTW92ZShjaGFuZ2UpLCBvYmplY3Qg
PSBXVEZNb3ZlKG9iamVjdCksIGNvbnRleHRdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
cGxheWVyID0gbV9wbGF5ZXIsIGtleVBhdGggPSBXVEZNb3ZlKGtleVBhdGgpLCBjaGFuZ2UgPSBX
VEZNb3ZlKGNoYW5nZSksIG9iamVjdCA9IFdURk1vdmUob2JqZWN0KSwgY29udGV4dF0gewogICAg
ICAgICAgICAgaWYgKCFwbGF5ZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNzAw
LDcgKzM2OTgsNyBAQCAtICh2b2lkKWxlZ2libGVPdXRwdXQ6KGlkKW91dHB1dCBkaWRPdXRwdXRB
dHRyaWJ1dGVkU3RyaW5nczooTlNBcnJheSAqKXN0cmluZ3MgbgogICAgIFVOVVNFRF9QQVJBTShv
dXRwdXQpOwogCiAgICAgZW5zdXJlT25NYWluVGhyZWFkKFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0
YWluUHRyKHNlbGYpLCBzdHJpbmdzID0gcmV0YWluUHRyKHN0cmluZ3MpLCBuYXRpdmVTYW1wbGVz
ID0gcmV0YWluUHRyKG5hdGl2ZVNhbXBsZXMpLCBpdGVtVGltZV0oKSBtdXRhYmxlIHsKLSAgICAg
ICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3BsYXllciA9IG1fcGxheWVyLCBzdHJpbmdzID0g
V1RGTW92ZShzdHJpbmdzKSwgbmF0aXZlU2FtcGxlcyA9IFdURk1vdmUobmF0aXZlU2FtcGxlcyks
IGl0ZW1UaW1lXSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3BsYXllciA9IG1fcGxheWVy
LCBzdHJpbmdzID0gV1RGTW92ZShzdHJpbmdzKSwgbmF0aXZlU2FtcGxlcyA9IFdURk1vdmUobmF0
aXZlU2FtcGxlcyksIGl0ZW1UaW1lXSB7CiAgICAgICAgICAgICBpZiAoIXBsYXllcikKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAKQEAgLTM3MTcsNyArMzcxNSw3IEBAIC0gKHZvaWQpb3V0cHV0
U2VxdWVuY2VXYXNGbHVzaGVkOihpZClvdXRwdXQKICAgICBVTlVTRURfUEFSQU0ob3V0cHV0KTsK
IAogICAgIGVuc3VyZU9uTWFpblRocmVhZChbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihz
ZWxmKV0gewotICAgICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0gbV9wbGF5
ZXJdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcGxheWVyID0gbV9wbGF5ZXJdIHsKICAg
ICAgICAgICAgIGlmIChwbGF5ZXIpCiAgICAgICAgICAgICAgICAgcGxheWVyLT5mbHVzaEN1ZXMo
KTsKICAgICAgICAgfSk7CkBAIC0zNzMzLDcgKzM3MzEsNyBAQCAtICh2b2lkKW1ldGFkYXRhT3V0
cHV0OihBVlBsYXllckl0ZW1NZXRhZGF0YU91dHB1dCAqKW91dHB1dCBkaWRPdXRwdXRUaW1lZE1l
dGFkYQogICAgIGlmICghbV9wbGF5ZXIgfHwgIW1ldGFkYXRhR3JvdXBzKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0gbV9wbGF5ZXIsIG1l
dGFkYXRhR3JvdXBzID0gcmV0YWluUHRyKG1ldGFkYXRhR3JvdXBzKSwgY3VycmVudFRpbWUgPSBt
X3BsYXllci0+Y3VycmVudE1lZGlhVGltZSgpXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcGxh
eWVyID0gbV9wbGF5ZXIsIG1ldGFkYXRhR3JvdXBzID0gcmV0YWluUHRyKG1ldGFkYXRhR3JvdXBz
KSwgY3VycmVudFRpbWUgPSBtX3BsYXllci0+Y3VycmVudE1lZGlhVGltZSgpXSB7CiAgICAgICAg
IGlmICghcGxheWVyKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNzU0LDcgKzM3NTIsNyBA
QCAtICh2b2lkKW1ldGFkYXRhQ29sbGVjdG9yOihBVlBsYXllckl0ZW1NZXRhZGF0YUNvbGxlY3Rv
ciAqKW1ldGFkYXRhQ29sbGVjdG9yIGRpZAogICAgIGlmICghbV9wbGF5ZXIgfHwgIW1ldGFkYXRh
R3JvdXBzKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhb
cGxheWVyID0gbV9wbGF5ZXIsIG1ldGFkYXRhR3JvdXBzID0gcmV0YWluUHRyKG1ldGFkYXRhR3Jv
dXBzKSwgY3VycmVudFRpbWUgPSBtX3BsYXllci0+Y3VycmVudE1lZGlhVGltZSgpXSB7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbcGxheWVyID0gbV9wbGF5ZXIsIG1ldGFkYXRhR3JvdXBzID0gcmV0
YWluUHRyKG1ldGFkYXRhR3JvdXBzKSwgY3VycmVudFRpbWUgPSBtX3BsYXllci0+Y3VycmVudE1l
ZGlhVGltZSgpXSB7CiAgICAgICAgIGlmICghcGxheWVyKQogICAgICAgICAgICAgcmV0dXJuOwog
CkBAIC0zNzgxLDcgKzM3NzksNyBAQCAtIChCT09MKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVz
b3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9yTG9hZAogICAgICAgICBy
ZXR1cm4gTk87CiAKICAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3NlbGYsIHN0cm9uZ1NlbGYgPSBy
ZXRhaW5QdHIoc2VsZiksIGxvYWRpbmdSZXF1ZXN0ID0gcmV0YWluUHRyKGxvYWRpbmdSZXF1ZXN0
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3BsYXllciA9
IG1fcGxheWVyLCBsb2FkaW5nUmVxdWVzdCA9IFdURk1vdmUobG9hZGluZ1JlcXVlc3QpXSB7Cisg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3BsYXllciA9IG1fcGxheWVyLCBsb2FkaW5nUmVxdWVz
dCA9IFdURk1vdmUobG9hZGluZ1JlcXVlc3QpXSB7CiAgICAgICAgICAgICBpZiAoIXBsYXllcikg
ewogICAgICAgICAgICAgICAgIFtsb2FkaW5nUmVxdWVzdCBmaW5pc2hMb2FkaW5nV2l0aEVycm9y
Om5pbF07CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzgwNyw3ICszODA1LDcgQEAgLSAo
dm9pZClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2Fk
ZXIgZGlkQ2FuY2VsTG9hZGluZ1IKIHsKICAgICBVTlVTRURfUEFSQU0ocmVzb3VyY2VMb2FkZXIp
OwogICAgIGVuc3VyZU9uTWFpblRocmVhZChbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihz
ZWxmKSwgbG9hZGluZ1JlcXVlc3QgPSByZXRhaW5QdHIobG9hZGluZ1JlcXVlc3QpXSgpIG11dGFi
bGUgewotICAgICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0gbV9wbGF5ZXIs
IGxvYWRpbmdSZXF1ZXN0ID0gV1RGTW92ZShsb2FkaW5nUmVxdWVzdCldIHsKKyAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbcGxheWVyID0gbV9wbGF5ZXIsIGxvYWRpbmdSZXF1ZXN0ID0gV1RGTW92
ZShsb2FkaW5nUmVxdWVzdCldIHsKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3Bl
OjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCBiNzU3N2Yy
OTU4ZDU3MDNjYmVkZDJkMmVkN2MwMGM1MmRiY2FhNzAwLi5jZWM0Y2U3ZTVkOWEyYjBiOGZlOWE5
NTc4MWZiNWZiMGQzODNjNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKQEAgLTI3LDExICsyNywxMSBAQAogCiAjaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAotI2luY2x1ZGUgIkdlbmVy
aWNUYXNrUXVldWUuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXIuaCIKICNpbmNsdWRl
ICJTb3VyY2VCdWZmZXJQcml2YXRlLmgiCiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZ3JvdXAuaD4KICNp
bmNsdWRlIDx3dGYvQm94Lmg+CisjaW5jbHVkZSA8d3RmL0NhbmNlbGxhYmxlVGFzay5oPgogI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL0xvZ2dlckhlbHBlci5oPgpAQCAtMTkzLDcgKzE5Myw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2hhc1BlbmRpbmdBcHBlbmRDb21wbGV0ZWRDYWxsYmFjayB7IGZhbHNlIH07CiAgICAgVmVjdG9y
PHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmPE1lZGlhU2FtcGxlPj4+IG1fbWVkaWFTYW1wbGVzOwot
ICAgIE1haW5UaHJlYWRUYXNrUXVldWUgbV9tZWRpYVNhbXBsZVRhc2tRdWV1ZTsKKyAgICBUYXNr
Q2FuY2VsbGVyIG1fbWVkaWFTYW1wbGVUYXNrQ2FuY2VsbGVyOwogCiAgICAgUmV0YWluUHRyPEFW
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBtX2Rpc3BsYXlMYXllcjsKICAgICBBTExPV19ORVdf
QVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGMxZjg1MTRiYTUwOTZlYmI4MzVi
MDE2NjUwMmVlMzdjYzJkOGQzNTMuLmM4MGUwOWZkMjhlMjU1Y2I5NTUzNmI0MDE1NTk1ZTVjYTE4
ZjFkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLm1tCkBAIC0zNTksNyArMzU5LDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygpCiAgICAgaWYgKG1faGFzU2Vzc2lv
blNlbWFwaG9yZSkKICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKIAot
ICAgIG1fbWVkaWFTYW1wbGVUYXNrUXVldWUuY2xvc2UoKTsKKyAgICBtX21lZGlhU2FtcGxlVGFz
a0NhbmNlbGxlci5jYW5jZWwoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2Vn
bWVudCkKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbgogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbV9tZWRpYVNhbXBsZVRhc2tRdWV1
ZS5lbnF1ZXVlVGFzayhbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0geworICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKENhbmNlbGxhYmxlVGFzayhtX21lZGlhU2FtcGxlVGFza0Nh
bmNlbGxlciwgW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldIHsKICAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC00MzksNyAr
NDM5LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFs
aXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW4KICAgICAgICAgICAgICAgICBtX2hhc1Bl
bmRpbmdBcHBlbmRDb21wbGV0ZWRDYWxsYmFjayA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGFw
cGVuZENvbXBsZXRlZCgpOwogICAgICAgICAgICAgfQotICAgICAgICB9KTsKKyAgICAgICAgfSkp
OwogICAgIH0pOwogfQogCkBAIC02NzYsNyArNjc2LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6YWJvcnQoKQogICAgIG1fcGFyc2VyLT5yZXNldFBhcnNlclN0YXRlKCk7CiAg
ICAgbV9tZWRpYVNhbXBsZXMuY2xlYXIoKTsKICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElz
SGFuZGxlZCA9IGZhbHNlOwotICAgIG1fbWVkaWFTYW1wbGVUYXNrUXVldWUuY2FuY2VsQWxsVGFz
a3MoKTsKKyAgICBtX21lZGlhU2FtcGxlVGFza0NhbmNlbGxlci5jYW5jZWwoKTsKIAogICAgIGRp
c3BhdGNoX2dyb3VwX3dhaXQobV9pc0FwcGVuZGluZ0dyb3VwLmdldCgpLCBESVNQQVRDSF9USU1F
X0ZPUkVWRVIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmgKaW5kZXggYWY0OTdkMmUxOGU2ZDU1N2U0OTQzYjE5NGFmZjQ4ZGE3YjQ2Njdl
OC4uMGRhY2UzYjc3YjM4ZTExYWE1YjdiNzcxODkzZmFlZjBlOWJjZGM5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2Fw
dHVyZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC0yOCw3ICsy
OCw2IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogI2luY2x1ZGUgIkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiR2VuZXJpY1Rh
c2tRdWV1ZS5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430772</attachid>
            <date>2021-06-07 12:16:32 -0700</date>
            <delta_ts>2021-06-07 15:23:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226734-20210607121631.patch</filename>
            <type>text/plain</type>
            <size>53968</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZhNDVlZjMwMWIzY2Y3NzBlNjljYWI1
OTA5MGQ0YmE5ZDM5YWJiNWUuLmU3OWVhZmI2NDUxNmEyODMyMGM4NjM2MGM5ZjE3NzQ1Y2E0NDY0
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjEtMDYtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIGxlZ2FjeSBNYWluVGhyZWFkVGFza1F1ZXVlICYg
RXZlbnRMb29wVGFza1F1ZXVlIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjczNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdlIHJlY2VudGx5IGludHJvZHVjZWQgdGhlIFdURjo6Q2FuY2Vs
bGFibGVUYXNrIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gY2FuY2VsCisgICAgICAgIGEgcGVuZGlu
ZyB0YXNrIGluIHRoZSBldmVudCBsb29wLCBhbmQvb3IgY2hlY2sgaWYgdGhlIHRhc2sgaXMgc3Rp
bGwgcGVuZGluZy4KKyAgICAgICAgSXQgd29ya2VkIGdyZWF0IGFzIGEgcmVwbGFjZW1lbnQgZm9y
IEV2ZW50TG9vcERlZmVycmFibGVUYXNrLiBIb3dldmVyLCBpdCB3YXMKKyAgICAgICAgaW5zdWZm
aWNpZW50IGFzIGEgcmVwbGFjZW1lbnQgZm9yIHRhc2sgcXVldWVzIChzdWNoIGFzIE1haW5UaHJl
YWRUYXNrUXVldWUgJgorICAgICAgICBFdmVudExvb3BUYXNrUXVldWUpIHNpbmNlIHRoZXJlIHdh
cyBubyBjb252ZW5pZW50IHdheSB0byBjYW5jZWwgYSBncm91cCBvZgorICAgICAgICB0YXNrcy4g
VG8gYWRkcmVzcyB0aGlzLCBJIGFtIGludHJvZHVjaW5nIFdURjo6VGFza0NhbmNlbGxlci4gV2hl
bmV2ZXIgb25lCisgICAgICAgIG5lZWRzIHRvIGNyZWF0ZSBhIENhbmNlbGxhYmxlVGFzaywgaXQg
bm93IG5lZWRzIHRvIHByb3ZpZGUgYSBUYXNrQ2FuY2VsbGVyLgorICAgICAgICBTZXZlcmFsIENh
bmNlbGxhYmxlVGFzayBvYmplY3RzIGNhbiBzaGFyZSB0aGUgc2FtZSBUYXNrQ2FuY2VsbGVyLiBD
b2RlIG5vdworICAgICAgICBub3cgc2NoZWR1bGUgb25lIG9yIG1vcmUgQ2FuY2VsbGFibGVUYXNr
cyBvbiB0aGUgZXZlbnQgbG9vcCBhbmQgaG9sZCBvbgorICAgICAgICB0byBhIFRhc2tDYW5jZWxs
ZXIuIElmIHRoZXkgbmVlZCB0byBjYW5jZWwgdGhvc2UgdGFza3MsIHRoZXkgY2FuIHNpbXBseQor
ICAgICAgICBjYWxsIGNhbmNlbCgpIG9uIHRoZSBUYXNrQ2FuY2VsbGVyLiBUaGV5IGNhbiBhbHNv
IGNoZWNrIGlmIHByZXZpb3VzbHkKKyAgICAgICAgc2NoZWR1bGVkIHRhc2tzIGFyZSBzdGlsbCBw
ZW5kaW5nIHZpYSBUYXNrQ2FuY2VsbGVyOjpoYXNQZW5kaW5nVGFzaygpLgorCisgICAgICAgICog
d3RmL0NhbmNlbGxhYmxlVGFzay5oOgorICAgICAgICAoV1RGOjpUYXNrQ2FuY2VsbGVyOjpUYXNr
Q2FuY2VsbGVyKToKKyAgICAgICAgKFdURjo6VGFza0NhbmNlbGxlcjo6Y2FuY2VsKToKKyAgICAg
ICAgKFdURjo6VGFza0NhbmNlbGxlcjo6aGFzUGVuZGluZ1Rhc2sgY29uc3QpOgorICAgICAgICAo
V1RGOjpUYXNrQ2FuY2VsbGVyOjpJbXBsOjpjYW5jZWwpOgorICAgICAgICAoV1RGOjpUYXNrQ2Fu
Y2VsbGVyOjpJbXBsOjpoYXNQZW5kaW5nVGFzayBjb25zdCk6CisgICAgICAgIChXVEY6OlRhc2tD
YW5jZWxsZXI6OkhhbmRsZTo6aXNDYW5jZWxsZWQgY29uc3QpOgorICAgICAgICAoV1RGOjpUYXNr
Q2FuY2VsbGVyOjpIYW5kbGU6OkhhbmRsZSk6CisgICAgICAgIChXVEY6OlRhc2tDYW5jZWxsZXI6
OmNyZWF0ZUhhbmRsZSk6CisgICAgICAgIChXVEY6OkNhbmNlbGxhYmxlVGFzazo6Q2FuY2VsbGFi
bGVUYXNrKToKKyAgICAgICAgKFdURjo6Q2FuY2VsbGFibGVUYXNrOjpvcGVyYXRvcigpKToKKyAg
ICAgICAgKiB3dGYvV2Vha1B0ci5oOgorICAgICAgICAoV1RGOjpXZWFrUHRyRmFjdG9yeTo6d2Vh
a1B0ckNvdW50IGNvbnN0KToKKwogMjAyMS0wNi0wNyAgQWxpY2lhIEJveWEgR2FyY8OtYSAgPGFi
b3lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dURl1bR1N0cmVhbWVyXSBGaXggY2xhbmcgVFNB
IHdhcm5pbmdzIGluIFdURjo6RGF0YU11dGV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWY5OTQ3NTA4ZjQ3MmE4
NjJmOTRkMWM5Y2QxZmZlZDgwMjRiYjZkNi4uZDc0Y2ZiYWRmY2RjYWZmMDljMTFjZjIyN2RmYzQy
YjY0NDlmOGVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIxLTA2LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBsZWdhY3kgTWFpblRo
cmVhZFRhc2tRdWV1ZSAmIEV2ZW50TG9vcFRhc2tRdWV1ZSBjbGFzc2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3MzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEcm9wIGxlZ2FjeSBNYWluVGhyZWFk
VGFza1F1ZXVlICYgRXZlbnRMb29wVGFza1F1ZXVlIGNsYXNzZXMuIENvZGUgdGhhdCB3YXMgdXNp
bmcgTWFpblRocmVhZFRhc2tRdWV1ZQorICAgICAgICBpcyBub3cgY2FsbGluZyBjYWxsT25NYWlu
VGhyZWFkKCkgZGlyZWN0bHkuIENhbGwgdGhhdCB3YXMgdXNpbmcgRXZlbnRMb29wVGFza1F1ZXVl
IGlzIG5vdyB1c2luZyB0aGUKKyAgICAgICAgSFRNTCBldmVudCBsb29wIGRpcmVjdGx5LiBJZiBz
YWlkIGNvZGUgbmVlZGVkIHRvIGNhbmNlbCB0YXNrcyBvciBjaGVjayBpZiBhIHByZXZpb3VzbHkg
c2NoZWR1bGVkIHRhc2sKKyAgICAgICAgaXMgc3RpbGwgcGVuZGluZywgaXQgbm93IHJlbGllcyBv
biBXVEY6OkNhbmNlbGxhYmxlVGFzayAvIFdURjo6VGFza0NhbmNlbGxlciB0byBkbyBzby4KKwor
ICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5jcHA6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZXNDb250cm9s
bGVyOjpjYWNoZUN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxp
bmVzQ29udHJvbGxlcjo6bWF5YmVDbGVhckNhY2hlZEN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBh
bmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmg6CisgICAgICAgICogZG9tL0Fj
dGl2ZURPTU9iamVjdC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6On5IVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OnNjaGVkdWxlTmV4dFNvdXJjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnNjaGVkdWxlQ2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGFiaWxpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlQ29uZmlndXJlVGV4dFRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZU1lZGlhRW5naW5lV2Fz
VXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVVw
ZGF0ZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5j
ZWxQZW5kaW5nVGFza3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xl
YXJNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbG9z
ZVRhc2tRdWV1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c3VzcGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptYXJrQ2FwdGlvbkFu
ZFN1YnRpdGxlVHJhY2tzQXNVbmNvbmZpZ3VyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJCdWZmZXJlZFRpbWVSYW5nZXNDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlVXBkYXRlTWVkaWFTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja0NvbnRyb2xzTWFu
YWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgICgtW1dlYkNvcmVB
VkZNb3ZpZU9ic2VydmVyIG1ldGFkYXRhTG9hZGVkXSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZN
b3ZpZU9ic2VydmVyIGRpZEVuZDpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2
ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAg
ICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgbGVnaWJsZU91dHB1dDpkaWRPdXRwdXRB
dHRyaWJ1dGVkU3RyaW5nczpuYXRpdmVTYW1wbGVCdWZmZXJzOmZvckl0ZW1UaW1lOl0pOgorICAg
ICAgICAoLVtXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6
XSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIG1ldGFkYXRhT3V0cHV0OmRp
ZE91dHB1dFRpbWVkTWV0YWRhdGFHcm91cHM6ZnJvbVBsYXllckl0ZW1UcmFjazpdKToKKyAgICAg
ICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgbWV0YWRhdGFDb2xsZWN0b3I6ZGlkQ29sbGVj
dERhdGVSYW5nZU1ldGFkYXRhR3JvdXBzOmluZGV4ZXNPZk5ld0dyb3VwczppbmRleGVzT2ZNb2Rp
ZmllZEdyb3VwczpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlIHJlc291
cmNlTG9hZGVyOnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZTpdKToKKyAg
ICAgICAgKC1bV2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlIHJlc291cmNlTG9hZGVyOmRpZENhbmNl
bExvYWRpbmdSZXF1ZXN0Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6flNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YWJvcnQpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6
CisKIDIwMjEtMDYtMDcgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZhY3RvciBzZWxlY3Rpb24gc3RhdGUgY29tcHV0YXRpb24gb3V0IG9mIExlZ2FjeUlubGlu
ZVRleHRCb3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NhbmNlbGxhYmxlVGFzay5oIGIv
U291cmNlL1dURi93dGYvQ2FuY2VsbGFibGVUYXNrLmgKaW5kZXggMDY3NWMyYjJjNGMwYzA3MWUz
ZjgyNGY2MDNlOGM4M2U1YTFmNGMxMC4uODZkYTc5MGY2YTY5M2M5NTRhMGQ3N2JjOGY3YWUwODUy
ZWViNzM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ2FuY2VsbGFibGVUYXNrLmgKKysr
IGIvU291cmNlL1dURi93dGYvQ2FuY2VsbGFibGVUYXNrLmgKQEAgLTMxLDU5ICszMSw2MiBAQAog
CiBuYW1lc3BhY2UgV1RGIHsKIAotbmFtZXNwYWNlIERldGFpbCB7Ci1zdHJ1Y3QgQ2FuY2VsbGFi
bGVUYXNrSW1wbCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDYW5jZWxsYWJsZVRhc2tJbXBsPiB7
Ci0gICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgIGV4cGxpY2l0IENhbmNl
bGxhYmxlVGFza0ltcGwoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spIDogdGFzayhXVEZNb3ZlKHRh
c2spKSB7IH0KLSAgICBGdW5jdGlvbjx2b2lkKCk+IHRhc2s7Ci19OwotfQorY2xhc3MgQ2FuY2Vs
bGFibGVUYXNrOwogCi1jbGFzcyBDYW5jZWxsYWJsZVRhc2sgeworY2xhc3MgVGFza0NhbmNlbGxl
ciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNrQ2FuY2VsbGVyPiB7CiBwdWJsaWM6Ci0gICAg
ZXhwbGljaXQgQ2FuY2VsbGFibGVUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgVGFza0Nh
bmNlbGxlcigpIDogbV9pbXBsKG1ha2VVbmlxdWVSZWY8SW1wbD4oKSkgeyB9CisgICAgdm9pZCBj
YW5jZWwoKSB7IG1faW1wbC0+Y2FuY2VsKCk7IH0KKyAgICBib29sIGhhc1BlbmRpbmdUYXNrKCkg
Y29uc3QgeyByZXR1cm4gbV9pbXBsLT5oYXNQZW5kaW5nVGFzaygpOyB9CiAKLSAgICB2b2lkIG9w
ZXJhdG9yKCkoKTsKLSAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuICEhbV90YXNr
V3JhcHBlci0+dGFzazsgfQotICAgIHZvaWQgY2FuY2VsKCkgeyBtX3Rhc2tXcmFwcGVyLT50YXNr
ID0gbnVsbHB0cjsgfQorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQ2FuY2VsbGFibGVUYXNr
OworICAgIGNsYXNzIEltcGwgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1wbD4geworICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIHZvaWQgY2Fu
Y2VsKCkgeyB3ZWFrUHRyRmFjdG9yeSgpLnJldm9rZUFsbCgpOyB9CisgICAgICAgIGJvb2wgaGFz
UGVuZGluZ1Rhc2soKSBjb25zdCB7IHJldHVybiB3ZWFrUHRyRmFjdG9yeSgpLndlYWtQdHJDb3Vu
dCgpOyB9CisgICAgfTsKIAogICAgIGNsYXNzIEhhbmRsZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBIYW5kbGUoKSA9IGRlZmF1bHQ7Ci0gICAgICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV90YXNrV3JhcHBlciAmJiBtX3Rhc2tXcmFwcGVyLT50YXNrOyB9Ci0gICAgICAgIHZv
aWQgY2FuY2VsKCk7CisgICAgICAgIGJvb2wgaXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiAh
bV9pbXBsOyB9CisgICAgICAgIHZvaWQgdGFza0lzTm9Mb25nZXJQZW5kaW5nKCkgeyBtX2ltcGwg
PSBudWxscHRyOyB9CiAgICAgcHJpdmF0ZToKLSAgICAgICAgZnJpZW5kIGNsYXNzIENhbmNlbGxh
YmxlVGFzazsKLSAgICAgICAgZXhwbGljaXQgSGFuZGxlKERldGFpbDo6Q2FuY2VsbGFibGVUYXNr
SW1wbCYpOwotICAgICAgICBXZWFrUHRyPERldGFpbDo6Q2FuY2VsbGFibGVUYXNrSW1wbD4gbV90
YXNrV3JhcHBlcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFRhc2tDYW5jZWxsZXI7CisgICAgICAg
IGV4cGxpY2l0IEhhbmRsZShJbXBsJiBpbXBsKSA6IG1faW1wbChtYWtlV2Vha1B0cihpbXBsKSkg
eyB9CisgICAgICAgIFdlYWtQdHI8SW1wbD4gbV9pbXBsOwogICAgIH07CisgICAgSGFuZGxlIGNy
ZWF0ZUhhbmRsZSgpIHsgcmV0dXJuIEhhbmRsZSB7IG1faW1wbCB9OyB9CisKKyAgICBVbmlxdWVS
ZWY8SW1wbD4gbV9pbXBsOworfTsKIAotICAgIEhhbmRsZSBjcmVhdGVIYW5kbGUoKSB7IHJldHVy
biBIYW5kbGUgeyBtX3Rhc2tXcmFwcGVyLmdldCgpIH07IH0KK2NsYXNzIENhbmNlbGxhYmxlVGFz
ayB7CitwdWJsaWM6CisgICAgQ2FuY2VsbGFibGVUYXNrKFRhc2tDYW5jZWxsZXImLCBGdW5jdGlv
bjx2b2lkKCk+JiYpOworICAgIHZvaWQgb3BlcmF0b3IoKSgpOwogCiBwcml2YXRlOgotICAgIFVu
aXF1ZVJlZjxEZXRhaWw6OkNhbmNlbGxhYmxlVGFza0ltcGw+IG1fdGFza1dyYXBwZXI7CisgICAg
VGFza0NhbmNlbGxlcjo6SGFuZGxlIG1fdGFza0NhbmNlbGxlcjsKKyAgICBGdW5jdGlvbjx2b2lk
KCk+IG1fdGFzazsKIH07CiAKLWlubGluZSBDYW5jZWxsYWJsZVRhc2s6OkNhbmNlbGxhYmxlVGFz
ayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKLSAgICA6IG1fdGFza1dyYXBwZXIobWFrZVVuaXF1
ZVJlZjxEZXRhaWw6OkNhbmNlbGxhYmxlVGFza0ltcGw+KFdURk1vdmUodGFzaykpKQoraW5saW5l
IENhbmNlbGxhYmxlVGFzazo6Q2FuY2VsbGFibGVUYXNrKFRhc2tDYW5jZWxsZXImIHRhc2tDYW5j
ZWxsZXIsIEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQorICAgIDogbV90YXNrQ2FuY2VsbGVyKHRh
c2tDYW5jZWxsZXIuY3JlYXRlSGFuZGxlKCkpCisgICAgLCBtX3Rhc2soV1RGTW92ZSh0YXNrKSkK
IHsgfQogCiBpbmxpbmUgdm9pZCBDYW5jZWxsYWJsZVRhc2s6Om9wZXJhdG9yKCkoKQogewotICAg
IGlmIChhdXRvIHRhc2sgPSBzdGQ6OmV4Y2hhbmdlKG1fdGFza1dyYXBwZXItPnRhc2ssIG51bGxw
dHIpKQotICAgICAgICB0YXNrKCk7Ci19Ci0KLWlubGluZSBDYW5jZWxsYWJsZVRhc2s6OkhhbmRs
ZTo6SGFuZGxlKERldGFpbDo6Q2FuY2VsbGFibGVUYXNrSW1wbCYgdGFzaykKLSAgICA6IG1fdGFz
a1dyYXBwZXIobWFrZVdlYWtQdHIodGFzaykpCi17IH0KKyAgICBpZiAobV90YXNrQ2FuY2VsbGVy
LmlzQ2FuY2VsbGVkKCkpCisgICAgICAgIHJldHVybjsKIAotaW5saW5lIHZvaWQgQ2FuY2VsbGFi
bGVUYXNrOjpIYW5kbGU6OmNhbmNlbCgpCi17Ci0gICAgaWYgKG1fdGFza1dyYXBwZXIpCi0gICAg
ICAgIG1fdGFza1dyYXBwZXItPnRhc2sgPSBudWxscHRyOworICAgIG1fdGFza0NhbmNlbGxlci50
YXNrSXNOb0xvbmdlclBlbmRpbmcoKTsKKyAgICBtX3Rhc2soKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCiAKIHVzaW5nIFdURjo6Q2FuY2VsbGFibGVUYXNrOwordXNpbmcgV1RGOjpUYXNrQ2Fu
Y2VsbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV2Vha1B0ci5oIGIvU291cmNlL1dU
Ri93dGYvV2Vha1B0ci5oCmluZGV4IDJlOWY1NjZmODVhMTEzM2EzNzE1MWQ4MDFiMzRlNzhhZjIy
MjBlOTEuLjEyYzRiNjg5ODg3Mjk5M2ExYTUzZjU5Zjk2YjZkMGFiZjI2N2IwYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9XZWFrUHRy
LmgKQEAgLTE4NSw2ICsxODUsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1faW1wbCA9IG51bGxwdHI7
CiAgICAgfQogCisgICAgdW5zaWduZWQgd2Vha1B0ckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9p
bXBsID8gbV9pbXBsLT5yZWZDb3VudCgpIC0gMSA6IDA7IH0KKwogI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsOyB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGM4NDQzMWRkNjgzOWQ5MDYwYTVmMzUyNDJhODg1OWJh
MWE0OTNjZDkuLjM5MDM4N2UyNDIyNzBkMDQ5NTM1ZTdhMGI5YWFjNWQ1NjAxZTU3OTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQpAQCAtMTAzNCw3ICsxMDM0LDYgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9G
UkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL0ZpbGVNb25pdG9yLmgKICAgICBwbGF0Zm9y
bS9GaWxlU3RyZWFtQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9GbG9hdENvbnZlcnNpb24uaAotICAg
IHBsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaAogICAgIHBsYXRmb3JtL0hvc3RXaW5kb3cuaAog
ICAgIHBsYXRmb3JtL0tleWVkQ29kaW5nLmgKICAgICBwbGF0Zm9ybS9LZXlwcmVzc0NvbW1hbmQu
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN5c3RlbUFjY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3lzdGVtQWNjZXNzLmNwcAppbmRleCA4NzlkM2U1ZTkzNWRlODlhYzA3OTcy
OGVjNWRhZTAyZTVmNjBkZGZhLi4zZTM0MDJjMjNmYzAyNjBmODgyYTdmZDE3NGRmOTRjYWYzMjdi
NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3lzdGVtQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtQWNjZXNzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkNETS5oIgogI2luY2x1ZGUgIkNETUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZl
cnJlZC5oIgogI2luY2x1ZGUgIkpTTWVkaWFLZXlzLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlzLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL01l
ZGlhQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmls
aXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDJjZGM2OWYxNWQ1YThjMDdlNWNiYWE2
ZmU2YzdkMWY0OGM5MGI0MzguLmMzMzYwNGY2NGM5NzUzZTg5OTQwYmFlODEzMzIxMDU3NjgwNDBl
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMv
TWVkaWFDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFj
YXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJDb250ZW50VHlwZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
RXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRl
ICJKU01lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvLmgiCiAjaW5jbHVkZSAiSlNNZWRpYUNh
cGFiaWxpdGllc0VuY29kaW5nSW5mby5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIxMmYxODJjMmZiMTI1ODFlN2JmOTdhYTll
MDVhNmM0NTNhMWVjMGIuLjQ1YmUyYmUyMzNmOWQxMTFlNDZlZTUxY2NlYTg2ZTg2NWEzZjBmYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTQzODYsNyArNDM4Niw2IEBACiAJCUNENUZGNDlDMjE2MkU0Q0YwMDRCRDg2RiAvKiBJ
U09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDEyRjc1QTlBODZFQTAzREFGMjRCNzk3MSAvKiBJ
U09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDVGRjQ5RDIxNjJFNERCMDA0QkQ4NkYg
LyogSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODcxQzYwMUZCNTJCNjUwMEYwQjk2NSAvKiBJU09Qcm90
ZWN0aW9uU2NoZW1lSW5mb0JveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUNENUZGNDlFMjE2MkU0RTgwMDRCRDg2RiAvKiBJU09PcmlnaW5hbEZv
cm1hdEJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0Q4NzFDNjcxRkI1MkI2ODAwRjBCOTY1IC8qIElTT09yaWdpbmFsRm9ybWF0Qm94LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQ0Q2MkZCOTYxQUYw
MThFNzAwMTJFRDdEIC8qIEdlbmVyaWNUYXNrUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENjJGQjk0MUFGMDE4RTcwMDEyRUQ3RCAvKiBHZW5l
cmljVGFza1F1ZXVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0Q2NDFFQjMxODE4RjVFRDAwRUU0QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q2NDFFQjEx
ODE4RjVFRDAwRUU0QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNENjQxRUI0MTgxOEY1RUQwMEVFNEM0
MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDY0MUVCMjE4MThGNUVEMDBFRTRDNDEgLyogU291cmNlQnVmZmVy
UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUNENzIwQjRGMjI2OEI1MTMwMDA0N0ZERSAvKiBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hC
b3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENzIw
QjQ5MjI2ODJDN0YwMDA0N0ZERSAvKiBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQ5OTksNyAr
MTQ5OTgsNiBAQAogCQlDRDVEMjc3NjFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJl
c3Npb25TZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDVF
NUI1RTFBMTVDRTU0MDAwQzYwOUUgLyogUGFnZUNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0Q1RTVCNjAxQTE1RjE1NjAwMEM2MDlFIC8qIFBhZ2VDb25maWd1cmF0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VDb25maWd1
cmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0Q2MkZCOTQxQUYwMThF
NzAwMTJFRDdEIC8qIEdlbmVyaWNUYXNrUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR2VuZXJpY1Rhc2tRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRDY0MUVCMTE4MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU291cmNlUHJpdmF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDY0MUVCMjE4MThGNUVEMDBFRTRDNDEgLyogU291cmNl
QnVmZmVyUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VC
dWZmZXJQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENjQxRUM3MTgx
RUQ2MDEwMEVFNEM0MSAvKiBNZWRpYVNhbXBsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNhbXBs
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjgwNjgsNyArMjgwNjYsNiBAQAog
CQkJCUJDMDczQkE5MEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9hdENvbnZlcnNpb24uaCAqLywKIAkJ
CQk0MTkwRjNBMTI0OUQxNTI3MDA1MzFDNTcgLyogRnJhbWVSYXRlTW9uaXRvci5jcHAgKi8sCiAJ
CQkJNDE5MEYzQTMyNDlEMTUyODAwNTMxQzU3IC8qIEZyYW1lUmF0ZU1vbml0b3IuaCAqLywKLQkJ
CQlDRDYyRkI5NDFBRjAxOEU3MDAxMkVEN0QgLyogR2VuZXJpY1Rhc2tRdWV1ZS5oICovLAogCQkJ
CUE4NzQ4QkRGMTJDQkYyREMwMDFGQkE0MSAvKiBIYXNoVG9vbHMuaCAqLywKIAkJCQlCQzNCQzI5
QjBFOTFBQjBGMDA4MzU1ODggLyogSG9zdFdpbmRvdy5oICovLAogCQkJCUY0OEI3RDUyMjVDMzQx
RTYwMDlFNzVERCAvKiBJbWFnZUV4dHJhY3Rpb25SZXN1bHQuaCAqLywKQEAgLTMyNDcxLDcgKzMy
NDY4LDYgQEAKIAkJCQk0MUZBQkQyRDFGNERGRTRBMDA2QTZDOTcgLyogRE9NQ2FjaGVFbmdpbmUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxMzgwQzI5MUYzNDM2QUMwMDE1NUZEQSAvKiBET01DYWNo
ZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCREEzRkZFMjE1MUI2RjUwMEZENjYwNCAv
KiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0
NDdGNUIzMjY2Q0Y2M0QwMDEzM0YwMCAvKiBUZXh0Qm94U2VsZWN0YWJsZVJhbmdlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGQzlBMEY3NTE2NDA5NENGMDAzRDZCOEQgLyogRE9NQ1NTTmFtZXNwYWNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjZCNUNCRDIxNjQwRUZGMDA2MDM4MTcgLyogRE9NQ1NT
UGFpbnRXb3JrbGV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QkRBM0ZGRjIxNTFCNkY1MDBGRDY2
MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
Mjc4OCw3ICszMjc4NCw2IEBACiAJCQkJQzBDMDU0Q0MxMTE4QzhFNDAwQ0UyNjM2IC8qIGdlbmVy
YXRlLWJpbmRpbmdzLnBsIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyM0YwREIwREFGRjRBNDAwOUZE
QzkxIC8qIEdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzAwMzBGNjFCN0Qz
M0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKLQkJCQlDRDYyRkI5NjFBRjAxOEU3MDAxMkVEN0QgLyogR2VuZXJpY1Rhc2tRdWV1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjQxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyNTE0RjREREU2MDAzRTdBNzEgLyogR2VvbG9j
YXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI3MTRGNERERTYwMDNFN0E3
MCAvKiBHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzU2NzYsNiAr
MzU2NzEsNyBAQAogCQkJCUNFN0IyREI1MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTREQ0U2MTg4MTA1MUQwMDNFRURC
QiAvKiBUZXh0QXV0b1NpemluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMzQwRDAwNkMx
RDAwRUY2RjI2IC8qIFRleHRCb3VuZGFyaWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDQ3RjVC
MzI2NkNGNjNEMDAxMzNGMDAgLyogVGV4dEJveFNlbGVjdGFibGVSYW5nZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTcxNTFCRDgxMkYxNTU4RjAwNUEwRjY0IC8qIFRleHRDaGVja2VyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNzdEMDAxMjEzM0IwQUVCMDBENjY1OEMgLyogVGV4dENoZWNr
aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0RCRjhERTEyNzY5MTlDMDA2QjYwMDggLyogVGV4
dENoZWNraW5nSGVscGVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAKaW5kZXggYTJj
NjY1OTVmNDYwZTg2YmIxNDY2OTM2OTU1Yjk1NWQ4YTkwNmExOS4uMGU0NzY5MDY0ZWJiZjViZWFj
OWY1OGQyMjNhMTgyMTYyNjllZmY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAKQEAgLTUxLDEwICs1MSw3
IEBAIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6RG9jdW1lbnRUaW1lbGluZXNDb250cm9s
bGVyKERvY3VtZW50JiBkb2N1bWVudCkKICAgICB9CiB9CiAKLURvY3VtZW50VGltZWxpbmVzQ29u
dHJvbGxlcjo6fkRvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcigpCi17Ci0gICAgbV9jdXJyZW50
VGltZUNsZWFyaW5nVGFzay5jYW5jZWwoKTsKLX0KK0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxl
cjo6fkRvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcigpID0gZGVmYXVsdDsKIAogdm9pZCBEb2N1
bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OmFkZFRpbWVsaW5lKERvY3VtZW50VGltZWxpbmUmIHRp
bWVsaW5lKQogewpAQCAtNzMsNyArNzAsNyBAQCB2b2lkIERvY3VtZW50VGltZWxpbmVzQ29udHJv
bGxlcjo6cmVtb3ZlVGltZWxpbmUoRG9jdW1lbnRUaW1lbGluZSYgdGltZWxpbmUpCiAKIHZvaWQg
RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjpkZXRhY2hGcm9tRG9jdW1lbnQoKQogewotICAg
IG1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2suY2FuY2VsKCk7CisgICAgbV9jdXJyZW50VGltZUNs
ZWFyaW5nVGFza0NhbmNlbGxlci5jYW5jZWwoKTsKIAogICAgIHdoaWxlICghbV90aW1lbGluZXMu
Y29tcHV0ZXNFbXB0eSgpKQogICAgICAgICBtX3RpbWVsaW5lcy5iZWdpbigpLT5kZXRhY2hGcm9t
RG9jdW1lbnQoKTsKQEAgLTIzMyw5ICsyMzAsOCBAQCB2b2lkIERvY3VtZW50VGltZWxpbmVzQ29u
dHJvbGxlcjo6Y2FjaGVDdXJyZW50VGltZShSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMgbmV3Qwog
ICAgIC8vIGFuaW1hdGlvbnMsIHNvIHdlIHNjaGVkdWxlIHRoZSBpbnZhbGlkYXRpb24gdGFzayBh
bmQgcmVnaXN0ZXIgYSB3aGVuSWRsZSBjYWxsYmFjayBvbiB0aGUgVk0sIHdoaWNoIHdpbGwKICAg
ICAvLyBmaXJlIHN5bmNyb25vdXNseSBpZiBubyBKUyBpcyBydW5uaW5nLgogICAgIG1fd2FpdGlu
Z09uVk1JZGxlID0gdHJ1ZTsKLSAgICBpZiAoIW1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2suaXNQ
ZW5kaW5nKCkpIHsKLSAgICAgICAgQ2FuY2VsbGFibGVUYXNrIHRhc2soc3RkOjpiaW5kKCZEb2N1
bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6Om1heWJlQ2xlYXJDYWNoZWRDdXJyZW50VGltZSwgdGhp
cykpOwotICAgICAgICBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrID0gdGFzay5jcmVhdGVIYW5k
bGUoKTsKKyAgICBpZiAoIW1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2tDYW5jZWxsZXIuaGFzUGVu
ZGluZ1Rhc2soKSkgeworICAgICAgICBDYW5jZWxsYWJsZVRhc2sgdGFzayhtX2N1cnJlbnRUaW1l
Q2xlYXJpbmdUYXNrQ2FuY2VsbGVyLCBzdGQ6OmJpbmQoJkRvY3VtZW50VGltZWxpbmVzQ29udHJv
bGxlcjo6bWF5YmVDbGVhckNhY2hlZEN1cnJlbnRUaW1lLCB0aGlzKSk7CiAgICAgICAgIG1fZG9j
dW1lbnQuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkludGVybmFsQXN5bmNUYXNr
LCBXVEZNb3ZlKHRhc2spKTsKICAgICB9CiAgICAgLy8gV2UgZXh0ZW50IHRoZSBhc3NvY2lhdGVk
IERvY3VtZW50J3MgbGlmZWN5Y2xlIHVudGlsIHRoZSBWTSBiZWNhbWUgaWRsZSBzaW5jZSB0aGUg
RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyCkBAIC0yNTIsNyArMjQ4LDcgQEAgdm9pZCBEb2N1
bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6Om1heWJlQ2xlYXJDYWNoZWRDdXJyZW50VGltZSgpCiAg
ICAgLy8gSlMgb3Igd2FpdGluZyBvbiBhbGwgY3VycmVudCBhbmltYXRpb24gdXBkYXRpbmcgY29k
ZSB0byBoYXZlIGNvbXBsZXRlZC4gVGhpcyBpcyBzbyB0aGF0CiAgICAgLy8gd2UncmUgZ3VhcmFu
dGVlZCB0byBoYXZlIGEgY29uc2lzdGVudCBjdXJyZW50IHRpbWUgcmVwb3J0ZWQgZm9yIGFsbCB3
b3JrIGhhcHBlbmluZyBpbiBhIGdpdmVuCiAgICAgLy8gSlMgZnJhbWUgb3IgdGhyb3VnaG91dCB1
cGRhdGluZyBhbmltYXRpb25zIGluIFdlYkNvcmUuCi0gICAgaWYgKCFtX2lzU3VzcGVuZGVkICYm
ICFtX3dhaXRpbmdPblZNSWRsZSAmJiAhbV9jdXJyZW50VGltZUNsZWFyaW5nVGFzay5pc1BlbmRp
bmcoKSkKKyAgICBpZiAoIW1faXNTdXNwZW5kZWQgJiYgIW1fd2FpdGluZ09uVk1JZGxlICYmICFt
X2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrQ2FuY2VsbGVyLmhhc1BlbmRpbmdUYXNrKCkpCiAgICAg
ICAgIG1fY2FjaGVkQ3VycmVudFRpbWUgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuaApp
bmRleCA5NzFiY2Q2MjE2NGIzZWU3ZWZkZWVhNjk0MjVkYjU4NTcwNjQwY2RlLi45ZWE2NmQyMWQ5
ZDhlZDUwZjczZjNhMjNhNDM3N2M1ZDg3ZDc4MWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oCkBAIC02Nyw3ICs2
Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXliZUNsZWFyQ2FjaGVkQ3VycmVudFRpbWUoKTsK
IAogICAgIFdlYWtIYXNoU2V0PERvY3VtZW50VGltZWxpbmU+IG1fdGltZWxpbmVzOwotICAgIENh
bmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2s7CisgICAgVGFz
a0NhbmNlbGxlciBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrQ2FuY2VsbGVyOwogICAgIERvY3Vt
ZW50JiBtX2RvY3VtZW50OwogICAgIE1hcmthYmxlPFNlY29uZHMsIFNlY29uZHM6Ok1hcmthYmxl
VHJhaXRzPiBtX2NhY2hlZEN1cnJlbnRUaW1lOwogICAgIGJvb2wgbV9pc1N1c3BlbmRlZCB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggNDUwNGVhMTFmOTgx
OTM1YzFiODhiZmQ5ZDEyMGU2OTllZjZiMDlmZi4uN2M2NzRjZmZmNzliYzM3OTQ2YTQxY2EyN2Vm
NWExM2QxZTZiMzdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaApAQCAtMTEy
LDE0ICsxMTIsMTIgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci0gICAgc3RhdGljIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIHF1ZXVlQ2FuY2VsbGFibGVUYXNr
S2VlcGluZ09iamVjdEFsaXZlKFQmIG9iamVjdCwgVGFza1NvdXJjZSBzb3VyY2UsIEZ1bmN0aW9u
PHZvaWQoKT4mJiB0YXNrKQorICAgIHN0YXRpYyB2b2lkIHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2Vl
cGluZ09iamVjdEFsaXZlKFQmIG9iamVjdCwgVGFza1NvdXJjZSBzb3VyY2UsIFRhc2tDYW5jZWxs
ZXImIHRhc2tDYW5jZWxsZXIsIEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogICAgIHsKLSAgICAg
ICAgQ2FuY2VsbGFibGVUYXNrIGNhbmNlbGxhYmxlVGFzayhXVEZNb3ZlKHRhc2spKTsKLSAgICAg
ICAgYXV0byB0YXNrSGFuZGxlID0gY2FuY2VsbGFibGVUYXNrLmNyZWF0ZUhhbmRsZSgpOworICAg
ICAgICBDYW5jZWxsYWJsZVRhc2sgY2FuY2VsbGFibGVUYXNrKHRhc2tDYW5jZWxsZXIsIFdURk1v
dmUodGFzaykpOwogICAgICAgICBvYmplY3QucXVldWVUYXNrSW5FdmVudExvb3Aoc291cmNlLCBb
cHJvdGVjdGVkT2JqZWN0ID0gbWFrZVJlZihvYmplY3QpLCBhY3Rpdml0eSA9IG9iamVjdC5BY3Rp
dmVET01PYmplY3Q6Om1ha2VQZW5kaW5nQWN0aXZpdHkob2JqZWN0KSwgY2FuY2VsbGFibGVUYXNr
ID0gV1RGTW92ZShjYW5jZWxsYWJsZVRhc2spXSgpIG11dGFibGUgewogICAgICAgICAgICAgY2Fu
Y2VsbGFibGVUYXNrKCk7CiAgICAgICAgIH0pOwotICAgICAgICByZXR1cm4gdGFza0hhbmRsZTsK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFdmVudFRhcmdldFR5cGUsIHR5cGVuYW1l
IEV2ZW50VHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMmFhZDBlNWRlMGM4NmVmOWFmODkw
OWNjYzlhM2Y0MWY2M2ZjNzBiZi4uYjQ3MWE2M2NmNTg2YzgyMzE1ZTJkNjUwZjAwZDk5ZTY5NjY1
NTZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJG
cmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJGcmFtZUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCi0jaW5jbHVkZSAiR2VuZXJpY1Rhc2tRdWV1
ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2Vy
LmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxs
c2NyZWVuTWFuYWdlci5jcHAKaW5kZXggODBlMzM2ZjQ5M2FhZTViYzA5MGU0MmU5YmNmOWU4ZmY5
YWQ3MjMzMi4uYmJiNzJkMzliMGU5YzUwMTRlNTJmNDA1MGZhNDJlYTU3YWY3MmU2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAK
ICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRl
ICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMWE0ZDMzNGQ2ODBlNjYwNWU0MDNjMWEyZjRiYzA1MGMy
NjcwNmNmYy4uMGMxNjE2NjVhZTMzMDE2MzgxNjlmNGUyMDUwN2FlMGJmM2QzY2RkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zOTQsNyArMzk0LDYgQEAg
SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICAgICAsIG1fc2NhblRpbWVyKCp0aGlzLCAmSFRNTE1l
ZGlhRWxlbWVudDo6c2NhblRpbWVyRmlyZWQpCiAgICAgLCBtX3BsYXliYWNrQ29udHJvbHNNYW5h
Z2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lcigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lckZpcmVkKQogICAg
ICwgbV9zZWVrVG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRUaW1lcigqdGhpcywgJkhUTUxNZWRpYUVs
ZW1lbnQ6OnNlZWtUb1BsYXliYWNrUG9zaXRpb25FbmRlZFRpbWVyRmlyZWQpCi0gICAgLCBtX3Jl
c291cmNlU2VsZWN0aW9uVGFza1F1ZXVlKCZkb2N1bWVudCkKICAgICAsIG1fYXN5bmNFdmVudFF1
ZXVlKEV2ZW50TG9vcEV2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX2xhc3RUaW1l
VXBkYXRlRXZlbnRNb3ZpZVRpbWUoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKQog
ICAgICwgbV9maXJzdFRpbWVQbGF5aW5nKHRydWUpCkBAIC01NjcsMTEgKzU2Niw2IEBAIEhUTUxN
ZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAgICBpZiAobV9pc29sYXRlZFdvcmxk
KQogICAgICAgICBtX2lzb2xhdGVkV29ybGQtPmNsZWFyV3JhcHBlcnMoKTsKIAotICAgIG1fc2Vl
a1Rhc2suY2FuY2VsKCk7Ci0gICAgbV9yZXN1bWVUYXNrLmNhbmNlbCgpOwotICAgIG1fcGxheWJh
Y2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1Rhc2suY2FuY2VsKCk7Ci0gICAg
bV9yZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZS5jbG9zZSgpOwotCiAgICAgbV9jb21wbGV0ZWx5
TG9hZGVkID0gdHJ1ZTsKIAogICAgIGlmIChtX3BsYXllcikgewpAQCAtODkzLDkgKzg4Nyw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSkKIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVOZXh0U291cmNlQ2hpbGQoKQogewogICAgIC8v
IFNjaGVkdWxlIHRoZSB0aW1lciB0byB0cnkgdGhlIG5leHQgPHNvdXJjZT4gZWxlbWVudCBXSVRI
T1VUIHJlc2V0dGluZyBzdGF0ZSBhbGEgcHJlcGFyZUZvckxvYWQuCi0gICAgbV9yZXNvdXJjZVNl
bGVjdGlvblRhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhpc10gewotICAgICAgICBsb2FkTmV4dFNv
dXJjZUNoaWxkKCk7Ci0gICAgfSk7CisgICAgcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgbV9yZXNvdXJjZVNlbGVj
dGlvblRhc2tDYW5jZWxsZXIsIHN0ZDo6YmluZCgmSFRNTE1lZGlhRWxlbWVudDo6bG9hZE5leHRT
b3VyY2VDaGlsZCwgdGhpcykpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyQWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQpAQCAtOTgwLDExICs5NzIsMTEgQEAgYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjpoYXNFdmVyTm90aWZpZWRBYm91dFBsYXlpbmcoKSBjb25zdAog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlQ2hlY2tQbGF5YmFja1RhcmdldENvbXBh
dGFiaWxpdHkoKQogewotICAgIGlmIChtX2NoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5
VGFzay5pc1BlbmRpbmcoKSkKKyAgICBpZiAobV9jaGVja1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJp
bGl0eVRhc2tDYW5jZWxsZXIuaGFzUGVuZGluZ1Rhc2soKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLSAgICBtX2NoZWNrUGxheWJhY2tUYXJnZXRD
b21wYXRpYmlsaXR5VGFzayA9IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZl
KCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlzXSB7CisgICAgcXVldWVDYW5j
ZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxl
bWVudCwgbV9jaGVja1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJpbGl0eVRhc2tDYW5jZWxsZXIsIFt0
aGlzXSB7CiAgICAgICAgIGNoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5KCk7CiAgICAg
fSk7CiB9CkBAIC0xMDk5LDkgKzEwOTEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWQo
KQogICAgICAgICByZXR1cm47CiAKICAgICBwcmVwYXJlRm9yTG9hZCgpOwotICAgIG1fcmVzb3Vy
Y2VTZWxlY3Rpb25UYXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXNdIHsKLSAgICAgICAgcHJlcGFy
ZVRvUGxheSgpOwotICAgIH0pOworICAgIHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVj
dEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIG1fcmVzb3VyY2VTZWxlY3Rp
b25UYXNrQ2FuY2VsbGVyLCBzdGQ6OmJpbmQoJkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVUb1Bs
YXksIHRoaXMpKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCgp
CkBAIC0xMTE4LDcgKzExMDgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JM
b2FkKCkKICAgICAvLyAxIC0gQWJvcnQgYW55IGFscmVhZHktcnVubmluZyBpbnN0YW5jZSBvZiB0
aGUgcmVzb3VyY2Ugc2VsZWN0aW9uIGFsZ29yaXRobSBmb3IgdGhpcyBlbGVtZW50LgogICAgIC8v
IFBlcmZvcm0gdGhlIGNsZWFudXAgcmVxdWlyZWQgZm9yIHRoZSByZXNvdXJjZSBsb2FkIGFsZ29y
aXRobSB0byBydW4uCiAgICAgc3RvcFBlcmlvZGljVGltZXJzKCk7Ci0gICAgbV9yZXNvdXJjZVNl
bGVjdGlvblRhc2tRdWV1ZS5jYW5jZWxBbGxUYXNrcygpOworICAgIG1fcmVzb3VyY2VTZWxlY3Rp
b25UYXNrQ2FuY2VsbGVyLmNhbmNlbCgpOwogICAgIC8vIEZJWE1FOiBGaWd1cmUgb3V0IGFwcHJv
cHJpYXRlIHBsYWNlIHRvIHJlc2V0IExvYWRUZXh0VHJhY2tSZXNvdXJjZSBpZiBuZWNlc3Nhcnkg
YW5kIHNldCBtX3BlbmRpbmdBY3Rpb25GbGFncyB0byAwIGhlcmUuCiAgICAgbV9zZW50RW5kRXZl
bnQgPSBmYWxzZTsKICAgICBtX3NlbnRTdGFsbGVkRXZlbnQgPSBmYWxzZTsKQEAgLTEyMzAsMTcg
KzEyMjAsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlbG9hZEFuZFJl
c3VtZVBsYXliYWNrSWZOZWVkZWQoKQogICAgICAgICBlbnRlckZ1bGxzY3JlZW4obV92aWRlb0Z1
bGxzY3JlZW5Nb2RlKTsKIAogICAgIGlmIChwcmV2aW91c01lZGlhVGltZSkgewotICAgICAgICBt
X3Jlc291cmNlU2VsZWN0aW9uVGFza1F1ZXVlLmVucXVldWVUYXNrKFt0aGlzLCBwcmV2aW91c01l
ZGlhVGltZV0geworICAgICAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2
ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX3Jlc291cmNlU2VsZWN0aW9uVGFz
a0NhbmNlbGxlciwgW3RoaXMsIHByZXZpb3VzTWVkaWFUaW1lXSB7CiAgICAgICAgICAgICBpZiAo
bV9wbGF5ZXIpCiAgICAgICAgICAgICAgICAgbV9wbGF5ZXItPnNlZWtXaGVuUG9zc2libGUocHJl
dmlvdXNNZWRpYVRpbWUpOwogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBpZiAoIXdhc1BhdXNl
ZCkgewotICAgICAgICBtX3Jlc291cmNlU2VsZWN0aW9uVGFza1F1ZXVlLmVucXVldWVUYXNrKFt0
aGlzXSB7Ci0gICAgICAgICAgICBwbGF5SW50ZXJuYWwoKTsKLSAgICAgICAgfSk7Ci0gICAgfQor
ICAgIGlmICghd2FzUGF1c2VkKQorICAgICAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdP
YmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX3Jlc291cmNlU2Vs
ZWN0aW9uVGFza0NhbmNlbGxlciwgc3RkOjpiaW5kKCZIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50
ZXJuYWwsIHRoaXMpKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJl
c291cmNlKCkKQEAgLTEyNTgsNyArMTI0NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2Vs
ZWN0TWVkaWFSZXNvdXJjZSgpCiAgICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQodHJ1ZSk7CiAK
ICAgICAvLyA0LiBpbiBwYXJhbGxlbCBhd2FpdCBhIHN0YWJsZSBzdGF0ZSwgYWxsb3dpbmcgdGhl
IHRhc2sgdGhhdCBpbnZva2VkIHRoaXMgYWxnb3JpdGhtIHRvIGNvbnRpbnVlLgotICAgIGlmICht
X3Jlc291cmNlU2VsZWN0aW9uVGFza1F1ZXVlLmhhc1BlbmRpbmdUYXNrcygpKQorICAgIGlmICht
X3Jlc291cmNlU2VsZWN0aW9uVGFza0NhbmNlbGxlci5oYXNQZW5kaW5nVGFzaygpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoIW1lZGlhU2Vzc2lvbigpLnBhZ2VBbGxvd3NEYXRhTG9hZGlu
ZygpKSB7CkBAIC0xMjc5LDcgKzEyNjYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVj
dE1lZGlhUmVzb3VyY2UoKQogICAgIGF1dG8gbG9nU2l0ZUlkZW50aWZpZXIgPSBMT0dJREVOVElG
SUVSOwogICAgIFVOVVNFRF9QQVJBTShsb2dTaXRlSWRlbnRpZmllcik7CiAKLSAgICBtX3Jlc291
cmNlU2VsZWN0aW9uVGFza1F1ZXVlLmVucXVldWVUYXNrKFt0aGlzLCBsb2dTaXRlSWRlbnRpZmll
cl0gIHsKKyAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywg
VGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX3Jlc291cmNlU2VsZWN0aW9uVGFza0NhbmNlbGxl
ciwgW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSAgewogCiAgICAgICAgIEFMV0FZU19MT0cobG9n
U2l0ZUlkZW50aWZpZXIsICJsYW1iZGEoKSwgdGFzayBmaXJlZCIpOwogCkBAIC0yOTYxLDkgKzI5
NDgsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1l
ZGlhVGltZSYgaW5UaW1lLCBjb25zdCBNZWRpYVRpbQogICAgIC8vIDMgLSBJZiB0aGUgZWxlbWVu
dCdzIHNlZWtpbmcgSURMIGF0dHJpYnV0ZSBpcyB0cnVlLCB0aGVuIGFub3RoZXIgaW5zdGFuY2Ug
b2YgdGhpcyBhbGdvcml0aG0gaXMKICAgICAvLyBhbHJlYWR5IHJ1bm5pbmcuIEFib3J0IHRoYXQg
b3RoZXIgaW5zdGFuY2Ugb2YgdGhlIGFsZ29yaXRobSB3aXRob3V0IHdhaXRpbmcgZm9yIHRoZSBz
dGVwIHRoYXQKICAgICAvLyBpdCBpcyBydW5uaW5nIHRvIGNvbXBsZXRlLgotICAgIGlmIChtX3Nl
ZWtUYXNrLmlzUGVuZGluZygpKSB7CisgICAgaWYgKG1fc2Vla1Rhc2tDYW5jZWxsZXIuaGFzUGVu
ZGluZ1Rhc2soKSkgewogICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiY2FuY2VsbGlu
ZyBwZW5kaW5nIHNlZWtzIik7Ci0gICAgICAgIG1fc2Vla1Rhc2suY2FuY2VsKCk7CisgICAgICAg
IG1fc2Vla1Rhc2tDYW5jZWxsZXIuY2FuY2VsKCk7CiAgICAgICAgIGlmIChtX3BlbmRpbmdTZWVr
KSB7CiAgICAgICAgICAgICBub3cgPSBtX3BlbmRpbmdTZWVrLT5ub3c7CiAgICAgICAgICAgICBt
X3BlbmRpbmdTZWVrID0gbnVsbHB0cjsKQEAgLTI5ODUsNyArMjk3Miw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1lJiBpblRpbWUsIGNv
bnN0IE1lZGlhVGltCiAgICAgbV9wZW5kaW5nU2VlayA9IG1ha2VVbmlxdWU8UGVuZGluZ1NlZWs+
KG5vdywgdGltZSwgbmVnYXRpdmVUb2xlcmFuY2UsIHBvc2l0aXZlVG9sZXJhbmNlKTsKICAgICBp
ZiAoZnJvbURPTSkgewogICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiZW5xdWV1aW5n
IHNlZWsgZnJvbSAiLCBub3csICIgdG8gIiwgdGltZSk7Ci0gICAgICAgIG1fc2Vla1Rhc2sgPSBx
dWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6
TWVkaWFFbGVtZW50LCBzdGQ6OmJpbmQoJkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtUYXNrLCB0aGlz
KSk7CisgICAgICAgIHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlz
LCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIG1fc2Vla1Rhc2tDYW5jZWxsZXIsIHN0ZDo6Ymlu
ZCgmSFRNTE1lZGlhRWxlbWVudDo6c2Vla1Rhc2ssIHRoaXMpKTsKICAgICB9IGVsc2UKICAgICAg
ICAgc2Vla1Rhc2soKTsKIApAQCAtMzY5NywxMCArMzY4NCwxMCBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBIVE1MTWVkaWFFbGVtZW50OjpzZXRWb2x1bWUoZG91YmxlIHZvbHVtZSkKICAgICBhdXRvIG9s
ZFZvbHVtZSA9IG1fdm9sdW1lOwogICAgIG1fdm9sdW1lID0gdm9sdW1lOwogCi0gICAgaWYgKG1f
dm9sdW1lUmV2ZXJ0VGFzay5pc1BlbmRpbmcoKSkKKyAgICBpZiAobV92b2x1bWVSZXZlcnRUYXNr
Q2FuY2VsbGVyLmhhc1BlbmRpbmdUYXNrKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBt
X3ZvbHVtZVJldmVydFRhc2sgPSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2
ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhpcywgb2xkVm9sdW1lXSB7Cisg
ICAgcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3Vy
Y2U6Ok1lZGlhRWxlbWVudCwgbV92b2x1bWVSZXZlcnRUYXNrQ2FuY2VsbGVyLCBbdGhpcywgb2xk
Vm9sdW1lXSB7CiAgICAgICAgIG1fdm9sdW1lID0gb2xkVm9sdW1lOwogICAgIH0pOwogCkBAIC00
NDg1LDEyICs0NDcyLDEyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0
VHJhY2soVGV4dFRyYWNrKiB0cmFja1RvU2VsZWN0KQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNjaGVkdWxlQ29uZmlndXJlVGV4dFRyYWNrcygpCiB7Ci0gICAgaWYgKG1fY29uZmlndXJlVGV4
dFRyYWNrc1Rhc2suaXNQZW5kaW5nKCkpCisgICAgaWYgKG1fY29uZmlndXJlVGV4dFRyYWNrc1Rh
c2tDYW5jZWxsZXIuaGFzUGVuZGluZ1Rhc2soKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byBsb2dTaXRlSWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dT
aXRlSWRlbnRpZmllciwgInRhc2sgc2NoZWR1bGVkIik7Ci0gICAgbV9jb25maWd1cmVUZXh0VHJh
Y2tzVGFzayA9IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBU
YXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0geworICAg
IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNl
OjpNZWRpYUVsZW1lbnQsIG1fY29uZmlndXJlVGV4dFRyYWNrc1Rhc2tDYW5jZWxsZXIsIFt0aGlz
LCBsb2dTaXRlSWRlbnRpZmllcl0gewogICAgICAgICBVTlVTRURfUEFSQU0obG9nU2l0ZUlkZW50
aWZpZXIpOwogICAgICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAibGFtYmRhKCks
IHRhc2sgZmlyZWQiKTsKICAgICAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOyAvLyBjb25maWd1cmVUZXh0VHJhY2tzIGNhbGxzIG1ldGhvZHMgdGhhdCBjYW4g
dHJpZ2dlciBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KQEAgLTUwMzMsMTIgKzUwMjAsMTIgQEAg
R3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckdyYXBo
aWNzRGV2aWNlQWRhcHRlcigpIGNvbnMKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVs
ZU1lZGlhRW5naW5lV2FzVXBkYXRlZCgpCiB7Ci0gICAgaWYgKG1fbWVkaWFFbmdpbmVVcGRhdGVk
VGFzay5pc1BlbmRpbmcoKSkKKyAgICBpZiAobV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrQ2FuY2Vs
bGVyLmhhc1BlbmRpbmdUYXNrKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gbG9nU2l0
ZUlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwogICAgIEFMV0FZU19MT0cobG9nU2l0ZUlkZW50
aWZpZXIsICJ0YXNrIHNjaGVkdWxlZCIpOwotICAgIG1fbWVkaWFFbmdpbmVVcGRhdGVkVGFzayA9
IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNl
OjpNZWRpYUVsZW1lbnQsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0geworICAgIHF1ZXVlQ2Fu
Y2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVs
ZW1lbnQsIG1fbWVkaWFFbmdpbmVVcGRhdGVkVGFza0NhbmNlbGxlciwgW3RoaXMsIGxvZ1NpdGVJ
ZGVudGlmaWVyXSB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShsb2dTaXRlSWRlbnRpZmllcik7CiAg
ICAgICAgIEFMV0FZU19MT0cobG9nU2l0ZUlkZW50aWZpZXIsICJsYW1iZGEoKSwgdGFzayBmaXJl
ZCIpOwogICAgICAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
IC8vIG1lZGlhRW5naW5lV2FzVXBkYXRlZCBjYWxscyBtZXRob2RzIHRoYXQgY2FuIHRyaWdnZXIg
YXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCkBAIC01MzI2LDEyICs1MzEzLDEyIEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6dXBkYXRlVm9sdW1lKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
Y2hlZHVsZVVwZGF0ZVBsYXlTdGF0ZSgpCiB7Ci0gICAgaWYgKG1fdXBkYXRlUGxheVN0YXRlVGFz
ay5pc1BlbmRpbmcoKSkKKyAgICBpZiAobV91cGRhdGVQbGF5U3RhdGVUYXNrQ2FuY2VsbGVyLmhh
c1BlbmRpbmdUYXNrKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gbG9nU2l0ZUlkZW50
aWZpZXIgPSBMT0dJREVOVElGSUVSOwogICAgIEFMV0FZU19MT0cobG9nU2l0ZUlkZW50aWZpZXIs
ICJ0YXNrIHNjaGVkdWxlZCIpOwotICAgIG1fdXBkYXRlUGxheVN0YXRlVGFzayA9IHF1ZXVlQ2Fu
Y2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVs
ZW1lbnQsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0geworICAgIHF1ZXVlQ2FuY2VsbGFibGVU
YXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIG1f
dXBkYXRlUGxheVN0YXRlVGFza0NhbmNlbGxlciwgW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7
CiAgICAgICAgIFVOVVNFRF9QQVJBTShsb2dTaXRlSWRlbnRpZmllcik7CiAgICAgICAgIEFMV0FZ
U19MT0cobG9nU2l0ZUlkZW50aWZpZXIsICJsYW1iZGEoKSwgdGFzayBmaXJlZCIpOwogICAgICAg
ICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIHVwZGF0ZVBs
YXlTdGF0ZSBjYWxscyBtZXRob2RzIHRoYXQgY2FuIHRyaWdnZXIgYXJiaXRyYXJ5IERPTSBtdXRh
dGlvbnMuCkBAIC01NDYzLDE2ICs1NDUwLDE2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3Rv
cFBlcmlvZGljVGltZXJzKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjYW5jZWxQZW5kaW5n
VGFza3MoKQogewotICAgIG1fY29uZmlndXJlVGV4dFRyYWNrc1Rhc2suY2FuY2VsKCk7Ci0gICAg
bV9jaGVja1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJpbGl0eVRhc2suY2FuY2VsKCk7Ci0gICAgbV91
cGRhdGVNZWRpYVN0YXRlVGFzay5jYW5jZWwoKTsKLSAgICBtX21lZGlhRW5naW5lVXBkYXRlZFRh
c2suY2FuY2VsKCk7Ci0gICAgbV91cGRhdGVQbGF5U3RhdGVUYXNrLmNhbmNlbCgpOwotICAgIG1f
cmVzdW1lVGFzay5jYW5jZWwoKTsKLSAgICBtX3NlZWtUYXNrLmNhbmNlbCgpOwotICAgIG1fcGxh
eWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1Rhc2suY2FuY2VsKCk7Cisg
ICAgbV9jb25maWd1cmVUZXh0VHJhY2tzVGFza0NhbmNlbGxlci5jYW5jZWwoKTsKKyAgICBtX2No
ZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFza0NhbmNlbGxlci5jYW5jZWwoKTsKKyAg
ICBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrQ2FuY2VsbGVyLmNhbmNlbCgpOworICAgIG1fbWVkaWFF
bmdpbmVVcGRhdGVkVGFza0NhbmNlbGxlci5jYW5jZWwoKTsKKyAgICBtX3VwZGF0ZVBsYXlTdGF0
ZVRhc2tDYW5jZWxsZXIuY2FuY2VsKCk7CisgICAgbV9yZXN1bWVUYXNrQ2FuY2VsbGVyLmNhbmNl
bCgpOworICAgIG1fc2Vla1Rhc2tDYW5jZWxsZXIuY2FuY2VsKCk7CisgICAgbV9wbGF5YmFja0Nv
bnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGFza0NhbmNlbGxlci5jYW5jZWwoKTsK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIG1fdm9sdW1lUmV2ZXJ0VGFzay5jYW5jZWwo
KTsKKyAgICBtX3ZvbHVtZVJldmVydFRhc2tDYW5jZWxsZXIuY2FuY2VsKCk7CiAjZW5kaWYKIH0K
IApAQCAtNTU4Nyw3ICs1NTc0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlh
UGxheWVyKCkKICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmNhblByb2R1Y2VBdWRpb0NoYW5nZWQo
KTsKICAgICB9CiAKLSAgICBtX3Jlc291cmNlU2VsZWN0aW9uVGFza1F1ZXVlLmNhbmNlbEFsbFRh
c2tzKCk7CisgICAgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tDYW5jZWxsZXIuY2FuY2VsKCk7CiAK
ICAgICB1cGRhdGVTbGVlcERpc2FibGluZygpOwogfQpAQCAtNTYyOSw3ICs1NjE2LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzdG9wV2l0aG91dERlc3Ryb3lpbmdNZWRpYVBsYXllcigpCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsb3NlVGFza1F1ZXVlcygpCiB7CiAgICAgY2FuY2VsUGVu
ZGluZ1Rhc2tzKCk7Ci0gICAgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZS5jbG9zZSgpOwor
ICAgIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrQ2FuY2VsbGVyLmNhbmNlbCgpOwogICAgIG1fYXN5
bmNFdmVudFF1ZXVlLT5jbG9zZSgpOwogfQogCkBAIC01NjY0LDcgKzU2NTEsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCiAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBtX3Jlc3VtZVRhc2suY2FuY2VsKCk7CisgICAgbV9y
ZXN1bWVUYXNrQ2FuY2VsbGVyLmNhbmNlbCgpOwogCiAgICAgc3dpdGNoIChyZWFzb24pIHsKICAg
ICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OkJhY2tGb3J3YXJkQ2FjaGU6CkBAIC01Njk3LDEz
ICs1Njg0LDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lKCkKICAgICAgICAgbV9t
ZWRpYVNlc3Npb24tPnVwZGF0ZUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIH0KIAotICAgIGlmICht
X2Vycm9yICYmIG1fZXJyb3ItPmNvZGUoKSA9PSBNZWRpYUVycm9yOjpNRURJQV9FUlJfQUJPUlRF
RCAmJiAhbV9yZXN1bWVUYXNrLmlzUGVuZGluZygpKSB7CisgICAgaWYgKG1fZXJyb3IgJiYgbV9l
cnJvci0+Y29kZSgpID09IE1lZGlhRXJyb3I6Ok1FRElBX0VSUl9BQk9SVEVEICYmICFtX3Jlc3Vt
ZVRhc2tDYW5jZWxsZXIuaGFzUGVuZGluZ1Rhc2soKSkgewogICAgICAgICAvLyBSZXN0YXJ0IHRo
ZSBsb2FkIGlmIGl0IHdhcyBhYm9ydGVkIGluIHRoZSBtaWRkbGUgYnkgbW92aW5nIHRoZSBkb2N1
bWVudCB0byB0aGUgYmFjay9mb3J3YXJkIGNhY2hlLgogICAgICAgICAvLyBtX2Vycm9yIGlzIG9u
bHkgbGVmdCBhdCBNRURJQV9FUlJfQUJPUlRFRCB3aGVuIHRoZSBkb2N1bWVudCBiZWNvbWVzIGlu
YWN0aXZlIChpdCBpcyBzZXQgdG8KICAgICAgICAgLy8gIE1FRElBX0VSUl9BQk9SVEVEIHdoaWxl
IHRoZSBhYm9ydEV2ZW50IGlzIGJlaW5nIHNlbnQsIGJ1dCBjbGVhcmVkIGltbWVkaWF0ZWx5IGFm
dGVyd2FyZHMpLgogICAgICAgICAvLyBUaGlzIGJlaGF2aW9yIGlzIG5vdCBzcGVjaWZpZWQgYnV0
IGl0IHNlZW1zIGxpa2UgYSBzZW5zaWJsZSB0aGluZyB0byBkby4KICAgICAgICAgLy8gQXMgaXQg
aXMgbm90IHNhZmUgdG8gaW1tZWRhdGVseSBzdGFydCBsb2FkaW5nIG5vdywgbGV0J3Mgc2NoZWR1
bGUgYSBsb2FkLgotICAgICAgICBtX3Jlc3VtZVRhc2sgPSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tl
ZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBzdGQ6OmJp
bmQoJkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JMb2FkLCB0aGlzKSk7CisgICAgICAgIHF1
ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpN
ZWRpYUVsZW1lbnQsIG1fcmVzdW1lVGFza0NhbmNlbGxlciwgc3RkOjpiaW5kKCZIVE1MTWVkaWFF
bGVtZW50OjpwcmVwYXJlRm9yTG9hZCwgdGhpcykpOwogICAgIH0KIAogICAgIHVwZGF0ZVJlbmRl
cmVyKCk7CkBAIC01NzE5LDcgKzU3MDYsNiBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnZpcnR1
YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX2NyZWF0aW5nQ29u
dHJvbHMKICAgICAgICAgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdBY3Rpdml0eSgp
Ci0gICAgICAgIHx8IG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrUXVldWUuaGFzUGVuZGluZ1Rhc2tz
KCkKICAgICAgICAgfHwgKGhhc0F1ZGlvKCkgJiYgaXNQbGF5aW5nKCkpCiAgICAgICAgIHx8ICho
YXNMaXZlU291cmNlKCkgJiYgaGFzRXZlbnRMaXN0ZW5lcnMoKSk7CiB9CkBAIC02NjE1LDcgKzY2
MDEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFj
a3NBc1VuY29uZmlndXJlZChSZWNvbmZpZ3VyZU1vZAogICAgIH0KIAogICAgIG1fcHJvY2Vzc2lu
Z1ByZWZlcmVuY2VDaGFuZ2UgPSB0cnVlOwotICAgIG1fY29uZmlndXJlVGV4dFRyYWNrc1Rhc2su
Y2FuY2VsKCk7CisgICAgbV9jb25maWd1cmVUZXh0VHJhY2tzVGFza0NhbmNlbGxlci5jYW5jZWwo
KTsKICAgICBpZiAobW9kZSA9PSBJbW1lZGlhdGVseSkgewogICAgICAgICBSZWY8SFRNTE1lZGlh
RWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIGNvbmZpZ3VyZVRleHRUcmFja3MgY2Fs
bHMgbWV0aG9kcyB0aGF0IGNhbiB0cmlnZ2VyIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgogICAg
ICAgICBjb25maWd1cmVUZXh0VHJhY2tzKCk7CkBAIC03MTMxLDEyICs3MTE3LDEyIEBAIGJvb2wg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTaG91bGRDaGVja0hhcmR3YXJlU3VwcG9ydCgp
IGNvbnN0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJCdWZmZXJlZFRpbWVS
YW5nZXNDaGFuZ2VkKCkKIHsKLSAgICBpZiAoIW1fdGV4dFRyYWNrcyB8fCBtX2J1ZmZlcmVkVGlt
ZVJhbmdlc0NoYW5nZWRUYXNrLmlzUGVuZGluZygpKQorICAgIGlmICghbV90ZXh0VHJhY2tzIHx8
IG1fYnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdlZFRhc2tDYW5jZWxsZXIuaGFzUGVuZGluZ1Rhc2so
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBsb2dTaXRlSWRlbnRpZmllciA9IExPR0lE
RU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgInRhc2sgc2NoZWR1
bGVkIik7Ci0gICAgbV9idWZmZXJlZFRpbWVSYW5nZXNDaGFuZ2VkVGFzayA9IHF1ZXVlQ2FuY2Vs
bGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1l
bnQsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0geworICAgIHF1ZXVlQ2FuY2VsbGFibGVUYXNr
S2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIG1fYnVm
ZmVyZWRUaW1lUmFuZ2VzQ2hhbmdlZFRhc2tDYW5jZWxsZXIsIFt0aGlzLCBsb2dTaXRlSWRlbnRp
Zmllcl0gewogICAgICAgICBVTlVTRURfUEFSQU0obG9nU2l0ZUlkZW50aWZpZXIpOwogICAgICAg
ICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAibGFtYmRhKCksIHRhc2sgZmlyZWQiKTsK
ICAgICAgICAgaWYgKCFtX3BsYXllciB8fCAhbV90ZXh0VHJhY2tzKQpAQCAtNzc2MiwxMiArNzc0
OCwxMiBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnNob3VsZE92ZXJyaWRlUGF1c2VEdXJpbmdS
b3V0ZUNoYW5nZSgpIGNvbnN0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVVcGRh
dGVNZWRpYVN0YXRlKCkKIHsKLSAgICBpZiAobV91cGRhdGVNZWRpYVN0YXRlVGFzay5pc1BlbmRp
bmcoKSkKKyAgICBpZiAobV91cGRhdGVNZWRpYVN0YXRlVGFza0NhbmNlbGxlci5oYXNQZW5kaW5n
VGFzaygpKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGxvZ1NpdGVJZGVudGlmaWVyID0g
TE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAidGFzayBz
Y2hlZHVsZWQiKTsKLSAgICBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrID0gcXVldWVDYW5jZWxsYWJs
ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwg
W3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CisgICAgcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVw
aW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgbV91cGRhdGVN
ZWRpYVN0YXRlVGFza0NhbmNlbGxlciwgW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CiAgICAg
ICAgIFVOVVNFRF9QQVJBTShsb2dTaXRlSWRlbnRpZmllcik7CiAgICAgICAgIEFMV0FZU19MT0co
bG9nU2l0ZUlkZW50aWZpZXIsICJsYW1iZGEoKSwgdGFzayBmaXJlZCIpOwogICAgICAgICBSZWY8
SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIHVwZGF0ZU1lZGlhU3Rh
dGUgY2FsbHMgbWV0aG9kcyB0aGF0IGNhbiB0cmlnZ2VyIGFyYml0cmFyeSBET00gbXV0YXRpb25z
LgpAQCAtODAzNSwxMyArODAyMSwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxl
UGxheWJhY2tDb250cm9sc01hbmFnZXJVcGRhdGUoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnBsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lckZpcmVkKCkK
IHsKLSAgICBpZiAobV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25z
VGFzay5pc1BlbmRpbmcoKSkKKyAgICBpZiAobV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2
aW9yUmVzdHJpY3Rpb25zVGFza0NhbmNlbGxlci5oYXNQZW5kaW5nVGFzaygpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoIW1lZGlhU2Vzc2lvbigpLmhhc0JlaGF2aW9yUmVzdHJpY3Rpb24o
TWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlVG9Db250cm9sQ29udHJvbHNN
YW5hZ2VyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdl
ckJlaGF2aW9yUmVzdHJpY3Rpb25zVGFzayA9IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlzXSAoKSB7Cisg
ICAgcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3Vy
Y2U6Ok1lZGlhRWxlbWVudCwgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJp
Y3Rpb25zVGFza0NhbmNlbGxlciwgW3RoaXNdICgpIHsKICAgICAgICAgYXV0byYgbWVkaWFFbGVt
ZW50U2Vzc2lvbiA9IG1lZGlhU2Vzc2lvbigpOwogICAgICAgICBpZiAoaXNQbGF5aW5nKCkgfHwg
bWVkaWFFbGVtZW50U2Vzc2lvbi5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdXRv
cGxheWluZyB8fCBtZWRpYUVsZW1lbnRTZXNzaW9uLnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNl
c3Npb246OlBsYXlpbmcpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCmluZGV4IDgwY2Y2OGU2YTRmMzBmYzc3YTM0YzU0ZWNmMDY4ZTIyMGJl
MjVmNjYuLjM4ZDI0ZGY2NzU4MjkxZWM3OTgyYWQ3NGZkYWNmZWI1ZDRiZDI0MjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC05NDAsMjAgKzk0MCwyMCBAQCBwcml2
YXRlOgogICAgIFRpbWVyIG1fc2NhblRpbWVyOwogICAgIFRpbWVyIG1fcGxheWJhY2tDb250cm9s
c01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1RpbWVyOwogICAgIFRpbWVyIG1fc2Vla1RvUGxh
eWJhY2tQb3NpdGlvbkVuZGVkVGltZXI7Ci0gICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV9j
b25maWd1cmVUZXh0VHJhY2tzVGFzazsKLSAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX2No
ZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFzazsKLSAgICBDYW5jZWxsYWJsZVRhc2s6
OkhhbmRsZSBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrOwotICAgIENhbmNlbGxhYmxlVGFzazo6SGFu
ZGxlIG1fbWVkaWFFbmdpbmVVcGRhdGVkVGFzazsKLSAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRs
ZSBtX3VwZGF0ZVBsYXlTdGF0ZVRhc2s7Ci0gICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV9y
ZXN1bWVUYXNrOwotICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fc2Vla1Rhc2s7Ci0gICAg
Q2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9y
UmVzdHJpY3Rpb25zVGFzazsKLSAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX2J1ZmZlcmVk
VGltZVJhbmdlc0NoYW5nZWRUYXNrOwotICAgIEV2ZW50TG9vcFRhc2tRdWV1ZSBtX3Jlc291cmNl
U2VsZWN0aW9uVGFza1F1ZXVlOworICAgIFRhc2tDYW5jZWxsZXIgbV9jb25maWd1cmVUZXh0VHJh
Y2tzVGFza0NhbmNlbGxlcjsKKyAgICBUYXNrQ2FuY2VsbGVyIG1fY2hlY2tQbGF5YmFja1Rhcmdl
dENvbXBhdGliaWxpdHlUYXNrQ2FuY2VsbGVyOworICAgIFRhc2tDYW5jZWxsZXIgbV91cGRhdGVN
ZWRpYVN0YXRlVGFza0NhbmNlbGxlcjsKKyAgICBUYXNrQ2FuY2VsbGVyIG1fbWVkaWFFbmdpbmVV
cGRhdGVkVGFza0NhbmNlbGxlcjsKKyAgICBUYXNrQ2FuY2VsbGVyIG1fdXBkYXRlUGxheVN0YXRl
VGFza0NhbmNlbGxlcjsKKyAgICBUYXNrQ2FuY2VsbGVyIG1fcmVzdW1lVGFza0NhbmNlbGxlcjsK
KyAgICBUYXNrQ2FuY2VsbGVyIG1fc2Vla1Rhc2tDYW5jZWxsZXI7CisgICAgVGFza0NhbmNlbGxl
ciBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUYXNrQ2FuY2Vs
bGVyOworICAgIFRhc2tDYW5jZWxsZXIgbV9idWZmZXJlZFRpbWVSYW5nZXNDaGFuZ2VkVGFza0Nh
bmNlbGxlcjsKKyAgICBUYXNrQ2FuY2VsbGVyIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrQ2FuY2Vs
bGVyOwogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBtX3BsYXllZFRpbWVSYW5nZXM7CiAgICAgVW5p
cXVlUmVmPEV2ZW50TG9vcEV2ZW50UXVldWU+IG1fYXN5bmNFdmVudFF1ZXVlOwogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV92b2x1bWVSZXZl
cnRUYXNrOworICAgIFRhc2tDYW5jZWxsZXIgbV92b2x1bWVSZXZlcnRUYXNrQ2FuY2VsbGVyOwog
I2VuZGlmCiAKICAgICBQbGF5UHJvbWlzZVZlY3RvciBtX3BlbmRpbmdQbGF5UHJvbWlzZXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJh
Y2tDb250YWluZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwCmluZGV4IGUzZDE0Y2E3OWJmNGQ0
MmY0YzQ3NmM5M2QzZGU1MDk5MmZjN2E4ZDAuLjZhOWRkNzk0YmI0MTBkNDUzMDhmYzQ5N2MyNTA0
MWFlNTdjODAzYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwCkBA
IC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRWxl
bWVudENoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKKyNpbmNsdWRl
ICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGdWxsc2NyZWVuTWFuYWdlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vR2VuZXJpY1Rhc2tRdWV1ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmYw
MjYzMzI1YTNmYmMxNTBlZjhlMmQwZmFmMGY3MDQ1NGI2ODRkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVy
aWNUYXNrUXVldWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJFdmVu
dExvb3AuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFRhc2tRdWV1ZUJh
c2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGFza1F1ZXVlQmFzZT4gewotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIGJvb2wgaGFzUGVuZGluZ1Rhc2tzKCkgY29u
c3QgeyByZXR1cm4gbV9wZW5kaW5nVGFza3M7IH0KLSAgICBib29sIGlzQ2xvc2VkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0Nsb3NlZDsgfQotCi0gICAgdm9pZCBjbG9zZSgpCi0gICAgewotICAgICAg
ICBjYW5jZWxBbGxUYXNrcygpOwotICAgICAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKLSAgICB9Ci0K
LSAgICB2b2lkIGNhbmNlbEFsbFRhc2tzKCkKLSAgICB7Ci0gICAgICAgIHdlYWtQdHJGYWN0b3J5
KCkucmV2b2tlQWxsKCk7Ci0gICAgICAgIG1fcGVuZGluZ1Rhc2tzID0gMDsKLSAgICB9Ci0KLXBy
b3RlY3RlZDoKLSAgICB+VGFza1F1ZXVlQmFzZSgpID0gZGVmYXVsdDsKLSAgICB2b2lkIGluY3Jl
bWVudFBlbmRpbmdUYXNrcygpIHsgKyttX3BlbmRpbmdUYXNrczsgfQotICAgIHZvaWQgZGVjcmVt
ZW50UGVuZGluZ1Rhc2tzKCkgeyBBU1NFUlQobV9wZW5kaW5nVGFza3MpOyAtLW1fcGVuZGluZ1Rh
c2tzOyB9Ci0KLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV9wZW5kaW5nVGFza3MgeyAwIH07Ci0g
ICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKLX07Ci0KLS8vIFJlbGllcyBvbiBhIHNoYXJl
ZCBUaW1lciwgb25seSBzYWZlIHRvIHVzZSBvbiB0aGUgTWFpblRocmVhZC4gUGxlYXNlIHVzZSBF
dmVudExvb3BUYXNrUXVldWUKLS8vIChvciBkaXNwYXRjaCBkaXJlY3RseSB0byB0aGUgSFRNTCBl
dmVudCBsb29wKSB3aGVuZXZlciBwb3NzaWJsZS4KLWNsYXNzIE1haW5UaHJlYWRUYXNrUXVldWUg
OiBwdWJsaWMgVGFza1F1ZXVlQmFzZSB7Ci1wdWJsaWM6Ci0gICAgTWFpblRocmVhZFRhc2tRdWV1
ZSgpCi0gICAgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIH0KLQotICAg
IHZvaWQgZW5xdWV1ZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCi0gICAgewotICAgICAg
ICBpZiAoaXNDbG9zZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpbmNyZW1l
bnRQZW5kaW5nVGFza3MoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyksIHRhc2sgPSBXVEZNb3ZlKHRhc2spXSB7Ci0gICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHdlYWtU
aGlzLT5kZWNyZW1lbnRQZW5kaW5nVGFza3MoKTsKLSAgICAgICAgICAgIHRhc2soKTsKLSAgICAg
ICAgfSk7Ci0gICAgfQotfTsKLQotLy8gU2ltaWxhciB0byBNYWluVGhyZWFkVGFza1F1ZXVlIGJ1
dCBiYXNlZCBvbiB0aGUgSFRNTCBldmVudCBsb29wLgotY2xhc3MgRXZlbnRMb29wVGFza1F1ZXVl
IDogcHVibGljIFRhc2tRdWV1ZUJhc2UsIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIgewotcHVibGljOgotICAgIEV2ZW50TG9vcFRhc2tRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQotICAgICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGNvbnRl
eHQpCi0gICAgeyB9Ci0KLSAgICAvLyBGSVhNRTogUGFzcyBhIFRhc2tTb3VyY2UgaW5zdGVhZCBv
ZiBhc3N1bWluZyBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQuCi0gICAgdm9pZCBlbnF1ZXVlVGFz
ayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKLSAgICB7Ci0gICAgICAgIGlmIChpc0Nsb3NlZCgp
IHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgaW5jcmVtZW50UGVuZGluZ1Rhc2tzKCk7Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwg
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0gewot
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB3ZWFrVGhpcy0+ZGVjcmVtZW50UGVuZGluZ1Rhc2tzKCk7Ci0gICAgICAgICAgICB0
YXNrKCk7Ci0gICAgICAgIH0pOwotICAgIH0KLX07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CmluZGV4IDVmZjQ0NWNiOWVlOTk2YTI1NTllYmFjN2I4ZmYyOGQ4NzMwYzQzYTQuLjlmNjc5ZWM5
OTYwNDQzZWJiMTcxOTVjNzY0ZjY4OTZiZmI5NTVhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQpAQCAtMTczLDcgKzE3Myw2IEBAIGVudW0gTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZh
dGlvbkNvbnRleHQgewogQGludGVyZmFjZSBXZWJDb3JlQVZGTW92aWVPYnNlcnZlciA6IE5TT2Jq
ZWN0IDxBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0UHVzaERlbGVnYXRlLCBBVlBsYXllckl0ZW1N
ZXRhZGF0YU91dHB1dFB1c2hEZWxlZ2F0ZSwgQVZQbGF5ZXJJdGVtTWV0YWRhdGFDb2xsZWN0b3JQ
dXNoRGVsZWdhdGU+CiB7CiAgICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDPiBtX3BsYXllcjsKLSAgICBNYWluVGhyZWFkVGFza1F1ZXVlIG1fdGFza1F1ZXVlOwog
ICAgIGludCBtX2RlbGF5Q2FsbGJhY2tzOwogfQogLShpZClpbml0V2l0aFBsYXllcjooV2Vha1B0
cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiYmKWNhbGxiYWNrOwpAQCAtMTg5
LDcgKzE4OCw2IEBAIEBlbmQKIAogQGludGVyZmFjZSBXZWJDb3JlQVZGTG9hZGVyRGVsZWdhdGUg
OiBOU09iamVjdDxBVkFzc2V0UmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZT4gewogICAgIFdlYWtQdHI8
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4gbV9wbGF5ZXI7Ci0gICAgTWFpblRo
cmVhZFRhc2tRdWV1ZSBtX3Rhc2tRdWV1ZTsKIH0KIC0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFr
UHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpcGxheWVyOwogLSAoQk9P
TClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIg
c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlOihBVkFzc2V0UmVzb3VyY2VM
b2FkaW5nUmVxdWVzdCAqKWxvYWRpbmdSZXF1ZXN0OwpAQCAtMzU4MCw3ICszNTc4LDcgQEAgLSAo
dm9pZClkaXNjb25uZWN0CiAtICh2b2lkKW1ldGFkYXRhTG9hZGVkCiB7CiAgICAgZW5zdXJlT25N
YWluVGhyZWFkKFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7Ci0gICAgICAg
IG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtwbGF5ZXIgPSBtX3BsYXllcl0geworICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtwbGF5ZXIgPSBtX3BsYXllcl0gewogICAgICAgICAgICAgaWYgKHBs
YXllcikKICAgICAgICAgICAgICAgICBwbGF5ZXItPm1ldGFkYXRhTG9hZGVkKCk7CiAgICAgICAg
IH0pOwpAQCAtMzU5MSw3ICszNTg5LDcgQEAgLSAodm9pZClkaWRFbmQ6KE5TTm90aWZpY2F0aW9u
ICopdW51c2VkTm90aWZpY2F0aW9uCiB7CiAgICAgVU5VU0VEX1BBUkFNKHVudXNlZE5vdGlmaWNh
dGlvbik7CiAgICAgZW5zdXJlT25NYWluVGhyZWFkKFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWlu
UHRyKHNlbGYpXSB7Ci0gICAgICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtwbGF5ZXIgPSBt
X3BsYXllcl0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwbGF5ZXIgPSBtX3BsYXllcl0g
ewogICAgICAgICAgICAgaWYgKHBsYXllcikKICAgICAgICAgICAgICAgICBwbGF5ZXItPmRpZEVu
ZCgpOwogICAgICAgICB9KTsKQEAgLTM2MDEsNyArMzU5OSw3IEBAIC0gKHZvaWQpZGlkRW5kOihO
U05vdGlmaWNhdGlvbiAqKXVudXNlZE5vdGlmaWNhdGlvbgogLSAodm9pZClvYnNlcnZlVmFsdWVG
b3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFy
eSAqKWNoYW5nZSBjb250ZXh0OihNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29u
dGV4dCljb250ZXh0CiB7CiAgICAgZW5zdXJlT25NYWluVGhyZWFkKFtzZWxmLCBzdHJvbmdTZWxm
ID0gcmV0YWluUHRyKHNlbGYpLCBrZXlQYXRoID0gcmV0YWluUHRyKGtleVBhdGgpLCBjaGFuZ2Ug
PSByZXRhaW5QdHIoY2hhbmdlKSwgb2JqZWN0ID0gcmV0YWluUHRyKG9iamVjdCksIGNvbnRleHRd
KCkgbXV0YWJsZSB7Ci0gICAgICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtwbGF5ZXIgPSBt
X3BsYXllciwga2V5UGF0aCA9IFdURk1vdmUoa2V5UGF0aCksIGNoYW5nZSA9IFdURk1vdmUoY2hh
bmdlKSwgb2JqZWN0ID0gV1RGTW92ZShvYmplY3QpLCBjb250ZXh0XSB7CisgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3BsYXllciA9IG1fcGxheWVyLCBrZXlQYXRoID0gV1RGTW92ZShrZXlQYXRo
KSwgY2hhbmdlID0gV1RGTW92ZShjaGFuZ2UpLCBvYmplY3QgPSBXVEZNb3ZlKG9iamVjdCksIGNv
bnRleHRdIHsKICAgICAgICAgICAgIGlmICghcGxheWVyKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKIApAQCAtMzcwMCw3ICszNjk4LDcgQEAgLSAodm9pZClsZWdpYmxlT3V0cHV0OihpZClvdXRw
dXQgZGlkT3V0cHV0QXR0cmlidXRlZFN0cmluZ3M6KE5TQXJyYXkgKilzdHJpbmdzIG4KICAgICBV
TlVTRURfUEFSQU0ob3V0cHV0KTsKIAogICAgIGVuc3VyZU9uTWFpblRocmVhZChbc2VsZiwgc3Ry
b25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgc3RyaW5ncyA9IHJldGFpblB0cihzdHJpbmdzKSwg
bmF0aXZlU2FtcGxlcyA9IHJldGFpblB0cihuYXRpdmVTYW1wbGVzKSwgaXRlbVRpbWVdKCkgbXV0
YWJsZSB7Ci0gICAgICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtwbGF5ZXIgPSBtX3BsYXll
ciwgc3RyaW5ncyA9IFdURk1vdmUoc3RyaW5ncyksIG5hdGl2ZVNhbXBsZXMgPSBXVEZNb3ZlKG5h
dGl2ZVNhbXBsZXMpLCBpdGVtVGltZV0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwbGF5
ZXIgPSBtX3BsYXllciwgc3RyaW5ncyA9IFdURk1vdmUoc3RyaW5ncyksIG5hdGl2ZVNhbXBsZXMg
PSBXVEZNb3ZlKG5hdGl2ZVNhbXBsZXMpLCBpdGVtVGltZV0gewogICAgICAgICAgICAgaWYgKCFw
bGF5ZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNzE3LDcgKzM3MTUsNyBAQCAt
ICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooaWQpb3V0cHV0CiAgICAgVU5VU0VEX1BB
UkFNKG91dHB1dCk7CiAKICAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3NlbGYsIHN0cm9uZ1NlbGYg
PSByZXRhaW5QdHIoc2VsZildIHsKLSAgICAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3Bs
YXllciA9IG1fcGxheWVyXSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3BsYXllciA9IG1f
cGxheWVyXSB7CiAgICAgICAgICAgICBpZiAocGxheWVyKQogICAgICAgICAgICAgICAgIHBsYXll
ci0+Zmx1c2hDdWVzKCk7CiAgICAgICAgIH0pOwpAQCAtMzczMyw3ICszNzMxLDcgQEAgLSAodm9p
ZCltZXRhZGF0YU91dHB1dDooQVZQbGF5ZXJJdGVtTWV0YWRhdGFPdXRwdXQgKilvdXRwdXQgZGlk
T3V0cHV0VGltZWRNZXRhZGEKICAgICBpZiAoIW1fcGxheWVyIHx8ICFtZXRhZGF0YUdyb3VwcykK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3BsYXllciA9
IG1fcGxheWVyLCBtZXRhZGF0YUdyb3VwcyA9IHJldGFpblB0cihtZXRhZGF0YUdyb3VwcyksIGN1
cnJlbnRUaW1lID0gbV9wbGF5ZXItPmN1cnJlbnRNZWRpYVRpbWUoKV0geworICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3BsYXllciA9IG1fcGxheWVyLCBtZXRhZGF0YUdyb3VwcyA9IHJldGFpblB0ciht
ZXRhZGF0YUdyb3VwcyksIGN1cnJlbnRUaW1lID0gbV9wbGF5ZXItPmN1cnJlbnRNZWRpYVRpbWUo
KV0gewogICAgICAgICBpZiAoIXBsYXllcikKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzc1
NCw3ICszNzUyLDcgQEAgLSAodm9pZCltZXRhZGF0YUNvbGxlY3RvcjooQVZQbGF5ZXJJdGVtTWV0
YWRhdGFDb2xsZWN0b3IgKiltZXRhZGF0YUNvbGxlY3RvciBkaWQKICAgICBpZiAoIW1fcGxheWVy
IHx8ICFtZXRhZGF0YUdyb3VwcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV90YXNrUXVldWUu
ZW5xdWV1ZVRhc2soW3BsYXllciA9IG1fcGxheWVyLCBtZXRhZGF0YUdyb3VwcyA9IHJldGFpblB0
cihtZXRhZGF0YUdyb3VwcyksIGN1cnJlbnRUaW1lID0gbV9wbGF5ZXItPmN1cnJlbnRNZWRpYVRp
bWUoKV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3BsYXllciA9IG1fcGxheWVyLCBtZXRhZGF0
YUdyb3VwcyA9IHJldGFpblB0cihtZXRhZGF0YUdyb3VwcyksIGN1cnJlbnRUaW1lID0gbV9wbGF5
ZXItPmN1cnJlbnRNZWRpYVRpbWUoKV0gewogICAgICAgICBpZiAoIXBsYXllcikKICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtMzc4MSw3ICszNzc5LDcgQEAgLSAoQk9PTClyZXNvdXJjZUxvYWRl
cjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgc2hvdWxkV2FpdEZvckxv
YWQKICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgZW5zdXJlT25NYWluVGhyZWFkKFtzZWxmLCBz
dHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBsb2FkaW5nUmVxdWVzdCA9IHJldGFpblB0cihs
b2FkaW5nUmVxdWVzdCldKCkgbXV0YWJsZSB7Ci0gICAgICAgIG1fdGFza1F1ZXVlLmVucXVldWVU
YXNrKFtwbGF5ZXIgPSBtX3BsYXllciwgbG9hZGluZ1JlcXVlc3QgPSBXVEZNb3ZlKGxvYWRpbmdS
ZXF1ZXN0KV0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwbGF5ZXIgPSBtX3BsYXllciwg
bG9hZGluZ1JlcXVlc3QgPSBXVEZNb3ZlKGxvYWRpbmdSZXF1ZXN0KV0gewogICAgICAgICAgICAg
aWYgKCFwbGF5ZXIpIHsKICAgICAgICAgICAgICAgICBbbG9hZGluZ1JlcXVlc3QgZmluaXNoTG9h
ZGluZ1dpdGhFcnJvcjpuaWxdOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTM4MDcsNyAr
MzgwNSw3IEBAIC0gKHZvaWQpcmVzb3VyY2VMb2FkZXI6KEFWQXNzZXRSZXNvdXJjZUxvYWRlciAq
KXJlc291cmNlTG9hZGVyIGRpZENhbmNlbExvYWRpbmdSCiB7CiAgICAgVU5VU0VEX1BBUkFNKHJl
c291cmNlTG9hZGVyKTsKICAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3NlbGYsIHN0cm9uZ1NlbGYg
PSByZXRhaW5QdHIoc2VsZiksIGxvYWRpbmdSZXF1ZXN0ID0gcmV0YWluUHRyKGxvYWRpbmdSZXF1
ZXN0KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3BsYXll
ciA9IG1fcGxheWVyLCBsb2FkaW5nUmVxdWVzdCA9IFdURk1vdmUobG9hZGluZ1JlcXVlc3QpXSB7
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3BsYXllciA9IG1fcGxheWVyLCBsb2FkaW5nUmVx
dWVzdCA9IFdURk1vdmUobG9hZGluZ1JlcXVlc3QpXSB7CiAKICAgICAgICAgICAgIFNjcmlwdERp
c2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgK
aW5kZXggYjc1NzdmMjk1OGQ1NzAzY2JlZGQyZDJlZDdjMDBjNTJkYmNhYTcwMC4uY2VjNGNlN2U1
ZDlhMmIwYjhmZTlhOTU3ODFmYjVmYjBkMzgzYzY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC0yNywxMSArMjcsMTEg
QEAKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpICYmIFVTRShBVkZPVU5EQVRJT04pCiAKLSNp
bmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUGFyc2Vy
LmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgPGRpc3BhdGNo
L2dyb3VwLmg+CiAjaW5jbHVkZSA8d3RmL0JveC5oPgorI2luY2x1ZGUgPHd0Zi9DYW5jZWxsYWJs
ZVRhc2suaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KQEAgLTE5Myw3ICsxOTMsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWQgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9oYXNQZW5kaW5nQXBwZW5kQ29tcGxldGVkQ2FsbGJhY2sgeyBmYWxzZSB9
OwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFJlZjxNZWRpYVNhbXBsZT4+PiBtX21l
ZGlhU2FtcGxlczsKLSAgICBNYWluVGhyZWFkVGFza1F1ZXVlIG1fbWVkaWFTYW1wbGVUYXNrUXVl
dWU7CisgICAgVGFza0NhbmNlbGxlciBtX21lZGlhU2FtcGxlVGFza0NhbmNlbGxlcjsKIAogICAg
IFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9kaXNwbGF5TGF5ZXI7CiAg
ICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCBjMWY4NTE0
YmE1MDk2ZWJiODM1YjAxNjY1MDJlZTM3Y2MyZDhkMzUzLi5jODBlMDlmZDI4ZTI1NWNiOTU1MzZi
NDAxNTU5NWU1Y2ExOGYxZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtMzU5LDcgKzM1OSw3IEBAIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoKQogICAgIGlm
IChtX2hhc1Nlc3Npb25TZW1hcGhvcmUpCiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+
c2lnbmFsKCk7CiAKLSAgICBtX21lZGlhU2FtcGxlVGFza1F1ZXVlLmNsb3NlKCk7CisgICAgbV9t
ZWRpYVNhbXBsZVRhc2tDYW5jZWxsZXIuY2FuY2VsKCk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9u
U2VnbWVudCYmIHNlZ21lbnQpCkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25T
ZWdtZW4KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIG1fbWVkaWFT
YW1wbGVUYXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFr
VGhpcyldIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChDYW5jZWxsYWJsZVRhc2sobV9tZWRp
YVNhbXBsZVRhc2tDYW5jZWxsZXIsIFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMp
XSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IApAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRp
ZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVuCiAgICAgICAgICAg
ICAgICAgbV9oYXNQZW5kaW5nQXBwZW5kQ29tcGxldGVkQ2FsbGJhY2sgPSBmYWxzZTsKICAgICAg
ICAgICAgICAgICBhcHBlbmRDb21wbGV0ZWQoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSk7
CisgICAgICAgIH0pKTsKICAgICB9KTsKIH0KIApAQCAtNjc2LDcgKzY3Niw3IEBAIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFib3J0KCkKICAgICBtX3BhcnNlci0+cmVzZXRQYXJz
ZXJTdGF0ZSgpOwogICAgIG1fbWVkaWFTYW1wbGVzLmNsZWFyKCk7CiAgICAgbV9pbml0aWFsaXph
dGlvblNlZ21lbnRJc0hhbmRsZWQgPSBmYWxzZTsKLSAgICBtX21lZGlhU2FtcGxlVGFza1F1ZXVl
LmNhbmNlbEFsbFRhc2tzKCk7CisgICAgbV9tZWRpYVNhbXBsZVRhc2tDYW5jZWxsZXIuY2FuY2Vs
KCk7CiAKICAgICBkaXNwYXRjaF9ncm91cF93YWl0KG1faXNBcHBlbmRpbmdHcm91cC5nZXQoKSwg
RElTUEFUQ0hfVElNRV9GT1JFVkVSKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCmluZGV4IGFmNDk3ZDJlMThlNmQ1NTdlNDk0M2IxOTRh
ZmY0OGRhN2I0NjY3ZTguLjBkYWNlM2I3N2IzOGUxMWFhNWI3Yjc3MTg5M2ZhZWYwZTliY2RjOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1
ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIu
aApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJDYXB0dXJlRGV2aWNlTWFuYWdlci5oIgotI2luY2x1
ZGUgIkdlbmVyaWNUYXNrUXVldWUuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430788</attachid>
            <date>2021-06-07 15:23:46 -0700</date>
            <delta_ts>2021-06-07 15:28:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226734-20210607152345.patch</filename>
            <type>text/plain</type>
            <size>54756</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZhNDVlZjMwMWIzY2Y3NzBlNjljYWI1
OTA5MGQ0YmE5ZDM5YWJiNWUuLmM4YzZmNWU0ZTUxZDMyNGVhNjNiMjAyODdhYTFlOGI2OWE1ZTNh
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjEtMDYtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIGxlZ2FjeSBNYWluVGhyZWFkVGFza1F1ZXVlICYg
RXZlbnRMb29wVGFza1F1ZXVlIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjczNAorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2Ug
Tml3YS4KKworICAgICAgICBXZSByZWNlbnRseSBpbnRyb2R1Y2VkIHRoZSBXVEY6OkNhbmNlbGxh
YmxlVGFzayBpbiBvcmRlciB0byBiZSBhYmxlIHRvIGNhbmNlbAorICAgICAgICBhIHBlbmRpbmcg
dGFzayBpbiB0aGUgZXZlbnQgbG9vcCwgYW5kL29yIGNoZWNrIGlmIHRoZSB0YXNrIGlzIHN0aWxs
IHBlbmRpbmcuCisgICAgICAgIEl0IHdvcmtlZCBncmVhdCBhcyBhIHJlcGxhY2VtZW50IGZvciBF
dmVudExvb3BEZWZlcnJhYmxlVGFzay4gSG93ZXZlciwgaXQgd2FzCisgICAgICAgIGluc3VmZmlj
aWVudCBhcyBhIHJlcGxhY2VtZW50IGZvciB0YXNrIHF1ZXVlcyAoc3VjaCBhcyBNYWluVGhyZWFk
VGFza1F1ZXVlICYKKyAgICAgICAgRXZlbnRMb29wVGFza1F1ZXVlKSBzaW5jZSB0aGVyZSB3YXMg
bm8gY29udmVuaWVudCB3YXkgdG8gY2FuY2VsIGEgZ3JvdXAgb2YKKyAgICAgICAgdGFza3MuIFRv
IGFkZHJlc3MgdGhpcywgSSBhbSBpbnRyb2R1Y2luZyBXVEY6OlRhc2tDYW5jZWxsYXRpb25Hcm91
cC4gV2hlbmV2ZXIgb25lCisgICAgICAgIG5lZWRzIHRvIGNyZWF0ZSBhIENhbmNlbGxhYmxlVGFz
aywgaXQgbm93IG5lZWRzIHRvIHByb3ZpZGUgYSBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAuCisgICAg
ICAgIFNldmVyYWwgQ2FuY2VsbGFibGVUYXNrIG9iamVjdHMgY2FuIHNoYXJlIHRoZSBzYW1lIFRh
c2tDYW5jZWxsYXRpb25Hcm91cC4gQ29kZSBub3cKKyAgICAgICAgbm93IHNjaGVkdWxlIG9uZSBv
ciBtb3JlIENhbmNlbGxhYmxlVGFza3Mgb24gdGhlIGV2ZW50IGxvb3AgYW5kIGhvbGQgb24KKyAg
ICAgICAgdG8gYSBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAuIElmIHRoZXkgbmVlZCB0byBjYW5jZWwg
dGhvc2UgdGFza3MsIHRoZXkgY2FuIHNpbXBseQorICAgICAgICBjYWxsIGNhbmNlbCgpIG9uIHRo
ZSBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAuIFRoZXkgY2FuIGFsc28gY2hlY2sgaWYgcHJldmlvdXNs
eQorICAgICAgICBzY2hlZHVsZWQgdGFza3MgYXJlIHN0aWxsIHBlbmRpbmcgdmlhIFRhc2tDYW5j
ZWxsYXRpb25Hcm91cDo6aGFzUGVuZGluZ1Rhc2soKS4KKworICAgICAgICAqIHd0Zi9DYW5jZWxs
YWJsZVRhc2suaDoKKyAgICAgICAgKFdURjo6VGFza0NhbmNlbGxhdGlvbkdyb3VwOjpUYXNrQ2Fu
Y2VsbGF0aW9uR3JvdXApOgorICAgICAgICAoV1RGOjpUYXNrQ2FuY2VsbGF0aW9uR3JvdXA6OmNh
bmNlbCk6CisgICAgICAgIChXVEY6OlRhc2tDYW5jZWxsYXRpb25Hcm91cDo6aGFzUGVuZGluZ1Rh
c2sgY29uc3QpOgorICAgICAgICAoV1RGOjpUYXNrQ2FuY2VsbGF0aW9uR3JvdXA6OkltcGw6OmNh
bmNlbCk6CisgICAgICAgIChXVEY6OlRhc2tDYW5jZWxsYXRpb25Hcm91cDo6SW1wbDo6aGFzUGVu
ZGluZ1Rhc2sgY29uc3QpOgorICAgICAgICAoV1RGOjpUYXNrQ2FuY2VsbGF0aW9uR3JvdXA6Okhh
bmRsZTo6aXNDYW5jZWxsZWQgY29uc3QpOgorICAgICAgICAoV1RGOjpUYXNrQ2FuY2VsbGF0aW9u
R3JvdXA6OkhhbmRsZTo6SGFuZGxlKToKKyAgICAgICAgKFdURjo6VGFza0NhbmNlbGxhdGlvbkdy
b3VwOjpjcmVhdGVIYW5kbGUpOgorICAgICAgICAoV1RGOjpDYW5jZWxsYWJsZVRhc2s6OkNhbmNl
bGxhYmxlVGFzayk6CisgICAgICAgIChXVEY6OkNhbmNlbGxhYmxlVGFzazo6b3BlcmF0b3IoKSk6
CisgICAgICAgICogd3RmL1dlYWtQdHIuaDoKKyAgICAgICAgKFdURjo6V2Vha1B0ckZhY3Rvcnk6
OndlYWtQdHJDb3VudCBjb25zdCk6CisKIDIwMjEtMDYtMDcgIEFsaWNpYSBCb3lhIEdhcmPDrWEg
IDxhYm95YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXVEZdW0dTdHJlYW1lcl0gRml4IGNsYW5n
IFRTQSB3YXJuaW5ncyBpbiBXVEY6OkRhdGFNdXRleApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGVmOTk0NzUwOGY0
NzJhODYyZjk0ZDFjOWNkMWZmZWQ4MDI0YmI2ZDYuLmU3NjQ5NGI3MzljYWYwMTk1YzJhNDZjYTFm
NzliOGMzZjI4MDU3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAyMS0wNi0wNyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgbGVnYWN5IE1h
aW5UaHJlYWRUYXNrUXVldWUgJiBFdmVudExvb3BUYXNrUXVldWUgY2xhc3NlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzM0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIERyb3AgbGVnYWN5IE1haW5UaHJl
YWRUYXNrUXVldWUgJiBFdmVudExvb3BUYXNrUXVldWUgY2xhc3Nlcy4gQ29kZSB0aGF0IHdhcyB1
c2luZyBNYWluVGhyZWFkVGFza1F1ZXVlCisgICAgICAgIGlzIG5vdyBjYWxsaW5nIGNhbGxPbk1h
aW5UaHJlYWQoKSBkaXJlY3RseS4gQ2FsbCB0aGF0IHdhcyB1c2luZyBFdmVudExvb3BUYXNrUXVl
dWUgaXMgbm93IHVzaW5nIHRoZQorICAgICAgICBIVE1MIGV2ZW50IGxvb3AgZGlyZWN0bHkuIElm
IHNhaWQgY29kZSBuZWVkZWQgdG8gY2FuY2VsIHRhc2tzIG9yIGNoZWNrIGlmIGEgcHJldmlvdXNs
eSBzY2hlZHVsZWQgdGFzaworICAgICAgICBpcyBzdGlsbCBwZW5kaW5nLCBpdCBub3cgcmVsaWVz
IG9uIFdURjo6Q2FuY2VsbGFibGVUYXNrIC8gV1RGOjpUYXNrQ2FuY2VsbGF0aW9uR3JvdXAgdG8g
ZG8gc28uCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3BwOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRU
aW1lbGluZXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxp
bmVzQ29udHJvbGxlcjo6Y2FjaGVDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6Om1heWJlQ2xlYXJDYWNoZWRDdXJyZW50VGltZSk6Cisg
ICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oOgorICAgICAg
ICAqIGRvbS9BY3RpdmVET01PYmplY3QuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpzY2hlZHVsZU5leHRTb3VyY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUNoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRhYmls
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZvbHVtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUNvbmZpZ3VyZVRleHRU
cmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVNZWRp
YUVuZ2luZVdhc1VwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
c2NoZWR1bGVVcGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6Y2FuY2VsUGVuZGluZ1Rhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6Y2xvc2VUYXNrUXVldWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OnN1c3BlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVzdW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpcnR1YWxIYXNQZW5kaW5n
QWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWFy
a0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVVwZGF0ZU1l
ZGlhU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tD
b250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1RpbWVyRmlyZWQpOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL0dlbmVyaWNUYXNr
UXVldWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAo
LVtXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBtZXRhZGF0YUxvYWRlZF0pOgorICAgICAgICAoLVtX
ZWJDb3JlQVZGTW92aWVPYnNlcnZlciBkaWRFbmQ6XSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZN
b3ZpZU9ic2VydmVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRl
eHQ6XSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIGxlZ2libGVPdXRwdXQ6
ZGlkT3V0cHV0QXR0cmlidXRlZFN0cmluZ3M6bmF0aXZlU2FtcGxlQnVmZmVyczpmb3JJdGVtVGlt
ZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgb3V0cHV0U2VxdWVuY2VX
YXNGbHVzaGVkOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBtZXRhZGF0
YU91dHB1dDpkaWRPdXRwdXRUaW1lZE1ldGFkYXRhR3JvdXBzOmZyb21QbGF5ZXJJdGVtVHJhY2s6
XSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIG1ldGFkYXRhQ29sbGVjdG9y
OmRpZENvbGxlY3REYXRlUmFuZ2VNZXRhZGF0YUdyb3VwczppbmRleGVzT2ZOZXdHcm91cHM6aW5k
ZXhlc09mTW9kaWZpZWRHcm91cHM6XSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZMb2FkZXJEZWxl
Z2F0ZSByZXNvdXJjZUxvYWRlcjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3Vy
Y2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZMb2FkZXJEZWxlZ2F0ZSByZXNvdXJjZUxvYWRl
cjpkaWRDYW5jZWxMb2FkaW5nUmVxdWVzdDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFib3J0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNl
TWFuYWdlci5oOgorCiAyMDIxLTA2LTA3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KIAogICAgICAgICBGYWN0b3Igc2VsZWN0aW9uIHN0YXRlIGNvbXB1dGF0aW9uIG91dCBvZiBM
ZWdhY3lJbmxpbmVUZXh0Qm94CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DYW5jZWxsYWJs
ZVRhc2suaCBiL1NvdXJjZS9XVEYvd3RmL0NhbmNlbGxhYmxlVGFzay5oCmluZGV4IDA2NzVjMmIy
YzRjMGMwNzFlM2Y4MjRmNjAzZThjODNlNWExZjRjMTAuLmY0NGE2MTgxZTdhMGRjZjRiNDRjYWJh
NTcxNjYwZTU5ZGZiZThhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NhbmNlbGxhYmxl
VGFzay5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NhbmNlbGxhYmxlVGFzay5oCkBAIC0zMSw1OSAr
MzEsNjIgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLW5hbWVzcGFjZSBEZXRhaWwgewotc3RydWN0
IENhbmNlbGxhYmxlVGFza0ltcGwgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q2FuY2VsbGFibGVU
YXNrSW1wbD4gewotICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICBleHBs
aWNpdCBDYW5jZWxsYWJsZVRhc2tJbXBsKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKSA6IHRhc2so
V1RGTW92ZSh0YXNrKSkgeyB9Ci0gICAgRnVuY3Rpb248dm9pZCgpPiB0YXNrOwotfTsKLX0KK2Ns
YXNzIENhbmNlbGxhYmxlVGFzazsKIAotY2xhc3MgQ2FuY2VsbGFibGVUYXNrIHsKK2NsYXNzIFRh
c2tDYW5jZWxsYXRpb25Hcm91cCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNrQ2FuY2VsbGF0
aW9uR3JvdXA+IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBDYW5jZWxsYWJsZVRhc2soRnVuY3Rp
b248dm9pZCgpPiYmKTsKKyAgICBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAoKSA6IG1faW1wbChtYWtl
VW5pcXVlUmVmPEltcGw+KCkpIHsgfQorICAgIHZvaWQgY2FuY2VsKCkgeyBtX2ltcGwtPmNhbmNl
bCgpOyB9CisgICAgYm9vbCBoYXNQZW5kaW5nVGFzaygpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC0+
aGFzUGVuZGluZ1Rhc2soKTsgfQogCi0gICAgdm9pZCBvcGVyYXRvcigpKCk7Ci0gICAgYm9vbCBp
c1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiAhIW1fdGFza1dyYXBwZXItPnRhc2s7IH0KLSAgICB2
b2lkIGNhbmNlbCgpIHsgbV90YXNrV3JhcHBlci0+dGFzayA9IG51bGxwdHI7IH0KK3ByaXZhdGU6
CisgICAgZnJpZW5kIGNsYXNzIENhbmNlbGxhYmxlVGFzazsKKyAgICBjbGFzcyBJbXBsIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPEltcGw+IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CisgICAgcHVibGljOgorICAgICAgICB2b2lkIGNhbmNlbCgpIHsgd2Vha1B0ckZhY3Rvcnko
KS5yZXZva2VBbGwoKTsgfQorICAgICAgICBib29sIGhhc1BlbmRpbmdUYXNrKCkgY29uc3QgeyBy
ZXR1cm4gd2Vha1B0ckZhY3RvcnkoKS53ZWFrUHRyQ291bnQoKTsgfQorICAgIH07CiAKICAgICBj
bGFzcyBIYW5kbGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSGFuZGxlKCkgPSBkZWZhdWx0Owot
ICAgICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fdGFza1dyYXBwZXIgJiYg
bV90YXNrV3JhcHBlci0+dGFzazsgfQotICAgICAgICB2b2lkIGNhbmNlbCgpOworICAgICAgICBi
b29sIGlzQ2FuY2VsbGVkKCkgY29uc3QgeyByZXR1cm4gIW1faW1wbDsgfQorICAgICAgICB2b2lk
IGNsZWFyKCkgeyBtX2ltcGwgPSBudWxscHRyOyB9CiAgICAgcHJpdmF0ZToKLSAgICAgICAgZnJp
ZW5kIGNsYXNzIENhbmNlbGxhYmxlVGFzazsKLSAgICAgICAgZXhwbGljaXQgSGFuZGxlKERldGFp
bDo6Q2FuY2VsbGFibGVUYXNrSW1wbCYpOwotICAgICAgICBXZWFrUHRyPERldGFpbDo6Q2FuY2Vs
bGFibGVUYXNrSW1wbD4gbV90YXNrV3JhcHBlcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFRhc2tD
YW5jZWxsYXRpb25Hcm91cDsKKyAgICAgICAgZXhwbGljaXQgSGFuZGxlKEltcGwmIGltcGwpIDog
bV9pbXBsKG1ha2VXZWFrUHRyKGltcGwpKSB7IH0KKyAgICAgICAgV2Vha1B0cjxJbXBsPiBtX2lt
cGw7CiAgICAgfTsKKyAgICBIYW5kbGUgY3JlYXRlSGFuZGxlKCkgeyByZXR1cm4gSGFuZGxlIHsg
bV9pbXBsIH07IH0KKworICAgIFVuaXF1ZVJlZjxJbXBsPiBtX2ltcGw7Cit9OwogCi0gICAgSGFu
ZGxlIGNyZWF0ZUhhbmRsZSgpIHsgcmV0dXJuIEhhbmRsZSB7IG1fdGFza1dyYXBwZXIuZ2V0KCkg
fTsgfQorY2xhc3MgQ2FuY2VsbGFibGVUYXNrIHsKK3B1YmxpYzoKKyAgICBDYW5jZWxsYWJsZVRh
c2soVGFza0NhbmNlbGxhdGlvbkdyb3VwJiwgRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lk
IG9wZXJhdG9yKCkoKTsKIAogcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8RGV0YWlsOjpDYW5jZWxs
YWJsZVRhc2tJbXBsPiBtX3Rhc2tXcmFwcGVyOworICAgIFRhc2tDYW5jZWxsYXRpb25Hcm91cDo6
SGFuZGxlIG1fY2FuY2VsbGF0aW9uR3JvdXA7CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX3Rhc2s7
CiB9OwogCi1pbmxpbmUgQ2FuY2VsbGFibGVUYXNrOjpDYW5jZWxsYWJsZVRhc2soRnVuY3Rpb248
dm9pZCgpPiYmIHRhc2spCi0gICAgOiBtX3Rhc2tXcmFwcGVyKG1ha2VVbmlxdWVSZWY8RGV0YWls
OjpDYW5jZWxsYWJsZVRhc2tJbXBsPihXVEZNb3ZlKHRhc2spKSkKK2lubGluZSBDYW5jZWxsYWJs
ZVRhc2s6OkNhbmNlbGxhYmxlVGFzayhUYXNrQ2FuY2VsbGF0aW9uR3JvdXAmIGNhbmNlbGxhdGlv
bkdyb3VwLCBGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKKyAgICA6IG1fY2FuY2VsbGF0aW9uR3Jv
dXAoY2FuY2VsbGF0aW9uR3JvdXAuY3JlYXRlSGFuZGxlKCkpCisgICAgLCBtX3Rhc2soV1RGTW92
ZSh0YXNrKSkKIHsgfQogCiBpbmxpbmUgdm9pZCBDYW5jZWxsYWJsZVRhc2s6Om9wZXJhdG9yKCko
KQogewotICAgIGlmIChhdXRvIHRhc2sgPSBzdGQ6OmV4Y2hhbmdlKG1fdGFza1dyYXBwZXItPnRh
c2ssIG51bGxwdHIpKQotICAgICAgICB0YXNrKCk7Ci19Ci0KLWlubGluZSBDYW5jZWxsYWJsZVRh
c2s6OkhhbmRsZTo6SGFuZGxlKERldGFpbDo6Q2FuY2VsbGFibGVUYXNrSW1wbCYgdGFzaykKLSAg
ICA6IG1fdGFza1dyYXBwZXIobWFrZVdlYWtQdHIodGFzaykpCi17IH0KKyAgICBpZiAobV9jYW5j
ZWxsYXRpb25Hcm91cC5pc0NhbmNlbGxlZCgpKQorICAgICAgICByZXR1cm47CiAKLWlubGluZSB2
b2lkIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlOjpjYW5jZWwoKQotewotICAgIGlmIChtX3Rhc2tX
cmFwcGVyKQotICAgICAgICBtX3Rhc2tXcmFwcGVyLT50YXNrID0gbnVsbHB0cjsKKyAgICBtX2Nh
bmNlbGxhdGlvbkdyb3VwLmNsZWFyKCk7CisgICAgbV90YXNrKCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdURgogCiB1c2luZyBXVEY6OkNhbmNlbGxhYmxlVGFzazsKK3VzaW5nIFdURjo6VGFza0Nh
bmNlbGxhdGlvbkdyb3VwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV2Vha1B0ci5oIGIv
U291cmNlL1dURi93dGYvV2Vha1B0ci5oCmluZGV4IDJlOWY1NjZmODVhMTEzM2EzNzE1MWQ4MDFi
MzRlNzhhZjIyMjBlOTEuLjEyYzRiNjg5ODg3Mjk5M2ExYTUzZjU5Zjk2YjZkMGFiZjI2N2IwYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9XZWFrUHRyLmgKQEAgLTE4NSw2ICsxODUsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1faW1wbCA9
IG51bGxwdHI7CiAgICAgfQogCisgICAgdW5zaWduZWQgd2Vha1B0ckNvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZWZDb3VudCgpIC0gMSA6IDA7IH0KKwogI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pbXBs
OyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGM4NDQzMWRkNjgzOWQ5MDYwYTVmMzUy
NDJhODg1OWJhMWE0OTNjZDkuLjM5MDM4N2UyNDIyNzBkMDQ5NTM1ZTdhMGI5YWFjNWQ1NjAxZTU3
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTAzNCw3ICsxMDM0LDYgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL0ZpbGVNb25pdG9yLmgKICAg
ICBwbGF0Zm9ybS9GaWxlU3RyZWFtQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9GbG9hdENvbnZlcnNp
b24uaAotICAgIHBsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaAogICAgIHBsYXRmb3JtL0hvc3RX
aW5kb3cuaAogICAgIHBsYXRmb3JtL0tleWVkQ29kaW5nLmgKICAgICBwbGF0Zm9ybS9LZXlwcmVz
c0NvbW1hbmQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtQWNjZXNzLmNwcAppbmRleCA4NzlkM2U1ZTkzNWRl
ODlhYzA3OTcyOGVjNWRhZTAyZTVmNjBkZGZhLi4zZTM0MDJjMjNmYzAyNjBmODgyYTdmZDE3NGRm
OTRjYWYzMjdiNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3lzdGVtQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtQWNjZXNzLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIkNETS5oIgogI2luY2x1ZGUgIkNETUluc3RhbmNlLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJKU0RPTVBy
b21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTTWVkaWFLZXlzLmgiCiAjaW5jbHVkZSAiTWVk
aWFLZXlzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJp
bGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDJjZGM2OWYxNWQ1YThj
MDdlNWNiYWE2ZmU2YzdkMWY0OGM5MGI0MzguLmMzMzYwNGY2NGM5NzUzZTg5OTQwYmFlODEzMzIx
MDU3NjgwNDBlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBh
YmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpbmNsdWRlICJDb250ZW50VHlwZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIK
ICNpbmNsdWRlICJKU01lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvLmgiCiAjaW5jbHVkZSAi
SlNNZWRpYUNhcGFiaWxpdGllc0VuY29kaW5nSW5mby5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIxMmYxODJjMmZiMTI1ODFl
N2JmOTdhYTllMDVhNmM0NTNhMWVjMGIuLjQ1YmUyYmUyMzNmOWQxMTFlNDZlZTUxY2NlYTg2ZTg2
NWEzZjBmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTQzODYsNyArNDM4Niw2IEBACiAJCUNENUZGNDlDMjE2MkU0Q0YwMDRC
RDg2RiAvKiBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDEyRjc1QTlBODZFQTAzREFGMjRC
Nzk3MSAvKiBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDVGRjQ5RDIxNjJFNERC
MDA0QkQ4NkYgLyogSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODcxQzYwMUZCNTJCNjUwMEYwQjk2NSAv
KiBJU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNENUZGNDlFMjE2MkU0RTgwMDRCRDg2RiAvKiBJU09P
cmlnaW5hbEZvcm1hdEJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0Q4NzFDNjcxRkI1MkI2ODAwRjBCOTY1IC8qIElTT09yaWdpbmFsRm9ybWF0Qm94
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQ0Q2
MkZCOTYxQUYwMThFNzAwMTJFRDdEIC8qIEdlbmVyaWNUYXNrUXVldWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENjJGQjk0MUFGMDE4RTcwMDEyRUQ3
RCAvKiBHZW5lcmljVGFza1F1ZXVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQ0Q2NDFFQjMxODE4RjVFRDAwRUU0QzQxIC8qIE1lZGlhU291cmNl
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0Q2NDFFQjExODE4RjVFRDAwRUU0QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNENjQxRUI0MTgxOEY1
RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDY0MUVCMjE4MThGNUVEMDBFRTRDNDEgLyogU291
cmNlQnVmZmVyUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNENzIwQjRGMjI2OEI1MTMwMDA0N0ZERSAvKiBJU09GYWlyUGxheVN0cmVh
bWluZ1Bzc2hCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENENzIwQjQ5MjI2ODJDN0YwMDA0N0ZERSAvKiBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hC
b3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MTQ5OTksNyArMTQ5OTgsNiBAQAogCQlDRDVEMjc3NjFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29y
ZURlY29tcHJlc3Npb25TZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDVFNUI1RTFBMTVDRTU0MDAwQzYwOUUgLyogUGFnZUNvbmZpZ3VyYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZUNvbmZpZ3VyYXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1RTVCNjAxQTE1RjE1NjAwMEM2MDlFIC8qIFBhZ2VD
b25maWd1cmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
Z2VDb25maWd1cmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0Q2MkZC
OTQxQUYwMThFNzAwMTJFRDdEIC8qIEdlbmVyaWNUYXNrUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJpY1Rhc2tRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRDY0MUVCMTE4MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3VyY2VQcml2YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU291cmNlUHJpdmF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDY0MUVCMjE4MThGNUVEMDBFRTRDNDEg
LyogU291cmNlQnVmZmVyUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTb3VyY2VCdWZmZXJQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
NjQxRUM3MTgxRUQ2MDEwMEVFNEM0MSAvKiBNZWRpYVNhbXBsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZWRpYVNhbXBsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjgwNjgsNyArMjgw
NjYsNiBAQAogCQkJCUJDMDczQkE5MEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9hdENvbnZlcnNpb24u
aCAqLywKIAkJCQk0MTkwRjNBMTI0OUQxNTI3MDA1MzFDNTcgLyogRnJhbWVSYXRlTW9uaXRvci5j
cHAgKi8sCiAJCQkJNDE5MEYzQTMyNDlEMTUyODAwNTMxQzU3IC8qIEZyYW1lUmF0ZU1vbml0b3Iu
aCAqLywKLQkJCQlDRDYyRkI5NDFBRjAxOEU3MDAxMkVEN0QgLyogR2VuZXJpY1Rhc2tRdWV1ZS5o
ICovLAogCQkJCUE4NzQ4QkRGMTJDQkYyREMwMDFGQkE0MSAvKiBIYXNoVG9vbHMuaCAqLywKIAkJ
CQlCQzNCQzI5QjBFOTFBQjBGMDA4MzU1ODggLyogSG9zdFdpbmRvdy5oICovLAogCQkJCUY0OEI3
RDUyMjVDMzQxRTYwMDlFNzVERCAvKiBJbWFnZUV4dHJhY3Rpb25SZXN1bHQuaCAqLywKQEAgLTMy
NDcxLDcgKzMyNDY4LDYgQEAKIAkJCQk0MUZBQkQyRDFGNERGRTRBMDA2QTZDOTcgLyogRE9NQ2Fj
aGVFbmdpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMzgwQzI5MUYzNDM2QUMwMDE1NUZEQSAv
KiBET01DYWNoZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCREEzRkZFMjE1MUI2RjUw
MEZENjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICov
LAotCQkJCUU0NDdGNUIzMjY2Q0Y2M0QwMDEzM0YwMCAvKiBUZXh0Qm94U2VsZWN0YWJsZVJhbmdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGQzlBMEY3NTE2NDA5NENGMDAzRDZCOEQgLyogRE9NQ1NT
TmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjZCNUNCRDIxNjQwRUZGMDA2MDM4MTcg
LyogRE9NQ1NTUGFpbnRXb3JrbGV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QkRBM0ZGRjIxNTFC
NkY1MDBGRDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zMjc4OCw3ICszMjc4NCw2IEBACiAJCQkJQzBDMDU0Q0MxMTE4QzhFNDAwQ0UyNjM2
IC8qIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyM0YwREIwREFG
RjRBNDAwOUZEQzkxIC8qIEdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzAw
MzBGNjFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKLQkJCQlDRDYyRkI5NjFBRjAxOEU3MDAxMkVEN0QgLyogR2VuZXJpY1Rhc2tR
dWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjQxNEY0RERFNjAwM0U3QTcwIC8qIEdl
b2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyNTE0RjREREU2MDAzRTdBNzEg
LyogR2VvbG9jYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI3MTRGNERE
RTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MzU2NzYsNiArMzU2NzEsNyBAQAogCQkJCUNFN0IyREI1MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTREQ0U2MTg4MTA1
MUQwMDNFRURCQiAvKiBUZXh0QXV0b1NpemluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RB
MzQwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCb3VuZGFyaWVzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFNDQ3RjVCMzI2NkNGNjNEMDAxMzNGMDAgLyogVGV4dEJveFNlbGVjdGFibGVSYW5nZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTcxNTFCRDgxMkYxNTU4RjAwNUEwRjY0IC8qIFRleHRDaGVja2Vy
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdEMDAxMjEzM0IwQUVCMDBENjY1OEMgLyog
VGV4dENoZWNraW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0RCRjhERTEyNzY5MTlDMDA2QjYw
MDggLyogVGV4dENoZWNraW5nSGVscGVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAK
aW5kZXggYTJjNjY1OTVmNDYwZTg2YmIxNDY2OTM2OTU1Yjk1NWQ4YTkwNmExOS4uYzZmMTNjYjdj
NGRkMGI2OTA4YWZmNzY2YzM2NmJhZmE0N2UxMDAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAKQEAgLTUx
LDEwICs1MSw3IEBAIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6RG9jdW1lbnRUaW1lbGlu
ZXNDb250cm9sbGVyKERvY3VtZW50JiBkb2N1bWVudCkKICAgICB9CiB9CiAKLURvY3VtZW50VGlt
ZWxpbmVzQ29udHJvbGxlcjo6fkRvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcigpCi17Ci0gICAg
bV9jdXJyZW50VGltZUNsZWFyaW5nVGFzay5jYW5jZWwoKTsKLX0KK0RvY3VtZW50VGltZWxpbmVz
Q29udHJvbGxlcjo6fkRvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcigpID0gZGVmYXVsdDsKIAog
dm9pZCBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OmFkZFRpbWVsaW5lKERvY3VtZW50VGlt
ZWxpbmUmIHRpbWVsaW5lKQogewpAQCAtNzMsNyArNzAsNyBAQCB2b2lkIERvY3VtZW50VGltZWxp
bmVzQ29udHJvbGxlcjo6cmVtb3ZlVGltZWxpbmUoRG9jdW1lbnRUaW1lbGluZSYgdGltZWxpbmUp
CiAKIHZvaWQgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjpkZXRhY2hGcm9tRG9jdW1lbnQo
KQogewotICAgIG1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2suY2FuY2VsKCk7CisgICAgbV9jdXJy
ZW50VGltZUNsZWFyaW5nVGFza0NhbmNlbGxhdGlvbkdyb3VwLmNhbmNlbCgpOwogCiAgICAgd2hp
bGUgKCFtX3RpbWVsaW5lcy5jb21wdXRlc0VtcHR5KCkpCiAgICAgICAgIG1fdGltZWxpbmVzLmJl
Z2luKCktPmRldGFjaEZyb21Eb2N1bWVudCgpOwpAQCAtMjMzLDkgKzIzMCw4IEBAIHZvaWQgRG9j
dW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjpjYWNoZUN1cnJlbnRUaW1lKFJlZHVjZWRSZXNvbHV0
aW9uU2Vjb25kcyBuZXdDCiAgICAgLy8gYW5pbWF0aW9ucywgc28gd2Ugc2NoZWR1bGUgdGhlIGlu
dmFsaWRhdGlvbiB0YXNrIGFuZCByZWdpc3RlciBhIHdoZW5JZGxlIGNhbGxiYWNrIG9uIHRoZSBW
TSwgd2hpY2ggd2lsbAogICAgIC8vIGZpcmUgc3luY3Jvbm91c2x5IGlmIG5vIEpTIGlzIHJ1bm5p
bmcuCiAgICAgbV93YWl0aW5nT25WTUlkbGUgPSB0cnVlOwotICAgIGlmICghbV9jdXJyZW50VGlt
ZUNsZWFyaW5nVGFzay5pc1BlbmRpbmcoKSkgewotICAgICAgICBDYW5jZWxsYWJsZVRhc2sgdGFz
ayhzdGQ6OmJpbmQoJkRvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6bWF5YmVDbGVhckNhY2hl
ZEN1cnJlbnRUaW1lLCB0aGlzKSk7Ci0gICAgICAgIG1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2sg
PSB0YXNrLmNyZWF0ZUhhbmRsZSgpOworICAgIGlmICghbV9jdXJyZW50VGltZUNsZWFyaW5nVGFz
a0NhbmNlbGxhdGlvbkdyb3VwLmhhc1BlbmRpbmdUYXNrKCkpIHsKKyAgICAgICAgQ2FuY2VsbGFi
bGVUYXNrIHRhc2sobV9jdXJyZW50VGltZUNsZWFyaW5nVGFza0NhbmNlbGxhdGlvbkdyb3VwLCBz
dGQ6OmJpbmQoJkRvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6bWF5YmVDbGVhckNhY2hlZEN1
cnJlbnRUaW1lLCB0aGlzKSk7CiAgICAgICAgIG1fZG9jdW1lbnQuZXZlbnRMb29wKCkucXVldWVU
YXNrKFRhc2tTb3VyY2U6OkludGVybmFsQXN5bmNUYXNrLCBXVEZNb3ZlKHRhc2spKTsKICAgICB9
CiAgICAgLy8gV2UgZXh0ZW50IHRoZSBhc3NvY2lhdGVkIERvY3VtZW50J3MgbGlmZWN5Y2xlIHVu
dGlsIHRoZSBWTSBiZWNhbWUgaWRsZSBzaW5jZSB0aGUgRG9jdW1lbnRUaW1lbGluZXNDb250cm9s
bGVyCkBAIC0yNTIsNyArMjQ4LDcgQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6
Om1heWJlQ2xlYXJDYWNoZWRDdXJyZW50VGltZSgpCiAgICAgLy8gSlMgb3Igd2FpdGluZyBvbiBh
bGwgY3VycmVudCBhbmltYXRpb24gdXBkYXRpbmcgY29kZSB0byBoYXZlIGNvbXBsZXRlZC4gVGhp
cyBpcyBzbyB0aGF0CiAgICAgLy8gd2UncmUgZ3VhcmFudGVlZCB0byBoYXZlIGEgY29uc2lzdGVu
dCBjdXJyZW50IHRpbWUgcmVwb3J0ZWQgZm9yIGFsbCB3b3JrIGhhcHBlbmluZyBpbiBhIGdpdmVu
CiAgICAgLy8gSlMgZnJhbWUgb3IgdGhyb3VnaG91dCB1cGRhdGluZyBhbmltYXRpb25zIGluIFdl
YkNvcmUuCi0gICAgaWYgKCFtX2lzU3VzcGVuZGVkICYmICFtX3dhaXRpbmdPblZNSWRsZSAmJiAh
bV9jdXJyZW50VGltZUNsZWFyaW5nVGFzay5pc1BlbmRpbmcoKSkKKyAgICBpZiAoIW1faXNTdXNw
ZW5kZWQgJiYgIW1fd2FpdGluZ09uVk1JZGxlICYmICFtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNr
Q2FuY2VsbGF0aW9uR3JvdXAuaGFzUGVuZGluZ1Rhc2soKSkKICAgICAgICAgbV9jYWNoZWRDdXJy
ZW50VGltZSA9IHN0ZDo6bnVsbG9wdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oCmluZGV4IDk3MWJjZDYyMTY0
YjNlZTdlZmRlZWE2OTQyNWRiNTg1NzA2NDBjZGUuLmNjZGU4YjQyMTg3ZDcwYTBlMDNiMTljN2Fl
NTA5YzJiMjZhNjQ3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1
bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIG1heWJlQ2xlYXJDYWNoZWRDdXJyZW50VGltZSgpOwogCiAgICAgV2Vha0hhc2hT
ZXQ8RG9jdW1lbnRUaW1lbGluZT4gbV90aW1lbGluZXM7Ci0gICAgQ2FuY2VsbGFibGVUYXNrOjpI
YW5kbGUgbV9jdXJyZW50VGltZUNsZWFyaW5nVGFzazsKKyAgICBUYXNrQ2FuY2VsbGF0aW9uR3Jv
dXAgbV9jdXJyZW50VGltZUNsZWFyaW5nVGFza0NhbmNlbGxhdGlvbkdyb3VwOwogICAgIERvY3Vt
ZW50JiBtX2RvY3VtZW50OwogICAgIE1hcmthYmxlPFNlY29uZHMsIFNlY29uZHM6Ok1hcmthYmxl
VHJhaXRzPiBtX2NhY2hlZEN1cnJlbnRUaW1lOwogICAgIGJvb2wgbV9pc1N1c3BlbmRlZCB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggNDUwNGVhMTFmOTgx
OTM1YzFiODhiZmQ5ZDEyMGU2OTllZjZiMDlmZi4uMTEwNzRiMDE4NTdmNjRmZmU5YmIyZjgyODBm
ZDYzY2U2ZjhjNGRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaApAQCAtMTEy
LDE0ICsxMTIsMTIgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci0gICAgc3RhdGljIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIHF1ZXVlQ2FuY2VsbGFibGVUYXNr
S2VlcGluZ09iamVjdEFsaXZlKFQmIG9iamVjdCwgVGFza1NvdXJjZSBzb3VyY2UsIEZ1bmN0aW9u
PHZvaWQoKT4mJiB0YXNrKQorICAgIHN0YXRpYyB2b2lkIHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2Vl
cGluZ09iamVjdEFsaXZlKFQmIG9iamVjdCwgVGFza1NvdXJjZSBzb3VyY2UsIFRhc2tDYW5jZWxs
YXRpb25Hcm91cCYgY2FuY2VsbGF0aW9uR3JvdXAsIEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQog
ICAgIHsKLSAgICAgICAgQ2FuY2VsbGFibGVUYXNrIGNhbmNlbGxhYmxlVGFzayhXVEZNb3ZlKHRh
c2spKTsKLSAgICAgICAgYXV0byB0YXNrSGFuZGxlID0gY2FuY2VsbGFibGVUYXNrLmNyZWF0ZUhh
bmRsZSgpOworICAgICAgICBDYW5jZWxsYWJsZVRhc2sgY2FuY2VsbGFibGVUYXNrKGNhbmNlbGxh
dGlvbkdyb3VwLCBXVEZNb3ZlKHRhc2spKTsKICAgICAgICAgb2JqZWN0LnF1ZXVlVGFza0luRXZl
bnRMb29wKHNvdXJjZSwgW3Byb3RlY3RlZE9iamVjdCA9IG1ha2VSZWYob2JqZWN0KSwgYWN0aXZp
dHkgPSBvYmplY3QuQWN0aXZlRE9NT2JqZWN0OjptYWtlUGVuZGluZ0FjdGl2aXR5KG9iamVjdCks
IGNhbmNlbGxhYmxlVGFzayA9IFdURk1vdmUoY2FuY2VsbGFibGVUYXNrKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGNhbmNlbGxhYmxlVGFzaygpOwogICAgICAgICB9KTsKLSAgICAgICAgcmV0
dXJuIHRhc2tIYW5kbGU7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXZlbnRUYXJn
ZXRUeXBlLCB0eXBlbmFtZSBFdmVudFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDJhYWQw
ZTVkZTBjODZlZjlhZjg5MDljY2M5YTNmNDFmNjNmYzcwYmYuLmI0NzFhNjNjZjU4NmM4MjMxNWUy
ZDY1MGYwMGQ5OWU2OTY2NTU2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC00MSw3ICs0MSw2
IEBACiAjaW5jbHVkZSAiRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRnJh
bWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgotI2luY2x1ZGUg
IkdlbmVyaWNUYXNrUXVldWUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVk
ZSAiTWVkaWFQcm9kdWNlci5oIgogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXIuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuY3BwCmluZGV4IDgwZTMzNmY0OTNhYWU1YmMw
OTBlNDJlOWJjZjllOGZmOWFkNzIzMzIuLmJiYjcyZDM5YjBlOWM1MDE0ZTUyZjQwNTBmYTQyZWE1
N2FmNzJlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmNwcApAQCAt
MzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xp
ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDFhNGQzMzRkNjgwZTY2MDVl
NDAzYzFhMmY0YmMwNTBjMjY3MDZjZmMuLjZkNzAzM2IxZTBhODY5YWQwMzc5YjVhY2Q2OTYwZmJh
NWVjNDgzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAt
Mzk0LDcgKzM5NCw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAgLCBtX3NjYW5UaW1l
cigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnNjYW5UaW1lckZpcmVkKQogICAgICwgbV9wbGF5
YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGltZXIoKnRoaXMsICZIVE1M
TWVkaWFFbGVtZW50OjpwbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25z
VGltZXJGaXJlZCkKICAgICAsIG1fc2Vla1RvUGxheWJhY2tQb3NpdGlvbkVuZGVkVGltZXIoKnRo
aXMsICZIVE1MTWVkaWFFbGVtZW50OjpzZWVrVG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRUaW1lckZp
cmVkKQotICAgICwgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZSgmZG9jdW1lbnQpCiAgICAg
LCBtX2FzeW5jRXZlbnRRdWV1ZShFdmVudExvb3BFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQog
ICAgICwgbV9sYXN0VGltZVVwZGF0ZUV2ZW50TW92aWVUaW1lKE1lZGlhVGltZTo6cG9zaXRpdmVJ
bmZpbml0ZVRpbWUoKSkKICAgICAsIG1fZmlyc3RUaW1lUGxheWluZyh0cnVlKQpAQCAtNTY3LDEx
ICs1NjYsNiBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAgICAgaWYg
KG1faXNvbGF0ZWRXb3JsZCkKICAgICAgICAgbV9pc29sYXRlZFdvcmxkLT5jbGVhcldyYXBwZXJz
KCk7CiAKLSAgICBtX3NlZWtUYXNrLmNhbmNlbCgpOwotICAgIG1fcmVzdW1lVGFzay5jYW5jZWwo
KTsKLSAgICBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUYXNr
LmNhbmNlbCgpOwotICAgIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrUXVldWUuY2xvc2UoKTsKLQog
ICAgIG1fY29tcGxldGVseUxvYWRlZCA9IHRydWU7CiAKICAgICBpZiAobV9wbGF5ZXIpIHsKQEAg
LTg5Myw5ICs4ODcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKFN0
eWxlOjpDaGFuZ2UpCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTmV4dFNvdXJjZUNo
aWxkKCkKIHsKICAgICAvLyBTY2hlZHVsZSB0aGUgdGltZXIgdG8gdHJ5IHRoZSBuZXh0IDxzb3Vy
Y2U+IGVsZW1lbnQgV0lUSE9VVCByZXNldHRpbmcgc3RhdGUgYWxhIHByZXBhcmVGb3JMb2FkLgot
ICAgIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXNdIHsKLSAg
ICAgICAgbG9hZE5leHRTb3VyY2VDaGlsZCgpOwotICAgIH0pOworICAgIHF1ZXVlQ2FuY2VsbGFi
bGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQs
IG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrQ2FuY2VsbGF0aW9uR3JvdXAsIHN0ZDo6YmluZCgmSFRN
TE1lZGlhRWxlbWVudDo6bG9hZE5leHRTb3VyY2VDaGlsZCwgdGhpcykpOwogfQogCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQpA
QCAtOTgwLDExICs5NzIsMTEgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpoYXNFdmVyTm90aWZp
ZWRBYm91dFBsYXlpbmcoKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxl
Q2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGFiaWxpdHkoKQogewotICAgIGlmIChtX2NoZWNrUGxh
eWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFzay5pc1BlbmRpbmcoKSkKKyAgICBpZiAobV9jaGVj
a1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJpbGl0eVRhc2tDYW5jZWxsYXRpb25Hcm91cC5oYXNQZW5k
aW5nVGFzaygpKQogICAgICAgICByZXR1cm47CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOwotICAgIG1fY2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGliaWxpdHlUYXNrID0gcXVldWVD
YW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlh
RWxlbWVudCwgW3RoaXNdIHsKKyAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RB
bGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX2NoZWNrUGxheWJhY2tUYXJn
ZXRDb21wYXRpYmlsaXR5VGFza0NhbmNlbGxhdGlvbkdyb3VwLCBbdGhpc10gewogICAgICAgICBj
aGVja1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJpbGl0eSgpOwogICAgIH0pOwogfQpAQCAtMTA5OSw5
ICsxMDkxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkKCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgcHJlcGFyZUZvckxvYWQoKTsKLSAgICBtX3Jlc291cmNlU2VsZWN0aW9uVGFza1F1
ZXVlLmVucXVldWVUYXNrKFt0aGlzXSB7Ci0gICAgICAgIHByZXBhcmVUb1BsYXkoKTsKLSAgICB9
KTsKKyAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFz
a1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX3Jlc291cmNlU2VsZWN0aW9uVGFza0NhbmNlbGxhdGlv
bkdyb3VwLCBzdGQ6OmJpbmQoJkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVUb1BsYXksIHRoaXMp
KTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCgpCkBAIC0xMTE4
LDcgKzExMDgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JMb2FkKCkKICAg
ICAvLyAxIC0gQWJvcnQgYW55IGFscmVhZHktcnVubmluZyBpbnN0YW5jZSBvZiB0aGUgcmVzb3Vy
Y2Ugc2VsZWN0aW9uIGFsZ29yaXRobSBmb3IgdGhpcyBlbGVtZW50LgogICAgIC8vIFBlcmZvcm0g
dGhlIGNsZWFudXAgcmVxdWlyZWQgZm9yIHRoZSByZXNvdXJjZSBsb2FkIGFsZ29yaXRobSB0byBy
dW4uCiAgICAgc3RvcFBlcmlvZGljVGltZXJzKCk7Ci0gICAgbV9yZXNvdXJjZVNlbGVjdGlvblRh
c2tRdWV1ZS5jYW5jZWxBbGxUYXNrcygpOworICAgIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrQ2Fu
Y2VsbGF0aW9uR3JvdXAuY2FuY2VsKCk7CiAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgYXBwcm9w
cmlhdGUgcGxhY2UgdG8gcmVzZXQgTG9hZFRleHRUcmFja1Jlc291cmNlIGlmIG5lY2Vzc2FyeSBh
bmQgc2V0IG1fcGVuZGluZ0FjdGlvbkZsYWdzIHRvIDAgaGVyZS4KICAgICBtX3NlbnRFbmRFdmVu
dCA9IGZhbHNlOwogICAgIG1fc2VudFN0YWxsZWRFdmVudCA9IGZhbHNlOwpAQCAtMTIzMCwxNyAr
MTIyMCwxNCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVsb2FkQW5kUmVz
dW1lUGxheWJhY2tJZk5lZWRlZCgpCiAgICAgICAgIGVudGVyRnVsbHNjcmVlbihtX3ZpZGVvRnVs
bHNjcmVlbk1vZGUpOwogCiAgICAgaWYgKHByZXZpb3VzTWVkaWFUaW1lKSB7Ci0gICAgICAgIG1f
cmVzb3VyY2VTZWxlY3Rpb25UYXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXMsIHByZXZpb3VzTWVk
aWFUaW1lXSB7CisgICAgICAgIHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZl
KCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNr
Q2FuY2VsbGF0aW9uR3JvdXAsIFt0aGlzLCBwcmV2aW91c01lZGlhVGltZV0gewogICAgICAgICAg
ICAgaWYgKG1fcGxheWVyKQogICAgICAgICAgICAgICAgIG1fcGxheWVyLT5zZWVrV2hlblBvc3Np
YmxlKHByZXZpb3VzTWVkaWFUaW1lKTsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgaWYgKCF3
YXNQYXVzZWQpIHsKLSAgICAgICAgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZS5lbnF1ZXVl
VGFzayhbdGhpc10gewotICAgICAgICAgICAgcGxheUludGVybmFsKCk7Ci0gICAgICAgIH0pOwot
ICAgIH0KKyAgICBpZiAoIXdhc1BhdXNlZCkKKyAgICAgICAgcXVldWVDYW5jZWxsYWJsZVRhc2tL
ZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgbV9yZXNv
dXJjZVNlbGVjdGlvblRhc2tDYW5jZWxsYXRpb25Hcm91cCwgc3RkOjpiaW5kKCZIVE1MTWVkaWFF
bGVtZW50OjpwbGF5SW50ZXJuYWwsIHRoaXMpKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzZWxlY3RNZWRpYVJlc291cmNlKCkKQEAgLTEyNTgsNyArMTI0NSw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNvdXJjZSgpCiAgICAgc2V0U2hvdWxkRGVsYXlMb2Fk
RXZlbnQodHJ1ZSk7CiAKICAgICAvLyA0LiBpbiBwYXJhbGxlbCBhd2FpdCBhIHN0YWJsZSBzdGF0
ZSwgYWxsb3dpbmcgdGhlIHRhc2sgdGhhdCBpbnZva2VkIHRoaXMgYWxnb3JpdGhtIHRvIGNvbnRp
bnVlLgotICAgIGlmIChtX3Jlc291cmNlU2VsZWN0aW9uVGFza1F1ZXVlLmhhc1BlbmRpbmdUYXNr
cygpKQorICAgIGlmIChtX3Jlc291cmNlU2VsZWN0aW9uVGFza0NhbmNlbGxhdGlvbkdyb3VwLmhh
c1BlbmRpbmdUYXNrKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbWVkaWFTZXNzaW9u
KCkucGFnZUFsbG93c0RhdGFMb2FkaW5nKCkpIHsKQEAgLTEyNzksNyArMTI2Niw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNvdXJjZSgpCiAgICAgYXV0byBsb2dTaXRl
SWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgVU5VU0VEX1BBUkFNKGxvZ1NpdGVJZGVu
dGlmaWVyKTsKIAotICAgIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrUXVldWUuZW5xdWV1ZVRhc2so
W3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSAgeworICAgIHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2Vl
cGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIG1fcmVzb3Vy
Y2VTZWxlY3Rpb25UYXNrQ2FuY2VsbGF0aW9uR3JvdXAsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmll
cl0gIHsKIAogICAgICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAibGFtYmRhKCks
IHRhc2sgZmlyZWQiKTsKIApAQCAtMjk2MSw5ICsyOTQ4LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmIGluVGltZSwgY29uc3QgTWVk
aWFUaW0KICAgICAvLyAzIC0gSWYgdGhlIGVsZW1lbnQncyBzZWVraW5nIElETCBhdHRyaWJ1dGUg
aXMgdHJ1ZSwgdGhlbiBhbm90aGVyIGluc3RhbmNlIG9mIHRoaXMgYWxnb3JpdGhtIGlzCiAgICAg
Ly8gYWxyZWFkeSBydW5uaW5nLiBBYm9ydCB0aGF0IG90aGVyIGluc3RhbmNlIG9mIHRoZSBhbGdv
cml0aG0gd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgc3RlcCB0aGF0CiAgICAgLy8gaXQgaXMgcnVu
bmluZyB0byBjb21wbGV0ZS4KLSAgICBpZiAobV9zZWVrVGFzay5pc1BlbmRpbmcoKSkgeworICAg
IGlmIChtX3NlZWtUYXNrQ2FuY2VsbGF0aW9uR3JvdXAuaGFzUGVuZGluZ1Rhc2soKSkgewogICAg
ICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiY2FuY2VsbGluZyBwZW5kaW5nIHNlZWtzIik7
Ci0gICAgICAgIG1fc2Vla1Rhc2suY2FuY2VsKCk7CisgICAgICAgIG1fc2Vla1Rhc2tDYW5jZWxs
YXRpb25Hcm91cC5jYW5jZWwoKTsKICAgICAgICAgaWYgKG1fcGVuZGluZ1NlZWspIHsKICAgICAg
ICAgICAgIG5vdyA9IG1fcGVuZGluZ1NlZWstPm5vdzsKICAgICAgICAgICAgIG1fcGVuZGluZ1Nl
ZWsgPSBudWxscHRyOwpAQCAtMjk4NSw3ICsyOTcyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmIGluVGltZSwgY29uc3QgTWVkaWFU
aW0KICAgICBtX3BlbmRpbmdTZWVrID0gbWFrZVVuaXF1ZTxQZW5kaW5nU2Vlaz4obm93LCB0aW1l
LCBuZWdhdGl2ZVRvbGVyYW5jZSwgcG9zaXRpdmVUb2xlcmFuY2UpOwogICAgIGlmIChmcm9tRE9N
KSB7CiAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJlbnF1ZXVpbmcgc2VlayBmcm9t
ICIsIG5vdywgIiB0byAiLCB0aW1lKTsKLSAgICAgICAgbV9zZWVrVGFzayA9IHF1ZXVlQ2FuY2Vs
bGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1l
bnQsIHN0ZDo6YmluZCgmSFRNTE1lZGlhRWxlbWVudDo6c2Vla1Rhc2ssIHRoaXMpKTsKKyAgICAg
ICAgcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3Vy
Y2U6Ok1lZGlhRWxlbWVudCwgbV9zZWVrVGFza0NhbmNlbGxhdGlvbkdyb3VwLCBzdGQ6OmJpbmQo
JkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtUYXNrLCB0aGlzKSk7CiAgICAgfSBlbHNlCiAgICAgICAg
IHNlZWtUYXNrKCk7CiAKQEAgLTM2OTcsMTAgKzM2ODQsMTAgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
SFRNTE1lZGlhRWxlbWVudDo6c2V0Vm9sdW1lKGRvdWJsZSB2b2x1bWUpCiAgICAgYXV0byBvbGRW
b2x1bWUgPSBtX3ZvbHVtZTsKICAgICBtX3ZvbHVtZSA9IHZvbHVtZTsKIAotICAgIGlmIChtX3Zv
bHVtZVJldmVydFRhc2suaXNQZW5kaW5nKCkpCisgICAgaWYgKG1fdm9sdW1lUmV2ZXJ0VGFza0Nh
bmNlbGxhdGlvbkdyb3VwLmhhc1BlbmRpbmdUYXNrKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICBtX3ZvbHVtZVJldmVydFRhc2sgPSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmpl
Y3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhpcywgb2xkVm9sdW1l
XSB7CisgICAgcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRh
c2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgbV92b2x1bWVSZXZlcnRUYXNrQ2FuY2VsbGF0aW9uR3Jv
dXAsIFt0aGlzLCBvbGRWb2x1bWVdIHsKICAgICAgICAgbV92b2x1bWUgPSBvbGRWb2x1bWU7CiAg
ICAgfSk7CiAKQEAgLTQ0ODUsMTIgKzQ0NzIsMTIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRTZWxlY3RlZFRleHRUcmFjayhUZXh0VHJhY2sqIHRyYWNrVG9TZWxlY3QpCiAKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2NoZWR1bGVDb25maWd1cmVUZXh0VHJhY2tzKCkKIHsKLSAgICBpZiAo
bV9jb25maWd1cmVUZXh0VHJhY2tzVGFzay5pc1BlbmRpbmcoKSkKKyAgICBpZiAobV9jb25maWd1
cmVUZXh0VHJhY2tzVGFza0NhbmNlbGxhdGlvbkdyb3VwLmhhc1BlbmRpbmdUYXNrKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGF1dG8gbG9nU2l0ZUlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVS
OwogICAgIEFMV0FZU19MT0cobG9nU2l0ZUlkZW50aWZpZXIsICJ0YXNrIHNjaGVkdWxlZCIpOwot
ICAgIG1fY29uZmlndXJlVGV4dFRyYWNrc1Rhc2sgPSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBp
bmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhpcywgbG9n
U2l0ZUlkZW50aWZpZXJdIHsKKyAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RB
bGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX2NvbmZpZ3VyZVRleHRUcmFj
a3NUYXNrQ2FuY2VsbGF0aW9uR3JvdXAsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0gewogICAg
ICAgICBVTlVTRURfUEFSQU0obG9nU2l0ZUlkZW50aWZpZXIpOwogICAgICAgICBBTFdBWVNfTE9H
KGxvZ1NpdGVJZGVudGlmaWVyLCAibGFtYmRhKCksIHRhc2sgZmlyZWQiKTsKICAgICAgICAgUmVm
PEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBjb25maWd1cmVUZXh0
VHJhY2tzIGNhbGxzIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9NIG11dGF0
aW9ucy4KQEAgLTUwMzMsMTIgKzUwMjAsMTIgQEAgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcigpIGNvbnMKIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZU1lZGlhRW5naW5lV2FzVXBkYXRlZCgpCiB7
Ci0gICAgaWYgKG1fbWVkaWFFbmdpbmVVcGRhdGVkVGFzay5pc1BlbmRpbmcoKSkKKyAgICBpZiAo
bV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrQ2FuY2VsbGF0aW9uR3JvdXAuaGFzUGVuZGluZ1Rhc2so
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBsb2dTaXRlSWRlbnRpZmllciA9IExPR0lE
RU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgInRhc2sgc2NoZWR1
bGVkIik7Ci0gICAgbV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrID0gcXVldWVDYW5jZWxsYWJsZVRh
c2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgW3Ro
aXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CisgICAgcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5n
T2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgbV9tZWRpYUVuZ2lu
ZVVwZGF0ZWRUYXNrQ2FuY2VsbGF0aW9uR3JvdXAsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0g
ewogICAgICAgICBVTlVTRURfUEFSQU0obG9nU2l0ZUlkZW50aWZpZXIpOwogICAgICAgICBBTFdB
WVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAibGFtYmRhKCksIHRhc2sgZmlyZWQiKTsKICAgICAg
ICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBtZWRpYUVu
Z2luZVdhc1VwZGF0ZWQgY2FsbHMgbWV0aG9kcyB0aGF0IGNhbiB0cmlnZ2VyIGFyYml0cmFyeSBE
T00gbXV0YXRpb25zLgpAQCAtNTMyNiwxMiArNTMxMywxMiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnVwZGF0ZVZvbHVtZSgpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVVcGRh
dGVQbGF5U3RhdGUoKQogewotICAgIGlmIChtX3VwZGF0ZVBsYXlTdGF0ZVRhc2suaXNQZW5kaW5n
KCkpCisgICAgaWYgKG1fdXBkYXRlUGxheVN0YXRlVGFza0NhbmNlbGxhdGlvbkdyb3VwLmhhc1Bl
bmRpbmdUYXNrKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gbG9nU2l0ZUlkZW50aWZp
ZXIgPSBMT0dJREVOVElGSUVSOwogICAgIEFMV0FZU19MT0cobG9nU2l0ZUlkZW50aWZpZXIsICJ0
YXNrIHNjaGVkdWxlZCIpOwotICAgIG1fdXBkYXRlUGxheVN0YXRlVGFzayA9IHF1ZXVlQ2FuY2Vs
bGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1l
bnQsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0geworICAgIHF1ZXVlQ2FuY2VsbGFibGVUYXNr
S2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIG1fdXBk
YXRlUGxheVN0YXRlVGFza0NhbmNlbGxhdGlvbkdyb3VwLCBbdGhpcywgbG9nU2l0ZUlkZW50aWZp
ZXJdIHsKICAgICAgICAgVU5VU0VEX1BBUkFNKGxvZ1NpdGVJZGVudGlmaWVyKTsKICAgICAgICAg
QUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgImxhbWJkYSgpLCB0YXNrIGZpcmVkIik7CiAg
ICAgICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gdXBk
YXRlUGxheVN0YXRlIGNhbGxzIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9N
IG11dGF0aW9ucy4KQEAgLTU0NjMsMTYgKzU0NTAsMTYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzdG9wUGVyaW9kaWNUaW1lcnMoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNhbmNlbFBl
bmRpbmdUYXNrcygpCiB7Ci0gICAgbV9jb25maWd1cmVUZXh0VHJhY2tzVGFzay5jYW5jZWwoKTsK
LSAgICBtX2NoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFzay5jYW5jZWwoKTsKLSAg
ICBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrLmNhbmNlbCgpOwotICAgIG1fbWVkaWFFbmdpbmVVcGRh
dGVkVGFzay5jYW5jZWwoKTsKLSAgICBtX3VwZGF0ZVBsYXlTdGF0ZVRhc2suY2FuY2VsKCk7Ci0g
ICAgbV9yZXN1bWVUYXNrLmNhbmNlbCgpOwotICAgIG1fc2Vla1Rhc2suY2FuY2VsKCk7Ci0gICAg
bV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGFzay5jYW5jZWwo
KTsKKyAgICBtX2NvbmZpZ3VyZVRleHRUcmFja3NUYXNrQ2FuY2VsbGF0aW9uR3JvdXAuY2FuY2Vs
KCk7CisgICAgbV9jaGVja1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJpbGl0eVRhc2tDYW5jZWxsYXRp
b25Hcm91cC5jYW5jZWwoKTsKKyAgICBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrQ2FuY2VsbGF0aW9u
R3JvdXAuY2FuY2VsKCk7CisgICAgbV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrQ2FuY2VsbGF0aW9u
R3JvdXAuY2FuY2VsKCk7CisgICAgbV91cGRhdGVQbGF5U3RhdGVUYXNrQ2FuY2VsbGF0aW9uR3Jv
dXAuY2FuY2VsKCk7CisgICAgbV9yZXN1bWVUYXNrQ2FuY2VsbGF0aW9uR3JvdXAuY2FuY2VsKCk7
CisgICAgbV9zZWVrVGFza0NhbmNlbGxhdGlvbkdyb3VwLmNhbmNlbCgpOworICAgIG1fcGxheWJh
Y2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1Rhc2tDYW5jZWxsYXRpb25Hcm91
cC5jYW5jZWwoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIG1fdm9sdW1lUmV2ZXJ0
VGFzay5jYW5jZWwoKTsKKyAgICBtX3ZvbHVtZVJldmVydFRhc2tDYW5jZWxsYXRpb25Hcm91cC5j
YW5jZWwoKTsKICNlbmRpZgogfQogCkBAIC01NTg3LDcgKzU1NzQsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIoKQogICAgICAgICBtX21lZGlhU2Vzc2lvbi0+Y2Fu
UHJvZHVjZUF1ZGlvQ2hhbmdlZCgpOwogICAgIH0KIAotICAgIG1fcmVzb3VyY2VTZWxlY3Rpb25U
YXNrUXVldWUuY2FuY2VsQWxsVGFza3MoKTsKKyAgICBtX3Jlc291cmNlU2VsZWN0aW9uVGFza0Nh
bmNlbGxhdGlvbkdyb3VwLmNhbmNlbCgpOwogCiAgICAgdXBkYXRlU2xlZXBEaXNhYmxpbmcoKTsK
IH0KQEAgLTU2MjksNyArNTYxNiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3RvcFdpdGhv
dXREZXN0cm95aW5nTWVkaWFQbGF5ZXIoKQogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjbG9zZVRh
c2tRdWV1ZXMoKQogewogICAgIGNhbmNlbFBlbmRpbmdUYXNrcygpOwotICAgIG1fcmVzb3VyY2VT
ZWxlY3Rpb25UYXNrUXVldWUuY2xvc2UoKTsKKyAgICBtX3Jlc291cmNlU2VsZWN0aW9uVGFza0Nh
bmNlbGxhdGlvbkdyb3VwLmNhbmNlbCgpOwogICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5jbG9zZSgp
OwogfQogCkBAIC01NjY0LDcgKzU2NTEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN1c3Bl
bmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSKTsKICAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
LSAgICBtX3Jlc3VtZVRhc2suY2FuY2VsKCk7CisgICAgbV9yZXN1bWVUYXNrQ2FuY2VsbGF0aW9u
R3JvdXAuY2FuY2VsKCk7CiAKICAgICBzd2l0Y2ggKHJlYXNvbikgewogICAgIGNhc2UgUmVhc29u
Rm9yU3VzcGVuc2lvbjo6QmFja0ZvcndhcmRDYWNoZToKQEAgLTU2OTcsMTMgKzU2ODQsMTMgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUoKQogICAgICAgICBtX21lZGlhU2Vzc2lvbi0+
dXBkYXRlQnVmZmVyaW5nUG9saWN5KCk7CiAgICAgfQogCi0gICAgaWYgKG1fZXJyb3IgJiYgbV9l
cnJvci0+Y29kZSgpID09IE1lZGlhRXJyb3I6Ok1FRElBX0VSUl9BQk9SVEVEICYmICFtX3Jlc3Vt
ZVRhc2suaXNQZW5kaW5nKCkpIHsKKyAgICBpZiAobV9lcnJvciAmJiBtX2Vycm9yLT5jb2RlKCkg
PT0gTWVkaWFFcnJvcjo6TUVESUFfRVJSX0FCT1JURUQgJiYgIW1fcmVzdW1lVGFza0NhbmNlbGxh
dGlvbkdyb3VwLmhhc1BlbmRpbmdUYXNrKCkpIHsKICAgICAgICAgLy8gUmVzdGFydCB0aGUgbG9h
ZCBpZiBpdCB3YXMgYWJvcnRlZCBpbiB0aGUgbWlkZGxlIGJ5IG1vdmluZyB0aGUgZG9jdW1lbnQg
dG8gdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4KICAgICAgICAgLy8gbV9lcnJvciBpcyBvbmx5IGxl
ZnQgYXQgTUVESUFfRVJSX0FCT1JURUQgd2hlbiB0aGUgZG9jdW1lbnQgYmVjb21lcyBpbmFjdGl2
ZSAoaXQgaXMgc2V0IHRvCiAgICAgICAgIC8vICBNRURJQV9FUlJfQUJPUlRFRCB3aGlsZSB0aGUg
YWJvcnRFdmVudCBpcyBiZWluZyBzZW50LCBidXQgY2xlYXJlZCBpbW1lZGlhdGVseSBhZnRlcndh
cmRzKS4KICAgICAgICAgLy8gVGhpcyBiZWhhdmlvciBpcyBub3Qgc3BlY2lmaWVkIGJ1dCBpdCBz
ZWVtcyBsaWtlIGEgc2Vuc2libGUgdGhpbmcgdG8gZG8uCiAgICAgICAgIC8vIEFzIGl0IGlzIG5v
dCBzYWZlIHRvIGltbWVkYXRlbHkgc3RhcnQgbG9hZGluZyBub3csIGxldCdzIHNjaGVkdWxlIGEg
bG9hZC4KLSAgICAgICAgbV9yZXN1bWVUYXNrID0gcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5n
T2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgc3RkOjpiaW5kKCZI
VE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCwgdGhpcykpOworICAgICAgICBxdWV1ZUNh
bmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFF
bGVtZW50LCBtX3Jlc3VtZVRhc2tDYW5jZWxsYXRpb25Hcm91cCwgc3RkOjpiaW5kKCZIVE1MTWVk
aWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCwgdGhpcykpOwogICAgIH0KIAogICAgIHVwZGF0ZVJl
bmRlcmVyKCk7CkBAIC01NzE5LDcgKzU3MDYsNiBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnZp
cnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX2NyZWF0aW5n
Q29udHJvbHMKICAgICAgICAgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdBY3Rpdml0
eSgpCi0gICAgICAgIHx8IG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrUXVldWUuaGFzUGVuZGluZ1Rh
c2tzKCkKICAgICAgICAgfHwgKGhhc0F1ZGlvKCkgJiYgaXNQbGF5aW5nKCkpCiAgICAgICAgIHx8
IChoYXNMaXZlU291cmNlKCkgJiYgaGFzRXZlbnRMaXN0ZW5lcnMoKSk7CiB9CkBAIC02NjE1LDcg
KzY2MDEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1hcmtDYXB0aW9uQW5kU3VidGl0bGVU
cmFja3NBc1VuY29uZmlndXJlZChSZWNvbmZpZ3VyZU1vZAogICAgIH0KIAogICAgIG1fcHJvY2Vz
c2luZ1ByZWZlcmVuY2VDaGFuZ2UgPSB0cnVlOwotICAgIG1fY29uZmlndXJlVGV4dFRyYWNrc1Rh
c2suY2FuY2VsKCk7CisgICAgbV9jb25maWd1cmVUZXh0VHJhY2tzVGFza0NhbmNlbGxhdGlvbkdy
b3VwLmNhbmNlbCgpOwogICAgIGlmIChtb2RlID09IEltbWVkaWF0ZWx5KSB7CiAgICAgICAgIFJl
ZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gY29uZmlndXJlVGV4
dFRyYWNrcyBjYWxscyBtZXRob2RzIHRoYXQgY2FuIHRyaWdnZXIgYXJiaXRyYXJ5IERPTSBtdXRh
dGlvbnMuCiAgICAgICAgIGNvbmZpZ3VyZVRleHRUcmFja3MoKTsKQEAgLTcxMzEsMTIgKzcxMTcs
MTIgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNob3VsZENoZWNrSGFyZHdh
cmVTdXBwb3J0KCkgY29uc3QKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckJ1
ZmZlcmVkVGltZVJhbmdlc0NoYW5nZWQoKQogewotICAgIGlmICghbV90ZXh0VHJhY2tzIHx8IG1f
YnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdlZFRhc2suaXNQZW5kaW5nKCkpCisgICAgaWYgKCFtX3Rl
eHRUcmFja3MgfHwgbV9idWZmZXJlZFRpbWVSYW5nZXNDaGFuZ2VkVGFza0NhbmNlbGxhdGlvbkdy
b3VwLmhhc1BlbmRpbmdUYXNrKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gbG9nU2l0
ZUlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwogICAgIEFMV0FZU19MT0cobG9nU2l0ZUlkZW50
aWZpZXIsICJ0YXNrIHNjaGVkdWxlZCIpOwotICAgIG1fYnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdl
ZFRhc2sgPSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFz
a1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdIHsKKyAgICBx
dWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6
TWVkaWFFbGVtZW50LCBtX2J1ZmZlcmVkVGltZVJhbmdlc0NoYW5nZWRUYXNrQ2FuY2VsbGF0aW9u
R3JvdXAsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0gewogICAgICAgICBVTlVTRURfUEFSQU0o
bG9nU2l0ZUlkZW50aWZpZXIpOwogICAgICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVy
LCAibGFtYmRhKCksIHRhc2sgZmlyZWQiKTsKICAgICAgICAgaWYgKCFtX3BsYXllciB8fCAhbV90
ZXh0VHJhY2tzKQpAQCAtNzc2MiwxMiArNzc0OCwxMiBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OnNob3VsZE92ZXJyaWRlUGF1c2VEdXJpbmdSb3V0ZUNoYW5nZSgpIGNvbnN0CiAKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2NoZWR1bGVVcGRhdGVNZWRpYVN0YXRlKCkKIHsKLSAgICBpZiAobV91
cGRhdGVNZWRpYVN0YXRlVGFzay5pc1BlbmRpbmcoKSkKKyAgICBpZiAobV91cGRhdGVNZWRpYVN0
YXRlVGFza0NhbmNlbGxhdGlvbkdyb3VwLmhhc1BlbmRpbmdUYXNrKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGF1dG8gbG9nU2l0ZUlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwogICAgIEFM
V0FZU19MT0cobG9nU2l0ZUlkZW50aWZpZXIsICJ0YXNrIHNjaGVkdWxlZCIpOwotICAgIG1fdXBk
YXRlTWVkaWFTdGF0ZVRhc2sgPSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2
ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhpcywgbG9nU2l0ZUlkZW50aWZp
ZXJdIHsKKyAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywg
VGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrQ2FuY2VsbGF0
aW9uR3JvdXAsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0gewogICAgICAgICBVTlVTRURfUEFS
QU0obG9nU2l0ZUlkZW50aWZpZXIpOwogICAgICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlm
aWVyLCAibGFtYmRhKCksIHRhc2sgZmlyZWQiKTsKICAgICAgICAgUmVmPEhUTUxNZWRpYUVsZW1l
bnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyB1cGRhdGVNZWRpYVN0YXRlIGNhbGxzIG1ldGhv
ZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KQEAgLTgwMzUsMTMg
KzgwMjEsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyVXBkYXRlKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja0NvbnRy
b2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGltZXJGaXJlZCgpCiB7Ci0gICAgaWYgKG1f
cGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1Rhc2suaXNQZW5kaW5n
KCkpCisgICAgaWYgKG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9u
c1Rhc2tDYW5jZWxsYXRpb25Hcm91cC5oYXNQZW5kaW5nVGFzaygpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoIW1lZGlhU2Vzc2lvbigpLmhhc0JlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFF
bGVtZW50U2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlVG9Db250cm9sQ29udHJvbHNNYW5hZ2Vy
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2
aW9yUmVzdHJpY3Rpb25zVGFzayA9IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFs
aXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlzXSAoKSB7CisgICAgcXVl
dWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1l
ZGlhRWxlbWVudCwgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25z
VGFza0NhbmNlbGxhdGlvbkdyb3VwLCBbdGhpc10gKCkgewogICAgICAgICBhdXRvJiBtZWRpYUVs
ZW1lbnRTZXNzaW9uID0gbWVkaWFTZXNzaW9uKCk7CiAgICAgICAgIGlmIChpc1BsYXlpbmcoKSB8
fCBtZWRpYUVsZW1lbnRTZXNzaW9uLnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1
dG9wbGF5aW5nIHx8IG1lZGlhRWxlbWVudFNlc3Npb24uc3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UGxheWluZykKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKaW5kZXggODBjZjY4ZTZhNGYzMGZjNzdhMzRjNTRlY2YwNjhlMjIw
YmUyNWY2Ni4uZDhlZTcwMjQ4MjBjOGUyYTgwYzA5YjFlNzFkZTI1ZjA4OTFjNTBlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTk0MCwyMCArOTQwLDIwIEBAIHBy
aXZhdGU6CiAgICAgVGltZXIgbV9zY2FuVGltZXI7CiAgICAgVGltZXIgbV9wbGF5YmFja0NvbnRy
b2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGltZXI7CiAgICAgVGltZXIgbV9zZWVrVG9Q
bGF5YmFja1Bvc2l0aW9uRW5kZWRUaW1lcjsKLSAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBt
X2NvbmZpZ3VyZVRleHRUcmFja3NUYXNrOwotICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1f
Y2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGliaWxpdHlUYXNrOwotICAgIENhbmNlbGxhYmxlVGFz
azo6SGFuZGxlIG1fdXBkYXRlTWVkaWFTdGF0ZVRhc2s7Ci0gICAgQ2FuY2VsbGFibGVUYXNrOjpI
YW5kbGUgbV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrOwotICAgIENhbmNlbGxhYmxlVGFzazo6SGFu
ZGxlIG1fdXBkYXRlUGxheVN0YXRlVGFzazsKLSAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBt
X3Jlc3VtZVRhc2s7Ci0gICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV9zZWVrVGFzazsKLSAg
ICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZp
b3JSZXN0cmljdGlvbnNUYXNrOwotICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fYnVmZmVy
ZWRUaW1lUmFuZ2VzQ2hhbmdlZFRhc2s7Ci0gICAgRXZlbnRMb29wVGFza1F1ZXVlIG1fcmVzb3Vy
Y2VTZWxlY3Rpb25UYXNrUXVldWU7CisgICAgVGFza0NhbmNlbGxhdGlvbkdyb3VwIG1fY29uZmln
dXJlVGV4dFRyYWNrc1Rhc2tDYW5jZWxsYXRpb25Hcm91cDsKKyAgICBUYXNrQ2FuY2VsbGF0aW9u
R3JvdXAgbV9jaGVja1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJpbGl0eVRhc2tDYW5jZWxsYXRpb25H
cm91cDsKKyAgICBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAgbV91cGRhdGVNZWRpYVN0YXRlVGFza0Nh
bmNlbGxhdGlvbkdyb3VwOworICAgIFRhc2tDYW5jZWxsYXRpb25Hcm91cCBtX21lZGlhRW5naW5l
VXBkYXRlZFRhc2tDYW5jZWxsYXRpb25Hcm91cDsKKyAgICBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAg
bV91cGRhdGVQbGF5U3RhdGVUYXNrQ2FuY2VsbGF0aW9uR3JvdXA7CisgICAgVGFza0NhbmNlbGxh
dGlvbkdyb3VwIG1fcmVzdW1lVGFza0NhbmNlbGxhdGlvbkdyb3VwOworICAgIFRhc2tDYW5jZWxs
YXRpb25Hcm91cCBtX3NlZWtUYXNrQ2FuY2VsbGF0aW9uR3JvdXA7CisgICAgVGFza0NhbmNlbGxh
dGlvbkdyb3VwIG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1Rh
c2tDYW5jZWxsYXRpb25Hcm91cDsKKyAgICBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAgbV9idWZmZXJl
ZFRpbWVSYW5nZXNDaGFuZ2VkVGFza0NhbmNlbGxhdGlvbkdyb3VwOworICAgIFRhc2tDYW5jZWxs
YXRpb25Hcm91cCBtX3Jlc291cmNlU2VsZWN0aW9uVGFza0NhbmNlbGxhdGlvbkdyb3VwOwogICAg
IFJlZlB0cjxUaW1lUmFuZ2VzPiBtX3BsYXllZFRpbWVSYW5nZXM7CiAgICAgVW5pcXVlUmVmPEV2
ZW50TG9vcEV2ZW50UXVldWU+IG1fYXN5bmNFdmVudFF1ZXVlOwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV92b2x1bWVSZXZlcnRUYXNrOwor
ICAgIFRhc2tDYW5jZWxsYXRpb25Hcm91cCBtX3ZvbHVtZVJldmVydFRhc2tDYW5jZWxsYXRpb25H
cm91cDsKICNlbmRpZgogCiAgICAgUGxheVByb21pc2VWZWN0b3IgbV9wZW5kaW5nUGxheVByb21p
c2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
VGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcAppbmRleCBlM2QxNGNh
NzliZjRkNDJmNGM0NzZjOTNkM2RlNTA5OTJmYzdhOGQwLi42YTlkZDc5NGJiNDEwZDQ1MzA4ZmM0
OTdjMjUwNDFhZTU3YzgwM2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgogI2luY2x1
ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCisj
aW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnVsbHNjcmVlbk1hbmFnZXIuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDJmMDI2MzMyNWEzZmJjMTUwZWY4ZTJkMGZhZjBmNzA0NTRiNjg0ZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9HZW5lcmljVGFza1F1ZXVlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCi0jaW5jbHVk
ZSAiRXZlbnRMb29wLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBUYXNr
UXVldWVCYXNlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tRdWV1ZUJhc2U+IHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBib29sIGhhc1BlbmRpbmdUYXNr
cygpIGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ1Rhc2tzOyB9Ci0gICAgYm9vbCBpc0Nsb3NlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNDbG9zZWQ7IH0KLQotICAgIHZvaWQgY2xvc2UoKQotICAgIHsK
LSAgICAgICAgY2FuY2VsQWxsVGFza3MoKTsKLSAgICAgICAgbV9pc0Nsb3NlZCA9IHRydWU7Ci0g
ICAgfQotCi0gICAgdm9pZCBjYW5jZWxBbGxUYXNrcygpCi0gICAgewotICAgICAgICB3ZWFrUHRy
RmFjdG9yeSgpLnJldm9rZUFsbCgpOwotICAgICAgICBtX3BlbmRpbmdUYXNrcyA9IDA7Ci0gICAg
fQotCi1wcm90ZWN0ZWQ6Ci0gICAgflRhc2tRdWV1ZUJhc2UoKSA9IGRlZmF1bHQ7Ci0gICAgdm9p
ZCBpbmNyZW1lbnRQZW5kaW5nVGFza3MoKSB7ICsrbV9wZW5kaW5nVGFza3M7IH0KLSAgICB2b2lk
IGRlY3JlbWVudFBlbmRpbmdUYXNrcygpIHsgQVNTRVJUKG1fcGVuZGluZ1Rhc2tzKTsgLS1tX3Bl
bmRpbmdUYXNrczsgfQotCi1wcml2YXRlOgotICAgIHVuc2lnbmVkIG1fcGVuZGluZ1Rhc2tzIHsg
MCB9OwotICAgIGJvb2wgbV9pc0Nsb3NlZCB7IGZhbHNlIH07Ci19OwotCi0vLyBSZWxpZXMgb24g
YSBzaGFyZWQgVGltZXIsIG9ubHkgc2FmZSB0byB1c2Ugb24gdGhlIE1haW5UaHJlYWQuIFBsZWFz
ZSB1c2UgRXZlbnRMb29wVGFza1F1ZXVlCi0vLyAob3IgZGlzcGF0Y2ggZGlyZWN0bHkgdG8gdGhl
IEhUTUwgZXZlbnQgbG9vcCkgd2hlbmV2ZXIgcG9zc2libGUuCi1jbGFzcyBNYWluVGhyZWFkVGFz
a1F1ZXVlIDogcHVibGljIFRhc2tRdWV1ZUJhc2UgewotcHVibGljOgotICAgIE1haW5UaHJlYWRU
YXNrUXVldWUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICB9
Ci0KLSAgICB2b2lkIGVucXVldWVUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQotICAgIHsK
LSAgICAgICAgaWYgKGlzQ2xvc2VkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
aW5jcmVtZW50UGVuZGluZ1Rhc2tzKCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0gewotICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB3ZWFrVGhpcy0+ZGVjcmVtZW50UGVuZGluZ1Rhc2tzKCk7Ci0gICAgICAgICAgICB0YXNrKCk7
Ci0gICAgICAgIH0pOwotICAgIH0KLX07Ci0KLS8vIFNpbWlsYXIgdG8gTWFpblRocmVhZFRhc2tR
dWV1ZSBidXQgYmFzZWQgb24gdGhlIEhUTUwgZXZlbnQgbG9vcC4KLWNsYXNzIEV2ZW50TG9vcFRh
c2tRdWV1ZSA6IHB1YmxpYyBUYXNrUXVldWVCYXNlLCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyIHsKLXB1YmxpYzoKLSAgICBFdmVudExvb3BUYXNrUXVldWUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKLSAgICAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cihjb250ZXh0KQotICAgIHsgfQotCi0gICAgLy8gRklYTUU6IFBhc3MgYSBUYXNrU291cmNlIGlu
c3RlYWQgb2YgYXNzdW1pbmcgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LgotICAgIHZvaWQgZW5x
dWV1ZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCi0gICAgewotICAgICAgICBpZiAoaXND
bG9zZWQoKSB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIGluY3JlbWVudFBlbmRpbmdUYXNrcygpOwotICAgICAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpNZWRpYUVs
ZW1lbnQsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGFzayA9IFdURk1vdmUodGFz
ayldIHsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgd2Vha1RoaXMtPmRlY3JlbWVudFBlbmRpbmdUYXNrcygpOwotICAgICAg
ICAgICAgdGFzaygpOwotICAgICAgICB9KTsKLSAgICB9Ci19OwotCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQppbmRleCA1ZmY0NDVjYjllZTk5NmEyNTU5ZWJhYzdiOGZmMjhkODczMGM0M2E0Li45
ZjY3OWVjOTk2MDQ0M2ViYjE3MTk1Yzc2NGY2ODk2YmZiOTU1YTc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KQEAgLTE3Myw3ICsxNzMsNiBAQCBlbnVtIE1lZGlhUGxheWVyQVZGb3VuZGF0aW9u
T2JzZXJ2YXRpb25Db250ZXh0IHsKIEBpbnRlcmZhY2UgV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIg
OiBOU09iamVjdCA8QVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFB1c2hEZWxlZ2F0ZSwgQVZQbGF5
ZXJJdGVtTWV0YWRhdGFPdXRwdXRQdXNoRGVsZWdhdGUsIEFWUGxheWVySXRlbU1ldGFkYXRhQ29s
bGVjdG9yUHVzaERlbGVnYXRlPgogewogICAgIFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQz4gbV9wbGF5ZXI7Ci0gICAgTWFpblRocmVhZFRhc2tRdWV1ZSBtX3Rhc2tR
dWV1ZTsKICAgICBpbnQgbV9kZWxheUNhbGxiYWNrczsKIH0KIC0oaWQpaW5pdFdpdGhQbGF5ZXI6
KFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4mJiljYWxsYmFjazsK
QEAgLTE4OSw3ICsxODgsNiBAQCBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViQ29yZUFWRkxvYWRlckRl
bGVnYXRlIDogTlNPYmplY3Q8QVZBc3NldFJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsKICAgICBX
ZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+IG1fcGxheWVyOwotICAg
IE1haW5UaHJlYWRUYXNrUXVldWUgbV90YXNrUXVldWU7CiB9CiAtIChpZClpbml0V2l0aFBsYXll
cjooV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiYmKXBsYXllcjsK
IC0gKEJPT0wpcmVzb3VyY2VMb2FkZXI6KEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqKXJlc291cmNl
TG9hZGVyIHNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZTooQVZBc3NldFJl
c291cmNlTG9hZGluZ1JlcXVlc3QgKilsb2FkaW5nUmVxdWVzdDsKQEAgLTM1ODAsNyArMzU3OCw3
IEBAIC0gKHZvaWQpZGlzY29ubmVjdAogLSAodm9pZCltZXRhZGF0YUxvYWRlZAogewogICAgIGVu
c3VyZU9uTWFpblRocmVhZChbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0gewot
ICAgICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0gbV9wbGF5ZXJdIHsKKyAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbcGxheWVyID0gbV9wbGF5ZXJdIHsKICAgICAgICAgICAg
IGlmIChwbGF5ZXIpCiAgICAgICAgICAgICAgICAgcGxheWVyLT5tZXRhZGF0YUxvYWRlZCgpOwog
ICAgICAgICB9KTsKQEAgLTM1OTEsNyArMzU4OSw3IEBAIC0gKHZvaWQpZGlkRW5kOihOU05vdGlm
aWNhdGlvbiAqKXVudXNlZE5vdGlmaWNhdGlvbgogewogICAgIFVOVVNFRF9QQVJBTSh1bnVzZWRO
b3RpZmljYXRpb24pOwogICAgIGVuc3VyZU9uTWFpblRocmVhZChbc2VsZiwgc3Ryb25nU2VsZiA9
IHJldGFpblB0cihzZWxmKV0gewotICAgICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxh
eWVyID0gbV9wbGF5ZXJdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcGxheWVyID0gbV9w
bGF5ZXJdIHsKICAgICAgICAgICAgIGlmIChwbGF5ZXIpCiAgICAgICAgICAgICAgICAgcGxheWVy
LT5kaWRFbmQoKTsKICAgICAgICAgfSk7CkBAIC0zNjAxLDcgKzM1OTksNyBAQCAtICh2b2lkKWRp
ZEVuZDooTlNOb3RpZmljYXRpb24gKil1bnVzZWROb3RpZmljYXRpb24KIC0gKHZvaWQpb2JzZXJ2
ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0Rp
Y3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDooTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZh
dGlvbkNvbnRleHQpY29udGV4dAogewogICAgIGVuc3VyZU9uTWFpblRocmVhZChbc2VsZiwgc3Ry
b25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwga2V5UGF0aCA9IHJldGFpblB0cihrZXlQYXRoKSwg
Y2hhbmdlID0gcmV0YWluUHRyKGNoYW5nZSksIG9iamVjdCA9IHJldGFpblB0cihvYmplY3QpLCBj
b250ZXh0XSgpIG11dGFibGUgewotICAgICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxh
eWVyID0gbV9wbGF5ZXIsIGtleVBhdGggPSBXVEZNb3ZlKGtleVBhdGgpLCBjaGFuZ2UgPSBXVEZN
b3ZlKGNoYW5nZSksIG9iamVjdCA9IFdURk1vdmUob2JqZWN0KSwgY29udGV4dF0geworICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtwbGF5ZXIgPSBtX3BsYXllciwga2V5UGF0aCA9IFdURk1vdmUo
a2V5UGF0aCksIGNoYW5nZSA9IFdURk1vdmUoY2hhbmdlKSwgb2JqZWN0ID0gV1RGTW92ZShvYmpl
Y3QpLCBjb250ZXh0XSB7CiAgICAgICAgICAgICBpZiAoIXBsYXllcikKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAKQEAgLTM3MDAsNyArMzY5OCw3IEBAIC0gKHZvaWQpbGVnaWJsZU91dHB1dDoo
aWQpb3V0cHV0IGRpZE91dHB1dEF0dHJpYnV0ZWRTdHJpbmdzOihOU0FycmF5ICopc3RyaW5ncyBu
CiAgICAgVU5VU0VEX1BBUkFNKG91dHB1dCk7CiAKICAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3Nl
bGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIHN0cmluZ3MgPSByZXRhaW5QdHIoc3Ry
aW5ncyksIG5hdGl2ZVNhbXBsZXMgPSByZXRhaW5QdHIobmF0aXZlU2FtcGxlcyksIGl0ZW1UaW1l
XSgpIG11dGFibGUgewotICAgICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0g
bV9wbGF5ZXIsIHN0cmluZ3MgPSBXVEZNb3ZlKHN0cmluZ3MpLCBuYXRpdmVTYW1wbGVzID0gV1RG
TW92ZShuYXRpdmVTYW1wbGVzKSwgaXRlbVRpbWVdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbcGxheWVyID0gbV9wbGF5ZXIsIHN0cmluZ3MgPSBXVEZNb3ZlKHN0cmluZ3MpLCBuYXRpdmVT
YW1wbGVzID0gV1RGTW92ZShuYXRpdmVTYW1wbGVzKSwgaXRlbVRpbWVdIHsKICAgICAgICAgICAg
IGlmICghcGxheWVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzcxNyw3ICszNzE1
LDcgQEAgLSAodm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KGlkKW91dHB1dAogICAgIFVO
VVNFRF9QQVJBTShvdXRwdXQpOwogCiAgICAgZW5zdXJlT25NYWluVGhyZWFkKFtzZWxmLCBzdHJv
bmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7Ci0gICAgICAgIG1fdGFza1F1ZXVlLmVucXVldWVU
YXNrKFtwbGF5ZXIgPSBtX3BsYXllcl0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwbGF5
ZXIgPSBtX3BsYXllcl0gewogICAgICAgICAgICAgaWYgKHBsYXllcikKICAgICAgICAgICAgICAg
ICBwbGF5ZXItPmZsdXNoQ3VlcygpOwogICAgICAgICB9KTsKQEAgLTM3MzMsNyArMzczMSw3IEBA
IC0gKHZvaWQpbWV0YWRhdGFPdXRwdXQ6KEFWUGxheWVySXRlbU1ldGFkYXRhT3V0cHV0ICopb3V0
cHV0IGRpZE91dHB1dFRpbWVkTWV0YWRhCiAgICAgaWYgKCFtX3BsYXllciB8fCAhbWV0YWRhdGFH
cm91cHMpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtw
bGF5ZXIgPSBtX3BsYXllciwgbWV0YWRhdGFHcm91cHMgPSByZXRhaW5QdHIobWV0YWRhdGFHcm91
cHMpLCBjdXJyZW50VGltZSA9IG1fcGxheWVyLT5jdXJyZW50TWVkaWFUaW1lKCldIHsKKyAgICBj
YWxsT25NYWluVGhyZWFkKFtwbGF5ZXIgPSBtX3BsYXllciwgbWV0YWRhdGFHcm91cHMgPSByZXRh
aW5QdHIobWV0YWRhdGFHcm91cHMpLCBjdXJyZW50VGltZSA9IG1fcGxheWVyLT5jdXJyZW50TWVk
aWFUaW1lKCldIHsKICAgICAgICAgaWYgKCFwbGF5ZXIpCiAgICAgICAgICAgICByZXR1cm47CiAK
QEAgLTM3NTQsNyArMzc1Miw3IEBAIC0gKHZvaWQpbWV0YWRhdGFDb2xsZWN0b3I6KEFWUGxheWVy
SXRlbU1ldGFkYXRhQ29sbGVjdG9yICopbWV0YWRhdGFDb2xsZWN0b3IgZGlkCiAgICAgaWYgKCFt
X3BsYXllciB8fCAhbWV0YWRhdGFHcm91cHMpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdGFz
a1F1ZXVlLmVucXVldWVUYXNrKFtwbGF5ZXIgPSBtX3BsYXllciwgbWV0YWRhdGFHcm91cHMgPSBy
ZXRhaW5QdHIobWV0YWRhdGFHcm91cHMpLCBjdXJyZW50VGltZSA9IG1fcGxheWVyLT5jdXJyZW50
TWVkaWFUaW1lKCldIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwbGF5ZXIgPSBtX3BsYXllciwg
bWV0YWRhdGFHcm91cHMgPSByZXRhaW5QdHIobWV0YWRhdGFHcm91cHMpLCBjdXJyZW50VGltZSA9
IG1fcGxheWVyLT5jdXJyZW50TWVkaWFUaW1lKCldIHsKICAgICAgICAgaWYgKCFwbGF5ZXIpCiAg
ICAgICAgICAgICByZXR1cm47CiAKQEAgLTM3ODEsNyArMzc3OSw3IEBAIC0gKEJPT0wpcmVzb3Vy
Y2VMb2FkZXI6KEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqKXJlc291cmNlTG9hZGVyIHNob3VsZFdh
aXRGb3JMb2FkCiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIGVuc3VyZU9uTWFpblRocmVhZChb
c2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgbG9hZGluZ1JlcXVlc3QgPSByZXRh
aW5QdHIobG9hZGluZ1JlcXVlc3QpXSgpIG11dGFibGUgewotICAgICAgICBtX3Rhc2tRdWV1ZS5l
bnF1ZXVlVGFzayhbcGxheWVyID0gbV9wbGF5ZXIsIGxvYWRpbmdSZXF1ZXN0ID0gV1RGTW92ZShs
b2FkaW5nUmVxdWVzdCldIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcGxheWVyID0gbV9w
bGF5ZXIsIGxvYWRpbmdSZXF1ZXN0ID0gV1RGTW92ZShsb2FkaW5nUmVxdWVzdCldIHsKICAgICAg
ICAgICAgIGlmICghcGxheWVyKSB7CiAgICAgICAgICAgICAgICAgW2xvYWRpbmdSZXF1ZXN0IGZp
bmlzaExvYWRpbmdXaXRoRXJyb3I6bmlsXTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0z
ODA3LDcgKzM4MDUsNyBAQCAtICh2b2lkKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3VyY2VM
b2FkZXIgKilyZXNvdXJjZUxvYWRlciBkaWRDYW5jZWxMb2FkaW5nUgogewogICAgIFVOVVNFRF9Q
QVJBTShyZXNvdXJjZUxvYWRlcik7CiAgICAgZW5zdXJlT25NYWluVGhyZWFkKFtzZWxmLCBzdHJv
bmdTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBsb2FkaW5nUmVxdWVzdCA9IHJldGFpblB0cihsb2Fk
aW5nUmVxdWVzdCldKCkgbXV0YWJsZSB7Ci0gICAgICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNr
KFtwbGF5ZXIgPSBtX3BsYXllciwgbG9hZGluZ1JlcXVlc3QgPSBXVEZNb3ZlKGxvYWRpbmdSZXF1
ZXN0KV0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwbGF5ZXIgPSBtX3BsYXllciwgbG9h
ZGluZ1JlcXVlc3QgPSBXVEZNb3ZlKGxvYWRpbmdSZXF1ZXN0KV0gewogCiAgICAgICAgICAgICBT
Y3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5oCmluZGV4IGI3NTc3ZjI5NThkNTcwM2NiZWRkMmQyZWQ3YzAwYzUyZGJjYWE3MDAuLjg2
ZjNhNjA2NjAzZWMzNTY0ZjJlMjhiZmYwNmIwYTBiODA0OWU2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtMjcsMTEg
KzI3LDExIEBACiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBVU0UoQVZGT1VOREFUSU9O
KQogCi0jaW5jbHVkZSAiR2VuZXJpY1Rhc2tRdWV1ZS5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZl
clBhcnNlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGUuaCIKICNpbmNsdWRlIDxk
aXNwYXRjaC9ncm91cC5oPgogI2luY2x1ZGUgPHd0Zi9Cb3guaD4KKyNpbmNsdWRlIDx3dGYvQ2Fu
Y2VsbGFibGVUYXNrLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CkBAIC0xOTMsNyArMTkzLDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkIHsg
ZmFsc2UgfTsKICAgICBib29sIG1faGFzUGVuZGluZ0FwcGVuZENvbXBsZXRlZENhbGxiYWNrIHsg
ZmFsc2UgfTsKICAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBSZWY8TWVkaWFTYW1wbGU+
Pj4gbV9tZWRpYVNhbXBsZXM7Ci0gICAgTWFpblRocmVhZFRhc2tRdWV1ZSBtX21lZGlhU2FtcGxl
VGFza1F1ZXVlOworICAgIFRhc2tDYW5jZWxsYXRpb25Hcm91cCBtX21lZGlhU2FtcGxlVGFza0Nh
bmNlbGxhdGlvbkdyb3VwOwogCiAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyPiBtX2Rpc3BsYXlMYXllcjsKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JF
R0lOCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tCmluZGV4IGMxZjg1MTRiYTUwOTZlYmI4MzViMDE2NjUwMmVlMzdjYzJkOGQzNTMu
LjBiOWJiNjQ4NWYzZTllMjUzNDVhYWQ0ZjRlNDcwOTJjNDI5YTVjYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC0z
NTksNyArMzU5LDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQygpCiAgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkKICAgICAgICAg
bV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKIAotICAgIG1fbWVkaWFTYW1wbGVUYXNr
UXVldWUuY2xvc2UoKTsKKyAgICBtX21lZGlhU2FtcGxlVGFza0NhbmNlbGxhdGlvbkdyb3VwLmNh
bmNlbCgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUlu
aXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50KQpAQCAtNDE4
LDcgKzQxOCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5p
dGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVuCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBtX21lZGlhU2FtcGxlVGFza1F1ZXVlLmVucXVldWVUYXNr
KFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSB7CisgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoQ2FuY2VsbGFibGVUYXNrKG1fbWVkaWFTYW1wbGVUYXNrQ2FuY2VsbGF0aW9uR3Jv
dXAsIFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSB7CiAgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNDM5LDcgKzQzOSw3
IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRp
b25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVuCiAgICAgICAgICAgICAgICAgbV9oYXNQZW5kaW5n
QXBwZW5kQ29tcGxldGVkQ2FsbGJhY2sgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBhcHBlbmRD
b21wbGV0ZWQoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSk7CisgICAgICAgIH0pKTsKICAg
ICB9KTsKIH0KIApAQCAtNjc2LDcgKzY3Niw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmFib3J0KCkKICAgICBtX3BhcnNlci0+cmVzZXRQYXJzZXJTdGF0ZSgpOwogICAgIG1f
bWVkaWFTYW1wbGVzLmNsZWFyKCk7CiAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRs
ZWQgPSBmYWxzZTsKLSAgICBtX21lZGlhU2FtcGxlVGFza1F1ZXVlLmNhbmNlbEFsbFRhc2tzKCk7
CisgICAgbV9tZWRpYVNhbXBsZVRhc2tDYW5jZWxsYXRpb25Hcm91cC5jYW5jZWwoKTsKIAogICAg
IGRpc3BhdGNoX2dyb3VwX3dhaXQobV9pc0FwcGVuZGluZ0dyb3VwLmdldCgpLCBESVNQQVRDSF9U
SU1FX0ZPUkVWRVIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmgKaW5kZXggYWY0OTdkMmUxOGU2ZDU1N2U0OTQzYjE5NGFmZjQ4ZGE3YjQ2
NjdlOC4uMGRhY2UzYjc3YjM4ZTExYWE1YjdiNzcxODkzZmFlZjBlOWJjZGM5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9u
Q2FwdHVyZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC0yOCw3
ICsyOCw2IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogI2luY2x1ZGUgIkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiR2VuZXJp
Y1Rhc2tRdWV1ZS5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430789</attachid>
            <date>2021-06-07 15:28:32 -0700</date>
            <delta_ts>2021-06-07 17:29:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226734-20210607152831.patch</filename>
            <type>text/plain</type>
            <size>53681</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNhZDVhZmEyNDcwNzM5ZDhjODJlOTc4
NGRiNTAzZDc3MWI5Y2MzNWMuLmQwMGViYWI2NDdkNGNmNzExYWVjZTU2MzY1NTc5ODk3OGYxNzli
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjEtMDYtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIGxlZ2FjeSBNYWluVGhyZWFkVGFza1F1ZXVlICYg
RXZlbnRMb29wVGFza1F1ZXVlIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjczNAorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2Ug
Tml3YS4KKworICAgICAgICBXZSByZWNlbnRseSBpbnRyb2R1Y2VkIHRoZSBXVEY6OkNhbmNlbGxh
YmxlVGFzayBpbiBvcmRlciB0byBiZSBhYmxlIHRvIGNhbmNlbAorICAgICAgICBhIHBlbmRpbmcg
dGFzayBpbiB0aGUgZXZlbnQgbG9vcCwgYW5kL29yIGNoZWNrIGlmIHRoZSB0YXNrIGlzIHN0aWxs
IHBlbmRpbmcuCisgICAgICAgIEl0IHdvcmtlZCBncmVhdCBhcyBhIHJlcGxhY2VtZW50IGZvciBF
dmVudExvb3BEZWZlcnJhYmxlVGFzay4gSG93ZXZlciwgaXQgd2FzCisgICAgICAgIGluc3VmZmlj
aWVudCBhcyBhIHJlcGxhY2VtZW50IGZvciB0YXNrIHF1ZXVlcyAoc3VjaCBhcyBNYWluVGhyZWFk
VGFza1F1ZXVlICYKKyAgICAgICAgRXZlbnRMb29wVGFza1F1ZXVlKSBzaW5jZSB0aGVyZSB3YXMg
bm8gY29udmVuaWVudCB3YXkgdG8gY2FuY2VsIGEgZ3JvdXAgb2YKKyAgICAgICAgdGFza3MuIFRv
IGFkZHJlc3MgdGhpcywgSSBhbSBpbnRyb2R1Y2luZyBXVEY6OlRhc2tDYW5jZWxsYXRpb25Hcm91
cC4gV2hlbmV2ZXIgb25lCisgICAgICAgIG5lZWRzIHRvIGNyZWF0ZSBhIENhbmNlbGxhYmxlVGFz
aywgaXQgbm93IG5lZWRzIHRvIHByb3ZpZGUgYSBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAuCisgICAg
ICAgIFNldmVyYWwgQ2FuY2VsbGFibGVUYXNrIG9iamVjdHMgY2FuIHNoYXJlIHRoZSBzYW1lIFRh
c2tDYW5jZWxsYXRpb25Hcm91cC4gQ29kZSBub3cKKyAgICAgICAgbm93IHNjaGVkdWxlIG9uZSBv
ciBtb3JlIENhbmNlbGxhYmxlVGFza3Mgb24gdGhlIGV2ZW50IGxvb3AgYW5kIGhvbGQgb24KKyAg
ICAgICAgdG8gYSBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAuIElmIHRoZXkgbmVlZCB0byBjYW5jZWwg
dGhvc2UgdGFza3MsIHRoZXkgY2FuIHNpbXBseQorICAgICAgICBjYWxsIGNhbmNlbCgpIG9uIHRo
ZSBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAuIFRoZXkgY2FuIGFsc28gY2hlY2sgaWYgcHJldmlvdXNs
eQorICAgICAgICBzY2hlZHVsZWQgdGFza3MgYXJlIHN0aWxsIHBlbmRpbmcgdmlhIFRhc2tDYW5j
ZWxsYXRpb25Hcm91cDo6aGFzUGVuZGluZ1Rhc2soKS4KKworICAgICAgICAqIHd0Zi9DYW5jZWxs
YWJsZVRhc2suaDoKKyAgICAgICAgKFdURjo6VGFza0NhbmNlbGxhdGlvbkdyb3VwOjpUYXNrQ2Fu
Y2VsbGF0aW9uR3JvdXApOgorICAgICAgICAoV1RGOjpUYXNrQ2FuY2VsbGF0aW9uR3JvdXA6OmNh
bmNlbCk6CisgICAgICAgIChXVEY6OlRhc2tDYW5jZWxsYXRpb25Hcm91cDo6aGFzUGVuZGluZ1Rh
c2sgY29uc3QpOgorICAgICAgICAoV1RGOjpUYXNrQ2FuY2VsbGF0aW9uR3JvdXA6OkltcGw6OmNh
bmNlbCk6CisgICAgICAgIChXVEY6OlRhc2tDYW5jZWxsYXRpb25Hcm91cDo6SW1wbDo6aGFzUGVu
ZGluZ1Rhc2sgY29uc3QpOgorICAgICAgICAoV1RGOjpUYXNrQ2FuY2VsbGF0aW9uR3JvdXA6Okhh
bmRsZTo6aXNDYW5jZWxsZWQgY29uc3QpOgorICAgICAgICAoV1RGOjpUYXNrQ2FuY2VsbGF0aW9u
R3JvdXA6OkhhbmRsZTo6SGFuZGxlKToKKyAgICAgICAgKFdURjo6VGFza0NhbmNlbGxhdGlvbkdy
b3VwOjpjcmVhdGVIYW5kbGUpOgorICAgICAgICAoV1RGOjpDYW5jZWxsYWJsZVRhc2s6OkNhbmNl
bGxhYmxlVGFzayk6CisgICAgICAgIChXVEY6OkNhbmNlbGxhYmxlVGFzazo6b3BlcmF0b3IoKSk6
CisgICAgICAgICogd3RmL1dlYWtQdHIuaDoKKyAgICAgICAgKFdURjo6V2Vha1B0ckZhY3Rvcnk6
OndlYWtQdHJDb3VudCBjb25zdCk6CisKIDIwMjEtMDYtMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gV2ViS2l0IHN1cHBvcnQgZm9y
IExpdmUgVGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFmZGIxN2JkNzEwODU3YTdlODJlOTJlNTRhZDYzNzE5
YzQyZGFkMzkuLmNmZWM4OGJiODQ5NWQyYTU0NmY5MDNjNWJhZGE2YmU3ODBiMTQ2MmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAyMS0wNi0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIERyb3AgbGVnYWN5IE1haW5UaHJlYWRUYXNrUXVldWUgJiBF
dmVudExvb3BUYXNrUXVldWUgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBO
aXdhLgorCisgICAgICAgIERyb3AgbGVnYWN5IE1haW5UaHJlYWRUYXNrUXVldWUgJiBFdmVudExv
b3BUYXNrUXVldWUgY2xhc3Nlcy4gQ29kZSB0aGF0IHdhcyB1c2luZyBNYWluVGhyZWFkVGFza1F1
ZXVlCisgICAgICAgIGlzIG5vdyBjYWxsaW5nIGNhbGxPbk1haW5UaHJlYWQoKSBkaXJlY3RseS4g
Q2FsbCB0aGF0IHdhcyB1c2luZyBFdmVudExvb3BUYXNrUXVldWUgaXMgbm93IHVzaW5nIHRoZQor
ICAgICAgICBIVE1MIGV2ZW50IGxvb3AgZGlyZWN0bHkuIElmIHNhaWQgY29kZSBuZWVkZWQgdG8g
Y2FuY2VsIHRhc2tzIG9yIGNoZWNrIGlmIGEgcHJldmlvdXNseSBzY2hlZHVsZWQgdGFzaworICAg
ICAgICBpcyBzdGlsbCBwZW5kaW5nLCBpdCBub3cgcmVsaWVzIG9uIFdURjo6Q2FuY2VsbGFibGVU
YXNrIC8gV1RGOjpUYXNrQ2FuY2VsbGF0aW9uR3JvdXAgdG8gZG8gc28uCisKKyAgICAgICAgKiBI
ZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
eXN0ZW1BY2Nlc3MuY3BwOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6Y2FjaGVD
dXJyZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xs
ZXI6Om1heWJlQ2xlYXJDYWNoZWRDdXJyZW50VGltZSk6CisgICAgICAgICogYW5pbWF0aW9uL0Rv
Y3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oOgorICAgICAgICAqIGRvbS9BY3RpdmVET01PYmpl
Y3QuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1l
ZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1l
ZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVs
ZU5leHRTb3VyY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpz
Y2hlZHVsZUNoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRhYmlsaXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpzY2hlZHVsZUNvbmZpZ3VyZVRleHRUcmFja3MpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVNZWRpYUVuZ2luZVdhc1VwZGF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVVcGRhdGVQbGF5U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2FuY2VsUGVuZGluZ1Rh
c2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFQbGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VUYXNrUXVldWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25BbmRTdWJ0aXRsZVRy
YWNrc0FzVW5jb25maWd1cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyQnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVVwZGF0ZU1lZGlhU3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlv
clJlc3RyaWN0aW9uc1RpbWVyRmlyZWQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoLVtXZWJDb3JlQVZGTW92aWVPYnNl
cnZlciBtZXRhZGF0YUxvYWRlZF0pOgorICAgICAgICAoLVtXZWJDb3JlQVZGTW92aWVPYnNlcnZl
ciBkaWRFbmQ6XSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIG9ic2VydmVW
YWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgICgtW1dl
YkNvcmVBVkZNb3ZpZU9ic2VydmVyIGxlZ2libGVPdXRwdXQ6ZGlkT3V0cHV0QXR0cmlidXRlZFN0
cmluZ3M6bmF0aXZlU2FtcGxlQnVmZmVyczpmb3JJdGVtVGltZTpdKToKKyAgICAgICAgKC1bV2Vi
Q29yZUFWRk1vdmllT2JzZXJ2ZXIgb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOl0pOgorICAgICAg
ICAoLVtXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBtZXRhZGF0YU91dHB1dDpkaWRPdXRwdXRUaW1l
ZE1ldGFkYXRhR3JvdXBzOmZyb21QbGF5ZXJJdGVtVHJhY2s6XSk6CisgICAgICAgICgtW1dlYkNv
cmVBVkZNb3ZpZU9ic2VydmVyIG1ldGFkYXRhQ29sbGVjdG9yOmRpZENvbGxlY3REYXRlUmFuZ2VN
ZXRhZGF0YUdyb3VwczppbmRleGVzT2ZOZXdHcm91cHM6aW5kZXhlc09mTW9kaWZpZWRHcm91cHM6
XSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZMb2FkZXJEZWxlZ2F0ZSByZXNvdXJjZUxvYWRlcjpz
aG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2U6XSk6CisgICAgICAgICgtW1dl
YkNvcmVBVkZMb2FkZXJEZWxlZ2F0ZSByZXNvdXJjZUxvYWRlcjpkaWRDYW5jZWxMb2FkaW5nUmVx
dWVzdDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFib3J0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oOgorCiAyMDIxLTA2
LTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFVw
c3RyZWFtIFdlYktpdCBzdXBwb3J0IGZvciBMaXZlIFRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0NhbmNlbGxhYmxlVGFzay5oIGIvU291cmNlL1dURi93dGYvQ2FuY2VsbGFibGVUYXNr
LmgKaW5kZXggMDY3NWMyYjJjNGMwYzA3MWUzZjgyNGY2MDNlOGM4M2U1YTFmNGMxMC4uZjQ0YTYx
ODFlN2EwZGNmNGI0NGNhYmE1NzE2NjBlNTlkZmJlOGEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvQ2FuY2VsbGFibGVUYXNrLmgKKysrIGIvU291cmNlL1dURi93dGYvQ2FuY2VsbGFibGVU
YXNrLmgKQEAgLTMxLDU5ICszMSw2MiBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotbmFtZXNwYWNl
IERldGFpbCB7Ci1zdHJ1Y3QgQ2FuY2VsbGFibGVUYXNrSW1wbCA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxDYW5jZWxsYWJsZVRhc2tJbXBsPiB7Ci0gICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOwotICAgIGV4cGxpY2l0IENhbmNlbGxhYmxlVGFza0ltcGwoRnVuY3Rpb248dm9pZCgp
PiYmIHRhc2spIDogdGFzayhXVEZNb3ZlKHRhc2spKSB7IH0KLSAgICBGdW5jdGlvbjx2b2lkKCk+
IHRhc2s7Ci19OwotfQorY2xhc3MgQ2FuY2VsbGFibGVUYXNrOwogCi1jbGFzcyBDYW5jZWxsYWJs
ZVRhc2sgeworY2xhc3MgVGFza0NhbmNlbGxhdGlvbkdyb3VwIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPFRhc2tDYW5jZWxsYXRpb25Hcm91cD4gewogcHVibGljOgotICAgIGV4cGxpY2l0IENhbmNl
bGxhYmxlVGFzayhGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIFRhc2tDYW5jZWxsYXRpb25Hcm91
cCgpIDogbV9pbXBsKG1ha2VVbmlxdWVSZWY8SW1wbD4oKSkgeyB9CisgICAgdm9pZCBjYW5jZWwo
KSB7IG1faW1wbC0+Y2FuY2VsKCk7IH0KKyAgICBib29sIGhhc1BlbmRpbmdUYXNrKCkgY29uc3Qg
eyByZXR1cm4gbV9pbXBsLT5oYXNQZW5kaW5nVGFzaygpOyB9CiAKLSAgICB2b2lkIG9wZXJhdG9y
KCkoKTsKLSAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuICEhbV90YXNrV3JhcHBl
ci0+dGFzazsgfQotICAgIHZvaWQgY2FuY2VsKCkgeyBtX3Rhc2tXcmFwcGVyLT50YXNrID0gbnVs
bHB0cjsgfQorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQ2FuY2VsbGFibGVUYXNrOworICAg
IGNsYXNzIEltcGwgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1wbD4geworICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIHZvaWQgY2FuY2VsKCkg
eyB3ZWFrUHRyRmFjdG9yeSgpLnJldm9rZUFsbCgpOyB9CisgICAgICAgIGJvb2wgaGFzUGVuZGlu
Z1Rhc2soKSBjb25zdCB7IHJldHVybiB3ZWFrUHRyRmFjdG9yeSgpLndlYWtQdHJDb3VudCgpOyB9
CisgICAgfTsKIAogICAgIGNsYXNzIEhhbmRsZSB7CiAgICAgcHVibGljOgotICAgICAgICBIYW5k
bGUoKSA9IGRlZmF1bHQ7Ci0gICAgICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4g
bV90YXNrV3JhcHBlciAmJiBtX3Rhc2tXcmFwcGVyLT50YXNrOyB9Ci0gICAgICAgIHZvaWQgY2Fu
Y2VsKCk7CisgICAgICAgIGJvb2wgaXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiAhbV9pbXBs
OyB9CisgICAgICAgIHZvaWQgY2xlYXIoKSB7IG1faW1wbCA9IG51bGxwdHI7IH0KICAgICBwcml2
YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgQ2FuY2VsbGFibGVUYXNrOwotICAgICAgICBleHBs
aWNpdCBIYW5kbGUoRGV0YWlsOjpDYW5jZWxsYWJsZVRhc2tJbXBsJik7Ci0gICAgICAgIFdlYWtQ
dHI8RGV0YWlsOjpDYW5jZWxsYWJsZVRhc2tJbXBsPiBtX3Rhc2tXcmFwcGVyOworICAgICAgICBm
cmllbmQgY2xhc3MgVGFza0NhbmNlbGxhdGlvbkdyb3VwOworICAgICAgICBleHBsaWNpdCBIYW5k
bGUoSW1wbCYgaW1wbCkgOiBtX2ltcGwobWFrZVdlYWtQdHIoaW1wbCkpIHsgfQorICAgICAgICBX
ZWFrUHRyPEltcGw+IG1faW1wbDsKICAgICB9OworICAgIEhhbmRsZSBjcmVhdGVIYW5kbGUoKSB7
IHJldHVybiBIYW5kbGUgeyBtX2ltcGwgfTsgfQorCisgICAgVW5pcXVlUmVmPEltcGw+IG1faW1w
bDsKK307CiAKLSAgICBIYW5kbGUgY3JlYXRlSGFuZGxlKCkgeyByZXR1cm4gSGFuZGxlIHsgbV90
YXNrV3JhcHBlci5nZXQoKSB9OyB9CitjbGFzcyBDYW5jZWxsYWJsZVRhc2sgeworcHVibGljOgor
ICAgIENhbmNlbGxhYmxlVGFzayhUYXNrQ2FuY2VsbGF0aW9uR3JvdXAmLCBGdW5jdGlvbjx2b2lk
KCk+JiYpOworICAgIHZvaWQgb3BlcmF0b3IoKSgpOwogCiBwcml2YXRlOgotICAgIFVuaXF1ZVJl
ZjxEZXRhaWw6OkNhbmNlbGxhYmxlVGFza0ltcGw+IG1fdGFza1dyYXBwZXI7CisgICAgVGFza0Nh
bmNlbGxhdGlvbkdyb3VwOjpIYW5kbGUgbV9jYW5jZWxsYXRpb25Hcm91cDsKKyAgICBGdW5jdGlv
bjx2b2lkKCk+IG1fdGFzazsKIH07CiAKLWlubGluZSBDYW5jZWxsYWJsZVRhc2s6OkNhbmNlbGxh
YmxlVGFzayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKLSAgICA6IG1fdGFza1dyYXBwZXIobWFr
ZVVuaXF1ZVJlZjxEZXRhaWw6OkNhbmNlbGxhYmxlVGFza0ltcGw+KFdURk1vdmUodGFzaykpKQor
aW5saW5lIENhbmNlbGxhYmxlVGFzazo6Q2FuY2VsbGFibGVUYXNrKFRhc2tDYW5jZWxsYXRpb25H
cm91cCYgY2FuY2VsbGF0aW9uR3JvdXAsIEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQorICAgIDog
bV9jYW5jZWxsYXRpb25Hcm91cChjYW5jZWxsYXRpb25Hcm91cC5jcmVhdGVIYW5kbGUoKSkKKyAg
ICAsIG1fdGFzayhXVEZNb3ZlKHRhc2spKQogeyB9CiAKIGlubGluZSB2b2lkIENhbmNlbGxhYmxl
VGFzazo6b3BlcmF0b3IoKSgpCiB7Ci0gICAgaWYgKGF1dG8gdGFzayA9IHN0ZDo6ZXhjaGFuZ2Uo
bV90YXNrV3JhcHBlci0+dGFzaywgbnVsbHB0cikpCi0gICAgICAgIHRhc2soKTsKLX0KLQotaW5s
aW5lIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlOjpIYW5kbGUoRGV0YWlsOjpDYW5jZWxsYWJsZVRh
c2tJbXBsJiB0YXNrKQotICAgIDogbV90YXNrV3JhcHBlcihtYWtlV2Vha1B0cih0YXNrKSkKLXsg
fQorICAgIGlmIChtX2NhbmNlbGxhdGlvbkdyb3VwLmlzQ2FuY2VsbGVkKCkpCisgICAgICAgIHJl
dHVybjsKIAotaW5saW5lIHZvaWQgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGU6OmNhbmNlbCgpCi17
Ci0gICAgaWYgKG1fdGFza1dyYXBwZXIpCi0gICAgICAgIG1fdGFza1dyYXBwZXItPnRhc2sgPSBu
dWxscHRyOworICAgIG1fY2FuY2VsbGF0aW9uR3JvdXAuY2xlYXIoKTsKKyAgICBtX3Rhc2soKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6Q2FuY2VsbGFibGVUYXNrOwor
dXNpbmcgV1RGOjpUYXNrQ2FuY2VsbGF0aW9uR3JvdXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9XZWFrUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9XZWFrUHRyLmgKaW5kZXggMmU5ZjU2NmY4
NWExMTMzYTM3MTUxZDgwMWIzNGU3OGFmMjIyMGU5MS4uMTJjNGI2ODk4ODcyOTkzYTFhNTNmNTlm
OTZiNmQwYWJmMjY3YjBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV2Vha1B0ci5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaApAQCAtMTg1LDYgKzE4NSw4IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9pbXBsID0gbnVsbHB0cjsKICAgICB9CiAKKyAgICB1bnNpZ25lZCB3ZWFrUHRy
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJlZkNvdW50KCkgLSAxIDog
MDsgfQorCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25z
dCB7IHJldHVybiBtX2ltcGw7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYzg0NDMx
ZGQ2ODM5ZDkwNjBhNWYzNTI0MmE4ODU5YmExYTQ5M2NkOS4uMzkwMzg3ZTI0MjI3MGQwNDk1MzVl
N2EwYjlhYWM1ZDU2MDFlNTc5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMDM0LDcgKzEwMzQs
NiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0v
RmlsZU1vbml0b3IuaAogICAgIHBsYXRmb3JtL0ZpbGVTdHJlYW1DbGllbnQuaAogICAgIHBsYXRm
b3JtL0Zsb2F0Q29udmVyc2lvbi5oCi0gICAgcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oCiAg
ICAgcGxhdGZvcm0vSG9zdFdpbmRvdy5oCiAgICAgcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAogICAg
IHBsYXRmb3JtL0tleXByZXNzQ29tbWFuZC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtQWNjZXNzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3BwCmlu
ZGV4IDg3OWQzZTVlOTM1ZGU4OWFjMDc5NzI4ZWM1ZGFlMDJlNWY2MGRkZmEuLjNlMzQwMmMyM2Zj
MDI2MGY4ODJhN2ZkMTc0ZGY5NGNhZjMyN2I0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3Mu
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ0RNLmgiCiAjaW5jbHVkZSAiQ0RNSW5z
dGFuY2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgog
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNNZWRpYUtleXMu
aCIKICNpbmNsdWRlICJNZWRpYUtleXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGllcy5jcHAKaW5k
ZXggMmNkYzY5ZjE1ZDVhOGMwN2U1Y2JhYTZmZTZjN2QxZjQ4YzkwYjQzOC4uYzMzNjA0ZjY0Yzk3
NTNlODk5NDBiYWU4MTMzMjEwNTc2ODA0MGU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGllcy5j
cHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJKU0RPTVBy
b21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0lu
Zm8uaCIKICNpbmNsdWRlICJKU01lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
OGJiZTcyNzdiMWIzN2QzMWMxMzZhMWNkMWVlN2QyNjllYTIwYzY5OC4uZDc3YjhmZTlmNzJjNmFi
NTAwY2Y1NjcxM2I2YzI0MTliNGE0YmQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDM4Niw3ICs0Mzg2LDYgQEAKIAkJQ0Q1
RkY0OUMyMTYyRTRDRjAwNEJEODZGIC8qIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRl
ckJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTJG
NzVBOUE4NkVBMDNEQUYyNEI3OTcxIC8qIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRl
ckJveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUNENUZGNDlEMjE2MkU0REIwMDRCRDg2RiAvKiBJU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4NzFDNjAx
RkI1MkI2NTAwRjBCOTY1IC8qIElTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q1RkY0OUUyMTYyRTRF
ODAwNEJEODZGIC8qIElTT09yaWdpbmFsRm9ybWF0Qm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDg3MUM2NzFGQjUyQjY4MDBGMEI5NjUgLyogSVNP
T3JpZ2luYWxGb3JtYXRCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQlDRDYyRkI5NjFBRjAxOEU3MDAxMkVEN0QgLyogR2VuZXJpY1Rhc2tRdWV1
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q2MkZC
OTQxQUYwMThFNzAwMTJFRDdEIC8qIEdlbmVyaWNUYXNrUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDY0MUVCMzE4MThGNUVEMDBFRTRD
NDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDY0MUVCMTE4MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3VyY2VQ
cml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0Q2NDFFQjQxODE4RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENjQxRUIyMTgxOEY1
RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q3MjBCNEYyMjY4QjUxMzAwMDQ3RkRFIC8q
IElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q3MjBCNDkyMjY4MkM3RjAwMDQ3RkRFIC8qIElTT0ZhaXJQ
bGF5U3RyZWFtaW5nUHNzaEJveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xNDk5OSw3ICsxNDk5OCw2IEBACiAJCUNENUQyNzc2MUU4MzE4RTAw
MEQ4MEEzRCAvKiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENUU1QjVFMUExNUNFNTQwMDBDNjA5RSAvKiBQYWdlQ29u
ZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlQ29uZmln
dXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDVFNUI2MDFBMTVGMTU2
MDAwQzYwOUUgLyogUGFnZUNvbmZpZ3VyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGFnZUNvbmZpZ3VyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDRDYyRkI5NDFBRjAxOEU3MDAxMkVEN0QgLyogR2VuZXJpY1Rhc2tRdWV1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmljVGFza1F1ZXVlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENjQxRUIxMTgxOEY1RUQwMEVFNEM0MSAvKiBN
ZWRpYVNvdXJjZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVk
aWFTb3VyY2VQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENjQxRUIy
MTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUJ1ZmZlclByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0Q2NDFFQzcxODFFRDYwMTAwRUU0QzQxIC8qIE1lZGlhU2FtcGxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhU2FtcGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yODA2OCw3ICsyODA2Niw2IEBACiAJCQkJQkMwNzNCQTkwQzM5OUIxRjAwMEY1OTc5IC8q
IEZsb2F0Q29udmVyc2lvbi5oICovLAogCQkJCTQxOTBGM0ExMjQ5RDE1MjcwMDUzMUM1NyAvKiBG
cmFtZVJhdGVNb25pdG9yLmNwcCAqLywKIAkJCQk0MTkwRjNBMzI0OUQxNTI4MDA1MzFDNTcgLyog
RnJhbWVSYXRlTW9uaXRvci5oICovLAotCQkJCUNENjJGQjk0MUFGMDE4RTcwMDEyRUQ3RCAvKiBH
ZW5lcmljVGFza1F1ZXVlLmggKi8sCiAJCQkJQTg3NDhCREYxMkNCRjJEQzAwMUZCQTQxIC8qIEhh
c2hUb29scy5oICovLAogCQkJCUJDM0JDMjlCMEU5MUFCMEYwMDgzNTU4OCAvKiBIb3N0V2luZG93
LmggKi8sCiAJCQkJMUFFMDBENTcxODJEQUM4RDAwMDg3REQ3IC8qIEtleWVkQ29kaW5nLmggKi8s
CkBAIC0zMjc4Nyw3ICszMjc4NCw2IEBACiAJCQkJQzBDMDU0Q0MxMTE4QzhFNDAwQ0UyNjM2IC8q
IGdlbmVyYXRlLWJpbmRpbmdzLnBsIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyM0YwREIwREFGRjRB
NDAwOUZEQzkxIC8qIEdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzAwMzBG
NjFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlDRDYyRkI5NjFBRjAxOEU3MDAxMkVEN0QgLyogR2VuZXJpY1Rhc2tRdWV1
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjQxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xv
Y2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyNTE0RjREREU2MDAzRTdBNzEgLyog
R2VvbG9jYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI3MTRGNERERTYw
MDNFN0E3MCAvKiBHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9s
bGVyLmNwcAppbmRleCBhMmM2NjU5NWY0NjBlODZiYjE0NjY5MzY5NTViOTU1ZDhhOTA2YTE5Li5j
NmYxM2NiN2M0ZGQwYjY5MDhhZmY3NjZjMzY2YmFmYTQ3ZTEwMDFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmNw
cApAQCAtNTEsMTAgKzUxLDcgQEAgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjpEb2N1bWVu
dFRpbWVsaW5lc0NvbnRyb2xsZXIoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIH0KIH0KIAotRG9j
dW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjp+RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyKCkK
LXsKLSAgICBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrLmNhbmNlbCgpOwotfQorRG9jdW1lbnRU
aW1lbGluZXNDb250cm9sbGVyOjp+RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyKCkgPSBkZWZh
dWx0OwogCiB2b2lkIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6YWRkVGltZWxpbmUoRG9j
dW1lbnRUaW1lbGluZSYgdGltZWxpbmUpCiB7CkBAIC03Myw3ICs3MCw3IEBAIHZvaWQgRG9jdW1l
bnRUaW1lbGluZXNDb250cm9sbGVyOjpyZW1vdmVUaW1lbGluZShEb2N1bWVudFRpbWVsaW5lJiB0
aW1lbGluZSkKIAogdm9pZCBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OmRldGFjaEZyb21E
b2N1bWVudCgpCiB7Ci0gICAgbV9jdXJyZW50VGltZUNsZWFyaW5nVGFzay5jYW5jZWwoKTsKKyAg
ICBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrQ2FuY2VsbGF0aW9uR3JvdXAuY2FuY2VsKCk7CiAK
ICAgICB3aGlsZSAoIW1fdGltZWxpbmVzLmNvbXB1dGVzRW1wdHkoKSkKICAgICAgICAgbV90aW1l
bGluZXMuYmVnaW4oKS0+ZGV0YWNoRnJvbURvY3VtZW50KCk7CkBAIC0yMzMsOSArMjMwLDggQEAg
dm9pZCBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OmNhY2hlQ3VycmVudFRpbWUoUmVkdWNl
ZFJlc29sdXRpb25TZWNvbmRzIG5ld0MKICAgICAvLyBhbmltYXRpb25zLCBzbyB3ZSBzY2hlZHVs
ZSB0aGUgaW52YWxpZGF0aW9uIHRhc2sgYW5kIHJlZ2lzdGVyIGEgd2hlbklkbGUgY2FsbGJhY2sg
b24gdGhlIFZNLCB3aGljaCB3aWxsCiAgICAgLy8gZmlyZSBzeW5jcm9ub3VzbHkgaWYgbm8gSlMg
aXMgcnVubmluZy4KICAgICBtX3dhaXRpbmdPblZNSWRsZSA9IHRydWU7Ci0gICAgaWYgKCFtX2N1
cnJlbnRUaW1lQ2xlYXJpbmdUYXNrLmlzUGVuZGluZygpKSB7Ci0gICAgICAgIENhbmNlbGxhYmxl
VGFzayB0YXNrKHN0ZDo6YmluZCgmRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjptYXliZUNs
ZWFyQ2FjaGVkQ3VycmVudFRpbWUsIHRoaXMpKTsKLSAgICAgICAgbV9jdXJyZW50VGltZUNsZWFy
aW5nVGFzayA9IHRhc2suY3JlYXRlSGFuZGxlKCk7CisgICAgaWYgKCFtX2N1cnJlbnRUaW1lQ2xl
YXJpbmdUYXNrQ2FuY2VsbGF0aW9uR3JvdXAuaGFzUGVuZGluZ1Rhc2soKSkgeworICAgICAgICBD
YW5jZWxsYWJsZVRhc2sgdGFzayhtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrQ2FuY2VsbGF0aW9u
R3JvdXAsIHN0ZDo6YmluZCgmRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjptYXliZUNsZWFy
Q2FjaGVkQ3VycmVudFRpbWUsIHRoaXMpKTsKICAgICAgICAgbV9kb2N1bWVudC5ldmVudExvb3Ao
KS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6SW50ZXJuYWxBc3luY1Rhc2ssIFdURk1vdmUodGFzaykp
OwogICAgIH0KICAgICAvLyBXZSBleHRlbnQgdGhlIGFzc29jaWF0ZWQgRG9jdW1lbnQncyBsaWZl
Y3ljbGUgdW50aWwgdGhlIFZNIGJlY2FtZSBpZGxlIHNpbmNlIHRoZSBEb2N1bWVudFRpbWVsaW5l
c0NvbnRyb2xsZXIKQEAgLTI1Miw3ICsyNDgsNyBAQCB2b2lkIERvY3VtZW50VGltZWxpbmVzQ29u
dHJvbGxlcjo6bWF5YmVDbGVhckNhY2hlZEN1cnJlbnRUaW1lKCkKICAgICAvLyBKUyBvciB3YWl0
aW5nIG9uIGFsbCBjdXJyZW50IGFuaW1hdGlvbiB1cGRhdGluZyBjb2RlIHRvIGhhdmUgY29tcGxl
dGVkLiBUaGlzIGlzIHNvIHRoYXQKICAgICAvLyB3ZSdyZSBndWFyYW50ZWVkIHRvIGhhdmUgYSBj
b25zaXN0ZW50IGN1cnJlbnQgdGltZSByZXBvcnRlZCBmb3IgYWxsIHdvcmsgaGFwcGVuaW5nIGlu
IGEgZ2l2ZW4KICAgICAvLyBKUyBmcmFtZSBvciB0aHJvdWdob3V0IHVwZGF0aW5nIGFuaW1hdGlv
bnMgaW4gV2ViQ29yZS4KLSAgICBpZiAoIW1faXNTdXNwZW5kZWQgJiYgIW1fd2FpdGluZ09uVk1J
ZGxlICYmICFtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrLmlzUGVuZGluZygpKQorICAgIGlmICgh
bV9pc1N1c3BlbmRlZCAmJiAhbV93YWl0aW5nT25WTUlkbGUgJiYgIW1fY3VycmVudFRpbWVDbGVh
cmluZ1Rhc2tDYW5jZWxsYXRpb25Hcm91cC5oYXNQZW5kaW5nVGFzaygpKQogICAgICAgICBtX2Nh
Y2hlZEN1cnJlbnRUaW1lID0gc3RkOjpudWxsb3B0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmgKaW5kZXggOTcx
YmNkNjIxNjRiM2VlN2VmZGVlYTY5NDI1ZGI1ODU3MDY0MGNkZS4uY2NkZThiNDIxODdkNzBhMGUw
M2IxOWM3YWU1MDljMmIyNmE2NDczOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuaApAQCAtNjcsNyArNjcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgbWF5YmVDbGVhckNhY2hlZEN1cnJlbnRUaW1lKCk7CiAKICAgICBX
ZWFrSGFzaFNldDxEb2N1bWVudFRpbWVsaW5lPiBtX3RpbWVsaW5lczsKLSAgICBDYW5jZWxsYWJs
ZVRhc2s6OkhhbmRsZSBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrOworICAgIFRhc2tDYW5jZWxs
YXRpb25Hcm91cCBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrQ2FuY2VsbGF0aW9uR3JvdXA7CiAg
ICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiAgICAgTWFya2FibGU8U2Vjb25kcywgU2Vjb25kczo6
TWFya2FibGVUcmFpdHM+IG1fY2FjaGVkQ3VycmVudFRpbWU7CiAgICAgYm9vbCBtX2lzU3VzcGVu
ZGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01P
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAppbmRleCA0NTA0
ZWExMWY5ODE5MzVjMWI4OGJmZDlkMTIwZTY5OWVmNmIwOWZmLi4xMTA3NGIwMTg1N2Y2NGZmZTli
YjJmODI4MGZkNjNjZTZmOGM0ZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0
aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5o
CkBAIC0xMTIsMTQgKzExMiwxMiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLSAgICBzdGF0aWMgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgcXVldWVDYW5jZWxs
YWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoVCYgb2JqZWN0LCBUYXNrU291cmNlIHNvdXJjZSwg
RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCisgICAgc3RhdGljIHZvaWQgcXVldWVDYW5jZWxsYWJs
ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoVCYgb2JqZWN0LCBUYXNrU291cmNlIHNvdXJjZSwgVGFz
a0NhbmNlbGxhdGlvbkdyb3VwJiBjYW5jZWxsYXRpb25Hcm91cCwgRnVuY3Rpb248dm9pZCgpPiYm
IHRhc2spCiAgICAgewotICAgICAgICBDYW5jZWxsYWJsZVRhc2sgY2FuY2VsbGFibGVUYXNrKFdU
Rk1vdmUodGFzaykpOwotICAgICAgICBhdXRvIHRhc2tIYW5kbGUgPSBjYW5jZWxsYWJsZVRhc2su
Y3JlYXRlSGFuZGxlKCk7CisgICAgICAgIENhbmNlbGxhYmxlVGFzayBjYW5jZWxsYWJsZVRhc2so
Y2FuY2VsbGF0aW9uR3JvdXAsIFdURk1vdmUodGFzaykpOwogICAgICAgICBvYmplY3QucXVldWVU
YXNrSW5FdmVudExvb3Aoc291cmNlLCBbcHJvdGVjdGVkT2JqZWN0ID0gbWFrZVJlZihvYmplY3Qp
LCBhY3Rpdml0eSA9IG9iamVjdC5BY3RpdmVET01PYmplY3Q6Om1ha2VQZW5kaW5nQWN0aXZpdHko
b2JqZWN0KSwgY2FuY2VsbGFibGVUYXNrID0gV1RGTW92ZShjYW5jZWxsYWJsZVRhc2spXSgpIG11
dGFibGUgewogICAgICAgICAgICAgY2FuY2VsbGFibGVUYXNrKCk7CiAgICAgICAgIH0pOwotICAg
ICAgICByZXR1cm4gdGFza0hhbmRsZTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBF
dmVudFRhcmdldFR5cGUsIHR5cGVuYW1lIEV2ZW50VHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggMmFhZDBlNWRlMGM4NmVmOWFmODkwOWNjYzlhM2Y0MWY2M2ZjNzBiZi4uYjQ3MWE2M2NmNTg2
YzgyMzE1ZTJkNjUwZjAwZDk5ZTY5NjY1NTZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQx
LDcgKzQxLDYgQEAKICNpbmNsdWRlICJGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNs
dWRlICJGcmFtZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCi0j
aW5jbHVkZSAiR2VuZXJpY1Rhc2tRdWV1ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIK
ICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5jcHAKaW5kZXggODBlMzM2ZjQ5
M2FhZTViYzA5MGU0MmU5YmNmOWU4ZmY5YWQ3MjMzMi4uYmJiNzJkMzliMGU5YzUwMTRlNTJmNDA1
MGZhNDJlYTU3YWY3MmU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3Jl
ZW5NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIu
Y3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJD
aHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMWE0ZDMzNGQ2
ODBlNjYwNWU0MDNjMWEyZjRiYzA1MGMyNjcwNmNmYy4uNmQ3MDMzYjFlMGE4NjlhZDAzNzliNWFj
ZDY5NjBmYmE1ZWM0ODMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCkBAIC0zOTQsNyArMzk0LDYgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICAgICAsIG1f
c2NhblRpbWVyKCp0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6c2NhblRpbWVyRmlyZWQpCiAgICAg
LCBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lcigqdGhp
cywgJkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0
cmljdGlvbnNUaW1lckZpcmVkKQogICAgICwgbV9zZWVrVG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRU
aW1lcigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtUb1BsYXliYWNrUG9zaXRpb25FbmRl
ZFRpbWVyRmlyZWQpCi0gICAgLCBtX3Jlc291cmNlU2VsZWN0aW9uVGFza1F1ZXVlKCZkb2N1bWVu
dCkKICAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKEV2ZW50TG9vcEV2ZW50UXVldWU6OmNyZWF0ZSgq
dGhpcykpCiAgICAgLCBtX2xhc3RUaW1lVXBkYXRlRXZlbnRNb3ZpZVRpbWUoTWVkaWFUaW1lOjpw
b3NpdGl2ZUluZmluaXRlVGltZSgpKQogICAgICwgbV9maXJzdFRpbWVQbGF5aW5nKHRydWUpCkBA
IC01NjcsMTEgKzU2Niw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkK
ICAgICBpZiAobV9pc29sYXRlZFdvcmxkKQogICAgICAgICBtX2lzb2xhdGVkV29ybGQtPmNsZWFy
V3JhcHBlcnMoKTsKIAotICAgIG1fc2Vla1Rhc2suY2FuY2VsKCk7Ci0gICAgbV9yZXN1bWVUYXNr
LmNhbmNlbCgpOwotICAgIG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0
aW9uc1Rhc2suY2FuY2VsKCk7Ci0gICAgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZS5jbG9z
ZSgpOwotCiAgICAgbV9jb21wbGV0ZWx5TG9hZGVkID0gdHJ1ZTsKIAogICAgIGlmIChtX3BsYXll
cikgewpAQCAtODkzLDkgKzg4Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjYWxj
U3R5bGUoU3R5bGU6OkNoYW5nZSkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVOZXh0
U291cmNlQ2hpbGQoKQogewogICAgIC8vIFNjaGVkdWxlIHRoZSB0aW1lciB0byB0cnkgdGhlIG5l
eHQgPHNvdXJjZT4gZWxlbWVudCBXSVRIT1VUIHJlc2V0dGluZyBzdGF0ZSBhbGEgcHJlcGFyZUZv
ckxvYWQuCi0gICAgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhp
c10gewotICAgICAgICBsb2FkTmV4dFNvdXJjZUNoaWxkKCk7Ci0gICAgfSk7CisgICAgcXVldWVD
YW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlh
RWxlbWVudCwgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tDYW5jZWxsYXRpb25Hcm91cCwgc3RkOjpi
aW5kKCZIVE1MTWVkaWFFbGVtZW50Ojpsb2FkTmV4dFNvdXJjZUNoaWxkLCB0aGlzKSk7CiB9CiAK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hh
bmdlZCgpCkBAIC05ODAsMTEgKzk3MiwxMSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Omhhc0V2
ZXJOb3RpZmllZEFib3V0UGxheWluZygpIGNvbnN0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
c2NoZWR1bGVDaGVja1BsYXliYWNrVGFyZ2V0Q29tcGF0YWJpbGl0eSgpCiB7Ci0gICAgaWYgKG1f
Y2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGliaWxpdHlUYXNrLmlzUGVuZGluZygpKQorICAgIGlm
IChtX2NoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFza0NhbmNlbGxhdGlvbkdyb3Vw
Lmhhc1BlbmRpbmdUYXNrKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7Ci0gICAgbV9jaGVja1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJpbGl0eVRhc2sg
PSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJj
ZTo6TWVkaWFFbGVtZW50LCBbdGhpc10geworICAgIHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGlu
Z09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIG1fY2hlY2tQbGF5
YmFja1RhcmdldENvbXBhdGliaWxpdHlUYXNrQ2FuY2VsbGF0aW9uR3JvdXAsIFt0aGlzXSB7CiAg
ICAgICAgIGNoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5KCk7CiAgICAgfSk7CiB9CkBA
IC0xMDk5LDkgKzEwOTEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWQoKQogICAgICAg
ICByZXR1cm47CiAKICAgICBwcmVwYXJlRm9yTG9hZCgpOwotICAgIG1fcmVzb3VyY2VTZWxlY3Rp
b25UYXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXNdIHsKLSAgICAgICAgcHJlcGFyZVRvUGxheSgp
OwotICAgIH0pOworICAgIHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0
aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrQ2Fu
Y2VsbGF0aW9uR3JvdXAsIHN0ZDo6YmluZCgmSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZVRvUGxh
eSwgdGhpcykpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JMb2FkKCkK
QEAgLTExMTgsNyArMTEwOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxv
YWQoKQogICAgIC8vIDEgLSBBYm9ydCBhbnkgYWxyZWFkeS1ydW5uaW5nIGluc3RhbmNlIG9mIHRo
ZSByZXNvdXJjZSBzZWxlY3Rpb24gYWxnb3JpdGhtIGZvciB0aGlzIGVsZW1lbnQuCiAgICAgLy8g
UGVyZm9ybSB0aGUgY2xlYW51cCByZXF1aXJlZCBmb3IgdGhlIHJlc291cmNlIGxvYWQgYWxnb3Jp
dGhtIHRvIHJ1bi4KICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKLSAgICBtX3Jlc291cmNlU2Vs
ZWN0aW9uVGFza1F1ZXVlLmNhbmNlbEFsbFRhc2tzKCk7CisgICAgbV9yZXNvdXJjZVNlbGVjdGlv
blRhc2tDYW5jZWxsYXRpb25Hcm91cC5jYW5jZWwoKTsKICAgICAvLyBGSVhNRTogRmlndXJlIG91
dCBhcHByb3ByaWF0ZSBwbGFjZSB0byByZXNldCBMb2FkVGV4dFRyYWNrUmVzb3VyY2UgaWYgbmVj
ZXNzYXJ5IGFuZCBzZXQgbV9wZW5kaW5nQWN0aW9uRmxhZ3MgdG8gMCBoZXJlLgogICAgIG1fc2Vu
dEVuZEV2ZW50ID0gZmFsc2U7CiAgICAgbV9zZW50U3RhbGxlZEV2ZW50ID0gZmFsc2U7CkBAIC0x
MjMwLDE3ICsxMjIwLDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZWxv
YWRBbmRSZXN1bWVQbGF5YmFja0lmTmVlZGVkKCkKICAgICAgICAgZW50ZXJGdWxsc2NyZWVuKG1f
dmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAKICAgICBpZiAocHJldmlvdXNNZWRpYVRpbWUpIHsKLSAg
ICAgICAgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhpcywgcHJl
dmlvdXNNZWRpYVRpbWVdIHsKKyAgICAgICAgcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgbV9yZXNvdXJjZVNlbGVj
dGlvblRhc2tDYW5jZWxsYXRpb25Hcm91cCwgW3RoaXMsIHByZXZpb3VzTWVkaWFUaW1lXSB7CiAg
ICAgICAgICAgICBpZiAobV9wbGF5ZXIpCiAgICAgICAgICAgICAgICAgbV9wbGF5ZXItPnNlZWtX
aGVuUG9zc2libGUocHJldmlvdXNNZWRpYVRpbWUpOwogICAgICAgICB9KTsKICAgICB9CiAKLSAg
ICBpZiAoIXdhc1BhdXNlZCkgewotICAgICAgICBtX3Jlc291cmNlU2VsZWN0aW9uVGFza1F1ZXVl
LmVucXVldWVUYXNrKFt0aGlzXSB7Ci0gICAgICAgICAgICBwbGF5SW50ZXJuYWwoKTsKLSAgICAg
ICAgfSk7Ci0gICAgfQorICAgIGlmICghd2FzUGF1c2VkKQorICAgICAgICBxdWV1ZUNhbmNlbGxh
YmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50
LCBtX3Jlc291cmNlU2VsZWN0aW9uVGFza0NhbmNlbGxhdGlvbkdyb3VwLCBzdGQ6OmJpbmQoJkhU
TUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCwgdGhpcykpOwogfQogCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UoKQpAQCAtMTI1OCw3ICsxMjQ1LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlKCkKICAgICBzZXRTaG91bGRE
ZWxheUxvYWRFdmVudCh0cnVlKTsKIAogICAgIC8vIDQuIGluIHBhcmFsbGVsIGF3YWl0IGEgc3Rh
YmxlIHN0YXRlLCBhbGxvd2luZyB0aGUgdGFzayB0aGF0IGludm9rZWQgdGhpcyBhbGdvcml0aG0g
dG8gY29udGludWUuCi0gICAgaWYgKG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrUXVldWUuaGFzUGVu
ZGluZ1Rhc2tzKCkpCisgICAgaWYgKG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrQ2FuY2VsbGF0aW9u
R3JvdXAuaGFzUGVuZGluZ1Rhc2soKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtZWRp
YVNlc3Npb24oKS5wYWdlQWxsb3dzRGF0YUxvYWRpbmcoKSkgewpAQCAtMTI3OSw3ICsxMjY2LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlKCkKICAgICBhdXRv
IGxvZ1NpdGVJZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAgICBVTlVTRURfUEFSQU0obG9n
U2l0ZUlkZW50aWZpZXIpOwogCi0gICAgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZS5lbnF1
ZXVlVGFzayhbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdICB7CisgICAgcXVldWVDYW5jZWxsYWJs
ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwg
bV9yZXNvdXJjZVNlbGVjdGlvblRhc2tDYW5jZWxsYXRpb25Hcm91cCwgW3RoaXMsIGxvZ1NpdGVJ
ZGVudGlmaWVyXSAgewogCiAgICAgICAgIEFMV0FZU19MT0cobG9nU2l0ZUlkZW50aWZpZXIsICJs
YW1iZGEoKSwgdGFzayBmaXJlZCIpOwogCkBAIC0yOTYxLDkgKzI5NDgsOSBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYgaW5UaW1lLCBj
b25zdCBNZWRpYVRpbQogICAgIC8vIDMgLSBJZiB0aGUgZWxlbWVudCdzIHNlZWtpbmcgSURMIGF0
dHJpYnV0ZSBpcyB0cnVlLCB0aGVuIGFub3RoZXIgaW5zdGFuY2Ugb2YgdGhpcyBhbGdvcml0aG0g
aXMKICAgICAvLyBhbHJlYWR5IHJ1bm5pbmcuIEFib3J0IHRoYXQgb3RoZXIgaW5zdGFuY2Ugb2Yg
dGhlIGFsZ29yaXRobSB3aXRob3V0IHdhaXRpbmcgZm9yIHRoZSBzdGVwIHRoYXQKICAgICAvLyBp
dCBpcyBydW5uaW5nIHRvIGNvbXBsZXRlLgotICAgIGlmIChtX3NlZWtUYXNrLmlzUGVuZGluZygp
KSB7CisgICAgaWYgKG1fc2Vla1Rhc2tDYW5jZWxsYXRpb25Hcm91cC5oYXNQZW5kaW5nVGFzaygp
KSB7CiAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJjYW5jZWxsaW5nIHBlbmRpbmcg
c2Vla3MiKTsKLSAgICAgICAgbV9zZWVrVGFzay5jYW5jZWwoKTsKKyAgICAgICAgbV9zZWVrVGFz
a0NhbmNlbGxhdGlvbkdyb3VwLmNhbmNlbCgpOwogICAgICAgICBpZiAobV9wZW5kaW5nU2Vlaykg
ewogICAgICAgICAgICAgbm93ID0gbV9wZW5kaW5nU2Vlay0+bm93OwogICAgICAgICAgICAgbV9w
ZW5kaW5nU2VlayA9IG51bGxwdHI7CkBAIC0yOTg1LDcgKzI5NzIsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYgaW5UaW1lLCBjb25z
dCBNZWRpYVRpbQogICAgIG1fcGVuZGluZ1NlZWsgPSBtYWtlVW5pcXVlPFBlbmRpbmdTZWVrPihu
b3csIHRpbWUsIG5lZ2F0aXZlVG9sZXJhbmNlLCBwb3NpdGl2ZVRvbGVyYW5jZSk7CiAgICAgaWYg
KGZyb21ET00pIHsKICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImVucXVldWluZyBz
ZWVrIGZyb20gIiwgbm93LCAiIHRvICIsIHRpbWUpOwotICAgICAgICBtX3NlZWtUYXNrID0gcXVl
dWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1l
ZGlhRWxlbWVudCwgc3RkOjpiaW5kKCZIVE1MTWVkaWFFbGVtZW50OjpzZWVrVGFzaywgdGhpcykp
OworICAgICAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywg
VGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX3NlZWtUYXNrQ2FuY2VsbGF0aW9uR3JvdXAsIHN0
ZDo6YmluZCgmSFRNTE1lZGlhRWxlbWVudDo6c2Vla1Rhc2ssIHRoaXMpKTsKICAgICB9IGVsc2UK
ICAgICAgICAgc2Vla1Rhc2soKTsKIApAQCAtMzY5NywxMCArMzY4NCwxMCBAQCBFeGNlcHRpb25P
cjx2b2lkPiBIVE1MTWVkaWFFbGVtZW50OjpzZXRWb2x1bWUoZG91YmxlIHZvbHVtZSkKICAgICBh
dXRvIG9sZFZvbHVtZSA9IG1fdm9sdW1lOwogICAgIG1fdm9sdW1lID0gdm9sdW1lOwogCi0gICAg
aWYgKG1fdm9sdW1lUmV2ZXJ0VGFzay5pc1BlbmRpbmcoKSkKKyAgICBpZiAobV92b2x1bWVSZXZl
cnRUYXNrQ2FuY2VsbGF0aW9uR3JvdXAuaGFzUGVuZGluZ1Rhc2soKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKIAotICAgIG1fdm9sdW1lUmV2ZXJ0VGFzayA9IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2Vl
cGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlzLCBv
bGRWb2x1bWVdIHsKKyAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgq
dGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX3ZvbHVtZVJldmVydFRhc2tDYW5jZWxs
YXRpb25Hcm91cCwgW3RoaXMsIG9sZFZvbHVtZV0gewogICAgICAgICBtX3ZvbHVtZSA9IG9sZFZv
bHVtZTsKICAgICB9KTsKIApAQCAtNDQ4NSwxMiArNDQ3MiwxMiBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFRyYWNrKFRleHRUcmFjayogdHJhY2tUb1NlbGVjdCkKIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUNvbmZpZ3VyZVRleHRUcmFja3MoKQogewot
ICAgIGlmIChtX2NvbmZpZ3VyZVRleHRUcmFja3NUYXNrLmlzUGVuZGluZygpKQorICAgIGlmICht
X2NvbmZpZ3VyZVRleHRUcmFja3NUYXNrQ2FuY2VsbGF0aW9uR3JvdXAuaGFzUGVuZGluZ1Rhc2so
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBsb2dTaXRlSWRlbnRpZmllciA9IExPR0lE
RU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgInRhc2sgc2NoZWR1
bGVkIik7Ci0gICAgbV9jb25maWd1cmVUZXh0VHJhY2tzVGFzayA9IHF1ZXVlQ2FuY2VsbGFibGVU
YXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0
aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0geworICAgIHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGlu
Z09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIG1fY29uZmlndXJl
VGV4dFRyYWNrc1Rhc2tDYW5jZWxsYXRpb25Hcm91cCwgW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVy
XSB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShsb2dTaXRlSWRlbnRpZmllcik7CiAgICAgICAgIEFM
V0FZU19MT0cobG9nU2l0ZUlkZW50aWZpZXIsICJsYW1iZGEoKSwgdGFzayBmaXJlZCIpOwogICAg
ICAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIGNvbmZp
Z3VyZVRleHRUcmFja3MgY2FsbHMgbWV0aG9kcyB0aGF0IGNhbiB0cmlnZ2VyIGFyYml0cmFyeSBE
T00gbXV0YXRpb25zLgpAQCAtNTAzMywxMiArNTAyMCwxMiBAQCBHcmFwaGljc0RldmljZUFkYXB0
ZXIqIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyR3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkg
Y29ucwogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTWVkaWFFbmdpbmVXYXNVcGRh
dGVkKCkKIHsKLSAgICBpZiAobV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrLmlzUGVuZGluZygpKQor
ICAgIGlmIChtX21lZGlhRW5naW5lVXBkYXRlZFRhc2tDYW5jZWxsYXRpb25Hcm91cC5oYXNQZW5k
aW5nVGFzaygpKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGxvZ1NpdGVJZGVudGlmaWVy
ID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAidGFz
ayBzY2hlZHVsZWQiKTsKLSAgICBtX21lZGlhRW5naW5lVXBkYXRlZFRhc2sgPSBxdWV1ZUNhbmNl
bGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVt
ZW50LCBbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdIHsKKyAgICBxdWV1ZUNhbmNlbGxhYmxlVGFz
a0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBtX21l
ZGlhRW5naW5lVXBkYXRlZFRhc2tDYW5jZWxsYXRpb25Hcm91cCwgW3RoaXMsIGxvZ1NpdGVJZGVu
dGlmaWVyXSB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShsb2dTaXRlSWRlbnRpZmllcik7CiAgICAg
ICAgIEFMV0FZU19MT0cobG9nU2l0ZUlkZW50aWZpZXIsICJsYW1iZGEoKSwgdGFzayBmaXJlZCIp
OwogICAgICAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8v
IG1lZGlhRW5naW5lV2FzVXBkYXRlZCBjYWxscyBtZXRob2RzIHRoYXQgY2FuIHRyaWdnZXIgYXJi
aXRyYXJ5IERPTSBtdXRhdGlvbnMuCkBAIC01MzI2LDEyICs1MzEzLDEyIEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6dXBkYXRlVm9sdW1lKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hl
ZHVsZVVwZGF0ZVBsYXlTdGF0ZSgpCiB7Ci0gICAgaWYgKG1fdXBkYXRlUGxheVN0YXRlVGFzay5p
c1BlbmRpbmcoKSkKKyAgICBpZiAobV91cGRhdGVQbGF5U3RhdGVUYXNrQ2FuY2VsbGF0aW9uR3Jv
dXAuaGFzUGVuZGluZ1Rhc2soKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBsb2dTaXRl
SWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRp
ZmllciwgInRhc2sgc2NoZWR1bGVkIik7Ci0gICAgbV91cGRhdGVQbGF5U3RhdGVUYXNrID0gcXVl
dWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1l
ZGlhRWxlbWVudCwgW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CisgICAgcXVldWVDYW5jZWxs
YWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVu
dCwgbV91cGRhdGVQbGF5U3RhdGVUYXNrQ2FuY2VsbGF0aW9uR3JvdXAsIFt0aGlzLCBsb2dTaXRl
SWRlbnRpZmllcl0gewogICAgICAgICBVTlVTRURfUEFSQU0obG9nU2l0ZUlkZW50aWZpZXIpOwog
ICAgICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAibGFtYmRhKCksIHRhc2sgZmly
ZWQiKTsKICAgICAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OyAvLyB1cGRhdGVQbGF5U3RhdGUgY2FsbHMgbWV0aG9kcyB0aGF0IGNhbiB0cmlnZ2VyIGFyYml0
cmFyeSBET00gbXV0YXRpb25zLgpAQCAtNTQ2MywxNiArNTQ1MCwxNiBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnN0b3BQZXJpb2RpY1RpbWVycygpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
Y2FuY2VsUGVuZGluZ1Rhc2tzKCkKIHsKLSAgICBtX2NvbmZpZ3VyZVRleHRUcmFja3NUYXNrLmNh
bmNlbCgpOwotICAgIG1fY2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGliaWxpdHlUYXNrLmNhbmNl
bCgpOwotICAgIG1fdXBkYXRlTWVkaWFTdGF0ZVRhc2suY2FuY2VsKCk7Ci0gICAgbV9tZWRpYUVu
Z2luZVVwZGF0ZWRUYXNrLmNhbmNlbCgpOwotICAgIG1fdXBkYXRlUGxheVN0YXRlVGFzay5jYW5j
ZWwoKTsKLSAgICBtX3Jlc3VtZVRhc2suY2FuY2VsKCk7Ci0gICAgbV9zZWVrVGFzay5jYW5jZWwo
KTsKLSAgICBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUYXNr
LmNhbmNlbCgpOworICAgIG1fY29uZmlndXJlVGV4dFRyYWNrc1Rhc2tDYW5jZWxsYXRpb25Hcm91
cC5jYW5jZWwoKTsKKyAgICBtX2NoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFza0Nh
bmNlbGxhdGlvbkdyb3VwLmNhbmNlbCgpOworICAgIG1fdXBkYXRlTWVkaWFTdGF0ZVRhc2tDYW5j
ZWxsYXRpb25Hcm91cC5jYW5jZWwoKTsKKyAgICBtX21lZGlhRW5naW5lVXBkYXRlZFRhc2tDYW5j
ZWxsYXRpb25Hcm91cC5jYW5jZWwoKTsKKyAgICBtX3VwZGF0ZVBsYXlTdGF0ZVRhc2tDYW5jZWxs
YXRpb25Hcm91cC5jYW5jZWwoKTsKKyAgICBtX3Jlc3VtZVRhc2tDYW5jZWxsYXRpb25Hcm91cC5j
YW5jZWwoKTsKKyAgICBtX3NlZWtUYXNrQ2FuY2VsbGF0aW9uR3JvdXAuY2FuY2VsKCk7CisgICAg
bV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGFza0NhbmNlbGxh
dGlvbkdyb3VwLmNhbmNlbCgpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgbV92b2x1
bWVSZXZlcnRUYXNrLmNhbmNlbCgpOworICAgIG1fdm9sdW1lUmV2ZXJ0VGFza0NhbmNlbGxhdGlv
bkdyb3VwLmNhbmNlbCgpOwogI2VuZGlmCiB9CiAKQEAgLTU1ODcsNyArNTU3NCw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYVBsYXllcigpCiAgICAgICAgIG1fbWVkaWFTZXNz
aW9uLT5jYW5Qcm9kdWNlQXVkaW9DaGFuZ2VkKCk7CiAgICAgfQogCi0gICAgbV9yZXNvdXJjZVNl
bGVjdGlvblRhc2tRdWV1ZS5jYW5jZWxBbGxUYXNrcygpOworICAgIG1fcmVzb3VyY2VTZWxlY3Rp
b25UYXNrQ2FuY2VsbGF0aW9uR3JvdXAuY2FuY2VsKCk7CiAKICAgICB1cGRhdGVTbGVlcERpc2Fi
bGluZygpOwogfQpAQCAtNTYyOSw3ICs1NjE2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
dG9wV2l0aG91dERlc3Ryb3lpbmdNZWRpYVBsYXllcigpCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmNsb3NlVGFza1F1ZXVlcygpCiB7CiAgICAgY2FuY2VsUGVuZGluZ1Rhc2tzKCk7Ci0gICAgbV9y
ZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZS5jbG9zZSgpOworICAgIG1fcmVzb3VyY2VTZWxlY3Rp
b25UYXNrQ2FuY2VsbGF0aW9uR3JvdXAuY2FuY2VsKCk7CiAgICAgbV9hc3luY0V2ZW50UXVldWUt
PmNsb3NlKCk7CiB9CiAKQEAgLTU2NjQsNyArNTY1MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKICAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIpOwogICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKIAotICAgIG1fcmVzdW1lVGFzay5jYW5jZWwoKTsKKyAgICBtX3Jlc3VtZVRhc2tDYW5j
ZWxsYXRpb25Hcm91cC5jYW5jZWwoKTsKIAogICAgIHN3aXRjaCAocmVhc29uKSB7CiAgICAgY2Fz
ZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpCYWNrRm9yd2FyZENhY2hlOgpAQCAtNTY5NywxMyArNTY4
NCwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlc3VtZSgpCiAgICAgICAgIG1fbWVkaWFT
ZXNzaW9uLT51cGRhdGVCdWZmZXJpbmdQb2xpY3koKTsKICAgICB9CiAKLSAgICBpZiAobV9lcnJv
ciAmJiBtX2Vycm9yLT5jb2RlKCkgPT0gTWVkaWFFcnJvcjo6TUVESUFfRVJSX0FCT1JURUQgJiYg
IW1fcmVzdW1lVGFzay5pc1BlbmRpbmcoKSkgeworICAgIGlmIChtX2Vycm9yICYmIG1fZXJyb3It
PmNvZGUoKSA9PSBNZWRpYUVycm9yOjpNRURJQV9FUlJfQUJPUlRFRCAmJiAhbV9yZXN1bWVUYXNr
Q2FuY2VsbGF0aW9uR3JvdXAuaGFzUGVuZGluZ1Rhc2soKSkgewogICAgICAgICAvLyBSZXN0YXJ0
IHRoZSBsb2FkIGlmIGl0IHdhcyBhYm9ydGVkIGluIHRoZSBtaWRkbGUgYnkgbW92aW5nIHRoZSBk
b2N1bWVudCB0byB0aGUgYmFjay9mb3J3YXJkIGNhY2hlLgogICAgICAgICAvLyBtX2Vycm9yIGlz
IG9ubHkgbGVmdCBhdCBNRURJQV9FUlJfQUJPUlRFRCB3aGVuIHRoZSBkb2N1bWVudCBiZWNvbWVz
IGluYWN0aXZlIChpdCBpcyBzZXQgdG8KICAgICAgICAgLy8gIE1FRElBX0VSUl9BQk9SVEVEIHdo
aWxlIHRoZSBhYm9ydEV2ZW50IGlzIGJlaW5nIHNlbnQsIGJ1dCBjbGVhcmVkIGltbWVkaWF0ZWx5
IGFmdGVyd2FyZHMpLgogICAgICAgICAvLyBUaGlzIGJlaGF2aW9yIGlzIG5vdCBzcGVjaWZpZWQg
YnV0IGl0IHNlZW1zIGxpa2UgYSBzZW5zaWJsZSB0aGluZyB0byBkby4KICAgICAgICAgLy8gQXMg
aXQgaXMgbm90IHNhZmUgdG8gaW1tZWRhdGVseSBzdGFydCBsb2FkaW5nIG5vdywgbGV0J3Mgc2No
ZWR1bGUgYSBsb2FkLgotICAgICAgICBtX3Jlc3VtZVRhc2sgPSBxdWV1ZUNhbmNlbGxhYmxlVGFz
a0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBzdGQ6
OmJpbmQoJkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JMb2FkLCB0aGlzKSk7CisgICAgICAg
IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNl
OjpNZWRpYUVsZW1lbnQsIG1fcmVzdW1lVGFza0NhbmNlbGxhdGlvbkdyb3VwLCBzdGQ6OmJpbmQo
JkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JMb2FkLCB0aGlzKSk7CiAgICAgfQogCiAgICAg
dXBkYXRlUmVuZGVyZXIoKTsKQEAgLTU3MTksNyArNTcwNiw2IEBAIGJvb2wgSFRNTE1lZGlhRWxl
bWVudDo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
Y3JlYXRpbmdDb250cm9scwogICAgICAgICB8fCBtX2FzeW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGlu
Z0FjdGl2aXR5KCkKLSAgICAgICAgfHwgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZS5oYXNQ
ZW5kaW5nVGFza3MoKQogICAgICAgICB8fCAoaGFzQXVkaW8oKSAmJiBpc1BsYXlpbmcoKSkKICAg
ICAgICAgfHwgKGhhc0xpdmVTb3VyY2UoKSAmJiBoYXNFdmVudExpc3RlbmVycygpKTsKIH0KQEAg
LTY2MTUsNyArNjYwMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25BbmRT
dWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKFJlY29uZmlndXJlTW9kCiAgICAgfQogCiAgICAg
bV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5nZSA9IHRydWU7Ci0gICAgbV9jb25maWd1cmVUZXh0
VHJhY2tzVGFzay5jYW5jZWwoKTsKKyAgICBtX2NvbmZpZ3VyZVRleHRUcmFja3NUYXNrQ2FuY2Vs
bGF0aW9uR3JvdXAuY2FuY2VsKCk7CiAgICAgaWYgKG1vZGUgPT0gSW1tZWRpYXRlbHkpIHsKICAg
ICAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBjb25m
aWd1cmVUZXh0VHJhY2tzIGNhbGxzIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkg
RE9NIG11dGF0aW9ucy4KICAgICAgICAgY29uZmlndXJlVGV4dFRyYWNrcygpOwpAQCAtNzEzMSwx
MiArNzExNywxMiBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2hvdWxkQ2hl
Y2tIYXJkd2FyZVN1cHBvcnQoKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVyQnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdlZCgpCiB7Ci0gICAgaWYgKCFtX3RleHRUcmFj
a3MgfHwgbV9idWZmZXJlZFRpbWVSYW5nZXNDaGFuZ2VkVGFzay5pc1BlbmRpbmcoKSkKKyAgICBp
ZiAoIW1fdGV4dFRyYWNrcyB8fCBtX2J1ZmZlcmVkVGltZVJhbmdlc0NoYW5nZWRUYXNrQ2FuY2Vs
bGF0aW9uR3JvdXAuaGFzUGVuZGluZ1Rhc2soKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byBsb2dTaXRlSWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dT
aXRlSWRlbnRpZmllciwgInRhc2sgc2NoZWR1bGVkIik7Ci0gICAgbV9idWZmZXJlZFRpbWVSYW5n
ZXNDaGFuZ2VkVGFzayA9IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0
aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0g
eworICAgIHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNr
U291cmNlOjpNZWRpYUVsZW1lbnQsIG1fYnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdlZFRhc2tDYW5j
ZWxsYXRpb25Hcm91cCwgW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CiAgICAgICAgIFVOVVNF
RF9QQVJBTShsb2dTaXRlSWRlbnRpZmllcik7CiAgICAgICAgIEFMV0FZU19MT0cobG9nU2l0ZUlk
ZW50aWZpZXIsICJsYW1iZGEoKSwgdGFzayBmaXJlZCIpOwogICAgICAgICBpZiAoIW1fcGxheWVy
IHx8ICFtX3RleHRUcmFja3MpCkBAIC03NzYyLDEyICs3NzQ4LDEyIEBAIGJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6c2hvdWxkT3ZlcnJpZGVQYXVzZUR1cmluZ1JvdXRlQ2hhbmdlKCkgY29uc3QKIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVVwZGF0ZU1lZGlhU3RhdGUoKQogewotICAg
IGlmIChtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrLmlzUGVuZGluZygpKQorICAgIGlmIChtX3VwZGF0
ZU1lZGlhU3RhdGVUYXNrQ2FuY2VsbGF0aW9uR3JvdXAuaGFzUGVuZGluZ1Rhc2soKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYXV0byBsb2dTaXRlSWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7
CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgInRhc2sgc2NoZWR1bGVkIik7Ci0g
ICAgbV91cGRhdGVNZWRpYVN0YXRlVGFzayA9IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlzLCBsb2dTaXRl
SWRlbnRpZmllcl0geworICAgIHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZl
KCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIG1fdXBkYXRlTWVkaWFTdGF0ZVRhc2tD
YW5jZWxsYXRpb25Hcm91cCwgW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CiAgICAgICAgIFVO
VVNFRF9QQVJBTShsb2dTaXRlSWRlbnRpZmllcik7CiAgICAgICAgIEFMV0FZU19MT0cobG9nU2l0
ZUlkZW50aWZpZXIsICJsYW1iZGEoKSwgdGFzayBmaXJlZCIpOwogICAgICAgICBSZWY8SFRNTE1l
ZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIHVwZGF0ZU1lZGlhU3RhdGUgY2Fs
bHMgbWV0aG9kcyB0aGF0IGNhbiB0cmlnZ2VyIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgpAQCAt
ODAzNSwxMyArODAyMSwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlUGxheWJh
Y2tDb250cm9sc01hbmFnZXJVcGRhdGUoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lckZpcmVkKCkKIHsKLSAg
ICBpZiAobV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGFzay5p
c1BlbmRpbmcoKSkKKyAgICBpZiAobV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVz
dHJpY3Rpb25zVGFza0NhbmNlbGxhdGlvbkdyb3VwLmhhc1BlbmRpbmdUYXNrKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmICghbWVkaWFTZXNzaW9uKCkuaGFzQmVoYXZpb3JSZXN0cmljdGlv
bihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVUb0NvbnRyb2xDb250cm9s
c01hbmFnZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BsYXliYWNrQ29udHJvbHNNYW5h
Z2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUYXNrID0gcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5n
T2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgW3RoaXNdICgpIHsK
KyAgICBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1Nv
dXJjZTo6TWVkaWFFbGVtZW50LCBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0
cmljdGlvbnNUYXNrQ2FuY2VsbGF0aW9uR3JvdXAsIFt0aGlzXSAoKSB7CiAgICAgICAgIGF1dG8m
IG1lZGlhRWxlbWVudFNlc3Npb24gPSBtZWRpYVNlc3Npb24oKTsKICAgICAgICAgaWYgKGlzUGxh
eWluZygpIHx8IG1lZGlhRWxlbWVudFNlc3Npb24uc3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6QXV0b3BsYXlpbmcgfHwgbWVkaWFFbGVtZW50U2Vzc2lvbi5zdGF0ZSgpID09IFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5nKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA4MGNmNjhlNmE0ZjMwZmM3N2EzNGM1NGVj
ZjA2OGUyMjBiZTI1ZjY2Li5kOGVlNzAyNDgyMGM4ZTJhODBjMDliMWU3MWRlMjVmMDg5MWM1MGU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtOTQwLDIwICs5NDAs
MjAgQEAgcHJpdmF0ZToKICAgICBUaW1lciBtX3NjYW5UaW1lcjsKICAgICBUaW1lciBtX3BsYXli
YWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lcjsKICAgICBUaW1lciBt
X3NlZWtUb1BsYXliYWNrUG9zaXRpb25FbmRlZFRpbWVyOwotICAgIENhbmNlbGxhYmxlVGFzazo6
SGFuZGxlIG1fY29uZmlndXJlVGV4dFRyYWNrc1Rhc2s7Ci0gICAgQ2FuY2VsbGFibGVUYXNrOjpI
YW5kbGUgbV9jaGVja1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJpbGl0eVRhc2s7Ci0gICAgQ2FuY2Vs
bGFibGVUYXNrOjpIYW5kbGUgbV91cGRhdGVNZWRpYVN0YXRlVGFzazsKLSAgICBDYW5jZWxsYWJs
ZVRhc2s6OkhhbmRsZSBtX21lZGlhRW5naW5lVXBkYXRlZFRhc2s7Ci0gICAgQ2FuY2VsbGFibGVU
YXNrOjpIYW5kbGUgbV91cGRhdGVQbGF5U3RhdGVUYXNrOwotICAgIENhbmNlbGxhYmxlVGFzazo6
SGFuZGxlIG1fcmVzdW1lVGFzazsKLSAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX3NlZWtU
YXNrOwotICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fcGxheWJhY2tDb250cm9sc01hbmFn
ZXJCZWhhdmlvclJlc3RyaWN0aW9uc1Rhc2s7Ci0gICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUg
bV9idWZmZXJlZFRpbWVSYW5nZXNDaGFuZ2VkVGFzazsKLSAgICBFdmVudExvb3BUYXNrUXVldWUg
bV9yZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZTsKKyAgICBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAg
bV9jb25maWd1cmVUZXh0VHJhY2tzVGFza0NhbmNlbGxhdGlvbkdyb3VwOworICAgIFRhc2tDYW5j
ZWxsYXRpb25Hcm91cCBtX2NoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFza0NhbmNl
bGxhdGlvbkdyb3VwOworICAgIFRhc2tDYW5jZWxsYXRpb25Hcm91cCBtX3VwZGF0ZU1lZGlhU3Rh
dGVUYXNrQ2FuY2VsbGF0aW9uR3JvdXA7CisgICAgVGFza0NhbmNlbGxhdGlvbkdyb3VwIG1fbWVk
aWFFbmdpbmVVcGRhdGVkVGFza0NhbmNlbGxhdGlvbkdyb3VwOworICAgIFRhc2tDYW5jZWxsYXRp
b25Hcm91cCBtX3VwZGF0ZVBsYXlTdGF0ZVRhc2tDYW5jZWxsYXRpb25Hcm91cDsKKyAgICBUYXNr
Q2FuY2VsbGF0aW9uR3JvdXAgbV9yZXN1bWVUYXNrQ2FuY2VsbGF0aW9uR3JvdXA7CisgICAgVGFz
a0NhbmNlbGxhdGlvbkdyb3VwIG1fc2Vla1Rhc2tDYW5jZWxsYXRpb25Hcm91cDsKKyAgICBUYXNr
Q2FuY2VsbGF0aW9uR3JvdXAgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJp
Y3Rpb25zVGFza0NhbmNlbGxhdGlvbkdyb3VwOworICAgIFRhc2tDYW5jZWxsYXRpb25Hcm91cCBt
X2J1ZmZlcmVkVGltZVJhbmdlc0NoYW5nZWRUYXNrQ2FuY2VsbGF0aW9uR3JvdXA7CisgICAgVGFz
a0NhbmNlbGxhdGlvbkdyb3VwIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrQ2FuY2VsbGF0aW9uR3Jv
dXA7CiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IG1fcGxheWVkVGltZVJhbmdlczsKICAgICBVbmlx
dWVSZWY8RXZlbnRMb29wRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7CiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX3ZvbHVtZVJldmVy
dFRhc2s7CisgICAgVGFza0NhbmNlbGxhdGlvbkdyb3VwIG1fdm9sdW1lUmV2ZXJ0VGFza0NhbmNl
bGxhdGlvbkdyb3VwOwogI2VuZGlmCiAKICAgICBQbGF5UHJvbWlzZVZlY3RvciBtX3BlbmRpbmdQ
bGF5UHJvbWlzZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwCmluZGV4
IGUzZDE0Y2E3OWJmNGQ0MmY0YzQ3NmM5M2QzZGU1MDk5MmZjN2E4ZDAuLjZhOWRkNzk0YmI0MTBk
NDUzMDhmYzQ5N2MyNTA0MWFlNTdjODAzYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5l
ckVsZW1lbnQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0Lmgi
CiAjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudEhhbmRs
ZXIuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGdWxsc2NyZWVuTWFuYWdlci5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMmYwMjYzMzI1YTNmYmMxNTBlZjhlMmQwZmFmMGY3MDQ1NGI2ODRkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIK
LSNpbmNsdWRlICJFdmVudExvb3AuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCi0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIFRhc2tRdWV1ZUJhc2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGFza1F1ZXVlQmFzZT4g
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIGJvb2wgaGFzUGVu
ZGluZ1Rhc2tzKCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5nVGFza3M7IH0KLSAgICBib29sIGlz
Q2xvc2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Nsb3NlZDsgfQotCi0gICAgdm9pZCBjbG9zZSgp
Ci0gICAgewotICAgICAgICBjYW5jZWxBbGxUYXNrcygpOwotICAgICAgICBtX2lzQ2xvc2VkID0g
dHJ1ZTsKLSAgICB9Ci0KLSAgICB2b2lkIGNhbmNlbEFsbFRhc2tzKCkKLSAgICB7Ci0gICAgICAg
IHdlYWtQdHJGYWN0b3J5KCkucmV2b2tlQWxsKCk7Ci0gICAgICAgIG1fcGVuZGluZ1Rhc2tzID0g
MDsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICB+VGFza1F1ZXVlQmFzZSgpID0gZGVmYXVsdDsK
LSAgICB2b2lkIGluY3JlbWVudFBlbmRpbmdUYXNrcygpIHsgKyttX3BlbmRpbmdUYXNrczsgfQot
ICAgIHZvaWQgZGVjcmVtZW50UGVuZGluZ1Rhc2tzKCkgeyBBU1NFUlQobV9wZW5kaW5nVGFza3Mp
OyAtLW1fcGVuZGluZ1Rhc2tzOyB9Ci0KLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV9wZW5kaW5n
VGFza3MgeyAwIH07Ci0gICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKLX07Ci0KLS8vIFJl
bGllcyBvbiBhIHNoYXJlZCBUaW1lciwgb25seSBzYWZlIHRvIHVzZSBvbiB0aGUgTWFpblRocmVh
ZC4gUGxlYXNlIHVzZSBFdmVudExvb3BUYXNrUXVldWUKLS8vIChvciBkaXNwYXRjaCBkaXJlY3Rs
eSB0byB0aGUgSFRNTCBldmVudCBsb29wKSB3aGVuZXZlciBwb3NzaWJsZS4KLWNsYXNzIE1haW5U
aHJlYWRUYXNrUXVldWUgOiBwdWJsaWMgVGFza1F1ZXVlQmFzZSB7Ci1wdWJsaWM6Ci0gICAgTWFp
blRocmVhZFRhc2tRdWV1ZSgpCi0gICAgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgIH0KLQotICAgIHZvaWQgZW5xdWV1ZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmIHRhc2sp
Ci0gICAgewotICAgICAgICBpZiAoaXNDbG9zZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBpbmNyZW1lbnRQZW5kaW5nVGFza3MoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRhc2sgPSBXVEZNb3ZlKHRhc2spXSB7
Ci0gICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIHdlYWtUaGlzLT5kZWNyZW1lbnRQZW5kaW5nVGFza3MoKTsKLSAgICAgICAgICAg
IHRhc2soKTsKLSAgICAgICAgfSk7Ci0gICAgfQotfTsKLQotLy8gU2ltaWxhciB0byBNYWluVGhy
ZWFkVGFza1F1ZXVlIGJ1dCBiYXNlZCBvbiB0aGUgSFRNTCBldmVudCBsb29wLgotY2xhc3MgRXZl
bnRMb29wVGFza1F1ZXVlIDogcHVibGljIFRhc2tRdWV1ZUJhc2UsIHByaXZhdGUgQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXIgewotcHVibGljOgotICAgIEV2ZW50TG9vcFRhc2tRdWV1ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgICAgICA6IENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyKGNvbnRleHQpCi0gICAgeyB9Ci0KLSAgICAvLyBGSVhNRTogUGFzcyBhIFRhc2tT
b3VyY2UgaW5zdGVhZCBvZiBhc3N1bWluZyBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQuCi0gICAg
dm9pZCBlbnF1ZXVlVGFzayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKLSAgICB7Ci0gICAgICAg
IGlmIChpc0Nsb3NlZCgpIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgaW5jcmVtZW50UGVuZGluZ1Rhc2tzKCk7Ci0gICAgICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6
Ok1lZGlhRWxlbWVudCwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0YXNrID0gV1RG
TW92ZSh0YXNrKV0gewotICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+ZGVjcmVtZW50UGVuZGluZ1Rhc2tzKCk7
Ci0gICAgICAgICAgICB0YXNrKCk7Ci0gICAgICAgIH0pOwotICAgIH0KLX07Ci0KLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCmluZGV4IDVmZjQ0NWNiOWVlOTk2YTI1NTllYmFjN2I4ZmYyOGQ4NzMw
YzQzYTQuLjlmNjc5ZWM5OTYwNDQzZWJiMTcxOTVjNzY0ZjY4OTZiZmI5NTVhNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQpAQCAtMTczLDcgKzE3Myw2IEBAIGVudW0gTWVkaWFQbGF5ZXJBVkZv
dW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHQgewogQGludGVyZmFjZSBXZWJDb3JlQVZGTW92aWVP
YnNlcnZlciA6IE5TT2JqZWN0IDxBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0UHVzaERlbGVnYXRl
LCBBVlBsYXllckl0ZW1NZXRhZGF0YU91dHB1dFB1c2hEZWxlZ2F0ZSwgQVZQbGF5ZXJJdGVtTWV0
YWRhdGFDb2xsZWN0b3JQdXNoRGVsZWdhdGU+CiB7CiAgICAgV2Vha1B0cjxNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDPiBtX3BsYXllcjsKLSAgICBNYWluVGhyZWFkVGFza1F1ZXVl
IG1fdGFza1F1ZXVlOwogICAgIGludCBtX2RlbGF5Q2FsbGJhY2tzOwogfQogLShpZClpbml0V2l0
aFBsYXllcjooV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiYmKWNh
bGxiYWNrOwpAQCAtMTg5LDcgKzE4OCw2IEBAIEBlbmQKIAogQGludGVyZmFjZSBXZWJDb3JlQVZG
TG9hZGVyRGVsZWdhdGUgOiBOU09iamVjdDxBVkFzc2V0UmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZT4g
ewogICAgIFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4gbV9wbGF5
ZXI7Ci0gICAgTWFpblRocmVhZFRhc2tRdWV1ZSBtX3Rhc2tRdWV1ZTsKIH0KIC0gKGlkKWluaXRX
aXRoUGxheWVyOihXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+JiYp
cGxheWVyOwogLSAoQk9PTClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICop
cmVzb3VyY2VMb2FkZXIgc2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlOihB
VkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKWxvYWRpbmdSZXF1ZXN0OwpAQCAtMzU4MCw3
ICszNTc4LDcgQEAgLSAodm9pZClkaXNjb25uZWN0CiAtICh2b2lkKW1ldGFkYXRhTG9hZGVkCiB7
CiAgICAgZW5zdXJlT25NYWluVGhyZWFkKFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNl
bGYpXSB7Ci0gICAgICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtwbGF5ZXIgPSBtX3BsYXll
cl0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwbGF5ZXIgPSBtX3BsYXllcl0gewogICAg
ICAgICAgICAgaWYgKHBsYXllcikKICAgICAgICAgICAgICAgICBwbGF5ZXItPm1ldGFkYXRhTG9h
ZGVkKCk7CiAgICAgICAgIH0pOwpAQCAtMzU5MSw3ICszNTg5LDcgQEAgLSAodm9pZClkaWRFbmQ6
KE5TTm90aWZpY2F0aW9uICopdW51c2VkTm90aWZpY2F0aW9uCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHVudXNlZE5vdGlmaWNhdGlvbik7CiAgICAgZW5zdXJlT25NYWluVGhyZWFkKFtzZWxmLCBzdHJv
bmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7Ci0gICAgICAgIG1fdGFza1F1ZXVlLmVucXVldWVU
YXNrKFtwbGF5ZXIgPSBtX3BsYXllcl0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwbGF5
ZXIgPSBtX3BsYXllcl0gewogICAgICAgICAgICAgaWYgKHBsYXllcikKICAgICAgICAgICAgICAg
ICBwbGF5ZXItPmRpZEVuZCgpOwogICAgICAgICB9KTsKQEAgLTM2MDEsNyArMzU5OSw3IEBAIC0g
KHZvaWQpZGlkRW5kOihOU05vdGlmaWNhdGlvbiAqKXVudXNlZE5vdGlmaWNhdGlvbgogLSAodm9p
ZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFu
Z2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0OihNZWRpYVBsYXllckFWRm91bmRhdGlv
bk9ic2VydmF0aW9uQ29udGV4dCljb250ZXh0CiB7CiAgICAgZW5zdXJlT25NYWluVGhyZWFkKFtz
ZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBrZXlQYXRoID0gcmV0YWluUHRyKGtl
eVBhdGgpLCBjaGFuZ2UgPSByZXRhaW5QdHIoY2hhbmdlKSwgb2JqZWN0ID0gcmV0YWluUHRyKG9i
amVjdCksIGNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIG1fdGFza1F1ZXVlLmVucXVldWVU
YXNrKFtwbGF5ZXIgPSBtX3BsYXllciwga2V5UGF0aCA9IFdURk1vdmUoa2V5UGF0aCksIGNoYW5n
ZSA9IFdURk1vdmUoY2hhbmdlKSwgb2JqZWN0ID0gV1RGTW92ZShvYmplY3QpLCBjb250ZXh0XSB7
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3BsYXllciA9IG1fcGxheWVyLCBrZXlQYXRoID0g
V1RGTW92ZShrZXlQYXRoKSwgY2hhbmdlID0gV1RGTW92ZShjaGFuZ2UpLCBvYmplY3QgPSBXVEZN
b3ZlKG9iamVjdCksIGNvbnRleHRdIHsKICAgICAgICAgICAgIGlmICghcGxheWVyKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtMzcwMCw3ICszNjk4LDcgQEAgLSAodm9pZClsZWdpYmxl
T3V0cHV0OihpZClvdXRwdXQgZGlkT3V0cHV0QXR0cmlidXRlZFN0cmluZ3M6KE5TQXJyYXkgKilz
dHJpbmdzIG4KICAgICBVTlVTRURfUEFSQU0ob3V0cHV0KTsKIAogICAgIGVuc3VyZU9uTWFpblRo
cmVhZChbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgc3RyaW5ncyA9IHJldGFp
blB0cihzdHJpbmdzKSwgbmF0aXZlU2FtcGxlcyA9IHJldGFpblB0cihuYXRpdmVTYW1wbGVzKSwg
aXRlbVRpbWVdKCkgbXV0YWJsZSB7Ci0gICAgICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtw
bGF5ZXIgPSBtX3BsYXllciwgc3RyaW5ncyA9IFdURk1vdmUoc3RyaW5ncyksIG5hdGl2ZVNhbXBs
ZXMgPSBXVEZNb3ZlKG5hdGl2ZVNhbXBsZXMpLCBpdGVtVGltZV0geworICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtwbGF5ZXIgPSBtX3BsYXllciwgc3RyaW5ncyA9IFdURk1vdmUoc3RyaW5ncyks
IG5hdGl2ZVNhbXBsZXMgPSBXVEZNb3ZlKG5hdGl2ZVNhbXBsZXMpLCBpdGVtVGltZV0gewogICAg
ICAgICAgICAgaWYgKCFwbGF5ZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNzE3
LDcgKzM3MTUsNyBAQCAtICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooaWQpb3V0cHV0
CiAgICAgVU5VU0VEX1BBUkFNKG91dHB1dCk7CiAKICAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3Nl
bGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildIHsKLSAgICAgICAgbV90YXNrUXVldWUu
ZW5xdWV1ZVRhc2soW3BsYXllciA9IG1fcGxheWVyXSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3BsYXllciA9IG1fcGxheWVyXSB7CiAgICAgICAgICAgICBpZiAocGxheWVyKQogICAgICAg
ICAgICAgICAgIHBsYXllci0+Zmx1c2hDdWVzKCk7CiAgICAgICAgIH0pOwpAQCAtMzczMyw3ICsz
NzMxLDcgQEAgLSAodm9pZCltZXRhZGF0YU91dHB1dDooQVZQbGF5ZXJJdGVtTWV0YWRhdGFPdXRw
dXQgKilvdXRwdXQgZGlkT3V0cHV0VGltZWRNZXRhZGEKICAgICBpZiAoIW1fcGxheWVyIHx8ICFt
ZXRhZGF0YUdyb3VwcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV90YXNrUXVldWUuZW5xdWV1
ZVRhc2soW3BsYXllciA9IG1fcGxheWVyLCBtZXRhZGF0YUdyb3VwcyA9IHJldGFpblB0cihtZXRh
ZGF0YUdyb3VwcyksIGN1cnJlbnRUaW1lID0gbV9wbGF5ZXItPmN1cnJlbnRNZWRpYVRpbWUoKV0g
eworICAgIGNhbGxPbk1haW5UaHJlYWQoW3BsYXllciA9IG1fcGxheWVyLCBtZXRhZGF0YUdyb3Vw
cyA9IHJldGFpblB0cihtZXRhZGF0YUdyb3VwcyksIGN1cnJlbnRUaW1lID0gbV9wbGF5ZXItPmN1
cnJlbnRNZWRpYVRpbWUoKV0gewogICAgICAgICBpZiAoIXBsYXllcikKICAgICAgICAgICAgIHJl
dHVybjsKIApAQCAtMzc1NCw3ICszNzUyLDcgQEAgLSAodm9pZCltZXRhZGF0YUNvbGxlY3Rvcjoo
QVZQbGF5ZXJJdGVtTWV0YWRhdGFDb2xsZWN0b3IgKiltZXRhZGF0YUNvbGxlY3RvciBkaWQKICAg
ICBpZiAoIW1fcGxheWVyIHx8ICFtZXRhZGF0YUdyb3VwcykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3BsYXllciA9IG1fcGxheWVyLCBtZXRhZGF0YUdy
b3VwcyA9IHJldGFpblB0cihtZXRhZGF0YUdyb3VwcyksIGN1cnJlbnRUaW1lID0gbV9wbGF5ZXIt
PmN1cnJlbnRNZWRpYVRpbWUoKV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3BsYXllciA9IG1f
cGxheWVyLCBtZXRhZGF0YUdyb3VwcyA9IHJldGFpblB0cihtZXRhZGF0YUdyb3VwcyksIGN1cnJl
bnRUaW1lID0gbV9wbGF5ZXItPmN1cnJlbnRNZWRpYVRpbWUoKV0gewogICAgICAgICBpZiAoIXBs
YXllcikKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzc4MSw3ICszNzc5LDcgQEAgLSAoQk9P
TClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIg
c2hvdWxkV2FpdEZvckxvYWQKICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgZW5zdXJlT25NYWlu
VGhyZWFkKFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBsb2FkaW5nUmVxdWVz
dCA9IHJldGFpblB0cihsb2FkaW5nUmVxdWVzdCldKCkgbXV0YWJsZSB7Ci0gICAgICAgIG1fdGFz
a1F1ZXVlLmVucXVldWVUYXNrKFtwbGF5ZXIgPSBtX3BsYXllciwgbG9hZGluZ1JlcXVlc3QgPSBX
VEZNb3ZlKGxvYWRpbmdSZXF1ZXN0KV0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwbGF5
ZXIgPSBtX3BsYXllciwgbG9hZGluZ1JlcXVlc3QgPSBXVEZNb3ZlKGxvYWRpbmdSZXF1ZXN0KV0g
ewogICAgICAgICAgICAgaWYgKCFwbGF5ZXIpIHsKICAgICAgICAgICAgICAgICBbbG9hZGluZ1Jl
cXVlc3QgZmluaXNoTG9hZGluZ1dpdGhFcnJvcjpuaWxdOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTM4MDcsNyArMzgwNSw3IEBAIC0gKHZvaWQpcmVzb3VyY2VMb2FkZXI6KEFWQXNzZXRS
ZXNvdXJjZUxvYWRlciAqKXJlc291cmNlTG9hZGVyIGRpZENhbmNlbExvYWRpbmdSCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHJlc291cmNlTG9hZGVyKTsKICAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3Nl
bGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIGxvYWRpbmdSZXF1ZXN0ID0gcmV0YWlu
UHRyKGxvYWRpbmdSZXF1ZXN0KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgbV90YXNrUXVldWUuZW5x
dWV1ZVRhc2soW3BsYXllciA9IG1fcGxheWVyLCBsb2FkaW5nUmVxdWVzdCA9IFdURk1vdmUobG9h
ZGluZ1JlcXVlc3QpXSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3BsYXllciA9IG1fcGxh
eWVyLCBsb2FkaW5nUmVxdWVzdCA9IFdURk1vdmUobG9hZGluZ1JlcXVlc3QpXSB7CiAKICAgICAg
ICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93
ZWRTY29wZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLmgKaW5kZXggYjc1NzdmMjk1OGQ1NzAzY2JlZGQyZDJlZDdjMDBjNTJkYmNh
YTcwMC4uODZmM2E2MDY2MDNlYzM1NjRmMmUyOGJmZjA2YjBhMGI4MDQ5ZTZjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBA
IC0yNywxMSArMjcsMTEgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpICYmIFVTRShBVkZP
VU5EQVRJT04pCiAKLSNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCiAjaW5jbHVkZSAiU291
cmNlQnVmZmVyUGFyc2VyLmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgPGRpc3BhdGNoL2dyb3VwLmg+CiAjaW5jbHVkZSA8d3RmL0JveC5oPgorI2luY2x1ZGUg
PHd0Zi9DYW5jZWxsYWJsZVRhc2suaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KQEAgLTE5Myw3
ICsxOTMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hh
bmRsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNQZW5kaW5nQXBwZW5kQ29tcGxldGVkQ2Fs
bGJhY2sgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFJlZjxNZWRp
YVNhbXBsZT4+PiBtX21lZGlhU2FtcGxlczsKLSAgICBNYWluVGhyZWFkVGFza1F1ZXVlIG1fbWVk
aWFTYW1wbGVUYXNrUXVldWU7CisgICAgVGFza0NhbmNlbGxhdGlvbkdyb3VwIG1fbWVkaWFTYW1w
bGVUYXNrQ2FuY2VsbGF0aW9uR3JvdXA7CiAKICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI+IG1fZGlzcGxheUxheWVyOwogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9H
VUFSRFNfQkVHSU4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0KaW5kZXggYzFmODUxNGJhNTA5NmViYjgzNWIwMTY2NTAyZWUzN2Nj
MmQ4ZDM1My4uMGI5YmI2NDg1ZjNlOWUyNTM0NWFhZDRmNGU0NzA5MmM0MjlhNWNjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW0KQEAgLTM1OSw3ICszNTksNyBAQCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6flNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDKCkKICAgICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKQog
ICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwogCi0gICAgbV9tZWRpYVNh
bXBsZVRhc2tRdWV1ZS5jbG9zZSgpOworICAgIG1fbWVkaWFTYW1wbGVUYXNrQ2FuY2VsbGF0aW9u
R3JvdXAuY2FuY2VsKCk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRp
ZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQp
CkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlk
UGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW4KICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIG1fbWVkaWFTYW1wbGVUYXNrUXVldWUuZW5x
dWV1ZVRhc2soW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldIHsKKyAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChDYW5jZWxsYWJsZVRhc2sobV9tZWRpYVNhbXBsZVRhc2tDYW5jZWxs
YXRpb25Hcm91cCwgW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldIHsKICAgICAg
ICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC00Mzks
NyArNDM5LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0
aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW4KICAgICAgICAgICAgICAgICBtX2hh
c1BlbmRpbmdBcHBlbmRDb21wbGV0ZWRDYWxsYmFjayA9IGZhbHNlOwogICAgICAgICAgICAgICAg
IGFwcGVuZENvbXBsZXRlZCgpOwogICAgICAgICAgICAgfQotICAgICAgICB9KTsKKyAgICAgICAg
fSkpOwogICAgIH0pOwogfQogCkBAIC02NzYsNyArNjc2LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6YWJvcnQoKQogICAgIG1fcGFyc2VyLT5yZXNldFBhcnNlclN0YXRlKCk7
CiAgICAgbV9tZWRpYVNhbXBsZXMuY2xlYXIoKTsKICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVu
dElzSGFuZGxlZCA9IGZhbHNlOwotICAgIG1fbWVkaWFTYW1wbGVUYXNrUXVldWUuY2FuY2VsQWxs
VGFza3MoKTsKKyAgICBtX21lZGlhU2FtcGxlVGFza0NhbmNlbGxhdGlvbkdyb3VwLmNhbmNlbCgp
OwogCiAgICAgZGlzcGF0Y2hfZ3JvdXBfd2FpdChtX2lzQXBwZW5kaW5nR3JvdXAuZ2V0KCksIERJ
U1BBVENIX1RJTUVfRk9SRVZFUik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9u
Q2FwdHVyZURldmljZU1hbmFnZXIuaAppbmRleCBhZjQ5N2QyZTE4ZTZkNTU3ZTQ5NDNiMTk0YWZm
NDhkYTdiNDY2N2U4Li4wZGFjZTNiNzdiMzhlMTFhYTViN2I3NzE4OTNmYWVmMGU5YmNkYzlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRp
b1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgK
QEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKLSNpbmNsdWRl
ICJHZW5lcmljVGFza1F1ZXVlLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>